TL;DR
Чем длиннее чат, тем хуже LLM справляется с задачей — не потому что не хватает памяти, а потому что старый контекст мешает больше, чем помогает. Исследователи назвали это явление context rot ("гниение контекста"): старые обмены занимают место в голове модели и конкурируют с актуальной информацией, создавая шум. При этом обрезать историю оказалось мало — нужно обрезать + кратко пересказать вырезанное.
Исследование проверило четыре стратегии управления историей на сложных многошаговых задачах. Главная находка противоречит интуиции: полная история разговора давала худший результат (71%), чем обрезанная история с кратким резюме старых сообщений (91.6%). При этом токенов тратилось в 2,7 раза меньше, а скорость — в 2,5 раза выше.
Метод работает по принципу "последние N взаимодействий полностью + сжатое резюме всего остального". Свежий контекст нужен для точной работы с текущим состоянием, а резюме — чтобы модель не забыла что уже сделано и куда движется.
Схема метода
(Один цикл — одна сессия. Применяется вручную в чате.)
ШАГ 1: Ведёшь чат как обычно
→ Накапливается история: решения, попытки, правки
ШАГ 2: Каждые 10-15 сообщений — получаешь "снэпшот"
→ Промпт: "Сожми историю: что решили, что сделано, где застряли"
→ Выход: компактное резюме (3-7 предложений)
ШАГ 3: Открываешь новый чат
→ Вставляешь: [резюме] + [последние 4-6 твоих сообщений + ответов]
→ Продолжаешь работу с чистой, релевантной историей
Ключевой принцип: Резюме → в начало нового чата. Последние 4-6 обменов → после резюме. Старая полная история → не переносится.
Пример применения
Задача: Ты помогаешь Артемию Лебедеву согласовать редполитику нового медиа: тон, формат, рубрики, правила. Разговор идёт уже 40 сообщений — обсудили дизайн, несколько раз переспорили про заголовки, приняли 5-6 ключевых решений. Модель начинает противоречить сама себе и возвращаться к отброшенным идеям.
Промпт для создания снэпшота:
Ты — редактор, собирающий итоги рабочей сессии.
Прочитай нашу переписку выше и создай компактный снэпшот по структуре:
## ПРИНЯТЫЕ РЕШЕНИЯ
[Что окончательно согласовано — кратко, по пунктам]
## ТЕКУЩАЯ ЗАДАЧА
[Над чем работаем прямо сейчас — 1-2 предложения]
## ОТКРЫТЫЕ ВОПРОСЫ
[Что ещё не решено или спорно]
## КОНТЕКСТ
[Ключевые ограничения, договорённости, принципы — то,
что важно помнить дальше]
Максимум 150 слов. Только факты, без воды.
Потом — новый чат:
[Вставь снэпшот выше]
---
Продолжаем работу над редполитикой.
[Вставь последние 4-6 сообщений из старого чата]
Следующий шаг: [твоя задача]
Результат: Модель получит структурированный снэпшот принятых решений и свежие 4-6 обменов. Ответы станут точнее: не будет возврата к отброшенным вариантам, противоречий с ранее согласованным, "размытого" понимания текущего контекста.
Почему это работает
Проблема: LLM воспринимает все токены в контексте примерно одинаково — старые и новые в равных "правах". Когда чат вырастает до 40+ сообщений, ранние обмены ("Может, добавим рубрику про дизайн?", "Нет, давай без неё") продолжают влиять на ответы так же, как последние. Это и есть context rot: модель "путается" в устаревших состояниях и отброшенных вариантах.
Что работает у LLM хорошо: Сжатие и синтез — модель умеет выделить суть из большого объёма и сохранить только важное. Это её сильная сторона.
Как метод её использует: Мы просим модель самостоятельно создать "сжатый снимок" истории — убрать шум, оставить факты. Потом даём только этот снимок + самый свежий контекст. Получается точная и экономная рабочая память: ориентация в задаче (резюме) + актуальное состояние (последние сообщения).
Рычаги управления:
| Параметр | Значение по умолчанию | Как менять |
|---|---|---|
| Частота снэпшота | Каждые 10-15 сообщений | Короткие задачи — реже; итеративные (правки, разработки) — чаще |
| Глубина резюме | 150 слов | Увеличь для сложных задач с множеством ограничений |
| Кол-во старых сообщений | 4-6 пар | Уменьши для скорости, увеличь если задача требует тональности/стиля |
| Формат снэпшота | Структурированный (разделы) | Для простых задач — один абзац прозой |
Шаблон промпта
Шаг 1 — Создание снэпшота
Прочитай нашу переписку выше и создай рабочий снэпшот.
## ПРИНЯТЫЕ РЕШЕНИЯ
[Что согласовано окончательно]
## ТЕКУЩАЯ ЗАДАЧА
[Над чем работаем]
## ОТКРЫТЫЕ ВОПРОСЫ
[Что ещё не решено]
## ВАЖНЫЙ КОНТЕКСТ
[Ограничения, принципы, договорённости — всё, что нужно помнить]
Максимум {объём_слов} слов. Только конкретика.
Шаг 2 — Запуск нового чата
## Контекст предыдущей работы
{снэпшот_из_шага_1}
---
## Последние сообщения
{последние_4_6_обменов}
---
## Продолжаем
{твоя_следующая_задача}
Плейсхолдеры:
- {объём_слов} — 100-200 для обычных задач, до 300 для сложных проектов
- {снэпшот_из_шага_1} — вставь вывод первого промпта
- {последние_4_6_обменов} — скопируй последние несколько пар "ты → модель" из старого чата
- {твоя_следующая_задача} — что делаем дальше
🚀 Быстрый старт — вставь в чат:
Вот шаблон для создания рабочего снэпшота разговора.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про структуру задачи и что важно зафиксировать — потому что снэпшот должен отражать именно то, что критично для продолжения твоей конкретной работы, а не универсальный список.
Ограничения
⚠️ Линейные задачи: Если разговор короткий (до 10-15 сообщений) и не итеративный — метод не нужен. Снэпшот создаёт лишний шаг без выгоды.
⚠️ Задачи со стилем и тоном: Если важно, как именно звучали предыдущие ответы (имитация голоса, сохранение стиля) — резюме может потерять нюансы. Переноси последние сообщения целиком, а не только резюме.
⚠️ Потеря деталей в резюме: Краткий снэпшот неизбежно что-то теряет. Если задача требует воспроизводимости всех деталей (юридические формулировки, точные цифры) — добавь в промпт для снэпшота: "Цифры, даты и точные формулировки — дословно".
⚠️ Исследовалось на автоматических агентах: Исследование проводилось на многошаговых агентах с десятками инструментальных вызовов, а не на ручном чате. Принципы переносятся, но оптимальные параметры (N=5 для их задачи) нужно подбирать под свой контекст.
Ресурсы
Название: Less Context, Better Agents: Efficient Context Engineering for Long-Horizon Tool-Using LLM Agents
Авторы: Abhilasha Lodha, Mahsa Pahlavikhah Varnosfaderani, Abir Chakraborty, Abhinav Mithal
Организация: Microsoft
Ключевые ссылки из работы: ReAct (Yao et al.), LLMLingua, MemoryBank, ACON, Model Context Protocol (MCP), Microsoft Dynamics 365 Finance and Operations
