OpenClaw имеет четыре механизма автоматизации: cron (расписание), hooks (события), standing orders (постоянные инструкции) и background tasks (учёт фоновой работы). Вместе они позволяют агенту работать автономно — от ежедневных дайджестов до мониторинга систем.
Когда что использовать
| Механизм | Когда использовать | Пример |
|---|---|---|
| Cron | Точное время или интервал | «Каждый день в 9:00 собрать новости» |
| Hooks | Событие внутри Gateway | «При /new сохранить контекст сессии» |
| Standing orders | Постоянные полномочия | «Ты отвечаешь за еженедельный отчёт» |
| Heartbeat | Периодические проверки (batch) | «Проверяй почту + календарь каждые 30 мин» |
Cron — расписание
Cron — встроенный планировщик Gateway. Он хранит задачи, будит агента в нужное время и доставляет результат в чат или webhook.
Типы расписания
| Тип | Флаг | Описание |
|---|---|---|
at |
--at |
Разовый запуск (ISO 8601 или относительный: 20m) |
every |
--every |
Фиксированный интервал |
cron |
--cron |
Cron-выражение (5 полей) + --tz |
Стили выполнения
| Стиль | --session |
Где запускается | Для чего |
|---|---|---|---|
| Main session | main |
Следующий heartbeat | Напоминания, системные события |
| Isolated | isolated |
Отдельная сессия cron: |
Отчёты, фоновые задачи |
| Current session | current |
Привязана при создании | Контекстная работа |
| Custom session | session:custom-id |
Именованная persistent | Workflow с историей |
Доставка результата
| Режим | Что происходит |
|---|---|
announce |
Доставляет текст в указанный чат |
webhook |
POST на URL |
none |
Ничего не делать с результатом |
Примеры
Разовое напоминание:
openclaw cron add \
--name "Напоминание" \
--at "20m" \
--session main \
--system-event "Напоминание: проверь статус дайджesta" \
--wake now
Ежедневный дайджест с доставкой:
openclaw cron add \
--name "Утренний бриф" \
--cron "0 7 * * *" \
--tz "Europe/Moscow" \
--session isolated \
--message "Собери новости AI за сутки" \
--announce \
--channel telegram \
--to "116941204"
Управление
openclaw cron list # Список задач
openclaw cron show # Детали задачи
openclaw cron runs --id # История запусков
openclaw cron run --id # Запустить вручную
openclaw cron remove --id # Удалить
Webhooks — внешние триггеры
Gateway может принимать HTTP-запросы для запуска задач:
# Системное событие
curl -X POST http://127.0.0.1:18789/hooks/wake \
-H 'Authorization: Bearer SECRET' \
-d '{"text":"Новое письмо","mode":"now"}'
# Изолированный запуск агента
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'Authorization: Bearer SECRET' \
-d '{"message":"Обобщи входящие","name":"Email"}'
Настройка:
{
"hooks": {
"enabled": true,
"token": "shared-secret",
"path": "/hooks"
}
}
Hooks — событийные хуки
Hooks — это скрипты, которые запускаются при событиях внутри Gateway. В отличие от cron (по времени), hooks работают по событиям.
Типы событий
| Событие | Когда срабатывает |
|---|---|
command:new |
/new команда |
command:reset |
/reset команда |
command:stop |
/stop команда |
session:compact:before |
До компактификации |
session:compact:after |
После компактификации |
agent:bootstrap |
До инъекции bootstrap-файлов |
gateway:startup |
После запуска Gateway |
message:received |
Входящее сообщение |
message:sent |
Исходящее сообщение |
message:transcribed |
После транскрибации аудио |
Встроенные хуки
| Хук | События | Что делает |
|---|---|---|
session-memory |
command:new, command:reset |
Сохраняет контекст сессии в memory/ |
bootstrap-extra-files |
agent:bootstrap |
Инжектирует дополнительные bootstrap-файлы |
command-logger |
command |
Логирует все команды |
boot-md |
gateway:startup |
Запускает BOOT.md при старте |
Структура хука
my-hook/
├── HOOK.md # Метаданные + документация
└── handler.ts # Реализация
HOOK.md:
---
name: my-hook
description: "Что делает хук"
metadata:
{"openclaw": {"events": ["command:new"], "emoji": "🔗"}}
---
# My Hook
Документация...
Управление
openclaw hooks list # Список хуков
openclaw hooks enable # Включить
openclaw hooks disable # Выключить
openclaw hooks info # Детали
Standing orders — постоянные полномочия
Standing orders дают агенту постоянные полномочия для определённых программ. Вместо того чтобы каждый раз давать инструкции, вы определяете программы с областью, триггерами и правилами эскалации.
Структура standing order
## Program: Еженедельный отчёт
**Authority:** Собрать данные, сгенерировать отчёт, доставить
**Trigger:** Каждую пятницу в 16:00 (через cron)
**Approval gate:** Стандартные отчёты — без проверки. Аномалии — на ревью.
**Escalation:** Если источник данных недоступен или метрики > 2σ от нормы
### Шаги выполнения
1. Собрать метрики из настроенных источников
2. Сравнить с прошлой неделей и целями
3. Сгенерировать отчёт в Reports/weekly/YYYY-MM-DD.md
4. Доставить саммари через канал
5. Залогировать завершение
### Чего НЕ делать
- Не отправлять отчёт внешним сторонам
- Не изменять исходные данные
- Не пропускать доставку если метрики плохие
Standing orders + cron
Standing orders определяют что делать. Cron определяет когда. Вместе:
Standing Order: "Ты отвечаешь за ежедневный триаж почты"
↓
Cron Job (8:00 daily): "Выполни триаж почты по standing orders"
↓
Агент: Читает standing orders → выполняет шаги → отчитывается
Паттерн Execute-Verify-Report
Каждая задача в standing order должна следовать циклу:
1. Execute — выполнить работу (не подтвердить намерение)
2. Verify — проверить результат (файл создан, сообщение доставлено)
3. Report — отчитаться что сделано и что проверено
### Правила выполнения
- Каждая задача: Execute → Verify → Report. Без исключений.
- "Сделаю" — это не выполнение. Сделай, потом отчитайся.
- "Готово" без проверки не принимается. Докажи.
- Если выполнение не удалось: повторить 1 раз.
- Если снова не удалось: отчитаться с диагностикой. Молчать нельзя.
Background tasks — учёт фоновой работы
Background tasks — это журнал фоновой работы: ACP-запуски, субагенты, cron-выполнения, CLI-операции.
Что создаёт задачи, а что нет
Создаёт задачи:
- ACP background runs
- Subagent spawns
- Все cron-выполнения
- CLI-операции (
openclaw agent) video_generateruns
НЕ создаёт задачи:
- Heartbeat-ходы
- Обычные чат-сообщения
- Ответы на команды
Жизненный цикл
| Статус | Значение |
|---|---|
queued |
Создано, ждёт запуска |
running |
Выполняется |
succeeded |
Успешно завершено |
failed |
Завершено с ошибкой |
timed_out |
Превышен таймаут |
cancelled |
Остановлено оператором |
lost |
Runtime потерял backing state (>5 мин grace) |
Управление
openclaw tasks list # Список задач
openclaw tasks list --status running # Фильтр по статусу
openclaw tasks show # Детали
openclaw tasks cancel # Отменить
openclaw tasks audit # Аудит здоровья
openclaw tasks maintenance --apply # Очистка
Terminal-записи хранятся 7 дней, потом автоматически удаляются.
Доставка уведомлений
Когда задача завершается, OpenClaw уведомляет:
- Прямая доставка — если есть channel target, результат идёт прямо в чат
- Через сессию — если прямая доставка не удалась, событие ставится в очередь сессии и появляется на следующем heartbeat
Практический пример
Полный pipeline для дайджesta:
1. Standing order в AGENTS.md: «Ты отвечаешь за AI-дайджест. Каждый день собираешь, пишешь, публикуешь.»
2. Cron (06:00): запуск isolated-сессии для сбора новостей
3. Cron (09:00): запуск isolated-сессии для публикации из digest-today.txt
4. Background tasks: журнал всех запусков, статусы, таймауты
5. Hooks (опционально): session-memory для автосохранения контекста
Частые ошибки
- Cron без timezone. Timestamps без timezone считаются UTC. Всегда указывайте
--tz. - Standing orders слишком общие. «Делай что хочешь» — плохой standing order. Чем уже полномочия, тем лучше.
- Hooks не включены. По умолчанию hooks не загружаются. Нужно
openclaw hooks enable. - Polling loop для задач. Не проверяйте
tasks listв цикле. Completion — push-based.
📦 Плагин Webhooks (подробно)
Плагин Webhooks добавляет авторизованные HTTP-маршруты, которые связывают внешнюю автоматизацию с TaskFlows OpenClaw.
Используйте его, когда нужно, чтобы доверенная система (Zapier, n8n, CI-джоб или внутренний сервис) создавала и управляла TaskFlows без написания кастомного плагина.
Где работает
Плагин Webhooks работает внутри процесса Gateway. Если Gateway на другой машине — установите и настройте плагин на том хосте, затем перезапустите Gateway.
Настройка маршрутов
Конфигурация — plugins.entries.webhooks.config:
{
plugins: {
entries: {
webhooks: {
enabled: true,
config: {
routes: {
zapier: {
path: "/plugins/webhooks/zapier",
sessionKey: "agent:main:main",
secret: {
source: "env",
provider: "default",
id: "OPENCLAW_WEBHOOK_SECRET",
},
controllerId: "webhooks/zapier",
description: "Zapier TaskFlow bridge",
},
},
},
},
},
},
}
Поля маршрута
enabled |
Опционально, по умолчанию true |
path |
Опционально, по умолчанию /plugins/webhooks/<routeId> |
sessionKey |
Обязательная сессия-владелец привязанных TaskFlows |
secret |
Общий секрет или SecretRef |
controllerId |
ID контроллера для создаваемых managed flows (опционально) |
description |
Заметка оператора (опционально) |
Поддерживаемые типы secret:
- Строка
- SecretRef с
source: "env" | "file" | "exec"
Модель безопасности
Каждый маршрут доверен и действует с authority TaskFlow настроенной sessionKey. Это значит, что маршрут может просматривать и изменять TaskFlows, принадлежащие этой сессии.
Рекомендации:
- Уникальный сильный секрет на маршрут
- Предпочитать ссылки на секреты вместо inline-текста
- Привязывать маршруты к максимально узкой сессии
- Открывать только конкретный webhook path
Плагин применяет:
- Аутентификацию общим секретом
- Ограничения размера тела и таймауты
- Rate limiting (фиксированное окно)
- Ограничение одновременных запросов
- Доступ к TaskFlows через привязку к сессии-владельцу
Формат запроса
Отправляйте POST с:
Content-Type: application/jsonAuthorization: Bearer <secret>илиx-openclaw-webhook-secret: <secret>
curl -X POST https://gateway.example.com/plugins/webhooks/zapier \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_SHARED_SECRET' \
-d '{"action":"create_flow","goal":"Review inbound queue"}'
Поддерживаемые действия
| Действие | Описание |
|---|---|
create_flow |
Создать managed TaskFlow для привязанной сессии |
get_flow |
Получить TaskFlow |
list_flows |
Список TaskFlows |
find_latest_flow |
Найти последний TaskFlow |
resolve_flow |
Разрешить TaskFlow |
get_task_summary |
Получить саммари задачи |
set_waiting |
Установить статус ожидания |
resume_flow |
Возобновить TaskFlow |
finish_flow |
Завершить TaskFlow |
fail_flow |
Отметить TaskFlow как failed |
request_cancel |
Запросить отмену |
cancel_flow |
Отменить TaskFlow |
run_task |
Создать дочернюю задачу внутри managed TaskFlow |
Пример: create_flow
{
"action": "create_flow",
"goal": "Review inbound queue",
"status": "queued",
"notifyPolicy": "done_only"
}
Пример: run_task
Создаёт дочернюю managed-задачу внутри существующего TaskFlow. Разрешённые runtime: subagent, acp.
{
"action": "run_task",
"flowId": "flow_123",
"runtime": "acp",
"childSessionKey": "agent:main:acp:worker",
"task": "Inspect the next message batch"
}
Формат ответа
Успешный ответ:
{
"ok": true,
"routeId": "zapier",
"result": {}
}
Отклонённый запрос:
{
"ok": false,
"routeId": "zapier",
"code": "not_found",
"error": "TaskFlow not found.",
"result": {}
}
Что дальше
- Агенты: обзор — архитектура и workspace
- Конфигурация Gateway — настройка cron, hooks, webhook
- Сессии и память — lifecycle, compaction, memory