Skip to content

Supervisor-Worker ​

1. 分派式协作的背景 ​

1.1 场景 ​

代码迁移任务常常包含多个阶段:理解旧 API、搜索调用点、修改代码、运行测试、审查风险、写迁移说明。让一个 Agent 全部完成,会导致上下文过长、工具过多和责任混杂。Supervisor-Worker 模式把全局控制权放在 Supervisor,具体步骤交给 Worker。

Supervisor 负责拆分任务、选择 Worker、汇总产物和判断是否继续。Worker 负责在自己的工具和上下文范围内完成子任务。这个结构常见于企业助手、代码 Agent、研究 Agent 和多角色客服系统。

1.2 角色边界 ​

角色职责不应承担
Supervisor计划、分派、汇总、终止判断直接执行所有底层工具
Worker完成子任务并返回产物私自扩大任务范围
Runtime权限、状态、trace、预算让模型自由转发敏感上下文
Evaluator检查子任务和最终结果替代业务验收

边界清楚后,系统才能按角色设置工具权限。例如 Review Worker 可以读 diff 和测试结果,但不允许写文件。

2. 运行机制 ​

2.1 任务分派流程 ​

Supervisor 不应只把用户原话转发给 Worker。它要生成明确子任务,包含输入、限制、预期产物和完成条件。

2.2 子任务对象 ​

json
{
  "task_id": "review-001",
  "worker": "review-agent",
  "goal": "审查登录模块补丁是否有回归风险。",
  "inputs": {
    "diff": "...",
    "test_result": "auth tests passed"
  },
  "allowed_tools": ["read_diff", "search_text"],
  "expected_output": {
    "risk_level": "low|medium|high",
    "findings": "array",
    "required_changes": "array"
  }
}

子任务对象是协作的核心数据结构。它既给 Worker 提供上下文,也给 Supervisor 和评估器提供校验依据。

2.3 时序 ​

3. 失败恢复 ​

3.1 常见失败 ​

失败表现处理方式
分派过宽Worker 不知道交付什么子任务必须有 expected_output
上下文不足Worker 反复请求信息Supervisor 提供必要证据和限制
产物不兼容一个 Worker 输出无法被下游使用定义统一 artifact 结构
责任混乱多个 Worker 修改同一对象Supervisor 控制写入顺序
成本过高多 Worker 并行调用模型缓存结果、限制并发和重试

Supervisor 要保存每个子任务的输入和输出。最终失败时,才能定位是拆分错误、Worker 执行错误,还是评估器判断错误。

4. 评估方式 ​

4.1 指标 ​

指标含义
子任务完成率Worker 是否按 expected_output 返回
返工率Supervisor 要求重做的比例
上下文泄露率Worker 是否收到无关敏感内容
产物复用率下游是否能直接使用上游产物
端到端成功率最终任务是否完成

Supervisor-Worker 的价值要落到端到端任务成功率和失败归因上。若只是把一个复杂 prompt 拆成多个复杂 prompt,系统复杂度会增加,可靠性未必提升。

参考资料 ​