导读:工作流是OpenClaw的高级特性,允许你将多个Skills串联起来,构建复杂的自动化流程。比如:搜索新闻→生成摘要→发送邮件,一气呵成。
📋 功能介绍
OpenClaw工作流系统提供以下能力:
- 步骤编排 - 定义多步骤执行流程
- 数据传递 - 步骤间数据自动流转
- 条件分支 - 根据条件选择执行路径
- 并行执行 - 多个步骤同时运行
- 错误处理 - 自动重试和失败处理
- 定时触发 - 结合Cron实现定时工作流
🏗️ 工作流基础结构
工作流使用YAML定义,基本结构如下:
# workflow.yaml
name: 新闻摘要推送
version: "1.0"
description: 自动获取新闻并推送
trigger:
type: cron
schedule: "0 9 * * *" # 每天9点
steps:
- name: 搜索新闻
skill: web-search
input:
query: "AI人工智能最新新闻"
count: 5
output: news_results
- name: 生成摘要
skill: text-summarizer
input:
text: "{{steps.搜索新闻.output}}"
max_length: 200
output: summary
- name: 发送邮件
skill: email-sender
input:
to: "user@example.com"
subject: "今日AI新闻摘要"
body: "{{steps.生成摘要.output}}"
🔧 实战案例
案例1:内容创作工作流
name: 自动化博客发布
version: "1.0"
trigger:
type: manual
steps:
- name: 搜索热点
skill: web-search
input:
query: "OpenClaw trending topics"
output: topics
- name: 生成大纲
skill: content-generator
input:
prompt: "基于以下主题生成博客大纲: {{steps.搜索热点.output}}"
output: outline
- name: 撰写文章
skill: content-generator
input:
prompt: "根据大纲撰写完整文章: {{steps.生成大纲.output}}"
style: "technical"
output: article
- name: 生成封面图
skill: image-gen
input:
prompt: "Tech blog cover for: {{steps.搜索热点.output}}"
output: cover_image
- name: 发布到博客
skill: blog-publisher
input:
title: "{{steps.搜索热点.output}}"
content: "{{steps.撰写文章.output}}"
cover: "{{steps.生成封面图.output}}"
案例2:数据分析工作流
name: 竞品分析报告
version: "1.0"
trigger:
type: cron
schedule: "0 2 * * 1" # 每周一凌晨2点
steps:
- name: 抓取竞品页面
skill: browser
parallel:
- input:
action: navigate
url: "https://competitor1.com/pricing"
output: comp1_pricing
- input:
action: navigate
url: "https://competitor2.com/pricing"
output: comp2_pricing
- name: 提取价格信息
skill: data-extractor
input:
sources:
- "{{steps.抓取竞品页面.outputs.comp1_pricing}}"
- "{{steps.抓取竞品页面.outputs.comp2_pricing}}"
schema: "pricing_schema.json"
output: pricing_data
- name: 生成对比图表
skill: chart-generator
input:
data: "{{steps.提取价格信息.output}}"
type: "comparison"
output: chart
- name: 生成报告
skill: report-generator
input:
template: "competitor_analysis.md"
data: "{{steps.提取价格信息.output}}"
chart: "{{steps.生成对比图表.output}}"
output: report
- name: 发送报告
skill: email-sender
input:
to: "team@company.com"
subject: "周竞品分析报告"
attachments:
- "{{steps.生成报告.output}}"
🎯 高级特性
条件分支
steps:
- name: 检查库存
skill: db-query
input:
sql: "SELECT count FROM inventory WHERE item_id = 123"
output: stock
- name: 库存充足处理
skill: order-processor
when: "{{steps.检查库存.output.count}} > 10"
input:
action: "process"
- name: 库存不足处理
skill: alert-sender
when: "{{steps.检查库存.output.count}} <= 10"
input:
message: "库存不足,请补货"
循环执行
steps:
- name: 获取用户列表
skill: db-query
input:
sql: "SELECT email FROM users WHERE active = 1"
output: users
- name: 发送营销邮件
skill: email-sender
foreach: "{{steps.获取用户列表.output}}"
input:
to: "{{item.email}}"
subject: "特别优惠"
body: "亲爱的用户..."
错误处理和重试
steps:
- name: 调用API
skill: api-caller
retry:
max_attempts: 3
delay: 5s
backoff: exponential
on_error:
action: continue
step: 错误处理
input:
url: "https://api.example.com/data"
- name: 错误处理
skill: error-handler
input:
log: true
notify: "admin@company.com"
✅ 最佳实践
- 保持简单 - 单个工作流不要超过10个步骤
- 命名规范 - 步骤名要清晰描述功能
- 添加注释 - 复杂逻辑要添加说明
- 测试先行 - 先测试单个Skill,再集成到工作流
- 监控日志 - 启用工作流执行日志
- 版本管理 - 工作流文件使用Git管理
🔍 调试技巧
# 测试工作流
openclaw workflow test workflow.yaml
# 查看执行日志
openclaw workflow logs --workflow 新闻摘要推送
# 单步调试
openclaw workflow test workflow.yaml --step 搜索新闻
# 模拟运行(不实际执行)
openclaw workflow test workflow.yaml --dry-run