多 Agent 协作与动态切换:4 种协作模式 + 切换机制 + 选型决策
大家好我是程序员小策。多 Agent 该怎么协作Supervisor、Swarm、Handoff 这几个词到底什么区别什么场景该用哪种动态切换又该怎么设计一、多 Agent 协作的核心问题责任分配 状态流转[问题定义] 表面上看多 Agent只是把单 Agent 拆成几个。但实际跑起来你会发现两个隐藏难题第一是责任分配。谁来当管事的Supervisor 模式让一个 Agent 当经理统一调度其他人都是员工Swarm 模式让所有 Agent 平级谁都能主动转给别人Handoff 模式更激进——当前 Agent 直接交班给下一个 Agent自己就退场。LangGraph 官方文档把这 3 种叫multi-agent patterns每种对应不同的责任拓扑。第二是状态流转。Agent 切换时Context 怎么交接如果交接不干净下一个 Agent 不知道用户上一轮说了什么整个协作就崩。这是为什么上两篇聊 Context 工程的原因——多 Agent 协作的瓶颈 70% 在状态管理。langchain-ai/langgraph 的 0.2 版本专门引入了langgraph-swarm和langgraph-supervisor两个官方库把这 3 种模式封装成开箱即用的 API。AutoGen 走的是另一条路——基于 GroupChat Speaker Selection 动态选人。本质都是协作 切换。动态切换的真正难点不是能不能切是什么时候切、切完状态怎么办、切错了怎么回退。下面 4 段代码逐个拆解。二、4 大核心概念 引用块定义餐厅分工主类比多 Agent 协作模式将任务拆给多个 LLM Agent 协同完成的责任拓扑由 4 大主流模式组成。Supervisor 模式中心化调度一个经理 Agent根据当前状态决定下一步交给谁Swarm 模式去中心化自组织每个 Agent 都能主动转交给最合适的同事Handoff 模式当前 Agent 直接交班给下一个 Agent自己退场OpenAI Swarm 主推Subgraph 子图把专家 Agent封装成可复用的子图主图按需调用类比时间。我把这 4 种映射成餐厅分工Supervisor 餐厅经理客人坐下后经理统一安排——点单交给服务员、复杂需求交给主厨、投诉升级到大堂经理。所有任务经过经理这个单一调度点Handoff 换岗位服务员接到包厢预定请求自己处理不了直接把工牌交给包厢专员。原服务员退场Swarm 自助餐厅没有统一经理每个厨师站都是独立的客人走到哪个窗口就由哪个窗口服务Agent 主动喊下一个Subgraph 中央厨房订单板每道菜由专门厨师做专家 Agent前厅只跟订单板交互主图。主图不知道厨师具体怎么干只看输入输出选型金句协作模式决定责任拓扑动态切换决定时序与状态。两者是独立的——你可以用 Supervisor Handoff也可以用 Swarm Subgraph。三、代码实现4 种模式逐个上手下面 4 段代码全部基于 langgraph 可直接pip install langgraph langgraph-supervisor langgraph-swarm跑起来。3.1 Supervisor 模式最主流# Supervisor中心化调度fromtypingimportLiteralfromlangchain_openaiimportChatOpenAIfromlanggraph.graphimportStateGraph,MessagesState,START,ENDfromlanggraph.typesimportCommand# 1) 定义专家 Agentdefresearch_agent(state:MessagesState)-Command[Literal[supervisor]]:llmChatOpenAI(modelgpt-4o-mini)resultllm.invoke(state[messages][(system,你是调研专家专注查证事实)])returnCommand(gotosupervisor,update{messages:[result]})defwriter_agent(state:MessagesState)-Command[Literal[supervisor]]:llmChatOpenAI(modelgpt-4o-mini)resultllm.invoke(state[messages][(system,你是写作专家专注输出文章)])returnCommand(gotosupervisor,update{messages:[result]})# 2) Supervisor 节点决定下一个 Agentdefsupervisor_node(state:MessagesState)-Command[Literal[research_agent,writer_agent,END]]:# 简单版LLM 决策生产建议 rule-firstllmChatOpenAI(modelgpt-4o-mini).with_structured_output(NextAgent)decisionllm.invoke(state[messages][(system,你是调度经理。下一个该给 research_agent 还是 writer_agent如果都做完了回 FINISH)])gotoFINISHifdecision.nextFINISHelsedecision.nextreturnCommand(gotogotoifgotoin[research_agent,writer_agent]elseEND)# 3) 构图graphStateGraph(MessagesState)graph.add_node(supervisor,supervisor_node)graph.add_node(research_agent,research_agent)graph.add_node(writer_agent,writer_agent)graph.add_edge(START,supervisor)appgraph.compile()适用任务阶段清晰、流程固定调研 → 写稿 → 校对。优势决策可观测调度全在一个节点。坑Supervisor 是单点瓶颈LLM 决策成本高。3.2 Handoff 模式OpenAI Swarm 主推# Handoff当前 Agent 直接交班fromlanggraph.prebuiltimportcreate_react_agentfromlanggraph_swarmimportcreate_handoff_tool,create_swarm# 1) 创建能交班的 Agentdefbook_hotel(query:str)-str:returnf已为您预订酒店:{query}defbook_flight(query:str)-str:returnf已为您预订航班:{query}hotel_agentcreate_react_agent(openai:gpt-4o-mini,[book_hotel,create_handoff_tool(agent_nameflight_agent)],system_prompt你是酒店预订专员。处理酒店需求机票转 flight_agent。,)flight_agentcreate_react_agent(openai:gpt-4o-mini,[book_flight,create_handoff_tool(agent_namehotel_agent)],system_prompt你是机票预订专员。处理机票需求酒店转 hotel_agent。,)# 2) 组合成 Swarmworkflowcreate_swarm([hotel_agent,flight_agent],default_active_agenthotel_agent)appworkflow.compile()# 3) 跑用户说我先订机票订完再订酒店resultapp.invoke({messages:[(user,帮我订明天北京到上海的机票然后订外滩附近的酒店)]})# → hotel_agent 接需求 → 识别是机票 → handoff 给 flight_agent → 处理完再 handoff 回 hotel_agent适用用户主导的对话流Agent 边界明确。优势每个 Agent 自治扩展简单。坑循环 handoffAgent A → B → A → B…需要 cycle detection。3.3 Swarm 模式去中心化# Swarm每个 Agent 都能主动转交fromlanggraph_swarmimportcreate_swarm# 比 Handoff 更激进没有 default_active_agent谁都能喊下一个sales_agentcreate_react_agent(openai:gpt-4o-mini,[create_handoff_tool(support_agent)],system_prompt你是销售处理报价和合同。技术支持问题转 support_agent。,)support_agentcreate_react_agent(openai:gpt-4o-mini,[create_handoff_tool(sales_agent)],system_prompt你是技术支持。Bug 排查和故障处理。商务问题转 sales_agent。,)swarmcreate_swarm([sales_agent,support_agent])appswarm.compile()# 注意Swarm 模式不指定 default_active_agent——首个接收用户输入的 Agent 就是激活态适用Agent 角色高度自治、用户需求边界模糊。优势无单点瓶颈。坑状态可观测性差调试难。3.4 Subgraph 子图专家封装# Subgraph把专家 Agent 封装成可复用的子图fromlanggraph.graphimportStateGraph,MessagesState# 1) 子图翻译专家含中英日 3 个内部节点deftranslator_subgraph(state:MessagesState)-MessagesState:sgStateGraph(MessagesState)sg.add_node(router,lambdas:s)# 路由到中/英/日sg.add_node(to_en,lambdas:s)# 调用 LLM 翻译sg.add_node(to_zh,lambdas:s)sg.add_node(to_ja,lambdas:s)sg.set_entry_point(router)# ... 省略内部 LLM 调用细节returnsg.compile().invoke(state)# 2) 主图把翻译专家当黑盒调用mainStateGraph(MessagesState)main.add_node(translate_expert,translator_subgraph)# 子图当节点main.add_node(writer,lambdas:s)main.add_edge(START,translate_expert)main.add_edge(translate_expert,writer)appmain.compile()# 跑主图只看到 translate_expert 的输入输出不关心内部 3 个节点适用专家 Agent 内部复杂、但对外接口简单。优势可复用、易测试、主图清晰。坑子图与主图的 state schema 必须兼容。四、4 个常见坑协作 / 切换的真实代价坑 1Supervisor 决策循环现象supervisor 节点把任务交给 research_agentresearch_agent 完成后再回 supervisorsupervisor 又交给 research_agent根因没有上一轮是哪个 Agent的记忆LLM 不知道已经做完了解法在 state 加last_agent字段supervisor 决策时排除上一个 Agent坑 2Handoff 状态丢失现象flight_agent 接到酒店需求后状态空白不知道用户上一轮说了什么忌口根因handoff 只切了激活 Agent没有传完整 MessagesState解法handoff tool 必须把messages一起传create_handoff_tool内部已处理但自己写要小心坑 3Swarm 循环 handoffagent A → B → A → B 死循环现象sales_agent 转 support_agentsupport_agent 又转 sales_agent根因两个 Agent 都把对方当成非自己职责的 fallback解法(1) 限制最大 handoff 次数max_handoffs3(2) LLM prompt 明确连续 2 次转回原 Agent 应该直接处理坑 4Subgraph 状态 schema 不兼容现象主图state[messages]是list[BaseMessage]子图期望list[dict]运行时KeyError根因StateGraph 的 state schema 是定义时检查子图编译时没引入主图的 schema解法主图和子图用同一份MessagesState继承而非重写或者用TypedDictAnnotated显式对齐五、生产考量4 个维度可观测性Supervisor 模式有天然优势——一个节点就能看到所有决策。Swarm 模式必须给每个 Agent 加LangSmithtrace tag否则排查时根本不知道为什么转过去了状态隔离每个 Agent 应该有独立thread_id用MemorySaver或PostgresSaver避免 A 用户的 context 串到 B 用户失败回退Supervisor 节点必须 catch LLM 异常回退到上一个成功的 Agent而不是直接 END。Swarm 模式需要给 handoff tool 加超时默认无超时成本控制Supervisor 模式的 LLM 调用数 节点数 × 2Agent 一次 Supervisor 一次3 个 Agent 一轮就是 6 次。Swarm 模式更省没 Supervisor。预算是必要决策项六、4 大协作模式 决策总表模式拓扑LLM 调用成本可观测性适用场景不适用Supervisor中心化高每步 2 次⭐⭐⭐⭐⭐流程固定的任务流高频切换场景Handoff半中心中按需 1 次⭐⭐⭐用户主导的多步对话需要全局视角的任务Swarm去中心中按需 1 次⭐⭐Agent 高度自治强流程管控Subgraph嵌套按子图内部⭐⭐⭐⭐专家 Agent 复用子任务差异大决策树简化版你的任务能拆成清晰的阶段吗 ├─ 能调研→写稿→校对 → Supervisor ├─ 不能用户主导 → Handoff └─ 不能 Agent 高度自治 → Swarm 你有多组可复用的专家 Agent 吗 ├─ 有 → Subgraph 封装 └─ 没有 → 直接平铺主流框架选择基于 2026-07 真实 star 数据langchain-ai/langgraph [主流] — Python/TS 双版本4 种模式全支持microsoft/autogen [主流] — GroupChat Speaker Selection动态切换更底层openai/swarm [主流] — Handoff 模式教学库适合入门langchain-ai/langchain [主流] — Supervisor/Handoff 高级封装七、面试官还会追问什么追问 1Supervisor 和 Swarm 本质区别→ 决策权归属。Supervisor 决策权在中心节点经理说了算Swarm 决策权在每个 Agent员工自治。Supervior 可观测好但单点瓶颈Swarm 反之。90% 生产项目选 Supervisor——因为你能 debug 经理节点。追问 2动态切换的 4 种触发条件→ (1) 任务阶段变化Supervisor 决策完换 Agent(2) Agent 主动 handoff自认不行(3) 工具调用失败fallback 到别的 Agent(4) 用户显式切换“换个人工服务”。前两个最常见。追问 3多 Agent 怎么共享 context 不爆→三层策略(1) 每个 Agent 独立 threadMemorySaver/PostgresSaver隔离(2) Supervisor 维护全局摘要 sub-state每次切换前 LLM 总结(3) 长期记忆走langgraph.store跨 Agent 共享用户画像。这正是前两篇 Context 工程的延伸。追问 4Subgraph 和普通节点的区别→ Subgraph 编译后是一个有内部状态机的节点普通节点是单步函数。区别在于Subgraph 可以独立 invoke、独立测试、独立持久化 thread_id。判断标准如果一个专家需要 3 个内部步骤就该抽成 Subgraph。八、总结多 Agent 设计 拓扑 切换 状态多 Agent 协作的 3 个独立决策点拓扑选型Supervisor / Handoff / Swarm / Subgraph— 看责任怎么分配切换触发任务阶段 / Agent 主动 / 工具失败 / 用户切换— 看时序怎么流转状态管理独立 thread / 共享摘要 / 长期记忆— 看 context 怎么传记住一句金句“模式选错是设计问题切换错是 bug状态错是灾难”。优先把 Supervisor 跑通Handoff 做扩展Swarm 慎用Subgraph 按需封装。读完这篇你应该能说出 4 种协作模式的代码骨架不只是背概念画出你项目当前的 Agent 拓扑是 Supervisor 还是 Swarm设计 3 类切换触发点任务 / Agent / 工具用 4 维度决策框架给新项目选型如果这篇让你对多 Agent 协作少一些纠结欢迎点赞 在看。最后留个开放问题你的项目里如果 Supervisor 节点被替换成 LLM-as-judge 来决策任务是否完成会不会更稳还是反而更慢

相关新闻

易飞ERP和金蝶K3在处理多层委外生产时,哪个更稳定好用?

易飞ERP和金蝶K3在处理多层委外生产时,哪个更稳定好用?

在当今竞争激烈的制造业环境中,多层委外生产已成为众多中小型制造企业提升产能、降低成本、聚焦核心竞争力的普遍策略。然而,这种看似灵活的生产模式,却给企业的内部管理带来了前所未有的复杂性。从物料清单(BOM)的嵌套…

2026/7/22 13:26:42 阅读更多 →
通义千问完整指南:3分钟掌握终极AI助手命令行技巧

通义千问完整指南:3分钟掌握终极AI助手命令行技巧

通义千问完整指南:3分钟掌握终极AI助手命令行技巧 【免费下载链接】Qwen The official repo of Qwen (通义千问) chat & pretrained large language model proposed by Alibaba Cloud. 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen 通义千问&…

2026/7/22 13:26:42 阅读更多 →
Atlas架构:浏览器向AI代理操作系统的范式转移

Atlas架构:浏览器向AI代理操作系统的范式转移

1. 项目概述:Atlas架构的颠覆性意义 OpenAI最新公开的Atlas架构,本质上是对传统浏览器交互模式的彻底重构。作为一名长期跟踪AI与浏览器技术融合的从业者,我亲历过从早期插件式AI助手到现代智能代理的演进过程。Atlas的出现标志着浏览器从&qu…

2026/7/23 13:37:24 阅读更多 →

最新新闻

智能体开发三大范式:ReAct、Plan-and-Solve与Reflection详解

智能体开发三大范式:ReAct、Plan-and-Solve与Reflection详解

1. 项目概述"hello-agents系列学习第四章习题与答案"是一个专注于智能体开发技术的学习项目,重点探讨了三种经典智能体范式:ReAct、Plan-and-Solve和Reflection。本章通过理论讲解和实战练习相结合的方式,帮助开发者深入理解不同智…

2026/7/23 20:31:34 阅读更多 →
咨询进阶——解读麦肯锡客户体验指南【附全文阅读】

咨询进阶——解读麦肯锡客户体验指南【附全文阅读】

【CSDN 618年中狂欢群友专属】 �� 错过等一年!两大王炸福利同时炸场: 【CSDN官方福利】 �� 福利① 会员大促 • VIP年卡:买1年送1年 → 低至3.5折 • 加赠:618次下载 0元秒杀 每…

2026/7/23 20:31:34 阅读更多 →
Linux 抓包入门:tcpdump 如何定位网络问题?

Linux 抓包入门:tcpdump 如何定位网络问题?

Linux 抓包入门:tcpdump 如何定位网络问题? 1. 前言 当 ping、curl、ss 都不能完全说明问题时,就需要抓包。 抓包可以直接看到网络数据包有没有到达服务器、有没有返回、端口是否正确、连接是否被重置。 Linux 中最常用的命令行抓包工具是&am…

2026/7/23 20:31:34 阅读更多 →
分屏自由!国标GB28181视频监控平台EasyCVR上线自定义多分屏,监控画面随心拆合!

分屏自由!国标GB28181视频监控平台EasyCVR上线自定义多分屏,监控画面随心拆合!

做视频监控运维,你是不是也遇到过这些难题?固定4/9/16分屏死板不灵活,重点画面太小看不清;核心区域需要放大预览,次要画面无需占用窗口;不同业务场景,找不到适配的监控布局……为破解传统分屏固…

2026/7/23 20:31:34 阅读更多 →
OpenClaw从入门到精通·特别篇|2026年5月生态爆发:安全落地全流程与实战部署指南

OpenClaw从入门到精通·特别篇|2026年5月生态爆发:安全落地全流程与实战部署指南

摘要:本文结合2026年5月OpenClaw生态现状、CNCERT安全规范、工信部安全预警以及多所高校使用禁令,围绕v2026.5.3稳定版本展开全面讲解。文章梳理近期多款高危漏洞风险,对比三类主流部署方案并提供可直接执行的部署脚本、安全加固命令。详解模型分级配置、MCP协议扩展、ClawH…

2026/7/23 20:31:34 阅读更多 →
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比

银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比

背景:银行流水是"资金的真相" 账上的银行存款余额是时点数,银行流水才是资金来龙去脉的完整证据。关联方占用、虚构回款、资金池运作,几乎都要回到流水里看。但一份流水动辄几万行,手工核对"账载银行日记账 vs 银行…

2026/7/23 20:30:34 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻