想象你组织了一场产品头脑风暴会,请来了产品经理、工程师、设计师和运营专员。如果四个人同时开口,会议室瞬间变成菜市场,谁也听不清谁。这时候你需要一个主持人:他手里拿着话筒,决定“现在轮到谁发言”,记录每个人的观点,把上一个发言的内容传递给下一个人。这个主持人自己不高谈阔论,但他的存在让整场讨论有序、高效、有价值。 在多智能体系统(多个 AI Agent 协作完成复杂任务)里,也有这样一位“圆桌主持人”,它就是 GroupChatManager。当多个 AI 角色——比如产品经理 Agent、工程师 Agent、设计师 Agent——要坐在一起讨论一个问题时,GroupChatManager 负责安排发言顺序、把消息路由给正确的对象、保存完整的会议纪要(共享上下文)。它是一个纯粹的调度者,制定规则但从不抢戏。

岗位关联

理解 GroupChatManager 是迈入多智能体协作的门槛。掌握调度策略,你就能像导演一样编排 AI 团队,让它们不吵架、不遗漏、高效产出——这是当前 AutoGen、CrewAI 等框架最具实战价值的核心能力。

目录
  1. 可视化演示
  2. 调度器角色定位
  3. 轮询调度策略
  4. 随机调度策略
  5. 手动调度策略
  6. LLM自动裁决
  7. 上下文共享机制
  8. 消息路由原理
  9. 主流框架对比
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示四种调度模式:轮询、随机、手动指定、LLM自动裁决,以及共享对话历史与消息路由机制。

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

四种调度策略对比 轮询:按固定顺序依次发言 随机:随机选择下一个发言者 手动:外部指定发言者 LLM:AI自动裁决最佳发言者 选择策略决定对话效率与质量 不同场景适用不同调度模式

调度器角色定位

回到那场圆桌会议。没有主持人时,四个人各说各话,讨论变成灾难。多智能体系统面临同样的困境:几个 AI 各有专长,但谁先发言?谁来总结?如果让每个 Agent 自由抢话,轻则逻辑混乱,重则陷入死循环。于是,GroupChatManager 这位“圆桌主持人”应运而生。

GroupChatManager 是一个中心化协调组件。它本身不产出业务观点,而是像主持人一样负责三件事:维护一份讨论名单(Agent 列表)、决定下一个发言者、保存会议纪要(对话历史)。在 AutoGen 框架中,开发者在 GroupChat 里登记参与讨论的 Agents,再通过 GroupChatManager 统一调度,就能组织一场井然有序的多角色讨论。

从数学视角看,每个时间步的发言者选择可以被形式化为一个“映射函数”:调度器读取当前历史状态,输出一个发言人索引。

于是,四种调度模式就是四种不同的“点名方式”:轮询是顺着名单轮流叫,随机是抽签,手动是管理员直接点名,LLM 裁决则是主持人根据现场气氛灵活判断。理解了这位主持人的角色,下面就逐一拆解他的四种点名手法。

st=M(ht)s_t = M(h_t)
这个公式表达:调度器 M 看着截止目前的完整记录 h_t,决定第 t 轮该由谁(s_t)发言。
  1. s_t(发言人)这是调度器的输出,表示第 t 轮发言人的编号。比如 s_3 = 1 表示第三轮轮到 1 号 Agent 发言。
    sts_t
  2. h_t(历史状态)它是会议室里从开场到现在所有发言的集合,包含每条消息的作者与内容。
    hth_t
  3. M(调度器)它就是 GroupChatManager 本身。换不同的调度策略,相当于给这位主持人换不同的“点名规则”。
    MM

轮询调度策略

想象班级做自我介绍,老师拿着名单从上往下念:“张三、李四、王五、赵六……”念完一圈再从头开始。这种最朴素的“按名单循环”就叫轮询调度(Round-Robin)。GroupChatManager 的 round_robin 模式正是如此:把参与讨论的 Agent 排成固定顺序,一轮发言结束后,把话筒递给下一个人,所有人都发言一遍后再回到队首。

轮询最大的优点在于公平与零决策成本。它不需要读历史、不需要打分数,只需要记住“上次轮到谁”,下次顺延即可。这在人人平等的头脑风暴中非常合适——不会有人被冷落,也不会有人垄断话题。缺点也显而易见:它完全不看讨论内容,如果工程师 Agent 正需要补充技术细节,轮询却把话筒先交给了运营,流程就略显机械。

在 AutoGen 中,只需在构造 GroupChatManager 时传入 select_speaker_method="round_robin",调度器便会照单执行。设 Agent 数量为 N,第 t 轮发言者的计算公式如下:

轮询调度像圆桌上的顺时针传话筒,简单可靠。如果你的任务需要全员平等参与、且各 Agent 无明确优先级,轮询永远是可托底的默认选择。

st=A(t mod N)s_t = A_{(t \bmod N)}
这是“取模”运算:t 是发言轮次,N 是 Agent 总数,两者相除取余数,得到本轮该出场的人。
  1. t(轮次变量)从 0 开始计数的发言轮次。t=0 是第一轮,t=1 是第二轮,以此类推。
    tt
  2. N(总人数)参与讨论的 Agent 数量。比如 4 个 Agent,N 就等于 4。
    NN
  3. mod(取余运算)让轮次按人数循环回绕。例如 N=4 时,t=0,1,2,3,4,5 对应索引 0,1,2,3,0,1,完成“转圈”。
    t mod Nt \bmod N
  4. A(Agent列表)按编号排列的全体 Agent。A_1 就是 1 号 Agent,取模得到的索引指向具体某个人。
    A(t mod N)A_{(t \bmod N)}

随机调度策略

有些会议主持人喜欢“随机点人”:“下一个——就你吧,设计师!”这种随性而为的方式对应 GroupChatManager 的 random 模式。调度器不再按固定顺序循环,而是掷一次“骰子”,从所有 Agent 中随机选一个出来发言。

随机调度的价值在于多样性。在创意探索类任务中,固定的轮询容易让讨论陷入“每个人都说了一轮”的模板化节奏,随机打破预期,可能让冷门的观点意外冒头。例如一群 Agent 为新产品想 slogan 时,随机切换发言者可能激发不一样的组合思路。但它的代价是不可控:同一个 Agent 可能连续被抽中两次,也可能整场都没发言,不适合对发言顺序有硬性要求的场景。

底层实现并不神秘——调度器调用随机数生成器,在 0 到 N-1 之间产生一个均匀分布的整数:

随机点名适合“发散 > 收敛”的创意讨论,它为会议注入意外与惊喜。但要记住:骰子掷多了,总有运气差的家伙——如果你的任务必须保证每人发言至少一次,请换回轮询。

st=A⌊U×N⌋s_t = A_{\lfloor U \times N \rfloor}
这里 U 是区间 [0,1) 内的均匀随机数,乘以 N 后向下取整,恰好映射到某个 Agent 的编号。
  1. U(随机数)计算机生成的 0 到 1 之间的小数,每次取值完全不可预测,比如 0.37。
    UU
  2. N(总数)依然是 Agent 的数量,乘以它把随机数从“0 到 1”的区间扩展到“0 到 N”的范围。
    U×NU \times N
  3. ⌊⌋(向下取整)把小数变整数。U×N 可能是 1.48,向下取整得到 1,对应 1 号 Agent。
    ⌊U×N⌋\lfloor U \times N \rfloor

手动调度策略

有时候主持人不需要自己动脑,台下的“老板”会直接指示:“让工程师先讲技术方案!”这种由外部人工指定发言者的方式,就是 manual(手动)调度。GroupChatManager 允许你配置一个 admin_name(管理员),这位管理员可以在对话中直接点名:“请设计师发言”,调度器便不再自动决策,乖乖把话筒递给指定对象。

手动调度听起来“不智能”,却是工程实践中的救命稻草。当你调试一个多 Agent 系统时,你常常想控制变量:让某个 Agent 先试一句、观察其他 Agent 的反应。手动模式让你像导演一样逐幕排演,精确控制讨论节奏。它还解决了“AI 自主决策失控”的问题——在严格的合规场景(如合同审核)中,人类把关发言顺序远比让 LLM 自由发挥更安全。

手动调度没有复杂的算法,它的决策规则就是“管理员说了算”:

手动调度像导演手中的提词板:AI 团队再聪明,也需要人类在关键时刻“拨一下方向盘”。它常与自动模式配合使用——大部分时间交给系统,关键节点人为干预。

st=Aadmins_t = A_{\text{admin}}
这句表达:第 t 轮发言者不是由 AI 决定,而是由管理员显式指定的 Agent。
  1. admin(管理员标记)GroupChat 配置中的 admin_name,它代表一个拥有“点名权”的特殊身份。
    admin\text{admin}
  2. A_admin(被点名者)管理员在消息中 @ 或指定的那个 Agent,它就是本轮发言者。
    AadminA_{\text{admin}}
  3. 无自动环节整个决策不涉及取模、随机数或打分,完全是人工指令的直接映射。
    st=Aadmins_t = A_{\text{admin}}

LLM自动裁决

最高级的主持人是这样的:他不死板地按名单念,而是观察现场气氛、总结已有观点,再决定“嗯,这个问题需要工程师来深入讲讲”。GroupChatManager 的 auto 模式(LLM 自动裁决)模拟的正是这种“懂内容的主持人”。

在 auto 模式下,调度器不再使用固定规则,而是调用一个大语言模型作为“评审团主席”。它把候选的发言者列表连同当前对话历史一起交给 LLM,让模型判断谁是最合适的下一位发言者。LLM 会权衡讨论方向:如果现在正在讨论数据库选型,它更倾向点工程师;如果话题转向用户界面,它可能选设计师。这种动态判断远比轮询的机械循环聪明。

代价也很明显:每次选人都是一次 LLM 调用,带来额外延迟与 token 费用。如果对话历史已经很长,评审成本会水涨船高。数学上,LLM 裁决可以做如下抽象:先给每个候选项打分,再取分数最高者:

LLM 裁决让 GroupChatManager 从“拿着名单的传话员”升级为“深谙议题的智库型主持人”。虽然它最聪明,也最昂贵——在追求严谨可控的生产环境中,很多团队选择只在关键决策点启用 auto,日常讨论用轮询兜底。

sj=LLM(xj,ht),st=arg⁡max⁡jsjs_j = \text{LLM}(x_j, h_t), \qquad s_t = \arg\max_{j} s_j
每个候选 Agent j 的发言资格被 LLM 打出一个分数 s_j,最后选分数最高(argmax)的那个人成为本轮发言者。
  1. x_j(候选者)被列为候选的 Agent j,j 遍历 0 到 N-1 的每一个 Agent。
    xjx_j
  2. LLM(x_j, h_t)(打分函数)把候选者信息与历史 h_t 拼接成提示词,让 LLM 输出一个偏好分数,比如“该发言的适合度 0~10 分”。
    LLM(xj,ht)\text{LLM}(x_j, h_t)
  3. argmax(取最大者)找出所有分数中的最高分对应的 j,这个 j 就是发言人编号。
    arg⁡max⁡jsj\arg\max_{j} s_j

上下文共享机制

会议纪要为什么重要?因为好的讨论必须“基于前文”。如果工程师 Agent 在第三轮提到“用 Redis 做缓存,延迟降低到 2ms”,设计师 Agent 在第十轮设计页面时看不到这条上下文,就会做出违背性能约束的方案。GroupChatManager 维护的共享历史(chat_history / messages)就是那份完整的会议纪要。

这份纪要是一份全局可见的消息列表,每轮发言结束后,新消息会被追加进去。任何 Agent 需要发言时,调度器会把完整纪要作为上下文传给该 Agent——不是截取片段,而是从开场白到当前轮次的所有消息。这种设计的核心理念是“全员信息对称”:每个 Agent 都站在全局视角发言,避免各说各话、前后矛盾的现象。

随着讨论推进,这份纪要会像滚雪球一样越来越长。形式化地看,每轮结束后历史更新遵循简单的追加规则:

共享上下文是多智能体讨论质量的“压舱石”。它保证了每个 Agent 都拥有全局视野,但也带来了 token 长度增长问题——当纪要膨胀到超过模型上下文窗口,就需要考虑摘要或裁剪策略,这是工程师在构建长对话系统时最常遇到的瓶颈之一。

ht+1=ht⊕{mt}h_{t+1} = h_t \oplus \{m_t\}
新的一轮历史 h_{t+1} 等于旧历史 h_t 拼接上本轮新消息 m_t。
  1. h_t(当前历史)截至第 t 轮的全部发言记录,按时间顺序排列的消息数组。
    hth_t
  2. m_t(新消息)第 t 轮发言者刚刚产出的那条内容。
    mtm_t
  3. ⊕(拼接操作)把新消息追加到列表末尾,相当于会议记录员“写下新一段”。
    ⊕\oplus
  4. h_{t+1}(更新后历史)叠加完新消息的新纪要,供下一轮发言者查阅。
    ht+1h_{t+1}

消息路由原理

主持人的另一项核心工作,是把话语权精确地“递”给下一个发言者,同时确保所有人听到刚才的发言。在 GroupChat 中,这条“递话筒”的机制就是消息路由:Manager 广播每条消息给所有 Agent,同时根据调度策略决定下一位由谁续接。

路由过程可以拆成两个阶段:广播与选择。广播阶段,发言者的话被写入共享历史并分发给全体 Agent,相当于主持人把发言者的观点“传达到每个人耳边”;选择阶段,Manager 调用调度策略(轮询/随机/手动/auto)锁定下一位发言人,再把“话筒”递过去。两个阶段循环往复,就形成了多轮对话的完整链条。

从系统视角看,消息路由可以抽象成一个广播函数:

消息路由决定了“讨论的接力棒”如何流动。一个设计良好的路由机制,能保证讨论不断线、不遗漏、不偏题——这正是 GroupChatManager 作为“圆桌主持人”最核心的工程价值。

mt+1=broadcast(mt,A)m_{t+1} = \text{broadcast}(m_t, \mathcal{A})
这是说:第 t 轮消息 m_t 会被广播给全体 Agent 集合 A,从而引出下一轮消息 m_{t+1}。
  1. m_t(当前消息)刚结束的这一轮发言者说出的内容。
    mtm_t
  2. A(全体Agent)参与讨论的所有 Agent,如 {产品,工程,设计,运营}。
    A\mathcal{A}
  3. broadcast(广播)把消息分发给集合中的每一个成员,保证全员收到。
    broadcast(mt,A)\text{broadcast}(m_t, \mathcal{A})
  4. m_{t+1}(后继消息)某个 Agent 收到广播后,被选中作为下一位发言者,输出新一轮消息。
    mt+1m_{t+1}

主流框架对比

同样一张圆桌,不同会议室的“主持人风格”各不相同。在 AutoGen 中,GroupChatManager 是标准的“主持人”,你需要显式创建一个 GroupChat(会议桌)、一群 AssistantAgent(参会者),再指定调度策略。AutoGen 的强项是灵活的对话流控制:既能快速搭一个轮询讨论组,也能挂上 LLM 裁决做复杂协作。

CrewAI 则更像一个“流程化剧组”:它不强调自由讨论,而是用 Process 定义严格的执行流程——顺序执行(像流水线)或层级执行(像汇报关系),每个 Crew(团队)按剧本依次出场。CrewAI 的调度策略更偏“任务编排”而非“讨论点名”:它关心任务依赖,不关心谁先说。这对应着两种不同的协作哲学:AutoGen 是“会开会”,CrewAI 是“上流水线”。

选型时可以做成本估算。设每轮消息长度为 c(|h_t|),LLM 裁决会额外产生一次模型调用:

对比框架不是比谁更好,而是看哪种“主持风格”贴合任务:需要多人自由 brainstorming 选 AutoGen 的 GroupChat;需要按职责流水线执行选 CrewAI 的 Process。主持人风格没有优劣,合不合适才见真章。

---

Tcost=∑t=1Tc(∣ht∣)T_{\text{cost}} = \sum_{t=1}^{T} c(|h_t|)
总成本是每一轮传递全部历史给 LLM 的代价之和——历史越长,轮次越多,开销越大。
  1. c(|h_t|)(单轮成本)把长度为 |h_t| 的历史传给模型时消耗的 token 数,它随历史线性增长。
    c(∣ht∣)c(|h_t|)
  2. Σ(求和)从第 1 轮到第 T 轮累加每一轮的成本。
    ∑t=1T\sum_{t=1}^{T}
  3. T(总轮数)整场讨论一共进行了多少轮发言。
    TT

AI 应用场景

场景一:智能客服多Agent会诊

阶段:多智能体协作编排

解决的问题:传统客服机器人只能单线程问答,遇到复杂客诉(退款 + 技术故障 + 安抚情绪)时无从下手。用 GroupChatManager 编排客服 Agent、技术 Agent、退款 Agent 三方会诊,轮询调度保证三者都发言,最终由 LLM 裁决总结方案。

具体案例:某电商平台接入 AutoGen 后,用户提交“订单一直不发货但钱已扣”的投诉,三个 Agent 在 GroupChat 里依次分析:客服 Agent 话术安抚、技术 Agent 查物流接口状态、退款 Agent 核对金额,最后由 Manager 汇总成一条完整答复,处理时长从人工 20 分钟降到 3 秒。

场景二:创意团队的随机头脑风暴

阶段:发散探索与生成

解决的问题:固定顺序的讨论容易模板化、缺乏惊喜。用随机调度策略让文案 Agent、视觉 Agent、市场 Agent 交替“抢话”,产出更具多样性的创意方案池。

具体案例:某广告公司让 4 个创意 Agent 为一个饮料新品想 slogan,开启 random 模式连续跑 50 轮,收集到“冰爽到骨子里”等 30 多个候选方案。人工评审发现,随机模式下方案的新颖度评分比轮询模式高出 18%。

场景三:代码评审的人工接管

阶段:质量保障与人工审核

解决的问题:AI 代码评审 Agent 偶尔会“跑偏”,审到一半偏离主题。用手动调度在关键时刻强行指定“安全专家 Agent”发言,保证高危问题不被遗漏。

具体案例:某金融科技团队给 AutoGen 评审组配置了 3 个 Agent(逻辑评审、安全评审、性能评审),默认用轮询提升覆盖率。但在每次评审结束时,通过 admin_name 手动点名安全评审 Agent 追加一段“漏洞核查”,零成本堵住了关键风险。

Python 演示

python56 行
"""简化版 GroupChatManager:演示四种调度策略"""import random  class Agent:    def __init__(self, name, role):        self.name = name        self.role = role     def reply(self, msg):        return f"[{self.role}] 针对「{msg}」给出方案"  class GroupChatManager:    def __init__(self, agents, mode="round_robin"):        self.agents = agents        self.mode = mode        self.history = []        self._seq = 0     def select_speaker(self):        n = len(self.agents)        if self.mode == "round_robin":            idx = self._seq % n        elif self.mode == "random":            idx = random.randint(0, n - 1)        elif self.mode == "manual":            print("指定发言者编号: ", end="")            idx = int(input())        elif self.mode == "auto":            scores = [(len(a.role) + i) % 3 for i, a in enumerate(self.agents)]            idx = scores.index(max(scores))        else:            raise ValueError("unknown mode")        self._seq += 1        return idx     def run(self, rounds):        for _ in range(rounds):            idx = self.select_speaker()            speaker = self.agents[idx]            last = self.history[-1] if self.history else "项目启动吧"            reply = speaker.reply(last)            self.history.append(f"{speaker.name}: {reply}")        return self.history  if __name__ == "__main__":    team = [        Agent("Alice", "产品经理"),        Agent("Bob", "工程师"),        Agent("Carol", "设计师"),    ]    gm = GroupChatManager(team, mode="round_robin")    for line in gm.run(6):        print(line)
目的:用不到 50 行实现一个带四种调度模式的最小版 GroupChatManager,模拟 3 个 Agent 的团队讨论。
  1. class GroupChatManager:对应 AutoGen 中管理发言顺序与历史的调度器核心类。
  2. self.history = []这就是“共享纪要”,每轮发言都追加进来,供全体 Agent 查看。
  3. self._seq = 0计数器记录已进行的轮次,用于轮询取模,加下划线后缀避免与同名方法冲突。
  4. idx = self._seq % n轮询调度的核心:用“当前轮次除以人数取余”决定轮到谁。
  5. idx = random.randint(0, n - 1)随机调度:直接用随机数挑一个 Agent,完全不可预测。
  6. scores.index(max(scores))简化版 LLM 裁决:给每个 Agent 打一个启发式分数,取最高分。
  7. last = self.history[-1] if self.history else "项目启动吧"从共享历史取最近一条消息作为本轮讨论的输入。

常见误区

误区我一直以为 GroupChatManager 会像普通 Agent 一样参与讨论、输出观点,它是不是团队里最聪明的那个角色?

正解恰恰相反,GroupChatManager 是“主持人”而非“嘉宾”。它只负责点名、传话、记纪要,不发表自己的业务见解。真正输出内容的是被它调度的各个 Agent。它像会议主持人,再能控场也代替不了专家的发言。

为何常见:名字里的“Manager“容易让人联想到”管理者=有能力的人“,产生了”它很聪明”的错觉。

误区既然 auto 模式能理解上下文动态选人,那我所有任务都用 auto,效果一定最好。

正解auto 每次选人都要调一次 LLM,延迟高、token 贵,且有一定随机性。简单的固定流程(如轮流汇报状态)用轮询反而更稳定更快。工具没有绝对优劣,只有合不合适。

为何常见:人们天然偏爱“智能方案”,却忽略了它在成本与稳定性上的代价。

误区为了保证上下文完整,所有消息都得永远保留,一点都不能裁剪,否则 Agent 会失忆。

正解完整历史确实重要,但随着消息增多,上下文窗口会被撑爆、推理变慢、成本飙升。工程上常用“摘要历史”或“滑动窗口”策略压缩长对话,让纪要“重点完整”而非“全文完整”。

为何常见:初学者理解了完整上下文的必要性后,容易走向“一点不能删”的极端,忽略了 token 上限的物理约束。

误区都 2025 年了,AI 都能自主决策了,还要人手动指定发言者?这不是开倒车吗?

正解手动调度在调试、合规、安全等场景价值极高。开发新 Agent 流程时,手动模式让工程师逐步控制讨论走向、快速定位逻辑 bug;在金融审计场景,人工点名校验 Agent 是硬性合规要求。

为何常见:只看重“自动化”的炫酷,忽略了工程落地阶段“可控性”才是第一优先级。

面试题

Q1. GroupChatManager 在多智能体系统中的核心职责是什么?

单选题 · easy

  • A.负责调度发言顺序与消息路由← 正确答案
  • B.直接参与对话并输出业务观点
  • C.训练所有底层的语言模型
  • D.存储用户的个人敏感数据

答案:A。GroupChatManager 就像圆桌主持人,只安排发言顺序、传话筒、记纪要,不产出观点。B 是参会 Agent 的职责,C 是训练阶段的事,D 与调度器毫无关系。

Q2. 轮询调度(round_robin)的核心特点是?

单选题 · easy

  • A.按固定名单循环公平发言← 正确答案
  • B.每次随机抽取一名发言者
  • C.由管理员临时点名指定
  • D.靠 LLM 打分选出最优者

答案:A。轮询就是“名单念完一圈再来一圈”的取模循环,公平且零决策成本。B 是随机调度,C 是手动调度,D 是 auto 裁决。

Q3. 随机调度策略最适合下列哪类任务?

单选题 · mid

  • A.需要发散创意的头脑风暴← 正确答案
  • B.严格流水线式的合规审批
  • C.必须控制变量的单元测试
  • D.要求全员发言的轮流汇报

答案:A。随机调度的价值在于打破预期、增加多样性,正契合头脑风暴的发散需求。B 需要确定性,C 需要可控性,D 需要公平性,都应选轮询或手动。

Q4. 关于手动调度(manual)的描述,正确的有?

多选题 · mid

  • A.通过 admin_name 指定管理员← 正确答案
  • B.适合调试与人工干预场景← 正确答案
  • C.完全禁止与自动模式混用
  • D.在合规审核中保障人类把关← 正确答案

答案:ABD。手动调度允许管理员直接点名,适合调试、合规等场景,也常与自动模式互补使用(先自动后人工接管)。C 说“完全禁止混用”是错误的,实际工程中混用很常见。

Q5. LLM 自动裁决(auto)选择发言者的依据是什么?

单选题 · mid

  • A.结合历史给候选 Agent 打分取最高← 正确答案
  • B.按 Agent 注册顺序轮流
  • C.掷骰子随机抽取一人
  • D.管理员在群里 @ 谁就是谁

答案:A。auto 模式把候选者与完整历史交给 LLM,模型对各候选者的发言适合度打分,最终取 argmax。B 是轮询,C 是随机,D 是手动。

Q6. 共享历史 h 每轮更新的数学表达式是?

单选题 · hard

  • A.h_{t+1} = h_t ⊕ {m_t}← 正确答案
  • B.h_{t+1} = m_t ⊕ h_t
  • C.h_{t+1} = h_t ⊖ {m_t}
  • D.h_{t+1} = {m_t}

答案:A。新历史等于旧历史追加新消息 m_t,且旧消息在前、新消息在后,顺序很重要。C 表示删除,D 表示丢弃历史只留新消息,都不符合“纪要越记越全”的语义。

Q7. 下列哪项是消息路由中 GroupChatManager 扮演的角色?

单选题 · mid

  • A.传话员:广播消息给全员← 正确答案
  • B.仲裁员:裁决消息内容对错
  • C.审核员:审查发言的政治倾向
  • D.生成员:改写发言人的结论

答案:A。路由的核心就是把消息发给所有 Agent(广播),再选择下一位发言者。Manager 不改写、不审核内容,只负责“传递与点名”。

Q8. 在长对话场景下,auto 裁决会带来哪些问题?

多选题 · hard

  • A.每轮选人都增加一次 LLM 调用← 正确答案
  • B.历史过长可能导致上下文截断← 正确答案
  • C.决策质量随 token 膨胀而下降← 正确答案
  • D.完全不受上下文长度影响

答案:ABC。auto 每次选人都要调 LLM,历史越长,token 开销越大,还可能超长截断,导致决策质量下降。D 说“完全不受影响”显然违背常识。

Q9. 关于 AutoGen 与 CrewAI 的多智能体协作,下列说法正确的是?

单选题 · easy

  • A.AutoGen 用 GroupChat 实现自由讨论式协作← 正确答案
  • B.CrewAI 也通过 GroupChatManager 调度讨论
  • C.两者完全等价,没有实现差异
  • D.两者都不支持多 Agent 协作

答案:A。AutoGen 的 GroupChat 是“开会式”讨论调度;CrewAI 是“流水线式”任务编排。B 错在 CrewAI 用 Process 而非 GroupChatManager,C、D 都明显错误。

Q10. 设计一个多 Agent 客服团队时,合理的调度选型思路是?

多选题 · extreme

  • A.简单咨询用轮询保证全员参与← 正确答案
  • B.复杂客诉用 auto 动态选最相关的 Agent← 正确答案
  • C.敏感操作辅以手动调度人工把关← 正确答案
  • D.全程只用随机调度碰运气

答案:ABC。按场景混合调度是工程常态:轮询打底、auto 救急、手动兜底。D 全程随机会带来不可控的糟糕体验,客服场景必须兼顾公平、智能与合规。