导读:本文是 OpenClaw 实战系列的第二篇。我们会用一个"到点巡检 + 条件提醒"的例子,带你从零跑通,并讲清:工具怎么接、失败怎么重试、结果怎么输出。
一、为什么需要自动化任务?
想象一下这些场景:
每天早上 9 点,自动检查服务器状态并发送简报
每周五下午,自动整理本周任务完成情况
重要会议前 30 分钟,自动提醒参会人员
系统异常时,自动检测并通知负责人
这些重复性、定时性的工作,交给 OpenClaw 就对了。
OpenClaw 是什么?
OpenClaw 是一个运行在本地的 AI 智能体,它能:
🤖 理解自然语言指令
🔧 调用各种工具(文件、浏览器、日历、消息等)
⏰ 按时自动执行任务
📬 把结果推送到你指定的渠道(飞书、微信、Telegram 等)
二、我们的目标:到点巡检 + 条件提醒
今天我们要实现的任务:
每天早上 9 点,自动检查系统状态,如果有异常就发送提醒消息
听起来复杂?其实只需要 3 步:
创建一个定时任务(cron job)
定义检查逻辑(agent turn)
配置结果输出(delivery)
三、5 分钟快速上手
第一步:创建定时任务
打开终端,执行以下命令:
openclaw cron add \
--name "每日晨检" \
--cron "0 9 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "检查系统状态:1.查看磁盘使用率 2.检查关键服务状态 3.如有异常发送飞书通知" \
--announce \
--channel feishu
参数解读:
参数 | 含义 |
|---|---|
| 任务名称,方便后续管理 |
| cron 表达式, |
| 时区,设为 Asia/Shanghai 确保是北京时间 |
| 在独立会话中执行,不干扰主对话 |
| 任务指令,用自然语言描述要做什么 |
| 执行完成后自动推送结果 |
| 推送渠道 |
第二步:验证任务已创建
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:任务没按时执行?
检查清单:
Gateway 是否在持续运行?
openclaw gateway statusCron 是否启用?检查配置中
cron.enabled: true时区是否正确?确认
--tz参数
Q2:如何修改已创建的任务?
# 修改执行时间
openclaw cron edit <jobId> --cron "0 10 * * *"
# 修改任务指令
openclaw cron edit <jobId> --message "新的任务描述"
# 修改通知渠道
openclaw cron edit <jobId> --channel telegram --to "@username"
Q3:任务执行失败了怎么办?
查看执行历史:
openclaw cron runs --id <jobId>根据错误类型判断:
网络错误:自动重试,无需干预
配置错误:修正配置后手动运行一次
权限错误:检查 API Key 和权限设置
Q4:可以在任务中使用自定义工具吗?
可以!OpenClaw 的 Skills 系统支持扩展:
# 在任务指令中调用任何已安装的技能
--message "使用 weather 技能查询北京天气,并用 feishu 发送结果"
九、总结
恭喜你完成了第一个 OpenClaw 定时任务!
核心要点回顾:
创建任务:
openclaw cron add+ 自然语言描述选择模式:主会话(main)vs 独立会话(isolated)
配置输出:announce / webhook / none
失败重试:内置智能重试,无需手动配置
监控运维:
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
夜雨聆风