多 Agent 委派(Delegation)

wesgine 支持 Agent 通过 delegate_task 工具将子任务委派给子 Agent 执行。


核心机制

父 Agent(Run A)
  → delegate_task(goal, context, toolsets)
    → 子 Agent(Run B)— 独立 context + 独立 terminal
      → 返回摘要
  → 父 Agent 继续

委派模式

同步委派

父 Agent 等待子 Agent 完成后继续。

后台委派

background=true 时立即返回委派 ID,结果通过异步队列回注。


Actor 传播

委派子 Run 的 actor 必须从父 Run 继承。

tool.go 把 tc.Actor 同时写进:

runner.go 在子 actor 为空时显式从 parentParams.Actor 继承。

曾经的缺陷:tool.go 只写 Tags["actor"],paramsActor 只读一等字段 Actor——每个委派子 Run 都是无主的。


CycleDetect 覆盖

子 Run 可使用更严格的 CycleDetect 阈值:

AppRunRequest{
    CycleDetectOverride: &CycleDetectConfig{
        ActionTermThreshold:        40,
        IdenticalCallTermThreshold: 5,
    },
}

治理分类

delegate_task 归类为 ZoneRed(INV-GOV-03):


安全约束

子 Agent 的工具集受限——默认不包含:


与 Plan 的关系

委派是 Plan 步骤的执行手段之一。当模型决定将某步骤委派时:

  1. delegate_task 带上步骤上下文
  2. 子 Agent 独立执行
  3. 结果返回后模型更新步骤状态

反模式

禁止正确做法
委派子 Run 不传 actor从父 Run 继承 actor
delegate_task 归为 ZoneYellowZoneRed,需完整审计
子 Agent 无限递归委派默认不含 delegate_task 工具
子 Run 使用父 Run 的 context独立 context + 独立 terminal