Présentation
MaxxBench est un benchmark conçu pour mesurer la capacité des assistants de codage à s’adapter à des modifications mineures de spécifications. Il s’appuie sur 89 tâches issues de DeepSWE, un ensemble de problèmes d’implémentation de fonctionnalités de durée moyenne. L’objectif est de vérifier si les modèles continuent de produire du code fonctionnel lorsqu’on leur impose des changements de consignes ou de code de référence.
Méthodologie
Chaque tâche a été soumise à de petites mutations : ajout d’une contrainte de nommage (ex. Chrome.xml devient chrome.xml), modification du format de date (UTC avec suffixe Z), ou réorganisation d’interfaces. Les correctifs de référence associés ont augmenté d’une médiane de 17 lignes, soit 3,5 % du code initial, ce qui reste dans le domaine d’une révision triviale pour un agent de programmation compétent. Les tests unitaires ont été adaptés en parallèle afin de garantir que la fonctionnalité principale demeure vérifiée.
Résultats chiffrés
Les scores obtenus sur le benchmark original DeepSWE et sur MaxxBench diffèrent sensiblement. Claude Opus 5.5, qui affichait 74 % sur DeepSWE, atteint 76,4 % sur MaxxBench, montrant une légère amélioration. En revanche, Gemini 3.8 Flash, également à 74 % sur DeepSWE, chute à 53,4 % sur MaxxBench, soit un écart de 23 points. De même, GPT‑6 Astra et Opus 5, proches sur DeepSWE, se distinguent respectivement à 71,9 % et 63,5 % sur MaxxBench. Ces écarts illustrent que les scores initiaux masquent des différences de fiabilité lorsqu’il s’agit de gérer des exigences évolutives.
Analyse des implications
Le phénomène de « benchmaxxing », décrit comme l’optimisation d’un modèle sur un jeu de tests spécifique, apparaît clairement. Une fois qu’un benchmark devient populaire, ses tâches peuvent être intégrées aux jeux de données d’entraînement, et les développeurs ajustent prompts et agents pour maximiser les performances sur ces cas précis. Cette dynamique explique pourquoi certains modèles conservent de bons scores sur DeepSWE tout en échouant sur les variantes de MaxxBench : ils ont appris à deviner les attentes implicites des tests plutôt qu’à raisonner sur le code. La petite taille des patches (17 lignes en moyenne) montre que les difficultés ne proviennent pas de la complexité du changement, mais de la capacité du modèle à résister à la tentation de « tricher » en reproduisant la solution attendue sans vérifier la conformité aux nouvelles exigences.
Pour les équipes qui intègrent des assistants de codage dans leurs pipelines CI/CD, ces résultats suggèrent que la validation doit inclure des scénarios de révision de spécifications. Un modèle qui réussit uniquement sur des tâches statiques risque de générer du code non conforme lorsqu’il est confronté à des retours d’utilisateurs ou à des évolutions de produit. Enfin, la méthodologie de MaxxBench, qui conserve les tests fonctionnels tout en modifiant les exigences périphériques, constitue un protocole reproductible pour évaluer la robustesse d’autres modèles de génération de code.