这项由香港科技大学广州与江苏集萃感知技术研究所联合开展的研究发表于2026年5月论文编号为arXiv:2605.23491感兴趣的读者可通过该编号查询完整论文。说到底教AI写代码历来是一件麻烦事。麻烦在哪儿核心在于如何判断AI写的代码好不好。你不能光靠肉眼看必须有一套可以自动运行、自动打分的考试题——行话叫做单元测试Unit Test后文简称UT。这些测试题就像数学题的标准答案一样给定一个输入告诉你正确的输出是什么然后让AI写的代码去对答案。问题在于这些标准答案从哪儿来通常由人类专家或官方出题人一道道精心设计成本极高数量有限。现有最厉害的那批AI编程训练方法学术上称为强化学习可验证奖励即RLVR都依赖大量这样的标准测试题才能运转就像学生刷题必须有答案一样。一旦没有这些标准答案AI的表现就会大幅下滑。这个困境就像是一个只能在有参考答案的题库里练习的学生。一旦题库用完或者遇到新题型就茫然无措。研究团队提出的方法叫做**CoSPlay**全称Cooperative Self-Play at Test-Time with Self-Generated Code and Unit Test直译为利用自生成代码和单元测试的测试时合作自博弈。这个名字听起来很拗口但核心思路用一句话就能说清楚**让AI自己出题、自己答题、自己改卷、自己进步——全程不需要任何人类提供的标准答案也不需要重新训练AI的大脑。**这就像一个学生没有老师、没有答案册但他能和同学互相出题、互相批改在这个过程中越来越厉害。CoSPlay就是让AI扮演这个既出题又答题的学生角色。---一、为什么没有标准答案是个大问题先说清楚这件事有多重要。当前AI写代码的能力突飞猛进背后有两大核心技术路线。第一条路是强化学习Reinforcement Learning with Verifiable RewardsRLVR用大量带有标准答案的测试题反复训练AI让AI在训练过程中学会如何写出能通过测试的代码。第二条路是测试时扩展Test-Time ScalingTTS不改变AI本身而是在AI临场发挥时多生成几个方案然后用测试题筛出最好的那个。两条路都依赖标准测试题。就像备考高考无论是平时刷题强化学习还是考前押题测试时扩展都得有题目和答案。而这些题目由权威出题人提供数量有限制作成本极高。目前业界最强的一批AI编程模型比如论文中提到的CURE-7B需要4500道这样的标准测试题才能训练出来AceCoder-7B-RM甚至需要多达32.9万条偏好数据。当没有这些标准答案时会发生什么研究团队发现现有的无标准答案方法普遍存在两个致命弱点AI自己生成的测试题质量参差不齐有的题目答案根本就是错的更糟糕的是错误的代码和错误的测试题会狼狈为奸——错误的代码恰好通过了错误的测试题反而得到了高分就像两个都抄错的同学互相对答案后都觉得自己做对了。这种现象研究团队称之为虚假耦合spurious coupling错误的代码和错误的测试题意外地配对成功产生错误的正反馈。这是整个无标准答案场景下最难克服的障碍。CoSPlay的使命就是在这种困境中找到出路。---二、CoSPlay的核心设计代码和测试题互相淘汰赛CoSPlay的工作流程分为三个大阶段可以用一场双向淘汰赛来理解。**第一阶段出题前先摸底**赛前侦察员的工作是搞清楚对手的弱点在哪里。CoSPlay的第一阶段就是让AI扮演这个侦察员。AI首先面对一道编程题生成多个高层次的解题思路论文中称为hints。这些思路不是具体的代码而是类似这道题可以用贪心算法解、也可以用动态规划解这样的方向性想法。然后AI把这些思路两两组合单独或成对扩展成更详细的解题方案。这样AI就为自己准备了一批多样化的解法草稿。接下来是关键步骤AI针对每一个解法草稿主动思考这个解法容易在哪里犯错。就像经验丰富的老师会说用贪心算法的同学往往会在处理边界条件时翻车AI生成了一批攻击性测试思路attack ideas——专门针对各种解法可能犯的错误设计的测试方向。这批针对性测试思路大大提高了后续生成测试题的质量。对比实验显示用这种方式生成的测试题平均通过率比直接随机生成的高出2.39个百分点而且极低通过率的无效测试题减少了29%。打个比方与其随机出一百道题不如精准研究对手弱点后出二十道针对性题目效果反而更好。**第二阶段代码和测试题互相博弈**这是CoSPlay最核心的部分也是合作自博弈名字的由来。AI根据之前的解法草稿生成一批候选代码默认16个同时根据攻击性测试思路生成一批候选测试题默认16道。为了保证测试题的答案尽量正确AI对同一个输入多次计算预期答案默认采样4次只有当至少3次计算结果一致时才采用该答案——这叫自洽验证self-consistency就像多算几遍确认答案不一致就扔掉。然后AI把所有候选代码和所有候选测试题放进一个执行矩阵——每一行是一个代码每一列是一道测试题格子里填通过或失败。这个矩阵就像一场循环赛的赛程表。从这个矩阵里AI可以读出两种信号对于每道测试题有多少代码通过了它称为测试题通过率对于每个代码它通过了多少测试题称为代码通过率。研究团队从理论上证明并用实验数据验证通过率越高的测试题其答案越可能是正确的通过率越高的代码越可能是真正正确的代码。这个直觉非常符合现实——如果一道测试题被大多数代码都通过了说明这道题比较基础可靠如果一个代码通过了大多数测试题说明这个代码比较稳健。基于这两种信号AI开始进行四步迭代净化。第一步是清理失分代码如果某个代码一道测试题都过不了那它很可能彻底错误直接替换掉。第二步是打破虚假耦合如果某道测试题的通过率极低只有极少数代码通过这道题很可疑——它可能是个答案错误的测试题恰好与少数错误代码配对成功。AI把这道可疑测试题替换成新生成的测试题打破这种可疑的默契。第三步是修复问题代码选出通过率最高但还没有被所有代码通过的测试题这道题既可靠又有区分度让AI对未通过它的代码进行针对性修改就像学生根据错题本改错。第四步是替换无效测试题经过代码修复后有些测试题可能变得全过或全不过这两种情况下它们已经失去区分代码好坏的能力直接替换成新的测试题。这四步反复循环最多5轮代码池和测试题池就在这种互相挑战、互相净化的过程中共同进化。研究数据显示经过5轮迭代后低通过率区域的测试题密度平均下降了近30%而高通过率区域的密度相应提升代码侧也呈现类似趋势低通过率代码逐渐被清除高通过率代码越来越多。**第三阶段平局决胜局**经过双向淘汰赛最后往往会有几个代码并列第一通过了同样多的测试题。这时候普通的选最高分者策略无法决出胜负。CoSPlay采用了一个聪明的加时赛机制。AI随机生成一批新的合法输入不需要预先知道正确答案让所有并列第一的代码都跑一遍记录各自的输出。然后按照输出相同为标准把这些代码聚类分组。背后的逻辑是真正正确的代码无论遇到什么合法输入输出都应该相同因为它们实现的是同一个正确逻辑而错误的代码往往会以各种不同的方式出错输出分散。所以最大的那个输出一致的代码群最可能包含正确代码。研究团队从理论上证明了这一点随着随机输入数量增加正确代码的输出特征会越来越成为主流群体而任何单个错误签名的概率则以指数速度衰减。实验中正确代码确实高度集中在大型聚类中错误代码则多数分散在小型或单独聚类里。选出最大聚类中可靠性最高的代码作为最终答案就是CoSPlay的最终决策。---三、实验成绩它真的有效吗研究团队在四个公认的高难度编程测试集上进行了评估LiveBench128道题、LiveCodeBench v2511道题、CodeContests239道题、CodeForces467道题。这四个测试集代表了从竞赛级别到实际工程问题的广泛难度范围。最核心的对比实验结果相当亮眼。以7B70亿参数规模的基础模型Qwen2.5-7B-Instruct为起点不加任何改进它的平均最优16选1准确率BoN16即从16个候选答案中选最优只有22.1%自生成测试题的准确率UT Accuracy更低到只有14.6%。经过CoSPlay加持后最优选1准确率跃升至33.2%测试题准确率飙升到78.3%。更值得关注的是经过CoSPlay加持的Qwen2.5-7B-Instruct其最终BoN准确率33.2%已经略微超过了CURE-7B32.9%——而CURE-7B是用4500道标准测试题进行过专门强化学习训练的模型CoSPlay什么额外训练都没做仅靠推理时的自我进化就追平乃至超过了它。当CoSPlay被应用到已经经过强化学习训练的CURE-7B上效果还能进一步叠加平均BoN从32.9%提升到38.6%提升了5.7个百分点。这说明CoSPlay与强化学习训练并不冲突两者可以相互补充。在14B参数规模上类似的规律同样成立。Qwen2.5-14B-Instruct加上CoSPlay后平均BoN从33.2%提升到42.0%与CURE-14B的41.8%基本持平同样不需要任何额外训练数据。在与其他测试时扩展方法的横向对比中CoSPlay在可比或更少的计算量下准确率普遍高于竞争对手。比如将样本数扩展到256个的朴素方法BoN N256消耗了74.5万个token准确率只有22.5%CoSPlay消耗68.2万个token却达到37.2%。此外研究团队还把CoSPlay应用到DeepSeek-V3.2-685B6850亿参数的顶级大模型和Gemini-2.0-Flash上前者的平均BoN从65.7%提升到68.2%尤其在最难的CodeForces测试集上从39.3%大幅跃升到50.0%。---四、为什么这些信号真的可靠一个自然的疑问是没有标准答案AI怎么知道自己生成的测试题和代码哪个更可信研究团队对此给出了理论推导和实验验证双重支撑。理论层面他们证明了一个关键定理在一定前提下正确代码通过正确测试题的概率高于错误代码通过正确测试题的概率通过率越高的测试题答案越可能正确通过率越高的代码越可能真的能解题。这个前提在实际中通常成立——因为正确的代码会忠实执行正确逻辑而错误的代码只能偶尔碰巧给出正确答案。实验层面研究团队对比了正确与错误的代码/测试题在通过率上的分布。结果清晰显示正确测试题集中在高通过率区域错误测试题集中在低通过率区域正确代码集中在高通过率区域错误代码集中在低通过率区域。GT正确率即真实准确率与通过率之间呈现出单调递增的正相关关系且这一关系在5轮自博弈过程中始终稳定成立。聚类选择的可靠性同样有理论支撑。研究团队证明随着随机输入数量趋于无穷正确输出签名会成为概率最高的唯一主导模式而任何错误签名的概率都以指数速度衰减。实际实验中即使只有有限的随机输入聚类大小与代码真实正确率之间也呈现出显著正相关聚类越大包含正确代码的概率越高。t-SNE可视化图进一步直观地展示了这一点正确代码在输出空间里紧密聚集错误代码则分散在各处。---五、拆解每个零件哪些设计真的有用研究团队还做了一系列拆解实验逐一验证每个设计模块的贡献。去掉第一阶段的解题思路探索和攻击性测试思路生成w/o exp-atk是影响最大的单一操作。测试题准确率从接近80%跌至32.5%BoN准确率也从36.7%跌至30.3%而且随着自博弈轮次增加测试题的区分能力反而在下滑——没有高质量的测试题种子迭代进化无从启动。去掉整个自博弈阶段BoN从36.7%跌至33.0%测试题准确率从78.7%跌至55.7%——说明初始质量再好也需要迭代净化来进一步提升。去掉打破虚假耦合这一步第二步BoN下降约1.7个百分点。这看起来不多但在高难度测试集上这种错误代码与错误测试题配对的干扰如果不及时清除会随着轮次积累放大负面影响。去掉针对最可靠且有区分度的测试题修复代码这一步第三步BoN下降约0.9个百分点。关键在于针对性——如果随机选一道测试题来指导代码修复效果明显变差说明选哪道题来当导师至关重要。去掉自洽验证即不再要求测试题答案多次计算一致测试题准确率从78.7%跌至63.7%BoN也下降约3.4个百分点——验证了宁缺毋滥的测试题筛选策略的必要性。去掉随机初始测试题只用攻击性思路生成测试题测试题的多样性UT rank即独特输入数量在整个自博弈过程中始终偏低——说明随机测试题起到了补充多样性的作用防止测试题池陷入同质化。---六、可推广性只适用于特定模型吗CoSPlay的一个重要特性是模型无关性——它不依赖特定模型的内部结构任何能生成代码和测试题的语言模型都可以受益。研究团队在七种不同的模型上验证了这一点涵盖纯指令微调模型Seed-Coder-8B-Instruct、DeepSeek-Coder-V2-Lite-Instruct-16B、强化学习调优模型Absolute-Zero-7B、AceCoder-Rule-7B、AceCoder-RM-7B以及顶级大模型DeepSeek-V3.2-685B、Gemini-2.0-Flash。在这七种模型上CoSPlay将平均BoN从37.8%提升到45.3%绝对提升7.5个百分点。不过研究团队也坦诚地指出了两类边界情况。其一如果模型能力太弱生成的代码和测试题质量太差通过率信号就失去了区分好坏的能力自博弈反而可能加剧噪音。其二如果模型已经非常强悍、在某个测试集上接近饱和那么剩余的低通过率样本本身质量已经和新生成的差不多替换改动反而引入随机性带来波动而非提升。对于Gemini-2.0-Flash在LiveBench上的表现这种饱和效应确实导致了轻微下滑。这给出了一个直观的甜蜜区判断标准当模型的初始能力足够让通过率信号与真实质量正相关同时当前池子里还有明显的低质量样本值得替换时CoSPlay的收益最大。对大多数中等难度以上的编程测试场景这个条件都能满足。---七、成本与收益值不值得用一个现实的问题是CoSPlay的迭代自博弈必然比直接生成代码消耗更多计算资源。完整版CoSPlay在Qwen2.5-7B上平均消耗约68.2万个token而直接生成只需约628个token。但关键在于相比之下把样本数暴力扩展到256个消耗74.5万token的朴素方法准确率才22.5%消耗116.6万token的ThinkCoderRound 2准确率只有25.3%。CoSPlay用更少的token取得了远高于这些方法的37.2%准确率。研究团队还提供了两个轻量化变体去掉自洽验证后token消耗降至24.4万准确率仍有34.2%仍然超过所有竞争方法进一步去掉测试题迭代更新后token消耗降至9.0万准确率32.5%也依然略微超过最强竞争基线SFSRound 80的32.0%。这说明CoSPlay的核心收益主要来自框架设计本身即使去掉最耗资源的模块基础优势依然保持。此外随着候选代码数量k的增加CoSPlay的准确率持续提升在k64时仍未见饱和展示了良好的越多候选越好的扩展性。相比之下单纯增大采样数的朴素方法往往在k较大时准确率反而下滑因为没有有效筛选机制越来越难从大量候选中挑出正确答案。---归根结底CoSPlay这项研究讲述的故事是一个关于在不确定环境下如何建立可靠自我评估机制的故事。它的核心洞察是即使没有外部标准答案通过让代码和测试题在执行矩阵里互相挑战、互相净化系统内部的多数共识本身就携带了关于质量的有效信息。正确的东西倾向于彼此认同错误的东西倾向于各自为政——这个规律在代码领域被CoSPlay精准地利用了。这项研究对普通人的潜在影响是实际的它降低了让AI辅助编程变得可靠的门槛不再需要大量昂贵的人工标注数据任何个人或机构都可能在自己的场景下部署类似机制让AI的代码能力在使用过程中持续进化。而对于整个AI研究社区而言CoSPlay提供了一套无监督内部质量评估的方法论框架理论上可以推广到任何有可执行验证特性的任务——只要能运行代码、检查输出就可以构建类似的共进化机制。当然这条路并非没有边界。依赖可执行环境这一前提意味着CoSPlay暂时无法直接应用于无法运行代码的推理任务。如何将这套共进化框架推广到更广泛的可验证推理场景以及如何进一步降低token消耗是研究团队指出的未来方向。有兴趣深入了解技术细节的读者可通过arXiv论文编号2605.23491获取完整论文。---QAQ1CoSPlay方法不需要任何标准答案是如何实现准确率验证的ACoSPlay利用了一个关键统计规律在一批自生成的代码和测试题中通过率越高的测试题答案越可能正确通过率越高的代码越可能真正能解题。研究团队从理论上证明了这一点并用实验验证了通过率与真实正确率之间存在显著的单调正相关关系。换句话说系统内部的多数投票机制本身就携带了质量信息不需要外部标准答案来校准。Q2CoSPlay方法中所说的虚假耦合具体是什么问题有多严重A虚假耦合是指错误代码恰好通过了答案也错误的测试题产生假阳性通过记录从而让错误代码获得不应有的高分。比如一个把所有情况都输出0的错误代码可能恰好通过了一道预期答案也是0但其实设计有误的测试题。这会干扰整个排序机制让好代码被淘汰、坏代码被保留。CoSPlay专门设计了第二步打破虚假耦合来识别并替换这类可疑测试题。Q3CoSPlay方法适合在个人电脑或小型团队环境中使用吗A完整版CoSPlay需要消耗约68万个token来处理一道题对算力有一定要求通常需要GPU服务器。不过论文提供了两个轻量化变体去掉自洽验证后token消耗降至约24万去掉测试题迭代更新后进一步降至约9万后者的成本与普通的生成16个候选然后筛选方法相当但准确率仍然超过现有主流方法。对于小型团队轻量版是更现实的选择。