OpenClaw 内置了一个强大的 Gateway 调度器,支持持久化定时任务,在正确的时间唤醒 Agent,并可选择将输出推送到指定聊天频道。无论是每日早报、定时提醒还是后台巡检,Cron Jobs 都能胜任。
核心概念速览
- Cron 运行在 Gateway 内部(不在模型内部)
- 任务持久化在
~/.openclaw/cron/jobs.json,重启不丢失 - 两种执行模式:
- 主会话(Main session):将系统事件加入队列,在下次心跳时运行
- 隔离会话(Isolated):在
cron:<jobId>中运行独立的 Agent 会话
快速开始
创建一次性提醒
bash
openclaw cron add \
--name "下午会议提醒" \
--at "2026-03-01T09:00:00+08:00" \
--session main \
--system-event "提醒:下午 3 点有产品评审会议" \
--wake now \
--delete-after-run创建每日定时任务(带频道推送)
bash
openclaw cron add \
--name "每日早报" \
--cron "0 8 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "请汇总今日 AI 行业最新动态" \
--announce \
--channel telegram \
--to "你的Telegram用户ID"管理任务
bash
# 查看所有任务
openclaw cron list
# 立即手动运行某个任务
openclaw cron run <job-id>
# 查看运行历史
openclaw cron runs --id <job-id>
# 删除任务
openclaw cron remove <job-id>调度类型
Cron 支持三种调度方式:
| 类型 | 参数 | 说明 |
|---|---|---|
at | --at "ISO 8601时间" | 一次性,指定精确时间 |
every | --every 3600000 | 固定间隔(毫秒) |
cron | --cron "0 8 * * *" | 标准 5 字段 Cron 表达式 |
Cron 表达式支持 IANA 时区,使用 --tz "Asia/Shanghai" 指定。
防峰值抖动:对于整点触发的 Cron 任务(如 0 * * * *),OpenClaw 自动添加最多 5 分钟的随机抖动,避免大量 Gateway 同时触发。固定小时的表达式(如 0 8 * * *)保持精确。
两种执行模式详解
主会话模式(Main Session)
任务在主会话心跳时运行,带有完整的主会话上下文,适合需要访问历史对话的任务。
wakeMode: "now"(默认):立即触发心跳wakeMode: "next-heartbeat":等到下次计划心跳
隔离会话模式(Isolated)
在独立会话 cron:<jobId> 中运行,适合不需要主会话上下文的后台任务:
- 每次运行启动全新会话 ID,无历史对话
- Prompt 前缀
[cron:<jobId> <任务名>]便于追踪 - 默认推送输出摘要(
delivery.mode = "announce")
推送模式
隔离任务支持三种推送方式:
Announce 推送(推荐)
直接通过频道适配器推送,同时在主会话中发布简短摘要:
bash
openclaw cron add \
--name "周报生成" \
--cron "0 18 * * 5" \
--session isolated \
--message "请生成本周工作总结" \
--announce \
--channel telegram \
--to "你的用户ID"Webhook 推送
将任务完成事件 POST 到指定 URL:
json
{
"delivery": {
"mode": "webhook",
"to": "https://your-webhook.example.com/cron"
}
}无推送(内部任务)
json
{ "delivery": { "mode": "none" } }模型与思考级别覆盖
为特定 Cron 任务指定不同模型:
bash
openclaw cron add \
--name "深度分析" \
--cron "0 2 * * 0" \
--session isolated \
--message "请对本周数据进行深度分析" \
--model "anthropic/claude-opus-4-20250514" \
--thinking high实用示例
每 30 分钟检查一次
bash
openclaw cron add \
--name "定期巡检" \
--cron "*/30 * * * *" \
--session isolated \
--message "检查系统状态并汇报"工作日早 9 点提醒(北京时间)
bash
openclaw cron add \
--name "工作日早报" \
--cron "0 9 * * 1-5" \
--tz "Asia/Shanghai" \
--session main \
--system-event "新的工作日开始,请检查今日日程"故障排查
任务不触发?
- 检查 Gateway 是否在运行:
openclaw gateway status - 验证时区设置是否正确
- 查看
~/.openclaw/cron/jobs.json中的任务状态
Telegram 推送到错误的位置?
- 检查
--to参数的用户/群组 ID 是否正确 - 确认
--channel telegram已指定
原文:Cron Jobs - OpenClaw | 来源:OpenClaw 官方文档