问题与目标
把一个 Agent 拆成多个 Agent 并不会自动提升效果。拆分之后,系统还要解决路由、上下文裁剪、终止条件、权限边界和故障定位等问题。本篇用同一个设备巡检任务比较 Router、Supervisor 与 Handoff,给出可落地的选择方法。
核心概念

三种模式的差异不在 Agent 数量,而在“谁拥有下一步决策权”。
| 模式 | 下一步由谁决定 | 适合场景 | 主要风险 |
|---|---|---|---|
| Router | 路由器一次选择分支 | 意图清楚、分支独立、通常只调用一个专家 | 错分后缺少纠正机会 |
| Supervisor | 主管持续分派任务 | 专家要协作,且需要统一汇总与停止 | 上下文膨胀、重复委派 |
| Handoff | 当前 Agent 把控制权移交给另一个 Agent | 对话职责会随阶段变化 | 控制权漂移、来回转交 |
如果任务只是“查设备,再按固定规则生成报告”,普通 Workflow 更合适。如果一个 Agent 加少量工具就能完成,也不必为了“多 Agent”而拆分。
可运行实现
先用确定性 Router 建立任务边界。它不依赖模型,可以作为后续模型路由的兜底和测试基线。
from dataclasses import dataclass
from typing import Literal
Route = Literal["device", "rule", "unsupported"]
@dataclass(frozen=True)
class RouteResult:
target: Route
reason: str
def route(text: str) -> RouteResult:
if any(word in text for word in ("状态", "温度", "离线")):
return RouteResult("device", "命中设备状态词")
if any(word in text for word in ("规则", "阈值", "处置")):
return RouteResult("rule", "命中规则知识词")
return RouteResult("unsupported", "不属于已开放能力")
def device_agent(text: str) -> str:
return "设备专家:AX-3 当前离线。"
def rule_agent(text: str) -> str:
return "规则专家:离线超过 5 分钟应创建巡检工单。"
def run(text: str) -> dict:
selected = route(text)
handlers = {"device": device_agent, "rule": rule_agent}
if selected.target not in handlers:
return {"status": "rejected", "route": selected.target, "reason": selected.reason}
return {
"status": "completed",
"route": selected.target,
"reason": selected.reason,
"answer": handlers[selected.target](text),
}
print(run("AX-3 现在是什么状态?"))
替换成模型 Router 时,让模型输出受约束的结构化结果,例如 target、reason 和 confidence;低置信度进入澄清或人工分流,而不是任意选择专家。
怎样选择
- 一问一答、分支互斥:优先 Router;
- 多个专家都要参与,最终由一个角色汇总:使用 Supervisor;
- 售前转技术支持、机器人转人工等会话角色切换:使用 Handoff;
- 步骤固定、规则明确:回到 Workflow。
常见问题与排查
每个功能都包装成 Agent
工具调用就能完成的原子能力不需要独立 Agent。Agent 适合拥有目标、上下文和有限决策空间的角色。
所有专家共享完整历史
这会增加成本并泄露无关信息。为每个专家构造最小上下文,只传任务、必要事实和允许使用的工具。
Supervisor 永不停止
设置最大委派次数、相同专家重复调用检测、总耗时预算和明确的完成协议。业务状态比“模型觉得完成了”更可靠。
Handoff 后仍由旧 Agent 回答
把当前控制者写入持久状态,服务端只接受当前 Agent 的输出;转交事件也要进入审计轨迹。
小结
Router 解决一次分流,Supervisor 解决持续协调,Handoff 解决控制权转移。先明确任务边界和状态所有权,再选择架构;能用单 Agent 或 Workflow 完成时,保持简单通常更可靠。
License: CC BY-NC 4.0
Updated 2 hours ago
Was this article helpful? Give it a like.
0 comments


