Skip to content

Latest commit

 

History

History
245 lines (181 loc) · 27.4 KB

README_ru.md

File metadata and controls

245 lines (181 loc) · 27.4 KB

English | Français | Español | Deutsch | Italiano | Português | Nederlands | Polski | Русский | 日本語 | 中文 | العربية | 한국어

Это перевод файла README.md (на английском), который является эталоном; если они расходятся, верна английская версия.

ICM

Долговременная память для ИИ-агентов программирования, общая для всех ваших инструментов.
Один бинарный файл, один файл SQLite. Для сохранения или поиска записи не нужен вызов LLM.

CI Релиз Apache-2.0

Расскажите в понедельник 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.

Терминал: три записи сохранены через icm store, затем icm recall отвечает на два вопроса и каждый раз возвращает нужную запись

Быстрый старт

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-project

ICM также хранит 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, панель, внутреннее устройство
Адаптер бенчмарка Как проводилось сравнение выше и как его воспроизвести
Демонстрации Микробенчмарки хранилища и небольшие демо

Лицензия

Apache-2.0