Sunday 的面试指南

SWE-bench 是什么?AI 编程 Agent 的跑分能直接比较吗?

🧑‍💻 面试官:两个 AI 编程产品都公布了 SWE-bench 成绩,你会怎么比较?

🙋‍♂️ 我:先看解决了多少任务,分数高的代码能力可能更好。

🧑‍💻 面试官:一个跑 Verified,一个跑 Lite,能这样排吗?

🙋‍♂️ 我:不能,要先对齐数据集。

🧑‍💻 面试官:对齐以后,一个允许反复尝试和挑选补丁,另一个只运行一次;模型相同、Agent 工具不同。这个分数到底在比较谁?

先问「成绩是在什么条件下取得的」:基准、任务集、Agent 配置和尝试预算没有对齐,单独一个百分比说明不了全部能力。

面试速答(60 秒版)

SWE-bench 是用真实代码仓库和问题来评测软件修复能力的一组基准。系统根据问题生成代码补丁,评测程序再把补丁应用到指定仓库状态,通过测试检查任务是否解决。

它评测的不是“代码看起来合理”,也不是任意生成一段函数。不同版本的任务范围不一样,例如 Verified 是经过人工筛选的子集,Lite 则是成本较低的子集。

因此,比较成绩时,要先对齐数据集、评测规则、Agent 工具、模型版本、尝试次数和预算。模型相同,执行系统不同,也可能得到不同结果。

同时,基准通过不代表所有真实项目都能放心交给它。业务需求、权限、代码审查和长期维护,仍然要在自己的任务中验证。

SWE-bench:补丁要放回仓库验证

知识点详解:这个分数究竟是怎样得到的?

题目不是一段独立函数

假设某个开源项目的 issue 说:“输入为空列表时,接口应该返回空结果,现在却报错。”

参加评测的系统需要阅读问题,定位仓库里相关的代码,再生成补丁。它可能需要搜索文件、理解已有实现和运行检查,不只是根据题目补齐一个函数。

每道任务还对应一个指定的基础版本。不能拿仓库当前最新版运行,因为后来提交可能已经修好了这个问题。

SWE-bench 官方站点列出了不同基准。核验时,原始 SWE-bench 为 2294 个实例,Verified 为 500 个,Lite 为 300 个。这些名称与任务集应明确记录,不能把不同集合的百分比混成一张无条件排名。

生成补丁和判定通过,是两件事

生成阶段,编程 Agent 根据允许的工具和预算探索仓库,最后提交修改。

评测阶段,harness,也就是负责组织测试的评测程序,把补丁应用到任务环境,再执行规定的检查。官方评测说明介绍了这套容器化流程。

需要解决问题的测试要通过,要求保持通过的原有测试也不能被破坏。Agent 自己写了一句“修复完成”,不会替代这些结果。

如果补丁应用失败、环境启动失败或执行超时,也要单独记录原因。它们与“测试跑完,但功能没有修好”并不是同一种情况;不能悄悄删掉这些实例,改变分母以后继续报同一个解决率。

写出补丁,不等于题目通过

同一个模型,为什么会跑出不同成绩?

模型看到什么代码、能够执行哪些工具、一次任务最多运行多久,都会影响它能完成多少工作。

例如,一个 Agent 可以搜索仓库并运行测试,另一个只拿到几个检索片段;即使都使用同一个模型,它们面对的材料和反馈也不同。

再例如,系统生成多个补丁,然后通过某种选择规则留下一个。这个成绩就包含了多次尝试与选择策略,不能无条件和只提交一次的结果比较。

所以,至少要把以下条件一起记录:

比较项应该问清楚什么
数据集Full、Lite、Verified 或其他版本?具体任务列表是什么?
模型哪个版本?是否经过额外训练?
Agent提供什么工具、上下文和执行方式?
预算工具步数、时间、Token 和尝试次数?
结果选择是否生成多个候选?用什么信息选最后一个?
评测harness、环境、分母与失败处理是否一致?

不要把用于最终验收的隐藏答案或测试反馈,违规带回生成与选择过程。允许使用什么信息,必须按基准规则说明。

比较成绩,先对齐评测条件

跑分高,为什么仍然需要项目验收?

基准描述的是特定任务和测试条件下的表现。公司项目可能使用另一种语言,依赖私有服务,也可能有测试尚未覆盖的权限要求。

因此,跑分可以作为能力线索,不能替代项目测试。实际选用编程 Agent 时,可以准备脱敏的典型任务,检查修改范围、功能结果、回归情况和完成成本。

对涉及资金或隐私的代码,还需要额外审查。这些要求并不会因为某个产品在公开榜单上排名靠前就消失。

面试官继续追问

Verified 是不是意味着每道题都有完美测试?

不是。人工筛选改善的是任务与评测的可靠性,不能保证测试覆盖所有行为。读成绩时仍然要理解它检查了什么,没有检查什么。

可以只跑自己擅长的那部分任务,再报告解决率吗?

可以做内部专项实验,但必须注明任务列表、筛选方式和分母。不能把它包装成对完整官方集合的成绩。

我重新生成补丁,为什么评测结果没变化?

需要检查是否复用了结果缓存。官方文档说明,同一个 run_id 与 instance_id 可能复用既有结果;重新评估不同补丁时,应使用新的运行标识,并保存实际补丁和日志。

面试速记卡

  • SWE-bench:在指定仓库状态上应用补丁,用规定测试评测修复结果。
  • 版本区别:不同任务集的百分比不能直接混排。
  • 成绩来源:模型、Agent 配置、尝试预算和评测环境共同影响结果。
  • 比较要求:对齐规则、任务列表与分母,说明失败和候选选择方式。
  • 使用边界:公开跑分是线索,不能替代自己的项目验收。
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历