Como rodar um agente de código totalmente offline com OpenCode, Ollama e Qwen3.5
Um roteiro documentado por uma engenheira da Thomson Reuters mostra como montar um agente de código que roda inteiro no laptop, sem nuvem, usando OpenCode, Ollama e o modelo aberto Qwen3.5.

Por que programar sem internet virou pauta de IA
Rittika Jindal é Principal Engineer na Thomson Reuters e se mudou para o sopé do Himalaia há um ano. Em artigo publicado na Latent Space em 27 de outubro, ela conta como passou a planejar o trabalho em torno de quedas de rede e de energia, algo que antes nem entrava na equação.
Me mudei para o sopé do Himalaia há um ano. Adoro a paz de viver aqui, mas isso também traz seus próprios desafios, incluindo quedas de rede e de energia.
I moved to the foothills of the Himalayas a year ago. I love the peace of living here, but it also comes with its own challenges, including network and power outages.Rittika Jindal, Principal Engineer na Thomson Reuters
O problema que ela descreve não é exclusivo de morar na montanha. Quem já tentou revisar um pull request no trem, numa cidade do interior com link instável ou durante um voo sabe que a conectividade intermitente também é realidade por aqui. A pergunta que ela se fez é direta: dá para usar um agente de código do jeito que usamos no dia a dia, mas com o Wi-Fi desligado?
As três peças do setup
O roteiro combina três ferramentas, cada uma com um papel bem definido:
- OpenCode: agente de código open source↳Open source71 conteúdosComo o Open Source Está Liberando o Poder da Automação para TodosDev (Back & Front) · out 2025Código aberto: programadores criam software da NASA sem saberDev (Back & Front) · abr 2021N8N: O que é a ferramenta open source que está revolucionando a automação em TI?Dev (Back & Front) · dez 2025Ver tudo em Dev (Back & Front) → que lê arquivos do projeto, propõe edições e roda comandos como a suíte de testes, sempre pedindo permissão antes de agir.
- Ollama: serve o modelo localmente, expondo uma API compatível em
http://127.0.0.1:11434. - Qwen3.5: família de modelos de pesos abertos; você baixa os parâmetros uma vez e roda tudo depois, sem chamada externa.
Se você prefere um fluxo de edição mais guiado, o Aider também aparece como opção no texto original, já que também suporta Ollama. Jindal optou por manter tudo no terminal com OpenCode para que a configuração e os resultados ficassem consistentes ao longo do relato.
Qual tamanho de Qwen escolher
A escolha do modelo não foi aleatória. Jindal comparou os números publicados no model card do Qwen em dois benchmarks: o LiveCodeBench v6, que mede geração de código, e o BFCL-V4, que avalia function calling (a capacidade de escolher a ferramenta certa e passar os argumentos corretos).
| Modelo | LiveCodeBench v6 | BFCL-V4 |
|---|---|---|
| Qwen3.5 4B | 55,8 | 50,3 |
| Qwen3.5 9B (usado no roteiro) | 65,6 | 66,1 |
| gpt-oss-20b | 74,6 | não reportado |
Esses números vêm do model card do Qwen, não de medição feita no laptop usado no artigo. A 9B venceu a 4B nos dois critérios, o que justificou a escolha como ponto de partida, mas a tabela não diz nada sobre velocidade real nem sobre o comportamento do modelo dentro do fluxo completo do OpenCode.
Quanto de RAM isso realmente exige
O tamanho do download não é a mesma coisa que o requisito de memória, e essa é uma pegadinha comum em quem experimenta modelo local pela primeira vez.
- Qwen3.5 4B: download de aproximadamente 3,3 a 4,0 GB.
- Qwen3.5 9B: download de aproximadamente 6,6 a 7,6 GB.
- Qwen3.5 27B: download de 17 a 20 GB.
A Ollama lista todos os tamanhos disponíveis, e o download varia conforme o formato do runtime. Para o build de 6,6 GB do Qwen3.5 9B, o provedor Voltti recomenda reservar entre 12 e 16 GB de memória; a configuração de 64 mil tokens de contexto usada no OpenCode do roteiro pode pedir ainda mais espaço, então vale sobrar RAM para o contexto e para outros aplicativos abertos.
O que os benchmarks de agente dizem sobre o OpenCode
Um detalhe que o artigo traz e que não costuma aparecer em anúncio de produto: o preprint The Scaffold Effect in Coding Agents comparou OpenCode, Goose e OpenHands-SDK em 50 tarefas do Terminal-Bench Pro, usando dois modelos de nuvem (não o Qwen local).
| Agente | Qwen3.6 Plus | MiniMax M2.5 |
|---|---|---|
| Goose | 48% [34-62%] | 38% [24-52%] |
| OpenCode | 50% [36-64%] | 46% [32-60%] |
Os colchetes mostram intervalo de confiança de 95%, e os autores do estudo avisam que a maior parte das diferenças de taxa de acerto não foi estatisticamente clara. O mesmo estudo reportou que o OpenCode consumiu cerca de 40 vezes mais tokens por tarefa resolvida do que o Goose. Como essas rodadas usaram modelos de nuvem diferentes do Qwen3.5 9B local, elas não servem para prever desempenho no setup offline, mas ajudam a entender por que vale medir antes de confiar.
O roteiro: do setup online ao bug corrigido offline
Com internet ainda disponível, o primeiro passo é clonar o repositório de exemplo da Latent Space e instalar o OpenCode na versão 1.19.4, seguindo o README do projeto. O arquivo opencode.json é a configuração do projeto: nele, model e small_model apontam os dois para o Qwen3.5 9B, baseURL aponta para http://127.0.0.1:11434/v1, só o provedor local fica habilitado, e as ferramentas de web ficam bloqueadas.
Com o terminal B aberto, o comando abaixo sobe o Ollama escutando só em localhost e desativa os recursos de nuvem:
OLLAMA_HOST=127.0.0.1:11434 OLLAMA_NO_CLOUD=1 OLLAMA_CONTEXT_LENGTH=65536 ollama serveNo terminal A, ainda online, baixe o modelo:
ollama pull qwen3.5:9bO exemplo usado no roteiro é um calculador de despesas com um bug clássico: a variável de total é substituída a cada iteração em vez de acumulada. Rodar python3 expense_total.py imprime 8,00 em vez do valor correto, 25,50, e python3 -m unittest -v mostra três testes falhando (aritmética decimal, reembolso e o conjunto de despesas de exemplo).
Ainda online, Jindal abriu o OpenCode direto da pasta do projeto com .tools/node_modules/.bin/opencode --pure e pediu um diagnóstico sem edição: "Leia expense_total.py e rode os testes. Explique o bug sem editar nenhum arquivo." O agente encontrou os testes sozinho, mas propôs pytest por padrão, mesmo o projeto usando unittest nativo do Python, o que confirma um conselho prático: vale incluir o comando de teste exato no prompt desde o início.
Com o diagnóstico validado, é hora de desligar o Wi-Fi e desconectar Ethernet ou compartilhamento de internet do celular. Para confirmar que a rede local ainda funciona e a externa não, dois comandos:
curl --noproxy '*' --fail http://127.0.0.1:11434/api/tags
curl --noproxy '*' --connect-timeout 5 --max-time 10 --head https://example.comO primeiro continua respondendo e lista o qwen3.5:9b baixado; o segundo falha com "Could not resolve host", confirmando que não há saída para a internet. Com isso verificado, o OpenCode é reaberto com o mesmo comando direto, e o prompt de correção pede: "Corrija o bug em expense_total.py para que os testes existentes passem. Não altere os testes nem instale nada. Rode os testes e explique sua correção."
A correção proposta pelo Qwen foi de uma linha: trocar total = Decimal(amount) por total += Decimal(amount), pedindo permissão antes de aplicar a edição e rodando os cinco testes em seguida. Depois que o agente terminou, a verificação foi repetida manualmente fora do OpenCode, confirmando os cinco testes passando e o programa retornando 25,50.
O que ainda falta provar
O repositório de exemplo inclui mais dois exercícios que, até a publicação do artigo, ainda não tinham sido rodados no fluxo offline: um gerador de relatório CSV que agrupa linhas por produto e calcula receita, e um analisador de log com bugs na contagem de erros e na seleção da requisição mais lenta. Os dois já vêm com conjuntos de testes prontos, e são os próximos candidatos naturais para testar o quanto o modelo local aguenta além de um fix de uma linha.
A própria autora é clara sobre o limite do que foi demonstrado: corrigir uma variável que não acumula valor não diz nada sobre como o modelo se sairia num repositório grande ou num framework desconhecido. É um ponto de partida, não uma prova de que o setup escala para o trabalho do dia a dia inteiro.
O que muda pra quem desenvolve no Brasil
Esse roteiro importa menos pelo cenário exótico do Himalaia e mais pelo que ele resolve: rodar um agente de código sem depender de uma chave de API, sem mandar código para servidor de terceiro e sem fatura de token no fim do mês. Para quem trabalha em trem, avião, em região de link instável no interior, ou simplesmente quer testar agentes sem comprometer dados sensíveis de um cliente, é uma alternativa real de testar antes de recomendar.
O preço dessa independência também ficou claro no material: os benchmarks publicados mostram que modelos abertos menores, como o Qwen3.5 9B, ainda ficam atrás de opções maiores em LiveCodeBench e BFCL-V4, e que o próprio OpenCode tende a consumir muito mais tokens por tarefa resolvida do que outros agentes, segundo o estudo do Scaffold Effect. Na prática, isso sugere começar pequeno: tarefas bem delimitadas, com suíte de testes já pronta para checar o resultado, e o comando de teste exato dado ao agente de antemão, como a própria autora recomenda depois do tropeço com pytest.
Fonte: Latent Space
Este artigo foi escrito por Alan Andrade, colunista de inteligência artificial. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.
O padrão por trás dos avanços de IA em matemática explica onde ela falha em produção
Modelos resolveram problemas matemáticos abertos há décadas usando busca em profundidade e verificação automática. O mesmo padrão explica por que agentes de código funcionam bem com testes, mas travam quando não há critério claro de certo e errado.














