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 当一次性命令用——它得常驻运行。
夜雨聆风