Pular para o conteúdo
MÓDULO 1.5 · MODO ENSINO

💸 Economia de tokens

Tem uma ideia que parece feitiço, mas é só engenharia: um codebase fácil de mudar deixa você usar um modelo mais barato pra fazer o mesmo trabalho. Aqui você entende o que é um token, por que ele custa dinheiro, e como o seu harness — não o modelo — decide quanto você paga. Cada palavra nova é explicada na hora.

6
Tópicos
~40
Minutos
1.1–1.4
Pré-req.
Prático
Tipo
Progresso: 0% 0 de 6

📖 Glossário vivo (leia antes — volte sempre que precisar)

Este módulo fala de custo. Antes de tudo, fixe o que é um token — é a "moeda" que você gasta quando usa IA. Os demais termos você já viu nos módulos 1.1–1.4; aqui eles voltam aplicados ao bolso:

Token — a menor unidade de texto que o modelo lê e escreve. Não é exatamente uma palavra: é um pedaço dela (em média, ~4 letras ≈ 1 token; "programação" pode virar 3-4 tokens). Você paga por token: cada token que entra (seu pedido + o contexto) e cada token que sai (a resposta) tem um preço. Tokens = a "moeda" da IA.
Token spend — quantos tokens uma tarefa consome do início ao fim. Quanto mais o agente tenta, erra, relê arquivos e tenta de novo, mais tokens gasta — e mais caro fica.
Guard rail — "grade de proteção": algo no codebase que impede a IA de seguir um caminho errado (um teste, um tipo, um lint, um erro claro). Como a mureta de uma pista de boliche infantil.
Modelo mais barato / mais burro — um modelo menor e mais barato por token (ex.: um "Haiku" no lugar de um "Opus"). Menos capaz sozinho — mas com um harness bom, faz o mesmo serviço por uma fração do preço.
Hamstringing — "amarrar a perna" do modelo: dar a ele um codebase confuso, sem guard rails, sem documentação. Ele tropeça, gasta tokens à toa e você é obrigado a usar o modelo caro pra compensar.
Refatorar — reescrever o código por dentro pra ficar mais simples e claro, sem mudar o que ele faz por fora. É arrumar a casa pra que a próxima mudança seja barata.
1

🏗️ Arquitetura reduz tokens

🧠 Imagine assim: você pede a um entregador pra deixar um pacote. Numa casa com endereço claro e portão na frente, ele entrega em 2 minutos. Num condomínio labiríntico sem placa, ele anda em círculos por meia hora — e você paga pela hora dele. O pacote é o mesmo; o terreno é que decidiu o custo.

A frase-chave de Matt Pocock neste tema é direta: "Como você otimiza o gasto de tokens? Tendo um codebase mais fácil de fazer mudanças." Repare: a resposta dele não é "use um prompt mágico" nem "espere um modelo melhor". É arquitetura — a forma como seu codebase é organizado. Cada vez que o agente precisa entender o código pra mudar algo, ele arquivos (tokens de entrada) e escreve tentativas (tokens de saída). Quanto mais confuso o terreno, mais ele precisa ler e tentar — e o token spend sobe.

Por que isso é fundamento e não detalhe? Porque o preço da IA é cobrado por token — tanto o que entra quanto o que sai. Um arquivo gigante com mil linhas força o agente a engolir tudo só pra mudar uma função. Já um codebase modular (arquivos pequenos, nomes óbvios, cada coisa no seu lugar) deixa o agente ler só o pedaço relevante. Mesma tarefa, mesmo modelo, fração dos tokens. O erro comum de iniciante é tratar o custo da IA como um número fixo da fatura — quando, na verdade, ele é uma consequência direta de quão navegável você deixou o seu código.

CODEBASE BAGUNÇADO arquivo-gigante.js (1200 linhas, tudo junto) o agente precisa ler TUDO pra mudar 1 função ≈ 40k tokens 💸 CODEBASE MODULAR auth/ ui/ pagamento/ lê SÓ o módulo certo ≈ 5k tokens ✓

Mesma tarefa, mesmo modelo. A diferença de custo está toda na arquitetura.

Ilustração conceitual: dois caminhos para a IA — um labirinto caótico cheio de tokens desperdiçados, e uma estrada limpa e direta

⚠️ Erro comum de iniciante

Achar que "a IA está cara" é culpa do modelo e que a solução é assinar um plano maior. Quase sempre é o oposto: o codebase está forçando o agente a ler e tentar muito mais do que precisava. A fatura é um sintoma da arquitetura.

Em 1 frase: um codebase fácil de mudar é um codebase barato de mudar — porque o agente lê e tenta menos.

Indo mais fundo (opcional): por que "token" e não "palavra"?

Modelos não leem letra por letra nem palavra por palavra — eles quebram o texto em "tokens", pedaços que repetem muito na língua (prefixos, sufixos, palavras inteiras curtas). Uma palavra comum vira 1 token; uma rara ou comprida vira vários. Por isso o preço é por token: é a unidade que o modelo realmente processa. Estimativa prática em português/código: divida o número de caracteres por ~4 pra ter a ordem de grandeza de tokens.

2

🛡️ Guard rails poupam cabeçadas

🧠 Imagine assim: aquelas pistas de boliche infantil com muretas nas calhas. A criança não precisa ser uma jogadora profissional pra derrubar pinos — a mureta corrige a bola pra ela. Guard rails fazem isso com a IA: ela não precisa ser genial se o codebase a empurra de volta pro caminho certo.

Pocock usa uma imagem ótima pra o custo: sem proteção, o modelo fica "batendo a cabeça na parede" — tentando, falhando, tentando de novo, queimando tokens a cada tentativa. A solução não é um modelo mais esperto: são guard rails. Um guard rail é qualquer coisa no codebase que impede o caminho errado e aponta o certo: um tipo (type) que não compila se você passar o valor errado; um teste que falha na hora; um linter que reclama; uma mensagem de erro clara que diz exatamente o que está faltando.

O porquê é puro custo: cada guard rail transforma uma cabeçada cara (o agente descobre o erro tarde, depois de reescrever meio sistema) numa correção barata (o erro aparece na hora, em uma linha). Pocock resume: "guard rails melhores, menos tokens batendo a cabeça na parede." O erro comum aqui é o oposto disto — gente que remove os testes "pra ir mais rápido". Sem guard rails, a IA anda no escuro, erra mais longe e te custa mais caro a cada passo.

SEM guard rails parede 💥 retenta… muitos tokens, vários erros COM guard rails (type · teste · lint) a mureta corrige a bola → certo de primeira

🔬 Exemplo resolvido: o type que economiza 10 tentativas

A IA precisa chamar uma função enviarEmail(destino, assunto, corpo).

Sem guard rail

A função aceita qualquer coisa. A IA chama enviarEmail(corpo, destino) trocado. Nada reclama na hora. Só quebra rodando, ela relê tudo, tenta de novo, relê de novo… 8 tentativas, milhares de tokens.

Com guard rail (type)

Os parâmetros têm tipos. Na 1ª tentativa errada, o type-check grita "destino espera Email, recebeu Texto". A IA corrige na hora. 1 tentativa, poucos tokens.

Em 1 frase: guard rail é a mureta que faz a IA acertar sem ser gênio — e cada acerto na hora economiza tokens.

3

🪙 Quando um modelo mais burro basta

🧠 Imagine assim: numa cozinha bem organizada — tudo rotulado, faca afiada, receita na bancada — até um cozinheiro iniciante faz um prato decente. Numa cozinha caótica, só um chef experiente se vira. A cozinha (o harness) decide qual nível de cozinheiro (modelo) você precisa.

Aqui está o coração do módulo, na frase de Pocock: "Tenha um codebase mais fácil de mudar → você pode empregar um modelo mais burro/mais barato pra fazer o mesmo trabalho." Repare na lógica: a capacidade necessária do modelo não é fixa — ela depende de quão difícil você tornou a tarefa. Um harness bom baixa a barra de inteligência exigida. Por isso um modelo mais barato consegue entregar o que, num codebase ruim, só um modelo caro entregaria.

E o reverso, que Pocock chama pelo nome: "Hamstring seu modelo desde o dia um → você precisa de um modelo esperto." Hamstringing (literalmente "cortar o tendão") é entregar à IA um terreno confuso, sem guard rails, sem documentação. Aí ela tropeça em tudo, e você é obrigado a pagar pelo modelo top só pra ele não se perder. Conexão com o módulo 1.1: como o harness é 50% do resultado, é ele — não o modelo — que define o teto de custo. O erro comum é a corrida pelo "modelo do momento": investir no motor caro pra compensar um chassi que você mesmo poderia ter consertado por muito menos.

harness BOM modular + guard rails + docs modelo BARATO basta mesmo trabalho, fração do custo 💸↓ harness RUIM (hamstring) labirinto sem proteção precisa do modelo CARO só ele não se perde 💸↑
Ilustração: uma moeda-token brilhante dividida — de um lado um robô simples e barato trabalhando tranquilo, do outro um robô caro suando num labirinto

Recuperação rápida: o que significa "hamstring seu modelo"?

Em 1 frase: codebase fácil = modelo barato basta; codebase difícil (hamstring) = você é obrigado a pagar pelo modelo caro.

4

🕳️ O custo real de um codebase ruim

🧠 Imagine assim: uma torneira pingando. Cada pingo é barato — você nem nota. Mas no fim do mês a conta de água assusta. Um codebase ruim pinga tokens em toda mudança, o ano inteiro.

O custo de um codebase ruim não é uma cobrança única; é um imposto recorrente sobre cada tarefa futura. A IA relê arquivos que não precisava ler, tenta abordagens que um guard rail teria barrado, e gera código que quebra outras partes (porque não tinha como saber que existiam). Cada uma dessas idas e vindas é token gasto. Multiplique por todas as mudanças do projeto e o "imposto" vira a maior linha da sua fatura.

Tem um efeito ainda mais traiçoeiro: um codebase ruim também esconde bugs, e bugs escondidos custam tokens (e dinheiro) toda vez que a IA tropeça neles. Pocock observa que muitos bugs profundos não exigem um modelo genial pra serem achados — "você poderia descobrir esses bugs com modelos mais baratos se olhasse nos lugares certos e desse o prompt/harness certo." Ou seja: o que parecia "precisar de IA cara" era, de novo, um problema de harness. O erro comum é normalizar a torneira pingando ("é assim mesmo, IA é cara") em vez de fechar a torneira.

tokens mudanças ao longo do tempo → codebase ruim 💸💸 codebase bom ✓
Ilustração: uma torneira pingando moedas-token, com uma conta crescente ao fundo representando o custo recorrente de um codebase ruim

Em 1 frase: codebase ruim não cobra uma vez — cobra um imposto de tokens em cada mudança futura.

Indo mais fundo (opcional): "se roubam sua bike, compre um cadeado"

Pocock usa essa analogia: se um bug (ou um custo) se repete, não basta corrigir o caso — instale o "cadeado" que impede a próxima vez. No nosso tema: se uma área do código sempre faz a IA gastar muitos tokens, não basta pagar a conta — refatore essa área e adicione guard rails. É a diferença entre tratar o sintoma e tratar a causa raiz. (Você verá isso virar sistema na Trilha 4, "Sistemas auto-melhoráveis".)

5

🔧 Refatorar pra baratear

🧠 Imagine assim: afiar o machado antes de cortar a árvore. Parar 10 minutos pra afiar parece atraso — mas cada corte depois é o dobro mais rápido. Refatorar é afiar o machado do seu codebase.

A boa notícia: você não está preso ao codebase que tem. Refatorar é reorganizar o código por dentro — quebrar o arquivo gigante em módulos, dar nomes claros, adicionar tipos e testes — sem mudar o que o sistema faz por fora. E aqui mora a virada: a própria IA refatora pra você. Você gasta tokens uma vez pra arrumar a casa, e a cada mudança futura paga muito menos. É investimento, não despesa.

Como Pocock põe em DX × AX: melhorar o codebase é uma das alavancas "frequentemente esquecidas" pra melhorar a experiência do agente — e, com ela, o custo. Refatorar adiciona guard rails (tópico 2), torna o terreno navegável (tópico 1) e fecha a torneira pingando (tópico 4) — os três de uma vez. O erro comum é adiar refatoração "pra quando der tempo": como o custo é recorrente, cada dia adiado é mais tokens jogados fora. Veja na copybox abaixo como muda só o jeito de pedir a refatoração — do prompt vago ao prompt com guard rails:

prompt-refatorar.txt — antes × depois
❌ ANTES (prompt vago → muitos tokens, resultado incerto)
"arruma esse arquivo aí, tá uma bagunça"

✅ DEPOIS (prompt com guard rails → poucos tokens, resultado seguro)
Refatore o arquivo src/pagamento.js, SEM mudar o comportamento.
Objetivo: baratear mudanças futuras.
Regras (guard rails):
1. Quebre em módulos pequenos por responsabilidade (1 arquivo = 1 tema).
2. Adicione TIPOS nas funções públicas (assinaturas explícitas).
3. NÃO toque na lógica de negócio — só na organização.
4. Rode os testes existentes ao final; todos têm que continuar passando.
5. Se faltar teste pra um caminho crítico, escreva o teste antes de mover o código.
Entregue: lista do que mudou + confirmação de testes verdes.

Em 1 frase: refatorar é afiar o machado — gasta token uma vez pra economizar token em toda mudança seguinte.

6

📊 Métrica: tokens por mudança

🧠 Imagine assim: o consumo do seu carro: litros por 100 km. Você não olha só o tanque cheio — olha quanto gasta por viagem. Com IA, a métrica equivalente é tokens por mudança.

O que não se mede não se melhora. A métrica certa não é "quanto gastei no mês" (isso esconde a causa), e sim tokens por mudança: quantos tokens uma tarefa típica consome, do pedido à entrega. Quando esse número está alto, é sinal de hamstringing — o codebase está obrigando o agente a ler e tentar demais. Quando cai depois de uma refatoração, você acabou de provar, em número, que o harness ficou melhor. É o resumo prático de todo o módulo: arquitetura (T1) e guard rails (T2) baixam o número; um codebase ruim (T4) o infla; refatorar (T5) o derruba; e um número baixo libera o modelo barato (T3). Copie o checklist abaixo e rode-o sempre que uma tarefa gastar mais do que devia:

diagnostico-tokens-por-mudanca.txt
Tarefa gastou tokens demais? Diagnostique o HARNESS, não o modelo:
[ ] ARQUITETURA — a IA teve que ler arquivos gigantes/irrelevantes?
[ ] GUARD RAILS — faltou type/teste/lint pra barrar o erro na hora?
[ ] DOCS — faltou um README/comentário apontando o lugar certo?
[ ] REPETIÇÃO — a IA tentou, errou e retentou o mesmo erro várias vezes?
Ação: refatore a área cara + adicione 1 guard rail.
Depois, reduza o modelo (ex.: do caro pro barato) e confirme que ainda passa.
Meta: o número de "tokens por mudança" cair na próxima vez.
1 · medir 2 · refatorar 3 · + guard rail 4 · reduzir modelo …e mede de novo: tokens por mudança caindo = harness melhorando

Recuperação rápida: qual métrica mostra MELHOR se o seu harness ficou mais barato?

Em 1 frase: meça tokens por mudança — é o "litros por 100 km" do seu harness, e o que você corta de verdade.

🧾 Resumo do Módulo

Token = a moeda da IA — você paga por cada pedaço de texto que entra e que sai.
Codebase fácil = modelo barato — arquitetura e guard rails baixam a inteligência exigida.
Hamstring = conta cara — codebase confuso obriga o modelo top e queima tokens em cabeçadas.
Refatore e meça — afie o machado e acompanhe "tokens por mudança".

Próximo módulo:

1.6 — Context window escasso: por que cada skill "cobra" espaço no contexto e como manter a higiene.