前言¶
DeepSeek Harness(DSH)采用「一切皆插件」的架构,社区插件会随 profile 一起加载。排查冲突、对比「最小可用环境」或临时收窄功能面时,往往需要把一批第三方 bundle 关掉,而不是逐个在列表里点开关。官方插件页本身支持单条启用/停用,但当非官方插件数量较多时,缺少「按当前方向一次性勾选再批量切换」的入口。
下面介绍维护者 WhatCannotBeSaid 发布的客户端插件 dsh-disable-unofficial-plugins:它在 DSH Web 的 Plugins → Installed 分组标题行右侧增加 Disable unofficial plugins…(中文界面下为对应文案),用 checklist 选择要切换的非官方插件,只改启用状态,不卸载、不删文件与配置。
这是什么¶
- 名称:
dsh-disable-unofficial-plugins(npm 包名与仓库同名) - 分类:客户端(
dsh.client.platform为web) - 维护者:WhatCannotBeSaid
- 版本(package.json):1.3.1
- 许可证:MIT
- 目录页:SkillHub 插件条目
- 源码与文档:GitHub 仓库
插件通过纯 DOM 注入挂在官方插件页上,不接管 React 树;读写均走 ctx.get('remote.pluginManager') 上的 listBundles() 与 setBundleEnabled(name, enabled)(Cordis 中 remote 各命名空间为带点服务名,不能使用 ctx.get('remote').pluginManager)。
核心功能¶
按钮位置与两种模式¶
按钮固定在 Installed 分组标题行(section[data-plugin-group="bundles"])最右侧,与标题、数量垂直居中,不改变行高。
- 当前存在已启用的可切换非官方插件时,按钮处于「停用」侧;点击后列出这些插件。
- 当所有可切换的非官方插件都已停用时,按钮文案切换为 Enable unofficial plugins…,点击后列出当前已停用的非官方插件,用于批量重新启用。
确认对话框与 checklist¶
点击按钮先弹出确认对话框,内含 checklist:
- 默认全选,因此「全部停用」仍是两次操作(点按钮 + 确认);取消勾选即保留该项,仅对其余勾选项执行切换。
- 工具栏提供 Select all / Select none(中文:全选 / 全不选),以及实时计数 N of M selected(中文:已选 N / M)。
- 主按钮文案随选择变化,例如
Disable 17 plugins/停用 17 个插件;若一项都未勾选,主按钮置灰且点击无效。
确认后插件串行逐个切换;单个失败不会中断后续项。结束后展示结果报告:成功数量、失败项、被跳过的只读项,以及需下次启动 DSH 才生效的项数。失败行内联展示错误码;完整诊断放在该行 Full diagnostics(完整诊断)折叠区,默认收起。
何谓「非官方插件」¶
进入 checklist 须同时满足:
- 不是内置 bundle:
@deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app、@deepseek-ai/dsh-headless、@deepseek-ai/dsh-sdk-app、@deepseek-ai/dsh-acp-app、@deepseek-ai/dsh-sdk-minimal; - 与官方插件页 Installed 分组使用相同过滤(已安装或非 optional),范围与分组旁计数一致;
- bundle 名不以
@deepseek-ai/开头(DSH 自带包均在该 scope 下;社区包可能是@michengai/、@liustack/等); - 不是本插件自身(否则一点即自毁按钮)。
进一步分为:可停用(当前启用且可通过 profile bundle 层修改)、可启用(非官方且已停用)、只读(存在 readOnlyReason,两种 checklist 均不出现,但在确认与结果中说明原因)。
明确不做的事¶
停用/启用仅修改 profile 的 bundle 层(dsh.profile.bundles);从不卸载插件,不删除插件文件或配置数据,也不影响官方插件。
界面语言¶
注入文案跟随 Settings → General → Language;插件向宿主 locale 服务注册中英文词典,切换语言时会重绘按钮、悬停提示及已打开对话框(对话框原地刷新,保留勾选与进行中的操作)。cancel / close 使用宿主 common 命名空间,不在本插件词典中重复定义。
按钮不可用时的提示¶
悬停会给出具体原因,例如:没有可切换的非官方插件、未安装任何非官方插件、正在读取列表或正在执行批量操作、插件管理服务尚未挂载(会自动重试)。可用时悬停说明可停用/可启用数量,并注明「只停用不卸载」或「只启用不安装」;存在只读项时会附加将被跳过的数量。
安装与启用¶
安装后需重启 DSH:客户端 bundle 仅在模块图重组时刷新,仅刷新页面仍可能命中旧缓存。
从 npm 安装(将 <profile> 换成目标 profile,例如 web 或 dsh-tui):
dsh plugin --profile <profile> add dsh-disable-unofficial-plugins
或从 GitHub 安装:
dsh plugin --profile <profile> add github:WhatCannotBeSaid/dsh-disable-unofficial-plugins
卸载本插件(示例 profile 为 web):
dsh plugin --profile web remove dsh-disable-unofficial-plugins
卸载不会自动恢复你此前停用的插件,也不会撤销你此前启用的插件。
典型用法¶
- 打开 DSH Web,进入 Plugins,找到 Installed 分组标题行右侧的新按钮。
- 需要暂时关闭大部分社区插件时:点击 Disable unofficial plugins…,在 checklist 中取消勾选要保留的项,确认后主按钮会显示将要停用的数量。
- 需要恢复时:当全部可切换项已停用后,按钮变为 Enable unofficial plugins…,同样默认全选,取消勾选即保留停用状态。
- 查看结果报告:留意失败项的内联错误码与 Full diagnostics;若报告提示部分变更需下次启动生效,按提示重启 DSH。
适用场景与注意¶
适合:本地或测试 profile 下快速做「非官方插件全开/全关」或部分保留;对比问题是否来自某一类社区 bundle;在不动卸载与配置文件的前提下收窄加载面。
注意:
- 本插件以当前 DSH 进程权限运行,安装前请阅读 仓库源码 与 MIT 许可证,自行判断是否信任维护者与代码行为。
- 只读(官方托管、不可管理)的非官方项不会出现在 checklist,仅在对话框与结果中说明。
- SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;插件来源以 GitHub 与 npm 包为准。
结尾¶
dsh-disable-unofficial-plugins 在官方插件页 Installed 一行补上「非官方插件批量停用/启用」入口:默认全选、可精细反选,只切换启用状态且不卸载。若你经常在多插件 profile 下调试 DSH,可以用它减少重复点击。
- 目录页:https://www.skillhub.cn/plugins/WhatCannotBeSaid/dsh-disable-unofficial-plugins
- GitHub:https://github.com/WhatCannotBeSaid/dsh-disable-unofficial-plugins