Управление контекстом в Claude Code
Актуально на апрель 2026.
Главный принцип
Контекстное окно — твой самый важный ресурс.
Самый быстрый способ сделать Claude Code хуже это продолжать пихать всё в одну сессию и надеяться, что качество не просядет. В контекст уходит всё: каждое сообщение, каждый прочитанный файл, каждый результат команды, каждый ответ Claude. Когда окно заполняется, качество обычно начинает падать раньше, чем ты это замечаешь.
Размер контекста зависит от модели. У некоторых моделей есть расширенный контекст (включая 1M варианты), но единственное число которое имеет смысл: то что в твоей сессии. Проверяй через /context.
Что загружается автоматически при старте
Ещё до первого сообщения часть окна уже занята:
| Что |
|---|
| System prompt + built-in tools |
Твой CLAUDE.md и импорты |
| Auto memory (если включен) |
| Метаданные списка skills |
| Tool definitions MCP серверов (если включены) |
Вот почему две сессии с одинаковым промптом могут вести себя по-разному. Разные MCP серверы, разные memory файлы, разные импорты. Если нужен реальный breakdown, запускай /context. Если нужно понять какие memory файлы подхватились, запускай /memory.
Мониторинг
Когда Claude начинает ощущаться “каким-то не таким”, я почти всегда смотрю именно сюда:
/context # разбивка по категориям: что сколько занимает
/memory # какие CLAUDE.md и auto memory файлы загружены
Строка статуса в нижней части показывает % заполнения в реальном времени.
Команды управления контекстом
/clear
Полный сброс. Начинаешь с нуля. CLAUDE.md перезагружается, история разговора исчезает.
Когда: переключаешься на другую задачу, накопилось много нерелевантного контекста.
/compact [инструкция]
Claude суммаризирует разговор, заменяет историю кратким резюме. Детали можно указать:
/compact focus on the authentication changes we made
/compact keep the list of modified files and test commands
Когда: контекст заполняется но задача не закончена.
/btw вопрос
Быстрый side question без добавления в основной разговор.
/btw what type does this function return?
/btw is there a built-in for this in Python?
Когда: нужно быстро уточнить деталь и не засорять основной тред.
/rewind (или двойной Esc)
Открывает меню восстановления к предыдущему чекпоинту. Можно восстановить: разговор, код, или оба.
Когда: Claude пошёл не туда, хочешь откатиться и попробовать иначе.
Autocompact
Auto-compaction это страховка, а не основная стратегия.
Срабатывает автоматически, когда контекст подходит к заполнению.
Если хочешь, чтобы это происходило раньше, в Claude Code задокументирована такая env var:
// ~/.claude/settings.json
{ "env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75" } }
Она задаёт порог как процент доступного контекста. Поведение по умолчанию примерно 95%. Чем ниже значение, тем раньше происходит compaction. Это применяется и к основному разговору, и к subagents.
Если ты работаешь на extended-context модели и хочешь считать compaction от меньшего эффективного окна, в Claude Code также задокументирована CLAUDE_CODE_AUTO_COMPACT_WINDOW.
Что переживает /compact: Claude заново перечитывает CLAUDE.md с диска, но ad-hoc инструкции, которые существовали только в разговоре, могут потеряться. Если что-то важно, перенеси это в CLAUDE.md.
Что жрёт контекст больше всего
1. MCP tool definitions
Каждый подключённый MCP сервер добавляет descriptions всех своих tools при старте.
- 1 tool ≈ 550-1400 токенов
- MCP сервер с десятками tools → десятки тысяч токенов сразу
Митигация: подключай только нужные серверы, остальные отключай через /mcp.
2. Чтение больших файлов
Каждый файл который Claude читает — полностью в контексте.
Митигация: используй subagents для исследования и указывай конкретный файл, а не что-то вроде “посмотри как у нас устроен auth”.
3. Длинные разговоры
Накопленная история сообщений.
Митигация: /clear между задачами, /compact внутри задачи.
Лучшие практики
Большинство проблем с контекстом на самом деле оказываются проблемами воркфлоу.
Давай Claude способ проверить результат
Это самое важное. Claude работает значительно лучше когда может сам проверить работу:
# Плохо
"implement email validation"
# Хорошо
"write validateEmail function. test cases: user@example.com → true,
invalid → false, user@.com → false. run tests after implementing."
Без критериев проверки Claude может сделать что-то внешне правильное, но не работающее.
Explore → Plan → Code → Commit
Разделяй исследование и реализацию. Сессия, которая много читает, обычно не та же самая сессия, которой стоит доверять финальное изменение.
- Plan mode — Claude читает файлы, строит план, ничего не меняет
- Одобряешь план
- Normal mode — реализует по плану
- Коммит
# Включить plan mode при запуске
claude --permission-mode plan
# или Shift+Tab внутри сессии
Конкретные промпты экономят контекст
Чем конкретнее промпт — тем меньше итераций и меньше контекста тратится:
# Плохо — вызывает много уточняющих вопросов
"add a calendar widget"
# Хорошо — всё понятно сразу
"look at HotDogWidget.php to understand widget patterns.
implement a calendar widget in the same style with month
selection and year pagination. no new libraries."
Субагенты для исследования
Исследование кодовой базы читает много файлов — всё это засоряет основной контекст:
# Плохо — Claude сам читает всё в основном контексте
"investigate how our auth system handles token refresh"
# Хорошо — subagent работает в своём контексте
"use a subagent to investigate how our auth system handles
token refresh and whether we have OAuth utilities to reuse"
Subagent возвращает краткое резюме — основной контекст остаётся чистым.
/clear между несвязанными задачами
# Закончил с auth → начинаешь работу с UI
/clear
# Теперь чистый контекст без остатков от auth задачи
После двух неудачных поправок — сбрасывай и начинай заново
Если поправлял Claude дважды и он всё равно делает неправильно — контекст загрязнён неудачными подходами. /clear и пиши лучший начальный промпт с тем что узнал.
Используй @ для референса файлов
@src/api/auth.ts посмотри как работает этот файл
Вместо того чтобы описывать где что находится — дай прямую ссылку.
Pipe данных напрямую
cat error.log | claude -p "что здесь происходит?"
gh pr diff | claude -p "summarize this PR"
Workflow для разных размеров задач
Это самая простая ментальная модель, которую я знаю:
Маленькая задача (typo, rename, quick fix)
→ Прямо пиши что нужно, без planning
→ Claude делает
→ Проверяешь
Средняя задача (новый endpoint, feature)
→ Plan mode: "прочитай src/api/ и спланируй как добавить X"
→ Одобряешь план
→ Normal mode: "реализуй"
→ Запускаешь тесты
→ Commit
Большая задача (рефакторинг, migration)
→ Отдельная сессия для исследования с subagents
→ Пишешь spec в файл
→ Новая чистая сессия для реализации
→ Worktrees для параллельных частей
Антипаттерны
“Кухонная раковина” сессия — начал с одного, потом спросил несвязанное, потом вернулся. Контекст полон нерелевантного.
→ Фикс: /clear между несвязанными задачами.
Бесконечные поправки — Claude делает неправильно, поправляешь, всё равно неправильно. Контекст загрязнён неудачными подходами.
→ Фикс: после двух поправок → /clear и лучший промпт.
Бесконечное исследование — попросил “исследуй X” без границ, Claude читает сотни файлов. → Фикс: сужай скоуп или используй subagents.
Доверяй но не проверяй — Claude сделал что-то правдоподобное, ты отправил в прод. → Фикс: всегда давай Claude способ проверить (тесты, скриншоты, скрипты).
Если сессия начинает ощущаться мутной, скорее всего она уже мутная. Сбрасывай раньше, чем подсказывает интуиция.
Чекпоинты и resume
Claude автоматически создаёт чекпоинты перед каждым изменением. Это не замена git, но позволяет откатиться:
Esc + Esc # или /rewind — открыть меню чекпоинтов
Сессии сохраняются локально:
claude --continue # продолжить последнюю сессию в этой директории
claude --resume # выбрать из последних сессий
claude --resume auth-refactor
/rename # дать сессии имя ("oauth-migration")
Параллельные сессии для масштабирования
Когда нужно больше:
# Несколько worktrees — несколько независимых Claude
git worktree add ../proj-auth feature/auth
git worktree add ../proj-ui feature/ui
cd ../proj-auth && claude &
cd ../proj-ui && claude &
Writer/Reviewer pattern:
- Сессия A: реализует feature
- Сессия B: ревьюит с чистым контекстом (не предвзята к коду который только что написала)
Fan-out для batch операций:
for file in $(cat files.txt); do
claude -p "migrate $file from React to Vue" \
--allowedTools "Edit" "Bash(git commit:*)"
done
Быстрая шпаргалка команд
| Команда | Когда |
|---|---|
/context | Посмотреть что сколько занимает |
/clear | Новая задача или загрязнённый контекст |
/compact | Задача продолжается, нужно освободить место |
/compact focus on X | Компакция с сохранением конкретных деталей |
/btw вопрос | Быстрый side question вне основного треда |
/rewind или Esc+Esc | Откат к предыдущему состоянию |
Esc | Остановить Claude на ходу |
/mcp | Отключить неиспользуемые MCP серверы |
--permission-mode plan | Режим только чтения перед реализацией |
claude --continue | Продолжить прошлую сессию |