dsh 怎么关闭插件而不卸载?DSH plugin 禁用与卸载的区别、配置覆盖与 DeepSeek Harness 恢复方法

卸载与清理发布于 2026-08-26作者: DSH Plugin 插件中心
DeepSeek HarnessDSH plugin关闭插件禁用插件卸载插件
dsh 没有独立的「关闭插件」命令:临时禁用靠 profile 的 cordis.patch.yml 覆盖该插件的行、或从 dsh.profile.bundles 摘除条目(保留依赖);确定不用再 dsh plugin remove 卸载。

dsh 没有独立的「关闭插件」命令:dsh plugin 只转发 pnpm 的动词(add / remove / update / why)。想临时禁用插件,推荐用 profile 的 cordis.patch.yml 覆盖该插件的行(后层覆盖前层,官方文档明确支持用户覆盖);想彻底删除才用 dsh plugin remove——它会把依赖和配置层一起删掉。

先分清:关闭 vs 卸载

「关闭」和「卸载」对 dsh 来说是两件不同的事,别混用。 DSH 的每个 profile 由两部分组成:package.json(外置插件依赖)+ dsh.profile(按顺序排列的 bundles 列表,决定哪些配置层生效)(来源)。

操作依赖(package.json)配置层(dsh.profile.bundles)什么时候用
关闭/禁用保留不生效暂时不用、想留着插件
卸载(dsh plugin remove删除删除确定不用、清空间、排冲突

官方对 dsh plugin remove 的定义是:同时移除依赖和配置层来源)。所以「关」和「删」的后果完全不同——关闭留了后悔药,卸载没有。

禁用插件的两种真实做法

DSH 的配置是按层组合的:bundle 层 → profile 的 cordis.patch.yml → 全局的 $DSH_HOME/cordis.patch.yml → --patch 覆盖,后层覆盖前层。 基于这个机制,禁用一个插件有两种做法(来源):

  1. 推荐:用 cordis.patch.yml 覆盖插件的行。官方明确说用户可以在自己的 cordis.patch.yml 里覆盖 bundle 的行、而不改动插件包本身。给目标插件所在的行写覆盖(把它的配置置空或改成无操作),该插件的实际行为就被停掉,依赖照常保留。
  2. 备选:从 dsh.profile.bundles 摘除条目。把该 bundle 的名字从 bundles 列表里去掉,配置层不再应用,但依赖还留在 package.json。注意官方提醒「dsh.profile 由 dsh plugin 维护、不手写」——手动编辑要克制,改完用 --dump-config 验证。

操作步骤(以 cordis.patch.yml 覆盖为例):

  1. 打开 profile 目录下的 cordis.patch.yml$DSH_HOME/profiles/web/cordis.patch.yml)。
  2. 找到要禁用的插件行,写入覆盖配置(具体写法取决于插件定义的行;一般把它的配置置空即可)。
  3. 验证组合结果:
    bash
    dsh --profile web --dump-config
    
    确认该插件的层已不再生效。
  4. 刷新 Web UI(或重启 dsh web)让新配置生效。

恢复与选择建议

恢复禁用与操作方向相反:撤销覆盖或加回 bundle,然后验证。 两个实用建议:

  1. 恢复方法:删掉 cordis.patch.yml 里对应覆盖行(做法一),或把 bundle 名加回 dsh.profile.bundles(做法二),再 --dump-config 确认层生效、刷新页面即可。
  2. 什么时候直接卸载:确定不再用、要清理磁盘空间、或怀疑插件与别的插件冲突时,别留着——直接卸载:
    bash
    dsh plugin --profile web remove 包名
    
  3. 想可视化操作:图形化卸载与残留清理走 Web UI 的「设置 → 插件中心」——即社区插件市场 DSH Plugin Hub,比命令行直观。
dsh-plugin-hub · 确认卸载
DSH Plugin Hub 卸载确认弹窗:确认后才从当前环境移除插件

注意事项

  1. 没有 disable 命令,关闭插件 = 配置层停用,不是依赖删除(来源)。
  2. dsh plugin remove 连依赖带配置层一起删,卸载前想清楚。
  3. 覆盖插件行是官方支持的禁用方式,比手改 dsh.profile.bundles 更稳妥。
  4. 改完任何配置都用 dsh --profile <name> --dump-config 验证组合结果。
  5. 禁用后插件依赖仍在,磁盘空间不会被释放;要省空间就卸载。
  6. 拿不准的插件先关不删,确认不需要再通过 DSH Plugin Hub 或命令行卸载。

来源:打包与安装插件(官方教程)dsh CLI 参数定义(源码)

常见问题

dsh 有「关闭插件」的命令吗?

没有独立的 disable 命令。dsh plugin 子命令把参数原样转发给 pnpm,官方定义的动词是 add、remove、update、why 等(源码确认)。想临时停用走配置覆盖或摘除 bundles;想彻底删除用 dsh plugin remove。

关闭插件和卸载插件有什么区别?

关闭 = 插件的配置层不再生效、但依赖还留在 profile 里,随时能恢复;卸载 = 依赖和配置层一起删除(dsh plugin remove 两者都删)。拿不准就先关不删。

怎么临时禁用某个插件?

推荐用 profile 的 cordis.patch.yml 覆盖该插件的行——官方明确用户可以覆盖 bundle 的行而不改动插件包本身,后层覆盖前层;或从 dsh.profile.bundles 里摘除该 bundle 的条目(依赖保留、层不生效)。改完用 dsh --profile web --dump-config 验证层状态。

禁用后怎么恢复?

撤销 cordis.patch.yml 里的覆盖行,或把 bundle 名加回 dsh.profile.bundles,刷新/重启 Web UI 即恢复。恢复后用 --dump-config 确认该插件的层重新生效。

什么时候该用卸载而不是关闭?

确定不再用、需要清理空间、或怀疑插件与别的插件冲突时,直接 dsh plugin remove 卸载;只是暂时影响使用、还想留着它,就先关闭。图形化卸载可走 DSH Plugin Hub 的「设置 → 插件中心」。

来源