dsh-hot-installer:DeepSeek Harness 插件免重启增删与热更新

前言

DeepSeek Harness(DSH)采用“一切皆插件”的组织方式,但插件的加入、移除和版本更新通常要重启 dsh 才能生效。对于正在使用长驻表面的开发者来说,重启会打断当前会话。dsh-hot-installer 解决这个问题:安装一次并重启一次后,后续 dsh plugin add / remove / update 不再需要重启。

这是什么

dsh-hot-installerKYinCode 维护的 DSH 插件,许可证为 MIT。它在 profile 中常驻,监听插件清单变化,把新增、移除、升级操作应用到运行中的插件树。整个过程不写任何配置文件、不改补丁层。

核心功能

下面介绍它已经具备的能力:

  • 热装:监听 profile 的插件清单变化,新增包当场挂载,并读取该包声明的补丁文件 cordis.patch.yml 注入运行中的插件树。
  • 热卸:移除包当场卸载,按“包→行”映射移除对应插件行。
  • 热更新:升级包当场重载。
  • 补丁层保护:手动编辑 cordis.patch.yml 冲掉热装行时自动补回;如果补丁行显式写了 disabled: true,则不补。
  • 失败保护:升级或热重载失败时先预检,必要时回滚旧版本并重新挂载。
  • 自身热更新:从 0.4.4 起,dsh-hot-installer 自身更新也可免重启。
  • 日志:记录热装、热卸和热重载过程。

安装与启用

先安装插件,然后重启一次 dsh。下面的示例使用 web profile:

dsh plugin --profile web add dsh-hot-installer

重启后,后续插件操作即可在当前 dsh 进程中即时生效。该插件要求 Node >= 20,并适合运行在带 HMR 的长驻表面(如 dsh web);没有 HMR 的一次性命令行面会正常启动但永不激活监听。

典型用法

安装新插件:

dsh plugin --profile web add some-plugin

卸载插件:

dsh plugin --profile web remove some-plugin

升级插件:

dsh plugin --profile web add some-plugin@latest

查看热装、热卸和热重载日志:

~/.dsh/logs/dsh-hot-installer/dsh-hot-installer.log

本地验证仓库内测试:

npm install && node --test test/

适用场景与注意

适合需要在 dsh web 等长驻 DSH 表面中频繁安装、移除或升级插件的开发者。插件以当前 dsh 进程权限运行,安装前应检查源码与 MIT 许可证。

需要关注以下边界:

  • 升级失败且回滚失败时才需要重启;回滚成功则继续用旧版本。
  • 卸载时若对应行已不在活配置,直接视为已卸载成功,不会误报 restart required
  • Windows 上本地 link: 安装存在 junction 路径缓存问题:同一次 dsh 运行期间把 link 目标切换到另一目录再热升级,可能假成功;需重启一次或改用 npm 正式包。
  • 插件不写任何配置文件、不改补丁层。

结尾

dsh-hot-installer 将 DSH profile 插件的增、删、更新从重启后生效改为当前进程内即时生效,并保留失败回滚与补丁层保护。项目仓库:

https://github.com/KYinCode/dsh-hot-installer

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

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

Xiaoye