Vérifier le travail et réessayer
Utilisez les tests ou une revue pour accepter le travail d’un agent ou demander une nouvelle tentative.
Recommencer jusqu’à validation
Section intitulée « Recommencer jusqu’à validation »Définissez une tentative et une vérification avec defineLoopTask(). La vérification accepte le résultat ou renvoie des indications pour la tentative suivante. Fixez maxRounds pour arrêter la boucle si aucun résultat ne passe.
La première tentative est refusée. La deuxième reçoit les indications de la vérification et produit un résultat accepté. Les options after, condition et cache fonctionnent comme pour les autres tâches.
Coder, puis lancer une commande
Section intitulée « Coder, puis lancer une commande »L’agent travaille dans attempt, les tests tournent dans check, tous deux dans une même sandbox chaude.
Séparez la sandbox, la tentative et la vérification pour faciliter la lecture de chaque étape.
Lancez run-loop.ts : il garde la sandbox ouverte jusqu’à la fin du workflow.
coding.perform(context) rattache les tokens et l’annulation de l’agent à la boucle et à son budget. coder sert à exécuter l’appel : seul fix entre dans le workflow. attempt renvoie du JSON, car un checkpoint sauvegarde chaque candidat, même refusé.
Un npm test en échec renvoie un status non nul, et sa sortie devient le retour de la vérification. À vous de choisir où l’envoyer : dans le brief suivant, comme ici, ou dans une conversation poursuivie.
Faire relire par un second agent
Section intitulée « Faire relire par un second agent »check peut lancer un relecteur et transformer sa réponse typée en verdict. Les deux agents comptent dans le même budget.
Passez-la comme check: reviewChanges. L’agent de la requête remplace celui de la sandbox pour ce seul dispatch.
| Limite ou événement | Ce qui se passe |
|---|---|
maxRounds | Plafonne les tours, reprises comprises. |
| Tentatives du workflow | Chaque tour, et chaque rejeu d’un tour interrompu, compte dans budget.attempts. |
timeoutMs | Borne chaque tour. Il arrête les fonctions de rappel qui respectent context.signal. |
| Une exception | Fait échouer la tâche aussitôt. Une tâche en boucle n’a pas d’option retry. |
| La dernière vérification refuse | La tâche échoue avec LoopTaskExhausted, qui porte le dernier feedback. Les dépendants ne s’exécutent pas. |
Réparer une CI en échec traite chaque issue dans un script complet.
Checkpoint et reprise
Section intitulée « Checkpoint et reprise »Avec un checkpoint, chaque candidat est sauvegardé avant check. À la reprise, un candidat sauvegardé passe directement à check, et les tours refusés ne sont pas rejoués.
Un tour interrompu n’est rejoué qu’avec resume: "retry-incomplete", car il a peut-être déjà modifié des fichiers. Modifier maxRounds rend le checkpoint incompatible.
Chaque enregistrement de tâche liste ses rounds, et chaque phase émet un événement de workflow loop. context.idempotencyKey change à chaque tour et à chaque phase, pour dédupliquer les effets comme dans Files de jobs et workers.
API : defineLoopTask · LoopTaskOptions · LoopTaskContext · LoopCheckResult · LoopTaskExhausted · defineAgentTask.