Repository navigation
Releases
v1.2.11
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
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
Changed
- 适配 DSH 0.2.0-rc.2:
engines.dsh提升为>=0.2.0-rc.2,README 同步标明适配范围;旧版本请继续使用1.2.8。 - 工具管理页「工具目录」面板补充说明:
tool_list只在当前 Preset 有有效按需组时才出现(保存后从下一个模型步骤生效),没有有效按需组时模型看不到它;并说明它由插件自动管理,不出现在本页工具目录中,也不能在本页开关或分组。
v1.2.8
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
Fixed
- 修复在其他设置页与“工具管理”之间往返时,动态 Agent 作用域工具可能隔次从目录消失、又隔次恢复的问题。Preset 目录现在保留已完成的 live/probe 观测并与当前观测取并集,避免在
tools/change后的短暂注册空窗中把subagent、list_subagent_models等真实工具误报成“已不存在的关闭项”。
v1.2.6
Fixed
- 按需组尚未打开时直接调用组内工具,现在会明确提示该工具所属的按需组,并给出需要先调用的
tool_list参数;不再误报成工具已被 Preset 策略关闭。明确关闭的工具仍保留原有禁用提示。
v1.2.5
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
Fixed
- Preset 动态工具探测不再为每次页面请求和每个空闲 Preset 创建随机
tool-manager-probe-*Session。现在所有冷 Preset 串行复用唯一的tool-manager-probe-internal-v1,跨插件重载恢复同一个持久化 Session,并以origin: subagent从普通会话列表隐藏。 - 固定探针恢复失败时直接报错并回退现有工具目录,不创建随机或递增 ID 的替代 Session,避免会话存储持续增长。
v1.2.3
Fixed
- 修复仅在 Agent 自身作用域注册的工具(如启用
modelSelectionSettings后动态注入的subagent)在工具管理页面无法显示、无法关闭的问题:现在通过运行中 Agent 的真实工具目录与必要时对空闲 Preset 临时挂载探测 Agent 来补齐页面目录,不再依赖工具名硬编码。 - 修复关闭 Agent 本地作用域注册的工具后,模型请求仍然能看到该工具并附带
tool:<name>提示词段的问题:在system-prompt/assemble阶段过滤assembly.tools与对应提示词段,并安装tools.guard()拒绝执行已关闭工具,与原有tools.restrict()形成三层防护。 - 自动命名与自动分组的可用工具目录也同步使用相同合并策略,避免页面能关闭的工具在生成接口中找不到。
v1.2.2
Changed
- 工具管理页中“自动分组”旁的“分组”按钮改名为“手动分组”,让操作含义更明确。
Fixed
- 修复通过
tool_list打开的按需工具组在 DSH 重启并恢复同一 Session 后重新隐藏的问题;现在会从成功的原生或 PTC 工具调用事件恢复开放状态,同时新建会话和 fork 子会话仍保持默认隐藏。