Память

Память в Hermes Agent: курируемые файлы вместо базы

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

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

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

Сразу оговорка: Persona этот подход не использует — у нас память живёт в базе, и это не описание нашего стека, а разбор чужого решения. Сведения о фреймворке приведены по состоянию на 28.07.2026 и требуют проверки на момент чтения. Что это за фреймворк вообще — в обзоре Hermes Agent.

#Короткий ответ

Курируемая память — это небольшой набор текстовых файлов с фактами о пользователе и о работе: профиль человека и общие заметки. Ключевых свойств три:

  • Ограниченный объём. Файл не растёт бесконечно, он поддерживается в размере, который целиком помещается в промпт.
  • Читаемость целиком. Человек может открыть его и за минуту увидеть всё, что агент о нём помнит.
  • Отбор через одобрение. Автоматически извлечённый факт не записывается сразу, а ждёт подтверждения — во фреймворке за это отвечает отдельный режим.

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

#Как это устроено

Разница с индексным подходом лежит в одном месте — в моменте отбора.

ИНДЕКСНАЯ ПАМЯТЬ
  всё записывается  ──▶  хранилище растёт
                              │
                         запрос пользователя
                              │
                         ПОИСК ПО РЕЛЕВАНТНОСТИ  ◀── отбор здесь
                              │
                         несколько фрагментов в промпт

КУРИРУЕМАЯ ПАМЯТЬ
  кандидат ──▶ ОДОБРЕНИЕ  ◀── отбор здесь
                    │
               файл ограниченного размера
                    │
               запрос пользователя
                    │
               файл целиком в промпт

В индексной схеме отбор происходит в момент чтения и делается алгоритмом. В курируемой — в момент записи и делается человеком либо явной политикой.

Из этого вытекает всё остальное, включая главное практическое следствие: в курируемой памяти нет ситуации «факт есть, но не нашёлся». Если факт записан, он в промпте. Всегда.

#Сравнение по пяти критериям

Критерий Курируемые файлы Индексная память
Объяснимость Открыл и прочитал целиком Нужен разбор, почему нашлось это
Полнота отбора Всё записанное в промпте Нужное может не найтись
Масштаб Десятки фактов Тысячи и больше
Стоимость хода Файл в промпте каждый раз Только найденные фрагменты
Исправление ошибки Правка текста руками Поиск записи, инвалидация

Первая строка — главное преимущество, и оно недооценивается. Вопрос «почему ассистент так про меня думает» в файловой схеме решается открытием файла. В индексной он требует отдельного механизма объяснения: какая запись подмешалась, откуда она взялась, когда была создана.

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

Третья строка — главный недостаток, и он не лечится. Файл, который должен помещаться в промпт целиком, не может содержать историю переписки за два года.

Механика индексного подхода со стороны — в материале про то, как работает память ИИ.

#Что из этого следует на практике

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

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

Ограничение объёма надо поддерживать активно. Файл, который никто не подрезает, за полгода перестаёт помещаться в промпт, и подход тихо ломается. Нужна либо дисциплина, либо механизм вытеснения.

Факт и процедура — разные вещи. «Я работаю с проектом Астра» — факт, место в памяти. «Отчёты делай так-то» — процедура, место в навыках. Смешение приводит к тому, что процедура применяется, когда о ней спросили, а не когда она нужна; разбор границ — в материале про навыки агента.

#Где интуиция подводит

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

«Если память в файле, её мало». Её ровно столько, сколько человек счёл нужным. Индексная память объёмнее, но в промпт всё равно попадает лишь несколько фрагментов — и не факт, что нужные.

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

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

«Достаточно выбрать одно из двух». На практике зрелые системы совмещают: небольшая всегда доступная память плюс индексируемая история. Разбор такого расслоения — в материале про иерархическую память и её уровни.

#Граница применимости

Курируемая файловая память работает, когда одновременно выполняются четыре условия:

  1. Фактов о пользователе десятки, а не тысячи. Личный ассистент — да. База знаний компании — нет.
  2. Факты меняются медленно. Имя, роль, проекты, предпочтения. Не «что я делал во вторник».
  3. Пользователь готов подтверждать записи. Хотя бы изредка. Полностью автоматическая курируемая память — противоречие в терминах.
  4. Объяснимость важнее полноты. Вам важнее понимать, почему ассистент так думает, чем чтобы он помнил всё.

Не работает, когда нужно искать по большому объёму прошлого: «что мы обсуждали в марте», «в каком файле была та формулировка». Это задача журнала и поиска, а не курируемой памяти, и правильный ответ — иметь и то, и другое.

И отдельно: подход плохо переносится на память из событий реальной жизни. Текст с экрана, расшифровка речи, записи календаря приходят потоком и в объёме, который нельзя ни просмотреть глазами, ни удержать в ограниченном файле. Здесь курируемый файл может быть только вершиной — выжимкой поверх хранилища, а не заменой ему. Как это соотносится с нашим подходом и где мы объективно проигрываем — в сравнении Persona Agent и Hermes Agent.

#Частые вопросы

#Чем курируемая память отличается от истории переписки?

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

#Не слишком ли мало — держать память в одном файле?

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

#Кто решает, что попадёт в память?

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

#Что делать, когда файл перестал помещаться в промпт?

Подрезать: объединять близкие факты, удалять устаревшие, выносить редко нужное в историю. Это обязательная работа, а не признак поломки подхода — ограниченность объёма и есть его условие работоспособности.

#Такой подход используется в Persona?

Нет. У нас память живёт в базе с поиском, а не в читаемом файле. Мы разбираем чужое решение, потому что у него есть сильная сторона, которой у нас нет: возможность за минуту увидеть целиком всё, что система о вас помнит.

#Можно ли совместить оба подхода?

Именно так и делают зрелые системы: компактная всегда доступная память сверху и индексируемая полная история снизу. Вопрос не «что выбрать», а «где провести границу» — какие факты достойны постоянного присутствия в промпте, а какие достаются по запросу.

#Вывод

Курируемая файловая память — это размен: вы отдаёте масштаб и получаете объяснимость. Всё, что записано, гарантированно попадает в промпт; всё, что попало в промпт, можно прочитать глазами за минуту; ошибка исправляется правкой строки.

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

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт