Los desarrolladores que utilizan la extensión Continue en VS Code o JetBrains a menudo se enfrentan a un dilema técnico: el autocompletado de código mediante la tecla Tab exige una latencia casi instantánea (un tiempo hasta el primer token o TTFT inferior a 300 milisegundos), mientras que el chat lateral y la refactorización profunda requieren modelos de frontera con razonamiento avanzado y amplias ventanas de contexto. Forzar un modelo masivo como Claude 3.5 Sonnet o GPT-4o para el autocompletado genera retrasos intolerables al escribir y dispara los costes de API. Por el contrario, recurrir a un modelo ligero de sugerencias para conversaciones complejas limita gravemente la capacidad analítica.
La solución reside en el enrutamiento de modelos basado en roles. Continue desacopla de forma nativa la compleción en línea del razonamiento conversacional. Esta guía detalla cómo configurar Continue para dirigir las solicitudes de autocompletado y de chat a modelos distintos y especializados, tanto en el estándar moderno config.yaml como en el entorno heredado config.json, optimizando los extremos locales y en la nube.
Separación arquitectónica: Autocompletado frente a Chat
El autocompletado mediante Tab y el chat conversacional responden a requisitos operativos y arquitecturas de modelo fundamentalmente opuestos:
| Criterio | Autocompletado con Tab | Chat lateral y edición de código |
|---|---|---|
| Métrica principal | Tiempo hasta el primer token (TTFT < 300 ms); fluidez de escritura | Profundidad de razonamiento lógico; comprensión contextual extensa |
| Frecuencia de ejecución | Extremadamente alta; pausas breves al teclear; cientos de veces por hora | Media/baja; envíos explícitos por el desarrollador; decenas de veces al día |
| Arquitectura de modelo | Modelos compactos especializados en Fill-In-The-Middle (FIM, 1B–7B) | Modelos densos o MoE de razonamiento avanzado (14B–70B+ / API en la nube) |
| Despliegue recomendado | Motor local (Ollama, vLLM, llama.cpp) o endpoints en la nube de latencia ultrabaja | API de frontera (Anthropic, OpenAI, Mistral) o servidor local de gran capacidad |
| Estructura del contexto | Prefijo y sufijo del cursor acoplados con definiciones AST/LSP | Historial de chat, archivos vinculados y directrices de sistema del agente |
Al separar estas tareas, los desarrolladores disfrutan de asistencia de escritura instantánea, gratuita y privada en local, sin renunciar al máximo nivel de inteligencia conversacional en el panel lateral.
Método 1: El estándar moderno (config.yaml)
En las versiones actuales de Continue, la configuración se gestiona a través del archivo ~/.continue/config.yaml. La asignación de tareas se define mediante el vector roles en cada modelo.
Para aislar el autocompletado del chat:
- Declare un modelo local optimizado para tareas FIM con
roles: [autocomplete]. - Declare uno o varios modelos de frontera para el diálogo con
roles: [chat, edit].
Ejemplo de configuración en producción
name: Continue Hybrid Routing
version: 0.0.1
schema: v1
models:
# 1. Modelo especializado en autocompletado por Tab (local mediante Ollama)
- name: Qwen2.5 Coder 1.5B (Autocomplete)
provider: ollama
model: qwen2.5-coder:1.5b
roles:
- autocomplete
autocompleteOptions:
debounceDelay: 250
maxPromptTokens: 1024
# 2. Modelo de razonamiento para chat y refactorización (Anthropic API)
- name: Claude 3.5 Sonnet (Chat & Edit)
provider: anthropic
model: claude-3-5-sonnet-latest
apiKey: YOUR_ANTHROPIC_API_KEY
roles:
- chat
- edit
# 3. Modelo alternativo para chat en la nube (OpenAI)
- name: GPT-4o (Chat)
provider: openai
model: gpt-4o
apiKey: YOUR_OPENAI_API_KEY
roles:
- chat
Parámetros esenciales
roles: Establece el comportamiento del modelo. Los modelos con el rolautocompletealimentan el texto fantasma en línea del editor y quedan excluidos del menú de chat lateral. Aquellos marcados conchataparecen en el selector de la barra de conversación.autocompleteOptions.debounceDelay: Pausa en milisegundos tras teclear antes de lanzar la inferencia (se recomiendan entre 200 ms y 350 ms). Evita saturar la GPU local con solicitudes innecesarias durante la escritura continua.autocompleteOptions.maxPromptTokens: Límite de tokens de contexto del código circundante enviados al modelo. Mantenerlo entre 1024 y 2048 garantiza que modelos compactos alcancen su velocidad punta.- Desactivación del razonamiento interno (Thinking Mode): Si emplea variantes de modelos con cadena de pensamiento activable (como qwen3 o familias reasoning), añada
extraBodyProperties: { think: false }en el bloque de autocompletado. La emisión de razonamiento intermedio rompe la sintaxis del código e induce bloqueos por latencia.
Método 2: Configuración heredada (config.json)
Para entornos o equipos que aún mantienen versiones previas de Continue basadas en ~/.continue/config.json, la separación se realiza mediante el objeto raíz tabAutocompleteModel, completamente independiente de la lista models.
[!NOTE] El formato
config.jsony la clavetabAutocompleteModelestán obsoletos (Deprecated) a favor deconfig.yaml. Aunque la compatibilidad retroactiva se mantiene, se aconseja migrar al nuevo estándar.
Ejemplo de configuración heredada
{
"models": [
{
"title": "Claude 3.5 Sonnet",
"provider": "anthropic",
"model": "claude-3-5-sonnet-latest",
"apiKey": "YOUR_ANTHROPIC_API_KEY"
},
{
"title": "GPT-4o",
"provider": "openai",
"model": "gpt-4o",
"apiKey": "YOUR_OPENAI_API_KEY"
}
],
"tabAutocompleteModel": {
"title": "Qwen2.5-Coder 1.5B",
"provider": "ollama",
"model": "qwen2.5-coder:1.5b"
},
"tabAutocompleteOptions": {
"debounceDelay": 250,
"maxPromptTokens": 1024
}
}
Bajo este esquema:
- Los modelos listados en
"models"nutren el desplegable de conversación. - El bloque
"tabAutocompleteModel"atiende en exclusiva las sugerencias de autocompletado en línea. - Los ajustes de latencia se configuran bajo
"tabAutocompleteOptions".
Combinaciones recomendadas según el escenario
Escenario A: Híbrido Local / Nube (Recomendado para la mayoría)
- Autocompletado:
qwen2.5-coder:1.5boqwen2.5-coder:7bejecutado en Ollama local. Ofrece respuestas en menos de 150 ms sin coste alguno ni dependencia de conexión. - Chat:
claude-3-5-sonnetde Anthropic ogpt-4ode OpenAI. Máxima precisión en refactorización y resolución de errores complejos.
Escenario B: Local cerrado con estricta privacidad de código
- Autocompletado:
qwen2.5-coder:1.5b(cuantización Q4 o Q8) en Ollama o vLLM. - Chat:
qwen2.5-coder:32bodeepseek-coder-v2:16ben servidor local. Requiere máquinas con 16 GB a 32 GB de memoria VRAM unificada o dedicada.
Escenario C: Autocompletado especializado de alta precisión en la nube
- Autocompletado:
codestral-latesta través de la API de Mistral. Diseñado expresamente para más de 80 lenguajes con soporte nativo de FIM. - Chat: OpenAI
gpt-4oo Claude 3.5 Sonnet.
Optimización de endpoints y resolución de problemas
1. Parámetros de concurrencia y persistencia en Ollama
Si utiliza Ollama localmente y abre un chat mientras escribe código, la configuración por defecto puede provocar que las peticiones se pongan en cola secuencial:
- Defina la variable de entorno del sistema
OLLAMA_NUM_PARALLEL=2(o superior) para admitir peticiones simultáneas de autocompletado y chat. - Configure
OLLAMA_KEEP_ALIVE=24h. Esto evita que el modelo de autocompletado se descargue de la memoria GPU tras 5 minutos de inactividad, erradicando los retrasos de arranque en frío (de 5 a 10 segundos).
2. Calibración de debounce y ventana de tokens
- Escritura rápida (más de 80 palabras por minuto): ajuste
debounceDelay: 300a 350 ms para evitar llamadas que se descarten al instante. - Escritura pausada o diseño concienzudo: configure entre 200 ms y 250 ms.
- Conserve
maxPromptTokensentre 1024 y 2048. Enviar un contexto excesivo eleva el tiempo de procesamiento previo sin mejorar la exactitud del autocompletado en línea.
3. Conflicto entre extensiones del editor
Si el texto en gris no aparece tras configurar roles: [autocomplete]:
- Compruebe en los ajustes de Continue que la opción Enable Tab Autocomplete esté activada.
- Desactive temporalmente otras extensiones de completado en línea (como GitHub Copilot o Supermaven). Múltiples proveedores compitiendo en el mismo búfer suelen anularse mutuamente.
Verificación final
Una vez guardado el archivo de configuración:
- Abra el panel lateral de Continue (
Ctrl+L/Cmd+L) y verifique que en el desplegable inferior únicamente aparecen los modelos asignados a Chat. - Escriba el encabezado de una función en cualquier archivo de código y pause la escritura durante 300 milisegundos. Deberá aparecer de inmediato una sugerencia en texto gris tenue, procesada de forma independiente por el modelo de autocompletado configurado.
Referencias
- Autocomplete Role in Continue Models | Continue Docs
- Chat Role | Continue Docs
- Continue Autocomplete Setup and Configuration Guide | Continue Docs
- How to Understand Configuration | Continue Docs
- Migrating Config to YAML | Continue Docs
- config.json Reference (Deprecated) | Continue Docs
- Using Ollama with Continue: A Developer's Guide | Continue Docs