Carlos Tapia

Patrones de diseño agénticos

Doce patrones alrededor del llamado al LLM

5 actúan antes de llamar al LLM, 4 después, antes de que su salida tenga efecto, y 3 entre turnos. 7 de los doce tienen una medición publicada.

Antes del LLM · 5

Llamado al LLM

Después del LLM · 4

Entre turnos · 3

Antes del LLM

Bounded observation

El modelo ve una ventana del archivo y una búsqueda resumida, no el archivo entero.

Evidencia

SWE-agent, tabla 3: una ventana de 100 líneas logra 18,0% contra 12,7% con el archivo completo; la búsqueda resumida, 18,0% contra 12,0% iterativa. SWE-bench apunta igual: subir el contexto BM25 de 13k a 50k tokens sube el recall de 29,58 a 51,06 y baja la resolución de 1,96% a 1,22% (Claude 2).

SWE-agent, arXiv 2405.15793 ↗ · SWE-bench, arXiv 2310.06770 ↗

Relacionados: Filtered payload between roles · Check on edit, not at the end

Antes del LLM

Role separation

Un llamado razona el cambio y otro escribe la edición.

Evidencia

Aider, benchmark de edición, el mismo modelo en los dos roles: Claude 3.5 Sonnet 77,4% → 80,5%, GPT-4o 71,4% → 75,2%. En el leaderboard polyglot (junio 2025) la separación no siempre gana: o3 (high) solo 81,3%, o3 (high) + GPT-4.1 como editor 78,2%, a menor costo.

Aider architect/editor ↗ · leaderboard polyglot de Aider

Relacionados: Filtered payload between roles · Dispatch separated from decision

Antes del LLM

Filtered payload between roles

Un sub-agente devuelve su resultado, no su transcripción.

Evidencia

Es el default de LangChain: “the sub-agent's final message is returned as the tool result.” Anthropic describe a sus sub-agentes de investigación como “intelligent filters” que condensan lo que llega al agente principal. Ninguna medición aísla el efecto.

Documentación de LangChain ↗ · Anthropic, multi-agent research system

Relacionados: Role separation · Reviewer without shared context · Bounded observation

Antes del LLM

Dispatch separated from decision

Quién trabaja después se decide con reglas (dueño, prioridad, dependencias), no con un llamado al modelo.

Evidencia

Ningún benchmark publicado compara el dispatch determinista de tareas acotadas contra el routing con LLM. Lo más cercano (arXiv 2606.28925) enruta prompts en lenguaje natural, que es otro problema. El argumento es de costo: un llamado de routing por paso no compra nada cuando el alcance ya se conoce.

Sin medición publicada

Relacionados: Role separation · Bounded spend · Progress ledger · One writer, many readers

Después del LLM

Deterministic gate before execution

El modelo propone un tool call; un chequeo de solo lectura sobre el llamado y el estado actual puede vetarlo antes de que la escritura se ejecute.

Evidencia

Cuatro gates previos a la ejecución en τ²-bench airline (gpt-4o-mini, pass^1): 29,6% → 42,0%, +12,4 puntos (74 → 105 de 250, P = 0,0012); una réplica con 15 semillas da +12,3. Apunta a lo que el paper llama silent policy violations: la herramienta acepta un llamado bien formado y ni ella ni el reporte del agente muestran que algo salió mal.

Reason Less, Verify More ↗ · workshop de KDD 2026 (KDD-ETAAI)

Relacionados: Check on edit, not at the end · One writer, many readers

Después del LLM

Check on edit, not at the end

Cada edición se valida al escribirse, no cuando el agente cree que terminó.

Evidencia

SWE-agent, tabla 3: editor con linting 18,0% contra 15,0% sin él. Con el chequeo activo, el 51,7% de las trayectorias tiene al menos una edición fallida, y después de la primera la probabilidad de terminar bien baja de 90,5% a 57,2% (§5.2, SWE-bench completo, GPT-4 Turbo).

SWE-agent, arXiv 2405.15793 ↗

Relacionados: Deterministic gate before execution · Reproduction test before the fix · Bounded observation

Después del LLM

Reproduction test before the fix

Un test que reproduce el bug decide qué arreglo se queda.

Evidencia

Agentless (SWE-bench Lite, GPT-4o), eligiendo entre parches candidatos: voto de mayoría 25,67% → con tests de regresión 27,00% → con test de reproducción 32,00%. En Google, dándole el test de reproducción al agente de reparación como entrada: 74% contra 57% de arreglos plausibles (17 contra 13 de 23 bugs).

Agentless, arXiv 2407.01489 ↗ · Google, arXiv 2502.01821 ↗

Relacionados: Check on edit, not at the end · Reviewer without shared context

Después del LLM

Reviewer without shared context

La salida se revisa en una sesión nueva que nunca vio cómo se produjo.

Evidencia

Cross-Context Review (30 artefactos, 150 errores inyectados): la revisión en sesión nueva llega a F1 28,6% contra 21,7% de una segunda revisión en la misma sesión (p ajustado por Holm = 0,004). No supera de forma significativa a una revisión con sub-agente que conoce el contexto (23,8%) ni a una sola revisión en la misma sesión (27,1%). Un solo autor.

Cross-Context Review, arXiv 2603.12123 ↗

Relacionados: Filtered payload between roles · Reproduction test before the fix

Entre turnos

Progress ledger

Un registro de si el equipo avanza, con un contador de estancamiento que dispara un replan.

Evidencia

Magentic-One (§4.1): en cada iteración el orquestador responde cinco preguntas (¿terminó?, ¿está en loop?, ¿avanza?, ¿quién sigue?, ¿qué instrucción?) y lleva un contador de estancamiento; sobre 2, replanifica. La pregunta abierta es qué alimenta el contador: el juicio del modelo, como en el paper, o señales deterministas. No está medido por separado.

Magentic-One, arXiv 2411.04468 ↗

Relacionados: First-class human interruption · Dispatch separated from decision · Bounded spend