dsh-plugins-hub:DeepSeek Harness 插件分組管理與更新工具

前言

DeepSeek Harness (DSH) 採用“一切皆插件”的架構,隨着使用深入,官方內置插件與第三方社區插件的數量逐漸增多,混在一起管理變得不便。dsh-plugins-hub 在設置中爲這兩類插件提供獨立的管理面板,支持從 npm、Git 等多種來源檢查更新、一鍵更新、卸載及實時啓停。

核心功能

  • 分組管理:在“設置 → 插件”中,默認展開“第三方插件”,摺疊“官方插件”。官方插件爲只讀清單,第三方插件支持查看詳情與操作。
  • 多來源支持:支持 npm、Git、本地鏈接等多種來源的插件管理。
  • 安全機制:所有宿主路由僅接受本機迴環請求,寫操作需自定義頭 x-dsh-plugins-hub。包名與 entry id 過白名單正則,使用 execFile 參數數組執行命令,避免命令注入。
  • 受保護行保護:熱重載鏈、Web服務鏈、設置面板及本插件自身不可被卸載或停用。官方內置插件只能停用,不可卸載。

安裝與啓用

安裝插件需要通過命令行執行,安裝後需重啓 DSH Web 服務才能生效。

dsh plugin --profile web add dsh-plugins-hub
dsh web

安裝完成後,進入 設置 → 插件 → 第三方插件 即可使用。

插件分組與判定

插件列表分爲“第三方插件”和“官方插件”兩組卡片。判定插件歸屬不看包名,而是看包實際落在哪裏:

  • 第三方:落在 profile 自己的 node_modules(含 link: / file: 依賴)。
  • 官方:只經安裝閉包 ~/.dsh/profiles/node_modules 解析到。
  • 兜底:解析不到時,回退 @deepseek-ai/ 前綴啓發式展示。

更新與生效時機

  • 啓用 / 停用:修改 profile 的 cordis.patch.yml。DSH 的配置熱重載會在 1~3 秒內重組插件樹,無需重啓。
  • 更新 / 卸載:等價於 dsh plugin --profile web add|remove,會同步 dsh.profile.bundles。卸載非 bundle 插件會將 insert 行改爲 disabled: true。需要重啓 dsh web 纔會徹底生效。

支持的來源及其行爲如下:

來源 檢查更新 更新 卸載 啓停
npm 對比 registry 的 latest pnpm add <name>@latest ✅ ✅
git git ls-remote 對比 commit pnpm add <原 spec> ✅ ✅
link: / file: 讀取目錄 git 狀態 若工作區乾淨,git pull --ff-only ✅ ✅
官方內置 — — ❌ ✅(寫入補丁層)

安全機制

  • 網絡邊界:所有宿主路由僅接受本機迴環請求,校驗 Host / Origin。寫操作還要求自定義頭 x-dsh-plugins-hub。
  • 命令執行:不使用 shell 拼接命令,全部走 execFile 參數數組。
  • 受保護行:熱重載鏈(cordis-plugin-timer / cordis-plugin-hmr)、Web 服務鏈(dsh-host-webserver / dsh-web-app 等)、設置面板及本插件自身,不能被停用或卸載。

架構說明

宿主半邊不 import 任何 @deepseek-ai/* 包,全部按鴨子類型消費(loader.entries()、webServer.register),因此不需要 peer 依賴閉包,也能跨 DSH 版本繼續加載。

參考資源

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

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

小夜