Память у AI-агентов — та еще боль. Ты строишь крутого ассистента, он бойко отвечает на три вопроса, а на четвертом забывает, что вы только что обсуждали. Облачные решения вроде Zep берут деньги за каждый чих и виснут на сетевых задержках. Локальные альтернативы вроде Widemem или TurboMemory помогали, но требовали ручной настройки эмбеддингов и часто проседали на длинных диалогах.
И вот на сцене появляется ICM — инструмент памяти от команды rtk-ai. Выложили на GitHub, приложили бенчмарки, которые можно запустить у себя на ноутбуке, и заявили: «Теперь агенту не нужно интернета, чтобы помнить вчерашний разговор». Давайте разберем, что это за зверь, не врет ли он в метриках и стоит ли тащить его в свой проект.
Что прячется под аббревиатурой
ICM расшифровывается как Intelligent Context Memory. Если отбросить маркетинг — это библиотека на Python, которая дает агенту долговременную память без внешних API. Вся магия происходит локально: эмбеддинги считаются на CPU (да-да, без GPU), данные хранятся в SQLite с векторным индексом, а для поиска используется гибрид — sparse (BM25) и dense (квантованные эмбеддинги) retrieval.
Что в коробке:
- Два бенчмарка из коробки — LoCoMo (долгие диалоги) и HotpotQA (multi-hop вопросы). Запускаются одной командой, результаты пишутся в JSON.
- Автоматическая сегментация контекста — память сама режет диалог на эпизоды по смене темы или тайм-ауту, а не хранит всё подряд.
- Экспорт/импорт через JSON — можно сохранить состояние агента и перенести на другую машину.
- Поддержка любой LLM — хоть Ollama с Qwen2.5, хоть OpenAI через API. ICM только память, модель вы подключаете свою.
Цифры, ради которых стоит присмотреться
Главная фишка ICM — встроенные локальные бенчмарки. Не нужно гонять тесты на сервере, достаточно python -m icm.benchmark. Вот результаты на CPU (Intel i7-12700) из репозитория (май 2026):
| Тест | ICM | Zep (облачная версия) | Widemem v1.2 |
|---|---|---|---|
| LoCoMo (F1) | 61% | 28% | 43% |
| HotpotQA (EM) | 73% | 43% | 58% |
| Время ответа (95-й перцентиль) | 120 мс | 340 мс (с учетом сети) | 190 мс |
Важный нюанс: бенчмарки прогонялись на эмбеддингах bge-small-en-v1.5 (4-битное квантование). Если поставить bge-m3 — качество подрастет, но время поиска увеличится. В TurboMemory использовали похожий подход, но ICM выигрывает за счет более умной сегментации.
Как это выглядит в коде — честно, без прикрас
В репозитории есть пример интеграции с LangChain и с голым OpenAI. Покажу самый простой вариант — без фреймворков, в 10 строк:
from icm import AgentMemory
memory = AgentMemory(
embedding_model="BAAI/bge-small-en-v1.5-quantized",
storage="sqlite://./agent_memory.db"
)
# Сохраняем факт
memory.add("Пользователь сказал, что любит зеленый чай")
# Ищем по смыслу
results = memory.search("Что пользователь любит пить?", top_k=3)
print(results[0].text) # "Пользователь сказал, что любит зеленый чай"
Под капотом: SQLite с расширением для векторного поиска (на основе sqlite-vec). База весит 2-3 МБ на тысячу записей. Для сравнения, AI-IQ использовал чистый SQLite без векторов — там поиск был только по ключевым словам.
Три сценария, где ICM вывозит (и один, где нет)
1 Личный ассистент с историей за месяц
Вы пишете бота для заметок. Он должен помнить, что вы упомянули в прошлый раз. Поднимаете ICM на Raspberry Pi 5 — работает. База растет, но поиск не тормозит благодаря инкрементальному индексированию.
2 Мультиагентная система с общей памятью
Несколько агентов пишут и читают одну SQLite-базу через сетевую шару (аккуратнее с блокировками). Или синхронизируете через Git — TeamMind делает похожее, но в ICM такой фичи пока нет, только файловый экспорт.
3 Тестирование и бенчмаркинг
Хотите оценить, как та или иная модель памяти поведет себя на ваших данных? Запускаете встроенный бенчмарк и сравниваете с Zep/Widemem. Результат — табличка, как я показывал выше. Без внешних сервисов.
⚠️ Подводный камень: ICM пока не умеет автоматически чистить устаревшие записи. Если агент работает сутками, база распухнет. Придется дописывать свою ротацию или запускать cleanup скрипт. В Widemem это решено через оценку достоверности.
Кому я бы сказал «бери»
ICM — штука для тех, кто хочет:
- ⚡ Скорости без компромиссов по приватности (все локально).
- 🧪 Повторяемых экспериментов — встроенные бенчмарки экономят часы на настройку тестов.
- 💸 Не платить за API памяти каждый месяц.
Если вам нужно промышленное решение с распределенным хранением, управлением доступом и GUI — смотрите в сторону Amazon Bedrock AgentCore или Agent-memory-state. Но для прототипа, пет-проекта или research — ICM сейчас лучший вариант из open-source.
P.S. В репозитории лежит examples/advanced_routing.py — там показано, как комбинировать несколько типов памяти (краткосрочная на кэше + долгосрочная в SQLite). Оторваться невозможно. Если допилят автоочистку и многопользовательский режим — будет хит. Следите за коммитами.