Delegación y Orquestación de Agentes
Pando incluye Mesnada, un poderoso framework de orquestación de agentes que permite delegar tareas a sub-agentes especializados ejecutándose en segundo plano. Los sub-agentes pueden trabajar en diferentes proyectos, usar diferentes motores y reportar resultados al agente padre automáticamente.
Lanzar Sub-Agentes
La herramienta mesnada_spawn_agent lanza tareas en segundo plano:
{
"prompt": "Analizar el módulo de autenticación y escribir tests",
"subagent_type": "general",
"description": "Escribir tests de auth",
"background": true
}Parámetros Clave
| Parámetro | Descripción |
|---|---|
prompt | La instrucción para la tarea lanzada |
subagent_type | explore (solo lectura) o general (todas las capacidades) |
background | true para fire-and-forget, false para bloquear hasta completar |
project | Dirigir a un proyecto registrado por id, nombre o ruta |
engine | Motor CLI: pando, copilot, claude, gemini, etc. |
model | Sobreescribir el modelo para esta tarea |
dependencies | Lista de IDs de tareas que deben completarse primero |
task_id | Relanzar una tarea existente in-place |
Esperar Resultados
No Bloqueante (Recomendado)
Usa mesnada_await después de lanzar tareas en segundo plano:
{
"action": "wait",
"actor_id": "explore-1"
}El agente padre se reanuda automáticamente cuando llegan los resultados.
Bloqueante
Usa mesnada_wait_task para bloquear hasta que una tarea específica comple:
{
"task_id": "T1",
"timeout": "10m"
}Dependencias de Tareas
Las tareas pueden depender de otras. Una tarea dependiente solo se inicia cuando todas sus dependencias se completan:
{
"prompt": "Escribir tests basados en el análisis",
"dependencies": ["T1", "T2"],
"include_dependency_logs": true,
"dependency_log_lines": 100
}Plantillas de Motores Personalizados
Define motores de agente personalizados colocando archivos *.template.yaml en el directorio de motores:
[Mesnada.Orchestrator]
EnginesDir = '' # por defecto <dirname(LogDir)>/enginesCada plantilla especifica comando, args (con expresiones Go template), modo de prompt, formato de salida y modelos disponibles. Los motores personalizados aparecen dinámicamente en la herramienta mesnada_spawn_agent.
Delegación Multi-Proyecto
Delega tareas a otras instancias de Pando en ejecución en diferentes proyectos:
[Mesnada.Delegation]
Enabled = true
ReuseWarmInstances = true
AutoStartWarmInstance = trueEl parámetro project enruta la tarea a la instancia activa del proyecto correcto.
Reutilización de Instancias Activas
Cuando está habilitado, las tareas delegadas se enrutan a instancias ACP ya en ejecución (“calientes”) en lugar de lanzar nuevos procesos CLI:
[Mesnada.Delegation]
ReuseWarmInstances = true
WarmInstanceIdleTimeout = '10m'
MaxConcurrent = 8Supervisor de Delegación
El supervisor maneja la finalización automática de tareas delegadas:
- Inyectar en bucle activo: Cuando una tarea se completa mientras el padre está ejecutándose, los resultados se inyectan automáticamente
- Resucitar bucle inactivo: Cuando las tareas se completan mientras el padre está inactivo, se despierta al padre con resultados combinados
[Mesnada.Delegation]
Enabled = true
InjectIntoLiveLoop = true
ResurrectIdleLoop = true
MaxResurrections = 4
MaxDepth = 3Delegación Hot-Peer (IPC)
Las instancias pueden delegar tareas a instancias pares externas a través de ZeroMQ IPC:
[Mesnada.Delegation]
AllowExternalWarmTargets = true # lado del llamador
AcceptDelegations = true # lado del objetivoGestión de Sesiones
Administra tareas Mesnada con herramientas dedicadas:
mesnada_get_task- Obtener detalles de tareamesnada_list_tasks- Listar tareas con filtrosmesnada_cancel_task- Cancelar una tareamesnada_get_task_output- Obtener stdout/stderr