前言¶
DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。在開發流程中,如何證明修復是有效的、可復現的,並留下可追溯的證據,是一個常見痛點。dsh-reprolab 旨在解決這一問題,它爲 DSH 提供了一個確定性的 Bug 證明執行器。
插件簡介¶
dsh-reprolab 是一個確定性的 Bug 證明執行器,專注於凍結復現測試、RED/GREEN/REGRESSION 閘門以及可重放證據。
它由用戶 yuttfu 維護,屬於「工作流」分類。該插件通過隔離工作樹和凍結輸入,幫助 Harness 會話編寫測試和修復方案,同時確保整個過程的可審計性。
核心功能¶
- 確定性執行:確保測試和驗證過程完全可復現。
- 凍結復現測試:鎖定測試補丁和目標測試命令。
- RED/GREEN/REGRESSION 閘門:
- RED:證明基線代碼在控制樹中必然失敗。
- GREEN:證明候選修復在相同凍結測試下通過。
- REGRESSION:證明候選修復未引入新的失敗。
- 可重放證據:生成結構化的報告,且不包含敏感信息。
- 環境隔離:使用 Git worktrees 隔離控制樹和候選樹,並凍結輸入。
安裝與啓用¶
插件依賴 DeepSeek Harness 0.1.0-rc.6 及 Node.js ^22.19.0 || >=24.0.0。
- 打包插件:
pnpm pack
- 安裝到指定 profile:
dsh plugin --profile <profile> add ./dsh-reprolab-0.1.0.tgz
安裝後需確保宿主環境的 tools 和 subprocess 服務已就緒(通常由 dsh-base 提供)。
典型用法¶
dsh-reprolab 提供了一組工具來管理從基線到迴歸檢查的完整流程:
reprolab_start
解析倉庫,凍結基線,創建control(控制)和candidate(候選)工作樹。reprolab_set_test
凍結復現測試補丁和目標測試命令。reprolab_verify_red
在控制樹中運行凍結命令,證明存在真實的測試失敗。reprolab_set_fix
從候選樹中凍結僅包含生產代碼的修復補丁。reprolab_verify_green
在候選樹中運行完全相同的凍結命令,證明其通過。reprolab_verify_regression
將候選樹的失敗情況與記錄的基線集合進行比較。reprolab_report
生成report.json和report.md。reprolab_status
檢查運行狀態、凍結的哈希值、報告新鮮度以及下一步合法的操作。
配置選項¶
配置項均爲可選,可通過 Schemastrory 默認值生效。重寫時需提供完整鍵值。
| Key | Type | Default | Meaning |
|---|---|---|---|
runDir |
string | .reprolab |
運行目錄(相對於倉庫根目錄),包含運行狀態、補丁、報告和工作樹 |
graceMs |
number (≥50) | 5000 |
子進程樹終止時的 SIGTERM 到 SIGKILL 的寬限期 |
maxOutputBytes |
number (≥1024) | 1048576 |
單流內存輸出上限,溢出時保留尾部並溢出到磁盤 |
spillMaxBytes |
number (≥1 MiB) | 16777216 |
單流整體溢出上限 |
lockStaleMs |
number (≥1000) | 300000 |
倉庫寫鎖過期閾值 |
權限與外部影響¶
- 文件系統:僅在目標倉庫內寫入
runDir/(默認.reprolab/)、git worktrees、補丁文件和報告。 - 進程:執行 Git 和用戶聲明的測試命令(僅使用 argv 數組,不使用 shell 字符串)。取消/超時會殺死整個進程樹。
- 網絡與遙測:無網絡調用,無遙測數據發送,無需 API 密鑰。
- 憑證安全:子環境從宿主清理後的基礎環境啓動(去除 KEY/PASSWORD/SECRET/TOKEN 名稱及 DSH_* 變量)。輸出會被脫敏(移除令牌、Authorization、Cookie、密碼和高熵字符串)。
適用場景與限制¶
- 併發限制:同一倉庫同一時間只能有一個活躍(非終止)運行,寫鎖採用快速失敗策略。
- 緩存處理:測試運行器緩存 artifacts(如
__pycache__、.pytest_cache、node_modules/.cache)會被變更檢測忽略。 - 框架支持:
pytest和jest的分類基於文檔輸出格式(未驗證本地安裝)。 - 前置要求:倉庫至少需要一個提交(工作樹需要基線提交)。
卸載¶
dsh plugin --profile <profile> remove dsh-reprolab
卸載不會自動刪除運行產物(runDir/ 和 worktrees),需在檢查後手動移除。
總結¶
dsh-reprolab 提供了一套嚴謹的流程,用於在 DeepSeek Harness 中生成可驗證的修復證據。它通過凍結狀態、隔離環境(worktrees)和嚴格的閘門檢查,解決了測試復現和迴歸驗證的痛點。