自动化
OpenClaw 提供三种自动化机制:Cron(定时任务)、Webhook(HTTP 触发)和 Hook(事件驱动脚本)。
Cron 定时任务
Gateway 内置调度器,任务持久化在 ~/.openclaw/cron/jobs.json。 支持三种调度方式:
| 类型 | 说明 |
|---|---|
| at | 一次性执行(ISO 时间戳) |
| every | 固定间隔(毫秒) |
| cron | 标准 Cron 表达式(5/6 字段,支持 IANA 时区) |
执行模式
- Main Session:在主会话中发送系统事件 + 心跳
- Isolated:独立 Agent 轮次,会话 key 为
cron:<jobId>,每次运行独立 session ID
投递方式
announce:结果发送到指定渠道webhook:结果 POST 到 HTTP 端点none:静默执行
# 查看定时任务
openclaw cron list
# 添加任务
openclaw cron add
# 手动触发一次
openclaw cron run <jobId>
# 查看执行历史
openclaw cron runs <jobId>重试策略
临时错误(429、5xx、网络异常)自动指数退避重试。永久错误(认证失败、配置错误)立即禁用任务。 一次性任务最多重试 3 次。
Webhook
Gateway 暴露 HTTP Webhook 端点,供外部系统触发 Agent 操作:
# 系统事件 + 心跳
POST /hooks/wake
# 独立 Agent 轮次
POST /hooks/agent
# 自定义映射钩子
POST /hooks/<name>认证
Webhook 必须携带认证 Token:
curl -X POST http://127.0.0.1:18789/hooks/wake \
-H "Authorization: Bearer <your-hook-token>" \
-H "Content-Type: application/json" \
-d '{"message": "检查日报"}'Token 在配置中设置(hooks.token)。不支持 Query String 传递 Token。 认证失败会触发速率限制。
Hook 事件脚本
Hook 是 Gateway 内部的事件驱动脚本,响应特定生命周期事件。 每个 Hook 是一个文件夹,包含 HOOK.md(说明)和 handler.ts(处理逻辑)。
事件类型
| 事件 | 触发时机 |
|---|---|
| command:new/reset/stop | 用户发送 /new、/reset、/stop 时 |
| session:compact:before/after | 会话压缩前后 |
| agent:bootstrap | Agent 初始化时 |
| gateway:startup | Gateway 启动时 |
| message:received/sent | 消息收发时 |
内置 Hook
session-memory:在/new时保存上下文摘要bootstrap-extra-files:注入额外的 Workspace 文件到 Bootstrapcommand-logger:JSONL 格式的审计日志boot-md:启动时执行 BOOT.md 中的指令
# 安装 Hook 包
openclaw hooks install <npm-package>
# 查看已安装的 Hook
openclaw hooks listHeartbeat(心跳)
Heartbeat 是周期性 Agent 唤醒机制,不同于 Cron:
- Cron:定时执行特定任务,有明确的调度表达式
- Heartbeat:周期性唤醒 Agent 做「巡检」,更通用
{
agents: {
defaults: {
heartbeat: {
every: "30m",
channel: "telegram"
}
}
}
}最佳实践
- Webhook 端点保持在 loopback / Tailnet 内,使用专用 Token
- Cron 任务的 Isolated 模式避免污染主会话上下文
- 定期检查
openclaw cron list清理不再需要的任务 - Hook 脚本要做好错误处理,异常不应影响主流程
- Heartbeat 适合巡检类任务,Cron 适合精确定时任务