
一、为什么 OpenClaw 的 CronJobs 不等同于系统 crontab
很多人第一次接触 OpenClaw 调度器,会下意识把它当作”带 AI 的 crontab”。这种理解只对了一半。OpenClaw 调度器在 2026 年 3 月的 v3.2 版本中重构了执行引擎,现在每个任务都被建模为有向无环图(DAG)节点,而不是一行行 shell 脚本。这意味着:
- 任务可以引用前序节点的输出(
${node.output}),不必再写临时文件; - 单次失败会触发依赖回滚,而不是简单记录到日志里;
- 每个任务都自带 OpenTelemetry trace,可以直接在控制台看到每一步耗时。
如果还停留在”复制一份 crontab 改时间”的思路,很快就会遇到 LLM 调用超时、上下文丢失、状态不可追溯的连环问题。下面从表达式写起,把早间简报、晚间汇总、监控告警三个最常见的工作流拆开讲清楚。
二、Cron 表达式:别再被 5 位表达式坑了
1. 6 位表达式是 OpenClaw 的默认格式
OpenClaw 用的是带秒级的 6 位表达式:秒 分 时 日 月 周。系统 crontab 的 5 位格式在 OpenClaw 里会被解析为非法,导致任务静默失败——这是社区 issue 区出现频率最高的报错之一。
# 错误:5 位表达式 0 7 * * * /run/briefing.sh # 正确:6 位表达式,含义为每天 07:00:00 触发 0 0 7 * * * workflow:morning-briefing # 工作日(周一到周五)07:30:00 触发 0 30 7 * * 1-5 workflow:weekday-briefing
2. 命名规范比表达式本身更重要
我见过一个团队在 OpenClaw 里挂了 40 多个定时任务,名字全是 task1、job_new、test_final_v3,上线两个月后没人敢动配置。建议遵循 频率-业务-动作 三段式:
daily-sales-rollup hourly-error-scrubber weekly-llm-cost-report every-5min-healthcheck
这样的命名在 openclaw cron list 输出里可以一眼看出业务边界,审计时也方便按前缀过滤。
三、早间简报:从抓取到推送的完整工作流
早间简报是 OpenClaw 调度器最典型的”链式任务”案例。一个合格的简报至少要包含三步:抓取、摘要、推送。把它写成单个工作流定义文件 ~/.openclaw/workflows/morning-briefing.yaml:
name: morning-briefing
schedule: "0 0 7 * * 1-5"
timezone: Asia/Shanghai
timeout: 600s
retry:
max: 2
backoff: exponential
nodes:
- id: fetch_news
type: http
config:
url: "https://news.api/tech?limit=20"
headers:
Authorization: "Bearer ${env.NEWS_TOKEN}"
output: raw_news
- id: summarize
type: llm
depends_on: [fetch_news]
config:
model: openclaw-mini
prompt: |
你是科技行业分析师,请把以下新闻整理成 5 条要点,
每条不超过 30 字,并标注影响等级(高/中/低)。
输入:${fetch_news.output}
output: brief
- id: send
type: feishu
depends_on: [summarize]
config:
webhook: "${env.FEISHU_WEBHOOK}"
message: "☀️ 早间科技简报\n${summarize.output}"提交到调度器:
openclaw workflow apply -f morning-briefing.yaml openclaw cron enable morning-briefing openclaw cron list --filter name=morning
这里有一个细节很多人忽略:timezone 字段必须显式声明。OpenClaw 服务器默认跑在 UTC,如果部署在海外节点,不写时区会导致简报比预期早 8 小时到达飞书群。
四、晚间汇总与监控告警:把”被动响应”变成”主动巡逻”
1. 晚间数据汇总的并行写法
晚间任务通常更重:拉取当天日志、跑聚合 SQL、生成 PDF、上传到 OSS。如果写成串行,光 SQL 跑完就要 5 分钟。OpenClaw 支持节点级并发:
nodes:
- id: pull_logs
type: http
config: { url: "https://logs.api/today" }
- id: pull_metrics
type: promql
config: { query: "sum(rate(http_requests_total[1d]))" }
- id: pull_orders
type: mysql
config:
dsn: "${env.MYSQL_DSN}"
query: "SELECT region, SUM(amount) FROM orders WHERE day=CURDATE() GROUP BY region"
- id: aggregate
type: llm
depends_on: [pull_logs, pull_metrics, pull_orders]
config:
model: openclaw-pro
prompt: "基于以下三类数据生成晚间运营报告:${pull_logs.output} | ${pull_metrics.output} | ${pull_orders.output}"三个拉取节点并行执行,总耗时从 12 分钟压缩到 4 分钟。LLM 汇总节点会自动等待所有依赖完成。
2. 监控告警:用 CronJob 弥补告警系统的盲区
很多人误以为接了 Prometheus Alertmanager 就万事大吉,LLM 服务的”语义异常”——比如返回内容突然从中文变成英文、JSON 结构崩坏、token 消耗突增三倍——传统指标很难捕捉。可以用 CronJob 做语义巡检:
name: llm-quality-guard
schedule: "0 */15 * * * *" # 每 15 分钟
nodes:
- id: sample
type: llm
config:
model: openclaw-pro
prompt: "请用 JSON 格式输出 5 个数字"
samples: 3
- id: detect
type: script
depends_on: [sample]
config:
runtime: python3
code: |
import json, sys
results = ${sample.output}
failures = [r for r in results if not r.get('valid_json')]
if len(failures) >= 2:
print("ALERT: LLM 语义异常率", len(failures)/len(results))
sys.exit(1)
- id: notify
type: webhook
depends_on: [detect]
when: failed
config:
url: "${env.PAGER_WEBHOOK}"
payload: { "severity": "P3", "service": "openclaw-pro" }关键在 when: failed:告警节点只在前置节点失败时触发,避免了”健康时也发心跳”的告警风暴。
五、生产环境的五个排坑建议
- 幂等性是底线:任何带”写”操作的任务(发邮件、扣库存)必须设计幂等键。OpenClaw 提供了
${run.id}系统变量,把它作为外部系统的请求 ID 即可。 - 超时分级:HTTP 类节点建议 30s,LLM 类建议 120s,SQL 类根据数据量动态设置。一刀切 600s 会让真正出问题的任务难以快速失败。
- 禁用通配符的星期字段:
* * * * * 1-5在某些版本里会被误解析为周日到周四。新版本已修复,但旧实例升级前需要审计。 - 日志归档:执行日志默认只保留 7 天,跑
openclaw logs export --since 30d --to s3://bucket/logs/定期归档,月底对账时不会抓瞎。 - 灰度新工作流:先用
openclaw workflow run --once手动触发 3 次,确认无异常再enable调度。社区里至少三起”定时任务上线即雪崩”的案例,都是因为跳过了这步。
把 CronJobs 用好的本质,是把”人记得去做什么”转成”系统记得去做”。OpenClaw 调度器在 2026 年已经足够稳定,剩下的只是工作流设计是否经得起凌晨三点的考验——而这恰恰是需要在 YAML 里写清楚的。
整理自 OpenClaw 官方文档 | 2026年07月07日
📊 常见问题解答
❓ OpenClaw 是什么?
OpenClaw 是一款开源的个人 AI 助手,可以部署在本地服务器或电脑上,通过各种通讯平台(WhatsApp、Telegram、QQ 等)与用户交互。
❓ OpenClaw 安全吗?
OpenClaw 支持多种安全配置,包括 allowFrom 白名单、沙盒模式、数据本地存储等,可以根据需求选择合适的安全等级。
❓ 如何开始使用 OpenClaw?
访问 OpenClaw 官方文档,按照快速入门指南操作,5分钟即可完成基础配置。
📈 相关数据
- ⭐ GitHub 星标:270,000+
- 📚 支持平台:20+
- 🌐 全球用户:数百万
🔗 参考资料: OpenClaw 官方文档 | GitHub