5.1 Cron定时任务入门

生成模型:OpenAI GPT-5.3 Codex (openai/gpt-5.3-codex) Token 消耗:输入 ~22k tokens,输出 ~5.6k tokens(估算)


前面你已经看到 OpenClaw 会聊天、会调用工具,但它默认还是“你说一句,它做一句”。Cron 的意义在于把它变成“你不说,它也会按计划做事”。很多人第一次配完 Cron 任务,第二天起床看到机器人已经把天气和摘要发来了,会直观感受到:这不只是聊天机器人,而是一套自动值班系统。

这一节从使用者视角把 OpenClaw 的 Cron 跑通:Cron 是什么、表达式怎么读、任务如何创建管理、结果如何投递、常见坑怎么避开。我们不做第 26 章源码深挖,只讲马上能用起来的知识。

5.1.1 Cron 到底是什么

Cron 最早来自 Unix/Linux 世界,本质是一个定时调度器(Scheduler)。你给它一条时间规则,它就会在对应时刻触发任务。

在传统服务器里,这个任务通常是一段 shell 命令;在 OpenClaw 里,这个任务更像“发起一轮 Agent 执行”。也就是:

  • 传统 Cron:到点执行脚本

  • OpenClaw Cron:到点唤醒 Agent,Agent 可以继续调用工具、整合信息、产出结果并投递

这就是为什么 OpenClaw 的 Cron 不只是“定时提醒”。它可以做真正的自动化流程,比如“每天 8 点抓天气 -> 生成建议 -> 发 Telegram”,或者“每 15 分钟巡检服务 -> 异常就解释并给修复建议 -> 发 Slack”。

衍生解释 - 调度(Scheduling)

“调度”就是安排任务在什么时机、以什么顺序运行。它不负责任务内容有多聪明,只负责让任务在正确时间被执行。Cron 就是一种经典调度方式。

5.1.2 Cron 表达式:5 列就够你上手

OpenClaw 常用 5 段 Cron 表达式:

分 时 日 月 周

也就是从左到右:分钟、小时、每月第几天、第几月、星期几。

最经典示例:

含义:每天早上 8 点执行

再看几个你会经常用到的:

每 15 分钟执行一次。

每周一 9:30 执行。

每个工作日(周一到周五)22:00 执行。

每月 1 号零点执行。

常见符号说明:

  • *:任意值(每一个)

  • */n:每 n 个单位一次

  • a-b:范围

  • a,b,c:枚举

新手最容易踩的坑是把“分”和“时”写反:

  • 8 0 * * * 是每天 00:08

  • 0 8 * * * 才是每天 08:00

写完 Cron 后建议用中文读一遍;读不顺,规则大概率有问题。

5.1.3 OpenClaw 一条定时任务由什么组成

你可以把一个 Cron 任务拆成四个问题:

  1. 何时跑schedule

  2. 跑什么payload.message

  3. 在哪跑sessionTarget

  4. 结果送哪delivery

对应到配置结构通常长这样:

你不一定每天都手写 JSON,CLI 也能创建任务;但你必须看得懂这套结构,后面排错和迁移都会用到。

5.1.4 session 选主会话还是隔离会话

Cron 任务在 OpenClaw 里最常见两种运行位置:

  • main(主会话)

  • isolated(隔离会话)

简单理解:

  • 主会话:任务会复用你日常聊天上下文,适合“持续跟进同一话题”

  • 隔离会话:每个任务在单独上下文跑,更干净,适合高频巡检和后台自动化

实践建议很直接:只要不是必须依赖当前聊天上下文,优先用 isolated。这会减少上下文污染,也更容易复盘每次运行。

5.1.5 创建和管理 Cron 任务(CLI)

示例:每天 8 点发天气简报到 Telegram。

常用管理命令:

建议形成一个小习惯:新任务一律先 run --force 人工试跑一次。别等真实触发时间到了才发现表达式或投递目标写错。

5.1.6 Delivery Plan:结果发给谁

Cron 任务“执行成功”不等于“自动化闭环成功”。你还要明确结果怎么送出去。OpenClaw 常见三种投递模式:

1) announce:发到聊天渠道

适合人要看的通知,比如日报、巡检摘要、告警提示。

2) none:只执行,不主动外发

适合后台计算、预处理、静默巡检等不希望刷屏的任务。

3) webhook:POST 到外部系统

适合机器对机器联动,比如告警系统、工单系统、数据流水线。

5.1.7 三个上手就能用的 Cron 示例

示例 A:每天 8 点天气推送

  • Cron:0 8 * * *

  • 含义:每天 8:00

  • 用途:出门前一眼看完天气和通勤建议

示例 B:每 15 分钟服务巡检

  • Cron:*/15 * * * *

  • 含义:每 15 分钟

  • 用途:轻量运维值班,异常时第一时间通知

示例 C:工作日 22:00 日报归档

  • Cron:0 22 * * 1-5

  • 含义:周一到周五每天 22:00

  • 用途:把当天工作摘要自动归档到外部系统

这些场景看起来简单,但组合起来已经是一个“个人运维 + 个人信息中台”的雏形了。

5.1.8 常见坑与规避建议

  • 时间写对了,时区没写:服务器在海外会直接错时,建议显式写 tz

  • 任务描述太空:不要只写“检查系统”,要写检查项和输出格式

  • 高频任务放主会话:上下文会迅速变脏,优先 isolated

  • 投递目标用 last 但路由不稳定:多渠道场景建议写死 channel + to

  • 一上来就高风险自动修复:先“自动诊断 + 人工确认”,再逐步放权

本节小结

Cron 让 OpenClaw 从“被动问答”进入“主动执行”。你真正要掌握的核心只有四件事:会读 Cron 表达式(如 0 8 * * * 是每天 8 点)、会选运行会话(优先 isolated)、会配结果投递(announce / none / webhook)、会在上线前用 run --force 验证。把这四件事用顺,自动化就不再是概念,而是每天都在替你省时间的基础设施。

Last updated