Claude Code: cómo evitar sesiones lentas y costosas
Cada turno reenvía todo el contexto y una sesión larga se ralentiza. Usa /context, elimina el coste fijo y aplica clear y compact con intención.
Cómo evitar que una sesión larga de Claude Code se vuelva lenta y costosa
Una sesión larga de Claude Code se vuelve lenta y costosa porque cada turno vuelve a enviar todo el contexto, y ese contexto no deja de crecer. La solución es aplicar una higiene estricta y en un orden fijo. Ejecute /context para ver qué está ocupando la ventana, elimine los elementos por los que paga en cada solicitud, use /clear entre tareas no relacionadas y /compact con una instrucción dentro de una misma tarea larga. Trabaje en sesiones continuas, porque una caché de prompts fría convierte una lectura barata en una reescritura completa de todo lo que ha dicho.
La razón por la que el contador sigue avanzando se explica en el contador de tokens de una sesión de agente.
Lee /context antes de cambiar nada
No adivines qué ocupa la ventana. Claude Code te lo indicará.
/context [all] muestra el uso actual del contexto como una cuadrícula de colores, con sugerencias de optimización para herramientas que consumen mucho contexto y para la acumulación excesiva de memoria; all amplía el desglose por elemento en modo de pantalla completa. Lee el resultado como cinco categorías.
- El prompt del sistema. Las instrucciones del propio arnés de Claude Code. Son fijas durante la sesión.
- Las definiciones de herramientas. El esquema de cada herramienta que el agente puede invocar, incluidos todos los servidores MCP (Model Context Protocol) conectados.
- Los archivos de memoria.
CLAUDE.mdy la memoria automática, cargados al inicio de la sesión. - Los archivos y los resultados de las herramientas. Cada archivo leído y todo lo que imprimen tus comandos.
- El historial de mensajes. Tus turnos y sus respuestas.
Las tres primeras suponen un coste fijo en cada solicitud durante toda la sesión. Las dos últimas crecen. Reduce el coste fijo una vez, al principio; gestiona continuamente la parte que crece.
Dos cadenas indican que la ventana está llena:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.La primera es un límite estricto y la solicitud se rechaza; el error correspondiente de la API (application programming interface) es Prompt is too long. La segunda es una ventana de compactación, que puede estar por debajo de la ventana de contexto real en un modelo de 1 million tokens. Las solicitudes siguen funcionando después de ese límite, por lo que es una advertencia y no un rechazo.
En un plan de pago, /usage añade la otra mitad. Señala comportamientos como un contexto largo o fallos de caché y atribuye el uso reciente a habilidades, subagentes y servidores MCP individuales. Si indica que la cuota ya se ha agotado, qué ventana de límite estás esperando determina si reducir el contexto te ayuda ahora o si necesitas otra vía para volver a trabajar.
CLAUDE.md es un coste permanente, así que debe mantenerse conciso
Tu CLAUDE.md se carga al iniciar la sesión y permanece en el contexto. Si contiene un procedimiento de despliegue detallado, esos tokens siguen presentes mientras corriges un error tipográfico en un archivo de pruebas. La recomendación de Anthropic es incluir sólo lo esencial y mantener el archivo por debajo de 200 líneas.
Mueve los procedimientos a las skills. Una skill sólo se carga cuando se invoca, así que un flujo de trabajo que ejecutas dos veces por semana no consume nada los demás días. Las skills tienen su propio presupuesto después de una compactación: sus cuerpos se vuelven a inyectar, con un límite de 5,000 tokens por skill y 25,000 en total; primero se descartan las más antiguas. El truncamiento conserva el inicio del archivo, así que coloca las instrucciones más importantes cerca del principio de SKILL.md.
Lo que sobrevive a una compactación determina dónde debe colocarse una instrucción.
- El prompt del sistema y el estilo de salida no cambian, porque no forman parte del historial de mensajes.
- El
CLAUDE.mdde la raíz del proyecto, las reglas sin ámbito y la memoria automática se vuelven a inyectar desde el disco. - Una regla con frontmatter
paths:se pierde hasta que se vuelva a leer un archivo coincidente. - Un
CLAUDE.mdanidado en un subdirectorio se pierde hasta que se vuelva a leer un archivo de ese subdirectorio. - Los hooks no se ven afectados, porque se ejecutan como código y nunca entran en el contexto.
Por tanto, una regla de la que dependas debe estar en el CLAUDE.md de la raíz del proyecto: Claude Code elimina primero las salidas antiguas de las herramientas y después resume, por lo que las instrucciones de las primeras partes de la conversación pueden perderse. Edita la memoria con /memory. Claude Code conserva la copia que cargó al iniciar la sesión, así que un recorte durante la sesión mantiene la caché del prompt y no se aplica hasta el siguiente /clear, /compact o reinicio. La pérdida de contexto es sólo una de las razones por las que una regla deja de seguirse. Si la regla sigue claramente en la ventana y aun así se ignora, analiza las demás causas antes de reescribirla.
/clear entre tareas, /compact dentro de una
Estos dos comandos parecen intercambiables, pero sus costes son muy diferentes.
/clear [name] inicia una conversación nueva con el contexto vacío. No envía ninguna solicitud, por lo que no cuesta nada. Pase un nombre para etiquetar la conversación anterior en el selector de /resume; /reset y /new son alias. Úselo en cuanto cambie a una tarea no relacionada, porque, de lo contrario, la tarea anterior se volvería a enviar y a facturar con cada mensaje de la nueva tarea.
/compact [instructions] libera contexto y continúa en la misma conversación: resume el historial hasta ese momento y lo sustituye. Úselo dentro de una tarea larga cuando todavía necesite continuidad.
Proporcione siempre una instrucción a /compact. Un /compact sin argumentos resume según un prompt predeterminado que no sabe qué parte del trabajo necesita conservar. Uno con instrucciones conserva lo siguiente:
/compact focus on the auth bug fix
/compact keep only the plan and the diffSi compacta por el mismo motivo cada vez, añada una instrucción permanente al CLAUDE.md de su proyecto, bajo un encabezado # Compact instructions. En una sesión nueva, /compact muestra Not enough messages to compact., lo que sólo significa que todavía no hay historial.
Aquí se confunden dos costes. La solicitud de resumen comparte su prefijo, por lo que lee la caché existente en lugar de volver a procesar el historial, y la mayor parte del tiempo se dedica a generar el resumen. Compactar un contexto grande sigue siendo una solicitud grande, porque la conversación que se resume es la entrada. El turno posterior a la compactación no es la parte lenta: reconstruye la caché para un prompt mucho más corto.
Existen dos comandos más baratos. /rewind [description] revierte el código y la conversación a un punto de control; para una ruta que quiere abandonar por completo, es mejor que compactar porque trunca hasta un prefijo que ya está en la caché. /recap añade un resumen como salida del comando en lugar de sustituir el historial, por lo que el prefijo almacenado en la caché permanece intacto.
Cuando la compactación automática se activa repetidamente, aparece lo siguiente:
Autocompact is thrashing: the context refilled to the limit...La compactación se completó correctamente, pero un archivo o la salida de una herramienta volvió a llenar la ventana varias veces seguidas, por lo que Claude Code dejó de reintentarlo. Para recuperarse, lea el archivo sobredimensionado por rangos de líneas, ejecute /compact con un enfoque que descarte la salida grande, traslade ese trabajo a un subagente o use /clear si la conversación anterior ya no es necesaria.
Los servidores MCP son una sobrecarga fija
Cada servidor MCP que conecte se suma a todas las solicitudes durante toda la sesión. El coste se aplica aunque no lo utilice.
Claude Code reduce este efecto. De forma predeterminada, las definiciones de las herramientas MCP se cargan de forma diferida, por lo que sólo los nombres de las herramientas entran en el contexto hasta que Claude utiliza una herramienta concreta. Ejecute /context para comprobar el coste real de sus servidores y /mcp disable <name> para quitar uno que no vaya a utilizar hoy. Si ejecuta sus propios servidores MCP en un VPS, el mismo cálculo limita cuántas herramientas debe exponer un servidor.
Hágalo al principio de la sesión. Mientras las definiciones permanezcan diferidas, conectar o desconectar un servidor sólo añade contenido a la conversación y la caché se conserva. Si las definiciones se cargan en el prefijo porque la búsqueda de herramientas está desactivada o porque un servidor no admite la carga diferida, el mismo cambio hace que la siguiente solicitud vuelva a leerlo todo.
Filtre la salida detallada de las herramientas antes de que entre en el contexto
El resultado de una herramienta es una entrada, y se vuelve a enviar en cada turno posterior. Una ejecución de prueba que genera 20,000 tokens de salida no tiene un coste único: se vuelve a pagar en cada turno hasta que sale de la ventana.
Filtre en el origen. Un hook que reduce la ejecución de prueba a sus fallos antes de que Claude la reciba convierte esa salida extensa en unos cientos de tokens, tanto en este turno como en cada reenvío posterior:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Los hooks nunca entran en el contexto, porque se ejecutan como código. Haga esto con cualquier herramienta cuya salida ocupe más de una pantalla. La misma lógica se aplica a un archivo de 3,000 líneas: solicite el intervalo de líneas que necesita, porque el archivo completo permanece en la ventana una vez que llega.
Delimite lo que lee el agente y delegue el trabajo que genera mucho ruido
Un prompt que especifica el archivo y el síntoma hace que el agente lea ese archivo. Una solicitud abierta para ordenar el proyecto hace que lea todo lo que el agente considere relevante, y cada una de esas lecturas permanece en la ventana de contexto.
Delegue el trabajo que genera mucha salida a un subagente. Las ejecuciones de pruebas y el procesamiento de registros consumen contexto real; un subagente mantiene esa salida en su propia ventana y devuelve sólo un resumen. La contrapartida es que el subagente crea su propia caché, sin aciertos en la primera llamada, y aplica la duración de cinco minutos de la caché incluso con una suscripción. La delegación protege de forma fiable el contexto principal. No siempre reduce el número total de tokens.
El reloj de la caché: trabaje por sesiones continuas
La caché de prompts es lo que hace asequible el reenvío: 0.1x de la tarifa base de entrada para leer el prefijo, frente a 1.25x para escribirlo, o 2x para escribirlo con una duración de una hora. Cada uso actualiza la entrada sin coste adicional, por lo que el reloj empieza a contar desde el último uso. Estos multiplicadores muestran la estructura del coste, pero no su importe, así que combínelos con el coste real de un millón de tokens para convertir una ventana de contexto completa en una cifra en dólares.
La duración depende del método de autenticación. Por eso, afirmar sin más que «la caché caduca después de cinco minutos» es incorrecto.
- Con una suscripción de Claude, Claude Code solicita automáticamente la duración de una hora.
- Cuando supera el límite de su plan y empieza a usar créditos de consumo, ese uso se factura y la duración vuelve a ser de cinco minutos.
- Con una clave de API o un proveedor cloud, la duración se mantiene en cinco minutos.
ENABLE_PROMPT_CACHING_1H=1activa la duración de una hora yFORCE_PROMPT_CACHING_5M=1la fuerza de nuevo a cinco minutos.
El consejo sobre el ritmo es el mismo en ambos casos: trabaje en sesiones continuas, porque una pausa superior a la duración de la caché hace que el siguiente turno vuelva a escribir todo el prefijo acumulado. Una sesión de Claude Code separada en tmux no cuesta nada mientras está inactiva, y lo que se pierde durante esa inactividad es la caché activa.
Algunas acciones descartan la caché aunque siga trabajando: cambiar de modelo, cambiar el nivel de esfuerzo, activar el modo rápido, conectar o desconectar un servidor MCP, activar o desactivar un plugin, denegar una herramienta completa, compactar y actualizar Claude Code. /model suele ser la sorpresa, porque cada modelo tiene su propia caché. Por eso, la siguiente solicitud lee todo el historial sin aciertos de caché, aunque el contenido sea idéntico. Esa nueva lectura se factura según las tarifas del modelo de destino, de modo que cambiar a Fable a mitad de una sesión factura todo el historial acumulado según la tarifa de entrada publicada de Fable 5.
Editar archivos, editar CLAUDE.md, invocar skills y comandos, ejecutar /recap, retroceder y crear un subagente mantienen la caché. La caché está vinculada a una sola máquina y un solo directorio, por lo que dos sesiones en directorios distintos no pueden reutilizar la caché de la otra. Este ámbito depende de la CLI, no de la cuenta, así que la caché no se transfiere a la aplicación de escritorio de Claude, que en Linux es una instalación beta independiente junto a la CLI.
Para comprobar si la caché funciona, consulte current_usage. cache_creation_input_tokens se escribió con la tarifa de escritura de caché; cache_read_input_tokens se sirvió aproximadamente a una décima parte de la tarifa de entrada estándar. Una proporción alta entre lecturas y creaciones indica un funcionamiento correcto. Si la creación se mantiene alta turno tras turno, algo del prefijo cambia continuamente.
¿Una ventana de contexto más grande soluciona esto?
En parte. Varios modelos actuales admiten una ventana de contexto de 1 millón de tokens, y la compactación funciona de la misma forma con ese límite superior. La economía no cambia, porque el prompt completo se sigue reenviando y se sigue facturando en cada turno. Una ventana más grande determina cuándo debe actuar; la higiene determina el coste. Si el problema es la factura y no el límite, qué plan de Claude se adapta a su forma de trabajar determina si gasta dólares o la asignación de su plan.
La edición y la compactación del contexto en la API son funciones diferentes
Si está creando su propio agente con Messages API, no existen comandos de barra y debe implementar esta función usted mismo. Reserve trabajo para ello desde el principio, porque la API no tiene un nivel gratuito más allá de un pequeño crédito de registro y cada turno del historial sin recortar se factura íntegramente. El proveedor sobre el que construya el agente determina ese cálculo antes de aplicar cualquier recorte. Si la elección aún no está cerrada, calcule el coste de la misma carga de trabajo en ambas API en lugar de comparar las tarifas anunciadas por token. Hay dos funciones del lado del servidor para hacerlo, pero no son la misma función.
Edición del contexto elimina de forma selectiva contenido específico del historial de la conversación a medida que crece. Sustituye cada resultado eliminado por texto de marcador de posición para que Claude sepa que se ha eliminado algo. Es una función beta: envíe anthropic-beta: context-management-2025-06-27 y configure las estrategias en context_management.edits. clear_tool_uses_20250919 elimina los resultados de herramientas y clear_thinking_20251015 gestiona los bloques de razonamiento. Su valor predeterminado de trigger es 100,000 tokens de entrada, el de keep es los 3 últimos usos de herramientas y el de clear_tool_inputs es false. De este modo, las entradas se conservan y sólo se eliminan los resultados.
La compactación genera un resumen y sustituye por él todo el historial de la conversación. También es una función beta: envíe anthropic-beta: compact-2026-01-12 y use el tipo de edición compact_20260112. El activador predeterminado es {"type": "input_tokens", "value": 150000} y el valor debe ser como mínimo 50,000.
La compactación tiene una regla de transferencia que puede romper agentes sin que resulte evidente. La respuesta comienza con un bloque de contenido compaction que contiene el resumen y continúa con el bloque de texto normal. Debe devolver ese bloque en las solicitudes posteriores. La API elimina entonces todos los bloques de contenido anteriores. En la práctica, añada el contenido completo de response.content, no sólo el texto.
La documentación de Anthropic denomina la compactación del lado del servidor la estrategia principal para gestionar el contexto en conversaciones de larga duración, y presenta la edición del contexto como la opción para controlar con más precisión qué se elimina. Compruebe primero la compatibilidad del modelo. Los modelos Opus, Sonnet y Fable actuales admiten la compactación; claude-haiku-4-5 no la admite y la página de compactación contiene la lista vigente. Ninguna de las dos funciones beta controla el propio /compact de Claude Code, que su documentación describe como una solicitud de resumen única que envía el cliente.
FAQ
¿Por qué mi sesión de Claude Code se vuelve más lenta y cara cuanto más tiempo permanece abierta?
Porque la conversación completa se vuelve a enviar en cada turno. Por eso, una pregunta de una línea en una sesión abierta durante todo el día incluye todo lo ocurrido ese día. La caché de prompts mantiene bajo el coste mientras está activa, a 0.1x de la tarifa base de entrada por lectura. Cuando un turno no encuentra la caché, el mismo prefijo se vuelve a escribir a 1.25x. Ejecute /context para ver qué está ocupando la ventana y consulte qué se factura en una sesión de Claude Code para conocer el mecanismo.
¿Cuál es la diferencia entre /clear y /compact en Claude Code?
/clear inicia una conversación nueva con el contexto vacío. No envía ninguna solicitud, por lo que no tiene coste. Es la opción adecuada entre tareas no relacionadas. /compact conserva la misma conversación y reemplaza el historial por un resumen. Es la opción adecuada dentro de una tarea larga. Indique el objetivo, como en /compact keep only the plan and the diff, porque esa instrucción determina qué información se conserva.
¿Cómo puedo ver qué está ocupando la ventana de contexto de Claude Code?
Ejecute /context o /context all para obtener el desglose completo por elemento. Muestra el prompt del sistema, las definiciones de herramientas, los servidores MCP, los archivos de memoria y el historial en una cuadrícula de colores. También ofrece sugerencias sobre herramientas que consumen mucho contexto y sobre el exceso de memoria. En un plan de pago, /usage también atribuye el uso reciente a skills, subagentes y servidores MCP concretos.
¿Debo usar una ventana de contexto de 1 million de tokens en lugar de compactar?
Una ventana más grande retrasa el problema, pero no lo resuelve. Varios modelos actuales utilizan una ventana de contexto de 1 million de tokens, entre ellos Opus 4.8 y Sonnet 5. La compactación funciona de la misma forma en ellos. Cada turno sigue reenviando el prompt completo y se sigue facturando por él. Por tanto, una conversación de 400,000 tokens es cara, que quepa o no en la ventana.
¿Cuál es la diferencia entre la edición de contexto y la compactación en Claude API?
La edición de contexto elimina de forma selectiva el contenido antiguo, principalmente los resultados de las herramientas, y deja texto de marcador de posición donde estaba cada uno para que Claude sepa que se eliminó. La compactación genera un resumen y reemplaza por él todo el historial. La documentación de Anthropic denomina la compactación estrategia principal para las conversaciones de larga duración y presenta la edición de contexto como la opción de control más detallado. Ambas funciones están en fase beta, tienen sus propias cabeceras y son independientes de /compact de Claude Code.