#/goal, /loop и рутины
Продвинутый уровень · Факультатив · около 20 минут плюс время запуска · Нужно: Ограничьте автономные запуски · Сверено с Claude Code v2.1.285 (stable) 09.10.2026
Примечание
«Рутины находятся в исследовательском превью. Поведение, лимиты и API могут меняться» (Automate work with routines).
#Цель
К концу этого факультатива вы сможете заставить Claude работать, не подталкивая каждый шаг: к выполнению условия через /goal, с интервалом через /loop и по расписанию в облаке через рутину (routine).
#Что понадобится
- Ваша копия шаблона для практики с Node.js LTS — для разбора примера — и один из ваших репозиториев — для задания «Ваша очередь».
- Для рутины, только шаги 7–9: план Pro, Max, Team или Enterprise и вход через
/login(Availability by subscription plan). Рутинам нужна подписка Claude, так что с API-ключом Console или облачным провайдером эти шаги пропустите (Feature availability). На Team и Enterprise владелец может отключить рутины для всех (Automate work with routines). - Также для рутины: доступ облачных сессий к вашей копии на GitHub через GitHub-приложение Claude или
/web-setup; с приложением на приватной копии оно должно быть установлено (GitHub authentication options). На Team и Enterprise в обоих случаях сначала нужен владелец: коннектор GitHub для входа приложения через браузер или Quick setup для/web-setup(Connect GitHub, Quick setup for Team and Enterprise). - Расход лимита: умеренный. Цель выполняется несколько ходов, каждый запуск цикла снова отправляет весь контекст сессии (Why usage climbs in a long session), а запуск рутины — полноценная облачная сессия, которая расходует ваш план (Usage and limits). Шаги держат каждый из них небольшим: Sonnet, лимит ходов, короткий цикл и рутина, которая запускается один раз. Экономный вариант: пропустите рутину (шаги 7–9).
#Идея
/goal, /loop и рутина — каждый из них запускает следующий прогон Claude без вас (Compare ways to keep a session running, Compare scheduling options):
| Следующий запуск начинается, когда | Останавливается, когда | |
|---|---|---|
/goal |
Ход закончился, и вторая модель — оценщик — считает ваше условие ещё не выполненным | Условие признано выполненным или невыполнимым, ход упёрся в ошибку, которую должны исправить вы, или /goal clear |
/loop |
Прошёл интервал, пока сессия простаивает | Вы его отменили, Claude завершил цикл с самостоятельным темпом или истёк срок |
| Рутина | Наступило расписание, пришёл вызов API или событие GitHub — в облаке | Вы поставили её на паузу или удалили; одноразовая отключается сама |
Оценщик читает только разговор, поэтому ваше условие должно называть проверку, результат которой виден в выводе Claude, например «npm test завершается с кодом 0», говорить, что не должно измениться, и заканчиваться лимитом ходов (Write an effective condition). Цели и циклы сохраняют режим разрешений сессии: в режиме auto они работают без присмотра, а в ручном режиме Claude сначала спрашивает (Set a goal, Compare scheduling options).
Внимание
Рутина выполняется как полноценная облачная сессия, которая не останавливается за одобрением (кроме некоторых действий с артефактами), и действует от вашего имени: её коммиты и пул-реквесты идут от вашего пользователя GitHub (Create a routine). Она может без спроса пользоваться всеми инструментами каждого включённого в неё коннектора, в том числе пишущими, а по умолчанию включены все коннекторы вашего аккаунта claude.ai (Create from the web, Connectors). Уберите коннекторы, которые рутине не нужны, и пока учитесь, ограничивайте её промпт работой только на чтение.
#Разбор примера
Работайте в своей копии для практики, в новой ветке.
- Создайте ветку и папку для журнала, которую git в копии уже игнорирует, затем запустите Claude Code на Sonnet:
git switch -c keep-working
mkdir -p .practice
claude --model sonnet
Windows: вместо строки mkdir используйте New-Item -ItemType Directory -Force .practice.
Строка состояния показывает режим разрешений (Switch permission modes). Если там ⏸ manual mode on, одобряйте каждый вызов инструмента по запросу Claude; если ⏵⏵ auto mode on, ходы цели и запуски цикла идут сами.
2. Задайте цель. Проверка ссылок считает битой ссылку вроде setup.md?plain=1, даже если setup.md существует, потому что отрезает от ссылки только часть после #:
/goal npm test exits 0, a new test in test/links.test.js shows that a link such as setup.md?plain=1 to a file that exists is not reported as broken, no existing test changes, and the fix is committed; or stop after 8 turns
Claude сразу начинает, а ◎ /goal active показывает, сколько уже длится цель. После каждого хода в расшифровке появляется вердикт оценщика; нажмите Ctrl+O, чтобы увидеть его обоснование (Set a goal).
3. Когда оценщик признаёт условие выполненным, Claude Code снимает цель и записывает в расшифровку отметку о достижении (How evaluation works). Выполните /goal: команда покажет достигнутое условие с длительностью, числом ходов и расходом токенов (Check status). Во втором терминале git log --oneline -1 покажет коммит, а npm test проходит. Если npm test всё ещё падает или git log не показывает нового коммита, цель закончилась раньше исправления — например на лимите ходов или была признана невыполнимой, — и /goal покажет, активна ли она ещё: попросите Claude закончить исправление и закоммитить его.
4. Запустите цикл, который каждую минуту записывает результаты тестов в журнал:
/loop 1m run npm test and append one line to .practice/loop-log.txt with the time and the number of passing and failing tests. Don't change any other file.
Claude запланирует его и подтвердит периодичность и ID задания (Run on a fixed interval). Каждый запуск происходит между вашими ходами, никогда посреди ответа Claude (How scheduled tasks run).
5. В своём редакторе, а не через Claude, сломайте один тест: в test/config.test.js замените в первом тесте files: ['.'] на files: ['docs']. Дождитесь, пока в журнале появится строка с падением, затем откатите изменение командой git restore test/config.test.js.
6. Попросите Claude cancel the npm test loop, затем what scheduled tasks do I have?: не осталось ни одной (Manage scheduled tasks). cat .practice/loop-log.txt показывает строку на каждый запуск, и хотя бы одна из них с падением. Формулировки у вас будут другими.
7. Шагам 7–9 нужна подписка; без неё переходите к шагу 10. Запланируйте рутину, которая выполнится один раз через пять минут:
/schedule in 5 minutes, run npm test in this repository and reply with the number of passing and failing tests. Don't edit files, commit or push.
Claude задаст уточняющие вопросы о расписании, репозитории и промпте и подтвердит точное время, прежде чем сохранить (Create from the CLI, Schedule a one-off run). Скажите ему не включать коннекторы; если он не может, уберите их сразу после сохранения через /schedule update или форму Edit рутины на claude.ai/code/routines (Connectors).\
Если Claude добавит примечание о настройке доступа к GitHub, выполните его до времени запуска; если время пройдёт раньше, отредактируйте рутину и задайте новое время одноразового запуска (Repositories and branch permissions, Edit and control routines). Если Claude отвечает, что нужно пройти аутентификацию, рутина не сохранена; если /schedule нет в меню команд, смотрите /schedule returns "Unknown command".
8. /schedule list показывает рутину (Manage routines from the CLI). После её запуска откройте её на claude.ai/code/routines, откройте запуск и найдите в расшифровке число тестов (View and interact with runs). Запуск клонировал вашу ветку по умолчанию, поэтому в подсчёт не вошёл тест, добавленный в keep-working (Repositories and branch permissions). Одноразовая рутина теперь помечена Ran.
9. Удалите рутину: откройте меню рядом с её именем и выберите Delete (Edit and control routines).\
Если вы подключали GitHub только ради рутины, отключите его на claude.ai/customize/connectors — это удалит учётные данные, откуда бы они ни пришли, из браузера или из /web-setup; сам токен gh на GitHub остаётся действительным (Remove the /web-setup token). Если вы устанавливали GitHub-приложение Claude только ради рутины, уберите копию из его доступа к репозиториям, а удаляйте приложение, только если ничто другое у вас его не использует (Reviewing and modifying installed GitHub Apps).
10. git switch - вернёт копию на ветку, с которой вы начинали; исправление остаётся в keep-working.
#Ваша очередь
В одном из своих репозиториев выберите рутинную задачу, конечное состояние которой может доказать команда, — например падающий тест или ошибку линтера. Завершите её с помощью цели. Затем закоммитьте .claude/loop.md, который продолжит за ней следить: этот файл заменяет встроенный промпт /loop, запущенного без вашего собственного промпта (Customize the default prompt with loop.md). С подпиской можно ещё поручить одноразовой рутине запустить команду в облаке, когда ваша работа окажется в ветке по умолчанию, или назвать свою ветку в промпте рутины (Repositories and branch permissions).
Готово, когда:
- Ваше условие называет команду, доказывающую конечное состояние, одну вещь, которая не должна измениться, и лимит ходов.
- Работа закоммичена, и команда завершается с кодом 0.
.claude/loop.mdзакоммичен. Он говорит, что проверять, и велит отчитываться одной строкой, не меняя никаких файлов./loop 10m(интервал без промпта) выполнил его минимум дважды, после чего вы его отменили (Run the built-in maintenance prompt).- Не осталось ни запланированных задач, ни рутин:
what scheduled tasks do I have?ничего не перечисляет, а все созданные вами рутины удалены.
#Проверка
Факультатив пройден, когда выполнено всё это:
- В вашем репозитории работа цели закоммичена (
git log -1её показывает), а команда, названная в условии, завершается с кодом 0. - В вашей копии для практики
.practice/loop-log.txtсодержит строки минимум от двух запусков цикла, и хотя бы одна из них с падением. -
.claude/loop.mdзакоммичен в вашем репозитории (git ls-files .claude/loop.mdего выводит), аgit status --porcelainничего не выводит. - Самопроверка (не тестируется): ваше условие называло команду, одну неизменяемую вещь и лимит ходов;
/loop 10mвыполнил вашloop.mdминимум дважды, прежде чем вы его отменили;what scheduled tasks do I have?ничего не перечисляет; а если вы создавали рутину, вы прочитали расшифровку её запуска и удалили её.
Если команда всё ещё падает, цель закончилась раньше работы — например на лимите ходов или была признана невыполнимой: нажмите Ctrl+O, чтобы прочитать обоснование последнего вердикта (How evaluation works), затем устраните причину или задайте новую цель; если /goal не запускается, он сообщает почему — обычно из-за папки без доверия или disableAllHooks (Requirements). Если ни одна строка журнала не показывает падения, цикл не работал, пока тест был сломан: снова запустите цикл, как на шаге 4, сломайте тест, как на шаге 5, дождитесь строки с падением, восстановите файл и отмените цикл, как на шаге 6. Если git ls-files ничего не выводит, git check-ignore -v .claude/loop.md назовёт правило, которое прячет файл: добавьте его через git add -f и закоммитьте.
#Осторожно
- Цикл срабатывает, даже пока вас нет, каждый раз отправляя весь контекст сессии, и продолжается, пока вы его не отмените или пока не истечёт срок (Stop a loop). На планах Pro, Max, Team и Enterprise
/usageпоказывает самые затратные циклы (Plan usage breakdown). - Оценщик не может подтвердить условие, которое не видно из вывода Claude, например «код чистый». Называйте команду и её результат (How evaluation works).
- Зелёный статус в списке запусков рутины означает лишь, что сессия стартовала и завершилась без инфраструктурной ошибки. Откройте запуск и прочитайте расшифровку, чтобы понять, выполнена ли задача (View and interact with runs).
#Что дальше
- Loop engineering: Getting started with loops: команда Claude Code в Anthropic о циклах по ходам, по цели, по времени и проактивных — и когда какой использовать.
- Prompt-based hooks: разновидность хука Stop, которую оборачивает
/goal(How evaluation works), — для проверки, которую вы хотите в каждой сессии. - Schedule recurring tasks in Claude Code Desktop: запланированные задачи, которые выполняются на вашей машине, с вашими локальными файлами, пока открыто приложение Desktop.
Источники: Keep Claude working toward a goal · Run prompts on a schedule · Automate work with routines · Choose a permission mode · Manage costs effectively · Feature availability · Use Claude Code in the cloud · Get started with Claude Code in the cloud · Reviewing and modifying installed GitHub Apps
Назад к оглавлению Продвинутого уровня · Тема: Автоматизация · Застряли на уроке?