Engrim — локальная эпизодическая память для AI-агентов, общая между Antigravity, Claude Code, Cursor и Codex

· 2 мин чтения
memory mcp local-first claude-code context-management
📂 Исходный код на GitHub

Local-first SQLite-движок эпизодической памяти, привязанный к проекту: единая память для Google Antigravity, Claude Code, Cursor, Windsurf и Codex CLI. Полностью локально, без облачной привязки. MCP-сервер, гибридный поиск (FTS5 + векторные эмбеддинги), отслеживание происхождения записей по агентам. Python 3.10+, MIT.

Engrim — локальная эпизодическая память для AI-агентов, общая между Antigravity, Claude Code, Cursor и Codex

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'а моделей и архитектурных регрессий.

Архитектура

Система состоит из трёх слоёв:

  1. Агентские окружения — Google Antigravity (PreInvocation и Stop hooks), Claude Code (SessionStart и Stop hooks), Cursor и Windsurf (MCP по stdio), Codex CLI (hooks и MCP).
  2. Ядро engrim — адаптеры и хуки, движок провенанса агентов (поле origin_agent) и гибридный поиск bm25 + косинусная близость векторов.
  3. Локальное хранилище — 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»

  1. Фиксируйте по ходу работы — крупные решения и архитектурные правила сохраняются в память; агент обычно делает это сам через engrim_add, но можно и вручную через engrim add.
  2. Ставьте resume-pointer — перед завершением сессии добавьте запись с тегом resume-pointer о ближайшей следующей задаче. Свежайший указатель закрепляется под [▶ RESUME HERE] в начале следующего boot pack'а.
  3. Проверяйте через engrim review — убедитесь, что все недавние решения captured.
  4. Очищайте свободно (/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