Cómo ahorrar tokens de Claude Code

Matheus Cardoso

Cada comando que Claude Code ejecuta en la terminal consume tokens. Un git status verboso, logs de pruebas con cientos de líneas, listados completos de directorio — todo va directo al contexto del modelo. rtk es un proxy de línea de comandos que filtra y comprime ese output antes de que llegue al LLM, reduciendo el consumo en 60-90%.


El problema

Claude Code usa la herramienta Bash para interactuar con el proyecto. Cada output crudo de comando — espacios, metadatos, boilerplate — se cuenta como tokens. En un proyecto TypeScript medio, una sesión de 30 minutos consume alrededor de 118.000 tokens solo en comandos de shell.

Los tokens desperdiciados en ruido de output son costo sin valor. Claude no necesita 3.000 tokens de git status cuando 200 tokens con la información relevante son suficientes.

git status3,000 tokensoutput crudo
npm test25,000 tokenslogs completos
cat file.ts40,000 tokensarchivo completo

Cómo funciona

rtk actúa como un proxy transparente entre Claude y el shell. El hook instalado reescribe automáticamente los comandos Bash — git status se convierte en rtk git status — antes de la ejecución. Claude nunca ve la reescritura, solo recibe el output comprimido.

Sin rtkgit status
~3.000 tokens
Con rtkgit status → rtk git status
~200 tokens

Se aplican cuatro estrategias por tipo de comando: filtrado inteligente (elimina ruido, comentarios, boilerplate), agrupamiento (agrega elementos similares), truncamiento (mantiene contexto relevante) y deduplicación (colapsa líneas repetidas con conteo).


Instalación

La forma más simple es vía Homebrew. Para Linux o sin brew, existe un instalador vía curl:

# macOS (recommended)
brew install rtk

# Linux / macOS via curl
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh

# verify
rtk --version
rtk gain       # shows token savings stats

Configuración

Después de instalar, ejecuta rtk init -g para configurar el hook en Claude Code:

# configure the hook for Claude Code
rtk init -g

# restart Claude Code, then test
git status  # automatically rewritten to rtk git status

Reinicia Claude Code. A partir de ahí, comandos como git status se reescriben y filtran automáticamente sin ningún cambio en el workflow.


Ahorro de tokens

Estimaciones en un proyecto TypeScript/Rust medio, sesión de 30 minutos:

git status3,000600-80%
git diff10,0002,500-75%
cat / read40,00012,000-70%
grep / rg16,0003,200-80%
npm/cargo test25,0002,500-90%
Total~118,000~23,900-80%

Comandos principales

Los comandos más usados en el desarrollo diario — todos con output comprimido automáticamente vía hook:

# git — compact output for all operations
rtk git status           # grouped changed files
rtk git log -n 10        # one-line commits
rtk git diff             # condensed diff
rtk git commit -m "msg"  # returns "ok abc1234"
rtk git push             # returns "ok main"

# files — filtered and truncated
rtk ls .                 # token-optimized directory tree
rtk read file.ts         # smart file reading
rtk grep "pattern" .     # grouped search results

# tests — failures only
rtk npm test
rtk cargo test           # -90% vs raw output
rtk pytest

Herramientas nativas

El hook solo funciona en llamadas de herramienta Bash. Las herramientas nativas de Claude Code como Read, Grep y Glob no pasan por el hook. Para esos casos, usa comandos de shell (cat, rg, find) o llama a rtk directamente:

# use shell commands instead of native Claude Code tools
# so the hook (and rtk) can intercept them

cat file.ts      # triggers rtk read via hook
rg "pattern" .   # triggers rtk grep via hook
find . -name "*.ts"  # triggers rtk find via hook

# or call rtk directly
rtk read file.ts
rtk grep "pattern" .
rtk find "*.ts" .

Más

rtk es open-source con licencia MIT. Binary único en Rust, sin dependencias, overhead menor a 10ms. Código y documentación en github.com/rtk-ai/rtk.