乐于分享
好东西不私藏

【OpenClaw 第 6 篇】Cron 定时引擎:让 AI 自己看表干活

【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 记录,可追溯

三种调度类型

类型
CLI 参数
示例
一次性
`–at`
`–at “2026-06-01T16:00:00Z”` 或 `–at 20m`
固定间隔
`–every`
`–every 30m` / `–every 6h`
Cron 表达式
`–cron`
`–cron “0 9 * * 1-5″`(工作日早9点)

Cron 表达式支持 5 字段和 6 字段格式,带 --tz 指定时区:

1
2
3
4
5
6
openclaw cron add \  --name "早间简报" \  --cron "0 7 * * *" \  --tz Asia/Shanghai \  --session isolated \  --message "生成今天的待办事项摘要"

四种执行风格

执行风格决定任务在哪个 Session 中运行:

风格
`–session`
运行环境
适用场景
Main Session
`main`
下一个 Heartbeat 轮次
提醒、系统事件
Isolated
`isolated`
独立 `cron:` Session
报告、后台任务
Current Session
`current`
创建时的当前 Session
需要上下文的周期任务
Custom Session
`session:xxx`
持久命名 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 表达式坑」?