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/
羽毛球分组比赛记分
小程序二维码

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

小夜