← Retour au blog

Discipliner Claude Code : architecture en 6 phases pour diviser sa facture par 5

🇫🇷 Vous lisez en français. Pour la version anglaise, cliquez sur EN en haut à droite.
285M

Tokens bruts ingérés en 7 jours

50M

Coût pondéré réel (ce que vous payez)

-82%

Réduction du coût effectif par session

De 285M tokens bruts à 50M en coût réel Bruts 285M Cache 269M × 0,1x (économisé) Réel 50M -82% Les lectures de cache coûtent 10× moins : seuls 50M sur 285M sont vraiment facturés au tarif plein.

L'autonomie a un coût caché. Sorti de la boîte, Claude Code est un gouffre à tokens. Conçu pour la fluidité au détriment de l'efficacité économique, l'agent ingère aveuglément des milliers de lignes de logs, saturant son Context Window. Le résultat ? Une latence qui s'effondre, une facture d'API qui explose, et un LLM amnésique.

J'ai conçu une architecture en 6 phases pour discipliner cet agent via des Hooks et des Skills. Sur 14 sessions et 285 millions de tokens bruts, le coût pondéré réel est tombé à 50 millions d'unités. Ce n'est pas de la théorie. Ce sont mes logs JSONL.

L'architecture : intercepter avant que ça ne coûte

Claude Code fonctionne en boucle d'exécution. Votre prompt entre. Claude raisonne (tokens de thinking). Il appelle un outil : Read, Bash, Edit. Le résultat entre dans le Context Window. La boucle recommence. Chaque tour empile du contenu dans une fenêtre finie. Quand elle sature, Claude perd ses instructions initiales. La qualité s'effondre. La facture, elle, continue.

Le point d'intervention chirurgical : le PreToolUse Hook. Il se déclenche avant que l'outil ne s'exécute, avant que les tokens n'entrent dans le contexte. Si le fichier fait plus de 300 lignes, le hook le bloque et renvoie un message à Claude : utilise grep -n ou head à la place. Le hook ne suggère pas. Il décide.

L'architecture en 6 phases Claude Code discipliné ① PreToolUse Hook Bloque avant la lecture ② Skills Chargement à la demande ③ Sous-agent Haiku Exploration isolée (−90%) ④ /compact Résumé toutes les 30 min ⑤ /clear Reset entre les tâches ⑥ CLAUDE.md 35 lignes — rien de plus Execution Loop : le PreToolUse Hook intercepte ici Votre prompt Claude raisonne (thinking tokens facturés) Appel d'outil : Read / Bash / Edit PreToolUse Hook se déclenche ICI BLOQUÉ Résultat entre dans le contexte la boucle recommence boucle
#!/bin/bash
# .claude/hooks/guard-large-read.sh — PreToolUse Hook
INPUT=$(cat)
FILE=$(echo "$INPUT" | python3 -c "
import json, sys
print(json.load(sys.stdin).get('tool_input', {}).get('file_path', ''))
" 2>/dev/null || echo "")

if [ -z "$FILE" ] || [ ! -f "$FILE" ]; then exit 0; fi

LINES=$(wc -l < "$FILE" 2>/dev/null || echo 0)
if [ "$LINES" -gt 300 ]; then
  python3 -c "
import json
print(json.dumps({
  'decision': 'block',
  'reason': '$FILE has $LINES lines. Use grep -n pattern $FILE | head -20'
}))
"
  exit 0
fi
exit 0
Context Window : sans hooks vs avec hooks Sans hooks fichier entier — 2 000 lignes sortie bash — 500 lignes logs — 1 200 lignes historique — 40 tours dépendances explorées SATURÉ — amnésie LLM Avec hooks espace libre contexte chirurgical — 15 lignes résumé JSON sous-agent ~285M tokens bruts ~50M tokens pondérés

Ce hook s'est déclenché 75 fois en une semaine. Chaque blocage a intercepté entre 1 500 et 50 000 tokens. Faites le calcul : c'est potentiellement 3,75 millions de tokens gaspillés qui n'ont jamais atteint le Context Window.

Règle FinOps : Claude interprète vos demandes. Un Hook s'exécute, quoi qu'il arrive. C'est la différence entre une suggestion et une contrainte système. Ne confondez jamais un prompt poliment formulé avec une barrière d'architecture.

Le paradigme de Co-Coding : l'humain est le routeur

Le mythe de l'autonomie totale est le piège financier le plus cher de l'écosystème LLM. Laisser un agent explorer librement une codebase, c'est lui donner une carte bancaire illimitée dans un supermarché. Il achètera tout ce qui brille.

Voici un exemple concret, tiré de mon flux de travail quotidien : les agents sont bloqués par les hooks (Read > 300 lignes + Bash refusé en sous-agents). Que se passe-t-il ? Je fais l'extraction directement. 10 secondes. 0 token de recherche. Le contexte de Claude reste propre.

Ce n'est pas un frein. C'est une architecture de répartition des rôles :

Séquence d'un cycle Co-Coding Humain Hook Claude ① extrait 15 lignes → fournit le contexte (0 token) ② Read > 300 lignes → déclenche Hook ③ BLOQUÉ — utilise grep à la place ④ génère le code — contexte propre ⑤ valide — checkpoint FinOps Cycle complet : 10 s humain + 30 s agent — zéro token gaspillé Human-in-the-Loop : répartition des rôles L'HUMAIN — Routeur (High-Level) Cartographie mentale du projet Extraction sémantique chirurgicale 10 secondes, 0 token Fournit le contexte ultra-précis Valide les checkpoints FinOps L'AGENT — Générateur (Low-Level) Reçoit un contexte déjà filtré Produit la complexité syntaxique Hooks = checkpoints FinOps Demande l'autorisation avant d'agir Pas de boucles infinies possibles

L'humain est le routeur High-Level. Il a la cartographie mentale du projet. C'est lui qui fait l'extraction sémantique chirurgicale : copier les 15 lignes pertinentes d'un fichier de 2 000 lignes, ça prend 10 secondes et ça coûte 0 token de recherche.

L'agent est le générateur Low-Level. Il reçoit un contexte ultra-précis et produit la complexité syntaxique : refactoring, génération de code, tests unitaires. Forcer Claude à demander des autorisations n'est pas un frein. C'est un checkpoint FinOps indispensable pour éviter qu'il ne crame du budget dans des boucles infinies.

L'enjeu est clair : chaque token qui entre dans le Context Window est un coût irrécupérable. Le co-coding n'est pas un compromis entre vitesse et contrôle. C'est l'architecture optimale. L'humain route. L'agent génère. Les hooks arbitrent.

Le reste de l'arsenal : Skills, sous-agents et compaction

Tout ce qui est dans CLAUDE.md est chargé à chaque tour de conversation. Trois workflows mal placés ? C'est 2 400 tokens facturés par tour, même quand ils sont inutiles. La solution : les déplacer vers des Skills. Au démarrage, Claude ne charge que le nom (40 tokens). Le contenu complet se charge uniquement quand le skill est invoqué.

Pour l'exploration de codebase, je délègue à un sous-agent Haiku, dix fois moins cher que Sonnet, dans une fenêtre de contexte isolée. Il explore. Il retourne un résumé JSON de 200 mots maximum. La session principale reçoit la réponse, pas le bruit du chemin d'exploration.

Enfin, /compact toutes les 30 minutes remplace l'historique par un résumé dense. Et /clear entre les tâches. Mon CLAUDE.md fait 35 lignes : préférences de style et choix d'outils. Rien d'autre.

Budget Pro hebdomadaire (coût pondéré) 50.4M / ~100M

285M tokens bruts se réduisent à 50M en coût pondéré. Les lectures de cache (269M) sont facturées à 0,1x. Sans les hooks, ce chiffre serait quatre fois plus élevé.

Passez à l'action : deux ressources, deux usages

Ces chiffres ne viennent pas d'un benchmark artificiel. Ils proviennent de mes vrais logs JSONL, analysés avec le script inclus dans le dépôt. Deux dépôts GitHub, deux fonctions distinctes :

Le Tool (Plug & Play)
github.com/papasega/claude-code-token-optimization
Le prompt chirurgical qui exécute l'audit et l'optimisation en 6 phases, en totale autonomie. Collez-le dans Claude Code. Il analyse vos settings, installe les hooks, mesure l'avant/après. Temps d'exécution : 5 minutes.

Le Framework (Gouvernance d'équipe)
github.com/papasega/claude-code-best-practice-playbook
Le playbook complet avec les règles de gouvernance, l'architecture des settings et les patterns de co-coding pour déployer Claude Code à l'échelle d'une équipe. Du prompt individuel au framework organisationnel.

285 millions de tokens bruts ne sont pas un problème. 50 millions d'unités pondérées sur 14 sessions, 75 blocages interceptés, un Context Window toujours propre. L'objectif n'a jamais été d'utiliser moins de tokens. L'objectif est de faire en sorte que chaque token qui entre dans la fenêtre serve la tâche en cours. Le reste n'a pas le droit d'entrer.

Vous n'avez pas besoin d'un agent plus puissant. Vous avez besoin d'un agent qui sait obéir.
Les meilleurs systèmes ne sont pas ceux qui font le plus. Ce sont ceux qui savent exactement quand s'arrêter.