Continue es un asistente de programación con IA de código abierto que ofrece una extensión para VS Code, un plugin para JetBrains y una CLI, y puede conectarse a una API propia o de terceros mediante el protocolo compatible con OpenAI. Es habitual que la primera solicitud falle después de configurar el gateway; los problemas se concentran en cinco capas: credenciales, dirección, ID de modelo, cuota y red. El orden correcto es mirar primero el código de estado, reproducir con una solicitud mínima y solo después tocar el modelo y el contexto. Este artículo ofrece una base de config.yaml que puedes copiar y una lista de comprobación.
Estado: en 2026, Continue fue adquirida por Cursor y el repositorio del proyecto pasó a solo lectura y dejó de tener mantenimiento activo. Las instalaciones existentes y los forks de la comunidad todavía pueden usarse, pero el comportamiento de las versiones puede haberse quedado en el periodo anterior a la adquisición. Este artículo se basa en el modo de configuración con
config.yamlque todavía era habitual en octubre de 2026; el enfoque de diagnóstico también sirve para versiones antiguas.
1. Separa por capas: en qué nivel se produce realmente el error
No cambies el modelo en cuanto veas un error; clasifica primero por código de estado.
| Código/síntoma | Significado habitual | Qué revisar primero | ¿Reintentar? |
|---|---|---|---|
| 401 | Clave ausente, incorrecta, caducada o sin permiso | Clave, campo de autenticación, estado de la cuenta | No |
| 403 | La clave no tiene permiso para ese modelo o una política la bloquea | Permisos del modelo, configuración del equipo | No |
| 404 | Ruta incorrecta o modelo inexistente | apiBase, ID de modelo |
No |
| 400/413 | Formato de solicitud incorrecto o contexto demasiado largo | Contexto, parámetros, max_tokens |
Tras corregir la solicitud |
| 429 | Se superó la frecuencia, la concurrencia o la cuota de tokens | Uso, claves compartidas, política de reintentos | Tras un backoff |
| 5xx | Error del servidor o sobrecarga del gateway | Estado del servicio, ID de solicitud | Tras un backoff |
| Tiempo de espera/fallo de conexión | DNS, TLS, proxy, firewall o cadena de streaming | Red y proxy | Tras corregir |
Durante el diagnóstico, mantén fijos la misma clave, la misma dirección y el mismo ID de modelo, y cambia solo un elemento a la vez; si cambias tres cosas y el servicio se recupera, tampoco sabrás por qué.
2. Base de configuración: solo hay que cambiar tres cosas en config.yaml
El directorio de configuración global de Continue es ~/.continue (macOS/Linux) o %USERPROFILE%\.continue (Windows). Si existe config.yaml, se carga con prioridad sobre el antiguo config.json; no mezcles ambos formatos. Una configuración compatible con OpenAI que funciona es esta:
name: zsqh-gateway
version: 0.0.1
schema: v1
models:
- name: Modelo de chat del equipo
provider: openai
model: <ID de modelo copiado de la lista>
apiBase: https://api.zhongshangqihang.com/v1
apiKey: <tu API Key>
roles:
- chat
- edit
- apply
capabilities:
- tool_use
Algunos puntos que suelen causar errores:
- En el nivel superior deben estar
name,versionyschema: v1;modelses una lista y una indentación incorrecta hace que falle el análisis directamente. - Para un gateway compatible,
providerse pone enopenai;apiBasenormalmente se escribe hasta/v1, sin añadir/chat/completionspor tu cuenta. modeldebe coincidir exactamente con el ID de la lista de modelos del gateway, incluidas mayúsculas, guiones y número de versión.rolesdetermina si el modelo se encarga del chat, de la edición o de aplicar parches; el autocompletado (autocomplete) tiene requisitos distintos de capacidad de interfaz, y un modelo de chat normal no siempre lo admite.- Si necesitas que el modo Agent llame a herramientas, añade
capabilities: [tool_use]; de lo contrario, puede conversar pero no ejecutar herramientas. Si al guardar no surte efecto, recarga la ventana del IDE y revisa el registro.
3. 401: revisa primero la clave y luego el campo de autenticación
Un 401 significa que la identidad no se validó y no tiene relación con la capacidad del modelo ni con el contexto. Comprueba en orden:
- Si la clave se copió completa y si tiene espacios, saltos de línea o comillas al principio o al final. Copiar desde una ventana de chat es lo que más caracteres ocultos arrastra.
- Si la clave está en el campo
apiKeyy coincide con la cabecera de autenticación derequestOptions.headers, para evitar duplicaciones o conflictos. - Si la clave fue eliminada, desactivada o caducó; si la cuenta tiene saldo disponible. Algunos gateways devuelven 401 o 403 cuando no hay saldo; toma como referencia el cuerpo del error.
- Si
apiBaseapunta al entorno al que pertenece la clave. Una clave de entorno de prueba configurada con la dirección de producción también suele dar 401. - Si el archivo de configuración se carga realmente. Si editas
config.jsonpero se cargaconfig.yaml, parecerá que "nada de lo que cambias funciona".
Valida primero la dirección y la clave con una solicitud mínima, para descartar factores del cliente Continue:
export API_KEY="sk-tu-clave"
curl -sS -o /tmp/continue_resp.json -w "%{http_code}\n" \
"https://api.zhongshangqihang.com/v1/chat/completions" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"<ID de modelo>","messages":[{"role":"user","content":"ping"}],"max_tokens":16}'
cat /tmp/continue_resp.json
Si devuelve 200, la clave, la dirección y el modelo funcionan básicamente; si devuelve 401, prueba desde la entrada de pruebas de la consola del gateway y no reintentes automáticamente.
4. 404: la Base URL y el ID de modelo se reparten la culpa
Un 404 no siempre significa que el modelo esté fuera de servicio; lo más habitual es una ruta mal escrita:
apiBaseomite/v1, la solicitud llega a la ruta web del sitio y devuelve HTML o 404.apiBaseincluye/v1/chat/completions, el cliente lo vuelve a concatenar y la ruta queda duplicada.- Se usa la dirección de la consola como dirección de API, el dominio está mal escrito o se introduce la ruta
/v1/messagesde Anthropic en un campo compatible con OpenAI.
El ID de modelo también puede provocar un 404 o un model_not_found:
- Mayúsculas, guiones y número de versión deben coincidir exactamente con la lista de modelos.
- Puede que el modelo no esté disponible para la cuenta o el plan actual, o que use IDs distintos según el protocolo.
- Que la interfaz de configuración lo guarde no significa que el gateway acepte ese ID; hay que enviar una solicitud real para confirmarlo.
Durante el diagnóstico, visita primero /v1/models (si el gateway lo ofrece) y copia el ID de modelo de la lista devuelta; no lo escribas a mano.
5. 429: el límite de tasa no es falta de saldo
Un 429 indica que la solicitud superó la tasa, la concurrencia o la cuota de tokens. Situaciones habituales:
- Se superó el número de solicitudes por minuto, de tokens por minuto o de conexiones concurrentes.
- Varias personas comparten una clave, o el Agent lee archivos y ejecuta comandos de forma continua y envía muchas solicitudes en poco tiempo.
- El autocompletado se activa con demasiada frecuencia y envía una solicitud cada pocas teclas.
- Los reintentos no tienen backoff: cuanto más falla, más se reintenta y se forma una tormenta de reintentos; las solicitudes con contexto largo también ocupan espacio de concurrencia.
Al gestionarlo, revisa primero las cabeceras de respuesta y el cuerpo del error; no dupliques los reintentos a ciegas. Si hay Retry-After, espera lo que indique; si no, aplica un backoff exponencial con jitter aleatorio. No reintentes 401, 403 ni 404. Si una misma clave atiende varios servicios, sepárala por proyecto; en los bucles de Agent, define un número máximo de rondas y un límite de gasto.
6. Tiempos de espera, interrupciones del streaming y proxies
Los tiempos de espera normalmente no devuelven un código de estado HTTP; se manifiestan como una solicitud sin respuesta durante mucho tiempo, fetch failed, ECONNRESET o una respuesta que se detiene a mitad de camino. Orden de diagnóstico:
- Envía primero una solicitud sin streaming y con contexto corto. Si funciona, el problema está en la cadena de streaming o en el proxy intermedio.
- Prueba directamente con
curl -Npara descartar factores del cliente Continue; revisa también si el proxy está almacenando en búfer las respuestas SSE. - Revisa la cadena de certificados. Si un proxy corporativo hace inspección TLS, hay que indicar el certificado de la CA mediante
requestOptions.caBundlePath;verifySsl: falsesolo es adecuado para depuración temporal. - Comprueba que la hora del sistema sea correcta; una desviación grande hace fallar la validación del certificado.
- En tareas largas, define tiempos de espera y un número máximo de rondas; el Agent envía varias rondas seguidas y, si la conexión se cuelga, parece que "sigue girando". Los campos de tiempo de espera varían según la versión.
No uses ping para decidir si la API está disponible: solo demuestra que el host es alcanzable, no que TLS y la ruta sean correctos.
7. Contexto excedido y cuerpo de solicitud demasiado grande
Cuando se supera el contexto, lo habitual es recibir un 400 o un 413, y en el cuerpo del error aparecen textos como context_length_exceeded o maximum context length. Continue envía juntos los archivos abiertos, los fragmentos recuperados, las referencias y el historial de la conversación, así que el contexto real suele ser más largo de lo que parece.
Cómo tratarlo:
- Usa
.continueignoreo la configuración de exclusión de índices para dejar fuera artefactos de compilación, registros y directorios de dependencias. - Cierra las pestañas que no tengan relación, resume primero los documentos largos y abre una conversación nueva para los chats largos.
- Reduce
max_tokenspor solicitud, confirma la cadena con una solicitud corta y luego ve alargándola poco a poco. - Si solo falla en un repositorio grande, sospecha primero de que la recuperación está introduciendo demasiados fragmentos.
8. Cómo conservar los registros del IDE para facilitar el diagnóstico
En VS Code, abre la paleta de comandos y elige "Developer: Toggle Developer Tools" para ver la salida de Console; si necesitas registros detallados, activa "Continue: Enable Console" y recarga la ventana. En JetBrains, revisa ~/.continue/logs/core.log; los registros del IDE están en "Help > Show Log".
Un registro debe incluir al menos: hora, código de estado, código de error, ID de modelo, nombre de host de apiBase, ID de solicitud, duración y número de reintentos. El ID de solicitud suele estar en las cabeceras de respuesta, con nombres como request-id, x-request-id o x-oneapi-request-id, según lo que devuelva realmente el gateway. No registres la clave completa, los prompts ni el código del usuario; de la clave conserva solo los cuatro primeros y los cuatro últimos caracteres.
Un registro útil se ve así:
2026-10-19T10:12:33+08:00 status=429 code=rate_limit_exceeded model=<ID de modelo> host=api.zhongshangqihang.com request_id=... latency_ms=1840 retry=2
9. Lista de comprobación
- Anota el texto original del error, el código de estado, la hora y el ID de solicitud.
- Reproduce con el comando
curlde este artículo para confirmar si el problema aparece solo dentro de Continue. - Comprueba si se carga
config.yamloconfig.jsony si la indentación del YAML es correcta. - Verifica que
apiBasellegue solo hasta/v1y copia el ID de modelo de la lista. - Prueba con una clave nueva para descartar que la clave esté caducada o que haya un problema de cuota o de política del equipo.
- Usa primero una solicitud sin streaming y con contexto corto; luego vuelve a añadir streaming y contexto largo poco a poco. Si hace falta, cambia de red o de proxy.
- Si todo lo anterior pasa, envía los registros y los pasos de reproducción al soporte del gateway o del plugin.
10. Preguntas frecuentes
¿La clave funciona en otro cliente pero Continue devuelve 401?
Revisa primero si el campo es incorrecto y después si config.yaml se carga realmente. Cuando conviven el antiguo config.json y el nuevo config.yaml, es fácil editar el archivo equivocado; si el equipo restringe las claves de terceros, la configuración local puede ser correcta y aun así fallar.
¿Un 404 significa siempre que el modelo está fuera de servicio?
No necesariamente. En la mayoría de los casos, a apiBase le falta o le sobra /v1, o el ID de modelo está mal escrito. Visita primero la lista de modelos y copia el ID para probar.
¿Un 429 significa falta de saldo?
No necesariamente. Un 429 indica que se superó la tasa o la cuota; la falta de saldo puede devolver 401, 402 o 403. Toma como referencia el cuerpo del error y la página de facturación.
¿Por qué solo falla el streaming o el autocompletado?
Sospecha primero del búfer del proxy, del tiempo de espera por inactividad y de las diferencias de capacidad de la interfaz. Para el streaming, compara con una solicitud sin streaming; si falla el autocompletado, confirma si el modelo y la interfaz admiten autocompletado o FIM, y no pongas directamente un modelo de chat como autocomplete.
Continue ya no tiene mantenimiento, ¿merece la pena configurarlo?
Las instalaciones existentes y los forks de la comunidad siguen funcionando, y la semántica de errores sigue siendo la de las interfaces compatibles con OpenAI. Si un proyecto nuevo necesita mantenimiento a largo plazo, conviene evaluar herramientas que sigan en desarrollo activo; si solo reutilizas un entorno existente, basta con seguir el orden de diagnóstico de este artículo.
Siguiente paso
Primero crea una clave de prueba en ZSQH AI Gateway, recorre con el comando curl de este artículo la autenticación, el modelo y el streaming, y después colócalo en config.yaml. Los modelos y los precios se rigen por los precios de modelos del sitio, y cambian según el proveedor; al diagnosticar, fija primero las variables y luego sustitúyelas una por una.
Lecturas relacionadas:
- Tutorial completo de la API de Claude Code: API Key, Base URL y conexión
- Tutorial completo de la API de Cursor: clave personalizada, Base URL y modelos
- Errores habituales de la API de OpenAI y cómo diagnosticarlos
Marcas: Continue es una marca de Continue Dev, Inc.; Cursor, Anysphere, OpenAI, Anthropic y Claude son marcas de sus respectivos titulares. Este artículo solo ofrece una discusión técnica de diagnóstico y no mantiene relación de afiliación ni de cooperación con las empresas mencionadas. El estado del producto, los textos de error y el comportamiento de las interfaces pueden cambiar según la versión; consulta la documentación del proveedor y las respuestas reales.
