pythonaiagentesbackendllm

Qué convierte a un modelo de IA en un agente: el harness, en 120 líneas

Uso agentes IA todos los días: Claude Code, mis propios scripts. Los entiendo a nivel de charla, pero no a nivel de tripas. No sabía qué hace un agente por dentro para pasar de “un modelo que escribe texto” a “algo que ejecuta acciones”.

Así que construí uno desde cero en Python, sin frameworks, para ver el mecanismo. La pieza clave tiene nombre: el harness.

Por si no lo conoces: el harness es el programa anfitrión que envuelve al modelo. El modelo decide, el harness ejecuta.

El modelo solo escribe texto

Esto es lo que más me ordenó la cabeza: el modelo no “corre” nada. Solo emite texto. Cuando un agente “busca algo” o “lee un archivo”, no es el modelo haciéndolo. El modelo escribe “quiero buscar esto” y otra cosa lo ejecuta de verdad. Esa otra cosa es el harness.

El harness es como las manos y los ojos del modelo. El modelo decide qué hacer, pero no puede tocar nada por sí mismo. El harness ejecuta cada acción, le trae de vuelta lo que pasó, y además arma el contexto, aplica los permisos y maneja los errores.

120 líneas, cero magia

El corazón del harness es este bucle:

for iteration in range(max_iterations):
    response = client.messages.create(
        model=model, system=system,
        tools=registry.schemas(), messages=messages,
    )
    messages.append({"role": "assistant", "content": response.content})

    if response.stop_reason != "tool_use":
        return final_text(response)          # el modelo terminó

    messages.append({"role": "user", "content": run_tools(response)})

Eso es todo. El modelo pide una herramienta, el harness la ejecuta, le devuelve el resultado y repite hasta que el modelo responde sin pedir más. Cuando lo corrí, el trace salió así:

[1] think: buscaré info sobre el patrón ReAct
[1] act:   search({'query': 'ReAct pattern problem'})
[2] act:   read({'url': 'https://.../react'})
[3] think: ya puedo responder...

Ese pensar, ejecutar y observar encadenándose solo, con código que escribí yo, enseña más que cualquier tutorial. El harness no es un concepto abstracto. Son unas 120 líneas que puedes leer de una sentada.

Por qué importa

El mismo modelo rinde distinto según el harness. El agente no es solo el modelo, es el modelo más lo que lo rodea: qué herramientas le das, cómo armas su contexto, qué permisos aplicas, cómo recuperas de un error. Ahí es donde un agente se vuelve confiable o se va por las ramas.

Y esto es solo la primera capa. Encima del harness hay dos más: el loop, que es el patrón de repetición que acabas de ver, y el graph, que modela flujos más complejos como nodos conectados. Pero eso es tema de otro post. La base, lo que convierte un modelo en un agente, es el harness.

Lo estoy construyendo por fases en un repo público, agent-anatomy. La gracia de armarlo desde cero antes de tocar un framework es que después el framework se entiende en minutos: ya viste el problema que resuelve.

Si un agente te parecía una caja negra mágica, no lo es. Es un modelo que decide y un harness que ejecuta, en un bucle.

Volver al blog