Invita y gana

Cómo funcionan las recompensas

Comparte tu enlace. Cuando un amigo se registre con él y recargue saldo, recibirás la recompensa indicada por sus recargas posteriores.

Claude Code con DeepSeek: cómo recuperar una sesión tras Input length exceeds maximum

Guarda el diff y el estado de la tarea fuera del modelo, prueba una compactación dirigida y, si también falla, retrocede a un checkpoint o abre una sesión limpia antes de revisar el modelo, la pasarela y el umbral de compactación.

Índice
Claude Code con DeepSeek: cómo recuperar una sesión tras Input length exceeds maximum

Escribes una instrucción corta en Claude Code y recibes status_code=400, Input length 1048609 exceeds the maximum length 1048566. No repitas la misma solicitud y no des por hecho que basta con borrar 43 caracteres. La ruta más segura es: guardar el código y el estado de la tarea fuera del modelo, intentar un /compact dirigido, recurrir a un checkpoint o a una sesión limpia si la compactación también falla y, por último, localizar si rechazó la petición el modelo, Claude Code o una pasarela intermedia.

El mensaje solo demuestra que alguna capa consideró la entrada 43 unidades no especificadas por encima de su límite. No indica si esas unidades son tokens, caracteres o bytes, ni confirma que la solicitud llegara a DeepSeek. Sin el model ID real, el Base URL, la versión de Claude Code, la cadena de proxies y la respuesta original, no se puede atribuir el fallo a un modelo concreto.

Protege el trabajo antes de volver a llamar al modelo

Detén primero los reintentos desde la conversación saturada. Los cambios de código suelen estar ya en el disco; lo más vulnerable es la información que solo vive en el chat: qué se modificó, qué se verificó y cuál era el siguiente paso.

Abre otro terminal y captura el estado sin pedir al modelo que lo resuma:

claude --version
git status --short
git diff --stat
git diff > claude-context-recovery.patch
git diff --cached > claude-context-recovery-staged.patch

Si el proyecto no usa Git, copia los archivos modificados o crea una instantánea con el historial local del editor. Después escribe manualmente un RECOVERY.md breve:

Objetivo:
Archivos modificados:
Ya verificado:
Sigue fallando:
Decisiones clave:
Siguiente acción única:
No volver a cargar: logs completos, todo el repositorio, historial no relacionado

No tiene que ser un informe perfecto. Su función es permitir que una sesión nueva retome el trabajo con unos pocos párrafos en lugar de reconstruir cientos de miles de tokens.

Al recopilar datos de diagnóstico, conserva solo información no secreta: claude --version, model ID, dominio del Base URL, nombres de proxies y el error exacto. No muestres API keys, cabeceras de autorización, prompts internos completos ni variables de entorno que contengan credenciales.

Distingue qué límite se alcanzó

Los mensajes parecidos no siempre describen el mismo problema.

Forma del errorQué puede significarPrimera acción
Input length X exceeds the maximum length YAlguna capa aplica un tope a la entrada o al tamaño de la solicitud; la unidad puede no ser tokenReducir historial y tool output, y localizar la capa que rechaza
input length and max_tokens exceed context limit: A + B > CEntrada más salida reservada superan el presupuesto total de contextoCompactar antes; reducir salida solo si esta causa está confirmada
HTTP 413 o request body too largeLímite de cuerpo HTTP o de reverse proxyRevisar adjuntos, codificación y body-size del proxy
All target providers failed u otro mensaje genéricoLa pasarela puede haber ocultado el error upstreamConsultar el intento original, los logs y el request ID

En Claude Code #42, un usuario describió un 400 producido por la suma de entrada y max_tokens. En #8136, otro usuario informó de que /compact podía fallar cerca del límite porque la propia compactación necesitaba espacio de salida. Son experiencias de usuarios independientes, no una prueba de lo que ocurre en tu entorno.

Por eso, una diferencia de 43 no justifica borrar exactamente 43 caracteres. Claude Code también envía instrucciones de sistema, historial, definiciones de herramientas, contenido de archivos y resultados. Deja un margen amplio en vez de intentar quedar una unidad por debajo del límite.

Rama A: /compact todavía funciona

Si las slash commands responden, revisa el uso del contexto y compacta indicando qué debe conservarse.

/context

Después ejecuta una compactación dirigida:

/compact Conserva el objetivo actual, los archivos modificados, los resultados verificados, las decisiones clave, el problema pendiente y la siguiente acción. Elimina logs completos, contenido repetido de archivos, ramas descartadas y conversaciones no relacionadas.

Tras una compactación correcta, no vuelvas a escanear todo el repositorio. Comprueba la recuperación con una tarea pequeña y verificable:

Lee solo RECOVERY.md y src/auth/session.ts. Indica qué función debería cambiar a continuación. No explores otros directorios ni modifiques archivos.

Considera recuperada la sesión cuando se cumplan estas cuatro señales:

  1. /context muestra una ocupación claramente menor;
  2. una solicitud pequeña deja de devolver 400;
  3. el modelo puede repetir el objetivo, los archivos cambiados y el siguiente paso;
  4. git diff y los resultados de pruebas siguen coincidiendo con la nota de recuperación.

La compactación puede omitir detalles. Guarda las reglas permanentes del proyecto en CLAUDE.md y el estado crítico de la tarea en archivos, no únicamente en una conversación larga.

Rama B: /compact también devuelve Conversation too long o el mismo 400

No ejecutes /compact repetidamente sobre el mismo historial desbordado. En Claude Code #26317, un usuario informó de que, tras llegar al límite, la propia compactación respondía Conversation too long. Que el issue esté cerrado como not planned no significa que todos los clientes y endpoints compatibles hayan dejado de presentar ese comportamiento.

Retrocede a antes del log o del tool output grande

La guía oficial de checkpointing permite ejecutar /rewind, o pulsar dos veces Esc con el cuadro de entrada vacío. Entre las opciones se incluyen:

  • Restore conversation: retrocede la conversación y conserva el código actual;
  • Summarize from here: resume los mensajes posteriores al checkpoint;
  • Summarize up to here: resume el historial anterior y conserva los mensajes posteriores.

Elige un checkpoint anterior a la lectura de un archivo enorme, al pegado de un log completo o a un resultado de herramienta desproporcionado. Restaurar la conversación manteniendo los cambios y enviar después una tarea estrecha suele ser más seguro que compactar el extremo ya saturado.

La función de resumen todavía puede necesitar una llamada al modelo. Si el upstream rechaza también esa petición, pasa a una recuperación con contexto vacío.

Si el retroceso falla, usa /clear o una sesión nueva

/clear

La referencia oficial de comandos indica que /clear inicia una conversación con contexto vacío y conserva la sesión anterior para poder consultarla después. No revierte archivos ni borra el Git diff.

Inicia la sesión limpia con una instrucción limitada:

Lee RECOVERY.md, git diff --stat y los dos archivos indicados allí. Primero verifica el estado actual. No explores todo el repositorio. Propón solo el siguiente paso y espera confirmación antes de editar.

No ejecutes de inmediato claude --continue, claude --resume ni /resume. Según la guía oficial de sesiones, reanudar recupera el historial completo y los resultados de herramientas. Si ese historial causó el desbordamiento, la siguiente llamada puede fallar otra vez.

Localiza la capa que rechaza con cuatro pruebas baratas

Una vez protegido el trabajo, cambia una sola variable por prueba y reutiliza la misma tarea pequeña de solo lectura.

PruebaResultadoInterpretación más útil
Mismo endpoint y modelo, sesión limpia, tarea mínimaFuncionaEl historial acumulado o un tool output grande son más probables
La misma tarea mínima falla en sesión limpiaFallaRevisa model mapping, formato de solicitud, versión del cliente o cap del servidor
Cuando esté permitido, compara endpoint oficial y gatewayDirecto funciona, gateway fallaRevisa límites, conversión y agregación de errores de la pasarela
/compact falla, pero una tarea mínima tras /clear funcionaFuncionaLa compactación no cabía en la ventana real o el cliente asumió una ventana incorrecta

Registra la ruta sin exponer secretos:

printf 'BASE_URL=%s\nMODEL=%s\nOPUS=%s\nSONNET=%s\nHAIKU=%s\nSUBAGENT=%s\n' \
  "${ANTHROPIC_BASE_URL:-<unset>}" \
  "${ANTHROPIC_MODEL:-<unset>}" \
  "${ANTHROPIC_DEFAULT_OPUS_MODEL:-<unset>}" \
  "${ANTHROPIC_DEFAULT_SONNET_MODEL:-<unset>}" \
  "${ANTHROPIC_DEFAULT_HAIKU_MODEL:-<unset>}" \
  "${CLAUDE_CODE_SUBAGENT_MODEL:-<unset>}"

El comando omite deliberadamente ANTHROPIC_AUTH_TOKEN. Anota también si intervienen Claude Code Router, un switcher, una pasarela corporativa, un reverse proxy o un fallback entre proveedores.

En Claude Code Router #1799, un usuario informó de que una pasarela convertía un error de contexto upstream en All target providers failed. Su parche local no es una solución universal, pero el caso explica por qué los logs de soporte deben conservar status, body y request ID originales.

Verifica la ruta real de DeepSeek, no solo una etiqueta [1m]

A fecha de 30 de septiembre de 2026, el ejemplo de variables de entorno del cliente en la página oficial de integración de DeepSeek con Claude Code configura:

  • ANTHROPIC_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL y ANTHROPIC_DEFAULT_SONNET_MODEL como deepseek-flash[1m];
  • ANTHROPIC_DEFAULT_HAIKU_MODEL y CLAUDE_CODE_SUBAGENT_MODEL como deepseek-flash;
  • CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432.

La misma página documenta por separado un mapeo en el servicio para nombres de modelo con formato Claude: los que empiezan por claude-opus se asignan a deepseek-v4-pro, y los que empiezan por claude-haiku o claude-sonnet, a deepseek-flash. Esa regla del servicio y los valores explícitos del ejemplo del cliente son hechos distintos; no deben combinarse en una sola conclusión sobre la ruta real.

Ninguna de las dos secciones demuestra qué modelo o ventana atendió esta solicitud concreta. Revisa los registros de request/usage disponibles, el campo model original, el provider o la route seleccionados y el request ID upstream, en vez de inferirlo desde la interfaz o una guía antigua.

Una etiqueta [1m] tampoco garantiza que todas las capas acepten un millón de tokens. Claude Code, la API compatible, la pasarela, el proveedor de fallback y el modelo final pueden tener límites distintos. Además, la salida reservada ocupa parte del contexto.

Compacta antes en vez de inflar la ventana

El ejemplo actual de DeepSeek incluye:

export CLAUDE_CODE_AUTO_COMPACT_WINDOW="786432"

Es un umbral de compactación en el cliente, no una forma de ampliar el límite duro del proveedor. La referencia de variables de entorno de Claude Code indica que debe ser un entero, no puede superar la ventana del modelo y tiene prioridad sobre /autocompact, flags de inicio y settings.

Si el modelo o la pasarela admiten menos, configura un valor menor que hayas verificado. CLAUDE_AUTOCOMPACT_PCT_OVERRIDE sirve para activar la compactación antes, no para aumentar el contexto.

Tampoco uses CLAUDE_CODE_MAX_CONTEXT_TOKENS como un interruptor para “desbloquear” tokens. Esa variable comunica a Claude Code el tamaño real verificado de un modelo personalizado o no reconocido. Si la configuras por encima del límite del servidor, retrasarás la compactación y aumentarás la probabilidad de otro 400.

Estas prácticas suelen aportar más estabilidad:

  • filtra logs con grep, rg, tail o un script antes de compartirlos;
  • lee archivos grandes por función o rango de líneas;
  • usa /clear entre tareas no relacionadas;
  • delega exploraciones amplias a un subagent y devuelve solo su resumen;
  • ejecuta un /compact enfocado antes de empezar una fase nueva;
  • evita repetir schemas, build logs completos o diffs enteros.

Vuelve a probar con una tarea real y pequeña

Después de recuperar la sesión o cambiar la configuración:

  1. inicia una sesión limpia;
  2. lee únicamente RECOVERY.md y un archivo pequeño;
  3. solicita una respuesta corta y acotada;
  4. confirma que desapareció el 400;
  5. añade archivos y llamadas de herramientas de forma gradual.

Si falla incluso la prueba mínima, deja de recortar la conversación antigua y revisa endpoint, model mapping, proxy y formato de solicitud. Si solo falla la sesión larga, céntrate en el momento de compactación, el tamaño de los resultados y la separación entre tareas.

Preguntas frecuentes

¿Por qué reiniciar Claude Code no solucionó nada?

Reiniciar no garantiza una historia vacía. --continue, --resume y el selector de sesiones recuperan la conversación anterior. Para aislar el problema necesitas una sesión realmente nueva y una prueba mínima.

¿Ayuda reducir los tokens de salida?

Solo cuando el error dice que entrada más max_tokens superan el presupuesto combinado. Si existe un límite independiente para la entrada, reducir la salida no garantiza una solución.

¿Cambiar de gateway siempre lo arregla?

No. Puede ayudar si la pasarela actual impone un body limit inferior o esconde errores upstream. Ninguna pasarela puede superar el límite duro del modelo final.

¿/clear borra el código?

No. Limpia el contexto de conversación, no los archivos escritos. Aun así, confirma el estado con git status y guarda un patch, commit o snapshot.

¿Por qué no borrar exactamente 43 caracteres?

Porque la unidad no está indicada y la petición contiene datos invisibles: instrucciones de sistema, tools e historial. Crear margen suficiente es más fiable que apuntar a la frontera exacta.

El orden de recuperación que conviene recordar

Para Input length exceeds maximum, sigue este orden: guarda el diff y una nota manual en otro terminal → ejecuta /context → prueba un /compact dirigido → si falla, usa /rewind antes del output grande → si tampoco funciona, aplica /clear o inicia una sesión nueva → usa una tarea mínima para localizar el límite → configura la compactación por debajo de la ventana real verificada.

El proceso no necesita adivinar qué significa el número 43 ni promete que un proxy pueda saltarse el límite duro del modelo. Primero protege lo ya hecho y después convierte un 400 ambiguo en un diagnóstico por capas que se puede repetir.

¿Quieres optimizar tu flujo de trabajo con LLM?

Conecta modelos mediante una API, gestiona claves y controla el gasto en IA.

Empezar gratis