标准号
DSHIO/T 21—2026
名称
測試條件
层级
方法标准
状态
草案
原文
简体中文

DSHIO/T 21—2026 測試條件

標準號DSHIO/T 21—2026
名稱測試條件
版本v1.0(草案)
發布2026-11-07
實施2026-11-07
狀態草案
原文簡體中文
層級方法標準

1 範圍

本標準規定了 DSH 插件測試中各階段所處的環境條件、資源條件、網絡條件與時間條件。

本標準適用於任何依據 DSHIO 標準對插件作出判定的人或系統。

本標準不規定測試方法本身 —— 測試方法見 DSHIO/T 20。

為什麼需要這份標準。 沒有固定條件的測試結果只是一個人在某天某台機器上的印象。 有了固定條件,同一份測試報告才能被別人重現、被質疑、被複核。


2 規範性引用文件

下列文件中的條款通過本標準的引用而成為本標準的條款。

標準號名稱引用哪些條款
DSHIO/T 00—2026術語和定義3.1.3(DSH 版本)、3.3.4(沙箱)、3.5.1(測試階段)、3.5.4(可複現性)、3.4.1(模型無關性)

3 術語和定義

DSHIO/T 00—2026 界定的術語適用於本文件。

本文件補充定義:

3.1

固定條件 fixed condition

在一次測試中不得改變的環境因素。改變任何一項即構成一次新的測試,不得與原測試的結果互相比較。

3.2

浮動條件 variable condition

允許在同一次測試中改變的條件。浮動條件必須在測試報告中逐項記錄。

3.3

測試環境指紋 test environment fingerprint

一組足以唯一標識本次測試環境的值的集合,以字符串形式表示,供比對用。

例: dsh=0.2.2-rc.1;img=dsh-sandbox:5.0@sha256:...;node=24.11.1;pnpm=9.15.9


4 條件分類

4.1 兩類測試條件

類別適用階段是否依賴模型
模型無關條件T0、T1、T2、T3、T4否
模型相關條件T5是

依據: DSHIO/T 00—2026 第 3.4.1 條 —— DSH 的安裝、掛載、啟動不依賴具體模型,模型接入由獨立插件提供。

意涵: T0–T4 的判定在任何模型下都成立;T5 的判定只在指定模型下成立。


5 模型無關條件(T0–T4)

5.1 固定條件清單

下列條件在 T0–T4 測試中必須固定,且必須寫入測試報告。

5.1.1 DSH 版本

項目要求
取值形式dsh --version 原樣輸出
粒度必須精確到預發布標識(如 0.2.2-rc.1,不得寫 0.2.2 或 0.2.x)
判定依據該字符串與插件 engines.dsh 的範圍是否匹配

當前基準版本: 0.2.2-rc.1

注: 寫成範圍(如「0.2.2 系列」)的報告不具備可複現性,不得作為認證依據。

5.1.2 容器鏡像

項目要求
鏡像名dsh-sandbox:5.0
必須記錄鏡像名 + digest(sha256:...)
基礎系統node:20-slim 派生

鏡像內必須固定:

組件版本
Node.js24.11.1(安裝於 /opt/node24)
pnpm9.15.9
DSH0.2.2-rc.1

為什麼要 digest。 tag 可被覆蓋,同名不同內容。沒有 digest,一年後無法重現。

5.1.3 資源限制

資源限制值適用階段
內存768 MBT1、T2、T3、T4
CPU1 coreT1、T2、T3、T4
進程數128T4
磁盤不限制(容器疊加層)全部

T0(靜態檢查)不需要容器,無資源限制。

5.1.4 網絡狀態

階段網絡選項
T0不需要—
T1 安裝需要有網默認
T2 列裝必須斷網--network none
T3 掛載必須斷網--network none
T4 啟動必須斷網--network none

為什麼 T2–T4 必須斷網。 安裝階段插件可從網絡獲取任意內容。斷網後,任何殘留的網絡請求都會失敗暴露; 同時即使插件有惡意行為,也無處發送資料。這是安全設計,也是可複現性設計。

5.1.5 權限與隔離

項目T1T2T3T4
--user node✅✅✅✅
--cap-drop ALL——✅✅
--security-opt no-new-privileges——✅✅
--pids-limit 128———✅

說明: T1 需要安裝,保留 pnpm 所需的常規權限。T2 起逐步收緊。

5.1.6 超時

階段超時超時後的判定
T1 安裝180 秒判 install_failed,首次錯誤記為 timeout
T2 列裝90 秒判 install_failed(列裝失敗視同安裝失敗)
T3 掛載90 秒判 config_failed
T4 啟動90 秒(含 12 秒存活觀察)判 boot_failed

T4 的 12 秒存活觀察: profile 啟動後需連續存活 12 秒不退出,才算通過。

12 秒從哪來。 足夠覆蓋插件初始化、配置加載與首次事件循環的常見失敗窗口; 更長會顯著拖慢批量測試,且實測中未見 12 秒後才失敗的模式。

5.1.7 工作目錄與 profile

項目值
容器內 HOME/home/node
DSH_HOME/home/node/.dsh
測試 profile 名web
profile 初始化首次使用自動從出廠模板初始化
測試前狀態必須是乾淨的(無既有插件依賴、無既有 patch)

「乾淨」的判別: profile 目錄下 package.json 的 dependencies 除本次測試目標外無其他條目。

5.1.8 操作序列

T1–T4 的命令序列必須逐字一致:

# T1 安装(有网)
dsh plugin --profile web add <package-spec>

# T2 列装(断网)
dsh plugin --profile web list

# T3 挂载(断网)
dsh --profile web --dump-config

# T4 启动(断网,观察 12 秒)
dsh --profile web

不得插入、省略或改變順序。

5.1.9 重複次數

情形最少次數結果一致性要求
對外發布的判定2 次兩次判定必須完全相同
內部批量測試1 次—

兩次判定不同時:

  1. 判定記為「不穩定」(unstable)
  2. 必須記錄兩次的完整輸出
  3. 不穩定結果不得作為認證依據

5.2 模型無關條件下的測試環境指紋

生成規則:

dsh=<DSH 版本>;img=<镜像名>@<digest>;node=<node 版本>;pnpm=<pnpm 版本>;mem=<内存>;cpu=<CPU>

例:

dsh=0.2.2-rc.1;img=dsh-sandbox:5.0@sha256:abc123...;node=24.11.1;pnpm=9.15.9;mem=768m;cpu=1

指紋相同 = 條件相同。 指紋不同時,測試結果不可直接比較。


6 模型相關條件(T5)

6.1 為什麼要單獨規定

T5 測試「模型能否正確調用插件註冊的工具」。 這一階段的結果同時取決於插件和模型,換模型可能結論完全相反。

因此: T5 的判定必須綁定到具體模型才有意義。

6.2 固定條件

除第 5 章全部條件外,T5 還必須固定下列各項:

6.2.1 模型標識

項目要求
必須記錄模型 ID 與版本標識
禁止只寫廠商名(如「DeepSeek」)或只寫系列名(如「V4」)
示例deepseek-v4.1-flash-0731

6.2.2 生成參數

參數必須記錄
溫度(temperature)✅
最大輸出(max_tokens)✅
top_p(若使用)✅
是否開啟工具調用✅

未記錄溫度與 max_tokens 的 T5 報告不具備可複現性。

6.2.3 提示詞

項目要求
系統提示詞全文記錄
測試提示詞全文記錄
提示詞語言記錄(中文/英文/其他)

注: 提示詞的每個字元都影響模型行為。只寫「讓它調用工具」不構成可複現的條件。

6.2.4 工具調用配置

項目要求
工具數量(同一輪可用的工具總數)必須記錄
是否啟用並行工具調用必須記錄
工具選擇策略(若可配置)必須記錄

為什麼要記錄工具總數。 候選工具越多,模型選錯的概率越高。 「在 3 個工具中選對」和「在 200 個工具中選對」不是同一難度。

6.2.5 重複次數

情形最少次數
對外發布的 T5 判定3 次
內部評估1 次

通過判據(二選一,必須在報告中寫明採用哪一條):

判據定義適用
全過3 次全部正確調用認證用
多數3 次中至少 2 次正確調用評估用,不得用於認證

為什麼 T5 的門檻比 T0–T4 高。 模型有隨機性,兩次通過可能只是運氣。

6.3 模型相關測試環境指紋

<模型无关指纹>;model=<模型ID>;temp=<温度>;maxtok=<最大输出>;tools=<工具总数>

例:

dsh=0.2.2-rc.1;img=dsh-sandbox:5.0@sha256:abc...;node=24.11.1;pnpm=9.15.9;mem=768m;cpu=1;model=deepseek-v4.1-flash-0731;temp=0;maxtok=4096;tools=7

7 測試報告的必填欄位

7.1 全部測試

欄位必填
插件標識(npm 名或 github:owner/repo)✅
測試環境指紋✅
測試時間(含時區)✅
各階段耗時✅
判定✅
首次錯誤(若失敗)✅
測試執行者標識✅

7.2 T5 額外必填

欄位必填
模型相關環境指紋✅
系統提示詞全文✅
測試提示詞全文✅
每次嘗試的調用記錄✅
採用哪條通過判據✅

8 條件偏離的處理

8.1 什麼算偏離

改變第 5 章或第 6 章中任何一個固定條件的值,即構成偏離。

8.2 偏離的要求

偏離不禁止,但必須:

  1. 在報告中明確標示「條件偏離」
  2. 逐項列出偏離了什麼、改成什麼、為什麼
  3. 該報告的判定不得與未偏離的報告互相比較
  4. 不得作為認證依據

8.3 常見偏離

偏離是否有意義說明
換 DSH 版本✅ 有這正是要測的(跨版本兼容)
換容器鏡像⚠️ 謹慎換了就不是同一環境,結果不可比
加大內存⚠️可能讓原本 OOM 的插件通過
T2–T4 未斷網❌ 不接受破壞安全前提,結果無效
減少重複次數❌ 不接受(認證用)見 5.1.9 與 6.2.5
未記錄模型參數(T5)❌ 不接受結果不可複現

9 條件的穩定性

9.1 條件漂移的監測

每 30 天至少校驗一次下列項目是否與本標準一致:

項目校驗方法
鏡像 digestdocker inspect --format='{{.Id}}' dsh-sandbox:5.0
Node 版本容器內 node --version
pnpm 版本容器內 pnpm --version
DSH 版本容器內 dsh --version

發現漂移時:

  1. 舊測試結果標記為「條件已變更」
  2. 以新條件重測關鍵樣本
  3. 更新本標準或恢復條件

9.2 為什麼要監測

鏡像 tag 5.0 若被重新構建,同一 tag 下的 Node 版本可能變了。 沒有監測,測試結果會悄悄失去可比性。


附錄 A(規範性)條件速查表

項目T0T1T2T3T4T5
容器不需要✅✅✅✅✅
網絡—有無無無有
內存—768m768m768m768m768m
CPU—11111
--user node—✅✅✅✅✅
--cap-drop ALL———✅✅✅
no-new-privileges———✅✅✅
--pids-limit————128128
超時30s180s90s90s90s300s
重複次數12———3
模型參數—————必填

注: T2–T4 不單獨重複,它們包含在同一次 T1 後的序列中;「重複次數」指整個序列的執行次數。


附錄 B(資料性)與其他標準的關係

DSHIO/T 00  术语和定义
      ↓ 引用
DSHIO/T 21  测试条件(本文件)
      ↓ 被引用
DSHIO/T 20  测试方法总则       ← 规定每个阶段「做什么」
      ↓ 被引用
DSHIO/T 10  插件标准           ← 规定插件「要达到什么」
      ↓ 被引用
DSHIO/T 32  认证规则           ← 规定「怎么判定合规」

本標準只回答「在什麼條件下測」,不回答「怎麼測」和「什麼算合格」。


修訂記錄

版本日期變更提出參與利益關聯聲明
v1.0(草案)2026-11-07首次發布DSHIODSHIODSHIO 運維的測試平台是本標準的唯一實施者;本標準規定的條件即該平台當前運行的條件,公開可核對