Багодельня
Справочник Claude Code

Циклы и цели — /goal и /loop

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

Обычно агент отвечает один раз: ты написал — он сделал. Но сессию можно держать работающей между ходами — агент сам продолжает, пока не достигнет цели. В Claude Code для этого две команды: /goal (довести до результата) и /loop (повторять по интервалу).

Вокруг таких циклов сейчас много шума — от «IDE больше не нужна» до «разработчиков скоро заменят». Хайп оставим в стороне и разберём по делу.

/goal — работать до результата

/goal задаёт условие завершения, и агент работает над ним ход за ходом, пока оно не выполнится. После каждого хода отдельная быстрая модель (по умолчанию Haiku) читает диалог и решает: цель достигнута — да или нет. Если нет — агент делает следующий ход (с подсказкой, чего не хватает); если да — цель снимается сама.

/goal все тесты в test/auth проходят и линт чистый

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

  • /goal без аргумента — показать статус (сколько ходов и токенов потрачено, последняя причина «не выполнено»);
  • /goal clear (или stop / off / cancel) — снять цель досрочно.

Подходит для крупной работы с проверяемым финалом: миграция модуля, пока всё компилится и тесты зелёные; реализация дизайн-дока до выполнения всех критериев; разбор бэклога, пока очередь не пуста.

Всё решает формулировка условия

Первая мысль справедливая: сейчас агент нагенерит простыню на 1000 строк, перепишет полфреймворка, залезет в node_modules. Так и будет — если условие расплывчатое:

/goal поправь баг

Хорошее условие держится на трёх вещах:

  • одно измеримое состояние финиша — результат тестов, код выхода сборки, пустая очередь;
  • как это доказать — «npm test выходит с 0», «git status чистый»;
  • границы, которые нельзя нарушать — «не менять другие тест-файлы».

То есть тот же баг ставится так: воспроизведи → одна гипотеза → маленький фикс (diff ≤ 15 строк, не трогай лишнее) → тест на баг проходит, остальные не сломаны. Цикл силён ровно настолько, насколько чётко задано условие (когда стоп) и границы (чего не делать). Чтобы не крутился вечно, добавь предел: «…или остановись через 20 ходов».

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

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

/loop — про другое: он повторяет промпт по таймеру, чтобы что-то опрашивать. Следующий ход стартует по интервалу, а не «как только закончился прошлый».

/loop 5m проверь статус деплоя

Останавливается, когда ты его остановишь или агент решит, что работа сделана. Удобно: дождаться завершения CI, мониторить статус.

Что выбрать

/goal/loop
Следующий ход стартуеткак только закончился предыдущийпо таймеру/интервалу
Останавливаетсякогда модель-судья подтвердила условиеты остановил / агент решил, что готово
Для чегодовести одну задачу до измеримого финишапериодически опрашивать, повторять

Не только про код

Циклы полезны не только в автотестах. Вспомни, что копится и не доходит до рук: плавающие баги, флаки-тесты, рутина. Сценарий один: пометили → сложили → завели таску → «потом». А «потом» не наступает: временное — это всегда постоянное.

/goal и /loop интересны не как магия, а как способ вернуть такие задачи в работу — отдать агенту с чётким условием и рамками, вместо папки «разберём позже».

Не хочешь придумывать цикл с нуля — есть каталог готовых лупов. А /goal требует свежего Claude Code (v2.1.139+) и включённых хуков; точный синтаксис и детали — в официальной документации.

Проверь себя

  1. 1. Чем /goal отличается от /loop?

  2. 2. Кто решает, что цель /goal достигнута?

  3. 3. Что делает условие /goal хорошим?

On this page