🦞OpenClaw ClawBook

自动化

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:bootstrapAgent 初始化时
gateway:startupGateway 启动时
message:received/sent消息收发时

内置 Hook

  • session-memory:在 /new 时保存上下文摘要
  • bootstrap-extra-files:注入额外的 Workspace 文件到 Bootstrap
  • command-logger:JSONL 格式的审计日志
  • boot-md:启动时执行 BOOT.md 中的指令
# 安装 Hook 包
openclaw hooks install <npm-package>

# 查看已安装的 Hook
openclaw hooks list

Heartbeat(心跳)

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 适合精确定时任务