它不是“一键自动修复”。每个阶段的结论都保存为可审阅的记录,执行前需要你确认,交付前需要你判断。
入口
维护调查总是从具体上下文进入,不是独立的侧栏页面:
| 从哪里进入 | 按钮 | 调查目标 |
|---|---|---|
| Issue 详情 · 修复与验证 | 准备修复建议 | 修复这个 Issue 描述的问题 |
| PR 详情 · 需求与变更核对 | 核对需求与改动 | 核对 PR 的改动是否满足描述和关联 Issue 的要求 |
| 体检报告 · 改进方案 | 核对跨文件改进依据 | 围绕待完善项准备跨文件的改进 |
前提条件
- 默认模型:调查会多轮调用模型,点击前会提示“此操作会调用已配置模型”。
- 维护 Agent Worker 在线:调查在后台进行,离开页面后仍可恢复。服务未连接时,已有记录仍可查看,但不能开始新的模型操作。
- 隔离执行(执行对照时需要):Docker 沙箱已启用,复现 Worker 在线。
调查流程
页面顶部的“修复与验证流程”显示当前阶段,并给出唯一的下一步按钮:
| 阶段 | 产物 | 下一步 |
|---|---|---|
| 读取依据 | 原文、源码、提交检查、项目规则和讨论上下文的读取记录,标注“有依据”或“待验证” | 准备候选补丁 |
| 候选补丁 | 以最小改动保存的补丁,可审阅文件差异、下载 | 准备需求对照 |
| 对照执行 | 原始版本与候选版本的两组执行计划及结果 | 审阅、确认执行,读取结果 |
| 阶段结论 | 已验证的行为、未覆盖的范围和仍缺的信息 | 下载补丁,或继续调查 |
随时可以:
- 在“补充线索或调整方向”中填写实际运行环境、补充步骤或需要核对的实现,点击“补充并继续”;
- 点击“停止调查”,已有方案与记录会保留,之后可以“恢复当前调查”;
- 把某条已核实的发现“确认并记为项目约定”,后续调查会沿用,也可以随时停用。
审阅候选补丁
候选补丁显示新增和修改的文件、文件差异,以及方案引用的依据。补丁只保存在 RepoCare 中,没有应用到仓库,也没有提交;如需采用,请下载补丁后在对应版本的开发分支中审阅和测试。
需求对照
准备需求对照时,RepoCare 会把问题拆成逐条要求,并为每条要求对应:
- 原文:引用问题中的精确原文;
- 生产改动:补丁中对应的修改;
- 同一目标测试:两个版本共用的测试命令;
- 原版预期断言:在原始版本上应该出现的失败信号。
此外还会安排额外回归命令,检查正常行为在两个版本上都能通过。
确认并执行对照
- 在“审阅与执行两版计划”中查看完整计划:固定提交、环境、依赖、准备步骤、验证步骤和需要注意的事项。可以展开“查看要写入沙箱的文件内容”。
- 处理“执行前置条件”。真正缺少的环境或需求信息需要先补齐;如果某项只影响结论范围、不妨碍当前命令执行,可以在“核对阻塞与范围”中逐项复核,并写下至少 8 个字的理由。复核会保留记录,不会忽略环境预检发现的真实阻塞。
- 支持的计划可以点击“检查运行环境”:静态核对版本声明、选定测试和相关
conftest,不安装依赖、不运行代码。 - 勾选确认项(已核对补丁 Diff 和共同使用的测试、同意在隔离环境执行仓库代码),点击“确认执行此计划”。
- 执行结束后点击“读取结果并继续”,整理实际结论。
解读对照结果
“需求与改动验证”区域回答两个问题:目标有没有改善?其他行为验证到哪里?
| 原始版本 | 候选版本 | 说明 |
|---|---|---|
| 命中约定的目标故障 | 通过 | 支持“该改动改善了目标行为” |
| 通过 | 通过 | 本次测试没有区分两个版本,不能说明改动有效 |
| 失败 | 失败 | 改动没有解决问题,或测试本身有问题 |
| 环境受阻 | — | 环境问题,不能据此判断补丁正确与否 |
额外回归命令显示“两版全部通过”“存在失败”“待执行”等状态。
添加人工验收测试
模型准备的测试可能和补丁出自同一思路。为提高说服力,可以在“人工验收对照”中添加独立的 pytest 验收测试:
- 至少选择一条需要验收的要求。
- 粘贴顶层
test_函数,或读取本地.py文件(最多 20KB)。测试应导入项目的公开接口。 - 填写目标测试函数名和原版预期失败标记(断言中实际会出现的文本),以及至少一个正常行为测试函数名。
- 说明测试来源与覆盖范围,并声明测试是否提供给了生成候选的模型。
- 原计划缺少依赖准备时,可以补充受支持的 pip 准备命令,它们同样要经过校验与预检。
- 点击“保存待审阅的验收方案”。保存不调用模型、不执行代码,之后仍要逐条审阅并确认执行。
系统会保存你的声明和实际执行依据,但无法据此证明测试的独立作者身份或盲测条件。
导出记录
对照记录可以导出为 Markdown 和 JSON,包含仓库、原始提交、计划指纹、规则版本、每条要求的原文与测试、额外回归、执行前置条件和范围限制。导出内容属于固定版本,不会自动查询最新的 GitHub 内容。