fix/minimal-diff-execution
main
SWE-bench Pro 10 题两臂(single+swarm)均 0/10 resolved。诊断:patch 能 apply 并跑测试,但 agent 整文件重写引入无关改动(格式/注释/版权头/丢行)→ 小回归挂测试(NodeBB 296/300、ansible 171/175 仅差几个),或巨 diff apply 不上。
agent 无本地读文件工具,只拿到 workspace 截断采样,凭残缺输入重构完整文件。
_load_exact_target_files()
py_compile + helper 单测 + 4 契约测试全绿。待部署后重跑 10×2 验证 resolved 是否提升。
根因:agent 无本地读文件工具,只拿到 workspace 的截断采样,被要求"输出完整文件" 时只能凭残缺采样+自身知识重构整个文件 → 丢行/重排/改注释/版权头 → 巨噪声 diff, 要么 apply 不上,要么 apply 了破坏无关测试(SWE-bench Pro 两臂 0/10 的主因)。 修法: - _load_exact_target_files():从子任务描述正则提取目标文件路径,注入其**完整未截断** 的磁盘原文(上限6文件/各120KB,超限留给采样)。 - 执行 prompt 新增 "EXACT CURRENT CONTENT" 段 + 强令:返回内容必须是该原文逐字节保留、 仅施加任务所需最小编辑,禁止 reformat/reorder/rename/clean-up 无关行。 - 强化原 full-file 输出说明。 目的:让 diff 只含必要行,救回 NodeBB 296/300、ansible 171/175 这类"差几个测试"的近失题。 契约测试全绿(runtime-contract/merge-smoke/workflow-e2e/contract-freeze)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
影响范围
问题
SWE-bench Pro 10 题两臂(single+swarm)均 0/10 resolved。诊断:patch 能 apply 并跑测试,但 agent 整文件重写引入无关改动(格式/注释/版权头/丢行)→ 小回归挂测试(NodeBB 296/300、ansible 171/175 仅差几个),或巨 diff apply 不上。
根因
agent 无本地读文件工具,只拿到 workspace 截断采样,凭残缺输入重构完整文件。
修法
_load_exact_target_files():从子任务描述提取目标文件,注入完整未截断原文(≤6文件/各120KB)。验证
py_compile + helper 单测 + 4 契约测试全绿。待部署后重跑 10×2 验证 resolved 是否提升。