engrim
- title
- engrim
- type
- toolbox
- summary
- Локальная память SQLite для кодинг-агентов: типизированные записи решений, FTS5 со статическими эмбеддингами, привязка к агенту
- tags
- ai-agents, memory, python, mcp, watchlist
- homepage
- https://pypi.org/project/engrim/
- language
- Python
- license
- MIT
- sources
- engrim-readme
- 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