先说结论

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 实测。