想象你投资了一家餐厅,请来一位见识广、脑子快的米其林总厨——但他有个致命问题:他只会下指令,不会亲自操作任何设备。后厨明明有蒸箱、烤箱、冷盘台这些专业工位,可每个工位的接单口径都不一样:有的只认红色单据,有的要电子表格,有的要求口头报单。总厨一天光「翻译」就耗光了精力。 MCP 协议就是厨房里的「标准化传菜口」:所有工位统一用同一张点单格式接单,总厨只需写好一张订单,任何工位都能听懂。而 Upsonic 框架,则是帮你把整间厨房管理起来的那位厨师长——他负责登记工位、编排上菜顺序、协调多位厨师协作。 这篇文章就用这间厨房做主线:从点单格式(MCP 协议)讲起,逐步认识 Upsonic 这家「厨房管理公司」,学会接入工位(工具)、设计套餐流程(任务编排)、安排厨师团队(多 Agent),最后开出一家稳定出餐的 AI 餐厅。

岗位关联

学会 Upsonic + MCP,你就能像装配标准件一样快速搭建具备真实工具调用能力的 AI Agent,把大模型从「只会聊天」升级为「真能办事」,这是当前 AI 应用开发最实战的核心技能之一。

目录
  1. 可视化演示
  2. MCP协议基础
  3. Upsonic框架概览
  4. MCP工具接入
  5. 任务编排设计
  6. 多Agent协作
  7. 开发实践流程
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示Upsonic框架的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Upsonic框架:Upso Upsonic框架总览与MCP MCP协议工具调用与能力接入机 核心机制可视化 Upsonic框架整体架构与关键组件

MCP协议基础

一家后厨最怕「各说各话」:蒸箱只认红色单据,烤箱要电子表格,水吧要求口头报单。总厨每下一道指令,都得先换算一遍对方听得懂的语言。MCP 协议干的就是这件小事——把后厨所有工位的接单格式统一成一张标准三联单。

MCP 的全称是 Model Context Protocol(模型上下文协议),它是连接大模型与外部数据、工具之间的开放协议。它把「工具能做什么、需要什么参数、结果长什么样」全部标准化。只要双方都遵守这个协议,任意大模型应用都能发现并调用任意工具,不必关心工具内部的实现细节。

在 MCP 架构里,Upsonic 这类 Agent 框架扮演「客户端」(client),具体的搜索引擎、数据库、计算服务则是「服务端」(server)工具。每个工具都对外暴露一份机器可读的描述:名称、用途、入参格式。Agent 拿到这份「工具菜单」之后,就能自主判断这道任务该点哪道菜。

标准三联单让总厨省去了翻译的力气,但若把 100 页菜单都递给客人,点菜反而更慢。同理,MCP 让工具接入变得容易,可工具描述会占用模型的上下文窗口,所以真正专业的后厨会像列「今日推荐」一样,只展示最常用的工具。

Ctotal=Cbase+∑i=1nCtooli\displaystyle C_{total} = C_{base} + \sum_{i=1}^{n} C_{tool_i}
模型每次调用都要把可用工具的描述「读进」上下文,接的工具越多,这顿饭的「阅读成本」越高。此式表示:总上下文开销 = 基础开销 + 各工具描述开销之和。
  1. 总上下文开销模型处理一个请求时,需要把工具清单也当作输入一起「看一遍」,因此总开销等于基础部分与工具部分之和。
    Ctotal=Cbase+∑i=1nCtooli\displaystyle C_{total} = C_{base} + \sum_{i=1}^{n} C_{tool_i}
  2. 基础上下文系统提示词和用户问题本身占用的固定 token 数。
    Cbase=Csystem+Cuser\displaystyle C_{base} = C_{system} + C_{user}
  3. 工具描述累加每多接一个工具,就多一段描述成本,逐项累加。
    ∑i=1nCtooli=Ctool1+Ctool2+⋯+Ctooln\displaystyle \sum_{i=1}^{n} C_{tool_i} = C_{tool_1} + C_{tool_2} + \cdots + C_{tool_n}

Upsonic框架概览

有了标准点单格式,还得有人把后厨真正管起来。Upsonic 就是这位「厨师长」——一个轻量级的 Python Agent 开发框架。它不要求你重新发明轮子,而是把「模型怎么连、工具怎么接、任务怎么跑」这些杂活全部接管,让开发者专注于业务本身。

Upsonic 的核心对象非常像「厨房委托书」。UpsonicClient 负责与模型服务商建立连接;Agent 代表一位「厨师」,配置好模型即可上岗;Task 是「工作任务单」,指派给某个 Agent 去完成。三个对象组合起来,一个最小可用的 Agent 应用就诞生了。

框架内置了 MCP 客户端实现,相当于把标准点单协议替你写好了。你不需要关心底层消息如何构造、如何维护会话;Upsonic 还提供会话管理、任务云端托管、工具上下文自动注入等能力,让「接一个新工具」往往只需要一两行注册代码。

厨师长的价值在于「让你只管做菜」。用 Upsonic 搭建 Agent,相当于把厨房管理外包:你负责定菜单、提需求,厨师长负责分配工位、保证准点出餐。

A={M,C,T}\displaystyle \mathcal{A} = \left\{ M, C, T \right\}
一个 Agent 可看成三个部件的集合:模型配置 M、MCP 客户端 C、工具集合 T。缺少任何一部分,Agent 都无法完成「理解 + 调用 + 执行」的闭环。
  1. 模型配置 M指定用哪个大模型、什么温度、什么 API Key,决定「厨师的手艺水平」。
    M={model,api_key,parameters}\displaystyle M = \{ model, api\_key, parameters \}
  2. MCP 客户端 C负责与大模型和工具服务双向通信,是 Agent 的「点单窗口」。
    C={client_endpoint,session}\displaystyle C = \{ client\_endpoint, session \}
  3. 工具集合 T通过 MCP 注册的可用工具清单,相当于厨师能使用的「厨具柜」。
    T={tool1,tool2,…,toolm}\displaystyle T = \{ tool_1, tool_2, \dots, tool_m \}

MCP工具接入

点单格式统一了,管理者到位了,接下来最关键的是把工位真正接上传菜口。在 Upsonic 里通过 MCP 接入工具,体验很像把电器插进统一的插座——接口标准一致,插上就能用,不需要为每个电器单独配一根转换线。

一条完整的「点单—出餐」链路是这样的:Agent 根据任务描述,从工具清单中挑选合适的工具;然后通过内置 MCP 客户端发出结构化请求;工具服务端收到请求并执行;最后以标准格式把结果返回;Agent 再将结果并入自己的推理,继续下一步。整个过程对 Agent 而言就是一次标准函数调用。

目前 MCP 生态已经积累了大量现成服务端,覆盖搜索、数据库、文件系统、设计软件、企业系统等。Upsonic 提供了 task.tool() 这类快速绑定接口,开发者可以用 mcp__工具名 的约定让 Agent 直接使用工具。这意味着你站在社区肩膀上做集成,而不是从零手写每个工具的私有协议。

后厨的蒸箱偶尔也会闹脾气。真正的厨师不会蒸一次失败就砸锅,而是按规定再试几次,还不行就换一种做法降级处理。工具调用同样如此:重试要有上限、要有退路,把「意外」变成「预案」。

Psuccess=1−(1−p)k\displaystyle P_{success} = 1 - (1-p)^{k}
工具调用偶尔会失败(网络抖动、参数错误),重试是常见补救。若单次成功率为 p,重试 k 次后至少成功一次的概率就是这个公式。
  1. 单次失败概率调用一次工具「没做成」的概率。
    q=1−p\displaystyle q = 1 - p
  2. k 次全部失败每次失败相互独立,连错 k 次概率相乘。
    qk=(1−p)k\displaystyle q^{k} = (1-p)^{k}
  3. 至少一次成功用「1 减去全部失败」得到最终成功概率。
    Psuccess=1−(1−p)k\displaystyle P_{success} = 1 - (1-p)^{k}

任务编排设计

真实的客人从不会只点一道菜。数据分析、报告撰写这类复杂任务,本质是一桌宴席:买菜、洗菜、蒸煮、摆盘环环相扣。Upsonic 把这套「宴席设计」称为任务编排,也就是把复杂任务拆成多个 Task,再按依赖关系组织执行。

编排的核心是先拆解、再排布。没有依赖关系的 Tasks 可以并行执行,有依赖关系的必须串行等待,最后再由一个汇总 Task 收拢所有结果。Upsonic 的 Task 对象天然绑定 Agent——你只需声明「这道菜由哪位厨师做、需要哪些工位」,执行顺序由依赖图自动决定。

串行改并行能明显提升吞吐,但收益不是无限的。Amdahl 定律告诉我们,加速比受限于任务中必须串行的部分。因此聪明的做法是先去消除串行瓶颈,而不是盲目堆并行任务——后者只会增加管理与通信成本。

主厨设计套餐时,总把能同时蒸的菜放进同一笼,把必须等汤底的菜排到后面。任务编排也是如此:先画好依赖图,再谈并行优化,顺序对了,效率自然就来了。

S=1(1−p)+pn\displaystyle S = \frac{1}{(1-p) + \dfrac{p}{n}}
p 表示任务中可并行的比例,n 表示并行度(如同时运行几个 Agent),S 是相对串行执行的加速比。即使 p 很大,加速比也有上限。
  1. 串行部分占比必须一步一步走、无法并行的比例。
    (1−p)\displaystyle (1-p)
  2. 并行部分耗时可并行的部分被 n 份摊薄后的耗时。
    pn\displaystyle \frac{p}{n}
  3. 整体加速比总耗时缩短为原来的几分之一。
    S=1(1−p)+pn\displaystyle S = \frac{1}{(1-p) + \frac{p}{n}}

多Agent协作

宴席越大,一位厨师越忙不过来。多 Agent 协作就是请多位厨师同台:冷盘师傅、热菜师傅、甜品师傅各管一摊,各有各的拿手绝活。在 Upsonic 里,每个 Agent 都是一个独立角色,拥有自己的模型与工具集。

协作模式通常有两种:调度者模式,由一个总 Agent 负责分发任务、回收结果;流水线模式,上一个 Agent 的输出作为下一个 Agent 的输入。MCP 在这里不仅是「传菜口」,也是厨师之间递送半成品的标准通道,保证了协作数据的格式一致。

但协作并非免费。人越多,沟通越多:每两个厨师都要确认一次状态,通信通道数随人数平方级增长。团队一大,协调本身就会变成瓶颈。工程上要控制 Agent 数量,用角色分层收敛沟通,而不是让所有 Agent 两两自由对话。

聪明的后厨不会让 20 位厨师在走廊里互相喊话,而是设置一位传菜总管,大家都只与总管对接。多 Agent 设计同理:能用一个调度者收敛的沟通,就不要让决策链路变成网状的「广场聊天」。

C(n)=n(n−1)2\displaystyle C(n) = \frac{n(n-1)}{2}
n 个 Agent 两两之间都要搭建沟通通道,通道总数是组合数「n 选 2」,呈平方级增长。
  1. 每个角色的沟通对象第 i 个 Agent 需要与其余 n-1 个 Agent 对接。
    n−1\displaystyle n - 1
  2. 两两通道组合数n 个点两两连线的总条数。
    n(n−1)2\displaystyle \frac{n(n-1)}{2}
  3. 数量级代价当 n 很大时,通道数约为 n 的平方的一半。
    O(n2)\displaystyle O(n^2)

开发实践流程

理论讲完,回到「从图纸到开业」。用 Upsonic 开发一个 Agent 的整体流程相当顺滑,就像按开业清单逐项打勾,五步就能跑通一个最小闭环。

第一步安装框架 pip install upsonic;第二步配置模型环境变量;第三步创建 UpsonicClient 与 Agent 对象;第四步通过 MCP 注册并接入业务工具;第五步定义 Task 并运行。跑通之后,再根据日志观察工具选择是否合理、上下文是否过大、成本是否可控。

成本是上线前必须算清的账。大模型 API 通常按 token 计费,而且输入与输出单价往往不同。把系统提示、工具描述、历史对话都算进输入,把模型回答算进输出,就能精确估算每一单任务的「账单」,提前发现预算风险。

开业之后还要持续打磨:把常用工具描述精简成「今日推荐」,把失败案例写进「翻车日志」并设计降级方案。至此,这间 AI 餐厅才真正稳定运转起来——从一张标准点单开始,到一整套可运营的后厨体系。

Cost=Nin×Pin+Nout×Pout\displaystyle Cost = N_{in} \times P_{in} + N_{out} \times P_{out}
总成本 = 输入 token 数 × 输入单价 + 输出 token 数 × 输出单价。它是 Agent 上线前做成本评估的基本公式。
  1. 输入 token 费用系统提示、工具描述、历史对话都算输入。
    Nin×Pin\displaystyle N_{in} \times P_{in}
  2. 输出 token 费用模型回答与工具结果回传算输出。
    Nout×Pout\displaystyle N_{out} \times P_{out}
  3. 总成本两部分相加即为一次任务的花费。
    Cost=Nin×Pin+Nout×Pout\displaystyle Cost = N_{in} \times P_{in} + N_{out} \times P_{out}

AI 应用场景

企业知识库智能客服

阶段:工具接入(MCP 工具注册与调用)

解决的问题:传统客服机器人依赖人工维护问答库,回复僵硬且查不到实时数据;每次对接新系统都要写一堆私有接口。通过 Upsonic 框架,把内部知识库、订单系统、物流接口封装成 MCP 服务端,客服 Agent 通过统一客户端实时调用,回答有依据、可溯源。

具体案例:某电商平台把商品 FAQ、发票接口封装成 MCP 工具,客服 Agent 一次调用即可拿到订单状态并生成自然语言答复,退换货咨询的解决率从 60% 提升到 85%。

自动化投研日报生成

阶段:多Agent协作

解决的问题:分析师每天花费大量时间搜集数据、核对数字、撰写模板化日报。采用三个角色分工的 Agent 流水线:采集 Agent 连接新闻与行情 MCP 工具,分析 Agent 连接计算工具算涨跌幅,撰写 Agent 汇总成稿并润色。

具体案例:某券商研究团队每天 8:30 自动产出晨报初稿,分析师只需花 10 分钟复核,省去约 2 小时的重复劳动。

电商月度复盘报告

阶段:任务编排

解决的问题:「本月卖得怎么样」这类大任务链条长(拉数 → 清洗 → 计算 → 结论 → 排版),手动脚本难以维护。用 Upsonic 编排为五个 Task 组成的依赖图,无依赖步骤并行执行,最后统一汇总成一份图文报告。

具体案例:某运营团队月度复盘从 3 天缩短到半小时,且数据口径由工具侧统一保证,不再出现「各报各数」。

Python 演示

python87 行
"""Upsonic 风格 MCP Agent 迷你演示: 模拟标准传菜口接入三个工具"""import time  class Tool:    """一个 MCP 工具: 名字 + 描述 + 实现函数"""     def __init__(self, name, description, func):        self.name = name        self.description = description        self.func = func  class MCPHub:    """MCP 中枢: 所有工具都插到这个标准插座上"""     def __init__(self):        self.tools = {}     def register(self, tool):        self.tools[tool.name] = tool     def list_tools(self):        return [t.name + ": " + t.description for t in self.tools.values()]     def call_tool(self, name, **kwargs):        if name not in self.tools:            return "错误: 找不到工具 " + name        return self.tools[name].func(**kwargs)  class Agent:    """模拟 Upsonic 的 Agent: 只认识 MCP 中枢, 不关心工具内部实现"""     def __init__(self, name, hub):        self.name = name        self.hub = hub        self._call_count = 0     def ask(self, plan):        results = []        for step in plan:            result = self.hub.call_tool(step["tool"], **step["args"])            self._call_count += 1            print("  [%s] 调用 %s -> %s" % (self.name, step["tool"], result))            results.append(result)            time.sleep(0.2)        return "; ".join(str(r) for r in results)  def calc(expr):    """演示用计算工具: 解析 '7 * 8' 这种简单表达式"""    parts = expr.split()    a, op, b = float(parts[0]), parts[1], float(parts[2])    if op == "+":        return a + b    if op == "-":        return a - b    if op == "*":        return a * b    if op == "/":        return a / b    return "未知运算符"  def main():    # 1. 建标准插座 (MCP 中枢) 并注册三个工具    hub = MCPHub()    hub.register(Tool("weather", "查询指定城市的天气", lambda city: "%s 晴 25 度" % city))    hub.register(Tool("calc", "计算简单数学表达式", calc))    hub.register(Tool("search", "检索公开资料", lambda keyword: "找到 %s 相关文档 3 篇" % keyword))    print("可用工具:", hub.list_tools())     # 2. 创建 Agent, 编排三个连续步骤 (任务编排)    agent = Agent("总厨Agent", hub)    plan = [        {"tool": "weather", "args": {"city": "上海"}},        {"tool": "calc", "args": {"expr": "7 * 8"}},        {"tool": "search", "args": {"keyword": "MCP协议"}},    ]    summary = agent.ask(plan)    print("汇总结果:", summary)    print("工具调用次数:", agent._call_count)  if __name__ == "__main__":    main()
目的:用 60 多行代码模拟 Upsonic + MCP 的核心机制——工具注册、统一调用、任务编排与结果汇总,帮助理解「标准传菜口」如何工作。
  1. class MCPHub模拟 MCP 中枢,所有工具都注册到这里,对外只暴露一个统一调用入口。
  2. hub.register(Tool("weather", ...))工具注册,等价于把一个新工位接到标准传菜口。
  3. call_tool(self, name, **kwargs)统一的工具调用入口,Agent 不关心工具内部实现。
  4. class Agent模拟 Upsonic 的 Agent 对象,只依赖 MCP 中枢完成任务。
  5. self._call_count用 _count 后缀命名计数器,避免与同名方法冲突。
  6. agent.ask(plan)任务编排:把三个步骤按顺序交给 Agent 依次执行并汇总。
  7. if __name__ == "__main__":标准可执行入口,直接运行即可看到完整调用日志。

常见误区

误区「接入 MCP 之后,大模型自己就能上网搜资料、查数据库,不需要任何中间层。」

正解MCP 是「大模型应用 ↔ 工具服务」之间的协议,连的是工具服务而不是单纯上网。真正发起调用、做决策的仍是 Agent(客户端)本身;大模型不直接操作网络,而是由 MCP 客户端代为请求工具服务端。就像总厨不下灶台,而是通过传菜口让工位干活。

为何常见:看到搜索、数据库这类 MCP 工具,容易把「工具调用」和「联网」混为一谈,忽略了客户端代理这层关键结构。

误区「工具数量越多,Agent 能力越强,所以把能找到的 MCP 服务都接上准没错。」

正解每接入一个工具,模型都要把它的描述读进上下文,既多花 token,又增加选错工具的概率。工程实践应像「今日推荐菜单」:精选高频工具,把低频工具从主清单移除或按需动态加载,让 Agent 的决策负担更小。

为何常见:直觉上「功能多 = 厉害」,忽略了上下文窗口有限和选择成本上升这两个实际约束。

误区「把任务拆给 10 个 Agent 并行跑,肯定比 1 个 Agent 快 10 倍。」

正解并行只能加速可并行的部分,串行部分一动不能动,Amdahl 定律给出了加速上限;Agent 之间的通信还会额外消耗时间,协调成本随数量平方级增长。数量过多时管理开销反而超过并行收益,关键在消除串行瓶颈而非堆数量。

为何常见:把「人多力量大」的生活直觉直接套到多 Agent 系统上,忽略了沟通协调的隐性代价。

误区「Upsonic 和 MCP 差不多,一个是协议,一个是协议的 Python 实现,学会 MCP 就懂 Upsonic 了。」

正解MCP 是协议标准,Upsonic 是完整的 Agent 开发框架。Upsonic 内置 MCP 客户端,但还包含 Agent 抽象、Task 任务编排、会话管理、云端托管等能力。MCP 只是它接入外部工具的一环,框架的核心价值在「管理整间厨房」而非「传菜」本身。

为何常见:框架文档中大量出现 MCP 字样,容易让人误以为框架 = 协议实现,忽略了任务编排与多 Agent 协作等框架级能力。

面试题

Q1. MCP 协议最重要的作用是下列哪一项?

单选题 · easy

  • A.让大模型直接操纵屏幕
  • B.统一大模型与外部工具接口← 正确答案
  • C.替代大模型的完整训练过程
  • D.加速显卡芯片的推理运算

答案:B。MCP 的核心是「标准化接口」,让大模型应用与外部工具之间用统一协议通信,对应 B。A 说的是 GUI 自动化,C 说的是训练,D 说的是硬件加速,都与协议本身无关。

Q2. 在 Upsonic 中,Agent 调用外部工具通常通过什么方式?

单选题 · easy

  • A.手动改写工具的源代码
  • B.每次重启框架再执行
  • C.内置的 MCP 统一客户端← 正确答案
  • D.复制结果后人工粘贴

答案:C。Upsonic 内置 MCP 客户端,Agent 通过它统一发现和调用工具,对应 C。A、B、D 都是笨拙且不可扩展的集成方式,违背了「标准传菜口」的设计初衷。

Q3. MCP 架构中客户端与服务端的正确关系是?

单选题 · mid

  • A.大模型是服务端工具是客户端
  • B.Agent 是服务端用户是客户端
  • C.工具是服务端 Agent 是客户端← 正确答案
  • D.框架是服务端模型是客户端

答案:C。MCP 架构中,提供能力的工具服务端(server),发起请求的 Agent 应用是客户端(client),对应 C。记住「谁提供服务谁是服务端、谁发起调用谁是客户端」,就不会被大模型、框架等名词绕晕。

Q4. 任务编排中把大任务拆成小任务的主要收益是什么?

单选题 · mid

  • A.让可用的工具数量变少
  • B.让模型推理速度直接翻倍
  • C.省去所有数据的传输过程
  • D.提升并行度与流程可维护性← 正确答案

答案:D。拆解任务后,无依赖的步骤可以并行执行,每个小任务也更易维护和复用,对应 D。A、B、C 都是错误联想:工具数量、推理速度、数据传输并不会因为拆任务而自动改善。

Q5. 多 Agent 协作中,n 个 Agent 两两通信的通道总数是多少?

单选题 · mid

  • A.随数量呈线性增长
  • B.等于 n(n-1)/2 个← 正确答案
  • C.始终等于 2n 个
  • D.随数量指数级下降

答案:B。n 个点两两连线的总数为组合数 n(n-1)/2,对应 B。它随 n 平方级增长,所以 A(线性)低估、C(恒为 2n)错误、D(下降)方向完全相反。

Q6. MCP 工具调用失败后,更合理的处理策略是哪一项?

单选题 · hard

  • A.无限次重试直到最终成功
  • B.立即丢弃任务停止执行
  • C.设定重试上限并降级处理← 正确答案
  • D.把工具描述加长再调用

答案:C。工程上应采用「有限重试 + 失败降级」:设置最大重试次数,超过后走备用方案,对应 C。A 会浪费资源甚至死循环,B 太激进,D 加长描述反而增大上下文、无助于解决执行失败。

Q7. 下面哪个比喻最贴近 MCP 协议的本质?

单选题 · easy

  • A.统一规格的标准插座← 正确答案
  • B.一张手写的采购清单
  • C.一台古老的单功能机器
  • D.一把任何锁都打不开的钥匙

答案:A。MCP 就是「标准化接口」:任何符合协议的工具都能像电器插进标准插座一样被 Agent 使用,对应 A。B 是一次性内容,C 是封闭系统,D 是失效工具,都与「统一标准」无关。

Q8. 接入 MCP 工具会给 Agent 带来哪些好处?

多选题 · mid

  • A.复用社区现成工具生态← 正确答案
  • B.直接调用外部真实数据← 正确答案
  • C.让模型参数自动变大
  • D.主逻辑无需频繁改动← 正确答案

答案:ABD。MCP 生态提供大量现成服务端(A),工具能访问真实业务数据(B),统一协议让 Agent 主逻辑不必随工具变化而频繁重写(D)。C 错误:模型参数量是训练阶段的事,与接入工具无关。

Q9. 关于任务编排设计,下列说法正确的有哪些?

多选题 · hard

  • A.大任务应拆解为若干小任务← 正确答案
  • B.依赖关系决定串并行顺序← 正确答案
  • C.无依赖的步骤可以并行执行← 正确答案
  • D.流程越复杂效果必然越好

答案:ABC。编排的核心就是拆解(A)、按依赖排布(B)、并行化无依赖步骤(C)。D 错误:流程越复杂管理成本越高,简化与消除瓶颈才是目标,复杂度本身不是价值。

Q10. 关于多 Agent 协作的协调成本,正确的说法有哪些?

多选题 · extreme

  • A.Agent 越多通信越频繁← 正确答案
  • B.协调成本近似平方级增长← 正确答案
  • C.更多 Agent 必然更快完成
  • D.应控制 Agent 数量与规模← 正确答案

答案:ABD。通道数 n(n-1)/2 说明 Agent 越多沟通越频繁(A)、成本平方级上升(B),因此要控制规模(D)。C 错误:受 Amdahl 定律约束,协调开销增大后,更多 Agent 不一定更快甚至更慢。