Облачные агенты: web, routines и фоновые задачи
В предыдущих статьях мы разбирали автоматизацию через GitHub Actions и GitLab CI/CD — оба подхода завязаны на пайплайн вашего репозитория. Но что если задача не связана с пушем в ветку? Что если агент должен запускаться ночью по расписанию, отвечать на алерты из мониторинга или поддерживать PR в актуальном состоянии, пока вы на встрече — и всё это без открытого терминала?
Здесь Claude Code предлагает три разных механизма фоновой работы. Они отличаются тем, где выполняется агент и как долго живёт задача.
flowchart TD
subgraph CLOUD["☁️ Инфраструктура Anthropic"]
R["Routines\n(Schedule / API / GitHub)"]
end
subgraph LOCAL["💻 Ваша машина"]
D["Desktop scheduled tasks\n(без открытой сессии)"]
L["/loop\n(внутри открытой сессии)"]
end
subgraph VIEW["👁 Agent View"]
AV["claude agents\n(панель всех фоновых сессий)"]
end
R -->|"создаёт сессию на claude.ai"| AV
D -->|"локальные задачи"| AV
L -->|"сессионные задачи"| AV
style CLOUD fill:#e8f4f8,stroke:#2196f3
style LOCAL fill:#f0f8e8,stroke:#4caf50
style VIEW fill:#fff8e1,stroke:#ff9800Три уровня фоновой работы
Прежде чем углубляться в детали, важно понять, чем три механизма принципиально отличаются:
| Routines (cloud) | Desktop tasks | /loop | |
|---|---|---|---|
| Где выполняется | Инфраструктура Anthropic | Ваша машина | Ваша машина |
| Нужен открытый терминал | Нет | Нет | Да |
| Нужна включённая машина | Нет | Да | Да |
| Доступ к локальным файлам | Нет (клонирует репо) | Да | Да |
| Минимальный интервал | 1 час | 1 минута | 1 минута |
| Живёт без сессии | Да | Да | Нет (7 дней, потом умирает) |
Простое правило: нужно работать без машины — Routines; нужны локальные файлы и машина включена — Desktop tasks; быстрый поллинг прямо сейчас, пока сессия открыта — /loop.
Routines: агент, которому не нужна ваша машина
Routine — это сохранённая конфигурация Claude Code: промпт, один или несколько репозиториев, MCP-коннекторы. Всё это упаковывается один раз и запускается автоматически на серверах Anthropic.
> Статус: Routines находятся в research preview. API и лимиты могут меняться. Доступны на тарифах Pro, Max, Team и Enterprise при включённом Claude Code на вебе.
Каждый раз, когда routine запускается, создаётся полноценная Claude Code-сессия — со всеми инструментами, но без запросов на разрешения. Агент работает автономно: читает, пишет, вызывает MCP, пушит ветки. Поэтому промпт должен быть максимально конкретным: что сделать, как убедиться что всё сработало.
Создание routine
Создать routine можно двумя способами: через веб-интерфейс на claude.ai/code/routines или прямо из CLI командой /schedule.
Через CLI — быстрее для простых случаев:
# Создать routine с расписанием — естественный язык
/schedule daily PR review at 9am
# Разовый запуск
/schedule in 2 weeks, open a cleanup PR that removes the feature flag
# Посмотреть список и управлять
/schedule list
/schedule update
/schedule run> /schedule требует авторизации через claude.ai (не API-ключ). Если в окружении выставлен ANTHROPIC_API_KEY, команда будет скрыта — уберите ключ и войдите через claude login.
Через веб-форму открывается больше опций: выбор модели, настройка окружения, несколько триггеров одновременно, MCP-коннекторы.
Три типа триггеров
Одна routine может сочетать несколько триггеров. Например, routine код-ревью можно запускать и по расписанию (ночной прогон), и по API-вызову из деплой-скрипта, и на каждый открытый PR.
Schedule — по расписанию. Пресеты: hourly, daily, weekdays, weekly. Для нестандартного интервала (например, «каждые два часа») нужно задать cron-выражение через /schedule update в CLI. Минимальный интервал — 1 час. Время задаётся в вашем локальном часовом поясе.
API — по HTTP-запросу. После создания routine получает уникальный endpoint. Любая система, умеющая делать POST-запрос, может запустить агента:
curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLM/fire \
-H "Authorization: Bearer sk-ant-oat01-xxxxx" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'В ответе приходит URL сессии — можно сразу открыть и смотреть, что делает агент.
{
"type": "routine_fire",
"claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",
"claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"
}GitHub — на события репозитория. Поддерживаемые события: pull_request (открыт, закрыт, обновлён, помечен лейблом…) и release (создан, опубликован, удалён). Фильтры позволяют точно выбрать, какие PR запускают routine: по автору, заголовку, базовой ветке, лейблам, статусу draft.
Пример: routine портирует изменения в SDK на другой язык срабатывает только на pull_request.closed + is_merged: true + labels: include needs-backport. Никаких лишних запусков.
Ветки, коннекторы и окружения
Ветки. По умолчанию routine пушит только в ветки с префиксом claude/. Это защита от случайной записи в main или release. Если нужно разрешить пуш в произвольные ветки — включите «Allow unrestricted branch pushes» в настройках routine.
Коннекторы. Это ваши MCP-серверы, добавленные через claude.ai (не локальные, добавленные через claude mcp add — они живут только на машине). При создании routine все коннекторы включаются по умолчанию. Удалите лишние — агент получит доступ только к тому, что реально нужно.
Окружение. Каждая routine работает в изолированном cloud environment с настраиваемыми: сетевым доступом (список разрешённых доменов), переменными среды (API-ключи, токены) и setup-скриптом (установка зависимостей, кешируется между запусками). Стандартное окружение «Default» разрешает пакетные регистры, cloud provider API и CDN — но блокирует всё остальное.
Что показывает статус «green»
Важный нюанс, который легко упустить: зелёный статус в списке запусков означает, что сессия стартовала и завершилась без инфраструктурной ошибки. Это не гарантирует, что задача в промпте выполнена успешно. Провал сети, отсутствующий коннектор или логическая ошибка в задаче — всё это видно только внутри сессии, в транскрипте.
Agent View: панель управления фоновыми агентами
Когда routines или субагенты работают параллельно, нужно видеть общую картину. Для этого есть agent view — запускается командой:
claude agentsЭто один экран со всеми фоновыми сессиями, сгруппированными по состоянию:
- Needs input — агент ждёт вашего ответа
- Working — активно выполняет задачу
- Completed — завершил работу
Внизу экрана — поле для диспетчеризации новой сессии. Навигация между сессиями — стрелками; войти в сессию для ответа — Enter. Вы не держите N открытых терминалов: открыл agent view, ответил агентам в статусе «Needs input», закрыл.
Каждая фоновая сессия — полноценный диалог с Claude, который продолжается без открытого терминала. Подключиться можно когда угодно: прочитать транскрипт, отправить уточнение, создать PR из изменений.
/loop: поллинг прямо в сессии
Если routines — это «запустить и забыть», то /loop — это «смотреть в терминал, пока задача не решится». Команда повторяет промпт по расписанию внутри текущей сессии.
# Фиксированный интервал + конкретная задача
/loop 5m check if the deployment finished
# Динамический интервал — Claude сам выбирает паузу
/loop check CI and address review comments
# Голый /loop — встроенный maintenance-промпт
/loopТри режима поведения
Фиксированный интервал (/loop 5m задача). Claude переводит интервал в cron-выражение. Секунды округляются вверх до минуты. Нестандартные интервалы (7m, 90m) округляются до ближайшего поддерживаемого — Claude сообщит, что именно выбрал.
Динамический интервал (/loop задача). Claude сам решает, как долго ждать после каждой итерации: смотрит на то, что обнаружил, и выбирает паузу от 1 минуты до 1 часа. Если билд ещё в процессе — короткая пауза; PR затих и всё зелёное — пауза длиннее. Иногда вместо поллинга использует инструмент Monitor, который стримит stdout процесса и реагирует на события, не тратя токены на холостые проверки.
Голый /loop. Запускает встроенный maintenance-промпт: продолжает незавершённую работу из сессии, тендирует PR (комментарии ревьюера, упавший CI, конфликты), запускает cleanup-паши когда больше нечего делать. Неплохой способ оставить агента «дежурить» по ветке на вечер.
loop.md: ваш дефолтный промпт
Если голый /loop должен делать что-то специфичное для вашего проекта — создайте файл loop.md:
# .claude/loop.md
Check the `release/next` PR. If CI is red, pull the failing job log,
diagnose, and push a minimal fix. If new review comments have arrived,
address each one and resolve the thread. If everything is green and
quiet, say so in one line.Поиск: сначала .claude/loop.md (уровень проекта), потом ~/.claude/loop.md (глобальный). Файл читается перед каждой итерацией, так что можно редактировать его прямо во время работающего /loop.
Ограничения /loop
- Задачи живут только в текущей сессии. При новом
claudeони пропадают.claude --resumeвосстанавливает незавершённые задачи (созданные в последние 7 дней). - Не срабатывают, когда Claude занят ответом на другой запрос — ждут своей очереди.
- Нет catch-up: если задача не сработала в назначенное время (Claude был занят), она срабатывает один раз, как только Claude освободится.
- Максимум 50 задач в одной сессии.
Остановить цикл: Esc во время паузы между итерациями.
Практические паттерны
Alert triage через API-триггер. Мониторинг (Sentry, Datadog, Grafana) вызывает endpoint routine, передавая тело алерта в поле text. Routine тянет стек-трейс, коррелирует с последними коммитами в репо и открывает draft-PR с предложенным фиксом. Дежурный видит готовый PR вместо пустого терминала.
Ночная чистка бэклога. Schedule-триггер каждую ночь по будням: читает задачи через Slack/Linear коннектор, навешивает лейблы, назначает ответственных. Утром команда получает розданный бэклог.
Поддержка PR в сессии. Вы работаете над другой задачей, но хотите не пропустить новые комментарии в PR:
/loop check whether CI passed and address any review comments on PR #247Claude поллит каждые несколько минут, адресует комментарии и сообщает об изменениях.
Разовое напоминание. Не через routine — просто натуральный язык внутри сессии:
remind me in 45 minutes to push the release branchSee also
- GitHub Actions и автоматический code review — автоматизация на базе событий репозитория в GitHub
- GitLab CI/CD и headless-автоматизация — headless-режим и CI/CD без готового action
- Динамические workflows и оркестрация агентов — управление несколькими агентами и распределение подзадач
- Субагенты и контекстная изоляция — изолированные агентные сессии внутри одного проекта
- Практика: GitHub, базы данных и веб-API через MCP — MCP-коннекторы, которые можно подключить к routines
- CLAUDE.md и система памяти — как передать контекст проекта агенту, работающему в облаке
- Headless-режим и скриптинг через CLI — флаги CLI и автоматизация без интерактивного режима