PlugBox:跨宿主的插件適配與管理界面

前言

在 DeepSeek Harness 裏裝插件,常見路徑是「發現」裏訂閱索引、對話框裏填 github:owner/repo,或在命令行用 dsh plugin add。插件一多,來源分散、版本要對上 engines.dsh、啓停和更新各走各的入口,缺少一層統一視圖。PlugBox 面向所有支持自定義插件的引擎層與智能體層工具,在同一套界面裏瀏覽、安裝、更新、啓用或停用插件;宿主差異封裝在適配器裏,核心只處理「插件是什麼」。它目前以 DSH 組合包形式分發,並維護可被任意 DSH 實例訂閱的插件索引。

下面介紹它的定位、分層設計、在 DSH 上的安裝方式,以及面板裏能做什麼。

這是什麼

PlugBox(中文定位:插件適配與管理工具)由維護者 Wcof 發佈,倉庫爲 Wcof/PlugBox,許可證 MIT,npm 包名 plugbox。SkillHub 分類爲工作流。

它不做第二份插件數據庫:列表來自宿主真實的 pluginManager / pluginMarket 服務。同時對外發布精選索引 index.json 與從 dsh-plugin.org 覈實後同步的社區目錄 community.json——社區目錄是獨立生態的整理,與 DeepSeek / 幻方無官方從屬關係,不能當作官方應用商店。

在 DSH 側,組合包 patch 的 id 爲 plugbox,側欄模塊 id 爲 plugbox,宿主掛載前綴 /plugbox,RPC 端點 /plugbox/api/rpc。

核心架構:核心層與適配層

插件生態的差異在於各宿主如何描述清單、註冊 UI、命名 RPC、交付能力結構。PlugBox 因此分成兩層,避免在覈心代碼裏堆 if (宿主 === …)。

核心層(與引擎無關)

位於 src/core/,提供統一的插件協議、清單解析與生成、註冊與發現、生命週期,以及插件資源抽象。例如 protocol/plugin.ts 定義 CanonicalPlugin 等宿主無關類型;manifest/index.ts 負責 readManifest / toCanonical / writeManifest / toInstallSpec。兼容要求寫成帶命名空間的 requirements['<宿主id>/<要求名>'](DSH 上如 'dsh/dsh'),核心不認識具體宿主的原始字段名。

適配層(每個宿主一個適配器)

src/adapters/ 裏每個目標宿主實現 HostAdapter 契約:UI 掛載、來源標籤、索引格式、清單雙向轉換、資源映射、RPC 方法名、安裝參數等。新增宿主等於新增適配器並在 registry 登記,原則上不必改核心層。

當前支持矩陣(以 README 爲準):

宿主 適配器 id 是否實測
DeepSeek Harness dsh 已實測(驗收環境 DSH 0.2.1-rc.5)
zcode 的 DeepSeek Harness zcode-dsh 未實測

表中沒有的宿主即尚未對接;DSM Harness 沒有對應適配器,不能推斷支持面。

核心功能

插件管理

頂部爲來源統計卡,點擊可篩選。卡片顯示標題、包名、來源、運行狀態與插件行數;「詳情」進入逐行啓停。

插件市場

按索引源分組展示條目,卡片標註來源、狀態(可安裝 / 已安裝 / 可更新 / 版本不符)與當前版本。工具欄支持搜索、來源篩選、創作者多選與多種排序。索引超過 100 條時按 nextOffset 續頁;超過加載上限會在列表上方提示「索引共 N 個,已加載 M 個」。

來源標籤三檔:宿主官方(DSH 下展示爲「DSH 官方」)、PlugBox 收錄(索引 metadata.keywords 含 plugbox)、第三方。「PlugBox 收錄」是倉庫維護者的整理,不代表宿主官方背書。

按分支安裝

點擊卡片左下角版本號,可查看倉庫分支列表:顯示分支名、包內版本、該宿主要求的兼容範圍等。未聲明對應宿主插件字段的分支(DSH 上爲 dsh.bundle)不可安裝;已裝版本會標「當前已裝」,換分支需先卸載。安裝的是分支當前頭提交,上游推送會改變所指提交;要固定版本需釘 commit 或等 tag 後正常安裝。

檢查更新

頁面打開時會靜默比對索引與已裝版本;可點「檢查更新」強制刷新索引緩存。

索引源

精選索引推薦訂閱:

https://raw.githubusercontent.com/Wcof/PlugBox/main/index.json

也可使用 jsDelivr 鏡像 https://cdn.jsdelivr.net/gh/Wcof/PlugBox@main/index.json。社區目錄:

https://raw.githubusercontent.com/Wcof/PlugBox/main/community.json

可在 DSH「發現 → Index sources」訂閱,或在 PlugBox 面板工具欄點「社區目錄」一鍵訂閱。社區條目較多,搜索比逐頁翻更高效;條目只表示倉庫確爲目標宿主插件包,行爲與兼容性仍由宿主按 engines.dsh 判定。

安裝與啓用

PlugBox 以 DSH 組合包分發(package.json 中 dsh.bundle.patch 指向 cordis.patch.yml)。任選一種方式安裝後,需重啓 DSH 窗口(Host 端代碼在啓動時加載)。

方式一:從索引源安裝(推薦)

  1. 打開 DeepSeek Harness「發現」,在 Index sources 中添加:
    https://raw.githubusercontent.com/Wcof/PlugBox/main/index.json
  2. 搜索 plugbox 並安裝。
  3. 重啓 DSH 窗口。

方式二:從 GitHub 安裝

在「安裝插件」對話框填入 github:Wcof/PlugBox,或釘到某次提交:git+https://github.com/Wcof/PlugBox#<commit-sha>。

命令行示例(--profile 換成實際 profile,資料示例爲 web):

dsh plugin --profile web add github:Wcof/PlugBox

方式三:本地目錄(開發)

在「安裝插件」中填寫本倉庫絕對路徑;從 git 安裝不會執行構建,改前端後需自行 npm run build 並提交 web/。

典型用法

安裝並重啓後,從側欄進入 PlugBox(掛載前綴 /plugbox)。

  1. 統一管理已裝插件:在插件管理頁按來源篩選,在詳情頁逐行啓用或停用。
  2. 從市場安裝:在插件市場選擇索引源,用搜索與排序找到條目,按卡片狀態安裝或更新;版本不符時對照分支列表或 engines.dsh。
  3. 訂閱社區目錄:添加上述 community.json 地址,或在面板一鍵訂閱後搜索目標插件。
  4. 推薦收錄:在 GitHub 倉庫開 issue,附倉庫地址、目標版本與許可證;精選索引當前收錄約 10 個插件,覆蓋閱讀、學習、效率、界面增強、工具、模型等分類。

插件作者若寫兼容範圍,README 建議用 semver 區間(如 >=0.2.1-rc.2 <0.3.0-0),避免枚舉每個預發佈號;詳見倉庫 docs/article-engine-incompatible.md。

適用場景與注意

適合誰:經常在 DSH 裏裝多個插件、訂閱多個索引源,希望在一個界面裏看來源、啓停、更新與市場狀態的開發者。

權限與安全:PlugBox 與所管理的插件在當前 DSH 進程權限下運行。安裝前請自行查看源碼與 MIT 許可證,社區目錄條目僅做過倉庫級覈實,不代表行爲或兼容性已驗證。

邊界(README 已說明):

  • 兼容判定在宿主側:engines.dsh 存在時按 semver 判斷(含預發佈),規則由 DSH 適配器實現。
  • 不提供插件配置界面;配置 schema 在模型側(如 Config.listConfigs)。
  • 索引每個插件通常只登記一個已發佈版本;其他版本走分支安裝或等索引升版。
  • zcode-dsh 適配器尚未在真實環境驗證,不要當作已支持能力宣傳。

結尾

PlugBox 用「核心協議 + 宿主適配器」把插件管理從單一引擎裏抽出來:在 DSH 上已實測可用,併發布精選索引與社區目錄供訂閱。若你需要統一瀏覽、安裝與更新插件,而不是隻在各處重複搜索引,可以按上文索引源或 GitHub 方式安裝。

  • SkillHub 目錄頁:https://www.skillhub.cn/plugins/Wcof/PlugBox
  • GitHub:https://github.com/Wcof/PlugBox
  • 項目介紹頁:https://wcof.github.io/PlugBox/
羽毛球分组比赛记分
小程序二维码

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

小夜