我们在 Cursor 中如何比较模型质量
Cursor 采用混合在线-离线评估流程来衡量编码代理的模型质量。其内部评估套件 CursorBench 基于真实开发会话,更好地反映了开发者体验。公共基准存在对齐、评分和数据污染等问题,而 CursorBench 在模型区分度和与在线指标一致性方面表现更优。
Cursor 是一家专注于开发编码代理的公司,其产品 Cursor 能够帮助开发者处理跨多文件、多工具和多步骤的复杂任务。随着任务范围的扩大,评估代理性能的基准也需要随之进化。为此,Cursor 采用了一种混合在线-离线评估流程,旨在使模型质量的理解与开发者实际体验保持一致。
离线评估部分依赖于 CursorBench,这是 Cursor 内部开发的评估套件。与许多公共基准不同,CursorBench 的任务来源于 Cursor 工程团队的真实使用会话,而非公共仓库。这种设计使得 CursorBench 在区分不同模型方面表现更优,并且更能反映实际开发者的使用结果。CursorBench 衡量代理性能的多个维度,包括解决方案正确性、代码质量、效率和交互行为。本文重点讨论解决方案正确性,但实际评估中会综合考虑所有维度。
公共基准存在三大局限性。首先是对齐问题:随着开发者使用代理处理越来越多变的复杂任务,静态或错误对齐的基准可能测试了错误的方向。例如,大多数 SWE 基准仍专注于修复 bug 的任务,而 Terminal-Bench 则注重解谜类任务,这些与开发者的实际编码工作并不一致。其次是评分问题:许多公共基准假设只有少数几种正确解决方案,但大多数开发者请求是未充分指定的,存在多种有效方法。基准要么惩罚替代方案,要么添加合成需求,导致评估不准确。第三是数据污染:如 SWE-bench Verified、Pro 和 Multilingual 等基准的任务来自公共仓库,这些常出现在模型训练数据中,从而夸大了分数。OpenAI 最近因发现前沿模型能从记忆中重现黄金补丁,且近 60% 的未解决问题存在测试缺陷,而停止报告 SWE-bench Verified 结果。这些问题的结果是,在模型前沿水平,公共基准已无法区分对开发者效用差异很大的模型。
为解决这些问题,Cursor 构建了 CursorBench。他们通过 Cursor Blame 工具追踪提交的代码与产生该代码的代理请求,从而自然配对开发者查询和真实解决方案。许多任务来自内部代码库和受控来源,降低了模型在训练中见过的风险。同时,他们每几个月刷新一次套件,以跟踪开发者使用代理方式的变化。从最初版本到当前版本 CursorBench-3,问题范围(以代码行数和平均文件数衡量)大约翻了一番。CursorBench-3 任务涉及的代码行数远超 SWE-bench Verified、Pro 或 Multilingual。CursorBench 的任务描述故意简短,以模拟开发者与代理交流时的模糊性,并使用代理评分器可靠地评分。
CursorBench 在模型区分度方面表现更好。在公共基准逐渐饱和的前沿水平,CursorBench 仍能显示模型间的显著差异,例如 Haiku 在某些情况下可匹配甚至超越 GPT-5。此外,CursorBench 的排名与在线评估指标高度一致,后者通过跟踪代理结果的高层面代理信号(包括交互和输出质量)来反映开发者的实际体验。通过控制在线实验,他们能够识别出离线评分良好但在实际使用中效果不佳的回归情况。
展望未来,虽然 CursorBench-3 任务比公共基准任务更复杂,但仍可在单次会话中完成。Cursor 预计在未来一年内,大部分开发工作将转向长时间运行的、在开发者自己计算机上工作的代理。他们计划相应调整 CursorBench,需要找到降低评分成本、解决与外部服务交互的任务的可重复性,并缩小离线评估与开发者体验之间的差距。混合在线-离线循环为他们提供了正确的基础,并计划继续分享进展。