В работе с ИИ-агентами вроде Claude Code самый важный ресурс — это не качество промпта, а чистота контекстного окна. Контекст — это активная рабочая память ИИ. Как только окно переполняется, агент начинает «забывать» важные архитектурные решения, путать имена функций, повторно задавать уже решенные вопросы и генерировать неконсистентный код. Это явление в индустрии называют «гнилью контекста» (context rot).
В этом руководстве мы разберем теорию управления контекстом в Claude Code, детально изучим встроенную команду /context, разберемся в механизмах компактации (сжатия) и освоим продвинутые паттерны context engineering, которые сэкономят ваши токены и защитят от глупых ошибок модели.
Анатомия контекстного окна Claude Code
По умолчанию контекстное окно Claude Code составляет 200 000 токенов (примерно 500 страниц текста). Для сложных многочасовых сессий на моделях Sonnet 4.6 и Opus 4.8 доступна опция расширения до 1 миллиона токенов (с помощью псевдонимов sonnet[1m] и opus[1m]).
Однако больший размер окна не означает его стопроцентную эффективность. С ростом объема данных способность модели извлекать точную информацию падает. Кроме того, контекст забивается гораздо быстрее, чем кажется.
Что именно наполняет контекст?
Контекст наполняется на двух этапах сессии:
- При запуске сессии (Startup overhead):
- Системный промпт Claude Code и стиль вывода (~8-10k токенов).
- Файл инструкций
CLAUDE.md. - Автоматическая память проекта (Auto-memory из директории
~/.claude/memory/, до 200 строк). - Описания активных MCP-серверов и зарегистрированных навыков (Skills). Один сложный MCP-инструмент может занять до 20% стандартного лимита еще до первого вопроса пользователя!
- В процессе работы (Active session):
- Вся история вашего диалога (сообщения пользователя и ответы Claude).
- Результаты чтения файлов (модель считывает код целиком, что легко может расходовать по 10-15k токенов за один раз).
- Логи выполнения команд Bash, запуски тестов, дампы ошибок.
- Пошаговая история вызовов инструментов (tool call history).
Оператор /context и визуализация памяти
Самый простой способ держать руку на пульсе — использовать встроенную команду /context. Она выводит в терминал детальный текстовый отчет:
- Текущий процент заполнения окна.
- Категории, которые «съедают» больше всего токенов (файлы, история диалога, системный промпт, инструменты).
- Рекомендации по оптимизации текущей сессии.
Для детального анализа вы можете использовать интерактивную шкалу времени — Context Window Visualization. На этом интерактивном таймлайне каждый шаг, вызов инструмента и прочитанный файл отображаются в виде блоков, размер которых пропорционален затраченным токенам. Это позволяет мгновенно обнаружить «тяжелые» операции — например, гигантские PDF-документы или бесконечные логи тестов.
Полезно знать: Вы можете отслеживать размер контекста в реальном времени, настроив статусную строку Claude Code. Для этого используйте команду /statusline, чтобы добавить процент использования контекста прямо в интерфейс ввода.
Как работает компактация (Сжатие контекста)
Когда контекст заполняется (обычно при достижении ~83.5% от лимита, где ~33k токенов резервируются как буфер), Claude Code запускает авто-компактацию (auto-compact).
Этот процесс работает гораздо умнее, чем простое обрезание старых сообщений. Claude делает паузу, открывает невидимый черновик (scratchpad), анализирует, какие архитектурные проблемы решены, а какие задачи еще открыты, и формирует структурированную выжимку сессии из нескольких разделов. Эта выжимка полностью заменяет всю предыдущую историю диалога.
Что выживает после компактации, а что теряется?
Понимание того, как ИИ «перепаковывает» память, критически важно для эффективной работы:
| Что гарантированно сохраняется ✅ | Что безвозвратно теряется ❌ |
|---|---|
Инструкции из корневого CLAUDE.md (они всегда перечитываются с диска и заново внедряются) |
Сырая история сообщений и ваши промежуточные рассуждения |
| Глобальная авто-память (Auto-memory) | Ранее прочитанное содержимое файлов (модели придется перечитывать их заново при необходимости) |
| Общий статус выполнения текущей задачи | Детальные логи выполнения консольных утилит и тестов |
| Последние результаты работы инструментов | Инструкции, которые вы давали устно в середине диалога (без сохранения в CLAUDE.md) |
Важный нюанс с вложенными правилами: Файлы правил, находящиеся во вложенных папках (например, .claude/rules/), не перечитываются автоматически после сжатия. Они загрузятся заново только тогда, когда Claude снова обратится к файлу в этой поддиректории.
Управляемое сжатие через команду /compact
Вы можете не ждать автоматического триггера, а выполнить сжатие вручную, направив фокус модели в нужную сторону:
/compact Сфокусируйся на рефакторинге модуля авторизации и текущих ошибках в тестах
Такой промпт заставит ИИ при генерации саммари уделить максимум внимания именно указанной подсистеме, отбросив весь остальной второстепенный шум сессии.
Лайфхаки по экономии токенов и защите контекста
1. Гигиена CLAUDE.md: модульность вместо гигантизма
Поскольку CLAUDE.md отправляется в контекст при каждом цикле взаимодействия (turn), его раздувание экспоненциально увеличивает расходы. Держите этот файл компактным — до 200 строк.
Для специфических правил используйте модульную структуру в директории .claude/rules/. Настройте правила так, чтобы они подгружались только при работе с конкретными типами файлов:
// Пример структуры папки .claude/rules/react.md
---
globs: ["src/**/*.tsx", "src/**/*.ts"]
---
- Используйте только функциональные компоненты и хуки.
- Не используйте сторонние CSS-библиотеки без согласования.
2. Изоляция контекста с помощью субгенов (Subagents)
Если вам нужно запустить «шумную» операцию — например, изучить стороннюю библиотеку, перелопатить гору логов или провести глубокий ресерч архитектуры, — не делайте это в основном окне. Используйте команду /agents (или позвольте Claude запустить субген самостоятельно).
Субагент развернет задачу в своем изолированном контекстном окне, выполнит грязную работу и вернет в вашу основную сессию только лаконичное финальное решение. Ваша основная сессия останется чистой и дешевой.
3. Паттерн «Handoff» через файлы состояния
Если сессия длится долго, а задача требует ювелирной точности кода, авто-компактация может упустить важные детали. Вместо борьбы с компактацией примените паттерн Handoff (Передача состояния):
- Когда контекст заполнен на 80%, попросите Claude записать текущий статус работы в файл (например, в
task_state.md). - Выполните полную очистку контекста командой
/clear(или/reset). Это обнулит историю и освободит память. - В новой сессии просто укажите Claude прочитать этот файл состояния.
Пример промпта для создания файла состояния перед очисткой:
«Мы завершаем текущую сессию. Запиши в файл task_state.md текущий статус: что уже сделано, какие файлы изменены, какие проблемы остались нерешенными и каков наш следующий конкретный шаг. После этого я очищу контекст».
4. Быстрый откат через Rewind (Esc Esc)
Если модель совершила ложное действие (например, прочитала не ту огромную папку или запустила ошибочный скрипт с выводом терабайта логов), не продолжайте диалог. Нажмите Esc Esc (или введите /rewind). Это мгновенно откатит сессию на один шаг назад, физически удалив весь ошибочный мусор из контекста до того, как он успеет укорениться в памяти ИИ.
Итог
Управление контекстом в Claude Code — это не просто экономия ваших средств на оплату API, это залог предсказуемого и качественного кодинга. Возьмите за правило:
- Регулярно проверять потребление токенов через
/context. - Разгружать сессию, делегируя тяжелые задачи субгенам.
- Держать
CLAUDE.mdлаконичным, вынося частные случаи в scoped rules. - Не бояться очищать сессию через
/clear, перенося важный контекст через файлы задач.

