Dynamic Workflows — orchestration multi-agents scriptée
Dynamic Workflows (Claude Code 2.1.154+, mot-clé déclencheur ultracode) laissent Claude
écrire un script JavaScript qui orchestre des sous-agents de façon déterministe (boucles,
conditions, fan-out). Le script tourne en arrière-plan ; on suit l'exécution via /workflows.
⚠️ Opt-in coûteux : un workflow peut lancer des dizaines à centaines de sous-agents. Ne l'utiliser
que sur demande explicite (mot « ultracode », « use a workflow », « fan out agents ») ou quand le
palier de complexité ci-dessous est franchi.
Quand l'utiliser — les 3 paliers d'orchestration
| Palier |
Outil |
Concurrence |
Quand |
| 1 |
Sub-agent simple (Task/Agent) |
1 |
Une investigation isolée, garder le contexte principal propre |
| 2 |
Agent Teams (/team:audit, /team:sprint, /team:security) |
1 leader + ~3 workers |
Travail parallèle borné, synchrone, qui tient en un round |
| 3 |
Dynamic Workflows (ultracode) |
jusqu'à ~1000 sous-agents (cap concurrent ~16) |
La tâche dépasse le contexte d'un agent OU exige >4 workers OU une boucle/pipeline déterministe |
Heuristique break-even : dès que tu écrirais « lance N agents, puis pour chacun fais X, puis
agrège » — c'est un workflow. Si N ≤ 4 et une seule passe suffit, reste sur Agent Teams.
Patterns composables (prompts minimaux)
- Fan-out & synthesize — N lecteurs en parallèle sur des sous-systèmes disjoints → un agent
synthétise. (audit, cartographie de code)
- Adversarial verification — chaque finding passé à ≥1 sceptique chargé de le réfuter ;
ne garder que les
CONFIRMED. Le pattern qualité le plus important pour la génération autonome.
- Generate-and-filter — générer large (idées, candidats), puis filtrer par un juge.
- Classify-and-act — un classifieur route chaque item vers le traitement adapté.
- Pipeline — chaque item traverse toutes les étapes sans barrière (latence = pire chaîne, pas
somme des étapes). C'est le défaut multi-étapes.
- Loop-until-done / loop-until-dry — relancer des chercheurs jusqu'à K rounds sans nouveauté
(découverte de taille inconnue : bugs, edge cases).
Squelette type (review → verify)
const results = await pipeline(
DIMENSIONS,
d => agent(d.prompt, { phase: 'Review', schema: FINDINGS }),
review => parallel(review.findings.map(f => () =>
agent(`Adversarially verify: ${f.title}. Default refuted=true if unsure.`,
{ phase: 'Verify', schema: VERDICT }).then(v => ({ ...f, verdict: v }))))
)
const confirmed = results.flat().filter(Boolean).filter(f => f.verdict?.isReal)
pipeline() par défaut (pas de barrière) ; parallel() seulement quand l'étape N a besoin de TOUS
les résultats de N-1 (dédup, early-exit, comparaison croisée). schema force une sortie structurée
validée. Pour des éditions concurrentes de fichiers, isolation: 'worktree'.
Monitoring
/workflows : progression live (phases, agents, tokens).
- Le script revient avec un résultat agrégé ; lire ce résultat, décider la suite (souvent plusieurs
workflows en séquence : comprendre → concevoir → implémenter → revoir).
À ne pas confondre
- ralph-run (
/common:ralph-run) : boucle séquentielle mono-contexte jusqu'à une DoD — pas de
parallélisme. Pour une tâche qui dépasse ce modèle, basculer sur un Dynamic Workflow.
/effort ultracode : palier d'effort CLI (débit code max sur Opus 4.8) — orthogonal au
déclencheur ultracode des workflows, même si souvent utilisés ensemble.
Référence : Claude Code Workflows · voir aussi
@.claude/commands/common/sub-agents-patterns.md (tableau comparatif des orchestrations).
1---2name: dynamic-workflows-23description: Orchestrate dozens-to-hundreds of subagents from a script Claude writes (Claude Code Dynamic Workflows, trigger `ultracode`). Use when a task exceeds a single agent's context or needs more than ~4 concurrent workers — large audits, migrations, multi-source research, fan-out reviews. Distinct from Agent Teams (synchronous, ≤4 workers) and ralph-run (sequential single-context loop).4---56# Dynamic Workflows — orchestration multi-agents scriptée78Dynamic Workflows (Claude Code 2.1.154+, mot-clé déclencheur **`ultracode`**) laissent Claude9**écrire un script JavaScript** qui orchestre des sous-agents de façon déterministe (boucles,10conditions, fan-out). Le script tourne en arrière-plan ; on suit l'exécution via `/workflows`.1112> ⚠️ Opt-in coûteux : un workflow peut lancer des dizaines à centaines de sous-agents. Ne l'utiliser13> que sur demande explicite (mot « ultracode », « use a workflow », « fan out agents ») ou quand le14> palier de complexité ci-dessous est franchi.1516## Quand l'utiliser — les 3 paliers d'orchestration1718| Palier | Outil | Concurrence | Quand |19|--------|-------|-------------|-------|20| 1 | **Sub-agent simple** (Task/Agent) | 1 | Une investigation isolée, garder le contexte principal propre |21| 2 | **Agent Teams** (`/team:audit`, `/team:sprint`, `/team:security`) | 1 leader + ~3 workers | Travail parallèle borné, synchrone, qui tient en un round |22| 3 | **Dynamic Workflows** (`ultracode`) | jusqu'à ~1000 sous-agents (cap concurrent ~16) | La tâche dépasse le contexte d'un agent OU exige >4 workers OU une boucle/pipeline déterministe |2324**Heuristique break-even :** dès que tu écrirais « lance N agents, puis pour chacun fais X, puis25agrège » — c'est un workflow. Si N ≤ 4 et une seule passe suffit, reste sur Agent Teams.2627## Patterns composables (prompts minimaux)2829- **Fan-out & synthesize** — N lecteurs en parallèle sur des sous-systèmes disjoints → un agent30 synthétise. (audit, cartographie de code)31- **Adversarial verification** — chaque finding passé à ≥1 sceptique chargé de le **réfuter** ;32 ne garder que les `CONFIRMED`. *Le pattern qualité le plus important pour la génération autonome.*33- **Generate-and-filter** — générer large (idées, candidats), puis filtrer par un juge.34- **Classify-and-act** — un classifieur route chaque item vers le traitement adapté.35- **Pipeline** — chaque item traverse toutes les étapes sans barrière (latence = pire chaîne, pas36 somme des étapes). C'est le défaut multi-étapes.37- **Loop-until-done / loop-until-dry** — relancer des chercheurs jusqu'à K rounds sans nouveauté38 (découverte de taille inconnue : bugs, edge cases).3940## Squelette type (review → verify)4142```js43const results = await pipeline(44 DIMENSIONS,45 d => agent(d.prompt, { phase: 'Review', schema: FINDINGS }),46 review => parallel(review.findings.map(f => () =>47 agent(`Adversarially verify: ${f.title}. Default refuted=true if unsure.`,48 { phase: 'Verify', schema: VERDICT }).then(v => ({ ...f, verdict: v }))))49)50const confirmed = results.flat().filter(Boolean).filter(f => f.verdict?.isReal)51```5253`pipeline()` par défaut (pas de barrière) ; `parallel()` seulement quand l'étape N a besoin de TOUS54les résultats de N-1 (dédup, early-exit, comparaison croisée). `schema` force une sortie structurée55validée. Pour des éditions concurrentes de fichiers, `isolation: 'worktree'`.5657## Monitoring5859- **`/workflows`** : progression live (phases, agents, tokens).60- Le script revient avec un résultat agrégé ; lire ce résultat, décider la suite (souvent plusieurs61 workflows en séquence : comprendre → concevoir → implémenter → revoir).6263## À ne pas confondre6465- **ralph-run** (`/common:ralph-run`) : boucle séquentielle mono-contexte jusqu'à une DoD — pas de66 parallélisme. Pour une tâche qui dépasse ce modèle, basculer sur un Dynamic Workflow.67- **`/effort ultracode`** : palier d'effort CLI (débit code max sur Opus 4.8) — orthogonal au68 déclencheur `ultracode` des workflows, même si souvent utilisés ensemble.6970> Référence : [Claude Code Workflows](https://code.claude.com/docs/en/workflows) · voir aussi71> `@.claude/commands/common/sub-agents-patterns.md` (tableau comparatif des orchestrations).