CLAUDE GUIDE 04 · WERKSTREAM
Context clever einsparen
Was kostet eigentlich der Session-Start? Wie wirken sich Datei-Reads und MCP-Server aus? Hier sind meine Erkenntnisse zum Schlankhalten deines Kontextfensters.
Auf einen Blick (Kurzfassung):
- CLAUDE.md kompakt halten: Unter 200 Zeilen halten – alles Weitere gehört in dedizierte Skills.
- Dateien gezielt lesen: Nicht ganze Verzeichnisse öffnen, sondern konkrete Pfade anfordern.
- MCP-Server aufräumen: Inaktive MCP-Tools über
/mcpdeaktivieren, um den System-Prompt schlank zu halten.
Warum Kontext das knappste Gut ist
Die Docs formulieren es als zentrale Beschränkung: „Die meisten Best Practices beruhen auf einer einzigen Randbedingung: Claudes Kontextfenster füllt sich schnell, und die Leistung nimmt ab, während es sich füllt."
Das ist nicht nur ein Kostenthema. Volle Kontexte lassen Claude frühere Instruktionen „vergessen" und mehr Fehler machen — Anthropic nennt das in seinem Context-Engineering-Artikel context rot: Modelle haben ein begrenztes Aufmerksamkeitsbudget, und jedes zusätzliche Token zehrt daran.
Das Ziel ist entsprechend nicht „so viel Kontext wie möglich", sondern die kleinstmögliche Menge an Tokens mit hohem Signalgehalt.
Was beim Start schon drin ist
Bevor du das erste Wort tippst, ist das Kontextfenster bereits belegt. Die interaktive Simulation in den Docs nennt für eine typische Session:
| Komponente | Tokens | Sichtbar? |
|---|---|---|
| System-Prompt | 4.200 | nein |
| Projekt-CLAUDE.md | 1.800 | nein |
| Auto-Memory (MEMORY.md) | 680 | nein |
| Skill-Beschreibungen | 450 | nein |
~/.claude/CLAUDE.md | 320 | nein |
| Umgebungsinfos (cwd, Shell, OS, Git) | 280 | nein |
| MCP-Tool-Namen (deferred) | 120 | nein |
| Summe vor dem ersten Prompt | ≈ 7.850 |
Diese Zahlen sind Beispielwerte, aber die Größenordnungen sind aussagekräftig: Der Projekt-CLAUDE.md-Anteil ist der einzige große Posten, den du direkt kontrollierst. Auto-Memory lädt die ersten 200 Zeilen bzw. 25 KB, je nachdem was zuerst kommt.
Was Arbeit kostet
Aus derselben Simulation, für eine ganz normale Auth-Debugging-Sitzung:
| Aktion | Tokens |
|---|---|
| Dein Prompt | 45 |
Read src/api/auth.ts | 2.400 |
Read src/lib/tokens.ts | 1.100 |
Rule api-conventions.md (pfadgetriggert) | 380 |
Read middleware.ts | 1.800 |
Read auth.test.ts | 1.600 |
grep "refreshToken" | 600 |
npm test-Output | 1.200 |
| Subagent-Rückgabe (Zusammenfassung) | 420 |
Die Lehre: Datei-Reads sind der dominante Posten. Vier Dateien kosten mehr als der gesamte Session-Start. Alles, was die Zahl der gelesenen Dateien reduziert, wirkt direkt.
Beachte den Subagent in der Tabelle: Er liest drei weitere Dateien, aber im Hauptkontext landen nur 420 Tokens Zusammenfassung. Das ist der Grund, warum Subagents das stärkste Kontextwerkzeug sind.
Hebel 1: CLAUDE.md schlank halten
CLAUDE.md wird bei jeder Session geladen und liegt in jedem Turn im Präfix. Anthropics Regel: unter ~200 Zeilen.
Für jede Zeile die Testfrage stellen: „Würde Claude ohne diese Zeile einen Fehler machen?" Wenn nein, streichen.
| Gehört rein | Gehört raus |
|---|---|
| Bash-Befehle, die Claude nicht raten kann | Alles, was Claude durch Codelesen herausfindet |
| Code-Style-Regeln, die von der Norm abweichen | Standardkonventionen der Sprache |
| Test-Anweisungen, bevorzugte Test-Runner | Detaillierte API-Doku (verlinken statt einbetten) |
| Repo-Etikette (Branch-Namen, PR-Konventionen) | Häufig wechselnde Informationen |
| Projektspezifische Architekturentscheidungen | Datei-für-Datei-Beschreibungen der Codebase |
| Eigenheiten der Dev-Umgebung (nötige Env-Vars) | Selbstverständlichkeiten wie „schreibe sauberen Code" |
| Nicht offensichtliche Fallstricke | Lange Erklärungen und Tutorials |
Ein aufgeblähtes CLAUDE.md ist schlimmer als ein kurzes. Die Docs sind hier eindeutig: Wenn Claude eine Regel trotz Anweisung dauerhaft ignoriert, ist die Datei vermutlich zu lang und die Regel geht im Rauschen unter. Und: Wenn Claude Fragen stellt, die in CLAUDE.md beantwortet sind, ist die Formulierung mehrdeutig.
Spezialwissen in Skills auslagern
Detailanweisungen für bestimmte Workflows — PR-Reviews, Datenbank-Migrationen, Deployment-Runbooks — gehören nicht in CLAUDE.md, weil sie sonst auch bei völlig anderer Arbeit im Kontext liegen. Skills laden bei Bedarf: im Startkontext liegen nur ihre Beschreibungen (im Beispiel oben 450 Tokens für alle zusammen).
Dasselbe Prinzip greift auch andersherum: Ein „codebase-overview"-Skill kann Architektur, Verzeichnisstruktur und Namenskonventionen beschreiben. Claude bekommt das auf einen Schlag, statt fünf Dateien zu lesen, um dasselbe herauszufinden.
Ergänzend: Verschachtelte CLAUDE.md-Dateien in Unterverzeichnissen und Rules mit paths:-Frontmatter laden erst, wenn Claude eine passende Datei anfasst.
Hebel 2: weniger lesen lassen
Präzise Prompts
„Was würdest du an dieser Datei verbessern?" ist ein legitimer Explorationsprompt — aber er löst breites Scannen aus. Für gezielte Arbeit: Datei, Szenario und Erwartung benennen.
| Statt | Besser |
|---|---|
| „füge Tests für foo.py hinzu" | „schreibe einen Test für foo.py, der den Fall abdeckt, dass der User ausgeloggt ist. Keine Mocks." |
| „behebe den Login-Bug" | „Nutzer melden, dass Login nach Session-Timeout fehlschlägt. Prüfe den Auth-Flow in src/auth/, besonders Token-Refresh. Schreibe erst einen fehlschlagenden Test, der das reproduziert, dann fixe es." |
| „warum hat ExecutionFactory so eine seltsame API?" | „Sieh dir die Git-History von ExecutionFactory an und fasse zusammen, wie die API entstanden ist." |
Code-Intelligence-Plugins
Für typisierte Sprachen geben Code-Intelligence-Plugins Claude präzise Symbol-Navigation statt Textsuche. Ein einziges „go to definition" ersetzt ein Grep plus das Lesen mehrerer Kandidatendateien. Zusätzlich melden die Language-Server Typfehler nach Edits automatisch, ohne dass ein Compiler-Lauf im Kontext landet.
Subagents für Recherche
Nutze Subagents, um zu untersuchen, wie unser Auth-System
Token-Refresh handhabt und ob es OAuth-Utilities gibt,
die ich wiederverwenden sollte.
Auch für Verifikation: nutze einen Subagent, um diesen Code auf Edge Cases zu prüfen. Ein Reviewer in frischem Kontext sieht nur den Diff und die Kriterien, nicht die Argumentation, die zur Änderung geführt hat — und bewertet deshalb unabhängig.
Hooks als Vorfilter
Tool-Output ist oft riesig und größtenteils irrelevant. Ein PreToolUse-Hook kann Test-Kommandos umschreiben, sodass nur Failures durchkommen:
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then
filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
echo "{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"allow\",\"updatedInput\":{\"command\":\"$filtered_cmd\"}}}"
else
echo "{}"
fi
Aus Zehntausenden Tokens Logfile werden Hunderte. Prüfen mit /hooks oder claude --debug — im Debug-Log erscheint dann modified tool input keys: [command].
Hebel 3: MCP-Overhead reduzieren
- MCP-Tool-Definitionen sind standardmäßig deferred: nur Namen im Kontext, Schemata erst bei Nutzung über Tool Search.
- CLI-Tools bevorzugen:
gh,aws,gcloud,sentry-clierzeugen gar keine Auflistung. Claude lernt unbekannte CLIs auch selbst:Nutze 'foo-cli --help', um das Tool zu lernen, und löse damit A, B, C. - Ungenutzte Server abschalten:
/mcpzeigt die konfigurierten Server. /contextzeigt, was aktuell Platz belegt.
Hebel 4: Kontext aktiv zurücksetzen
Siehe auch die Werkzeug-Tabelle in Artikel 3. Zusätzlich zwei Details:
Compaction steuern
Auto-Compaction fasst zusammen, wenn das Limit naht. Mit /compact <Anweisung> steuerst du, was erhalten bleibt:
/compact Fokus auf Code-Beispiele und API-Nutzung
Dauerhaft geht das über CLAUDE.md:
# Compact instructions
When you are using compact, please focus on test output and code changes
Nützlich sind Anweisungen wie „bewahre immer die vollständige Liste der geänderten Dateien und alle Test-Kommandos".
Teilweise zusammenfassen
Esc + Esc bzw. /rewind → Checkpoint wählen → Summarize from here (verdichtet ab dort nach vorne, früherer Kontext bleibt vollständig) oder Summarize up to here (verdichtet den früheren Teil, aktueller bleibt vollständig).
Die fünf klassischen Fehlermuster
| Muster | Fix |
|---|---|
| Die Kitchen-Sink-Session — eine Aufgabe, dann etwas Unzusammenhängendes, dann zurück zur ersten | /clear zwischen unzusammenhängenden Aufgaben |
| Endloses Korrigieren — Kontext füllt sich mit gescheiterten Ansätzen | Nach zwei Korrekturen /clear und besserer Prompt |
| Das überspezifizierte CLAUDE.md — Claude ignoriert die Hälfte | Rigoros kürzen; was Claude ohnehin richtig macht, streichen oder in einen Hook überführen |
| Die Trust-then-verify-Lücke — plausibler Code, der Edge Cases nicht abdeckt | Immer Verifikation mitgeben: Tests, Skripte, Screenshots |
| Die endlose Exploration — „untersuch mal X" ohne Scope, Claude liest hunderte Dateien | Eng scopen oder an Subagents delegieren |
Was Kontext nicht kostet
Zwei nützliche Nicht-Kosten:
- Datei-Edits im Repo verändern frühere Reads in der Historie nicht rückwirkend. Claude Code hängt nur einen
<system-reminder>an, dass sich die Datei geändert hat. - CLAUDE.md-Änderungen mitten in der Session invalidieren den Cache nicht — greifen aber auch nicht. Die geladene Version bleibt bis
/clear,/compactoder Neustart aktiv. Dasselbe gilt für den Output-Style.