
Claude Code — Контекстное окно и налог
Есть скрытая стоимость каждой сессии Claude Code которую большинство людей никогда не смотрят напрямую. Не цена подписки, не API rate - токенная стоимость самого разговора. Каждое сообщение включает не только промпт но и весь контекст который Claude накопил с начала сессии: CLAUDE.md файлы, следы вызовов инструментов, содержимое файлов которые Claude читал, предыдущие ответы. Всё это, каждый раз.
Это то что я называю налогом контекстного окна. Платишь его дважды - один раз деньгами, поскольку каждый токен в контексте выставляется как входной токен на каждом ходу, и снова деградацией ответов, амнезией вызванной компакцией, и сессиями которые молча ухудшаются чем дольше работают. Prompt caching смягчает стоимость но не устраняет её. Кэшированные токены всё равно стоят что-то на каждом ходу, и всё новое в контексте выставляется по полной ставке.
Что в контекстном окне
Когда открываешь сессию Claude Code, контекстное окно уже содержит что-то до того как ты напечатал один символ. Системный промпт, определения инструментов для каждого инструмента который может вызвать Claude, и твои CLAUDE.md файлы - всё загружается при запуске.
Запусти /context в любой сессии и увидишь разбивку. На проекте с умеренным CLAUDE.md и несколькими настроенными MCP серверами не необычно начинать сессию с уже потраченными 20,000-30,000 токенов. Это заметный кусок старого 200K окна до того как ты что-то сделал.
Оттуда каждый ход добавляет больше. Claude читает файл - эти токены входят в контекст и остаются там. Claude запускает инструмент и получает подробный вывод - этот вывод входит в контекст. Задаёшь уточняющий вопрос - весь предыдущий разговор снова отправляется вместе с ним. Окно заполняется снизу вверх, и ничего не убирается автоматически пока не сработает компакция у лимита.
Context rot
Чем больше контекста Claude приходится обрабатывать, тем менее надёжно он уделяет внимание любой конкретной его части. Это называется context rot, и это задокументированное явление - не предположение. Собственные бенчмарки Anthropic показывают деградацию recall при росте контекста даже на моделях которые хорошо показывают себя на тестах по long-context retrieval.
На практике, context rot проявляется как: Claude начинает игнорировать инструкции которые были в CLAUDE.md. Или забывает ограничение которое ты упомянул три хода назад. Или производит код нарушающий конвенции которых он следовал раньше в той же сессии.
Контекстное окно 1M токен которое стало generally available в марте 2026 для Opus 4.6 и Sonnet 4.6 значительно подняло потолок. Но более высокий потолок не устраняет rot - он просто откладывает его.
Авто-компакция
Когда контекстное окно приближается к лимиту, Claude Code запускает авто-компакцию. Она суммирует историю разговора, заменяет полную стенограмму этим резюме и продолжает оттуда.
Компакция срабатывает примерно при 85% заполнения окна. Насколько быстро достигаешь этой точки зависит от того что делаешь - сессия полная чтения файлов, большого вывода инструментов и долгого туда-сюда сжигает через неё быстро, тогда как короткая сфокусированная сессия может никогда не приблизиться.
Проблема компакции - что она теряет. Детали вызовов инструментов, конкретное содержимое файлов которые Claude читал раньше, точная формулировка ограничений которые ты установил - это выживает как резюме в лучшем случае.
Можно влиять на то что компакция сохраняет. Команда /compact запускает компакцию вручную и принимает инструкции фокуса:
/compact Focus on code changes, test results, and any constraints I established
Также можно добавить постоянные инструкции компакции прямо в CLAUDE.md:
# Compact instructions
When compacting, preserve: code changes made this session, any error patterns found,
explicit constraints I stated about this codebase.
Но гарантий нет. Компакция потеряна по дизайну. Лучшая стратегия - избежать необходимости в ней.
Что заполняет окно быстрее всего
Вывод инструментов - самый большой драйвер. Claude запускающий тесты на большом наборе может легко получить 50,000+ токенов вывода от одного вызова инструмента.
Определения инструментов MCP серверов добавляют накладные расходы при запуске. Claude Code откладывает загрузку полных определений пока инструмент не используется, но имена и описания присутствуют с самого начала.
CLAUDE.md сам по себе - недооценённая стоимость. CLAUDE.md на 500 строк не бесплатный. Он загружается полностью при старте сессии. Документация рекомендует оставаться до 200 строк - не потому что 201 строка вызывает краш, а потому что за этой точкой соблюдение инструкций измеримо падает.
Extended thinking (дефолтный режим рассуждений на medium effort) генерирует thinking токены внутренне до ответа. Они выставляются как выходные токены но убираются из контекста для последующих ходов - так что они не накапливаются. Но выходные токены всё равно стоят деньги, и переход на low effort для простых задач срезает эту стоимость без влияния на качество вывода.
Практические стратегии
Используй /clear между несвязанными задачами. Это самое эффективное что можно сделать. Когда заканчиваешь отладку одного модуля и переходишь к написанию тестов для другого - всё что Claude читал больше не полезно. Очисти. Используй /rename сначала чтобы старая сессия была находима позже.
Перемести детальные инструкции воркфлоу в скиллы. CLAUDE.md должен описывать проект и конвенции. Пошаговые инструкции для конкретных воркфлоу - как запустить миграцию, как отформатировать PR описание - принадлежат скиллам. Скиллы загружаются по требованию когда Claude их вызывает, не при старте сессии.
Фильтруй до того как Claude читает. Хук который грепает вывод тестов на FAIL и ERROR до возврата Claude может срезать вывод инструмента с 80,000 токенов до 2,000.
Делегируй подробную работу субагентам. Когда Claude нужно исследовать незнакомую часть кодовой базы - порождение субагента держит подробный вывод вне основного разговора. Субагент возвращает резюме; детали остаются в его собственном изолированном контекстном окне.
Используй /cost или строку статуса чтобы быть в курсе. Нельзя управлять тем что не видишь.
Окно 1M меняет расчёты, но не фундаментальные принципы
С тех пор как окно 1M стало GA, я видел людей которые относятся к нему как к причине вообще не думать о контексте. Загружай всё, пусть работает, начинай заново когда срабатывает компакция. Это работает - пока не перестаёт.
Экономика всё ещё реальна для API пользователей. Сессия потребляющая 800K токенов стоит значительно больше чем та что остаётся на 100K. Для subscription пользователей на Max или Pro, токенный бюджет делится со всем остальным что ты делаешь в Claude - сжигать его на stale контекст просто трата.
Проблема внимания также не изменилась. Окно 1M на 70% заполненное содержимым файлов которые Claude уже обработал и выводом инструментов от задач уже завершённых - это не то же самое что свежее окно 200K с чистым контекстом.
Итог
Контекстное окно - не пассивный ресурс который просто ограничивает сколько можно сделать за сессию. Это то что активно формируешь, и что в него кладёшь напрямую влияет на то как хорошо работает Claude Code.
Короткая версия: начинай сессии чистыми, держи CLAUDE.md компактным, фильтруй подробный вывод до того как Claude его видит, и очищай контекст при смене задач. Окно 1M даёт больше места быть небрежным - но разработчики которые получают от Claude Code максимум - те кто не небрежен.

Комментарии