Мастер Claude · Блок 10. Автономность и расписание

Урок 77 из 93 · ~11 мин чтения

/loop и наблюдение за событиями

Урок пока закрыт

Курс проходится последовательно.

К текущему уроку

Почему это важно именно вам

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

/loop перекладывает этот таймер на Claude: запрос повторяется сам с нужным интервалом, а вы возвращаетесь, когда есть что смотреть.

Важно сразу понять границу: /loop живёт внутри открытой сессии. Это инструмент для «пока я работаю», а не для «пока я сплю». Для второго — следующий урок.

Что это такое

/loop — встроенный скилл, который повторяет запрос по расписанию, пока сессия открыта.

Три формы вызова, и они ведут себя по-разному:

Что задаёте Пример Что происходит
Интервал и запрос /loop 5m проверь, пришли ли новые заявки Запрос повторяется примерно раз в 5 минут
Только запрос /loop проверь статус обработки Claude сам выбирает интервал перед каждой итерацией
Только интервал или ничего /loop Выполняется встроенный «обслуживающий» запрос или ваш файл loop.md

Задачи привязаны к сессии: новая сессия — задач нет. При возобновлении (--resume, --continue) неистёкшие задачи восстанавливаются: повторяющиеся живут семь дней, разовые — до наступления времени.

Слово «примерно» не для красоты: чтобы тысячи сессий не стучались в API в одну секунду, планировщик добавляет каждой задаче постоянный сдвиг — до половины интервала для задач чаще часа. И «некруглые» интервалы вроде 7m или 90m округляются до ближайшего подходящего, о чём Claude скажет.

В качестве запроса можно передать скилл: /loop 20m /сводка-по-звонкам. Работает это только для скиллов, которые Claude имеет право вызывать сам; встроенные команды вроде /model в цикле не выполняются.

Итерация не врывается в середину чужого хода: если Claude занят, она подождёт окончания. Пропуски не догоняются — сколько бы интервалов ни прошло, сработает один раз.

Как работает на практике

Опрос во время работы

/loop 10m проверь, появились ли новые файлы в ~/Загрузки/выгрузки,
и если появились — разбери их по проектам

Вы занимаетесь своими делами в этой же сессии, а раз в десять минут задача выполняется.

Дать Claude выбрать темп

/loop следи за прогоном обработки и скажи, когда он закончится или упадёт

Без интервала Claude сам решает, когда проверять снова: если процесс идёт долго — реже, если приближается к концу — чаще. Выбирает он в пределах от минуты до часа и в конце каждой итерации печатает выбранную задержку и причину. Иногда вместо опроса он предложит инструмент Monitor: тот запускает фоновый скрипт и отдаёт строки вывода по мере появления — дешевле по лимиту и быстрее реагирует.

Остановить цикл

Способ зависит от формы. Цикл без интервала останавливается клавишей Esc, пока он ждёт следующей итерации; такой цикл Claude умеет завершить и сам, когда решит, что работа сделана. Цикл с фиксированным интервалом Esc не гасит — это обычная запланированная задача: скажите «покажи мои запланированные задачи» и «отмени задачу проверки заявок». Сам по себе он кончится только через семь дней.

Разовое напоминание

Для разового срабатывания /loop как раз не нужен: напишите обычными словами «через сорок минут напомни отправить отчёт», и Claude заведёт одноразовую задачу, которая после срабатывания удалит себя. Если написать /loop 40m …, получится повторяющаяся задача, которая будет дёргать вас каждые сорок минут целую неделю.

Когда опрос — плохая идея

Опрос — это «спрашивать каждые N минут». Если событие может прийти извне (сборка упала, письмо пришло, коллега ответил), правильнее не спрашивать, а получать уведомление. Для этого есть channels — механизм, при котором внешняя система сама вталкивает событие в вашу открытую сессию (о нём — в Дне 80).

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

Частый опрос — тихая утечка лимита

/loop 1m кажется безобидным, но это шестьдесят запросов в час, каждый со всем контекстом сессии. Выбирайте интервал по скорости реальных изменений: сборка идёт восемь минут — проверяйте раз в восемь минут, а не каждую.

Частые ошибки

Ставить минутный интервал «чтобы точно не пропустить». Дорого и бессмысленно: событие всё равно обрабатывается на следующей итерации.

Использовать /loop вместо расписания. Закрыли сессию — цикл кончился. Для ночных задач нужны routines или задачи рабочего стола.

Забывать остановить. Цикл продолжается, пока вы работаете в сессии. Самотемповый гасится Esc, а цикл с интервалом — только отменой задачи; иначе он тихо тратит лимит целую неделю.

Опрашивать то, что может прийти событием. Дороже и медленнее реакции на событие.

Помещать в цикл тяжёлую задачу. Каждая итерация — полноценный ход. Цикл с большим разбором данных каждые пять минут выест лимит за час.

Когда нужно / когда нет

Полезно:

Не нужно:

Связь с другими уроками

День 76 — /goal. Продолжение по результату, а не по времени.

День 78 — routines. Расписание, которое живёт без вашей сессии и без включённого компьютера.

День 80 — channels. Реакция на события вместо опроса.

День 39 — cron и launchd. Системное расписание на вашей машине; сравните с новыми механизмами, чтобы выбрать подходящий.

Задание на сегодня

  1. Найдите задачу, в которой вы периодически «проверяете, не появилось ли».
  2. Запустите /loop с разумным интервалом (не меньше, чем скорость реальных изменений).
  3. Поработайте час, наблюдая, как срабатывают итерации.
  4. Попробуйте форму без интервала — пусть Claude выберет темп сам, и сравните.
  5. Проверьте /usage до и после: оцените, во сколько обошёлся опрос.

Критерий «выполнено»: вы один раз заменили ручную проверку циклом и знаете его цену в расходе лимита.

Резюме

Следующий урок откроется после отметки.