@moyumole/dsh-plugin-updates:對照 npm 檢查並就地更新 Profile 中的第三方 DSH 插件

前言

在 DeepSeek Harness(DSH)裏,第三方插件通常以 bundle 形式掛在某個 Profile 的 package.json 上,版本分散、來源也可能是 npm、GitHub 或本地路徑。手動逐個查 npm、再跑 dsh plugin 升級,步驟重複且容易漏。下面介紹的插件把「當前 Profile 裏已安裝的第三方 bundle 與 npm latest 對比」和「通過官方插件管理器就地更新」收進同一套 UI,並在有可用更新時用角標提醒。

這是什麼

@moyumole/dsh-plugin-updates(倉庫 Moyumole/dsh-plugin-updates)由維護者 Moyumole 發佈,npm 包名爲 @moyumole/dsh-plugin-updates,當前資料中的版本爲 0.3.3。它在瀏覽器側註冊面板與角標,在 Host 側只讀彙總本機各 Profile 的第三方插件清單,並向 npm registry 查詢是否有新版本;實際安裝與卸載仍走 DSH 自帶的 remote.pluginManager(removeBundle → installBundle(name@latest, { enabled })),不另起後臺服務或定時任務。

社區目錄 skillhub.cn 將其歸類爲聯網工具(因需只讀訪問 npm);README 中同時標註插件類別爲 UI & Experience(plugin management)。目錄站點與 DeepSeek / 幻方無官方從屬關係,僅作發現與鏈接用途。

核心功能

三個入口,同一面板

  1. 右側邊欄 →「Start / Guide」→「Plugin updates」卡片(有更新時顯示紅點)。
  2. 「Settings → Plugins」頁上的 Plugin updates 標籤(全局,無需打開 Session)。
  3. 左側邊欄 Plugins 圖標角標(點擊仍進入 Plugins 頁)。

檢查策略

  • 頁面加載時檢查一次;頁面可見時每 30 分鐘 再查(頁面隱藏時暫停計時,回到前臺會補查),並支持手動刷新。
  • Registry 響應緩存 10 分鐘。
  • 僅檢查第三方 bundle:official !== true、availability === 'profile'、installed === true,且排除本插件自身。
  • 非 npm 來源(git、本地 path 等)的行會標記爲不支持更新。

本機其他 Profile(只讀)

面板會列出本機其他 DSH Profile 中的第三方插件及同樣的更新狀態,不會從這裏修改那些 Profile;需要在對應 Profile 窗口操作,或使用 dsh plugin --profile <name> ...。

更新與批量更新

  • 單行 Update 或 Update all;大體積包(解壓後超過 30 MB,例如 README 提到的 dsh-pet 約 71 MB)在「Update all」中會跳過並提示,需單獨更新。
  • 更新過程有階段文案(removing / installing / applying / rollback)與進度條;頂部居中 toast 報告成功、失敗、回滾或批量結果。
  • 失敗時會盡力恢復舊版本;若回滾也失敗,會保留可關閉的錯誤提示並重新加載磁盤狀態,使 UI 與 Profile 一致。

語言

界面語言隨 DSH:Host locale 以 zh 開頭時爲中文,否則爲英文;切換語言後面板文案、標籤與「上次檢查」時間格式會隨之更新。

兼容性與限制

README 寫明在 DSH 0.2.1-rc.3(Windows Desktop) 上驗證;插件線爲 0.3.x;示例 Profile 爲 desktop 與 web(安裝命令示例使用 --profile web,可按實際 Profile 名替換)。

DSH 版本 狀態
0.2.1-rc.3 已在 Windows 上驗證
其他 0.2.x 預期可用,未逐項驗證
其他版本 不支持

插件依賴 Host 的非公開擴展點(右側邊欄 tab 註冊、plugins.tab 槽位、sidebar.panellist 影子、remote.pluginManager 等),DSH 版本變更可能導致行爲變化;設計上以 UI 降級爲主而非崩潰。

安裝與啓用

推薦從 npm 安裝(將 web 換成你的 Profile 名):

dsh plugin --profile web add "@moyumole/dsh-plugin-updates"

也可在「Settings → Plugins → Add plugin」中填寫包名 @moyumole/dsh-plugin-updates。

固定 GitHub 版本安裝:

dsh plugin --profile web add "github:Moyumole/dsh-plugin-updates#v0.3.3"

倉庫根目錄即插件目錄,已提交 lib/client.js,安裝無需本地 build。

本地開發目錄:

dsh plugin --profile web add "<path>/dsh-plugin-updates"

會以 link: 依賴形式寫入 Profile 的 bundle 列表。

安裝前請自行查看倉庫源碼與 LICENSE;插件以當前 DSH 進程權限運行,更新操作會改動 Profile 的 package.json、pnpm-lock.yaml 與 node_modules,屬於 npm 供應鏈行爲,更新前應確認目標版本。

典型用法

從上述任一入口打開 Plugin updates 面板後,常見行狀態如下(摘自 README):

狀態 界面表現
有更新 顯示當前版本 → 最新版本,Update 可用
已最新 「Up to date」,無按鈕
不兼容 最新版的 engines.dsh / @deepseek-ai/dsh-* peer 與當前 DSH 不符,默認禁用更新按鈕
檢查失敗 僅該行標記失敗;網絡失敗時保留上次結果,可重試
非 npm 來源 「update not supported」

更新流程爲官方管理器的 removeBundle(name) 再 installBundle(name@latest, { enabled });插件在移除與重裝間隙會短暫不可用,瀏覽器側代碼通常在刷新或重啓 DSH 後生效。

權限與聯網

  • DSH 權限:不申請額外 DSH 權限;Host 只讀 <DSH_HOME>/profiles/*/package.json 與各 Profile node_modules 中的版本,並通過本地 Web 服務器的只讀路由 /plugin-updates/profiles 暴露 Profile 名與第三方包名/版本(不含路徑、憑證或 Session 數據)。Host 不會寫入 Profile 或自行安裝/卸載。
  • 外部服務:只讀請求 npm(registry.npmjs.org,失敗時回退 registry.npmmirror.com)的 <name>/latest,僅發送已安裝第三方 bundle 的包名。
  • 本地寫操作:僅通過官方插件管理器執行;本插件不直接跑 shell 或寫文件。
  • 遙測:無。

更完整威脅模型見倉庫 SECURITY.md。

適用場景與注意

適合在本機維護多個 DSH Profile、並主要通過 npm 安裝第三方插件的開發者:需要集中看到「誰落後 npm latest」、並希望從 UI 一鍵或批量升級當前 Profile 時使用。若插件來自 GitHub pin 或本地 link,面板仍會列出,但不會提供 npm 式更新。

務必注意:批量更新會跳過超大包;不兼容 DSH 的版本會被禁用按鈕;更新前請覈對版本與兼容性。社區目錄星標等元數據以站點爲準(資料中 GitHub 星標爲 0),功能細節以 README 與發佈包爲準。

結尾

@moyumole/dsh-plugin-updates 把第三方插件的版本對照、角標提醒與就地更新收進 DSH 界面,檢查依賴聯網只讀 npm,變更仍由官方插件管理器完成。進一步瞭解可訪問社區目錄頁 https://www.skillhub.cn/plugins/Moyumole/dsh-plugin-updates 與 GitHub 倉庫 https://github.com/Moyumole/dsh-plugin-updates。

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

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

小夜