前言¶
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)和严格的闸门检查,解决了测试复现和回归验证的痛点。