YouMind
Iniciar sesión

Ingeniería de Harness: Cómo construir agentes de IA que realmente funcionan

@0xjmori
INGLÉS27 sept 2026
328K
196
24
17
638

TL;DR

Este artículo introduce la 'Ingeniería de Harness', argumentando que la confiabilidad de los agentes de IA depende del sistema circundante (contratos, herramientas, estado, verificación) y no solo del modelo o el prompt. Ofrece una guía completa para construir infraestructuras robustas de agentes.

La mayoría de la gente intenta arreglar los agentes de IA en la capa equivocada.

Cuando un agente falla, reescriben el prompt. Cuando vuelve a fallar, agregan más instrucciones, cambian de modelo, amplían la ventana de contexto o conectan otra herramienta.

Y entonces regresan los mismos problemas.

El agente olvida una decisión importante. Usa la herramienta incorrecta. Pierde el hilo de lo que pasó tres pasos atrás. Dice que la tarea terminó sin verificar el resultado. Reintenta la misma acción fallida hasta que se acaba el presupuesto.

El problema no siempre es el modelo.

El problema es el entorno que lo rodea.

Ese entorno es el harness.

La Ingeniería de Harness (Harness Engineering) es la práctica de construir el sistema alrededor de un modelo que decide qué puede ver, qué puede hacer, qué recuerda, qué cuenta como éxito y qué pasa cuando algo falla.

Un mejor prompt puede mejorar una sola respuesta.

Un mejor harness mejora cada ejecución.

Sigue mi Substack para más análisis prácticos sobre agentes de IA, automatización y sistemas en producción:

substack.com/@lunarresearcher

1. El modelo no es el agente

Un modelo puede razonar, generar, comparar y elegir.

Eso no lo convierte en un agente confiable.

Un agente real también necesita encontrar el contexto adecuado, usar herramientas, conservar el estado, respetar permisos, verificar su propio trabajo y recuperarse cuando el entorno se comporta de forma distinta a la esperada.

El modelo es solo el motor de razonamiento.

El harness es todo aquello que transforma ese razonamiento en ejecución real.

text
1SOLICITUD DEL USUARIO
2 |
3 v
4+-----------------------------+
5| HARNESS |
6| |
7| contrato contexto |
8| herramientas estado |
9| política verificación |
10| trazas recuperación |
11+-----------------------------+
12 |
13 v
14 MODELO
15 |
16 v
17ENTORNO REAL

Pon el mismo modelo dentro de un chat y responderá preguntas.

Mori - inline image

Ponlo dentro de un repositorio con acceso a terminal, pruebas, herramientas de navegador, memoria del proyecto, permisos controlados y un ciclo de revisión, y podrá completar trabajo real.

El modelo no cambió.

El harness sí.

2. Convierte cada solicitud en un contrato

El lenguaje natural es flexible.

La ejecución autónoma no debería serlo.

Una solicitud como:

Mejora el flujo de onboarding.

está bien cuando hay un humano sentado junto al modelo.

Es pésima como instrucción para producción.

Antes de que el agente actúe, convierte la solicitud en un contrato de tarea con límites claros.

Mori - inline image
yaml
1objetivo: reducir el abandono en el onboarding
2
3entradas:
4 - resumen del producto
5 - datos de analítica
6 - repositorio
7
8restricciones:
9 - conservar la autenticación
10 - no cambiar el esquema de la base de datos
11 - mantener el comportamiento actual en móviles
12
13entregable:
14 - pull request revisable
15
16criterios_de_finalizacion:
17 - las pruebas pasan
18 - el evento de analítica se dispara correctamente
19 - el flujo de escritorio pasa la revisión
20 - el flujo móvil pasa la revisión
21
22aprobacion_requerida:
23 - despliegue a producción

Lo importante son los criterios_de_finalizacion.

Sin ellos, el agente puede resolver una versión ligeramente más fácil del problema y aun así afirmar con total seguridad que la tarea está completa.

Con ellos, la finalización se vuelve medible.

El agente no debería preguntar:

¿Qué hago ahora?

Debería preguntar:

¿Qué acción acerca el entorno actual al resultado pactado en el contrato?

Ese es un ciclo mucho más sólido.

3. Dale al agente un mapa, no una ventana de contexto gigante

Una reacción común ante los errores de un agente es darle más contexto al modelo.

Más documentación.

Más historial de conversación.

Más archivos.

Más resultados de herramientas.

Al final, el agente recibe todo y entiende menos.

El contexto no es almacenamiento.

Es un presupuesto de atención.

Mori - inline image

En lugar de volcar todo el proyecto en cada ejecución, dale al agente un mapa pequeño de dónde está la información útil.

text
1MAPA DEL PROYECTO
2
3reglas del producto -> docs/product/
4arquitectura -> docs/architecture.md
5frontend -> apps/web/
6backend -> services/api/
7pruebas -> tests/
8comandos -> docs/commands.md
9seguridad -> docs/security.md

Luego expándelo solo cuando sea necesario.

text
1TAREA
2 |
3 v
4MAPA DEL PROYECTO
5 |
6 v
7SISTEMA RELEVANTE
8 |
9 v
10ARCHIVOS EXACTOS
11 |
12 v
13INSTRUCCIONES LOCALES

El material original describe esto como divulgación progresiva: el harness debe cargar más información porque la tarea lo necesita, no simplemente porque la información existe.

El objetivo no es tener el máximo contexto.

El objetivo es tener la máxima señal útil.

4. Pon una puerta de enlace entre el modelo y sus herramientas

Un modelo con veinte herramientas no es automáticamente veinte veces más capaz.

Quizás solo tenga veinte formas más de fallar.

Cada herramienta debería tener un contrato.

text
1HERRAMIENTA: edit_file
2
3ENTRADAS
4ruta
5patch
6
7PRECONDICIONES
8la ruta existe
9la ruta está dentro del espacio de trabajo
10
11ÉXITO
12patch aplicado
13diff devuelto
14
15FALLO
16error estructurado
17sin sobrescritura parcial
18
19RIESGO
20reversible

Entonces la ruta de ejecución se convierte en:

text
1EL MODELO PROPONE
2 |
3 v
4LA PUERTA DE ENLACE VALIDA
5 |
6 v
7LA POLÍTICA AUTORIZA
8 |
9 v
10LA HERRAMIENTA EJECUTA
11 |
12 v
13EL HARNESS REGISTRA EL RESULTADO

El modelo decide qué acción quiere tomar.

El harness decide si esa acción es válida, permitida y segura.

Mori - inline image

Esa distinción se vuelve crítica cuando las herramientas pueden enviar mensajes, modificar producción, gastar dinero o borrar datos.

Una buena puerta de enlace de herramientas también puede agregar tiempos de espera, validar argumentos, restringir rutas de archivos, normalizar errores y hacer que los reintentos sean seguros.

Las buenas herramientas reducen la cantidad de cosas que el modelo tiene que adivinar.

5. Saca la memoria de la conversación

La conversación no debería ser el registro oficial del sistema.

Los agentes que corren por mucho tiempo terminan chocando con los límites de contexto, fallando, reiniciándose o pasando el trabajo a otra sesión.

Si cada decisión importante existe solo dentro de la transcripción, el flujo de trabajo es frágil.

Guarda el estado persistente por separado.

Mori - inline image
json
1{
2 "id_tarea": "feature_042",
3 "estado": "verificando",
4 "paso_actual": "revision_movil",
5
6 "completado": [
7 "implementacion",
8 "pruebas_unitarias",
9 "revision_escritorio"
10 ],
11
12 "decisiones": [
13 "reutilizar el endpoint de exportacion existente",
14 "mantener el formato de fecha actual"
15 ],
16
17 "artefactos": [
18 "export.csv",
19 "desktop-after.png"
20 ],
21
22 "riesgos_abiertos": [
23 "la barra de herramientas movil podria desbordarse"
24 ],
25
26 "siguiente_accion": "renderizar viewport movil"
27}

Un sistema útil separa la memoria en cuatro categorías:

text
1HECHOS
2conocimiento estable
3
4DECISIONES
5qué se eligió y por qué
6
7ESTADO
8en qué punto va la ejecución actual
9
10LECCIONES
11fallos que deberían afectar ejecuciones futuras

La siguiente sesión del agente debería heredar el estado del trabajo, no un resumen comprimido de la conversación anterior.

6. Haz que la evidencia sea la puerta hacia la finalización

Que un agente diga "listo" no prueba que el trabajo esté terminado.

Mori - inline image

Es solo otra salida del modelo.

El harness necesita evidencia observable.

text
1AFIRMACIÓN EVIDENCIA
2
3"el bug está arreglado" la prueba que fallaba ahora pasa
4
5"la página funciona" el flujo en el navegador se completó
6
7"los datos son correctos" los valores coinciden con la fuente
8
9"la migración es segura" simulación + rollback exitosos
10
11"la tarea está completa" todas las verificaciones de aceptación pasan

Usa primero las comprobaciones deterministas.

text
1sintaxis
2 |
3 v
4tipos
5 |
6 v
7pruebas específicas
8 |
9 v
10pruebas de integración
11 |
12 v
13revisión visual / semántica
14 |
15 v
16aprobación humana

No le pidas a otro modelo que responda algo que un compilador, una prueba, un esquema o una consulta a la base de datos puede demostrar.

Usa los modelos para emitir juicios.

Usa los sistemas deterministas para los hechos.

El modelo crea el artefacto.

El entorno genera evidencia sobre el artefacto.

El harness decide si la evidencia es suficiente.

7. Separa al constructor del verificador

Hay otro problema con la autorrevisión.

El agente que cometió el error suele llevar las mismas suposiciones a la revisión.

Mori - inline image

Una arquitectura más sólida separa al trabajador del verificador.

text
1CONSTRUCTOR
2 |
3 v
4crea un candidato
5 |
6 v
7VERIFICADOR
8 |
9 +-- comprueba el contrato
10 +-- busca casos faltantes
11 +-- pone a prueba afirmaciones sin respaldo
12 +-- intenta romper el resultado
13 |
14 +------ ÉXITO ------> ACEPTAR
15 |
16 +------ FALLO ------> DEVOLVER EVIDENCIA

El verificador no debería preguntar:

¿Esto se ve bien?

Debería preguntar:

¿Qué haría que esto fuera inaceptable?

Eso transforma la revisión: deja de ser una confirmación y pasa a ser un intento de refutación.

El material original recomienda explícitamente darle a la verificación sus propios criterios de rechazo y la independencia suficiente para cuestionar las suposiciones que generaron el primer resultado.

8. Saca los permisos del modelo

Algunas reglas nunca deberían depender de que el modelo las recuerde.

text
1nunca publicar sin aprobación
2nunca exponer secretos
3nunca exceder el límite de gasto
4nunca escribir fuera del espacio de trabajo
5nunca afirmar que las pruebas pasaron si no se ejecutaron

Estas no son sugerencias para el prompt.

Mori - inline image

Son políticas.

Una escala simple de permisos:

text
1BAJO RIESGO
2
3leer
4buscar
5inspeccionar
6
7-> automático
8
9REVERSIBLE
10
11editar el espacio de trabajo
12ejecutar pruebas
13crear borradores
14
15-> automático + traza
16
17EFECTO EXTERNO
18
19enviar
20desplegar
21comprar
22
23-> requiere aprobación
24
25IRREVERSIBLE / SENSIBLE
26
27borrar datos
28rotar credenciales
29publicar globalmente
30
31-> bloqueo estricto o prohibido

Cuanto mayor sea la consecuencia, más fuerte debe ser el control.

El modelo puede recomendar la acción.

El harness la autoriza.

La herramienta la ejecuta.

La autonomía no es la ausencia de control.

Es libertad dentro de un límite impuesto.

9. Deja de reintentar a ciegas

Una de las peores políticas de recuperación es:

Algo falló. Inténtalo de nuevo.

Si nada cambia, el sistema simplemente está pagando por reproducir el mismo fallo.

Primero hay que clasificar los fallos.

Mori - inline image
text
1TIEMPO DE ESPERA AGOTADO EN LA HERRAMIENTA
2-> reintentar con backoff
3
4ARGUMENTOS INVÁLIDOS
5-> reparar la llamada a la herramienta
6
7CONTEXTO FALTANTE
8-> recuperar la fuente faltante
9
10PRUEBA FALLIDA
11-> inspeccionar el comportamiento que falla
12
13PERMISO DENEGADO
14-> solicitar aprobación
15
16REQUISITOS CONTRADICTORIOS
17-> escalar
18
19FALLO REPETIDO SIN CAMBIOS
20-> detener

Un ciclo de agente útil se ve así:

text
1OBSERVAR
2 |
3 v
4DECIDIR
5 |
6 v
7ACTUAR
8 |
9 v
10MEDIR
11 |
12 +---- ACEPTAR
13 |
14 +---- REPARAR
15 |
16 +---- ESCALAR
17 |
18 +---- DETENER

Cada ciclo debería tener límites de intentos, tiempo, gasto y alcance destructivo.

Un agente confiable necesita saber cómo continuar.

También necesita saber cuándo otro intento ya no vale la pena.

10. Convierte las instrucciones repetidas en infraestructura

Supongamos que el prompt dice:

Ejecuta siempre el formateador.

Esa regla es más sólida si el formateador se ejecuta automáticamente.

Supongamos que las instrucciones dicen:

El código de UI no puede acceder directamente a la base de datos.

Eso es más sólido como una prueba de arquitectura que falla cuando se rompe la regla.

La progresión se ve así:

text
1EXPLICACIÓN
2 |
3 v
4LISTA DE VERIFICACIÓN
5 |
6 v
7PLANTILLA
8 |
9 v
10COMPROBACIÓN AUTOMATIZADA
11 |
12 v
13POLÍTICA IMPUESTA

El prompt debería explicar el criterio.

El harness debería imponer las invariantes.

Cada error recurrente debería avanzar un poco más en esta escalera.

Eventualmente, el modelo ya no necesitará recordar la lección.

El entorno la recordará por él.

11. Registra la ejecución

Un artefacto final perfecto puede ocultar una ruta de ejecución terrible.

Quizás el agente accedió a la fuente equivocada.

Quizás ignoró un comando fallido.

Quizás repitió una acción externa dos veces.

Quizás gastó diez veces el presupuesto esperado.

Quizás dio la respuesta correcta por la razón equivocada.

Registra suficiente información para reconstruir lo que pasó.

text
109:14 contrato de tarea creado
209:15 architecture.md cargado
309:17 checkout.ts editado
409:18 prueba específica falló
509:21 implementación reparada
609:22 prueba específica pasó
709:24 prueba de integración pasó
809:25 despliegue bloqueado: se requiere aprobación

Las trazas útiles incluyen fuentes de contexto, llamadas a herramientas, cambios de estado, resultados de verificación, motivos de reintento, decisiones de aprobación, costo y latencia.

La idea no es recolectar logs por diversión.

La idea es localizar el fallo.

Si el paso 18 se rompe, deberías poder reparar el paso 18.

No deberías tener que repetir toda la ejecución.

12. Dale un recibo a cada ejecución

No obligues al humano a revisar una transcripción de cuarenta mensajes.

Resume el resultado en un recibo breve.

text
1OBJETIVO
2
3Corregir la aplicación duplicada de cupones.
4
5MODIFICADO
6
7validación de checkout
8prueba de regresión
9
10VERIFICADO
11
12lint pasó
13pruebas unitarias pasaron
14prueba de integración pasó
15
16NO VERIFICADO
17
18proveedor de pagos de producción
19
20RIESGOS
21
22cliente móvil heredado no disponible
23
24APROBACIÓN NECESARIA
25
26desplegar a staging

Este no es un resumen de lo que el modelo afirma que pasó.

Es un resumen de lo que el harness puede probar que pasó.

Esa diferencia hace que el recibo sea útil para revisiones, entregas y futuras sesiones del agente.

13. Haz que cada fallo mejore el harness

La mayoría de los equipos corrige el resultado fallido.

El mejor enfoque es corregir el sistema que permitió el fallo.

text
1CONTEXTO FALTANTE
2-> mejorar el mapa del proyecto
3
4HERRAMIENTA INCORRECTA
5-> mejorar el enrutamiento o el contrato de la herramienta
6
7RESULTADO DEFICIENTE
8-> agregar un validador
9
10CICLO REPETITIVO
11-> agregar un límite de reintentos
12
13ACCIÓN INSEGURA
14-> agregar una puerta de enlace de permisos
15
16DECISIÓN PERDIDA
17-> persistir el estado
18
19FALLO DESCONOCIDO
20-> mejorar el trazado

Aquí es donde la ingeniería de harness empieza a generar un efecto compuesto.

Un resultado corregido ayuda a una ejecución.

Un harness corregido mejora todas las ejecuciones posteriores.

Los mejores sistemas de agentes se vuelven más confiables porque los errores dejan infraestructura detrás.

14. Empieza con el harness útil más pequeño

No necesitas una plataforma de orquestación enorme para empezar.

Construye por capas.

text
1NIVEL 0
2
3prompt
4modelo
5
6NIVEL 1
7
8contrato de tarea
9mapa del proyecto
10herramientas
11
12NIVEL 2
13
14estado estructurado
15verificación
16ciclo acotado
17
18NIVEL 3
19
20permisos
21trazas
22recuperación
23puertas de enlace humanas

Una tarea corta de investigación quizás solo necesite un prompt y una revisión.

Una tarea de programación de seis horas con acceso a archivos, acceso a red y capacidad de despliegue necesita mucho más.

Agrega complejidad cuando la superficie de fallo lo justifique.

No porque la arquitectura de agentes se vea genial.

La lista de verificación de la Ingeniería de Harness

Antes de darle autonomía real a un agente, pregúntate:

text
1[ ] ¿El éxito está definido antes de la ejecución?
2
3[ ] ¿Puede el agente encontrar el contexto correcto
4 sin cargar absolutamente todo?
5
6[ ] ¿Tiene cada herramienta un propósito claro,
7 un esquema y un estado de fallo?
8
9[ ] ¿Se almacenan las decisiones importantes
10 fuera de la conversación?
11
12[ ] ¿La finalización requiere evidencia?
13
14[ ] ¿Las acciones riesgosas están protegidas por políticas?
15
16[ ] ¿Tiene cada ciclo un límite de reintentos?
17
18[ ] ¿Puede reanudarse la ejecución tras una interrupción?
19
20[ ] ¿Puedes reconstruir cada acción importante?
21
22[ ] ¿El fallo mejora alguna regla, herramienta,
23 prueba, mapa o permiso?
24
25[ ] ¿Se puede revertir el cambio final?

Si varias respuestas son "no", un modelo más potente no hará que el agente sea confiable automáticamente.

Quizás solo haga que el fallo sea más rápido y más caro.

El verdadero cambio

La ingeniería de prompts pregunta:

¿Qué debo decirle al modelo?

La ingeniería de contexto pregunta:

¿Qué debería saber el modelo en este momento?

La ingeniería de harness pregunta:

¿Qué sistema le permite al modelo actuar, verificar su trabajo, recuperarse de los fallos y operar de forma segura?

text
1PROMPT
2-> instrucción
3
4CONTEXTO
5-> vista de trabajo
6
7HARNESS
8-> entorno operativo
9
10CICLO
11-> corrección local
12
13GRAFO
14-> coordinación

Los modelos seguirán cambiando.

La ventaja duradera vive a su alrededor.

Tus contratos mejoran.

Tus herramientas mejoran.

Tus pruebas mejoran.

Tu estado se vuelve más limpio.

Tus permisos se vuelven más seguros.

Tu lógica de recuperación se vuelve más inteligente.

Tus fallos se convierten en infraestructura.

Así es como los modelos capaces se transforman en agentes confiables.

Eso es la Ingeniería de Harness.

Si llegaste hasta aquí

Guarda esta guía en tus marcadores.

Sígueme en X: x.com/0xjmori

Suscríbete a mi Substack: substack.com/@lunarresearcher

Envíale este artículo a alguien que todavía intenta arreglar cada fallo de un agente con un prompt más largo.

Guardar con un clic

Lee artículos virales en profundidad con IA en YouMind

Guarda la fuente, haz preguntas concretas, resume el argumento y convierte un artículo viral en notas reutilizables en un único espacio de trabajo con IA.

Explora YouMind
Para creadores

Convierte tu Markdown en un artículo de 𝕏 impecable

Cuando publicas tus propios textos largos, dar formato en 𝕏 a imágenes, tablas y bloques de código es un fastidio. YouMind convierte un borrador completo en Markdown en un artículo de 𝕏 impecable y listo para publicar.

Prueba Markdown a 𝕏

Más patrones por descifrar

Artículos virales recientes

Explorar más artículos virales