前言¶
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 版本繼續加載。