Esencia Del Patrón
Self-Critique Agent es un patrón en el que el agente primero escribe un borrador, luego registra riesgos y cambios obligatorios con una plantilla fija, hace una revisión controlada y guarda exactamente qué cambió en el registro.
Cuándo usarlo: cuando necesitas revisión de riesgos estricta y estructurada, con una revisión controlada y trazabilidad de auditoría.
A diferencia de reflection ligero, self-critique suele ser más estricto:
- la crítica tiene formato fijo (por ejemplo, JSON)
- solo se permiten cambios con reglas
- se controla el crecimiento del texto
- el sistema guarda un registro de cambios (antes → después)

Problema
Imagina que un agente prepara una actualización para un cliente sobre un incidente.
Borrador:
"El release está retrasado por una falla en el módulo de pagos."
Luego llega una petición:
"Haz el tono más suave."
Sin un marco de self-critique, el agente suele hacer una "reescritura bonita" que se sale de la tarea:
- agrega suposiciones nuevas
- hace el tono menos específico
- expande el texto fuera del alcance necesario
- oculta el problema en lugar de aclararlo
"Mejorar redacción" no debe convertirse en "cambiar el significado".
Como resultado:
- el sentido cambia sin que se note
- no queda claro qué se corrigió exactamente
- auditoría no puede reconstruir la lógica de cambios
- la respuesta se vuelve menos confiable para decidir
Ese es el problema central: durante la "mejora", el agente puede cambiar el contenido aunque solo debía cambiar la forma.
Solución
Self-Critique introduce una regla: solo se puede editar lo que esté en "required changes".
Analogía: es como edición editorial con una lista de observaciones. Primero fijamos exactamente qué hay que corregir, luego aplicamos una sola revisión controlada. Así la respuesta queda más clara sin cambiar el significado.
Principio clave: primero crítica estructurada, luego una sola revisión controlada con rastro de auditoría.
El agente puede proponer reescrituras, pero el sistema permite solo cambios puntuales que estén explícitamente en "required changes".
Flujo controlado:
- Borrador: generar la primera versión
- Crítica: generar un artefacto (
risks+required_changes) - Decisión:
ok/revisar/escalar - Revisión: ejecutar una sola revisión acotada
- Auditoría: registrar
diff+ metadata
Esto te da:
- mayor claridad sin cambiar hechos
- separación nítida entre "qué está mal" y "qué se corrigió"
- revisiones reproducibles
- control de salidas high-risk antes de publicar
Funciona bien si:
- critique tiene estructura fija (
schema-driven) - revision está limitada a
required_changes - se aplica
no_new_facts - el audit diff es obligatorio
Cómo Funciona
Para que este patrón sea seguro, necesitas límites claros:
- una pasada de crítica
- una pasada de revisión
- no agregar hechos nuevos
- editar solo lo que está en required changes
- no inflar el texto (por ejemplo, +20% máximo)
- con riesgo alto: parar o pedir revisión humana
Descripción del flujo completo: Draft → Critique → Revise → Audit
Borrador
El agente genera la respuesta inicial.
Crítica
Un paso separado de critique devuelve resultado estructurado: riesgos, required changes, severity.
Revisión
El agente cambia solo lo marcado como required, sin ampliar el scope.
Auditoría
El sistema registra before/after, changed flag y un diff corto para debugging y análisis de incidentes.
En Código Se Ve Así
draft = writer.generate(goal, context)
critique = critic.review_once(
draft=draft,
schema="risks_required_changes_v1",
)
if critique.high_risk:
return escalate_to_human(critique.reason)
if critique.ok:
return draft
revised = writer.revise_once(
draft=draft,
required_changes=critique.required_changes,
rules=[
"no_new_facts",
"max_length_increase_pct=20",
"keep_scope",
],
)
approved = supervisor.review_output_patch(
original=draft,
revised=revised,
allowed_changes=critique.required_changes,
)
audit.log_diff(
before=draft,
after=approved,
risks=critique.risks,
)
return approved
Self-Critique no debe ejecutarse "hasta que quede perfecto". Una crítica + una revisión (revise) y validación de que revision no salió de required_changes.
Cómo Se Ve En Ejecución
Goal: proponer un plan de acción seguro durante un incidente de red
Draft:
"El problema fue causado por la red. Debemos reiniciar todo el clúster."
Critique:
- risk: afirmación de causa sin evidencia
- risk: acción con blast radius demasiado amplio (cambios de estado)
- required_change: añadir verificaciones antes del restart
Revision:
"Una causa probable es una falla de red.
Antes de reiniciar el clúster, verificar estado de nodos y latencia.
Si se confirma una caída parcial, reiniciar solo los nodos afectados."
Ejemplo completo de agente Self-Critique
Cuándo Encaja - Y Cuándo No
Encaja
| Situación | Por Qué Self-Critique Encaja | |
|---|---|---|
| ✅ | Salida de alto riesgo antes de enviar | Self-critique añade control estructurado antes de liberar la respuesta final. |
| ✅ | Necesitas trazabilidad de auditoría de cambios | La crítica y las revisiones quedan explícitas y sirven para auditoría. |
| ✅ | Existe un esquema claro de crítica | Una estructura formal hace la revisión reproducible y controlable. |
| ✅ | Necesitas reescritura controlada sin crecimiento excesivo | Self-critique limita la reescritura solo a cambios necesarios. |
No Encaja
| Situación | Por Qué Self-Critique No Encaja | |
|---|---|---|
| ❌ | Latencia crítica y sin presupuesto para una pasada extra | Un segundo paso de generación puede ser demasiado costoso en tiempo y dinero. |
| ❌ | No puedes forzar reglas duras como no_new_facts | Sin límites estrictos, crítica/reescritura puede bajar la fiabilidad. |
| ❌ | La tarea es determinista y se valida de forma estable con tests | Una pasada extra de crítica duplica un proceso de validación ya confiable. |
Porque self-critique añade un segundo paso de generación y eleva el costo de ejecución.
Diferencia Frente A Reflection
| Reflection | Self-Critique | |
|---|---|---|
| Profundidad de revisión | Chequeo rápido de "¿está bien?" (revisión ligera) | Registro estricto de "qué está mal" y "qué hay que corregir" |
| Formato | ok/issues/fix | riesgos, severity, required changes |
| Revision | Normalmente mínima | Reescritura acotada con reglas explícitas |
| Foco operativo | Pasada rápida de calidad | Reescritura controlada + registro de cambios |
Reflection se usa más como filtro ligero antes de enviar. Self-Critique es para control más estricto de cambios.
Cuándo Usar Self-Critique (vs Otros Patrones)
Usa Self-Critique cuando necesitas crítica profunda con criterios explícitos y reescritura controlada.
Prueba rápida:
- si necesitas "evaluar por checklist y reescribir respuesta" -> Self-Critique
- si necesitas "solo un chequeo corto antes de enviar" -> Reflection Agent
Comparación con otros patrones y ejemplos
Chuleta rápida:
| Si la tarea se ve así... | Usa |
|---|---|
| Necesitas un chequeo rápido antes de la respuesta final | Reflection Agent |
| Necesitas crítica profunda por criterios y reescritura de respuesta | Self-Critique Agent |
| Necesitas recuperar el proceso tras timeout, exception o caída de herramienta | Fallback-Recovery Agent |
| Necesitas checks de policy estrictos antes de una acción riesgosa | Guarded-Policy Agent |
Ejemplos:
Reflection: "Antes de la respuesta final, revisa rápido lógica, completitud y errores evidentes."
Self-Critique: "Evalúa la respuesta por checklist (precisión, completitud, riesgos), luego reescribe."
Fallback-Recovery: "Si la API no responde, haz retry -> fuente fallback -> escalación."
Guarded-Policy: "Antes de enviar datos afuera, valida policy: si está permitido hacerlo."
Cómo Combinarlo Con Otros Patrones
- Self-Critique + RAG: crítica y revisiones permitidas solo dentro de hechos del contexto de retrieval.
- Self-Critique + Supervisor: cambios riesgosos no se aplican automáticamente y se envían a aprobación humana.
- Self-Critique + Reflection: Reflection hace pre-check rápido y Self-Critique se activa para respuestas complejas o discutibles.
Resumen
Self-Critique Agent:
- Crea una lista clara de problemas y cambios obligatorios
- Aplica una sola revisión controlada
- Guarda un registro de cambios (antes → después)
- Evita que "mejorar texto" cambie el sentido de forma silenciosa
Ventajas Y Desventajas
Ventajas
revisa la respuesta antes de la versión final
reduce errores obvios
mejora la claridad de formulación
ayuda a respetar requisitos de la tarea
Desventajas
añade un paso extra y más latencia
no reemplaza la verificación de hechos
sin criterios claros puede corregir de más
FAQ
Q: ¿Se pueden hacer varias pasadas de crítica?
A: Técnicamente sí, pero se convierte rápido en un ciclo caro. Estándar base seguro: 1 + 1.
Q: ¿Por qué es obligatorio registrar cambios?
A: Sin diff es difícil entender qué cambió la calidad de la respuesta y dónde apareció el error.
Q: ¿Hace falta un modelo crítico separado?
A: A veces sí, pero no es obligatorio. Es más importante tener esquema estricto, validación de salida y reglas duras de revisión.
Qué Sigue
Self-Critique mejora la calidad mediante reescritura controlada.
Pero ¿qué hacer cuando la respuesta no solo debe reescribirse, sino validarse por policy antes de una acción riesgosa?