SWE-bench Verified & LCB 实测基准 编写模型:Codex · GPT-5 / gpt-6-astra 冻结收据对账 · 2026-10-23

SWE 评估中模型病症全景剖析

从第一性原理拆解智能体长程闭环机制,以本地 Qwen3.5-4B 基准收据(SWE v2/v3、LCB 全量与分层臂)为铁证,归纳五层典型系统性病态表现与后训练靶向处方。

第一性原理:SWE 任务的物理闭环

Phase 01
空间感知与定位
解析含噪 Issue 描述,在数千文件的大型仓库中准确定位故障模块与涉事符号。
Phase 02
假设与复现构造
建立可运行的最小复现测试,将模糊的自然语言需求固化为可判定的断言。
Phase 03
最小侵入式修改
实施代码级精准编辑,保持软件系统的全局架构不变性与接口契约。
Phase 04
测试验证与防回归
运行真实测试套件:确保目标测试 F2P 变绿,同时既有存量测试 P2P 无一崩溃。
Phase 05
规范状态交付
清理工作区与临时文件,落盘生成标准 unified diff,完成物理环境交付。

实测证据看板:做对与做错的极端两极

Token 消耗裂解 · LCB 全量 175 题
6,408 P50 做对组 (无一撞顶)
16,384 P50 做错组 (100% 顶格死锁)
做对题目在 1.1 万 token 内收敛;做错题目 100% 打满 16K 上限,截断题最终回答字符 100% 为 0。
预算翻倍反转 · LCB 30 题臂 16K vs 32K
+77.2% Token 消耗总增幅
由 16K 翻倍至 32K 仅多解出 1 题(8/30 → 9/30);失败题复读率从 0.376 恶化至 0.595,出现 1,563 行连环退化。
SWE 诊断消耗 · Astropy 10 题 v3 diag10
15,329 P50 健康做对组
56,338 P50 做错组 (3.68 倍)
做错组 P90 达 97,962 token。耗满 12 次续写上限的 5 道题通过率为 0/5,长独白完全无法自我挽救。
工具调用严重偏执 1,363 次总调用
91.1% bash 调用占比 (1,241次)
结构化 read 仅 77 次,edit 仅 45 次(其中两题全程 edit=0)。退化为终端盲试脚本小子。

五层系统性模型病症深度剖析

L1 · 交付层 交付断层(Delivery Gap)
“心里推导完,就算做完了”

第一性原理成因

自回归语言模型欠缺从“内省思维符号态”向“物理世界外部工具动作”切换的时序触发机制。模型在思维链中完成了形式上的逻辑闭环,便产生了满足感,缺乏驱动最终落地落盘的必然断言。

实测铁证收据

• SWE 13579: 思考指出 The fix should be to not pass 1.(与官方正解完全一致),但全程调用 edit 为 0,输出 0 字节补丁。
• SWE 14369: 产生 220,917 字符巨大 diff,但全部为全仓库 chmod 权限变动,代码内容行 +/- 为 0(虚假交付)。
• LCB 175 题: 13 道题在 <think> 中暗含正解,但因通道未切入最终回答,输出字符为 0 惨遭挂科。

靶向后训练处方

Pool C1(落地收敛池)
筛选证据充分且在短步内触发有效代码内容行编辑(严格排除 mode-only 假补丁)并验证通过的样本,强化从推导向落地落盘的状态跃迁。
L2 · 动力学 行为自锁与预算反转(Dynamics & Budget Paradox)
“死循环自锁,加预算反成毒药”

第一性原理成因

面对高维不确定性时,模型注意力坍缩至上下文已有 token,形成无法逃逸的自回归吸引子。小模型缺乏多层控制元控制器(Meta-controller),导致“长篇独白”(不碰环境)与“碎步空转”(盲敲终端)极端分裂。

实测铁证收据

• SWE 14096: 单句假设在思考中连续复读 668 次,从未真正执行验证。
• SWE 14182 / 14309: 狂打 321 次与 426 次 bash,把十余万 token 消耗在碎片命令空转中。
• LCB 32K 臂: 预算翻倍多消耗 77% token,失败题复读率激增至 0.595,出现连续 1,563 行单一退化。
• 续写全败: SWE 用满 12 次续写上限的 5 题,通过率 0/5 (0%)。

靶向后训练处方

Pool C2(验证收束池) & 段级掩码
演示测试全绿后立即生成 patch 退出的收束示范;对机械重复、无效试探的 assistant token 执行 loss=0 屏蔽。
L3 · 语义层 语义破坏与粗粒度规避(Collateral Damage / 修 A 破 B)
“消除局部报错,崩塌全局契约”

第一性原理成因

模型受到消除当前错误(F2P)的短视损失驱动,采取最低阻力的局部规避方案(如全局 broad catch),严重欠缺对系统全局不变性(Invariants)和契约(P2P)的联合多任务建模。

实测铁证收据

• SWE 13977: 要求特定场景返回 NotImplemented,模型粗暴全局 try-catch,导致原本正常的 45 项既有测试(P2P)全军覆没由绿变红。
• SWE 13236: 模型自报完成,实际修改方向完全偏离 issue 核心语义(F2P 0/2)。
• LCB abc392_d: 算法核心完全正确,仅因浮点除法未对齐高精度,产生 3e-16 微小误差而惜败。

靶向后训练处方

Pool B(纠错示范池)
从真实失败状态(红灯反馈)注入,示范如何识别全局契约冲突、修正局部短视实现,达成 F2P 通过且 P2P 保持全绿。
L4 · 治理层 状态与工作区治理失控(Workspace Pollution)
“调试垃圾入补丁,工具生态荒漠化”

第一性原理成因

模型缺乏“工程整洁度”和“最小可验证差异(Minimal Verifiable Patch)”的契约约束,无法自主清理中间调试产物与工作区快照,且对终端原生 shell 具有病态依赖。

实测铁证收据

• SWE 14508: 确实修改了 card.py,但将 card.py.bak 备份文件(1,162 行)全量带入 git diff。
• 工具滥用失衡: 91.1% 强依赖 bash,结构化 edit 仅占 3.3%,无法进行精细行级替换,动辄暴力重写整个代码块。

靶向后训练处方

Pool C3(状态自律) & 导出过滤器
严格拦截 .bak 等非源码变更与全文件重写;在数据工厂中强制执行“最小 diff”准入,并引入诚实报告未完成(C3)样本。
L5 · 协议层 协议与基础设施失配(Protocol / Window Mismatch)
“未上战场,先被协议击倒”

第一性原理成因

客户端在多轮长程交互中对 input token 的估算存在系统性低估,缺少保守的 reserve 窗口预留机制;长上下文在序列化时发生格式破损,导致服务端请求被直接 400 拒绝。

实测铁证收据

• SWE 14539: 服务端窗口 32,768 token,实际 input 至少 19,903 token,客户端仍请求 12,866 output,总计 32,769 token(越界 1 token) 被服务端 400 强行拒掉,直接产生不可判 infra 失败。

靶向后训练处方

精确 Token 记账与安全 Reserve
采用与服务端推理引擎完全相同的 tokenizer 和 chat template 进行精确序列化,硬性保留 ≥2K 的 safety reserve,彻底杜绝边界越界。

后训练(SFT / RL)数据池靶向映射表

数据池编号 数据池性质与定位 靶向治疗的核心病症 准入过滤与构建核心原则
Pool A 教师高质量标准轨迹池 基座基础代码、工具调用与推导规范 经独立 checker 验证全通过;但不可仅依赖 Pool A,因其难以覆盖真实失败恢复。
Pool B 因果纠错示范池 L3 修 A 破 B、局部短视规避、错误后死锁 真实失败状态 + 真实测试可见反馈作为上下文(loss=0),教师有效纠错输出(loss=1),独立 F2P/P2P 双验收。
Pool C1 落地收敛池 L1 交付断层、长篇独白、全程 0 edit 定位依据充分,在短步内触发有效代码行修改(非 mode-only),严禁无落盘的哲学空谈。
Pool C2 验证收束池 L2 盲目循环、预算耗尽、已完成仍空转 呈现测试通过后立即生成 patch 退出的收敛动作,结尾无机械重复,杜绝耗尽预算。
Pool C3 诚实失败与状态自律 L4 工作区垃圾入补丁、虚假宣称成功 在资源或证据不足时如实报告未解决,而非伪造 patch 或盲目改动不相关文件。