Zarządzanie oknem kontekstu: czego nauczyło mnie 50 sesji z AI
Zmierzyłem zużycie tokenów w 50 sesjach programistycznych z Claude Code. Wzorzec był powtarzalny: jakość wyników spada przy około 60% wykorzystania kontekstu, na długo przed tym, zanim twardy limit wymusi kompaktowanie.1
TL;DR
Wyczerpanie okna kontekstu pogarsza jakość kodu generowanego przez AI w sposób niezauważalny. Po przeanalizowaniu 50 sesji, podczas których budowałem swoją infrastrukturę Claude Code i system jakości bloga, odkryłem trzy wzorce, które utrzymują jakość wyników podczas wielogodzinnych sesji: proaktywne kompaktowanie po każdym podzadaniu, pamięć oparta na systemie plików, która przetrwa granice kontekstu, oraz delegowanie do subagentów, które utrzymuje główny kontekst w czystości. Kluczowe spostrzeżenie: należy traktować okno kontekstu jako ograniczony zasób, a nie jako nieskończony wątek konwersacji.
Jak w praktyce wygląda degradacja
Każde odczytanie pliku, wynik narzędzia i każda tura konwersacji zużywa tokeny. Pojedyncze odczytanie dużego pliku (2000 linii) może pochłonąć 15 000–20 000 tokenów. Po przeczytaniu 10 plików i uruchomieniu kilku poleceń okno kontekstu zawiera więcej wyników narzędzi niż rzeczywistych instrukcji.2
Degradacja jest subtelna. Claude nie ogłasza „mój kontekst jest zapełniony w 80%”. Zamiast tego model zaczyna: - Zapominać wcześniejsze instrukcje ustalone 20 minut temu - Powtarzać sugestie odrzucone trzy tury wcześniej - Pomijać wzorce ustalone wcześniej w konwersacji - Generować mniej spójne zmiany obejmujące wiele plików
Zauważyłem ten wzorzec podczas budowania mojego systemu deliberacji. Sesja, która zaczęła się od precyzyjnych edycji wielu plików w 8 modułach Python, zdegradowała się do „tunelowego widzenia” jednego pliku po 90 minutach. Agent przestał odwoływać się do architektury, którą wcześniej przeczytał, ponieważ ten kontekst został skompresowany.
Strategia 1: Proaktywne kompaktowanie
Polecenie /compact w Claude Code podsumowuje konwersację i zwalnia miejsce w kontekście. System zachowuje kluczowe decyzje, zawartość plików i stan zadania, jednocześnie usuwając rozwlekłe wyniki narzędzi.3
Kiedy kompaktować: - Po ukończeniu odrębnego podzadania (zaimplementowana funkcja, naprawiony błąd) - Przed rozpoczęciem pracy w nowym obszarze kodu - Gdy Claude zaczyna powtarzać lub zapominać wcześniejszy kontekst
Komaktuję mniej więcej co 25–30 minut podczas intensywnych sesji. Podczas budowy infrastruktury deliberacji (9 PRD, 3455 linii Python) kompaktowałem po ukończeniu każdego PRD. Każde kompaktowanie zachowywało decyzje architektoniczne, jednocześnie zwalniając kontekst na następną fazę implementacji.
Strategia 2: System plików jako pamięć
Najbardziej niezawodna pamięć ponad granicami kontekstu żyje w systemie plików. Claude Code odczytuje CLAUDE.md i pliki pamięci na początku każdej sesji oraz po każdym kompaktowaniu.4
Mój katalog .claude/ pełni funkcję uporządkowanego pałacu pamięci:
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
Plik MEMORY.md rejestruje błędy, decyzje i wzorce między sesjami. Obecnie zawiera 54 udokumentowane porażki z wzorcami uczenia się międzydomenowego. Gdy odkrywam, że ((VAR++)) zawodzi z set -e w bash, gdy VAR wynosi 0, zapisuję to. Trzy sesje później, gdy napotykam podobny przypadek brzegowy z liczbami całkowitymi w Python, wpis z MEMORY.md podsuwa mi ten wzorzec.5
Międzydomenowy efekt kumulacji: Błąd escapowania w bash podczas pracy nad hookami zaowocował ulepszeniem wyrażeń regularnych w moim linterze blogów w Python. Luka w tokenach CSS (--spacing-2xs nie istnieje) wywołała systematyczny audyt wszystkich odwołań do właściwości niestandardowych. Każdy wpis łączy domeny, które w przeciwnym razie pozostałyby odizolowane w kontekstach poszczególnych sesji.
Strategia 3: Przekazywanie sesji
W przypadku zadań obejmujących wiele sesji tworzę dokumenty przekazania, które rejestrują pełny stan:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
Mój katalog ~/.claude/handoffs/ zawiera 49 dokumentów przekazania z zadań wielosesyjnych. Rozpoczęcie nowej sesji za pomocą claude -c (kontynuuj) lub odczytanie dokumentu przekazania zapewnia sesji następczej pełny kontekst przy minimalnym koszcie tokenów.6
Wzorzec przekazania uratował mnie podczas budowy systemu deliberacji. PRD-4 (rozszerzenia recursion-guard) wymagał zrozumienia decyzji z PRD 1–3. Bez przekazania nowa sesja musiałaby ponownie przeczytać wszystkie zmodyfikowane pliki. Z przekazaniem sesja rozpoczynała się od kontekstu architektonicznego i przechodziła prosto do implementacji.
Strategia 4: Delegowanie do subagentów
Subagenty działają w niezależnych oknach kontekstu. Delegowanie zadań badawczych lub przeglądowych do subagentów chroni kontekst głównej sesji na potrzeby pracy implementacyjnej.7
Mój system recursion-guard zarządza tym automatycznie:
# From recursion-guard.sh - spawn budget enforcement
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
Każdy subagent zwraca podsumowanie zamiast surowych danych, utrzymując główny kontekst w czystości. Podczas przepisywania wpisów na blogu deleguję zadania eksploracyjne (zbieranie danych CSS, odczytywanie kodu hooków, przegląd struktur katalogów) do subagentów. Główny kontekst pozostaje skupiony na pisaniu, podczas gdy subagenty zajmują się badaniami.
Budżet spawnu był lekcją wyniesioną z doświadczenia: wczesna sesja bez limitów uruchomiła rekurencyjne subagenty, z których każdy uruchamiał kolejne. Hook recursion-guard wymusza teraz limity głębokości z bezpieczną walidacją liczb całkowitych i budżetami opartymi na konfiguracji.8
Antywzorce, których się nauczyłem
Odczytywanie całych plików, gdy potrzebujesz 10 linii. Na początku mojej pracy z Claude Code czytałem całe pliki po 2000 linii dla jednej funkcji. Użycie przesunięcia linii: Read file.py offset=100 limit=20 oszczędza ponad 15 000 tokenów na odczyt.
Trzymanie rozwlekłych komunikatów o błędach w kontekście. Po debugowaniu problemu z budżetem spawnu mój kontekst zawierał ponad 40 śladów stosu z nieudanych iteracji. Jedno /compact po naprawieniu błędu uwolniło ten martwy ciężar.
Rozpoczynanie każdej sesji od czytania wszystkich plików. Moje pierwsze sesje wstępnie ładowały 8–10 plików „dla kontekstu”. Teraz pozwalam narzędziom glob i grep w Claude Code znajdować odpowiednie pliki na żądanie, oszczędzając ponad 100 000 tokenów niepotrzebnego wstępnego ładowania.
Kluczowe wnioski
Dla indywidualnych programistów: - Kompaktuj po każdym ukończonym podzadaniu, a nie gdy Claude wymusi kompaktowanie; proaktywne kompaktowanie w interwałach 25–30 minut utrzymuje jakość wyników - Zapisuj kluczowe decyzje do plików pamięci w systemie plików w trakcie sesji; mój MEMORY.md ma 54 wpisy, które przetrwały setki sesji - Używaj subagentów do zadań badawczych, które zaśmieciłyby główny kontekst; zapytanie badawcze obejmujące 5 plików kosztuje ponad 75 000 tokenów w głównym kontekście, ale tylko 500-tokenowe podsumowanie przez subagenta
Dla zespołów: - Ustandaryzuj format dokumentów przekazania dla zadań wielosesyjnych; każde z moich 49 przekazań stosuje tę samą strukturę Status/Pliki/Decyzja/Blokada/Następny krok - Skonfiguruj pliki CLAUDE.md na poziomie projektu z kontekstem architektonicznym, który ładuje się automatycznie do każdej sesji
Źródła
-
Author’s measurement of token consumption across 50 Claude Code development sessions (2025-2026). Output quality degradation observed consistently at ~60% context utilization. ↩
-
Author’s measurement: average file read consumes 8,000-20,000 tokens depending on file size. 10 file reads plus tool outputs consume 40-60% of a 200K context window. ↩
-
Anthropic, “Claude Code Documentation,” 2025. Context compaction and the /compact command. ↩
-
Anthropic, “Claude Code Documentation,” 2025. Memory files and CLAUDE.md documentation. ↩
-
Author’s
.claude/projects/*/memory/MEMORY.mdfiles. 54 documented errors with cross-domain learning patterns across bash, Python, CSS, and HTML validation. ↩ -
Author’s session management workflow. 49 handoff documents in
~/.claude/handoffs/spanning multi-session infrastructure builds. ↩ -
Anthropic, “Claude Code Documentation,” 2025. Subagent context isolation. ↩
-
Author’s recursion-guard.sh implementation. Spawn budget model with depth limits, safe integer validation, and config-driven budgets. ↩