dsh-mcp-test:为 DeepSeek Harness 做工具面快照与漂移门禁

前言

在 DeepSeek Harness(DSH)里,模型能调用的不仅是内置工具,还有插件工具、MCP 工具。升级某个插件或 MCP 服务后,工具名、描述或参数 schema 可能在未显式告知的情况下发生变化,而静态安装期扫描或 loader 级兼容性审计,往往回答不了运行时问题:「模型眼前能调用的东西,是不是刚变过?」

下面介绍社区插件 dsh-mcp-test(维护者 zhengqiuyang,SkillHub 分类:工作流)。它对 DSH 可见的完整工具注册表做快照,与仓库中提交的 baseline 对比;出现增删改时默认告警,避免静默漂移。信任路径上不依赖 LLM 调用。当前 GitHub 星标为 0,版本 0.1.0,许可证 MIT。

这是什么

dsh-mcp-test 的定位是:DSH 的 tool-surface snapshot and drift gate——通过 ctx.tools.schemas() 记录每个可见工具的名称、描述与参数,生成可提交的 baseline,并在每次注册表变化时做 diff。

它与同系列的 dsh-read-guard(读)、dsh-pr-gate(写)、dsh-attest(行为)并列,侧重「模型能调用什么」。方法论移植自 mcp-test 的升级门禁思路,但覆盖整个注册表,而非单一 MCP 连接。v0.1 仅包含快照与漂移检测;针对运行中 MCP 的功能探测与注入测试(mcp-test 的主打能力)在路线图中。

核心功能

工作流程

插件在 boot 与 tools/change 时触发:

boot / tools/change ──> snapshot ctx.tools.schemas()
                   ──> baseline present? diff : establish baseline
                   ──> drift: added / removed / changed(name.description|parameters)
                   ──> warn (default) or rebaseline (explicit opt-in)

要点如下:

  1. Baseline 文件:默认路径 .dsh-mcp-test/baseline.json,按名称排序的稳定 JSON,设计为纳入版本控制,作为契约。
  2. 漂移类型:新增、删除、变更(名称 / 描述 / 参数)。
  3. 参数 diff:对 key 顺序不敏感——仅重排 schema 不算漂移,内容变更才算。
  4. ignoreTools:可排除你故意保持动态的工具。
  5. 无 baseline 时:首次运行会建立 baseline;已有 baseline 则对比当前快照。

默认在漂移时 warn;只有在你明确接受一次升级时,才应打开 rebaselineOnDrift: true 重新基线。

与生态中其他做法的对比(资料口径)

DSH 供应链侧已有若干静态扫描类插件(安装期审 package manifest),但不监视 live 工具面。dsh-plugin-observatory 在 loader 层审计插件兼容性,而非模型可见的 schema 层。本插件补的是升级时刻的那一问:「模型能调用的界面是否刚变了?」

安装与启用

官方 README 给出的安装命令如下(npm 分发,无需 build、allowBuilds;仓库内已带预构建 lib/):

dsh plugin --profile default add dsh-mcp-test

兼容性(资料原文):

  • DSH:在 0.2.x 线验证(源码快照 0.2.1-alpha.2);任意 profile 可通过 dsh plugin add 安装。
  • Node:>= 20(CI 矩阵含 Node 20/22/24,Ubuntu 与 Windows)。

在配置中启用并指定路径与行为:

- id: dsh-mcp-test
  name: dsh-mcp-test
  config:
    baselinePath: .dsh-mcp-test/baseline.json
    rebaselineOnDrift: false   # true only when accepting an intended upgrade
    ignoreTools: []

安装成功后,boot 日志中会出现形如 [dsh-mcp-test] active: … 的提示( disposable-profile 验证记录于 2026-10-19)。

典型用法

  1. 首次接入:安装插件并启动 DSH,让插件在无 baseline 时生成 .dsh-mcp-test/baseline.json,将文件提交到仓库。
  2. 日常开发:升级插件或 MCP 后再次 boot 或触发 tools/change;若工具面与 baseline 不一致,默认告警,便于在合并或发布前发现非预期变更。
  3. 有意升级工具面:确认 diff 符合预期后,将 rebaselineOnDrift 设为 true 接受新基线,再改回 false,并提交更新后的 baseline。

本地开发与自测(维护者仓库):

npm install
npm test

适用场景与注意

适合谁:

  • 在 DSH 上集成多插件、多 MCP,且希望升级时工具 schema 变更「失败得响亮」而非静默通过的团队。
  • 需要把「模型可见工具面」当作可审查、可版本化契约的 supply-chain 实践者。

务必注意:

  • 插件在当前 dsh 进程权限下运行,能读取并对比完整工具注册表;安装前应自行审查 GitHub 源码 与 MIT 许可证。
  • v0.1 不包含对运行中 MCP 的行为探测柱;该能力在 roadmap,与 per-source 分离 baseline、漂移结果接入 CI 等一并规划。
  • 若 DSH 官方将来提供 first-party tool-surface pinning,或 observatory 类插件在 schema 层提供同等 drift gating,维护者 README 声明本插件可能冻结在最后可用版本并在此留 postmortem——选用时需知这一退出条件。

SkillHub 上的社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是社区工作流类补充,非官方应用商店条目。

结尾

dsh-mcp-test 把「模型能调用什么」落成可提交的 baseline 与 boot/tools 变更时的 diff,用零 LLM 的信任路径应对插件与 MCP 升级带来的静默工具面漂移。需要细节、配置与路线图时,可查阅目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/zhengqiuyang/dsh-mcp-test
  • GitHub:https://github.com/zhengqiuyang/dsh-mcp-test
羽毛球分组比赛记分
小程序二维码

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

小夜