跳到主要内容

Supervisor-Worker架构

核对日期:2026-05-09。

1. 定义与边界

Supervisor-Worker 架构由一个监督者 Agent 负责任务拆分、分派、进度检查、结果汇总;多个 Worker Agent 负责具体子任务。它对应 Anthropic 所说的 orchestrator-workers workflow,也接近 LangGraph Supervisor、CrewAI hierarchical process、AutoGen group chat 等框架中的管理者模式。

它不同于 Router:Router 主要选择路径;Supervisor 会持续协调、检查、重试和综合。

2. 为什么重要

复杂任务常常无法预先知道所有子任务。例如代码修改需要先读项目结构,再决定改哪些文件;研究任务需要根据初步搜索结果扩展方向。Supervisor-Worker 允许监督者动态生成子任务,并让 Worker 并行探索。

适用:

  • 多文件代码修改、复杂调研、竞品分析、合规审查。
  • 子任务数量和内容无法预先固定。
  • 需要并行搜索或多专家观点。

不适用:

  • 路径稳定的审批流程。
  • Worker 间高度共享状态且强事务一致。
  • 极低时延场景。

3. 核心机制

任务单示例:

{
"task_id": "w2",
"worker_type": "security_reviewer",
"objective": "检查新增工具调用是否有越权风险",
"input_refs": ["plan_v3", "tool_registry"],
"output_schema": {"findings": [], "evidence": [], "confidence": "number"},
"deadline_ms": 120000
}

4. 架构模式

模式描述优点风险
Central supervisor所有通信经 supervisor容易审计和控权瓶颈明显
BlackboardWorker 写共享任务板并行效率高需要冲突控制
Hierarchical teams多层 supervisor 管理团队适合大任务调试复杂
Debate/review生成者、批评者、裁决者质量更高成本高

5. 工程实现

def run_supervisor(goal):
board = TaskBoard(goal=goal)
while not board.done() and board.round < MAX_ROUNDS:
new_tasks = supervisor.plan_next(board.snapshot())
board.add_tasks(policy_filter(new_tasks))

results = run_workers_concurrently(board.ready_tasks())
for result in results:
board.attach_result(result)

verdict = supervisor.verify_and_merge(board.snapshot())
board.update(verdict)

return supervisor.final_answer(board.evidence_pack())

关键设计:

  • Worker 输出必须带 evidence,不接受“我认为完成了”。
  • Supervisor 不能直接执行高风险工具,需委托受限 Worker 或 workflow。
  • Worker 的工具权限按角色最小化。
  • 用任务板保存状态:pending/running/blocked/done/rejected。
  • 并行结果合并需要冲突检测和来源优先级。

6. 生产实践

  • 限制最大 Worker 数、最大轮数、最大总 token。
  • 为每个 Worker 分配独立 trace span,便于定位失败。
  • 对 Worker 结果做 schema 校验和引用检查。
  • 对并行搜索设置去重和覆盖率要求。
  • 对最终答案保留“采用了哪些 Worker 结论、拒绝了哪些结论”。

7. 常见反模式

  • Worker 角色只是名字不同,提示词和工具完全相同。
  • Supervisor 只做拼接,不验证证据。
  • Worker 之间互相聊天导致上下文失控。
  • 没有任务边界,一个 Worker 承接过大子任务。
  • 没有并发预算,成本随 Worker 数指数增长。

8. 评测方法

  • Decomposition Quality:子任务是否覆盖目标且互不重复。
  • Worker Utility:每个 Worker 结果是否被最终答案有效使用。
  • Evidence Quality:结论是否有来源、日志或工具结果支持。
  • Merge Correctness:冲突结论是否被识别和处理。
  • Parallel Efficiency:并行是否缩短时延而非只增加成本。

9. 安全与治理

  • Worker 不应继承 Supervisor 的全部上下文和权限。
  • 子任务输入要最小化,避免把用户隐私广播给所有 Worker。
  • 对外部搜索 Worker 加强 prompt injection 防护。
  • 对自动生成的子任务进行策略过滤,禁止绕过审批。
  • 对多 Agent 通信做审计,记录任务分派和结果采纳链路。

10. 工程手册补充

10.1 控制流、状态流、工具流

Supervisor-Worker 的关键是“集中调度,分散执行,统一裁决”。

Supervisor 负责Worker 负责
控制流拆任务、分派、暂停、重试、终止只执行被分派的任务
状态流维护 task board、全局 facts、冲突记录维护局部 scratchpad 和 artifact
工具流为每个 worker 下发工具白名单按白名单调用工具并返回证据
观测流记录调度决策、验收结果和成本记录工具调用、失败原因和产物

10.2 失败恢复策略

失败模式观测信号恢复动作
Worker 空转多次返回无新 artifact降低重试次数,换 worker 或改写任务
Worker 越界调用未授权工具或处理非本任务数据拒绝结果,记录安全事件
Supervisor 过度微管每个小步骤都重新分派合并任务,减少 handoff
汇总幻觉最终答案引用不存在的 worker 证据强制 evidence citation 校验

伪代码:

while not board.done():
task = supervisor.pick_next(board)
worker = supervisor.assign(task, registry)
scoped = make_scoped_context(task, board.shared_facts)
result = worker.run(scoped, tools=task.allowed_tools)
verdict = supervisor.verify(task, result)
board.append_trace(task.id, worker.id, result, verdict)
if verdict.status == "accepted":
board.merge(result.artifacts)
elif verdict.recoverable:
board.requeue(task, reason=verdict.reason)
else:
board.abort(reason=verdict.reason)

上线清单:

  • Worker 角色、输入、输出、工具和禁止事项写成 contract。
  • Supervisor 的裁决不能只靠自然语言偏好,要有 rubric 或 verifier。
  • 共享状态只保存可复用事实和产物,不保存所有 worker 内部推理。
  • 监控 worker 成功率、重试率、handoff 次数、冲突率、汇总引用失败率。

11. 权威资料