Контекстное окно как ресурс
Каждая сессия Claude Code начинается с пустого контекстного окна — ограниченного пространства (обычно 200 000 токенов), в котором живёт вся активная информация: системный промпт, CLAUDE.md, авто-память, результаты инструментов, ваши сообщения и ответы Claude. Когда окно заполняется, начинают происходить неприятные вещи: Claude теряет контекст ранних частей разговора, начинает «забывать» детали, хуже следует инструкциям.
Важно понимать, что контекстное окно — это не резиновый мешок. Это дефицитный ресурс, которым нужно управлять активно.
Что загружается до первого сообщения
Прежде чем вы напечатали хоть слово, в контекст уже загружено несколько тысяч токенов:
Старт сессии (≈7 000–8 000 токенов)
────────────────────────────────────
Системный промпт ~4 200 т (всегда, невидим)
Авто-память (MEMORY.md) ~680 т (первые 200 строк / 25 KB)
Информация об окружении ~280 т (CWD, ОС, git-ветка)
MCP-инструменты (отложенно) ~120 т (только имена, схемы загружаются потом)
Описания skills ~450 т (только один-лайнеры)
~/.claude/CLAUDE.md ~320 т (глобальные настройки)
project CLAUDE.md ~1 800 т (инструкции проекта)И только после этого появляется ваше первое сообщение. Каждый прочитанный файл, каждый вывод команды, каждый ответ Claude — всё это добавляется поверх.
flowchart TD
A["Системный промпт\n~4 200 т"] --> B["Авто-память MEMORY.md\n~680 т"]
B --> C["Окружение (OS, git)\n~280 т"]
C --> D["MCP инструменты (имена)\n~120 т"]
D --> E["Описания skills\n~450 т"]
E --> F["~/.claude/CLAUDE.md\n~320 т"]
F --> G["project CLAUDE.md\n~1 800 т"]
G --> H(["Первое сообщение пользователя"])
H --> I["Чтение файлов\n+1 500–3 000 т / файл"]
I --> J["Вывод команд\n+300–1 500 т"]
J --> K["Ответы Claude\n+500–2 000 т"]
K --> L{"Контекст заполняется?"}
L -- "Нет" --> H
L -- "Авто" --> M["Авто-компакт\n(удаляет старые выводы → сводка)"]
L -- "/compact" --> N["/compact\n(структурированная сводка)"]
L -- "/clear" --> O["/clear\n(чистый лист)"]
M --> H
N --> H
style A fill:#6B6964,color:#fff
style B fill:#E8A45C,color:#fff
style C fill:#6B6964,color:#fff
style D fill:#9B7BC4,color:#fff
style E fill:#D4A843,color:#fff
style F fill:#6A9BCC,color:#fff
style G fill:#6A9BCC,color:#fff
style H fill:#558A42,color:#fff
style I fill:#8A8880,color:#fff
style J fill:#A09E96,color:#fff
style K fill:#D97757,color:#fff
style M fill:#D97757,color:#fff
style N fill:#D97757,color:#fff
style O fill:#4A6E8A,color:#fffКак контекст нарастает в ходе работы
Прочтение файла на 500 строк — это \~1 500–2 000 токенов. Вывод npm test на 200 строк — ещё \~600. После часового сеанса отладки контекст легко занимает 40–60% окна — и это ещё до того, как что-то начнёт теряться.
Самые прожорливые источники:
- Чтение файлов — и Claude читает их целиком, даже если нужна одна функция
- Вывод команд — логи, результаты тестов, diff'ы
- Инструменты хуков — через
additionalContextв PostToolUse - Результаты поиска — grep и glob возвращают все совпадения
Посмотреть, что сейчас занимает место: команда /context прямо в сессии.
/compact: умное сжатие
/compact — главный инструмент для длинных сессий. Команда просит Claude создать структурированную сводку разговора, которая заменяет всю историю в контексте.
Что попадает в сводку:
- Ваши запросы и намерения
- Ключевые технические концепции
- Изменённые файлы и важные фрагменты кода
- Найденные ошибки и способы их исправления
- Незавершённые задачи и текущий прогресс
Что теряется:
- Полный вывод инструментов
- Промежуточные рассуждения Claude
- Точный код из прочитанных файлов (останутся «воспоминания» о нём, но не дословный текст)
После /compact Claude перечитывает CLAUDE.md с диска и реинжектирует его в контекст. Авто-память и системный промпт тоже восстанавливаются автоматически. Единственное исключение — список описаний skills: из него останутся только те навыки, которые вы реально использовали в сессии.
Фокусированный compact. Можно сказать Claude, что именно важно сохранить:
/compact сфокусируйся на изменениях в API аутентификацииЛибо добавить секцию ## Compact Instructions прямо в CLAUDE.md — тогда эти инструкции будут применяться каждый раз при автоматическом компакте.
## Compact Instructions
При компакте всегда сохраняй:
- Точные имена изменённых файлов
- Все TODO, которые упоминались в разговоре
- Текущее состояние тестов (прошли / упали)/clear: чистый лист
/clear полностью сбрасывает контекст — стартует новая сессия с чистого листа. Используется когда:
- Текущая задача завершена, начинается принципиально другая
- Контекст засорился настолько, что
/compactуже не помогает - Вы хотите, чтобы Claude «посмотрел свежим взглядом» без груза предыдущих обсуждений
В отличие от /compact, /clear не создаёт никакой сводки. Разговор не сохраняется в контексте нового — только то, что обычно загружается в начале: CLAUDE.md, авто-память, окружение.
/rewind: шаг назад
Perед каждым редактированием файла Claude делает снимок (checkpoint). Нажатие Esc дважды возвращает сессию к состоянию до последнего изменения: файлы восстанавливаются, контекст откатывается.
Это не git — чекпоинты локальны и живут только в текущей сессии. Они не покрывают действия с удалёнными системами (деплой, запись в БД, отправка запросов к API). Для полноценной отмены таких операций используйте git.
Авто-компакт и «thrashing»
Kогда контекст приближается к пределу, Claude начинает автоматическое уплотнение: сначала удаляет старые результаты инструментов, затем создаёт сводку аналогично /compact. Вы увидите сообщение «Conversation compacted» в терминале.
Проблема возникает, если один файл или вывод команды настолько большой, что контекст заполняется снова сразу после компакта. Claude попробует несколько раз, и если ситуация не меняется — остановится с ошибкой «auto-compaction stopped». Что делать:
# Вариант 1: начать новую сессию и работать с меньшими файлами
claude --continue # продолжить с тем, что сохранилось
# Вариант 2: разбить работу на субагента
# В сессии: «создай субагента, который прочитает файл X и вернёт только нужное»Практики гигиены контекста
Многие проблемы с «потерей нити» решаются не командами, а правильными привычками.
Один запрос — одна задача. Длинные сессии с переключением между несвязанными задачами засоряют контекст быстрее всего. Завершили задачу → /clear, начинаете следующую.
Не читайте всё подряд. Неточный промпт («посмотри на проект и исправь баг») заставляет Claude читать десятки файлов. Точный промпт («баг в src/auth/token.ts, строка \~120») сохраняет несколько тысяч токенов.
Субагент для тяжёлого исследования. Если задача требует прочесть 20 файлов — передайте её субагенту. Он работает в отдельном контексте; обратно вернётся только итоговая сводка, не вся история чтения. Подробнее — в статье \Субагенты и контекстная изоляция\.
Compact перед сложным новым этапом. Если вы закончили исследование и готовитесь к реализации — хороший момент для /compact focus on the plan we just created. Это «очищает доску», сохраняя именно то, что нужно для следующего шага.
CLAUDE.md вместо объяснений в чате. Если вы несколько раз объясняли Claude одно и то же правило (стиль именования, архитектурное ограничение) — значит, этому место в CLAUDE.md. После /compact объяснение из чата исчезнет, а CLAUDE.md перечитается заново.
Nested CLAUDE.md и компакт. Помните: project-root CLAUDE.md восстанавливается после компакта, а CLAUDE.md из поддиректорий — нет. Они загружаются снова только когда Claude следующий раз прочитает файл в той поддиректории. Это значит, что важные инструкции лучше держать в корневом файле, а не глубоко в дереве.
See also
- \CLAUDE.md и система памяти\ — как устроена система инструкций и авто-памяти, которая загружается в контекст
- \Субагенты и контекстная изоляция\ — ключевой инструмент для исследовательских задач, которые опустошают контекст
- \Skills — переносимые навыки\ — как держать процедурные инструкции вне контекста до момента использования
- \Hooks — события жизненного цикла\ — вывод хуков тоже попадает в контекст через additionalContext; важно держать его компактным
- \Настройки и иерархия конфигурации\ —
autoMemoryEnabledи другие настройки, влияющие на то, что загружается в контекст - \Выбор модели и режимы мышления\ — extended thinking потребляет больше токенов; важно учитывать при планировании бюджета контекста