Programação e agentes de IA

[Vibe Coder #6] Funcionava ontem e hoje não; por que, se eu não mexi no código?

“Não mexi em uma única linha de código, mas o app que funcionava bem até ontem não funciona hoje.” É a reclamação mais comum nas comunidades de vibe coding e uma das situações que parecem mais misteriosas. Parece coisa de fantasma, mas, na verdade, os suspeitos são poucos. Investigando na ordem, quase sempre você encontra o culpado antes do meio-dia…

5 min de leitura
Imagem de capa de [Vibe Coder #6] Funcionava ontem e hoje não; por que, se eu não mexi no código?

“Não mexi em uma única linha de código, mas o app que funcionava bem até ontem não funciona hoje.” É a reclamação mais comum nas comunidades de vibe coding e uma das situações que parecem mais misteriosas. Parece coisa de fantasma, mas, na verdade, os suspeitos são poucos. Investigando na ordem, quase sempre você encontra o culpado antes do meio-dia.

Primeiro, precisamos corrigir uma premissa. “Não mudei nada” significa apenas “não mudei meu código”. Meu app não roda no vácuo. Ele depende do navegador, de centenas de bibliotecas externas, de servidores de outras empresas (como OpenAI e Supabase) e de um plano de cobrança. Mesmo que eu fique parado, o mundo muda. Esta edição lista as coisas que mudam.

Suspeito 1: cache do navegador — você está vendo uma cópia antiga

Os navegadores armazenam os arquivos baixados uma vez e os reutilizam para ganhar velocidade. Essa cópia armazenada é o cache. O problema aparece quando o app muda para uma versão nova, mas o navegador insiste em usar a cópia antiga. O código novo e o antigo se misturam, causando um comportamento estranho.

Felizmente, a verificação é simples: abra em uma janela anônima (janela de navegação privada). Janelas anônimas não usam o cache; se funcionar ali, o culpado é o cache. Faça uma recarga forçada (Cmd+Shift+R no Mac, Ctrl+Shift+R no Windows) para ignorá-lo e baixar tudo novamente. Este teste de 30 segundos vem primeiro porque, surpreendentemente, muitos incidentes terminam aqui.

Suspeito 2: dependências — o código de outra pessoa mudou

A maior parte do código do meu app, na verdade, não é minha. Para funções comuns como login, renderização de telas e cálculo de datas, uso bibliotecas criadas e publicadas por desenvolvedores do mundo todo. Normalmente, centenas ficam interligadas; nós as chamamos de dependências. A enorme pasta node_modules na pasta do projeto é o depósito delas.

O problema é que essas bibliotecas são atualizadas individualmente. Se você moveu o projeto para outro computador, reinstalou algo ou uma IA adicionou uma biblioteca nova e atualizou as existentes junto, o código pode estar igual, mas o chão sob seus pés mudou. O sintoma geralmente é um erro de build repentino e desconhecido. Nesse caso, envie o erro completo à IA e diga: “As dependências podem ter mudado desde ontem. Verifique isso.” É o mesmo método de comunicação aprendido na parte 5.

Suspeito 3: serviços externos — o servidor de outra pessoa está com problemas

Os serviços externos dos quais meu app depende rodam nos servidores de outras empresas. Esses servidores falham, passam por manutenção e mudam suas políticas.

  • Indisponibilidade: Serviços como OpenAI, Supabase e Vercel mantêm páginas de status (status page). Pesquise “OpenAI status” para verificar imediatamente se há uma indisponibilidade. Se houver, não há nada que eu possa fazer. É só esperar.
  • Limites e expiração: Estes são suspeitos mais silenciosos. Os créditos gratuitos acabaram, o plano gratuito excedeu o uso mensal ou o cartão cadastrado expirou. O serviço retira silenciosamente hoje a cortesia de ontem. Abra as seções Usage e Billing no painel de cada serviço para ver na hora.

Suspeito 4: na verdade, o eu de ontem — eu mudei alguma coisa

O último suspeito é aquela pessoa que não queremos admitir: nós mesmos. Talvez eu tenha corrigido “só uma coisinha” antes de dormir, ou uma alteração pedida à IA tenha envolvido mais arquivos do que eu esperava. Felizmente, o Git aprendido na parte 3 mantém o registro do álibi. Peça à IA: “Mostre os commits e os arquivos alterados desde ontem” e pronto. Os registros são mais honestos que a memória.

Fluxograma para verificar quando funcionava ontem, mas não hoje: teste em janela anônima, histórico do Git, status dos serviços externos e coleta de erros
Investigue começando pelo mais barato. O teste de 30 segundos na janela anônima é sempre o primeiro

Ordem da investigação: começar pelo mais barato

O essencial é a ordem: comece pelas verificações baratas e rápidas e avance para as caras e demoradas.

  1. Teste em janela anônima (30 segundos): Se funcionar, é o cache. Encerre com uma recarga forçada.
  2. Verificar o histórico do Git (1 minuto): “O que mudou desde ontem?” Se algo mudou, esse é o principal suspeito.
  3. Status e uso dos serviços externos (3 minutos): Verifique a página de status e Usage/Billing no painel.
  4. Coletar erros e investigar com IA (depois): Se os três itens anteriores forem descartados, siga a rotina da parte 5: reúna o console do navegador e os logs do servidor e peça à IA para investigar.

Se você pular essa ordem e começar pelo passo 4, a IA pode “consertar” um código saudável e acabar criando o problema real. Alterar o código é sempre o último recurso.

Ilustração com as palavras NOTHING CHANGED THE WORLD DID: placas tectônicas rotuladas BROWSER CACHE, LIBRARIES, EXTERNAL SERVICES e BILLING PLAN se movem ao redor de uma ilha de código intacta
Mesmo que meu código fique parado, as placas sob meus pés continuam se movendo

Resumo

  • “Não mudei nada” significa apenas “não mudei meu código”. O cache do navegador, as bibliotecas, os serviços externos e os planos continuam mudando.
  • Se funciona em uma janela anônima, é o cache. Uma recarga forçada resolve.
  • Quando um erro de build desconhecido aparece de repente, suspeite de uma mudança nas dependências.
  • Vale a pena favoritar as páginas de status e os menus Usage/Billing dos serviços externos.
  • Investigue do mais barato ao mais caro: janela anônima → histórico do Git → status externo → coletar logs e investigar com IA. Alterar o código fica por último.

A próxima edição aborda o tema que todo mundo teme: a explosão da conta. Vamos explicar como as cobranças de AI API, DB e hospedagem são calculadas e como configurar proteções que impeçam a explosão desde a origem.

Continue lendo