Каждый раз, когда вы открываете новый чат с AI-ассистентом, он начинает с нуля — не знает вашего имени, не помнит проект, над которым вы работали вчера, не记得 ваши偏好. Hermes Agent решает эту проблему с помощью системы persistent memory: агент запоминает контекст между сессиями, хранит важные факты о вас и вашем окружении, и может найти информацию из разговоров недельной давности.
Что такое persistent memory в AI-агенте?
Persistent memory (постоянная память) — это механизм, который позволяет AI-агенту сохранять информацию между сессиями. В отличие от обычного чат-бота, который «забывает» всё после закрытия окна, агент с persistent memory помнит ваши preferences, настройки окружения, детали проектов и уроки из прошлых разговоров.
У Hermes Agent persistent memory реализована через три слоя:
Каждый слой решает свою задачу. MEMORY.md и USER.md — это «память на каждый день», всегда доступная в контексте. Session search — это «долговременная память» для поиска конкретных деталей из прошлых разговоров.
Как Hermes запоминает контекст: два файла на диске
Система памяти Hermes построена на двух markdown-файлах в директории ~/.hermes/:
| Файл | Назначение | Лимит |
|---|---|---|
| MEMORY.md | Заметки агента: окружение, инструменты, conventions | 2 200 символов |
| USER.md | Профиль пользователя: роль,偏好, стиль общения | 1 375 символов |
Оба файла загружаются в system prompt при старте каждой сессии. Агент видит свои «воспоминания» как часть контекста — ему не нужно заново узнавать, что вы используете macOS, предпочитаете TypeScript, или что ваш staging-сервер работает на порту 2222.
Как это выглядит в system prompt:
══════════════════════════════════════════════
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
Символ § разделяет записи. Процент показывает заполненность — агент видит, когда память почти полна, и консолидирует записи.
Frozen snapshot: почему память не обновляется мгновенно
Важная деталь: system prompt захватывается один раз при старте сессии и не меняется в её процессе. Это сделано для производительности — LLM использует prefix cache, и изменение system prompt сбрасывало бы кеш.
Когда агент добавляет или удаляет запись из памяти, изменения записываются на диск немедленно, но появятся в system prompt только в следующей сессии. Ответы инструмента memory всегда показывают актуальное состояние.
Как агент управляет памятью: инструмент memory
Hermes использует инструмент memory с тремя действиями:
old_text)old_textДействия replace и remove используют substring matching — не нужно передавать текст записи целиком. Достаточно уникальной подстроки:
# Если в памяти есть "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")
Если подстрока совпадает с несколькими записями, система вернёт ошибку с просьбой уточнить.
Что агент запоминает автоматически
Агент сохраняет информацию проактивно — без явной просьбы пользователя:
sudo для Docker, я в группе docker» → MEMORY.mdКогда память переполняется
MEMORY.md ограничен 2 200 символами. Когда новая запись не влезает, инструмент возвращает ошибку с текущим содержимым:
{
"success": false,
"error": "Memory at 2,100/2,200 chars. Adding this entry (250 chars) would exceed the limit.",
"current_entries": ["..."]
}
Агент тогда сам консолидирует: объединяет связанные записи в одну более компактную, удаляет устаревшие, и повторяет попытку. Это не баг, а фича — лимит заставляет агента хранить только самое важное.
Session Search: поиск по прошлым разговорам
MEMORY.md вмещает только ключевые факты. Но что, если нужно вспомнить детали обсуждения трёхнедельной давности? Для этого в Hermes есть session search — полнотекстовый поиск по всем прошлым сессиям.
Все CLI- и messaging-сессии хранятся в SQLite базе (~/.hermes/state.db) с индексом FTS5. Агент может:
Скорость поиска: ~20 мс на FTS5-запрос, ~1 мс на прокрутку. Никаких LLM-вызовов — чистый поиск по тексту.
Память vs поиск: когда что использовать
| Возможность | Persistent Memory | Session Search |
|---|---|---|
| Ёмкость | ~1 300 токенов | Без ограничений |
| Скорость | Мгновенно (в system prompt) | ~20 мс запрос |
| Стоимость | Токены в каждом промпте | Бесплатно |
| Назначение | Ключевые факты всегда под рукой | Поиск конкретных обсуждений |
| Управление | Агент курирует | Автоматически |
Memory — для фактов, которые должны быть в контексте всегда. Session search — для «мы что обсуждали X на прошлой неделе?»
Honcho: глубокое моделирование пользователя
Помимо встроенной памяти, Hermes поддерживает внешние провайдеры. Один из самых интересных — Honcho от Plastic Labs.
Honcho добавляет диалектическое рассуждение: после каждого разговора система анализирует его, задаёт себе вопросы о том, что разговор reveals о пользователе, и выводит «conclusions» — структурированные insights о preferences, привычках и целях.
В отличие от MEMORY.md, где агент записывает явные факты, Honcho выводит неявные паттерны — например, что вы consistently отвечаете лучше на короткие ответы, или что вы часто работаете с определённым типом задач.
Инструменты Honcho:
honcho_profile — накопленная модель пользователяhoncho_search — семантический поиск по всем разговорамhoncho_context — контекст для текущей задачиhoncho_conclude — запуск диалектического рассужденияСравнение с ChatGPT, Claude и Gemini
Как память Hermes отличается от памяти в коммерческих AI-ассистентах?
ChatGPT Memory
ChatGPT хранит два слоя: saved memories (явные факты, которые вы просили запомнить) и temporary context (информация из текущего чата). Типичный месячный пользователь накапливает 40–80 сохранённых фактов.
В июне 2026 OpenAI запустила функцию Dreaming — фоновый процесс, который анализирует годы прошлых разговоров и обновляет память без явного запроса. Все воспоминания хранятся на серверах OpenAI indefinitely.
Ключевое отличие от Hermes: ChatGPT хранит память на своих серверах, вы не контролируете процесс. Hermes хранит всё локально в markdown-файлах — вы видите и контролируете каждую запись.
Claude Memory
Claude запустила automatic Chat Memory для всех планов в марте 2026. Система автоматически сканирует историю чатов и создаёт синтезированный summary ключевых фактов.
Лимит: 30 ручных правок, по 200 символов каждая — как коллекция Post-it записок. Есть Temporary Chat mode для приватных разговоров без создания воспоминаний.
Ключевое отличие от Hermes: Claude хранит память в своём облаке, лимит на ручные правки жёстче (30 × 200 = 6 000 символов vs 3 575 у Hermes). Зато Hermes даёт session search — неограниченный поиск по всем прошлым разговорам.
Gemini
Gemini Notebooks не имеет persistent memory в классическом смысле — только контекст из загруженных документов. Нет автоматического запоминания фактов между сессиями.
Сводная таблица
| Платформа | Где хранится | Лимит | Автозапоминание | Поиск по истории |
|---|---|---|---|---|
| **Hermes Agent** | Локально (markdown + SQLite) | 3 575 символов + FTS5 | Да, агент курирует | Да, FTS5 |
| **ChatGPT** | Серверы OpenAI | ~40–80 фактов | Да + Dreaming | Ограниченный |
| **Claude** | Серверы Anthropic | 30 × 200 символов | Да (с марта 2026) | Chat search |
| **Gemini** | Нет persistent memory | — | Нет | Нет |
Практические примеры: что записывать в память
Хорошие записи (компактные, информативные)
# Окружение
User runs macOS 14 Sonoma, uses Homebrew, has Docker Desktop. Shell: zsh.
Editor: VS Code with Vim keybindings.
# Проект
Project ~/code/api uses Go 1.22, sqlc for DB, chi router. Tests: 'make test'.
CI via GitHub Actions.
# Урок
Staging server (10.0.1.50) needs SSH port 2222, not 22. Key: ~/.ssh/staging_ed25519.
Плохие записи (слишком общие или слишком длинные)
# Плохо: слишком общее
User has a project.
# Плохо: слишком многословное
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...
Настройка памяти в config.yaml
memory:
memory_enabled: true # Включить persistent memory
user_profile_enabled: true # Включить USER.md
memory_char_limit: 2200 # Лимит MEMORY.md
user_char_limit: 1375 # Лимит USER.md
write_approval: false # false = агент пишет свободно | true = требует одобрения
Параметр write_approval: true полезен, если вы хотите контролировать каждую запись в память — агент будет запрашивать подтверждение перед сохранением.
Ограничения и tradeoffs
FAQ
Что произойдёт, если я удалю MEMORY.md?
Агент начнёт с чистого листа — не будет знать ничего об окружении, проектах или preferences. Файл будет создан заново при первой записи в память. USER.md при этом не затрагивается.
Можно ли редактировать MEMORY.md вручную?
Технически да — это обычный markdown-файл. Но агент может перезаписать ваши изменения при следующей сессии. Лучше использовать инструмент memory или настроить write_approval: true.
Чем Hermes memory отличается от RAG?
RAG (Retrieval-Augmented Generation) ищет по внешней базе знаний при каждом запросе. Hermes memory — это фиксированный контекст, всегда загружаемый в system prompt. Session search работает как RAG, но по вашим собственным разговорам, а не по внешним документам.
Сколько токенов потребляет память?
MEMORY.md + USER.md — примерно 1 300 токенов в каждом промпте. Это фиксированные расходы независимо от длины разговора.
Работает ли память в Docker?
Да, если директория ~/.hermes примонтирована как volume. Без этого память теряется при пересоздании контейнера.