TL;DR
Hippocam — архитектура долгой работы агента. Она держит в контексте только текущую цель, а завершённые этапы заменяет коротким конспектом от первого лица: что установлено, на чём это основано, какие были провалы. Старые конспекты периодически склеиваются с новыми и становятся всё абстрактнее. Оригинальные сообщения не удаляются, они лежат «под» конспектом, и агент может спуститься к ним, если не хватает деталей.
Главная находка: у разных подходов к памяти разные слепые зоны. Подходы вида «выжми из опыта инструкцию» (ACE, ReasoningBank) хорошо учатся на задачах, но теряют конкретные факты и на вопросах по прошлым разговорам почти не отвечают. Подходы вида «складывай факты в хранилище» (mem0) помнят факты, но при переключении между задачами почти полностью ломаются. Hippocam держит оба навыка, потому что выводы и оригиналы хранятся вместе, а детали не выбрасываются, а прячутся на уровень ниже.
В статье это система из трёх вспомогательных LLM-компонентов и кода-оркестратора. Читателю-практику не нужно её строить, но нужно забрать принцип. Работу в длинной сессии можно нарезать на цели с условиями выхода. Закрытую цель стоит сжимать в конспект с доказательствами и неудачами, а процесс отбрасывать. Источники нужно хранить рядом, чтобы к ним можно было вернуться.
Схема метода
ШАГ 1: Открыть цель (intent) → «зачем» + условия выхода: успех / провал
ШАГ 2: Перед каждым действием выбрать → Continue / Deepen / Close / Shift
ШАГ 3: Цель закрыта → конспект от первого лица (состояние, выводы + доказательства,
полезные провалы, где лежат материалы). Процесс поисков — выбросить
ШАГ 4: Давно не нужное → пересжать вместе с новым: «рассказ» + «знания»,
каждый раз абстрактнее. Используемое — обновляется, неиспользуемое — блёкнет
ШАГ 5: Не хватает деталей → спуститься к оригиналам на один уровень, остановиться,
как только информации достаточно
В оригинале это разные LLM-вызовы под управлением кода: JANUS (цели), PRECIP (конспект цели), PALIM (пересжатие старого), плюс инструмент recall. В чате или в файле инструкций их можно имитировать ролями в одном промпте (шаблон ниже).
Пример применения
Задача: Вы с Claude Code переносите интернет-магазин кофе с Tilda на свой сайт. Нужно подключить ЮKassa, расчёт доставки через СДЭК и выгрузку заказов в «МойСклад». Сессия идёт уже третий час, контекст забит логами, кусками диффов и тупиками. Агент начал забывать, что в СДЭК уже выяснили про тарифы, и повторно гоняет те же проверки.
Промпт (в CLAUDE.md или в начале сессии):
Работай по целям (intents). Правила:
ЦЕЛЬ = «зачем» + условие успеха + условие провала.
Пример: Цель: подключить ЮKassa. Успех: тестовый платёж проходит и вебхук
обновляет статус заказа. Провал: 3 неудачные попытки без нового понимания причины.
Перед каждым крупным шагом пиши одну строку: Continue / Deepen / Close / Shift.
- Continue: цель актуальна, продолжаю.
- Deepen: открываю под-цель внутри текущей.
- Close: цель завершена (успех или провал по условиям выше).
- Shift: закрываю цель и открываю следующую.
Когда цель закрыта, напиши конспект от первого лица («я выяснил…», «я изменил…»):
1. Состояние: что изменено в проекте (файлы, настройки).
2. Выводы: что установлено + доказательство (команда, ответ API, номер строки).
3. Полезные провалы: что не сработало и почему (чтобы не повторять).
4. Где смотреть: в каких файлах и логах лежат детали.
НЕ включай: путь поисков, который ничего не установил.
Дальше опирайся на конспекты как на свою прошлую работу. Новые выводы считай
гипотезами, пока их не подтвердит тест. Если в конспекте не хватает детали —
открой указанный файл или лог и вернись к работе, как только нашёл нужное.
Результат: Агент начнёт каждый этап с короткой строки о цели и условиях выхода. По завершении этапа он выдаст компактный конспект в четыре блока: изменения, подтверждённые выводы, неудачи, ссылки на файлы. Тупики, например «СДЭК вернул 401 из-за неверного режима ключа», останутся в конспекте как урок. Длинные логи в него не попадут. Для деталей агент обратится к файлам по ссылкам из конспекта, а не будет гадать по памяти.
Почему это работает
Слабость. Чем длиннее сессия, тем больше в контексте шума: логи, промежуточные догадки, тупики. Модель хуже выбирает главное, и вместе с растущим шумом падает точность. Если же просто резать историю или сжимать «в общих чертах», пропадают конкретные факты: цифры, номера, причины ошибок.
Сильная сторона. Модель хорошо пересказывает по заданной структуре и хорошо сопоставляет новое с прошлым опытом. Если сказать ей, что сохранить (вывод + доказательство + провал + где лежит оригинал), она сделает это стабильно.
Как метод это использует. Цели с условиями выхода дают понятный момент, когда сжимать. Конспект привязан к цели, поэтому модель знает, что важно для работы, а что нет. Оригиналы сохраняются, поэтому сжатие не необратимо. Так достигается баланс между «чистым» контекстом и доступными деталями.
Рычаги управления: - Условия выхода цели → строже (одна попытка) или мягче (пять), чтобы агент не буксовал и не бросал рано. - Состав конспекта → добавь блок «открытые вопросы» или убери «где смотреть», если материалов нет. - Частота пересжатия → в конце каждого этапа или раз в час. Чем реже, тем больше деталей в контексте и тем выше риск шума. - Правило «гипотеза, пока не подтверждено» → оставь, если нужна строгость. Убери для быстрых прототипов.
Шаблон промпта
В статье нет готового текста промптов в доступной части. Ниже реконструкция по описанию механики. Роли JANUS, PRECIP и PALIM сведены в одну инструкцию.
Ты ведёшь долгую работу над: {проект}. Ты работаешь как три функции сразу:
JANUS (ведёт цели), PRECIP (сжимает закрытые цели), PALIM (пересжимает старое).
Текущая цель: {цель}
Условие успеха: {успех}
Условие провала: {провал}
Вложенные под-цели: {если есть}
Определи, что с целью: Continue / Deepen / Close / Shift.
Пиши от первого лица одну-две строки: какие цели закончены, что делать дальше,
каковы условия успеха и провала для следующего шага.
Следи за сменой цели, не за каждым действием. Не планируй всё заранее.
Замени рабочие сообщения цели одним самодостаточным конспектом от первого лица:
- Состояние: {что изменено}
- Выводы + доказательства (откуда известно)
- Полезные провалы (что не сработало и почему)
- Структура и расположение материалов: {где что лежит}
- Необработанное, что понадобится внешним целям
Выбрось: путь поиска, который ничего не установил.
Факты, подтверждающие один урок, объедини в один вывод.
Когда накопилось {N} конспектов закрытых целей, пересожми самые старые
вместе с новыми. Раздели каждый конспект на:
- РАССКАЗ: что делали и чем кончилось (становится короче и абстрактнее);
- ЗНАНИЯ: факты и уроки, сформулированные про сам предмет, а не про «как мы
к этому пришли». Однотипные знания объединяй, новое дополняет или
обновляет старое.
Не придумывай общих выводов, которых не было в исходных конспектах.
Последние {K} шагов не трогай.
Сначала используй то, что уже в контексте. Если не хватает детали, которая
повлияет на следующее действие, открой оригинал по ссылке из конспекта.
После каждого шага назад оцени: спускаться глубже или уже достаточно.
Останавливайся, как только информации хватает.
Что подставлять: {проект} — описание работы; {цель}, {успех}, {провал} — первая цель с проверяемыми условиями; {N} — после скольких закрытых целей сжимать старое (например, 3–5); {K} — сколько последних шагов оставлять нетронутыми.
🚀 Быстрый старт — вставь в чат:
Вот шаблон Hippocam (работа по целям с конспектами и пересжатием). Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, из каких этапов состоит работа, как понять, что этап успешен или провален, где лежат материалы (файлы, логи, переписка) и что нельзя терять при сжатии (цифры, договорённости, ID). Это нужно, потому что метод держится на проверяемых условиях выхода и на понятном списке того, что сохранять.
Ограничения
⚠️ Нужен код, а не чат: в оригинале три вспомогательных вызова LLM, стек целей, дерево сообщений и инструмент recall управляются программой. Шаблон выше — ручная имитация. В статье она не проверялась, и устойчивость такой эмуляции в обычном чате не доказана.
⚠️ Промптов в тексте нет: в доступной части нет готовых формулировок, шаблон реконструирован по описанию механики. Метод в авторском виде воспроизвести нельзя.
⚠️ Одна базовая модель: все сравнения проведены на одной модели (DeepSeek). Как метод поведёт себя на других моделях, не показано.
⚠️ Прирост неравномерный: на части тестов Hippocam лишь делит лидерство или опережает конкурентов на доли процента. Сильнее всего разрыв на длинных историях и обновлённых фактах. Даже там на очень длинном входе (64k токенов) точность остаётся около 41%.
⚠️ Абляции не видны: в доступном тексте обрезан раздел, который показывает, какой компонент (цели, пересжатие, recall) даёт какую долю выигрыша. Нельзя сказать, что из набора критично, а что можно выбросить.
⚠️ Для коротких задач избыточно: если задача укладывается в один-два обмена, цели и конспекты только добавят шума.
Как исследовали
Команда взяла готовые тесты для долгих агентов и сравнила Hippocam с шестью известными подходами: mem0, A-Mem, Letta, ReasoningBank, ACE и HiAgent. Все работали на одной и той же модели, а контрольный вариант «Plain» был той же моделью без памяти. Проверяли четыре вещи. Первая: учится ли агент на накопленном опыте (ALFWorld, ScienceWorld, StreamBench). Вторая: переносятся ли знания в другую область (из домашних задач в научные эксперименты). Третья: держится ли память при долгой работе (чередование задач, вопросы по прошлым разговорам, обновлённые факты). Четвёртая: насколько метод общий.
Результаты сильно неравномерны. Hippocam лидирует или делит лидерство в семи из восьми показателей. На ALFWorld у него 97,8%, как у ACE. На ScienceWorld после переноса из других задач прирост составил +19,2 п.п. против +14,0 у ACE. На длинных обновлённых фактах при 32k токенов он держит 77%, а лучший конкурент не выше 37%. Самое интересное — профили конкурентов. ACE и ReasoningBank, которые учат правила из опыта, на ответах по прошлым разговорам набрали 22,5% и 18,3%. У ACE идеальные 100% на «неотвечаемых» вопросах при нуле на отвечаемых: он просто отказывался отвечать. Mem0 при чередовании задач рухнул до 3,3%. Вывод для практики: конспект-урок без оригиналов теряет факты, а склад фактов без структуры путается при смене задач. Hippocam выигрывает, потому что хранит и то и другое, а детали прячет, а не выбрасывает. На поздних этапах он ещё и обошёлся примерно на 10% дешевле на задачу.
Адаптации и экстраполяции
🔧 Техника: добавить в конспект блок «Не абстрагировать» → числа и идентификаторы не теряются при пересжатии
При пересжатии конспектов сохраняй дословно: суммы, даты, ID заказов,
имена файлов, коды ошибок. Абстрагировать можно только формулировки.
Это защита от слабой стороны любого сжатия: точные значения превращаются в «около» и «примерно». Идея — моя, в статье такого правила нет.
Экстраполяция: файл NOTES.md как «дерево» между сессиями
Ту же логику можно вынести за пределы одной сессии. Агент в конце сессии дописывает в NOTES.md раздел «Знания» (проверенное, без истории) и раздел «Рассказ» (что делали, коротко), а на каждом проходе пересжимает старые записи. В начале новой сессии файл читается первым.
В конце сессии обнови NOTES.md: в «Знания» объедини новое со старым
(дополняй или правь, не дублируй), в «Рассказ» сожми прошлые записи
до одной-двух строк. Детали оставляй в коммитах и логах, в NOTES.md —
ссылки на них. Читай NOTES.md в начале следующей сессии.
Это перенос принципа, а не результат статьи: авторы тестировали механику внутри одной непрерывной работы.
Ресурсы
- Статья: Use and Disuse: Intent-Structured Experience Consolidation for Memory and Learning in LLM Agents
- Авторы: Xiangyi Zeng, Baihang Liu, Xutong Wang, Ze Jin, Yunpeng Li, Qixu Liu — Institute of Information Engineering, Chinese Academy of Sciences; School of Cyber Security, University of Chinese Academy of Sciences (Пекин)
- Сравнивались с: mem0, A-Mem, Letta, ReasoningBank, ACE, HiAgent
- Бенчмарки: ALFWorld, ScienceWorld, StreamBench, GoodAI LTM, LoCoMo, MemoryAgentBench
