English | Français | Español | Deutsch | Italiano | Português | Nederlands | Polski | Русский | 日本語 | 中文 | العربية | 한국어
Это перевод файла README.md (на английском), который является эталоном; если они расходятся, верна английская версия.
Долговременная память для ИИ-агентов программирования, общая для всех ваших инструментов.
Один бинарный файл, один файл SQLite. Для сохранения или поиска записи не нужен вызов LLM.
Расскажите в понедельник Claude Code, как в вашем проекте устроена аутентификация, и во вторник сессия Gemini CLI уже будет это знать. ICM хранит то, что узнают ваши агенты программирования (решения, исправления, соглашения, предпочтения), в одном файле SQLite на вашем компьютере и возвращает нужную часть в начале каждой сессии и с каждым отправленным вами промптом. Эту память разделяют до 18 агентов и редакторов, так что вам больше не нужно заново объяснять проект каждый раз, когда вы открываете сессию или переходите на другой инструмент.
- 92.9% на LoCoMo (1,540 вопросов, среднее по трём прогонам), на уровне Hindsight (92.0%), при этом контекста на вопрос на треть меньше. Подробности и оговорки ниже.
- Без вызова LLM при сохранении и поиске. Hindsight, Mem0, Graphiti (Zep) и claude-mem по умолчанию вызывают LLM для каждой сохраняемой записи. ICM этого не делает. Только автоматическое извлечение фактов из вывода инструментов проходит через консольный LLM-инструмент, которым вы уже пользуетесь, если он установлен;
provider = "none"оставляет локальным и его (см. Быстрый старт). - Полезен и без модели эмбеддингов. Один только поиск по ключевым словам помещает хотя бы одну из нужных сессий в первые 5 результатов для 88.6% вопросов LoCoMo, с медианой 6.8 ms на запрос на Linux x86-64.
- 97.4% на LongMemEval-S, поиск без LLM: одна из нужных сессий в первых 5 результатах для 487 из 500 вопросов, против 96.6% у MemPalace и 95.2% у agentmemory по той же метрике.
- Не везде впереди. На PersonaMem (меняющиеся предпочтения пользователя) лидирует Hindsight: 86.6% против 81.7% у ICM.
brew tap rtk-ai/tap && brew install icm # or: curl -fsSL https://raw.githubusercontent.com/rtk-ai/icm/main/install.sh | sh
icm init # instructions, skills and hooks for every agent it detectsЭто вся настройка. Откройте новую сессию в Claude Code, Codex, Gemini CLI или Copilot CLI: теперь агент начинает работу с коротким набором самых важных записей проекта, в котором он находится (тех, чья тема содержит название репозитория, например decisions-myapp в репозитории с названием myapp, а также ваших предпочтений), и получает записи, относящиеся к каждому отправленному вами промпту. То, что он узнаёт из вывода своих инструментов, ставится в очередь, и в конце каждой сессии Claude Code очередь превращается в записи; с другими инструментами запускайте icm extract-pending (например, из задания cron).
Сохранение и поиск выполняются на вашем компьютере. Автоматическое извлечение передаёт текст консольному LLM-инструменту, которым вы уже пользуетесь (Claude Code, Codex или Gemini CLI), если он установлен; задайте provider = "none" в секции [extraction.summarizer], чтобы всё оставалось полностью локальным.
Чтобы сразу увидеть, как это работает, сохраните и найдите запись вручную:
$ icm store -t decisions-myapp -c "Auth uses short-lived JWTs, refreshed through /auth/refresh" -i high
Stored: 01M47YY6CHVZ48BYKQRCRNZTCF
$ icm recall "how does auth work"
memories[1]{id,topic,importance,weight,summary}:
01M47YY6CHVZ48BYKQRCRNZTCF,decisions-myapp,high,0.975,"Auth uses short-lived JWTs, refreshed through /auth/refresh"При первом сохранении или поиске с семантическим поиском один раз загружается многоязычная модель эмбеддингов (Qdrant/multilingual-e5-large-onnx, около 2 GB). Чтобы попробовать ICM без неё, добавьте --no-embeddings (поиск по ключевым словам, как в выводе выше) или выберите в конфигурации более лёгкую модель. icm init записывает хуки и инструкции в конфигурацию каждого обнаруженного агента; icm uninstall --dry-run показывает, как их удалить. Windows, Linux, Nix и сборка из исходников: Установка.
Точность ответов на LoCoMo (10 длинных диалогов, 1,540 вопросов), измеренная на публичном стенде Agent Memory Benchmark: система памяти находит контекст, gemini-3.1-pro-preview отвечает на его основе, gemini-2.5-flash-lite оценивает ответ.
| Система | Точность LoCoMo | Контекст на вопрос | Вызовы LLM при сохранении записи | Форма запуска | Результат |
|---|---|---|---|---|---|
| ICM 0.11.0 (движок поиска v2) | 92.9% (1,430, 1,433 и 1,430 / 1,540 в трёх прогонах) | 24.1k tokens | нет | один бинарный файл на Rust, файл SQLite | наши прогоны, 2026-10-06 |
| Hindsight | 92.0% (1,417 / 1,540) | 36.2k tokens | извлечение фактов через LLM | сервис на Python, PostgreSQL + pgvector | опубликован стендом |
| Базовый гибридный поиск (dense + sparse, RRF) | 79.1% (1,218 / 1,540) | 22.2k tokens | нет | Qdrant | опубликован стендом |
На PersonaMem 32k (589 вопросов с вариантами ответа о меняющихся предпочтениях пользователя, тот же стенд и та же отвечающая модель, оценка по совпадению буквы):
| Система | Точность PersonaMem | Контекст на вопрос | Результат |
|---|---|---|---|
| ICM 0.11.0 (движок поиска v2) | 81.7% (486, 486 и 472 / 589 в трёх прогонах) | 16.2k tokens | наши прогоны, 2026-10-06 |
| Hindsight | 86.6% (510 / 589) | 15.8k tokens | опубликован стендом |
| Базовый гибридный поиск | 84.4% (497 / 589) | 24.2k tokens | опубликован стендом |
Только поиск, на LoCoMo, без отвечающей модели: доля вопросов, для которых хотя бы одна эталонная сессия находится среди первых результатов. Это свидетельство качества самого движка поиска.
| Движок поиска | Поиск | Top 5 | Top 10 | Top 20 |
|---|---|---|---|---|
| 0.11 (по умолчанию) | ключевые слова + модель эмбеддингов | 86.7% | 93.3% | 97.9% |
| 0.11 (по умолчанию) | только ключевые слова | 88.6% | 94.2% | 97.5% |
0.10 (--engine legacy) |
ключевые слова + модель эмбеддингов | 76.5% | 83.0% | 87.7% |
0.10 (--engine legacy) |
только ключевые слова | 12.0% | 17.4% | 29.8% |
Оба движка измерены на одной и той же сборке 0.11. Запуски движка 0.11 получали дату каждой сессии и дату вопроса; у движка 0.10 нет входа для дат, поэтому его запуски дат не получали.
LongMemEval-S, только поиск, без LLM (ICM с моделью эмбеддингов по умолчанию; 500 вопросов; к каждому вопросу прилагается около 48 прошлых сессий для поиска; одна запись на сессию, только реплики пользователя, как их индексирует MemPalace; ICM не получает дат):
| Нужные сессии в первых 5 результатах | ICM 0.11.0 | MemPalace | agentmemory | Только BM25 |
|---|---|---|---|---|
| Хотя бы одна (публикуемая метрика) | 97.4% (487 / 500) | 96.6% (483 / 500) | 95.2% (476 / 500) | 94.6% |
| Все | 88.6% (443 / 500) | 85.0% | 81.8% | 81.2% |
Результаты MemPalace и agentmemory пересчитаны нашим скриптом оценки по файлам результатов, которые публикует каждый проект; они совпадают с опубликованными цифрами. agentmemory индексирует все реплики сессии; на такой единице один BM25 достигает 96.2% и 83.0%. Простой BM25 уже набирает около 95% по первой метрике, поэтому вторая, все нужные сессии, лучше разделяет системы.
Что эти цифры показывают и чего не показывают:
- На LoCoMo ICM и Hindsight на равных. Каждый из трёх прогонов ICM (92.9%, 93.1%, 92.9%) примерно на 1 пункт выше опубликованных 92.0% у Hindsight, это разрыв примерно в 14 вопросов, в пределах ошибки выборки (95% интервал для ICM: от 91.6 до 94.2). ICM достигает этого с контекстом на треть меньше и без вызова LLM при сохранении записи.
- На PersonaMem впереди Hindsight, на 4.9 пункта, за пределами ошибки выборки (95% интервал для ICM: от 78.6 до 84.8). ICM также на 2.7 пункта ниже базового гибридного поиска, в пределах этого интервала, при этом читает на треть меньше контекста, чем он. Результаты трёх прогонов лежат в диапазоне от 80.1% до 82.5%.
- Условия не идентичны. Стенд поддерживает Vectorize, разработчик Hindsight. Опубликованные результаты LoCoMo получены до изменения, которое установило температуру отвечающей и оценивающей модели в 0; наш прогон использует текущую версию стенда (коммит
f618ed7) и Vertex AI. - При 50 фрагментах возвращается значительная часть каждого диалога, поэтому эта точность измеряет и отвечающую модель. Свидетельство качества самого движка поиска — таблица поиска.
- Три прогона на набор данных. Отвечающая модель даёт разброс от прогона к прогону: 0.2 пункта на LoCoMo, 2.4 пункта на PersonaMem. Приведённые интервалы учитывают выборку вопросов.
Результаты по категориям, задержка и другие оговорки
- По типу вопроса (LoCoMo, метки стенда, три прогона): open-domain 96.7% (841 вопрос), temporal 90.9% (321), single-hop 88.8% (282), multi-hop 78.8% (96).
- Задержка. Медианная задержка поиска во время прогонов LoCoMo — от 137 до 149 ms на узлах кластера с 4 vCPU; 272 сессии загружены без единого вызова LLM. В прогонах только поиска на Linux x86-64: медиана 136 ms с эмбеддингами, 6.8 ms только по ключевым словам.
- Даты сессий. Адаптер бенчмарка записывает дату каждой сессии в текст записи ICM; Hindsight получает те же даты как метаданные, и каждая система получает дату вопроса.
- Самая слабая категория — 96 вопросов, которые стенд помечает как multi-hop (78.8%). Названия категорий в разных бенчмарках не совпадают: другие оценки на LoCoMo называют эту категорию open-domain, а multi-hop называют 282 вопроса, которые стенд помечает как single-hop (здесь 88.8%). Сравнивайте по числу вопросов, а не по метке.
- Движок поиска v2 используется по умолчанию в
icm recall, MCP-инструментеicm_memory_recall, HTTP/recallи хуке промпта. Предыдущий движок остаётся доступен для отката или сравнения:icm recall --engine legacy,"engine": "legacy"в HTTP/recallилиICM_RECALL_ENGINE=legacy.
Результаты по каждому вопросу для каждого прогона (три на набор данных плюс прогон поиска на LongMemEval-S) находятся в bench/amb/results/; адаптер, точные настройки и команды для воспроизведения — в bench/amb/README.md.
Каждый инструмент, настроенный через icm init, читает и пишет одну и ту же базу данных SQLite, а темы (decisions-myapp, preferences, errors-resolved, ...) не разделены по инструментам. Запись, сохранённая из Claude Code, сразу видна в Codex, Gemini, Cursor, Roo, Amp, Aider, ...
Нужна изоляция? icm init --per-project создаёт локальную базу данных проекта в .icm/ (и записывает файлы инструкций агентов, такие как CLAUDE.md и AGENTS.md, в текущий каталог); --db <path> или ICM_DB указывают на любой другой файл. Каждый путь — независимый корпус.
Статус проекта: бета. ICM ещё не дошёл до версии 1.0: несовместимые изменения могут появиться в любом минорном релизе, а форматы конфигурации хуков и MCP могут меняться. Бета относится к стабильности API, а не к повседневной полезности: я (мейнтейнер) использую ICM каждый день как основную память для программирования с ИИ. Мой основной фокус — rtk, поэтому issues и pull requests рассматриваются по мере возможности.
Apache-2.0, поставляется «как есть», без каких-либо гарантий (см. LICENSE). Перед любой разрушительной операцией сначала запустите её эквивалент только для чтения (
icm uninstall --dry-run,icm uninstall --check).
# macOS / Linux, Homebrew
brew tap rtk-ai/tap && brew install icm
# macOS / Linux, script (verifies SHA256 against the release checksums)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/icm/main/install.sh | sh
# Windows, PowerShell
irm https://raw.githubusercontent.com/rtk-ai/icm/main/install.ps1 | iexПоиск по ключевым словам работает везде. Запустите icm embeddings status, чтобы узнать, включён ли семантический поиск: он встроен в сборки для macOS Apple Silicon, Windows и .rpm; архивам Linux glibc и пакету .deb нужен один запуск icm embeddings download; сборке для Mac на Intel нужен собственный ONNX Runtime (ORT_DYLIB_PATH); статическая сборка Linux musl работает только с ключевыми словами. Nix, сборка из исходников, фиксация версии и подробности: справочник.
icm init # global database, every detected agent
icm init --per-project # database under .icm/ at the git root
icm init --mode all # also register the MCP server in every tool that supports itРежим по умолчанию (standard) записывает инструкции, навыки (skills) и хуки, без MCP-сервера. --mode all добавляет MCP-сервер; с ним (и с --per-project для Aider, у которого файл соглашений свой в каждом проекте) это покрывает 19 инструментов ниже (руководство по интеграции):
| Инструмент | MCP-сервер | Хуки |
|---|---|---|
| Claude Code | да | да |
| Claude Desktop | да | — |
| Gemini CLI | да | да |
| Codex CLI | да | да |
| Copilot CLI | да | да |
| Cursor | да | — |
| Windsurf | да | — |
| VS Code | да | — |
| Amp | да | — |
| Amazon Q | да | — |
| Cline | да | — |
| Roo Code | да | — |
| Kilo Code | да | — |
| Zed | да | — |
| OpenCode | да | да |
| Continue.dev | да | — |
| Aider | — | — |
| Pi | — | — |
| Mistral Vibe | да | да (pre/post tool) |
Или зарегистрируйте MCP-сервер вручную: claude mcp add icm -- icm serve (любой MCP-клиент: команда icm, аргументы ["serve"]).
Что делают хуки:
| Хук | Что делает |
|---|---|
icm hook start |
Внедряет в начале сессии стартовый набор записей critical/high (~500 токенов) |
icm hook pre |
Автоматически разрешает команды CLI icm (без запроса разрешения) |
icm hook post |
Извлекает факты из вывода инструментов каждые N вызовов (автоизвлечение) |
icm hook compact |
Извлекает записи из транскрипта перед сжатием контекста |
icm hook prompt |
Внедряет найденный контекст в начало каждого промпта пользователя |
Таблицы хуков по инструментам, навыки, файлы инструкций и примечание о Codex: справочник.
# Store
icm store -t "my-project" -c "Use PostgreSQL for the main DB" -i high -k "db,postgres"
# Recall
icm recall "database choice"
icm recall "auth setup" --topic "my-project" --limit 10
icm recall "architecture" --keyword "postgres"
# Manage
icm forget <memory-id>
icm consolidate --topic "my-project"
icm topics
icm stats
# Extract facts from text (rule-based, no LLM call)
echo "The parser uses Pratt algorithm" | icm extract -p my-projectICM также хранит memoirs (постоянные графы знаний из понятий и типизированных связей), feedback (исправления, на которых можно учиться) и дословные транскрипты, предоставляет 32 MCP-инструмента (31 без модели эмбеддингов), HTTP API, который держит модель эмбеддингов загруженной, и панель в терминале (icm dashboard). Всё это описано в справочнике.
Поиск объединяет до трёх ранжированных списков методом reciprocal rank fusion (RRF): поиск по ключевым словам FTS5 BM25, включён всегда; семантический векторный поиск через sqlite-vec, когда загружена модель эмбеддингов (по умолчанию Qdrant/multilingual-e5-large-onnx, 1024 измерения, 100+ языков); и окно дат, когда в запросе назван период ("last week", "in March 2024"). Фильтры по проекту, теме и ключевым словам применяются до отсечения. Записи со временем теряют вес в зависимости от их важности (critical не угасает никогда); когда загружена модель эмбеддингов, новая запись, почти идентичная уже существующей в той же теме (косинусное сходство выше 0.95), объединяется с ней; а модель, создавшая сохранённые векторы, записывается в базу данных, поэтому смена model в конфигурации никогда их не стирает (icm embed --migrate — явный способ перейти на другую модель).
Всё хранится в одном файле SQLite, без внешних сервисов:
~/Library/Application Support/dev.icm.icm/memories.db # macOS (dev.icm.icm is the app identifier, not a dev build)
~/.local/share/icm/memories.db # Linux
%APPDATA%\icm\icm\data\memories.db # Windows
<project-root>/.icm/memories.db # icm init --per-project
icm config показывает активную конфигурацию; в config/default.toml перечислены все параметры. Подробности: справочник, схемы архитектуры.
| Документ | Описание |
|---|---|
| Руководство по интеграции | Настройка MCP для каждого инструмента: Claude Code, Cursor, Windsurf, Zed, Amp, Codex, Cline, Roo Code и др. |
| Техническая архитектура | Структура crate'ов, конвейер поиска, модель затухания, интеграция sqlite-vec, тестирование |
| Руководство пользователя | Установка, организация тем, консолидация, извлечение, устранение неполадок |
| Обзор продукта | Сценарии использования, бенчмарки, сравнение с альтернативами |
| Справочник | Варианты установки, настройка для каждого инструмента, CLI, 32 MCP-инструмента, HTTP API, панель, внутреннее устройство |
| Адаптер бенчмарка | Как проводилось сравнение выше и как его воспроизвести |
| Демонстрации | Микробенчмарки хранилища и небольшие демо |