前言¶
在 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)
要点如下:
- Baseline 文件:默认路径
.dsh-mcp-test/baseline.json,按名称排序的稳定 JSON,设计为纳入版本控制,作为契约。 - 漂移类型:新增、删除、变更(名称 / 描述 / 参数)。
- 参数 diff:对 key 顺序不敏感——仅重排 schema 不算漂移,内容变更才算。
- ignoreTools:可排除你故意保持动态的工具。
- 无 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)。
典型用法¶
- 首次接入:安装插件并启动 DSH,让插件在无 baseline 时生成
.dsh-mcp-test/baseline.json,将文件提交到仓库。 - 日常开发:升级插件或 MCP 后再次 boot 或触发
tools/change;若工具面与 baseline 不一致,默认告警,便于在合并或发布前发现非预期变更。 - 有意升级工具面:确认 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