DSH 的插件機制允許開發者通過 dsh plugin 命令爲 Profile 添加擴展。然而,DSH 自帶的 Plugin list(設置 → 插件)展示的是加載器中的所有條目,將官方包與第三方包混在一起,且沒有安裝源、版本或 Profile 歸屬信息。inxups/dsh-user-plugins 在 Web GUI 中增加了一個專門的“我安裝的插件”標籤頁,聚焦於你在各 Profile 中手動安裝的第三方依賴,並提供其版本、類型和運行狀態。
這是什麼¶
這是一個 DSH 插件,採用 Host(Node.js)+ Browser(React)雙面架構。它在 DSH 的 Web GUI 設置中新增“我安裝的插件”標籤頁,用於列出各 Profile 中已安裝的插件。它通過讀取 Profile 目錄下的 package.json 依賴和 bundle 列表,展示安裝源(spec)、版本、類型(bundle/client/plain)以及加載器實時狀態。
核心功能¶
- Web GUI 面板:在 DSH 設置 → 插件中增加“我安裝的插件”標籤頁。
- 列出已安裝的插件:列出你通過
dsh plugin --profile <name> add裝進各 Profile 的插件。 - 顯示安裝源、版本、類型:展示插件來源(github、link 等)、磁盤版本及貢獻類型。
- 顯示實時加載器狀態:展示插件在當前加載器中的實時階段。
- 讀取 profile 的 package.json 依賴:以磁盤上的依賴爲準,而非運行時條目。
- 使用平臺自帶 UI 原子:界面元素與 DSH 主 GUI 保持一致的設計風格。
- 區分官方包與第三方包:自動過濾官方
@deepseek-ai/*包,僅顯示第三方包。
與自帶清單的區別¶
內置的 ui-settings-plugin-inventory 與本插件的數據源與範圍不同:
| 特性 | Plugin list(自帶) | 我安裝的插件(本插件) |
|---|---|---|
| 數據源 | 加載器條目(運行時) | Profile 的 package.json 依賴 + bundle 列表(磁盤) |
| 範圍 | 全部組成的插件,含官方包 | 僅列你裝進 Profile 的包,官方包一律不顯示 |
| 安裝源 spec | 無 | 有(github: / link: / 版本範圍) |
| 版本 | 無 | 有(讀包的 manifest) |
| 歸屬 Profile | 無 | 有,並標出當前運行中的那個 |
安裝與啓用¶
使用官方命令安裝插件:
dsh plugin --profile web add github:inxups/dsh-user-plugins
安裝後需重啓 dsh,使插件進入組合。若從源碼運行,需將 dsh 替換爲 pnpm dsh。
典型用法¶
安裝完成後,訪問 Web GUI 的「設置 → 插件」,點擊「我安裝的插件」標籤頁即可查看列表。
通過 GET /dsh-user-plugins/api/list 接口可以獲取插件列表的只讀快照,返回數據包含 Profiles 列表、各 Profile 下的插件詳情(包含 spec、kind、phase 等字段)。
限制與注意事項¶
- 官方包不顯示:
@deepseek-ai/*官方包不會出現在列表中。 - 版本與描述限制:
version/description僅對 Profile 自己node_modules裏的包有效;由 DSH 安裝提供的官方包這些字段爲null。 - 狀態推斷:當前運行中的 Profile 狀態通過“與加載器條目匹配數最多”推斷,而非直接讀取啓動參數。
- 無變更訂閱:數據按請求實時讀取,沒有變更訂閱機制;面板上的“刷新”按鈕會重新拉取數據。
- 語言支持:目前僅支持 zh / en 兩套字典。
總結¶
該插件與內置的清單互補,適合需要精確管理 Profile 中第三方依賴、查看安裝來源及運行狀態的開發者。