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

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

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

小夜