32blogby StudioMitsu

Cómo Reduje el Consumo de Tokens de Claude Code en un 50%

Reduce los costos de Claude Code a la mitad con técnicas prácticas: configuración de .claudeignore, modo Plan, prompts dirigidos, gestión de servidores MCP y estrategia de sesiones.

10 min read
Claude Codecost reductiontoken optimizationPlan mode.claudeignore
Contenido

Mi primer mes usando Claude Code, la factura de la API llegó tres veces más alta de lo que esperaba. Después de investigar qué estaba consumiendo todos esos tokens y hacer cambios dirigidos, reduje el consumo a la mitad el mes siguiente. Aquí tienes todo lo que hice.

Al final de este artículo, sabrás cómo identificar adónde van tus tokens, y tendrás comandos concretos para las soluciones que realmente funcionaron: .claudeignore, modo Plan, disciplina de prompts, gestión de servidores MCP e higiene de sesiones.

¿Cuáles Son los 5 Mayores Consumidores de Tokens en Claude Code?

Antes de optimizar nada, necesitas saber contra qué estás luchando. El desperdicio de tokens tiende a concentrarse en cinco fuentes.

1. Lecturas de contexto infladas Claude Code puede intentar leer archivos que no necesitas que toque: node_modules, .git, artefactos de build. Esto suele ser el mayor desperdicio individual.

2. Prompts vagos que causan idas y vueltas "Haz que se vea mejor" obliga a Claude Code a hacer preguntas aclaratorias. Una tarea que debería tomar un solo intercambio termina tomando cuatro.

3. Servidores MCP siempre activos Cada servidor MCP conectado añade su lista de herramientas a tu contexto en cada mensaje. Cinco servidores ejecutándose constantemente suman cientos de tokens por turno, antes de que hayas dicho nada.

4. CLAUDE.md inflado Si tu archivo de instrucciones de proyecto contiene cada decisión, cada nota de contexto y cada pieza de información de los últimos seis meses, Claude Code carga todo al inicio de cada sesión.

5. Sesiones largas sin reiniciar El historial de conversación se acumula. Cuanto más tiempo se ejecuta una sesión sin un reinicio, más tokens cuesta cada nuevo mensaje.

Empieza con /context para ver el desglose de tu uso de contexto, luego identifica cuál de estos es tu mayor ofensor.

¿Cómo Detienes las Lecturas Innecesarias de Archivos con .claudeignore?

La solución con mayor retorno es agregar un archivo .claudeignore. Funciona exactamente como .gitignore y le dice a Claude Code qué rutas omitir completamente.

Crea .claudeignore en la raíz de tu proyecto:

bash
# .claudeignore

# Build artifacts
.next/
dist/
build/
out/

# Dependencies
node_modules/
.pnp/
.pnp.js

# Caches
.cache/
.turbo/
*.tsbuildinfo

# Logs
*.log
npm-debug.log*

# Test output
coverage/
.nyc_output/

# Environment files (security too)
.env
.env.local
.env.*.local

# Database files
*.db
*.sqlite
prisma/migrations/

# Media and binaries
public/images/
*.png
*.jpg
*.gif
*.mp4

Reinicia claude después de guardar. En un proyecto de Next.js, excluir solo .next/ típicamente reduce el tamaño del contexto en un 30-40%. El cambio de mentalidad es excluir todo lo que Claude Code no necesita leer, no solo lo obvio. Definiciones de tipos generadas, fixtures de test, documentación que ya está en tu CLAUDE.md: todo es candidato a excluir.

¿Cómo el Modo Plan Reduce el Consumo de Tokens a la Mitad?

El modo Plan (alterna con Shift+Tab) le dice a Claude Code que produzca un plan sin hacer ningún cambio. Esta es una de las técnicas más efectivas porque elimina la mayor fuente de desperdicio de tokens: la ejecución por prueba y error.

En modo normal, Claude Code intentará cosas, encontrará errores e iterará. Cada iteración cuesta tokens. En modo Plan, primero produce un plan paso a paso: qué archivos tocará, qué cambios hará, en qué orden. Tú revisas el plan, eliminas lo innecesario y solo entonces vuelves al modo normal para ejecutar.

# Flujo de trabajo del modo Plan
Presiona Shift+Tab para activar el modo Plan
→ Da tu tarea
→ Claude produce un plan (ningún archivo cambia)
→ Revisa y ajusta el plan
→ Presiona Shift+Tab para desactivar el modo Plan
→ Ejecuta con el plan refinado en contexto

Para un prompt como "agrega autenticación de usuario," saltarse el modo Plan significa que Claude Code se lanza, potencialmente elige el enfoque equivocado, y tú lo estás corrigiendo a lo largo de cinco mensajes. El modo Plan revela esas decisiones por adelantado, antes de que se gasten tokens en ejecución. Cuanto más grande la tarea, mayor el ahorro.

¿Cuánto Multiplican los Prompts Vagos Tus Costos de Tokens?

La calidad del prompt tiene un efecto directo y medible en el consumo de tokens. Considera este ejemplo:

Prompt costoso:

"Agrega una función de login"

Claude Code preguntará: ¿Qué biblioteca de autenticación? ¿Sesiones basadas en cookies o JWT? ¿Qué directorio? ¿Y el componente de UI? Son cuatro intercambios antes de que se escriba una línea de código.

Prompt eficiente:

"Agrega login con Google OAuth usando NextAuth.js v5.
Sesiones JWT. Implementar en /app/auth/.
Agregar guards de autenticación al middleware.ts existente."

Esto se resuelve en una sola pasada.

El framework que uso es responder el 5W1H antes de enviar cualquier cosa: Qué exactamente, Dónde en la base de código, Cómo (qué biblioteca o patrón), Cuándo (restricciones de orden), Quién (qué rol de usuario, si es relevante). Si puedo responder eso yo mismo, lo escribo en el prompt en lugar de dejar que Claude Code pregunte.

Una regla más: una tarea por mensaje. "Agrega login, escribe tests y actualiza el README" enviado como un solo prompt hace que Claude Code mantenga todo eso en contexto simultáneamente. Enviarlos por separado reduce el costo total de tokens, por contraintuitivo que suene.

¿Cómo Ejecutas Servidores MCP Solo Cuando Realmente Los Necesitas?

Los servidores MCP son poderosos, pero cada servidor conectado añade sus definiciones de herramientas al contexto de cada mensaje. Si tienes cinco servidores conectados, estás pagando ese overhead en cada intercambio, incluso cuando no estás usando ninguno de ellos.

Verifica qué tienes ejecutándose:

bash
cat ~/.claude.json | jq '.mcpServers'

La solución es una política simple: siempre activos para herramientas que usas en cada sesión, todo lo demás desactivado por defecto.

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
    },
    "postgres": {
      "disabled": true,
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    },
    "github": {
      "disabled": true,
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"]
    }
  }
}

Activa MCP de base de datos o GitHub solo cuando estés haciendo ese tipo de trabajo, luego desactívalo de nuevo. El ahorro por mensaje es pequeño, pero se acumula a lo largo de un día completo de trabajo.

¿Cuándo Deberías Usar /compact vs /clear?

Claude Code te da dos comandos para gestionar el historial de conversación. Usarlos en los momentos correctos marca una diferencia significativa en sesiones largas.

/compact: Resume el historial de conversación para reducir el conteo de tokens mientras preserva el contexto. La conversación continúa, solo de forma más eficiente.

/clear: Reinicia la conversación por completo. Borrón y cuenta nueva.

Así es como decido:

Usa /compact cuando:
- Sigues en la misma tarea pero la conversación se está alargando
- Necesitas el contexto de antes en la sesión
- Estás a mitad de sesión (aproximadamente 500+ intercambios)

Usa /clear cuando:
- Cambias a una tarea completamente diferente
- El contexto de la conversación anterior es irrelevante
- Empiezas una funcionalidad nueva desde cero
- Retomas el trabajo al día siguiente

El modo de fallo a evitar es dejar que una sesión larga se desvíe. Conforme crece el historial de conversación, Claude Code intenta mantener consistencia con todo lo dicho antes, incluyendo cosas que ya no son relevantes. El contexto viejo puede degradar la calidad de las respuestas mientras simultáneamente aumenta el costo.

Ante la duda, /compact. Al cambiar de tarea, /clear.

¿Cómo Mantienes CLAUDE.md Ligero?

CLAUDE.md se carga en el contexto al inicio de cada sesión. Si tiene 600 líneas, estás pagando por esas 600 líneas antes de haber empezado a trabajar.

Elimina esto:

  • Contexto histórico ("decidimos X por Y en noviembre")
  • Detalles de tareas completadas
  • Enlaces a documentación externa que Claude Code no puede acceder de todos modos
  • Disclaimers largos o declaraciones de política

Conserva esto:

  • Stack tecnológico (una lista con viñetas, máximo tres líneas)
  • Resumen de la estructura de directorios
  • Las convenciones de programación más importantes
  • Tarea activa actual

Objetivo: menos de 200 líneas. Si necesitas más, separa el detalle en archivos bajo docs/ y haz que Claude Code los lea bajo demanda.

markdown
# CLAUDE.md

## Stack
- Next.js 15 + TypeScript + Tailwind v4
- Prisma + PostgreSQL
- NextAuth.js v5

## Structure
- /app — App Router pages
- /components — UI components
- /lib — Utilities and helpers

## Conventions
- Default to Server Components
- Data fetching via Server Actions or Route Handlers
- Tests with Vitest + Testing Library

## Active Task
- Building user dashboard
- Details: docs/current-sprint.md

El detalle vive en docs/current-sprint.md. Claude Code lo lee cuando lo necesita, no en el inicio de cada sesión.

¿Cuánto Puedes Esperar Ahorrar Realmente?

Aquí tienes un desglose realista para un desarrollador que pasa 3-4 horas diarias en un proyecto de Next.js de tamaño medio:

TécnicaReducción de Tokens
Configuración de .claudeignore30-40%
Hábito del modo Plan20-30%
Precisión de prompts15-25%
Limpieza de servidores MCP5-10%
Uso de /compact10-15%
Reducción de CLAUDE.md5-10%

Estos se acumulan en lugar de sumarse aditivamente, pero el resultado en el mundo real es una reducción del 40-55% desde una línea base sin optimización. "50% de reducción" es alcanzable y no es una meta exagerada.

El costo de Claude Code escala directamente con cómo lo usas. Elimina el desperdicio, y el mismo gasto mensual te da el doble de trabajo productivo.

Conclusión

En orden de impacto, esto es lo que debes hacer:

  1. Agrega .claudeignore — excluye node_modules, .next/ y binarios. La mayor ganancia individual.
  2. Usa el modo Plan para tareas grandes — revisa el plan antes de que ocurra cualquier ejecución.
  3. Haz prompts específicos — responde el 5W1H tú mismo antes de enviar.
  4. Reduce tus servidores MCP — solo mantén siempre activos los que uses en cada sesión.
  5. Usa /compact a mitad de sesión — no dejes que el historial de conversación se acumule sin control.
  6. Mantén CLAUDE.md bajo 200 líneas — mueve el detalle a archivos separados.

Empieza con .claudeignore. Sentirás la diferencia desde la primera sesión.


Artículos Relacionados