Agent 工作流编排实战
在上一节快速入门中,我们创建了一个简单的单轮对话 Agent。但在实际应用中,很多任务需要多个步骤协同完成。OpenClaw 的工作流编排引擎让你可以用 YAML 声明式地定义复杂的多步骤工作流,实现条件分支、并行执行和错误处理等高级功能。本教程将通过构建一个"研究助手"工作流,带你掌握工作流编排的核心技能。
什么是工作流编排?
工作流编排(Workflow Orchestration)是指将多个独立的 Agent 任务按照预定义的逻辑组织起来,形成一个完整的业务流程。就像交响乐团的指挥将不同乐器的演奏协调成一个和谐的整体,工作流编排引擎负责协调各个 Agent 的执行顺序、数据传递和异常处理。
工作流基础概念
在 OpenClaw 中,工作流由以下几个核心概念组成:
- 步骤(Step):工作流的最小执行单元,每个步骤对应一个 Agent 任务或工具调用
- 条件(Condition):基于上一步的输出决定下一步的执行路径
- 并行组(Parallel Group):多个可以同时执行的步骤集合
- 变量(Variable):在步骤之间传递数据的容器
- 错误处理器(Error Handler):当步骤执行失败时的回退逻辑
定义你的第一个工作流
让我们从一个简单的三步骤工作流开始:接收用户的研究主题,搜索相关资料,然后生成研究报告。在 OpenClaw 中,工作流定义文件通常放在项目的 workflows/ 目录下。
# workflows/research_agent.yaml
name: "研究助手工作流"
description: "自动搜索相关资料并生成结构化研究报告"
version: "1.0.0"
# 定义工作流的输入参数
input:
topic:
type: string
description: "研究主题"
required: true
depth:
type: string
default: "standard"
enum: ["brief", "standard", "deep"]
description: "研究深度"
# 定义步骤序列
steps:
- name: "分析研究需求"
agent: "analyst"
prompt: |
请分析以下研究主题,提取关键信息和研究方向:
主题:{{input.topic}}
研究深度:{{input.depth}}
请输出3-5个关键研究方向。
output: research_plan
- name: "搜索资料"
agent: "searcher"
prompt: |
根据以下研究计划搜索相关资料:
{{steps.research_plan.output}}
请为每个研究方向找到至少2个可靠来源。
output: search_results
- name: "生成报告"
agent: "writer"
prompt: |
基于以下搜索结果,撰写一份结构化的研究报告:
主题:{{input.topic}}
研究计划:{{steps.research_plan.output}}
搜索资料:{{steps.search_results.output}}
报告格式:摘要、背景、主要发现、结论、参考来源。
output: final_report
# 定义工作流的输出
output:
report: "{{steps.final_report.output}}"
这个工作流定义展示了 OpenClaw 工作流引擎的核心设计思想:声明式配置。你只需要描述"做什么",而不需要关心"怎么做"。引擎会自动处理步骤之间的数据传递、Agent 调度和状态管理。
条件分支:智能决策
现实中的业务流程往往需要根据中间结果做出不同的决策。OpenClaw 支持基于表达式的条件分支,让工作流能够智能地选择执行路径。例如,我们可以在研究助手工作流中加入深度判断逻辑:
# 条件分支示例
steps:
- name: "评估研究深度"
agent: "evaluator"
prompt: "评估以下主题的研究复杂度,返回 brief/standard/deep:{{input.topic}}"
output: complexity
- name: "简要研究"
agent: "searcher"
condition: "{{steps.complexity.output}} == 'brief'"
prompt: "对 {{input.topic}} 进行简要概述,控制在500字以内。"
output: research_content
- name: "标准研究"
agent: "searcher"
condition: "{{steps.complexity.output}} == 'standard'"
prompt: "对 {{input.topic}} 进行标准研究,包含背景、现状和趋势分析。"
output: research_content
- name: "深度研究"
agent: "searcher"
condition: "{{steps.complexity.output}} == 'deep'"
prompt: |
对 {{input.topic}} 进行深度研究,需要包含:
1. 历史演变 2. 技术细节 3. 行业对比
4. 数据支撑 5. 专家观点 6. 未来预测
output: research_content
- name: "汇总输出"
agent: "writer"
prompt: "整理研究内容:{{steps.research_content.output}}"
output: final_output
条件分支使用 condition 字段来定义,支持常见的比较运算符和逻辑运算符。当条件为真时,对应的步骤才会被执行。如果所有条件都不满足,该步骤会被跳过。你也可以定义一个 default 步骤作为默认分支。
注意事项
在使用条件分支时,请确保所有可能的分支路径最终都能汇聚到一个共同的后续步骤。否则,工作流可能会出现"死胡同"——某些执行路径没有后续步骤可以执行,导致工作流提前终止。
并行执行:提升效率
当多个步骤之间没有依赖关系时,可以使用并行执行来大幅提升工作流的运行效率。在研究助手场景中,我们可以同时搜索多个方向的材料:
# 并行执行示例
steps:
- name: "并行资料搜索"
type: parallel
branches:
- name: "搜索学术论文"
agent: "academic_searcher"
prompt: "搜索与 {{input.topic}} 相关的学术论文和研究成果"
output: academic_results
- name: "搜索行业报告"
agent: "industry_searcher"
prompt: "搜索与 {{input.topic}} 相关的行业报告和市场分析"
output: industry_results
- name: "搜索新闻动态"
agent: "news_searcher"
prompt: "搜索与 {{input.topic}} 相关的最新新闻和动态"
output: news_results
# 并行步骤的超时设置
timeout: 120
# 失败策略:all(全部成功)或 any(任一成功)
completion: "any"
- name: "综合整理"
agent: "synthesizer"
prompt: |
请综合以下三个来源的信息,生成一份全面的研究报告:
学术论文:{{steps.并行资料搜索.academic_results}}
行业报告:{{steps.并行资料搜索.industry_results}}
新闻动态:{{steps.并行资料搜索.news_results}}
output: final_report
并行执行使用 type: parallel 来声明,内部的 branches 定义了多个可以同时执行的分支。completion 字段控制并行步骤何时算作完成:all 表示所有分支都必须成功,any 表示只要有一个分支成功即可。timeout 设置了整个并行组的最长等待时间。
错误处理:构建健壮的工作流
在生产环境中,错误处理是工作流设计的关键环节。网络超时、API 限流、模型输出异常等情况都可能发生。OpenClaw 提供了多层次的错误处理机制:
- 步骤级重试:自动重试失败的步骤,支持配置重试次数和间隔
- 回退步骤(Fallback):当步骤彻底失败时,执行预定义的替代逻辑
- 全局错误处理器:捕获工作流中未被处理的异常,执行清理操作
# 错误处理示例
steps:
- name: "调用外部API"
agent: "api_caller"
prompt: "调用研究数据库API查询:{{input.topic}}"
output: api_result
# 步骤级重试配置
retry:
max_attempts: 3
delay: 5 # 重试间隔(秒)
backoff: 2 # 退避倍数
# 回退步骤
fallback:
agent: "local_searcher"
prompt: "使用本地知识库搜索:{{input.topic}}"
output: api_result
# 全局错误处理器
on_error:
- name: "记录错误日志"
agent: "logger"
prompt: |
工作流执行出错:
错误步骤:{{error.step_name}}
错误信息:{{error.message}}
执行时间:{{error.timestamp}}
- name: "发送告警通知"
agent: "notifier"
prompt: "向管理员发送工作流执行失败的告警通知"
实战:构建完整的研究助手工作流
现在,让我们将上面学到的所有概念整合起来,构建一个完整的研究助手工作流。这个工作流将包含条件分支、并行执行和错误处理,是一个可以直接用于生产环境的示例。
完整的工作流执行流程如下:首先分析用户的研究主题和深度需求,然后根据深度级别选择不同的搜索策略,接着并行搜索多个信息来源,之后综合所有资料生成研究报告,最后进行质量检查。如果质量不达标,会自动触发补充搜索。整个流程中,每个关键步骤都有重试和回退机制。
运行工作流非常简单,只需要一条命令:
# 运行研究助手工作流
openclaw workflow run research_agent \
--input topic="大语言模型在教育领域的应用" \
--input depth="deep"
# 查看工作流执行状态
openclaw workflow status research_agent --latest
# 查看执行日志
openclaw workflow logs research_agent --step "综合整理"
性能优化建议
对于复杂的工作流,建议使用 openclaw workflow visualize 命令生成工作流的可视化图表,帮助你发现可以优化的瓶颈环节。同时,合理使用并行执行和缓存机制(cache: true)可以显著减少工作流的总执行时间。对于频繁使用的中间结果,可以开启持久化缓存,避免重复计算。
小结
工作流编排是 OpenClaw 最强大的功能之一。通过 YAML 声明式配置,你可以轻松构建包含条件分支、并行执行和错误处理的复杂 Agent 工作流。掌握工作流编排,意味着你可以将 AI Agent 从简单的问答工具升级为能够处理真实业务场景的智能自动化系统。在下一节教程中,我们将学习如何让 Agent 调用外部工具,进一步扩展 Agent 的能力边界。