
Hace tres años, «agente de código» significaba un plugin de autocompletado. Hoy significa un runtime que lee tu repositorio, planifica ediciones, ejecuta tests y abre un pull request, y las diferencias interesantes entre productos están en el runtime —el harness—, no en el modelo que resulta que llaman.
La categoría salió a la luz esta semana: Earendil publicó Pi 1.0 como un «harness de agente endurecido, minimalista y extensible»; DeepSeek publicó un harness construido sobre la idea de que todo es un plugin, y Offrun se posiciona como un único espacio para gestionar todos los agentes de código. Elegir entre ellos es una decisión de arquitectura, así que evalúa la arquitectura, no la demo.
01Qué hace realmente un harness de agente de código
El modelo no puede leer tus archivos ni ejecutar tus tests. El harness lo hace y le devuelve los resultados. En la práctica asume cuatro responsabilidades:
- Ensamblado de contexto: qué archivos, diffs, logs e instrucciones entran en el prompt, y qué se resume o se descarta cuando la ventana se llena.
- Ejecución de herramientas: los comandos de shell, ediciones de archivos, búsquedas y llamadas de red que el modelo puede pedir.
- Aplicación de permisos: cuáles de esas llamadas se ejecutan solas, cuáles necesitan aprobación y cuáles están prohibidas.
- Estado de sesión: qué sobrevive entre turnos, entre sesiones y entre máquinas.
Todo lo demás es empaquetado. Cuando dos harness se sienten radicalmente distintos sobre el mismo modelo, una de estas cuatro cosas es la causa.
02Las opciones actuales, comparadas con honestidad
| Harness | Forma | Evalúalo si | Pregunta antes de adoptarlo |
|---|---|---|---|
| Pi 1.0 | Minimalista, extensible, se endurece despacio y a propósito | Quieres una superficie pequeña que puedas extender tú | ¿Cuánto viene integrado y cuánto se espera de extensiones? |
| DeepSeek Harness | Plugin primero | Quieres componer capacidades dentro y fuera | ¿Cuál es el modelo de confianza de los plugins? |
| Offrun | Espacio multiagente | Manejas varios agentes y modelos | ¿Centralizarlos centraliza también el riesgo? |
| CLI de proveedor | Integrado con un proveedor de modelo | La velocidad de montaje supera la portabilidad | ¿Puede apuntar a un modelo ajeno o local? |
Los diseños centrados en plugins son los más interesantes y los más difíciles de evaluar, porque en cuanto un harness carga extensiones de terceros, esas extensiones heredan sus permisos. Un modelo de plugins es una decisión de cadena de suministro tanto como una función.
Un plugin se ejecuta con los permisos del harness
Una extensión que puede leer archivos, ejecutar comandos de shell o llamar a la red amplía el radio de impacto de cada error del modelo. Trata el registro de plugins como un árbol de dependencias, no como una tienda de temas.
03Decide con siete preguntas
- ¿Qué modelo puede ejecutar? Si la respuesta es un solo proveedor, estás eligiendo un modelo, no un harness. La portabilidad importa sobre todo a dos años.
- ¿Cómo gestiona el contexto? Pregunta cómo maneja un monorepo de 200.000 líneas: ¿indexa, recupera, resume o trunca a ciegas?
- ¿Cuál es el modelo de permisos? Prefiere reglas por herramienta, por ruta y por comando antes que un único interruptor de «permitir todo».
- ¿Se puede aislar en sandbox? Contenedores, montajes de solo lectura y reglas de salida de red convierten un incidente en una molestia.
- ¿Dónde vive el estado de sesión? Archivos locales, un servicio hospedado o tu propia base de datos: esto decide tu postura de datos.
- ¿Cómo revisas su trabajo? Un harness que produce diffs y registros revisables encaja en un equipo; uno que escribe directo en la rama, no.
- ¿Cuánto cuesta extenderlo? Cuenta los plugins que de verdad necesitarás antes de comprometerte con un diseño plugin-first.
04Autohospédalo sin entregar el repositorio
La forma del despliegue importa tanto como la lista de funciones. Una base defendible:
- Ejecuta el harness dentro de un contenedor con el repositorio montado en lectura-escritura y nada más montado.
- Deniega la salida de red por defecto y luego permite el endpoint del modelo y los registros de paquetes que uses.
- Mantén las credenciales fuera del contenedor; inyecta tokens de corta vida en el momento de la llamada si el agente los necesita.
- Exige aprobación para
git push, instalaciones de paquetes y cualquier cosa que borre archivos. - Captura la transcripción completa para que un revisor vea cada comando que se ejecutó, no solo el diff final.
# Forma de una política restrictiva de agente: rutas concretas, denegaciones primero.
permissions:
read: ["src/**", "tests/**", "docs/**"]
write: ["src/**", "tests/**"]
shell:
allow: ["pnpm test", "pnpm lint", "git diff", "git status"]
deny: ["git push", "rm -rf", "curl"]
network: ["api.example.internal"]
Las reglas de denegación van antes que las de permiso, porque un patrón como pnpm * se tragaría pnpm publish. Esta configuración es YAML o JSON corriente, así que formatea y valida como cualquier otro archivo de configuración de tu repositorio.
05Apúntalo a un modelo que controles
Los harness agnósticos de modelo se ganan su sitio aquí. Un harness que habla la API de chat compatible con OpenAI puede apuntar hoy a un modelo hospedado y mañana a una instancia de llama-server en localhost, sin cambiar el flujo del agente. Si ejecutas un endpoint local, recuerda que un modelo más pequeño necesita más andamiaje: contexto más ajustado, descripciones de herramientas más explícitas y un paso de revisión más estricto.
Lo contrario también se cumple. El modelo más grande del mundo no rescatará a un harness que vuelca todo el repositorio en cada prompt, porque en casi toda tarea real la calidad del contexto supera a la cantidad.
06Evalúa en una tarea real en una hora
Salta la demo del proveedor y da a cada candidato el mismo trabajo: un bug no trivial en tu propio repositorio con un test que lo reproduzca. Puntúa cuatro cosas.
| Señal | Qué buscar |
|---|---|
| Gestión del contexto | ¿Encontró los archivos correctos sin que se los indicaras? |
| Fricción de permisos | ¿Cuántas aprobaciones necesitó para trabajar de verdad? |
| Recuperación | Cuando falló un test, ¿leyó el error y se corrigió? |
| Revisabilidad | ¿Un compañero entendería el cambio a partir de la transcripción? |
El harness que gana suele ser el que da menos sorpresas, no el que terminó más rápido en una tarea preparada.
07Errores comunes y soluciones
| Error | Por qué duele | Solución |
|---|---|---|
| Elegir por demos de benchmark | Las demos usan repositorios preparados | Prueba con tu propio código |
| Modo de permisos «permitir todo» | Cualquier error del modelo se vuelve un incidente | Acota herramientas, rutas y comandos |
| Adoptar un harness con muchos plugins de inmediato | Las extensiones amplían la superficie de ataque | Empieza solo con lo integrado |
| Ejecutarlo en la máquina anfitriona | El agente alcanza todo lo que tú alcanzas | Usa un contenedor con montajes mínimos |
| No conservar la transcripción | No puedes auditar qué se ejecutó | Registra cada llamada y su salida |
El resumen honesto: el harness es ahora el producto. Elige aquel cuyo modelo de permisos, estrategia de contexto y superficie de extensión puedas tolerar, y verifícalo en tu peor repositorio en lugar de en la mejor demo del proveedor.
Preguntas frecuentes
¿Qué es un harness de agente de código?
Es el software alrededor de un modelo que le da un bucle, un conjunto de herramientas, un modelo de permisos y una forma de ver tu repositorio. El modelo propone acciones; el harness decide cuáles se ejecutan.
¿En qué se diferencia un harness de un agente de código?
Los términos se solapan. El agente es el modelo más su estrategia; el harness es el runtime que ejecuta llamadas a herramientas, gestiona el contexto y aplica límites.
¿Debería autohospedar o usar un CLI de proveedor?
Autohospeda cuando necesites controlar qué modelo ve tu código, cuánto duran las sesiones o dónde se guardan los datos. Usa un CLI de proveedor cuando la velocidad de puesta en marcha importe más que esas restricciones.
¿Cuál es el mayor riesgo de un harness de agente?
El alcance. Un harness con permisos amplios de sistema de archivos, shell y red puede convertir un error del modelo en un incidente real, así que el modelo de permisos es lo primero que hay que evaluar.
¿Qué modelo debería usar el harness?
El que cumpla tu nivel de calidad dentro de tu presupuesto de privacidad. Los harness agnósticos de modelo te permiten empezar con uno hospedado y pasar a un endpoint local sin cambiar el flujo.
Artículos relacionados
- Cómo ejecutar un LLM de pesos abiertos en local
Sirve el modelo al que apunta tu harness.
- Cómo verificar paquetes sugeridos por asistentes de IA
El harness instalará lo que el modelo sugiera.
Herramientas relacionadas
- Formateador JSON
Lee la configuración del harness y las herramientas en JSON.
- Validador JSON
Valida la configuración del agente antes de ejecutarla.
- Comparador de diferencias
Revisa los cambios del agente antes de confirmarlos.