前言¶
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 拨动开关。
关闭(仅本会话)时插件侧会:
- 通过
agent.ctx.tools.restrict({ deny })从下一轮请求的工具定义中移除该插件工具,模型无法看到或调用它们。 - 对该插件注册的 prompt section / context 做同名空段遮蔽(scoped system-prompt shadowing)。
- 对在
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 / 幻方无官方从属关系。
典型用法¶
- 打开右侧栏,进入 Plugins / 插件。
- 将某个 bundle 的开关拨到 off;行上会显示被隐藏的工具 / 技能数量。
- 需要一次性撤销本会话全部覆盖时,使用 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 目录页。