前言¶
DSH 走「一切皆插件」的路線,系統自帶的插件加上自己陸續安裝的插件會越積越多。而在 Web UI 裏,查看和管理這些插件的入口在「設置 → 插件」,每次都要翻進設置頁才能確認裝了什麼、哪些在運行。
dsh-plugin-sidebar-manager 解決的就是這個操作路徑問題:把「插件」按鈕直接放進 Web UI 左側欄,點開即可分類瀏覽、搜索,並對用戶新增的插件做運行時啓停。下面介紹它的功能、安裝方法和背後的機制。
這是什麼¶
一句話定位:爲 DSH Web UI 左側欄添加「插件」按鈕,將系統自帶插件和用戶新增插件分類展示,並支持搜索與運行時啓停。
- 維護者是 rain02333z-spec,源碼託管在 GitHub,許可證 MIT,當前版本 0.1.1。
- 它是一個運行在 DSH Web 客戶端的界面插件,
package.json中dsh.client.platform爲web。
核心功能¶
入口與面板
- 左側欄展開時顯示「插件」與插件總數,收起時顯示與「設置 → 插件」一致的圖標按鈕。
- 點擊按鈕後,在側欄上方打開插件面板。
- 支持 Escape、點擊面板外部和再次點擊入口三種方式關閉面板。
瀏覽與搜索
@deepseek-ai/*與cordis:*歸爲「系統插件」,其他模塊歸爲「用戶新增」,兩個分組可獨立展開或收起。- 支持按完整模塊名、短名稱或 Loader
entryId搜索,不區分大小寫。 - 界面跟隨 DSH 全局語言,完整支持簡體中文和英文。
啓停與狀態處理
- 用戶新增插件支持運行時啓用和停用,操作後重新讀取 Host 真實狀態。
- DSH 與 Cordis 系統插件保持只讀,插件管理器自身也不可修改。
- 針對加載中、空列表、搜索無結果、加載失敗和單項操作失敗都有對應狀態,加載失敗可重試。
安裝與啓用¶
需要 DSH 0.1.0-rc.7 和 pnpm。按順序執行下面四步:
# 1. 克隆倉庫
git clone https://github.com/rain02333z-spec/dsh-plugin-sidebar-manager.git
cd dsh-plugin-sidebar-manager
# 2. 準備本地安裝包
node scripts/prepare-checkout.mjs
# 3. 安裝到 web profile
dsh plugin --profile web add ./packages/dsh-plugin-sidebar-manager
# 4. 重啓 DSH Web
dsh web
先克隆倉庫並準備本地安裝包,再通過 dsh plugin 把它裝進 web profile,最後重啓 DSH Web 使其加載。重啓後,左側欄底部出現「插件」入口即表示安裝成功。
卸載同樣通過 dsh plugin 完成:
dsh plugin --profile web remove dsh-plugin-sidebar-manager
運行機制¶
插件分爲 Host 與 Client 兩部分:
- Host 端掛載
pluginManager.setEnabledRemote,通過 Cordis Loader 的Entry.update({ disabled })修改當前運行狀態。 - Client 端複用 DSH 內置只讀
pluginInventory.list()Remote,並註冊到sidebar.footer.action列表 slot。
這些能力依賴 DSH 0.1.0-rc.7 提供的 pluginInventory Remote、sidebar.footer.action 列表 slot、DSH Client Module Loader,以及 Typert Remote 生成與加載機制。
有一點需要明確:啓停只修改當前 Loader 的運行狀態,不寫回 profile 的 cordis.patch.yml。重啓 DSH 後,插件狀態會按原 profile 配置恢復。
開發與驗證¶
源碼使用 DSH monorepo 的雙端插件構建約定。將本倉庫同步到 packages/extensions/plugin-manager,並確保根 tsconfig.host.json、tsconfig.client.json 引用對應項目後運行:
Set-Location <DSH monorepo root>
pnpm exec vitest run packages/extensions/plugin-manager/tests
pnpm exec tsc -b packages/extensions/plugin-manager/tsconfig.host.json packages/extensions/plugin-manager/tsconfig.client.json
pnpm --filter dsh-plugin-sidebar-manager bundle
pnpm --filter dsh-plugin-sidebar-manager pack
面板屬於可見 Web 行爲,合入 DSH 倉庫前還應運行 pnpm run test:gui 和 Web replay 測試。
適用場景與注意¶
適合兩類使用者:一是經常需要在 Web UI 裏查看、檢索已裝插件的人;二是需要臨時停用某個用戶新增插件來觀察行爲的開發者。對系統插件只讀、不改動內置行爲的邊界,也適合希望保持環境穩定的人。
安裝前注意以下幾點:
- 當前源碼和安裝包面向 DSH
0.1.0-rc.7,安裝前先確認你的 DSH 版本。 - 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(本項目爲 MIT)。
- 啓停操作不持久化,重啓 DSH 後插件狀態按原 profile 配置恢復,這一點不要誤當作配置修改手段。
小結¶
dsh-plugin-sidebar-manager 把插件管理從「設置 → 插件」搬到側欄入口,分類、搜索、運行時啓停都在一個面板裏完成,系統插件保持只讀,行爲邊界清晰。倉庫與目錄頁如下: