Repository navigation
v0.8.0 — 智能体团队队员/子代理适配 + 「队员与子代理」开关(默认生效)
智能体团队队员 / 子代理适配 + 「队员与子代理」开关(默认生效)
结论
队员本来就生效:语言指示注册在 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 门语言都写明)
- fork 出的队员继承主代理已完成回合的历史快照(其中含主代理已提交的指示)——开关不重写历史:关掉后该队员自有提交没有指示,但继承段仍在。
- 自带提示词的外部子代理(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。