🔄 OpenClaw 工作流编排指南

设计复杂的AI流程,让多个Skills协同工作,实现自动化任务

导读:工作流是OpenClaw的高级特性,允许你将多个Skills串联起来,构建复杂的自动化流程。比如:搜索新闻→生成摘要→发送邮件,一气呵成。

📋 功能介绍

OpenClaw工作流系统提供以下能力:

🏗️ 工作流基础结构

工作流使用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"

✅ 最佳实践

🔍 调试技巧

# 测试工作流
openclaw workflow test workflow.yaml

# 查看执行日志
openclaw workflow logs --workflow 新闻摘要推送

# 单步调试
openclaw workflow test workflow.yaml --step 搜索新闻

# 模拟运行(不实际执行)
openclaw workflow test workflow.yaml --dry-run

🔗 相关链接