Skip to content

Releases

v1.2.12

Choose a tag to compare

@github-actions github-actions released this 06 Nov 12:15

Fixed

  • 修复「折叠的 tool:* 提示词段在子代理上未被隐藏」(issue #3)。子代理在 tool-manager install 之前就被委派层 childCtx.tools.restrict(toolFilter) 裁过工具面,baseline 里可能一个被折叠工具都没有,denyNames() 因此返回空、system-prompt/assemble 直接放行,全局注册的 tool:<名称> 段照旧出现在子代理提示词里。现在段落判定不再只依赖 baseline:只要该工具落在预设的 disabled 里,或命中某个未 open 的按需组 patterns,就按「已折叠」处理并删除其说明段;tool:<名称>、mcp:<服务器>、mcp-resource-servers 三种段落都适用。族内成员取 baseline 与实际策略字面名的并集,全部被隐藏才删除,任一可见则保留。
  • 修复「工具已收进按需组或已关闭,系统提示词里却仍保留只介绍这些工具的段落」的问题。此前只按 tool:<名称> 剔除单工具说明段,因此 MCP 的 mcp-resource-servers(三个共享资源工具)和 mcp:<服务器>(服务器 instructions)即使对应工具全部不可见也照样出现在提示词里,模型会读到「可以调用」的指令却找不到工具,调用还会被 guard 拒绝。DSH 的提示词段落没有工具归属元数据,现在按命名约定把段落归到工具族:tool:<名称>、mcp:<服务器>(该服务器全部 mcp__<服务器>__* 工具)、mcp-resource-servers(三个共享资源工具)。族内工具全部被隐藏时整段删除,任一工具可见则保留;无归属或族内没有注册工具的段落不处理。
  • 修复「安装新插件后,把它的工具加入按需组,新旧会话都不生效,必须重启 DSH」的问题。按需组是否有效取决于该 Agent 的 baseline(继承工具名快照),而 baseline 只在 install()(agent/created)与 tools/change 时刷新;插件热装/组合重载可能把工具注册落在两者之间,于是组解析为 0 个工具、从目录里消失,组内工具反而一直可见,直到重启重建快照。现在每一步都在 tools.resolve() 之前、agent/pre-step 里以及 tool_list 打开组时用 live schemas(agent) 核对 baseline(一次 map 遍历):只要 live 面出现快照没有的名字,就立即采用并 reconcile(),新工具在当步就归入按需组并从该步的工具集合中剔除,目录同一步更新,不需要重启。只对「新增」生效——工具面收缩可能是组合切换的空窗,仍交给 tools/change 的防抖刷新,避免为一步把组内工具放出来。
  • 修复本插件的 HTTP 路由在插件重载后残留的问题:context.inject(["webServer"], ...) 的回调没有保留也没有返回 webServer.register() 的 disposer,重载后新实例注册同一路径会抛 webserver: duplicate exact route,而旧实例的 handler 仍在服务——设置页会继续读写一个已经没人驱动的 runtime。现在所有路由的 disposer 都被收集,并在注入作用域卸载时统一释放;若中途某条路由被拒绝,已注册的部分也会立刻回滚。

Changed

  • 最低支持的 DSH 版本提升到 0.2.2-rc.1(engines.dsh 由 >=0.2.0-rc.2 改为 >=0.2.2-rc.1)。提示词段落隐藏现在依赖 0.2.2 的 PromptPresentation 语义(工具声明在 waterfall 之后挂回),工具隐藏依赖 tools.resolve() 的 per-step 过滤,两者都是 0.2.2 才有的能力。仍停留在 0.2.0 / 0.2.1 的用户请继续使用 1.2.11;升级到 0.2.2 前记得移除 tools.mode / DSH_TOOLS_MODE,并把 Node.js 升到 24.9 以上。
  • README 同步适配范围(>=0.2.2-rc.1,旧版用 1.2.11)。
  • 版本提升至 1.2.12。

v1.2.11

Choose a tag to compare

@github-actions github-actions released this 05 Nov 10:16

Fixed

  • 适配 DSH 0.2.2(含 0.2.2-rc.1):system-prompt/assemble 的载荷由 PromptAssembly 改为 PromptPresentation,只带 sections / contexts / variables,工具声明改由工具注册表在 waterfall 之后挂回。旧实现要求载荷同时包含 tools 数组,在 0.2.2 上判断失败并原样返回,导致 tool:<名称> 提示词段落不再剔除。现在只要求 sections:旧版继续同时过滤工具声明与段落,新版过滤段落文本。
  • 恢复 DSH 0.2.2 上「所有工具都能隐藏」的行为:新增 per-step 过滤,包装 tools.resolve() 返回的准入集合,把策略隐藏的工具名从该步的工具集合中剔除。0.2.2 的提示词工具声明、PTC 绑定与执行查找全部由这份集合派生,因此按 Agent 自身作用域 注册的工具(subagent、list_subagent_models、schedule_* 等)与全局工具表现一致:未打开按需组或已关闭时,既不在模型工具列表中,也无法调用。这是 tools.restrict() 之外的补充路径——restrict() 按设计只作用于 global/祖先层,无法隐藏 Agent 自身作用域的注册。包装只改写 view() 的投影,失败时原样返回 Host 的集合,插件卸载时还原;旧版 DSH 没有 resolve(),自动跳过。
  • 若上述包装无法安装(Host 改动了该接口),保留 0.2.2 的降级路径并只告警一次:继续过滤提示词段落,调用仍由 guard 拦截,并列出受影响的工具名。

Changed

  • 移除工具目录快照中的 trust 字段:DSH 自 0.1.7 起不再上报 Preset 信任级别,快照此前始终填 system,属于误导性数据;设置页从未渲染该字段。
  • README 补充 DSH 0.2.2 的适配范围、Node.js 24.9 最低要求,以及升级前需移除 tools.mode / DSH_TOOLS_MODE 的提醒。
  • 版本提升至 1.2.11;engines.dsh 保持 >=0.2.0-rc.2,0.2.1 用户无需改变。

v1.2.10

Choose a tag to compare

@github-actions github-actions released this 08 Oct 09:30

Fixed

  • 修复保存按需分组时把「只按 Agent 作用域注册」的工具误判为空组、导致无法保存的问题。典型表现:为 @deepseek-ai/dsh-schedule 提供的 schedule_create / schedule_list / schedule_delete / schedule_update 建组后点保存,报 Preset "standard" has empty tool groups: "定时提醒管理",而页面明明列出了这些工具、tool_list 也能正常打开该组。根因是保存校验只读 Preset 的 standing composition(acquireScope()),而页面目录是 standing 与 Agent 作用域注册(探针 + 运行中 Agent 观测)的并集;subagent 等由 modelSelectionSettings 注入的工具同样受影响。现在校验与页面使用同一份目录,并且只在真正读不到 standing composition 时才跳过该校验。同时修正了同一根因下的两个次生问题:仅含 Agent 作用域工具的组里出现已关闭成员时误报「空组」而非「已关闭工具不能入组」,以及两个此类组之间的重复成员漏检。

v1.2.9

Choose a tag to compare

@github-actions github-actions released this 08 Oct 07:41

Changed

  • 适配 DSH 0.2.0-rc.2:engines.dsh 提升为 >=0.2.0-rc.2,README 同步标明适配范围;旧版本请继续使用 1.2.8。
  • 工具管理页「工具目录」面板补充说明:tool_list 只在当前 Preset 有有效按需组时才出现(保存后从下一个模型步骤生效),没有有效按需组时模型看不到它;并说明它由插件自动管理,不出现在本页工具目录中,也不能在本页开关或分组。

v1.2.8

Choose a tag to compare

@github-actions github-actions released this 22 Sep 16:05

Changed

  • 适配 DSH 0.1.7:Preset standing 目录改为 agentPresets.acquireScope(),并在读完 schema 后释放租约。standingKeyFor() 已从 DSH 移除,继续调用会让设置页快照和保存校验失败。
  • 插件管理页补充中英文 locale 标题与描述。
  • 设置页 API 请求改为相对当前文档 base URI,避免 Web 部署在反向代理子路径下打到错误主机。
  • engines.dsh 提升为 >=0.1.7-alpha.1。
  • README 标明仅适配 DSH 0.1.7-alpha.1 及更新版本;更早版本请继续使用 1.2.7。

v1.2.7

Choose a tag to compare

@github-actions github-actions released this 18 Sep 09:29

Fixed

  • 修复在其他设置页与“工具管理”之间往返时,动态 Agent 作用域工具可能隔次从目录消失、又隔次恢复的问题。Preset 目录现在保留已完成的 live/probe 观测并与当前观测取并集,避免在 tools/change 后的短暂注册空窗中把 subagent、list_subagent_models 等真实工具误报成“已不存在的关闭项”。

v1.2.6

Choose a tag to compare

@github-actions github-actions released this 18 Sep 08:56

Fixed

  • 按需组尚未打开时直接调用组内工具,现在会明确提示该工具所属的按需组,并给出需要先调用的 tool_list 参数;不再误报成工具已被 Preset 策略关闭。明确关闭的工具仍保留原有禁用提示。

v1.2.5

Choose a tag to compare

@github-actions github-actions released this 18 Sep 05:34

Fixed

  • 新增通用的组合切换自愈(src/composition-watch.ts):插件监听 tools/change,发现某个会话的 Preset 发生切换后,把它借另一个 Preset(compositionInventory() 中 composition row 最少者,通常是极简模式)空转一圈再切回目标 Preset。旧 composition 在离开时执行的 removeScoped() 会连带丢掉 DSH 因撞名失败而永久缓存的记录,目标 composition 于是在一个没有同名注册的 Agent 上干净安装。该机制不含任何工具名假设:任何插件按 Agent 注册的工具、无论丢了几个,都走同一条路径恢复。只对未开始对话的空白会话执行(DSH 本身也只允许空白会话切换模式),用 recompose() 因而不写会话记录、界面无感知;两条腿串行且第二条永远执行,失败会回滚到目标 Preset 并告警;已经开始的会话不被改动,只按探针参照系报出缺失工具并提示重开。自愈成功时输出一条自我报告日志(... re-calibration restored them.)。

  • 定位并缓解“标准模式新建会话 → 切到创造模式后丢失 subagent / list_subagent_models”:根因是 DSH 自身的组合切换竞态(@deepseek-ai/dsh-tool-subagent 的按 Agent 注册与上一个 composition 的异步拆除竞速,失败后该 Agent 被永久记住),与本插件的开关策略无关(出问题的会话里 disabled 为空、也不存在隐藏这两个工具的按需分组)。插件侧现在于加载时立刻组合部署默认 Agent Preset 的 standing composition,并让此后所有由插件发起的 mount(冷 Preset 探针、自动命名/自动分组、保存校验、快照)都先等它完成,从而不再由插件引入反向顺序。分析与上游修复建议见 docs/composition-switch-race.md。

  • 修复共享冷 Preset 探针在切换作用域时把上一 Preset 的动态 Agent 工具串入下一 Preset 目录的问题;例如“极简模式”不再误显示仅 standard/ptc/cordis 提供的 subagent 和 list_subagent_models。

  • 探针切换后会等待动态作用域注册完成清理,并且探针自身的过渡态不再写入运行中 Agent 的持久观察缓存。

  • 修复 Preset 切换或新会话初始化期间,动态 Agent 作用域工具短暂卸载时被采样为永久 baseline,导致在 standard 关闭代理工具后,创造模式中的 subagent / list_subagent_models 也消失且重新开启无法恢复的问题;工具目录变化现在延迟到下一事件循环再刷新。

v1.2.4

Choose a tag to compare

@github-actions github-actions released this 17 Sep 16:20

Fixed

  • Preset 动态工具探测不再为每次页面请求和每个空闲 Preset 创建随机 tool-manager-probe-* Session。现在所有冷 Preset 串行复用唯一的 tool-manager-probe-internal-v1,跨插件重载恢复同一个持久化 Session,并以 origin: subagent 从普通会话列表隐藏。
  • 固定探针恢复失败时直接报错并回退现有工具目录,不创建随机或递增 ID 的替代 Session,避免会话存储持续增长。

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 17 Sep 13:59

Fixed

  • 修复仅在 Agent 自身作用域注册的工具(如启用 modelSelectionSettings 后动态注入的 subagent)在工具管理页面无法显示、无法关闭的问题:现在通过运行中 Agent 的真实工具目录与必要时对空闲 Preset 临时挂载探测 Agent 来补齐页面目录,不再依赖工具名硬编码。
  • 修复关闭 Agent 本地作用域注册的工具后,模型请求仍然能看到该工具并附带 tool:<name> 提示词段的问题:在 system-prompt/assemble 阶段过滤 assembly.tools 与对应提示词段,并安装 tools.guard() 拒绝执行已关闭工具,与原有 tools.restrict() 形成三层防护。
  • 自动命名与自动分组的可用工具目录也同步使用相同合并策略,避免页面能关闭的工具在生成接口中找不到。