前言¶
如果你之前在 Codex、Claude Code 或 Pi 裏裝過插件,手上大概攢了一批資產:hooks、slash 命令、MCP 服務器、skill。換到 DeepSeek Harness(DSH)之後,這些並不能直接搬過去——它們是按另一個 agent runtime 的格式寫的,加載方式和生命週期都對不上,逐個重寫一遍顯然不划算。
DSH 的理念是「一切皆插件」,這類橋接工作本身也可以由一個插件來完成。下面介紹的 openma-ai/dsh-agents-plugins 就是這樣一個 Bridge:通過一個包,在 DSH 中安裝 Agent Plugins、Codex 插件、Claude Code 插件和 Pi 包。
這是什麼¶
dsh-agents-plugins 由 openma-ai 維護,MIT 許可,npm 包名爲 @openma/dsh-agents-plugins-bridge(寫作時版本 0.0.8),倉庫地址見文末。
它的工作方式可以概括成三步:
1、檢測外部包的格式;
2、把顯式選中的包複製到 profile 本地存儲;
3、把每個支持的能力物化爲一行行可逆的 DSH 行:skill、MCP 連接、hook、command/agent/monitor、Pi 擴展。
它不模擬另一個 agent runtime,也不把所有能力塞進一個通用插件後面。外部插件包從進入 profile 的那一刻起就被拆成一行行顯式的 DSH 配置,後續的禁用、恢復、卸載都有明確語義(見下文)。
核心功能¶
能力覆蓋¶
按已覈實的功能清單,Bridge 支持接入下面這些外部能力:
- Codex 和 Claude Code 的 hooks;
- MCP 工具、資源、prompts 和服務器生命週期,MCP 連接複用單一 MCP SDK 連接;
- Claude agents、output styles、monitors 和 LSP 行;
- Pi 擴展、工具、命令、skill 及其生命週期;
- MCP Apps:App HTML/AppBridge 的渲染只在 Web 沙箱中進行,TUI 不渲染。
Web 管理面板¶
把 Bridge 安裝到 web profile 後,打開 Settings → Plugins → Agent plugins,可以:
- 掃描本地 Codex、Claude Code、Pi 的狀態;
- 註冊或導入 marketplace;
- 搜索目錄並安裝插件;
- 查看每個插件的能力行與診斷信息;
- 管理 Pi 包的更新檢查。
注意一點:關閉 Web 面板不會停止已安裝的 hooks、commands、skills、MCP 服務器或 Pi 擴展。
TUI 不需要第二套實現¶
TUI 側沒有單獨的 Bridge 版本。/plugin-bridge、導入的 slash 命令和用戶可調用的 skill,經 ACP 投影到 TUI 的可搜索命令菜單裏,和其他命令並列出現。
六個可逆註冊表¶
Bridge 的生命週期內核暴露六個可逆註冊表,各自負責一件事:
- MarketplaceProvider:發現 marketplace 目錄並解析包來源;
- PackageFormatProvider:識別並規範化解包後的插件包;
- ComponentAdapter:把規範化後的組件映射爲顯式的 DSH 行;
- InstalledPluginLocator:觀察某個 agent 的本地插件註冊/緩存;
- MarketplaceRegistrationLocator:觀察某個 agent 已註冊的目錄;
- ActivationPolicy:檢查並管控需要用戶顯式信任的行。
disable、enable、uninstall 的語義¶
- disable:移除活動行,但保留已複製的包;
- enable:恢復已存儲的計劃;
- uninstall:把包副本移入 profile 本地回收站。
安裝與啓用¶
前置條件:Node.js 22.19 或更新版本,並且先全局安裝 DSH。下面的命令把同一個 Bridge 包分別裝進 web 和 tui 兩個 profile:
npm install -g @deepseek-ai/dsh
# Web 管理界面 + 共享 Host 能力
dsh plugin --profile web add @openma/dsh-agents-plugins-bridge@latest
dsh web
# 終端 UI + 相同的共享 Host 能力
dsh plugin --profile tui add @openma/dsh-agents-plugins-bridge@latest
dsh --profile tui
DSH 的 profile 是相互獨立的組合:裝進 web 不會隱式改動 tui,反之亦然。想在哪個 profile 用外部插件,就在哪個 profile 執行一次 add。
典型用法¶
經過上面的步驟,Bridge 已經裝進對應的 profile,下面看具體怎麼用。
查看活躍 Bridge 與發現結果¶
/plugin-bridge
/plugin-bridge marketplace list
/plugin-bridge discover
/plugin-bridge marketplace discover
這幾條命令用來查看當前活躍的 Bridge,以及只讀發現的結果。
添加 marketplace 並安裝條目¶
marketplace 支持本地目錄和 GitHub 倉庫兩種來源,添加之後即可安裝目錄裏的條目:
/plugin-bridge marketplace add /absolute/path/to/marketplace
/plugin-bridge marketplace add https://github.com/company/agent-plugins
/plugin-bridge marketplace add company/agent-plugins@main
/plugin-bridge install deployment-tools@company-tools
前三條分別是本地目錄、完整的 GitHub URL 和同一倉庫的簡寫形式,最後一條安裝 company-tools 這個 marketplace 裏的 deployment-tools。
導入其他 agent 已註冊的狀態¶
先跑一遍發現命令,再用對應的 ID 導入:
/plugin-bridge import codex-local-cache:personal/deployment-tools/1.2.3
/plugin-bridge marketplace import claude-code-registered-marketplaces:company-tools
第一行導入其他 agent 已本地註冊的插件狀態,第二行導入 Claude Code 已註冊的 marketplace。
安全性說明:發現是隻讀的;導入會先把選中的包或目錄複製到 profile 本地的 Bridge 存儲,外部 agent 目錄從不在原地被執行或修改。
適用場景與注意事項¶
適合誰:
- 已經在 Codex、Claude Code 或 Pi 生態有插件積累、希望換到 DSH 後繼續複用的開發者;
- 需要 Web 與 TUI 共用同一套插件資產,或者需要在 headless 環境裏讓插件持續運行的場景。
Headless 場景(比如 pi-telegram 這類需要常駐 Session 的 Pi 擴展)需要配合 Martty owner:Martty 只負責保持 Session 存活,並調用顯式聲明的啓動/關閉命令,不會自動批准權限或回答擴展表單。
另外幾點需要注意:
1、插件以當前 dsh 進程的權限運行。安裝任何第三方插件(包括本插件)之前,建議先閱讀其源碼並確認許可證;本插件自身爲 MIT 許可。
2、MCP Apps 的不可信 App HTML 只由 Web 沙箱渲染,終端不執行瀏覽器 UI;TUI 中 MCP 連接、工具、資源、prompts 和 backend hooks 仍然可用。
3、在 pnpm 環境下,profile 只解析 @openma/dsh-agents-plugins-bridge/* 自帶的 wrapper,傳遞依賴的提升不屬於運行時契約。
結尾¶
簡單回顧:dsh-agents-plugins 把「換 runtime 就要重寫插件」這件事,變成了「裝一個 Bridge 包」。外部插件被複制進 profile 本地存儲,能力被物化爲一行行可逆的 DSH 配置,Web 面板和 TUI 命令菜單共享同一套 Host 能力,禁用、恢復、卸載也都有明確語義。
- GitHub 倉庫:https://github.com/openma-ai/dsh-agents-plugins
- 社區插件目錄頁:https://www.skillhub.cn/plugins/openma-ai/dsh-agents-plugins
最後說明:skillhub.cn 是社區維護的插件目錄,與 DeepSeek、幻方沒有官方從屬關係。