dsh-plugin-doctor:DSH 插件生態的診斷與決策工具

前言

在 DSH 插件生態裏,社區插件很多,實際使用時常見的問題不只是“找不到合適的插件”,還包括:這個插件和本地已安裝插件是否重複?聚合 bundle 是否已經提供了某個子插件?批量安裝多個倉庫是否會衝突?官方倉庫是否有尚未關閉的 Issue?本地 DSH 是否落後官方發行版?

直接手動搜索、安裝、卸載,容易依賴臨時判斷,也容易出現重複安裝、漏掉子插件、跳過預檢的情況。dsh-plugin-doctor 就是用來處理這類插件診斷與決策問題的工具。

下面介紹它適合做什麼、怎麼安裝、典型用法,以及使用時需要注意的邊界。

這是什麼

dsh-plugin-doctor 是 DSH 插件生態的診斷與決策工具,由 white-sand-grand 維護,許可證爲 MIT。

它面向 DSH 插件社區使用場景,提供社區插件搜索、功能重複判斷、插件關係圖、批量安裝前檢查、聚合 bundle 子插件識別、本地用量審計和官方版本同步檢查。

該插件要求 Node.js >=22.19。默認只讀,不會自行安裝、卸載或啓動 Web UI。

核心能力

社區插件搜索與重複判斷

它可以搜索社區插件,並返回匹配度、功能標籤、stars、更新時間和安裝引用。

在判斷是否重複時,它會比較插件說明文本、功能標籤和依賴,給出保留、移除或自研的建議。

社區搜索按以下順序降級:

  1. 即時 GitHub
  2. 進程內緩存
  3. 第三方 registry
  4. 內置靜態快照

結果會標註數據來源。

插件關係與全景圖

它可以生成插件相似度關係圖,說明兩個插件之間的相似度以及重疊來源。

它也可以生成 Mermaid 插件全景關係圖,並按以下層級劃分:

  • core
  • active
  • idle
  • review

這類圖適合用來查看已安裝插件之間的功能關係,而不是隻靠文字描述。

批量安裝前檢查

在批量安裝前,它會檢查:

  • 包名
  • 工具名
  • Cordis patch 行
  • peer 依賴

如果無法完成檢查,plugin_install_guard 會失敗關閉。倉庫元數據無法讀取、GitHub 403/429 或未知狀態時,不會因爲“暫時查不到”而放行。

官方倉庫未關閉 Issue 檢查

在安裝前,它會詢問是否檢查官方倉庫的未關閉 Issue,並顯示相關鏈接與風險。

這是一個提醒性流程。Issue API 不可用隻影響提醒信息,不會繞過 plugin_install_guard 的失敗關閉規則。

聚合 bundle 子插件識別

它可以展開聚合 bundle 的插件形依賴,並標記 providedBy 子插件。

當某個功能已經由聚合 bundle 提供時,它會把對應子插件標記爲 providedBy,避免重複安裝,也不會建議單獨卸載該子插件。

本地用量審計

它會掃描本地已落盤的 session 日誌,並按 dsh.tools 統計:

  • 調用量
  • 會話數
  • 最近使用時間

這個審計只讀取本地已落盤 session 日誌,不上傳內容。尚未結束或尚未刷盤的會話可能未被計入,結果中會明確提示。

官方版本同步檢查

它會對比本地 DSH 版本與官方最新發行版。

如果本地落後,它會報告官方發行版的新改動,並列出可能與本地已安裝插件重複或衝突的項目。

安裝與啓用

在運行 DSH 的同一環境中執行:

dsh plugin --profile web add github:white-sand-grand/dsh-plugin-doctor

安裝後,按你自己的方式啓動 DSH Web。dsh-plugin-doctor 不會替你啓動 Web,也不會改變已有 profile 的其他插件。

典型用法

安裝前先詢問官方 Issue

可以這樣提問:

我想安裝一個 Web UI 插件,先幫我查一下官方倉庫有沒有未修復的問題。

插件會先詢問是否檢查官方倉庫未關閉 Issue,再執行安裝前檢查,並顯示相關鏈接與風險。

搜索並檢查重複

可以這樣提問:

幫我找一個記憶插件,並檢查它是否和 web profile 裏已有插件重複。

結果會列出候選插件、匹配原因、與本地已有插件的重疊,以及保留或移除建議。

批量安裝前檢查衝突

可以這樣提問:

我要同時安裝以下倉庫,請先檢查它們會不會衝突:
github:owner/plugin-a
github:owner/plugin-b
github:owner/plugin-c

如果 GitHub 返回 403/429,或倉庫元數據無法讀取,結果會是 INSTALL BLOCKED。

查看已安裝插件之間的關係

可以這樣提問:

之前安裝的插件之間有什麼聯繫?哪些功能相似?

它會返回相似度關係,並說明重疊來源。

識別聚合 bundle 提供的功能

可以這樣提問:

我想安裝任務看板,需要再安裝一個 task-board 插件嗎?

如果相關功能已經由已安裝的聚合 bundle 提供,它會顯示 providedBy 來源,不建議重複安裝或單獨卸載子插件。

審計聲明瞭工具但從未使用的插件

可以這樣提問:

列出 web profile 中聲明瞭工具但從未使用的插件。

結果只基於本地已落盤 session 日誌,不上傳內容。尚未結束或尚未刷盤的會話可能未計入。

檢查本地 DSH 是否落後官方版本

可以這樣提問:

我的 DSH 落後官方多少了?升級會影響已裝的插件嗎?

它會對比本地 DSH 版本與官方最新發行版,報告新改動,以及可能重複或衝突的已安裝插件。

適用場景與注意

適合 DSH 智能體開發者在添加、替換、審查插件時使用,尤其是以下場景:

  • 想找一個社區插件,但不確定是否已有本地插件覆蓋
  • 準備批量安裝多個插件倉庫,需要先檢查衝突
  • 想查看已安裝插件之間的功能重疊
  • 想確認某個功能是否已經由聚合 bundle 提供
  • 想知道本地 DSH 是否落後官方版本
  • 想審計本地插件是否真的被使用

注意以下幾點:

  1. 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
  2. dsh-plugin-doctor 默認只讀,不會自行安裝、卸載或啓動 Web UI。
  3. allowExecuteActions 默認爲 false,默認只輸出命令;明確交互確認後才允許執行 add/remove。
  4. plugin_install_guard 在倉庫元數據無法讀取、GitHub 403/429 或未知狀態時失敗關閉。
  5. 官方 Issue 檢查是提醒性流程,不能替代安裝前守衛。
  6. 用量審計只讀取本地已落盤 session 日誌,不上傳內容。
  7. 社區搜索依賴即時 GitHub、進程內緩存、第三方 registry 和內置靜態快照,並會標註來源。

鏈接

GitHub:

https://github.com/white-sand-grand/dsh-plugin-doctor

插件線索中還有目錄頁 URL,但未見於已抓取資料,僅供查找參考:

https://www.skillhub.cn/plugins/white-sand-grand/dsh-plugin-doctor
羽毛球分组比赛记分
小程序二维码

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

小夜