← Claude Code in Action · урок 1 из 9

Урок 1. Как вести длинные сессии

Конспект урока «Steering Long Sessions» из бесплатного курса Anthropic Claude Code in Action. Оригинал урока: https://anthropic.skilljar.com/claude-code-in-action/486901

Это пересказ на русском, а не перевод. Права на курс принадлежат Anthropic.

О чём урок

Короткая задача проблем не создаёт: попросил, проверил результат, разошлись. Проблемы начинаются на длинных задачах — рефакторинг на десяток файлов или новая фича, которые занимают часы. Чем чаще приходится вмешиваться, тем дольше всё тянется.

Весь урок сводится к двум привычкам: очертить работу до старта и корректировать курс по ходу.

Сначала план

Не давай Клоду писать код сразу. Сначала — режим планирования: он работает «только на чтение», изучает код, соображает, что менять, и выдаёт план на утверждение.

Главное — план действительно прочитать, а не пролистать. Чем подробнее план, тем меньше сюрпризов на исполнении. Что-то не так или упущено — скажи, куда это дописать. Поправить план в разы дешевле, чем разгребать последствия неудачного прогона.

Три способа править курс по ходу

/compact — сжать контекст

Сжатие сворачивает диалог в резюме, делает его новым контекстом, а старые сообщения выкидывает. Так освобождается место, чтобы работать дальше. Риск в том, что в резюме может не попасть что-то важное, и Клод уплывёт не туда.

Поэтому не запускай /compact голым. Дописывай после команды, что именно сохранить:

/compact Focus on the --version flag implementation

Всё, что написано после команды, определяет, что останется в резюме. Это и есть руль.

Rewind — откатиться назад

Если Клод свернул не туда, не нужно выруливать новыми промптами. Откат вернёт тебя к последней контрольной точке — а точка создаётся на каждом твоём сообщении. Меню открывается двойным Esc на пустом промпте.

В меню несколько вариантов:

Вариант Что делает
Restore code and conversation откатить и файлы, и диалог
Restore conversation откатить только диалог
Restore code откатить только файлы
Summarize from here сжать всё, что после точки — удобно, если был отвлечённый разговор
Summarize up to here сжать всё, что до точки — удобно, если была долгая подготовка, а саму реализацию хочется сохранить целиком

Когда хочется больше автономности

Всё вышеописанное предполагает, что ты сидишь рядом и правишь. Если хочется отпустить вожжи — есть два инструмента.

/goal — работать до достижения условия

Ты описываешь, как выглядит «готово», и Клод продолжает работать, пока быстрый проверяющий не подтвердит, что условия выполнены. Он не остановится просто потому, что ему показалось, будто всё сделано.

/goal all tests in src/billing pass, and the type checker reports zero errors

Отменить — /goal clear. Важное ограничение: проверяющий видит только стенограмму сессии. Значит, условие должно проверяться по тому, что реально выводится в вывод — например, по результатам прогона тестов.

/loop — повторять с интервалом

Запускает промпт по кругу между ходами, с фиксированным интервалом или в своём темпе. Годится, чтобы дёргать что-то внешнее — прогон CI, деплой — и реагировать на изменение состояния. Останавливается по Esc.

Параллельная работа: worktrees

Пока речь шла об одной машине с одним рулём. Но если ты запускаешь несколько агентов на одной кодовой базе, два руля в одной машине — плохая идея: сессии подерутся за одни и те же файлы.

Для этого есть worktrees: каждая сессия получает собственное дерево файлов и физически не может затереть чужие правки. Когда сессия завершается, чистое дерево удаляется само.

Полезно знать про файл .worktreeinclude в корне репозитория: в нём перечисляют git-ignored файлы, которые нужно скопировать в каждое дерево. Классический случай — файл с переменными окружения или локальный конфиг, который нужен везде, но в репозиторий не коммитится.

Коротко

Этого хватает, чтобы доверять длинному прогону, не стоя над душой на каждом шаге.