Intermedio 11 minIDE

Twinny: l'autocompletamento di codice al 100% locale

Risposta diretta

Twinny è un'estensione gratuita e open source per VS Code (licenza MIT) che esegue il completamento del codice sulla tua macchina, tramite Ollama, LM Studio o llama.cpp. Per la riga corrente, un piccolo modello di base addestrato al completamento della parte centrale del codice, come qwen2.5-coder:1.5b-base, risponde in meno di un secondo. Per l'uso individuale non è necessario alcun abbonamento; la fatturazione riguarda solo i team con più di cinque sviluppatori.

Twinny è un'estensione per editor che offre il completamento del codice in locale: propone la continuazione di ciò che stai scrivendo, usando un modello eseguito sulla tua macchina. È la categoria con i requisiti di latenza più stringenti dell'intero ecosistema — un suggerimento che arriva in due secondi è un suggerimento inutile — ed è per questo che la scelta del modello segue regole inverse rispetto al resto. Questa guida illustra nel dettaglio le impostazioni che fanno la differenza e le funzionalità acquisite dall'estensione dai suoi esordi.

Di Mohamed Meguedmi·Agg. 2026-09-29·Testato su Windows, macOS e Linux

#Cosa fa Twinny

Nell'estensione convivono storicamente due funzioni: il completamento inline, che mostra un suggerimento in grigio durante la digitazione, e una barra laterale di chat per porre domande sul codice selezionato. Entrambe si basano su un modello locale, servito da Ollama, LM Studio o llama.cpp, e per impostazione predefinita nulla esce dalla macchina.

L'interesse è evidente nei contesti in cui il codice non deve uscire: studio professionale, amministrazione, codice di un cliente soggetto a un accordo di riservatezza. L'argomento non è il costo — è che la domanda «dove finisce il mio codice» ha una risposta verificabile. Il progetto stesso si presenta come l'assistente IA per VS Code che rimane all'interno della tua rete.

#Il dettaglio che cambia tutto: il completamento nel mezzo

Il kit Copilota Locale

Questa guida ti porta al modello. Il kit ti porta al copilota che scrive codice nel tuo editor.

  • Spazio online a vita
  • PDF + file
  • Aggiornamenti a vita

Completare del codice non è continuare un testo. Quando scrivi al centro di una funzione, il modello deve tenere conto di ciò che precede E di ciò che segue. Questa capacità ha un nome — il riempimento al centro, o FIM (fill-in-the-middle) — e non tutti i modelli la possiedono: la documentazione ufficiale è chiara su questo punto, il fornitore di completamento deve usare un modello addestrato per il FIM, ogni famiglia di modelli utilizza token diversi per indicare il prefisso, il suffisso e la zona da completare.

È la principale fonte di delusione. Un ottimo modello conversazionale orientato al codice, senza questa capacità, produrrà suggerimenti che ignorano il resto del file e richiudono parentesi graffe già presenti. Un altro punto che molti ignorano: la documentazione consiglia un modello base anziché una variante addestrata a seguire istruzioni, perché un modello base continua un testo grezzo in modo più affidabile di quanto gestisca un suffisso vuoto, soprattutto quando non c'è nulla dopo il cursore.

→
Il modello raccomandato dalla documentazione
«Usa un modello base, piccolo e sulla GPU. qwen2.5-coder:1.5b-base risponde in molto meno di un secondo sulla maggior parte delle macchine» — questa è la raccomandazione ufficiale per il completamento inline.

#Impostazioni che rendono l'esperienza fluida

Quattro impostazioni, documentate dal progetto, offrono la maggior parte del miglioramento della latenza percepita. Si trovano nelle impostazioni dell'estensione (prefisso twinny.) e possono essere tutte modificate senza riavviare Ollama.

I quattro parametri che controllano la latenza percepita
ParametroValore predefinitoEffetto
twinny.debounceWait300 msTempo dopo l'ultima digitazione prima di avviare la richiesta; aumentarlo riduce il numero di chiamate
twinny.numPredictFim512 tokenNumero massimo di token generati per suggerimento; ridurlo accelera la risposta
twinny.contextLength100 righeQuantità di codice inviata intorno al cursore; ridurla riduce la latenza
twinny.fileContextEnableddisattivato per impostazione predefinitaInvio di estratti di altri file aperti correlati (fino a 3); utile in un progetto di grandi dimensioni, ma aumenta la latenza
  1. 01
    Limitare il numero di token generati
    Un completamento utile è lungo una o due righe. La documentazione lo conferma: se i suggerimenti arrivano in ritardo, la prima cosa da ridurre è numPredictFim, non il modello.
  2. 02
    Regolare il ritardo di attivazione
    Attivare il completamento a ogni pressione di un tasto satura il server; il ritardo predefinito di 300 ms (debounceWait) basta nella maggior parte dei casi e riduce il numero di chiamate.
  3. 03
    Mantenere il modello caricato in Ollama
    Se il server rimuove il modello dalla memoria dopo alcuni minuti di inattività, il primo suggerimento dopo una pausa arriva troppo tardi. Si prolunga quindi il tempo di permanenza in memoria in Ollama (keep_alive).
  4. 04
    Ridurre la finestra di contesto inviata
    La documentazione lo dice esplicitamente: se i suggerimenti sembrano arrivare in ritardo, ridurre contextLength (100 righe per impostazione predefinita prima/dopo il cursore) o lasciare fileContextEnabled disattivato, come previsto dall'impostazione predefinita. Questo parametro aggiunge estratti di altri file aperti solo se lo attivi tu.

#Cosa vede veramente il modello

Un suggerimento non si basa soltanto sul prefisso e sul suffisso intorno al cursore. La documentazione descrive in dettaglio le fonti che Twinny raccoglie prima di costruire il prompt: le righe circostanti (contextLength), le ultime modifiche apportate al file sotto forma di piccoli diff (recentEditsEnabled, abilitato per impostazione predefinita, fino a 6 modifiche), i simboli e la firma della chiamata in corso forniti dal server di linguaggio (lspContextEnabled, abilitato per impostazione predefinita) e, facoltativamente, estratti da altri file aperti correlati (fileContextEnabled, disabilitato per impostazione predefinita).

Modifiche recenti
Una rinomina completata a metà o un pattern applicato manualmente a un file si propaga nei suggerimenti successivi, come se comprendesse ciò che stai facendo.
Contesto IntelliSense
Il modello riceve i nomi e la firma dell'invocazione in cui si trova il cursore, forniti dal server di linguaggio dell'editor.
File vicini
Disattivato per impostazione predefinita: attivarlo solo per un progetto di grandi dimensioni, perché aumenta la latenza a fronte di un beneficio variabile.

Un altro dettaglio utile in pratica: scrivere prima un commento di una riga che descriva ciò che segue, poi fare una pausa, dà al suggerimento su più righe un obiettivo chiaro — è il consiglio che dà la documentazione stessa per ottenere suggerimenti migliori. Assegnare nomi chiari alle proprie variabili e funzioni resta, prima di qualsiasi regolazione, l'accorgimento che incide maggiormente sulla pertinenza.

i
Eseguire il modello su un altro dei tuoi dispositivi
Oltre a Ollama, LM Studio e llama.cpp in locale, Twinny offre un abbinamento diretto tra dispositivi («Devices»): la postazione di lavoro utilizza la GPU di un'altra delle tue macchine tramite una connessione crittografata peer-to-peer, senza account né relay.

#Quali modelli e perché così piccoli?

Le regole sono invertite rispetto alla discussione
UsoDimensione consigliataPerché
Completamento inline (FIM)Da 1,5 a 3 miliardi, modello baseLa latenza ha la priorità: qwen2.5-coder:1.5b-base risponde in meno di un secondo sulla maggior parte delle macchine, secondo la documentazione ufficiale
Completamento su una scheda grafica potente7 miliardiValutabile se la scheda è veloce e il contesto è ridotto (contextLength basso)
Barra laterale della chatDa 7 a 14 miliardi, modello addestrato a seguire istruzioniIn questo caso si accetta di aspettare una risposta articolata; un modello di base non è adatto alla conversazione

Questa asimmetria sorprende sempre: siamo abituati a pensare che più grande sia meglio. Per il completamento, un modello da 1,5 miliardi di parametri, addestrato a riempire la parte centrale mancante e servito nella versione base, supera in pratica un modello generalista da 14 miliardi, perché risponde prima che tu abbia finito di riflettere. L'estensione permette di configurare un modello per ogni funzione — uno per il FIM, un altro per la conversazione — ed è l'impostazione giusta: i due non hanno né la stessa dimensione né lo stesso addestramento.

i
Misurare la latenza, non la qualità
Per valutare una configurazione di completamento, la metrica corretta è il tempo che precede la comparsa del suggerimento. Oltre circa mezzo secondo, lo strumento disturba più di quanto aiuti, indipendentemente dalla pertinenza di ciò che propone.

#Oltre il completamento: cosa fa Twinny nel 2026

L'estensione è cresciuta molto dal suo debutto come semplice plugin di completamento. La sua pagina ufficiale elenca oggi la modifica inline (descrivere una modifica e rivederla sotto forma di diff nell'editor), un indice dell'ambiente di lavoro che combina ricerca per parole chiave e ricerca vettoriale, una revisione del codice che riguarda l'albero di lavoro, un branch o una pull request GitHub, la generazione di messaggi di commit a partire dalle modifiche aggiunte all'area di staging e la generazione di comandi da terminale con correzione automatica degli errori.

Tutte queste funzioni restano associate a comandi di VS Code personalizzabili e a modelli di prompt personalizzabili. Da parte dei fornitori, l'elenco si è ampliato alle API ospitate (OpenAI, Anthropic, Mistral, DeepSeek, OpenRouter, Gemini, Groq, Cohere, Perplexity) nonché ai motori locali (Ollama, LM Studio, llama.cpp, Oobabooga, LiteLLM, Open WebUI) — ma nulla obbliga a usarne uno: l'uso del 100% locale rimane la configurazione predefinita.

#Gratuito per uso individuale, a pagamento per i team

Per l'uso individuale, Twinny resta ciò che è sempre stato: un'estensione con licenza MIT, senza telemetria né connessione obbligatoria. Il pagamento è previsto solo oltre cinque sviluppatori che condividono un gateway di team (twinny-server), che centralizza l'accesso ai fornitori per l'intera organizzazione: gratuito fino a cinque account, passa poi a una tariffa per postazione al mese, con una prova di 30 giorni senza carta di credito. Per uno sviluppatore che lavora da solo con Ollama in locale, nessuna di queste condizioni si applica e l'estensione resta interamente utilizzabile senza mai creare un account.

#Twinny o un agente di editing

Tre categorie di assistenza alla programmazione
EsigenzaStrumento
Completare la riga in corso, senza pensarciTwinny — completamento inline (FIM)
Modificare più file su istruzioneUn agente di editing integrato nell'editor (Roo Code, Cline)
Eseguire un compito completo senza supervisioneUn agente autonomo nel terminale o in un container
Rileggere il codice prima di un commitLa funzione di revisione del codice di Twinny, oppure un assistente conversazionale dedicato

I due usi non si escludono a vicenda. Molti sviluppatori mantengono Twinny sempre attivo per il completamento inline — invisibile, rapido, con un piccolo modello dedicato — e passano a un agente di editing come Roo Code o Cline per un compito che coinvolge più file, usando un modello più grande per la cui risposta accettano di aspettare qualche secondo.

#FAQ

Twinny è gratuito?+
Sì per un uso individuale: l'estensione è distribuita con licenza MIT, è open source, non prevede telemetria né un account obbligatorio, e i modelli che utilizza vengono eseguiti in locale da te. La fatturazione riguarda solo il gateway del team condiviso da più di cinque sviluppatori, a partire da 6 $ per postazione al mese dopo una prova gratuita di 30 giorni.
Quale modello per il completamento inline?+
Un piccolo modello di base addestrato al completamento della parte centrale (FIM), non un modello di chat. La documentazione ufficiale consiglia qwen2.5-coder:1.5b-base, che risponde in meno di un secondo sulla maggior parte delle macchine e rimane pertinente per le poche righe successive. Un modello addestrato a seguire istruzioni o più grande risponde spesso troppo tardi per essere utile durante la digitazione, anche se è migliore su una domanda lunga.
Perché i miei suggerimenti ignorano la parte successiva del file?+
Il modello scelto probabilmente non gestisce il completamento nella parte centrale, oppure è un modello addestrato a seguire istruzioni anziché un modello base: la documentazione specifica che un modello base gestisce meglio un suffisso vuoto rispetto a un modello addestrato a seguire istruzioni. Controlla la scheda del modello e il template FIM configurato nell'estensione.
Come ridurre la latenza dei suggerimenti?+
Riduci prima twinny.numPredictFim (512 token per impostazione predefinita), poi twinny.contextLength (100 righe prima e dopo il cursore per impostazione predefinita); lascia twinny.fileContextEnabled disattivato se il progetto è di grandi dimensioni e mantieni il modello caricato in memoria in Ollama tra un suggerimento e l'altro. Sono queste le impostazioni che la documentazione ufficiale cita come prioritarie per la latenza percepita dall'utente.
Serve una scheda grafica potente?+
No, e questa è la buona notizia: un modello di completamento con 1,5 miliardi di parametri occupa pochi gigabyte di VRAM e risponde velocemente anche su hardware modesto, a condizione di usare un modello di base dedicato al FIM anziché un modello generalista.
Twinny o un agente di editing come Roo Code o Cline?+
Non sono gli stessi strumenti. Twinny completa la riga corrente con un modello piccolo e veloce; un agente di editing modifica diversi file seguendo le istruzioni con un modello più grande. Molti sviluppatori usano entrambi, con modelli diversi per ogni uso.
Twinny fa anche altro oltre a completare il codice?+
Sì: nelle sue versioni più recenti, l'estensione aggiunge la modifica inline tramite diff, un indice della postazione di lavoro (ricerca per parole chiave e ricerca vettoriale), la revisione del codice sull'albero di lavoro o su una pull request e la generazione di messaggi di commit e comandi di terminale.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.