dsh-plugin-butler:在 Web UI 中管理 DSH 插件

前言

DSH 的理念是「一切皆插件」。插件多起來之後,常見操作會分散到命令行和配置文件裏:安裝插件、停止某個插件、查看 README、檢查版本、處理啓動失敗。dsh-plugin-butler 把這些動作集中到 DSH Web UI 的「設置 → 插件」中,提供一個「插件管理」標籤頁。

這是什麼

imtanhui/dsh-plugin-butler 是一個 DSH 插件,定位爲插件管家:在 Web UI 中圖形化管理 DeepSeek Harness (DSH) 插件。許可證爲 MIT。本文參考的 package.json 版本爲 0.6.0,要求 Node >=18,react ^18.2.0 是 optional peerDependency。它強調零構建、零運行時依賴。

核心功能

查看與中文目錄

  • 官方 / 外部兩類分組,可摺疊。
  • 內置 130+ 官方模塊的中文目錄,包含中文名、一句說明和分類。
  • 中文目錄 / 分組 / 說明覆蓋會存到 ~/.dsh/plugin-manager/{catalog.json,groups.json}。

即時啓停與健康狀態

  • 啓停會精確編輯 profile 的 cordis.patch.yml,增刪 disabled: true 塊。
  • 編輯後由 DSH 的 HMR 觀察器熱應用,無需重啓。
  • 失敗行紅色高亮,支持「只看失敗」篩選。
  • 每行展開後可查看注入的服務 / 提供方依賴。

自定義分組

  • 外部插件可按分組組織,支持新建 / 重命名 / 刪除 / 移動。
  • 分組持久化到 ~/.dsh/plugin-manager/groups.json。
  • 支持一鍵過濾。

更新檢測與一鍵更新

「檢查更新」會對比 registry latest,有新版的行會顯示 當前 → 最新。

「更新」會執行類似下面的安裝命令:

pnpm add <name>@latest

更新失敗時自動回滾舊版本。link / file / git 源的依賴標記爲不可自動更新。

卸載

卸載會從 dsh.profile.bundles 移除,並執行:

pnpm remove

失敗時自動回滾。更新 / 安裝 / 卸載鏈路整體串行互斥。

插件詳情

  • 插件詳情彈窗會顯示 Markdown README。
  • README 渲染使用插件內置的手寫渲染器,零依賴。

插件市場

  • 檢索 GitHub topic:dsh-plugin 倉庫,按 star 排序並分頁。
  • 每項顯示作者 / star / 簡介,支持「詳情」和「一鍵安裝」。
  • 市場依賴 GitHub Search API;未認證時存在 60 次/小時限流,主要影響頻繁搜索。
  • 該市場檢索獨立 GitHub 倉庫,不等同於 DeepSeek 或幻方官方應用商店。

依賴關係圖

  • 全屏依賴圖,採用從左到右的思維導圖佈局。
  • 節點顯示項目名,懸停顯示詳情;官方節點爲藍點,外部節點爲黑點。
  • 支持拖拽節點、懸停高亮上下游。
  • 依賴解析基於運行時 fiber._store 盡力完成,語義級衝突不在檢測範圍。

安裝與啓用

下面先安裝插件,再重啓 profile 讓標籤頁生效。

1、從 GitHub 安裝:

dsh plugin --profile <name> add github:imtanhui/dsh-plugin-butler

這條命令把 dsh-plugin-butler 添加到指定 profile。

2、本地源碼安裝(開發調試):

cd /path/to/dsh-plugin-butler
dsh plugin --profile <name> add .

適合先閱讀源碼或做本地調試。

3、重啓 profile:

重啓後,Web UI 的「設置 → 插件」會出現「插件管理」標籤頁。

典型用法

檢查更新

1、打開「設置 → 插件 → 插件管理」。

2、點「檢查更新」。

3、插件會對比每個已裝 npm 依賴的 registry latest,有新版的行會顯示 當前 → 最新。

4、點對應行的「更新」。

5、如果更新失敗,會回滾到上一版本。

本地開發

pnpm run check
pnpm test

pnpm run check 用於檢查源文件語法,pnpm test 用於運行測試。

適用場景與注意

適合經常安裝、更新、啓停 DSH 插件的開發者,尤其是希望在一個界面裏查看版本、README、依賴關係和失敗狀態的維護場景。

使用前建議檢查:

  • 插件以當前 DSH 進程權限運行;安裝前應檢查源碼、許可證、依賴和實際執行的命令。
  • 禁用被依賴的條目可能導致 profile 啓動失敗,官方爲 fail-loud 設計;恢復時可手動刪除該 profile cordis.patch.yml 裏的 disabled 塊。
  • 核心行受保護,不能從 UI 禁用,需要手工改配置文件。
  • !!js 表達式控制的行 UI 不處理,須手工編輯。
  • link / file / git 源的依賴不可自動更新。
  • 市場搜索受 GitHub Search API 未認證限流影響。
  • 依賴圖基於運行時 fiber._store 盡力解析,語義級衝突不在檢測範圍。
  • GET 請求帶同源校驗,用於防 CSRF / DNS-rebinding。

鏈接

  • GitHub:https://github.com/imtanhui/dsh-plugin-butler
  • 目錄頁:本文資料未提供可直接引用的目錄頁 URL;請以實際 DSH 社區目錄站點爲準。
羽毛球分组比赛记分
小程序二维码

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

小夜