← 返回玩法首页
⏰ 定时任务

让 AI 自动为你工作

OpenClaw Cron 是 Gateway 内置的调度器,让 AI 可以在指定时间自动执行任务、发送提醒、推送早报

🎯 核心概念

Cron 是 Gateway 内置的任务调度器,有以下特点:

📅 定时提醒

设置一次性或重复提醒,到点自动通知

🔄 循环任务

支持 Cron 表达式,精确控制执行时间

💬 结果推送

任务完成后自动发送到微信/Telegram/Discord

🔔 唤醒模式

支持立即唤醒或等待下次心跳

⚡ 快速开始

1. 创建一次性提醒

openclaw cron add \
  --name "Reminder" \
  --at "2026-02-01T16:00:00Z" \
  --session main \
  --system-event "Reminder: check the cron docs draft" \
  --wake now \
  --delete-after-run

2. 创建循环任务(推送到 Slack)

openclaw cron add \
  --name "Morning brief" \
  --cron "0 7 * * *" \
  --tz "America/Los_Angeles" \
  --session isolated \
  --message "Summarize overnight updates." \
  --announce \
  --channel slack \
  --to "channel:C1234567890"

3. 查看和管理任务

# 列出所有任务
openclaw cron list

# 手动运行任务
openclaw cron run <job-id>

# 查看运行历史
openclaw cron runs --id <job-id> --limit 50

📅 执行模式

1. 主会话模式 (main)

任务加入系统事件队列,在下次心跳时运行。使用主会话上下文。

# 特点
- 使用正常的心跳提示词
- 共享主会话上下文
- 适合需要上下文的任务

2. 隔离会话模式 (isolated)

在独立的 cron:<jobId> 会话中运行专门的 Agent 轮次。

# 特点
- 每次运行是新的会话 ID
- 无历史对话继承
- 默认会推送结果摘要
- 适合频繁的后台任务

3. 当前会话模式 (current)

绑定到创建任务时的当前会话。

4. 命名会话模式 (session:custom-id)

在持久化的命名会话中运行,保持跨运行的上下文。

# 适合场景
- 每日站会(基于之前的总结继续)
- 项目监控(累积状态)
- 长期任务追踪

📆 调度类型

1. at - 一次性时间点

{
  "schedule": {
    "kind": "at",
    "at": "2026-02-01T16:00:00Z"
  }
}

2. every - 固定间隔

{
  "schedule": {
    "kind": "every",
    "everyMs": 300000  // 5 分钟
  }
}

3. cron - Cron 表达式

{
  "schedule": {
    "kind": "cron",
    "expr": "0 7 * * *",  // 每天早上 7 点
    "tz": "Asia/Shanghai"
  }
}

# Cron 表达式格式
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 日 (1 - 31)
│ │ │ ┌───────────── 月 (1 - 12)
│ │ │ │ ┌───────────── 星期 (0 - 6)
│ │ │ │ │
* * * * *

📤 结果推送

1. 宣布模式 (announce)

通过输出频道直接发送结果。

{
  "delivery": {
    "mode": "announce",
    "channel": "telegram",
    "to": "-1001234567890:topic:123",
    "bestEffort": true
  }
}

2. Webhook 模式

POST 到指定的 HTTP URL。

{
  "delivery": {
    "mode": "webhook",
    "to": "https://your-server.com/webhook"
  }
}

3. 无推送 (none)

仅内部执行,不推送结果。

💡 实用案例

案例 1:每日早报

# 每天早上 7 点自动发送早报
openclaw cron add \
  --name "每日早报" \
  --cron "0 7 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "汇总今天的热点新闻、天气信息、日程安排" \
  --announce \
  --channel telegram \
  --to "你的TelegramID"

案例 2:定时健康检查

# 每小时检查系统状态
openclaw cron add \
  --name "系统健康检查" \
  --cron "0 * * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "检查服务器状态,内存、CPU、磁盘使用情况" \
  --announce \
  --channel discord \
  --to "channel:123456789"

案例 3:待办提醒

# 20分钟后提醒
openclaw cron add \
  --name "会议提醒" \
  --at "20m" \
  --session main \
  --system-event "会议将在 10 分钟后开始" \
  --wake now \
  --delete-after-run

🔄 Cron vs Heartbeat

什么时候用 Cron?

  • 需要"每天早上执行"或"20分钟后提醒"
  • 需要精确的时间控制
  • 需要独立的任务执行和结果推送

什么时候用 Heartbeat?

  • 多个检查可以批量处理
  • 需要会话上下文
  • 时间可以稍微浮动

🎉 接下来做什么?

继续探索其他有趣的玩法

🌐 浏览器自动化 🎙️ 语音唤醒 🎨 Canvas 画布