dispatching-parallel-agents

Par mkurman · zorai

À utiliser lorsque vous faites face à 2 tâches indépendantes ou plus pouvant être traitées sans état partagé ni dépendances séquentielles

npx skills add https://github.com/mkurman/zorai --skill dispatching-parallel-agents

Distribution d'Agents en Parallèle

Vue d'ensemble

Vous déléguez des tâches à des agents spécialisés avec un contexte isolé. En formulant précisément leurs instructions et contexte, vous garantissez qu'ils restent concentrés et réussissent leur tâche. Ils ne doivent jamais hériter du contexte ou historique de votre session — vous construisez exactement ce dont ils ont besoin. Cela préserve aussi votre propre contexte pour le travail de coordination.

Lorsque vous avez plusieurs défaillances non liées (fichiers de test différents, sous-systèmes différents, bugs différents), les investiguer séquentiellement gaspille du temps. Chaque investigation est indépendante et peut se faire en parallèle.

Principe fondamental : Dispatchez un agent par domaine de problème indépendant. Laissez-les travailler concurremment.

Quand utiliser

digraph when_to_use {
    "Multiple failures?" [shape=diamond];
    "Are they independent?" [shape=diamond];
    "Single agent investigates all" [shape=box];
    "One agent per problem domain" [shape=box];
    "Can they work in parallel?" [shape=diamond];
    "Sequential agents" [shape=box];
    "Parallel dispatch" [shape=box];

    "Multiple failures?" -> "Are they independent?" [label="yes"];
    "Are they independent?" -> "Single agent investigates all" [label="no - related"];
    "Are they independent?" -> "Can they work in parallel?" [label="yes"];
    "Can they work in parallel?" -> "Parallel dispatch" [label="yes"];
    "Can they work in parallel?" -> "Sequential agents" [label="no - shared state"];
}

À utiliser quand :

  • 3+ fichiers de test échouent avec des causes racines différentes
  • Plusieurs sous-systèmes cassés indépendamment
  • Chaque problème peut être compris sans contexte des autres
  • Aucun état partagé entre les investigations

À ne pas utiliser quand :

  • Les défaillances sont liées (fixer l'une peut fixer les autres)
  • Besoin de comprendre l'état complet du système
  • Les agents s'interfèreraient mutuellement

Le pattern

1. Identifier les Domaines Indépendants

Groupez les défaillances par ce qui est cassé :

  • Tests du fichier A : Flow d'approbation d'outils
  • Tests du fichier B : Comportement de complètion par batch
  • Tests du fichier C : Fonctionnalité d'abandon

Chaque domaine est indépendant — fixer l'approbation des outils n'affecte pas les tests d'abandon.

2. Créer des Tâches d'Agent Focalisées

Chaque agent reçoit :

  • Scope spécifique : Un fichier de test ou sous-système
  • Objectif clair : Faire passer ces tests
  • Contraintes : Ne pas changer autre code
  • Résultat attendu : Résumé de ce que vous avez trouvé et fixé

3. Dispatcher en Parallèle

// In Claude Code / AI environment
Task("Fix agent-tool-abort.test.ts failures")
Task("Fix batch-completion-behavior.test.ts failures")
Task("Fix tool-approval-race-conditions.test.ts failures")
// All three run concurrently

4. Examiner et Intégrer

Quand les agents reviennent :

  • Lisez chaque résumé
  • Vérifiez que les fixes ne rentrent pas en conflit
  • Lancez la suite de tests complète
  • Intégrez tous les changements

Structure du Prompt d'Agent

Les bons prompts d'agent sont :

  1. Focalisés - Un domaine de problème clair
  2. Autosuffisants - Tout le contexte nécessaire pour comprendre le problème
  3. Spécifiques sur la sortie - Que doit retourner l'agent ?
Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts:

1. "should abort tool with partial output capture" - expects 'interrupted at' in message
2. "should handle mixed completed and aborted tools" - fast tool aborted instead of completed
3. "should properly track pendingToolCount" - expects 3 results but gets 0

These are timing/race condition issues. Your task:

1. Read the test file and understand what each test verifies
2. Identify root cause - timing issues or actual bugs?
3. Fix by:
   - Replacing arbitrary timeouts with event-based waiting
   - Fixing bugs in abort implementation if found
   - Adjusting test expectations if testing changed behavior

Do NOT just increase timeouts - find the real issue.

Return: Summary of what you found and what you fixed.

Erreurs Courantes

❌ Trop large : "Fixez tous les tests" - l'agent s'égare ✅ Spécifique : "Fixez agent-tool-abort.test.ts" - scope focalisé

❌ Pas de contexte : "Fixez la race condition" - l'agent ne sait pas où ✅ Contexte : Collez les messages d'erreur et noms de tests

❌ Pas de contraintes : L'agent pourrait tout refactoriser ✅ Contraintes : "Ne modifiez PAS le code de production" ou "Fixez les tests seulement"

❌ Sortie vague : "Fixez-le" - vous ne savez pas ce qui a changé ✅ Spécifique : "Retournez un résumé de la cause racine et des changements"

Quand NE PAS Utiliser

Défaillances liées : Fixer l'une peut fixer les autres — investiguer ensemble d'abord Besoin du contexte complet : La compréhension nécessite de voir l'ensemble du système Debugging exploratoire : Vous ne savez pas ce qui est cassé encore État partagé : Les agents s'interfèreraient (édition des mêmes fichiers, utilisation des mêmes ressources)

Exemple Réel de Session

Scénario : 6 tests échouent sur 3 fichiers après refactoring majeur

Défaillances :

  • agent-tool-abort.test.ts : 3 défaillances (problèmes de timing)
  • batch-completion-behavior.test.ts : 2 défaillances (outils non exécutés)
  • tool-approval-race-conditions.test.ts : 1 défaillance (nombre d'exécutions = 0)

Décision : Domaines indépendants — logique d'abandon séparée de la complètion par batch séparée des race conditions

Dispatch :

Agent 1 → Fix agent-tool-abort.test.ts
Agent 2 → Fix batch-completion-behavior.test.ts
Agent 3 → Fix tool-approval-race-conditions.test.ts

Résultats :

  • Agent 1 : Remplacement des timeouts par une attente basée sur événements
  • Agent 2 : Fixation du bug de structure d'événement (threadId au mauvais endroit)
  • Agent 3 : Ajout d'attente pour que l'exécution asynchrone des outils se complète

Intégration : Tous les fixes indépendants, aucun conflit, suite complète au vert

Temps économisé : 3 problèmes résolus en parallèle vs séquentiellement

Bénéfices Clés

  1. Parallélisation - Plusieurs investigations se font simultanément
  2. Focus - Chaque agent a un scope étroit, moins de contexte à gérer
  3. Indépendance - Les agents ne s'interfèrent pas mutuellement
  4. Vitesse - 3 problèmes résolus dans le temps d'1

Vérification

Après le retour des agents :

  1. Examinez chaque résumé - Comprenez ce qui a changé
  2. Vérifiez les conflits - Les agents ont-ils édité le même code ?
  3. Lancez la suite complète - Vérifiez que tous les fixes fonctionnent ensemble
  4. Vérification ciblée - Les agents peuvent faire des erreurs systématiques

Impact dans le Monde Réel

Depuis une session de debugging (2025-10-03) :

  • 6 défaillances sur 3 fichiers
  • 3 agents dispatchés en parallèle
  • Toutes les investigations complétées concurremment
  • Tous les fixes intégrés avec succès
  • Zéro conflits entre les changements d'agents

Skills similaires