DeepSeek Harness 插件:dsh-gme-workflow

前言

DeepSeek Harness (DSH) 的插件體系允許開發者通過配置擴展工作流能力。在測試工程中,從接口定義到生成、修復測試用例往往涉及繁瑣的重複勞動。dsh-gme-workflow 插件旨在解決這一問題,它提供了一套工作流工具,允許在本地 Python 後端中自動選擇接口、生成並修復測試,並支持任務狀態輪詢與人工複覈決策。

功能定位

這是一個社區維護的插件,並非 DeepSeek 官方包。它不直接包含測試生成邏輯,而是作爲一個控制器,驅動一個獨立的 GME Test Generator 後端項目。核心能力集中在本地 Python 環境下的自動化測試生成、修復以及基於用戶同意的決策流程。

前置條件

在使用此插件前,需要準備以下環境:

  1. DeepSeek Harness 環境:版本需爲 0.1.2-alpha.1 或更新(0.1.x 線),且 profile 需提供 tools 和 systemPrompt。
  2. GME Test Generator 檢出:需要一個獨立的代碼檢出,包含 backend/run_backend.py、配置文件 config.local.json 以及 GME 倉庫和編譯工具鏈。
  3. Python 環境:安裝後端依賴,並包含匹配的 deepseek-harness-sdk 和 deepseek-harness-runtime-bin wheels。
  4. 編譯工具:安裝 clang-format 17.0.2。後端拒絕使用其他主要版本的格式檢查工具。
  5. 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、移除測試、清理、刪除任務。

注意事項

  1. 狀態含義:生成和決策返回的 accepted: true 僅表示工作已排隊,不代表測試驗證通過。
  2. 版本要求:Node.js 需要滿足 ^22.19.0 || >=24.0.0,DSH 需滿足 >=0.1.2-alpha.1 <0.2.0-0。
  3. 工作流限制:模型通過輪詢獲取狀態,不引導中間構建。如果任務狀態爲 failed,這是一個有效的查詢結果,而非僅僅是錯誤。
  4. 資源管理:插件啓動的 owned worker 生命週期由插件管理,關閉或重載 Harness 可能會中斷正在運行的任務。POST 請求不會自動重試,需在任務不確定時檢查任務狀態。
  5. 非官方插件:請自行檢查源碼與許可證後再用於生產環境。
羽毛球分组比赛记分
小程序二维码

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

小夜