Elegir entre un agent y un sistema multi-agent para un flujo de trabajo complejo.
→Por defecto, usar un solo agent con herramientas. Dividir en múltiples agentes solo cuando los límites de la tarea sean distintos, el contexto se desborde o diferentes niveles de modelos se adapten a diferentes subtareas.
Por qué: Cada agent añadido multiplica la latencia, la superficie de error y el costo de orquestación; la mayoría de las cargas de trabajo tienen éxito con un solo agent bien equipado.
El orquestador debe despachar subtareas heterogéneas a especialistas.
→Usar un agent supervisor que descomponga el objetivo, dirija a los agentes trabajadores con sus propios prompts y herramientas, y agregue los resultados.
Por qué: El control centralizado mantiene el estado coherente y hace que el límite de decisión sea auditable, a diferencia de un enjambre descontrolado.
El flujo del agent tiene ramas condicionales, bucles y distribución paralela.
→Modelar el flujo de trabajo como un grafo explícito de nodos y aristas en lugar de un bucle de forma libre, para que el flujo de control sea determinista y reanudable.
Por qué: Un grafo hace que las ramas sean testeables y permite hacer checkpoints y reproducir desde cualquier nodo después de una falla.
Las solicitudes entrantes varían mucho en tipo y costo.
→Poner delante del sistema un lightweight router agent que clasifique la intención y despache al agent o herramienta downstream más barato y capaz.
Por qué: El routing evita pagar el costo del modelo "frontier" para solicitudes triviales y aísla las preocupaciones por cada ruta.
Múltiples agentes deben leer y escribir el estado común del flujo de trabajo.
→Externalizar el estado a un shared store (clave-valor o documento) indexado por sesión, en lugar de pasar la transcripción completa entre agentes.
Por qué: Un shared store limita el crecimiento del contexto y evita copias divergentes del estado entre agentes.
Diseñar agentes para escalado horizontal.
→Mantener el cómputo del agent sin estado; persistir la conversación y la memoria externamente para que cualquier réplica pueda atender cualquier solicitud.
Por qué: Los nodos sin estado se autoescalan de forma limpia y sobreviven a los reinicios de pod sin perder el trabajo en curso.
Un sub-agent o herramienta falla a mitad del flujo de trabajo.
→Diseñar pasos idempotentes con reintentos/retardos, acciones compensatorias para efectos secundarios, y una ruta de respaldo o escalada humana cuando se agoten los reintentos.
Por qué: Los sistemas agentic fallan parcialmente; la recuperación debe ser una preocupación de diseño de primera clase, no un pensamiento secundario.
Los sub-agentes son desarrollados por equipos separados.
→Definir el contrato de entrada/salida de cada agent como un esquema tipado y tratar a los agentes como servicios detrás de interfaces estables.
Por qué: Los contratos explícitos permiten que los agentes evolucionen independientemente y sean probados unitariamente de forma aislada.
La calidad de la salida del agent es inconsistente en tareas difíciles.
→Añadir un paso de crítico/reflexión que revise el borrador contra criterios y active un reintento limitado antes de devolverlo.
Por qué: La autocrítica detecta errores de forma económica, pero limita las iteraciones para evitar bucles descontrolados y costos.