乐于分享
好东西不私藏

OpenClaw 系列教程(六):你睡觉,它加班

OpenClaw 系列教程(六):你睡觉,它加班

OpenClaw 系列教程(六):你睡觉,它加班


前五篇讲的都是"你发消息,AI 回"。你问一句,它答一句。跟用搜索引擎没本质区别,只是多了点人情味。

但你的工作里,有多少事是不需要你开口、到点就该做的

  • 每天早上,你得翻一遍隔夜的群消息,挑重要的看
  • 每周一,你得写个项目进度周报
  • 每个小时,你想瞄一眼服务器队列有没有堆积 这些事的特点是:重复、定时、不需要你盯着。如果有个助手能到点自己干,干完把结果发给你,你是不是轻松多了?

OpenClaw 的定时任务,就是给 AI 排一张值班表


值班表怎么排?

三种排班方式,从简单到精确:

1. 闹钟模式 — 一次性任务,响完就关

openclaw cron add \
  --name "20分钟后提醒开会" \
  --at "20m" \
  --session main \
  --system-event "提醒:20分钟后有项目评审会,记得准备材料。" \
  --wake now

--at "20m" 表示 20 分钟后触发。也可以用精确时间戳,比如 --at "2026-08-05T14:00:00"。一次性任务跑完默认自动删除,不用你管。

2. 固定间隔 — 每隔多久跑一次

openclaw cron add \
  --name "每小时队列巡检" \
  --every "1h" \
  --session isolated \
  --message "检查系统队列状态,如果有堆积就报告。" \
  --announce

--every "1h" 表示每小时执行。也支持 10m(10分钟)、1d(1天)。

3. Cron 表达式 — 精确到"每周一早上 9 点"

openclaw cron create "0 9 * * 1" \
  "总结上周项目进展,列出本周计划。" \
  --name "周一早报" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --announce

五个字段分别是:分 时 日 月 周0 9 * * 1 = 每周一 9:00。时区一定要写 --tz "Asia/Shanghai",不然按服务器时区算,容易错。


值班干什么?四种活儿

排了班,得告诉 AI 上班干啥。OpenClaw 支持四种载荷,就像给值班的同事安排不同的任务类型:

载荷 干什么 要不要调模型
系统事件 --system-event 给主会话塞一条提醒 不调,纯提醒
智能体消息 --message 让 AI 思考并执行任务
命令 --command 跑一段 shell 脚本 不调,纯执行
脚本 --script 跑一段 JS,能用 AI 工具 不调,但能用工具

简单说:提醒用 system-event,干活用 message,跑脚本用 command,复杂逻辑用 script。


两种执行模式:在主线干还是单独开个工位

这点很关键——你的 AI 有两种"上班方式":

main 模式 — 在主会话里干。AI 有完整记忆,知道你是谁、之前聊过什么。适合提醒类任务。但不会把消息塞进你的聊天窗口,也不会延长会话保鲜期。

isolated 模式 — 单独开一个工位,每次都是全新的。没有上下文记忆,干完就走。适合报告、巡检这类不需要历史上下文的活儿。

# 主会话——提醒类,有上下文
openclaw cron add --name "日历检查" --at "20m" \
  --session main --system-event "检查今天日历有没有遗漏的会议。" --wake now

# 隔离——干活类,每次全新
openclaw cron create "0 7 * * *" "总结隔夜消息,挑出需要我关注的。" \
  --name "每日早报" --tz "Asia/Shanghai" --session isolated --announce

三个实战场景,直接抄作业

场景一:每日早报

每天早上 7 点,AI 自动总结隔夜群消息,发到你的微信。

openclaw cron create "0 7 * * *" \
  "总结隔夜消息,列出3条最重要的,用中文回复。" \
  --name "每日早报" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --announce \
  --channel openclaw-weixin

场景二:每周深度分析

每周一早上 6 点,用更强的模型做项目进度深度分析。

openclaw cron add \
  --name "周报深度分析" \
  --cron "0 6 * * 1" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "分析上周项目进展,对比计划与实际偏差,给出本周建议。" \
  --model "opus" \
  --thinking high \
  --announce

注意 --model "opus"--thinking high——定时任务可以单独指定模型和思考深度。日常巡检用普通模型省钱,重要分析用强模型保质。

场景三:每小时系统巡检

每小时整点跑一个 shell 脚本检查队列深度,有异常就通知。

openclaw cron create "0 * * * *" \
  --name "队列巡检" \
  --command "scripts/check-queue.sh" \
  --announce \
  --channel openclaw-weixin

--command 模式不调用模型,直接跑脚本,快且省钱。脚本输出什么,就推送什么。


外部触发:别人敲门,AI 开工

除了定时排班,OpenClaw 还支持外部触发——别的系统"敲门",AI 立刻起来干活。

配置 Webhook 端点后,你的邮件系统、CI/CD、监控系统都可以通过 HTTP 请求触发 AI 运行:

# 邮件来了,让 AI 汇总收件箱
curl -X POST http://127.0.0.1:18789/hooks/agent \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"message":"汇总新邮件,挑出需要立即回复的","name":"邮件处理"}'

甚至 Gmail 可以通过 Google PubSub 直连,收到邮件自动触发——完全不用你管。


管理你的值班表

排了班,还得能管理。常用命令汇总:

openclaw cron list              # 看所有在值班的任务
openclaw cron list --all        # 连已禁用的也看
openclaw cron enable <jobId>    # 重新启用
openclaw cron disable <jobId>   # 临时停掉,不删
openclaw cron run <jobId>       # 手动触发一次
openclaw cron runs --id <jobId> # 查看运行历史
openclaw cron edit <jobId> --message "新提示词"  # 改任务内容
openclaw cron remove <jobId>    # 删掉

两个容易踩的坑

1. 时区。 不写 --tz,按服务器时区算。服务器在国外的话,你的"早上 7 点"可能是人家的"下午 3 点"。养成习惯:国内用户一律加 --tz "Asia/Shanghai"

2. Gateway 必须活着。 定时任务跑在 Gateway 网关进程里,不是跑在模型里。Gateway 关了,所有定时任务全部停摆。所以别把 Gateway 当一次性命令用——它得常驻运行。