Technical Guide

13. Cron:定时任务怎么长期运行

理解 OpenClaw 的 cron 能力:定时触发 agent、保存状态、投递结果和排查失败。

这篇解决什么问题

OpenClaw 不只是被动等消息。

Cron 让它可以做长期自动化:提醒、日报、检查、定时总结、定期监控。

相关目录

src/cron/
src/cron/service/
src/cron/store/
src/cron/run-log/
src/cron/isolated-agent/
src/cli/cron-cli/

这些目录说明 Cron 不是简单调用一次 setTimeout,而是有存储、服务、运行日志和隔离 agent 执行。

Cron 的基本链路

可以先这样理解:

cron store 保存 job
→ cron service 定期扫描到期任务
→ 为任务准备 prompt / agent / session / tools
→ 执行 agent 或脚本
→ 保存 run log
→ 按配置投递结果

为什么要 isolated-agent

定时任务通常无人值守。

它不应该污染普通聊天 session,也不应该依赖当前聊天窗口存在。

所以 OpenClaw 有 isolated-agent 相关目录,用于让 Cron 在更独立的上下文里执行。

Cron 和 Gateway 的关系

Cron 是时间入口。

Gateway 是消息入口。

它们最终都可能进入 Agent Runtime。

区别是:Cron 没有人现场补充上下文,所以 prompt、deliver、tools、workdir 要写得更明确。

常见用途

每天提醒看目标页
每天生成日报
定时检查服务器
定时同步知识库
定时检查邮件/日历
定时汇总某个 channel 的消息

排障顺序

1. job 是否存在并启用
2. schedule 是否解析正确
3. cron service 是否运行
4. job 是否触发
5. run log 是否有错误
6. agent/provider 是否失败
7. delivery 是否失败

不要把 Cron 当万能后台

如果任务只是当前会话里的并行工作,用普通工具或子任务更合适。

如果任务需要长期存在、定时运行、无人值守,才用 Cron。

下一篇看什么

下一篇看 Skills。