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 ограничивает порог окном модели: выставив больше, вы не получите больше.
Вывод: сжимайте сами, на границе этапа и с одной фразой о том, что дальше, — тогда резюме сохранит нужное, а не случайное.
Проверь себя
Вы сжали session со 156 тысяч до 28 тысяч токенов и продолжили работу. Что теперь с деталями до сжатия?
CLAUDE.md
и плана, а сами сообщения остаются лишь в пересказе.
Фича готова, впереди QA, контекст почти полон. Что набрать?
/compact
и одно предложение о том, что дальше QA
/compact
без аргументов, а цель объяснить после
/compact
и вставить в инструкцию всю спеку целиком
/clear
и попросить агента заново прочитать код
/clear
выбросит причины решений.
Посреди реализации session сама остановилась и сжалась. Какой вывод сделать?
autoCompactWindow
выше окна модели
Правило из .claude/rules/api.md с paths: во frontmatter после сжатия перестало соблюдаться. Почему?
paths:
работают только в plan mode
paths:
загружаются, когда Claude трогает подходящий файл, и становятся частью истории, а её сжатие пересказывает. Корневой
CLAUDE.md
и правила без
paths:
перечитываются с диска.
Источники
- Anthropic, Explore the context window
- Anthropic, Model configuration
- Anthropic, Commands
- Anthropic, Manage costs effectively
- Anthropic, Best practices for Claude Code
- По мотивам AI Coding Crash Course, AI Hero: «Compaction», «Auto-Compaction»
Текст подготовлен с помощью LLM и может содержать неточности.