乐于分享
好东西不私藏

OpenClaw 系列(二):5 分钟跑通第一个 OpenClaw 任务

OpenClaw 系列(二):5 分钟跑通第一个 OpenClaw 任务
导读
:本文是 OpenClaw 实战系列的第二篇。我们会用一个"到点巡检 + 条件提醒"的例子,带你从零跑通,并讲清:工具怎么接、失败怎么重试、结果怎么输出。

一、为什么需要自动化任务?

想象一下这些场景:

  • 每天早上 9 点,自动检查服务器状态并发送简报

  • 每周五下午,自动整理本周任务完成情况

  • 重要会议前 30 分钟,自动提醒参会人员

  • 系统异常时,自动检测并通知负责人

这些重复性、定时性的工作,交给 OpenClaw 就对了。

OpenClaw 是什么?

OpenClaw 是一个运行在本地的 AI 智能体,它能:

  • 🤖 理解自然语言指令

  • 🔧 调用各种工具(文件、浏览器、日历、消息等)

  • ⏰ 按时自动执行任务

  • 📬 把结果推送到你指定的渠道(飞书、微信、Telegram 等)


二、我们的目标:到点巡检 + 条件提醒

今天我们要实现的任务:

每天早上 9 点,自动检查系统状态,如果有异常就发送提醒消息

听起来复杂?其实只需要 3 步:

  1. 创建一个定时任务(cron job)

  2. 定义检查逻辑(agent turn)

  3. 配置结果输出(delivery)


三、5 分钟快速上手

第一步:创建定时任务

打开终端,执行以下命令:

openclaw cron add \
  --name "每日晨检" \
  --cron "0 9 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "检查系统状态:1.查看磁盘使用率 2.检查关键服务状态 3.如有异常发送飞书通知" \
  --announce \
  --channel feishu

参数解读:

参数

含义

--name

任务名称,方便后续管理

--cron

cron 表达式,0 9 * * * 表示每天 9:00 执行

--tz

时区,设为 Asia/Shanghai 确保是北京时间

--session isolated

在独立会话中执行,不干扰主对话

--message

任务指令,用自然语言描述要做什么

--announce

执行完成后自动推送结果

--channel

推送渠道

第二步:验证任务已创建

openclaw cron list

你会看到类似输出:

Jobs:
  [✓] job_abc123  每日晨检  cron: 0 9 * * * (Asia/Shanghai)  isolated

第三步:立即测试(不用等到明天 9 点)

openclaw cron run job_abc123

任务会立即执行一次,你可以在飞书中看到执行结果。


四、核心概念详解

4.1 调度方式(Schedule)

OpenClaw 支持三种调度模式:

① 一次性任务(at)

openclaw cron add \
  --name "会议提醒" \
  --at "2026-03-16T14:30:00+08:00" \
  --session main \
  --system-event "提醒:15 分钟后有技术评审会议"

适合:临时提醒、单次任务

② 固定间隔(every)

openclaw cron add \
  --name "心跳检测" \
  --every 30m \
  --session isolated \
  --message "检查服务可用性"

适合:周期性巡检,如每 30 分钟检查一次

③ Cron 表达式(cron)

# 每周一早上 6 点
--cron "0 6 * * 1"

# 每小时整点
--cron "0 * * * *"

# 工作日每天 9 点
--cron "0 9 * * 1-5"

适合:复杂的定时需求

4.2 执行模式(Session Target)

主会话模式(main)

--session main --system-event "检查日历"

  • 任务会插入到主对话的下一个心跳周期

  • 适合:需要上下文连贯的任务

  • 输出:直接出现在当前对话中

独立会话模式(isolated)

--session isolated --message "生成日报"

  • 每次执行都是全新的会话,不携带历史对话

  • 适合:背景任务、频繁执行的任务

  • 输出:可通过 delivery 配置推送到指定渠道

4.3 结果输出(Delivery)

模式一:自动推送(announce)

--announce --channel feishu --to "chat:oc_xxx"

执行完成后,自动将结果推送到飞书群聊或私聊。

模式二:Webhook回调

--delivery.mode webhook --delivery.to "https://your-server.com/hook"

适合:需要将结果推送到自有系统的场景。

模式三:静默执行(none)

--delivery.mode none

任务在后台执行,不输出任何结果。适合纯后台处理任务。


五、失败重试机制

OpenClaw 内置了智能重试机制,无需手动配置。

5.1 什么是可重试错误?

可重试(Transient Errors):

  • 网络超时

  • 服务限流(429)

  • 服务端错误(5xx)

  • 提供商过载

不可重试(Permanent Errors):

  • 认证失败(API Key 无效)

  • 配置错误

  • 权限不足

5.2 重试策略

一次性任务:

  • 最多重试 3 次

  • 指数退避:30 秒 → 1 分钟 → 5 分钟

  • 永久错误直接禁用任务

周期性任务:

  • 错误后应用指数退避

  • 退避间隔:30 秒 → 1 分钟 → 5 分钟 → 15 分钟 → 60 分钟

  • 下次成功执行后重置退避计数器

5.3 查看执行历史

openclaw cron runs --id job_abc123 --limit 10

输出示例:

Run History for job_abc123 (每日晨检):
  [2026-03-16 09:00:01] ✓ Success (2.3s)
  [2026-03-15 09:00:02] ✓ Success (1.8s)
  [2026-03-14 09:00:01] ✗ Failed: network timeout (retried 2x)


六、实战案例:完整的巡检任务

下面是一个更完整的例子,包含条件判断和多渠道通知:

openclaw cron add \
  --name "系统健康检查" \
  --cron "0 */2 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message |
    执行系统健康检查:
    1. 检查磁盘使用率,超过 80% 标记为警告
    2. 检查关键进程(nginx, mysql, redis)是否运行
    3. 检查最近 1 小时错误日志数量
    4. 如有任何警告或异常,生成详细报告并发送飞书通知
    5. 如一切正常,只发送简短的"✓ 系统正常"消息
  | \
  --announce \
  --channel feishu \
  --to "chat:oc_xxx"

任务执行流程:

┌─────────────────┐
│  2 小时触发一次  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  OpenClaw Agent │
│  执行检查任务    │
└────────┬────────┘
         │
    ┌────┴────┐
    │  有异常? │
    └────┬────┘
     Yes │ No
         │
    ┌────┴────┐
    ▼         ▼
┌───────┐  ┌────────┐
│详细报告│  │简短确认│
│+ 告警  │  │消息    │
└───┬───┘  └───┬────┘
    │          │
    └────┬─────┘
         │
         ▼
┌─────────────────┐
│  飞书消息推送    │
└─────────────────┘


七、最佳实践

7.1 任务命名规范

# ✓ 好的命名
--name "每日晨检 - 系统状态"
--name "周报生成 - 每周五 17 点"

# ✗ 避免
--name "test"
--name "任务 1"

7.2 时区处理

始终显式指定时区,避免 UTC 与本地时间混淆:

# ✓ 推荐
--cron "0 9 * * *" --tz "Asia/Shanghai"

# ✗ 不推荐(依赖主机默认时区)
--cron "0 9 * * *"

7.3 独立会话优先

对于自动化任务,优先使用 --session isolated

  • 不污染主对话历史

  • 每次执行都是干净环境

  • 可以独立配置模型和输出

7.4 合理设置通知频率

避免过度打扰:

# ✓ 正常状态只发简短确认
--message "如正常发送'✓',如异常发送详细报告"

# ✗ 每次都发长篇大论

7.5 定期审查任务

# 查看所有任务
openclaw cron list

# 查看某个任务的执行历史
openclaw cron runs --id <jobId>

# 禁用暂时不需要的任务
openclaw cron edit <jobId> --disable

# 删除不再需要的任务
openclaw cron remove <jobId>


八、常见问题

Q1:任务没按时执行?

检查清单:

  1. Gateway 是否在持续运行?openclaw gateway status

  2. Cron 是否启用?检查配置中 cron.enabled: true

  3. 时区是否正确?确认 --tz 参数

Q2:如何修改已创建的任务?

# 修改执行时间
openclaw cron edit <jobId> --cron "0 10 * * *"

# 修改任务指令
openclaw cron edit <jobId> --message "新的任务描述"

# 修改通知渠道
openclaw cron edit <jobId> --channel telegram --to "@username"

Q3:任务执行失败了怎么办?

  1. 查看执行历史:openclaw cron runs --id <jobId>

  2. 根据错误类型判断:

    1. 网络错误:自动重试,无需干预

    2. 配置错误:修正配置后手动运行一次

    3. 权限错误:检查 API Key 和权限设置

Q4:可以在任务中使用自定义工具吗?

可以!OpenClaw 的 Skills 系统支持扩展:

# 在任务指令中调用任何已安装的技能
--message "使用 weather 技能查询北京天气,并用 feishu 发送结果"


九、总结

恭喜你完成了第一个 OpenClaw 定时任务!

核心要点回顾:

  1. 创建任务openclaw cron add + 自然语言描述

  2. 选择模式:主会话(main)vs 独立会话(isolated)

  3. 配置输出:announce / webhook / none

  4. 失败重试:内置智能重试,无需手动配置

  5. 监控运维cron list / cron runs / cron edit

下一步可以试试:

  • 创建一个每工作日早上 8 点的日历简报任务

  • 设置一个监控任务,异常时推送告警到飞书群

  • 结合 Feishu 技能,自动整理群聊消息生成周报


附录:常用命令速查

# 创建任务
openclaw cron add --name "任务名" --cron "表达式" --session isolated --message "指令"

# 查看任务列表
openclaw cron list

# 立即执行任务
openclaw cron run <jobId>

# 查看执行历史
openclaw cron runs --id <jobId> --limit 20

# 编辑任务
openclaw cron edit <jobId> --cron "新表达式" --message "新指令"

# 禁用/启用任务
openclaw cron edit <jobId> --disable
openclaw cron edit <jobId> --enable

# 删除任务
openclaw cron remove <jobId>


下篇预告
:《OpenClaw 系列(三):用 Skills 系统扩展你的 AI 助理》
我们将介绍如何安装和使用社区技能,以及如何编写自定义技能。

本文基于 OpenClaw v1.0+ 编写,部分命令可能随版本更新有所变化。最新文档请访问:https://docs.openclaw.ai