标准号DSHIO/T 02—2026名称测试标准版本v1.0发布日期2026-11-06实施日期2026-11-06状态现行

DSHIO-TEST · 测试标准

六道关卡,从静态检查到工具调用。每一关都有明确判定,不通过就标不通过,测不了就标「未测」。

为什么测这些。 插件「装得上」不等于「能用」。我们在 122 个头部插件里实测,14% 装不上; 而装上的里面,还有一部分装了但没加载(静默失效)、加载了但工具调不通。

这六关就是从「能装」推到「能用」的阶梯。每往上一关,排除一类失败。

六道关卡

级别名称测什么判定网络
T0静态manifest 合法性、字段完整、engines.dsh 声明 可解析且无封顶—
T1安装dsh plugin add 命令退出码 0有
T2列装dsh plugin list 出现在依赖列表断网
T3挂载dsh --dump-config 出现在配置树断网
T4启动启动 profile,观察 12 秒 进程存活且无致命错误断网
T5工具调用调用插件声明的工具 不抛错、不超时断网
T2-T5 为什么断网。 安装需要下载依赖,所以 T1 必须有网。但安装完成后,T2-T5 全部在 --network none 的容器里跑 —— 这样即使插件有恶意行为,也无处可发。这是我们的安全边界,也是与只测安装的 方案最重要的区别。

T0 · 静态检查

不运行代码,只读文件。这一步能拦掉大部分「根本装不上」的包。

检查项不通过的后果
package.json 可解析整个测试中止
dsh.bundle.patch 存在无法被 DSH 识别
patch 指向的文件存在加载时失败
private 不为 true不可发布
engines.dsh 无上界标 VERSION_GATE 风险

T1 · 安装

dsh plugin --profile web add <package>

在干净 profile 里执行,超时 180 秒。退出码 0 且依赖树完整即通过。

T2 · 列装

dsh plugin --profile web list

插件出现在依赖列表。这一步区分「下载了」和「注册进 profile 了」。

T3 · 挂载

dsh --profile web --dump-config

插件出现在最终配置树里。这一步能抓出 静默失效 —— 装了、也在依赖列表里, 但因为槽位冲突或 manifest 问题,根本没进配置树。

T4 · 启动

启动 profile,观察 12 秒。进程存活且无 exit、无致命异常即通过。

这一步能抓出:ESM 模块缺陷、依赖注入失败、初始化抛错。

T5 · 工具调用

这是最能区分「加载了」和「能用」的一关。

怎么测

  1. 从 --dump-config 里取出该插件注册的工具名和参数 schema
  2. 按 schema 生成一组最小合法参数(必填字段给默认值,字符串给 "test",数字给 0)
  3. 调用一次,超时 10 秒
  4. 不抛错、不超时即通过

测不了怎么办

拿不到工具列表 → 标「T5 未测」,不标失败。 有些插件只提供 UI 或后台服务,不注册工具;还有些插件的工具 schema 无法从配置树解析。 这两类情况一律标「未测」,不影响质量等级上限(见 DSHIO-GRADE 的 C 级)。

这条规则很重要:把「测不了」当成「不合格」,是很多评级体系的通病。

失败分类

每个失败的测试都要归入下面九类之一。这是 DSHIO 与其它目录最不一样的地方 —— 别人告诉你「失败」,我们告诉你为什么失败。

代码含义通常出现在谁的问题
VERSION_GATEDSH 版本不匹配,插件被跳过T1-T3作者
ESM_DEFECTESM 模块加载器缺陷,模块被判不可加载T4作者/DSH
SLOT_CONFLICTLoader Entry ID 与已装插件重复T3作者
SILENT_FAIL装上了但没进配置树,无报错T3作者
ENV_MISMATCHNode / pnpm 等基础环境不匹配T1作者
NPM_404包在 registry 上不存在T0-T1作者
NO_TOOL未声明任何工具(T5 未测)T5—
T5_ERROR工具调用抛错T5作者
T5_TIMEOUT工具调用超时T5作者

报告格式

每次测试产出一份 JSON,字段固定:

{
  "plugin": "dsh-pet",
  "version": "1.2.3",
  "dsh_version": "0.2.2-rc.1",
  "tested_at": "2026-11-06T07:20:00Z",
  "stages": {
    "T0": { "pass": true,  "ms": 120 },
    "T1": { "pass": true,  "ms": 8600 },
    "T2": { "pass": true,  "ms": 900 },
    "T3": { "pass": true,  "ms": 2100 },
    "T4": { "pass": true,  "ms": 12000 },
    "T5": { "pass": true,  "ms": 2400, "tool": "pet_feed" }
  },
  "verdict": "pass",
  "failure_code": null,
  "evidence": "results/dsh-pet-0.2.2-rc.1.json"
}

自己跑一遍

我们的测试环境是 Docker + 精确版本的 DSH。作者可以本地复现:

docker run --rm --network host -v $PWD:/work dsh-sandbox:5.0 \
  bash -lc 'dsh plugin --profile web add <your-package>'

我们承诺与不承诺

承诺不承诺
T2-T5 全程断网不做安全认证(那是另一套体系)
每个失败都归类不评测功能是否正确(只测「能调通」)
测不了标「未测」,不标失败不保证覆盖所有使用场景
报告可复核不对插件的行为后果负责

版本历史

版本标准号发布日期变更内容
v1.0DSHIO/T 02—20262026-11-06 首次发布

条款变更时版本号递增,旧版本保留可查。