论文链接:https://arxiv.org/abs/2603.20075 | GitHub:https://github.com/dtcxzyw/llvm-autofix

团队:Yingwei Zheng, Cong Li, Shaohua Li, Yuqun Zhang, Zhendong Su(浙大 + Zhendong Su 团队)

提交日期:2026年3月20日


核心问题

编译器是现代计算的基础设施,但修复编译器 bug 极其困难。与普通软件 bug 不同,编译器 bug 有几个独特挑战:

  • 缺乏自然语言描述:普通软件 bug 通常有详细的 issue 描述;编译器 bug 只有一个 reproducer(测试用例)+ stack trace 或 counterexample
  • 跨领域专业门槛高:需要理解词法/语法分析、类型系统、IR 设计/优化、代码生成,通常需要人类工程师数年才能掌握
  • 现有通用工具不适配:SWE-bench / SWE-agent 用 bash 工具处理通用软件工程,在编译器领域效果有限

关键数据

  • Benchmark 规模:334 个可复现的 LLVM 中间层 bug
  • 难度分布:Easy 76.3% / Medium 13.2% / Hard 10.5%
  • Frontier 模型性能下降:从 SWE-bench 到 llvm-bench 平均下降 62%
  • 最佳模型(无 harness):DeepSeek V3.2 仅 38%(vs SWEV 60%)
  • 最佳模型(有 harness):GPT 5 达 52%(llvm-autofix-mini)
  • harness 提升幅度:llvm-autofix-mini 比 mini-SWE-agent 高 22%
  • Expert Review 真实能力:Frontier 模型实际能力始终低于 22%

Harness 设计:三层架构

这是 Harness Engineering 的经典案例。llvm-autofix 的三层设计:

1. Agent-friendly LLVM Tools(工具层)

把编译器任务封装成 Agent 可用的接口:

  • Setup & Build:处理构建配置,Agent 不用操心大型系统编译
  • Reproduce & Cause:验证 bug 可复现性,输出精简后的 stack trace / alive2 反例
  • Explore & Debug:静态搜索(代码/文档/IR 规范)+ 动态调试(gdb 断点检查)
  • Edit & Patch:编辑、预览、回退、提交
  • Test & Validate:重建 + 回归测试 + alive2 验证
关键设计:消除不必要的技术细节,让 Agent 专注于 bug 定位和修复核心环节。

2. llvm-bench(基准层)

334 个可复现的 LLVM 中间层 bug,每个约 1.4 个 reproducer + 722 个回归测试。按难度分三档,持续更新 live 版本(仅过去一年的 issue)。

3. llvm-autofix-mini(Agent 层)

针对 LLVM 中间层 bug 定制的最小化 Agent,基于团队在修复 LLVM issue 的真实经验设计。比通用 mini-SWE-agent 高 22%。


关键洞察

1. 工程能力 > 模型能力

Frontier 模型在编译器 bug 修复上比普通软件 bug 性能下降 60%。这再次证明 Harness Engineering 的核心论点:不是模型不够聪明,是环境没铺好。

llvm-autofix-mini(专门设计的 harness + 最小 agent)就能把 GPT 5 从"裸跑"提升 22 个百分点。

2. Expert Review 揭示真相

通过 LLVM 专家人工审核 agent 的 patch,发现 Frontier 模型的真实能力始终低于 22%。很多通过 benchmark 测试的 patch 实际上是"碰巧过测试",不是真正修复了 bug。

仅仅测试通过 ≠ 正确修复,验证环节的设计至关重要。

3. Agent-friendly 接口的设计哲学

  • 编译 LLVM → 自动化,不需要 Agent 理解 CMake 配置
  • Stack trace → 精简掉无关帧,只保留关键信息
  • 验证 → 封装 alive2,不需要 Agent 写翻译验证逻辑
Harness 的职责是给 Agent 铺好路,让它专注于核心推理。

4. 开放挑战

  • 系统化验证 patch 正确性:LLVM 的回归测试不够充分,需要更强的验证手段
  • 编译器专用 Agent:要么开发编译器专用工具,要么增强模型在优化编译器方面的专业知识

与 Harness Engineering 的关联

这篇论文完美诠释了 Harness Engineering 的几个核心原则:

  • 环境设计(Environment Design):Agent-friendly tools = 渐进式披露的编译器环境
  • 反馈循环(Feedback Loop):Test & Validate 环节 = 多层验证(回归测试 + alive2)
  • 黄金原则编码(Golden Principle Encoding):alive2 验证 = 把"优化必须保持语义"这个黄金原则编码进 harness
  • 渐进式披露(Progressive Disclosure):Agent 只看到精简后的信息,不需要理解整个 LLVM 构建系统

逍遥云初 | 2026.03.31