Intermediário 11 minIDE

Twinny: autocompletamento de código 100 % locale

Resposta direta

Twinny é uma extensão gratuita e open source para VS Code (licença MIT) que executa o preenchimento automático de código na sua própria máquina, via Ollama, LM Studio ou llama.cpp. Para a linha atual, um pequeno modelo de base treinado para preenchimento no meio, como qwen2.5-coder:1.5b-base, responde em menos de um segundo. Nenhuma assinatura é necessária para uso individual; a cobrança se aplica apenas a equipes com mais de cinco desenvolvedores.

O Twinny é uma extensão de editor que realiza autocompletação de código localmente: ela sugere a continuação do que você está escrevendo, com base em um modelo servido pela sua própria máquina. É a categoria mais exigente em termos de latência de todo o ecossistema — uma sugestão que chega em dois segundos é inútil — e por isso a escolha do modelo segue regras opostas às do restante do ecossistema. Este guia detalha as configurações que fazem a diferença e o que a extensão ganhou desde seus primórdios.

Por Mohamed Meguedmi·Atualização 2026-09-29·Testado no Windows, macOS e Linux

#O que o Twinny faz

Historicamente, duas funções coexistem na extensão: a autocompletação inline, que exibe uma sugestão em cinza durante a digitação, e uma barra lateral de chat para fazer perguntas sobre o código selecionado. Ambas usam um modelo local, servido pelo Ollama, LM Studio ou llama.cpp, e nada sai da máquina por padrão.

O interesse é evidente em um contexto em que o código não deve sair: escritório, administração, código de cliente sob acordo de confidencialidade. O argumento não é o custo — é que a pergunta “para onde vai meu código” tem uma resposta verificável. O projeto se apresenta como o assistente de IA para VS Code que permanece dentro da sua rede.

#O detalhe que muda tudo: preenchimento no meio

O kit Copiloto Local

Este guia leva você ao modelo. O kit leva você ao copiloto que programa no seu editor.

  • Espaço online vitalício
  • PDF + arquivos
  • Atualizações vitalícias

Completar código não é continuar um texto. Quando você escreve no meio de uma função, o modelo deve levar em conta o que vem antes E o que vem depois. Essa capacidade tem um nome — preenchimento no meio, ou FIM (fill-in-the-middle) — e nem todos os modelos a possuem: a documentação oficial é explícita sobre esse ponto. O provedor de autocompletar deve usar um modelo treinado para FIM, e cada família de modelos usa tokens distintos para marcar o prefixo, o sufixo e a área a preencher.

É a principal fonte de decepções. Um excelente modelo de conversa voltado para código, sem essa capacidade, produzirá sugestões que ignoram o restante do arquivo e fecham novamente chaves já presentes. Outro ponto que muitos ignoram: a documentação recomenda um modelo base em vez de uma variante ajustada para seguir instruções, pois um modelo base dá continuidade a um texto bruto de forma mais confiável do que lida com um sufixo vazio, especialmente quando não há nada após o cursor.

→
Modelo recomendado pela documentação
« Use um modelo de base, pequeno e na GPU. qwen2.5-coder:1.5b-base responde em bem menos de um segundo na maioria das máquinas » — essa é a recomendação oficial para a autocompletação em linha.

#Configurações que tornam a experiência fluida

Quatro ajustes, documentados pelo projeto, concentram a maior parte da redução da latência percebida. Eles ficam nas configurações da extensão (prefixo twinny.) e todos podem ser ajustados sem reiniciar o Ollama.

Os quatro ajustes que controlam a latência percebida
ParâmetroValor padrãoEfeito
twinny.debounceWait300 msTempo de espera após a última tecla pressionada antes de enviar a requisição; aumentá-lo reduz o número de chamadas
twinny.numPredictFim512 tokensNúmero máximo de tokens gerados por sugestão; reduzi-lo acelera a resposta
twinny.contextLength100 linhasQuantidade de código enviada ao redor do cursor; reduzir isso diminui a latência
twinny.fileContextEnableddesativado por padrãoEnvio de trechos de outros arquivos abertos relacionados (até 3); útil em grandes projetos, mas gera atraso
  1. 01
    Limitar o número de tokens gerados
    Uma sugestão útil de autocompletar tem uma ou duas linhas. A documentação confirma: se as sugestões chegam com atraso, a primeira coisa a reduzir é numPredictFim, não o modelo.
  2. 02
    Ajustar o atraso de acionamento
    Acionar a cada tecla pressionada sobrecarrega o servidor; o intervalo padrão de 300 ms (debounceWait) é suficiente na maioria dos casos e reduz o número de chamadas.
  3. 03
    Manter o modelo carregado no Ollama
    Se o servidor remove o modelo da memória após alguns minutos de inatividade, a primeira sugestão após uma pausa chega tarde demais. Aumentamos o tempo pelo qual o modelo permanece na memória no Ollama (keep_alive).
  4. 04
    Reduzir a janela de contexto enviada
    A documentação diz isso explicitamente: se as sugestões parecerem atrasadas, reduzir contextLength (100 linhas por padrão antes/depois do cursor) ou deixar fileContextEnabled desativado, sua configuração padrão. Esse parâmetro só adiciona trechos de outros arquivos abertos se você o ativar manualmente.

#O que o modelo realmente vê

Uma sugestão não se baseia apenas no prefixo e no sufixo ao redor do cursor. A documentação detalha as fontes que o Twinny reúne antes de construir o prompt: as linhas vizinhas (contextLength), as últimas alterações feitas no arquivo no formato de pequenos diffs (recentEditsEnabled, ativado por padrão, até 6 alterações), os símbolos e a assinatura da chamada atual fornecidos pelo servidor de linguagem (lspContextEnabled, ativado por padrão) e, opcionalmente, trechos de outros arquivos abertos relacionados (fileContextEnabled, desativado por padrão).

Modificações recentes
Um renomeamento parcial ou um padrão aplicado manualmente em um arquivo se propaga nas sugestões seguintes, como se compreendesse o que você está fazendo.
Contexto IntelliSense
O modelo recebe os nomes e a assinatura da chamada em que está o cursor, fornecidos pelo servidor de linguagem do editor.
Arquivos vizinhos
Desativado por padrão: ativar apenas em um projeto grande, pois aumenta a latência em troca de um ganho variável.

Outro detalhe útil na prática: escrever primeiro um comentário de uma linha descrevendo o que vem a seguir, depois fazer uma pausa, dá à sugestão multilinha um objetivo claro — é o conselho que a própria documentação dá para obter melhores sugestões. Nomear claramente suas variáveis e funções continua, antes de qualquer configuração, sendo o fator que mais influencia a relevância.

i
Executar o modelo em outro dispositivo seu
Além do uso local de Ollama, LM Studio e llama.cpp, o Twinny oferece pareamento direto entre dispositivos (« Devices »): a estação de trabalho usa a GPU de outra de suas máquinas por meio de uma conexão criptografada ponto a ponto, sem conta nem retransmissor.

#Quais modelos e por que tão pequenos?

As regras são invertidas em relação à discussão
UsoTamanho recomendadoPor quê
Autocompletar em linha (FIM)1,5 a 3 bilhões, modelo baseA latência é primordial: o qwen2.5-coder:1.5b-base responde em menos de um segundo na maioria das máquinas, de acordo com a documentação oficial
Autocompletação em uma placa de vídeo potente7 bilhõesPode ser uma opção se a placa for rápida e o contexto for reduzido (contextLength baixo)
Barra lateral de conversa7 a 14 bilhões, modelo ajustado para seguir instruçõesNesse caso, aceitamos esperar por uma resposta elaborada; um modelo base não é adequado para conversa

Essa assimetria sempre surpreende: estamos acostumados a pensar que maior é melhor. Para a autocompletação, um modelo de 1,5 bilhão de parâmetros, treinado para preencher trechos no meio e disponibilizado na versão base, supera na prática um modelo generalista de 14 bilhões, porque responde antes de você terminar de pensar. A extensão permite configurar um modelo por função — um para o FIM, outro para a conversa — e essa é a configuração correta: os dois não têm o mesmo tamanho nem o mesmo treinamento.

i
Medir a latência, não a qualidade
Para avaliar uma configuração de autocompletar, a métrica correta é o tempo até o aparecimento da sugestão. Acima de cerca de meio segundo, a ferramenta incomoda mais do que ajuda, independentemente da relevância do que propõe.

#Além da autocompletação: o que o Twinny faz em 2026

A extensão cresceu muito desde que começou como um simples plugin de autocompletar. Sua página oficial lista hoje a edição inline (descrever uma alteração e revisá-la em forma de diff no editor), um índice da estação de trabalho que combina busca por palavras-chave e busca vetorial, uma revisão de código da árvore de trabalho, de uma branch ou de uma pull request do GitHub, a geração de mensagens de commit a partir das alterações indexadas e a geração de comandos de terminal com correção automática de erros.

Todas essas funcionalidades continuam vinculadas a comandos do VS Code que podem ser reatribuídos e a modelos de prompt personalizáveis. Quanto aos fornecedores, a lista passou a incluir APIs hospedadas (OpenAI, Anthropic, Mistral, DeepSeek, OpenRouter, Gemini, Groq, Cohere, Perplexity), além dos mecanismos de execução locais (Ollama, LM Studio, llama.cpp, Oobabooga, LiteLLM, Open WebUI) — mas nada obriga você a usar uma dessas APIs: o uso 100% local continua sendo a configuração padrão.

#Gratuito individualmente, pago em equipe

No uso individual, o Twinny continua sendo o que sempre foi: uma extensão sob licença MIT, sem telemetria nem conexão obrigatória. A cobrança só começa quando mais de cinco desenvolvedores compartilham um gateway de equipe (twinny-server), que centraliza o acesso aos provedores para toda a organização: gratuito para até cinco contas, ele passa então a ter uma tarifa por licença de usuário por mês, com um teste de 30 dias sem cartão de crédito. Para um desenvolvedor que trabalha sozinho com Ollama em execução local, nenhuma dessas condições se aplica, e a extensão continua totalmente utilizável sem que seja necessário criar uma conta em momento algum.

#Twinny ou um agente de edição

Três famílias de assistência ao código
NecessidadeFerramenta
Finalizar a linha em andamento, sem pensar nissoTwinny — autocompletar em linha (FIM)
Modificar vários arquivos conforme instruçãoAgente de edição integrado ao editor (Roo Code, Cline)
Executar uma tarefa completa sem supervisãoUm agente autônomo no terminal ou em contêiner
Revisar código antes de um commitA função de revisão de código do Twinny, ou um assistente conversacional dedicado

Os dois usos não se excluem. Muitos desenvolvedores mantêm o Twinny ativo o tempo todo para a autocompletação inline — invisível, rápida, com um modelo pequeno dedicado — e passam para um agente de edição como Roo Code ou Cline quando uma tarefa envolve vários arquivos, usando um modelo maior por cuja resposta aceitam esperar alguns segundos.

#FAQ

O Twinny é gratuito?+
Sim, para uso individual: a extensão está sob licença MIT, é open source, não tem telemetria nem exige uma conta, e os modelos que ela utiliza rodam em sua máquina. A cobrança se aplica apenas ao gateway de equipe compartilhado por mais de cinco desenvolvedores, a partir de 6 $ por usuário e por mês após um teste gratuito de 30 dias.
Qual modelo usar para a autocompletação inline?+
Um pequeno modelo de base treinado para preenchimento no meio (FIM), não um modelo de conversa. A documentação oficial recomenda qwen2.5-coder:1.5b-base, que responde em menos de um segundo na maioria das máquinas e continua fornecendo sugestões pertinentes para as próximas poucas linhas. Um modelo ajustado para seguir instruções ou maior geralmente responde tarde demais para ser útil durante a digitação, mesmo sendo melhor em uma pergunta longa.
Por que as minhas sugestões ignoram o restante do arquivo?+
O modelo escolhido provavelmente não suporta preenchimento no meio, ou é um modelo ajustado para seguir instruções em vez de um modelo base: a documentação especifica que um modelo base lida melhor com um sufixo vazio do que um modelo ajustado para seguir instruções. Verifique a ficha do modelo e o template FIM configurado na extensão.
Como reduzir a latência das sugestões?+
Reduza primeiro twinny.numPredictFim (512 tokens por padrão), depois twinny.contextLength (100 linhas antes e depois do cursor por padrão); mantenha twinny.fileContextEnabled desativado se o projeto for grande e mantenha o modelo carregado na memória no Ollama entre duas sugestões. Esses são os ajustes que a documentação oficial cita como prioritários para a latência percebida pelo usuário.
É necessária uma placa de vídeo potente?+
Não, e essa é a boa notícia: um modelo de autocompletação com 1,5 bilhão de parâmetros cabe em alguns gigabytes de VRAM e responde rapidamente mesmo em hardware modesto, desde que você use um modelo base dedicado ao FIM em vez de um generalista.
Twinny ou um agente de edição como Roo Code ou Cline?+
Não são as mesmas ferramentas. O Twinny completa a linha atual com um modelo pequeno e rápido; um agente de edição modifica vários arquivos conforme as instruções, com um modelo maior. Muitos desenvolvedores usam os dois, com modelos diferentes para cada uso.
O Twinny faz algo além de completar código?+
Sim: desde suas versões mais recentes, a extensão oferece edição inline por diff, um índice da estação de trabalho (busca por palavras-chave e busca vetorial), revisão de código na árvore de trabalho ou em uma pull request, além da geração de mensagens de commit e comandos de terminal.
Este guia ajudou você?

Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.