Démo
Un dépôt, des tests qui échouent, un terminal en bac à sable : corrigez vous-même ou lancez Claude Code, Codex ou OpenCode.
Chargement de la démonstration…
En bref
Un petit dépôt de facturation arrive avec des tests qui échouent. Corrigez le code vous-même, tapez npm test, ou confiez la tâche à Claude Code, Codex ou OpenCode et suivez chaque étape. Les commandes et les tests s'exécutent vraiment dans votre navigateur, sans réseau.
Ce qu'on y voit
Un dépôt, des tests qui échouent, un terminal en bac à sable : corrigez vous-même ou lancez Claude Code, Codex ou OpenCode.
L'idée
Le meilleur moyen de comprendre un agent de code est de lui donner un vrai dépôt qui casse, et de pouvoir le réparer soi-même avant lui.
La fabrication
Système de fichiers virtuel, interpréteur de commandes, tests exécutés pour de vrai dans un bac à sable, agent qui lit, édite et relance les mêmes tests.
Sous le capot
5 points d'implémentationPile
- TypeScript strict
- React
- Web Worker
- Interpréteur de commandes
- Bac à sable
Fichiers
lib/sim/terminal.tslib/sim/terminal.check.tscomponents/demos/Terminal.tsxcomponents/demos/Terminal.module.css
Implémentation
- Un système de fichiers virtuel est une simple table chemin → contenu ; cd, ls, cat, tree, pwd, git diff, git status, npm test et claude/codex/opencode sont interprétés localement.
- Les tests sont exécutés pour de vrai : le runner est évalué dans un Web Worker neuf à chaque exécution, avec un délai maximal de 2 secondes ; les API réseau et le DOM sont retirés du contexte.
- Le code testé reçoit les globales réseau en paramètres `undefined` ; les modules ne peuvent être chargés que depuis le dépôt virtuel, sans paquet externe.
- L'éditeur et l'agent partagent la même table de fichiers ; git diff compare au dépôt initial, et une modification de l'un est immédiatement visible par l'autre.
- L'agent est un générateur asynchrone qui rend des étapes typées (lecture, recherche, plan, édition, test, accord) ; une étape « accord » suspend la boucle jusqu'à la réponse humaine, et Échap interrompt l'exécution.