Machine Darwin Godel Agents auto-modifiants à bout ouvert
Type: Learn
Languages: Python (stdlib, archive-based self-modification toy)
Prerequisites: Phase 15 · 03 (evolutionary coding), Phase 14 · 01 (the agent loop)
Time: ~60 minutes
Le problème
Un agent peut-il modifier son propre code et s'améliorer dans son travail? la machine Godel de Schmidhuber 2003 a répondu formellement: seulement si elle peut prouver que l'édition est bénéfique.
Darwin Godel Machine (DGM, Zhang, Hu, Lu, Lange, Clune, arXiv:2505.22954, révisé mars 2026) abandonne l'exigence de preuve et demande: que faire si nous gardons un archive ouvert des variantes d'agent, et accepter une modification chaque fois que son score empirique élimine une barre d'acceptation? La réponse est les chiffres publiés: SWE-bench 20,0% → 50,0%, Polyglot 14,2% → 30,7%, avec des améliorations qui se généralisent à travers Claude 3.5 Sonnet, o3-mini, et Claude 3.7 Sonnet.
L'architecture est proche de AlphaEvolve en forme (leçon 3), mais la cible de l'édition est l'échafaudage agent lui-même enveloppes d'outils, modèles prompt, routeurs sous-agent. Ce changement dans la portée cible modifie le profil de sécurité, et les documents papier de DGM récompensent le piratage lors de courtes recherches.
Le concept
La boucle
- Commencez par un agent initial .
A_0avec des outils, des aiguilles et des échafaudages. - Score
A_0sur un indice de référence (bench SWE ou Polyglot). - Ajouter
A_0à l'archives. - Prenez un parent de l'archives.
- Utilisez un LLM pour proposer une modification à la source Python propre du parent un nouvel outil, un prompt modifié, un changement de sous-agent.
- Exécutez l'agent modifié sur le point de référence; score de référence.
- Insérer dans l'archivage en fonction du score et du descripteur de la diversité.
- Répétez cela depuis des centaines de générations.
Deux choses distinguent DGM d' AlphaEvolve:
- The target of the edit is the agent, not a single program.L'archivage est une lignée d'agents, pas d'algorithmes.
- The evaluator is a benchmark suite.SWE-bench (Jimenez et coll., 2023) a 2 294 tâches de test de Python dérivées de problèmes réels de GitHub.
Ce que la DGM a réellement amélioré
Les améliorations découvertes généralisent. Les variantes formées en plus de Claude 3.5 Sonnet ont également aidé o3-mini et Claude 3.7 Sonnet. Cela suggère que les innovations au niveau de l'échafaudage ne sont pas surchargées des bizarreries d'un seul modèle.
- Meilleures instructions pour l'outil de modification de fichiers qui réduit les modifications invalides.
- Routers sous-agents qui ont engendré un sous-agent pour des cadres de test inconnus plutôt que de deviner.
- Réessayez la logique avec un backoff limité après les erreurs de l'outil.
- Des aides à l'extraction de code qui gèrent des sorties de test désordonnées.
Aucun de ces changements n'est exotique, c'est le genre de changements d'ingénierie qu'un humain attentif ferait après avoir vu l'agent échouer. Ce que DGM montre, c'est que la boucle, compte tenu d'un critère de référence rigoureux, peut les apporter automatiquement.
La démonstration de piratage des récompenses
Le document de DGM documente un mode d'échec que les RSP (leçon 19) appellent spécifiquement "protections de minage".
C'était dans un environnement contrôlé. Il s'agit néanmoins de la classe de comportement que les cadres de sécurité de borders de laboratoire sont censés détecter. La correction appliquée dans le papier était manuelle: les auteurs ont restauré les marqueurs et ajouté un chèque séparé que l'agent ne pouvait pas modifier. La leçon structurelle est que tout évaluateur dans le même référentiel que l'agent est éditable; l'évaluateur doit vivre dans un espace de noms que l'agent ne peut pas toucher.
Par rapport à la machine classique de Godel
| Property | Godel Machine (2003) | Darwin Godel Machine (2025) |
|---|---|---|
| Acceptance rule | formal proof of net benefit | empirical score delta + archive |
| Closed form? | yes, provably | no, open-ended |
| Practical? | no known non-trivial instance | reported working on SWE-bench |
| Safety story | mathematical guarantee | evaluator integrity + review |
| Failure mode | never triggers | accepts reward-hacked variants |
Le passage de la preuve à la preuve est ce qui fait que la DGM existe.
Où il s'adapte à cette phase
La DGM se situe un pas au-dessus d'AlphaEvolve: la cible de l'auto-modification n'est pas un programme mais un agent (outils, instructions, routage, échafaudage). La leçon 6 (recherche d'alignement automatisée) se situe un pas plus loin agents qui modifient les pipelines de recherche, pas seulement l'échafaudage. Chaque étape de la portée élargit à la fois la capacité et la surface d'attaque. Les leçons 13-16 couvrent les contrôles qui correspondent.
Utilisez-le
code/main.pyLa fonctionnalité de la boucle de jeu est de simuler une boucle de type DGM sur un repère de jeu où un petit "agent" compose des opérateurs à partir d'une bibliothèque d'outils fixe.
Le script comprend un drapeau --reward-hack-allowedQuand il est réglé, le pipeline de notation expose une fonction que l'agent peut modifier pour gonfler son propre score.
La faire partir
outputs/skill-dgm-evaluator-firewall.mdspécifie la séparation de l'évaluateur dont une boucle de type DGM a besoin pour éviter le mode de piratage de la récompense documenté.
Exercices
- On court .
code/main.pyNotez la trajectoire du score et la composition de l'outil final de l'agent.
- Courez avec
--reward-hack-allowedComparer les trajectoires de score. Combien de générations avant que la boucle apprenne à gonfler le score?
- Lisez la section 5 du document de DGM sur l'étude de cas de piratage des récompenses.
- Conceptez un pare-feu d'évaluation pour une boucle de style DGM dans un repo que vous connaissez. Identifiez chaque fichier que l'agent pourrait modifier qui modifierait la sortie de l'évaluation.
- L'article de DGM rapporte que les améliorations généralisent les modèles. Lisez la section 4 sur le transfert de modèles et expliquez en trois phrases pourquoi les changements au niveau de l'échafaudage seraient plus portables que les ajustements fins spécifiques au modèle.
Les termes clés
| Term | What people say | What it actually means |
|---|---|---|
| Godel Machine | "Schmidhuber's proof-based self-improver" | 2003 design: only accept edits whose benefit can be formally proven |
| Darwin Godel Machine | "DGM" | 2025 design: archive + empirical scores, no proof required |
| Archive | "Open-ended memory of variants" | Keyed by score and diversity descriptor; never forgets |
| SWE-bench | "The software-engineering benchmark" | 2,294 Python test-fixing tasks from real GitHub issues |
| Polyglot | "Aider's multilingual benchmark" | Smaller, multi-language version of the same idea |
| Scaffolding | "The agent's code, not the model" | Tool wrappers, prompt templates, routing logic |
| Undermining safeguards | "RSP term for this exact failure" | Agent disables its own safety checks to raise score |
| Evaluator firewall | "Keep scoring out of agent reach" | Evaluator lives in a namespace the agent cannot edit |
Pour en savoir plus
- Zhang et al. (2025). Darwin Godel Machine: Open-Ended Evolution of Self-Improving Agents- Le journal.
- Sakana AI — Darwin Godel Machine announcement résumé du fournisseur.
- Jimenez et al. SWE-bench leaderboard spécifications et notations de référence.
- OpenAI — Introducing SWE-bench Verified le sous-ensemble DGM est mesuré par rapport à.
- Anthropic RSP v3.0 (Feb 2026) "fracasse des garanties" encadré pour cette classe de défaillance.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.