Skip to content

Multi-Agent 架构 ​

这一节解决什么问题 ​

单 Agent 在复杂场景下会遇到三个核心问题:上下文过长(所有信息塞进一个 Prompt)、职责不清(一个 Agent 做太多不同类型的事)、难以调试(出了问题不知道是哪一步出错)。

Multi-Agent 通过职责分离解决这些问题——把一个复杂的任务拆分给多个专门的 Agent,每个 Agent 只负责自己的领域,通过调度机制协作完成任务。

本节会系统讲解 Multi-Agent 的核心概念、常见协作模式、关键设计问题和工程化要点。

核心概念 ​

Multi-Agent 是什么 ​

Multi-Agent 是由多个独立的 Agent 组成的系统,每个 Agent 有自己的角色定义、工具集和职责边界。它们通过共享状态和调度机制协作完成复杂任务。

关键点:Multi-Agent 不是"多个角色的 Prompt 拼在一起",而是需要明确的职责划分、状态共享机制、调度策略和结果整合方式。

为什么需要拆分 Agent ​

拆分 Agent 的核心原因:

  • 职责清晰:每个 Agent 只做一类任务,Prompt 更聚焦、工具更精简、输出更可靠
  • 上下文管理:不同 Agent 关注不同的上下文,避免单个 Prompt 塞入过多无关信息
  • 独立优化:每个 Agent 可以独立调优(Prompt、工具、模型),互不影响
  • 可测试性:单个 Agent 的行为更容易测试和验证

常见协作模式 ​

Supervisor 模式 ​

由一个 Supervisor Agent 负责理解用户意图、分解任务、调度其他 Agent 执行、整合结果。

text
用户请求 → Supervisor → (数据分析) → Data Analyst
                      → (工具调用) → Tool Executor
                      → (风险审查) → Risk Reviewer
                      → 结果整合 → 输出

Supervisor 是整个系统的"大脑",它知道有哪些 Agent 可用、每个 Agent 擅长什么、当前任务需要哪些步骤。

Planner-Executor 模式 ​

先由 Planner 生成完整计划,再由 Executor 按计划逐步执行。

text
用户请求 → Planner → 生成计划(步骤列表)→ Executor 逐步执行 → 输出

这种模式适合任务步骤比较明确的场景。计划可以被审查和修改后再执行。

Reviewer 模式 ​

在执行链路中加入 Reviewer 节点,对 Agent 的输出进行质量检查或风险审查。

text
Agent 执行 → Reviewer → (通过) → 继续
                      → (不通过) → 返回 Agent 重新执行

Reviewer 可以是规则检查、模型判断或人工审核。

多 Agent 的核心问题 ​

协调成本 ​

Agent 之间的通信和协调会引入额外的延迟和 token 消耗。每多一个 Agent,系统的复杂度就增加一层。需要权衡拆分的收益和协调的成本。

状态共享 ​

Agent 之间需要共享上下文(如用户输入、工具结果、中间推理),但不能互相覆盖。需要设计明确的状态读写规则。

重复执行 ​

如果调度不当,多个 Agent 可能重复执行相同的操作。需要有机制避免重复(如标记已完成的步骤、设置执行锁)。

责任边界 ​

当任务失败时,需要能定位是哪个 Agent 的问题。这要求每个 Agent 的输入输出都有明确的记录(Trace)。

为什么重要 ​

Multi-Agent 是处理复杂业务场景的必要架构。

首先,复杂任务需要分工。一个涉及数据分析、工具调用、风险审查的任务,很难用单个 Agent 高效完成。拆分后每个 Agent 的 Prompt 更聚焦,工具更精简,输出质量更高。

其次,不同环节需要不同的模型策略。数据分析可能需要强推理模型,工具调用可能需要快模型,风险审查可能需要保守策略。Multi-Agent 允许为不同环节选择不同的模型和参数。

再次,可维护性。单个 Agent 的 Prompt 膨胀到一定程度就难以维护。拆分后每个 Agent 的 Prompt 相对简短,更容易理解和优化。

最后,可扩展性。新增能力只需要新增一个 Agent 并注册到调度系统中,不需要修改现有 Agent。

工程化理解 ​

从工程角度看,Multi-Agent 系统的核心不是"写多个 Prompt",而是设计调度机制和共享状态。

调度机制:需要决定谁先执行、谁后执行、失败了怎么办。调度可以是 Supervisor 驱动的(动态决定),也可以是预定义的流程(状态机控制)。Supervisor 模式灵活但成本高,状态机模式可控但不够灵活。

共享状态:所有 Agent 需要读写同一个状态对象。状态设计要考虑:哪些信息全局共享、哪些信息仅特定 Agent 可见、如何避免写冲突。一般的做法是用一个结构化的状态对象,每个 Agent 只写入自己负责的字段。

工具隔离:不同 Agent 应该有不同的工具集。数据分析 Agent 不应该有发送邮件的权限,工具调用 Agent 不应该有数据分析的权限。工具隔离是安全性的重要保障。

结果整合:多个 Agent 的输出需要合并成一个连贯的结果。整合方式可以是简单拼接、优先级选择或由 Supervisor 生成最终回复。

Trace 与调试:每个 Agent 的执行都需要独立记录 Trace,包括输入、关键决策摘要、工具调用、输出。出了问题需要能定位到具体是哪个 Agent 的哪个步骤出错。

常见误区 ​

误区一:多 Agent 就是多个角色的 Prompt

多 Agent 不是把"你是数据分析专家""你是工具调用专家"这样的 System Prompt 拼在一起。每个 Agent 需要有独立的工具集、独立的上下文管理、独立的执行记录。

误区二:Agent 越多越好

每多一个 Agent,协调成本就增加一层。不必要的拆分只会增加延迟和复杂度。只有当单 Agent 确实无法胜任时才需要拆分。

误区三:Supervisor 能解决所有问题

Supervisor 本身也是一个 Agent,它的推理能力有限。如果任务分解逻辑太复杂,Supervisor 可能会做出错误的调度决策。复杂场景下可能需要预定义的流程(状态机)来辅助。

误区四:忽略状态共享设计

多 Agent 之间如果没有明确的状态共享规则,很容易出现信息丢失、状态冲突或上下文膨胀。需要在系统设计阶段就定义好状态结构和读写规则。

误区五:不需要 Trace

多 Agent 系统的调试难度远高于单 Agent。没有 Trace,出了问题根本不知道是哪个 Agent 的哪个步骤出错。Trace 是 Multi-Agent 系统的必备基础设施。

和项目的关系 ​

Multi-Agent 是复杂 Agent 系统的核心架构模式。后续在项目 B 中会用到这一能力,但当前阶段只做知识准备,不展开具体项目实现。

理解 Multi-Agent 的协作模式(Supervisor、Planner-Executor、Reviewer)和核心问题(协调成本、状态共享、责任边界),是设计多 Agent 系统的基础。

面试表达 ​

可以这样表达:

> 多 Agent 不是把多个 Prompt 拼在一起。我的理解是,多 Agent 需要明确的职责拆分、状态共享机制、调度策略和结果整合方式。我采用 Supervisor 模式,让 Supervisor 负责理解意图和调度任务,每个执行 Agent 只负责自己的领域。这样做的好处是职责清晰、每个 Agent 的 Prompt 更聚焦、输出更可靠。但多 Agent 也有代价——协调成本增加、状态管理变复杂、调试难度上升。所以需要 Trace 机制来记录每个 Agent 的执行过程,方便定位问题。

相关链接 ​