LLM 分 Agent 的增益原理与权衡

概述

在 LLM 应用中,将一个复杂任务拆分为多个子 Agent(Sub-Agent)协作完成,往往比单个 Agent 端到端处理效果更好。这并非简单的”分工”,而是从根本上缓解了 LLM 的多项固有瓶颈。

核心原因

1. 上下文窗口聚焦

LLM 的上下文窗口是有限资源。单个 Agent 处理复杂任务时,上下文中同时塞入任务描述、多轮工具调用结果、中间状态、历史对话等,导致”信号被噪声淹没”。

分 Agent 后,每个子 Agent 只接收与自己职责相关的上下文片段,信噪比大幅提高。

2. 缓解”Lost in the Middle”问题

研究表明,LLM 对上下文中间部分的信息利用效率显著低于首尾。当上下文过长时,中间的关键信息容易被忽略。分 Agent 将长上下文切分为多个短上下文,每个子 Agent 的关键信息都处于高注意力区域。

3. 降低单步推理复杂度

LLM 的推理能力并非无限。一个需要同时考虑架构设计、代码实现、测试策略、错误处理的任务,对模型的认知负荷远大于只做其中一项。

分 Agent 本质上是一种认知卸载(cognitive offloading):把一个需要”同时想很多事”的难题,变成多个”只想一件事”的简单题。

4. 工具选择精度提升

当一个 Agent 可以调用 20+ 种工具时,选错工具的概率显著上升。每个子 Agent 只暴露与其职责相关的少量工具,工具选择变成一个更简单的决策问题。

5. 并行执行

独立的子任务可以并行运行,缩短总执行时间。例如:同时在多个文件中搜索信息、同时运行测试和代码检查。这是单 Agent 串行执行无法实现的。

6. 错误隔离

单 Agent 模式下,一次工具调用失败或推理偏差可能污染后续所有步骤(error propagation)。分 Agent 后,一个子 Agent 的失败不会影响其他子 Agent 的上下文,可以独立重试或降级处理。

7. 专业化的系统提示

每个子 Agent 可以有针对性的系统提示(system prompt),明确角色、约束和输出格式。这比在一个巨大的系统提示中塞入所有指令更有效——LLM 对清晰、聚焦的指令遵循度更高。

类比理解

单 Agent分 Agent
一个人同时当架构师、开发者、测试、产品经理每个角色各一人,各司其职
一个函数 1000 行包含所有逻辑拆成多个单一职责的函数
开卷考试但书太多找不到答案每科只带对应的参考书

分 Agent 的代价与权衡

分 Agent 不是免费的,需要注意:

  • 协调开销:父 Agent 需要拆分任务、分发、汇总结果,这本身消耗 token 和推理能力
  • 上下文断裂:子 Agent 看不到全局信息,可能做出局部最优但全局次优的决策
  • Token 总量增加:多个 Agent 各自有系统提示和上下文,总 token 消耗通常更高
  • 设计复杂度:如何拆分任务、如何定义 Agent 边界是一个需要经验的设计问题

因此,并非所有场景都适合分 Agent。简单任务用单 Agent 反而更高效。分 Agent 的收益主要体现在:任务复杂度高、涉及多个独立子任务、上下文量大的场景。

关键要点

  • 分 Agent 的核心收益是降低每个推理步骤的复杂度,而非简单的分工
  • 最重要的两个机制:上下文聚焦 + 认知负荷降低
  • 适用于复杂、可分解、上下文量大的任务;简单任务不需要
  • 设计 Agent 拆分方案时,应以”最小化子 Agent 间的信息依赖”为原则

相关链接