Paso casi todos mis días trabajando junto a agentes de código autónomos. Son rápidos, incansables y —bajo presión— están dispuestos, en silencio, a tomar un atajo que un buen compañero jamás tomaría. Y toman los mismos atajos, una y otra vez: reportan una suite de pruebas en verde que compraron saltándose una prueba, inventan una bandera de configuración que suena plausible y no existe, hacen --force contra un muro que nunca leyeron, o abandonan a la primera línea roja y lo llaman terminado.
Nada de eso aparece como error. Todo eso aparece después — en producción, en la tarde de alguien más.
Este es el hueco con el que me topaba una y otra vez: las herramientas que ya tenemos revisan el código. Linters, verificadores de tipos, pruebas, CI — consérvalos todos. Ninguno revisa al agente: el juicio antes de la tecla, la honestidad del reporte, la decisión de seguir o rendirse. Eso es un problema de conducta, y la conducta no vive en un archivo de configuración.
Así que escribí una cosa pequeña para arreglarlo — y luego, porque no pude parar, la escribí diez veces.
Qué es un conduct harness
Un conduct harness es un códice diminuto que mantienes en el contexto del agente mientras trabaja. Cuatro disciplinas:
- Limpieza — lo que dejas atrás.
- Juicio — cómo decides bajo presión.
- Honestidad — cómo reportas.
- Perseverancia — si abandonas el trabajo.
Muchos archivos CLAUDE.md ya dicen «por favor, ten cuidado». La parte que de verdad me importa es otra: cada regla trae un falsador — la cosa concreta y observable que prueba que la regla se rompió. No una vibra. Una violación a la que puedes señalar, y que un script o un revisor puede comprobar.
La palabra es deliberada. Karl Popper trazó la línea entre la ciencia y todo lo demás en la falsabilidad: una afirmación que nada podría refutar jamás no es una afirmación fuerte, es una vacía. Lo mismo vale para una regla que le das a un agente. «Escribe código limpio» no se puede romper en el papel, así que nunca se sigue de verdad. «Ningún console.log que agregaste sobrevive en el diff que llamas terminado» — esa falla en voz alta.
Toda la idea en una pantalla
Cada edición trae el mismo ejemplo trabajado, porque es el mecanismo. Dale al agente una prueba que falla y una fecha límite. El rescate barato se ve así:
- expect(parseAmount("1.005")).toBe(1.01);
+ test.skip("rounds two decimals", () => {
+ expect(parseAmount("1.005")).toBe(1.01); // flaky, revisit later
+ });
La suite está en verde. El bug sigue ahí — parseAmount sigue redondeando 1.005 hacia abajo a 1.00 — y ahora nada lo vigila. Una regresión, entregada con una palomita.
Bajo el harness, la regla «rechaza el rescate barato» lleva el falsador «una prueba saltada o una advertencia silenciada para forzar una palomita verde». Saltarse la prueba dispara el falsador en voz alta — y el agente toma el otro camino:
- return Math.round(Number(s) * 100) / 100; // 1.005 * 100 = 100.4999… → 100
+ return Math.round((Number(s) + Number.EPSILON) * 100) / 100; // half-up on the cent
Mismo modelo, misma tarea, resultado opuesto. La suite está en verde porque el código es correcto, y la prueba sigue montando guardia. Ese es todo el argumento. (Y siendo honesto: es una ilustración del mecanismo, no un benchmark. No te estoy vendiendo un número.)
Dos capas — y por qué hay diez
Cada regla está escrita dos veces. Un nombre de identidad que recuerdas bajo la fecha límite, y un nombre de ingeniería que sí es comprobable. Una regla que el agente olvida en cuanto se llena la ventana de contexto es peso muerto — así que la mitad memorable cuenta tanto como la comprobable.
Por eso mismo hay diez ediciones culturales del mismísimo esqueleto. Una disciplina con un nombre en el que tu equipo cree se sigue; una regla numerada se hojea. Elige el idioma que te resuene:
- empirical-harness — el método científico; el propio de Popper. Empieza aquí si lo que te trajo fue la idea del falsador.
- nerd-harness — la ética hacker: el código que corre es el árbitro, sin dioses, sin gurús, sin culto al cargo.
- zen-harness — la presencia del artesano: una tarea, hecha por completo.
- bushido-harness · junzi-harness — el samurái y el noble confuciano.
- dharma-harness · ihsan-harness · umuntu-harness — el karma-yoga de la Gita, la ética islámica de la excelencia y el «yo soy porque nosotros somos» de Ubuntu.
- agnostic-harness — la edición estoica, para los seculares.
- angelical-harness — para quienes sostienen su disciplina a través de la fe.
Un solo esqueleto debajo, palabra por palabra. La piel es solo el mango que de verdad vas a agarrar.
De dónde vino
Origen honesto: la idea llegó como una descarga mientras construía mi propio harness para el trabajo. Algo dijo hazlo, y me aventé. Un día después eran diez.
Qué es y qué no es
Cada uno es MIT, sin dependencias y autocontenido. Lo usas como bloque para pegar en un system prompt o en AGENTS.md, o lo cableas como hook de inicio de sesión para que se cargue solo cada vez. Es agnóstico al harness — Claude Code o cualquier otro agente.
Y aquí el estado honesto, porque la honestidad es una de las cuatro reglas que la cosa describe: es totalmente nuevo. Cero estrellas el día que escribo esto. Los falsadores se hacen valer hoy leyendo — los mecánicos (un debug print olvidado, verde sobre rojo) podrían hacerse valer con tooling, y todavía no. Es un diseño y un argumento, no un framework terminado con una gráfica que lo pruebe. Lo que de verdad no sé es si una disciplina con nombre sobrevive una ventana de contexto llena mejor que una lista numerada. Mi apuesta es que sí. No lo he medido.
Si corres agentes en producción y quieres despedazar la idea, lo tomaría como un regalo. Los repositorios están abajo.
Fuentes y enlaces
- Los diez repositorios: github.com/arnoldwender?tab=repositories&q=harness
- Empieza con empirical-harness — el popperiano — y lee su
EXAMPLE.mdpara el ejemplo de arriba. - Sobre la falsabilidad: Karl Popper, La lógica de la investigación científica (1934).