Engrim — локальная эпизодическая память для AI-агентов, общая между Antigravity, Claude Code, Cursor и Codex
📂 Исходный код на GitHubLocal-first SQLite-движок эпизодической памяти, привязанный к проекту: единая память для Google Antigravity, Claude Code, Cursor, Windsurf и Codex CLI. Полностью локально, без облачной привязки. MCP-сервер, гибридный поиск (FTS5 + векторные эмбеддинги), отслеживание происхождения записей по агентам. Python 3.10+, MIT.
Engrim — open-source движок эпизодической памяти для AI-агентов (Python, лицензия MIT). Он хранит архитектурные решения, пользовательские ограничения и состояние проекта в локальной SQLite-базе и автоматически подмешивает их в контекст подключённых агентов. Главная фишка — кросс-модельность: посреди проекта можно переключиться с Google Antigravity на Claude Code, Cursor, Windsurf или Codex CLI, и новый агент продолжит работу ровно с того места, где остановился предыдущий.
Репозиторий: timgordontg/engrim, пакет также опубликован на PyPI.
Проблема: разбавление внимания
По мере роста контекстных окон до 1M+ токенов разработчики сталкиваются с эффектом attention dilution: качество рассуждений падает, стоимость растёт с каждым ходом диалога, а очистка контекста приводит к полной амнезии. Авторы engrim формулируют это так: «Зачем платить за 200 000 токенов забытого шума на каждом ходу? Модели — расходный материал, а решения вашего проекта — нет».
Вместо этого engrim предлагает 4 000 символов курируемой рабочей памяти вместо сотен тысяч токенов сырого контекста:
- «Швейцария» среди AI-памятей — проектная память отвязана от конкретного вендора и облачного силоса. Переключение с Gemini в Antigravity на Claude в Claude Code и на Codex CLI происходит посреди проекта без потери контекста.
- Кнопка «сохранить» для автономного кодинга — подключённые агенты могут сами записывать решения в память через MCP-инструменты, либо это делается вручную командой
engrim add. После/clearконтекст восстанавливается из базы. - Умная загрузка горячего контекста — гибридный поиск на рекипрокальном ранжировании: полнотекстовый SQLite FTS5 (bm25) плюс статические векторные эмбеддинги model2vec.
Кейс: 105 сессий без единой амнезии
Авторы приводят результаты боевого тестирования на действующей алгоритмической торговой системе на 50 000 строк кода (реальный капитал):
- 105 непрерывных сессий, 186 unit-тестов — ноль регрессий и ноль амнезии при переключении моделей.
- Более 153 000 токенов работы (архитектура, тюнинг параметров, отладка) консолидировались в активный memory pack объёмом менее 1 000 токенов — меньше 1% контекстного окна.
- Итог: сокращение стоимости перезагрузки контекста более чем на 99% при каждом рестарте сессии.
- Переключения между Antigravity CLI, Claude Code и Cursor MCP на одних и тех же репозиториях — без drift'а моделей и архитектурных регрессий.
Архитектура
Система состоит из трёх слоёв:
- Агентские окружения — Google Antigravity (PreInvocation и Stop hooks), Claude Code (SessionStart и Stop hooks), Cursor и Windsurf (MCP по stdio), Codex CLI (hooks и MCP).
- Ядро engrim — адаптеры и хуки, движок провенанса агентов (поле
origin_agent) и гибридный поиск bm25 + косинусная близость векторов. - Локальное хранилище — SQLite-база
~/.engrim/memory.dbс курируемыми записями (решения, факты, фидбек), полнотекстовым индексом FTS5 (porter-стеммер, триггеры), векторными эмбеддингами model2vec и журналом «бортового самописца» (ходы диалога и строки действий).
Установка и настройка
pip install engrim
Рекомендуемый путь — автодетект: команда engrim setup без аргументов сама находит установленные окружения и настраивает их все. Если существует ~/.gemini — подключаются хуки, скилл и MCP-сервер Antigravity; ~/.claude — хуки SessionStart/Stop, статусная строка и заметки в CLAUDE.md; ~/.cursor — конфигурация MCP; ~/.codex — хуки и MCP-сервер Codex CLI.
Есть и явная настройка под конкретную платформу:
| Команда | Что делает |
|---|---|
engrim setup --agy |
Хуки PreInvocation/Stop в ~/.gemini/config/hooks.json, скилл в ~/.gemini/config/skills/engrim/SKILL.md, регистрация MCP-сервера |
engrim setup --claude |
Хуки SessionStart, SessionEnd, Stop, UserPromptSubmit в ~/.claude/settings.json, статусная строка, дополнение CLAUDE.md |
engrim setup --cursor |
Добавляет engrim в ~/.cursor/mcp.json с командой engrim serve --mcp |
engrim setup --codex |
Хуки в ~/.codex/hooks.json, MCP-сервер в ~/.codex/config.toml |
engrim setup --all |
Настраивает все поддерживаемые окружения разом |
Для Windsurf engrim добавляется вручную в ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"engrim": {
"command": "engrim",
"args": ["serve", "--mcp"]
}
}
}
Любая команда настройки принимает --dry-run, чтобы посмотреть изменения без записи на диск.
Провенанс агентов
Когда над одной кодовой базой работают несколько агентов, важно знать, кто какое решение принял. Каждая запись в engrim помечается полем origin_agent со значениями antigravity, claude-code, cursor, cli или user — значение проставляется автоматически по активному хуку, MCP-клиенту или CLI-сессии. Провенанс виден в выводе engrim context и engrim list:
🧠 engrim · memory restored for this project — you don't have to re-explain · /workspace
18 of 54 curated records loaded (~3850 chars) · the rest one `recall` away
[DECISION]
- #961 [DECISION] (via Antigravity): Inverted stop loss matrix for high volatility (risk, execution)
- #942 [DECISION] (via Claude Code): Switched primary database from MongoDB to PostgreSQL (db, schema)
- #910 [DECISION] (via Cursor): Standardized on Pydantic v2 schemas across API boundaries (api, types)
Существующие базы мигрируют ненасильственно при первом доступе — простым ALTER TABLE memories ADD COLUMN origin_agent TEXT.
MCP-сервер
Встроенный MCP-сервер запускается командой engrim serve --mcp (алиас: engrim mcp). Это zero-dependency JSON-RPC 2.0-сервер поверх stdio: stdout зарезервирован строго под JSON-RPC, весь диагностический лог уходит в stderr.
Четыре основных инструмента:
| Инструмент | Назначение |
|---|---|
engrim_recall |
Гибридный (ключевые слова + семантика) поиск по памяти проекта |
engrim_add |
Запись долговременной записи в память (тип, summary, detail, теги) |
engrim_context |
Получить загрузочный memory pack сессии в рамках символьного бюджета |
engrim_review |
Проверить uncaptured-решения из логов перед очисткой сессии |
CLI
| Команда | Описание |
|---|---|
engrim add |
Вставить запись (типы: decision, fact, feedback, state, user, reference) |
engrim recall |
Ранжированный гибридный поиск по проекту (--log ищет по сырым ходам диалога) |
engrim context |
Приоритизированный boot pack с ограничением бюджета (по умолчанию 4000 символов) |
engrim hook |
Раннер жизненного цикла агента для Antigravity и Claude Code |
engrim setup |
Универсальная настройка мультиагентных окружений |
engrim serve |
Запуск stdio MCP-сервера |
engrim review |
Проверка «safe to clear»: ищет в логах не сохранённые решения |
engrim list |
Список недавних записей памяти проекта |
engrim supersede |
Пометить запись устаревшей без удаления истории |
engrim sync |
Зеркалирование markdown-памяток в стор (идемпотентный seed-once) |
Рабочий процесс «continue-as-clear»
- Фиксируйте по ходу работы — крупные решения и архитектурные правила сохраняются в память; агент обычно делает это сам через
engrim_add, но можно и вручную черезengrim add. - Ставьте resume-pointer — перед завершением сессии добавьте запись с тегом
resume-pointerо ближайшей следующей задаче. Свежайший указатель закрепляется под[▶ RESUME HERE]в начале следующего boot pack'а. - Проверяйте через
engrim review— убедитесь, что все недавние решения captured. - Очищайте свободно (
/clear) — окно сессии стирается, а engrim автоматически реинжектирует активный memory pack при следующем промпте.
Отличия от аналогов
- vs gbrain: gbrain — provider-агностичный инструмент памяти, но engrim делает ставку на лёгкую local-first архитектуру на SQLite: всё быстро и офлайн, без сложной настройки и облачных зависимостей.
- vs OpenCode и Codex: у них есть встроенные memory-компоненты, но engrim спроектирован именно как движок эпизодической памяти с отслеживанием провенанса решений между разными агентами (Antigravity, Claude Code, Cursor, Codex CLI) и работает как единый бэкенд, который разделяют все ваши инструменты.
- vs Pi: Pi — персональный AI-компаньон с долговременной памятью; engrim заточен под кодинг-проекты и программную архитектуру — решения, состояние и ограничения в формате, который кодинг-агенты эффективно запрашивают через гибридный поиск (FTS5 + вектора).
Безопасность и приватность
- 100% локально и офлайн: все записи и логи лежат в локальном SQLite-файле (
~/.engrim/memory.db). Никакой телеметрии, облачной синхронизации и трекинга. - Локальные эмбеддинги: model2vec — статические вектора (~30 мс загрузка, без GPU, работает на CPU). Можно переключиться на чисто лексический режим (
ENGRIM_EMBED=off) без дополнительных зависимостей. - POSIX-права: базы создаются с owner-only правами
0600. - Защита от коммита:
*.dbв gitignore по умолчанию — память случайно не уедет в git.
Требования: Python 3.10+. Лицензия — MIT © 2026 Tim Gordon.
Источник: https://github.com/timgordontg/engrim