Из чего складывается контекстное окно Claude Code, как читать /context, когда срабатывает компактинг и как настроить CLAUDE.md, правила и автопамять под проект.
Guide DAO
Из чего складывается контекстное окно Claude Code, как читать /context, когда срабатывает компактинг и как настроить CLAUDE.md, правила и автопамять под проект.
Инструкция сверена с документацией Claude Code в октябре 2026 года. Пороги компактинга и лимиты памяти Anthropic меняет часто, поэтому цифры ниже стоит время от времени сверять с документацией.
Модель ничего не помнит между запросами. На каждое сообщение Claude Code заново отправляет ей системный промпт, инструкции проекта и всю историю разговора с прочитанными файлами и выводом команд. Чем плотнее заполнено контекстное окно, тем хуже Claude держит ранние договорённости и тем дороже каждый запрос. Между сеансами переживает только записанное в файлы, то есть CLAUDE.md и автопамять. Основы CLAUDE.md описаны в статье об установке и настройке Claude Code, здесь пойдём глубже.
Из чего складывается контекст
До первого сообщения в окне уже лежат системный промпт с описаниями встроенных тулов, загруженные CLAUDE.md, начало автопамяти, названия тулов MCP-серверов, описания скилов и снимок git status. Дальше копится разговор, и тяжелее всего в нём файлы и вывод команд. В терминале чтение файла занимает строку Read auth.ts, а в контекст уходит всё его содержимое.
Расширения стоят по-разному. CLAUDE.md и правила без привязки к путям едут в каждом запросе. От скила в контексте постоянно лежит только описание, а текст приходит при вызове. MCP-сервер отдаёт названия тулов и свои инструкции, схемы Claude подтягивает по требованию. Субагент работает в отдельном окне и возвращает только итоговый ответ. Хук выполняется вне разговора и ничего не стоит, пока не вернёт в него текст.
Как посмотреть расход
Команда /context рисует окно цветной сеткой с категориями: системный промпт, системные тулы, тулы MCP, ваши субагенты, файлы памяти, скилы и сообщения. Там же Claude Code подсказывает, что делать с тяжёлыми тулами и разросшейся памятью. Список Memory files показывает, какие CLAUDE.md и правила загрузились при старте. Если Claude будто не видит инструкций, начните с этого списка. /context all даёт подробную разбивку, например по каждому тулу MCP.
Чтобы видеть заполненность постоянно, попросите строку состояния: /statusline show model name and context percentage with a progress bar. На подписках /usage ещё и советует, что урезать, например Trim ~/code/api/CLAUDE.md · 49k tokens per request.
Когда срабатывает компактинг
Когда окно подходит к пределу, Claude Code сначала вычищает старые результаты тулов, а если места всё равно мало, заменяет историю структурированной сводкой. Это и есть компактинг. У моделей с родным окном в 1 млн токенов (Fable, Sonnet 5 и новее, Haiku 5.5, Opus 4.7 и новее) он срабатывает примерно на 967 тысячах, у Opus 4.6 и Sonnet 4.6 без расширенного контекста на 200 тысячах. Для повседневной работы 967 тысяч поздновато: окно давно забито старыми файлами, и Claude может начать забывать ранние инструкции. Порог опускает команда /autocompact 500k.
В сводке остаются ваши запросы и цели, просмотренные и изменённые файлы с нужными фрагментами кода, ошибки и их исправления, незаконченные задачи и текущая работа. Пропадают полные выводы тулов и промежуточные рассуждения, могут потеряться и подробные инструкции из начала разговора.
С диска Claude Code заново подкладывает корневой CLAUDE.md, правила без paths, автопамять и план из режима plan. Он перечитывает до пяти последних изменённых файлов из тех, с которыми работал Claude, и возвращает тексты вызванных скилов, до 5000 токенов на скил. Вложенные CLAUDE.md и правила с paths сжимаются вместе с разговором и вернутся, только когда Claude снова прочитает или изменит подходящий файл.
Сводку можно направить: /compact оставь план и дифф, логи тестов не нужны. Постоянные пожелания пишут в CLAUDE.md отдельным разделом:
# Compact instructions
При компактинге сохраняй полный список изменённых файлов и команды запуска тестов.
Компактинг сам по себе крупный запрос: модель читает всё, что сжимает. Пока кэш тёплый, это недорого, а после долгого перерыва дорого, поэтому сжимайте по окончании этапа, не дожидаясь порога посреди работы. На подписке Claude Code ещё и сам сжимает разговор больше 200 тысяч токенов, если тот простоял в терминале около 54 минут. Отключается это настройкой "idleCompaction": false.
Когда лучше начать заново
/clear открывает новый сеанс с пустым контекстом в том же окне и ничего не стоит. Прежний разговор остаётся в /resume, а /clear release-prep даст ему имя. Чистите контекст, когда переходите к несвязанной задаче и когда дважды поправили Claude в одном и том же, а он всё ещё ошибается. Во втором случае окно засорено неудачными попытками, и чистый сеанс с промптом, который учитывает эти ошибки, почти всегда работает лучше. /compact подходит, когда задача та же, а история разрослась. Если вы глубоко в одной сложной проблеме и вся история по делу, контекст лучше не трогать.
Для вопроса на полях есть /btw: Claude ответит по текущему контексту без тулов, и ни вопрос, ни ответ в историю не попадут. Многодневную работу удобно вести в именованных сеансах: сегодня /rename oauth-migration, завтра claude --resume oauth-migration.
Что помнит автопамять
Автопамять включена по умолчанию. Claude сам записывает то, что пригодится в следующих разговорах, и помечает заметку одним из четырёх типов: user для вашей роли, опыта и привычек, feedback для поправок и одобренных подходов, project для текущей работы, сроков и решений, которых не видно в коде, reference для внешних источников вроде трекера задач. То, что выводится из кода или уже есть в CLAUDE.md, Claude не сохраняет. Когда заметка записана, в интерфейсе появляется строка вроде «Saved 2 memories».
Память лежит в ~/.claude/projects/<project>/memory/, одна на все рабочие копии (git worktree) и подпапки репозитория. Индекс MEMORY.md хранит по строке на заметку, подробности лежат в отдельных файлах. В начале разговора загружаются первые 200 строк индекса или первые 25 КБ, смотря что наступит раньше, а остальные файлы Claude читает по надобности.
Фраза «запомни, что для тестов API нужен локальный Redis» отправит факт в автопамять, а «добавь это в CLAUDE.md» в общий файл. /memory показывает файлы памяти, открывает папку автопамяти, включает и выключает её, а в одном проекте её отключает настройка "autoMemoryEnabled": false.
Автопамять живёт только на вашем компьютере, а в субагентов, кроме форков, не загружается. Коллеги её тоже не видят, поэтому полезную договорённость о проекте из памяти переносите в CLAUDE.md.
Как загружаются CLAUDE.md
Claude Code склеивает CLAUDE.md и CLAUDE.local.md из рабочей папки и всех папок выше. Порядок идёт от корня файловой системы к рабочей папке, так что ближний файл Claude читает последним. Раньше всех загружаются файл организации и ваш ~/.claude/CLAUDE.md. Если файлы противоречат друг другу, Claude может выбрать любой вариант.
CLAUDE.md из подпапок подключаются, только когда Claude читает, создаёт или правит файл в этой подпапке, поэтому в Memory files их нет. Блочные HTML-комментарии вида <!-- заметка --> Claude Code вырезает, и пояснения для людей не тратят токены.
В монорепозитории запускайте Claude из папки пакета: загрузятся его CLAUDE.md и файлы из папок выше, а соседние пакеты в контекст не попадут. При запуске из корня чужие файлы отсекает claudeMdExcludes в .claude/settings.local.json:
{
"claudeMdExcludes": [
"**/packages/web/**"
]
}
Импорты и правила в .claude/rules
Строка @путь подставляет в CLAUDE.md другой файл. Путь считается от файла с импортом, а вложенность допускается до четырёх уровней. Места импорты не экономят: подключённый файл грузится вместе с родительским.
Зато импорт выручает при работе в нескольких рабочих копиях, ведь CLAUDE.local.md есть только в той, где вы его создали. Личные заметки для всех копий держите в домашней папке:
В первый раз Claude Code попросит одобрить такой внешний импорт.
Большой CLAUDE.md удобно разложить по темам в .claude/rules/. Правило без поля paths в шапке загружается при старте, а правило с paths подключается, только когда Claude читает, создаёт или правит подходящий файл:
---
paths:
- "src/api/**/*.ts"
---
# Правила для API
- Каждый эндпоинт проверяет входные данные
- Ошибки возвращаем в стандартном формате ответа
Личные правила для всех проектов лежат в ~/.claude/rules/ и загружаются раньше проектных.
Настройка за вечер
1. Откройте новый сеанс и выполните /context. Запишите, сколько занято до первого сообщения и что стоит в Memory files.
2. Пройдитесь по CLAUDE.md с вопросом из документации: ошибётся ли Claude без этой строки? Если нет, удаляйте. Правила для части кода перенесите в .claude/rules/ с paths, многошаговые процедуры в скилы. Для файла в git /doctor предложит вырезать то, что Claude поймёт из кода сам.
3. Добавьте раздел # Compact instructions.
4. В /mcp выключите серверы, которые не нужны в этом проекте, их настройки сохранятся. Консольная утилита вроде gh обходится контексту дешевле MCP-сервера.
5. Включите строку состояния с процентом контекста, откройте /memory и почистите автопамять.
6. Перезапустите сеанс и сравните /context с первым замером.
Приёмы для разработки
Исследование кода отдавайте субагенту. Промпт «с помощью субагентов выясни, как у нас обновляются токены авторизации и есть ли готовые утилиты для OAuth» уносит чтение десятков файлов в отдельное окно. В примере из документации субагент прочитал файлов на 6100 токенов, а вернул ответ на 420. Так же удобно гонять тесты: «запусти тесты в субагенте и верни только упавшие с текстом ошибок». Как настроить своих субагентов, мы разобрали в отдельной статье.
Длинную отладку сворачивайте, как только баг побеждён. Откройте /rewind (или нажмите Esc дважды на пустой строке ввода), выберите первое сообщение отладки и пункт Summarize from here: всё до него останется как было, а прогоны тестов и тупиковые гипотезы сожмутся в сводку.
Большую задачу на несколько дней начинайте в режиме plan. План Claude пишет в файл, и Claude Code возвращает его после каждого компактинга, даже когда детали разговора теряются.
Частые ошибки
Правка корневого или личного CLAUDE.md посреди сеанса не действует сразу. Эти файлы читаются при старте, и до /clear, /compact или перезапуска Claude работает со старой версией.
Правило, которое прозвучало только в чате, после компактинга может пропасть. Всё, что должно жить дольше задачи, записывайте в CLAUDE.md, а правило, которое обязано пережить сжатие, держите без paths.
Длинный CLAUDE.md соблюдается хуже, и Claude Code предупреждает о таком файле при старте и в /status. Вложенный CLAUDE.md или правило с paths сверх лимита, 40 000 символов при окне в 200 тысяч токенов, Claude получит только с начала.
Если огромный файл или вывод команды забивает окно сразу после каждого сжатия, Claude Code через несколько попыток остановится с ошибкой Autocompact is thrashing. Попросите Claude читать такой файл кусками, сожмите контекст с просьбой выбросить большой вывод, отдайте работу субагенту или начните с /clear.
Что дальше
Когда расход под контролем, повторяющиеся процедуры стоит вынести в скилы, а проверки, которые должны срабатывать каждый раз, в хуки. Вести правила в CLAUDE.md и принимать результат работы агента по критериям приёмки учит курс «Основы Claude Code».