Orchestration multi-agents Claude DevFleet
Quand l'utiliser
Utilisez cette compétence lorsque vous devez déléguer 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 tous les outils.
Configuration
Le serveur DevFleet est un projet distinct, non inclus dans ECC. Installez-le et exécutez-le depuis son dépôt en premier : 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 à propos des serveurs MCP sur localhost).
Comment ça fonctionne
Utilisateur → "Crée une API REST avec authentification et tests"
↓
plan_project(prompt) → project_id + graphe de missions
↓
Afficher le plan à l'utilisateur → obtenir l'approbation
↓
dispatch_mission(M1) → Agent 1 se lance dans le worktree
↓
M1 terminée → fusion automatique → dispatch automatique de M2 (dépend de M1)
↓
M2 terminée → fusion automatique
↓
get_report(M2) → fichiers modifiés, actions effectué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(name, path?, description?) | Créer un projet manuellement, retourne project_id |
create_mission(project_id, title, prompt, depends_on?, auto_dispatch?) | Ajouter une mission. depends_on est une liste d'identifiants de mission (ex: ["abc-123"]). Définissez auto_dispatch=true pour un démarrage automatique lorsque les dépendances sont remplies. |
dispatch_mission(mission_id, model?, max_turns?) | Démarrer 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'à la fin d'une mission (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() | Vue d'ensemble du système : agents en cours, statistiques, activité récente |
list_projects() | Parcourir tous les projets |
list_missions(project_id, status?) | Lister les missions d'un projet |
Note sur
wait_for_mission: Cette commande bloque la conversation jusqu'àtimeout_seconds(par défaut 600). Pour les missions longues, préférez un sondage régulier avecget_mission_statustoutes les 30 à 60 secondes, afin que l'utilisateur voie les mises à jour de progression.
Flux de travail : Planifier → Lancer → Surveiller → Rapporter
- Planifier : Appelez
plan_project(prompt="...")→ retourneproject_id+ liste de missions avec chaînesdepends_onetauto_dispatch=true. - Afficher le plan : Présentez les titres, types et chaînes de dépendance des missions à l'utilisateur.
- Lancer : Appelez
dispatch_mission(mission_id=<première_mission_id>)sur la mission racine (avecdepends_onvide). Les missions restantes se lancent automatiquement à mesure que leurs dépendances sont résolues (carplan_projectdéfinitauto_dispatch=truesur elles). - Surveiller : Appelez
get_mission_status(mission_id=...)ouget_dashboard()pour vérifier la progression. - Rapporter : Appelez
get_report(mission_id=...)lorsque les missions sont terminées. Partagez les points forts 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 watcher de missions et se lancent automatiquement dès qu'un emplacement se libère. Consultez get_dashboard() pour connaître l'utilisation actuelle des emplacements.
Exemples
Entièrement automatique : planifier et lancer
plan_project(prompt="...")→ affiche le plan avec les missions et dépendances.- Lancez 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). - Rapportez avec l'ID du projet et le nombre de missions pour informer l'utilisateur de ce qui a été lancé.
- Sondez 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ésumez les succès et signalez les échecs avec les erreurs et les prochaines étapes.
Manuel : contrôle pas à pas
create_project(name="Mon Projet")→ retourneproject_id.create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true)pour la première mission (racine) → capturezroot_mission_id.create_mission(project_id=project_id, title="...", 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 revue
create_project(name="...")→ obtenezproject_id.create_mission(project_id=project_id, title="Implémenter la fonctionnalité", prompt="...")→ obtenezimpl_mission_id.dispatch_mission(mission_id=impl_mission_id), puis sondez avecget_mission_statusjusqu'à terminaison.get_report(mission_id=impl_mission_id)pour examiner les résultats.create_mission(project_id=project_id, title="Revue", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— démarre automatiquement car la dépendance est déjà satisfaite.
Recommandations
- Confirmez toujours le plan avec l'utilisateur avant de lancer, sauf s'il a dit d'avancer.
- Incluez les titres et IDs des missions lors des rapports d'état.
- Si une mission échoue, lisez son rapport avant de réessayer.
- Vérifiez
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 résolution manuelle.
- Lors de la création manuelle de missions, définissez toujours
auto_dispatch=truesi vous voulez qu'elles se déclenchent automatiquement lorsque les dépendances sont terminées. Sans cet indicateur, les missions restent à l'étatdraft.