顺序、并行、辩论、会商:OpenMAIC 四种交互模式背后的编排逻辑
顺序、并行、辩论、会商OpenMAIC 四种交互模式背后的编排逻辑【免费下载链接】OpenMAICOpen Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click项目地址: https://gitcode.com/GitHub_Trending/op/OpenMAIC一句话生成一门课只是 OpenMAIC 的前半场后半场是这门课如何活起来——多个角色化 AI 智能体在同一间教室里以何种次序、何种节奏、何种协作方式展开对话。社区对 OpenMAIC 的拆解文章里经常把它的课堂交互归纳为四种模式顺序、并行、辩论、会商对应四类截然不同的教学节奏。但如果你翻开源码会发现这四种模式并不是四套独立引擎而是同一台编排内核LangGraph 导演图 共享记忆在不同教学意图下的四种姿态。本文以仓库源码为准拆开这台内核导演节点如何做消息路由、白板账本如何充当共享记忆、模式切换的开关藏在哪一行代码里以及为什么选错模式会让一堂 AI 课从生动变成失控。四种交互模式四种课堂节奏先给四种模式一个清晰的课堂坐标顺序Sequential一次只让一个智能体发言轮次依次推进。对应传统课堂的讲—练—答节奏也是 OpenMAIC 里自由问答的默认形态——AI 老师通过幻灯片、图表或白板讲解学生随时追问。并行Parallel多个智能体同时产出内容或观点互不阻塞。OpenMAIC 中并行体现在两个层面一是生成侧的并行场景内容生产二是同一白板上多个智能体各自落笔、最后汇合成一张协作成果。辩论Debate不同立场的智能体围绕一个话题轮番发言、互相反驳。对应 README 中多个不同人设的智能体围绕话题展开讨论的圆桌辩论。会商Collaborative智能体围绕同一任务协作推进、互相补充最终形成一致产出。对应项目制学习PBL——选择一个角色与 AI 智能体协作完成结构化项目包含里程碑和交付物。值得注意的是社区文章还流传着另一组英文命名——Referral、Monopolistic、Equal、Collaborative——它们描述的是谁掌握话语权的交互语义与上面四种节奏是同一枚硬币的两面。而仓库里真正支撑这些形态的是下面这台统一编排器。编排内核导演图与单轮契约打开 lib/orchestration/director-graph.ts文件头注释直接交代了全部拓扑START → director ──(end)──→ END │ └─(next)→ agent_generate ──→ END这是一个基于 LangGraph StateGraph 构建的状态机。关键在于注释里的单轮契约Each request runs at most one director→agent cycle. The client serializes multiple requests to drive multi-agent discussions. There is no maxTurns cap — the topology is the bound.每一轮 HTTP 请求最多执行一次导演决策 → 单个智能体发言的循环多智能体的长篇讨论由客户端把多次请求串行化拼出来。这个设计极其克制服务端图本身不循环天然杜绝了死循环烧 token的经典事故轮次上限不由maxTurns参数决定而由拓扑结构本身决定。讨论的延续靠客户端一次次携带directorStateturnCount、agentResponses、whiteboardLedger回传形成无状态服务端 有状态客户端的组合。导演节点directorNode内部还有一套按智能体数量分叉的策略单智能体纯代码逻辑零 LLM 调用。第 0 轮直接派发唯一智能体后续轮次cue_user把话筒交还学生多智能体第 0 轮若携带triggerAgentId讨论发起者走代码快路径直接派发其余轮次才调用 LLM 让导演决定下一位发言人、USER还是END。单智能体场景连导演的 LLM 调用都省了这解释了为什么 OpenMAIC 的问答课堂延迟低、成本可控——编排器的开销是随智能体数量阶梯式增长的。切换模式的开关藏在导演提示词里模式不是靠枚举参数切换的而是靠discussionContext注入导演提示词。在 director-prompt.ts 中只要请求携带discussionTopic/discussionPrompt/triggerAgentId见buildInitialState对request.config.discussionTopic的解析导演提示词就会多出一段# Discussion ModeTopic: ... Prompt: ... Initiator: ... This is a student-initiated discussion, not a QA session.随之而来的还有第一条规则的分叉讨论模式讨论发起者先开口老师回应引导然后其他学生补充观点 问答模式老师teacher 角色优先级最高通常先回答学生的问题。这就是辩论/会商与顺序问答之间的真正开关同样是多智能体轮番发言导演决策的约束完全不同——讨论模式下发起者拥有首轮话语权老师被定位为引导者而非解答者问答模式下老师是天然的优先发言人。而triggerAgentId还承担了一个性能职责首轮派发走代码快路径绕开一次 LLM 决策调用。课堂侧的触发则来自场景动作 DSL。在 skills/agent-runtime/stage-dsl/references/actions.md 中discussion动作的字段只有三个topic必填、prompt可选补充指令、agentId可选指定发言人。生成侧规范则在 packages/openmaic/generation/templates/slide-actions/system.md 里对讨论密度做了硬约束——不要给每一页都加讨论一门课最多 1-2 次且优先放在开放式、引发思考的页面。这等于在生成阶段就把辩论模式的滥用挡在了门外。共享记忆从消息路由到白板账本会商与辩论模式最考验的不是谁发言而是智能体们是否记得彼此说过什么、画过什么。OpenMAIC 的共享记忆由三块拼成消息历史convertMessagesToOpenAI(state.messages, agentId)做智能体感知的角色映射——其他智能体的话被映射为user角色让当前发言者把它们当作对方的观点来回应director-graph.ts对话摘要summarizeConversation()把冗长历史压成紧凑摘要喂给导演避免上下文爆炸拖垮决策质量白板账本whiteboardLedger每个智能体的wb_*动作绘图、公式、图表、代码、删除、清空都被追加进账本导演每次决策前都能重放账本算出白板当前元素数量与贡献者名单director-prompt.ts 的summarizeWhiteboardForDirector。白板账本还有一句非常工程化的提示——当元素超过 5 个时⚠ The whiteboard is getting crowded. Consider routing to an agent that will organize or clear it rather than adding more.导演会主动把一个负责整理/清空白板的智能体排进下一轮。这就是会商模式里协作不演变成涂鸦的隐形调度规则共享记忆不只是记录还驱动着编排决策。防御性编排把失控写进代码多智能体课堂最常见的三宗罪——立场漂移、死循环、上下文爆炸——在 lib/chat/pi/tools/call-agent.ts 的call_agent工具里都有对应的硬防护轮次硬顶工具描述明写Hard limit: at most N classroom agent turns…Once the limit is reached, finish with cue_user or close_session超出即拒绝调用并强制收尾连续空转防护MAX_CONSECUTIVE_EMPTY_TURNS 2——模型连续两轮吐出空内容比如推理吃光了输出预算就判定为故障终止智能体调用防止空响应绕过计数导致的无限重试非法发言人拦截agentId不在课堂名册中直接拒绝返回可用名单杜绝导演点一个不存在的学生动作白名单getEffectiveActions(agentConfig.allowedActions, sceneType)按场景类型过滤动作——比如白板未打开时spotlight/laser 等幻灯片动作会被剥离属于即使导演判断失误智能体也越不了权的纵深防御。与之配套的是生成侧的并行控制配置文档 packages/docs/content/docs/configuration.mdx 中的PARALLEL_SCENE_CONCURRENCY——并行场景内容生成0 或未设置则串行。这为并行模式补上了资源维度的答案并行不是无限并行而是由一个显式并发数约束的可控并行。选错模式的课堂会怎样最后回到教学视角。模式本身没有优劣只有是否匹配教学目标目标是从零讲清一个概念 →顺序问答。老师独白 学生追问信息密度最高。若此时强行开圆桌辩论多智能体各执一词会稀释主线学生抓不住重点——生成侧最多 1-2 次讨论的约束正是为此目标是激发多角度思考 →辩论。需要发起者triggerAgentId先立论、老师引导、多方补充。若选成顺序模式学生会只听到一个立场思考被单向灌输目标是协作产出推导、方案、项目→会商。白板账本保证谁画了什么全程可溯导演按拥挤度调度整理者。若错用并行模式多个智能体同时落笔而不互相响应白板会变成各说各话的拼贴目标是快速覆盖多个独立知识点 →并行。靠PARALLEL_SCENE_CONCURRENCY控制的生成并发与白板上的多路协作。社区复盘里反复出现的立场漂移、上下文爆炸、讨论变成各说各话追到源码层面几乎都能对应到上述某个防护机制的缺失或误配没有账本就没有可追溯的会商没有单轮契约就没有可控的轮次没有角色映射就没有真正的观点交锋。结语OpenMAIC 的四种交互模式本质是同一台导演图状态机在不同提示词约束、不同共享记忆组合下的四种运行姿态。教学意图决定模式模式决定路由规则而工程防护决定这套系统能不能在真实课堂上长时间稳定运行。对开发者而言读懂 director-graph.ts 的单轮契约与 director-prompt.ts 的模式分叉比记住任何四种模式的营销式命名都更有价值——因为前者是你能改的代码后者只是别人替你总结的标签。【免费下载链接】OpenMAICOpen Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click项目地址: https://gitcode.com/GitHub_Trending/op/OpenMAIC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考