20 000 $, 2 semaines, 16 agents Claude : Le premier compilateur C d'Anthropic conçu par IA

BBetter Stack
Computing/SoftwareBusiness NewsVideo & Computer GamesInternet Technology

Transcript

00:00:00Anthropic vient de réaliser un exploit : ils ont lâché 16 agents Claude dans la nature pour concevoir
00:00:05un compilateur C. Après deux semaines de travail non-stop, ils en ont produit un capable de compiler
00:00:11le noyau Linux et même de faire tourner Doom. C'est impressionnant, et c'était impossible
00:00:16avec les anciennes versions d'Opus 4. Pourtant, certains crient au « putaclic » et à
00:00:22la demi-vérité, à cause des techniques douteuses qu'Anthropic a utilisées pour y arriver.
00:00:28Alors, Anthropic a-t-il triché ? Abonnez-vous et découvrons-le ensemble.
00:00:31Cette vidéo se divise en trois parties. D'abord, nous verrons comment l'expérience a été mise en place,
00:00:37puis nous analyserons les conclusions clés (indispensables pour tout développeur),
00:00:42et enfin, nous verrons si les résultats sont valables, car j'ai un avis bien tranché
00:00:47sur la méthode employée. L'expérience a été menée par Nicholas Carlini, un esprit
00:00:52brillant selon moi. Regardons de plus près la configuration qu'il a imaginée.
00:00:58Le projet se trouvait dans un répertoire nommé « Upstream », qui était monté
00:01:03sur 16 conteneurs Docker différents. On n'en voit que quatre ici, mais imaginez qu'il y en a 16.
00:01:08Chaque conteneur faisait tourner Claude Code avec Opus 4.6, clonait
00:01:15le dépôt Upstream dans un espace de travail, y effectuait ses modifications, puis
00:01:21les poussait vers Upstream. C'était malin car chaque agent travaillait isolément sans
00:01:27gêner les autres. En cas de conflit de fusion, Claude était assez
00:01:32intelligent pour le résoudre avant de renvoyer le code. Chaque agent piochait des tâches.
00:01:38J'ignore si elles étaient créées par un humain ou par l'IA suite à des tests,
00:01:44mais ces tâches avaient des noms précis et chaque agent s'en voyait attribuer une,
00:01:50ce qui ouvrait une nouvelle session. Pour faire tourner ces agents sur la durée, une boucle Ralph
00:01:56était utilisée : l'agent travaillait, finissait, poussait son code, puis
00:02:02reprenait une nouvelle tâche avec une session toute neuve, indéfiniment.
00:02:08Si vous avez vu notre vidéo sur Ralph, vous savez que le secret des agents longue durée,
00:02:13ce sont des tâches bien définies. Mais avec 16 agents en simultané,
00:02:19comment éviter qu'ils choisissent la même ? Grâce au verrouillage de tâche.
00:02:24L'auteur ne détaille pas tout, mais il existe une liste de tâches : un agent en choisit une,
00:02:30crée un fichier texte au nom de la tâche et fait un commit pour la verrouiller à son nom
00:02:36avant de pousser le tout. Si un autre agent tente de prendre la même tâche
00:02:42et crée le même fichier, Git rejettera son push en signalant que
00:02:48le fichier existe déjà. Il doit alors changer de tâche. C'est ainsi que Carlini
00:02:53a testé l'endurance des agents sous Opus 4.6, et les résultats sont bluffants.
00:03:00Mais cette expérience a révélé des points cruciaux pour n'importe quel
00:03:07développeur. D'abord, l'importance de créer un harnais de test (ou un script) qui
00:03:12lance différents types de tests. Car quand Nick (on est intimes maintenant)
00:03:17menait l'expérience, Claude cassait souvent des fonctions existantes en en créant de nouvelles.
00:03:23Il a donc bâti un harnais avec des tests de haute qualité issus de projets comme
00:03:29SQLite, libjpg et Redis. Pour éviter de polluer le contexte, ce harnais
00:03:35ne transmettait à l'agent que les logs utiles (les erreurs principalement), tout en
00:03:41stockant le reste dans un fichier consultable au besoin. Mais avec des milliers
00:03:47de tests, les agents passeraient des heures à tout valider au lieu de produire du code.
00:03:52Nick a donc eu une idée brillante : il a ajouté une option « rapide » à son harnais.
00:03:58Chaque agent ne lançait que 1 % ou 10 % des tests au hasard. Si chaque
00:04:05agent en lançait 10 %, on couvrait 160 % des tests au total, ce qui est excellent.
00:04:13Et voici l'astuce : pour que cela fonctionne,
00:04:19le choix des tests était aléatoire mais basé sur une graine (seed) identique,
00:04:25ce qui rendait le processus déterministe. Les agents parcouraient ainsi toute
00:04:31la suite de tests bien plus vite qu'en travaillant seuls.
00:04:36Le point suivant est tout aussi malin, mais plus controversé : s'appuyer sur l'existant.
00:04:41Jusque-là, chaque agent gérait des tests unitaires de projets open source,
00:04:46ce qui marchait bien par petits blocs. Mais pour compiler le
00:04:53noyau Linux, ce n'est plus une question de tests isolés. C'est devenu
00:04:58difficile : chaque agent essayait de tout compiler, tombait sur la même erreur,
00:05:04tentait de la corriger et écrasait le travail des autres. Nick a donc décidé
00:05:09de confier un pourcentage de la compilation à chaque agent et de laisser GCC,
00:05:15le compilateur GNU, faire le reste. Il a appelé GCC « l'oracle », car le noyau Linux
00:05:22doit compiler parfaitement avec lui. Si un agent compilait sa propre section
00:05:27du noyau et que le reste était géré par GCC, toute erreur venait forcément de
00:05:34l'agent. Il n'avait alors qu'à corriger son propre code sans interférer avec les autres.
00:05:40C'est controversé car on utilise un compilateur existant pour aider Claude
00:05:46à en créer un de toutes pièces. On en reparlera à la fin.
00:05:51Passons au point suivant : donner une mémoire à vos agents.
00:05:57Comme les nouvelles sessions de Claude démarrent sans aucun souvenir du travail passé,
00:06:03Nick mettait à jour le fichier Readme et créait des fichiers de suivi
00:06:09indiquant où l'on en était. Ainsi, les nouvelles sessions avaient une base solide
00:06:13et ne réintroduisaient pas de bugs déjà corrigés. Enfin, point plus
00:06:18évident : attribuer des rôles différents aux agents. L'avantage du travail
00:06:23parallèle, c'est que plusieurs tâches peuvent être menées sur le même code en simultané.
00:06:29Quand il n'y avait pas de nouveau code à écrire, Nick donnait des rôles uniques :
00:06:35l'un traquait le code dupliqué, l'autre optimisait les performances,
00:06:40et un autre critiquait le design du point de vue d'un développeur Rust (en espérant
00:06:45qu'il ne s'en soit pas vanté auprès des autres). Mais malgré le succès du projet,
00:06:51la question demeure : Anthropic a-t-il triché pour obtenir ce résultat ?
00:06:57Eh bien, un peu. La mission était de créer un compilateur C de zéro sans
00:07:03accès à Internet. L'agent a donc généré tout le code lui-même. Vraiment ?
00:07:10Il avait accès aux suites de tests et à la version compilée de GCC.
00:07:16Il a donc pu « sonder » GCC en observant ses sorties pour orienter
00:07:24la conception de son propre compilateur en Rust. Pour être honnête, si je devais
00:07:31créer un compilateur C, je ferais pareil : j'analyserais l'existant pour
00:07:36m'en inspirer. S'il s'était agi d'inventer un compilateur pour
00:07:41un tout nouveau langage, ce serait une autre paire de manches. Ce serait d'ailleurs
00:07:47un excellent test pour voir si Claude est capable de créer ex nihilo.
00:07:53C'est une idée pour Nick. Parlons maintenant de l'aspect autonome de l'expérience.
00:07:57Certes, Claude a écrit tout le code, mais il a été très encadré par l'humain.
00:08:04C'est un humain qui a choisi les tests, lancé la boucle Ralph,
00:08:11conçu le harnais de test et attribué les rôles. On est donc loin
00:08:16d'une IA à qui l'on dirait simplement « fais-moi un compilateur » avant de la laisser tourner.
00:08:22On ne peut pas parler d'autonomie à 100 %, car qu'aurait
00:08:28produit l'agent sans cette supervision humaine constante ?
00:08:33Même avec cet encadrement, le compilateur Claude a ses limites.
00:08:39Par exemple, il utilise l'assembleur et l'éditeur de liens de GCC, les siens étant
00:08:46trop buggés. Il a aussi eu besoin du compilateur x86 16 bits de GCC pour booter Linux.
00:08:54Enfin, le code n'est pas très efficace : sa version la plus optimisée est
00:09:00moins performante que la version la moins optimisée de GCC. Bref, les développeurs
00:09:05ont encore de beaux jours devant eux... pour l'instant.

Key Takeaway

Bien qu'Anthropic ait réussi à faire coder un compilateur C fonctionnel par 16 agents IA en un temps record, ce succès repose massivement sur une infrastructure de tests rigoureuse et une supervision humaine stratégique plutôt que sur une autonomie totale de l'IA.

Highlights

Exploit technique : 16 agents Claude (Opus 4.6) ont conçu un compilateur C capable de faire tourner Doom et le noyau Linux en deux semaines.

Utilisation de la boucle Ralph pour assurer l'endurance des agents grâce à des sessions de travail autonomes et renouvelées.

Mise en place d'un harnais de test sophistiqué utilisant des suites de tests open source (SQLite

Timeline

Introduction et configuration technique du projet

L'auteur présente l'exploit d'Anthropic consistant à déployer 16 agents Claude pour créer un compilateur C en seulement deux semaines. L'infrastructure technique repose sur 16 conteneurs Docker montés sur un répertoire partagé nommé "Upstream". Chaque agent utilise Claude Code avec le modèle Opus 4.6 pour cloner le code, effectuer des modifications et résoudre les conflits de fusion de manière intelligente. Cette section souligne que cette réussite était impossible avec les versions précédentes de l'IA. La mise en place permet une isolation des agents tout en maintenant une collaboration sur un projet commun complexe.

Gestion des agents et endurance via la boucle Ralph

Le narrateur explique comment les agents maintiennent leur productivité sur la durée grâce à une boucle de travail nommée Ralph. Pour éviter que plusieurs agents ne travaillent sur la même tâche, un système de verrouillage par fichiers texte et commits Git a été instauré. Lorsqu'un agent sélectionne une tâche, il crée un fichier spécifique ; si un autre tente de faire de même, le push est rejeté. Cette méthode garantit une répartition claire du travail et une endurance constante des agents dans le temps. L'importance de tâches bien définies est présentée comme le secret de la réussite des agents à longue durée d'action.

Stratégies de test et optimisation du flux de travail

Cette partie détaille la création d'un harnais de test indispensable pour éviter que l'ajout de nouvelles fonctions ne brise le code existant. Nicholas Carlini a intégré des tests de haute qualité provenant de projets comme SQLite et Redis pour valider le travail des agents. Pour gagner du temps, une option "rapide" permet à chaque agent de ne lancer qu'un faible pourcentage des tests de manière aléatoire. L'astuce réside dans l'utilisation d'une graine (seed) déterministe pour que la couverture globale des tests reste exhaustive sur l'ensemble des agents. Cela permet de filtrer les logs inutiles et de se concentrer uniquement sur les erreurs critiques rencontrées par Claude.

L'utilisation de GCC comme oracle et la gestion de la mémoire

Pour compiler le noyau Linux, l'équipe a utilisé GCC, surnommé "l'oracle", comme point de comparaison pour valider le code généré par l'IA. Chaque agent se voyait confier une portion de la compilation tandis que GCC gérait le reste, permettant ainsi d'isoler immédiatement l'origine des erreurs. Cette approche est jugée controversée par certains car elle s'appuie sur un outil existant pour en créer un nouveau. Parallèlement, une mémoire persistante a été créée via la mise à jour régulière du fichier Readme et de fichiers de suivi. Cela permet aux nouvelles sessions d'agents de ne pas répéter les erreurs passées et de connaître l'état exact du projet.

Spécialisation des rôles et analyse critique de l'autonomie

L'expérience a également consisté à attribuer des rôles spécifiques aux agents, tels que l'optimisation des performances ou la critique du design selon une perspective Rust. Cependant, l'auteur nuance le succès en soulignant que l'IA a eu accès aux suites de tests et à GCC pour "sonder" les sorties attendues. La mission n'était donc pas une création ex nihilo mais plutôt une ingénierie inverse assistée. L'intervention humaine reste massive dans le choix des tests, la gestion de la boucle de travail et la définition de l'architecture. On ne peut donc pas encore parler d'une IA totalement autonome capable de créer un outil complexe sans une supervision humaine experte.

Conclusion : Limites actuelles et avenir des développeurs

En conclusion, le compilateur créé par Claude présente des faiblesses notables, notamment une dépendance aux outils d'assemblage de GCC. Les performances du code produit sont également décevantes, la version la plus optimisée de Claude restant moins efficace que la moins performante de GCC. L'IA a dû recourir à des outils externes spécifiques pour réussir à booter Linux, prouvant que son propre système était trop buggé. Malgré ces limites, l'expérience montre une progression fulgurante de la capacité des agents à collaborer. L'auteur conclut que si les développeurs ont encore leur place aujourd'hui, la marge de progression de l'IA reste impressionnante pour le futur proche.

Community Posts

View all posts