Orchestration multi-agents Claude DevFleet
Quand l'utiliser
Utilisez ce skill lorsque vous avez besoin de lancer plusieurs agents Claude Code pour travailler en parallèle sur des tâches de codage. Chaque agent s'exécute dans un worktree git isolé avec des outils complets.
Configuration
Le serveur DevFleet est un projet séparé, non inclus dans ECC. Installez-le et lancez-le depuis son dépôt d'abord : https://github.com/LEC-AI/claude-devfleet
Connectez ensuite l'instance en cours d'exécution via MCP :
claude mcp add devfleet --transport http http://localhost:18801/mcp
Avant la première utilisation, vérifiez que le processus écoutant sur le port 18801 est le binaire DevFleet que vous avez installé (voir SECURITY.md concernant les serveurs MCP locaux).
Fonctionnement
Utilisateur → « Construis une API REST avec authentification et tests »
↓
plan_project(prompt) → project_id + DAG de missions
↓
Présenter le plan à l'utilisateur → obtenir l'approbation
↓
dispatch_mission(M1) → Agent 1 est lancé dans un worktree
↓
M1 terminée → fusion automatique → lancement automatique de M2 (dépend de M1)
↓
M2 terminée → fusion automatique
↓
get_report(M2) → fichiers_modifiés, actions_réalisées, erreurs, prochaines_étapes
↓
Rapport à l'utilisateur
Outils
| Outil | Objectif |
|---|---|
plan_project(prompt) | L'IA décompose une description en un projet avec des missions chaînées |
create_project(nom, chemin?, description?) | Créer un projet manuellement, retourne project_id |
create_mission(project_id, titre, prompt, depends_on?, auto_dispatch?) | Ajouter une mission. depends_on est une liste de chaînes d'ID de mission (ex. ["abc-123"]). Mettez auto_dispatch=true pour un lancement automatique lorsque les dépendances sont satisfaites. |
dispatch_mission(mission_id, model?, max_turns?) | Lancer un agent sur une mission |
cancel_mission(mission_id) | Arrêter un agent en cours d'exécution |
wait_for_mission(mission_id, timeout_seconds?) | Bloquer jusqu'à ce qu'une mission soit terminée (voir note ci-dessous) |
get_mission_status(mission_id) | Vérifier la progression d'une mission sans bloquer |
get_report(mission_id) | Lire le rapport structuré (fichiers modifiés, testés, erreurs, prochaines étapes) |
get_dashboard() | Aperçu du système : agents en cours, statistiques, activité récente |
list_projects() | Parcourir tous les projets |
list_missions(project_id, statut?) | Lister les missions d'un projet |
Note sur
wait_for_mission: Cette fonction bloque la conversation jusqu'àtimeout_seconds(600 par défaut). Pour les missions longues, préférez une interrogation avecget_mission_statustoutes les 30 à 60 secondes, afin que l'utilisateur voie les mises à jour de progression.
Workflow : Planifier → Lancer → Surveiller → Rapporter
- Planifier : Appeler
plan_project(prompt="...")→ retourneproject_id+ une liste de missions avec des chaînesdepends_onetauto_dispatch=true. - Présenter le plan : Afficher les titres, types et la chaîne de dépendances des missions à l'utilisateur.
- Lancer : Appeler
dispatch_mission(mission_id=<premier_mission_id>)sur la mission racine (avecdepends_onvide). Les missions restantes se lancent automatiquement lorsque leurs dépendances sont terminées (carplan_projectdéfinitauto_dispatch=truesur elles). - Surveiller : Appeler
get_mission_status(mission_id=...)ouget_dashboard()pour vérifier la progression. - Rapporter : Appeler
get_report(mission_id=...)lorsque les missions sont terminées. Partager les points saillants avec l'utilisateur.
Concurrence
DevFleet exécute jusqu'à 3 agents simultanément par défaut (configurable via DEVFLEET_MAX_AGENTS). Lorsque tous les emplacements sont occupés, les missions avec auto_dispatch=true sont mises en file d'attente dans le surveillant de missions et se lancent automatiquement dès qu'un emplacement se libère. Vérifiez get_dashboard() pour l'utilisation actuelle des emplacements.
Exemples
Entièrement automatique : planifier et lancer
plan_project(prompt="...")→ afficher le plan avec les missions et dépendances.- Lancer la première mission (celle avec
depends_onvide). - Les missions restantes se lancent automatiquement à mesure que les dépendances sont résolues (elles ont
auto_dispatch=true). - Rapporter avec l'ID du projet et le nombre de missions afin que l'utilisateur sache ce qui a été lancé.
- Interroger avec
get_mission_statusouget_dashboard()périodiquement jusqu'à ce que toutes les missions atteignent un état terminal (completed,failedoucancelled). get_report(mission_id=...)pour chaque mission terminale — résumer les succès et signaler les échecs avec les erreurs et les prochaines étapes.
Manuel : contrôle pas à pas
create_project(nom="Mon projet")→ retourneproject_id.create_mission(project_id=project_id, titre="...", prompt="...", auto_dispatch=true)pour la première mission (racine) → capturerroot_mission_id.create_mission(project_id=project_id, titre="...", prompt="...", auto_dispatch=true, depends_on=["<root_mission_id>"])pour chaque tâche suivante.dispatch_mission(mission_id=...)sur la première mission pour démarrer la chaîne.get_report(mission_id=...)une fois terminé.
Séquentiel avec relecture
create_project(nom="...")→ obtenirproject_id.create_mission(project_id=project_id, titre="Implémenter la fonctionnalité", prompt="...")→ obtenirimpl_mission_id.dispatch_mission(mission_id=impl_mission_id), puis interroger avecget_mission_statusjusqu'à la fin.get_report(mission_id=impl_mission_id)pour examiner les résultats.create_mission(project_id=project_id, titre="Relecture", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— se lance automatiquement puisque la dépendance est déjà satisfaite.
Directives
- Toujours confirmer le plan avec l'utilisateur avant de lancer, sauf s'il a donné son accord.
- Inclure les titres et identifiants des missions lors du rapport d'état.
- Si une mission échoue, lire son rapport avant de réessayer.
- Vérifier
get_dashboard()pour la disponibilité des emplacements d'agents avant de lancer en masse. - Les dépendances entre missions forment un DAG — ne créez pas de dépendances circulaires.
- Chaque agent s'exécute dans un worktree git isolé et fusionne automatiquement à la fin. En cas de conflit de fusion, les modifications restent sur la branche du worktree de l'agent pour une résolution manuelle.
- Lors de la création manuelle de missions, définissez toujours
auto_dispatch=truesi vous souhaitez qu'elles se déclenchent automatiquement lorsque les dépendances sont terminées. Sans ce drapeau, les missions restent à l'étatdraft.