Skip to content

v0.8.0 — 智能体团队队员/子代理适配 + 「队员与子代理」开关(默认生效)

Choose a tag to compare

@KannaKuron KannaKuron released this 25 Sep 10:42
· 11 commits to main since this release

智能体团队队员 / 子代理适配 + 「队员与子代理」开关(默认生效)

结论

队员本来就生效:语言指示注册在 global 层,SystemPrompt 组装走 ScopedLayers.merge(scope, …)(先铺 global、再按作用域链覆盖),所以任何未封闭 prompt 的 agent(主代理、spawn_teammate 队员、subagent 子代理、任意嵌套深度)都会合并到它。本轮补上用户可控的开关,并让「仅主代理」真正只对主代理注入。

新设置:subagents(boolean,默认 true)

  • 开(默认):队员与子代理和主代理同语言。
  • 关:只对主代理注入。
  • 两个设置时代都声明(新:行 Config;旧:注册命名空间),卡片两代都可写。

实现要点

  • 文本提供者拿不到 agent 身份(AssembleContext 只有 {scope, signal}),所以 global entry 原样保留作兜底(主代理、任何 preset、任何识别不了的路径),每个被识别为子代理的 agent 在自己的作用域注册同名同序影子;merge() 按名覆盖 ⇒ 影子是该 child 的唯一来源(开启态实测全文恰好 1 次,是替换不是叠加)。
  • 识别子代理:session.header 的 parentSession / origin === 'subagent' / delegationDepth > 0 三者取或。
  • 安装/回收走官方 per-agent 范式(agent.ctx.inject(['systemPrompt'], …) + agent/created / agent/disposed / apply 时 ctx.agents.list())。

两条边界(卡片文案 21 门语言都写明)

  1. fork 出的队员继承主代理已完成回合的历史快照(其中含主代理已提交的指示)——开关不重写历史:关掉后该队员自有提交没有指示,但继承段仍在。
  2. 自带提示词的外部子代理(codex / claude-code / acp / sdk)与 minimal 的封闭提示本就不经宿主 systemPrompt,开关对它们无影响。

验证

  • 请求级(隔离实例 + 本地 Anthropic-Messages stub,stub 主动发 spawn_teammate,真实工具链跑出真实队员):默认态 lead 与 teammate 都有指示;subagents: false 时 lead 有、fresh teammate 0 条;fork 队员自有快照无、继承段有(即边界 1)。
  • GUI(隔离 web 实例 + 无头 Chrome):卡片渲染「队员与子代理: 同样生效」,点击写入 subagents: false/true 并回读,默认选中「同样生效」,说明行显示两条边界。
  • 冒烟测试 46/46 全绿(含 3 条 audience 语义、影子注册形态、两代设置面、卡片渲染、21 门词典两条边界关键词)。

完整变更记录与逐环源码依据见 CHANGELOG。