Mnemosyne — zero-cloud память для AI-агентов в одном SQLite-файле
📂 Исходный код на GitHubУниверсальный слой памяти для AI-агентов, работающий без облака: один pip install, один SQLite-файл, ноль внешних сервисов. Архитектура BEAM — рабочая память с автоинжекцией контекста, эпизодическая память с гибридным поиском sqlite-vec + FTS5 и темпоральный TripleStore. Бинарные векторы MIB сжимают эмбеддинги в 32 раза, гибридный скоринг считается целиком внутри SQLite. Встроенный MCP-сервер (stdio/SSE), Python SDK, CLI, двунаправленная синхронизация между устройствами с опциональным шифрованием на клиенте. Совместим с Claude Code, Cursor, Codex CLI, Windsurf, OpenWebUI, OpenClaw и Hermes Agent. Python 3.10+, MIT.
Mnemosyne — это открытый слой памяти для AI-агентов с философией zero-cloud: один pip install, один файл SQLite и никаких внешних сервисов. Проект задуман как Hermes-first, но работает с любым агент-фреймворком — Claude Code, Cursor, OpenAI Codex CLI, Windsurf, OpenWebUI, OpenClaw или собственным агентом на Python — через встроенный MCP-сервер или прямой SDK. Написан на чистом Python (3.10+), распространяется под лицензией MIT и собрал около 2,5 тысяч звёзд на GitHub.
Проблема, которую решает Mnemosyne, знакома каждому, кто работает с агентами: у моделей нет долговременного состояния. Каждая сессия начинается с нуля — агент забывает предпочтения пользователя, выводы прошлых задач и контекст проекта. Mnemosyne даёт агенту память, не требуя ни облака, ни развёртывания отдельной инфраструктуры вроде PostgreSQL, Qdrant или Docker-стека: всё помещается в один SQLite-файл на машине пользователя.
Архитектура BEAM: три уровня памяти
В основе лежит BEAM (Bilevel Episodic-Associative Memory) — трёхуровневая схема памяти, напоминающая организацию памяти человека:
- Working Memory (рабочая память) — «горячий» контекст, который автоматически инжектируется перед вызовами LLM; переполнение контролируется лимитом элементов и вытеснением по TTL.
- Episodic Memory (эпизодическая память) — долгосрочное хранилище с гибридным поиском на связке sqlite-vec + FTS5; рабочая память периодически консолидируется в неё, сжимая сырые детали в выводы.
- TripleStore — темпоральный граф знаний с цепочками версий: факты вида «субъект–предикат–объект» хранятся с временными границами (
valid_from, запросыas_of), так что история изменений не теряется.
Все три уровня живут в одном SQLite-файле. Никаких ANN-индексов и внешних векторных баз — расстояние Хэмминга считается прямо внутри SQLite.
Гибридный поиск и бинарные векторы
Ранжирование воспоминаний — гибридное: 50% векторного сходства + 30% ранга FTS5 + 20% важимости (importance). Каждое воспоминание получает вес важимости при записи, а при поиске можно добавить временно́е затухание с настраиваемым периодом полураспада.
Отдельного внимания заслуживает техника MIB (information-theoretic binarization): 384-мерные float32-эмбеддинги сжимаются в 48 байт — в 32 раза — и сравниваются расстоянием Хэмминга целиком внутри SQLite. Это позволяет хранить миллионы воспоминаний в считанные мегабайты: на бенчмарке BEAM корпус из 10 млн сообщений занял 7,2 МБ благодаря эпизодической компрессии с экономией 9,4x.
Бенчмарки
Авторы честно публикуют результаты с оговорками о версиях и методологии — редкое качество для этой ниши.
LongMemEval (ретрив, апрель 2026): 98,9% Recall@All@5 на 100 инстансах с моделью bge-small-en-v1.5 — выше, чем у Mempalace (96,6% Recall@5) и Hindsight (91,4%), хотя авторы сами предупреждают, что метрики Recall@All@5 и Recall@5 не идентичны и прямое ранжирование некорректно.
BEAM (end-to-end QA, v3.0.0, май 2026): 65,2% на масштабе 100K против 63,0% у Honcho и 73,4% у Hindsight. Авторы отмечают, что их прогон судился другой моделью-джаджем, чем прогон Hindsight, поэтому цифры в одной строке напрямую несравнимы.
BEAM retrieval (чистый ретрив): абсолютные 20% Recall@10 невысоки, но ключевое свойство — метрика не деградирует при росте корпуса на два порядка (от 100K до 10M сообщений), а точность воздержания (abstention accuracy) равна 100%: система скорее откажется отвечать, чем выдумает.
Работает со всем
| Платформа | Метод | Подключение |
|---|---|---|
| Claude Code | MCP | блок в claude.json |
| Cursor | MCP | .cursor/mcp.json |
| OpenAI Codex CLI | MCP | .codex/mcp.json |
| Windsurf | MCP | .windsurf/mcp_config.json |
| OpenWebUI | нативный @tool | bridge-файл в data/tools/ |
| OpenClaw | нативный провайдер | pip install mnemosyne-memory[openclaw] |
| Hermes Agent | MCP + плагин | поставляется включённым |
| Любой MCP-клиент | MCP (stdio/SSE) | одна строка конфигурации |
| Любой Python-агент | SDK | import mnemosyne |
Python API и CLI
Сводится к двум функциям:
from mnemosyne import remember, recall
remember("User prefers dark mode interfaces",
importance=0.9, source="preference")
results = recall("interface preferences", top_k=3)
Помимо базового цикла есть запись с областью видимости (scope="global"), сроком годности (valid_until), извлечением сущностей, LLM-извлечением фактов, темпоральными тройками для графа знаний и «банками памяти» — изолированными доменами для разных проектов или ролей.
CLI повторяет те же операции и добавляет эксплуатационные команды:
mnemosyne mcp # MCP server (stdio)
mnemosyne store "fact" # direct write
mnemosyne recall "query" # search
mnemosyne sleep # run consolidation
mnemosyne export backup.json
Приватность и синхронизация
Модель безопасности последовательна: local-first по умолчанию (данные не покидают машину, пока не включён sync), ноль телеметрии, BYOK через системный keychain.
Для сценариев «десктоп + VPS» есть Mnemosyne Sync — двунаправленная дельта-синхронизация с опциональным шифрованием на клиенте (Fernet AES-128-CBC или PyNaCl SecretBox). При включённом шифровании удалённый сервер видит только метаданные — ID событий и таймстемпы, — а содержимое памяти, веса важимости и эмбеддинги шифруются до отправки. Авторы утверждают, что это единственная система памяти с клиентским шифрованием sync-нагрузок как основной фичей.
Установка и профили
pip install mnemosyne-memory # ядро, ~50 МБ RAM
pip install "mnemosyne-memory[all]" # локальные эмбеддинги + LLM-консолидация
Ядро хватит даже на Raspberry Pi 4; профиль [embeddings] (~800 МБ) добавляет локальную генерацию векторов через fastembed, [all] (~1,5 ГБ) — ещё и локальную LLM-консолидацию.
Важно для неанглоязычного использования: эмбеддинги по умолчанию (bge-small-en-v1.5) оптимизированы под английский. Для русского и других языков авторы предписывают сменить модель через MNEMOSYNE_EMBEDDING_MODEL — например, на paraphrase-multilingual-MiniLM-L12-v2 или multilingual-e5-large.
Итог
Mnemosyne — зрелый и прагматичный ответ на вопрос «где агент хранит память»: без облака, без Docker-оркестрации, в одном файле, который можно скопировать, забэкапить и зашифровать. Трёхуровневая архитектура BEAM, гибридный поиск и бинарные векторы делают систему компактной, а встроенный MCP-сервер — совместимой практически с любым агентом. Проект активно развивается, сопровождается подробной документацией и честными бенчмарками.
- Репозиторий: github.com/mnemosyne-oss/mnemosyne
- PyPI: mnemosyne-memory
- Сайт: mnemosyne.site
- Документация и бенчмарки: docs/