欢迎光临
我们一直在努力

单体 Agent 的天花板:为什么复杂任务必然走向 Multi-Agent?

单体 Agent 的天花板:为什么复杂任务必然走向 Multi-Agent?

请添加图片描述

作 者:吴佳浩(Alben)
微信公众号:全栈架构师笔记
系列专栏:《企业级 Agent 实战指南————Multi-Agent 架构设计:从单体 ReAct 到群智协同》· 第 01 篇


导读
给一个 Prompt 塞入 20 个工具、3 个角色的要求,模型就会在长程推理中彻底精神分裂;让 5 个专职 Agent 各司其职并通过协议协同通信,才是复杂工程任务的解法。
很多团队以为 Multi-Agent 就是建几个不同 System Prompt 的聊天机器人互相扯皮;但在严肃的企业生产环境中,无状态的群聊是性能与成本的灾难。
单体 Agent 的天花板在于注意力承载力与职责耦合,Multi-Agent 的本质是基于分布式软件工程原则解耦状态、工具与认知负荷。


在 Agent 落地初期,团队通常采用经典的 ReAct(Reasoning + Acting)单体架构:在一个无限循环中,让单个 Agent 既做架构分析、又写代码、又跑测试、又负责总结汇报。

这种单兵作战模式在处理 3 步以内的简单任务时很顺畅,但一旦面对跨模块重构、线上故障排查或复杂文档生成等长流程任务时,单体 Agent 会迅速撞上三堵坚硬的工程之墙:

绝境现象具体翻车表现架构根因
1. 认知负荷过载 既要规划又要执行细节,走着走着 单一 Context 混合了高层目标与
(Cognitive Load) 忘记了最原始的核心业务目标 底层工具执行细节,注意力严重稀释
2. 错误级联放大 前期步骤做出的一个微小误判,在 缺乏独立的评审与对立校验视角,
(Error Cascading) 后续自循环中被自己不断确认固化 陷入自我循环论证的逻辑死锁
3. 上下文与成本雪崩 执行 15 轮之后,Prompt 膨胀至 无法对任务进行并行分发与子上下文
(Context Blowup) 数十万 Token,单次调用慢且昂贵 隔离,中间噪音无法物理清除

要突破单体 Agent 的认知天花板,系统架构必须从“单体巨石”演进为多智能体协同系统(Multi-Agent Systems, MAS)。


一、单体与多智能体的系统分水岭:康威定律在 AI 时代的体现

软件工程中的**康威定律(Conway’s Law)**指出:系统的架构往往反映了设计该系统的组织的沟通结构。

在人类企业中,我们绝不会让同一个员工既当产品经理、又当主架构师、又当一线研发、又当 QA 测试负责人——因为角色之间存在天然的职责冲突与不同的关注点(Separation of Concerns):

架构维度单体 ReAct AgentMulti-Agent 系统
角色模型 全能通才 (Jack of all trades) 专业专家组合 (Specialized Swarm
Context 隔离度 单一全局共享 Context (极易污染) 分布式隔离 Context (高信噪比)
工具分配策略 单个 Prompt 挂载全部 20+ Tools 每个 Agent 按需挂载 2~3 个专属
执行并发模型 纯串行阻塞自循环 独立子代理并行执行 (Fan-out)
纠错与防幻觉机制 自己检查自己 (极易产生确认偏误) 对抗性独立 Agent 交叉审核验收

#mermaid-svg-KUYV3fHxdXoTRt5j{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KUYV3fHxdXoTRt5j .error-icon{fill:#552222;}#mermaid-svg-KUYV3fHxdXoTRt5j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KUYV3fHxdXoTRt5j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KUYV3fHxdXoTRt5j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KUYV3fHxdXoTRt5j .marker.cross{stroke:#333333;}#mermaid-svg-KUYV3fHxdXoTRt5j svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KUYV3fHxdXoTRt5j p{margin:0;}#mermaid-svg-KUYV3fHxdXoTRt5j .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j .cluster-label text{fill:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j .cluster-label span{color:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j .cluster-label span p{background-color:transparent;}#mermaid-svg-KUYV3fHxdXoTRt5j .label text,#mermaid-svg-KUYV3fHxdXoTRt5j span{fill:#333;color:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j .node rect,#mermaid-svg-KUYV3fHxdXoTRt5j .node circle,#mermaid-svg-KUYV3fHxdXoTRt5j .node ellipse,#mermaid-svg-KUYV3fHxdXoTRt5j .node polygon,#mermaid-svg-KUYV3fHxdXoTRt5j .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KUYV3fHxdXoTRt5j .rough-node .label text,#mermaid-svg-KUYV3fHxdXoTRt5j .node .label text,#mermaid-svg-KUYV3fHxdXoTRt5j .image-shape .label,#mermaid-svg-KUYV3fHxdXoTRt5j .icon-shape .label{text-anchor:middle;}#mermaid-svg-KUYV3fHxdXoTRt5j .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KUYV3fHxdXoTRt5j .rough-node .label,#mermaid-svg-KUYV3fHxdXoTRt5j .node .label,#mermaid-svg-KUYV3fHxdXoTRt5j .image-shape .label,#mermaid-svg-KUYV3fHxdXoTRt5j .icon-shape .label{text-align:center;}#mermaid-svg-KUYV3fHxdXoTRt5j .node.clickable{cursor:pointer;}#mermaid-svg-KUYV3fHxdXoTRt5j .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KUYV3fHxdXoTRt5j .arrowheadPath{fill:#333333;}#mermaid-svg-KUYV3fHxdXoTRt5j .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KUYV3fHxdXoTRt5j .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KUYV3fHxdXoTRt5j .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KUYV3fHxdXoTRt5j .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KUYV3fHxdXoTRt5j .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KUYV3fHxdXoTRt5j .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KUYV3fHxdXoTRt5j .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KUYV3fHxdXoTRt5j .cluster text{fill:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j .cluster span{color:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KUYV3fHxdXoTRt5j .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KUYV3fHxdXoTRt5j rect.text{fill:none;stroke-width:0;}#mermaid-svg-KUYV3fHxdXoTRt5j .icon-shape,#mermaid-svg-KUYV3fHxdXoTRt5j .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KUYV3fHxdXoTRt5j .icon-shape p,#mermaid-svg-KUYV3fHxdXoTRt5j .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KUYV3fHxdXoTRt5j .icon-shape .label rect,#mermaid-svg-KUYV3fHxdXoTRt5j .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KUYV3fHxdXoTRt5j .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KUYV3fHxdXoTRt5j .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KUYV3fHxdXoTRt5j :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

Multi-Agent:职责解耦与分布式上下文

派发独立子任务

派发独立子任务

交付代码

交付代码

测试未通过

测试全绿

用户任务

Leader / Architect Agent (只做规划与拆解)

Coder Agent 1 (独立隔离上下文 / 专注写模块A)

Coder Agent 2 (独立隔离上下文 / 专注写模块B)

QA Agent (独立对抗视角 / 运行测试与代码审查)

汇总终态结果给用户

单体 Agent:职责混乱与 Context 爆炸

塞入全部 30 个工具

用户任务

单体 Agent (Prompt: 你既是架构师又是Coder又是QA)

单一 Context 空间 (膨胀至 80K Tokens)

结果:逻辑混乱、死循环、首字延迟 8s+

  • 🔸 职责解耦:每个 Agent 拥有极其聚焦的 System Prompt 和极其精简的专属 Toolset(如 Coder 只有代码修改工具,QA 只有测试执行工具);
  • 🔸 上下文物理隔离:Subagent 在自己的独立沙箱和独立会话中工作,其探索过程中的中间报错、调试日志不会污染主 Agent 的全局规划;
  • 🔸 引入对抗与校验视角:由独立的 QA / Reviewer Agent 站在客观对立面进行验收,打破单体 Agent 的自我幻觉闭环。

一句话总结这一章的核心观点:
Multi-Agent 的本质,是用分布式软件工程的解耦思想,解决大模型在长程推理中的注意力与认知过载问题。


二、Multi-Agent 四大主流协作拓扑架构

在设计多智能体系统时,必须根据业务任务的确定性与发散性选择合适的协作拓扑:

1. 层次主从模式 (Supervisor / Hierarchical) ──► 适用于明确目标、自顶向下拆解的任务
(如企业研发重构、全自动化报告生成)

2. 顺序流水线模式 (Sequential Pipeline) ──► 适用于确定性的多阶段 SOP 流程
(如需求澄清 -> 架构设计 -> 编码 -> 测试)

3. 共享黑板模式 (Blackboard / Shared State) ──► 适用于高并发、多专家异步协作场景
(如多 Agent 协同排查复杂系统告警)

4. 对等自治网络模式 (Peer-to-Peer Swarm) ──► 适用于开放式发散探索与头脑风暴
(如多视角辩论、复杂博弈模拟)

#mermaid-svg-5NSC4PMAdxIJq0Wx{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5NSC4PMAdxIJq0Wx .error-icon{fill:#552222;}#mermaid-svg-5NSC4PMAdxIJq0Wx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5NSC4PMAdxIJq0Wx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .marker.cross{stroke:#333333;}#mermaid-svg-5NSC4PMAdxIJq0Wx svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5NSC4PMAdxIJq0Wx p{margin:0;}#mermaid-svg-5NSC4PMAdxIJq0Wx .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .cluster-label text{fill:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .cluster-label span{color:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .cluster-label span p{background-color:transparent;}#mermaid-svg-5NSC4PMAdxIJq0Wx .label text,#mermaid-svg-5NSC4PMAdxIJq0Wx span{fill:#333;color:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .node rect,#mermaid-svg-5NSC4PMAdxIJq0Wx .node circle,#mermaid-svg-5NSC4PMAdxIJq0Wx .node ellipse,#mermaid-svg-5NSC4PMAdxIJq0Wx .node polygon,#mermaid-svg-5NSC4PMAdxIJq0Wx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .rough-node .label text,#mermaid-svg-5NSC4PMAdxIJq0Wx .node .label text,#mermaid-svg-5NSC4PMAdxIJq0Wx .image-shape .label,#mermaid-svg-5NSC4PMAdxIJq0Wx .icon-shape .label{text-anchor:middle;}#mermaid-svg-5NSC4PMAdxIJq0Wx .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .rough-node .label,#mermaid-svg-5NSC4PMAdxIJq0Wx .node .label,#mermaid-svg-5NSC4PMAdxIJq0Wx .image-shape .label,#mermaid-svg-5NSC4PMAdxIJq0Wx .icon-shape .label{text-align:center;}#mermaid-svg-5NSC4PMAdxIJq0Wx .node.clickable{cursor:pointer;}#mermaid-svg-5NSC4PMAdxIJq0Wx .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .arrowheadPath{fill:#333333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5NSC4PMAdxIJq0Wx .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5NSC4PMAdxIJq0Wx .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5NSC4PMAdxIJq0Wx .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5NSC4PMAdxIJq0Wx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .cluster text{fill:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx .cluster span{color:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5NSC4PMAdxIJq0Wx .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5NSC4PMAdxIJq0Wx rect.text{fill:none;stroke-width:0;}#mermaid-svg-5NSC4PMAdxIJq0Wx .icon-shape,#mermaid-svg-5NSC4PMAdxIJq0Wx .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5NSC4PMAdxIJq0Wx .icon-shape p,#mermaid-svg-5NSC4PMAdxIJq0Wx .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5NSC4PMAdxIJq0Wx .icon-shape .label rect,#mermaid-svg-5NSC4PMAdxIJq0Wx .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5NSC4PMAdxIJq0Wx .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5NSC4PMAdxIJq0Wx .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5NSC4PMAdxIJq0Wx :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

3. 共享黑板模式 (Blackboard)

Central Blackboard带版本控制的状态共享空间

Diagnostic Agent

Patch Agent

Verify Agent

2. 顺序流水线模式 (Pipeline)

Agent A (需求)

Agent B (架构)

Agent C (编码)

Agent D (测试)

1. 层次主从模式 (Hierarchical)

Leader / Router

Worker 1

Worker 2

  • 🔸 企业生产首选:层次主从(Hierarchical) 与 共享黑板(Blackboard)。因为企业任务追求结果的确定性与执行的可控性,必须有明确的 Leader 掌控全局状态;
  • 🔸 警惕无控群聊:严禁在生产中使用没有主控路由的纯自由群聊(Free Chat Swarm),否则 Agent 之间会陷入无限互相客套与死循环对话。

一句话总结这一章的核心观点:
拓扑决定系统上限。没有层级与路由控制的多 Agent,就是一群失控的自嗨机器人。


三、生产级代码实战:手写轻量级 Multi-Agent 分发调度引擎

以下为基于 Python 3.11+ 构建的极简轻量级 Multi-Agent 主从分发调度系统(不依赖任何第三方重型框架,支持并行子任务派发与独立上下文隔离):

"""
multi_agent_orchestrator.py

生产级轻量 Multi-Agent 编排引擎

包含:
– Leader Agent 任务规划
– SubAgent 独立上下文隔离
– 并行任务调度
– 结果聚合(Fan-out / Fan-in)
"""

import asyncio
from typing import Any, Dict, List, Optional

from pydantic import BaseModel

# ============================================================
# Task 数据模型
# ============================================================

class SubTask(BaseModel):
"""Leader 拆解后的子任务"""

task_id: str
assigned_role: str
goal: str
context: str

class SubAgentResult(BaseModel):
"""子代理执行结果"""

task_id: str
status: str
output: str

# ============================================================
# SubAgent
# ============================================================

class SubagentWorker:
"""
具备独立上下文与独立 Toolset 的轻量子代理

每个 SubAgent 拥有:
– 独立 System Prompt
– 独立 Message History
– 独立 Tool 集
"""

def __init__(
self,
role: str,
system_prompt: str,
tools: Optional[Dict[str, Any]] = None,
):
self.role = role
self.system_prompt = system_prompt
self.tools = tools or {}

async def execute_task(
self,
task: SubTask,
) > SubAgentResult:
"""
在完全隔离的上下文中执行任务

每个 SubAgent 都拥有自己的上下文,
不共享 Message History。
"""

# —————————————————-
# 独立上下文
# —————————————————-

isolated_messages = [
{
"role": "system",
"content": self.system_prompt,
},
{
"role": "user",
"content": (
f"Task Goal: {task.goal}\\n"
f"Context: {task.context}"
),
},
]

# 避免示例中变量未使用
_ = isolated_messages

# —————————————————-
# 模拟 LLM 推理
# —————————————————-

await asyncio.sleep(0.5)

result = (
f"[{self.role}] "
f"Completed task '{task.task_id}': "
"verified and generated artifacts."
)

return SubAgentResult(
task_id=task.task_id,
status="success",
output=result,
)

# ============================================================
# Leader Agent
# ============================================================

class LeaderAgentOrchestrator:
"""
Multi-Agent 主控调度器

工作流程:

User Goal


Leader Planning


Task Decomposition

┌──────┴──────┐
▼ ▼
Coder QA Agent
▼ ▼
└──────┬──────┘

Result Aggregation

Final Deliverable
"""

def __init__(self):
self.workers: Dict[str, SubagentWorker] = {
"coder": SubagentWorker(
role="Coder",
system_prompt=(
"You are an expert Python backend engineer. "
"Focus strictly on code writing."
),
),
"qa": SubagentWorker(
role="QA",
system_prompt=(
"You are a strict QA test engineer. "
"Focus on pytest edge cases and verification."
),
),
}

async def plan_and_dispatch(
self,
user_goal: str,
) > str:
"""
Leader Agent 执行流程

1. 拆解任务
2. 分配 Agent
3. 并行执行
4. 聚合结果
"""

print(f"🎯 [Leader] Planning goal:\\n{user_goal}\\n")

# —————————————————-
# Step 1:任务拆解
# —————————————————-

subtasks = [
SubTask(
task_id="task_1",
assigned_role="coder",
goal="Implement JWT authentication logic",
context="Using PyJWT",
),
SubTask(
task_id="task_2",
assigned_role="qa",
goal="Write pytest test cases for JWT expired tokens",
context="Coverage > 95%",
),
]

print(
f"📋 [Leader] "
f"Decomposed into {len(subtasks)} subtasks.\\n"
)

# —————————————————-
# Step 2:Fan-out
# —————————————————-

async_tasks = []

for task in subtasks:
worker = self.workers.get(task.assigned_role)

if worker is None:
continue

print(
f"🚀 Launching "
f"[{task.assigned_role}] "
f"for {task.task_id}"
)

async_tasks.append(worker.execute_task(task))

# —————————————————-
# Step 3:并行执行
# —————————————————-

results: List[SubAgentResult] = await asyncio.gather(
*async_tasks
)

# —————————————————-
# Step 4:Fan-in 聚合
# —————————————————-

summary = [
"🎉 [Leader] All subagents finished.",
"",
"Aggregated Deliverable:",
]

for result in results:
summary.append(
f"- {result.task_id} "
f"({result.status})"
)
summary.append(f" {result.output}")

final_report = "\\n".join(summary)

print(final_report)

return final_report


本篇总结

  • 🔸 单体 ReAct Agent 存在天然的认知过载与上下文爆炸瓶颈;
  • 🔸 Multi-Agent 的核心价值在于职责解耦、上下文物理隔离与对抗校验;
  • 🔸 企业生产优先选择层次主从(Hierarchical)与共享黑板(Blackboard)拓扑;
  • 🔸 主 Agent 负责全局规划,Subagent 负责隔离执行并集中汇总交付。

理解了多智能体的设计动因后,下一个关键问题是:多 Agent 之间如何定义统一的通信消息格式?如何用 DAG(有向无环图)编排复杂的跨代理工作流?

筒子们本篇为《企业级 Agent 实战指南》· 第三章的第 1 篇,后续续会更新完整的agent的开发的全部过程,如果你对Agent开发感兴趣不妨关注一下本合集。

在下一篇中,我们将深入解构:《Multi-Agent 通信协议与编排中枢:状态机、DAG 与事件总线》!

赞(0)
未经允许不得转载:171主机测评 » 单体 Agent 的天花板:为什么复杂任务必然走向 Multi-Agent?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址