dsh-hot-installer:DeepSeek Harness 插件免重啓增刪與熱更新

前言

DeepSeek Harness(DSH)採用“一切皆插件”的組織方式,但插件的加入、移除和版本更新通常要重啓 dsh 才能生效。對於正在使用長駐表面的開發者來說,重啓會打斷當前會話。dsh-hot-installer 解決這個問題:安裝一次並重啓一次後,後續 dsh plugin add / remove / update 不再需要重啓。

這是什麼

dsh-hot-installer 是 KYinCode 維護的 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

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

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

小夜