Когда вы уже доверяете Claude какую-то задачу, следующий шаг — перестать делать её вручную. Если это один и тот же промпт по повторяющемуся триггеру, не нужно сидеть и запускать его самому каждый раз. Этот урок разбирает два способа отдать эту работу: рутины, где вы ничего не строите, и автономный режим, где вы получаете полный контроль из собственных скриптов.
Думайте об этом как о спектре. На одном конце — рутины, которые выполняются на управляемой инфраструктуре Anthropic. На другом — автономный режим и Agent SDK, которые запускают Claude Code из вашего собственного кода. Начнём с того конца, где строить нужно меньше всего.
Рутины: сохранённый промпт, который выполняется в облаке
Рутина — самый прямой способ автоматизировать задачу. Никакого скрипта и никакого сервера. Она объединяет три вещи: промпт, репозиторий, с которым она работает, и нужные ей коннекторы. Затем она выполняет этот набор в облаке всякий раз, когда срабатывает.
Ключевое в том, что инфраструктура — это Anthropic. Никакой вашей машины, работающей всю ночь, и никакого workflow-файла, который нужно поддерживать. Вы один раз описываете задачу, и она просто выполняется.
Рутина может срабатывать по нескольким видам триггеров:
- Расписание cron, например каждое утро в 9 утра.
- HTTP POST на её API-эндпоинт, чтобы ваш собственный код мог её запускать.
- Событие GitHub, например новый пул-реквест.
Всё, что является одним и тем же промптом по повторяющемуся триггеру, хорошо подходит. Утренний аудит зависимостей. Триажер PR, который срабатывает при новом пул-реквесте. Ежедневное сканирование ваших тикетов Sentry, чтобы понять, что срочнее всего.
Вот ментальная модель того, что связывает рутина: промпт, репозиторий, коннекторы и расписание.
Два способа создать
Рутину можно создать из веба на claude.ai/code/routines. Вы даёте ей имя, пишете инструкции, описывающие, что Claude должен делать в каждой сессии, выбираете репозиторий и выбираете триггер.
Её можно создать и изнутри Claude Code, не выходя из терминала. Просто выполните команду /schedule и опишите желаемое обычным языком, например:
```
/schedule daily dependency audit at 9am
```
Идея та же, любая точка входа. Выберите ту, что подходит вашему потоку.
Три вещи, которые нужно знать, прежде чем полагаться на рутины
Прежде чем опираться на рутины в чём-то важном, держите в уме эти три ограничения.
- Рутины — это исследовательское превью. Поведение и лимиты будут продолжать меняться, так что не удивляйтесь, если что-то изменится.
- Повторяющееся расписание выполняется максимум раз в час. Если нужно чаще, рутины — не тот инструмент.
- Каждый прогон стартует со свежего клона вашей ветки по умолчанию и может пушить только в ветки с префиксом claude/, если вы не ослабите это для репозитория. Это ограждение, которое не даёт автономному прогону переписать main.
Автономный режим: когда нужно своё окружение
Рутины отличны, когда работа помещается в облако. Но иногда задаче нужно ваше окружение или логика вокруг прогона. Тогда вы спускаетесь к автономному режиму.
Ядро автономного режима — флаг -p (сокращённо от --print). Он запускает Claude Code как одноразовую команду без интерактивного UI. Он читает стандартный ввод и пишет в стандартный вывод, так что работает в пайпах как любой другой шелл-инструмент:
```
claude -p "summarize the changes in this diff"
```
Стоит знать одно: -p пропускает автообнаружение хуков, навыков, плагинов, MCP-серверов и файла CLAUDE.md. Вы получаете Claude плюс инструменты, которые явно разрешили, и ничего, что случайно подгружает локальное окружение. Плюс в том, что запуск так гораздо быстрее.
Получение структурированного вывода обратно
Поскольку автономный режим работает в пайпах как любой шелл-инструмент, часто хочется получить обратно структурированные данные вместо прозы. Можно сочетать JSON-схему с форматом вывода JSON, и Claude ограничит свой вывод вашей схемой.
Объект, соответствующий вашей схеме, попадает в поле structured_output JSON-ответа. Так что его можно вытащить командой 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'
```
Это даёт чистый массив, который можно отдать тому, что идёт дальше.
Многошаговая автоматизация с сессиями
Для работы, идущей в несколько шагов, не обязательно впихивать всё в одну команду. Захватите ID сессии из JSON-вывода и возобновите её позже:
```
claude --resume "$(jq -r .session_id /tmp/plan.json)"
```
Один скрипт начинает работу. Другой возобновляет её позже с полным контекстом. Это удобно, когда первый проход создаёт план, а второй его выполняет.
Детерминированные прогоны для CI
Когда CI нужны одинаковые результаты при каждом прогоне, для этого есть встроенный режим.
Флаг --bare даёт детерминированный режим. Это правильный выбор, когда вы запускаете Claude Code внутри пайплайна и хотите повторяемый, предсказуемый вывод, а не что-то меняющееся от прогона к прогону.
Agent SDK: Claude Code внутри вашего приложения
Последняя ступень спектра — Agent SDK. Это библиотека, которая встраивает Claude Code в ваши собственные приложения на TypeScript или Python.
Оба языка предоставляют функцию query и те же примитивы, что и CLI. Вы передаёте промпт плюс опции, например:
- allowedTools, чтобы управлять тем, что Claude может делать,
- системный промпт,
- и режим разрешений.
Затем вы итерируетесь по сообщениям, которые Claude стримит обратно, и обрабатываете их так, как нужно вашему приложению. Это тот же движок, что и CLI, только вызываемый изнутри вашего продукта.
Что выбрать?
Вот быстрое руководство по решению:
- Рутины — вариант по умолчанию для повторяющейся работы. Они выполняются на инфраструктуре Anthropic, и вам нечего хостить.
- Автономный режим с -p — когда задаче нужен ваш пайплайн и вы хотите прогнать данные через скрипт.
- --bare — когда CI нужны одинаковые результаты при каждом прогоне.
- Agent SDK — когда работа должна жить внутри вашего собственного продукта.
Начните с рутин. Спускайтесь по спектру, только когда задаче реально нужен дополнительный контроль.