Construire des workflows
Créez et configurez des workflows d’agents IA multi-étapes dans CodeCourier en utilisant des pipelines de personas, des boucles et des réglages de sandbox configurables.
Construire un workflow dans CodeCourier signifie définir un blueprint réutilisable qui orchestre des agents IA dans un pipeline multi-étapes. Ce guide parcourt le processus de création de workflow, du choix des personas à la configuration des boucles et des réglages de sandbox.
Créer un nouveau workflow
Naviguez vers la page Workflows de votre dashboard de projet et cliquez sur le bouton « New Workflow ». La boîte de dialogue de création de workflow vous guide à travers la configuration.
Nommez votre workflow
Donnez à votre workflow un nom descriptif (requis, jusqu’à 200 caractères). Un bon nom décrit l’objectif du workflow, tel que « Design-Review with E2E Testing » ou « Prompt Refinement Pipeline ». Vous pouvez aussi ajouter une description optionnelle pour un contexte supplémentaire.
Ajoutez des étapes de persona
Le cœur d’un workflow est son pipeline d’étapes de persona. Chaque étape référence une persona - une identité d’agent préconfigurée de votre projet. Vous devez ajouter au moins une étape de persona ; les workflows sans étape sont rejetés.
Pour ajouter une étape, sélectionnez une persona dans le menu déroulant. Les personas disponibles sont celles que vous avez créées dans la section Personas de votre projet. Chaque persona porte :
- Un rôle (designer, checker, optimizer, prompter, investigator, deep-dive, evaluator, judge ou answerer).
- Un outil CLI (Claude Code, OpenCode, Codex, Pi).
- Un modèle (par exemple, claude-opus-4-6, claude-sonnet-4-6).
- Des instructions personnalisées qui guident le comportement de l’agent.
- Des réglages de thinking effort optionnels.
- Des sélections de skills optionnelles.
Configurez les Iteration Blocks (optionnel)
L’itération est opt-in et vit à l’intérieur d’un nœud Iteration Block. Si vous voulez qu’un verdict négatif d’un checker déclenche un retry, placez la paire designer+checker à l’intérieur d’un Iteration Block. Les étapes à l’intérieur du block partagent le même loopId et se répètent ensemble jusqu’à ce que le checker passe ou que le loopMaxIterations du block soit atteint.
Les étapes en dehors d’un Iteration Block s’exécutent toujours exactement une fois. Un checker sans Iteration Block s’exécute quand même et enregistre son verdict, mais l’orchestrateur ne fait pas de retry automatique - les étapes en aval ou l’interface peuvent lire le verdict et décider quoi faire.
loopMaxIterations vaut 3 par défaut par block. Un nombre plus élevé donne au designer plus de chances de traiter le feedback, au prix du temps d’exécution et de la dépense.
Définissez les valeurs par défaut de la sandbox
Configurez les réglages de sandbox par défaut qui s’appliquent à toutes les étapes du workflow :
- Template ID - Le template E2B pour les sandboxes. Chaque étape peut le remplacer via sa persona, mais le workflow fournit la valeur de repli.
- Timeout - Durée d’exécution maximale par sandbox (1 minute à 4 heures).
- Mémoire - Allocation de RAM (256 Mo à 8 192 Mo).
- Nombre de CPU - Nombre de processeurs (1 à 8).
- Modèle designer - Modèle par défaut pour les étapes designer.
- Modèle checker - Modèle par défaut pour les étapes checker (souvent un modèle moins cher puisque les checkers font de la revue, pas de l’implémentation).
Configurez les seuils d’Evaluator (optionnel)
Si votre workflow inclut une étape Evaluator, vous pouvez configurer son seuil de qualité depuis la page evaluator-setup de cette persona. Le seuil est le score composite minimum (0 à 100) que l’evaluator doit rapporter pour que le thresholdResult soit true.
Sur la page evaluator-setup, vous configurez aussi :
- Context - Contexte supplémentaire que l’evaluator utilise pour évaluer la qualité (par exemple, une description des conventions du projet ou des standards de qualité).
- Skills - Skills injectés dans la sandbox de l’evaluator pour une évaluation spécialisée (par exemple, un skill de testing pour vérifier la couverture).
- Setup commands - Commandes shell qui préparent l’environnement d’évaluation (par exemple, installer les dépendances, construire le projet).
- Setup scripts - Scripts personnalisés exécutés avant l’évaluation pour établir une baseline ou préparer des fixtures de test.
La configuration de l’evaluator est séparée du blueprint de workflow lui-même afin que vous puissiez ajuster les critères de qualité indépendamment sans éditer le pipeline.
Enregistrez le workflow
Cliquez sur enregistrer pour créer le blueprint de workflow. Le workflow est stocké dans la table workflows avec votre configuration et est immédiatement disponible pour l’exécution.
Exigence de persona
Architecture du pipeline
Ordonnancement des étapes
Les étapes s’exécutent dans l’ordre où elles apparaissent dans le tableaupersonaPipelineSteps. L’orchestrateur de workflow les traite séquentiellement - l’étape 2 ne démarre pas tant que l’étape 1 n’est pas terminée. Cela garantit que chaque étape peut s’appuyer sur le travail des étapes précédentes.
Iteration Blocks (groupes de boucle)
Un Iteration Block est la manière d’inscrire un groupe d’étapes dans une exécution répétée. Les étapes consécutives partageant le même loopId forment un block, et le block se répète jusqu’à ce que le checker du block renvoie un verdict de passage ou que le loopMaxIterations du block soit atteint. Les étapes sans loopId s’exécutent une fois, dans l’ordre. Le pattern d’itération typique est :
// Example: persona pipeline steps with a loop
personaPipelineSteps: [
{
personaId: prompterPersonaId,
// No loopId -- runs once
},
{
personaId: designerPersonaId,
loopId: "design-review",
loopMaxIterations: 3,
},
{
personaId: checkerPersonaId,
loopId: "design-review",
loopMaxIterations: 3,
},
{
personaId: optimizerPersonaId,
// No loopId -- runs once after the loop
},
]Dans cet exemple, le prompter s’exécute en premier (une fois), puis le designer et le checker bouclent jusqu’à 3 fois, et enfin l’optimizer s’exécute une fois après la sortie de la boucle.
Execution Blocks
L’orchestrateur parse le tableau d’étapes plat en execution blocks :
- Single blocks - Étapes sans
loopId. Elles s’exécutent une fois dans l’ordre. - Loop blocks - Groupes d’étapes avec le même
loopId. Elles se répètent en groupe jusqu’à ce que le checker passe ou que le nombre maximum d’itérations soit atteint.
Si aucune étape ne porte de loopId, le pipeline s’exécute linéairement - chaque étape s’exécute exactement une fois. Un checker sans Iteration Block produit quand même un verdict sur son run step, mais ne déclenche pas de retry automatique. Pour activer le retry en cas d’échec, enveloppez les étapes concernées dans un Iteration Block.
Éditer des workflows
Les workflows existants peuvent être édités depuis la page de détail du workflow. Vous pouvez changer :
- Le nom et la description.
- L’ordre et la composition des étapes de persona.
- Les loop IDs et le nombre maximum d’itérations.
- La configuration de sandbox par défaut.
Les éditions s’appliquent uniquement aux runs futurs. Les runs déjà en cours continuent avec la configuration avec laquelle ils ont été démarrés. Le timestamp updatedAt de l’enregistrement du workflow suit le moment de la dernière édition.
Dupliquer des workflows
Vous pouvez dupliquer un workflow existant pour créer une variante. Le duplicata hérite de toute la configuration de l’original (nom, étapes, config de sandbox) avec « (copy) » ajouté au nom. C’est utile pour créer des variantes de test A/B - par exemple, le même pipeline avec des modèles ou des nombres d’itérations différents.
Types de workflow
Le champ type du workflow définit son pattern d’exécution. Les nouveaux workflows utilisent persona_pipeline, mais CodeCourier prend en charge plusieurs types pour la compatibilité descendante :
persona_pipeline- La valeur par défaut actuelle. Les étapes sont définies par des références de persona avec des groupes de boucle optionnels. C’est le type le plus flexible.custom_pipeline- Les étapes sont définies inline avec type, CLI, modèle et instructions. Chaque étape est un objet de configuration brut plutôt qu’une référence de persona.designer_checker- Un pattern simplifié à deux étapes : le designer s’exécute, puis le checker produit un verdict. Utilise lesdefaultCheckerInstructionsdu workflow. La paire s’exécute une fois - pour activer le retry en cas d’échec, utilisez un pipeline de personas et enveloppez les deux étapes dans un Iteration Block.single_designer- Une seule étape qui exécute le designer une fois sans boucle de checker.
Utilisez les pipelines de personas
persona_pipeline subsume tous les autres types. Un pipeline de personas à une seule étape équivaut à single_designer, et un pipeline de personas designer-checker à deux étapes avec une boucle équivaut à designer_checker. Utilisez toujours des pipelines de personas pour les nouveaux workflows.Bonnes pratiques
- Commencez simple - Débutez avec un workflow designer-checker à deux étapes avant d’ajouter plus d’étapes. Les pipelines complexes sont plus difficiles à déboguer.
- Utilisez des modèles appropriés - Utilisez Opus pour le travail de conception qui nécessite un raisonnement approfondi et Sonnet ou Haiku pour les étapes checker qui effectuent la vérification. Les étapes evaluator fonctionnent généralement bien sur Sonnet compte tenu de leurs exigences de sortie structurée.
- Définissez des limites d’itération raisonnables - À l’intérieur d’un Iteration Block, 3 itérations est une bonne valeur par défaut. Plus de 5 améliore rarement les résultats et augmente significativement le coût.
- Écrivez des instructions de persona claires - La qualité de la sortie du workflow dépend fortement des instructions de chaque persona. Soyez précis sur ce que chaque étape doit faire et ce qui constitue un succès.
- Contrôlez les PR avec des evaluators - Ajoutez un evaluator comme dernière étape avant la création de PR pour imposer un seuil de qualité. Commencez avec un seuil de 70 et ajustez à la hausse à mesure que votre pipeline mûrit.
- Testez d’abord avec de petites tâches - Exécutez votre workflow sur une petite tâche bien définie avant de l’utiliser pour de grandes fonctionnalités. Cela vous aide à ajuster le pipeline sans gaspiller de ressources.