# 更新日志 ## 1.2.0 — 2026-09-25 ### 行为变化 - 登记只由队长紧接着的那一次 fresh `spawn_teammate` 使用。workflow 子代理、后台子代理等其他 fresh 创建不再用掉登记,也不会被它改写;此前这类创建可能抢先消费队长的登记。 - 插件默认路由(`inherit: false`)不再改写写明了 provider/model 的请求。 - 新增 `requireArm`(默认开启):顶层队长没有登记、也没有插件默认路由时,fresh 队员创建被拒绝(`MEMBER_MODEL_ARM_REQUIRED`),不再静默继承队长的模型。fork 不受影响。 - `arm_spawn_route` 支持 `{"follow": true}`,明确登记「跟随队长」;不能与 provider/model 同时传入。 - 三个路由工具对子 agent(委派深度 ≥ 1)隐藏,工具说明精简。 - 工具说明本身写明调用约定,skill 被压缩后仍然可见: - 每次 fresh 创建前登记; - 同一步里成对写; - fork 不用登记; - 省略 reasoningEffort 时的宿主规则。 未登记的拒绝信息会提示:看不到默认路由时,重新加载 skill。 ### 新增 - 建队员结果末尾附 `member-model:` 行,写明队员实际拿到的 provider、model 和思考强度,并在运行中的队员身上核实;不符或登记没被用上时给出 `WARNING`。创建失败时说明登记是否已恢复。 - `get_spawn_route` 增加 `requireArm` 和 `applied`:本队长最近 16 位队员的实际路由,从旧到新排列,保存在内存里,供最终汇报使用。 - 配置项 `requireArm`、`teammateTool`。 - 插件元数据:`locale/zh.json`、`locale/en.json` 与 `icon.svg`,插件列表显示中英文标题、说明和图标。 - `scripts/kernel-check.mjs`(`npm run kernel-check -- <版本>`):对新版 DSH 做静态兼容复查,逐项输出 PASS/FAIL 与「文件:行号」证据;同时核对 team-lead skill 依赖的宿主工具、team:policy 规则、宿主限制,以及「同一步里的独占调用按顺序执行」。 - `scripts/sync-skill.mjs`:从同一个包把 team-lead skill 同步到用户的 skills 目录。 - 保留三项默认路由; - 现有副本有模板以外的本地改动时默认不覆盖,并列出改动的章节; - 覆盖前备份到 skill 目录内部; - 默认只预览。 - `scripts/live-checklist.md`:实机验收清单。 ### skill **结构** - 新增「分工」(用户、队长、队员、宿主与插件)和「工作流程」两节。流程分六步:理解 → 拆分 → 创建并交代 → 推进 → 汇合 → 验收并汇报。组队前先确认前提:会话里有 `spawn_teammate`,也有支持 `follow` 的 `arm_spawn_route`;缺任何一个都先告诉用户,不让队员静默跟随队长。这补上了「skill 在所有 profile 可见,插件却没装」的情况。 - 分层:`SKILL.md` 保留协作方法和三字段默认路由;路由细节移到 `references/spawn-route.md`,按「规则、看结果、出问题时、配置相关」分组,开头附索引。 - 不再复述宿主 Agent Teams 策略(team:policy)已经写明的规则,包括 target、queued、任务板 revision、就绪不启动、等待流程、共享目录与 `FS_STALE_VERSION`,改为一句「以宿主策略为准」。 - 默认路由段的说明改为与是否已填写无关,安装和升级只需替换三项值;此前安装时还要改写「这里还没设置」这句话。 - 触发描述对齐宿主用词(Agent Teams、teammate);用户用 `/team-lead` 调用即视为授权。 **创建与路由** - 「每次创建」改为:登记路由或 follow → 创建 → 核对 `member-model:` 行;出现 WARNING 就停下,把这一行原样转告用户,并用中文说明哪里不一致。 - 登记和创建可以写在同一步:宿主把这两个调用当作独占调用,按顺序逐个执行。每位队员写成相邻的一对,不能先连续登记、再连续创建。 - 核对路由只看 `member-model:` 行;结果 JSON 里的 `provider` 是创建方式。 - 写明 fork 只继承队长已完成的轮次,看不到当前这一轮,开场任务同样要写清任务。 - 最终汇报前调用一次 `get_spawn_route`,按 `applied` 列出各队员负责的部分和实际路由,因为早先的结果行可能已被压缩。 **协作与沟通** - 新增固定的「协作要求」文字块,队长原样附在每个开场任务(fresh 和 fork)末尾。队员读不到 skill,靠它把这些要求带给队员:自主推进、找 lead 的方式、不再委派、汇报格式、回报体量(先写结论,大段内容写进文件)、认领并完成任务板任务。上下文被压缩后要原样附这段文字时,先重新加载 skill,不凭记忆改写。 - 任务板:工作块较多,或有依赖、共享写入范围时,拆分阶段先用任务板记下来。谁做哪个任务由队长在开场任务里指定,队员开工时自己认领(claim),队长不再对同一任务 reassign,否则两边同时登记负责人,不论谁先都会报错。reassign 只用于之后改派或收回。 - 补充队长操作: - 方向被推翻或会冲突时,先 `interrupt_agent` 再发新要求(中断不释放任务); - 队员中途停下、被中断或工作改派时,它认领的任务由队长释放或改派; - 等待较久时加长 `timeout_ms`; - 团队名额有限,创建失败也占名额和名字。 - 公共文件(入口、配置、依赖清单、锁文件)指定一位负责人;全量构建、测试、格式化由队长安排;开场任务写明临时文件和报告文件放在哪里。 **防回归** - 新增 skill 结构测试,覆盖: - 章节顺序、分工四方、前提检查、fork 边界; - 默认路由段保持三字段格式,且说明与状态无关; - 协作要求块完整; - skill 引用的插件工具名、错误码和结果行措辞与插件一致; - 提到的宿主工具限定在已知集合; - 不再复述宿主策略。 ### 修复与内部 - 队长 agent 释放时清理它的登记、恢复代次和 `applied`;恢复代次改为全局递增,释放后重新登记不会被旧的失败恢复覆盖。 - 事件监听、两个创建入口的包装和工具注册作为一个整体安装与回滚;逐项登记清理函数,修复部分注册失败时可能漏掉清理的问题。 - 包装函数改名为 `memberModelStart*`,修正文件头的过时版本注释。 - 插件在生成结果行或追加说明时自己出错,不再把已经建好的队员报成创建失败:保留成功结果,改附一行 WARNING,说明路由未核实。其他插件或宿主抛出的错误照常传出。 - 代码按与宿主的耦合点拆分到 `lib/`:`routes`、`book`、`override`、`tools`、`teammate`、`visibility`,每个文件开头注明对应的 kernel-check 项。只移动了代码,逻辑不变;`index.js` 只保留入口。 - 实机验收发现并修复两个问题: - 跟随队长时(follow,或关闭 requireArm 后未登记),插件改按宿主同样的规则取队长路由:优先读最近一次请求头,还没发过请求时退回创建参数。此前读的是创建参数,队长在界面切换模型后会误报 WARNING;队员实际拿到的路由一直是对的。 - 在 run_code 里调用 `spawn_teammate` 时,`member-model:` 说明改作附加上下文送达,宿主会把它放在运行结果之后。此前说明只附在结果文本里,而 run_code 的程序拿到的是结构化值,队长看不到 WARNING 和失败说明。 - kernel-check 新增 K21(run_code 子调用的附加上下文会转交给运行结果),K04 增加检查「父路由取自最近一次请求头」。 - sync-skill 登记验收前装过的 1.2.0(1.2.0-pre),能把它直接升级到修复后的版本。 ### 文档 - README 分成两部分:「使用」包括安装、怎么开始、装好之后的行为、配置、停用与卸载、常见情况;「维护」包括插件细节、新版 DSH 复查、开发与验证。更早版本的验收记录只留在 CHANGELOG。 - 更正两处说法:三项默认路由无法表示「默认跟随队长」;「未核实」的队员照常继续,汇报时注明即可。 - skill 与 references:`member-model:` 说明在 run_code 里会作为运行结果之后的提示出现,看不到时用 applied 核对;协作要求里的认领条款改为「写明了任务 id 才去认领,没写就不用看任务板」。 - README:会话里没有 plugin_manager 时的安装方式,以及 pnpm store 不一致(`ERR_PNPM_UNEXPECTED_STORE`)的处理。 ### 升级须知 - 升级已安装的 bundle 后需要重启宿主,新版本才生效;首次安装在支持热加载的 profile 上可以直接生效。README 改为首选 `plugin_manager` 的 `install_bundle`,CLI 为备选。 - 同步 skill 改用已安装包里的 `scripts/sync-skill.mjs`:先预览,再加 `--write`。它保留默认路由三项;遇到其他本地改动时不覆盖,要先确认。 - 「登记后任意 fresh 子代理都可能用掉」的旧行为不再存在。`requireArm` 开启时,未登记的 fresh 队员会被拒绝;不需要时可在插件配置中关闭。 - 兼容范围不变:仍为 `0.1.7-rc.1 || 0.1.7-rc.2`。 ### 验证(2026-09-25) - 190 项自动化测试通过(Linux 上的 Node.js 20 与 Windows 上的 Node.js 24)。新增的测试覆盖: - 屏蔽失败的防御路径、说明摘要截断、请求自带路由时的报告、插件自身出错时的兜底; - 按请求头核实跟随、run_code 里的说明送达; - kernel-check 和 sync-skill 的命令行入口。 - kernel-check 对 `0.1.7-rc.1`、`0.1.7-rc.2` 均为 21/21 PASS,在 Linux 与 Windows 上都能运行。 - 实机验收(DSH 0.1.7-rc.2,run_code 模式): - 核心行为全部通过:拦截未登记、按登记创建、fork、失败恢复、清除、applied、对队员隐藏路由工具,以及 `/team-lead` 实际组队和验收; - 上面两个问题已修复,并在同一台宿主上复验通过:队长切换模型后登记 follow 不再误报;run_code 里队长能看到 `member-model:` 说明。 ## 1.1.1 — 2026-09-24 ### 兼容性 - 增加 DSH 0.1.7-rc.2 支持,并保留 rc.1:兼容声明为 `0.1.7-rc.1 || 0.1.7-rc.2`,不使用宽泛范围放行未验证内核。 - 路由实现不变;同步包版本与锁文件,新增 3 项包元数据一致性检查。 ### 验证(2026-09-24) - 86 项自动化测试通过(原有 83 项路由回归 + 3 项元数据检查)。 - rc.2 实际内核方法的 29 项隔离兼容性检查通过;该层不调用外部模型。 - 运行中的 rc.2 宿主完成 21 项集成检查,fresh、fork 和 continuable 均通过真实模型调用,路由和思考强度符合已授权配置。 - 实机验收采用临时加载,未验证正式包安装流程;已移除探针、恢复 profile 补丁并保留个人模型配置。正式安装后的加载状态需单独确认。 ## 1.1.0 — 2026-09-24 ### 新增 - 新增 `clear_spawn_route`:清除调用者尚未消费的一次性路由,使较早的登记和失败恢复失效,防止已取消的旧路由重新出现。不会修改配置默认路由、影响其他 agent 或中止已开始的创建。 ### 修复与兼容性 - 完善登记、清除、消费和失败恢复的并发语义;被并发清除或较早成功提交的登记越过时,`arm_spawn_route` 返回 `armed:false`。 - 保留实际生效的第三方包装、属性描述符、receiver、额外参数、原始请求及返回结果身份。 - 两个创建入口和工具注册整体安装,失败时回滚;改进重复安装、幂等卸载和预检途中卸载处理。 - 更新 team-lead skill 和安装说明,明确路由授权、取消、失败重试与个人配置保留方式。 ### 验证与适用范围 - 83 项隔离回归测试通过。 - Node.js 22、DSH 0.1.7-rc.1 上完成 21 项真实宿主集成检查;fresh、fork 和 continuable 子代理均返回预期文本。 - 并发竞态及第三方包装组合由隔离测试覆盖,不代表已验证全部宿主或插件组合。 - 仍仅支持 DSH 0.1.7-rc.1;仓库不携带个人模型路由。更新安装包后需重新加载插件,新工具才会生效。同步 skill 时请保留已有默认路由与其他本地定制。 本次正式版本发布统一包元数据和锁文件版本为 1.1.0,功能实现与已验收的 e695469 提交一致。