Les développeurs qui utilisent l'extension Continue dans VS Code ou JetBrains se heurtent fréquemment à un compromis délicat : l'autocomplétion de code par tabulation (Tab autocomplete) exige un temps de réponse instantané (un délai jusqu'au premier jeton ou TTFT inférieur à 300 millisecondes), tandis que le chat latéral et le refactoring de fond requièrent des modèles de frontière dotés d'un raisonnement complexe et d'un contexte étendu. Imposer un modèle lourd comme Claude 3.5 Sonnet ou GPT-4o à l'autocomplétion en ligne provoque des blocages intolérables lors de la frappe et des coûts d'API exorbitants. À l'inverse, restreindre le chat à un modèle d'appoint ultra-léger nuit à la qualité de l'analyse architecturale.
La solution repose sur le routage de modèles basé sur les rôles. Continue découple nativement la complétion de code en temps réel du raisonnement conversationnel. Ce guide explique comment configurer Continue afin d'acheminer l'autocomplétion et les requêtes de chat vers des modèles distincts et spécialisés, que ce soit sous le standard moderne config.yaml ou dans l'environnement hérité config.json, tout en optimisant les terminaisons locales et cloud.
Séparation architecturale : Autocomplétion versus Chat
L'autocomplétion par tabulation et les interactions de chat répondent à des exigences de performance et à des structures de modèles radicalement opposées :
| Critère | Autocomplétion Tab | Chat latéral et édition de code |
|---|---|---|
| Métrique clé | Délai jusqu'au premier jeton (TTFT < 300 ms) ; fluidité de frappe | Profondeur du raisonnement ; compréhension globale du code |
| Fréquence d'appel | Extrêmement élevée ; déclenchement à chaque pause de frappe ; centaines de requêtes par heure | Modérée ; envoi intentionnel de requêtes structurées ; dizaines par jour |
| Architecture du modèle | Modèles légers spécialisés en Fill-In-The-Middle (FIM, 1B–7B) | Modèles denses ou MoE de frontière (14B–70B+ / API cloud) |
| Hébergement recommandé | Moteur local (Ollama, vLLM, llama.cpp) ou terminaison cloud ultra-rapide | API cloud de frontière (Anthropic, OpenAI, Mistral) ou serveur local dédié |
| Structure du contexte | Préfixe et suffixe autour du curseur avec définitions AST/LSP | Historique de discussion ; fichiers complets rattachés ; consignes d'agent |
En isolant ces deux tâches, les développeurs profitent d'une assistance de saisie instantanée, gratuite et confidentielle en local, tout en conservant l'excellence des modèles de pointe pour les requêtes du panneau latéral.
Méthode 1 : Le standard moderne (config.yaml)
Dans les versions récentes de Continue, la configuration s'effectue dans ~/.continue/config.yaml. La répartition des tâches est directement régie par le tableau roles attribué à chaque modèle.
Pour dissocier l'autocomplétion du chat :
- Déclarez un modèle local compact adapté au FIM avec
roles: [autocomplete]. - Déclarez un ou plusieurs modèles de pointe pour le dialogue avec
roles: [chat, edit].
Exemple de configuration pour la production
name: Continue Hybrid Routing
version: 0.0.1
schema: v1
models:
# 1. Modèle dédié à l'autocomplétion Tab (Local via Ollama)
- name: Qwen2.5 Coder 1.5B (Autocomplete)
provider: ollama
model: qwen2.5-coder:1.5b
roles:
- autocomplete
autocompleteOptions:
debounceDelay: 250
maxPromptTokens: 1024
# 2. Modèle de raisonnement avancé pour le chat et l'édition (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. Modèle cloud alternatif pour le chat (OpenAI)
- name: GPT-4o (Chat)
provider: openai
model: gpt-4o
apiKey: YOUR_OPENAI_API_KEY
roles:
- chat
Paramètres essentiels
roles: Détermine où le modèle intervient. Un modèle doté du rôleautocompletegénère le texte fantôme en ligne dans l'éditeur et n'apparaît pas dans la liste déroulante du chat. Les modèles configurés avecchatpeuplent le sélecteur du panneau latéral.autocompleteOptions.debounceDelay: Délai d'attente en millisecondes après l'arrêt de la frappe avant de déclencher l'inférence (recommandé entre 200 ms et 350 ms). Cela évite de saturer le GPU local avec des requêtes obsolètes lors d'une saisie continue.autocompleteOptions.maxPromptTokens: Plafond des jetons de contexte envoyés au modèle. Une fourchette entre 1024 et 2048 garantit un débit de génération maximal sur du matériel standard.- Désactivation des chaînes de pensée (Thinking Mode) : Si vous utilisez des déclinaisons de modèles avec raisonnement interne explicite (tels que qwen3 ou les variantes reasoning), ajoutez
extraBodyProperties: { think: false }sur le modèle d'autocomplétion pour éviter que l'affichage de réflexions internes ne corrompe la syntaxe et n'augmente la latence.
Méthode 2 : Configuration héritée (config.json)
Pour les installations ou les équipes maintenant d'anciennes versions de Continue via ~/.continue/config.json, la séparation repose sur l'objet racine tabAutocompleteModel, distinct de la liste models.
[!NOTE] Le fichier
config.jsonet la clétabAutocompleteModelsont désormais obsolètes (Deprecated). Continue assure la rétrocompatibilité, mais une migration versconfig.yamlreste vivement conseillée.
Exemple de configuration héritée
{
"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
}
}
Dans ce schéma :
- Les éléments du tableau
"models"alimentent l'interface de discussion. - L'objet distinct
"tabAutocompleteModel"gère exclusivement les suggestions en ligne. - Les réglages de latence se placent dans
"tabAutocompleteOptions".
Combinaisons recommandées selon les cas d'usage
Cas A : Hybride Local et Cloud (Recommandation générale)
- Autocomplétion :
qwen2.5-coder:1.5bouqwen2.5-coder:7bpropulsé par Ollama en local. Offre une latence inférieure à 150 ms sans frais d'API. - Chat : Anthropic
claude-3-5-sonnetou OpenAIgpt-4o. Garantit une qualité de refactoring et d'analyse de haut niveau dans la barre latérale.
Cas B : Environnement local déconnecté (Confidentialité stricte)
- Autocomplétion :
qwen2.5-coder:1.5b(quantifié en Q4 ou Q8) sous Ollama ou vLLM. - Chat :
qwen2.5-coder:32boudeepseek-coder-v2:16bhébergé en local. Nécessite 16 Go à 32 Go de mémoire unifiée ou de VRAM dédiée.
Cas C : Autocomplétion cloud dédiée de haute précision
- Autocomplétion :
codestral-latestvia l'API Mistral. Spécialement conçu pour plus de 80 langages avec support FIM natif et large fenêtre de contexte. - Chat : OpenAI
gpt-4oou Claude 3.5 Sonnet.
Optimisation des terminaisons et résolution des anomalies
1. Concurrence et maintien en mémoire sous Ollama
Lorsqu'un modèle d'autocomplétion et un modèle de chat coexistent en local, la configuration par défaut d'Ollama peut sérialiser les appels :
- Définissez la variable d'environnement système
OLLAMA_NUM_PARALLEL=2(ou plus) pour autoriser l'exécution simultanée du chat et de l'autocomplétion. - Définissez
OLLAMA_KEEP_ALIVE=24h. Cela évite qu'Ollama ne décharge le modèle d'autocomplétion de la VRAM après 5 minutes d'inactivité, éliminant ainsi les gels de 5 à 10 secondes lors de la reprise de frappe.
2. Réglage du debounce et de la taille de contexte
- Frappe rapide (plus de 80 mots par minute) : réglez
debounceDelay: 300à 350 ms afin de réduire le gaspillage de calculs intermédiaires. - Frappe posée : paramétrez entre 200 ms et 250 ms.
- Gardez
maxPromptTokensentre 1024 et 2048. Transmettre un préfixe gigantesque alourdit inutilement le temps de réponse initial sans améliorer la pertinence en ligne.
3. Prévention des conflits d'extensions dans l'IDE
Si les suggestions en gris n'apparaissent plus :
- Vérifiez dans les préférences de Continue que l'option Enable Tab Autocomplete est cochée.
- Désactivez temporairement les autres extensions d'autocomplétion concurrentes (telles que GitHub Copilot ou Supermaven). La présence simultanée de plusieurs moteurs dans le même fichier provoque des conflits d'affichage qui masquent les suggestions de Continue.
Validation du fonctionnement
Après avoir enregistré votre fichier de configuration :
- Déployez le panneau Continue (
Ctrl+L/Cmd+L) et vérifiez que le sélecteur du bas n'affiche que les modèles assignés au Chat (par exemple Claude 3.5 Sonnet). - Dans un fichier source, écrivez l'en-tête d'une fonction et marquez une pause de 300 millisecondes. Une proposition en gris clair doit s'afficher sans délai, confirmant que le modèle local dédié a pris le relais.
Références
- 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