Inicio / Documentación / Gestión del contexto

Gestión del contexto

Por qué el coste de las sesiones largas aumenta de forma no lineal y qué patrones mantienen acotado el historial.

La API no mantiene estado. Cada turno reenvía toda la conversación, por lo que los tokens de entrada aumentan con el historial, y el coste aumenta con ellos en cada llamada posterior.

Cómo se plantea el problema

Una conversación de N turnos, cada uno de los cuales añade aproximadamente T tokens, consume en total del orden de N²T/2 tokens de entrada, en lugar de NT. Duplicar la duración de la sesión cuadruplica aproximadamente la factura de entrada. Por eso, un agente que parecía barato durante diez minutos resulta alarmante después de una hora.

Cuatro patrones que funcionan

PatrónCómoContrapartida
Ventana deslizanteConserva los últimos K turnos y descarta el restoPierde por completo el contexto inicial
Resumen acumulativoSustituye periódicamente los turnos antiguos por un resumen redactado por el modeloRequiere una llamada adicional; conserva lo esencial
Una sesión nueva por tareaEmpieza de cero cuando cambie el temaGratis y, por lo general, lo adecuado
ExternalizarMantén el estado en archivos o en una base de datos y carga solo lo que necesite el paso actualMás trabajo, mejor resultado

Resumir los turnos anteriores

def compact(history, keep=6):
    class="s">""class="s">"Replace everything but the last `keep` turns with one summary turn."class="s">""
    if len(history) <= keep:
        return history
    old, recent = history[:-keep], history[-keep:]
    summary = summarise(old)          class=class="s">"c"># one cheap Haiku call
    return [{class="s">"role": class="s">"user", class="s">"content": fclass="s">"Summary of earlier discussion: {summary}"}] + recent

Genera el resumen con un modelo económico. Es una tarea de compresión, no de razonamiento.

Los resultados de las herramientas suelen ser los culpables

En las herramientas con agentes, iniciar una nueva sesión entre tareas no relacionadas es la optimización más económica disponible. En Claude Code se hace con /clear.