【进阶篇】OpenClaw 高级技巧:定时任务 + 子 Agent + 自动化工作流
前面几篇讲完了”怎么用”和”怎么跑”,这篇讲”怎么让它自己跑”。定时任务让 OpenClaw 主动提醒你,子 Agent 让它并行干活,自动化工作流让它成为你的”数字打工人”。
一、为什么需要高级技巧?
入门篇里,你和 OpenClaw 的交互是这样的:
你:帮我查一下今天天气OpenClaw:今天北京晴,15-25℃
这是被动响应——你不问,它不说。
但现实场景中,你往往需要:
-
每天早上 9 点,自动推送今日日程 + 天气 + 待办 -
每小时,检查服务器是否存活,挂了自动告警 -
多个任务并行,一个写代码,一个查资料,一个整理文档
这就需要定时任务和子 Agent。
二、定时任务:让 OpenClaw 主动找你
2.1 定时任务的核心概念

OpenClaw 的定时任务基于 cron,但比传统 cron 更强大:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本质区别:传统 cron 跑脚本,OpenClaw cron 跑 Agent。
2.2 三种时间类型
(1)周期任务
最常见,按固定间隔重复执行:
ounter(lineounter(lineounter(lineounter(lineounter(line每 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 |
|
sessionTarget |
isolated
|
payload.kind |
agentTurn
systemEvent = 简单文本 |
delivery.mode |
announce
|
方式二: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/bashcurl -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?
想象你有一个复杂任务:
-
查阅 10 篇技术文档 -
写一个 API 服务 -
整理代码文档
串行执行: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 |
|
runtime |
subagent
|
mode |
run
session = 持久会话 |
timeoutSeconds |
|
3.4 监控子 Agent
# 查看所有子 Agentopenclaw subagents list# 查看某个子 Agent 的输出openclaw subagents log <sessionId># 向子 Agent 发送指令openclaw subagents steer <sessionId> --message "请加快进度"# 终止子 Agentopenclaw subagents kill <sessionId>
3.5 实战案例:并行代码审查
需求:同时审查 3 个 PR
步骤 1:启动 3 个子 Agent
# 子 Agent 1:审查 PR #86sessions_spawn task:"Review PR #86. git diff origin/main...origin/pr/86" runtime:"subagent" mode:"run"# 子 Agent 2:审查 PR #87sessions_spawn task:"Review PR #87. git diff origin/main...origin/pr/87" runtime:"subagent" mode:"run"# 子 Agent 3:审查 PR #88sessions_spawn task:"Review PR #88. git diff origin/main...origin/pr/88" runtime:"subagent" mode:"run"
步骤 2:等待所有子 Agent 完成
ounter(lineounter(line# 查看状态openclaw subagents list
步骤 3:收集结果并汇总
主 Agent 收到所有结果后,生成统一报告。
3.6 子 Agent vs 定时任务
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
四、自动化工作流:从”我问它答”到”它帮我干活”
4.1 什么是自动化工作流?
把多个操作串起来,形成一个完整的自动化链条:
触发条件 → 执行动作 → 结果通知
示例:
每天 9 点 → 查日程 + 查天气 + 查邮件 → 推送汇总
4.2 三要素
(1)触发器
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
(2)动作
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
(3)通知
|
|
|
|---|---|
|
|
delivery: {"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/bashCPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)if (( $(echo "$CPU_USAGE > 80" | bc -l) )); thenecho "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 条件执行
在任务描述中加入条件判断:
ounter(line查天气,如果下雨,提醒带伞;否则不输出
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>
八、总结
|
|
|
|
|---|---|---|
|
|
|
cron |
|
|
|
sessions_spawn |
|
|
|
|
从被动到主动:
-
入门篇:你问它答 -
进阶篇:它主动帮你
下一步:实战篇将带你搭建一个完整的”数字打工人”,从需求到落地。
系列文章预告:
-
✅ 入门篇(已完成) -
✅ 技能篇(已完成) -
✅ 记忆篇(已完成) -
✅ 原理篇(已完成) -
✅ 进阶篇(本文) -
⏳ 实战篇(待完成):用 OpenClaw 搭建你的”数字打工人”
点点赞和关注不迷路,后面还有更多精彩干货。
👨💻 H先生出品 | 专注 AI 工具与效率提升
夜雨聆风