Как правильно начинать новую сессию в Claude Code? Гайд и обучение Claude Code
В последних разговорах с пользователями Claude Code постоянно всплывает одна направление: контекстное окно в 1М токенов — палка о двух концах.
Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper
С одной стороны, Claude Code дольше функционирует автономно и надёжнее справляется со сложными задачами. С другой — если не следить за сессиями, контекст оперативно засоряется.
Управление сессиями сейчас важнее, чем когда-либо, и вопросов вокруг него много. Держать одну или две долгосрочные сессии в терминале? Начинать новую с каждым промптом? Когда применять compact, rewind или subagents? Что приводит к плохой компактизации или слабый сессии?
Всё это неожиданно сильно влияет на опыт работы с Claude Code, и практически всё сводится к управлению контекстным окном.
Контекст, компактизация и context rot
Контекстное окно — это всё, что модель «видит» в нюанс генерации следующего ответа: системный промпт, история диалога, каждый вызов инструментов и его результат, каждый прочитанный файл. В Claude Code контекстное окно составляет один миллион токенов.
Однако по мере заполнения контекста качество работы модели снижается. Это явление называют context rot: внимание модели распределяется по всё большему числу токенов, и старый, нерелевантный контент начинает мешать выполнению текущей задачи.
Контекстное окно — это жёсткое ограничение. Когда вы приближаетесь к его пределу, задача автоматически сворачивается в краткое описание, и модель продолжает работу в новом контекстном окне. Этот процесс называется компактизацией (compaction). Поднять его реально и вручную.
Каждый этап как точка ветвления
Допустим, вы попросили Claude что-то реализовать, и задача выполнена. В контексте сейчас есть вызовы инструментов, их результаты и ваши инструкции. У вас есть пара вариантов того, что выполнять дальше:
- Продолжить — отправить ещё одно сообщение в той же сессии
- /rewind (Esc Esc) — вернуться к любому предыдущему сообщению и начать с него заново
- /clear — начать новую сессию, как правило с кратким описанием того, что вы узнали
- Compact — свернуть историю сессии в краткое резюме и продолжить поверх него
- Subagents — делегировать следующий блок работы агенту с собственным чистым контекстом и забрать только результат
Самый естественный вариант — элементарно продолжить. Остальные четыре требуются для управления контекстом.
Когда начинать новую сессию
Когда оставлять долгосрочную сессию, а когда начинать новую? Общее правило: свежая задача — свежая сессия.
Контекстное окно в 1М токенов позволяет надёжнее выполнять длинные задачи — допустим, с нуля строить full-stack приложение. Но context rot при этом никуда не исчезает.
Бывают ситуации со связанными задачами, где часть контекста всё ещё актуальна. Например, написание документации к только что реализованной фиче. Допустимо начать новую сессию, но тогда Claude придётся заново читать файлы реализации — это медленнее и дороже.
Rewind вместо коррекции
В Claude Code двойное нажатие Esc (или команда /rewind) позволяет вернуться к любому предыдущему сообщению и заново сформулировать запрос с этой точки. Все сообщения после неё удаляются из контекста.
Rewind нередко предпочтительнее, чем попытка починить сбой в продолжении. Допустим: Claude прочитал пять файлов, попробовал подход — и он не сработал. Первый инстинкт — накидать «это не функционирует, попробуй X вместо этого». Но предпочтительнее перемотать назад к моменту тут же после чтения файлов и переформулировать запрос с учётом того, что вы узнали: «Не задействуй подход A — модуль foo его не поддерживает. Переходи тут же к B».
Вдобавок реально попросить Claude «подвести итоги с этого места» — /rewind создаст сообщение-передышку, своего рода записку от версии Claude, которая уже попробовала что-то и убедилась, что это не пашет.
Compact против чистой сессии
Когда сессия становится слишком длинной, от лишнего контекста допустимо избавиться двумя способами: /compact или /clear (и начать с чистого листа). Выглядит похоже, функционирует по-разному.
Compact просит модель свернуть историю разговора в резюме и заменяет им всю историю. Это потеря части данных, зато реализовывать ничего особо не требуется — Claude сам решает, что важно. Реально задать направление через инструкции: /compact focus on the auth refactor, drop the test debugging.
При /clear то, что критично, записываете вы сами: «мы рефакторим middleware авторизации, ограничение вот такое, важные файлы A и B, способ Y уже отброшен» — и начинаете с нуля. Больше усилий, но контекст именно такой, какой необходим вам.
Что приводит к слабый автокомпактизации?
Если вы запускаете масса долгих сессий, наверняка замечали случаи, когда компактизация оказывалась неудачной. Чаще всего это происходит, когда модель не может предсказать направление дальнейшей работы.
Иллюстрация: автокомпактизация срабатывает после долгой отладки и сворачивает историю расследования. Следующий ваш запрос — «отныне исправь то предупреждение, которое мы видели в bar.ts». Но поскольку сессия была сосредоточена на отладке, это предупреждение могло выпасть из резюме.
Есть дополнительная сложность: из-за context rot модель функционирует хуже всего именно в момент компактизации. С контекстом в один миллион токенов у вас больше времени на то, чтобы вызвать /compact вручную и описать, чем собираетесь заниматься дальше.
Subagents и чистые контекстные окна
Subagents годно работают, когда заранее известно, что блок работы породит куча промежуточного вывода, который далее не понадобится.
Когда Claude запускает subagent через утилита Agent, тот получает собственное чистое контекстное окно. Он выполняет задачу и возвращает родителю только итоговый результат.
Тест, который используют в Anthropic: понадобится ли мне этот вывод инструментов в будущем, или только результат самой задачи?
Claude Code запускает subagents автоматически, но допустимо указывать это явно. К примеру:
- «Запусти subagent, чтобы убедиться результат этой работы по следующей спецификации»
- «Запусти subagent, чтобы он прочитал эту кодовую базу и объяснил, как там реализован auth flow, — потом реализуй то же самое у нас»
- «Запусти subagent, чтобы накидал документацию по этой фиче на основе моих git-изменений»
Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper