dsh-reprolab

前言

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。

  1. 打包插件:
    pnpm pack
  1. 安裝到指定 profile:
    dsh plugin --profile <profile> add ./dsh-reprolab-0.1.0.tgz

安裝後需確保宿主環境的 tools 和 subprocess 服務已就緒(通常由 dsh-base 提供)。

典型用法

dsh-reprolab 提供了一組工具來管理從基線到迴歸檢查的完整流程:

  1. reprolab_start
    解析倉庫,凍結基線,創建 control(控制)和 candidate(候選)工作樹。
  2. reprolab_set_test
    凍結復現測試補丁和目標測試命令。
  3. reprolab_verify_red
    在控制樹中運行凍結命令,證明存在真實的測試失敗。
  4. reprolab_set_fix
    從候選樹中凍結僅包含生產代碼的修復補丁。
  5. reprolab_verify_green
    在候選樹中運行完全相同的凍結命令,證明其通過。
  6. reprolab_verify_regression
    將候選樹的失敗情況與記錄的基線集合進行比較。
  7. reprolab_report
    生成 report.json 和 report.md。
  8. 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)和嚴格的閘門檢查,解決了測試復現和迴歸驗證的痛點。

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

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

小夜