dsh-plugin-integration:DSH 插件整合中心

前言

DeepSeek Harness(DSH)採用「一切皆插件」的架構:能力通過 bundle 與 profile 補丁掛載,裝得越多,越容易遇到功能重疊、兼容衝突、啓停狀態難以覈對等問題。常見做法是手動翻 cordis.patch.yml、對照 package.json 裏的 bundles,或憑記憶判斷哪個看圖插件、哪個語音插件正在生效——插件一多,維護成本會明顯上升。

下面介紹由 MutaLucem 維護的 dsh-plugin-integration(GitHub:MutaLucem/dsh-plugin-integration)。它在 DSH 設置欄底部新增「插件整合」分頁,對已裝插件做動態發現、打標分類、重疊與兼容檢測,並支持一鍵啓停與失效診斷。新裝插件會自動出現在清單裏,無需改代碼或維護硬編碼列表。

這是什麼

dsh-plugin-integration 是面向 DSH web profile 的插件整合中心,歸類爲工作流類插件。當前版本爲 1.3.10,採用 MIT 許可證,在 GitHub 上約有 11 個 star。

它解決的核心問題是:在插件數量增長後,如何統一查看已裝插件的真實狀態,識別功能重疊與兼容衝突,並安全地完成啓停與切換。與單純瀏覽 bundles 目錄不同,本插件會結合運行時數據(如 clientModules.graph()、加載階段的 fiberPhase)判斷插件是否真正生效,並內置精選知識庫描述能力邊界與重疊組。

社區目錄頁:SkillHub - dsh-plugin-integration。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

安裝並重啓 DSH 後,設置欄底部會出現 「插件整合」 分頁,內含 5 個標籤頁。頂部彙總卡片展示已裝插件數、已啓用數、已生效數、兼容衝突數、未入知識庫數。

插件清單:動態發現與打標

插件清單頁通過三層數據模型工作:

  1. 動態發現:運行時讀取 profile package.jsondsh.profile.bundles,再解析各 bundle 的 cordis.patch.yml,提取 entryId 與模塊名。新裝插件會自動出現。
  2. 通用元數據回退:未知插件從 package.json 派生名稱、描述與關鍵詞標籤。
  3. 精選知識庫覆蓋:已錄入插件使用精確標籤、能力邊界、重疊組與兼容規則;可通過 ~/.dsh/dsh-plugin-integration.json 擴展或覆蓋。

清單支持按入庫時間分類與雙向排序,提供搜索欄及狀態、待更新、tag 篩選;可聯網刷新插件 logo 與 GitHub star(自動讀取 gh token),並檢測 npm/GitHub 上的真實版本。每個插件展示名稱、entryId、能力描述、能力邊界、多 tag、所屬 bundle 及狀態(已生效 / 已啓用 / 已停用 / 加載失敗),並標記「受保護」或「未知」。

重疊切換:功能覆蓋識別

內置功能重疊組,用於識別同一能力被多個插件覆蓋的情況。README 中列出的典型組包括:

重疊組 成員 說明
視覺 / 多模態 deepeye-vision / modlens / describe-image 多個看圖/OCR 插件並存導致工具冗餘
語音輸入 voice / voice-input 兩個麥克風按鈕並存衝突
右側面板 / 文件管理 better-sidebar / ui-dsh-aionui-panel 都佔用右側詳情列
插件管理 / 市場 dsh-market / plugin-console 兩個管理器互相覆蓋組合補丁

每組顯示當前生效、已啓用但未生效、未啓用等狀態。點「切換爲此」會停用組內其餘插件、僅保留所選。對每個插件還區分四態:完全生效、部分生效、已停用、失效。

兼容檢測:存在性與共用性

兼容檢測頁區分三類問題:

  • 存在性衝突existence):插件只要共存於同一目錄就會出問題,例如同一條目既走 bundle 通道、又在 profile 補丁裏手動 insert(雙重掛載)。
  • 共用性衝突coexistence):同時啓用纔出問題,內置規則與重疊組對應,每條附帶修復預案,可一鍵「採用」。
  • 工具名衝突tool-name):兩個插件註冊同名工具時,後加載者會導致宿主在就緒前退出;若衝突方提供關閉工具註冊的配置(如 tool: false),可嘗試共存,否則只能二選一停用。

此外會單獨展示 fiberPhase === 'failed' 的運行時加載失敗項。

啓用 / 停用與核心保護

啓用 / 停用頁可對已裝插件做啓停,操作寫入 profile 的 cordis.patch.ymldisabled: true/false),與官方 dsh-skin 同機制。獨立 bundle 形態下,profile 的 HMR 監聽器可讓變更熱重載即時生效,無需重啓。

protected 保護名單中的核心條目(默認含 ui-web-ui-compat)禁止停用,UI 與 RPC 層均會攔截,避免誤停導致 DSH 無法進入。

失效檢測與操作日誌

在清單、重疊或啓停頁,可對「已啓用但疑似未生效」的插件點「判定失效」,結果持久化到 ~/.dsh/dsh-plugin-integration.state.json。失效插件頁集中展示手動判定與可疑項,detectFailures 會診斷具體原因並給出修復方案與影響說明,例如缺少 ./client 產物需 pnpm run build、被 cordis.patch.yml 停用需重新啓用、或被其它插件覆蓋等。

標題欄提供「操作日誌」按鈕,分當前日誌(本次啓動)與歷史日誌,支持刪除與清空,持久化到 ~/.dsh。設置窗口支持瀏覽器原生 resize 拖拽調整大小,尺寸寫入 localStorage;標題欄「重置窗口」可恢復默認 800×800。

動態工具

Host 半註冊動態工具 plugin_integration,供模型或腳本調用;RPC 暴露 analyzetoggleswitchapplyFix 等接口。

安裝與啓用

在 web profile 下執行官方安裝命令:

dsh plugin --profile web add github:MutaLucem/dsh-plugin-integration

重啓 DSH 後,設置欄底部會出現「插件整合」分頁。

倉庫同時提供動態插件形態(src/host.js + src/client.js)與獨立 bundle 形態(src/host.standalone.js + src/client.standalone.js)。package.json 默認指向獨立 bundle 形態,也是 README 推薦的發佈安裝方式。

典型用法

查看已裝插件並篩選

  1. 打開 DSH 設置,進入底部「插件整合」分頁。
  2. 在「插件清單」標籤頁查看動態發現的插件列表。
  3. 用搜索欄或 tag / 狀態篩選定位目標插件,覈對 entryId、能力邊界與生效狀態。

處理功能重疊

  1. 切換到「重疊切換」標籤頁。
  2. 找到對應重疊組(如視覺 / 多模態、語音輸入)。
  3. 查看組內各插件的生效狀態,點「切換爲此」保留一個、停用其餘。

運行兼容檢測並應用修復

  1. 打開「兼容檢測」標籤頁,執行自檢或手動檢測。
  2. 查看存在性衝突、共用性衝突或工具名衝突及附帶的修復預案。
  3. 對共用性衝突可點「採用」一鍵應用;工具名衝突需按預案停用一方或調整配置。

啓停插件

  1. 在「啓用 / 停用」標籤頁搜索目標插件。
  2. 切換啓用狀態;受保護條目會顯示「受保護」且無法停用。
  3. 獨立 bundle 形態下變更通常熱重載生效;若未生效,重啓 DSH。

自定義知識庫與規則

將默認配置複製爲 ~/.dsh/dsh-plugin-integration.json 後編輯,無需重新編譯:

{
  "protected": ["ui-web-ui-compat"],
  "plugins": {
    "my-plugin": {
      "label": "我的插件",
      "category": "某類",
      "tags": ["某tag"],
      "stars": 123,
      "capability": "…",
      "boundary": "…"
    }
  },
  "overlaps": [],
  "compatRules": []
}

合併規則:plugins 按 key 合併(用戶條目覆蓋或新增),overlapscompatRulesprotected 整體替換。

適用場景與注意

適合誰

  • 在 DSH web profile 下安裝了多個功能相近插件(看圖、語音、側邊欄、插件市場等),需要明確當前哪個在生效。
  • 需要定期檢查 profile 補丁與 bundle 之間是否存在雙重掛載或共用性衝突。
  • 希望在不直接編輯 YAML 的情況下安全啓停插件,並保留操作日誌。

使用前注意

  • 本插件以當前 DSH 進程的權限運行,會讀取 package.jsoncordis.patch.yml~/.dsh 下的配置與狀態文件,並寫入 profile 補丁。安裝前應閱讀源碼與 MIT 許可證,確認可接受其文件訪問範圍。
  • 聯網刷新 star 與版本檢測依賴 gh token 及外部網絡;未知插件的標籤來自通用回退,精確描述依賴知識庫或你的自定義配置。
  • 兼容規則與重疊組隨版本更新,具體條目以倉庫 config.default.json 及 README 爲準。
  • SkillHub 目錄頁爲社區收錄,安裝命令以 README 與本文所列 dsh plugin --profile web add 爲準。

結尾

dsh-plugin-integration 把 DSH 插件的發現、分類、重疊切換、兼容檢測、啓停與失效診斷集中到設置頁的一個入口裏,減少手動維護 bundles 與補丁的成本。若你已在 web profile 下積累了一批插件,可以把它當作日常巡檢與切換的操作面板。

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

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

小夜