Voy a ser directo: toda la conversación sobre IA y código ahora mismo gira alrededor de los modelos. GPT-5.4 vs. Claude Opus 4.6. Gemini 3 vs. lo que haya salido esta semana. ¿Cuál modelo escribe mejor código? ¿Cuál entiende tu codebase más rápido? ¿Cuál alucina menos?
Can Bölük acaba de demostrar que esa es la pregunta equivocada.
Bölük — un desarrollador con background en seguridad de videojuegos — mantiene oh-my-pi, un agente de código open-source forkeado del Pi de Mario Zechner. Tiene más de 1.300 commits encima, la mayoría mejorando la maquinaria entre el modelo y tus archivos. La parte de la que nadie habla: el harness.
Su tesis es simple y respaldada por datos: la mayoría de las fallas de los agentes de código no son fallas del modelo. Son fallas del harness. El modelo sabe qué cambiar. Simplemente no puede expresar el cambio de manera confiable a través de la herramienta de edición que le dieron.
Construyó una técnica llamada Hashline para probarlo. Después la benchmarkeó contra 16 modelos, 180 tareas y 3 corridas cada una. Los resultados deberían cambiar la forma en que pensás sobre las herramientas de código con IA.
El Problema de la Herramienta de Edición del que Nadie Habla
Todo agente de código necesita modificar archivos. Suena trivial. No lo es. Los tres enfoques dominantes tienen problemas fundamentales:
OpenAI Codex usa apply_patch — un formato de diff propio. El modelo genera algo que parece un diff, y el harness lo aplica. ¿El problema? Este formato está esencialmente entrenado dentro de los modelos de Codex. Dale ese formato a cualquier otro modelo y las fallas de patch explotan. Bölük midió una tasa de falla de 50.7% para Grok 4 y 46.2% para GLM-4.7. No son malos modelos — simplemente no hablan el formato.
Claude Code usa str_replace — encontrar texto exacto, reemplazarlo por texto nuevo. Conceptualmente simple, pero el modelo tiene que reproducir cada carácter perfectamente: espacios, indentación, comillas. ¿Múltiples coincidencias en el archivo? Rechazado. El error “String to replace not found in file” es tan común que tiene su propio megathread en GitHub Issues con más de 27 issues relacionados.
Cursor entrenó una red neuronal separada de 70B cuyo único trabajo es tomar un borrador de edición y mergearlo correctamente en el archivo. El problema del harness es tan difícil que una de las empresas de IA mejor financiadas decidió tirarle otro modelo encima.
Los benchmarks propios de Aider mostraron que la elección de formato sola hizo que GPT-4 Turbo pasara de 26% a 59% de tasa de éxito. El paper Diff-XYZ de JetBrains lo confirmó sistemáticamente: ningún formato de edición domina en todos los modelos. El hilo conductor es que todos estos enfoques fuerzan al modelo a reproducir contenido que ya vio. Cuando no puede — y muchas veces no puede — le echamos la culpa al modelo.
Hashline: Referenciar Líneas por Hash, No por Texto
La idea de Bölük es elegante. Cuando el modelo lee un archivo, cada línea viene etiquetada con un hash de contenido de 2 caracteres:
1:a3|function hello() {
2:f1| return "world";
3:0e|}
Cuando el modelo edita, referencia esas etiquetas: “reemplazar línea 2:f1”, “reemplazar rango 1:a3 hasta 3:0e”, “insertar después de 3:0e.” El modelo nunca necesita reproducir el contenido anterior. Sin reproducción de espacios en blanco, sin “string not found”, sin coincidencias ambiguas.
Y tiene un mecanismo de seguridad incorporado: si el archivo cambió desde la última lectura, los hashes no van a coincidir y la edición se rechaza antes de que se corrompa nada. El modelo recibe un error claro que le dice que relea el archivo, no una falla críptica.
La implementación técnica usa xxHash32 mapeado a un alfabeto de 16 caracteres, produciendo anclas cortas y memorables. Son aproximadamente 200 líneas de código core.
Los Números que Deberían Cambiar la Conversación
El benchmark: 180 tareas generadas a partir de archivos reales del codebase de React, con mutaciones mecánicas (intercambios de operadores, flips de booleanos, errores off-by-one, guard clauses eliminadas). 3 corridas por tarea, sesión de agente fresca cada vez, cuatro herramientas (read, edit, write). Tres formatos de edición testeados: apply_patch, str_replace y hashline.
Los resultados principales:
Grok Code Fast 1: 6.7% → 68.3%. Una mejora de diez veces. La capacidad real de codificación del modelo estaba casi completamente oculta detrás de fallas mecánicas de edición.
Gemini 3 Flash: +5 puntos porcentuales sobre str_replace — superando el mejor intento de Google en resolver este problema.
Grok 4 Fast: 61% de reducción en tokens de output. El modelo dejó de quemar contexto en loops de reintentos por ediciones fallidas.
MiniMax: Más que duplicó su tasa de éxito.
El patrón es consistente: hashline iguala o supera a str_replace para casi todos los modelos testeados, y los modelos más débiles son los que más ganan. Los modelos que peor se veían en el papel no eran malos programando. Eran malos reproduciendo texto exacto para herramientas de edición que lo exigían.
La conclusión de Bölük vale la pena internalizarla: “+8% de mejora en la tasa de éxito de Gemini es más grande que lo que entregan la mayoría de las actualizaciones de modelos, y costó cero compute de entrenamiento.” Solo una interfaz de edición diferente y ~$300 en costos de benchmarking.
El Ángulo del Vendor Lock-In
Acá es donde la historia se pone filosa. Mientras Bölük corría estos benchmarks, pasaron dos cosas:
Anthropic bloqueó a OpenCode — un agente de código open-source muy popular — para que no pudiera acceder a Claude a través de suscripciones de Claude Code. Su posición: “OpenCode hizo ingeniería inversa de una API privada.” Técnicamente justo. Pero la señal que manda es clara: no construyas harnesses alternativos. Usá el nuestro.
Google baneó la cuenta de Gemini de Bölük por completo. No lo rate-limitearon. No le avisaron. Deshabilitada. Por correr un benchmark — el mismo que mostró que su propio modelo mejoraba 5 puntos porcentuales con su técnica.
El argumento de Bölük contra esta postura es convincente: ningún vendor va a optimizar su harness para los modelos de la competencia. Anthropic no va a tunear para Grok. xAI no va a tunear para Gemini. OpenAI no va a tunear para Claude. Pero un harness open-source tunea para todos, porque los contribuidores usan diferentes modelos y arreglan las fallas que encuentran personalmente.
El modelo es el foso. El harness es el puente. Quemar puentes significa que menos gente se molesta en cruzar.
Qué Significa Esto para los Desarrolladores
Si estás usando cualquier agente de código con IA — Claude Code, Codex, Cursor, Windsurf, o una alternativa open-source — tenés que entender que un porcentaje significativo de las fallas que le atribuís a “el modelo es tonto” son en realidad la herramienta de edición fallando silenciosamente.
Tres conclusiones:
El formato de edición importa tanto como el modelo. Aider lo probó, JetBrains lo confirmó, y Bölük lo cuantificó. Cuando ves a tu agente luchando con ediciones, el cuello de botella puede no ser la inteligencia — puede ser la interfaz entre la inteligencia y tus archivos.
Los harnesses open-source son donde está la innovación. Los vendors tienen incentivos fuertes para mantenerte en su harness. La comunidad tiene incentivos fuertes para que todos los modelos funcionen mejor. oh-my-pi, OpenCode, Aider — estos proyectos están mejorando todo el ecosistema, no solo un modelo.
“¿Cuál modelo es el mejor?” es cada vez más la pregunta equivocada. La mejor pregunta es: ¿cuál sistema — modelo más harness más herramientas — produce los mejores resultados para tu trabajo específico? Can Bölük mejoró 15 modelos simultáneamente cambiando una sola variable. Esa variable no era el modelo.
Le estamos echando la culpa al piloto por el tren de aterrizaje. Es hora de mirar el harness.
Links:
- Blog post: I Improved 15 LLMs at Coding in One Afternoon. Only the Harness Changed. | Can.ac
- oh-my-pi: GitHub - can1357/oh-my-pi: ⌥ AI Coding agent for the terminal — hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more · GitHub
- Discusión en Hacker News (620+ puntos): Improving 15 LLMs at Coding in One Afternoon. Only the Harness Changed | Hacker News
