dsh-plugin-health:DSH 插件升级检查、多版本兼容矩阵与市场索引

前言

DeepSeek Harness(DSH)采用「一切皆插件」的架构,宿主版本迭代快,插件作者往往只能在本机已安装的某一个 DSH 版本上验证 engines.dsh 或 @deepseek-ai/dsh* peer 是否匹配。升级前若未系统比对,可能出现插件在新宿主上直接无法加载;Windows/WSL 下的安装失败还可能留下半成品目录和锁文件。社区插件目录分散在独立站点,与 DeepSeek / 幻方无官方从属关系,宿主内置的 Discover 需要符合官方规范的 format-1 索引 JSON,而不是任意网页链接。

下面介绍维护者 EasonMWS 发布的 dsh-plugin-health(GitHub:EasonMWS/dsh-plugin-health,分类:工作流)。它面向插件作者与日常使用 DSH 的开发者,补齐三类能力:多宿主版本的静态兼容矩阵、经官方校验器验证的 format-1 市场索引构建,以及 Windows/WSL 安装诊断(默认只读)。安装为 DSH bundle 后,还会在 Web 配置里提供「插件健康」界面,把发现项写成可执行的下一步。

这是什么

dsh-plugin-health 是同时提供 CLI、可复用 GitHub Action 与 DSH bundle 的工具包。README 说明其按官方 DSH 0.2.1-rc.2 兼容规则与已发布的 @deepseek-ai/dsh-plugin-market-index 校验器构建;npm 包当前版本为 0.3.2(见仓库 package.json),要求 Node.js 20+,engines.dsh 为 >=0.1.0-rc.6 <0.3.0-0。

它不替代 DSH 自带的插件管理器,也不提供官方应用商店;而是帮助你在升级宿主、维护插件仓库或自建「发现」索引源时,用与宿主一致的语义做检查与产出物。

核心功能

多宿主兼容矩阵

matrix 子命令根据插件 manifest(engines.dsh 优先,否则检查 @deepseek-ai/dsh / @deepseek-ai/dsh-* peer,含 prerelease 与 workspace: 映射)判断插件在多个 @deepseek-ai/dsh 版本或 dist-tag(latest、next、alpha 等)上是否应能加载。README 明确说明:矩阵是静态评估,尚未对每个宿主做真实启动挂载;Git 源插件可用本地目录路径作为 spec 检查。

输出包括 matrix.json、matrix.md 及 badges/ 下的 SVG;--fail-on any|none|<host> 可用于 CI 门禁。

官方 format-1 市场索引

index 子命令把社区 catalog(当前范围以 npm 已发布条目为主)转成 DSH Plugins → 自定义插件市场 → 发现 → 添加索引源 可接受的 index.json(format 1),并用 @deepseek-ai/dsh-plugin-market-index 校验。维护者在 GitHub Pages 托管的示例如 index.json(README 写明约 300 个插件、每日重建)。索引可附带基于兼容矩阵的健康分、分类与多语言标题描述等字段(详见 README)。

Windows/WSL 安装诊断

工具提供只读默认可选的修复路径:处理隔离、残留 cordis.patch.yml、代理/registry、profile 漂移,以及与当前运行宿主版本不匹配的已装插件等(bundle 模式下通过 plugin_health agent 工具与设置 UI 呈现)。

DSH 内的「插件健康」设置 UI

以 bundle 安装到 profile 后,DSH Web 端会出现 Settings → 插件健康:无问题时不增加角标或侧栏入口;有问题时在账户菜单上方显示「插件有 N 个问题」并跳转。宿主侧仅提供 loopback 只读快照,插件不修改你的 profile。发现项附带一键修复前会先展示 dry-run 计划。

可复用的 GitHub Action

仓库提供 matrix-review.yml。在插件仓库添加工作流后,可在每个 Pull Request 上评论兼容矩阵、生成 job summary 并上传 artifact(示例见 README 中 examples/dsh-compat.yml)。

安装与启用

全局 CLI(任选其一):

npm install -g dsh-plugin-health

在 DSH Web profile 中安装 bundle(同时启用设置 UI 与诊断能力):

dsh plugin --profile web add dsh-plugin-health

README 另给出从仓库 checkout 后 npm ci 并执行 node bin/dsh-plugin-health.js --help 的方式;需 Node.js 20+。

典型用法

升级前批量检查多个宿主版本

README 建议在升级到 DSH 0.2.1 前先跑矩阵;其对生态前 120 个插件的扫描示例显示,有 3 个会因精确 pin @deepseek-ai/* peer 而在 0.2.1-rc.2 上无法加载(完整说明见仓库 docs/upgrade-0.2.1.md)。

dsh-plugin-health matrix \
  --plugins examples/plugins.txt \
  --versions latest,next,alpha,0.1.7-rc.2 \
  --out dsh-health-out/matrix \
  --fail-on any

--plugins 可为每行一个 spec 的文件(支持 # 注释)、逗号列表或重复 flag;spec 为 name、name@version 或本地插件目录。

在插件 PR 上自动贴兼容矩阵

将 README 中的示例复制为 .github/workflows/dsh-compat.yml,并按需调整 plugins 与 versions:

name: dsh plugin compatibility
on: pull_request
permissions:
  contents: read
  pull-requests: write
jobs:
  matrix:
    uses: EasonMWS/dsh-plugin-health/.github/workflows/matrix-review.yml@v0.1.5
    with:
      plugins: '.'
      versions: 'latest,next,alpha'
      comment: true

从 catalog 生成可导入 DSH 的索引

dsh-plugin-health index \
  --catalog https://awesome-dsh-plugin.com/plugins.json \
  --host 0.2.1-rc.2 \
  --index-url https://easonmws.github.io/dsh-plugin-health/index.json \
  --matrix dsh-health-out/matrix/matrix.json \
  --limit 300 --out site

将 site 目录托管到静态站点(无重定向),把 index.json 的 URL 填入 DSH 发现页的索引源即可。

适用场景与注意

适合:维护 npm 或本地目录中的 DSH 插件、需要在多个宿主版本或 dist-tag 上做发布前检查的团队;希望自建 format-1 索引供 Discover 使用的社区维护者;在 Windows/WSL 上排查安装残留的用户;希望在 PR 流程中固定兼容矩阵门禁的仓库。

请注意:

  1. 兼容矩阵基于 manifest 与官方规则,不能替代真实启动冒烟测试(README 将其列为 roadmap)。
  2. index 当前主要处理 catalog 中的 npm 条目;仅 GitHub/tarball 的条目会被跳过并在报告中说明。
  3. DSH 插件以当前 dsh 进程权限运行。安装任何第三方 bundle 前,应自行查看源码、许可证(本仓库为 MIT)与维护者信息,确认符合你的安全与合规要求。

结尾

dsh-plugin-health 把「能否在这个 DSH 版本上加载」「能否生成宿主认可的发现索引」「本机安装是否干净」三件事收敛到同一套 CLI、bundle UI 与 GitHub Action 里,减少只靠本机单一版本试错的成本。

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

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

Xiaoye