dsh-plugin-sidebar-manager:在 DSH Web 側欄分類管理與啓停插件

前言

DSH 走「一切皆插件」的路線,系統自帶的插件加上自己陸續安裝的插件會越積越多。而在 Web UI 裏,查看和管理這些插件的入口在「設置 → 插件」,每次都要翻進設置頁才能確認裝了什麼、哪些在運行。

dsh-plugin-sidebar-manager 解決的就是這個操作路徑問題:把「插件」按鈕直接放進 Web UI 左側欄,點開即可分類瀏覽、搜索,並對用戶新增的插件做運行時啓停。下面介紹它的功能、安裝方法和背後的機制。

這是什麼

一句話定位:爲 DSH Web UI 左側欄添加「插件」按鈕,將系統自帶插件和用戶新增插件分類展示,並支持搜索與運行時啓停。

  • 維護者是 rain02333z-spec,源碼託管在 GitHub,許可證 MIT,當前版本 0.1.1。
  • 它是一個運行在 DSH Web 客戶端的界面插件,package.jsondsh.client.platformweb

核心功能

入口與面板

  • 左側欄展開時顯示「插件」與插件總數,收起時顯示與「設置 → 插件」一致的圖標按鈕。
  • 點擊按鈕後,在側欄上方打開插件面板。
  • 支持 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.setEnabled Remote,通過 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.jsontsconfig.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 把插件管理從「設置 → 插件」搬到側欄入口,分類、搜索、運行時啓停都在一個面板裏完成,系統插件保持只讀,行爲邊界清晰。倉庫與目錄頁如下:

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

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

小夜