Cli 导读

用 openclaw cron 管理定时任务,先搞懂 delivery 默认行为

新增的孤立 cron job 默认会通过 --announce 推送结果,想静默执行必须加 --no-deliver。编辑任务时用 --channel 和 --to 指定推送目标,--deliver 已废弃,改用 --announce。

先讲这一页到底在解决什么

用 openclaw cron 管理定时任务,先搞懂 delivery 默认行为

新增的孤立 cron job 默认会通过 --announce 推送结果,想静默执行必须加 --no-deliver。编辑任务时用 --channel 和 --to 指定推送目标,--deliver 已废弃,改用 --announce。

原文共 20 节,先看 Start Here 路径:/cli/cron 查看官方原文

第一站

📅 先把 cron 想成“给小广播员排班”

整页其实都在讲排班表:谁什么时候开口,讲完要不要把结果送出去,出了错怎么重试,跑完后的旧记录留多久。

🗓️

cron add

像给广播员新建一条排班:名字、时间、讲什么。

✏️

cron edit

像把已经上墙的排班表改一下,换投递方式、换频道、换轻装模式。

▶️

cron run

像临时拍一下广播员肩膀说:“这条现在先手动排进去。”

📜

cron runs

像回头翻值班记录,看它后来到底跑没跑成。

第二站

📣 `--announce` 和 `--no-deliver`,其实是在决定“讲完要不要对外广播”

官方在这页反复强调 delivery,因为这件事最容易搞混。

--announce

像广播员讲完以后,真的拿着喇叭去 Telegram、Slack 这些门口播出去。

--no-deliver

像这次只在后台悄悄做,不往外喊,结果留在内部自己消化。

isolated job 默认 announce

官方提醒隔离式任务默认会送达,等于默认广播员会开口。你不想它说,就得显式让它闭嘴。

--deliver

这是旧说法,官方已经把它当成 --announce 的老别名。像老门牌还在,但新牌子更标准。

第三站

🪶 --light-context 像“让广播员轻装上阵,只带小纸条,不背整箱背景资料”

这条很关键,因为它决定任务运行时要不要把一整套 bootstrap 上下文都背上。

🎒

普通模式

像广播员出门前背上完整资料包,信息多,但也更重。

🪶

--light-context

像只带一句任务卡片出门,跑得更轻,少背一大包背景纸张。

🧍

只适合 isolated agent-turn jobs

官方说它只对这类任务真有意义,不是所有 cron 都会按同样方式轻装。

📌

一句话

想快一点、轻一点,就少背 bootstrap 大包。

第四站

🕰️ one-shot、时区、重试退避,这些都是在管“什么时候再响下一次铃”

cron 不是只会按固定时刻死板地响。官方这页把“响完删不删”“出错后隔多久再试”都讲清楚了。

--at one-shot

像只响一次的闹钟,响完默认自己从墙上消失。你要它留着,就带 --keep-after-run

--tz <iana>

像告诉闹钟“按哪座城市的墙上时钟算”。不写时区时,某些时间会被当成 UTC。

retry backoff

如果广播员连续几次摔跤,系统不会每秒都推他继续冲,而是 30 秒、1 分钟、5 分钟、15 分钟、60 分钟这样越摔越慢地再试。

cron run 只保证入队

现在手动触发只会告诉你“已经排进队伍了”,像工作人员先给你发一张取号单。真跑得怎么样,要去 cron runs 看后续记录。

第五站

🧹 retention / pruning 像“旧广播记录别一直堆满仓库”

官方把日志和 session 保留策略单独提出来,是因为这类定时任务最容易悄悄越积越多。

🗃️

cron.sessionRetention

像已经播完的隔离会话多久后清走,默认是 24 小时。

📄

cron.runLog.maxBytes / keepLines

像给运行记录本规定页数和厚度,太厚了就裁掉旧页。

🩺

老格式升级怎么办

如果你家里还留着老版本 cron 纸条,官方建议跑 openclaw doctor --fix,像请整理员把旧排班表重抄成新格式。

📌

一句话

cron 不只管“按时做”,还要管“做完别把仓库塞爆”。

最后总结

🎈 把 openclaw cron 压成一句话

openclaw cron 就像给 Gateway 养一群按时工作的广播员:先排班,再决定要不要对外播报,轻装还是重装,失败后多久重试,最后把旧记录按规则收拾掉。