OpenClaw 高级技能编写:工作流自动化
你是否有过这样的场景——每天早上要手动检查服务器状态、每周五要整理周报、每次代码部署完要发通知?这些重复性工作,完全可以交给 OpenClaw 自动完成。本文介绍四种工作流自动化能力,帮你把"闹钟"装进 AI 助手。
你能学到什么?
✅ 理解 Cron Jobs、Heartbeat、Standing Orders、Webhooks 的适用场景 ✅ 掌握定时任务的创建和管理方法 ✅ 学会用 Standing Orders 实现"授权自主执行" ✅ 搭建一个完整的"日报自动推送"实战案例
为什么需要工作流自动化?
没有自动化时,你是这样的:
每天 9 点手动查看服务器状态 每周五手动整理周报,发给团队 每次 GitHub 有新 issue,要打开网页看
有了 OpenClaw 自动化,你可以:
设置"每天 9 点,AI 自动检查服务器,异常时通知我" 授权"每周五下午 4 点,AI 自动生成并发送周报" 配置"GitHub webhook 触发时,AI 自动分类 issue 并分配负责人"
本质是:给 AI 装上"闹钟"和"触发器",让它在你定义好的时间或条件下主动行动。
一、Cron Jobs:精确的定时任务
核心概念
Cron 是 OpenClaw Gateway 内置的调度器,任务持久化在 ~/.openclaw/cron/jobs.json,重启不丢失。
三种执行模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Main session | 在主会话中运行,有完整上下文 | 轻量检查,需要结合上下文 |
| Isolated | 独立会话,不污染主会话历史 | 频繁任务、后台作业 |
| Custom session | 命名会话,跨次持久化上下文 | 日报、周报等连续任务 |
三种调度类型:
# 一次性:20分钟后提醒我
openclaw cron add \
--name "Reminder" \
--at "2026-03-28T16:20:00+08:00" \
--session main \
--system-event "Reminder: check the cron docs draft" \
--wake now
# 间隔任务:每30分钟检查一次
openclaw cron add \
--name "Health check" \
--every 30m \
--session isolated \
--message "Check server health metrics"
# Cron表达式:每天早上9点(北京时间)
openclaw cron add \
--name "Morning brief" \
--cron "0 9 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "Generate morning report" \
--announce \
--channel weixin
高级特性
自动散布(Stagger): 每小时整点任务(如 0 * * * *)会自动添加 0~5 分钟随机偏移,避免服务器峰值压力。可以用 --exact 强制精确执行。
Webhook 投递: 任务完成后可以 POST 结果到指定 URL:
{
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
"payload": { "kind": "agentTurn", "message": "Generate daily report" },
"delivery": { "mode": "webhook", "to": "https://your-api.com/webhook" }
}
二、Heartbeat:省力的自动巡逻
什么时候用 Heartbeat?
Heartbeat 在主会话中周期性运行(默认 30 分钟一次),适合批量检查 + 上下文感知的场景。
| 场景 | 用 Cron 还是 Heartbeat? |
|---|---|
| 每 30 分钟检查一次邮件 | Heartbeat(批次检查) |
| 每天 9 点精确发周报 | Cron(精确时间) |
| 监控日历即将到来的会议 | Heartbeat(上下文相关) |
| 每周运行一次深度分析 | Cron(独立任务) |
Heartbeat 配置示例
{
agents: {
defaults: {
heartbeat: {
every: "30m", // 检查间隔
target: "last", // 推送目标
activeHours: { // 可选:仅在工作时间运行
start: "08:00",
end: "22:00"
}
}
}
}
}
Heartbeat 检查清单
在 HEARTBEAT.md 中定义检查逻辑,AI 每次心跳自动执行:
# Heartbeat checklist
- Check email for urgent messages
- Review calendar for events in next 2 hours
- If a background task finished, summarize results
- If idle for 8+ hours, send a brief check-in
如果无事可做,AI 会回复 HEARTBEAT_OK,不会打扰你。
三、Standing Orders:永久授权让 AI 主动出击
什么是 Standing Order?
Standing Order = 永久操作授权。 你给 AI 一份长期有效的"工作描述",AI 自主判断什么时候该行动,不需要你每次都发指令。
对比:
| 普通指令 | Standing Order | |
|---|---|---|
| 触发方式 | 你每次说"发周报" | AI 自己判断"周五了,该发周报了" |
| 上下文 | 临时 | 永久在 AGENTS.md 中 |
| 重复性 | 每次要提醒 | 自动执行 |
如何定义 Standing Order?
放在 AGENTS.md 中,每次会话自动加载:
## Program: Weekly Status Report
**Authority:** 汇总数据、生成报告、通过企业微信发送给团队
**Trigger:** 每周五 16:00(通过 cron 强制执行)
**Approval gate:** 标准报告无需审批;指标异常(超过2σ)上报人工
**Escalation:** 数据源不可用或指标异常时停止并告警
### Execution Steps
1. 从 Grafana API 拉取本周指标
2. 对比上周同期和季度目标
3. 生成报告,保存到 Reports/weekly/YYYY-MM-DD.md
4. 通过企业微信推送摘要给团队
5. 记录执行日志
### What NOT to Do
- 不向外部第三方发送数据
- 不修改数据源配置
- 不跳过异常数据——如实报告
Standing Orders + Cron 的黄金组合
Standing Order: "你负责每日 inbox 分类"
↓
Cron Job(每天 8:00):"按常驻授权执行 inbox 分类"
↓
AI: 读取指令 → 执行步骤 → 报告结果
四、Webhooks:连接外部世界
什么时候用 Webhook?
Webhook 让外部服务主动触发 OpenClaw 执行任务:
GitHub 新 issue / PR → AI 自动分类 客服系统 新工单 → AI 初步回复 监控系统 报警 → AI 评估并通知
启用 Webhook
{
hooks: {
enabled: true,
token: "your-secret-token",
path: "/hooks",
allowedAgentIds: ["hooks", "main"]
}
}
端点说明
| 端点 | 作用 |
|---|---|
POST /hooks/wake |
唤醒主会话,传递系统事件 |
POST /hooks/agent |
触发独立 AI 会话处理请求 |
/hooks/agent 示例:
{
"message": "新 GitHub issue:用户反馈登录失败",
"name": "GitHub",
"agentId": "support-bot",
"wakeMode": "now",
"deliver": true,
"channel": "weixin",
"to": "luffy"
}
五、实战:搭建日报自动推送
需求
每天早上 9 点,AI 自动汇总以下信息,通过微信推送给我:
昨天的服务器健康状态 GitHub 新 issue 数量 是否有未完成的重要任务
实现步骤
Step 1:定义 Standing Order
在 AGENTS.md 中添加:
## Program: Daily Morning Report
**Authority:** 拉取数据、生成报告、发送到我的微信
**Trigger:** 每天 09:00 Asia/Shanghai(cron 强制)
**Approval gate:** 无;报告自动发送,异常时额外提醒
**Escalation:** 数据源不可用时,跳过该数据点并在报告中标注
### Execution Steps
1. 从 health API 获取昨日服务器状态
2. 查询 GitHub API 统计昨日新 issue
3. 检查任务系统未完成任务数
4. 生成报告(Markdown),推送到微信
5. 保存完整报告到 Reports/daily/YYYY-MM-DD.md
Step 2:创建 Cron 任务
openclaw cron add \
--name "Daily Morning Report" \
--cron "0 9 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "Execute daily morning report per standing orders" \
--announce \
--channel weixin
Step 3:验证和调整
运行后检查报告质量,根据需要调整 Standing Order 中的指令细节。
总结
| 能力 | 核心价值 | 典型场景 |
|---|---|---|
| Cron Jobs | 精确时间执行 | 每天 9 点发日报 |
| Heartbeat | 周期巡逻 + 上下文感知 | 邮件+日历+通知批量检查 |
| Standing Orders | 永久授权自主决策 | 周报、inbox 分类等周期性任务 |
| Webhooks | 外部事件触发 | GitHub issue 自动分类 |
四种能力可以组合使用:Cron 负责"什么时候做",Standing Orders 负责"做什么",Heartbeat 负责"平时巡逻",Webhook 负责"外部触发"。
掌握这四件套,你的 OpenClaw 就不再只是一个被动的问答助手,而是一个能主动帮你打理日常工作的数字员工。
如果觉得有用,欢迎转发给有需要的朋友 👋
夜雨聆风