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 для следующих действий:

Действие 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 — Профиль пользователя

Для получения информации о личности пользователя, предпочтениях и стиле общения:

Что сохранить, а что пропустить

Сохраните это (заранее)

Агент сохраняет автоматически — вам не нужно спрашивать. Он спасается, когда узнает:

Пропустить это

Управление емкостью

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

Магазин Лимит Типичные записи
память 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» в одну запись с подробным описанием проекта.

Практические примеры хороших записей в памяти

Компактные, насыщенные информацией записи работают лучше всего:

# Good: Packs multiple related facts
User runs macOS 14 Sonoma, uses Homebrew, has Docker Desktop and Podman. Shell: zsh with oh-my-zsh. Editor: VS Code with Vim keybindings.

# Good: Specific, actionable convention
Project ~/code/api uses Go 1.22, sqlc for DB queries, chi router. Run tests with 'make test'. CI via GitHub Actions.

# Good: Lesson learned with context
The staging server (10.0.1.50) needs SSH port 2222, not 22. Key is at ~/.ssh/staging_ed25519.

# Bad: Too vague
User has a project.

# Bad: Too verbose
On January 5th, 2026, the user asked me to look at their project which is
located at ~/code/api. I discovered it uses Go version 1.22 and...

Предотвращение дублирования

Система памяти автоматически отклоняет точные повторяющиеся записи. Если вы попытаетесь добавить контент, который уже существует, он вернет успех с сообщением «дубликаты не добавлены».

Сканирование безопасности

Записи памяти сканируются на предмет шаблонов внедрения и эксфильтрации перед принятием, поскольку они вводятся в системное приглашение. Содержимое, соответствующее шаблонам угроз (быстрое внедрение, утечка учетных данных, бэкдоры SSH) или содержащее невидимые символы Юникода, блокируется.

Поиск сеанса

Помимо MEMORY.md и USER.md, агент может искать свои прошлые разговоры с помощью инструмента session_search:

hermes sessions list    # Browse past sessions
Особенность Постоянная память Поиск сеанса
Емкость Всего ~1300 токенов Безлимитно (все сеансы)
Скорость Мгновенно (в системной подсказке) Требуется поиск + резюме LLM
Сценарий использования Ключевые факты всегда доступны Поиск конкретных прошлых разговоров
Управление Курируется агентом вручную Автоматически — все сеансы сохраняются
Стоимость токена Фиксировано за сессию (~1300 токенов) По требованию (поиск при необходимости)

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

Конфигурация

# In ~/.hermes/config.yaml
memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 2200   # ~800 tokens
  user_char_limit: 1375     # ~500 tokens

Поставщики внешней памяти

Для более глубокой и постоянной памяти, выходящей за рамки MEMORY.md и USER.md, Hermes поставляется с 8 плагинами внешних поставщиков памяти, включая Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover и Supermemory.

Внешние поставщики используют наряду встроенную память (никогда не заменяя ее) и добавляют такие возможности, как графики знаний, семантический поиск, автоматическое извлечение фактов и межсессионное моделирование пользователей.

hermes memory setup      # pick a provider and configure it
hermes memory status     # check what's active

Подробную информацию о каждом поставщике, инструкции по настройке и сравнению см. в руководстве Поставщики памяти.