🔢 O que é um Token
Token é a unidade mínima de texto que um LLM processa. Não é uma letra, não é uma palavra — é algo no meio. Entender tokens é fundamental para entender custo, contexto e performance.
Como tokens funcionam na prática
📊 Referência prática de tokens
💡 Com Ollama/OpenRouter free: custo de tokens = $0
Usando modelos locais ou free tier, você não paga por token. A única "moeda" que importa é o limite da janela de contexto — que define quanto o modelo pode "ver" de uma vez.
🗜️ Compactação de contexto
Quando a janela de contexto começa a encher, a qualidade das respostas degrada — o modelo "esquece" o início da conversa. A compactação resolve isso resumindo o histórico e liberando espaço.
Duas formas de compactar
Manual: /compact
Digite no Claude Code quando sentir a sessão pesada ou antes de iniciar uma nova tarefa grande.
/compact
# Com instrução personalizada:
/compact Foca nas decisões de arquitetura
Automático: autoCompactThreshold
Configure no settings.json para compactar automaticamente ao atingir uma porcentagem da janela.
{
"autoCompactThreshold": 75
}
// Compacta aos 75% da janela
O que acontece durante a compactação
💡 Recomendação prática
Configure autoCompactThreshold: 75 no settings.json global e esqueça. Para sessões críticas, use /compact manualmente antes de iniciar uma tarefa complexa — assim o modelo começa com o máximo de espaço disponível.
🗝️ API Key e autenticação
API Key é a senha de acesso ao serviço de modelo. O Claude Code envia essa chave em cada requisição para provar que você tem permissão de usar a API. Cada serviço tem um formato diferente.
API Keys por serviço
| Serviço | Formato da Key | Onde obter | Custo |
|---|---|---|---|
| Anthropic (oficial) | sk-ant-api03-... | console.anthropic.com | Pago por token |
| OpenRouter | sk-or-v1-... | openrouter.ai/keys | Free tier disponível |
| Ollama (local) | ollama (qualquer texto) | Não precisa | Gratuito |
⚠️ Segurança: nunca exponha sua API Key
- ✗Nunca commitar a API Key no git (nem em arquivo .env)
- ✗Nunca colocar a key diretamente no CLAUDE.md
- ✗Nunca compartilhar a key em screenshots ou vídeos
- ✓Usar variável de ambiente ou settings.json (não versionado)
- ✓Adicionar .claude/settings.json ao .gitignore se contiver keys
⚙️ settings.json
O settings.json é o arquivo de configuração central do Claude Code. Existe em dois níveis: global (para todos os projetos) e por projeto (sobrescreve o global naquele projeto).
Localização dos arquivos
Global (todos os projetos)
~/.claude/settings.json
# Windows:
%USERPROFILE%\.claude\settings.json
Por projeto (sobrescreve global)
.claude/settings.json
# Adicionar ao .gitignore se tiver keys!
settings.json completo para Ollama
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:11434",
"ANTHROPIC_AUTH_TOKEN": "ollama",
"ANTHROPIC_API_KEY": ""
},
"autoCompactThreshold": 75,
"permissions": {
"allow": ["Bash(npm test)", "Bash(git status)", "Bash(git diff)"]
}
}
settings.json completo para OpenRouter
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1",
"ANTHROPIC_API_KEY": "sk-or-v1-sua-chave-aqui"
},
"autoCompactThreshold": 75
}
💡 Hierarquia de configuração
A ordem de prioridade, do menor para o maior:
- 1.Settings global (~/.claude/settings.json) — base padrão
- 2.Settings de projeto (.claude/settings.json) — sobrescreve o global
- 3.Variáveis de ambiente exportadas no terminal — sobrescreve tudo
🌐 Variáveis de ambiente
Variáveis de ambiente são pares chave=valor acessíveis por processos do sistema operacional. É a forma padrão de passar configuração sensível (como chaves de API) para programas sem hardcodar nos arquivos.
🐧 Linux e macOS
Usando o terminal (bash/zsh):
export ANTHROPIC_BASE_URL="http://localhost:11434"
export ANTHROPIC_API_KEY="ollama"
# Para persistir em todas as sessões (adicionar ao arquivo de perfil):
echo 'export ANTHROPIC_BASE_URL="http://localhost:11434"' >> ~/.bashrc
echo 'export ANTHROPIC_API_KEY="ollama"' >> ~/.bashrc
source ~/.bashrc
# Verificar se foi definida:
echo $ANTHROPIC_BASE_URL
Para zsh: use ~/.zshrc em vez de ~/.bashrc
🪟 Windows — Prompt de Comando (CMD)
set ANTHROPIC_BASE_URL=http://localhost:11434
set ANTHROPIC_API_KEY=ollama
:: Para persistir (permanente no sistema):
setx ANTHROPIC_BASE_URL "http://localhost:11434"
setx ANTHROPIC_API_KEY "ollama"
:: Verificar:
echo %ANTHROPIC_BASE_URL%
Após setx, feche e reabra o terminal para as variáveis entrarem em vigor.
💙 Windows — PowerShell
$env:ANTHROPIC_BASE_URL = "http://localhost:11434"
$env:ANTHROPIC_API_KEY = "ollama"
# Para persistir (usando [System.Environment]):
[System.Environment]::SetEnvironmentVariable(
"ANTHROPIC_BASE_URL",
"http://localhost:11434",
"User"
)
# Verificar:
$env:ANTHROPIC_BASE_URL
⚠️ Lembre-se: export é temporário
O export sem adicionar ao .bashrc/.zshrc dura apenas a sessão atual. Fechar o terminal = variável some. Por isso, recomendamos usar o settings.json — ele sempre persiste.
🔄 Sessão vs configuração permanente
Este é um dos pontos de maior confusão no início. Há três formas de configurar o Claude Code, cada uma com escopo diferente. Saber qual usar evita horas de debug.
Comparativo de métodos de configuração
export VAR=valor (sem .bashrc)
TemporárioDura apenas a sessão do terminal atual. Fechar o terminal = configuração perdida. Útil para testar uma configuração rapidamente.
claude # funciona
# fechar terminal...
claude # erro: variável não definida
echo 'export...' >> ~/.bashrc
Semi-permanentePersiste entre sessões, mas depende do shell usado e do sistema. Pode ser sobrescrito por outras ferramentas. Bom para Linux/Mac.
source ~/.bashrc
# agora funciona mesmo reabrindo o terminal
settings.json
RecomendadoPersiste sempre. Funciona em todos os sistemas operacionais. Pode ser global ou por projeto. A solução mais confiável e portável.
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:11434",
"ANTHROPIC_API_KEY": "ollama"
}
}
💡 Recomendação final
Configure tudo no settings.json global (~/.claude/settings.json). Funciona em qualquer projeto, em qualquer terminal, sempre. Use export apenas para testar configurações antes de gravar permanentemente.
📝 CLAUDE.md básico de referência
Para começar qualquer projeto, crie um CLAUDE.md na raiz com pelo menos isso:
## Projeto
Nome e descrição breve do projeto.
## Stack
- [Linguagem e versão]
- [Framework principal]
- [Banco de dados, se houver]
## Convenções
- [Padrão de código: tabs/spaces, aspas, etc.]
- [Estilo de nomenclatura: camelCase, snake_case, etc.]
## Comandos importantes
- `npm run dev` — inicia o servidor de desenvolvimento
- `npm test` — roda os testes
- `npm run build` — gera o build de produção
## Regras
- Sempre rodar os testes antes de commitar
- Nunca modificar arquivos em dist/ diretamente
✅ Resumo do Módulo 1.3
Parabéns! Você concluiu a Trilha 1.
Agora você tem a base conceitual completa. A próxima trilha é a instalação prática do Claude Code e configuração do ambiente.