Skip to main content

Memory Bank

0. Прежде чем начать

Что такое Memory Bank?

Memory Bank — это долговременная память агента, которая сохраняется между чатами и сессиями. Обычно агент в каждом новом чате начинает «с чистого листа»: он не помнит ваших предпочтений, договорённостей по проекту и сделанных ранее выводов. Memory Bank решает эту проблему — агент может записать важный факт один раз и затем переиспользовать его в любых будущих беседах.

Например, вы один раз сказали: «у нас интеграционные тесты всегда ходят в реальную БД, не мокай её». Агент сохранит это правило, и в следующих чатах будет учитывать его сам, без напоминаний.

Не нужно каждый раз заново объяснять структуру проекта, библиотеки, код-стайл или договорённости команды — в сложных проектах это заметно экономит время.

Память хранится прямо в вашем проекте — в папке .veai/memory/. Это обычные Markdown‑файлы, которые можно прочитать или отредактировать вручную.

Memory Bank: общий вид

Что агент запоминает?

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

  • User — кто вы и как работаете: ваша роль, область экспертизы, уровень знаний. Помогает агенту подбирать уровень объяснений.
  • Feedback — как с вами работать: ваши поправки и подтверждённые предпочтения по стилю и подходу.
  • Project — неочевидные знания о проекте: подводные камни, причины архитектурных решений, текущие договорённости и сроки.
  • Reference — указатели на внешние источники: трекер задач, дашборды, каналы, где лежит та или иная информация.

Агент намеренно не сохраняет то, что легко восстановить, прочитав код или историю git: расположение классов, сигнатуры методов, структуру каталогов. Также он не хранит секреты, пароли и персональные данные.


1. Как включить

Memory Bank управляется из настроек:

Settings → Tools → Veai → Memory Bank

На странице есть четыре переключателя:

Enable Memory Bank

Включите Memory Bank, если решения, ограничения или предпочтения должны сохраняться между чатами. Например, агент сможет учитывать соглашение о реальной БД в интеграционных тестах без повторного объяснения в каждой новой беседе.

  1. Включите Enable Memory Bank.
  2. Нажмите Apply.

Переключатель включает политику памяти, индекс сохранённых знаний в контексте агента и инструменты работы с памятью. Без него остальные опции неактивны. Отключите Memory Bank целиком, если проект содержит чувствительные данные или сохранённый контекст для него не нужен.

Auto-extract memories after each turn

Включите автоизвлечение для длинных рабочих диалогов, где договорённости и поправки возникают по ходу обсуждения и их неудобно каждый раз сохранять командой «Запомни». Отключите его, если хотите сами решать, какие факты попадут в память.

  1. Включите Enable Memory Bank.
  2. Включите Auto-extract memories after each turn.
  3. Нажмите Apply.

После завершённого хода плагин проверяет, накопилось ли достаточно нового содержательного контекста для фонового сохранения.

Run periodic consolidation (dream)

Включите периодическую консолидацию, если Memory Bank используется долго и в нём накапливаются дубликаты, разрозненные записи и изменения индекса. Для небольшого банка, который вы поддерживаете вручную, фоновую консолидацию можно отключить.

  1. Включите Enable Memory Bank.
  2. Включите Run periodic consolidation (dream).
  3. Нажмите Apply.

Плагин периодически исправляет индекс, удаляет почти точные дубликаты и объединяет связанные записи.

Memory notifications

Включите уведомления, если хотите видеть результаты автоматического извлечения и его ошибки. Это полезно в начале работы с Memory Bank, когда нужно проверить, какие факты сохраняются в фоне. Отключите уведомления после проверки, если фоновые сообщения отвлекают.

  1. Включите Enable Memory Bank.
  2. Включите Memory notifications.
  3. Нажмите Apply.

Настройка управляет уведомлениями автоматического извлечения. Результат ручной консолидации показывается отдельно после её запуска.


2. Как это работает

Вам почти не нужно ничего делать вручную — память работает в фоне. Под капотом происходят три процесса.

Запоминание (recall)

В начале каждого ответа агент видит краткий индекс всех сохранённых знаний (заголовок + одна строка‑подсказка). Если что‑то из индекса относится к вашему запросу, агент сам открывает нужную запись целиком и учитывает её. Решение «заглянуть в память» агент принимает самостоятельно — никаких ключевых слов вводить не надо.

Извлечение (extraction)

Если включена опция Auto-extract, после завершённого хода плагин проверяет, накопилось ли достаточно нового содержательного контекста. Извлечение выполняется пакетно: его могут пропустить для отменённого, ошибочного или повреждённого хода, а также если основной агент уже записал память. Если новых сообщений недостаточно для обычного запуска, плагин может обработать их после периода простоя; отдельная проверка выполняется и при закрытии чата. Это происходит в фоне; при включённых уведомлениях вы увидите сообщение о сохранении.

Уведомление о сохранении в память

Консолидация (dream)

Если включена опция Run periodic consolidation, фоновый планировщик периодически проверяет память. Консолидация запускается, когда память не пуста, прошёл минимальный интервал после предыдущего успешного запуска и накопилось достаточно изменённых записей. Сначала алгоритмическая фаза исправляет индекс и удаляет почти точные дубликаты, затем LLM-фаза может объединить связанные записи. Чтение записей само по себе не считается изменением.


3. Управление памятью вручную

Вам не обязательно полагаться только на автоматику — вы можете давать команды на естественном языке прямо в чате:

  • «Запомни, что…» — агент создаст новую запись в памяти.
  • «Обнови запись про…» — агент изменит существующую запись.
  • «Забудь про…» — агент удалит соответствующую запись (или только указанную деталь, сохранив остальные факты).

Команда памяти в чате

Если вы попросите забыть одну деталь из записи, где есть и другие полезные факты, агент уберёт только эту деталь, а остальное сохранит.

Ручная консолидация

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

  1. В окне Project откройте .veai/memory/.
  2. Щёлкните папку памяти или вложенную папку правой кнопкой мыши.
  3. Выберите Veai: Run Memory Consolidation.
  4. Дождитесь результата операции.

Ручной запуск пропускает ограничения фонового расписания, но не запускает вторую консолидацию, если одна уже выполняется.

Редактирование файлов напрямую

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

  1. Откройте .veai/memory/ в окне Project.
  2. Измените нужный Markdown-файл и сохраните его.
  3. Проверьте, что ссылка и описание записи в MEMORY.md соответствуют файлу.
  4. После массовых изменений запустите ручную консолидацию.

Память — это обычные Markdown‑файлы. Главный файл MEMORY.md служит оглавлением со ссылками на все записи. Плагин отслеживает изменения в каталоге через файловую систему IDE и сбрасывает внутренний кэш, поэтому сохранённые вручную изменения становятся доступны следующим обращениям к памяти без перезапуска IDE.


4. Где хранятся данные

<корень проекта>/
└── .veai/
└── memory/
├── MEMORY.md ← оглавление (индекс всех записей)
├── user-prefers-pdf-export-….md ← отдельная запись
├── authfilter-x-token-….md ← отдельная запись
└── …

Каждая запись — это Markdown‑файл с небольшим YAML‑заголовком (имя, краткое описание, тип) и телом с самим знанием.


5. Рекомендации

Несколько советов, чтобы память приносила максимум пользы:

  • Включите авто‑извлечение и консолидацию. Тогда память будет наполняться и поддерживаться сама, без вашего участия.
  • Подтверждайте удачные решения. Память фиксирует не только поправки («так не делай»), но и подтверждения («да, именно так»). Короткое «отлично, так и оставь» помогает агенту закрепить нужный подход.
  • Формулируйте устойчивые правила. Лучше всего запоминаются факты, которые останутся верными надолго: соглашения по проекту, инциденты и их причины, договорённости команды.
  • Не складывайте в память временное. Текущее состояние задачи, промежуточные заметки и черновики не стоит сохранять — для этого есть планы и списки задач.

6. Частые вопросы

Память отправляет мои данные куда‑то на сервер? Файлы памяти лежат локально в вашем проекте (.veai/memory/), но локальное хранение не означает, что модель не обрабатывает их содержимое. В обычном чате модель может получить индекс памяти и записи, которые агент открыл для запроса. Если включено автоматическое извлечение, модель также может получить содержимое беседы для фонового выделения новых записей. При включённой консолидации модель может получить существующие записи, которые фоновая операция проверяет и объединяет.

Будут ли мои секреты сохранены в память? Агент по правилам не должен сохранять секреты, учётные данные и персональные данные, но это правило не даёт абсолютной технической гарантии. Не передавайте чувствительные сведения в чат и периодически проверяйте .veai/memory/MEMORY.md и файлы записей. Если такая запись появилась, удалите её и убедитесь, что она не попала в VCS или резервную копию.

Чтобы снизить риск автоматического сохранения, отключите автоматическое извлечение памяти в Settings → Tools → Veai → Memory Bank. Для проектов с чувствительными данными можно отключить Memory Bank целиком.

Как полностью отключить память? Снимите галочку Enable Memory Bank в настройках. После этого память не попадает в контекст агента, а инструменты работы с памятью становятся недоступны. Уже созданные файлы останутся в .veai/memory/: проверьте и удалите их вручную, если они больше не нужны.

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

Память занимает много места в контексте? Нет. В контекст постоянно попадает только компактное оглавление (заголовок + строка‑подсказка на запись). Полное содержимое подгружается лишь для тех записей, которые относятся к текущей задаче.