Token Optimization

Comment réduire les tokens dans Claude Code : Économiser 75%

### Réponse Rapide : Comment réduire la consommation de tokens de Claude

Pour réduire la consommation de tokens dans Claude Code jusqu'à 75 %, appliquez quatre optimisations fondamentales : configurez un fichier .claudeignore strict pour exclure les artefacts de build et les lockfiles, tirez parti de la remise de 90 % sur le prompt caching d'Anthropic via des préfixes statiques, isolez les sous-tâches avec des sous-agents Scout pour éviter le Context Rot, et privilégiez claude-3-7-sonnet ou claude-3-5-haiku pour l'exploration de code avant d'envisager Opus.


1. Introduction : La fuite invisible de tokens dans les agents de terminal

Les agents autonomes de développement en terminal, à l'image de Claude Code conçu par Anthropic, ont transformé les pratiques d'ingénierie logicielle. Contrairement aux complétions classiques dans les éditeurs de code, Claude Code opère selon une boucle d'exécution autonome : exploration de l'arborescence, lecture de fichiers de plusieurs milliers de lignes, exécution de commandes shell, analyse des journaux du compilateur et application de correctifs chirurgicaux.

Cependant, cette autonomie engendre une consommation massive de tokens. Sans configuration rigoureuse, une simple instruction telle que « Réfractore le middleware d'authentification pour gérer la rotation des tokens JWT » peut consommer entre 1,5 et 3,5 millions de tokens en une seule session. Cette inflation découle de quatre facteurs majeurs :

  1. Accumulation et pollution du contexte (Context Rot) : Les sorties des commandes bash, les résultats de grep, les traces de compilation et les fichiers lus en intégralité restent piégés dans la fenêtre de contexte active.
  2. Réingestion hors cache : Modifier accidentellement les premiers tours de parole dans la session invalide la limite des 5 minutes du prompt caching éphémère d'Anthropic.
  3. Lecture d'artefacts redondants : Lors de recherches par expressions régulières, Claude Code analyse inutilement les répertoires compilés (dist/, target/, .next/), les volumineux fichiers de verrouillage (package-lock.json, pnpm-lock.yaml) et les dumps de bases de données.
  4. Surdimensionnement des modèles : Utiliser des modèles de pointe à raisonnement lourd (claude-3-opus ou Sonnet avec Extended Thinking au maximum) pour de banales recherches de fichiers ou des listages de répertoires.

En instaurant des contraintes d'architecture systématiques — rigueur sur .claudeignore, utilisation méthodique du prompt caching, isolation des tâches par sous-agents et paramétrage fin du CLI — les équipes techniques réduisent couramment leur consommation quotidienne de tokens de 70 % à 80 %, tout en améliorant la fiabilité d'exécution.


2. Analyse quantitative : Tarification des tokens et mécanique de cache

Pour comprendre où s'échappent les tokens, examinons la structure tarifaire de l'API Anthropic et les paliers de mise en cache (tarifs de référence 2026) :

Modèle Claude Input de Base ($/1M) Écriture Cache ($/1M) Lecture Cache ($/1M) Output ($/1M) SWE-bench Verified Rôle Recommandé
Claude 3.5 / 3.7 Haiku 0,80 $ 1,00 $ 0,08 $ 4,00 $ 41,2 % Recherche de symboles, filtres regex, messages de commit
Claude 3.7 Sonnet (Standard) 3,00 $ 3,75 $ 0,30 $ 15,00 $ 70,3 % Refactoring principal, modifications multifichiers, tests
Claude 3.7 Sonnet (Extended Thinking) 3,00 $ (in) 3,75 $ (write) 0,30 $ 15,00 $ (pensée+out) 72,8 % Bogues d'architecture complexes, race conditions
Claude 3 Opus / Opus 4.6 15,00 $ 18,75 $ 1,50 $ 75,00 $ 74,1 % Audits de sécurité critiques, refonte globale d'architecture

Modélisation d'une réduction de 75 % des coûts et des tokens

Prenons l'exemple d'une session type de 15 étapes visant à refactoriser un point d'entrée d'API REST au sein d'un dépôt TypeScript de 150 000 lignes :

[Session naïve non optimisée]
Étape 1 : Chargement de la carte du dépôt + package-lock.json + schéma (180 000 tokens)
Étapes 2 à 5 : Dumps grep, logs de build, lectures complètes de fichiers (cumul de 240 000 tokens/étape)
Taux de cache miss : 45 % (invalidations fréquentes dues aux en-têtes et outils dynamiques)
Total des tokens d'entrée traités : 3 250 000
Coût effectif (Sonnet) : ~9,75 $

[Session optimisée : .claudeignore + Prompt Cache + Sous-agents]
Étape 1 : Résumé AST épuré (18 000 tokens) -> Mis en cache dès l'étape 1
Étapes 2 à 5 : Diffs incrémentaux, sous-agent Scout retournant un rapport dense (22 000 tokens/étape)
Taux de cache hit : 92 % (lecture au tarif réduit de 0,30 $/1M)
Total des tokens d'entrée traités : 410 000 (réduction physique de 87,3 % des tokens)
Coût effectif (Sonnet) : ~0,82 $ (réduction financière de 91,5 %)

3. Pilier 1 : Maîtriser .claudeignore pour assainir le contexte

L'action au retour sur investissement le plus élevé dans n'importe quel dépôt consiste à déployer un fichier .claudeignore rigoureux et taillé pour la production.

Par défaut, Claude Code respecte les règles du .gitignore, mais les .gitignore standards laissent souvent passer d'immenses fichiers qui saturent la fenêtre de contexte du modèle. Les lockfiles, la documentation compilée, les dossiers de build et les bundles minifiés ne doivent jamais pénétrer le contexte de travail.

Modèle .claudeignore pour environnements de production

Ajoutez ce fichier à la racine de votre projet :

# ==============================================================================
# .claudeignore - Matrice d'exclusion de tokens pour la production
# Empêche Claude Code d'ingérer des artefacts lourds lors des opérations glob/grep
# ==============================================================================

# Fichiers de verrouillage (Blobs volumineux JSON/YAML sans valeur AST)
package-lock.json
pnpm-lock.yaml
yarn.lock
bun.lockb
composer.lock
Gemfile.lock
Cargo.lock
poetry.lock

# Dossiers et fichiers de compilation générés
dist/
build/
out/
.next/
.nuxt/
.astro/
.svelte-kit/
storybook-static/
target/
*.min.js
*.min.css
*.map

# Rapports de couverture de tests, logs et profiling
coverage/
.nyc_output/
*.lcov
*.log
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*
*.heapsnapshot
*.cpuprofile

# Médias, images et fichiers binaires
public/assets/
public/images/
*.png
*.jpg
*.jpeg
*.gif
*.svg
*.webp
*.avif
*.ico
*.pdf
*.zip
*.tar.gz
*.wasm

# Documentation interne et spécifications d'API
docs/
*.mdx
specs/swagger/
*.postman_collection.json

# Environnements locaux et certificats
.env*
!.env.example
*.pem
*.key
*.cert

# Migrations de bases de données et exports SQL
*.sql
*.dump
prisma/migrations/

L'impact concret de .claudeignore

Lors d'un parcours récursif de répertoires, un simple package-lock.json non exclu (comptant souvent entre 25 000 et 80 000 lignes) brûle d'un coup plus de 120 000 tokens en une seule lecture. En bannissant les lockfiles et les dossiers de compilation, le volume de contexte initial chute de ~180k tokens à moins de 15k tokens.


4. Pilier 2 : Exploitation du Prompt Caching et de la remise de 90 %

Le mécanisme de prompt caching d'Anthropic conserve les tokens d'entrée sur les serveurs pendant 5 minutes (le délai étant réinitialisé à chaque cache hit). La lecture de tokens en cache ne coûte que 10 % du prix de base en entrée (0,30 $/1M contre 3,00 $/1M sur Sonnet).

+-------------------------------------------------------------------------+
|                  Cycle de vie du Prompt Caching Anthropic               |
+-------------------------------------------------------------------------+
                                     |
                                     v
+-------------------------------------------------------------------------+
| [System Prompt et Définitions d'Outils] (Préfixe statique - Toujours en cache) |
+-------------------------------------------------------------------------+
                                     |
                                     v
+-------------------------------------------------------------------------+
| [Carte d'architecture et Règles de codage] (Point de contrôle en cache) |
+-------------------------------------------------------------------------+
                                     |
                                     v (Point de rupture de cache !)
+-------------------------------------------------------------------------+
| [Instructions utilisateur dynamiques et historique] (Fin non cachée)   |
+-------------------------------------------------------------------------+

Bonnes pratiques pour préserver le cache

  1. Ne jamais injecter d'horodatages dynamiques dans le contexte système : Évitez d'insérer des dates ou des identifiants de session dynamiques dans CLAUDE.md. La modification d'un seul caractère au début du préfixe invalide l'ensemble des tokens en cache qui suivent.
  2. Enchaîner les requêtes dans la fenêtre des 5 minutes : Le TTL du cache est de 300 secondes. Si vous vous interrompez pendant 6 minutes pour relire du code, l'étape suivante subira une facturation complète d'écriture en cache (3,75 $/1M).
  3. Ordonner les directives du plus statique au plus dynamique : Le moteur de Claude Code positionne les directives stables au début de la charge utile de l'API. Assurez-vous que vos règles dans CLAUDE.md demeurent déterministes.

5. Pilier 3 : Déploiement de sous-agents et isolation des sous-tâches

L'un des pièges les plus coûteux avec les agents de terminal est le syndrome de la session monolithique. Au cours d'un même échange continu, l'ingénieur demande à Claude de reproduire un bogue, d'écrire des tests, de refactoriser le code, d'exécuter la suite d'intégration et de mettre à jour la documentation.

À la 12e itération, la fenêtre de contexte contient des centaines de lignes de tests échoués, de logs du compilateur et d'anciennes versions de fichiers. Chaque nouvelle question réexpédie inutilement cette masse de données obsolètes à l'API.

Architecture d'agents à deux niveaux : Scout et Worker

Séparez la phase d'investigation de la phase de modification active :

[Requête utilisateur]
       |
       v
+---------------------------------------------+
|  Niveau 1 : Sous-agent Scout (Lecture Seule)|
|  - Exécuté sur claude-3-5-haiku             |
|  - Utilise Glob, Grep et lectures par lignes|
|  - Condense 500 000 tokens en 2 Ko de résumé|
+---------------------------------------------+
       |
       v (Transmission du contexte allégé)
+---------------------------------------------+
|  Niveau 2 : Agent Exécuteur Principal       |
|  - Exécuté sur claude-3-7-sonnet            |
|  - Reçoit les CHEMINS EXACTS et symboles AST|
|  - Applique des patchs chirurgicaux ciblés  |
+---------------------------------------------+

Mettre en pratique l'isolation des tâches dans Claude Code

Structurez les travaux complexes en étapes de terminal bien distinctes :

# Inefficace : Inflation incontrôlée du contexte
claude "Trouve tous les endpoints avec l'ancienne auth, migre-les sur OAuth2, répare les tests et documente"

# Efficace : Reconnaissance isolée -> Exécution chirurgicale
# Étape 1 : Exploration à coût minime
claude --model claude-3-5-haiku -p "Liste uniquement les chemins de fichiers et numéros de ligne utilisant l'ancien middleware auth, au format JSON." > auth-audit.json

# Étape 2 : Modification chirurgicale en contexte épuré
claude --model claude-3-7-sonnet "Réfractore les endpoints listés dans auth-audit.json vers le middleware OAuth2. Ne touche à aucun autre fichier."

6. Pilier 4 : Sélection des modèles — Quel modèle Claude consomme le moins de tokens ?

Tous les modèles Claude ne consomment pas la même quantité de tokens pour accomplir une même tâche :

  • Budget de réflexion (Thinking) : Les modèles dotés d'Extended Thinking génèrent des milliers de tokens de réflexion interne facturés comme des tokens de sortie (15,00 $/1M sur Sonnet).
  • Verbosité des appels d'outils : Certains modèles formulent de longs paragraphes explicatifs avant d'invoquer un outil, augmentant la génération.
  • Précision de recherche : Les modèles avancés localisent un symbole en 1 ou 2 requêtes grep ciblées, là où des modèles moins précis lisent des fichiers entiers à l'aveugle.

Comparatif de la consommation selon le type de tâche

Type de Tâche Claude 3.5 Haiku Claude 3.7 Sonnet (Normal) Claude 3.7 Sonnet (8k Thinking) Claude 3 Opus
Localisation de symbole 12k tokens / 0,01 $ 14k tokens / 0,04 $ 24k tokens / 0,18 $ 18k tokens / 0,27 $
Correction d'un bogue local 28k tokens / 0,03 $ 22k tokens / 0,07 $ 35k tokens / 0,24 $ 30k tokens / 0,45 $
Refactoring (5 fichiers) Taux d'échec élevé 140k tokens / 0,48 $ 190k tokens / 1,25 $ 220k tokens / 3,30 $
Race condition concurrente Incapable de résoudre 320k tokens (échec) 240k tokens (résolu) / 1,60 $ 280k tokens / 4,20 $

Recommandations pratiques

  • Modèle de référence par défaut : Utilisez claude-3-7-sonnet en mode normal pour 80 % des tâches d'ingénierie courantes.
  • Exploration et scripts : Recourez à claude-3-5-haiku pour la découverte de fichiers, la création de regex, les scripts shell et l'analyse de logs.
  • Mode Thinking ciblé : Réservez la réflexion étendue (thinking: { budget_tokens: 4000 }) exclusivement aux algorithmes complexes ou aux blocages de compilation persistants.

7. Configuration avancée et personnalisation de .claude/config.json

Claude Code permet un réglage précis de son comportement via ~/.claude.json pour la configuration globale ou .claude/config.json pour le projet.

Exemple de configuration haute performance .claude/config.json

{
  "$schema": "https://json.schemastore.org/claude-code-config.json",
  "model": "claude-3-7-sonnet",
  "maxThinkingTokens": 2048,
  "autoCompactContext": true,
  "contextCompactionThreshold": 0.65,
  "allowedTools": [
    "Edit",
    "Bash",
    "Glob",
    "Grep",
    "Read"
  ],
  "toolLimits": {
    "bashOutputMaxLines": 150,
    "readFileMaxLines": 300
  },
  "enableTelemetry": false
}

Paramètres clés décryptés

  1. maxThinkingTokens: 2048 : Plafonne le budget de réflexion. Par défaut, un processus de raisonnement non bridé peut engloutir entre 8k et 16k tokens (0,12 $ à 0,24 $) par étape sur des cas basiques.
  2. autoCompactContext: true : Déclenche une synthèse automatique de l'historique de conversation dès que la fenêtre atteint 65 % de capacité (contextCompactionThreshold: 0.65).
  3. bashOutputMaxLines: 150 : Empêche les suites de tests ou les gestionnaires de paquets de déverser 5 000 lignes de logs bruts dans votre contexte.

8. Modèles tactiques de prompts pour préserver les tokens

La manière de formuler vos instructions influe sur près de 40 % de la facture de tokens :

Modèle 1 : Lecture ciblée par plages de lignes

Au lieu de laisser Claude ingérer un fichier complet, indiquez la plage pertinente :

# Inefficace : Lit 1 800 lignes (14 000 tokens)
"Lis src/auth/session.ts et vérifie pourquoi la validation du token utilisateur échoue"

# Efficace : Ne lit que 60 lignes (450 tokens)
"Inspecte les lignes 120 à 180 du fichier src/auth/session.ts où verifyJwt() est définie"

Modèle 2 : Filtrage strict des sorties de commandes

Lors de l'exécution de tests ou de builds, exigez des comptes rendus condensés :

# Inefficace : Verse des milliers de lignes de tests réussis dans le contexte
"Lance npm test et corrige le problème"

# Efficace : Filtre le superflu
"Lance npm test -- --reporter=dot ou filtre la sortie avec grep pour isoler l'erreur. N'affiche pas les tests réussis."

Modèle 3 : Nettoyage proactif du contexte (/compact et /clear)

Servez-vous régulièrement des commandes intégrées :

  • /compact : Force la compression immédiate du contexte sous forme de résumé technique dense.
  • /clear : Réinitialise entièrement la fenêtre de mémoire avant d'aborder une tâche distincte, sans quitter le terminal.

9. Matrice comparative des stratégies d'optimisation

Stratégie d'Optimisation Économie Moyenne de Tokens Difficulté de Mise en Œuvre Risque pour le Code Principe d'Action
.claudeignore rigoureux 40 % – 60 % Faible (5 min) Nul Bloque lockfiles, médias et répertoires de build
Compression de contexte (/compact) 30 % – 50 % Immédiate (commande) Faible Élimine les vieux logs bash et les versions obsolètes
Reconnaissance par sous-agent 35 % – 55 % Moyenne Très faible Sépare l'exploration lourde de la retouche ciblée
Plafonnement du budget Thinking 20 % – 35 % Faible (fichier config) Faible-Moyen Bloque les dérives de sur-réflexion sur des tâches simples
Patchs par lignes ancrées 15 % – 25 % Faible (bonne pratique) Faible Évite la réécriture complète au profit de diffs ciblés
Structuration du Prompt Cache 10 % – 20 % (Coût) Moyenne Nul Verrouille les préfixes statiques pour profiter des 90 % de remise

10. Conclusion et plan d'action en 5 étapes

Réduire de 75 % sa consommation de tokens dans Claude Code ne dégrade en rien la qualité du code produit. Au contraire, un contexte concis et précis élimine le bruit informationnel qui provoque les hallucinations et l'éparpillement d'attention.

Plan d'action immédiat en 5 étapes :

  1. [ ] Déployer .claudeignore : Placez le modèle de production à la racine de votre projet et écartez les lockfiles et dossiers de build.
  2. [ ] Ajuster config.json : Plafonnez le budget de réflexion à 2048 et activez autoCompactContext à 0.65.
  3. [ ] Attribuer les rôles aux modèles : claude-3-7-sonnet pour le code, claude-3-5-haiku pour l'exploration, et réservez la réflexion étendue aux problèmes critiques.
  4. [ ] Canaliser les sorties terminal : Exécutez vos tests avec des options concises (--reporter=min, filtrage par grep) pour rester sous la barre des 100 lignes de sortie.
  5. [ ] Réinitialiser régulièrement le contexte : Utilisez /compact ou /clear entre deux objectifs distincts pour contrer le Context Rot.

En adoptant ces réflexes dans votre terminal au quotidien, vous conserverez toute la puissance d'exécution des agents autonomes tout en réduisant considérablement votre facture mensuelle d'API.

← Tous les Articles
0 / 4