- Главная
- Искусственный интелект
- Как убрать избыточность контекста: решение
Как убрать избыточность контекста: решение
На прошлом уроке мы разобрали диагноз: избыточность контекста незаметно раздувает сессию и ухудшает работу агента. Теперь переходим к лечению. Устранение избыточности работает на трёх уровнях: не пускать мусор внутрь, регулярно выбрасывать отработанное и переносить ценное в новую сессию. Соберём практический набор приёмов, который держит сессию лёгкой от первого сообщения до самой сложной задачи.
Принцип: профилактика дешевле уборки
Отсюда простое правило приоритетов: сначала профилактика, потом очистка и только в крайнем случае перенос в новую сессию. Дешёвые операции — спросить агента, открыть один файл, посмотреть последние строки лога: они стоят сотни токенов. Дорогие — сжатие истории и перезапуск: они стоят времени и части контекста. Если фильтровать вход, дорогих операций почти не понадобится.
Уровень 1. Профилактика: не пускать мусор
Лучший способ убрать избыточность — не создавать её. Большая часть мусора попадает в сессию через три двери: начальную загрузку, ручные вставки и агрессивное чтение файлов агентом. Каждую дверь можно прикрыть.
- Начальная загрузка. То, что подхватывается при старте сессии, чем меньше лишнего в стартовом наборе, тем дольше сессия остаётся в лёгком состоянии.
- Ручные вставки. Не копируйте целиком документ, лог или дамп — вставьте выжимку или дайте агенту команду, чтобы он сам достал нужное.
- Чтение файлов. Позволяйте агенту читать только то, что относится к задаче: привычка просить «изучи весь проект» ради одного бага — самая дорогая из трёх.
Профилактика не требует технических навыков, только дисциплины. Прежде чем что-то попало в контекст, задайте один вопрос: «это понадобится через десять ходов?» Если нет — не пускайте.
Уровень 2. Очистка: выбрасывать отработанное
Даже при хорошей профилактике сессия обрастает историей: обсуждения, правки, старые выводы. Значит, нужны регулярные ритуалы очистки. В большинстве harness есть команды двух типов.
| Тип команды | Что делает | Когда применять |
|---|---|---|
| Очистка сессии | Полностью сбрасывает диалог (/clear, /new, /reset) |
Подзадача закрыта, начинается новая |
| Сжатие истории | Сворачивает переписку в краткое резюме (/compact) |
Окно близко к пределу, терять историю нельзя |
Очистка — радикальный и здоровый инструмент. В одном из предыдущих уроков мы уже запускали, переключали и завершали сессии; теперь используем те же операции как гигиену. Сжатие — компромисс: оно уменьшает токены, но теряет детали, поэтому применяйте его осознанно, когда до границы Smart Zone осталось немного, а задача ещё не закончена.
Сделайте очистку частью завершения подзадачи: закрыли баг — очистили сессию или начали новую.
Это как убрать верстак между деталями: инструменты не мешаются, ничего не теряется, и следующая деталь начинается на чистом столе.
Уровень 3. Выжимка вместо целого
Самый частый источник избыточности — вставка лишнего объёма «на всякий случай». Выжимка решает проблему: вместо тысячи строк дайте агенту десять. Правила простые.
- Последние строки лога. Ошибка почти всегда в хвосте вывода — вставляйте 20-50 строк, а не весь файл.
- Сигнатуры вместо реализаций. Для понимания кода агенту обычно хватает сигнатур функций и типов, а не всего тела.
- Список затронутых файлов. Если нужно передать состояние работы, перечислите файлы и изменения одной строкой.
- Команда вместо содержимого. Вместо вставки лога передайте агенту команду — пусть запустит её сам и принесёт только результат.
Агент выполняет bash-команды сам, и вы платите не за сырьё, а за выборку. Вместо ручной вставки огромного вывода достаточно короткой инструкции.
# вместо того чтобы вставлять лог целиком,
# дайте агенту команду и попросите показать только ошибку
grep -A 10 "ERROR" logs/server.log | tail -50
Уровень 4. Перенос в новую сессию без потерь
Ответ — записка-передача (handoff): пять-десять строк в файле проекта, где зафиксировано, что сделано, что осталось, какие файлы затронуты и какие команды проверены. Новая сессия читает записку за десятки токенов вместо тысяч, которые стоил бы весь старый диалог.
# Задача: счётчик отказов
- Сделано: endpoint /stats, тесты
- Осталось: ретраи, проверка rate limit
- Файлы: src/stats/processor.ts
- Проверка: npm test src/stats
Дополнительный приём — долгоживущий файл заметок в репозитории: он переживает любые сессии и копится как история решений. А экспериментировать можно смело, например, откатывать изменения, так что пробуйте новое без страха, а в записку заносите только то, что действительно работает.
Заведите ритуал «пяти минут». Как только подзадача закрыта — очистите сессию или допишите три строки в записку-передачу. Пять минут сейчас экономят полчаса переделок позже, когда раздутый контекст начнёт приносить противоречивые ответы.
Чек-лист лёгкой сессии
Сведём предыдущий урок и этот в таблицу: симптом раздутого контекста и действие, которое его лечит.
| Симптом | Действие |
|---|---|
| Агент замедлился и путается | Очистить сессию или начать новую с запиской-передаткой |
| В контексте лежат прочитанные, но ненужные файлы | Не давать читать «весь проект», ограничивать объём чтения |
| Логи и дампы занимают половину окна | Вставлять выжимку или передавать команду вместо содержимого |
| Окно близко к пределу, а задача не закончена | Сжать историю в резюме и продолжать с ним |
Эти действия не разовые: они образуют цикл. Профилактика на входе, очистка между подзадачами, записка при перезапуске — и сессия почти всегда остаётся в продуктивной зоне.
Не превращайте вставку в лотерею: вместо «вот лог, разбери» передайте агенту команду и попросите принести только найденную ошибку с номером строки. Так вы платите за 50 токенов ответа, а не за 3000 токенов сырья на каждом последующем шаге сессии.
Итоги
Применяйте все три — и сессия останется лёгкой, а качество ответов стабильным от начала до конца.
В следующем уроке научимся видеть заполнение контекста в реальном времени в status line — чтобы чистить сессию не по ощущениям, а по цифрам.
Глоссарий
- Избыточность контекста — наличие в context window информации, не нужной для текущей задачи, но влияющей на рассуждения модели.
- Профилактика избыточности — контроль того, что попадает в контекст, чтобы мусор не появлялся с самого начала.
- Очистка сессии — команда (/clear, /new, /reset), полностью сбрасывающая диалог.
- Сжатие истории — команда (/compact), сворачивающая переписку в краткое резюме.
- Выжимка — короткий фрагмент исходного материала (последние строки лога, сигнатуры, список файлов), заменяющий целый объём.
- Записка-передатка (handoff) — короткий файл с описанием сделанного, оставшегося и затронутых файлов для новой сессии.
- Файл заметок — долгоживущий документ в репозитории, накапливающий решения и переживающий сессии.
- Сессия (session) — один непрерывный разговор с агентом, ограниченный context window.
- Statelessness (отсутствие состояния) — свойство LLM не сохранять память между запросами.
- Smart Zone — продуктивный диапазон заполнения context window, в котором агент рассуждает качественно.
- Токен — единица измерения текста, на которую опирается LLM при обработке.
- Harness — программа-оболочка, через которую пользователь взаимодействует с LLM и управляет агентом.