Перейти к содержимому
PD
ИИ-агенты

Память ИИ-агента: контекст, компакция и артефакты

Почему контекст агента кончается быстрее, чем ожидается, что стоит хранить, а что выбрасывать, как работает компакция и почему файловая память надёжнее пересказа истории.

Все статьи гида ИИ-агенты · 11

Слово «память» в применении к агенту означает не одно, а четыре разных механизма. Путаница между ними приводит к системам, которые забывают важное и помнят мусор.

Почему контекст кончается

Модель не помнит ничего между вызовами. Всё, что она «знает» в момент ответа, отправлено ей в этом же запросе.

Отсюда два следствия, определяющие всю конструкцию:

  • Каждый шаг агента отправляет всю накопленную историю заново. Поэтому шаг двадцатый дороже шага первого, а не равен ему.
  • Окно ограничено, и в него не влезает всё, что агент прочитал по дороге.

Что занимает место на практике: не постановка задачи, а результаты инструментов. Одна выгрузка данных, один длинный ответ API, один лог ошибок - и половина окна занята. Постановка задачи занимает проценты.

Что хранить, а что выбрасывать

Полезно разделить память на четыре типа и обращаться с ними по-разному.

Рабочий контекст. То, что нужно прямо сейчас, на текущем шаге. Живёт в окне, исчезает вместе с ним.

Результаты. То, что агент выяснил и что понадобится дальше. Должно жить снаружи: в файле или в базе. Держать выводы только в разговоре - значит потерять их при первой компакции.

Состояние. Что уже сделано. Это не удобство, а защита: при перезапуске агент должен знать, что письмо уже отправлено, иначе отправит второе - см. идемпотентные пайплайны.

Долгая память. Знание, переносимое между запусками: справочники, предпочтения, накопленные факты. Хранится во внешнем хранилище и подгружается по релевантности, а не целиком.

Правило, которое сокращает расход сильнее прочих: сырой результат инструмента не должен оставаться в контексте, если из него уже извлечено нужное. Прочитали таблицу на тысячу строк, вытащили три числа - в памяти должны остаться три числа.

Компакция

Когда окно подходит к пределу, ранняя часть разговора сжимается в пересказ. Это позволяет продолжить, но у сжатия есть цена.

Теряются детали. Пересказ сохраняет то, что выглядело важным при сжатии. Точное имя файла, конкретное значение параметра, оговорка из середины разговора - всё это исчезает.

Агент об этом не сообщает. Он продолжает работать так, будто помнит, и это опаснее явной ошибки: неполная картина выглядит как полная.

Качество падает постепенно. Не резко, а по мере накопления сжатий.

Практический вывод: компакция - это аварийный режим, а не рабочий. До неё нужно успеть зафиксировать результаты снаружи. Правильная привычка на длинной задаче: закончил осмысленный кусок - записал результат в файл или в базу, и только потом продолжил.

Файловая память

Самый надёжный и самый недооценённый механизм: агент пишет то, что выяснил, в файлы и читает их, когда нужно.

Почему это работает лучше, чем держать всё в контексте:

  • Переживает компакцию и перезапуск. Контекст не переживает ни того, ни другого.
  • Читается по частям. Нужен один раздел - читается один раздел, а не весь файл.
  • Проверяемо человеком. Вы можете открыть файл и увидеть, что агент на самом деле выяснил, а не что он написал в отчёте.
  • Переносится между агентами. В мультиагентной схеме это естественный способ передать результат.

Что обычно кладут в файлы: план работы с отметками о выполненном, найденные факты со ссылками на источник, промежуточные выгрузки, список того, что не получилось и почему.

Отдельная польза: план в файле - это защита от потери цели. Агент на длинной задаче забывает, зачем начал; план, который он перечитывает, возвращает его к исходной постановке.

Практический минимум

Для работающей системы достаточно четырёх вещей:

  1. Состояние в базе - что уже сделано.
  2. Результаты в файлах или в базе - что выяснено.
  3. Компакция как аварийный, а не штатный режим.
  4. Сырые выгрузки не остаются в контексте после извлечения нужного.

Развёрнутый разбор того, как считать бюджет контекста в агентной системе, - в блоге: архитектура бюджета контекста. Как то же самое выглядит в кодовом агенте - лимиты Claude Code. Общая картина - гид по ИИ-агентам.

Вопросы и ответы

Есть ли у ИИ-агента память между запусками?

Сама по себе - нет. Модель не помнит ничего: каждый запрос отправляет ей всю нужную историю заново. Память агента - это то, что вы храните снаружи и подкладываете в контекст, и её устройство целиком на вашей стороне.

Что такое компакция контекста?

Сжатие ранней части разговора в краткий пересказ, чтобы освободить место. Она позволяет продолжить работу, но необратимо теряет детали: то, что показалось несущественным при сжатии, восстановить уже нельзя. Поэтому важные результаты фиксируются в файлах и в базе до того, как контекст подойдёт к пределу.

Зачем агенту писать файлы, если есть контекст?

Файл переживает и компакцию, и перезапуск, и смену сессии, а контекст не переживает ничего. Плюс файл можно прочитать частями, когда он понадобится, вместо того чтобы держать его целиком перед глазами весь разговор.

Ещё по теме