dsh-test-framework:把空目錄變成可約束 AI 的測試工作框架

前言

在 DeepSeek Harness(DSH)裏做需求測試,常見卡點往往不是「會不會點頁面」,而是流程紀律:空目錄要手工搭骨架、子目錄開會話時框架根 AGENTS.md 不加載、長需求文檔被模型自行拆分或乾脆不拆、跨文檔關聯和版本沒人確認、環境與賬密每次重問、報告格式失控。社區插件 dsh-test-framework(維護者 liujianqiao701)面向測試工程師,用 cordis 插件把「初始化骨架 + 會話內閘門 + 引導式 onboard」串成一條繞不過去的鏈。DSH 生態是「一切皆插件」;目錄頁在 SkillHub,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

dsh-test-framework 是發佈在 npm 上的 DSH 工作流類插件:把一個空文件夾一鍵生成「測試工作框架」目錄與規範文件,並在每次 AI 會話裏注入框架狀態與約束,配合工具與 runtime skill,強制走完「需求文檔 → 子模塊拆分確認 → 版本與跨文檔關聯 → 測試環境與賬密登記」再開測。

實現上它是 cordis 插件,零第三方依賴(僅 Node 內置模塊),無前端構建;適配 DSH(dsh.engines.dsh = "*"),運行環境要求 Node ≥ 20。源碼與說明見 GitHub 倉庫,許可證 MIT。

核心能力

痛點與對應機制

痛點 插件側處置
新文件夾需手工搭 AGENTS.md、skills、模板與目錄 test_framework_init 生成骨架;已存在則跳過、不覆蓋
在 <產品>\<模塊>\ 子目錄開會話時,框架根規範靜默不加載 初始化建 .git 標記;並注入實時「測試框架狀態」段落
長 docx 被模型自行拆分或不拆 test_framework_doc_probe 探頁數/章節/菜單等 → 命中判據須 ask_user_question 讓人確認
邏輯寫在另一份需求文檔卻未覈對 閘門 crossDocChecked:必須問過;答「沒有」須落 relatedDocs: []
需求路徑不區分版本 閘門 versionsConfirmed;流程禁止用文件時間判版本
環境、賬密反覆口述 test_framework_record 寫入產品級規範(人讀 md + 機器讀 json)
明文密碼散落 明文僅落 _框架配置\環境與賬密.md;框架登記.json 只記指針
舊報告堆在模塊 report\ test_framework_report_gc 歸檔滿 N 小時(默認 24)的報告到 _archive\報告歸檔\...;默認 dryRun: true 預演
多版經驗揉進一份模塊 SKILL.md 模塊 SKILL.md 作索引;每版 skill\<版本>\SKILL.md 並存;test_framework_module_add 傳 version 自動建並回填索引
外部項目規矩滲入本框架 lib\isolation.js 在會話開頭說明項目根、將加載哪份 AGENTS.md,並攔截模塊內外部工具工作目錄等

七個工具

開工前先調 test_framework_status:ready: false 時不應直接開測。

工具 作用
test_framework_status 框架根、產品/模塊、登記進度、缺項;含 MCP 與隔離相關提示
test_framework_init 空目錄初始化框架;dryRun: true 僅看計劃
test_framework_module_add 新增葉子菜單級模塊目錄與索引;可選 version 建版本 skill 並回填 AGENTS.md、產品級 模塊路由.md
test_framework_link 跨端關聯只讀體檢(不改文件);CLI 等價 node lib\cli.js link
test_framework_record 登記版本/拆分/關聯/環境與賬密等產品級規範
test_framework_doc_probe 零依賴探 docx:頁數、章節、菜單命中、拆分判定等
test_framework_report_gc 調用框架內 archive_reports.py 做報告歸檔;默認預演

四個 runtime skill 與斜槓命令

自動加載的 skill 包括 test-framework(總契約)、test-framework-init、test-framework-onboard(測需求、拆模塊、環境與賬密引導)、test-framework-module。runtime skill 的 rank 爲 250;框架內 <框架根>\skills\<同名>\SKILL.md(rank 100)會覆蓋插件同名 skill。

插件還會在組裝提示詞時注入「測試框架狀態」與契約邊界(isolation.js);並提供 /tf-status、/tf-gate(查狀態,不消耗模型回輪)。

前置條件:Playwright MCP

playwright MCP(mcp__playwright__browser_*)爲必需,無替代路徑:框架鐵律要求真實瀏覽器與真實點擊/輸入,缺它相關驗證無法執行。插件會在會話開頭狀態段與 test_framework_status 中提示「未檢測到 playwright MCP(必需)」。

配置寫在 DSH profile 的 cordis.patch.yml:增加 mcp-playwright(serverName: playwright,命令 @playwright/mcp),且須有頭(窗口可見)。改完須重啓 DSH(profile 層不支持熱加載)。

建議項:keyword_mcp(取證互補)、可選 cr69_mcp(老內核/小視口兼容)。

自查:

npx dsh-test-framework doctor

或在框架工作區內:

node _plugin\dsh-test-framework\lib\cli.js doctor

安裝與啓用

插件以當前 dsh 進程權限運行;安裝前請自行查看源碼與 MIT 許可證。以下命令來自倉庫 README。

從 npm 安裝(常用)

dsh plugin --profile desktop add dsh-test-framework

安裝後重啓 DSH(profile 的 bundles 與 cordis.patch.yml 不支持熱加載)。驗證:會話中是否出現 test_framework_status,或執行:

npx dsh-test-framework doctor --profile desktop

從源碼鏈接安裝(改插件時用)

cd <插件目錄>
node lib\cli.js install --profile desktop
node lib\cli.js install --profile desktop --apply

完成後重啓 DSH,並用 node lib\cli.js doctor --profile desktop 自檢(依賴與 bundles 兩處都須有條目,否則爲半裝)。

默認安裝走目錄聯接(link:),避免在 profile 上觸發整棵 node_modules 的 pnpm install;若要用官方命令並跑 pnpm:

node lib\cli.js install --profile desktop --apply --official

卸載(不動框架工作區文件):

node lib\cli.js uninstall --profile desktop

可選配置

在 profile 的 cordis.patch.yml 中固定需求文檔總根:

- id: test-framework
  config:
    reqDocRoot: '<你的需求文檔總根目錄>'

未配置時按「插件配置 → 環境變量 DSH_REQ_DOC_ROOT → <用戶主目錄>\需求業務文檔」解析。

典型用法:onboard 引導鏈

test-framework-onboard 對應「測這份需求文檔 / 新版需求 / 要不要拆 / 環境賬密」等意圖。README 給出的順序如下。

  1. test_framework_status:先認賬,看缺什麼;定位需求文檔路徑(不許猜)。
  2. test_framework_doc_probe:頁數、章節、菜單、刪除線段落等 → 拆分判定;命中判據(如頁數 > 100、多個頂級菜單名等)則停下,用 ask_user_question 讓用戶確認拆分方案。
  3. 跨文檔關聯:問本地還有哪些關聯需求文檔(無關聯須落 relatedDocs: [])。
  4. 版本確認:明確本次測哪一版(禁止用文件時間判版本)。
  5. 環境與賬密:經 test_framework_record 等產品級登記流程落盤。

空目錄起步時,可先 test_framework_init,再用 test_framework_module_add 按葉子菜單建模塊;跨端關聯變更前可用 test_framework_link 做只讀體檢。

適用場景與注意

適合誰:在 DSH 裏做業務需求測試、希望 AI 按固定目錄與閘門執行、又需要 docx 探針與報告歸檔紀律的測試工程師或小團隊。

務必注意:

  • 缺 playwright MCP 不是降級,而是鐵律 10 類驗證無法做;先 doctor 再開工。
  • 插件判斷 MCP 依賴讀 profile 的 cordis.patch.yml,「未檢測到」不等於一定不存在;無法判定時會標明。
  • 卸載插件不會刪除你已生成的框架工作區;敏感信息仍應只放在框架約定的賬密文件中,並遵守本機安全策略。

結尾

dsh-test-framework 把「測試工作框架」從手工搭目錄,變成可安裝、可自檢、可在會話裏持續施加約束的 DSH 工作流插件:初始化、模塊與版本 skill、docx 探針、登記與報告歸檔工具,以及 onboard skill,共同把需求測試的前置覈對做成閘門。

羽毛球分组比赛记分
小程序二维码

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

小夜