Orquestación Multiagente de Claude DevFleet
Cuándo Usarlo
Usa este skill cuando necesites enviar múltiples agentes de Claude Code para trabajar en tareas de codificación en paralelo. Cada agente se ejecuta en un worktree de git aislado con todas las herramientas.
Configuración
El servidor DevFleet es un proyecto separado, no incluido en ECC. Instálalo y ejecútalo desde su repositorio primero: https://github.com/LEC-AI/claude-devfleet
Luego conecta la instancia en ejecución mediante MCP:
claude mcp add devfleet --transport http http://localhost:18801/mcp
Antes del primer uso, verifica que el proceso que escucha en el puerto 18801 sea el binario de 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) → El Agente 1 se inicia en un worktree
↓
M1 se completa → auto-fusión → auto-despacho de M2 (depende_de M1)
↓
M2 se completa → auto-fusión
↓
get_report(M2) → archivos_cambiados, qué_se_hizo, errores, próximos_pasos
↓
Informar 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?) | Crea un proyecto manualmente, devuelve project_id |
create_mission(project_id, título, prompt, depende_de?, auto_despacho?) | Añade una misión. depende_de es una lista de IDs de misión (ej.: ["abc-123"]). Establece auto_despacho=true para que se inicie automáticamente cuando se cumplan las dependencias. |
dispatch_mission(mission_id, modelo?, turnos_máximos?) | Inicia un agente en una misión |
cancel_mission(mission_id) | Detiene un agente en ejecución |
wait_for_mission(mission_id, tiempo_máximo_segundos?) | Bloquea hasta que una misión termine (ver nota más abajo) |
get_mission_status(mission_id) | Verifica el progreso de la misión sin bloquear |
get_report(mission_id) | Lee el informe estructurado (archivos cambiados, probados, errores, próximos pasos) |
get_dashboard() | Resumen del sistema: agentes en ejecución, estadísticas, actividad reciente |
list_projects() | Navega por todos los proyectos |
list_missions(project_id, estado?) | Lista las misiones en un proyecto |
Nota sobre
wait_for_mission: Esto bloquea la conversación hastatiempo_máximo_segundos(por defecto 600). Para misiones largas, es preferible sondear conget_mission_statuscada 30–60 segundos, para que el usuario vea actualizaciones de progreso.
Flujo de trabajo: Planificar → Enviar → Supervisar → Informar
- Planificar: Llama a
plan_project(prompt="...")→ devuelveproject_id+ lista de misiones con cadenasdepende_deyauto_despacho=true. - Mostrar plan: Presenta al usuario los títulos, tipos y la cadena de dependencias de las misiones.
- Enviar: Llama a
dispatch_mission(mission_id=<id_primera_misión>)en la misión raíz (condepende_devacío). Las misiones restantes se auto-despachan a medida que se completan sus dependencias (porqueplan_projectles estableceauto_despacho=true). - Supervisar: Llama a
get_mission_status(mission_id=...)oget_dashboard()para verificar el progreso. - Informar: 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 de forma predeterminada (configurable mediante DEVFLEET_MAX_AGENTS). Cuando todos los espacios están ocupados, las misiones con auto_despacho=true se ponen en cola en el vigilante de misiones y se despachan automáticamente a medida que se liberan espacios. Consulta get_dashboard() para conocer el uso actual de espacios.
Ejemplos
Automático completo: planificar y lanzar
plan_project(prompt="...")→ muestra el plan con misiones y dependencias.- Envía la primera misión (la que tiene
depende_devacío). - Las misiones restantes se auto-despachan a medida que se resuelven las dependencias (tienen
auto_despacho=true). - Informa con el ID del proyecto y la cantidad de misiones para que el usuario sepa qué se lanzó.
- Sondea periódicamente con
get_mission_statusoget_dashboard()hasta que todas las misiones lleguen a un estado terminal (completada,fallidaocancelada). get_report(mission_id=...)para cada misión terminal: resume los éxitos y destaca los fallos con errores y próximos pasos.
Manual: control paso a paso
create_project(nombre="Mi Proyecto")→ devuelveproject_id.create_mission(project_id=project_id, título="...", prompt="...", auto_despacho=true)para la primera misión (raíz) → capturaid_misión_raíz.create_mission(project_id=project_id, título="...", prompt="...", auto_despacho=true, depende_de=["<id_misión_raíz>"])para cada tarea siguiente.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(nombre="...")→ obténproject_id.create_mission(project_id=project_id, título="Implementar característica", prompt="...")→ obténid_misión_impl.dispatch_mission(mission_id=id_misión_impl), luego sondea conget_mission_statushasta que termine.get_report(mission_id=id_misión_impl)para revisar los resultados.create_mission(project_id=project_id, título="Revisión", prompt="...", depende_de=[id_misión_impl], auto_despacho=true)— se inicia automáticamente porque la dependencia ya está cumplida.
Directrices
- Siempre confirma el plan con el usuario antes de enviar, a menos que él haya dicho que continúes.
- Incluye los títulos e IDs de las misiones al informar 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 enviar múltiples misiones. - Las dependencias de las misiones forman un DAG: no crees dependencias circulares.
- Cada agente se ejecuta en un worktree de git aislado y se auto-fusiona al completar. 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_despacho=truesi deseas que se activen automáticamente cuando se completen las dependencias. Sin esta bandera, las misiones permanecen en estadoborrador.