Конспект урока «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
Всё, что написано после команды, определяет, что останется в резюме. Это и есть руль.
Если Клод свернул не туда, не нужно выруливать новыми промптами. Откат вернёт тебя к последней контрольной точке — а точка создаётся на каждом твоём сообщении. Меню открывается двойным 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: каждая сессия получает собственное дерево файлов и физически не может затереть чужие правки. Когда сессия завершается, чистое дерево удаляется само.
Полезно знать про файл .worktreeinclude в корне репозитория: в нём перечисляют
git-ignored файлы, которые нужно скопировать в каждое дерево. Классический случай — файл
с переменными окружения или локальный конфиг, который нужен везде, но в репозиторий не
коммитится.
Этого хватает, чтобы доверять длинному прогону, не стоя над душой на каждом шаге.