RTK — Economia de Tokens
O RTK (Rust Token Killer) é um proxy CLI open-source que reduz o consumo de tokens em 60-90% nas sessões de desenvolvimento com Claude Code. Aprenda a instalar, configurar e otimizar suas sessões.
Objetivos
- Entender o problema do consumo de tokens em sessões de desenvolvimento
- Instalar e configurar o RTK com Claude Code
- Dominar os comandos principais e analytics
- Avaliar benefícios e tradeoffs para seu workflow
O problema: tokens desperdiçados
Em uma sessão típica de 30 minutos com Claude Code, o agente executa dezenas de comandos CLI — git status, git diff, npm test, ls, grep, etc. Cada saída desses comandos consome tokens da janela de contexto.
O problema é que a maior parte dessa saída é ruído: barras de progresso, códigos ANSI, mensagens verbosas de sucesso, formatação decorativa. Em uma sessão com ~60 comandos, o agente pode gerar ~150K tokens de saída CLI — quase toda a janela de contexto de 200K.
Considere a diferença na saída de um simples git push:
# Sem RTK — saída padrão (~200 tokens)
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 10 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 2.34 KiB | 2.34 MiB/s, done.
Total 8 (delta 6), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (6/6), completed with 6 local objects.
To github.com:user/repo.git
abc1234..def5678 main -> main
# Com RTK — saída filtrada (~10 tokens)
ok mainO LLM não precisa saber quantos objetos foram enumerados ou comprimidos — precisa apenas saber que o push foi bem-sucedido e para qual branch.
O que é o RTK
RTK (Rust Token Killer) é um proxy CLI open-source escrito em Rust que intercepta a saída de comandos e a filtra antes que chegue ao LLM. Em vez de o Claude Code receber a saída bruta de cada comando, recebe apenas a informação essencial para raciocinar.
| Atributo | Detalhe |
|---|---|
| Linguagem | 100% Rust — binário único, zero dependências |
| Licença | Apache-2.0 (open-source) |
| Overhead | <10ms por comando |
| Memória | <5MB |
| Comandos suportados | 100+ (git, JS/TS, Python, Go, Ruby, Docker, K8s, etc.) |
| Economia média | 60-90% de tokens por comando |
| GitHub | github.com/rtk-ai/rtk |
Como funciona
O RTK opera como um proxy transparente entre o Claude Code e o shell. Quando o Claude executa um comando via Bash tool, o hook do RTK intercepta e reescreve o comando:
# Fluxo sem RTK:
Claude Code --git status--> shell --> git
^ ~2.000 tokens |
+-------------------------------------+
# Fluxo com RTK:
Claude Code --git status--> RTK --> git
^ ~200 tokens |filter |
+---------(filtrado)------+---------+O RTK aplica quatro estratégias de filtragem conforme o tipo de comando:
- Smart Filtering — Remove ruído: comentários, whitespace, boilerplate, códigos ANSI, barras de progresso
- Grouping — Agrupa itens similares: arquivos por diretório, erros por tipo, lint por regra
- Truncation — Mantém contexto relevante, corta redundância
- Deduplication — Colapsa linhas repetidas com contadores (ex:
error x42)
Integração via Hook
A integração com Claude Code funciona via PreToolUse hook (veja Módulo 07 — Hooks). Quando o Claude Code invoca a ferramenta Bash com um comando como git status, o hook chama rtk rewrite "git status" que retorna rtk git status. O agente nunca vê a reescrita — recebe apenas saída comprimida.
Instalação
Via Homebrew (recomendado)
brew install rtkVia script de instalação (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | shVia Cargo (do fonte)
cargo install --git https://github.com/rtk-ai/rtkVerificação
Após instalar, verifique que é o pacote correto:
# Deve mostrar a versão do RTK
rtk --version
# Deve funcionar (mostra analytics de economia)
rtk gainrtk gain falhar com "not a command", você tem o pacote errado. Use cargo install --git para obter o correto.
Configuração com Claude Code
O comando rtk init automatiza toda a configuração:
# Instalação global com hook (recomendado)
rtk init -g
# Reinicie o Claude Code após a instalaçãoO comando rtk init -g executa as seguintes ações:
- Instala o hook script em
~/.claude/hooks/rtk-rewrite.sh - Cria
~/.claude/RTK.md(referência de meta-comandos, ~10 linhas) - Adiciona
@RTK.mdno~/.claude/CLAUDE.md - Registra o hook PreToolUse em
~/.claude/settings.json - Cria backup em
~/.claude/settings.json.bak
Modos de instalação
| Modo | Comando | Descrição |
|---|---|---|
| Global com hook | rtk init -g | Hook + RTK.md (~10 tokens no contexto) |
| Hook only | rtk init -g --hook-only | Apenas hook, zero tokens no contexto |
| Auto-patch (CI) | rtk init -g --auto-patch | Não-interativo, sem prompts |
| Por projeto | rtk init | Apenas CLAUDE.md local (sem hook) |
O que o hook faz na prática
Com o hook ativo, o Claude Code continua escrevendo comandos normais. O hook reescreve automaticamente:
# O Claude escreve:
git status
# O hook reescreve para:
rtk git status
# O Claude recebe saída comprimida:
M src/app.ts
M tests/app.test.ts
? src/utils/helper.tsComandos principais
O RTK suporta 100+ comandos organizados por ecossistema. Aqui estão os mais relevantes para uso diário:
Git
| Comando | Descrição | Economia |
|---|---|---|
rtk git status | Status compacto | ~80% |
rtk git log -n 10 | Commits em uma linha | ~80% |
rtk git diff | Diff condensado | ~75% |
rtk git add/commit/push | Retorna ok + info mínima | ~92% |
Testes
| Comando | Descrição | Economia |
|---|---|---|
rtk cargo test | Mostra apenas falhas | ~90% |
rtk pytest | Python — apenas falhas | ~90% |
rtk vitest run | Vitest compacto | até 99.6% |
rtk go test | Go tests (NDJSON) | ~90% |
rtk npm test | npm/Jest compacto | ~90% |
Arquivos e busca
| Comando | Descrição | Economia |
|---|---|---|
rtk ls . | Árvore de diretórios otimizada | ~80% |
rtk read file.ts | Leitura inteligente de arquivo | ~70% |
rtk grep "pattern" . | Resultados agrupados | ~70-80% |
rtk find "*.ts" . | Busca compacta | ~75% |
Build e lint
| Comando | Descrição | Economia |
|---|---|---|
rtk tsc | Erros TypeScript agrupados por arquivo | ~80% |
rtk eslint . | ESLint agrupado por regra/arquivo | ~80% |
rtk cargo clippy | Clippy comprimido | ~80% |
rtk ruff check | Python linting | ~80% |
Analytics e monitoramento
O RTK registra cada comando em um banco SQLite local, permitindo analisar a economia real de tokens:
rtk gain — relatório de economia
# Resumo geral
rtk gain
# Gráfico ASCII dos últimos 30 dias
rtk gain --graph
# Histórico recente com economia por comando
rtk gain --history
# Breakdown diário/semanal/mensal
rtk gain --daily
rtk gain --weekly
rtk gain --monthly
# Exportar para JSON ou CSV (dashboards)
rtk gain --all --format json
rtk gain --all --format csvrtk discover — oportunidades perdidas
Analisa o histórico do Claude Code e identifica comandos que poderiam ter sido otimizados:
# Descobrir oportunidades no projeto atual
rtk discover
# Todos os projetos, últimos 7 dias
rtk discover --all --since 7rtk session — adoção por sessão
# Ver taxa de adoção do RTK nas sessões recentes
rtk sessionComandos utilitários
# Bypass — executar comando sem filtros (debug)
rtk proxy git status
# Resumo heurístico de qualquer comando
rtk summary <comando>
# Leitura agressiva — apenas assinaturas de funções
rtk read file.ts -l aggressiveEconomia real: números de uma sessão típica
Dados de uma sessão de 30 minutos em um projeto TypeScript/Rust médio:
| Operação | Freq. | Tokens padrão | Tokens com RTK | Economia |
|---|---|---|---|---|
ls / tree | 10x | 2.000 | 400 | -80% |
cat / read | 20x | 40.000 | 12.000 | -70% |
grep / rg | 8x | 16.000 | 3.200 | -80% |
git status | 10x | 3.000 | 600 | -80% |
git diff | 5x | 10.000 | 2.500 | -75% |
git add/commit/push | 8x | 1.600 | 120 | -92% |
npm test / cargo test | 5x | 25.000 | 2.500 | -90% |
| Total | ~97.600 | ~21.320 | -78% |
vitest run passou de 102.199 caracteres para 377 — uma economia de 99,6%.
Benefícios
- Sessões mais longas — Menos tokens por comando = mais espaço na janela de contexto para código e raciocínio
- Menor custo — Menos tokens consumidos = menor custo em plataformas pay-per-token
- Zero fricção — O hook reescreve comandos automaticamente; o LLM não sabe que está usando RTK
- Extremamente rápido — <10ms de overhead, binário Rust single-threaded, <5MB de memória
- Analytics integrados —
rtk gaindá visibilidade total sobre economia real com exports em JSON/CSV - Fail-safe — Se o filtro falhar, a saída bruta passa sem alteração; exit codes sempre preservados
- Multi-ferramenta — Funciona com Claude Code, Cursor, Copilot, Gemini CLI, Codex e mais 5 ferramentas
- Tee recovery — Quando comandos falham, o RTK salva a saída completa em log para o LLM ler sem re-executar
Tradeoffs e limitações
Como qualquer ferramenta de otimização, o RTK faz tradeoffs que você precisa conhecer:
| Tradeoff | Impacto | Mitigação |
|---|---|---|
| Compressão com perda | Filtros removem informação. Em casos raros, o LLM pode precisar de detalhes que foram removidos. | Use rtk proxy <cmd> para saída completa, ou flags -v/-vv para modo verboso. |
| Apenas Bash tool | Ferramentas built-in do Claude Code (Read, Grep, Glob) não passam pelo hook. | Para esses casos, o Claude já usa ferramentas otimizadas nativamente. |
| Estimativa aproximada | Usa ~4 chars = 1 token. Suficiente para tendências, não para billing exato. | Use para análise de tendências, não para contabilidade precisa. |
| Telemetria | Envia ping anônimo diário (versão, OS, contagem de comandos). Opt-out disponível. | Desabilite via variável de ambiente ou config TOML. |
| Retenção de 90 dias | O banco SQLite de tracking limpa automaticamente registros com mais de 90 dias. | Exporte com rtk gain --all --format csv antes se precisar de histórico longo. |
Configuração avançada
O RTK pode ser customizado via arquivo de configuração TOML:
# macOS: ~/Library/Application Support/rtk/config.toml
# Linux: ~/.config/rtk/config.toml
[tracking]
database_path = "/path/to/custom.db"
[hooks]
# Comandos que o hook não deve reescrever
exclude_commands = ["curl", "playwright"]
[tee]
enabled = true # Salvar saída bruta em caso de falha
mode = "failures" # "failures", "always" ou "never"
max_files = 20 # Limite de rotação de arquivosDesinstalação
# Remove hook, RTK.md e entrada no settings.json
rtk init -g --uninstall
# Remove o binário
brew uninstall rtk # se instalou via Homebrew
cargo uninstall rtk # se instalou via CargoExercício
Configure o RTK no seu ambiente e meça a economia real:
- Instale o RTK: Use
brew install rtke verifique comrtk --versionertk gain. - Configure com Claude Code: Execute
rtk init -ge reinicie o Claude Code. Verifique que o hook está ativo em~/.claude/settings.json. - Use normalmente: Faça uma sessão de desenvolvimento de 15-30 minutos como faria normalmente.
- Meça: Execute
rtk gain --historye analise a economia real. Compare com as estimativas da tabela deste módulo. - Descubra oportunidades: Execute
rtk discoverpara identificar comandos que poderiam ser otimizados mas não foram.