read-once : Un crochet de code Claude qui empêche les lectures redondantes de fichiers

✍️ OpenClawRadar📅 Publié: March 8, 2026🔗 Source
read-once : Un crochet de code Claude qui empêche les lectures redondantes de fichiers
Ad

Un développeur a créé un crochet PreToolUse appelé read-once qui répond à la tendance de Claude Code à relire les mêmes fichiers pendant une session, ce qui consomme des jetons inutiles.

Le problème et la solution

Claude Code relit souvent des fichiers qu'il a déjà en contexte. Par exemple, ouvrir un fichier de 500 lignes, effectuer une petite modification et faire relire l'intégralité du fichier par Claude coûte environ 2 000+ jetons par lecture. Dans des sessions typiques, les mêmes fichiers peuvent être lus 5 à 10 fois.

Le crochet read-once suit les fichiers que Claude a lus dans la session en cours. Lorsque Claude tente de relire un fichier inchangé, le crochet le bloque et affiche un message tel que : "read-once : config.rs (~3 400 jetons) déjà en contexte (lu il y a 4 min, inchangé). Économies de session : ~12 000 jetons."

Comment cela fonctionne

  • À la première lecture : Enregistre le chemin du fichier, l'heure de modification et l'horodatage, puis autorise la lecture normalement.
  • À la relecture d'un fichier inchangé : Bloque la lecture puisque Claude a déjà le contenu.
  • À la relecture d'un fichier modifié : Au lieu d'autoriser une relecture complète, le crochet calcule la différence et renvoie uniquement ce qui a changé. Claude a déjà l'ancienne version en contexte et n'a besoin que du delta. Pour un fichier de 500 lignes où 3 lignes ont changé, cela utilise ~30 jetons au lieu de ~2 000, économisant 80 à 95 % sur les itérations de fichiers.
Ad

Fonctionnalités et configuration

L'outil est conscient du TTL avec des entrées de cache expirant après 20 minutes (configurable). Après expiration, les relectures sont autorisées car Claude peut avoir compacté le contexte et perdu le contenu précédent.

La configuration se fait via des variables d'environnement :

  • READ_ONCE_TTL=1200 - secondes avant l'expiration du cache (par défaut 20 min)
  • READ_ONCE_DIFF=1 - activer le mode diff
  • READ_ONCE_DIFF_MAX=40 - lignes de diff maximum avant de revenir à une relecture complète
  • READ_ONCE_DISABLED=1 - désactiver complètement

Détails techniques

L'outil entier fait environ 250 lignes de bash sans dépendances au-delà de jq et diff. Il est sous licence MIT et s'installe en s'ajoutant à vos crochets .claude/settings.json.

Le développeur a créé cet outil car il exécute Claude Code dans une boucle autonome où les coûts en jetons s'accumulent rapidement. Le mode diff seul aurait réduit leur utilisation de jetons par session d'environ 30 %.

📖 Lire la source complète : r/ClaudeAI

Ad

👀 See Also