supervisor现在确实是多agent里最主流,最稳的模式,但并不是所有agent系统都必须有supervisor。
常见多Agent模式:
| 模式 | 特点 | 适合场景 |
|---|---|---|
| Supervisor / Orchestrator | 一个中心节点负责拆解、调度、汇总 | 任务复杂、需要可控路由、审批、重试 |
| Pipeline / Sequential | 固定顺序执行, | 文档处理、ETL、审核流水线 |
| Router | 只做一次分发,不参与后续控制 | 客服意图路由,简单分类分发 |
| Swarm / Peer-to-Peer / Handoff | Agent之间互相移交控制权 | 对话转接、动态协作、边界模糊场景 |
| hierarchical | 多层Supervisor, | 超大任务,多部门协作,权限隔离 |
| Fan-out / Parallel | 并行执行多个子任务再聚合 | 多源检索、多视角分析 |
| Blackboard | 共享状态板,Agent按需触发 | 事件驱动,实时协作 |
Langgraph4j里,Supervisor就是一个带条件边的路由节点,根据AgentState决定下一个Worker是谁。
现在主流的暴露方式就是把subagent包装成tool,但不是唯一方式
- 方式一:Subagent as Tool
在 LangChain / LangGraph 里,Subagents / Supervisor 模式通常就是把子 Agent 当成工具暴露给主 Agent。
主 Agent 通过工具调用决定:- 调用哪个 subagent;
- 传入什么任务描述;
- 拿到结果后由自己汇总回答
这种模式下: - 控制权始终在主Agent
- subagent 通常不直接和用户对话
- 每次调用相对无状态,上下文更干净
- 主 Agent 可以并行调用多个 subagent
Langgraph里的create_supervisor, DeepAgents里的SubAgentMiddleware / CompiledSubAgent,本质上都是这种子Agent即工具的思路。
- 方式二:Handoff / 子图节点
如果不用tool暴露,也可以用Handoff或子图节点。
多Agent相关文章:
https://blog.csdn.net/king1359874550/article/details/164614836