Chop: Deja de Desperdiciar Tokens con Salidas Verbosas del CLI
Hace un par de semanas empecé a prestar atención a algo que me molestaba sin que yo lo notara del todo: mis sesiones de Claude Code consumían contexto mucho más rápido de lo que deberían.
Empecé a investigar. Leí decenas de posts sobre optimización de tokens. Casi todos apuntaban en la misma dirección: persistir memoria entre sesiones, usar almacenamiento cruzado de contexto, resumir conversaciones anteriores.
Lo intenté. Construí archivos de memoria, configuré resúmenes estructurados, ajusté los prompts.
El resultado no fue el que esperaba.
🤔 La pregunta correcta
Después de unos experimentos frustrantes, hice algo que probablemente debí hacer desde el principio — le pregunté directamente a Claude:
¿Qué es lo que realmente consume más tokens en una sesión típica?
La respuesta no fue la memoria. No fue la longitud de los prompts. Ni siquiera el contexto del código.
Fue la salida del CLI.
Cada vez que Claude ejecuta un comando — git status, docker ps, npm test, kubectl get pods — la salida cruda del terminal llega al contexto tal como es. Todo. Los encabezados, el relleno, los hints, el texto de ayuda. Las cosas que un humano hojea en medio segundo pero que cuestan decenas o cientos de tokens cada vez.
git status solo: 247 tokens para algo que se puede comunicar en 12.
docker ps con unos contenedores: 850+ tokens para una tabla que en su mayoría es espacio en blanco.
Y pasa en cada comando. En silencio. Constantemente.
💡 El dato que lo cambió todo
Los posts sobre persistencia de memoria no estaban equivocados — solo no atacaban el verdadero cuello de botella. La memoria entre sesiones ayuda con la continuidad del contexto. Pero no hace nada con el flujo de salidas verbosas que llena la ventana durante una sesión activa.
El problema no es lo que Claude recuerda. Es lo que Claude ve desde el principio.
🔧 Construyendo chop
Así que construí chop — un compresor de salidas CLI diseñado específicamente para Claude Code.
El nombre viene de chop chop: el sonido de algo comiéndose toda esa verbosidad, bocado a bocado, antes de que llegue a la ventana de contexto.
La idea es simple: interceptar cada comando que Claude ejecuta y comprimir la salida antes de que entre en la ventana de contexto. No es un resumen con IA — es compresión estructural. Quitar el ruido, conservar la señal.
# Sin chop (247 tokens)
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/app.ts
modified: src/auth/login.ts
modified: config.json
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/utils/helpers.ts
no changes added to commit (use "git add" and/or "git commit")
# Con chop (12 tokens — 95% de ahorro)
$ chop git status
modified(3): src/app.ts, src/auth/login.ts, config.json
untracked(1): src/utils/helpers.ts
La misma información. Una fracción de los tokens.
⚙️ Cómo funciona
Se puede usar chop de dos formas:
Manual — anteponiendo chop al comando:
chop git status
chop docker ps
chop npm test
chop kubectl get pods
chop terraform plan
Automático — instalando un hook de Claude Code que envuelve cada comando Bash de forma transparente:
chop init --global
Después de eso, cada comando que Claude ejecuta se comprime automáticamente. No tienes que pensar en ello.
chop soporta 52+ comandos de Git, Docker, Kubernetes, herramientas JavaScript, .NET, Go, Rust, Python, Java, Ruby, Terraform, CLIs de nube y más. Cualquier cosa fuera de esa lista igual se detecta automáticamente y se comprime mediante reconocimiento de patrones estructurales — JSON, CSV, tablas, líneas de log.
📊 Los números reales
chop registra cada ejecución en una base de datos SQLite local:
chop gain # estadísticas generales
chop gain --history # últimos 20 comandos
chop gain --summary # desglose por comando
Después de varios días normales de trabajo con Claude:
today: 42 commands, 12,847 tokens saved
total: 318 commands, 89,234 tokens saved (73.2% avg)
Ese es un número real. No un benchmark ni una prueba sintética — solo trabajo de desarrollo normal con chop en el ciclo.
🎯 Qué cambia esto
Los posts sobre memoria no eran inútiles. El contexto persistente entre sesiones es genuinamente útil para proyectos largos. Pero si estás intentando reducir el consumo de tokens durante una sesión, la palanca más grande por lejos es lo que entra en la ventana de contexto desde la salida de los comandos.
chop no requiere cambiar cómo trabajas. No requiere reescribir prompts ni reestructurar proyectos. Lo instalas, ejecutas chop init --global, y la compresión ocurre en segundo plano.
Las conversaciones se vuelven más precisas. Claude mantiene más del trabajo real en contexto. Y el conteo de tokens deja de crecer tan rápido.
🙃 El giro inesperado
Empecé a construir chop un lunes. El jueves por la noche, un amigo me mandó un mensaje diciendo que había encontrado una herramienta que reduce el consumo de tokens al trabajar con asistentes de código con IA. Era RTK — un proxy CLI escrito en Rust que hace esencialmente lo mismo.
Visité el repo. Lo leí. No lo probé, porque chop ya estaba funcionando en ese punto.
¿La verdad? Si mi amigo me lo hubiera mencionado el domingo, probablemente habría usado RTK y me habría ahorrado la semana. Pero no lo sabía, así que construí el mío — y en el proceso aprendí bastante sobre cómo funcionan los hooks de Claude Code, cómo estructurar filtros por comando, y cuánto varía la verbosidad entre distintas herramientas de CLI.
Ahora existen las dos y resuelven el mismo problema. Voy a seguir usando mi propia implementación — principalmente porque puedo mejorarla para adaptarla a mi flujo de trabajo, y quizás hacerla lo suficientemente genérica como para que a alguien más le resulte útil también.
✳️ Por dónde seguir
Si usas Claude Code regularmente para desarrollo, probablemente vale la pena probarlo.
Es gratuito, de código abierto, con licencia MIT, y se instala en una línea:
curl -fsSL https://raw.githubusercontent.com/AgusRdz/chop/main/install.sh | sh
A veces la pregunta más simple lleva a la respuesta más útil. Pasé días mirando estrategias de memoria. La solución real fue simplemente reducir el ruido — y al parecer al menos dos personas llegaron a la misma conclusión más o menos al mismo tiempo.