⏰ OpenClaw 定时任务调度完全教程

Cron表达式 · 自动化调度 · 定时报告 · 运维自动化

导读:想让AI Agent每天自动帮你生成报告?定时检查网站状态?按计划执行运维任务?OpenClaw的Cron系统让这一切变得简单。本教程将详细讲解如何配置和使用定时任务。

🎯 Cron系统概述

OpenClaw的Cron系统支持三种调度类型:

类型说明使用场景
at一次性定时执行定时提醒、延迟任务
every固定间隔循环执行心跳检测、状态监控
cronCron表达式调度每日报告、定时巡检

🔧 基础配置

1. 创建定时任务

# 使用cron工具创建定时任务

# 示例:每天早上8点执行AI新闻日报生成
cron add --job '{
  "name": "daily-ai-news",
  "schedule": {
    "kind": "cron",
    "expr": "0 8 * * *",
    "tz": "Asia/Shanghai"
  },
  "payload": {
    "kind": "agentTurn",
    "message": "生成今日AI新闻日报"
  },
  "sessionTarget": "isolated"
}'

2. 三种Payload类型

# systemEvent - 向主session注入系统事件(用于提醒)
{"kind": "systemEvent", "text": "⏰ 提醒:该检查Discord社区了"}

# agentTurn - 启动独立Agent执行任务
{"kind": "agentTurn", "message": "执行SEO巡检", "timeoutSeconds": 300}

# agentTurn + current session
{"kind": "agentTurn", "message": "检查今天的待办任务"}

📅 Cron表达式详解

┌─────────── 分钟 (0-59)
│ ┌─────────── 小时 (0-23)
│ │ ┌─────────── 日 (1-31)
│ │ │ ┌─────────── 月 (1-12)
│ │ │ │ ┌─────────── 星期 (0-7)
│ │ │ │ │
* * * * *

常用Cron表达式

表达式含义示例场景
0 8 * * *每天早上8点每日新闻日报
0 */2 * * *每2小时RSS内容聚合
0 9 * * 1-5工作日早上9点工作日报告
0 0 * * 0每周日凌晨周报生成
30 6 * * *每天早上6:30踩坑实录发布
0 8,12,18 * * *每天8/12/18点热点追踪

🚀 实战案例

案例1:每日营销报告

cron add --job '{
  "name": "daily-marketing-report",
  "schedule": {"kind": "cron", "expr": "0 22 * * *", "tz": "Asia/Shanghai"},
  "payload": {
    "kind": "agentTurn",
    "message": "生成今日营销报告:内容产出、SEO数据、社区互动、竞品动态",
    "timeoutSeconds": 600
  },
  "sessionTarget": "isolated",
  "delivery": {"mode": "announce", "channel": "feishu"}
}'

案例2:网站健康巡检

cron add --job '{
  "name": "website-healthcheck",
  "schedule": {"kind": "every", "everyMs": 7200000},
  "payload": {
    "kind": "agentTurn",
    "message": "检查miaoquai.com:可访问性、状态码、SSL证书、如有异常通知",
    "timeoutSeconds": 120
  },
  "sessionTarget": "isolated"
}'

案例3:一次性提醒

cron add --job '{
  "name": "meeting-reminder",
  "schedule": {"kind": "at", "at": "2026-06-17T14:30:00+08:00"},
  "payload": {"kind": "systemEvent", "text": "⏰ 14:30有产品评审会议!"},
  "sessionTarget": "main",
  "deleteAfterRun": true
}'

⚙️ 任务管理

# 列出所有定时任务
cron list

# 查看特定任务详情
cron get --jobId "daily-ai-news"

# 暂停/恢复任务
cron update --jobId "daily-ai-news" --patch '{"enabled": false}'
cron update --jobId "daily-ai-news" --patch '{"enabled": true}'

# 删除任务
cron remove --jobId "daily-ai-news"

# 手动触发
cron run --jobId "daily-ai-news"

# 查看执行历史
cron runs --jobId "daily-ai-news"

🛡️ 最佳实践

  1. 合理设置超时 - 避免任务长时间挂起
  2. 失败告警 - 配置failureAlert在连续失败时通知
  3. 时区设置 - Cron表达式用本地时间,不要转UTC
  4. 任务隔离 - 使用isolated session避免干扰主会话
  5. 资源控制 - 避免同时触发太多任务造成API限流
⚠️ 注意:sessionTarget="main" 需要 payload.kind="systemEvent";sessionTarget="isolated" 需要 payload.kind="agentTurn"。两者不能混用!

🔗 相关资源