Mnemosyne для агента Hermes: быстрое начало работы с локальной памятью
Локальная память Hermes с контролируемой записью.
Mnemosyne — это локальный провайдер памяти для Hermes Agent, который хранит рабочую память, структурированные факты, временные данные и эпизодическую историю в локальной базе SQLite — без хостинг-сервисов, без обязательных сетевых вызовов и с исключительно детальным контролем записи.
Его самое полезное свойство — не качество чистого восстановления информации. Это количество контроля, которое он предоставляет над путём записи: автоматическое сохранение диалога можно ограничить по ролям или полностью отключить, логирование результатов инструментов по умолчанию выключено, явные операции запоминания и забывания остаются доступными независимо от других настроек, а в новых релизах добавлена опциональная подавление самозеркаливания (self-echo) вокруг границ сжатия контекста. Эта комбинация делает его разумным выбором, когда вы хотите постоянную память, не превращая автоматически каждый диалог в перманентное знание.
Такая дисциплина пути записи важна, потому что у агентской памяти есть хорошо задокументированный режим отказа: собственные выводы модели могут быть захвачены, позже извлечены как будто они являются наблюдениями, и использованы для обоснования ещё более сильной версии самих себя. Петли самовоспроизводящейся памяти в AI-агентах подробно рассматривает этот режим отказа; данный же гайд фокусируется на конкретной конфигурации Mnemosyne, которая ограничивает его на практике. О том, где Mnemosyne находится относительно других бэкендов памяти Hermes, смотрите Сравнение провайдеров памяти для агентов.

Mnemosyne за одну минуту
Типичный провайдер памяти выполняет какую-то версию цикла: захват, извлечение, хранение, извлечение, а затем внедрение в будущий промпт. Mnemosyne добавляет несколько отдельных слоёв вокруг этого базового цикла: рабочая память, семантическое и лексическое восстановление, структурированные факты, временная информация, связи сущностей, эпизодическая память, консолидация, канонические факты и валидация памяти. Хранение осуществляется в локальном SQLite с FTS5 и необязательным векторным поиском, что делает его значительно более проверяемым, чем облачный продукт памяти, и более функциональным, чем простой файл MEMORY.md.
Кратко, относительно остальной экосистемы провайдеров Hermes: Holographic проще и целенаправленно ориентирован на хранилище фактов; Hindsight делает акцент на гибридном поиске, графах знаний и рефлексии; Honcho делает акцент на моделировании сверстников и пользователей с диалектическим рассуждением; Mem0 делает акцент на автоматическом извлечении фактов на базе LLM; а Mnemosyne объединяет локальное хранение в SQLite, гибридное восстановление, консолидацию, структурированные факты и необычно детальные контроли удержания. Полный разбор, включая требования к инфраструктуре и заметки по self-hosting для каждого провайдера, приведён в Сравнение провайдеров памяти для агентов.
Актуальные версии
По состоянию на сентябрь 2026 года, стабильный релиз на PyPI — mnemosyne-memory 3.15.1, а ветка 4.0 доступна как пререлиз. Для продакшн-установки Hermes начинайте со стабильной версии, если у вас нет конкретной потребности в исправлении или функции из 4.0 и вы готовы тестировать миграцию базы данных и изменение поведения. Проверьте установленную версию командой:
hermes mnemosyne version
Установка Mnemosyne в Hermes
Сначала активируйте собственное виртуальное окружение Hermes, если вы использовали стандартную локальную установку:
source ~/.hermes/hermes-agent/venv/bin/activate
Для локальной поддержки эмбеддингов установите базовый пакет с additional extra для эмбеддингов и обёртку плагина Hermes:
python -m pip install \
"mnemosyne-memory[embeddings]" \
mnemosyne-hermes
Зарегистрируйте плагин:
mnemosyne-hermes install
Если вы заменяете существующую регистрацию плагина:
mnemosyne-hermes install --force
Активируйте провайдера и перезапустите гейтвей:
hermes config set memory.provider mnemosyne
hermes gateway restart
Проверьте с помощью:
hermes memory status
Ожидаемый вывод будет похож на:
Provider: mnemosyne
Plugin: installed
Status: available
Docker и установки с постоянным сервером
Если Hermes работает внутри постоянного Docker-образа или image-based развертывания, установите плагин в боковое виртуальное окружение на смонтированном домашнем каталоге Hermes, а не в пересобираемое Python-окружение контейнера, чтобы плагин пережил пересборку образов:
export HERMES_HOME=/opt/data
VENV="$HERMES_HOME/.mnemosyne/venv"
python3 -m venv "$VENV"
"$VENV/bin/python" -m pip install --upgrade "mnemosyne-memory[embeddings]" mnemosyne-hermes
"$VENV/bin/mnemosyne-hermes" install --mode wrapper --python "$VENV/bin/python"
hermes config set memory.provider mnemosyne
Боковое виртуальное окружение должно использовать ту же большую/младшую версию Python, что и работающий гейтвей Hermes — не указывайте на несвязанный python3 из PATH. После этого перезапустите фактический контейнер или сервис и проверьте состояние с помощью "$VENV/bin/mnemosyne-hermes" status и hermes memory status.
Не отключайте весь набор инструментов памяти Hermes
Держите два понятия отдельно: встроенная память самого Hermes (MEMORY.md / USER.md, полностью описанная в Система памяти агента Hermes) и внешний провайдер (Mnemosyne). Не запускайте hermes tools disable memory бездумно при конфигурировании внешнего провайдера — в зависимости от версии Hermes, эта команда может также скрыть инструменты внешних провайдеров памяти. Используйте вместо этого конфигурацию провайдера, как показано ниже.
Базовый статус и проверка
hermes memory status
hermes mnemosyne stats
hermes mnemosyne stats --global
hermes mnemosyne inspect "query"
Экспортируйте переносимый бэкап:
hermes mnemosyne export \
--output ~/mnemosyne-backup.json
База данных обычно находится в ~/.hermes/mnemosyne/data/mnemosyne.db. Поскольку это SQLite, проверка и бэкап просты стандартными инструментами. Для остальной части команд гейтвея, сессий и диагностики, упомянутых в этом гайде, Шпаргалка по CLI агента Hermes — более быстрый справочник, чем копание в выводе --help.
Политике удержания по умолчанию стоит уделить внимание
Первый контроль, который стоит понять, — это sync_roles. Текущие значения по умолчанию в Mnemosyne уже более консервативны, чем в ранних релизах — автоматическая синхронизация Hermes по умолчанию затрагивает только реплики пользователя, а не и пользователя, и ассистента — но для строгого явного удержания полностью отключить автосохранение реплик стоит того. Отредактируйте ~/.hermes/config.yaml:
memory:
provider: mnemosyne
mnemosyne:
sync_roles: []
Пустой список означает, что обычные реплики диалога не сохраняются автоматически методом sync_turn(). Явные операции mnemosyne_remember продолжают работать независимо — обычный диалог перестаёт автоматически попадать в память, тогда как явное «запомни это» всё ещё доходит до Mnemosyne.
Отключите автоматическое логирование результатов инструментов
Mnemosyne также может логировать выполнение инструментов как память. Для консервативной конфигурации оставьте это отключенным в ~/.hermes/.env:
MNEMOSYNE_LOG_TOOLS=0
Это уже значение по умолчанию, но явная установка документирует политику, а не полагается на предположение о значениях по умолчанию. После этого перезапустите Hermes:
hermes gateway restart
С sync_roles: [] и MNEMOSYNE_LOG_TOOLS=0 вместе оба основных автоматических пути записи — автосохранение диалога и автосохранение результатов инструментов — выключены.
Сохраните автоматическое восстановление
Отключение автоматических записей не требует отключения восстановления. Полезная политика сохраняет автоматическое удержание выключенным, тогда как автоматическое восстановление, явное запоминание и явное забывание остаются включёнными — память должна быть легко читаемой, но трудно записываемой, что близко к противоположности значения по умолчанию «захвати всё и разберись потом».
Добавьте постоянное указание для агента
Конфигурация провайдера блокирует захват на уровне провайдера, но модель всё ещё может решить вызвать явный инструмент записи по собственной инициативе. Добавьте явную политику в SOUL.md:
## Политика долгосрочной памяти
Mnemosyne — это провайдер долгосрочной памяти.
Не записывайте ничего в Mnemosyne, если пользователь явно не попросил вас
запомнить, сохранить, удержать или сохранить эту информацию.
Если информация кажется полезной для будущих сессий, но пользователь явно
не просил её запомнить, попросите разрешения перед вызовом
mnemosyne_remember или другого инструмента записи Mnemosyne.
Не создавайте постоянные воспоминания из собственных рассуждений, допущений,
резюме, интерпретаций, выводов или выведенных предпочтений.
Не создавайте постоянные воспоминания из вывода инструментов, если пользователь
явно не попросил запомнить этот результат.
При хранении одобренного воспоминания сохраняйте то, что пользователь
фактически заявил. Не приукрашивайте его выведенным контекстом или выводами.
Чтение и восстановление воспоминаний из Mnemosyne разрешено без запроса
разрешения.
Перезапустите гейтвей и начните новую сессию:
hermes gateway restart
/new
Это политика,强制执行ваемая моделью, а не жесткая граница разрешений — она дополняет конфигурацию на уровне провайдера выше, а не заменяет её.
А что насчёт memory.write_approval?
Hermes поддерживает memory.write_approval: true для записей во встроенные MEMORY.md / USER.md, и Mnemosyne реализует собственную специфичную для провайдера стадиальную обработку явных записей в новых релизах. Это многообещающе, но есть архитектурное замечание, которому стоит уделить серьёзное внимание: Hermes пока не предоставляет единого унифицированного, независимого от провайдера контракта одобрения для всех внешних провайдеров памяти, и реализация pending/apply в Mnemosyne специфична для провайдера, а не является частью общего стандарта. Не предполагайте, что одобрение работает правильно, только потому, что ключ конфигурации присутствует — протестируйте его против ваших точных версий Hermes и Mnemosyne. Пока независимое от провайдера одобрение не созреет, сочетание sync_roles: [], MNEMOSYNE_LOG_TOOLS=0 и явной политики записи в SOUL.md выше даёт вам надежную базовую линию, с тестированием пути одобрения отдельно, если вы намерены на него полагаться.
Включите подавление самозеркаливания
Текущий Mnemosyne также предлагает опциональное подавление самозеркаливания:
MNEMOSYNE_SELF_ECHO_ENABLED=1
Поместите это в ~/.hermes/.env, затем перезапустите:
hermes gateway restart
Подавление самозеркаливания нацелено специально на границы сжатия контекста — его цель — снизить случаи, когда память, только что созданная провайдером, сразу же подаётся обратно агенту, как будто это независимый контекст. Это намеренно best-effort решение и не заменяет фильтрацию записей: контроли записи останавливают сомнительные воспоминания от входа в самом начале, тогда как контроли самозеркаливания останавливают недавний вывод провайдера от прямого отскока назад. Оба важны, и ни одно не заменяет другое.
Консервативная конфигурация Mnemosyne
Собирая детали вместе, стартовая конфигурация для self-hosted личного инженерного агента выглядит так. В ~/.hermes/config.yaml:
memory:
provider: mnemosyne
mnemosyne:
sync_roles: []
В ~/.hermes/.env:
MNEMOSYNE_LOG_TOOLS=0
MNEMOSYNE_SELF_ECHO_ENABLED=1
И в SOUL.md, минимум:
Храните долгосрочную память только когда пользователь явно её запрашивает.
Не превращайте выводы модели или вывод инструментов в постоянную память
без явного разрешения.
Проверьте, что обычный диалог не сохраняется
Сначала проверьте базовое количество записей:
hermes mnemosyne stats
Начните новую сессию Hermes и произнесите простое фактическое утверждение, не прося агента запомнить его, например:
PurpleOtter использует порт 48123.
После этого найдите его:
hermes mnemosyne inspect "PurpleOtter"
Ожидаемый результат: Results for 'PurpleOtter': 0. Также перепроверьте hermes mnemosyne stats — количество записей рабочей памяти не должно увеличиться из-за этого обычного реплики.
Проверьте явную память
Теперь произнесите утверждение того же типа, но явно попросите сохранить его:
Запомни, что BlueKoala использует порт 17321.
Проверьте его, затем начните новую сессию и попросите вернуть его:
hermes mnemosyne inspect "BlueKoala"
/new
Какой порт использует BlueKoala?
Hermes должен корректно восстановить значение — эта пара тестов изолирует политику пути записи (ничего не попадает без запроса) от механизма восстановления (то, что попало, надёжно возвращается).
Проверьте логирование инструментов
С установленным MNEMOSYNE_LOG_TOOLS=0, попросите Hermes выполнить отличительную, уникальную команду:
Используй инструмент терминала для выполнения:
echo tool-canary-834729
Затем найдите canary-строку:
hermes mnemosyne inspect "tool-canary-834729"
Ожидаемый результат: 0 results. Это гораздо более сильный тест, чем просто доверять тому, что переменная окружения учитывается везде.
Проверка базы данных
Поскольку хранение осуществляется в SQLite, внутренняя схема напрямую доступна для проверки:
sqlite3 ~/.hermes/mnemosyne/data/mnemosyne.db '.tables'
В зависимости от версии, вы можете увидеть таблицы, такие как working_memory, episodic_memory, facts, consolidated_facts, gists, graph_edges, memoria_facts и memory_embeddings. Это важно при тестировании удаления — система памяти может успешно удалить запись рабочей памяти, оставив за ней производный факт, gist или графовый объект. В Mnemosyne были реальные ошибки в этой области, связанные с осиротевшими производными записями, и в новых релизах как удаление, так и диагностика были ужесточены соответственно. Предпочитайте поддерживаемые провайдером пути удаления и doctor/repair, а не ручное удаление строк SQLite, если вы полностью не понимаете текущую схему.
Удаление рабочей памяти, привязанной к сессии
Одна тонкость: записи рабочей памяти Mnemosyne могут быть привязаны к сессии, поэтому строка с scope = session может быть невидима для автономного удаления, работающего в сессии default. При отладке проверяйте scope напрямую:
SELECT id, session_id, scope, content
FROM working_memory;
Провайдеру или API нужен правильный scope сессии для изменения локальных для сессии записей — ещё одна причина предпочитать поддерживаемые административные инструменты редактированию сырого SQL.
Консолидация: не спешите с sleep()
Mnemosyne может консолидировать рабочую память в представления с более долгим временем жизни, что полезно, но является изменяющей операцией. Перед включением агрессивной автоматической консолидации, проверьте, что фактически захватывается, убедитесь, что обычные реплики не попадают в память неожиданно, проверьте удаление от начала до конца и сделайте бэкап базы данных. Затем экспериментируйте с:
hermes mnemosyne sleep
Недавние изменения в Mnemosyne сделали обработку конфликтов более консервативной — одна лишь семантическая близость больше не доказывает, что одно воспоминание должно инвалидировать другое, что является именно тем направлением, в которое должна двигаться система постоянной памяти агента, как это описано в Петлях самовоспроизводящейся памяти в AI-агентах.
Бэкап перед обновлениями
Создайте переносимый экспорт перед любым значимым изменением:
hermes mnemosyne export \
--output ~/mnemosyne-backup.json
Для важных установок также скопируйте локальную базу данных или каталог данных перед крупными обновлениями. Mnemosyne 4.x на данный момент является линейкой пререлизов, поэтому обновление основной версии заслуживает большей осторожности, чем рутинное патч-обновление.
Итоговая рекомендуемая конфигурация
Для долгоживущей установки Hermes, где точность памяти важнее, чем запоминание всего, устойчивая конфигурация выглядит так: локальное хранение Mnemosyne включено, автоматическое восстановление включено, автосохранение диалога выключено, автосохранение сообщений ассистента выключено, логирование результатов инструментов выключено, явное запоминание и забывание включено, подавление самозеркаливания включено, поиск по сессии включено, а человеческий обзор для чувствительных записей желателен после тестирования пути одобрения. Это заставляет Mnemosyne функционировать в первую очередь как курируемое хранилище долгосрочной памяти, а не как архив транскриптов — цель не в том, чтобы заставить Hermes помнить всё, что он когда-либо говорил, а в том, чтобы заставить его помнить вещи, которые всё ещё будут истинными, когда начнётся следующая сессия. Если вы запускаете несколько профилей с разными провайдерами или политиками удержания, Продакшн-настройка агента Hermes описывает настройку на уровне профилей для поддержания их согласованности.