Código-A1: Evolução Adversária de Code LLM e Test LLM via Aprendizado por Reforço
Code-A1: Adversarial Evolving of Code LLM and Test LLM via Reinforcement Learning
March 16, 2026
Autores: Aozhe Wang, Yuchen Yan, Nan Zhou, Zhengxi Lu, Weiming Lu, Jun Xiao, Yueting Zhuang, Yongliang Shen
cs.AI
Resumo
A aprendizagem por reforço para geração de código baseia-se em recompensas verificáveis provenientes de taxas de aprovação em testes unitários. No entanto, conjuntos de testes de alta qualidade são escassos, os conjuntos de dados existentes oferecem cobertura limitada e as recompensas estáticas não se adaptam à medida que os modelos melhoram. Métodos recentes de auto-jogo unificam a geração de código e de testes num único modelo, mas enfrentam um dilema inerente: o acesso white-box leva a auto-conluio, em que o modelo produz testes triviais para recompensas fáceis, enquanto a restrição black-box gera testes genéricos que não detetam erros específicos da implementação. Apresentamos o Code-A1, uma estrutura de co-evolução adversarial que otimiza conjuntamente um Modelo de Linguagem de Código (Code LLM) e um Modelo de Linguagem de Teste (Test LLM) com objetivos opostos. O Code LLM é recompensado por passar em mais testes, enquanto o Test LLM é recompensado por expor mais defeitos. Esta separação arquitetónica elimina os riscos de auto-conluio e permite, com segurança, a geração de testes white-box, onde o Test LLM pode inspecionar o código candidato para criar testes adversarialmente direcionados. Introduzimos ainda um mecanismo de Livro de Erros para replay de experiência e uma recompensa composta que equilibra a validade do teste com a dificuldade adversarial. Experiências com modelos Qwen2.5-Coder demonstram que o Code-A1 atinge um desempenho de geração de código equivalente ou superior a modelos treinados com testes anotados por humanos, enquanto melhora significativamente a capacidade de geração de testes.
English
Reinforcement learning for code generation relies on verifiable rewards from unit test pass rates. Yet high-quality test suites are scarce, existing datasets offer limited coverage, and static rewards fail to adapt as models improve. Recent self-play methods unify code and test generation in a single model, but face a inherent dilemma: white-box access leads to self-collusion where the model produces trivial tests for easy rewards, yet black-box restriction yields generic tests that miss implementation-specific bugs. We introduce Code-A1, an adversarial co-evolution framework that jointly optimizes a Code LLM and a Test LLM with opposing objectives. The Code LLM is rewarded for passing more tests, while the Test LLM is rewarded for exposing more defects. This architectural separation eliminates self-collusion risks and safely enables white-box test generation, where the Test LLM can inspect candidate code to craft targeted adversarial tests. We further introduce a Mistake Book mechanism for experience replay and a composite reward balancing test validity with adversarial difficulty. Experiments on Qwen2.5-Coder models demonstrate that Code-A1 achieves code generation performance matching or exceeding models trained on human-annotated tests, while significantly improving test generation capability.