首页 / OpenClaw 教程 / 自动化入门:cron / hooks / Webhooks

OpenClaw 教程

自动化入门:cron / hooks / Webhooks

本教程共 26 篇 · 第 17 篇 · 更新于 2026-07-27 · 约 5 分钟阅读

OpenClaw自动化cronhooksWebhook定时任务事件触发

17. 自动化入门:cron / hooks / Webhooks

本节目标:分清三种自动化机制——定时任务(cron)、事件钩子(hooks)、外部触发(Webhooks),知道各自适合什么,并写出一个最小示例。

为什么需要自动化

前面讲的都是”你发一句话,AI 回一句”。但很多事不该等人催:

  • 每天早上 8 点推一份行业简报。
  • 每次 /new 开新会话时,自动存一份旧会话摘要。
  • 你自己的服务器跑完脚本,主动通知 OpenClaw 来收结果。

这些就是自动化。OpenClaw 提供三套互补的机制。

cron:定时任务

cron 是网关(Gateway)内置的调度器。它常驻在网关进程里,按你定的时间唤醒 AI 或跑命令。

几个要点:

  • 网关必须在跑,定时任务才会触发。它不依赖模型自己记时间。
  • 任务定义、运行状态都存在 OpenClaw 的 SQLite 数据库里,重启不丢。
  • 调度类型很丰富:at(某时刻一次)、every(固定间隔)、cron(标准表达式)、on-exit(命令退出时)、stream(长命令逐行触发)。

最小示例,设一个每天早上的提醒:

openclaw cron add \
  --name "Morning brief" \
  --cron "0 8 * * *" \
  --session main \
  --system-event "该看今日简报了" \
  --wake now

也可以让 AI 真正去干活,而不只是提醒:

openclaw cron create "0 18 * * 1-5" \
  "总结今天部署了什么,输出成 JSON。" \
  --name "Deploy digest" \
  --webhook "https://example.invalid/openclaw/cron"
Note

任务结果有三种去向:announce(发到渠道)、webhook(POST 给某个 URL)、none(不主动发)。定时任务适合”时间到了就做”的活。

常用管理命令:

openclaw cron list          # 看已排的任务
openclaw cron run <id>      # 立刻跑一次
openclaw cron remove <id>   # 删除
Tip

想关掉整个调度器?配置 cron.enabled: false 即可。cron 表达式是”分 时 日 月 星期”五段,网上有现成生成器,不必硬背。

hooks:事件钩子

hooks 是”网关里某些事发生时,自动跑的一段小脚本”。比如:

  • 你打了 /new,它顺手把旧会话存进记忆。
  • 网关启动,它去跑一个 BOOT.md 初始化脚本。
  • 会话要被压缩(compact)了,它发条提示告诉你。

可用的事件类型包括:command:newcommand:resetsession:compact:beforegateway:startupmessage:receivedmessage:sent 等。

OpenClaw 自带几个开箱即用的钩子:

  • session-memory:开新会话/重置时,把上下文存到工作区 memory/
  • command-logger:把所有斜杠命令记到日志。
  • compaction-notifier:压缩会话时发状态提示。
  • boot-md:网关启动时跑 BOOT.md

启用一个自带的钩子很简单:

openclaw hooks enable session-memory

查看状态:

openclaw hooks list
openclaw hooks check
Note

hooks 分”内部钩子”(本页这种,适合运维类副作用)和”插件类型化钩子”(能拦截工具调用、改提示词,给插件开发者用)。日常用内部钩子就够了。

Warning

钩子脚本在网关进程里跑,出错了别往外抛,否则可能影响其他钩子。重活用”后台跑”的方式丢出去,别卡住命令处理。

Webhooks:让外部反过来触发

前两种都是”网关主动”。Webhooks 反过来:让别的系统主动敲网关的门。

比如你自己的 CI 跑完了,想让 OpenClaw 来总结,就由 CI 发一个 HTTP 请求给网关的 webhook 端点。

先在配置里打开:

{
  hooks: {
    enabled: true,
    token: "shared-secret",
    path: "/hooks"
  }
}

外部系统这样调用(带着令牌):

curl -X POST http://127.0.0.1:18789/hooks/wake \
  -H 'Authorization: Bearer SECRET' \
  -H 'Content-Type: application/json' \
  -d '{"text":"新邮件到了","mode":"now"}'

还有 /hooks/agent 能直接发起一次独立的 AI 回合。

Warning

webhook 端点千万别暴露公网。把它放在环回地址、内网 tailnet、或可信的反向代理后面。用专用令牌,别复用网关登录令牌;hooks.path 要放在独立子路径上。

三种怎么选

给你一张速查表:

机制触发条件适合
cron时间到了日报、定时检查、周期任务
hooks网关里某事件发了会话存档、启动初始化、消息日志
Webhooks外部系统来敲门CI 完成通知、第三方事件接入
Tip

三者能组合。比如 cron 定时跑一个检查,检查到变化就通过 webhook 让另一套流程接手。但新手建议先从单一机制玩起。

小结

自动化是让 OpenClaw 从”随叫随到”变成”不用叫也干活”的关键:

  • cron 管”什么时候做”。
  • hooks 管”发生某事时顺手做”。
  • Webhooks 管”外面来信号时做”。

下一章我们看节点(Nodes):怎么让手机也变成网关能指挥的一台”手脚”。