TuBrief
Subscribed Channels
Videos
Community

Règles d'isolation pour économiser 80 % des jetons de session lors de la correction de code legacy avec Claude Code

TuBrief Editorial
September 12, 2026
0
Computing/Software

Written with AI assistance from the source video. The video is the authority.

Français한국어EnglishEspañol中文العربيةDeutschPortuguêsहिन्दीРусскийBahasa Indonesia日本語

Related Video

Donnez-moi 50 minutes, je vous donne plus de 1000 heures de connaissances sur Claude Code (Guide 2026)51:29

Donnez-moi 50 minutes, je vous donne plus de 1000 heures de connaissances sur Claude Code (Guide 2026)

Chase AI

More from the community

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

September 13, 2026

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

September 13, 2026

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

September 13, 2026

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

September 13, 2026

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

September 12, 2026

Apple Won the AI Race

September 12, 2026

Comments (0)

Log in to leave a comment

No posts yet

© 2026 . All rights reserved.

TuBrief
Subscribed Channels
Videos
Community
Log in

Règles d'isolation pour économiser 80 % des jetons de session lors de la correction de code legacy avec Claude Code

Lorsqu'un développeur débutant ou solo connecte Claude Code à une vaste base de code legacy, le budget en jetons est épuisé en moins d'une heure. Sans senior dans l'équipe vers qui se tourner et après avoir seulement appris les commandes CLI de base, ouvrir le terminal ne fait qu'enchaîner les notifications de paiement par carte.

Claude Code ne conserve aucun état de conversation sur ses serveurs. Le system prompt, le fichier de configuration du projet CLAUDE.md, l'historique cumulé des conversations et les résultats des appels d'outils sont regroupés en une seule charge utile (payload) à chaque tour et renvoyés à l'API d'Anthropic. Juste après le début de la session, lors des 1 ou 2 premiers tours, cela tourne autour de 15 000 jetons, mais dès que l'agent commence à explorer et lit des artéfacts de build ou des dizaines de milliers de lignes de journaux (logs), la charge utile grimpe jusqu'à 80 000 jetons. Passé 6 à 10 tours, ce sont entre 120 000 et 200 000 jetons qui s'échangent à chaque tour. C'est une structure où les coûts s'accumulent de manière composée à chaque tour.

Regarder les tarifs officiels de mise en cache des invites (prompt caching) d'Anthropic rend la cause encore plus évidente. Si le même contexte de préfixe est maintenu, vous ne payez que 10 % du coût des jetons d'entrée de base. En revanche, si l'agent lit de manière irrégulière des dizaines de milliers de lignes de code et brise le préfixe du cache, un coût de génération de cache 1.25 fois supérieur (basé sur un TTL de 5 minutes) s'applique à nouveau. C'est la raison pour laquelle quelques recherches suffisent pour atteindre des factures difficiles à assumer seul.

.claudeignore ne fonctionne pas

Beaucoup de développeurs se sentent rassurés en créant un fichier .claudeignore dans le répertoire racine. Pour aller droit au but, ce type de fichier de configuration n'existe pas dans le moteur CLI officiel de Claude Code. Quant à la méthode consistant à écrire « Ne pas lire le dossier des logs » dans le fichier CLAUDE.md, le modèle l'ignore dès qu'il estime que c'est nécessaire.

Pour couper physiquement l'accès de l'agent aux fichiers au niveau du moteur, vous devez utiliser le paramètre permissions.deny du fichier .claude/settings.json.

Commencez par regrouper les artéfacts de build et les fichiers de sécurité dans .claude/settings.json à la racine du projet.

json { "permissions": { "deny": [ "Read(./.env*)", "Read(./secrets/**)", "Read(**/node_modules/**)", "Read(**/dist/**)", "Read(**/build/**)", "Read(**/coverage/**)", "Read(**/target/**)", "Read(**/*.log)", "Read(**/*.map)", "Read(legacy-backups/**)", "Edit(**/dist/**)", "Write(**/dist/**)" ], "ask": [ "Bash(git push *)", "Bash(npm publish)", "Bash(rm -rf *)" ], "allow": [ "Read", "Edit", "Bash(npm test)", "Bash(npm run lint)", "Bash(git status)", "Bash(git diff *)" ] } }

Pour éviter que le code frontend ne soit aspiré lors de la modification de la logique backend, séparez les paramètres locaux dans un fichier dédié .claude/settings.local.json.

json { "permissions": { "deny": [ "Read(apps/web/**)", "Read(frontend/**)", "Read(public/**)", "Edit(apps/web/**)", "Write(apps/web/**)" ] } }

Vous devez également empêcher l'agent de déverser des logs volumineux en entier dans le terminal à l'aide de commandes shell telles que cat ou head. Interceptez les commandes en amont en configurant un hook PreToolUse dans .claude/settings.json.

json { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash", "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/block-large-reads.sh"] } ] } ] } }

Créez le fichier .claude/hooks/block-large-reads.sh et donnez-lui les droits d'exécution avec chmod +x.

`bash
#!/usr/bin/env bash
PAYLOAD=(cat)COMMAND=(cat) COMMAND=(cat)COMMAND=(echo "$PAYLOAD" | jq -r '.tool_input.command // empty')

if echo "$COMMAND" | grep -Eq '(cat|head|tail|less)\s+.*(.log|.map|.lock|dist/|build/)'; then
echo "La sortie directe de fichiers volumineux a été détectée, arrêt de l'exécution." >&2
exit 2
fi

exit 0
`

Le renvoi d'un code de sortie 2 au niveau du processus du système d'exploitation arrête immédiatement la sortie de fichiers par l'agent. Cela bloque l'analyse de fichiers inutiles et réduit de moitié la consommation de jetons lors des premiers tours.

Interdire la réécriture complète des fichiers et transmettre le code par fonction

Permettre à l'agent de réécrire l'intégralité d'un fichier de plus de 1 000 lignes simplement pour modifier une variable introduit des bugs et gaspille des jetons de sortie. Claude Code sépare l'outil Write, qui écrase les fichiers, de l'outil Edit, qui ne remplace que des blocs de chaînes spécifiques.

Vous devez imposer des règles de modification dans le fichier CLAUDE.md à la racine du projet.

`markdown

Code Modification Constraints

  • Ne jamais réécrire (Write) un fichier en entier.
  • Remplacer uniquement la plus petite unité nécessitant un changement à l'aide de l'outil Edit (old_string -> new_string).
  • Lors d'une correction de bug, ne pas modifier arbitrairement le formatage ou les espaces du code environnant.
  • Avant de terminer la tâche, vérifier via git diff que seules les modifications voulues ont été apportées.
    `

Plutôt que de confier l'intégralité d'un fichier volumineux à l'agent, il vaut mieux n'en extraire que la fonction cible. Voici un script shell (extract-func.sh) utilisant l'outil d'analyse AST ast-grep.

`bash
#!/usr/bin/env bash
TARGET_FILE=1FUNCNAME=1 FUNC_NAME=1FUNCN​AME=2

if [ -z "TARGETFILE"]∣∣[−z"TARGET_FILE" ] || [ -z "TARGETF​ILE"]∣∣[−z"FUNC_NAME" ]; then
echo "Utilisation : ./extract-func.sh " >&2
exit 1
fi

if command -v sg &> /dev/null; then
sg run --pattern "function FUNCNAME($$$ARGS)$$$BODY""FUNC_NAME(\$\$\$ARGS) { \$\$\$BODY }" "FUNCN​AME($$$ARGS)$$$BODY""TARGET_FILE"
else
LINE_START=(ctags−x−−c−kinds=f"(ctags -x --c-kinds=f "(ctags−x−−c−kinds=f"TARGET_FILE" 2>/dev/null | grep -w "$FUNC_NAME" | awk '{print 3}') if [ -n "LINE_START" ]; then
sed -n "LINESTART,{LINE_START},LINES​TART,((LINE_START + 100))p" "$TARGET_FILE"
else
grep -n -A 60 "function FUNCNAME""FUNC_NAME" "FUNCN​AME""TARGET_FILE"
fi
fi
`

Transmettez uniquement la fonction extraite ou le git diff indexé en mode sans tête (claude -p) pour demander des modifications.

`bash

Injecter uniquement une fonction spécifique pour obtenir le code de correction

./extract-func.sh src/billing.js processRefund | claude -p "N'affiche que le bloc de code de remplacement pour Edit (new_string) corrigeant l'erreur de calcul de la fonction ci-dessus."

Valider uniquement les modifications indexées

git diff --staged src/services/OrderService.js | claude -p "Indique uniquement les défauts de concurrence ou risques de référence null susceptibles de se produire dans ce diff."
`

Fournir en entrée des tranches de 50 à 100 lignes au lieu de l'ensemble du code source permet de réduire la consommation de jetons par tour de près de 90 %.

Enregistrer et vider l'état de la session avec HANDOFF.md

Il n'y a aucune raison de faire traîner le travail sur une seule longue session. Plus l'historique des conversations s'accumule, plus le tarif de base à payer à chaque tour augmente. Le modèle Claude prend en charge /autocompact, qui résume lui-même l'historique des conversations lorsqu'il atteint environ 967 000 jetons, mais il arrive souvent que le système supprime des paramètres importants ou des contextes de cas limites (edge cases) au cours de ce raccourcissement. Vous devez vider le contexte vous-même.

Vérifiez l'état actuel dans le terminal à l'aide de trois commandes intégrées :

  • /context : Permet de voir le ratio de mémoire occupé par le prompt système et l'historique de conversation.
  • /usage : Permet de vérifier l'utilisation des jetons de session et le taux d'épuisement de la limite du forfait.
  • /cost : Permet de contrôler le coût réel en dollars accumulé jusqu'à la session actuelle.

Si le nombre de jetons dépasse 100 000 ou qu'une unité de travail spécifique est terminée, demandez à Claude Code de rédiger un fichier HANDOFF.md avant de fermer la session.

text Enregistre l'état du travail de la session en cours dans le fichier HANDOFF.md à la racine du projet selon le format suivant : Goal : Objectif de travail et module ciblé Current Progress : Fichiers modifiés et lignes précises What Worked : Logique dont la validation est terminée et tests réussis What Failed : Approches ayant échoué et précautions à prendre Immediate Next Step : Tâche unique à exécuter dès le début de la session suivante

Une fois l'enregistrement terminé, videz la fenêtre de contexte avec la commande /clear. Ouvrez une nouvelle session et transmettez uniquement le résumé de la session précédente.

text Lis le fichier HANDOFF.md et poursuis le travail à partir de la section Immediate Next Step. Ne tente pas les méthodes ayant échoué précédemment.

Si vous commencez à tourner en rond avec la même erreur plus de 3 fois, vous devez immédiatement appuyer sur la touche Escape pour vous arrêter. S'il est délicat de vider entièrement la session, revenez au tour précédent qui fonctionnait correctement à l'aide de /rewind. Comme /rewind préserve le cache du prompt système établi, vous pouvez revenir à une branche normale sans payer de frais d'écriture de cache supplémentaires.

Niveau de contrôle par couche de défense

Couche de défense Emplacement de configuration Niveau de contrôle Effet mesuré de réduction des jetons
Filtrage des fichiers (Harness) .claude/settings.json (permissions.deny) Forcé par le moteur CLI Blocage de 50 % à 80 % des jetons de balayage initial par session
Pare-feu de commandes shell Hook PreToolUse (block-large-reads.sh) Blocage au niveau du processus OS (Exit 2) Protection à 100 % contre les sorties massives de logs et de fichiers de bundle
Découpage du contexte (Slicing) Pipeline ast-grep, git diff Limitation de la plage d'entrée Réduction de 90 % des jetons par tour d'analyse et de modification de fichiers
Gestion de la durée de vie des sessions /context, /clear, HANDOFF.md Persistance manuelle de l'état Réduction de plus de 60 % de la facturation cumulée des jetons composés en fin de session

Il est nécessaire de bloquer les chemins superflus avec .claude/settings.json et de respecter la règle qui consiste à ne transmettre que du code découpé (slicing) au lieu de fichiers volumineux pour pouvoir exploiter efficacement Claude Code comme un outil de développement réel dans un environnement de développeur solo.