Une explication n’est pas une réparation : lire Agent Error Dataset
Un agent peut échouer, produire une excellente explication et laisser la même tâche cassée.

Un agent peut échouer, produire une excellente explication et laisser la même tâche cassée. Ce décalage m’intéresse dans le préprint Agent Error Dataset. Je le lis comme une étude des preuves : quelle décision changer, quelles informations étaient visibles à cet instant, et le changement aide-t-il vraiment ? Un diagnostic convaincant reste une proposition, pas une tâche rétablie. Cette ouverture décrit un problème général, pas un déploiement privé.
En bref
Résultats rapportés : AED contient 50 228 paires erreur-diagnostic issues de 9 961 tâches, couvrant 33 environnements, 19 familles de harnais et 23 modèles. Ce sont des comptes de couverture, pas des réparations indépendantes réussies. Les auteurs conservent traces et métadonnées. Les cinq étapes Agentic Error-to-Training collectent les échecs naturels, proposent diagnostic et correction, vérifient leur appui sur la trace, rejouent quand c’est possible et construisent des vues d’entraînement distinctes. Un diagnostic peut exister sans rejeu réussi ; une cible de récupération exige une continuation exécutée et validée. ↗

Rejeu apparié : le sens du gain
Le résultat principal repose sur 3 062 paires de rejeu appariées. La première correction proposée passe le vérificateur dans 51,1% des cas, contre 18,4% pour une nouvelle tentative de l’action initiale au même point de contrôle. Gain : 32,7 points, avec un intervalle à 95% regroupé par tâche de 28,4-37,0. Apparier état, modèle, harnais, budget et vérificateur vaut mieux que comparer une réparation au résultat final d’hier. Cela ne prouve ni une cause unique ni la capacité de trouver seul l’étape fautive. ↗
L’accord avec le professeur est un autre objectif
L’apprentissage du diagnostic est une autre expérience. Sur une version figée distincte, l’entraînement complet sur 1 656 tâches fait passer l’accord exact de Qwen3-8B avec les étiquettes internes du professeur de 47,2% à 63,6%, moyenne de trois graines sur 943 cas réservés. La meilleure référence avec instructions obtient 54,7%. Cet accord n’est ni une vérité vérifiée humainement ni une réussite de bout en bout. Une expérience séparée, avec une seule graine, rapporte 6,67 points d’avantage sur WebShop-lite pour les réparations d’action face à l’entraînement sur les seuls succès. Ces populations et objectifs ne s’additionnent pas. ↗
Éviter la connaissance rétrospective dans l’entrée
Mécanisme et analyse : conserver ce qui était visible avant la décision. Une référence réussie, un résultat de vérification ultérieur ou une règle cachée dans l’exemple peuvent enseigner la connaissance rétrospective plutôt que le débogage. Séparer les données par tâche source : plusieurs diagnostics d’un même échec sont liés. Le papier dit que l’ancienne version omettait les instructions système et listes d’outils et précédait les nouveaux filtres. Ses résultats historiques ne valident pas le pipeline révisé ni chaque ligne du grand ensemble. ↗
Un test jetable, pas un rejeu de production
Test concret : une tâche locale jetable avec un vérificateur déterministe. Sauvegarder le point de départ, rejouer l’action initiale et la correction au même budget, conserver les deux résultats, échecs et délais inclus. Retirer secrets et données privées avant stockage. Ne pas rejouer paiement, courriel ou écriture de production pour expérimenter. Le code original ci-dessous vérifie trois paires inventées ; il a été exécuté localement. Il ne lance pas d’agent, ne calcule pas de significativité et ne reproduit pas le papier.
Analyse : séparer explication et résultat
Analyse du journal : je garderais diagnostic, observation justificative et résultat de rejeu dans des champs différents. Transformer un récit élégant en voyant vert « réparé » efface la distinction centrale. Une continuation validée constitue une preuve dans ses conditions ; des exigences peuvent rester non testées. Il s’agit d’un préprint et d’une revue de sources. Je n’ai téléchargé aucune donnée ni entraîné de modèle. Leçon limitée : une trace d’échec devient preuve d’entraînement après définition de l’objectif, des informations disponibles et de la comparaison.
Le test jetable, en code
pairs = [
{"task": "a", "checkpoint": "s1", "budget": 10,
"retry": False, "repair": True},
{"task": "b", "checkpoint": "s2", "budget": 10,
"retry": True, "repair": True},
{"task": "c", "checkpoint": "s3", "budget": 10,
"retry": False, "repair": False},
]
assert len({p["task"] for p in pairs}) == len(pairs)
assert all(p["budget"] == 10 for p in pairs)
for field in ("retry", "repair"):
print(field, sum(p[field] for p in pairs), "/", len(pairs))
# Invented inputs: retry 1/3, repair 2/3. Not research results.