深入理解 OpenClaw 的 Cron 调度系统
想象一下:每天早上8点,AI自动生成新闻日报并推送到群里;每2小时,自动检查网站死链;每周五,自动生成营销报告...这就是定时任务调度的魅力。
OpenClaw 的 Cron 系统不是简单的定时器,它支持:
| 表达式 | 含义 | 场景 |
|---|---|---|
| 0 8 * * * | 每天 08:00 | 每日日报推送 |
| 0 */2 * * * | 每2小时 | RSS内容聚合 |
| 0 9 * * 1-5 | 工作日 09:00 | 工作日提醒 |
| 0 0 1 * * | 每月1号 00:00 | 月度报告 |
| 30 18 * * 5 | 每周五 18:30 | 周报总结 |
| 0 8,12,18 * * * | 每天8/12/18点 | 热点追踪 |
{
"name": "每日早安提醒",
"schedule": { "kind": "cron", "expr": "0 8 * * *", "tz": "Asia/Shanghai" },
"payload": {
"kind": "systemEvent",
"text": "⏰ 早安!今天是 {date},请查看今日待办事项。"
},
"sessionTarget": "main"
}
{
"name": "每日AI新闻生成",
"schedule": { "kind": "cron", "expr": "0 7 * * *", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "搜索今日AI行业热点新闻,生成新闻日报HTML页面,保存到 /var/www/miaoquai/news/ 目录。",
"timeoutSeconds": 300
},
"sessionTarget": "isolated",
"delivery": { "mode": "announce", "channel": "feishu" }
}
{
"name": "30分钟后提醒开会",
"schedule": {
"kind": "at",
"at": "2026-06-05T04:30:00+08:00"
},
"payload": {
"kind": "systemEvent",
"text": "⏰ 提醒:10分钟后有团队会议,请准备!"
},
"sessionTarget": "main"
}
{
"name": "关键任务",
"schedule": { "kind": "cron", "expr": "0 8 * * *" },
"payload": { "kind": "agentTurn", "message": "..." },
"failureAlert": {
"after": 3,
"channel": "feishu",
"to": "user_xxx",
"cooldownMs": 3600000
}
}
# 复杂任务编排示例
# 主任务完成后触发子任务
# 主任务:数据采集
main_task = {
"name": "数据采集",
"schedule": {"kind": "cron", "expr": "0 6 * * *"},
"payload": {"kind": "agentTurn", "message": "采集竞品数据..."},
"sessionTarget": "isolated"
}
# 子任务:数据分析(主任务完成后触发)
sub_task = {
"name": "数据分析",
"schedule": {"kind": "at", "at": "计算后的时间"},
"payload": {"kind": "agentTurn", "message": "分析采集的数据..."},
"sessionTarget": "isolated"
}
| 时间 | 任务 | 类型 |
|---|---|---|
| 01:00 | 大规模SEO页面生成 | agentTurn |
| 02:00 | SEO巡检(死链/meta/sitemap) | agentTurn |
| 03:00 | 竞品监控分析 | agentTurn |
| 04:00 | 术语百科页面生成 | agentTurn |
| 05:00 | 热点追踪(第1次) | agentTurn |
| 06:00 | 踩坑实录创作 | agentTurn |
| 08:00 | AI新闻日报 | agentTurn |
| 12:00/18:00 | 热点追踪(第2/3次) | agentTurn |
| 22:00 | 每日营销报告 | agentTurn |
| 每2小时 | RSS内容聚合 | agentTurn |
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 任务未执行 | 时区配置错误 | 检查 tz 参数,使用 IANA 时区格式 |
| 任务执行超时 | timeout 设置过短 | 增加 timeoutSeconds,复杂任务建议 300+ |
| 重复执行 | 时区与 UTC 混淆 | Cron 表达式使用本地时间,tz 指定时区 |
| 任务失败无告警 | 未配置 failureAlert | 添加告警配置,设置合理的 after 值 |