多 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 同时写进:
pp.Actor(一等字段)pp.Tags["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):
- 非 ZoneYellow
- 子 Agent 启动必须经过完整审计
安全约束
子 Agent 的工具集受限——默认不包含:
delegate_task(防止无限递归)clarify(子 Agent 不能向用户提问)- 其他敏感工具
与 Plan 的关系
委派是 Plan 步骤的执行手段之一。当模型决定将某步骤委派时:
delegate_task带上步骤上下文- 子 Agent 独立执行
- 结果返回后模型更新步骤状态
反模式
| 禁止 | 正确做法 |
|---|---|
| 委派子 Run 不传 actor | 从父 Run 继承 actor |
delegate_task 归为 ZoneYellow | ZoneRed,需完整审计 |
| 子 Agent 无限递归委派 | 默认不含 delegate_task 工具 |
| 子 Run 使用父 Run 的 context | 独立 context + 独立 terminal |