sidebar_position: 3
title: "Persistent Memory"
description: "How Hermes Agent remembers across sessions — MEMORY.md, USER.md, and session search"
lang: ru
Постоянная память
Агент Hermes имеет ограниченную, курируемую память, которая сохраняется на протяжении всех сеансов. Это позволяет ему запомнить ваши предпочтения, ваши проекты, ваше окружение и то, чему он научился.
Как это работает
Память агента составляют два файла:
Файл
Цель
Лимит символов
MEMORY.md
Личные заметки агента — факты об окружающей среде, условности, полученные знания
2200 символов (~800 токенов)
ПОЛЬЗОВАТЕЛЬ.md
Профиль пользователя — ваши предпочтения, стиль общения, ожидания
1375 символов (~500 токенов)
Оба хранятся в ~/.hermes/memories/ и вводятся в системное приглашение в виде замороженного снимка при запуске сеанса. Агент управляет собственной памятью с помощью инструмента memory — он может добавлять, заменять или удалять записи.
:::информация
Ограничения на количество символов помогают сосредоточиться на памяти. Когда память заполнена, агент объединяет или заменяет записи, чтобы освободить место для новой информации.
Как память отображается в системной подсказке
В начале каждого сеанса записи памяти загружаются с диска и отображаются в системном приглашении в виде замороженного блока:
══════════════════════════════════════════════
MEMORY (your personal notes) [67% — 1,474/2,200 chars]
══════════════════════════════════════════════
User's project is a Rust web service at ~/code/myapi using Axum + SQLx
§
This machine runs Ubuntu 22.04, has Docker and Podman installed
§
User prefers concise responses, dislikes verbose explanations
Формат включает в себя:
- Заголовок, показывающий, какой магазин (ПАМЯТЬ или ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ)
- Процент использования и количество символов, чтобы агент знал емкость
- Отдельные записи, разделенные разделителями § (знак раздела).
- Записи могут быть многострочными.
Шаблон замороженного снимка: Вставка системного приглашения фиксируется один раз в начале сеанса и никогда не изменяется в середине сеанса. Это сделано намеренно — кэш префиксов LLM сохраняется для повышения производительности. Когда агент добавляет или удаляет записи памяти во время сеанса, изменения немедленно сохраняются на диске, но не отображаются в системном приглашении до начала следующего сеанса. Ответы инструмента всегда показывают активное состояние.
Действия инструмента памяти
Агент использует инструмент memory для следующих действий:
add — Добавить новую запись в памяти.
replace — заменить существующую запись обновленным содержимым (использует сопоставление подстроки через old_text)
удалить — удалить запись, которая больше не актуальна (используется сопоставление подстроки через old_text)
Действие read отсутствует — содержимое памяти автоматически вводится в системное приглашение при запуске сеанса. Агент рассматривает свои воспоминания как часть контекста разговора.
Сопоставление подстроки
Действия replace и remove используют короткое уникальное сопоставление подстроки — полный текст ввода не требуется. Параметр old_text просто должен быть уникальной подстрокой, идентифицирующей ровно одну запись:
# If memory contains "User prefers dark mode in all editors"memory(action="replace",target="memory",old_text="dark mode",content="User prefers light mode in VS Code, dark mode in terminal")
Если подстрока соответствует нескольким записям, возвращается ошибка с запросом более конкретного соответствия.
Объяснение двух целей
memory — Личные заметки агента
Для получения информации агенту необходимо помнить об окружающей среде, рабочих процессах и извлеченных уроках:
Факты об окружающей среде (ОС, инструменты, структура проекта)
Соглашения и конфигурация проекта
Обнаружены особенности инструмента и обходные пути.
Записи в дневнике выполненных задач
Навыки и методы, которые сработали.
user — Профиль пользователя
Для получения информации о личности пользователя, предпочтениях и стиле общения:
Имя, роль, часовой пояс
Коммуникационные предпочтения (краткие или подробные, предпочтения формата)
Любимые раздражения и вещи, которых следует избегать
Навыки рабочего процесса
Уровень технических навыков
Что сохранить, а что пропустить
Сохраните это (заранее)
Агент сохраняет автоматически — вам не нужно спрашивать. Он спасается, когда узнает:
Пользовательские настройки: «Я предпочитаю TypeScript, а не JavaScript» → сохранить в user.
Факты о среде: «На этом сервере работает Debian 12 с PostgreSQL 16» → сохраните в memory.
Исправления: «Не используйте sudo для команд Docker, пользователь находится в группе Docker» → сохранить в memory
Условия: «В проекте используются табуляции, ширина строки 120 символов, строки документации в стиле Google» → сохранить в memory.
Выполнена работа: «Перенос базы данных из MySQL в PostgreSQL 15 января 2026 г.» → сохранить в memory
Явные запросы: «Помните, что ротация ключей API происходит ежемесячно» → сохраните в memory.
Пропустить это
Тривиальная/очевидная информация: «Пользователь спросил о Python» — слишком расплывчато, чтобы быть полезным.
Факты, которые легко обнаружить заново: «Python 3.12 поддерживает вложенность f-строк» — можно выполнить поиск в Интернете
– Дампы необработанных данных: Большие блоки кода, файлы журналов, таблицы данных — слишком большие для памяти.
Эфемеры, специфичные для сеанса: Временные пути к файлам, одноразовый контекст отладки.
Информация уже в контекстных файлах: содержимое SOUL.md и AGENTS.md.
Управление емкостью
Память имеет строгие ограничения на количество символов, чтобы ограничить системные подсказки:
Магазин
Лимит
Типичные записи
память
2200 символов
8-15 записей
пользователь
1375 символов
5-10 записей
Что происходит, когда память заполнена
При попытке добавить запись, превышающую лимит, инструмент возвращает ошибку:
{"success":false,"error":"Memory at 2,100/2,200 chars. Adding this entry (250 chars) would exceed the limit. Replace or remove existing entries first.","current_entries":["..."],"usage":"2,100/2,200"}
Затем агент должен:
1. Прочтите текущие записи (отображаются в ответе об ошибке)
2. Определите записи, которые можно удалить или объединить.
3. Используйте replace для объединения связанных записей в более короткие версии.
4. Затем add новая запись.
Рекомендации. Если объем памяти превышает 80 % (отображается в заголовке системного приглашения), объедините записи перед добавлением новых. Например, объедините три отдельные записи «Проект использует X» в одну запись с подробным описанием проекта.
Практические примеры хороших записей в памяти
Компактные, насыщенные информацией записи работают лучше всего:
Система памяти автоматически отклоняет точные повторяющиеся записи. Если вы попытаетесь добавить контент, который уже существует, он вернет успех с сообщением «дубликаты не добавлены».
Сканирование безопасности
Записи памяти сканируются на предмет шаблонов внедрения и эксфильтрации перед принятием, поскольку они вводятся в системное приглашение. Содержимое, соответствующее шаблонам угроз (быстрое внедрение, утечка учетных данных, бэкдоры SSH) или содержащее невидимые символы Юникода, блокируется.
Поиск сеанса
Помимо MEMORY.md и USER.md, агент может искать свои прошлые разговоры с помощью инструмента session_search:
Все сеансы CLI и обмена сообщениями хранятся в SQLite (~/.hermes/state.db) с полнотекстовым поиском FTS5.
Поисковые запросы возвращают релевантные прошлые разговоры с обобщением Gemini Flash.
Агент может найти вещи, которые он обсуждал несколько недель назад, даже если их нет в его активной памяти.
hermessessionslist# Browse past sessions
session_search против памяти
Особенность
Постоянная память
Поиск сеанса
Емкость
Всего ~1300 токенов
Безлимитно (все сеансы)
Скорость
Мгновенно (в системной подсказке)
Требуется поиск + резюме LLM
Сценарий использования
Ключевые факты всегда доступны
Поиск конкретных прошлых разговоров
Управление
Курируется агентом вручную
Автоматически — все сеансы сохраняются
Стоимость токена
Фиксировано за сессию (~1300 токенов)
По требованию (поиск при необходимости)
Память предназначена для важных фактов, которые всегда должны быть в контексте. Поиск сеанса — это вопрос "мы обсуждали X на прошлой неделе?" запросы, в которых агенту необходимо вспомнить детали прошлых разговоров.
Конфигурация
# In ~/.hermes/config.yamlmemory:memory_enabled:trueuser_profile_enabled:truememory_char_limit:2200# ~800 tokensuser_char_limit:1375# ~500 tokens
Поставщики внешней памяти
Для более глубокой и постоянной памяти, выходящей за рамки MEMORY.md и USER.md, Hermes поставляется с 8 плагинами внешних поставщиков памяти, включая Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover и Supermemory.
Внешние поставщики используют наряду встроенную память (никогда не заменяя ее) и добавляют такие возможности, как графики знаний, семантический поиск, автоматическое извлечение фактов и межсессионное моделирование пользователей.
hermesmemorysetup# pick a provider and configure it
hermesmemorystatus# check what's active
Подробную информацию о каждом поставщике, инструкции по настройке и сравнению см. в руководстве Поставщики памяти.