论文链接: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 验证
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. 工程能力 > 模型能力
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 写翻译验证逻辑
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





