AI · Искусственный интеллект · VK Tech · AI-агенты · Архитектура · LLM · Хранение данных7 сентября в 03:32 · 4 мин

Многоуровневая память для корпоративных AI-агентов: опыт реализации в VK AI Space

В июле 2026 года VK AI Space представила новую систему памяти для корпоративных искусственных интеллектов. Решение позволяет агентам сохранять контекст между сессиями и эффективно работать над долгосрочными проектами. Автор статьи, Сергей Врулин, описывает переход от теоретических моделей к практической реализации, где ключевым элементом стали обычные текстовые файлы вместо сложных векторных баз данных.

Объемный стеклянный архив с серебристыми лентами в подводном пространстве

# Как создали многоуровневую память для AI-агентов в VK

Приветствую. Меня зовут Сергей Врулин, я Team Lead в команде агентов VK AI Space. Наша задача — создать платформу, где искусственный интеллект способен вести себя как профессиональный коллега, а не как чат-бот, который забывает всё после завершения диалога. В этой статье я расскажу о технической реализации многоуровневой памяти, представленной в июле 2026 года, и о компромиссах, сделанных в пользу прозрачности и управляемости для корпоративного сектора.

Зачем агенту нужна память?

Типичный языковая модель (LLM) работает без сохранения состояния. Контекстное окно ограничено, и при завершении сессии вся информация исчезает. Для бытового использования это допустимо: пользователю не критично, если бот не помнит диалог из месяца назад. Однако в корпоративной среде отсутствие памяти делает автоматизацию бессмысленной.

Рассмотрим примеры сценариев: * Анализ инцидентов: Если агент участвовал в разборе сбоя в продакшене, он должен помнить эти выводы через неделю, а не начинать поиск логи заново. * Подготовка тендеров: Формулировки, написанные для одного заказчика, должны быть доступны для нового тендера от того же лица. * Проектная отчетность: Агент должен сохранять шаблон дайли-репорта и не требовать повторного объяснения формата каждый день.

Для этих задач агент должен уметь сохранять профиль сотрудника, накопленные решения и собственный опыт.

Архитектура памяти и выбор формата

В теории выделяют пять типов памяти: кратковременная (текущий диалог), эпизодическая (события), семантическая (факты), процедурная (навыки) и профильная (данные пользователя). Существующие фреймворки, такие как MemGPT или LangGraph, часто используют векторные базы данных для долгосрочного хранения.

Однако в корпоративном сегменте подход с «черным ящиком» неприемлем. Векторные эмбеддинги невозможно прочитать человеку, их сложно редактировать и гарантировать изоляцию между проектами. Мы отказались от сложной системы поиска по смыслу в пользу модели «память как обычные текстовые файлы» (plain text / Markdown).

Преимущества простого текста 1. Прозрачность: Файлы SOUL.md или USER.md читаются человеком в обычном редакторе без декодирования векторов. 2. Управляемость: Сотрудник может напрямую исправить фразу в документе, а не искать нужную запись в базе данных и пересчитывать хеши. 3. Предсказуемость: LLM получает контекст точно так, как он записан в файле, без вероятностной ошибки семантического поиска.

Реализация на практике

Мы построили архитектуру на основе стандартных файловых систем, расположенных в объектном хранилище S3. Вся память структурирована по типам данных:

| Тип памяти | Файл | Хранилище | Описание | | :--- | :--- | :--- | :--- | | Кратковременная | Session Scope | В памяти раннера | История сообщений текущей сессии | | Эпизодическая | Workspace файлы | S3 (по проекту) | События и решения, дописываемые после выполнения задачи | | Семантическая | SOUL.md | S3 (по агенту) | Идентичность и характер агента | | Процедурная | AGENTS.md, TOOLS.md | S3 (по агенту) | Правила работы и инструкции к инструментам | | Профильная | USER.md | S3 (по пользователю) | Данные о сотруднике и его предпочтениях |

Изоляция данных обеспечивается через префиксы в S3, зависящие от ProjectID, UserID, AgentID и SessionID. Это гарантирует, что агент одного проекта не увидит данных другого.

Механизм инъекции контекста

Критически важным решением стало отсутствие необходимости тратить токены модели на поиск файлов. Мы выбрали подход Full Injection + Sandbox Write.

Вместо того чтобы агент запрашивал файлы по требованию (on-demand), мы используем системные pre-hooks. Перед запуском цикла агента скрипт считывает указанные файлы и вставляет их содержимое в системный промпт. Это позволяет агенту видеть всю необходимую информацию (правила, профиль пользователя, историю) с самого первого сообщения, экономя до 5 тысяч токенов и секунд задержки на каждый запрос.

Запись в память происходит через стандартные операции с файловой системой песочницы (Sandbox), которая синхронизирует изменения обратно в S3. Таким образом, агент работает с файлами как с локальным диском, не понимая при этом сложности распределенной архитектуры.

Управление контекстом через хуки

Логика работы с памятью управляется системой хуков (hooks) с четырьмя триггерами: pre, post, tool, error. Для работы с памятью ключевыми являются pre и post хуки.

* Pre-agent hook: Собирает контекст из файлов SOUL.md, USER.md и инструкций перед началом выполнения задачи. Формирует единый блок <agent_identity>, <user_profile> и других секций в промпте. * Post-agent hook: Сохраняет итоги работы. Может обновлять процедурную память (новые правила в AGENTS.md) или профильную информацию.

Такой подход универсален: файлы служат надежным хранилищем, а хуки обеспечивают гибкую логику сборки и обновления контекста, позволяя агентам работать автономно и безопасно в корпоративной среде.

Помните: даже самый совершенный алгоритм бесполезен без правильной памяти. Прозрачность и контроль над данными становятся решающими факторами при внедрении ИИ в сложные бизнес-процессы.

Первоисточники

Habr AI
← Вернуться в эфир