Loops et bubbles
Une bubble est un agent avec un rôle unique. À chaque fois que le loop l’atteint, la bubble effectue une passe : elle lit ce que la bubble précédente a transmis, travaille (en lisant des fichiers, en écrivant du code, en exécutant des commandes, selon ce que son rôle autorise) et se termine par un verdict.
Les rôles :
| Rôle | Ce qu’il fait | Peut écrire des fichiers |
|---|---|---|
| Architect | Planifie le travail et sa structure | Documentation uniquement |
| Planner | Divise le travail en cartes | Non |
| Designer | Écrit DESIGN.md et donne une direction visuelle au codeur |
Documentation uniquement |
| Coder | Écrit le code | Oui |
| Reviewer | Lit le travail, exécute la révision visuelle pour les applications dotées d’une interface utilisateur | Non |
| Tester | Écrit et exécute les tests | Oui |
| Fixer | Répare ce qu’une révision ou un test a trouvé | Oui |
| Documenter | Écrit la documentation | Documentation uniquement |
| Researcher | Cherche des informations sur le Web | Non |
| Security | Vérifie le travail à la recherche de vulnérabilités | Non |
| Creative, Feasibility | Proposent des idées et les jugent, pour les tableaux qui génèrent leur propre travail | Non |
| Subloop | N’exécute aucun agent. Ouvre un Sub-loop et y achemine (voir ci-dessous) | Non |
| Wait | N’exécute aucun agent. Met un loop en attente jusqu’à ce qu’un événement se produise, comme la fin d’un autre loop ou l’arrivée d’une carte | Non |
| Custom | Votre propre bubble : ses entrées, ses sorties, son rôle et ce qu’il est autorisé à faire | Selon vos paramètres |
Verdicts
Section intitulée « Verdicts »Chaque passe se termine par l’un de ces quatre résultats :
- PASS et PARTIAL constituent le jugement de l’agent selon lequel le travail est bon ou partiellement bon.
- FAIL est le jugement de l’agent selon lequel il ne l’est pas. Un FAIL peut être acheminé vers un Fixer.
- ERROR signifie que l’agent n’a jamais réellement fonctionné : le fournisseur était hors service, le modèle n’a pas pu répondre, un paramètre est manquant. Une ERROR due à une panne ou à un paramètre manquant n’est jamais acheminée vers un Fixer. Une passe qui manque d’étapes le fait.
Déposez deux bubbles l’une sur l’autre et elles forment un loop. Déposez-en d’autres sur le ring pour les ajouter. L’ordre autour du ring est l’ordre des passes, et les connexions sont tracées pour vous à partir de cet ordre.
Un Sub-loop dépend d’une bubble Subloop dans son loop parent. Lorsque la condition de la bubble est remplie, le loop parent attend pendant que le Sub-loop s’exécute, puis reprend là où il s’était arrêté. Par défaut, cela se produit lorsque la bubble qui le précède échoue : une révision échouée va à un Fixer, et le loop reprend au niveau de la bubble Subloop.
Le champ Divert when de la bubble Subloop choisit la condition. Chacune est affichée par son code, avec cette ligne en dessous :
| Divert when | Ce qu’il teste |
|---|---|
ON_FAIL (par défaut) |
L’étape a signalé un échec |
VULNERABILITY_FOUND |
L’étape a signalé un échec, le même test que ON_FAIL, nommé pour une vérification de sécurité |
ON_PASS |
L’étape a réussi |
TASKS_EMPTY |
Plus rien dans la file d’attente |
L’étape est la bubble Subloop elle-même, qui n’exécute aucun agent : elle signale un échec tant que tout ce qui la précède dans le loop en signale encore un, et réussit une fois que chaque échec a reçu une réponse.
Le paramètre How often choisit entre Every time the condition holds et Once, then stay on the main loop.
Dossiers
Section intitulée « Dossiers »Chaque loop qui écrit du code possède un dossier dans le projet, et aucun loop ne peut en partager un. Les bubbles d’un loop peuvent lire l’ensemble du projet. Les outils de fichier maintiennent toujours un loop dans son dossier. Ses commandes y sont maintenues par le système d’exploitation uniquement lorsque l’option Sandbox agent commands est activée dans les Paramètres. Un loop sans bubble d’écriture n’a pas besoin de dossier. Un Sub-loop écrit dans le dossier de son loop principal.
Exécution
Section intitulée « Exécution »Appuyez sur Play sur le tableau pour exécuter tous les loops, ou sur un loop pour exécuter uniquement celui-là. Plusieurs loops s’exécutent en même temps, chacun dans sa propre voie. Les loops partagent le travail par le biais du Task Book et des fichiers sur le disque, et non par le biais de leurs conversations respectives.
- Pause permet à la passe en cours de se terminer ; le bouton indique ensuite Stop, qui s’arrête immédiatement et rejette cette passe.
- Play après une pause reprend là où le loop s’était arrêté.
- Un loop ne prend jamais de carte Draft ; il démarre uniquement sur les cartes Approved. Draft est l’endroit où vous examinez le travail avant qu’aucun loop ne commence à y travailler.
Limites et arrêts
Section intitulée « Limites et arrêts »Chaque loop a trois limites, définies dans ses paramètres :
| Limite | Par défaut | Arrête le loop lorsque |
|---|---|---|
| Max loop executions | 100 | il a effectué ce nombre de passes |
| Max errors per step | 8 | une bubble a échoué ce nombre de fois d’affilée |
| Total loop error cap | 15 | le loop a échoué ce nombre de fois au total |
Un loop s’arrête également lorsqu’une bubble continue de produire la même modification, ou lorsqu’il ne peut rien faire (par exemple, chaque carte est toujours dans Draft). Un loop arrêté indique la raison dans une notification et dans son panneau sur le canvas. Un loop limité par le taux l’indique uniquement dans son panneau. Corrigez la cause et appuyez sur Play, ce qui efface les compteurs du loop et le réexécute à partir de l’endroit où il s’est arrêté.
Les limites de taux et les pannes de fournisseurs ne consomment pas les limites d’erreurs, à moins que le loop n’ait activé l’option Continue on error. Un loop limité par le taux attend et reprend de lui-même lorsque le fournisseur indique le temps d’attente ; une panne génère une notification et attend que vous pressiez Play.
Les textes juridiques sont disponibles en anglais et en espagnol.