Intermédiaire 11 minIDE

Twinny : l'autocomplétion de code 100 % locale

Réponse directe

Twinny est une extension VS Code gratuite et open source (licence MIT) qui fait tourner la complétion de code sur votre propre machine, via Ollama, LM Studio ou llama.cpp. Pour la ligne en cours, un petit modèle de base entraîné au remplissage au milieu comme qwen2.5-coder:1.5b-base répond en moins d'une seconde. Aucun abonnement n'est nécessaire en solo ; la facturation ne concerne que les équipes de plus de cinq développeurs.

Twinny est une extension d'éditeur qui fait de la complétion de code en local : elle propose la suite de ce que vous êtes en train d'écrire, à partir d'un modèle servi par votre propre machine. C'est la catégorie la plus exigeante en latence de tout l'écosystème — une suggestion qui arrive en deux secondes est une suggestion inutile — et c'est pour cela que le choix du modèle y obéit à des règles inverses de celles du reste. Ce guide détaille les réglages qui font la différence et ce que l'extension a gagné depuis ses débuts.

Par Mohamed Meguedmi·Màj 2026-09-29·Testé sur Windows, macOS, Linux

#Ce que fait Twinny

Deux fonctions cohabitent historiquement dans l'extension : la complétion en ligne, qui affiche une suggestion grisée pendant la frappe, et une barre latérale de discussion pour poser des questions sur le code sélectionné. Les deux s'appuient sur un modèle local, servi par Ollama, LM Studio ou llama.cpp, et rien ne quitte la machine par défaut.

L'intérêt est évident dans un contexte où le code ne doit pas sortir : cabinet, administration, code client sous accord de confidentialité. L'argument n'est pas le coût — il est que la question « où part mon code » a une réponse vérifiable. Le projet se présente lui-même comme l'assistant IA pour VS Code qui reste à l'intérieur de votre réseau.

#Le détail qui change tout : le remplissage au milieu

Le kit Copilote Local

Ce guide t'amène au modèle. Le kit t'amène au copilote qui code dans ton éditeur.

  • Espace en ligne à vie
  • PDF + fichiers
  • Remboursé 30 j

Compléter du code n'est pas continuer un texte. Quand vous écrivez au milieu d'une fonction, le modèle doit tenir compte de ce qui précède ET de ce qui suit. Cette capacité porte un nom — le remplissage au milieu, ou FIM (fill-in-the-middle) — et tous les modèles ne l'ont pas : la documentation officielle est explicite sur ce point, le fournisseur de complétion doit utiliser un modèle entraîné pour le FIM, chaque famille de modèle utilisant des jetons distincts pour marquer le préfixe, le suffixe et la zone à compléter.

C'est la source numéro un des déceptions. Un excellent modèle de discussion orienté code, sans cette capacité, produira des suggestions qui ignorent la suite du fichier et referment des accolades déjà présentes. Autre point que beaucoup ignorent : la documentation recommande un modèle de base plutôt qu'une variante instruite, car un modèle de base poursuit un texte brut de façon plus fiable qu'il ne gère un suffixe vide, en particulier quand il n'y a rien après le curseur.

→
Le modèle recommandé par la documentation
« Utilisez un modèle de base, petit et sur le GPU. qwen2.5-coder:1.5b-base répond en bien moins d'une seconde sur la plupart des machines » — c'est la recommandation officielle pour la complétion en ligne.

#Les réglages qui rendent l'expérience fluide

Quatre réglages, documentés par le projet, concentrent l'essentiel du gain de latence perçue. Ils vivent dans les paramètres de l'extension (préfixe twinny.) et peuvent tous être ajustés sans redémarrer Ollama.

Les quatre réglages qui pilotent la latence perçue
ParamètreValeur par défautEffet
twinny.debounceWait300 msDélai après la dernière frappe avant de lancer la requête ; l'augmenter réduit le nombre d'appels
twinny.numPredictFim512 tokensNombre maximal de tokens générés par suggestion ; le réduire accélère la réponse
twinny.contextLength100 lignesQuantité de code envoyée autour du curseur ; le réduire diminue la latence
twinny.fileContextEnableddésactivé par défautEnvoi d'extraits d'autres fichiers ouverts liés (jusqu'à 3) ; utile sur un gros projet mais coûte de la latence
  1. 01
    Limiter le nombre de jetons générés
    Une complétion utile fait une ligne ou deux. La documentation le confirme : si les suggestions arrivent en retard, la première chose à baisser est numPredictFim, pas le modèle.
  2. 02
    Ajuster le délai de déclenchement
    Déclencher à chaque frappe sature le serveur ; le délai par défaut de 300 ms (debounceWait) suffit dans la plupart des cas et divise le nombre d'appels.
  3. 03
    Garder le modèle chargé côté Ollama
    Si le serveur décharge le modèle après quelques minutes d'inactivité, la première suggestion après une pause arrive trop tard. On allonge la durée de maintien en mémoire côté Ollama (keep_alive).
  4. 04
    Réduire la fenêtre de contexte envoyée
    La documentation le dit explicitement : si les suggestions semblent en retard, baisser contextLength (100 lignes par défaut avant/après le curseur) ou laisser fileContextEnabled désactivé, son réglage par défaut. Ce paramètre n'ajoute des extraits d'autres fichiers ouverts que si on l'active soi-même.

#Ce que le modèle voit vraiment

Une suggestion ne part pas seulement du préfixe et du suffixe autour du curseur. La documentation détaille les sources que Twinny assemble avant de construire le prompt : les lignes environnantes (contextLength), les dernières modifications faites dans le fichier sous forme de petits diffs (recentEditsEnabled, activé par défaut, jusqu'à 6 changements), les symboles et la signature de l'appel en cours fournis par le serveur de langage (lspContextEnabled, activé par défaut), et en option des extraits d'autres fichiers ouverts liés (fileContextEnabled, désactivé par défaut).

Modifications récentes
Un renommage à moitié fait ou un motif appliqué à la main sur un fichier se propage dans les suggestions suivantes, comme s'il comprenait ce que vous êtes en train de faire.
Contexte IntelliSense
Le modèle reçoit les noms et la signature de l'appel dans lequel se trouve le curseur, fournis par le serveur de langage de l'éditeur.
Fichiers voisins
Désactivé par défaut : ne l'activer que sur un gros projet, car il coûte de la latence pour un gain variable.

Autre détail utile en pratique : écrire d'abord un commentaire d'une ligne décrivant ce qui vient ensuite, puis marquer une pause, donne à la suggestion multi-lignes un objectif clair — c'est le conseil que donne la documentation elle-même pour obtenir de meilleures suggestions. Nommer clairement ses variables et fonctions reste, avant tout réglage, le levier qui a le plus d'effet sur la pertinence.

i
Faire tourner le modèle sur un autre de vos appareils
Au-delà d'Ollama, LM Studio et llama.cpp en local, Twinny propose un appairage direct entre appareils (« Devices ») : le poste de travail utilise le GPU d'une autre de vos machines via une liaison chiffrée de pair à pair, sans compte ni relais.

#Quels modèles, et pourquoi si petits

Les règles sont inversées par rapport à la discussion
UsageTaille conseilléePourquoi
Complétion en ligne (FIM)1,5 à 3 milliards, modèle de baseLa latence prime : qwen2.5-coder:1.5b-base répond en moins d'une seconde sur la plupart des machines, selon la documentation officielle
Complétion sur grosse carte7 milliardsEnvisageable si la carte est rapide et le contexte réduit (contextLength bas)
Barre latérale de discussion7 à 14 milliards, modèle instruitLà, on accepte d'attendre une réponse construite ; un modèle de base n'est pas adapté à la conversation

Cette asymétrie surprend toujours : on est habitué à ce que plus gros soit mieux. Pour la complétion, un modèle de 1,5 milliard de paramètres, entraîné au remplissage au milieu et servi en version de base, bat en pratique un modèle généraliste de 14 milliards, parce qu'il répond avant que vous ayez fini de réfléchir. L'extension permet de configurer un modèle par fonction — un pour le FIM, un autre pour la discussion — et c'est le bon réglage : les deux n'ont ni la même taille ni le même entraînement.

i
Mesurer la latence, pas la qualité
Pour juger une configuration de complétion, la bonne métrique est le délai avant l'apparition de la suggestion. Au-delà d'environ une demi-seconde, l'outil dérange plus qu'il n'aide, quelle que soit la pertinence de ce qu'il propose.

#Au-delà de la complétion : ce que fait Twinny en 2026

L'extension a beaucoup grossi depuis ses débuts en simple plugin de complétion. Sa page officielle liste aujourd'hui l'édition en ligne (décrire un changement et le relire sous forme de diff dans l'éditeur), un index du poste de travail combinant recherche par mots-clés et recherche vectorielle, une revue de code portant sur l'arbre de travail, une branche ou une pull request GitHub, la génération de messages de commit à partir des modifications indexées, et la génération de commandes de terminal avec correction automatique des erreurs.

Toutes ces fonctions restent rattachées à des commandes VS Code réaffectables et à des modèles de prompt personnalisables. Côté fournisseurs, la liste s'est élargie aux API hébergées (OpenAI, Anthropic, Mistral, DeepSeek, OpenRouter, Gemini, Groq, Cohere, Perplexity) en plus des moteurs locaux (Ollama, LM Studio, llama.cpp, Oobabooga, LiteLLM, Open WebUI) — mais rien n'oblige à en utiliser une : l'usage 100 % local reste la configuration par défaut.

#Gratuit en solo, payant en équipe

En usage individuel, Twinny reste ce qu'il a toujours été : une extension sous licence MIT, sans télémétrie ni connexion obligatoire. La facturation n'apparaît qu'au-delà de cinq développeurs partageant une passerelle d'équipe (twinny-server), qui centralise l'accès aux fournisseurs pour toute l'organisation : gratuite jusqu'à cinq comptes, elle passe ensuite à un tarif par poste et par mois, avec un essai de 30 jours sans carte bancaire. Pour un développeur seul avec Ollama en local, aucune de ces conditions ne s'applique et l'extension reste entièrement utilisable sans jamais créer de compte.

#Twinny ou un agent d'édition

Trois familles d'assistance au code
BesoinOutil
Finir la ligne en cours, sans y penserTwinny — la complétion en ligne (FIM)
Modifier plusieurs fichiers sur consigneUn agent d'édition intégré à l'éditeur (Roo Code, Cline)
Exécuter une tâche complète sans supervisionUn agent autonome en terminal ou conteneur
Relire du code avant un commitLa fonction de revue de code de Twinny, ou un assistant conversationnel dédié

Les deux usages ne s'excluent pas. Beaucoup de développeurs gardent Twinny actif en permanence pour la complétion en ligne — invisible, rapide, avec un petit modèle dédié — et basculent vers un agent d'édition comme Roo Code ou Cline pour une tâche qui touche plusieurs fichiers, avec un modèle plus grand qu'ils acceptent d'attendre quelques secondes.

#FAQ

Twinny est-il gratuit ?+
Oui pour un usage individuel : l'extension est sous licence MIT, open source, sans télémétrie ni compte obligatoire, et les modèles qu'elle utilise tournent chez vous. La facturation ne concerne que la passerelle d'équipe partagée par plus de cinq développeurs, à partir de 6 $ par poste et par mois après un essai gratuit de 30 jours.
Quel modèle pour la complétion en ligne ?+
Un petit modèle de base entraîné au remplissage au milieu (FIM), pas un modèle de discussion. La documentation officielle recommande qwen2.5-coder:1.5b-base, qui répond en moins d'une seconde sur la plupart des machines et reste pertinent sur les quelques lignes suivantes. Un modèle instruit ou plus gros répond souvent trop tard pour rester utile pendant la frappe, même s'il est meilleur sur une question longue.
Pourquoi mes suggestions ignorent-elles la suite du fichier ?+
Le modèle choisi ne gère probablement pas le remplissage au milieu, ou c'est un modèle instruit plutôt qu'un modèle de base : la documentation précise qu'un modèle de base gère mieux un suffixe vide qu'un modèle instruit. Vérifiez la fiche du modèle et le gabarit FIM configuré dans l'extension.
Comment réduire la latence des suggestions ?+
Baissez d'abord twinny.numPredictFim (512 tokens par défaut), puis twinny.contextLength (100 lignes avant et après le curseur par défaut) ; laissez twinny.fileContextEnabled désactivé si le projet est volumineux, et gardez le modèle chargé en mémoire côté Ollama entre deux suggestions. Ce sont les réglages que la documentation officielle cite en priorité pour la latence perçue par l'utilisateur.
Faut-il une grosse carte graphique ?+
Non, et c'est la bonne nouvelle : un modèle de complétion de 1,5 milliard de paramètres tient dans quelques gigaoctets de VRAM et répond vite même sur du matériel modeste, à condition de rester sur un modèle de base dédié au FIM plutôt qu'un généraliste.
Twinny ou un agent d'édition comme Roo Code ou Cline ?+
Ce ne sont pas les mêmes outils. Twinny complète la ligne en cours avec un petit modèle rapide ; un agent d'édition modifie plusieurs fichiers sur consigne avec un modèle plus grand. Beaucoup de développeurs utilisent les deux, avec des modèles différents pour chaque usage.
Twinny fait-il autre chose que compléter du code ?+
Oui : depuis ses dernières versions, l'extension ajoute l'édition en ligne par diff, un index du poste de travail (recherche mots-clés et vectorielle), la revue de code sur l'arbre de travail ou une pull request, et la génération de messages de commit et de commandes de terminal.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.