多智能体架构全景:从单体到专家团队
作者:程序员马丁
Ragent AI —— 从 0 到 1 纯手工打造企业级 Agentic RAG,拒绝 Demo 玩具!AI 时代,助你拿个offer。
从第 4 篇讲 ReAct 到现在,咱们一直在做同一件事——给一个 Agent 加装备。工具调用、Function Calling、终止控制、短期记忆、持久化、长期记忆、上下文工程、Plan-and-Execute、Skill、Reflection、把 RAG 当工具……到上一篇为止,TinyAgent 已经是个装备精良的全能选手了。
但一个问题一直悬在那儿没正面回答:这些能力全压在同一个大脑上,它到底扛不扛得住?更实际的是——当你要做一个真正上生产的比特严选智能体,该用一个 Agent 硬扛,还是拆成一支专家团队协作?
这一篇咱们先不写代码。多智能体是本系列最后一块大拼图,也是最容易被拆得越多越高级这种错觉带偏的地方。所以进代码之前,得先把这张架构地图铺开,从第一性原理讲清楚四件事:单体 Agent 到底卡在哪、一个 Agent 的本质是什么、多智能体有哪几种玩法、以及怎么科学地选——而不是拍脑袋跟风。下一篇再动手手写主从式(也就是本系列要重点落地的那种)的代码。
单体 Agent:咱们是怎么一路走到这儿的
要讲清楚为什么需要多智能体,得先搞明白单体 Agent 强在哪、又卡在哪。批判要建立在公允之上,不然拆分就成了为拆而拆。
1. 单体 Agent 的本质:一个大脑扛所有
咱们前 面手写的 TinyAgent,本质就是一个典型的单体 Agent(Single Agent):一个 LLM,配一份 System Prompt,挂一堆工具,用原生的 ReAct 模式自主推理、调工具、记上下文、给答案。
它的逻辑非常直观:大模型没法直接内化比特严选的领域知识,那咱们就把这些知识、规矩、话术,一股脑写进 System Prompt 注入给它,指望它基于这些信息给出符合预期的回答。
这种做法最大的好处是开发链路最短、ROI 最高。你只要把领域知识整理好、指令写清楚,剩下的交给模型原生的 ReAct 循环。生成一段商品文案、回答一个退货政策、查一个订单——这类简单、单一的场景,单体 Agent 往往能跑出最流畅的体验,是验证想法、最快见效的原型方案。简单场景下,它就是性价比之王。
2. 先看一个它撑不住的场景
单体 Agent 的问题,得放到真实业务里才看得清。比特严选的客服每天要处理各种需求,咱们把三类最典型的放在一起看:
- “比特 AirX 耳机和 BandPro 耳机哪个好?我通勤用”——这是导购,要懂产品、会对比、能揣摩用户偏好,还得敢给明确推荐。
- “订单 88231 到了没?那台坏的扫地机我要退”——这是售后,要严守退款政策、核对订单状态、按流程一步步办。
- “我买了比特 Phone S1,想配一套运动装备”——这是 IoT 搭配,要懂生态、会跨品类组合、算得清组合价。
单看每一个,现在的 TinyAgent 都能处理。问题在于——当这三种角色被塞进同一个大脑,配一份大而全的 System Prompt、挂上全部 7 个工具时,它们会互相拖累。为什么?这就要拆开讲了。
这里仅用 3 个场景举例,实际生产环境中,动辄几十上百个业务场景。
3. 单体的天花板:三种结构性退化
单体 Agent 的软肋,可以归到三处。

第一,Context Window 会爆炸,注意力被稀释。 现在主流大模型动不动就宣称支持百万甚至千万 Token 上下文,但真到生产环境里,你把海量背景知识或长对话直接扔给模型,效果往往不尽如人意。这背后有个容易被忽略的真相:长上下文不等于长记忆。当输入数据量涨到一定阈值,模型极易出现 Lost in the Middle(中间信息丢失)现象——注意力被稀释,没法精准定位到它真正需要的那段知识。
这个问题咱们在第 15 篇分析 ReAct 天花板时就撞见过同一个根子:多领域的工具结果混在同一条消息链里,售后的退款单号、导购的商品规格、搭配的组合价交错堆积,模型综合回复时得从里面把相关的捡出来,上下文越长、领域跨得越多,捡错、捡漏的概率就越高。
第二,工具膨胀导致选择准确率下降。 第 14 篇讲上下文工程、第 18 篇讲跨品类编排时都提过:工具描述是要占 Token 的,工具数量涨到十几二十个,功能相近的就容易被混淆。单体 Agent 把所有工具一股脑塞 进候选列表,用户只想对比两个耳机,模型却要在 7 个工具里挑——候选越多,选错、多选的概率越高,每一圈还都得把全部工具描述重新读一遍。
第三,人设冲突。 这点最隐蔽也最要命。比特严选的售后场景需要的是严谨、守规矩的人设——退款有没有超期、政策允不允许,一步都不能含糊;导购场景需要的是热情、有主见的人设——敢在两个商品里给明确推荐,甚至适度引导加购。你把这两种要求写进同一份 System Prompt,要么写得面面俱到、长到稀释重点,要么互相打架——严格遵守政策和主动引导加购放一块,模型到底该拘谨还是该放开?
这里要说清楚:单体 Agent 不是一定会在这些地方翻车,而是它没有任何机制去隔离这些干扰。规模小的时候一切正常,规模一大就容易退化——是可靠性下降,不是必然失败。这个区别很重要,后面选型时还要用到。
4. 你其实已经给单体打过两个补丁:RAG 和 Skill
有意思的是,面对上下文这个天花板,咱们在前面的篇章里其实已经动手打过两个补丁了——只是当时没把它们放到架构演进这个视角下看。
补丁一:RAG。 你在 RAG 系列里手写过一整套检索增强。它的逻辑是先搜后答:在把知识注入模型之前,先用检索召回一轮,只把和问题最相关的片段提取出来当上下文。这就巧妙绕开了 Context Window 的长度限制,让 Agent 按需取知识,而不是全量吞。但 RAG 有个致命依赖——垃圾进,垃圾出。Agent 的表现高度依赖前置检索的准确率,检索没召回对的片段,后面模型再强也白搭。而检索这一环通常靠关键词匹配或小参数量的 Embedding 模型,它们的语义理解深度和大模型直接读全文比,是有能力断层的,漏召、误召就成了瓶颈。
补丁二:Skill。 你在第 16、17 篇亲手实现过。它把领域知识、操作规范封装成一个个说明书文件,主 Agent 不预加载全部知识,而是运行时按需读取对应的 Skill——这就是渐进式披露(Progressive Disclosure)。第 17 篇还特意讲过一个关键细节:Skill 不是去动态替换 System Prompt(那样会让模型认知错乱——身份变了但历史还是旧身份下生成的),而是 System Prompt 恒定、把 Skill 内容当作新的参考资料动态注入。所以 Skill 本质是回归单体 Agent 本体、但给它装上动态扩展能力,既轻量、上下文又一致。缺点是 Skill 并没有隔离上下文——每次激活一个 Skill,注入的指令文本和产生的工具调用结果,都堆在主 Agent 的同一条消息链里,不会因为切换到下一个 Skill 就自动清掉。用户在一轮对话里切得越频繁,这条上下文就越长,最终还是会撞上 Context Window 的老问题。
两者的共同点很明显:RAG 和 Skill,本质都是在不拆多个大脑的前提下,给单体 Agent 扩展能力边界。 它们都很有效——这也正是为什么不能急着否定单体。
5. 单体 Agent 的边界:什么时候它就够用
综合下来,单体 Agent 虽然不适合所有场景,但在下面这些条件下,它依然是落地最快、性价比最高的选择:
- 场景复杂度低:业务逻辑简单,不需要复杂的多步推理或长链条规划。
- 知识体量可控:核心指令加背景知识,在约等于两万(非恒定指标)Token 以内能说清楚,直接 System Prompt 注入即可。
- 检索质量有保障:如果非要用 RAG,前提是知识库结构清晰、检索召回准确率够高。
需求小而美、领域边界清晰、检索链路成熟的场景,单体 Agent 完全够用,别过度设计。
| 维度 | 单体 Agent 的优势 | 单体 Agent 的劣势 |
|---|---|---|
| 架构 | 最原生、开发链路最短 | 单点能力有上限 |
| 性能 | 无通信开销、延迟低 | 工具一多,选择准确率下降 |
| 上下文 | 完整、无跨 Agent 信息损耗 | 极度依赖窗口质量,易爆炸、易 Lost in the Middle |
| 人设 | 简单场景一套人设够用 | 多角色写进一份 Prompt 会打架 |
| 适用 | Demo、单域简单任务、知识依赖少 | 海量知识、复杂推理、多领域协作 |
当你面对海量非结构化数据、复杂推理需求、或者多个人设差异巨大的领域时,就该跳出单点思维,看看多智能体这张地图了。但在铺开地图之前,得先回答一个更本质的问题。