Saltar al contenido

REGISTRADO 2026-11-06 · REV A

¿Qué modelo local debería ejecutar un agente de código? Ronda 2: llama.cpp 0.9

Un mes después de la primera ronda: el mismo harness vuelve a medir la flota sobre llama.cpp 0.9.0 y Strata 0.1.57, esperando que el ranking sobreviviera. No sobrevivió — y los recibos cazaron el motivo.

La flota, entonces y ahora

modelthinktoolscodeagentspeedglobalwas
minicpm-v-4.7-35b-a3b q4_k_mon100%84% (10 excl.)92%23ms0.870.85
qwen36-35b-distill-mxfp4_moeoff100%71%93%16ms0.870.84
minicpm-v-4.7-35b-a3b q4_k_moff100%80% (2 excl.)90%21ms0.860.85
qwen3.8-27b-ud-q3_k_xloff100%81%94%36ms0.830.82
ornith-1.5-35b-a3b-apex-mtp-qualityoff100%74%91%26ms0.820.82
qwen3.8-27b-heretic-q4_k_mon100%97% (7 excl.)97%1053ms0.840.80
qwen3.8-27b-ud-q3_k_xlon100%90% (3 excl.)96%686ms0.810.80
ornith-1.5-35b-a3b-apex-mtp-qualityon94%87% (1 excl.)96%412ms0.790.77
strata-iq3_xxs (strata engine 0.1.57)on94%87% (4 excl.)94%398ms0.780.70
gemma-4-26b-a4b-it-ud-q5_k_xlon94%79%89%690ms0.750.74
qwen36-35b-distill-mxfp4_moeon94%74% (4 excl.)89%244ms0.730.72
gemma-4-26b-a4b-it-ud-q5_k_xloff89%83%89%32ms0.800.80
strata-iq3_xxs (strata engine 0.1.57)off89%83%90%36ms0.800.80
qwen3.8-27b-heretic-q4_k_moff100%81%93%66ms0.800.81

Las filas ON corrieron con caps de generación 1024/8192 y las OFF con los defaults de la flota 128/512; la distancia entre esos dos es el primer hallazgo. Pasada de una sola tirada, semilla 42: cada número aquí es una medición donde las de octubre eran la media de tres, y las columnas ± vuelven con la pasada de 3 semillas. La fila turbofcfusion-neo-coder queda como registro — su quant ya no está en disco.

El error que merece tu tiempo: los caps

Lo primero que volví a medir se colapsó. Las puntuaciones de agente cayeron al 58% y 64% donde octubre decía 96% y 97%, con los modelos respondiendo vacío en el primer turno. Los recibos dijeron por qué: la cadena de thinking quemó todo el presupuesto de turno de 512 tokens antes de ninguna tool call, y el episodio siguió con un agujero dentro. La flota de octubre corrió las filas ON a 1024/8192; esta pasada las corrió primero con los defaults del harness, 128/512.

Nada en los modelos se había degradado; las condiciones del harness sí. Devuelta a correr con los caps justos, el colapso se invirtió — UD-Q3 de vuelta al 96% de agente, Heretic al 97% — y ON pasó de ser un impuesto a ser una victoria en casi todas partes. Si mides modelos agénticos, llévate esto: un modelo thinking medido con caps de respuesta directa mide el harness, no el modelo. El modo de fallo (respuestas vacías, un turno, sin error) se parece exactamente a una regresión del modelo a menos que los recibos lo registren. Los míos lo hicieron; por eso existe este párrafo.

Lo que se movió con el motor

Cuatro cosas destacaron.

El thinking dejó de ser solo una herramienta de código difícil

En octubre, ON compraba calidad solo en el nivel difícil. Esta vez ON mejoró a seis de siete modelos. Heretic-on publica el mejor código y agente de la flota, 97% en ambos, y MiniCPM-on empata la cima de la tabla en 0.87 manteniendo sus turnos de 23ms — sigue siendo el único modelo cuyo thinking es gratis.

Strata se llevó la mayor ganancia

De 0.70 a 0.78 con el motor 0.1.57 y los caps justos; tools pasó de 78 a 94% y agente de 77 a 94%. Su fila OFF se quedó en 0.80, así que el trabajo del motor aterrizó específicamente en modo thinking.

OFF se quedó en su sitio, salvo tools

llama.cpp 0.9 mantuvo cada global de OFF dentro de ±0.03 de octubre, y la mayoría de las filas se movieron menos que la dispersión entre tiradas. El movimiento estuvo en el tool calling: qwen36 pasó de 94 a 100% con turnos a 16ms, mientras Heretic cambia cinco puntos de código por un turno 19ms más rápido.

La cima ahora es un empate entre modos

Los empates de octubre eran entre filas OFF. Esta vez MiniCPM-on 0.87 iguala a qwen36-off 0.87, así que la elección es por uso: qwen36-off para turnos de 16ms, MiniCPM-on para 84% de código con recibos.

¿Cuánto contexto quema un modelo para pasar?

La pregunta que dejó un lector en la primera ronda: el bucle de agente reenvía toda la conversación en cada turno, así que dos modelos con el mismo porcentaje de acierto pueden costar muy diferente en tokens enviados. Hasta ahora el harness contaba lo que el modelo emitía (out_tokens) y no lo que leía. Esta ronda cada fila lleva recibos de contexto — in_tokens por llamada para tools y código, tokens por sesión de agente sumados sobre los turnos del episodio, media y mediana sobre las 72 sesiones de la flota.

modelthinktools in/callcode in/callagent session avgagent session median
qwen36-35b-distill-mxfp4_moeoff305 / 294187 / 1154,8393,789
minicpm-v-4.7-35b-a3b q4_k_moff305 / 294187 / 1154,5023,643
qwen3.8-27b-ud-q3_k_xloff305 / 294187 / 1155,1503,913
ornith-1.5-35b-a3b-apex-mtp-qualityoff305 / 294187 / 1155,1554,120
qwen3.8-27b-heretic-q4_k_moff305 / 294187 / 1155,4043,817
gemma-4-26b-a4b-it-ud-q5_k_xloff104 / 86190 / 1164,4123,048
strata-iq3_xxs (strata engine 0.1.57)off289 / 281187 / 1154,6633,512
qwen36-35b-distill-mxfp4_moeon303 / 292185 / 1136,0864,200
minicpm-v-4.7-35b-a3b q4_k_mon303 / 292185 / 1136,1864,465
qwen3.8-27b-ud-q3_k_xlon341 / 330223 / 1519,0576,130
ornith-1.5-35b-a3b-apex-mtp-qualityon303 / 292185 / 11310,7586,353
strata-iq3_xxs (strata engine 0.1.57)on326 / 317223 / 15110,1016,058
qwen3.8-27b-heretic-q4_k_mon341 / 330223 / 1518,5004,710
gemma-4-26b-a4b-it-ud-q5_k_xlon102 / 84188 / 11411,0607,740

Tres cosas que dicen los recibos.

La quemadura por llamada es plana

Cerca de 290-340 tokens de entrada por tool call y 185-220 por llamada de código en todas partes, porque esos prompts son las mismas tareas. Toda la varianza vive en el bucle de agente, donde la conversación crece.

El thinking también es un impuesto de contexto

Mismo modelo, mismas tareas, ON contra OFF: +26% de tokens de sesión en qwen36, +57% en Heretic, +76% en UD-Q3, +117% en Strata, +151% en gemma. La tabla de latencias ya mostró un coste del thinking; los recibos muestran el segundo.

La calidad por token quemado es su propio ranking

qwen36-off entrega el empate en la cima, 0.87, con 4.8K de tokens por sesión, y MiniCPM-on el mismo 0.87 con 6.2K — el pensador barato. En el otro extremo, gemma-on quema el máximo de contexto de la flota (11.1K de media, 7.7K mediana) para 0.75, y Strata-on paga 10.1K por 0.78. El trabajo del motor compró sus puntos caros.

Lo que te diría que hicieras

Igual que la última vez, con una enmienda. Mide en tu propio hardware, lee las exclusiones, trata las filas cercanas como empates, y cuando una puntuación se mueva, revisa los caps antes de creerle al modelo. Una actualización de motor no cambia lo que un modelo sabe; cambia cómo cuenta la fontanería. La flota sigue sin tener un único ganador: tools y turnos baratos son de qwen36-off, código y agente ahora son de Heretic-on, la calidad agnóstica de velocidad es de MiniCPM, y el despacho de formato largo es de Strata, que acaba de cerrar casi todo el hueco que su primera ronda dejó abierto.

Marcador e informe en vivo: jordimarsal.github.io/ggufbench. Código, tareas y recibos: github.com/jordimarsal/ggufbench. La primera ronda, para contexto: qué modelo local debería ejecutar un agente de código.