【进阶篇】OpenClaw 高级技巧:定时任务 + 子 Agent + 自动化工作流

0 阅读9分钟

前面几篇讲完了"怎么用"和"怎么跑",这篇讲"怎么让它自己跑"。定时任务让 OpenClaw 主动提醒你,子 Agent 让它并行干活,自动化工作流让它成为你的"数字打工人"。


一、为什么需要高级技巧?

入门篇里,你和 OpenClaw 的交互是这样的:

 你:帮我查一下今天天气
 OpenClaw:今天北京晴,15-25℃

这是被动响应——你不问,它不说。

但现实场景中,你往往需要:

  • 每天早上 9 点,自动推送今日日程 + 天气 + 待办
  • 每小时,检查服务器是否存活,挂了自动告警
  • 多个任务并行,一个写代码,一个查资料,一个整理文档

这就需要定时任务子 Agent


二、定时任务:让 OpenClaw 主动找你

2.1 定时任务的核心概念

1.png

OpenClaw 的定时任务基于 cron,但比传统 cron 更强大:

特性传统 cronOpenClaw cron
执行内容只能跑命令可以让 AI 干活
通知方式只能写日志微信/飞书/企微/钉钉
任务类型周期性一次性 + 周期性
管理手动改 crontab命令行 + API

本质区别:传统 cron 跑脚本,OpenClaw cron 跑 Agent

2.2 三种时间类型

(1)周期任务

最常见,按固定间隔重复执行:

 每 30 分钟 → {"kind":"every","everyMs":1800000}
 每 2 小时  → {"kind":"every","everyMs":7200000}
 每天 9 点  → {"kind":"cron","expr":"0 9 * * *"}
 每周一 10 点 → {"kind":"cron","expr":"0 10 * * 1"}
 工作日 18 点 → {"kind":"cron","expr":"0 18 * * 1-5"}

cron 表达式格式分 时 日 月 星期

  • 0 9 * * * = 每天 9:00
  • 0 18 * * 1-5 = 周一到周五 18:00
  • */30 * * * * = 每 30 分钟
  • 0 10 * * 1 = 每周一 10:00

(2)一次性任务

执行一次后自动删除:

 今天下午 3 点 → {"kind":"at","at":"2026-05-07T15:00:00+08:00"}
 10 分钟后    → {"kind":"at","at":"<当前时间+10分钟>"}

关键参数deleteAfterRun: true

(3)智能时区

不要硬编码时区!

先获取系统时区:

 date +%z  # 输出 +0800

转换成 ISO 格式:+0800+08:00

正确写法:

 {"kind":"at","at":"2026-05-07T15:00:00+08:00"}

错误写法:

 {"kind":"at","at":"2026-05-07T15:00:00"}  // 没有时区,会被当成 UTC

2.3 创建定时任务

方式一:内置 cron 工具(推荐)

适用于本地 UI、wechat-access、钉钉等渠道:

 {
   "action": "add",
   "job": {
     "name": "每日提醒",
     "agentId": "main",
     "schedule": {"kind":"cron","expr":"0 9 * * *"},
     "sessionTarget": "isolated",
     "payload": {
       "kind": "agentTurn",
       "message": "你是一个暖心的提醒助手。请用温暖的方式提醒用户:新的一天开始了。要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出提醒文字 (4) 控制在 2-3 句话以内"
     },
     "delivery": {"mode":"announce"}
   }
 }

关键参数解释

参数含义
agentId哪个 Agent 执行(从当前 sessionKey 提取)
sessionTargetisolated = 独立会话,不污染主对话历史
payload.kindagentTurn = 让 AI 执行,systemEvent = 简单文本
delivery.modeannounce = 推送到当前渠道

方式二:CLI 命令

适用于企微、飞书等外部渠道:

 openclaw cron add \
   --name "每日提醒" \
   --cron "0 9 * * *" \
   --session isolated \
   --agent main \
   --message "你是一个暖心的提醒助手..." \
   --announce

2.4 定时任务管理

 # 查看所有任务
 openclaw cron list
 ​
 # 暂停任务(不删除)
 openclaw cron edit <jobId> --enabled false
 ​
 # 恢复任务
 openclaw cron edit <jobId> --enabled true
 ​
 # 删除任务
 openclaw cron remove <jobId>
 ​
 # 立即执行一次
 openclaw cron run <jobId>

2.5 实战案例:服务器存活监控

需求:每小时检查一次服务器,挂了自动告警

步骤 1:创建检测脚本

 # 保存为 ~/scripts/check-server.sh
 #!/bin/bash
 curl -f https://your-server.com/health || echo "SERVER_DOWN"

步骤 2:创建定时任务

 {
   "action": "add",
   "job": {
     "name": "服务器存活监控",
     "agentId": "main",
     "schedule": {"kind":"every","everyMs":3600000},
     "sessionTarget": "isolated",
     "payload": {
       "kind": "agentTurn",
       "message": "执行 ~/scripts/check-server.sh,如果输出 SERVER_DOWN,立即发送告警:服务器可能挂了,请检查。要求:(1) 直接输出结果 (2) 不要调用无关工具"
     },
     "delivery": {"mode":"announce"}
   }
 }

效果:每小时自动执行,有问题立刻通知你。


三、子 Agent:让 OpenClaw 并行干活

3.1 为什么需要子 Agent?

想象你有一个复杂任务:

  1. 查阅 10 篇技术文档
  2. 写一个 API 服务
  3. 整理代码文档

串行执行:1 → 2 → 3,耗时 30 分钟

并行执行

  • 子 Agent A:查文档
  • 子 Agent B:写代码
  • 子 Agent C:整理文档

耗时 10 分钟,快了 3 倍!

3.2 子 Agent 的核心概念

 主 Agent(你对话的 Agent)
   ├── 子 Agent A(查资料)
   ├── 子 Agent B(写代码)
   └── 子 Agent C(整理文档)

关键特性

  • 独立会话:每个子 Agent 有独立的对话历史
  • 并行执行:多个子 Agent 同时干活
  • 结果汇总:主 Agent 收集所有结果

3.3 创建子 Agent

使用 sessions_spawn 工具:

 {
   "task": "查阅 https://docs.example.com/api 并总结核心功能",
   "runtime": "subagent",
   "mode": "run",
   "timeoutSeconds": 300
 }

参数说明

参数含义
task子 Agent 的任务描述
runtimesubagent = OpenClaw 子 Agent
moderun = 一次性任务,session = 持久会话
timeoutSeconds超时时间(秒)

3.4 监控子 Agent

 # 查看所有子 Agent
 openclaw subagents list
 ​
 # 查看某个子 Agent 的输出
 openclaw subagents log <sessionId>
 ​
 # 向子 Agent 发送指令
 openclaw subagents steer <sessionId> --message "请加快进度"
 ​
 # 终止子 Agent
 openclaw subagents kill <sessionId>

3.5 实战案例:并行代码审查

需求:同时审查 3 个 PR

步骤 1:启动 3 个子 Agent

 # 子 Agent 1:审查 PR #86
 sessions_spawn task:"Review PR #86. git diff origin/main...origin/pr/86" runtime:"subagent" mode:"run"
 ​
 # 子 Agent 2:审查 PR #87
 sessions_spawn task:"Review PR #87. git diff origin/main...origin/pr/87" runtime:"subagent" mode:"run"
 ​
 # 子 Agent 3:审查 PR #88
 sessions_spawn task:"Review PR #88. git diff origin/main...origin/pr/88" runtime:"subagent" mode:"run"

步骤 2:等待所有子 Agent 完成

 # 查看状态
 openclaw subagents list

步骤 3:收集结果并汇总

主 Agent 收到所有结果后,生成统一报告。

3.6 子 Agent vs 定时任务

特性定时任务子 Agent
触发方式时间驱动手动触发
执行时机周期/定点立即
数量限制建议同时 ≤ 5 个
适用场景定期检查、提醒并行任务、复杂工作

四、自动化工作流:从"我问它答"到"它帮我干活"

4.1 什么是自动化工作流?

把多个操作串起来,形成一个完整的自动化链条:

 触发条件 → 执行动作 → 结果通知

示例

 每天 9 点 → 查日程 + 查天气 + 查邮件 → 推送汇总

4.2 三要素

(1)触发器

类型示例
定时触发每天 9 点
事件触发收到重要邮件时
手动触发说"开始工作流"

(2)动作

类型示例
查询类查天气、查日程、查邮件
执行类发送消息、调用 API、执行脚本
生成类写报告、生成文档、整理摘要

(3)通知

渠道配置
本地 UIdelivery: {"mode":"announce"}
微信delivery: {"mode":"announce","channel":"wechat-access","to":"<sender_id>"}
飞书delivery: {"mode":"announce","channel":"feishu","to":"<sender_id>"}

4.3 实战案例:每日晨报

需求:每天早上 9 点,自动推送今日日程 + 天气 + 待办

方案:结合定时任务 + 子 Agent

 {
   "action": "add",
   "job": {
     "name": "每日晨报",
     "agentId": "main",
     "schedule": {"kind":"cron","expr":"0 9 * * *"},
     "sessionTarget": "isolated",
     "payload": {
       "kind": "agentTurn",
       "message": "请生成今日晨报,包含:(1) 今日日程(查日历)(2) 今日天气(查天气)(3) 待办事项(查 TODO)。格式:简洁清晰,控制在 200 字以内。要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出晨报内容"
     },
     "delivery": {"mode":"announce"}
   }
 }

4.4 实战案例:智能告警

需求:服务器 CPU > 80% 时告警

方案:定时任务 + 脚本检测

 # 监控脚本
 #!/bin/bash
 CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
 if (( $(echo "$CPU_USAGE > 80" | bc -l) )); then
   echo "CPU告警:当前使用率 ${CPU_USAGE}%"
 fi

定时任务配置:

 {
   "action": "add",
   "job": {
     "name": "CPU监控",
     "agentId": "main",
     "schedule": {"kind":"every","everyMs":300000},
     "sessionTarget": "isolated",
     "payload": {
       "kind": "agentTurn",
       "message": "执行 CPU 监控脚本,如果有告警输出,立即通知用户。要求:(1) 直接输出结果 (2) 正常时不输出"
     },
     "delivery": {"mode":"announce"}
   }
 }

五、进阶技巧:让自动化更智能

5.1 错误重试

定时任务支持自动重试:

 {
   "job": {
     ...
     "failureAlert": {
       "mode": "announce",
       "after": 2
     }
   }
 }

含义:失败 2 次后才告警,避免误报。

5.2 失败通知

配置失败时的通知目标:

 {
   "job": {
     ...
     "failureDestination": {
       "mode": "announce",
       "channel": "wechat-access",
       "to": "your_sender_id"
     }
   }
 }

5.3 条件执行

在任务描述中加入条件判断:

 查天气,如果下雨,提醒带伞;否则不输出

AI 会自动判断条件并决定是否通知。

5.4 子 Agent 协作模式

主从模式:主 Agent 分配任务,子 Agent 执行

 主 Agent:分析需求,拆分为 3 个子任务
   ├── 子 Agent A:执行任务 1
   ├── 子 Agent B:执行任务 2
   └── 子 Agent C:执行任务 3
 主 Agent:汇总结果,生成报告

流水线模式:子 Agent 串联执行

 子 Agent A → 子 Agent B → 子 Agent C
 (查资料)   (写代码)    (整理文档)

六、踩坑指南

6.1 时区问题

症状:定时任务比预期早/晚 8 小时

原因:时间没有指定时区,被当成 UTC

解决:始终使用 +08:00 格式

6.2 delivery 缺失

症状:任务执行了,但没有收到通知

原因delivery 参数缺失或 to 字段为空

解决:确保 delivery 包含完整信息

6.3 子 Agent 数量过多

症状:系统变慢,响应迟钝

原因:同时运行太多子 Agent

解决:控制并发数量,建议 ≤ 5 个

6.4 任务重复创建

症状:同一个提醒收到多次

原因:多次创建同名任务

解决:创建前先 openclaw cron list 检查


七、最佳实践

7.1 定时任务命名规范

 <类型>_<频率>_<动作>

示例:

  • daily_morning_report
  • hourly_server_check
  • weekly_summary

7.2 任务描述模板

 你是一个【角色】。
 请【具体动作】。
 要求:
 (1) 不要回复 HEARTBEAT_OK
 (2) 不要调用 message 工具
 (3) 直接输出结果
 (4) 控制在 X 句话以内

7.3 监控与维护

定期检查任务状态:

 # 每周检查一次
 openclaw cron list
 ​
 # 清理过期任务
 openclaw cron remove <过期任务ID>

八、总结

功能解决的问题核心工具
定时任务让 AI 主动找你cron
子 Agent让 AI 并行干活sessions_spawn
自动化工作流让 AI 完成复杂链条定时任务 + 子 Agent

从被动到主动

  • 入门篇:你问它答
  • 进阶篇:它主动帮你

下一步:实战篇将带你搭建一个完整的"数字打工人",从需求到落地。


系列文章预告

  • ✅ 入门篇(已完成)
  • ✅ 技能篇(已完成)
  • ✅ 记忆篇(已完成)
  • ✅ 原理篇(已完成)
  • ✅ 进阶篇(本文)
  • ⏳ 实战篇(待完成):用 OpenClaw 搭建你的"数字打工人"

点点赞和关注不迷路,后面还有更多精彩干货。

👨‍💻 H先生出品 | 专注 AI 工具与效率提升