Appearance
一、自动化工作流能干什么?
定时任务 vs 自动化工作流:
| 类型 | 触发方式 | 典型场景 |
|---|---|---|
| 定时任务 | 时间到了就执行 | 每天早上8点推送新闻 |
| 自动化工作流 | 满足条件就触发 | 收到邮件自动总结、代码提交自动Review |
一句话理解:
- 定时任务 = 闹钟(按时响)
- 自动化工作流 = 智能管家(有情况就响应)
二、核心概念:Hooks和Task Flow
2.1 Hooks(钩子)
Hooks是触发器,定义"在什么情况下"执行任务。
OpenClaw支持多种Hook类型:
| Hook类型 | 触发条件 | 使用场景 |
|---|---|---|
| Webhook | 接收HTTP请求 | 外部系统推送事件 |
| Email Hook | 收到邮件 | 自动处理邮件内容 |
| File Hook | 文件变化 | 监控文件夹自动处理 |
| Schedule Hook | 定时触发 | 替代简单定时任务 |
| Custom Hook | 自定义条件 | 灵活定制触发逻辑 |
2.2 Task Flow(任务流)
Task Flow是执行流程,定义"触发后做什么"。
一个Task Flow包含多个步骤:
触发器(Hook) → 步骤1 → 步骤2 → 步骤3 → 输出三、实战案例1:邮件自动处理工作流
场景:收到客户咨询邮件,自动提取问题、生成回复草稿、通知客服团队。
3.1 创建Email Hook
命令行操作:
bash
openclaw hook create \
--name "客户咨询邮件监听" \
--type email \
--config '{
"imap_server": "imap.example.com",
"email": "support@company.com",
"folder": "INBOX"
}'3.2 创建Task Flow
yaml
name: 客户邮件自动处理
trigger:
hook: email-hook-001
condition: "邮件主题包含'咨询'或'问题'"
steps:
- name: 提取问题
action: llm-task
prompt: |
从邮件中提取:客户姓名、联系方式、问题类型、问题详情。输出JSON格式。
- name: 生成回复草稿
action: llm-task
prompt: 根据客户问题,生成专业回复草稿,字数控制在200字以内。
- name: 推送通知
action: notify
channels: [dingtalk, email]
message: |
📧 新客户咨询
客户:{{steps.提取问题.客户姓名}}
类型:{{steps.提取问题.问题类型}}3.3 激活工作流
bash
openclaw flow create -f email-flow.yaml
openclaw flow enable email-flow-001四、实战案例2:代码提交自动Review
场景:开发者提交代码到Git仓库,自动触发代码Review并反馈问题。
4.1 创建Webhook Hook
bash
openclaw hook create \
--name "Git提交监听" \
--type webhook \
--config '{"endpoint": "/hooks/git-review", "method": "POST"}'4.2 配置Git仓库Webhook
以GitHub为例:
- 进入仓库 Settings → Webhooks
- 添加Webhook:
- Payload URL:
http://your-openclaw-server:3000/hooks/git-review - Content type:
application/json - 触发事件:
Push events
- Payload URL:
4.3 创建Task Flow
yaml
name: 代码提交自动Review
trigger:
hook: webhook-git-review
steps:
- name: 解析提交信息
action: parse
input: "{{trigger.body}}"
extract:
repo: ".repository.name"
branch: ".ref"
author: ".pusher.name"
- name: 代码Review
action: llm-task
prompt: |
请Review代码变更,检查:代码规范、潜在Bug、性能问题、安全隐患。
输出:问题等级、具体描述、修改建议。
- name: 反馈结果
action: notify
channels: [feishu]
message: |
🔍 代码Review结果
仓库:{{steps.解析提交信息.repo}}
分支:{{steps.解析提交信息.branch}}
{{steps.代码Review}}五、实战案例3:客户消息自动回复
场景:客户在微信/钉钉提问,自动识别意图并回复,无法回答时转人工。
5.1 创建智能回复Task Flow
yaml
name: 客户消息智能回复
trigger:
channel: wechat
condition: "消息类型==文本 && 发送者不在白名单"
steps:
- name: 意图识别
action: llm-task
prompt: |
分析用户消息意图,分类为:产品咨询、技术支持、投诉建议、其他。
输出JSON:{"intent": "类别", "confidence": 0.0-1.0}
- name: 判断是否可自动回复
action: condition
if: "{{steps.意图识别.confidence}} >= 0.8"
then: "自动回复"
else: "转人工"
- name: 自动回复
action: llm-task
prompt: 根据意图生成友好回复。
- name: 转人工通知
action: notify
channels: [dingtalk]
message: "🙋 需要人工介入 - 用户:{{trigger.sender}}"
output:
type: reply
content: "{{steps.自动回复}}"六、Hooks配置详解
6.1 Webhook Hook
yaml
type: webhook
name: 通用Webhook监听
config:
endpoint: /hooks/custom
method: POST
authentication:
type: hmac
secret: your-secret-key6.2 Email Hook
yaml
type: email
name: 邮箱监听
config:
imap_server: imap.gmail.com
email: your@gmail.com
password: app-password
folder: INBOX
filter:
subject_contains: "[工单]"6.3 File Hook
yaml
type: file
name: 文件夹监控
config:
path: /data/uploads
events: [create, modify, delete]
filter:
extensions: [.pdf, .docx]七、Task Flow进阶语法
7.1 条件分支
yaml
steps:
- name: 判断类型
action: condition
switch: "{{trigger.data.type}}"
cases:
"urgent":
action: notify
channels: [sms, phone]
"normal":
action: notify
channels: [wechat]7.2 循环处理
yaml
steps:
- name: 批量处理
action: loop
input: "{{trigger.data.items}}"
each:
action: llm-task
prompt: "处理项目:{{item}}"7.3 错误处理
yaml
steps:
- name: 可能失败的操作
action: http-request
url: https://api.example.com/data
retry: 3
on_error:
action: notify
message: "⚠️ 操作失败,已重试3次"7.4 变量引用
| 变量 | 说明 |
|---|---|
{{trigger}} | 触发器传入的数据 |
{{steps.步骤名}} | 某步骤的输出 |
{{env.变量名}} | 环境变量 |
{{now}} | 当前时间 |
八、调试与监控
8.1 查看工作流执行记录
bash
openclaw flow logs flow-001
openclaw flow logs flow-001 --exec-id exec-123458.2 手动触发测试
bash
openclaw flow run flow-001 --payload '{"test": true}'8.3 查看Hook状态
bash
openclaw hook list
openclaw hook show webhook-001
openclaw hook pause webhook-001
openclaw hook resume webhook-001九、常见问题
Q1:Hook触发后没有执行?
排查步骤:
- 检查Hook状态是否启用
- 查看触发条件是否满足
- 检查执行日志是否有报错
Q2:Webhook收不到请求?
排查步骤:
- 确认网关服务运行正常
- 检查防火墙端口是否开放
- 确认URL路径正确
Q3:Task Flow执行到一半卡住?
原因:某步骤超时或API调用失败
解决:
- 检查步骤超时配置
- 添加错误处理逻辑
十、总结
自动化工作流让OpenClaw从"被动应答"升级为"主动执行":
| 能力 | 说明 |
|---|---|
| Hooks | 监听触发条件(邮件、Webhook、文件变化等) |
| Task Flow | 定义执行流程(多步骤、条件分支、错误处理) |
| 通知渠道 | 结果推送(微信、钉钉、飞书、邮件等) |
学习路径建议:
- 先从简单的Webhook Hook开始
- 创建基础的Task Flow(2-3步)
- 逐步添加条件判断和错误处理
- 最后封装可复用模块
