Router One
返回博客

多 Agent 编排:生产级 AI 系统的常见模式

|Router One Team

单 agent 循环上手简单,长大也简单。第一次看着一个 agent 想要在一次对话里调研话题、写报告、自我事实核查、产出最终结果——然后看着它跑偏、丢上下文、烧 200K tokens——你就理解了为什么人们开始把工作拆到多个 agent。

多 agent 编排不是一个模式,是四个。顺序、并行、分层、人工介入解决不同问题、有不同失败模式。这篇文章讲什么时候用哪种、生产中该盯什么、以及编排层(持有 Run/Step 状态、重试、预算、trace 的那一层)怎么把它们粘起来。

为什么要拆

讲模式之前先讲驱动约束。把工作拆到多个 agent 划算,需要满足下列至少一条:

  1. 不同角色想要不同 prompt。"研究"agent 的 system prompt 跟"写作"agent 不一样。两个塞进一个 prompt 让它翻倍变大,两个都变弱。
  2. **不同角色想用不同模型。**便宜快的模型做分流,贵且深的模型做硬步骤。每步有自己的模型身份后,路由决策更干净。
  3. **步骤想并行。**三个独立搜索不该顺序跑。
  4. **步骤想要不同工具权限。**代码 review agent 不该有 web search;研究 agent 不该有 shell 权限。
  5. **你想 checkpoint。**做完第 1 步停下来检查,再继续第 2 步——步骤是显式 agent 边界时容易得多。

都不沾的话,单 agent 循环就够。多数生产系统最终至少会落到其中一条。

模式 1:顺序

单 agent 最简单的扩展。Agent A 的输出是 Agent B 的输入。

[输入] → 研究员 → 提纲 → 写手 → 草稿 → 评审 → 终稿

什么时候用:

  • 写作类任务,研究、起草、评审确实是不同技能。
  • 每步输出小、形态明确(JSON 对象、列表、段落)的流水线。
  • 任何想把中间产出拿出来调试的场景。

失败模式:

  • agent 之间的信息丢失——研究员的语气在写手那里消失了。缓解:传给下游的上下文比你以为的需要的还要;让下个 agent 自己决定忽略什么。
  • 错误累积——第 1 步的错误事实在后面传播。缓解:高代价产出在研究和写作之间加一个验证步骤。
  • 成本叠加——三个 agent 每个 $X 就是每任务 $3X。窄角色用便宜模型。

Router One 内部用顺序模式跑内容流水线:研究员用 Gemini 3.1 Pro(长上下文、便宜),写手用 Claude Sonnet 4.6(散文好),评审用 Claude Opus 4.7(判断力强)。三种模型、三个 prompt、一个组合任务。

模式 2:并行(Fan-out / Fan-in)

任务有独立子任务时,同时跑、合并结果。

              ┌── 搜索 A ─┐
[输入] → ─────┼── 搜索 B ─┼─→ 合成 → 终稿
              └── 搜索 C ─┘

什么时候用:

  • 多源研究(搜索 A、搜索 B、内部文档等)。
  • 多视角分析(同一段代码以安全专家、性能专家、可靠性专家身份分别 review)。
  • 同一份数据的独立变换。

失败模式:

  • 浪费的并发——一个搜索就能解答的问题跑了 10 路并行。缓解:让一个 triage 步骤决定要不要 fan-out。
  • 组合爆炸——合成器收到太多输入失焦。缓解:让每个并行 agent 返回结构化、紧凑的结果,不是大段文字。
  • 成本——并行把固定开销(system prompt、schema)乘上去。缓解:在路由层缓存 system prompt;每个并行分支单独预算。

并行模式让 prompt 缓存变得重要。如果三个 agent 共享同一段长 system prompt,缓存一次后每个分支只为发散部分付费。可能比朴素版本便宜 5-10 倍。

模式 3:分层(管理者 + 工人)

管理者 agent 拆分任务、把子任务派给专家工人。工人回报;管理者决定继续派、重新规划,还是收尾。

[输入] → 管理者
            ├─→ 工人 1(返回)
            ├─→ 工人 2(返回)
            └─→ 管理者重新规划
                  └─→ 工人 3(返回)→ 终稿

什么时候用:

  • 结构在管理者思考之前未知的任务。
  • 长程工作,顶层计划要根据中间发现调整。
  • 跨多文件做 feature 的代码 agent:管理者决定哪些文件,工人去改。

失败模式:

  • 管理者瓶颈——所有工人输出经过管理者,上下文堆积、变慢。缓解:管理者 prompt 保持短,让工人产出结构化总结而不是完整对话。
  • 循环不收敛——管理者一直派工人不收敛。缓解:强制最大步数和预算;要求每个工人产出进展,不只是活动
  • 来源丢失——到第 14 步,你不记得第 7 步为什么发生。缓解:每次派遣记一条结构化 trace,带上管理者的推理。

这就是 Router One L5 编排层挣钱的地方。Run/Step 抽象让每次管理者派遣是一个一等公民步骤,有自己的 token、延迟、成本;你可以重放 trace、暂停 run、注入人工 review、预算到顶时杀掉。生产环境下的封装见 生产环境 AI Agent 完整指南

模式 4:人工介入

特定点上 agent 暂停、等人决策再继续。

[输入] → Agent → [提议方案] → 人审批 → Agent → ...

什么时候用:

  • 高代价决策(发邮件、部署代码、扣客户钱)。
  • 模型解决不了的非确定性(用什么语气?先做哪个 feature?)。
  • 内部工具,人就是真正的用户。
  • 任何受监管的场景。

失败模式:

  • 永远阻塞——agent 等一个永远不来的审批。缓解:超时 + 升级策略。
  • 走过场审批——人不读直接盖章。缓解:只在有意义的关卡上要审批。
  • 上下文丢失——人几小时后回来时 agent 缓存状态没了。缓解:持久化 run 加显式暂停/恢复支持;预算窗口跨暂停存活。

暂停/恢复是较难做好的事情之一。把 agent 状态放内存里就脆;持久化 Run/Step 状态、恢复时重读则稳。Router One L5 层处理这件事——任何 run 都能暂停、恢复、取消,期间发生的事有完整审计。

选哪个模式

粗略决策流:

问题模式
是纯流水线?每步输入→输出清晰?顺序
子任务真正独立、可并发?并行
不思考就不知道结构、要中途调整?分层
有需要人决定的步骤?人工介入(与上配合)

实践中,多数生产系统组合两到三个模式。一个代码 review agent 可能是:分层(顶层 agent 按文件派遣 review)、并行(每个文件三个 review 同时跑)、加上"准备合并"处的人工介入。

多 Agent 系统里的成本和延迟

规模化多 agent 系统时反复咬人的两件事:

**隐藏的成本累积。**单 agent 成本大致是对话长度的线性。多 agent 成本是所有 agent 输入输出之和,包括跨调用重复的 system prompt。朴素的 3 步顺序流水线可能是单 agent 等价物的 3-5 倍成本。

缓解:

  • 网关层激进 prompt 缓存。Router One 跨请求缓存 system prompt 和共享上下文;不缓存的话 system prompt 成本会主导。
  • 先便宜后贵的路由。Haiku/Flash 做分流和结构化;硬步骤保留给 Opus/Pro。
  • 边走边截断。传过去的是需要的,不是完整对话。

**延迟堆叠。**顺序 agent 延迟相加;3 步流水线每步 5 秒就是端到端 15 秒。用户感受得到。

缓解:

  • 数据依赖允许的地方都并行。
  • 从最后一个 agent 流式输出,让用户看到进展。
  • 知道顺序步骤要来时预热缓存。

每步模型选择见 AI 模型路由详解。网关层成本杠杆见 2026 年降低 LLM API 成本的 5 种方法

可观测性:trace,不要 print

单 agent 调试是"读对话"。多 agent 调试没有结构化 trace 不可能做到。你的编排层应该给你:

  • 每步的模型、prompt、输出、token、延迟、成本。
  • 派遣之间的父子关系。
  • 一步发生的原因(管理者的计划、错误重试、人工审批)。
  • 重放能力——给一条 trace,能复现路径吗?

这正是 Router One 开箱即用的 L7 可观测层。Agent 规模下可观测性是什么意思见 生产环境 AI Agent 完整指南

故障恢复

多 agent 系统失败方式和单 agent 不一样:

  • 部分失败:10 个并行分支 9 个成功,1 个超时。提前决定:聚合手头有的,还是整个 run 失败?生产中带告警的部分聚合通常是对的。
  • 流水线中段失败:7 步里第 4 步失败。只重试那一步,别重启整个 run。要求 Run/Step 持久化。
  • 级联失败:上游 agent 的坏输出污染下游。便宜的缓解:步骤之间做 schema 校验。下个 agent 拒绝畸形输入而不是对垃圾推理。

一条有用的运营规则:每步派遣前必须声明什么算"成功"。编排器再去强制。

常见问题

该用 LangGraph、Mastra、Inngest,还是自己写? 多数团队从其中一个框架起步。LangGraph 走图形流,Inngest 走事件驱动,Mastra 走类型化 agent 定义。框架选哪个比把编排概念想清楚没那么重要;以后能换。

编排是不是必须用 Router One? 框架处理进程内编排。Router One 处理横切关心:每步路由决策、网关层缓存、持久化 Run/Step 状态、trace、预算、可观测性。两者搭配:你的框架在每个 agent 步骤里调 Router One。

几个 agent 算多? 超过 ~10 个不同 agent 角色后,系统就难以推理。接近时找合并机会——两个描述重叠的专家通常能合成一个。

像 AutoGPT 那种 agent 框架呢? 那些是分层模式的早期原型。它们普及了想法,但默认循环动力学在生产中倾向发散。上面那些模式才是经得起的。

多 agent 流式输出? 多数团队只对最后一个 agent 流式输出。中间 agent 产出结构化输出,不需要 stream。例外是非常长的顺序流水线,让用户看到进展时受益;那种情况下,步骤之间 stream 短的进度消息。

结论

多 agent 系统不是魔法;它是一种把不同角色、不同模型、不同访问边界显式编码的方法。顺序、并行、分层、人工介入是经得起的四个形态。成本和延迟会复合;可观测性和 Run/Step 持久化不再是可选项。

让多 agent 系统在生产中可负担的网关层支持,看 Router One 的 模型路由 怎么把每步留在对的模型上、skillsMCP 怎么让系统里单个 agent 实质性更有用。

相关阅读