Engenheira da Thomson Reuters roda agente offline com Qwen3.5 9B nos Himalaias
Rittika Jindal, principal engineer da Thomson Reuters, mora nos contrafortes dos Himalaias, onde a conexão e a energia caem com frequência. Para não perder o agente de programação junto com a internet, ela o rodou inteiramente em um Mac, com OpenCode, Ollama e o modelo aberto Qwen3.5 9B. O teste foi bem claro. Com o Wi-Fi desligado e nenhum host externo sendo resolvido, o agente encontrou um bug em uma calculadora de despesas, corrigiu uma linha e rodou os testes. Os cinco passaram. Há uma condição: o projeto, as dependências e o modelo precisam ser baixados antes. • O modelo de 9B baixado ocupa de 6,6 a 7,6 GB, e para um contexto de 64k é melhor reservar mais memória • O OpenCode pede permissão para cada edição e cada comando • Os outros dois exercícios, um relatório em CSV e um analisador de logs, ainda não foram executados offline
Processado por IA de Latent Space (swyx); editado por Hamidun News
A conexão nos contrafortes dos Himalaias cai com a mesma regularidade que a energia. É ali que mora Rittika Jindal, Principal Engineer da Thomson Reuters. Ela quis descobrir quanto do fluxo de trabalho com um agente de programação sobrevive quando a internet some por completo. A resposta foi concreta. A combinação de OpenCode 1.19.4, Ollama e o modelo aberto Qwen3.5 9B, em um único Mac, encontra o bug, propõe a correção e roda os testes com o Wi-Fi desligado. O exemplo é pequeno: um conserto de uma linha, depois do qual os cinco testes passam. Em compensação, a stack é reproduzível e está descrita até os comandos.
Como a stack offline foi montada
A divisão de papéis é simples. O Ollama hospeda o modelo e sobe um serviço local, enquanto o OpenCode lê os arquivos do projeto, propõe edições e executa comandos. O arquivo opencode.json aponta tanto o modelo principal quanto o auxiliar (model e small_model) para o Qwen3.5 9B, e o baseURL é http://127.0.0.1:11434/v1. Apenas o provedor local está habilitado, as ferramentas web estão bloqueadas, e o agente pede permissão para editar arquivos e executar comandos de shell. O Ollama é iniciado com OLLAMA_NO_CLOUD=1 e contexto OLLAMA_CONTEXT_LENGTH=65536. O modelo é baixado com o comando ollama pull qwen3.5:9b, enquanto ainda há internet. A execução usa a flag --pure, que desativa plugins externos.
Entre as alternativas, a autora cita o Aider: ele também funciona com o Ollama e serve para quem prefere um fluxo de edição mais guiado.
Qual modelo escolher e quanta memória ele exige
Para escolher, a autora usou os resultados publicados no model card do Qwen, e não medições próprias no notebook. O LiveCodeBench v6 avalia a geração de código, e o BFCL-V4 avalia a chamada de funções, ou seja, a capacidade do agente de escolher a ferramenta e passar os argumentos corretos.
- Qwen3.5 4B: LiveCodeBench v6 — 55,8; BFCL-V4 — 50,3; download de 3,3–4,0 GB.
- Qwen3.5 9B (usado no teste): 65,6 e 66,1; download de 6,6–7,6 GB.
- Qwen3.5 27B: download de 17–20 GB; o material não traz benchmarks.
- gpt-oss-20b: LiveCodeBench v6 — 74,6; BFCL-V4 não publicado.
A versão de 9 bilhões de parâmetros foi escolhida por ter uma chamada de ferramentas bem melhor que a do 4B. O tamanho do download, porém, não equivale ao requisito de RAM. Para a build do Qwen3.5 9B de 6,6 GB, a Voltti recomenda reservar 12–16 GB de memória, e uma configuração com contexto de 64k pode exigir mais. Também é preciso deixar folga para outros aplicativos.
O material analisa à parte o próprio scaffold. O preprint The Scaffold Effect in Coding Agents comparou OpenCode, Goose e OpenHands-SDK em 50 tarefas do Terminal-Bench Pro, com dois modelos de nuvem:
- Qwen3.6 Plus: Goose — 48% [34–62%], OpenCode — 50% [36–64%], OpenHands-SDK — 50% [36–64%].
- MiniMax M2.5: Goose — 38% [24–52%], OpenCode — 46% [32–60%], OpenHands-SDK — 46% [32–60%].
Os intervalos de confiança de 95% se sobrepõem, e os autores alertam que a maioria das diferenças não é estatisticamente clara. Já o consumo de tokens varia muito: o OpenCode gasta cerca de 40 vezes mais tokens por tarefa resolvida do que o Goose. Em uma API de nuvem, isso significa dinheiro direto. Em um modelo local, significa tempo de geração e pressão sobre o contexto. Esses números não servem de previsão para o 9B no notebook, já que os testes usaram modelos de nuvem.
O que mostrou o teste com o Wi-Fi desligado
O projeto de teste é um cálculo de despesas: cinco gastos, incluindo um estorno, com total correto de 25,50. O programa inicial imprime 8,00, o valor do último gasto, porque a função sobrescreve a soma a cada iteração. Três testes falham: aritmética decimal, estornos e o exemplo com dados reais. Os testes de entrada vazia e de um único item passam.
Com a internet ativa, o agente recebeu uma solicitação de diagnóstico e leu o código, mas primeiro sugeriu o pytest, embora o projeto use o unittest nativo. A permissão para executar permitiu ver o comando antes de ele rodar. A conclusão da autora: da próxima vez, incluir no prompt o comando python3 -m unittest -v.
Depois de verificar o Ollama com curl no localhost, a autora desligou o Wi-Fi. Uma requisição a um endereço externo terminou com o erro Could not resolve host. O agente propôs a correção `total = Decimal(amount)` → `total += Decimal(amount)`, pediu permissão para editar e rodou os testes. Em seguida, a própria autora executou a verificação: os cinco testes ficaram verdes, e o arquivo de testes não foi alterado.
Os outros dois exercícios, o relatório em CSV e o analisador de logs, com sete testes cada, estão no repositório, mas ainda não têm execuções offline. A tarefa do CSV deve ser uma prova mais honesta, porque ali o agente precisa escrever uma função, e não corrigir uma linha.
A conclusão prática para quem trabalha no trem, no avião ou em área de rede ruim: tudo o que for necessário deve estar no disco antes de a conexão cair. Isso inclui o modelo, as dependências do projeto e a documentação. Rode exatamente a configuração que será usada offline. Dê ao agente o comando exato dos testes e mantenha as tarefas estreitas: um bug ou uma funcionalidade pequena. Confira o diff e execute você mesmo os testes originais. Fique de olho na memória: o contexto de 64k e os aplicativos abertos consomem o que sobra depois do modelo. O experimento ainda não testou um repositório grande nem um framework desconhecido.
- 28 de out. de 2026SLICE-Mem: memória de agentes LLM sem geração reduz consumo de tokens em 92–99%
- 28 de out. de 2026Moonshot lança Kimi K3.1 Pro: 2,8 trilhões de parâmetros e pesos abertos em 4 de novembro
- 28 de out. de 2026Apertus 1.5, da Suíça, ganha visão, audição e contexto de 262 mil tokens
- 28 de out. de 2026NVIDIA lança Nemotron 3.5 Super VL, de 120B, e os modelos Bolt para agentes locais
Perguntas frequentes sobre a notícia
Como a stack offline foi montada?
A divisão de papéis é simples. O Ollama hospeda o modelo e sobe um serviço local, enquanto o OpenCode lê os arquivos do projeto, propõe edições e executa comandos. O arquivo opencode.json aponta tanto o modelo principal quanto o auxiliar (model e small_model) para o Qwen3.5 9B, e o baseURL é http://127.0.0.1:11434/v1. Apenas o provedor local está habilitado, as ferramentas web estão bloqueadas, e o agente pede permissão para editar arquivos e executar comandos de shell. O Ollama é iniciado com OLLAMA_NO_CLOUD=1 e contexto OLLAMA_CONTEXT_LENGTH=65536. O modelo é baixado com
O que se sabe sobre Qual modelo escolher e quanta memória ele exige?
Para escolher, a autora usou os resultados publicados no model card do Qwen, e não medições próprias no notebook. O LiveCodeBench v6 avalia a geração de código, e o BFCL-V4 avalia a chamada de funções, ou seja, a capacidade do agente de escolher a ferramenta e passar os argumentos corretos. Qwen3.5 4B: LiveCodeBench v6 — 55,8; BFCL-V4 — 50,3; download de 3,3–4,0 GB. Qwen3.5 9B (usado no teste): 65,6 e 66,1; download de 6,6–7,6 GB. Qwen3.5 27B: download de 17–20 GB; o material não traz benchmarks. gpt-oss-20b: LiveCodeBench v6 — 74,6; BFCL-V4 não publicado. A versão de 9 bil
O que mostrou o teste com o Wi-Fi desligado?
O projeto de teste é um cálculo de despesas: cinco gastos, incluindo um estorno, com total correto de 25,50. O programa inicial imprime 8,00, o valor do último gasto, porque a função sobrescreve a soma a cada iteração. Três testes falham: aritmética decimal, estornos e o exemplo com dados reais. Os testes de entrada vazia e de um único item passam. Com a internet ativa, o agente recebeu uma solicitação de diagnóstico e leu o código, mas primeiro sugeriu o pytest, embora o projeto use o unittest nativo. A permissão para executar permitiu ver o comando antes de ele rodar. A c
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.