kovey/dsh-engineering-suite--packages-dsh-test-design-gate ↗★ 0

dsh-test-design-gate

Test-design gate for DeepSeek Harness: review the specification's structured test design (coverage, scenario completeness, executability) before the specification may be approved. 适合对测试覆盖率和场景完整性有严格要求的软件工程任务。

패키지
dsh-test-design-gate
호환성
미검증
Harness peer 범위
^0.1.5-rc.2
Cordis peer 범위
^4.0.2
버전
0.1.0
최근 업데이트
2026. 9. 20.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kovey/dsh-engineering-suite#4a618ac4376c4a075c99c92b69895163bb21b0ce&path:packages/dsh-test-design-gate

配置

- id: test-design-gate
  name: 'dsh-test-design-gate'
  config:
    enabled: true
    logFile: '~/.dsh/test-design-gate.log'
    layout: { rootDir: '.dsh' }     # 可选:rootDir / specsDir / missionsDir
    minTextLength: 4
    strict: false
    allowDanglingCase: false
    requireAllScenarios: true
    prompt: { enabled: true, order: 630 }

以上是 profile 配置(上限);每个仓库还可以用 .dsh/test-design-gate.json 细化本工作区的评审口径 (minTextLength / strict / allowDanglingCase / requireAllScenarios),详见下一节。

项目级配置

一个 dsh profile 同时服务多个仓库,所以"这个仓库的测试设计评审有多严"不可能对每个工作区都合适。 每个工作区可以用自己的一份文件细化本仓库的评审口径:

/.dsh/test-design-gate.json
{
  "minTextLength": 20,
  "strict": true,
  "allowDanglingCase": false,
  "requireAllScenarios": true
}

profile 是上限:项目文件只能细化评审口径,不能把门禁关掉,也不能搬走工件目录。未命中的键一律 忽略并记录问题(插件日志里逐键给出原因),绝不静默生效。

可覆盖键(未写的键继续用 profile 的值):

键类型作用
minTextLength≥ 1 的整数本工作区「操作步骤 / 预期结果」的最小长度(默认 4)
strictbool本工作区是否默认要求每条验收标准有异常或边界用例
allowDanglingCasebool本工作区是否容忍不声明验收标准的用例
requireAllScenariosbool本工作区是否要求正向 / 异常 / 边界三类场景齐全

只能由 profile 决定(写了也会被拒绝,并逐条记录原因):

键拒绝理由
enabled是否加载插件是部署决策:项目文件不能把测试设计门禁关掉(关掉等于让 spec_approve 不再检查测试设计)
logFile日志落盘位置是部署决策
rootDir / specsDir / missionsDir / layout规格 / mission / 评审报告的落点是宿主布局决定,项目文件不能迁移它们
prompt系统提示词章节属于宿主装配决策

信任根:.dsh/** 被 dsh-spec-gate 的 guard 对写工具关闭(只有派生的 specs/*.md 可写), 所以模型无法用 write / edit 把自己的评审调松——能改这个文件的只有人。注意这个保护覆盖的是写类 工具:用 bash(echo >、sed -i 等)改它只在 dsh-spec-gate 的 shellPolicy: strict 下才被拦下。

失败绝不放行:文件不存在 / 不是合法 JSON / 顶层不是对象 / 某个值类型不对("20" 不会被当成 20) 时,回退到 profile 配置并记录问题(逐键回退,不做类型强转),评审照常执行——坏掉的项目配置永远不会 变成"没有评审"。

生效范围:按调用方会话的 header.cwd 逐次调用解析(读者按 mtime+size 缓存,热路径每次只多一次 stat)。 test_design_review 的返回与 test-design-review.md 都会写出生效策略与来源 (配置:项目级 (minTextLength=…;strict=…) 或 配置:profile(…)); prompt section 也在每次装配时按该 agent 的工作区渲染同一组值(未声明工作区时回退 profile 文本)。 未声明 header.cwd 的会话,test_design_review 直接拒绝执行(中文错误提示:无法确定本会话的工作区), 绝不退回 process.cwd()——那会把评审写到 harness 自己所在的、错误的项目里; test_design_template 不读磁盘工件,因此没有工作区也能用。