AI 智能体常见工作流模式深度解析:何时顺序、何时并行、何时迭代优化

从顺序、并行到评估器-优化器,系统拆解 AI Agent 工作流的工程选型

Posted by iceyao on Monday, May 4, 2026

一、引言:Agent 需要自主性,也需要工程结构

原文链接:Common workflow patterns for AI agents—and when to use them
来源:Claude Blog / Anthropic
发布时间:2026 年 3 月 5 日

过去两年,开发者谈到 AI Agent 时,常常会把重点放在“自主性”上:模型能否自己决定下一步、能否选择工具、能否规划任务、能否在不确定环境中持续推进。这个方向没有错,但一旦进入生产系统,另一个问题会变得更关键:Agent 的执行过程是否可控、可调试、可复现、可度量。

Anthropic 这篇文章的核心观点可以概括为一句话:工作流不是为了削弱 Agent 的智能,而是为了给智能体系统提供可控的执行结构。 在每个步骤内部,Agent 仍然可以推理、调用工具、处理局部不确定性;但在步骤之间,工作流负责规定边界、依赖、并发、质量门槛和停止条件。

换句话说,生产级 Agent 系统不是简单地让一个模型“随便想办法完成任务”,而是在自主性和确定性之间做工程折中:

AI Agent 工作流选型总览

图注:本文配图均为作者基于 Anthropic 原文机制整理的概念示意,并非官方架构图。

原文重点讨论三种常见工作流模式:

  1. Sequential workflows:顺序工作流,解决步骤依赖问题;
  2. Parallel workflows:并行工作流,解决独立子任务的延迟问题;
  3. Evaluator-optimizer workflows:评估器-优化器工作流,解决高质量输出的迭代改进问题。

这三种模式并不是越复杂越好。恰恰相反,原文反复强调:先从最简单的方案开始。 如果单个 Agent 调用已经能稳定完成任务,就不要急着引入多 Agent、多步骤或循环评估。工作流的价值必须通过质量、延迟、成本或可治理性来证明,而不是为了让架构图看起来更高级。


二、工作流与自主 Agent:先划清系统边界

在讨论具体模式之前,需要先区分两个概念:自主 Agent 和 工作流化 Agent 系统。

自主 Agent 更像一个开放式执行器。它接收目标后,自行决定使用哪些工具、按什么顺序执行、什么时候停止、如何处理异常。这种方式在探索性任务中很有吸引力,例如研究资料、修复未知 bug、浏览代码库、调查生产事故等。

工作流化 Agent 系统则更像一个有明确阶段边界的执行管线。系统提前规定任务如何拆分、哪些步骤必须先后执行、哪些步骤可以并行、什么结果需要评估、何时重试、何时降级、何时终止。每个阶段可以仍然由 LLM 或 Agent 完成,但阶段之间的控制权属于工作流。

一个实用判断是:

问题 更偏向自主 Agent 更偏向工作流
任务路径是否提前可知 很难提前确定 大体可枚举
输出质量是否有明确标准 标准模糊 标准清晰
是否需要审计和复现 相对弱 很强
是否有固定阶段依赖 不明显 很明显
失败处理是否可规则化 难规则化 可设计 retry、fallback、人工介入

很多生产系统最终会采用混合形态:外层是工作流,内层步骤由 Agent 执行。外层保证系统不会失控,内层保留模型处理局部复杂性的能力。


三、模式一:顺序工作流——把复杂任务拆成可验证的依赖链

顺序工作流是最容易理解、也最常见的 Agent 工作流。它按照预定义顺序执行多个步骤,前一步的输出成为后一步的输入。

顺序工作流运行机制

3.1 运行机制

顺序工作流的核心是 stage boundary:每个阶段都有清晰输入、输出和验收条件。典型流程如下:

  1. 接收用户请求或外部事件;
  2. 第一个 Agent/步骤完成局部任务;
  3. 对中间结果做格式化、校验或压缩;
  4. 将结果传给下一个步骤;
  5. 重复直到最终输出。

例如,一个文档入库系统可以拆成:

原始文档 → 信息抽取 → Schema 校验 → 去重合并 → 写入数据库 → 生成审计记录

这里每一步都依赖前一步输出。信息抽取还没完成,就无法校验字段;字段没有校验,就不应该写入数据库。这类任务天然适合顺序工作流。

从工程实现看,顺序工作流通常需要为每个步骤定义统一接口:

type Step<Input, Output> = {
  name: string
  run(input: Input, context: RunContext): Promise<Output>
  validate?(output: Output): Promise<void>
}

重点不在于这个接口本身,而在于它迫使系统把“Agent 说了一段话”变成“某个步骤产出了可消费的结构化结果”。这会显著提升可调试性:当最终结果失败时,开发者能定位是抽取失败、校验失败,还是写入失败。

3.2 适用场景

顺序工作流适合以下场景:

  • 步骤之间有强依赖:A 的输出是 B 的输入;
  • 任务可以拆成稳定阶段:每个阶段职责明确;
  • 需要中间检查点:可以在每一步记录输入、输出、耗时、Token 和错误;
  • 需要逐步降低不确定性:先提取事实,再基于事实做判断;
  • 需要把复杂 prompt 拆小:一个大而全的 prompt 不稳定时,将任务拆成多个窄任务。

典型例子包括:

场景 顺序拆分方式
营销内容本地化 生成英文文案 → 术语审查 → 多语言翻译 → 本地化润色
内容审核 抽取内容 → 分类风险 → 应用规则 → 路由到处理队列
数据处理 文档解析 → 字段抽取 → Schema 校验 → 数据写入
代码迁移 扫描依赖 → 修改代码 → 运行测试 → 生成变更说明

3.3 工程收益

顺序工作流的最大收益不是“更智能”,而是更可控:

  • 可观测:每一步都可以记录日志和指标;
  • 可回放:可以用同一中间输入重跑某个阶段;
  • 可替换:某个 Agent 表现不好时,只替换该阶段;
  • 可降级:某一步失败时,可以重试、跳过、转人工或返回部分结果;
  • 可做单元测试:用固定输入测试单个阶段的输出约束。

3.4 不该使用的情况

顺序工作流也有明显代价:延迟会线性累加。如果每一步都需要一次模型调用,五步流程就至少有五次模型延迟。它也会增加数据传递和状态管理成本。

因此,不应在以下场景强行使用顺序工作流:

  • 单个 Agent 调用已经能稳定完成任务;
  • 拆分后的每一步边界并不清晰;
  • 多个步骤只是复述同一件事,没有信息增益;
  • 用户期望实时响应,无法接受多次模型调用;
  • 为了“看起来像架构”而把简单任务拆成流水线。

一个好的实践是:先建立单 Agent baseline,再根据失败点拆分。 如果发现单个 Agent 经常在“先抽取再判断”这类任务中混淆事实和结论,再把抽取和判断拆成两个顺序步骤。


四、模式二:并行工作流——用 fan-out/fan-in 降低延迟并分离视角

并行工作流适用于多个子任务彼此独立、但顺序执行太慢的场景。它的结构类似分布式系统中的 fan-out / fan-in:先把任务分发给多个 Agent,再把结果聚合回来。

并行工作流的 fan-out/fan-in 机制

4.1 运行机制

并行工作流通常包含三个阶段:

  1. 任务拆分:将原始请求拆成多个互不依赖的子任务;
  2. 并发执行:多个 Agent 或多个模型调用同时运行;
  3. 结果聚合:汇总多个结果,生成最终答案、评分或路由决策。

并行可以有两种常见形态。

第一种是 任务分片:每个 Agent 处理不同子任务。例如分析一篇长文时,一个 Agent 抽取主题,一个 Agent 做事实核查,一个 Agent 判断情绪倾向。

第二种是 视角分离:多个 Agent 处理同一输入,但从不同角度审查。例如代码审查中,一个 Agent 看安全漏洞,一个看性能问题,一个看可维护性,一个看测试覆盖。

4.2 适用场景

并行工作流适合以下情况:

  • 子任务之间没有数据依赖;
  • 总延迟比单次调用成本更重要;
  • 不同维度需要不同专家 prompt;
  • 需要多个独立判断降低漏检风险;
  • 可以设计清晰的结果聚合策略。

典型应用包括:

场景 并行方式 聚合方式
代码审查 安全、性能、可读性、测试分别审查 汇总问题并按严重度排序
文档分析 主题、事实、情绪、实体并行抽取 合并成结构化报告
用户请求处理 主任务响应与安全筛查并行 安全结果决定是否放行
分类任务 多个分类器独立判断 多数投票或置信度加权
RAG 问答 多路检索、重排、答案生成并行探索 汇总证据后生成答案

4.3 关键难点:聚合比并发更难

并行工作流最容易被低估的地方,不是如何发起多个 API 请求,而是如何处理多个输出之间的冲突。

如果三个 Agent 给出三个结论:一个认为代码安全,一个认为存在高危注入风险,一个认为证据不足,系统应该如何决策?这不能靠“再问一次模型”随意解决,而需要提前设计聚合策略:

  • 多数投票:适合分类、判断、简单偏好选择;
  • 置信度加权:适合每个 Agent 能给出可解释评分的场景;
  • 专家优先:安全、合规等高风险领域优先采纳专业审查 Agent;
  • 规则兜底:只要任一高优先级检查命中,就触发阻断或人工复核;
  • 汇总 Agent:让一个专门的聚合 Agent 读取全部结果并生成最终报告。

并行工作流的工程质量,取决于聚合层是否明确。否则你得到的只是更快、更贵、但更难解释的一组矛盾输出。

4.4 成本与限流问题

并行会降低墙钟时间,但不会降低总计算量。相反,它通常会增加:

  • 并发 API 调用数量;
  • 峰值速率限制压力;
  • 输出聚合 Token;
  • 日志、追踪和错误处理复杂度。

因此,并行工作流的收益主要体现在 延迟优化 和 职责分离,而不是成本优化。只有当任务确实可独立拆分,并且延迟是瓶颈时,并行才值得引入。


五、模式三:评估器-优化器工作流——把生成与质检拆成闭环

评估器-优化器工作流适用于“第一次生成通常不够好,但有明确标准可以迭代改进”的场景。它把系统拆成两个角色:

  • Optimizer / Generator:负责生成候选答案、代码、文档或方案;
  • Evaluator:根据标准检查候选结果,并给出可执行反馈。

评估器-优化器工作流闭环

5.1 运行机制

基本循环如下:

生成候选结果 → 根据标准评估 → 若不达标则反馈修改 → 再次生成 → 达标或达到预算后停止

这个模式的关键不是“让模型多想几次”,而是把两个认知任务拆开:生成 和 评价。

生成器倾向于产出内容,评估器则专注于发现缺陷、应用标准、提出修正方向。两者可以使用不同 prompt、不同模型、不同工具,甚至不同温度参数。例如生成器使用更开放的采样策略,评估器使用更保守、更结构化的输出格式。

5.2 适用场景

评估器-优化器适合高质量要求且评估标准清晰的任务:

场景 评估器检查什么
代码生成 编译是否通过、测试是否通过、安全规则、边界条件
SQL 生成 是否可执行、是否使用参数化查询、是否有全表扫描风险
技术文档 是否完整、是否准确、是否遗漏前提、是否有矛盾
客服回复 语气、政策合规、是否解决用户问题
数据分析报告 指标解释是否正确、结论是否有证据支撑

这类任务有一个共同点:初稿可以有瑕疵,但评估器能够指出具体改进方向,并且改进后的质量可以被验证。

5.3 停止条件比循环本身更重要

评估器-优化器最大的风险是进入低收益循环:每轮都能发现一些小问题,但整体质量已经接近平台期,继续迭代只是在消耗 Token 和时间。

因此必须预先设置停止条件:

  • 最大迭代次数,例如最多 3 轮;
  • 质量阈值,例如评分达到 0.9;
  • 阻断问题清零,例如没有高危安全问题;
  • 增益阈值,例如连续两轮评分提升小于 0.02;
  • 时间或成本预算,例如 15 秒内必须返回。

一个可落地的控制逻辑如下:

for (let i = 0; i < maxIterations; i++) {
  const candidate = await optimizer.generate(input, feedback)
  const report = await evaluator.check(candidate, criteria)

  if (report.pass || report.score >= threshold) {
    return candidate
  }

  if (!report.actionableFeedback.length) {
    return candidate
  }

  feedback = report.actionableFeedback
}

return bestCandidate

在生产系统中,bestCandidate 不一定是最后一轮结果,而应该是历史迭代中评分最高、且没有阻断问题的结果。

5.4 不该使用的情况

不要把评估器-优化器当成默认增强器。以下情况通常不适合:

  • 第一次生成已经足够好;
  • 实时交互不允许多轮延迟;
  • 任务是简单分类或抽取,不需要迭代;
  • 评估标准非常主观,评估器无法稳定判断;
  • 已有确定性工具可以完成检查,例如 lint、typecheck、单元测试;
  • 成本预算无法承受多轮模型调用。

更好的做法是:先用确定性工具做硬检查,再用评估器做语义检查。比如代码生成场景中,编译、测试、lint 应该由工具执行;评估器负责检查设计合理性、边界遗漏和安全风险。


六、三种模式的使用场景对比

把三种模式放在一起看,选择逻辑其实很清晰:

AI Agent 工作流模式对比矩阵

维度 单 Agent 顺序工作流 并行工作流 评估器-优化器
主要目标 最小复杂度 处理依赖链 降低总延迟 / 分离视角 提升质量
任务结构 简单或开放 阶段明确、前后依赖 子任务独立 可生成、可评估、可改进
延迟 最低 随步骤数增加 墙钟时间较低,峰值并发高 多轮迭代,通常最高
成本 最低 中等 API 调用数增加 Token 和调用数增加
调试性 取决于日志 强 中等,聚合层关键 强,但需要记录每轮反馈
典型风险 单次输出不稳定 过度拆分、延迟累加 结果冲突、聚合困难 无限打磨、收益递减
最适合 baseline、简单任务 数据管道、审核流程、迁移流程 多维审查、并发抽取、投票 代码、文档、SQL、高标准输出

可以把选型压缩成四个问题:

  1. 单个 Agent 是否已经足够好? 如果是,停止,不要引入工作流。
  2. 子任务是否存在强依赖? 如果是,优先顺序工作流。
  3. 子任务是否相互独立且延迟是瓶颈? 如果是,考虑并行工作流。
  4. 输出是否需要基于明确标准反复改进? 如果是,考虑评估器-优化器。

这也是原文最重要的工程建议:不要从模式出发设计系统,而要从失败模式出发选择模式。


七、组合模式:真实系统往往不是三选一

在真实生产系统中,这三种模式经常组合使用。例如一个代码修复 Agent 可能是这样的:

  1. 顺序阶段一:理解 issue、定位相关代码;
  2. 并行阶段:安全 Agent、测试 Agent、架构 Agent 同时审查修复方案;
  3. 顺序阶段二:生成 patch、运行测试;
  4. 评估器-优化器:根据测试失败和审查意见迭代修改;
  5. 顺序阶段三:生成变更说明并请求人工确认。

组合模式要特别注意两个问题。

第一,不要让状态传播变得不可控。每个阶段传递给下一阶段的内容应该是结构化摘要,而不是把所有中间对话原样塞进去。否则上下文会迅速膨胀,成本和错误传播都会失控。

第二,每个复杂模式都要有明确收益假设。例如并行阶段的收益假设是“多角度审查能降低漏检率”;评估器-优化器的收益假设是“迭代能让测试通过率提升”。没有指标,就无法判断复杂度是否值得。


八、落地建议:从 baseline 到生产工作流

基于原文观点和工程实践,可以按以下路径落地 Agent 工作流:

8.1 先建立单 Agent baseline

先把任务完整交给单个 Agent,并记录:

  • 成功率;
  • 平均延迟;
  • Token 成本;
  • 常见失败类型;
  • 用户是否需要人工修正。

只有当 baseline 暴露出稳定失败模式时,再引入工作流。否则复杂度只会掩盖问题。

8.2 用失败模式决定拆分方式

失败模式 推荐模式
经常漏掉固定步骤 顺序工作流
某一步输出格式不稳定 顺序工作流 + 校验
多个独立检查耗时太长 并行工作流
单次生成质量波动大 评估器-优化器
安全/合规漏检风险高 并行审查 + 高优先级阻断规则
初稿可用但需要打磨 评估器-优化器

8.3 每个步骤都要可观测

不要只记录最终答案。生产系统至少应该记录:

  • 每个步骤的输入摘要;
  • 每个步骤的结构化输出;
  • 模型、参数、工具调用;
  • Token、耗时、重试次数;
  • 校验错误和降级路径;
  • 聚合器如何处理冲突。

这些日志既用于 debug,也用于评估工作流是否真的带来收益。

8.4 优先使用确定性检查

如果问题可以用确定性程序检查,就不要让 LLM 猜。例如:

  • JSON Schema 校验;
  • TypeScript 类型检查;
  • 单元测试;
  • SQL explain;
  • lint 和格式化;
  • 权限、配额、敏感操作确认。

LLM 更适合处理语义、意图和模糊判断;确定性工具适合处理规则、格式和执行结果。好的 Agent 工作流会把两者结合起来。


九、总结:工作流是 Agent 的工程化约束层

AI Agent 的价值来自模型的推理和工具使用能力,但生产级可靠性来自工程结构。Anthropic 这篇文章给出的三种模式,本质上对应三类问题:

  • 顺序工作流解决“步骤之间有依赖”的问题;
  • 并行工作流解决“独立任务顺序执行太慢”的问题;
  • 评估器-优化器工作流解决“单次生成质量不够稳定”的问题。

真正重要的不是记住这些模式名称,而是理解它们背后的取舍:顺序带来可控性但增加延迟;并行降低墙钟时间但增加聚合难度;评估器-优化器提升质量但放大成本和迭代时间。

因此,设计 Agent 工作流时最稳妥的原则是:从单 Agent baseline 开始,用可观测的失败模式驱动架构演进。 当你能明确说出“为什么需要拆分、为什么需要并行、为什么需要迭代、如何验证收益”时,工作流才是在增强 Agent;否则,它只是把一个不稳定系统包装成了更复杂的不稳定系统。

「真诚赞赏,手留余香」

爱折腾的工程师

真诚赞赏,手留余香

使用微信扫描二维码完成支付