跳到主要内容
返回时间线
arXiv来源发表:

代码判题不再只给结论:35B验证器自己造反例,把判题准确率从71%推到87%

核心概要

一个35B的智能体验证器在只看到题面和候选代码、看不到官方测试的情况下,用自己生成的反例作为可执行证据,把USACO-Judge上的二元判题准确率从71.41%提到87.41%。

Source-provided article image: Beyond the Verdict: Agentic Code Judging with Verifiable Feedback
Figure 1 · arXiv

深度剖析

竞赛编程里的验证器现在可以只凭题面和一份候选程序,既给出接受或拒绝的判断,又给出一个能真正让程序出错的具体输入。 此前官方判题系统只在有限提交次数内给出结论,不提供失败原因或失败输入;已有的代码判题器能描述疑似缺陷,但解释里不一定包含可复现的失败输入。 在USACO-Judge上,同一Qwen3.6-35B-A3B底座加智能体脚手架后二元判题准确率为71.41%,训练后升到87.41%;反例成功率从脚手架下的40.61%升到62.67%。

验证器在通用执行沙箱里自己写测试、跑测试,最后提交一个判定、一段诊断和一个能打印输入的Python生成器。 训练用强化学习完成,奖励只在反例通过合法性校验并真正让候选程序失败时才给足,避免模型靠猜多数类结论拿分。 训练集为6,145道题上的20,000份候选程序,其中15%为接受程序;USACO-Judge含39道USACO 2026赛题的900份C++17候选,接受与不接受按1:2配比。

启示与展望

报告覆盖的是单候选验证任务:输入为题面与候选程序,输出为判定、诊断和反例生成器,验证器看不到官方测试、参考解、输入校验器和输出检查器。评估场景为USACO-Judge的39道USACO 2026赛题与UOJ-Bench的代码攻击划分,训练与评估均在通用执行沙箱和自建在线判题上进行。适合关注测试时扩展、代码验证与竞赛编程自动化的研究人员和工程师阅读。

反例成功只是诊断质量的可检查代理,找到反例能证明失败,找不到反例并不能证明程序被接受。诊断审计只覆盖GPT-OSS-120B的候选,作者将其视为该改进场景内的证据而非跨求解器的估计。长度惩罚的对比显示,过度压缩响应会让平均奖励和攻击成功率从0.777与62.3%降到0.755与59.1%,因此训练在惩罚与不惩罚阶段之间交替。