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

Агент, который помнит всё, работает хуже агента, который помнит нужное. Это контринтуитивно, но подтверждается на любом длинном диалоге: когда контекстное окно забивается историей, модель начинает терять из виду задачу, повторяться и путать факты из ранних сообщений с текущими. Плюс за каждый токен в окне вы платите — деньгами через API или скоростью ответа. Поэтому вопрос управления памятью агента — не про то, как запомнить больше, а про то, что осмысленно забыть.
Почему «помнить всё» не работает
У любой языковой модели есть контекстное окно1 — максимальный объём текста, который она может держать перед глазами за один вызов. У актуальных моделей оно большое: 128 тысяч токенов у GPT-4o, до 200 тысяч у Claude, до миллиона у Gemini 1.5 Pro. Кажется, что этого хватит на любую историю. Но есть две проблемы.
Первая — деньги и задержка. Токены на входе тарифицируются, и полный диалог на 150 тысяч токенов при каждом новом сообщении превращается в дорогой и медленный запрос. Вторая — качество. Исследователи описали эффект «lost in the middle»: модель хорошо помнит начало и конец контекста, но информация в середине длинного окна используется заметно хуже. Формально токены влезли — а на деле агент их почти не видит.
Память агента — это не архив, а рабочий стол. На столе лежит то, что нужно прямо сейчас; всё остальное убрано в ящики, откуда достаётся по запросу.
Три слоя памяти
На практике память агента раскладывают на несколько уровней с разной живучестью. Проще всего думать о них так:
- Рабочая память — текущий контекст: системный промпт, последние сообщения, результаты вызванных инструментов. Живёт один сеанс, помещается в окно целиком.
- Эпизодическая память — сжатые сводки прошлых сессий: чем закончился прошлый разговор, какие решения приняты. Хранится вне окна и подтягивается, когда релевантна.
- Семантическая память — устойчивые факты о пользователе или предметной области: имя, предпочтения, ключевые данные проекта. Меняется редко, извлекается точечно.
Рабочую память нужно активно чистить, эпизодическую — сжимать, семантическую — хранить и обновлять. Смешивать их в одну простыню истории — как раз то, что ломает агентов на длинной дистанции.
Что оставлять в окне
В рабочую память имеет смысл держать только то, что влияет на следующий шаг: формулировку задачи, последние 5–10 реплик, результаты недавних инструментов и жёсткие ограничения (формат ответа, запреты). Всё, что старше и не упоминалось, — кандидат на выгрузку.
Что забывать
Забывать стоит сырые логи инструментов после того, как из них извлечён вывод, промежуточные рассуждения, которые уже привели к результату, и повторяющиеся уточнения. Ключевое слово — «сырые»: вместо десяти сообщений о том, как агент искал файл, в памяти остаётся одна строка «файл config.yaml найден в /etc, версия 2».
Подходы к управлению: сравнение
Единого стандарта нет, но сложилось несколько рабочих стратегий. Их можно комбинировать.
| Подход | Как работает | Плюсы | Ограничения |
|---|---|---|---|
| Скользящее окно | Держим последние N сообщений, старые отбрасываем | Просто, дёшево, предсказуемо | Теряет важное из начала диалога |
| Суммаризация | Старые сообщения сжимаются моделью в краткую сводку | Сохраняет суть длинной истории | Стоит доп. вызовов, теряет детали |
| RAG по памяти | История в векторной базе2, достаём релевантное по запросу | Масштабируется на тысячи сессий | Нужна инфраструктура, риск не найти нужное |
| Структурированные факты | Извлекаем факты в БД/JSON, храним как записи | Точное обновление, легко редактировать | Сложно для неструктурированного контекста |
В готовых продуктах это уже спрятано под капот. У OpenAI в ChatGPT есть функция памяти, которая сохраняет факты о пользователе между чатами и позволяет их просматривать и удалять. Для разработчиков подобное реализуют библиотеки вроде LangChain, LlamaIndex и специализированные проекты памяти — но выбор конкретного инструмента зависит от того, строите вы чат-ассистента или автономного агента с инструментами.
Кому это пригодится, а кому нет
Пригодится:
- Тем, кто строит агента поддержки, который ведёт пользователя через много сессий — здесь без эпизодической и семантической памяти клиент каждый раз начинает с нуля.
- Разработчикам автономных агентов с длинными цепочками вызовов инструментов: без чистки рабочей памяти окно забивается за десятки шагов.
- Тем, кто считает расходы на API: сжатие истории напрямую режет счёт, особенно на дорогих моделях.
Не пригодится:
- Для коротких одноразовых запросов вроде «переведи текст» или «напиши регулярку» — там весь контекст и так помещается, память избыточна.
- Для задач, где важна ровно вся история без потерь, например юридический разбор длинного документа — тут лучше поместить документ целиком в большое окно, чем рисковать сжатием.
С чего начать
- Замерьте, сколько токенов реально уходит в окно на типичном диалоге — многие удивляются, обнаружив, что 80% занимают логи инструментов.
- Введите скользящее окно как базовую защиту: это самый дешёвый способ не дать истории расти бесконечно.
- Добавьте суммаризацию старой части, если теряется важный контекст из начала.
- Если сессий много и они разнесены во времени — выносите факты в отдельное хранилище и подтягивайте по релевантности.
- Дайте пользователю или самому агенту возможность править и удалять запомненное: устаревший факт хуже, чем его отсутствие.
1 Контекстное окно — объём текста в токенах, который модель обрабатывает за один вызов; и запрос, и ответ должны в него уместиться.
2 RAG (retrieval-augmented generation) — подход, при котором нужные фрагменты достаются из внешнего хранилища (часто векторной базы) и добавляются в контекст перед генерацией ответа.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: OpenAI — Memory and new controls for ChatGPT, Lost in the Middle: How Language Models Use Long Contexts (arXiv)
Частые вопросы
Разве большое контекстное окно не решает проблему памяти само по себе?
Чем эпизодическая память отличается от семантической?
Суммаризация не приводит к потере важных деталей?
Нужна ли векторная база небольшому проекту?
Как понять, что агент теряется из-за переполненной памяти?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.