前言¶
DeepSeek Harness (DSH) 的插件體系允許開發者通過配置擴展工作流能力。在測試工程中,從接口定義到生成、修復測試用例往往涉及繁瑣的重複勞動。dsh-gme-workflow 插件旨在解決這一問題,它提供了一套工作流工具,允許在本地 Python 後端中自動選擇接口、生成並修復測試,並支持任務狀態輪詢與人工複覈決策。
功能定位¶
這是一個社區維護的插件,並非 DeepSeek 官方包。它不直接包含測試生成邏輯,而是作爲一個控制器,驅動一個獨立的 GME Test Generator 後端項目。核心能力集中在本地 Python 環境下的自動化測試生成、修復以及基於用戶同意的決策流程。
前置條件¶
在使用此插件前,需要準備以下環境:
- DeepSeek Harness 環境:版本需爲
0.1.2-alpha.1或更新(0.1.x 線),且 profile 需提供tools和systemPrompt。 - GME Test Generator 檢出:需要一個獨立的代碼檢出,包含
backend/run_backend.py、配置文件config.local.json以及 GME 倉庫和編譯工具鏈。 - Python 環境:安裝後端依賴,並包含匹配的
deepseek-harness-sdk和deepseek-harness-runtime-binwheels。 - 編譯工具:安裝 clang-format 17.0.2。後端拒絕使用其他主要版本的格式檢查工具。
- Subprocess 服務:本地
subprocess服務,用於自動啓動 Python worker。
安裝¶
通過插件市場或命令行安裝。安裝命令會自動將包追加到 profile 的 dsh.profile.bundles 中,無需手動修改 profile 文件。
dsh plugin --profile web add dsh-gme-test-generator
安裝完成後,必須重啓 dsh web 進程才能生效。
配置¶
插件需要明確的後端路徑才能啓用工具。默認情況下,backendRoot 未設置,插件雖已掛載但不會註冊工具,模型只能提示配置步驟,而不會報錯。
配置方式有兩種:
1. 環境變量¶
在啓動 Harness 前設置環境變量。
$env:GME_TEST_GENERATOR_ROOT = 'D:/workspace/gme-test-generator'
$env:GME_TEST_GENERATOR_PYTHON = 'C:/ProgramData/Miniconda3/envs/agent/python.exe'
dsh web
2. Profile Patch¶
在 $DSH_HOME/profiles/<profile>/cordis.patch.yml 中添加配置。
- id: gme-test-generator
config:
backendRoot: D:/workspace/gme-test-generator
pythonPath: C:/ProgramData/Miniconda3/envs/agent/python.exe
port: 8765
autoStart: true
| Config key | Default | Meaning |
|---|---|---|
backendRoot |
(required) | GME Test Generator 檢出的根目錄路徑 |
pythonPath |
python |
Python 解釋器路徑 |
configFile |
config.local.json |
後端配置文件,相對於 backendRoot |
tokenFile |
logs/web-api-token.log |
API Token 文件路徑 |
port |
8765 |
後端監聽端口 |
autoStart |
true |
當端口拒絕連接時,自動啓動 Python worker |
timeoutMs |
15000 |
單個 HTTP 請求的截止時間 |
startupTimeoutMs |
45000 |
owned worker 變爲健康的截止時間 |
maxResponseBytes |
8388608 |
單次響應保留的最大字節數 |
pageChars |
12000 |
每頁返回的報告字符數 |
工具與用法¶
插件提供三個核心工具,分別負責生成、查詢和決策。
gme_generate¶
負責自主測試生成與修復。
* 輸入:接口 ID (interface_ids) 或自由形式的目標 (goal)。兩者不能同時提供。
* 流程:從接受任務到進入 needs_review 狀態。生成過程包含構建、測試和內存審計等自動階段,模型無法干預中間步驟。
* 返回:任務狀態、摘要、失敗信息和差異。
gme_check¶
負責查詢,無副作用。
* 用途:查詢接口目錄、任務列表、增量事件、失敗記錄、測試結果和構建產物。
* 增量查詢:使用 events.after 進行增量查詢以獲取實時進度或穩定的報告。
gme_decide¶
負責需要用戶同意的決策操作。
* 觸發方式:必須在調用時顯式設置 confirm: true,否則調用會失敗並給出指導建議。
* 操作:任務 PR、已知失敗跳過 PR、選定測試 PR、移除測試、清理、刪除任務。
注意事項¶
- 狀態含義:生成和決策返回的
accepted: true僅表示工作已排隊,不代表測試驗證通過。 - 版本要求:Node.js 需要滿足
^22.19.0 || >=24.0.0,DSH 需滿足>=0.1.2-alpha.1 <0.2.0-0。 - 工作流限制:模型通過輪詢獲取狀態,不引導中間構建。如果任務狀態爲
failed,這是一個有效的查詢結果,而非僅僅是錯誤。 - 資源管理:插件啓動的 owned worker 生命週期由插件管理,關閉或重載 Harness 可能會中斷正在運行的任務。POST 請求不會自動重試,需在任務不確定時檢查任務狀態。
- 非官方插件:請自行檢查源碼與許可證後再用於生產環境。