我們在 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,需要找到降低評分成本、解決與外部服務交互的任務的可重複性,並縮小離線評估與開發者體驗之間的差距。混合在線-離線循環為他們提供了正確的基礎,並計劃繼續分享進展。