Хотите заказать веб-сайт? Связаться с нами

Как убрать избыточность контекста: решение

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

Как убрать избыточность контекста: решение

Принцип: профилактика дешевле уборки

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

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

Уровень 1. Профилактика: не пускать мусор

Лучший способ убрать избыточность — не создавать её. Большая часть мусора попадает в сессию через три двери: начальную загрузку, ручные вставки и агрессивное чтение файлов агентом. Каждую дверь можно прикрыть.

  1. Начальная загрузка. То, что подхватывается при старте сессии, чем меньше лишнего в стартовом наборе, тем дольше сессия остаётся в лёгком состоянии.
  2. Ручные вставки. Не копируйте целиком документ, лог или дамп — вставьте выжимку или дайте агенту команду, чтобы он сам достал нужное.
  3. Чтение файлов. Позволяйте агенту читать только то, что относится к задаче: привычка просить «изучи весь проект» ради одного бага — самая дорогая из трёх.

Профилактика не требует технических навыков, только дисциплины. Прежде чем что-то попало в контекст, задайте один вопрос: «это понадобится через десять ходов?» Если нет — не пускайте.

Уровень 2. Очистка: выбрасывать отработанное

Даже при хорошей профилактике сессия обрастает историей: обсуждения, правки, старые выводы. Значит, нужны регулярные ритуалы очистки. В большинстве harness есть команды двух типов.

Тип команды Что делает Когда применять
Очистка сессии Полностью сбрасывает диалог (/clear, /new, /reset) Подзадача закрыта, начинается новая
Сжатие истории Сворачивает переписку в краткое резюме (/compact) Окно близко к пределу, терять историю нельзя

Очистка — радикальный и здоровый инструмент. В одном из предыдущих уроков мы уже запускали, переключали и завершали сессии; теперь используем те же операции как гигиену. Сжатие — компромисс: оно уменьшает токены, но теряет детали, поэтому применяйте его осознанно, когда до границы Smart Zone осталось немного, а задача ещё не закончена.

Сделайте очистку частью завершения подзадачи: закрыли баг — очистили сессию или начали новую.

Это как убрать верстак между деталями: инструменты не мешаются, ничего не теряется, и следующая деталь начинается на чистом столе.

Уровень 3. Выжимка вместо целого

Самый частый источник избыточности — вставка лишнего объёма «на всякий случай». Выжимка решает проблему: вместо тысячи строк дайте агенту десять. Правила простые.

  1. Последние строки лога. Ошибка почти всегда в хвосте вывода — вставляйте 20-50 строк, а не весь файл.
  2. Сигнатуры вместо реализаций. Для понимания кода агенту обычно хватает сигнатур функций и типов, а не всего тела.
  3. Список затронутых файлов. Если нужно передать состояние работы, перечислите файлы и изменения одной строкой.
  4. Команда вместо содержимого. Вместо вставки лога передайте агенту команду — пусть запустит её сам и принесёт только результат.

Агент выполняет 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 — чтобы чистить сессию не по ощущениям, а по цифрам.

Глоссарий

  1. Избыточность контекста — наличие в context window информации, не нужной для текущей задачи, но влияющей на рассуждения модели.
  2. Профилактика избыточности — контроль того, что попадает в контекст, чтобы мусор не появлялся с самого начала.
  3. Очистка сессии — команда (/clear, /new, /reset), полностью сбрасывающая диалог.
  4. Сжатие истории — команда (/compact), сворачивающая переписку в краткое резюме.
  5. Выжимка — короткий фрагмент исходного материала (последние строки лога, сигнатуры, список файлов), заменяющий целый объём.
  6. Записка-передатка (handoff) — короткий файл с описанием сделанного, оставшегося и затронутых файлов для новой сессии.
  7. Файл заметок — долгоживущий документ в репозитории, накапливающий решения и переживающий сессии.
  8. Сессия (session) — один непрерывный разговор с агентом, ограниченный context window.
  9. Statelessness (отсутствие состояния) — свойство LLM не сохранять память между запросами.
  10. Smart Zone — продуктивный диапазон заполнения context window, в котором агент рассуждает качественно.
  11. Токен — единица измерения текста, на которую опирается LLM при обработке.
  12. Harness — программа-оболочка, через которую пользователь взаимодействует с LLM и управляет агентом.

Теги: