面对代码大模型在传统评测基准上日益饱和的“高分幻觉”,北航团队开源了Code2Bench框架。该框架通过“双重扩展”哲学,动态获取真实代码并施以工业级测试强度,旨在构建一个能杜绝记忆作弊、暴露深层逻辑缺陷的新评测范式,推动模型能力评估回归真实工程世界。
智能速览
传统代码评测基准面临数据污染与测试不严的困境,导致“高分幻觉”。
Code2Bench提出“双重扩展”哲学,系统性扩展问题来源与测试严谨性。
框架动态获取GitHub新代码,并通过100%分支覆盖率的测试确保质量。
新基准Code2Bench-2509在复杂度与测试用例数量上远超传统基准。
“诊断指纹”揭示了模型在纯算法与API调用上的能力鸿沟及语言范式影响。
精华内容
为了终结代码评测中的“高分幻觉”,Code2Bench并非简单地发布新数据集,而是构建了一套可持续演进的自动化流水线,从根本上重塑了基准的生成逻辑。
双重扩展核心
Code2Bench的核心构建哲学是“双重扩展”,即同时扩展代码来源的广度与测试严谨性的深度。这一设计旨在对抗传统评测基准的两大弊病:数据污染与“正确性幻觉”。通过确保题目对模型绝对新鲜且测试足够严苛,Code2Bench试图将评估从检验“记忆力”转向衡量真实的泛化推理能力,建立了一个面向未来的动态对抗环境。
动态与严谨
在实现上,框架首先动态获取GitHub活跃项目中,依据模型知识截止日期筛选出的“新鲜”函数代码,从源头杜绝了“背题”可能。接着,通过Scope Graph分析技术自动处理外部依赖。在测试端,Code2Bench引入基于属性的测试(PBT)为每个函数生成数百上千个测试用例,并设立“Great Filter”——只有达到100%分支覆盖率的任务才会被采纳,确保了工业级的测试严谨性。
诊断式评测
得益于量级扩展的测试用例,Code2Bench提供了“诊断指纹”,将评测从单一分数升级为对模型错误模式的深度透视。分析发现,模型在纯算法任务上多犯逻辑错误,而在API调用任务上则易出现运行时错误,揭示了其“擅长调API,却在写算法上挣扎”的能力鸿沟。同时,对比Python与Java的评测结果,Java的静态类型系统如“性能脚手架”般显著降低了逻辑错误率,直观展示了语言范式对模型能力的影响。
代差式难度
研究团队基于该框架构建了Code2Bench-2509基准集,其指标与主流基准形成“代差”。纯逻辑任务的平均圈复杂度达到5.3,远超HumanEval的2.8;每题平均约500个测试用例,碾压后者不足8个的水平。模型表现对比更直观:Claude-4-Sonnet在HumanEval上高达97%,但在Code2Bench-2509上骤降至40.1%。这一断崖式下滑证明,Code2Bench通过真实工程代码构筑了新战场,有效戳破了由记忆和模式匹配支撑的传统高分。