【OpenClaw 第 6 篇】Cron 定时引擎:让 AI 自己看表干活
如果 AI 只是被动回复,它永远只能算半个助手。真正的「数字分身」应该能自己看表干活。
OpenClaw 的 Cron 引擎是 Gateway 内建的调度器。它能持久化任务、按时唤醒 Agent、并把结果推送到任意聊天渠道。

快速上手
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 添加一个一次性提醒openclaw cron add \ --name "日报提醒" \ --at "2026-06-01T16:00:00Z" \ --session main \ --system-event "该写日报了" \ --wake now \ --delete-after-run# 查看所有任务openclaw cron listopenclaw cron show <job-id># 查看执行历史openclaw cron runs --id <job-id>
Cron 的工作原理
Cron 跑在 Gateway 进程内部(不是模型内部)。任务定义持久化到磁盘:
1 2 ~/.openclaw/cron/jobs.json # 任务定义~/.openclaw/cron/jobs-state.json # 运行时状态
Gateway 重启不会丢失任务。jobs.json 可以放进 Git 版本控制(jobs-state.json 要 gitignore)。
关键行为:
– 一次性任务(--at)成功后自动删除
– 逾期任务在 Gateway 启动时不会立即重放,而是延后到渠道连接窗口之外——避免阻塞 Discord/Telegram 启动
– 任务执行创建 Background Task 记录,可追溯
三种调度类型
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Cron 表达式支持 5 字段和 6 字段格式,带 --tz 指定时区:
1 2 3 4 5 6 openclaw cron add \ --name "早间简报" \ --cron "0 7 * * *" \ --tz Asia/Shanghai \ --session isolated \ --message "生成今天的待办事项摘要"
四种执行风格
执行风格决定任务在哪个 Session 中运行:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Isolated 是最推荐的模式——每次运行都是干净的 Session,不会污染主对话,且运行结束后自动清理浏览器标签和 MCP 连接。
实战:每日早报
一个每天早上 7 点自动汇总收件箱并推送的配置:
1 2 3 4 5 6 openclaw cron add \ --name "每日早报" \ --cron "0 7 * * *" \ --tz Asia/Shanghai \ --session isolated \ --message "检查今天的未读邮件、日历事件,生成一段简洁的早间简报,推送到 Telegram"
实战:每周自动 PR Review 摘要
1 2 3 4 5 6 openclaw cron add \ --name "周报-PR摘要" \ --cron "0 9 * * 1" \ --tz Asia/Shanghai \ --session isolated \ --message "检查所有 GitHub 仓库上周的 PR 合并情况,生成一份开发者周报"
高级配置
工具限制
1 2 3 4 5 6 openclaw cron add \ --name "受限任务" \ --cron "0 * * * *" \ --session isolated \ --tools exec,read \ --message "检查磁盘使用率"
--tools 限制该任务能用的工具——比如一个磁盘监控任务不需要浏览器权限。
模型覆盖
1 2 3 4 openclaw cron add \ --model "deepseek/deepseek-chat" \ --thinking medium \ --message "..."
--model 和 --thinking 可以为每个任务独立配置,不影响其他任务。
Light Context
1 openclaw cron add --light-context --message "..."
跳过 workspace bootstrap 文件注入,减少 token 消耗。适合简单、无需上下文的任务。
防丢失机制
Cron 引擎有多层防丢设计:
1. Isolated 任务超时:Gateway 强制终止并清理,不会留下僵尸进程
2. 运行失败计数:Agent 级别的失败(模型/Provider 错误)会递增错误计数器,触发通知
3. 状态回复识别:如果 Agent 只回复了中间状态(如 “on it” ),Cron 会重新提示一次
4. 任务对账:运行时和持久化存储双重校验
避坑
1. Cron 的 day-of-month 和 day-of-week 是 OR 逻辑:0 9 15 * 1 不是「15号且周一」,而是「15号或每周一」。这是 Vixie cron 的标准行为。需要 AND 的话用 +1 修饰符:0 9 15 * +1。
2. Main Session 任务不会延长 Session 有效期:系统事件不刷新 Idle Reset 计时器。
3. Isolated 任务不继承上下文:如果你需要任务知道之前的对话历史,用 --session 。
下一步
Cron 让你的 Agent 变成主动工作的助手。最后一篇,我们退一步看全貌——Gateway 的架构设计、Agent Runtime、与 Hermes 的演进关系。
你设了哪些定时任务?有没有踩过「cron 表达式坑」?
夜雨聆风