Skip to content
雲里
里雾

Cron 🌱 Seed

开发

aka: Cron Job, 定时任务

Content

Unix 系统中的定时任务调度器。用一行 cron 表达式(如 0 9 * * * 表示每天早上 9 点)定义任务的执行时间。在 OpenClaw 中用来触发瑶瑶的定期任务,比如早报推送、记忆整理等。

Acceptance

Question

  • cron 表达式的 */50,5,10,... 有什么区别?在跨午夜时行为是否一致?
  • OpenClaw 的 cron 和系统 crontab 的关系是什么?它是在 crontab 之上的抽象层吗?
  • dependsOn 的依赖检查是轮询还是事件驱动?如果上游任务失败了下游会怎样?

See Also

OpenClaw
Session
HEARTBEATS
幂等性

Reference

  • cron 维基百科:https://en.wikipedia.org/wiki/Cron
  • 来源:2026-03-20 Ghost-in-the-Shell cron 系统改造(briefing 流水线、defaults 机制、session 问题排查)

Answer

Q: */50,5,10,... 的区别?
功能上等价,都是每 5 分钟执行一次。*/5 是语法糖,展开后就是 0,5,10,15,20,25,30,35,40,45,50,55。跨午夜行为一致——cron 不关心”连续性”,它只在每分钟检查当前时间是否匹配表达式。

Q: OpenClaw cron vs 系统 crontab?
完全独立。OpenClaw cron 是应用层调度器,运行在 OpenClaw node 进程内,不依赖系统 crontab。它用自己的 cron 表达式解析器,支持 --message/--system-event 等 AI 专属 payload,以及 dependsOn 依赖链——这些系统 crontab 做不到。

Q: dependsOn 是轮询还是事件驱动?上游失败怎么办?
OpenClaw 内部是事件驱动——上游任务完成后触发下游检查。上游失败时下游不会被触发,会一直等待。没有自动超时跳过机制,需要手动 openclaw cron run 触发或等下一个调度周期。

Extra

Cron 表达式速查

五段式:分 时 日 月 周

字段范围示例
分钟0-5930 = 第 30 分钟
小时0-238 = 早上 8 点
1-311 = 每月 1 号
1-12* = 每月
周几0-71 = 周一(0 和 7 都是周日)

常用模式:

  • 0 8 * * * — 每天 08:00
  • 0 9,13,17,21 * * * — 每天 9/13/17/21 点
  • 30 3 * * 1 — 每周一 03:30
  • 0 4 1 * * — 每月 1 号 04:00

OpenClaw Cron 特有概念

Payload 类型

  • agentTurn--message):isolated session 专用,agent 收到消息后执行,输出通过 --announce 投递
  • systemEvent--system-event):main session 专用,注入系统事件。v2026.3.13 中不触发 agent 处理

dependsOn 依赖链

任务可以声明依赖:"dependsOn": ["morning-collect"],被依赖的任务完成后才执行。用于构建流水线(采集 → 生成 → 推送)。

per-job 覆盖

每个任务可以覆盖默认 model 和 timeout:"model": "anthropic/claude-opus-4-6", "timeoutSeconds": 600。仅 isolated 模式支持。

defaults 配置

schedules.json 支持顶层 defaults 块,job 未指定的字段自动继承:

{ "defaults": { "model": "anthropic/claude-opus-4-6", "session": "isolated" }, "jobs": [...] }
分享这张卡片:
分享到 X

Cron

#Unix