DSH 会话插件管理器:按会话开关插件的模型可见面

前言

DeepSeek Harness(DSH)里装了很多插件时,模型每次请求都会带上各插件注册的工具、提示词段和技能。若想在某一次对话里临时收窄能力——例如去掉网页搜索工具、或不让 Superpowers 技能进目录——全局「设置 → 插件」会把影响扩到所有会话,往往过重。

dsh-session-plugin-manager(会话插件管理器)在右侧栏增加「插件」页签,只对当前 session 关闭插件面向模型的那一层贡献;其它会话和全局插件开关不变。下面按定位、能力边界、安装、用法与配置说明。

这是什么

  • 仓库 / npm 包名:dsh-session-plugin-manager(维护者 kiluahh,GitHub,SkillHub 目录页)
  • 分类:客户端插件(注入 @deepseek-ai/dsh-client-ui-sidebar-right)
  • 许可:MIT;README 写明在 DSH 0.2.2-rc.1 上做过测试;package.json 当前版本为 0.2.1
  • 一句话:在右侧栏按当前会话开关各 bundle 的工具、prompt sections 和 skills,不卸载插件、不改全局设置

列表数据与「设置 → 插件」同源,来自 pluginManager.listBundles()。

核心功能

安装并在右栏打开 Plugins / 插件 后,可对每个已安装的 bundle 拨动开关。

关闭(仅本会话)时插件侧会:

  1. 通过 agent.ctx.tools.restrict({ deny }) 从下一轮请求的工具定义中移除该插件工具,模型无法看到或调用它们。
  2. 对该插件注册的 prompt section / context 做同名空段遮蔽(scoped system-prompt shadowing)。
  3. 对在 skillProviders 中登记的 provider(默认映射含 @local/dsh-superpowers → superpowers),将 provider 下各技能注册为同名 runtime skill,并设 modelInvocable: false, userInvocable: false:技能目录不再列出,skill 工具加载会返回不可用。

状态持久化:按 sessionId 写入 $DSH_HOME/session-plugin-manager/state.json;重开会话或重启 DSH 后恢复本会话的开关状态。开始页会显示与右栏对应的卡片。

界面语言:跟随 DSH 语言;zh* 显示中文,其它 locale 显示英文;切换语言后面板会重渲染。行标题来自各包 package.json 的 dsh.meta。

边界说明:它不做什么

README 明确区分边界,避免误用:

  • 不卸载插件:后台服务、UI 面板仍可运行,只是去掉模型可见的工具 / 段落 / 技能。
  • 不是全局开关:全局仍以「设置 → 插件」为准;在设置里全局关掉的行会在面板里标为 Globally off,需先在设置里启用才能做会话级控制。
  • 技能按 provider 整组遮蔽,不能勾选单个技能。
  • 不贡献工具或技能的插件(音效、聊天桥、模型供应商等)在列表中置灰。

环境与依赖

  • 需要带 sidebarRightTabs 客户端服务与 pluginManager 主机服务的 DSH(文档测试版本 0.2.2-rc.1)。
  • 运行时除 DSH 外无额外 npm 依赖,实现仅用 Node 内置模块。

安装与启用

任选一种 install_bundle 目标(须以 host 返回 application: applied 为准):

从 npm 公共 registry:

plugin_manager({ action: 'install_bundle', target: 'dsh-session-plugin-manager' })

从 GitHub:

plugin_manager({ action: 'install_bundle', target: 'https://github.com/kiluahh/dsh-session-plugin-manager' })

从本地目录:

plugin_manager({ action: 'install_bundle', target: 'D:\\path\\to\\dsh-session-plugin-manager' })

安装后:重启 DSH(host 半需要重启),并刷新页面(client bundle 需重新加载)。

插件与 DSH 同进程权限运行;安装前建议浏览仓库源码与 MIT 许可证。SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

典型用法

  1. 打开右侧栏,进入 Plugins / 插件。
  2. 将某个 bundle 的开关拨到 off;行上会显示被隐藏的工具 / 技能数量。
  3. 需要一次性撤销本会话全部覆盖时,使用 Restore all / 全部恢复。

README 中文说明中的可复现检查项包括:

  • 关闭「网页工具集」后,本会话工具列表中不再出现 web_search_bing、web_fetch_markdown;新会话仍可用。
  • 关闭 Superpowers 后,技能目录不再列出 brainstorming、test-driven-development 等;skill 工具返回 not available for model invocation。
  • 重开会话或重启 DSH 后开关状态保持;点「全部恢复」后工具与技能恢复。

配置(cordis.patch.yml 行 config)

可在插件 bundle 的 cordis.patch.yml 中调整下表字段(均为资料原文默认值与含义):

字段 默认 说明
stateFile $DSH_HOME/session-plugin-manager/state.json 按会话状态文件
includeOfficial false 是否同时列出可选官方 bundle
toolMap {} 模块 → { tools, sections, contexts },覆盖自动扫描
skillProviders { "@local/dsh-superpowers": ["superpowers"] } bundle → skill provider 名;关闭时整组遮蔽
scan true 是否扫描包源码补全 tool 映射
scanMaxFiles 120 单包最多读取文件数
scanMaxBytes 2097152 单文件读取上限(字节)
cacheTtlMs 30000 目录缓存 TTL(毫秒)

若某行提示 Tools not mapped,需在 toolMap 中补充该模块及工具名。

适用场景与注意

适合谁:经常开多会话、且希望某些对话「轻装上阵」(少工具、少技能、少 prompt 注入)的 DSH 用户;与全局插件设置互补,而不是替代。

注意:

  • 只影响模型侧可见面,不能代替在安全或合规场景下对插件本身的审计。
  • 技能遮蔽粒度是 provider,不能细到单个 skill。
  • 自定义翻译可在 client.js 的 DICTS 中增加词典并扩展 normalizeLocale(见 README Development / Languages)。

维护者在仓库提供无外部依赖的 Node 测试,例如:

node test/smoke-test.mjs
node test/client-locale.mjs

结尾

DSH 生态强调「一切皆插件」;dsh-session-plugin-manager 解决的是会话级收窄插件模型面的需求:右栏开关、状态按 session 落盘、与设置页列表一致。需要安装说明与验证清单时,以 GitHub README 为准;社区索引见 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜