KostenoptimierungAnleitung
Claude Code Token-Nutzung: Tool-Ausgabe aus dem Kontext heraushalten
Wie ein PreToolUse-Hook und das context-mode-Plugin Testprotokolle aus dem Kontext von Claude Code heraushalten, plus eine Sitzungskostenschätzung mit und ohne Filterung.

Auf dieser Seite
Dein Agent hat die Testsuite dreimal ausgeführt, und die Rechnung ist größer als die Aufgabe. Der Grund ist selten der Code, den er geschrieben hat. Es sind die Testprotokolle: Sobald ein Tool-Ergebnis im Kontext von Claude Code landet, trägt jede spätere Anfrage es erneut mit sich. Die Lösung besteht darin, die Tool-Ausgabe zu verkleinern, bevor das Modell sie sieht. Der offizielle Weg ist ein PreToolUse-Hook auf Bash; der Drittanbieter-Weg ist das context-mode-Plugin. Beide sind unten aufgeführt, mit einer Kostenschätzung für eine lange Sitzung auf einem CheapTokens-Modell.
Warum ein Protokoll viele Male bezahlt wird#
Laut der Claude Code-Kostenseite (https://code.claude.com/docs/en/costs, geprüft am 23. Oktober 2026) sendet Claude Code die vollständige Konversation mit jeder Anfrage, und jede Tool-Nutzung löst eine weitere Anfrage aus, die die Tool-Ergebnisse mit sich führt. Prompt-Caching liest den Verlauf zu einem günstigeren gecachten Tarif erneut, aber die Token sind immer noch da.
Angenommen, der Agent führt npm test aus und erhält ein 10.000-Zeilen-Protokoll. Die Dokumentation besagt, dass eine solche Protokolldatei Zehntausende von Token umfassen kann. Nehmen wir 30.000 Token an. Was auch immer du als Nächstes tust, diese 30.000 Token sind Teil der Eingabe von Schritt 11, Schritt 12, Schritt 13 und so weiter, bis du /clear oder komprimierst. Und das ist der Haken: Das Protokoll ist für einen Schritt nützlich, und du bezahlst es für dreißig.
Lösung 1: Ein PreToolUse-Hook, der Testausgaben filtert#
Dieselbe Dokumentationsseite schlägt Hooks als Vorverarbeitung vor: Ein PreToolUse-Hook auf Bash schreibt Testbefehle (npm test, pytest, go test) um, sodass sie durch grep - geleitet werden. Der Agent sieht dann nur Fehler plus ein paar Zeilen Kontext, nicht 10.000 Zeilen grüner Punkte. Die Dokumentation besagt, dass dies Zehntausende von Token in Hunderte verwandeln kann.

Dies ist das Skript von dieser Dokumentationsseite (geprüft am 23. Oktober 2026). Es benötigt jq. Erstelle den Ordner mit mkdir -, speichere das Skript als ~/ und führe chmod +x darauf aus:
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'
if [[ "$cmd" =~ $pattern ]]; then
filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
echo "$input" | jq --arg filtered "$filtered_cmd" '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'
else
echo "{}"
fiDann registriere es in ~/:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }]
}
]
}
}Um zu prüfen, ob es funktioniert, öffne /hooks innerhalb von Claude Code und suche den PreToolUse-Eintrag, oder starte mit claude - und bitte den Agenten, npm test auszuführen. Wenn der Hook den Befehl umgeschrieben hat, enthält die Datei eine modified tool input keys-Zeile mit dem command-Feld. Wenn die Tests bestehen, ist die Ausgabe leer, sodass der Agent einen stillen Erfolg erhält; passe das Muster an, wenn dein Runner Fehler anders ausgibt.
Lösung 2: context-mode für große Tool-Ergebnisse#
Ein Hook deckt nur Befehle ab, die du weiterleiten kannst. Seiten-Snapshots von Playwright oder eine Liste von zwanzig GitHub-Issues stammen von MCP-Tools. Darauf zielt context-mode ab. Laut seiner README (https://github.com/mksglu/context-mode, geprüft am 23. Oktober 2026; sie zeigt keine Version oder Datum) ist es ein MCP-Server und Plugin, das rohe Tool-Ausgaben aus dem Kontextfenster heraushält, den Sitzungszustand in SQLite speichert und Tool-Aufrufe über Hooks leitet. Es benötigt Claude Code v1.0.33 oder neuer, und seine Lizenz ist Elastic License 2.0, was keine OSI-Open-Source-Lizenz ist.
Installation innerhalb von Claude Code:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-modeStarte neu oder führe /reload-plugins aus, dann verifiziere mit /. Die MCP-only-Variante, claude mcp add context-, fügt die Tools hinzu, hat aber kein automatisches Routing.
Das Projekt meldet große Reduzierungen: 315 KB werden zu 5,4 KB (98 %), ein 56-KB-Seiten-Snapshot wird zu 299 Bytes, 986 KB werden zu 62 KB. Das sind die eigenen Zahlen des Autors: Behandle sie als Obergrenze und miss in deiner eigenen Sitzung mit /context vorher und nachher.
Was eine lange Sitzung kostet, mit und ohne Filterung#
Hier ist die Arithmetik für eine angenommene Sitzung. Es ist eine 40-Schritte-Coding-Sitzung mit einem durchschnittlichen Basiskontext von 20.000 Token, 500 Ausgabe-Token pro Schritt und drei Testläufen bei den Schritten 10, 20 und 30. Jedes rohe Protokoll umfasst 30.000 Token; die gefilterte Version 500.
- Ein Protokoll von Schritt 10 wird in den 30 Anfragen danach erneut gesendet: 30 × 30.000 = 900.000 Token. Schritt 20: 20 × 30.000 = 600.000. Schritt 30: 10 × 30.000 = 300.000. Zusätzliche Eingabe: 900.000 + 600.000 + 300.000 = 1.800.000.
- Gefiltert: (30 + 20 + 10) × 500 = 30.000 zusätzliche Eingabe.
- Basiseingabe: 40 × 20.000 = 800.000. Ausgabe: 40 × 500 = 20.000.
- Die Sitzung umfasst also 800.000 + 1.800.000 = 2.600.000 Eingabe-Token ungefiltert und 800.000 + 30.000 = 830.000 gefiltert, mit 20.000 Ausgabe-Token in beiden Fällen.
Die Berechnung zählt jeden Eingabe-Token zum vollen Tarif. Caching senkt die reale Zahl, aber es senkt beide Fälle nach derselben Logik. Live-Preise für MiniMax-M2.7 (MiniMaxAI/, 180K Kontext, bis zu 8.192 Ausgabe-Token), das Modell, das für eingabelastige Agent-Schleifen wie diese geeignet ist, findest du im Diagramm unten.
Annahmen: 40 Schritte, 20.000-Token-Basiskontext, 500 Ausgabe-Token pro Schritt, drei Testläufe mit 30.000 Token (gefiltert: 500).
Auf MiniMax-M2.7 kostet die Sitzung $0.133 ungefiltert und $0.0445 gefiltert, und insgesamt, mit Eingabe und Ausgabe zusammen gezählt, ist sie günstiger als der Referenzpreis von OpenRouter. Etwa zwei Drittel der Eingabe im ungefilterten Fall sind Protokolle, die der Agent einmal gelesen hat.
Der Punkt sind nicht die genauen Dollar. Es ist, dass der Filter etwa 1.770.000 von 2.600.000 Eingabe-Token entfernt (2.600.000 − 830.000 = 1.770.000) bei jedem Modell, und ein günstigeres Modell senkt den Preis für jeden verbleibenden Token.
Claude Code auf einem CheapTokens-Modell ausführen#
Claude Code spricht das Anthropic Messages-Protokoll, und CheapTokens unterstützt es. Die Basis-URL für Claude Code hat kein /v1. Die vollständige Einrichtung findest du in how to connect Claude Code to CheapTokens. Die Kurzversion, mit einem Platzhalter-Schlüssel:
export ANTHROPIC_BASE_URL=https://api.cheaptokens.dev
export ANTHROPIC_AUTH_TOKEN=YOUR_CHEAPTOKENS_KEY
export ANTHROPIC_MODEL=MiniMaxAI/MiniMax-M2.7
claudeVerwende die vollständige ID aus der Dokumentation; kurze Namen aus Preistabellen werden von der API nicht akzeptiert. Preise für jedes Modell findest du auf der Preisseite. Für die anderen Gewohnheiten, die eine Claude Code-Rechnung senken (/clear, /compact, /mcp, Subagenten), siehe How to make Claude Code cheaper. Um zu sehen, wie Eingabe und Ausgabe bei einer echten Anfrage gezählt werden, lies How many tokens does an API request use.
Schnelle Checkliste#
- Führe
/contextin einer langen Sitzung aus und sieh, was Platz einnimmt. - Füge den Bash-Hook für Testbefehle hinzu; bestätige die Umschreibung in
/hooksoder im Debug-Protokoll. - Wenn MCP-Tools große Snapshots zurückgeben, probiere context-mode aus und vergleiche
/contextvorher und nachher. /clearzwischen unabhängigen Aufgaben, damit alte Protokolle nicht mehr mitfahren.



