read-once: Ein Claude-Code-Hook, der redundante Dateizugriffe verhindert

Ein Entwickler hat einen PreToolUse-Hook namens read-once erstellt, der Claude Codes Tendenz adressiert, während einer Sitzung wiederholt dieselben Dateien zu lesen, was unnötige Tokens verbraucht.
Das Problem und die Lösung
Claude Code liest Dateien oft erneut, die es bereits im Kontext hat. Zum Beispiel kostet das Öffnen einer 500-Zeilen-Datei, eine kleine Bearbeitung und das erneute Lesen der gesamten Datei durch Claude etwa 2.000+ Tokens pro Lesevorgang. In typischen Sitzungen könnten dieselben Dateien 5-10 Mal gelesen werden.
Der read-once-Hook verfolgt, welche Dateien Claude in der aktuellen Sitzung gelesen hat. Wenn Claude versucht, eine unveränderte Datei erneut zu lesen, blockiert der Hook dies und zeigt eine Nachricht wie: "read-once: config.rs (~3.400 Tokens) bereits im Kontext (vor 4m gelesen, unverändert). Sitzungseinsparungen: ~12.000 Tokens."
Wie es funktioniert
- Beim ersten Lesen: Zeichnet den Dateipfad, die Änderungszeit und den Zeitstempel auf und erlaubt dann das Lesen normal.
- Beim erneuten Lesen einer unveränderten Datei: Blockiert das Lesen, da Claude den Inhalt bereits hat.
- Beim erneuten Lesen einer geänderten Datei: Anstatt ein vollständiges erneutes Lesen zu erlauben, berechnet der Hook den Diff und gibt nur zurück, was sich geändert hat. Claude hat die alte Version bereits im Kontext und benötigt nur das Delta. Für eine 500-Zeilen-Datei, in der 3 Zeilen geändert wurden, werden so ~30 Tokens anstelle von ~2.000 verwendet, was 80-95 % bei Dateiiterationen einspart.
Funktionen und Konfiguration
Das Tool ist TTL-bewusst, wobei Cache-Einträge nach 20 Minuten (konfigurierbar) ablaufen. Nach Ablauf werden erneute Lesevorgänge erlaubt, da Claude den Kontext möglicherweise komprimiert und frühere Inhalte verloren hat.
Die Konfiguration erfolgt über Umgebungsvariablen:
READ_ONCE_TTL=1200- Sekunden, bevor der Cache abläuft (Standard 20 Min.)READ_ONCE_DIFF=1- Diff-Modus aktivierenREAD_ONCE_DIFF_MAX=40- maximale Diff-Zeilen, bevor auf vollständiges erneutes Lesen zurückgegriffen wirdREAD_ONCE_DISABLED=1- komplett ausschalten
Technische Details
Das gesamte Tool besteht aus etwa 250 Zeilen Bash ohne Abhängigkeiten außer jq und diff. Es ist unter der MIT-Lizenz lizenziert und wird installiert, indem es selbst in Ihre .claude/settings.json-Hooks eingefügt wird.
Der Entwickler hat dieses Tool gebaut, weil er Claude Code in einer autonomen Schleife ausführt, bei der sich die Token-Kosten schnell summieren. Der Diff-Modus allein hat angeblich ihren Token-Verbrauch pro Sitzung um etwa 30 % reduziert.
📖 Read the full source: r/ClaudeAI
👀 Siehe auch

Claude-voice: Lokale TTS mit Wort-Hervorhebung für Claude Code
Claude-voice ist ein Python-Tool, das lokale Text-zu-Sprache mit Echtzeit-Worthervorhebung zum Sprachmodus von Claude Code hinzufügt. Es verwendet Kokoro TTS (82 Millionen Parameter) und läuft vollständig lokal ohne API-Schlüssel.

OpenClaw-Speicherverlustbehebung mit dem Mem0-Plugin
OpenClaw-Agents erleiden Gedächtnisverlust aufgrund von Kontextkomprimierung, die Dateien wie MEMORY.md überschreibt. Das Mem0-Plugin löst dies, indem es das Gedächtnis außerhalb des Kontextfensters mit automatischer Erinnerung und automatischer Erfassung verschiebt.

Indie-Entwickler stellt 'Ideanator' CLI-Tool zur Strukturierung vager Ideen mit lokalen LLMs vor
Ideanator ist ein CLI-Tool, das von einem selbstgelernten 19-jährigen Entwickler entworfen wurde, der mit lokalen LLMs wie Ollama/MLX arbeitet. Es strukturiert vage Ideen in klar definierte Konzepte, komplett offline.

Hippocampus: Ein persistentes Speichersystem für KI-Agenten unter Verwendung von Komprimierungsbäumen
Hipocampus löst das Problem, dass KI-Agenten den Kontext zwischen Sitzungen vergessen, indem es einen Komprimierungsbaum implementiert, der den Gesprächsverlauf über fünf Ebenen komprimiert: Rohdaten → täglich → wöchentlich → monatlich → Wurzel, mit einem Themenindex namens ROOT.md.