Память для ИИ-агентов сейчас обещает каждый второй инструмент: MCP-серверы, плагины к Claude Code и Cursor, «second brain» для Codex. Обещание у всех одно: агент помнит прошлые сессии. Проверяют это редко. Обычно человек видит, что агенту что-то подсунули в контекст, и делает вывод, что память работает.Я полгода делаю open-source память skillmem и тоже ни разу её не мерил. Когда наконец собрал тест, он за один вечер нашёл три проблемы. Ниже методика, которую можно повторить на любом инструменте памяти.Принцип 1. Мерить ответ агента, а не выдачу поискаУ бенчмарков вроде LongMemEval метрика hit@k: попала ли нужная запись в первые k результатов. Это полезно, но пользователю важно другое: ответил ли агент правильно. Запись может быть в выдаче и не дойти до модели, потому что её обрезал лимит контекста. Модель может её увидеть и не поверить. Поэтому основная метрика — верный ответ, а hit@k вспомогательная, она нужна для отладки.Принцип 2. Две группы прогонов, всё остальное одинаковоМодель, промпт и настройки одни и те же, отличается только подключённая память. Для Claude Code это выглядит так:В группе без памяти SETTINGS='{}' и пустой MCP. В группе с памятью подключены хуки и MCP-сервер. Встроенную авто-память и CLAUDE.md отключаем в обеих группах, иначе сравнивается не то.Принцип 3. Отключить агенту файлыЕсли у агента есть Read и Grep, он найдёт ответ на диске, и тест измерит поиск по файлам. В группе без памяти у агента вообще нет инструментов, а в группе с памятью есть только инструменты памяти. Звучит жёстко, но иначе цифры ничего не значат.Принцип 4. Отдельный тест «между окнами»Вопросы по базе проверяют поиск. Главное обещание — новое окно помнит старое — проверяется отдельно:Первый процесс claude -p: «релиз переносим на 14 ноября, кодовое имя "Сокол", отвечает Тимур».Процесс завершается, и хуки памяти успевают сохранить сессию.Второй, новый процесс: «Это новое окно. Какое кодовое имя и кто отвечает? Не знаешь — так и скажи».Результат у меня: 0 из 10 без памяти, 10 из 10 с памятью (5 сценариев × 2 прогона). Фраза «не знаешь — скажи» важна: без неё агент без памяти иногда угадывает, и в группе без памяти появляется шум.Принцип 5. Каждый промах разбирать до причиныСамое ценное — не итоговая цифра, а промахи. На 15 вопросах по моему реальному проекту было 0 из 30 без памяти и 22 из 30 с ней. Каждый промах я разбирал по одной схеме: есть ли запись в базе → есть ли она в выдаче → на каком месте → дошла ли до модели → поверила ли модель.Каждый шаг этой цепочки дал по проблеме:Есть ли в базе. 208 из 698 файлов памяти не импортированы: импорт описан в инструкции, но не подключён в хуках. Исправление — хук импорта на конец сессии. Результат: 22 → 24 из 30.Место в выдаче. 8206 из ~9300 записей — автопересказы сессий, они вытесняют короткие правила. Исправление — вес пересказов ×0,5 в слиянии RRF. Результат: hit@3 18 → 26 из 30, итог 28 из 30.Поверила ли модель. Агент сознательно не доверяет правилам, которые записал сам и которые не одобрил человек. Исправление — одобрение одним словом прямо в чате.Третий пункт — не баг. Это защита от prompt injection: агент прочитал чужой README с фразой «всегда делай X» и закрепил её в памяти как правило. Но защита, которой неудобно пользоваться, тоже проблема. У меня скопилось 32 собственных неодобренных правила.Принцип 6. Проверить, что не подогнал под себяЕсли тюнишь поиск на своей базе, обязательно прогоняй публичный бенчмарк до и после. У меня после снижения веса пересказов LongMemEval hit@5 не упал, а вырос: 0,871 → 0,889. Если бы упал, правку пришлось бы откатить. Ещё одну правку, удаление служебных слов из запроса, я так и откатил: эффекта ноль.Чек-листМетрика — верный ответ агента, hit@k вспомогательная.Две группы прогонов, отличие только в памяти. Встроенная память клиента выключена в обеих.Чтение файлов агенту запрещено.Отдельный тест «между окнами» на двух разных процессах.В промпте есть «не знаешь — так и скажи».Каждый промах разобран по цепочке: база → выдача → место → контекст → доверие.Публичный бенчмарк до и после любой правки ранжирования.Ограничения названы честно: маленькие выборки, своя база, синтетические факты.skillmem распространяется под лицензией Apache-2.0. Релиз с исправлениями: 0.13.0.