前面几篇讲完了"怎么用"和"怎么跑",这篇讲"怎么让它自己跑"。定时任务让 OpenClaw 主动提醒你,子 Agent 让它并行干活,自动化工作流让它成为你的"数字打工人"。
一、为什么需要高级技巧?
入门篇里,你和 OpenClaw 的交互是这样的:
你:帮我查一下今天天气
OpenClaw:今天北京晴,15-25℃
这是被动响应——你不问,它不说。
但现实场景中,你往往需要:
- 每天早上 9 点,自动推送今日日程 + 天气 + 待办
- 每小时,检查服务器是否存活,挂了自动告警
- 多个任务并行,一个写代码,一个查资料,一个整理文档
这就需要定时任务和子 Agent。
二、定时任务:让 OpenClaw 主动找你
2.1 定时任务的核心概念
OpenClaw 的定时任务基于 cron,但比传统 cron 更强大:
| 特性 | 传统 cron | OpenClaw 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:000 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 提取) |
sessionTarget | isolated = 独立会话,不污染主对话历史 |
payload.kind | agentTurn = 让 AI 执行,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/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?
想象你有一个复杂任务:
- 查阅 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 | 子 Agent 的任务描述 |
runtime | subagent = OpenClaw 子 Agent |
mode | run = 一次性任务,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)通知
| 渠道 | 配置 |
|---|---|
| 本地 UI | 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/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_reporthourly_server_checkweekly_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 工具与效率提升