想象你是一家五星级餐厅的总厨。周五晚市,预订爆满,前厅开了六十桌。你手下有一支厨师团队:切配、掌勺、摆盘、甜品……每个人都有自己的看家本领,也都有自己的脾气。你只有三个小时,要端出几百道菜,还要保证每桌的菜在差不多的时间上齐——热菜不能凉,凉菜不能晚。 这几乎就是软件世界里多Agent协作每一天面临的挑战。所谓Agent,就是一个能自己感知、自己决策、自己行动的AI程序;当多个Agent要合作完成一个复杂任务时,首先要解决的,就是“谁来做什么、怎么配合”——这就是Agent角色分配。 在这篇文章里,我们跟着总厨的晚市节奏,一步一步理解:怎么给每个Agent写“岗位说明书”(角色定义)、怎么把大目标拆成小任务(任务分解)、Agent之间怎么精准“传菜”(通信协议)、两个人抢烤箱怎么办(冲突解决)、总厨怎么统筹全局(协调机制)、最终怎么排班最合理(分配算法)。学完这一课,你就能像总厨一样,指挥一支AI团队打下一场硬仗。
掌握Agent角色分配,是AI Agent架构师从“单兵作战”走向“军团指挥”的分水岭——学会像总厨一样排兵布阵、统筹全局,你就能让一支AI团队高效地打下一场硬仗。
可视化演示
展示多Agent系统中规划者Agent将任务分解并分配给各专业Agent,通过通信协议协调执行,最终由协调者汇总成果的协作全流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
角色分配:规划者分解任务 规划者Agent将复杂任务拆解为子任务并匹配专业Agent 各Agent按能力模型接收任务,通过消息队列共享接口定义 匹配度 = 能力匹配 × 负载均衡 协调者汇总各Agent成果,任务完成率显著提升
角色定义方法
走进任何一家运转良好的餐厅后厨,灶台旁都贴着一张泛黄的“岗位说明书”:切配岗——负责洗切备料,刀法要稳;掌勺岗——负责火候调味,出锅要快;摆盘岗——负责造型出品,审美在线。三张纸把厨房变成精密的整体,没有人抢别人的活,也没有人漏掉自己的活。
多Agent系统(多个AI程序协作解决一个复杂问题)的角色定义,就是这张岗位说明书。一个Agent不是只会执行指令的工具,它有技能、有职责、有边界。角色一旦定义不清,Agent们就像没有分工的厨房——三个厨师抢着炒菜,却没人切葱。
在工程上,一个角色被形式化为四元组 $R=\langle S, T, P, D \rangle$:$S$ 是技能集,$T$ 是职责任务集,$P$ 是权限边界,$D$ 是依赖关系。根据场景不同,角色还分静态与动态——启动时定死的岗位是静态角色;运行中能临时顶岗的是动态角色,就像大厨请病假时二厨顶上去。
有了这四栏岗位说明书,后厨才能在晚市高峰像精密机器一样运转——每个Agent都清楚自己是切配还是掌勺,该接谁的料、把菜递给谁。角色定义是整场协作的地基,地基不稳,后面的任务分解、通信协调全都会塌。
- 角色标识 $R_i$表示第 $i$ 个角色的唯一身份,就像后厨里“切配岗”这个独一无二的编号。
- 技能集 $S_i$Agent 具备的技能及熟练度集合,决定了它能接什么活、接得多好。
- 职责任务集 $T_i$该角色被授权负责的任务列表,是岗位说明书的“工作内容”一栏。
- 权限边界 $P_i$可调用的资源与可做出的决策范围,防止Agent越权操作。
- 依赖关系 $D_i$与其他角色之间的协作关系,标明“上游是谁、下游交给谁”。
任务分解策略
承办一场三百人的婚宴,总厨绝不会对着“做三百人份的菜”发呆。他会铺开一张纸,把宴席拆成四条线:凉菜、热菜、甜品、汤羹;再往下拆——热菜线里哪几桌先上,红烧谁负责、清蒸谁负责。这棵“任务树”画完,后厨才敢开工。
多Agent协作的第一步同样是把宏观目标分解成可执行、可分配的子任务,这个环节叫任务分解。目标太笼统,Agent无从下手;分解得不好,轻则重复劳动,重则任务互相冲突。
好的任务分解要满足三个条件:完整覆盖、互不重叠、复杂度降低——也就是“不漏、不重、更省力”。工程上还要做依赖分析:热菜必须等切配完成,有依赖的子任务要按拓扑序串行;还要控制粒度:拆太细,协调通信的开销会吃掉并行收益;最后定分配方式:耦合紧密的子任务由同一个Agent打包完成,松散的才分给不同Agent并行。
婚宴当夜,四条线同时开火、互不干扰,客人同时吃上热菜——这就是任务分解的魔力。它把总厨一个人的压力,拆成每个档口都扛得住的小目标。
- 完整覆盖所有子任务的并集等于总目标 $T$,一场宴席的菜必须全部有归属,一道都不能漏。
- 互不重叠任意两个子任务的交集为空,一道菜不能同时既归“凉菜线”又归“热菜线”。
- 复杂度降低分解后各子任务复杂度之和远小于整体复杂度,因为可以并行、可以专注,总厨不用一个人扛。
通信协议设计
后厨最怕的不是忙,而是“传错话”。一道清蒸鲈鱼被喊成红烧鲈鱼,整桌菜报废。所以老练的后厨有铁律:传菜单必须写清桌号、菜名、忌口、时间;喊单的人要报自己名字;接单的人必须复述确认。这些约定,就是后厨的通信协议。
多Agent系统里,Agent之间协作必须通信。通信协议规定了消息的格式、传递方式和路由规则——相当于后厨“怎么喊、喊给谁、用什么格式喊”的全部约定。协议设计得烂,Agent之间就鸡同鸭讲,协作直接崩溃。
标准Agent消息可表示为 $M=\langle S, R, \tau, P, t \rangle$:$S$ 发送者、$R$ 接收者、$\tau$ 消息类型(请求/应答/广播/取消)、$P$ 数据载荷、$t$ 时间戳。消息类型决定路由方式:点对点、广播、发布订阅。交互还分同步与异步——“喊单后原地等回应”是同步,可靠但会阻塞;“把单子贴窗口谁有空谁取”是异步,高效但可能漏。总厨要按场景权衡选型。
一张写清桌号、菜名、时间的传菜单,能让后厨在兵荒马乱的晚市保持秩序。同样,一个五元组的消息约定,能让几十个Agent在复杂协作中不吵不闹、不漏不乱。
- 发送者 $S$消息从哪个 Agent 发出,相当于“谁在喊话”,没有它接收方无法溯源。
- 接收者 $R$消息的目标 Agent,可以是单个、多个或全体广播,决定消息送到哪里。
- 消息类型 $\tau$标识这是一条请求、应答还是取消,接收方据此决定如何响应与路由。
- 数据载荷 $P$消息携带的实际业务内容,比如任务参数、出价金额、菜品信息。
- 时间戳 $t$消息发出的时间,用于处理乱序到达和网络延迟。
冲突解决机制
晚市八点,烤箱只有一个,甜点师要做焦糖布丁,掌勺大厨要烤羊排,两只手同时伸向烤箱门。有经验的厨房不吵架——他们心算一秒钟:羊排三桌等着出,布丁可以冷藏晚点烤,于是羊排用烤箱,布丁排队。
多Agent协作中,资源竞争(数据库连接、GPU、工具调用权限)和意见分歧(目标相同但方案不同)几乎不可避免。没有冲突解决机制的团队会陷入死锁或无限争论。冲突解决的核心,是给每个竞争请求算一个优先级值。
优先级仲裁是应用最广的策略:每个请求的仲裁优先级 $P$ 由资源效用 $U$ 和剩余时间 $d$ 共同决定——越重要、越紧迫的请求值越高,$\alpha$、$\beta$ 是权重系数,$\epsilon$ 防除零。算完 $P$ 值,最高者获得资源,其余进入等待或走回退策略。回退策略是兜底保险:协商失败时Agent退回默认方案(重新生成任务、转交其他Agent),而不是无限等待。
靠着这套“先算后做”的仲裁规则,烤箱、灶头、人手在最紧张的时刻流向最需要的地方。冲突不可怕,可怕的是没有一套让所有Agent都服气的规则。
- 资源效用 $U_i$这个请求创造的价值——“烤羊排”能同时满足三桌客人,效用就高。
- 剩余时间 $d_i$距离截止时间还剩多少,越接近截止这个值越小,说明越等不起。
- 权重系数 $\alpha, \beta$表示“价值”和“紧迫”哪个更重要,由架构师根据业务场景调参。
- 防除零项 $\epsilon$一个极小的正数,防止 $d$ 等于 $0$ 时公式崩溃、系统直接死锁。
协调机制设计
米其林后厨的传菜口是大厨的指挥台:所有菜做好后必须经大厨确认才能上桌,这是集中式协调。而有些创新厨房流行黑板模式——中央挂一块黑板,谁缺什么、谁能帮什么写上去,各档口自己揭榜。
协调机制解决的是“多个Agent如何围绕共同目标有序推进”的制度问题。不同场景需要不同机制,工程上常见四类:集中式协调、分布式协商、黑板模式、契约网络。
集中式协调:一个协调器收集全部信息统一决策,像总厨站在传菜口,简单可控但容易成为瓶颈;分布式协商:Agent们直接对话、讨价还价,灵活但可能陷入僵局;黑板模式:共享一块黑板动态揭榜,适合任务随机涌现的场景。最经典的是契约网络(Contract Net Protocol):协调器广播任务,候选Agent根据自身技能与负载出价,协调器选“总成本最低”者签约。出价公式里,$C_i$ 是任务适配成本,$\phi_i$ 是技能熟练度——越拿手出价越低;$\lambda L_i$ 是负载惩罚——越忙的人出价自动变贵,自然落选。这套机制把“选谁干活”从拍脑袋变成了市场化竞价。
总厨不需要认识每一个食客,但通过传菜口、黑板和竞价规则,他能保证每道菜都有人做、每个档口饱和却不超载。协调机制,就是让Agent团队在无人紧盯时也能井井有条的隐形之手。
- 最优中标者 $A^{*}$在所有候选 Agent 中选出总代价最小的一位签约,就像拍卖中出价最低者成交。
- 适配成本与技能比 $C_i / \phi_i$任务难度除以技能熟练度——越拿手,这个值越小,出价越低。
- 负载惩罚 $\lambda \times L_i$当前负载乘以惩罚系数——已经忙到冒烟的Agent被自动“加价”,自然把机会让给闲人。
角色分配算法
周日晚市前总厨排班:小李刀工利索但手上贴着创可贴,老张炒菜最香但下午已炒了四十桌,新来的实习生摆盘有天赋。把谁放哪个岗?有经验的总厨会打一张“能力匹配表”,再均衡每个人当天的劳动量。
角色分配算法解决“把哪个Agent派到哪个角色”的优化问题,两大目标:能力匹配——人尽其才;负载均衡——不撑死不闲死。策略可静态(启动时算一次),也可动态(运行中持续调整)。
能力匹配用加权相似度打分:Agent $j$ 对角色 $i$ 的匹配分等于各技能值与需求值的相似度按权重加和,分高者优先。全局层面做负载均衡:设 $c_{ij}$ 为 0/1 决策变量(任务 $i$ 是否派给 Agent $j$),每个任务只能归属一个 Agent,目标是让所有Agent中的最大负载 $L_j$ 尽量小——像木桶一样,把最忙那块板压下来。真实系统还要动态调整:实时监控负载,超过阈值触发重分配;再靠任务完成率、平均延迟等指标做评估反馈,持续调优权重。
排班表贴出的那一刻,小李去切配、老张守招牌菜、实习生站甜品台——每个人都在最合适的位置上担着恰到好处的压力。好的角色分配算法,就是这张让全员都舒服、效率又最高的排班表。
- 决策变量 $c_{ij}$取 $1$ 表示任务 $i$ 分配给 Agent $j$,取 $0$ 表示不分配,是排班表上的“勾与叉”。
- 单归属约束每个任务只能分配给一个 Agent,一道菜只有一个责任人,避免“三个和尚没水喝”。
- Agent 负载 $L_j$该 Agent 分配到所有任务的难度之和,相当于一个厨师当晚上要出多少道菜。
- 最小化最大负载让最忙的Agent也别太忙,全体负载趋于均衡,这才是“排班表”的最优解。
AI 应用场景
电商大促客服工单智能分派
阶段:任务分解 + 角色定义 + 角色分配
解决的问题:大促期间工单如洪水涌入,传统人工分派靠经验、速度慢、误派率高;售前、售后、退款、技术等诉求混在一起,一线客服疲于奔命。AI多Agent系统先按诉求类型自动分解工单,再按技能匹配与负载均衡分配给不同角色的客服Agent。
具体案例:某电商平台搭建客服多Agent团队:工单一进来先由“分类Agent”拆解归属,再由“调度Agent”把任务分给售后Agent、退款Agent、技术Agent。退款Agent用契约网络投标认领“小额自动退款”任务,日处理两万单,平均响应时间从15分钟降到40秒。
软件研发多Agent协作流水线
阶段:任务分解 + 协调机制 + 冲突解决
解决的问题:一个大型功能需求要拆成设计、编码、测试、文档多个子任务,多个编程Agent并行开发时容易产生接口冲突和构建资源竞争。传统单Agent无法并行,人工拆分又太慢。
具体案例:研发团队引入多Agent系统:架构Agent集中式协调模块边界,把需求分解为可并行开发的子任务;编码Agent各自领取任务,测试Agent发现缺陷后通过优先级仲裁决定修复顺序;共享构建资源用契约网络竞标,谁的空闲度高谁先用。
无人机物流配送调度
阶段:协调机制(契约网络)+ 动态角色分配
解决的问题:配送订单动态到达,无人机电量与位置各异,人工调度无法实时匹配“哪台无人机去送哪个订单”。
具体案例:调度中心把每个订单作为任务广播,各无人机按“距离 + 剩余电量 + 当前负载”出价,最低价者中标;电量不足的无人机自动切换到“回航充电”角色,原有任务通过黑板模式重新揭榜分配,保证恶劣天气下配送不中断。
Python 演示
#!/usr/bin/env python# -*- coding: utf-8 -*-"""契约网络协议模拟:总厨向4位Agent厨师广播6道菜的任务""" class Agent: """厨师Agent: 拥有技能熟练度, 会出价并承接任务""" def __init__(self, name, skills): self.name = name # 厨师名 self.skills = skills # 技能字典: {"技能名": 熟练度0.0-1.0} self.load = 0 # 当前负载(已领任务难度之和) self.tasks = [] # 已承接的任务名列表 def bid(self, task): """契约网络中的出价: 难度/熟练度 + 负载惩罚, 技能不符返回None""" if task.skill not in self.skills: return None cost = task.difficulty / (self.skills[task.skill] + 1e-6) return cost + self.load * 0.5 def take(self, task): """中标后承接任务并更新负载""" self.tasks.append(task.name) self.load += task.difficulty class Task: """一道菜任务""" def __init__(self, name, skill, difficulty): self.name = name # 菜名 self.skill = skill # 所需技能 self.difficulty = difficulty # 难度 class Coordinator: """协调器: 广播任务收集出价, 最低价中标""" def __init__(self, agents): self.agents = agents self.waiting = [] # 无人认领的任务名 def assign(self, tasks): for t in tasks: bids = [] for a in self.agents: v = a.bid(t) if v is not None: bids.append((v, a)) if bids: bids.sort(key=lambda x: x[0]) # 出价从低到高 bids[0][1].take(t) # 最低价中标 else: self.waiting.append(t.name) def report(self): print("===== 契约网络分配结果 =====") for a in self.agents: print("%s 负载=%.2f 任务=%s" % (a.name, a.load, a.tasks)) print("无人认领: %s" % (self.waiting if self.waiting else "无")) def main(): agents = [ Agent("厨神", {"切配": 0.9, "掌勺": 0.8, "摆盘": 0.6}), Agent("刀工", {"切配": 0.95, "掌勺": 0.4, "摆盘": 0.5}), Agent("火夫", {"切配": 0.3, "掌勺": 0.9, "摆盘": 0.2}), Agent("摆盘师", {"切配": 0.5, "掌勺": 0.2, "摆盘": 0.95}), ] tasks = [ Task("切土豆丝", "切配", 3), Task("红烧排骨", "掌勺", 5), Task("雕花装饰", "摆盘", 2), Task("凉菜拼盘", "切配", 4), Task("糖醋里脊", "掌勺", 4), Task("果盘造型", "摆盘", 3), ] co = Coordinator(agents) co.assign(tasks) co.report() if __name__ == "__main__": main()
if task.skill not in self.skills:不会的技能直接弃标,就像不会雕花的厨子不该揽雕花的活,省得浪费大家时间。cost = task.difficulty / (self.skills[task.skill] + 1e-6)核心出价公式:难度除以熟练度,越拿手出价越低;1e-6防止熟练度为0时除零崩溃。return cost + self.load * 0.5加上负载惩罚项:越忙的Agent出价越高,自然把机会让给闲人,对应公式里的 $\lambda L_i$。bids.sort(key=lambda x: x[0])按出价从低到高排序,出价最低者排在最前,比手动“挑最合适的”公平且可复现。bids[0][1].take(t)最低价Agent中标、领取任务,相当于拍卖会上落槌成交。self.load += task.difficulty中标后负载增加,影响后续出价,形成前文所说的“动态均衡”闭环。
常见误区
误区总觉得系统干不动是“人不够”,于是不停增加Agent和角色。反正每个Agent都很便宜,多加几个总没错吧?
正解角色数增加,通信和协调成本按组合数爆炸——每个Agent都要跟别人对齐、同步,就像在十平米的厨房塞进二十个厨师,互相撞胳膊肘。角色贵精不贵多,先想清楚“这个角色缺了会怎样”,再决定加不加。
为何常见:生活直觉“人多力量大”根深蒂固,忽略了软件世界里协调成本往往超过人力成本。
误区把任务拆到极致,每个Agent只做一小步,像流水线一样,效率一定最高。
正解流水线之所以高效,是因为物理布局固定、工位之间不用沟通;而Agent是分布式的,每拆一刀就多一条通信链路。把“切一棵葱”拆成洗葱、剥皮、切段、装盘四个人接力,协调开销早已超过单干收益。粒度的准则是:Agent能独立闭环的最小单元。
为何常见:工业流水线的思维惯性,忽略了分布式系统的通信成本——流水线不需要发消息,Agent需要。
误区给系统配一个Manager统一仲裁,所有资源冲突、意见分歧都听它的,一劳永逸。
正解集中式仲裁有两个致命伤:单点故障(总厨倒下整个厨房停摆)和信息瓶颈(所有请求都汇到一处,晚市高峰必然排队)。工程上普遍采用分级仲裁:常规冲突用规则引擎自动裁决,重大冲突才上报协调器。
为何常见:人类社会靠层级组织解决问题,但AI系统没有“服从权威”的本能,必须靠机制而不是靠角色权威。
误区系统启动时把角色和任务分配好,后面就按部就班跑,出了问题再说。
正解运行期负载会漂移、新任务会随机到达、Agent能力可能降级(比如响应超时)。像晚市中途有人手受伤必须临时调岗,角色分配要支持动态调整:监控负载指标、超阈值触发重分配,才能长期稳定。
为何常见:把多Agent系统当成一次性配置的脚本,忽略了运行期的不确定性——真实世界没有“剧本”。
误区统一协议就是高效协作,所有消息都走同一个格式和通道最省心。
正解不同交互类型适合不同模式:任务分配走契约网络、状态共享走黑板、紧急协调走同步喊单。强行统一就像要求所有菜用同一个火候炒——能熟,但不好吃。协议要分层、要适配,让每种交互用最合适的通道。
为何常见:追求标准化的惯性思维,把“标准化”误解为“一刀切”,忽略了协议是服务于交互模式的。
面试题
Q1. 在“后厨岗位说明书”的比喻中,角色定义 $R=\langle S,T,P,D \rangle$ 中 $D$ 代表什么?
- A.角色所属的部门名称
- B.与其他角色的依赖关系← 正确答案
- C.角色擅长的技能集合
- D.角色被授予的权限范围
答案:B。$D$ 在四元组中代表依赖关系(Dependencies),描述该角色与其他角色的协作依赖,即“上游是谁、下游交给谁”。选项A的部门隶属属于组织概念,C是 $S$(技能集),D是 $P$(权限)。把 $D$ 记成“部门”是最常见的混淆。
Q2. 任务分解要做到“不重不漏”,子任务集合必须满足什么条件?
- A.任意两个子任务之间完全独立
- B.并集为全集且两两交集为空← 正确答案
- C.子任务数量必须是二的倍数
- D.每个子任务复杂度完全一致
答案:B。“不重不漏”对应集合论表达:并集等于总目标(不漏),任意交集为空(不重)。选项A的“独立”是理想状态,但并不保证覆盖完整;C、D是错误联想。选B。
Q3. 通信消息 $M=\langle S,R,\tau,P,t \rangle$ 中,$\tau$ 字段的作用是什么?
- A.记录消息发送的具体时间戳
- B.标记消息类型以便路由和处理← 正确答案
- C.存储消息携带的业务数据
- D.标识消息由哪个Agent发出
答案:B。$\tau$ 是消息类型(type),取值为请求、应答、广播、取消等,接收方据此决定如何响应与路由。时间戳是 $t$,数据载荷是 $P$,发送者是 $S$。做对这道题,你就能看懂任何Agent通信框架的报文头设计。
Q4. 下列哪些属于多Agent冲突解决机制的常用策略?
- A.按优先级值仲裁资源归属← 正确答案
- B.协商失败后执行回退方案← 正确答案
- C.增加Agent数量来缓解竞争
- D.忽略冲突等待系统自恢复
答案:AB。优先级仲裁($P=\alpha U + \beta/(d+\epsilon)$)和回退策略是正文讲过的两大手段。加Agent不会解决冲突反而加剧协调开销;忽略冲突会让系统陷入死锁,都不是工程上可接受的策略。
Q5. 契约网络协议中,协调器选择中标者的核心依据是什么?
- A.出价最低且兼顾当前负载← 正确答案
- B.响应速度最快的投标者
- C.历史上中标次数最多的
- D.技能种类覆盖最全的Agent
答案:A。出价公式 $C_i/\phi_i + \lambda L_i$ 融合了技能适配与负载惩罚,出价越低表示总成本越小,中标概率越大。响应快、中标多、技能全,都不能保证“当前这笔任务成本最低”,甚至会造成负载失衡。
Q6. 负载均衡目标 $\min \max_j L_j$ 的直观含义是什么?
- A.让每个任务的复杂度降到最小
- B.让所有Agent中负载最大的那个尽可能小← 正确答案
- C.让每个Agent只负责一个任务
- D.让全部Agent的负载总和最大
答案:B。$\min \max_j L_j$ 是一个“木桶”目标:压住最忙的那块板,把最大负载降下来,整体就均衡了。A改的是任务本身,C限制数量不保证均衡,D与目标完全相反。
Q7. 哪些信号应当触发动态角色调整?
- A.单个Agent任务积压超过设定阈值← 正确答案
- B.新任务突然到达且截止时间紧迫← 正确答案
- C.某个Agent长期空闲处于低负载← 正确答案
- D.系统启动后五分钟内无任务下发
答案:ABC。动态调整的核心是“负载偏离合理区间”或“出现新的紧急需求”。A过载、B新增紧急任务、C长期闲置都是典型触发信号;D无任务下发说明系统本身空闲,不需要调整。
Q8. 黑板模式协调机制的核心思想是什么?
- A.所有Agent共享一块公共信息区← 正确答案
- B.协调器向每个Agent单独发指令
- C.Agent之间两两直接建立通信
- D.每个Agent维护独立私有知识库
答案:A。黑板模式字如其名:一块公共黑板,谁有需求谁贴上去,谁有能力谁揭榜,Agent之间不直接对话。B是集中式协调,C是分布式协商,D是信息孤岛,都与黑板模式背离。
Q9. 下列哪些做法能提升多Agent角色分配的整体效率?
- A.按技能匹配度择优分配任务← 正确答案
- B.动态监控负载并实时重分配← 正确答案
- C.分配后持续评估并反馈调优← 正确答案
- D.角色和任务一经分配不可更改
答案:ABC。一次好的分配要“选对人、分好量、不断调”,对应能力匹配、负载均衡、评估反馈三个环节。D把体系锁死,晚市中途有人手受伤时必然崩溃,与动态调整原则相悖。
Q10. 任务分解粒度过细,主要会带来什么负面后果?
- A.子任务间协调通信开销大增← 正确答案
- B.每个子任务的执行速度变快
- C.总体任务复杂度显著下降
- D.每个Agent的自主性得到提升
答案:A。分解的收益是并行,成本是协调。粒度过细时,通信与同步开销随Agent数量按组合数爆炸(O(n²)),“切一棵葱分四个人接力”的协调成本远超单干。B、C是分解过细想得到的收益但被边际效应抹平;D恰恰相反——分解越细,单Agent自主性越弱。