← Claude Code in Action · урок 6 из 9

Урок 6. Routines и headless-режим

Конспект урока «Routines and Headless» из бесплатного курса Anthropic Claude Code in Action. Оригинал урока: https://anthropic.skilljar.com/claude-code-in-action/486935

Это пересказ на русском, а не перевод. Права на курс принадлежат Anthropic.

Идея

Когда ты уже доверяешь Клоду какую-то задачу, следующий шаг — перестать запускать её руками. Если это один и тот же промпт по повторяющемуся триггеру, незачем каждый раз сидеть и нажимать старт.

Способы передать работу выстраиваются в шкалу. На одном конце — routines, которые крутятся на инфраструктуре Anthropic и не требуют от тебя ничего собирать. На другом — headless-режим и Agent SDK, где Клод запускается из твоего собственного кода и ты контролируешь всё. Начнём с того конца, где строить меньше всего.

Routines: сохранённый промпт, работающий в облаке

Routine — самый прямой способ автоматизировать задачу. Ни скрипта, ни сервера. Она связывает три вещи: промпт, репозиторий, с которым работает, и нужные коннекторы. Дальше этот набор запускается в облаке по триггеру.

Ключевое: инфраструктура — Anthropic. Твоя машина не должна стоять включённой на ночь, и никакого workflow-файла поддерживать не надо. Один раз описал задачу — она просто работает.

Триггеры бывают трёх видов:

Подходит всё, что сводится к одному промпту по повторяющемуся триггеру: утренний аудит зависимостей, разбор входящих пул-реквестов, ежедневный просмотр тикетов Sentry на предмет самого срочного.

Два способа создать

Через веб — на claude.ai/code/routines: имя, инструкции для каждой сессии, репозиторий, триггер.

Или прямо из Claude Code, не выходя из терминала, — командой /schedule с описанием обычными словами:

/schedule daily dependency audit at 9am

Точка входа роли не играет, выбирай, что удобнее.

Три ограничения, о которых надо знать заранее

  1. Routines — это research preview. Поведение и лимиты будут меняться.
  2. Регулярное расписание срабатывает не чаще раза в час. Нужно чаще — это не тот инструмент.
  3. Каждый запуск начинается со свежего клона твоей ветки по умолчанию и может пушить только в ветки с префиксом claude/, если ты сам не ослабишь это правило для конкретного репозитория. Это и есть предохранитель, не дающий автономному прогону переписать main.

Headless-режим: когда нужна своя среда

Routines хороши, пока работа укладывается в облако. Но иногда задаче нужна именно твоя среда или логика вокруг запуска. Тогда спускаемся в headless.

Основа режима — флаг -p (сокращение от --print). Он запускает Claude Code как разовую команду без интерактивного интерфейса: читает stdin, пишет stdout, то есть встраивается в пайпы как любая другая утилита:

claude -p "summarize the changes in this diff"

Что важно знать: -p пропускает автообнаружение хуков, скиллов, плагинов, MCP-серверов и файла CLAUDE.md. Ты получаешь Клода плюс те инструменты, которые разрешил явно, и ничего из того, что случайно подтянуло локальное окружение. Плюс в том, что старт заметно быстрее.

Структурированный ответ

Раз режим встраивается в пайпы, часто хочется получить обратно данные, а не прозу. Можно задать JSON-схему вместе с форматом вывода JSON — и Клод ограничит вывод твоей схемой.

Объект по схеме приходит в поле structured_output, откуда его удобно достать через jq и отправить дальше — в базу или в следующий скрипт:

claude -p "Extract the exported function names from src/core/style.js" \
  --output-format json \
  --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}' \
  | jq '.structured_output.functions'

На выходе — чистый массив для следующего шага.

Многошаговая автоматизация через сессии

Не обязательно втискивать всё в одну команду. Забери идентификатор сессии из JSON-ответа и возобнови её позже:

claude --resume "$(jq -r .session_id /tmp/plan.json)"

Один скрипт начинает работу, другой продолжает её с полным контекстом. Удобно, когда первый проход строит план, а второй его выполняет.

Детерминированные прогоны для CI

Когда CI должен получать одинаковый результат при каждом запуске, есть флаг --bare — детерминированный режим. Это правильный выбор для пайплайна, где нужна повторяемость, а не вариативность от прогона к прогону.

Agent SDK: Claude Code внутри твоего приложения

Последняя ступень шкалы — библиотека, встраивающая Claude Code в твои приложения на TypeScript или Python.

В обоих языках есть функция query и те же примитивы, что у CLI. Передаёшь промпт и опции:

Дальше перебираешь сообщения, которые Клод шлёт в ответ, и обрабатываешь их так, как нужно приложению. Движок тот же, что у CLI, просто вызывается изнутри твоего продукта.

Что выбрать

Инструмент Когда
Routines по умолчанию для повторяющейся работы — крутится у Anthropic, хостить нечего
Headless -p когда задаче нужен твой пайплайн и данные надо прогнать через скрипт
--bare когда CI должен давать одинаковый результат каждый раз
Agent SDK когда работа должна жить внутри твоего продукта

Начинай с routines. Спускайся ниже по шкале только тогда, когда задаче действительно нужен дополнительный контроль.