Supervisor(含 Router 对比)
Router 和 Supervisor 都可能处于中心位置,但控制粒度不同:Router 通常做一次分类与分发;Supervisor 是一个持续运行的 Agent,会跨多轮决定调用哪个 worker、是否继续以及怎样综合结果。
三种中心化模式
Router:分类后分发
适合:输入能明确分域、一次路由就能完成、不同分支上下文差异很大。确定性关键词、权限或产品类型能路由时,优先用代码规则;只有语义边界复杂时才用模型分类。
结构化 Router
路由结果还要经过权限与业务规则校验。不能让模型通过输出一个 worker 名称来绕过当前用户的资源权限。
并行 fan-out/fan-in
一个问题可能同时需要多个独立视角,例如“分别检查事实、合规和可读性”。分支由代码固定时,不需要 Supervisor。
生产中要给并行分支设置独立超时和总体 deadline,并定义部分失败时是继续、降级还是整体失败。
Supervisor:动态调度 Worker
Supervisor 适合多专业域、执行顺序依赖中间结果、需要多轮协调与统一输出的任务。Worker 通常作为工具暴露给 Supervisor;这样主 Agent 只看到任务描述和压缩结果,worker 的长上下文被隔离。
可运行的 Agents-as-tools 示例
下面使用 Context7 核验过的 OpenAI Agents SDK 0.7.x Agent.as_tool()。运行需要 OPENAI_API_KEY。
Supervisor 的 Context 设计
中心 Agent 不应得到 worker 的全部搜索轨迹。推荐 worker 返回:
Supervisor 需要知道 worker 的职责、输入契约、成本、超时和结果状态,不需要知道它的全部内部消息。
Router 与 Supervisor 的选择
常见失败
- Supervisor 把同一任务重复派给多个 worker;
- worker 职责重叠,路由长期摇摆;
- 中心上下文收集所有子轨迹,反而更快溢出;
- worker 成功被误当成整体任务成功;
- 部分失败没有状态,Supervisor 只能猜测;
- 子 Agent 拥有不必要的写权限;
- 为了“多 Agent”拆分本来一次调用就能完成的任务。