Orquestación Multiagente de Claude DevFleet
Cuándo Usarlo
Usa esta habilidad cuando necesites desplegar múltiples agentes de Claude Code para trabajar en tareas de codificación en paralelo. Cada agente se ejecuta en un worktree aislado de Git con todas las herramientas disponibles.
Configuración
El servidor DevFleet es un proyecto separado, no incluido con ECC. Instálalo y ejecútalo desde su repositorio primero: https://github.com/LEC-AI/claude-devfleet
Luego conecta la instancia en ejecución a través de MCP:
claude mcp add devfleet --transport http http://localhost:18801/mcp
Antes del primer uso, verifica que el proceso escuchando en el puerto 18801 sea el binario DevFleet que instalaste (consulta SECURITY.md sobre servidores MCP en localhost).
Cómo Funciona
Usuario → "Construye una API REST con autenticación y pruebas"
↓
plan_project(prompt) → project_id + DAG de misiones
↓
Mostrar plan al usuario → obtener aprobación
↓
dispatch_mission(M1) → Agente 1 se despliega en worktree
↓
M1 se completa → auto-merge → despliegue automático de M2 (depends_on M1)
↓
M2 se completa → auto-merge
↓
get_report(M2) → archivos_cambiados, qué_se_hizo, errores, siguientes_pasos
↓
Reportar al usuario
Herramientas
| Herramienta | Propósito |
|---|---|
plan_project(prompt) | La IA descompone una descripción en un proyecto con misiones encadenadas |
create_project(nombre, ruta?, descripción?) | Crear un proyecto manualmente, devuelve project_id |
create_mission(project_id, título, prompt, depends_on?, auto_dispatch?) | Agregar una misión. depends_on es una lista de cadenas de ID de misión (ej. ["abc-123"]). Establece auto_dispatch=true para que se inicie automáticamente cuando se cumplan las dependencias. |
dispatch_mission(mission_id, modelo?, max_turns?) | Iniciar un agente en una misión |
cancel_mission(mission_id) | Detener un agente en ejecución |
wait_for_mission(mission_id, timeout_seconds?) | Bloquear hasta que una misión se complete (ver nota a continuación) |
get_mission_status(mission_id) | Verificar el progreso de la misión sin bloquear |
get_report(mission_id) | Leer informe estructurado (archivos cambiados, probados, errores, siguientes pasos) |
get_dashboard() | Resumen del sistema: agentes en ejecución, estadísticas, actividad reciente |
list_projects() | Navegar por todos los proyectos |
list_missions(project_id, estado?) | Listar misiones en un proyecto |
Nota sobre
wait_for_mission: Esto bloquea la conversación durante hastatimeout_seconds(por defecto 600). Para misiones de larga duración, prefiere consultar conget_mission_statuscada 30–60 segundos, para que el usuario vea actualizaciones de progreso.
Flujo de Trabajo: Planificar → Desplegar → Monitorear → Reportar
- Planificar: Llama a
plan_project(prompt="...")→ devuelveproject_id+ lista de misiones con cadenasdepends_onyauto_dispatch=true. - Mostrar plan: Presenta los títulos, tipos y la cadena de dependencias de las misiones al usuario.
- Desplegar: Llama a
dispatch_mission(mission_id=<primer_mission_id>)en la misión raíz (condepends_onvacío). Las misiones restantes se despliegan automáticamente a medida que sus dependencias se completan (porqueplan_projectestableceauto_dispatch=trueen ellas). - Monitorear: Llama a
get_mission_status(mission_id=...)oget_dashboard()para verificar el progreso. - Reportar: Llama a
get_report(mission_id=...)cuando las misiones se completen. Comparte los aspectos destacados con el usuario.
Concurrencia
DevFleet ejecuta hasta 3 agentes concurrentes por defecto (configurable mediante DEVFLEET_MAX_AGENTS). Cuando todos los espacios están ocupados, las misiones con auto_dispatch=true se encolan en el vigilante de misiones y se despliegan automáticamente a medida que se liberan espacios. Consulta get_dashboard() para conocer el uso actual de espacios.
Ejemplos
Completamente automático: planificar y lanzar
plan_project(prompt="...")→ muestra el plan con misiones y dependencias.- Desplegar la primera misión (la que tiene
depends_onvacío). - Las misiones restantes se despliegan automáticamente a medida que las dependencias se resuelven (tienen
auto_dispatch=true). - Reportar con el ID del proyecto y el número de misiones para que el usuario sepa qué se lanzó.
- Consultar con
get_mission_statusoget_dashboard()periódicamente hasta que todas las misiones alcancen un estado terminal (completed,failedocancelled). get_report(mission_id=...)para cada misión terminal — resumir éxitos y señalar fallos con errores y siguientes pasos.
Manual: control paso a paso
create_project(name="Mi Proyecto")→ devuelveproject_id.create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true)para la primera misión (raíz) → capturarroot_mission_id.create_mission(project_id=project_id, title="...", prompt="...", auto_dispatch=true, depends_on=["<root_mission_id>"])para cada tarea subsiguiente.dispatch_mission(mission_id=...)en la primera misión para iniciar la cadena.get_report(mission_id=...)cuando termine.
Secuencial con revisión
create_project(name="...")→ obtenerproject_id.create_mission(project_id=project_id, title="Implementar funcionalidad", prompt="...")→ obtenerimpl_mission_id.dispatch_mission(mission_id=impl_mission_id), luego consultar conget_mission_statushasta que se complete.get_report(mission_id=impl_mission_id)para revisar los resultados.create_mission(project_id=project_id, title="Revisión", prompt="...", depends_on=[impl_mission_id], auto_dispatch=true)— se inicia automáticamente ya que la dependencia ya se cumplió.
Directrices
- Siempre confirma el plan con el usuario antes de desplegar, a menos que haya dicho que continúes.
- Incluye los títulos y IDs de las misiones al reportar el estado.
- Si una misión falla, lee su informe antes de reintentarla.
- Verifica
get_dashboard()para conocer la disponibilidad de espacios de agente antes de desplegar en masa. - Las dependencias de misiones forman un DAG — no crees dependencias circulares.
- Cada agente se ejecuta en un worktree aislado de Git y realiza un auto-merge al completarse. Si ocurre un conflicto de fusión, los cambios permanecen en la rama del worktree del agente para resolución manual.
- Al crear misiones manualmente, siempre establece
auto_dispatch=truesi deseas que se activen automáticamente cuando se completen las dependencias. Sin esta bandera, las misiones permanecen en estadodraft.