¿Qué es un harness de IA? Cómo funcionan Claude Code, Codex y compañía (Parte 1)

Resumen rápido: un modelo de IA (Claude, GPT, Gemini…) por sí solo solo sabe escribir texto. El harness es todo lo que lo rodea para que, además de hablar, pueda hacer cosas: leer tus ficheros, ejecutar comandos, buscar en internet, acordarse de lo que estaba haciendo y no liarla parda. Claude Code, Codex o Gemini CLI son, en el fondo, harnesses. Vamos a verlo con calma.

Primero, la palabra: ¿qué narices es un «harness»?

En inglés, harness es el arnés o los arreos de un caballo: las correas, las riendas y todo lo que permite que la fuerza del animal sirva para tirar de un carro en la dirección que tú quieres. Sin arnés tienes un caballo muy potente corriendo por el campo. Con arnés, tienes transporte.

Con la IA pasa exactamente lo mismo. El modelo es el caballo: tiene una potencia brutal para razonar y escribir, pero va «suelto». El harness es el arnés que convierte esa potencia en trabajo útil.

La forma más corta de decirlo, y que repiten varios artículos del sector, es esta fórmula:

Agente = Modelo + Harness

La propia documentación de Claude Code lo explica así: el bucle de trabajo del agente lo mueven dos piezas, el modelo que razona y las herramientas que actúan, y Claude Code es la capa que rodea al modelo, le da esas herramientas y decide qué información ve en cada momento. A esa capa es a lo que llaman harness [1].

Otra analogía: el ordenador

Si lo del caballo te queda lejos, hay otra que a mí me gusta mucho porque viene del mundo informático [2]:

  • El modelo es el procesador (CPU): el que «piensa».
  • La ventana de contexto (lo que el modelo tiene delante en cada momento) es la memoria RAM: rápida pero limitada, y se borra.
  • El harness es el sistema operativo: gestiona ficheros, permisos, programas, memoria…
  • El agente es la aplicación que tú usas al final.

Un procesador sin sistema operativo es una piedra muy cara. Un modelo sin harness, algo parecido: te contesta, pero no puede tocar nada.

¿Qué hace un harness por dentro? El famoso «bucle»

Aquí está la gracia de todo. Un harness no le pregunta una vez al modelo y ya está. Funciona en bucle, y el bucle es casi idéntico en Claude Code, en Codex y en Gemini CLI. Contado en cristiano:

  1. Tú pides algo: «arréglame los tests que fallan».
  2. El harness monta el «paquete» para el modelo: tu petición + unas instrucciones de sistema + la lista de herramientas que tiene disponibles + lo que ya se ha hablado.
  3. El modelo responde. Pero en vez de contestarte a ti, muchas veces dice algo tipo: «quiero ejecutar npm test».
  4. El harness ejecuta eso de verdad (el modelo no puede, solo escribe texto), recoge el resultado («3 tests fallan») y se lo vuelve a pasar al modelo.
  5. Vuelta al paso 3. El modelo lee el error, pide abrir un fichero, luego pide editarlo, luego pide volver a lanzar los tests…
  6. Cuando el modelo ya no pide ninguna herramienta y simplemente responde con texto, el bucle termina y te enseña el resultado.

Es literalmente así como lo describen tanto Anthropic para Claude Code y su Agent SDK [3] como OpenAI para Codex [4]. Anthropic incluso pone un ejemplo de «arreglar los tests de auth.ts» que se resuelve en cuatro vueltas: ejecutar tests, leer ficheros, editar y volver a probar, y finalmente contestar [3].

Dicho de otra forma: el modelo es el que decide, el harness es el que hace. Anthropic usa una imagen muy clara para esto: separa el «cerebro» (el modelo y su harness) de las «manos» (los entornos y herramientas que ejecutan las acciones) [5].

Las piezas de un harness

Si abrimos el capó, casi todos los harnesses tienen las mismas piezas [2][6]:

Pieza Para qué sirve Ejemplo cotidiano
Bucle Pregunta al modelo, ejecuta lo que pide, le devuelve el resultado y repite El jefe de obra que va revisando y mandando la siguiente tarea
Herramientas Leer y escribir ficheros, ejecutar comandos, buscar en la web, conectarse a otros servicios La caja de herramientas del fontanero
Gestión del contexto Decidir qué información ve el modelo y resumir cuando se llena Tomar apuntes porque no te cabe todo en la cabeza
Memoria Guardar instrucciones y avances entre sesiones La libreta de la obra
Permisos y sandbox Limitar qué puede tocar el agente y pedir permiso para lo peligroso «Puedes pintar, pero no tirar tabiques sin preguntarme»

Ejemplo 1: Claude Code (Anthropic)

Claude Code es el agente de Anthropic que funciona en la terminal, en el escritorio, en el editor de código o en la web. Lo interesante es que, uses la interfaz que uses, el bucle y las herramientas son los mismos; solo cambia dónde se ejecuta el código y cómo lo ves tú [1].

Lo que aporta su harness, explicado sin jerga:

  • Herramientas de serie: trabajar con ficheros, buscar dentro del proyecto, ejecutar comandos, consultar la web y entender el código [1].
  • Un fichero de instrucciones, CLAUDE.md: ahí le escribes las normas de tu proyecto («usamos tal estilo», «los tests se lanzan así») y las lee cada vez que arranca [1].
  • Modos de permiso: desde «pregúntame antes de tocar nada» hasta un modo automático en el que un clasificador revisa por detrás las acciones y bloquea las arriesgadas. También hay un modo «plan» que solo investiga y propone, sin cambiar tus ficheros [1].
  • Puntos de guardado: antes de editar un fichero hace una copia, así que puedes deshacer. Ojo: eso no aplica a cosas externas como bases de datos o despliegues [1].
  • Compactación: cuando la conversación se hace enorme, primero quita resultados viejos de herramientas y luego resume, para que el modelo no se ahogue [1].
  • Extensiones: skills (recetas que se cargan solo cuando hacen falta), conexión con servicios externos mediante MCP, hooks (acciones automáticas antes o después de usar una herramienta) y subagentes, que trabajan con su propia «mesa limpia» y solo devuelven un resumen [1][3].

Y un detalle que me parece muy revelador: Anthropic ofrece ese mismo harness empaquetado como Agent SDK, para que cualquiera pueda meter el bucle de Claude Code dentro de su propia aplicación [3]. O sea, el harness es un producto en sí mismo.

Ejemplo 2: Codex (OpenAI)

Codex es la respuesta de OpenAI. Su versión de terminal, Codex CLI, es código abierto (licencia Apache 2.0) y está escrita principalmente en Rust [7]. Puede trabajar en tu máquina o mandar trabajo a la nube de Codex [8].

En enero de 2026, un ingeniero de OpenAI, Michael Bolin, publicó un artículo explicando su harness por dentro [4]. Lo que cuenta encaja como un guante con lo de arriba:

  • El harness es el bucle central y la lógica de ejecución que hay debajo de todas las versiones de Codex.
  • Antes de preguntar al modelo, monta el mensaje con varias capas: instrucciones sobre lo que el entorno le permite (qué ficheros puede tocar, si tiene red o no), configuración opcional del desarrollador, las instrucciones del proyecto sacadas de ficheros AGENTS.md y datos del entorno, como la carpeta de trabajo.
  • Su herramienta estrella es la terminal (ejecutar comandos), y se puede ampliar con búsqueda web y servidores MCP.
  • Cuando la conversación ocupa demasiado, hace compactación: sustituye todo lo anterior por una versión condensada para seguir trabajando.

Además, tiene su comando /permissions para decidir cuándo puede editar o ejecutar sin preguntarte y ver qué zona de tu disco tiene permitida [8].

Curiosidad: el AGENTS.md de Codex y el CLAUDE.md de Claude son la misma idea. De hecho, AGENTS.md se ha convertido en un formato abierto, mantenido ahora bajo la Linux Foundation, que entienden muchas herramientas (Codex, Cursor, Aider, GitHub Copilot, Jules…) [9], y Claude Code también puede leerlo [1].

Ejemplo 3: Gemini CLI (Google)

Para que no parezca cosa de dos, Google tiene Gemini CLI, también de código abierto bajo Apache 2.0 [10]. Google lo describe como un agente para la terminal que funciona con un bucle de «razonar y actuar» (lo que en el mundillo se llama ReAct), apoyándose en herramientas integradas y en servidores MCP locales o remotos [11].

¿Te suena? Es el mismo esquema: buscar en ficheros, usar la terminal, leer y escribir, buscar en la web… y un modo «yolo» para los valientes que quieren que haga cosas sin pedir permiso [11].

Y hay más: Cursor, OpenHands, Aider, opencode… Todos ellos son, en esencia, harnesses distintos alrededor de modelos parecidos [6].

Vale, pero ¿de verdad importa tanto el harness?

Muchísimo. Y esta es, para mí, la parte más sorprendente.

Hay una prueba muy usada para medir agentes, Terminal-Bench, que pone a los agentes a resolver tareas reales en una terminal. Cuando se compara el mismo modelo metido en harnesses diferentes, las notas cambian una barbaridad. Por ejemplo, un análisis publicado en abril (y actualizado este mes de octubre) recoge que Claude Opus 4.6 iba desde el 58 % con un harness hasta cerca del 82 % con otro, según los datos de la tabla de clasificación de Terminal-Bench 2.0 [12]. Otro artículo de septiembre muestra algo parecido con otro modelo, GLM-5.2: unos 13 puntos de diferencia entre el mejor y el peor harness [13] (eso sí, ese artículo lo firma la empresa de uno de los harnesses comparados, así que tómalo con su pizca de sal).

Moraleja: cuando leas «el modelo X es mejor que el modelo Y», pregunta siempre con qué harness se midió. A veces lo que gana no es el caballo, sino el arnés.

Los problemas que intenta resolver un harness

Para entender por qué hace falta tanto andamiaje, conviene saber de qué pie cojean los modelos [14][15]:

  • Tienen memoria de pez. Cada sesión nueva empieza de cero. Anthropic lo compara con un equipo de ingenieros que trabaja por turnos en el que cada uno llega sin tener ni idea de lo que hizo el anterior [14].
  • Se les llena la cabeza. Cuanto más contexto acumulan, más fácil es que se les olviden las instrucciones del principio [15].
  • Se inventan cosas, como herramientas que no existen o parámetros equivocados [15].
  • Quieren abarcar demasiado y dejan cosas a medias, o dan el trabajo por terminado antes de tiempo y sin probar bien [14].

Para un proyecto largo, Anthropic probó una solución muy de sentido común [14]: un primer agente que «prepara la obra» (un script de arranque, un fichero de progreso, una lista de tareas y el primer commit en git) y luego un agente que, en cada sesión, coge una sola tarea, la termina, la prueba de verdad y apunta en qué punto lo deja. Vamos, lo que haría cualquier buen equipo humano.

Hay incluso quien habla ya de «ingeniería de harness»: cada vez que el agente se equivoca, en lugar de volver a pedírselo mejor, cambias el entorno para que ese error no pueda repetirse [15].

Y un giro final: el harness también caduca

Esto me encantó. Anthropic reconoce que un harness lleva dentro suposiciones sobre lo que el modelo no sabe hacer solo. Y cuando sale un modelo mejor, esas suposiciones dejan de ser ciertas [5].

Su ejemplo: con Claude Sonnet 4.5 detectaron que el modelo se ponía «nervioso» cuando se le iba llenando el contexto, así que añadieron trucos al harness para reiniciarlo. Con Claude Opus 4.5 ese comportamiento desapareció y aquellos trucos se convirtieron en peso muerto [5]. Es decir: el arnés hay que ir ajustándolo al caballo.

En resumen

  • Un modelo solo escribe texto. Un harness lo convierte en un agente que actúa.
  • El corazón de cualquier harness es un bucle: el modelo pide, el harness ejecuta, le devuelve el resultado y vuelta a empezar.
  • Claude Code, Codex y Gemini CLI son harnesses con piezas muy parecidas: herramientas, ficheros de instrucciones (CLAUDE.md, AGENTS.md), permisos, compactación de contexto y extensiones como MCP.
  • El mismo modelo puede rendir mucho mejor o mucho peor según el harness.
  • Los harnesses evolucionan a la vez que los modelos.

¿Y en la Parte 2?

Esto es solo el principio. En próximas entregas quiero meterme más a fondo: cómo funcionan por dentro los subagentes, qué es eso de los hooks y las skills, cómo se gestionan los permisos y los entornos aislados, y quizá montar un harness mínimo desde cero para verlo funcionar con nuestros propios ojos. Si te interesa algún tema en concreto, ya sabes dónde encontrarme.


Referencias

  1. Anthropic. How Claude Code works (documentación oficial de Claude Code). https://code.claude.com/docs/en/how-claude-code-works
  2. Fiddler AI. What Is an Agent Harness and Why It Matters (mayo 2026, actualizado julio 2026). https://www.fiddler.ai/blog/what-is-an-agent-harness
  3. Anthropic. How the agent loop works (documentación del Claude Agent SDK). https://code.claude.com/docs/en/agent-sdk/agent-loop
  4. Michael Bolin (OpenAI). Unrolling the Codex agent loop (23 de enero de 2026). https://openai.com/index/unrolling-the-codex-agent-loop
  5. Anthropic Engineering. Managed Agents (8 de abril de 2026). https://www.anthropic.com/engineering/managed-agents
  6. Endor Labs. What is an agent harness? The software that turns a model into an agent (agosto 2026). https://www.endorlabs.com/learn/what-is-an-agent-harness-the-software-that-turns-a-model-into-an-agent
  7. OpenAI. Repositorio de Codex CLI en GitHub. https://github.com/openai/codex
  8. OpenAI. Documentación de Codex CLI. https://developers.openai.com/codex/cli
  9. AGENTS.md — formato abierto para guiar a agentes de código. https://agents.md
  10. Google. Repositorio de Gemini CLI en GitHub. https://github.com/google-gemini/gemini-cli
  11. Google. Gemini CLI (documentación de Gemini Code Assist). https://developers.google.com/gemini-code-assist/docs/gemini-cli
  12. Daniel Vaughan. Harness Performance on Terminal-Bench: Why Scaffolding Matters More Than Model Choice (abril 2026, actualizado octubre 2026). https://codex.danielvaughan.com/2026/04/09/harness-performance-terminal-bench/
  13. Kimchi. Same model, different harness (septiembre 2026). https://kimchi.dev/blog/same-model-different-harness-terminal-bench
  14. Anthropic Engineering. Effective harnesses for long-running agents (26 de noviembre de 2025). https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents
  15. Firecrawl. What is an agent harness? (abril 2026). https://www.firecrawl.dev/blog/what-is-an-agent-harness

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Follow by Email
Twitter
Scroll al inicio