Видео: «Как управлять долгими сессиями»
Поручить Claude быструю задачу просто. Вы просите, он делает, вы проверяете результат. Но с долгими задачами всё иначе. Рефакторинг в десятке файлов или разработка новой функции может занять несколько часов. И чем чаще приходится поправлять Claude по ходу работы, тем дольше всё тянется.
Хорошая новость: у вас есть много инструментов, которые помогают Claude в таких долгих сессиях. По сути всё сводится к двум привычкам: определить объём работы до того, как Claude начнёт, и направлять его в процессе. Разберём обе.
Сначала определите объём работы в plan mode
Прежде чем Claude напишет хотя бы одну строку, попросите его составить план. В plan mode (режиме планирования) Claude проводит исследование только на чтение. Он читает код, выясняет, что нужно изменить, и передаёт вам план на проверку.
Получив план, действительно прочитайте его, а не пробегите глазами. Чем подробнее план, тем меньше сюрпризов возникнет, когда Claude начнёт его выполнять. Если что-то не так или чего-то не хватает, просто попросите Claude добавить это в нужное место. Доработать план намного быстрее, чем запустить Claude в надежде на лучшее, а потом разгребать последствия.
Направляйте Claude во время работы
Когда Claude уже работает, у вас есть несколько способов удерживать его в нужном направлении. Первый из них: компактизация.
Compact
Compact кратко пересказывает ваш диалог, использует этот пересказ как новый контекст и удаляет старые сообщения. Так освобождается контекстное окно, и Claude может продолжать. Риск в том, что при пересказе потеряется что-то важное и Claude собьётся с курса.
Поэтому не запускайте /compact просто так. Добавьте после команды указания, как Claude следует составить пересказ. Например, если отладку вы закончили давно, а сейчас вас интересуют только некоторые изменения в API, так и напишите:
/compact Focus on the --version flag implementation
Всё, что вы пишете после команды, определяет, что останется в пересказе. Это ваш руль для управления контекстом.
Rewind
Если Claude пошёл по неверному пути, не нужно выводить его обратно новыми запросами. Rewind (откат) возвращает вас к последней контрольной точке. Каждый ваш запрос создаёт контрольную точку, к которой можно вернуться. Чтобы открыть меню, дважды нажмите Escape в пустой строке ввода.
В меню отката есть несколько вариантов:
- Restore code and conversation: откатить и код, и диалог одновременно.
- Restore conversation: откатить только переписку.
- Restore code: откатить только файлы.
- Summarize from here: кратко пересказать всё, что было после контрольной точки. Отлично подходит, если вы отвлеклись на побочный разговор и хотите просто освободить место.
- Summarize up to here: кратко пересказать всё, что было до контрольной точки. Удобно, когда был долгий этап подготовки, который хочется сжать, а части с реализацией нужно сохранить полностью.
Дайте Claude работать самостоятельнее
Всё сказанное выше предполагает, что вы активно участвуете: наблюдаете и поправляете. Если нужно больше автономности, есть goal и loop.
Goal
Goal задаёт условие завершения. Вы описываете, как выглядит результат «готово», и Claude продолжает работать ход за ходом, пока быстрый оценщик не подтвердит, что условия выполнены. Он не остановится в первый же момент, когда ему покажется, что работа закончена.
Например:
/goal all tests in src/billing pass, and the type checker reports zero errors
Чтобы отменить цель, выполните /goal clear. Важное ограничение: оценщик читает только стенограмму сессии. Поэтому ваше условие должно проверяться по тому выводу, который Claude действительно выдаёт, например по результатам запуска тестов.
Loop
Loop запускает запрос с определённым интервалом между ходами: фиксированным или подбираемым самим Claude. Используйте его, чтобы опрашивать что-то внешнее, например прогон CI или деплой, и реагировать, когда состояние меняется.
Чтобы остановить loop, просто нажмите Escape.
Параллельная работа в worktrees
Метафора руля до сих пор подразумевала один руль в одной машине. Но когда над одной кодовой базой работают несколько агентов, два руля в одной машине вам не нужны. Это небезопасно. Две сессии Claude, которые борются за одни и те же файлы, приводят к конфликтам.
Здесь помогают worktrees (рабочие деревья git). Вместо того чтобы сессии мешали друг другу, каждая получает собственное независимое дерево файлов.
Поскольку у каждого агента своё дерево, они не могут затереть изменения друг друга. Когда сессия завершается, чистый worktree удаляется автоматически.
Есть один полезный файл, о котором стоит знать. Файл .worktreeinclude в корне репозитория перечисляет игнорируемые git файлы, которые нужно копировать в каждый worktree. Это удобно, например, для файла с переменными окружения или локального конфига, которые нужны в каждом worktree, но которые вы не хотите добавлять в систему контроля версий.
Подведём итог
Работа с долгими сессиями Claude Code сводится к нескольким привычкам:
- Сначала определите объём работы, потом направляйте.
- Управляйте компактизацией, чтобы в пересказе осталось важное.
- Используйте меню отката, чтобы вернуть Claude на курс, когда он отклоняется.
- Задавайте goal, когда вам проще описать результат «готово», чем шаги к нему.
- Выполняйте параллельную работу в worktrees.
Следуйте этим привычкам, и вы сможете доверить Claude долгий прогон, не контролируя каждый его шаг.