导读:想让AI Agent每天自动帮你生成报告?定时检查网站状态?按计划执行运维任务?OpenClaw的Cron系统让这一切变得简单。本教程将详细讲解如何配置和使用定时任务。
🎯 Cron系统概述
OpenClaw的Cron系统支持三种调度类型:
| 类型 | 说明 | 使用场景 |
|---|---|---|
| at | 一次性定时执行 | 定时提醒、延迟任务 |
| every | 固定间隔循环执行 | 心跳检测、状态监控 |
| cron | Cron表达式调度 | 每日报告、定时巡检 |
🔧 基础配置
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"
🛡️ 最佳实践
- 合理设置超时 - 避免任务长时间挂起
- 失败告警 - 配置failureAlert在连续失败时通知
- 时区设置 - Cron表达式用本地时间,不要转UTC
- 任务隔离 - 使用isolated session避免干扰主会话
- 资源控制 - 避免同时触发太多任务造成API限流
⚠️ 注意:sessionTarget="main" 需要 payload.kind="systemEvent";sessionTarget="isolated" 需要 payload.kind="agentTurn"。两者不能混用!