EnglishРусский Map

engrim

title
engrim
type
toolbox
summary
Локальная память SQLite для кодинг-агентов: типизированные записи решений, FTS5 со статическими эмбеддингами, привязка к агенту
tags
ai-agents, memory, python, mcp, watchlist
language
Python
license
MIT
created
2026-09-13
updated
2026-09-13
lang
ru
translation_of
engrim
source_updated
2026-09-13
translated
2026-09-14
translator
lllm/antigravity/gemini-3.7-flash-medium

engrim - локальное хранилище памяти, рассчитанное на совместное использование всеми кодинг-агентами проекта: решение, принятое в сессии Claude Code, остаётся доступным, если следующую сессию открыть в Codex, OpenCode, Cursor или Antigravity. Оно сохраняет отобранные записи, а не полные стенограммы диалогов: небольшую типизированную базу данных решений, фактов, ограничений и состояния, которая подставляется в виде короткого пакета в начале каждой сессии. В README это называется "the universal cross-model episodic memory standard". За словом "standard" нет никакой спецификации; это всего лишь одна реализация на Python.

Как это устроено

Всё хранится в одном файле SQLite, ~/.engrim/memory.db, созданном с правами 0600. У записей есть тип (decision, fact, state, feedback, user, reference), краткое описание (summary), необязательные детали и теги; область видимости ограничена проектом. При обычном использовании записи не удаляются: engrim supersede помечает запись заменённой, а engrim retire закрывает указатель возобновления работы (resume pointer), сохраняя историю.

Поиск совмещает SQLite FTS5 (bm25) со статическими эмбеддингами model2vec через reciprocal-rank fusion - обычный hybrid-search, достаточно компактный для работы на CPU с загрузкой модели примерно за 30 мс; ENGRIM_EMBED=off оставляет только лексический поиск. В начале сессии в контекст передаётся отсортированный по приоритету стартовый пакет (по умолчанию ограничен 4000 символами), где в самом верху закреплена свежая запись resume-pointer. При каждом запросе фоновый контроллер ("minder") подтягивает несколько записей, относящихся к сообщению. Лог в режиме бортового самописца сохраняет необработанные реплики, а engrim review сканирует этот лог на предмет решений, не сохранённых как записи, и выдаёт эвристический вердикт safe_to_clear (или null, если лог отсутствует).

Каждая запись содержит поле origin_agent, заполняемое из хука, MCP-клиента или CLI, создавшего её: так видно, что ограничение появилось в сессии Codex, а отменили его в OpenCode.

pip install engrim
engrim setup --dry-run
engrim add -t decision -s "Switched primary database to PostgreSQL" --tag db
engrim recall -q "database"
engrim serve --mcp

MCP-сервер предоставляет инструменты engrim_recall, engrim_add, engrim_context и engrim_review, оставляя stdout строго под JSON-RPC.

Настройка затрагивает глобальную конфигурацию агентов

engrim setup без аргументов находит ~/.claude, ~/.gemini, ~/.cursor, ~/.codex и ~/.config/opencode и подключается ко всем сразу. Для Claude Code это означает хуки SessionStart, SessionEnd, Stop и UserPromptSubmit в ~/.claude/settings.json, строку статуса и добавленные заметки в ~/.claude/CLAUDE.md; для OpenCode - плагин, регистрацию MCP и заметки в AGENTS.md. Сначала стоит запускать с --dry-run. Команда engrim uninstall --opencode отменяет шаги для OpenCode. В README честно указана цена для OpenCode: стартовый пакет попадает в системный промпт каждого вызова модели в сессии, включая генерацию заголовков и вызовы субагентов.

Сомнительные заявления

"Тематическое исследование на 105 сессиях" - это собственная кодовая база автора для алгоритмической торговли: 153 000 токенов работы сжаты в пакет размером менее 1000 токенов, "ноль регрессий в 186 юнит-тестах" и "ноль контекстной амнезии при смене моделей". При этом нет базовой линии и сравнения с той же работой без engrim. Заявление об "экономии более 99% на повторной загрузке контекста" сравнивает пакет с суммарным объёмом токенов всей предыдущей работы, но всю историю никто заново не загружает, так что это сравнение некорректно. В разделе сравнений Pi числится среди помощников по кодингу, но описывается как персональный ИИ-компаньон - похоже, перепутаны два разных продукта с названием Pi. В названиях моделей в README тоже смешаны эпохи ("Claude 3.7 Sonnet" соседствует с "Gemini 3.8").

В сравнении с другими решениями для памяти

Подход с сохранением записей, а не стенограмм, согласуется с выводами memorizing-session-transcripts, где поиск по стенограммам ничего не дал агентам, как только важные решения были записаны отдельно. Другое предостережение с той же страницы применимо напрямую: агенты записывают данные в engrim через engrim_add всякий раз, когда сами посчитают что-то решением, без этапа проверки человеком, а "дрейф намерений" у theahura - это как раз непроверенный вывод модели, прочитанный обратно как осознанное намерение. Удаление устаревших записей здесь ручное, тогда как agent-memory-decay очищает их автоматически.

Среди вариантов уровня хранения в agent-memory-components engrim представляет собой компактное SQLite-решение между разными средами. agentmemory - серверная версия той же межагентной идеи со множеством хуков, mempalace сохраняет диалоги дословно, stash объединяет эпизоды в записи более высокого порядка, mnemonik делает память проверяемой, а ctx обеспечивает управление контекстом через SQLite только для Claude Code и Codex. llm-wiki-as-agent-memory предлагает альтернативу на чистом Markdown, где человек может прочитать и исправить сохранённое.

Включён в watchlist: проекту меньше трёх месяцев, один автор, заявления о происхождении и экономии опираются на единственный личный кейс, а настройка меняет глобальную конфигурацию всех агентов.

MIT, 241★, 16 форков, создан 2026-06-19, обновлялся в день инжеста. Репозиторий: https://github.com/timgordontg/engrim