先说结论
cron 任务 = 在某个时间点,自动执行一段指令/一个脚本/生成一份报告,还能推到你的微信。
本机真实在跑的 3 个(数据来自 openclaw cron get):
| 任务 | 时间 | 表达式 | 干啥 |
|---|---|---|---|
| 内容工厂(公众号×1+小红书×1) | 每天 01:30 | 30 1 * * * |
低谷价批量产出内容 |
| 养虾日报 | 每天 06:30 | 30 6 * * * |
生成 AI 赛道付费日报 |
| 每日项目日报 | 每天 08:00 | 0 8 * * * |
汇总当日项目进展 |
注意时区——都是 Asia/Shanghai,别写成 UTC 否则差 8 小时。
场景:我要 cron 干啥
我不希望每天手动去触发这些事。它们有共同特点:固定时间、批量、不需要我盯着。让 AI 在我睡觉/吃饭时自己跑,醒来直接看结果,这才是自动化的意义。
配置步骤(真实命令)
步骤 1:看现有任务
openclaw cron list
列出所有已配置的任务和启用状态。
步骤 2:建一个定时任务
openclaw cron add \
--name "养虾日报-每日06:30" \
--cron "30 6 * * *" \
--tz "Asia/Shanghai" \
--prompt "生成今日 OpenClaw/AI 智能体赛道付费日报" \
--channel openclaw-weixin
关键参数:
--cron:标准 5 段式(分 时 日 月 周)。30 6 * * *= 每天 6:30--tz:必须显式指定时区,否则按服务器时区(很可能是 UTC),你设的 06:30 会变成北京时间 14:30--channel:跑完推到哪个渠道(这里是微信)
步骤 3:确认建对了
openclaw cron get <任务id>
本机真实返回(节选):
{
"name": "养虾日报-每日06:30",
"schedule": {"kind": "cron", "expr": "30 6 * * *", "tz": "Asia/Shanghai"}
}
步骤 4:看它跑过没、成没成
openclaw cron runs --id <任务id> --limit 5
能看到最近 5 次触发的时间、状态、有没有推送到。
翻车记录(真实)
坑 1:时区默认 UTC
最早建任务没加 --tz,设了 30 6 * * * 想当然以为是北京时间,结果大半夜被推送吵醒——服务器时区是 UTC,6:30 UTC = 14:30 北京。加上 --tz "Asia/Shanghai" 才对。
坑 2:任务成功 ≠ 推送成功
这是最坑的。看 cron runs 里某次:
{
"status": "ok",
"delivery": {"delivered": false, "resolved": {"ok": true}, "fallbackUsed": true}
}
任务本身跑成功了(status: ok),但微信没收到(delivered: false)。详情见另一篇《OpenClaw 推送失败自检清单》。
坑 3:任务多了互相抢资源
本机 3 个任务集中在 01:30~08:00,都是低峰,没问题。但如果把高消耗的活全堆在同一分钟,小服务器(2核3.4G)会卡。错峰排是基本素养。
成本账单
| 项目 | 金额 |
|---|---|
| cron 功能 | ¥0(OpenClaw 内置) |
| 服务器 | 已有 |
| 每次运行的 API | 按量(低谷价更省) |
纯新增:0 元。
效果
- 3 个定时任务每天自动跑,不用手动触发
- 跑完推微信,醒来直接看
- 低谷价时段(01:30)跑重活,省 API 钱
下一步
cron 跑起来了,但"推送失败静默"那个坑不解决,等于盲跑。下一篇写《OpenClaw 推送失败自检清单》,把今天那次 delivered:false 的排查路径完整记下来。
本文命令与 cron 数据均来自本机真实环境(OpenClaw 2026.8.2),非推测。任务时间 2026-09-07 实测。
