llama.cpp Reprocesamiento Masivo de Prompts con Agentes de Codificación: Depuración de Caché KV e Intercambio de Contexto

Un desarrollador en r/LocalLLaMA se encuentra con un grave problema de rendimiento con llama.cpp al ejecutar agentes de codificación de contexto largo (opencode + pi.dev) a través de llama-swap. Incluso con prompts muy similares (similitud LCP a menudo >0,99), el sistema descarta periódicamente la caché KV y reprocesa más de 40k tokens, lo que provoca un TTFT de varios minutos.
Comportamiento observado
- El contexto crece hasta 50k+ tokens.
- Después de varios reúsos normales (por ejemplo,
prompt eval time = 473 ms / 19 tokens),n_pastcae repentinamente a ~4-5k. - llama.cpp entonces reprocesa el prompt completo:
n_tokens = 4750 prompt eval time = 222411 ms / 44016 tokens. - El uso de caché alcanza 4676 MiB, superando el límite configurado (2500 MiB).
Configuración actual
llama-server --ctx-size 150000 --parallel 1 --ctx-checkpoints 32 --cache-ram 2500 --cache-reuse 256 -no-kvu --no-context-shiftCausas sospechadas
- Invalidación de caché por desbordamiento del límite
--cache-ram– el registro muestra 4676 MiB usados frente al límite de 2500 MiB. - Mecanismo de reúso de KV defectuoso cuando los tokens iniciales del prompt cambian (posiblemente alteraciones frecuentes por opencode).
--ctx-checkpointso--cache-reuseinsuficientes para el tamaño de contexto de 150k.
Recomendaciones de la comunidad
El hilo tiene pocas respuestas hasta ahora, pero los primeros pasos obvios incluyen aumentar --cache-ram para igualar el uso típico (por ejemplo, 5000+ MiB), o reducir --ctx-size para mantenerse por debajo del límite de caché. También verificar si opencode está mutando intencionalmente los prefijos de prompt; de ser así, bloquear el prompt del sistema o usar un prefijo fijo podría mejorar el reúso.
Para desarrolladores que ejecuten configuraciones similares, compartan sus configuraciones funcionales en el hilo de origen.
📖 Leer la fuente completa: r/LocalLLaMA
👀 Ver también

100K Líneas de Rust con IA: Contratos, Desarrollo Guiado por Especificaciones y Rendimiento
Cheng Huang construyó un motor multi-Paxos en Rust con agentes de IA, logrando 300K operaciones/seg. Técnicas clave: contratos de código escritos por IA, desarrollo ligero guiado por especificaciones y optimización agresiva.
Los Resúmenes Innecesarios de Claude: Una Solución de Usuario que Funciona el 70% de las Veces
Usuarios se quejan de que Claude añade un resumen redundante tras una respuesta perfecta. Un truco de prompt — 'sin resumen, sin recapitulación, para cuando termines' — funciona aproximadamente el 70% de las veces.

La negación como instrucción es débil: en su lugar, describe explícitamente el comportamiento deseado
Un análisis de Reddit muestra que decirle a Claude "no seas extenso" o "no moralices" apenas funciona. En su lugar, usa instrucciones positivas como "responde en 1-2 oraciones" o "dame una respuesta directa, trata las advertencias como opcionales". Además, terminar con "¡gracias!" suaviza el tono.

La auditoría de tokens de Claude Code revela costos ocultos por la carga predeterminada de herramientas.
Un desarrollador analizó 926 sesiones de Claude Code y encontró 45,000 tokens cargados al inicio de cada sesión, con 20,000 tokens provenientes de definiciones de esquemas de herramientas del sistema. Habilitar la configuración ENABLE_TOOL_SEARCH redujo el contexto inicial de 45k a 20k tokens, ahorrando 14,000 tokens por turno.