Перейти к тексту

Claude Code: работа с coding-агентом4. Контекст под контролем

Compaction: сжать session и не потерять нить

Засчитывается, когда отвечены все вопросы квиза

Фича с комментариями реализована. Контекст занят на 150 с лишним тысяч токенов: допрос, десятки прочитанных файлов, правки, прогоны тестов. Теперь нужен QA. Продолжать в той же session — значит тащить за собой весь шум. Сделать /clear — значит потерять, почему фича устроена именно так. Есть третий путь.

Зачем это нужно

Каждый запрос к модели несёт весь контекст session. Чем он длиннее, тем медленнее ответ и тем хуже модель держит фокус; оригинал курса называет удачную часть окна smart zone. При этом большая часть накопленного — уже не нужные чтения файлов и промежуточные версии кода.

/clear убирает всё, включая решения и их причины. Агенту придётся заново исследовать код, и это исследование будет неполным: код покажет, что сделано, но не почему. Compaction сохраняет главное и выбрасывает шум.

Как это устроено

/compact [instructions] пересказывает разговор и заменяет его структурированным резюме. Новый разговор начинается с этого резюме, и в окне снова есть место. Необязательная инструкция говорит, на чём сфокусироваться:

/compact we are moving on to QA of the lesson comments feature

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

Что переживает сжатие, документация расписывает по механизмам. Системный промпт продолжает действовать. CLAUDE.md в корне проекта и auto memory заново читаются с диска. План из plan mode тоже возвращается с диска. Из файлов, которые Claude читал или правил, перечитываются до пяти самых недавно изменённых; файл больше 5 000 токенов возвращается только ссылкой на путь. Всё остальное — ваши сообщения, рассуждения, результаты команд — живёт дальше только в пересказе.

Это и есть цена. Исходная session — первоисточник: полная, но шумная. Резюме — вторичный источник: компактное, но с потерями. Нюанс, который не попал в резюме, больше не вернуть. Поэтому лучше всего compaction работает на границе этапов, например перед QA готовой фичи: архитектурных решений уже не будет, нужно только знать, что сделано и почему.

Если ничего не делать, Claude Code сожмёт разговор сам — это auto-compaction. По умолчанию она срабатывает, когда разговор доходит до предела окна модели; модели с окном в 1M токенов сжимаются раньше, примерно на 967 тысячах. Порог можно сдвинуть: /autocompact 500k сохраняет его в пользовательские настройки для текущей модели, а ключ autoCompactWindow в ~/.claude/settings.json задаёт его для всех моделей. Допустимый диапазон — от 100K до 1M токенов.

Удобно, но у автоматического сжатия две проблемы. Оно срабатывает, где придётся, — часто посреди реализации. После такого сжатия агент теряет нить: забывает, о чём шла речь только что, пропускает пункты фичи, меняет стиль кода во второй половине. И автоматическому сжатию никто не даёт инструкцию: оно само решает, что важно. Практика оригинала курса: если вы упираетесь в auto-compaction, вы пропустили момент, когда должны были решить сами.

Практика

В session после реализации фичи запустите /context и запишите, сколько токенов занято. Затем:

/compact we are moving on to QA of the feature we just built

Прочитайте резюме: какие разделы в нём есть, какие файлы упомянуты. Снова запустите /context и сравните цифры. Спросите агента о решении из начала разговора и проверьте, помнит ли он причину, а не только факт.

Подводные камни

  • /compact не бесплатный. Чтобы пересказать большой контекст, модель должна его прочитать, так что сжатие — сам по себе большой запрос. Если продолжение не нужно, /clear ничего не стоит.
  • Правила из paths: и вложенные CLAUDE.md уходят в пересказ. Они попадают в историю, когда Claude трогает нужный файл, и сжимаются вместе с ней; снова они загрузятся, только когда Claude опять тронет такой файл. Правило, которое должно пережить сжатие, держите в корневом CLAUDE.md без paths:.
  • Можно сжать только часть. /rewind (или Esc дважды) с пунктами Summarize from here и Summarize up to here сжимает разговор от выбранного сообщения или до него.
  • Больший порог — не больше места. Claude Code ограничивает порог окном модели: выставив больше, вы не получите больше.

Вывод: сжимайте сами, на границе этапа и с одной фразой о том, что дальше, — тогда резюме сохранит нужное, а не случайное.

Проверь себя

Источники

Текст подготовлен с помощью LLM и может содержать неточности.