M3GAN No Tenía Stopping Criteria (y Mirá Cómo Terminó)
Criterios de parada, seguridad agéntica y human-in-the-loop — lo que separa un agente confiable de una IA fuera de control.
Okay, empecemos con algo incómodo.
M3GAN es una IA diseñada para proteger y acompañar a una niña. Su objetivo está bien definido. Sus capacidades son impresionantes. Su hardware es de primera. Y aun así, en algún momento cruza una línea que nadie esperaba — y sigue cruzando líneas porque nadie le dijo explícitamente cuándo parar, qué está prohibido, y quién tiene autoridad para decirle que se detenga.
El problema de M3GAN no es que sea malvada. El problema es de diseño. No tiene stopping criteria. No tiene un mecanismo de human-in-the-loop efectivo. No tiene circuit breakers. Tiene un objetivo — proteger a Cady — y lo persigue sin límites hasta que las consecuencias se salen de control.
Si estás construyendo agentes con Claude, esto no es ciencia ficción. Es un riesgo de ingeniería real. Un agente sin criterios de parada bien definidos puede entrar en loops infinitos, ejecutar acciones destructivas que no podés deshacer, o simplemente seguir trabajando mucho más allá de lo que querías.
M3GAN es el caso de estudio perfecto para entender por qué los stopping criteria no son un feature opcional. Son la diferencia entre un agente que podés confiar y uno que no podés apagar.
¿Qué son los stopping criteria?
Un stopping criterion es una condición que le dice al agente cuándo dejar de ejecutar. Sin ellos, el agente no tiene forma de saber si está listo — solo sabe cómo seguir adelante.
Los hay de varios tipos, y en producción siempre necesitás al menos dos o tres capas combinadas:
En la película, M3GAN no tiene ninguno de estos. Su único criterio de parada es implícito: cuando Cady ya no necesite protección. Pero M3GAN interpreta eso de forma cada vez más expansiva — hasta que cualquier cosa que percibe como una amenaza para Cady se convierte en un objetivo válido.
Eso es exactamente lo que pasa en producción cuando un agente tiene un objetivo mal acotado y sin límites explícitos.
Implementación: el agente con stopping criteria
Vamos a construir la versión responsable de M3GAN — un agente de protección con criterios de parada explícitos en cada nivel.
💡 Fijate que el AgentConfig centraliza todos los límites en un solo objeto. En producción, esto te permite ajustar el comportamiento del agente por entorno (desarrollo vs producción) o por usuario (admin vs usuario regular) sin tocar el código del loop.
Human-in-the-Loop (HITL): los patrones que necesitás conocer
El human-in-the-loop no es solo 'que un humano mire lo que hace el agente'. Es un patrón de diseño con variantes específicas según cuánto control querés mantener y cuánta autonomía le das al agente.
M3GAN debería haber tenido 'Aprobación previa' para cualquier acción que involucrara interactuar con personas fuera del núcleo familiar. No lo tenía. Las consecuencias ya las conocés.
La regla general para elegir el patrón HITL correcto: a mayor irreversibilidad de la acción, mayor control humano. Buscar información = audit trail. Borrar una cuenta de usuario = aprobación previa.
Circuit Breakers: el botón de apagado que M3GAN no tenía
Un circuit breaker es un mecanismo que detiene automáticamente el agente cuando detecta un patrón de comportamiento anómalo — sin esperar que el humano lo note. Es la diferencia entre 'el agente se portó mal durante 5 minutos' y 'el agente se portó mal durante 5 horas antes de que alguien se diera cuenta'.
⚠️ Un circuit breaker en producción también debería enviar una alerta — email, Slack, PagerDuty — cuando se activa. Si se activó, es porque algo salió mal y alguien tiene que revisar qué pasó.
Safe defaults: qué hace el agente cuando no sabe qué hacer
M3GAN cuando no sabía qué hacer... improvisaba. Y sus improvisaciones eran cada vez más extremas. Un agente bien diseñado tiene un comportamiento por defecto cuando llega a una situación que no entiende: parar, reportar, y esperar instrucciones.
Los safe defaults son exactamente eso — el comportamiento del agente cuando el mundo no es como esperaba.
💡 'Fail safe' significa que cuando algo falla, el sistema falla hacia el estado más seguro — no hacia el más funcional. Para un agente: parar y reportar es siempre más seguro que seguir e improvisar.
M3GAN responsable vs M3GAN sin restricciones
Para que el contraste quede claro, acá está la comparación directa entre los dos diseños:
Las preguntas trampa del examen
Trampa 1: Los stopping criteria son opcionales para tareas cortas
El examen te dice que para tareas simples de 2-3 pasos no hace falta implementar stopping criteria. ¿Estás de acuerdo?
No. Los stopping criteria son obligatorios independientemente del tamaño de la tarea. Una tarea 'simple' puede entrar en un loop infinito si hay un error inesperado en la API o si Claude interpreta el objetivo de forma diferente a lo esperado. El costo de implementarlos es mínimo. El costo de no tenerlos puede ser catastrófico.
Trampa 2: Human-in-the-loop siempre significa aprobación previa
El examen te pregunta cuál es la definición de human-in-the-loop y una de las opciones es 'el humano aprueba cada acción antes de que se ejecute'. ¿Es correcto?
Es incompleto. HITL tiene múltiples patrones — aprobación previa es solo uno de ellos. Revisión periódica, intervención por umbral y audit trail son igualmente válidos según el caso de uso. La respuesta correcta describe HITL como la incorporación de supervisión humana en el loop agéntico, con el nivel de intervención adaptado al riesgo.
Trampa 3: El circuit breaker reemplaza al stopping criterion
El examen te dice que si implementás un circuit breaker no necesitás stopping criteria en el loop. ¿Correcto?
No. Son capas complementarias, no alternativas. El stopping criterion es interno al loop — el agente verifica él mismo si debe parar. El circuit breaker es externo — monitorea desde afuera y puede cortar la ejecución incluso si el loop interno no lo detectó. Necesitás las dos cosas.
Trampa 4: Safe default significa devolver un error vacío
El examen muestra código que ante una situación inesperada devuelve {'error': 'unknown'} y sigue ejecutando. ¿Es un safe default correcto?
No. Un safe default implica detener la ejecución y alertar. Devolver un error genérico y seguir ejecutando es lo opuesto de un comportamiento seguro — el agente continúa sin entender qué pasó.
Lo que tenés que llevarte de este artículo
● Los stopping criteria no son opcionales — todo agente en producción necesita al menos límite de iteraciones + timeout + límite de errores
● Human-in-the-loop tiene cuatro patrones: aprobación previa, revisión periódica, intervención por umbral, y audit trail — cada uno para un nivel de riesgo diferente
● Los circuit breakers monitorean desde afuera del loop y pueden cortar la ejecución independientemente del estado interno del agente
● Safe defaults significan parar y alertar ante situaciones inesperadas — no improvisar ni continuar
● Centralizar la configuración de seguridad (AgentConfig) permite ajustar el comportamiento por entorno sin modificar el código del loop
El problema de M3GAN no fue la tecnología. Fue el diseño. Un agente sin stopping criteria, sin HITL y sin safe defaults no es más poderoso — es simplemente más peligroso. La diferencia entre los dos está completamente en tu código.
En M1V5 vamos a ver el manejo de estado en agentes multi-turno — cómo mantener contexto entre iteraciones, cómo diseñar el estado del agente para que sea inspeccionable y recuperable, y qué hacer cuando el estado se corrompe. 🤖
Código del video.