Skip to content

第 20 章 · 多智能体协作模式:从线性到全连接 07-09

本章观点

第 19 章我们讲了规划工作流,让一个 Agent 先规划再执行。但当任务真的复杂到一个 Agent 装不下时,就需要多智能体协作。

吴恩达 Agentic AI 课程(Bilibili BV1DfrdByE2H,p29-p30)提出一个反直觉的判断:

多智能体系统的关键不是"代理数量越多越好",而是怎么划分角色、配置工具,以及设计代理之间的通信与协调方式。

同样是研究员 / 设计师 / 撰稿人三个代理,线性传递、经理协调和自由讨论会产生完全不同的系统行为。通信模式选错了,再多代理也救不了;选对了,三个代理就够用。

本章对应本教程"四权模型"里的控制权:单 Agent 是 LLM 控制一个 loop,多 Agent 是控制权在多个 loop 之间传递。谁能调谁、谁决定下一步、什么时候结束任务,这些都需要显式设计。

我们会讲清楚四件事:

  1. 多智能体到底比单 Agent 强在哪里(什么时候值得拆)。
  2. 四种通信模式:线性 / 单层层级 / 深层级 / 全连接,各自的工程权衡。
  3. 通信协议设计:消息该包含什么字段,怎么避免上下文污染。
  4. 多 Agent 系统的调试:为什么必须看 trace,不能只看最终答案。

20.1 为什么需要多智能体

第 2 章讲过,单 Agent 是 "LLM + 工具 + 循环 + 状态 + 停止边界"。它已经能处理很多任务。什么时候才值得拆成多 Agent?

20.1.1 单 Agent 的三个瓶颈

瓶颈 1:工具数量爆炸

一个客服 Agent 如果同时处理订单查询、退货、库存、邮件、报表,工具列表可能 30+。LLM 每轮都要看全部工具 schema,token 浪费、选错工具概率上升。第 3 章讲的 Context Rot 会更严重。

瓶颈 2:提示词冲突

一个 Agent 既要"礼貌回复用户"又要"严格执行退货政策"时,prompt 会很长很矛盾。LLM 在两个目标间摇摆,输出不稳定。

瓶颈 3:上下文污染

第 8 章讲过上下文污染:长对话里 LLM 忘记原始目标。单 Agent 跑 20 轮,context 里堆满中间结果,模型开始幻觉、跑题。Subagent 隔离是解法,但隔离本身就需要多 Agent 架构。

20.1.2 多 Agent 的价值

多 Agent 把任务拆成多个角色,每个角色:

  • 只看自己关心的工具(研究员只看搜索,撰稿人只看文本生成)
  • 只读自己的 prompt(角色边界清晰,不会互相矛盾)
  • 在独立 context 里跑(不污染主 context)

这就像人类团队:你不会让一个人同时做研究、设计、写作、审核;而是分工,每个人专注自己的领域。

20.1.3 但多 Agent 也有代价

Anthropic Multi-agent Research System 博客给了一个量化数据:

多 Agent 系统的 token 消耗是普通聊天的约 15 倍。

代价来源:

  • 通信成本:Agent 之间传消息,每次都是 LLM 调用。
  • 协调成本:orchestrator 决定下一步调谁,也是 LLM 调用。
  • 重复工作:多个 Agent 可能独立做同一件事,浪费 token。
  • 调试困难:失败时 trace 涉及多个 Agent,比单 Agent 难分析。

判断准则

  • 任务真的需要多个技能角色(研究 / 设计 / 写作 / 审核)吗?
  • 工具数量是否超过 10 个?
  • 单 Agent 跑 20 轮以上还会失焦吗?
  • 三个问题都"是",才值得上多 Agent。否则优先用单 Agent + Subagent 隔离。

20.2 角色分工的设计

多 Agent 系统的第一步是拆角色。一个好的拆法应该让每个 Agent 满足三个条件:

  1. 职责单一:一个 Agent 只做一类事(研究 / 写作 / 审核)。
  2. 工具匹配:每个 Agent 的工具集小而精(3-7 个工具)。
  3. 输出清晰:每个 Agent 的输出格式明确,下游 Agent 能直接用。

吴恩达课程给了一个典型拆法:太阳镜营销手册。

text
最终任务:为太阳镜品牌做夏季营销手册

代理 1:研究员
- 工具:网络搜索、资料整理
- 输入:品牌信息 + 季度 + 目标客户
- 输出:市场趋势、竞品分析、关键卖点、数据来源
- 成功标准:覆盖 5 个竞品 + 3 个趋势

代理 2:图形设计师
- 工具:图像生成、图像处理、代码执行(生成图表)
- 输入:代理 1 的研究摘要
- 输出:视觉方向、图表、设计说明、配色建议
- 成功标准:3 套视觉方向 + 至少 2 张图表

代理 3:撰稿人
- 工具:文本生成(无外部工具)
- 输入:研究摘要 + 视觉素材
- 输出:营销手册草稿
- 成功标准:覆盖趋势、竞品、卖点、目标客户

代理 4(可选):营销经理
- 工具:无(只做协调和审核)
- 输入:用户请求 + 各代理输出
- 输出:任务分派、审核反馈、最终优化版本
- 成功标准:手册符合品牌调性、覆盖所有维度

关键设计

  • 研究员不调图像生成(工具不匹配角色)。
  • 撰稿人不调搜索(它只整合已有材料)。
  • 经理代理没工具(它只协调,不执行)。

反模式

  • 让一个 Agent 既研究又写作(职责不清)。
  • 给经理代理配 10 个工具(它应该只协调)。
  • 让所有 Agent 共享一个大 prompt(失去拆分意义)。

20.3 四种通信模式

拆完角色,下一步是设计通信模式。吴恩达课程(p30)讲了四种。

20.3.1 线性模式(Linear)

text
研究员 -> 设计师 -> 撰稿人 -> 最终输出

特征:代理按固定顺序依次执行,上游输出成为下游输入。

适合

  • 流程清晰、顺序固定的任务
  • 报告生产、营销素材流水线、数据分析后生成文案

优点

  • 实现简单(一个 for 循环就行)
  • 调试容易(trace 是线性的)
  • 延迟可控(无协调开销)
  • token 成本可预测

缺点

  • 不灵活:如果上游输出有问题,下游只能硬接
  • 没有全局协调:无法处理"先研究再决定要不要设计"这类动态决策

伪代码

python
def linear_pipeline(user_request):
    research = researcher.run(user_request)
    design = designer.run(research)
    draft = writer.run(research, design)
    return draft

20.3.2 单层层级模式(Manager-Coordinator)

text
         经理代理
        /    |    \
    研究员  设计师  撰稿人

特征:一个经理代理负责规划、分派、收集中间结果、决定下一步和最终整合。子代理只做自己擅长的事,把结果回传给经理。

适合

  • 需要统一目标管理、任务分派、审核的复杂任务
  • 子任务有依赖关系(撰稿人要等研究员和设计师都完成)
  • 需要审核和迭代(经理看了不满意,可以让子代理重做)

优点

  • 全局视图:经理能看到所有子代理输出,做整体决策
  • 灵活:经理可以根据中间结果调整后续分派
  • 容错:子代理失败时,经理可以换方案

缺点

  • 经理代理是瓶颈:所有通信都经过它,延迟和成本上升
  • 经理 LLM 调用次数多:每轮分派、收集、整合都要调
  • 调试更难:trace 是树形的,要追多个分支

伪代码

python
def manager_coordinator(user_request):
    plan = manager.plan(user_request)  # 经理先规划
    results = {}
    for subtask in plan:
        agent = pick_agent(subtask.role)  # 经理决定调谁
        results[subtask.id] = agent.run(subtask, prior_results=results)
        if manager.is_not_satisfied(results[subtask.id]):
            results[subtask.id] = agent.run(subtask, feedback=...)  # 重做
    return manager.integrate(results)

20.3.3 深层级模式(Deep Hierarchy)

text
            顶层经理
           /        \
       中层经理    中层经理
       /    \       /    \
    研究员 事实核查 撰稿人 引用核查

特征:子代理还可以调用更下层代理。研究员下面有网络研究员和事实核查员;撰稿人下面有引用核查员。

适合

  • 大型任务中存在专门子问题
  • 子任务本身复杂到需要拆分
  • 不同层级有不同视角(顶层管战略,中层管协调,底层管执行)

优点

  • 关注点分离:每层只管自己的事
  • 可复用:事实核查代理可以被多个上层代理调用
  • 扩展性强:加新能力只需加新子代理

缺点

  • 通信路径爆炸:N 层层级,最坏情况 trace 长度是 N × 子代理数
  • 调试极难:失败可能发生在第 4 层的某个子代理
  • 控制权传递风险:每层委派都可能丢上下文

工程做法:深层级不要超过 3 层。Anthropic Multi-agent 博客提到,超过 3 层后 token 成本和延迟会指数上升,而准确率提升边际递减。

20.3.4 全连接模式(Fully Connected / Mesh)

text
    研究员 ←→ 设计师
       ↕         ↕
    撰稿人 ←→ 审核员

特征:每个代理都可以和其他代理直接通信,类似自由讨论。

适合

  • 探索性、创意性任务
  • 容错空间较大的场景
  • 多视角讨论能带来价值(如营销创意、设计评审)

优点

  • 灵活性最高
  • 能产生意外协作(研究员突然问撰稿人某个点怎么表达)

缺点

  • 不可预测:很难提前知道对话会怎么走
  • 成本失控:消息数是 O(N²),N 个代理互相聊 token 爆炸
  • 终止条件难定:什么时候停?谁决定停?
  • 调试极难:trace 是网状的

反模式警告:生产系统慎用全连接。Anthropic 博客明确指出,全连接模式在生产环境的成本/收益比通常很差。它适合研究实验,不适合稳定生产。

20.3.5 四种模式对比

模式复杂度延迟成本可控性调试难度适合
线性流程固定
单层层级★★★★大多数复杂任务
深层级★★★中低★★★大型专门任务
全连接★★★★不可控极高★★★★探索性研究

选型原则

  1. 先用线性,跑不通再升级
  2. 需要协调和审核时上单层层级
  3. 子任务本身复杂才上深层级(最多 3 层)
  4. 全连接只用于研究实验,不进生产

20.4 通信协议设计

多 Agent 系统的隐性失败大多来自通信协议不清。一条消息该包含什么?谁来决定结束?这些都得显式定义。

20.4.1 经理 -> 子代理的消息模板

text
任务:分析 Q3 太阳镜销售数据,找出销量下滑的原因
背景:用户反馈最近销量下滑,怀疑是竞品降价。需要数据支持或反驳这个假设。
可用输入:
  - /data/sales_q3.csv(字段:date, product, region, quantity, revenue)
  - /data/competitor_prices.csv
期望输出:结构化报告,包含:1) 销量下滑幅度 2) 是否与竞品降价相关 3) 其他可能原因
格式要求:Markdown,500-1000 字
完成标准:每个结论必须有数据支撑,引用具体数字
限制条件:不要做预测,只做事实分析

每个字段的作用:

  • 任务:子代理要做什么(动作级)
  • 背景:为什么要做(战略级,避免子代理跑偏)
  • 可用输入:子代理能读哪些数据(防止它瞎调工具)
  • 期望输出:输出长什么样(结构化)
  • 格式要求:Markdown / JSON / 自由文本
  • 完成标准:什么叫"做完了"
  • 限制条件:哪些事不能做

20.4.2 子代理 -> 经理的回传模板

text
完成状态:完成 / 需要更多信息 / 失败
结果摘要:Q3 销量同比下滑 23%,其中 7 月下滑最严重(-31%)
关键产物:
  - 销量趋势图:/output/sales_trend.png
  - 详细数据:/output/sales_breakdown.csv
不确定点:竞品价格数据只覆盖 80%,可能漏掉区域品牌
建议下一步:可以再让"区域经理代理"按地区拆分分析

关键字段

  • 完成状态:经理需要知道是直接整合,还是重做,还是补充信息
  • 不确定点:让经理判断要不要再调一个代理补充
  • 建议下一步:子代理对自己产出最了解,可以建议后续

20.4.3 避免上下文污染

第 8 章讲过上下文污染。多 Agent 系统更容易污染,因为消息在多个 context 之间传递。

反模式

python
# 经理把所有历史都传给子代理
def bad_manager_call(subtask):
    return sub_agent.run(
        task=subtask,
        full_history=manager.messages,  # ← 把经理的所有历史塞进去
    )

子代理拿到经理的完整历史,会:

  • Token 成本爆炸
  • 注意力被无关历史稀释
  • 可能被历史里的某个 prompt injection 攻击

正确做法

python
def good_manager_call(subtask, prior_results):
    # 只传当前任务需要的信息
    return sub_agent.run(
        task=subtask.description,
        background=subtask.background,
        relevant_inputs={k: v for k, v in prior_results.items()
                        if k in subtask.depends_on},
    )

工程原则Agent 之间只传必要信息,不传完整 context。这是 Anthropic Multi-agent 博客的核心建议之一。

20.5 一个最小的多 Agent 系统

用 Anthropic SDK 写一个经理协调模式的最小示例:经理代理 + 研究员 + 撰稿人。

python
import anthropic
import json

client = anthropic.Anthropic()

# 子代理:研究员
def researcher(topic: str) -> str:
    resp = client.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=1024,
        messages=[{"role": "user", "content":
            f"你是研究员。请就主题 '{topic}' 提供 3 个关键事实和 2 个数据来源。只输出研究摘要,不要客套。"}]
    )
    return resp.content[0].text

# 子代理:撰稿人
def writer(research: str, audience: str) -> str:
    resp = client.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=1024,
        messages=[{"role": "user", "content":
            f"你是撰稿人。基于以下研究,写一段面向 {audience} 的文案(200 字内):\n\n{research}"}]
    )
    return resp.content[0].text

# 经理代理:决定调谁、什么时候停
MANAGER_PROMPT = """你是项目经理。用户给你一个任务,你要决定:
1. 调用 researcher(topic) 做研究
2. 拿到研究后调用 writer(research, audience) 写文案
3. 如果文案不满意,可以让 writer 重写(带反馈)
4. 最多迭代 2 次

输出 JSON 决策:
{{"action": "researcher" | "writer" | "done", "args": {{...}}, "feedback": "..."}}

用户任务:{task}
已有结果:{state}
"""

def manager(task: str, max_steps: int = 5) -> str:
    state = {}
    for step in range(max_steps):
        resp = client.messages.create(
            model="claude-sonnet-4-5-20250929",
            max_tokens=512,
            messages=[{"role": "user", "content":
                MANAGER_PROMPT.format(task=task, state=json.dumps(state, ensure_ascii=False))}]
        )
        decision = json.loads(resp.content[0].text)

        if decision["action"] == "done":
            return state.get("final", "未完成")
        elif decision["action"] == "researcher":
            state["research"] = researcher(**decision["args"])
            print(f"[Step {step}] researcher -> {state['research'][:100]}...")
        elif decision["action"] == "writer":
            state["draft"] = writer(
                research=state.get("research", ""),
                audience=decision["args"].get("audience", "general")
            )
            print(f"[Step {step}] writer -> {state['draft'][:100]}...")
            state["final"] = state["draft"]

    return state.get("final", "步数上限")

if __name__ == "__main__":
    print(manager("写一段关于 Claude 4.5 的产品文案"))

运行流程

[Step 0] researcher -> Claude 4.5 是 Anthropic 2025 年发布的多模态...
[Step 1] writer -> Claude 4.5 来了:更强的多模态、更长的上下文...
[Step 2] done
最终输出:Claude 4.5 来了:更强的多模态、更长的上下文...

注意经理代理没有工具调用权限,它只输出 JSON 决策。真正的执行(调 researcher / writer)由代码完成。这是"LLM 决策,代码执行"原则的体现(第 19 章讲过)。

20.6 多 Agent 系统的调试

多 Agent 系统最大的工程难点不是写出来,是出问题时能找到根因。吴恩达课程强调:多 Agent 系统一定要看 trace,不能只看最终答案

20.6.1 只看最终答案会错过什么

最终答案不好,可能是:

  • 经理没委派(自己瞎做)
  • 经理委派错代理(让撰稿人做研究)
  • 子代理指令不清(研究员没理解任务)
  • 子代理工具参数错(搜索关键词不对)
  • 子代理输出格式不对(下游无法使用)
  • 状态没保存(撰稿人看不到研究员的输出)
  • 终止条件触发太早(经理觉得"差不多了"就停)

每种失败的修法完全不同。只看最终答案,你不知道是哪一种。

20.6.2 trace 应该记录什么

text
每条事件包含:
- timestamp
- agent_name(哪个代理)
- event_type:message_in / message_out / tool_call / tool_result / decision
- content(消息内容或工具调用参数)
- token_cost
- latency_ms

每轮包含:
- 当前经理状态
- 各子代理状态
- session state diff(这轮相比上轮改了什么)

20.6.3 多 Agent 调试检查清单

text
观察 trace 时重点看:
- 初始事件由哪个代理创建
- 经理是否正确委派
- 子代理是否接收了完整上下文
- 工具调用名称是否正确
- 工具参数是否从用户消息中正确提取
- 工具返回是否符合结构
- 哪个事件被标记为 final response
- session state 是否按预期更新
- 每个代理的 token 消耗占比
- 哪一步延迟最长

20.6.4 用 verbose 输出学习

学习多 Agent 系统时,强烈建议打开 verbose 模式,看每个事件的产生过程。verbose 输出噪声多,但能让你看到:

  • 经理怎么决定调谁
  • 子代理怎么理解任务
  • 工具调用参数怎么来的
  • 最终答案怎么整合的

第 22 章 Google ADK 实战会讲怎么用 ADK 的 verbose 模式调试多 Agent 系统。

20.7 反模式

反模式 1:盲目上多 Agent

"我听说多 Agent 很强,所以我把一个简单的客服 Agent 拆成了 5 个代理。"

如果单 Agent + 几个好工具能搞定,不要拆。多 Agent 的协调成本和调试成本远超你的想象。

判断:先单 Agent 跑,跑不通再考虑拆。

反模式 2:每个代理一个模型

"我用 GPT-4o 做研究,Claude 做写作,Gemini 做审核,组合最强模型。"

不同模型的 prompt 风格、工具调用格式、输出格式都不一样。混用会让系统不稳定,调试地狱。

判断:同一系统优先用同一家模型。需要混用时,加一层适配器统一接口。

反模式 3:经理代理配一堆工具

"经理代理有 20 个工具,可以自己干活也可以委派。"

经理代理应该只协调,不执行。给它工具会让它忍不住自己干,失去协调角色。

判断:经理代理的工具集应该是"委派给谁"的元操作,不是具体业务工具。

反模式 4:让 Agent 直接共享 context

"我把所有代理的 messages 都合并到一起,这样它们都能看到全部历史。"

这是上下文污染的极端版本。token 爆炸、注意力稀释、prompt injection 风险全暴增。

判断:Agent 之间通过结构化消息传递,不共享 context。第 5 章 Context Engineering 详细讲过这个原则。

反模式 5:全连接进生产

"我看 AutoGen 群聊很有趣,把客服系统做成全连接。"

全连接在生产环境的成本/收益比通常很差。Anthropic 博客明确说多 Agent token 是普通聊天 15 倍,全连接会更糟。

判断:生产用线性或单层层级。全连接只用于研究实验。

前人智慧 / Prior Art

本章把多 Agent 通信模式拆成四种(线性 / 单层层级 / 深层级 / 全连接),这个分类不是本教程原创,它来自多篇论文和工程博客的共同归纳。

Anthropic Multi-agent Research System 的工程经验

Anthropic Multi-agent Research System 博客是本章最重要的参考。博客里的关键经验:

  1. Orchestrator-Worker 模式:对应本章 20.3.2 单层层级。Anthropic 自己的研究系统用这个模式,orchestrator 拆任务分派给 worker。
  2. Subagent 隔离:每个 subagent 在独立 context 里跑,主 orchestrator 只拿结论。这是本章 20.4.3 "避免上下文污染"的来源。
  3. Token 成本 15 倍:多 Agent 系统比单 Agent 贵 15 倍。本章 20.1.3 "代价"部分引用了这个数据。
  4. Evolution:从单 Agent 到 subagent 到多 Agent,是渐进演化,不是一步到位。这支撑了本章 20.7 反模式 1 "不要盲目上多 Agent"。

AutoGen 的群聊模式

AutoGen 是 Microsoft 的多 Agent 框架,最有名的功能是 GroupChat(群聊)。群聊就是本章 20.3.4 的全连接模式。

AutoGen 的贡献是证明了全连接模式可以工作:在创意任务、设计评审、辩论场景下,多 Agent 自由讨论能产生意外价值。但 AutoGen 文档也明确警告:群聊在生产环境的成本不可控,需要严格的终止条件和预算限制。

本章 20.3.4 "全连接只用于研究实验"的判断,和 AutoGen 文档一致。

CrewAI 的角色扮演

CrewAI 把多 Agent 拆成"角色扮演":每个 Agent 有 role / goal / backstory。这个设计来自组织行为学的"角色理论"。

CrewAI 的工程贡献是让角色定义成为一等公民

python
researcher = Agent(
    role="Senior Research Analyst",
    goal="Uncover cutting-edge developments in AI",
    backstory="You are a meticulous researcher with 10 years of experience...",
    tools=[search_tool, scrape_tool],
)

这种写法对应本章 20.2 的"角色分工设计"。role / goal / backstory 让 LLM 更容易进入角色,输出更稳定。

LangGraph 的图式编排

LangGraph 把多 Agent 系统建模成"图":节点是 Agent,边是消息流。这个抽象比"角色扮演"更通用,可以表达任意通信模式。

LangGraph 的工程贡献是让通信模式成为显式图结构

  • 线性 = 链状图
  • 单层层级 = 星形图
  • 深层级 = 树形图
  • 全连接 = 完全图

本章 20.3 的四种模式,在 LangGraph 里都是不同的图拓扑。LangGraph 的好处是图可视化、可持久化、可断点续跑。

Andrew Ng Agentic AI 课程的通信模式分类 07-09

本章内容主要整理自吴恩达 Agentic AI 课程 Module 5(Bilibili BV1DfrdByE2H,p29-p30)。课程的贡献是把多 Agent 通信模式归纳成四种,并给出选型建议:

  • 线性:流程清晰、调试简单、延迟可控
  • 经理协调:任务复杂、需要统一分派和整合
  • 深层级:存在复杂子任务,需要专业下级代理
  • 全连接:探索性强、能容忍不可预测性

课程的关键判断:"越自由的通信模式,越可能产生复杂协作,但越难保证稳定、可解释和可复现"。这正是本章 20.3.5 对比表"可控性"那一列的来源。

课程还提到一个工程经验:多 Agent 系统的难点不只是创建角色,而是让角色之间可靠协作。本章 20.4 通信协议设计、20.6 调试方法,都是为了让协作"可靠"。

MetaGPT 的 SOP(标准作业程序)

MetaGPT 论文(Hong et al., 2023)提出把多 Agent 系统建模成"标准作业程序"(SOP)。每个 Agent 有明确角色(产品经理 / 架构师 / 工程师 / QA),按 SOP 流程协作。

MetaGPT 的工程贡献是把人类组织的 SOP 编码到 Agent 系统

  • 产品经理 Agent 写 PRD
  • 架构师 Agent 设计系统
  • 工程师 Agent 写代码
  • QA Agent 测试

这种结构对应本章 20.3.1 线性模式 + 20.3.2 单层层级的组合。MetaGPT 在软件工程任务上比 ReAct 提升明显,关键就在于 SOP 让协作有序。

ChatDev 的瀑布模型

ChatDev 论文(Qian et al., 2023)把软件开发拆成多个 Agent 角色,按瀑布模型协作:需求 -> 设计 -> 编码 -> 测试 -> 文档。

ChatDev 的贡献是证明了多 Agent 系统可以完成端到端软件工程任务。它用线性模式 + 角色分工,让多个 Agent 协作写出一个能跑的小游戏。这是本章 20.3.1 线性模式的典型应用。

多 Agent 系统的"通信开销"研究

Liu et al. 2024 研究了多 Agent 系统的通信开销。结论:

  • 通信开销随 Agent 数量呈 O(N²) 增长(全连接模式)
  • 层级模式可以降到 O(N log N)
  • 但层级模式的延迟更高(消息要经过中间层)

这个研究支撑了本章 20.3.5 对比表的"成本"列:全连接成本极高,层级次之,线性最低。

多 Agent 协作模式与组织行为学的对应

本章四种通信模式,都能在人类组织里找到对应:

通信模式人类组织对应适合
线性流水线 / 生产线标准化任务
单层层级经理 + 团队大多数复杂任务
深层级多层管理大型组织
全连接头脑风暴 / 圆桌讨论创意任务

这种对应不是巧合。多 Agent 系统本质是"模拟人类团队协作",所以人类组织的经验直接适用。第 8 章 8.5 节"越权执行"的防御(白名单 / Hook / 审计)也是来自组织管理的"权限分级"思想。

20.8 小结

  • 多 Agent 系统适合任务真的需要多个技能角色、工具数量爆炸、单 Agent context 污染严重的场景。否则优先用单 Agent + Subagent 隔离。
  • 四种通信模式:线性(流程固定)/ 单层层级(大多数复杂任务)/ 深层级(大型专门任务,≤3 层)/ 全连接(只用于研究实验)。
  • 通信协议要显式:经理给子代理的消息包含任务 / 背景 / 输入 / 期望输出 / 完成标准 / 限制;子代理回传包含状态 / 摘要 / 产物 / 不确定点 / 建议。
  • 多 Agent 系统必须看 trace,不能只看最终答案。trace 应记录每个代理的消息进出、工具调用、状态变化、token 消耗、延迟。
  • 反模式:盲目上多 Agent / 每代理一个模型 / 经理配一堆工具 / 共享 context / 全连接进生产。

下一章我们讲 Agent 知识图谱--当任务需要跨数据源关联、复杂关系推理时,怎么用领域图 + 词汇图 + 主题图三层结构组织知识,以及怎么用多 Agent 系统构建这种图谱。

happy ending, love you.

基于 CC BY-SA 4.0 发布