Управление длинной сессией
Если вы уже пользуетесь Claude Code для отдельных задач («поправь тест», «объясни этот модуль»), вы знаете, что короткие запросы работают хорошо. Проблемы начинаются, когда задача длинная: миграция двадцати компонентов, переезд на новую версию фреймворка, рефакторинг слоя данных. Через час сессия начинает «забывать» указания, править не те файлы и повторять ошибки. В этом уроке разберём, почему так происходит, и научимся управлять сессией: делить работу, планировать до кода, прерывать и перенаправлять, откатываться.
Почему длинная сессия деградирует
У модели есть контекстное окно — вся история разговора: ваши сообщения, каждый прочитанный файл, вывод каждой команды. Одна отладочная сессия легко съедает десятки тысяч токенов. Чем полнее окно, тем хуже модель следует ранним инструкциям и тем чаще ошибается. Это главное ограничение, вокруг которого строятся все приёмы ниже.
Claude Code сам сжимает историю, когда место заканчивается (это называется компакцией), но автоматическое сжатие не знает, что для вас важно. Поэтому управлять контекстом лучше самому, а не ждать, пока инструмент сделает это за вас.
Декомпозиция: одна сессия — одна задача
Самая частая ошибка — «сессия-помойка»: начали с миграции компонентов, по дороге спросили про конфиг CI, вернулись к миграции, попутно поправили опечатку в README. Контекст забит нерелевантным, и качество падает.
Правило простое: между несвязанными задачами выполняйте /clear. Это сбрасывает контекст полностью. Если задача большая, разбейте её на этапы, каждый из которых укладывается в одну сессию с чётким результатом: «перевести компоненты формы на новый дизайн-систему», потом отдельно «перевести таблицы».
Для исследования кода используйте субагентов: «используй субагентов, чтобы выяснить, как у нас устроена авторизация и есть ли готовые утилиты для OAuth». Субагент читает десятки файлов в своём отдельном контексте и возвращает в основную сессию только выжимку. Ваше окно остаётся чистым для реализации.
Если вопрос не должен попадать в историю вовсе, есть /btw: ответ на него не сохраняется в контексте.
Сначала план, потом код
Второй по частоте провал — модель сразу пишет код и решает не ту задачу. Для этого есть режим плана. В нём Claude читает файлы и выполняет только команды для исследования, но не редактирует исходники, пока вы не утвердите план.
Войти в режим плана можно тремя способами: нажать Shift+Tab, пока в строке статуса не появится plan mode on; запустить сессию командой claude --permission-mode plan; или начать один конкретный запрос с /plan.
Рабочий цикл из документации выглядит так:
- Исследование. «Прочитай
src/formsи разберись, как компоненты получают тему. Посмотри, где ещё используются старые токены цветов». - План. «Хочу перевести формы на новую дизайн-систему. Какие файлы затронуты? Составь план». Нажмите
Ctrl+G, чтобы открыть план в своём редакторе и поправить руками до того, как Claude приступит. - Реализация. Утвердите план (или выйдите из режима через
Shift+Tab) и дайте команду: «реализуй план, напиши тесты для новых компонентов, прогони тесты и исправь падения». - Коммит. «Закоммить с осмысленным сообщением и открой PR».
Когда план не нужен: если диф можно описать одним предложением («добавь лог в обработчик», «переименуй переменную»), планирование только замедлит. План нужен, когда вы не уверены в подходе, когда меняется много файлов или когда код вам незнаком.
Когда включать автопринятие
Режим acceptEdits (следующий за обычным в цикле Shift+Tab) автоматически принимает правки файлов и простые файловые команды вроде mkdir и mv, но по-прежнему спрашивает про остальные shell-команды. Это удобный режим для середины работы: план утверждён, вы смотрите на дифы по ходу, и каждое подтверждение «да, редактируй файл» только мешает.
Полный набор режимов и правила, которые их дополняют, разберём в уроке «Режимы прав». Здесь важно одно: режим — это ручка, которую вы крутите по ходу сессии, а не настройка «раз и навсегда». Исследование — план, реализация — автопринятие, опасный шаг вроде миграции базы — обратно в обычный режим.
Прерывание и перенаправление
Лучшие результаты дают короткие циклы обратной связи. Как только видите, что Claude пошёл не туда, — останавливайте, не ждите конца.
Escостанавливает Claude посреди действия. Контекст сохраняется, вы даёте новое направление.- «Отмени это» — Claude сам откатит свои правки.
Escдважды или/rewindоткрывает меню контрольных точек (о нём ниже).
Есть эмпирическое правило из документации: если вы поправили Claude дважды по одному и тому же поводу, а он снова ошибается, контекст уже забит неудачными попытками. Выполните /clear и напишите новый, более точный запрос, в который вложите то, что узнали. Чистая сессия с хорошим промптом почти всегда обгоняет длинную сессию с накопленными поправками.
Контрольные точки и откат
Каждое ваше сообщение создаёт контрольную точку: Claude Code делает снимок файлов перед изменениями. Меню /rewind показывает список ваших запросов, и для выбранной точки можно:
- восстановить и код, и разговор;
- восстановить только разговор (код остаётся текущим);
- восстановить только код (разговор остаётся);
- сжать историю от этой точки или до этой точки — это прицельная компакция, когда нужно освободить место, но не потерять начальные инструкции.
Это делает эксперименты дешёвыми: «попробуй перевести этот компонент на хуки», и если результат не нравится — откат за секунду. Контрольные точки сохраняются вместе с сессией, так что после claude --continue откат по-прежнему доступен.
Два ограничения, которые нужно помнить. Во-первых, отслеживаются только правки через инструменты редактирования Claude; файлы, изменённые командами вроде rm или mv, а также правки фоновых субагентов откатить нельзя. Во-вторых, это не замена git: для постоянной истории коммитьте как обычно.
Управление компакцией
Когда Claude Code сжимает историю сам, он старается сохранить код, состояние файлов и ключевые решения. Помочь ему можно двумя способами.
Первый — /compact с инструкцией: /compact Сохрани список изменённых файлов и команды тестов. Второй — записать правило в CLAUDE.md: «При сжатии всегда сохраняй полный список изменённых файлов и команды проверки». Тогда каждая автоматическая компакция будет следовать этому.
Полезно знать: CLAUDE.md в корне проекта переживает компакцию — Claude перечитывает его с диска. А вот указания, данные только в разговоре, могут потеряться. Если инструкция важна на всю сессию, её место в CLAUDE.md, о котором следующий урок.
Проверка как условие остановки
Claude останавливается, когда работа «выглядит готовой». Если у него нет проверки, которую он может запустить, единственный сигнал готовности — его собственное впечатление, и тогда проверяющим циклом становитесь вы. Дайте ему тест, сборку, линтер или скрипт сравнения с эталоном — и цикл замкнётся: сделал, проверил, прочитал результат, исправил.
Для длинных сессий это ключевой момент, поэтому ему посвящены отдельные уроки — «Навыки проверки» и «Доверяй, но проверяй». Сейчас достаточно правила: в запросе всегда указывайте, чем проверить результат, и просите показать вывод команды, а не «всё готово».
Попробуйте сами
10–15 мин на рабочем месте- Возьмите задачу на 30–40 минут из своего проекта (например, перевести три компонента на новый API темы). Запустите
claude --permission-mode plan, попросите исследовать код и составить план. Откройте план черезCtrl+G, поправьте один пункт руками, утвердите и дайте реализовать. - В той же сессии попросите сделать заведомо спорное изменение, посмотрите на результат и откатите его через
/rewindс восстановлением только кода. Убедитесь, что разговор сохранился. - Выполните
/contextи посмотрите, сколько окна уже занято. Сделайте/compactс инструкцией, что сохранить, и сравните.
Коротко
- Контекстное окно — главное ограничение: чем оно полнее, тем хуже модель следует инструкциям.
- Одна сессия — одна задача. Между несвязанными задачами
/clear, для исследования — субагенты. - План до кода, если меняется много файлов или подход неясен; для правки в одну строку план не нужен.
Escостанавливает,/rewindоткатывает код, разговор или оба; дважды поправили одно и то же —/clearи новый промпт.- Режим прав — ручка по ходу сессии: план для исследования, автопринятие для реализации.
- Всегда давайте Claude способ проверить результат и просите показать доказательства, а не «готово».
Видеоверсия
Сценарий озвучки · 482 слова, ≈ 4 мин
Вы уже умеете давать Claude Code короткие задачи. Этот ролик о том, что делать, когда задача длинная: миграция двадцати компонентов, переезд на новую версию фреймворка, большой рефакторинг. Через час такая сессия начинает забывать указания и повторять ошибки. Разберём, почему это происходит и как этим управлять.
Причина одна — контекстное окно. Это вся история разговора: ваши сообщения, каждый прочитанный файл, вывод каждой команды. Чем оно полнее, тем хуже модель следует ранним инструкциям. Claude Code умеет сжимать историю сам, но не знает, что для вас важно. Поэтому контекстом лучше управлять самостоятельно.
Первый приём — декомпозиция. Не смешивайте задачи в одной сессии. Начали миграцию, спросили про конфиг, вернулись к миграции — контекст уже забит лишним. Между несвязанными задачами очищайте сессию командой «клир». Большую задачу делите на этапы с понятным результатом. А исследование кода поручайте субагентам: они читают десятки файлов в отдельном контексте и возвращают вам только выжимку.
Второй приём — план до кода. В режиме плана Claude читает файлы и исследует, но не редактирует, пока вы не утвердите план. Включается он сочетанием шифт-таб или флагом при запуске. Цикл такой: попросите исследовать код, попросите составить план, откройте план в своём редакторе и поправьте руками, утвердите — и только потом дайте реализовать. Но не планируйте всё подряд. Если правку можно описать одним предложением, план только замедлит.
Когда план утверждён и вы смотрите на дифы по ходу, переключитесь в режим автопринятия правок. Он принимает изменения файлов без вопросов, но по-прежнему спрашивает про shell-команды. Режим прав — это ручка, которую вы крутите по ходу сессии, а не настройка навсегда.
Третий приём — прерывание. Как только видите, что Claude пошёл не туда, нажмите эскейп. Контекст сохранится, вы дадите новое направление. Есть хорошее правило: если поправили дважды по одному поводу, а ошибка повторяется, контекст уже испорчен. Очистите сессию и напишите новый запрос, в который вложите то, что узнали. Чистая сессия с хорошим промптом почти всегда обгоняет длинную сессию с накопленными поправками.
Четвёртый приём — контрольные точки. Каждое ваше сообщение создаёт снимок файлов. Команда «ревайнд» или двойной эскейп открывает меню, где можно откатить код, разговор или оба сразу, а ещё — сжать историю от выбранной точки или до неё. Это делает эксперименты дешёвыми: попробовали спорный подход, не понравилось — откат за секунду. Помните только, что отслеживаются правки через инструменты Claude, а не файлы, изменённые shell-командами, и что это не замена гиту.
Пятый приём — управление сжатием. Команде «компакт» можно дать инструкцию: сохрани список изменённых файлов и команды тестов. То же правило можно записать в файл клод-эм-дэ, и тогда каждое автоматическое сжатие будет ему следовать. Кстати, этот файл переживает сжатие — Claude перечитывает его с диска. А указания, данные только в разговоре, могут потеряться.
И последнее, самое важное для длинных сессий. Claude останавливается, когда работа выглядит готовой. Если у него нет проверки, которую он может запустить, единственный сигнал — его собственное впечатление. Дайте ему тест, сборку, линтер — и цикл замкнётся сам: сделал, проверил, исправил. В запросе всегда указывайте, чем проверить результат, и просите показать вывод команды, а не слово «готово». Об этом подробно — в следующих уроках.
