浙江大学推出创新代码训练框架 双模型对抗机制破解人工标注瓶颈

问题: 代码生成技术正逐步应用于工程实践,但训练和评测中的“测试用例瓶颈”问题日益凸显。目前的主流方法依赖专家手工编写单元测试或高质量参考答案来验证生成代码的正确性。然而,高质量的测试需要覆盖边界输入、异常场景和隐蔽缺陷——编写成本高、周期长——且难以扩展。更关键的是,固定的测试集无法随模型能力提升而动态调整难度,导致评测结果逐渐失真——题目过于简单,无法有效筛选问题,从而制约了代码生成能力的持续提升。 原因: 测试与代码生成存在天然的目标冲突。如果让模型同时负责生成代码和测试,容易导致“自我放水”——模型倾向于生成容易通过的测试用例,从而抬高通过率;如果限制测试模型无法访问候选代码,生成的测试又往往过于通用,难以针对具体实现中的漏洞进行精准检测。这种两难局面使得训练过程缺乏高强度反馈,也缺少可持续升级的难例来源。 影响: 测试供给不足不仅提高了研发门槛,还威胁落地应用的安全性。在软件研发中,边界错误、重复元素处理不当、异常输入未覆盖等问题往往在规模化部署后才暴露,修复成本远高于训练阶段。对产业而言,低成本、可迭代的自动测试生成能力以及更可靠的代码生成技术,将直接影响智能编程工具在企业开发、数据处理和科研计算等场景中的可用性与可信度。 对策: 浙江大学团队提出Code-A1训练框架,其核心思路是将“代码生成”与“测试生成”分离,由两套独立模型分别负责,并设定对抗性目标:代码模型以通过更多测试为目标,测试模型则以发现更多缺陷为目标。与传统单模型自循环不同,测试模型可直接分析候选代码的细节,围绕关键分支、边界条件和潜在漏洞生成“更刁钻但可执行”的测试用例,迫使代码模型提升。为提高训练稳定性,团队设计了“错误记录本”机制,持续积累历史失败测试,避免模型在新任务中遗忘教训,从而推动能力在反复纠错中提升。此外,奖励机制被细化为双重约束:代码侧以通过率为主要指标,测试侧则需在“可执行性”与“挑战性”之间平衡,避免生成无效或过于简单的测试用例。 前景: 该研究已于2026年3月在预印本平台arXiv公开(编号:arXiv:2603.15611v1),并计划在计算机科学领域顶级会议上交流。团队基于Qwen2.5-Coder系列不同规模模型进行实验,在HumanEval+、MBPP+、BigCodeBench等基准测试中取得了与人工标注测试方案相当甚至更优的结果。不容忽视的是,中等规模模型经该框架训练后,测试生成能力超过更大规模基础模型,表明训练策略和数据机制可在一定程度上弥补规模差距。业内人士认为,随着软件工程对可靠性和可验证性要求的提高,此类“对抗式自动测试生成”若能与形式化验证、静态分析、持续集成等工具结合,有望形成更低成本、更可扩展的代码质量保障方案,推动智能编程从“能写”向“写得对、写得稳”迈进。

从依赖人工编写测试到通过对抗机制实现自动“出题—验题—纠错”,Code-A1标志着代码生成领域从“数据堆叠”向“机制创新”的转变。如何让模型在动态压力下持续暴露短板并巩固经验,将直接影响生成式编程工具的可靠性和可用性。构建更低成本、更高质量的验证体系,或将成为智能编程迈向规模化应用的关键一步。