前言¶
如果你之前在 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、幻方没有官方从属关系。