Okna kontekstu i limity tokenów w agentach programistycznych
ENOkno kontekstu agenta programistycznego to budżet tokenów, który model czyta od nowa w każdej turze: prompt systemowy, CLAUDE.md lub AGENTS.md, definicje narzędzi, wczytane pliki, wyniki komend i rozmowę. Gdy się zapełni, agent kompaktuje starszy materiał, a instrukcje, których się trzymał, mogą po cichu zniknąć. Mierzenie zużycia i decyzja, kiedy kompaktować, czyścić lub delegować, utrzymują wiarygodność wyniku.
Od czterdziestu minut debugujesz z agentem. Przeczytał dwanaście plików, sześć razy uruchomił testy i znalazł błąd. Prosisz o poprawkę, a on edytuje nie ten moduł, wraca do podejścia odrzuconego dwadzieścia minut temu, i pomija test regresji wymagany przez reguły projektu. Nic się nie wysypało: sesja się skompaktowała, a ograniczenia podane na początku nie przetrwały streszczenia. Ta strona jest dla programistów, którzy prowadzą z agentem długie sesje, i dla tech leadów, którzy piszą wspólne reguły, na których te sesje się opierają.
Co daje świadome zarządzanie oknem kontekstu
Dział zatytułowany „Co daje świadome zarządzanie oknem kontekstu”- Sposób, by w każdym narzędziu zobaczyć, co jest teraz w oknie, zamiast zgadywać.
- Regułę decyzyjną: kiedy kompaktować, czyścić, rozgałęzić sesję albo oddać pracę subagentowi.
- Dwa prompty do skopiowania: tanią eksplorację i notatkę przekazania, która przetrwa każdy reset.
- Hook kompaktowania, który automatycznie przywraca twoje nienegocjowalne reguły.
- Kontrolę, która dowodzi, że agent nadal trzyma się twoich ograniczeń po resecie, bez czytania całego transkryptu.
Co zapełnia okno kontekstu agenta?
Dział zatytułowany „Co zapełnia okno kontekstu agenta?”Okno to nie tylko twoja rozmowa. Każda tura wysyła ponownie wszystko, co agent aktualnie trzyma, więc najwięcej zajmuje to, czego nie widzisz w terminalu:
| Co zajmuje miejsce | Kiedy się ładuje | Jak to zmniejszyć |
|---|---|---|
| Prompt systemowy, informacje o środowisku | Zawsze, jako pierwsze | Nie da się; to stały narzut |
CLAUDE.md / AGENTS.md i reguły | Na starcie sesji i ponownie po kompaktowaniu | Przytnij plik; materiał referencyjny przenieś do skilli lub reguł ograniczonych ścieżką |
| Definicje narzędzi MCP | Na starcie lub na żądanie, zależnie od narzędzia | Usuń nieużywane serwery; zob. ograniczanie kosztu tokenów MCP |
| Odczyty plików | Za każdym razem, gdy agent otwiera plik | Wskaż konkretne pliki; proś o jedną funkcję, nie cały plik |
| Wyniki komend | Każde uruchomienie testów, builda czy grepa | Filtruj wyjście (--silent, logi przez tail -50); przerywaj przy pierwszym błędzie |
| Historia rozmowy | Rośnie z każdą turą | Kompaktuj z określonym celem albo czyść między zadaniami |
Dokumentacja Claude Code o oknie kontekstu wskazuje odczyty plików jako największego konsumenta w typowej sesji (code.claude.com, context-window, sprawdzone 2026-09-26). Zgadza się to z tym, co zobaczysz w /context na prawdziwym repozytorium: okno zapełnia eksploracja agenta, nie twoje prompty.
Jak duże jest okno i dlaczego „większe” nie rozwiązuje problemu?
Dział zatytułowany „Jak duże jest okno i dlaczego „większe” nie rozwiązuje problemu?”Rozmiar okna zależy od modelu i narzędzia, a zmienia się z każdym wydaniem. Aktualne liczby są w przeglądzie modeli; dla tej strony liczą się dwa szczegóły:
- Claude Code: od v2.1.280 (oba kanały wydań w dniu 2026-10-12) domyślnym modelem Claude Code jest Claude Opus 5.5, z oknem 1M tokenów na Anthropic API. Na Bedrocku, w Agent Platform Google Cloud i w Foundry modele Opus 4.7 i nowsze oraz modele Fable też domyślnie dostają okno 1M, bez sufiksu
[1m](v2.1.287;CLAUDE_CODE_DISABLE_1M_CONTEXT=1zostawia 200K). Domyślnie sesja na modelu z oknem 1M kompaktuje się automatycznie przy około 967K tokenów (dokumentacjamodel-configClaude Code, sprawdzone 2026-09-26). - Codex daje swojemu modelowi domyślnemu robocze okno mniejsze niż maksimum modelu. Możesz je zwiększyć kluczem
model_context_windoww~/.codex/config.toml, do pułapu, na który pozwala model; aktualne liczby są w przeglądzie modeli (katalog modeli Codeksa, sprawdzone 2026-09-26).
Większe okno odsuwa kompaktowanie, ale nie sprawia, że model tak samo uważnie traktuje wszystko, co w nim jest. Instrukcje z początku bardzo długiej sesji konkurują z setkami tysięcy tokenów plików i logów, a model może przestać ich przestrzegać na długo przed jakimkolwiek limitem. Traktuj okno jak budżet wydawany na zadanie, nie jak magazyn.
Jak sprawdzić zużycie kontekstu w Claude Code, Codeksie i Cursorze?
Dział zatytułowany „Jak sprawdzić zużycie kontekstu w Claude Code, Codeksie i Cursorze?”Najpierw zmierz, potem zarządzaj. Każde narzędzie pokazuje zużycie inaczej.
Uruchom /context w dowolnym momencie. Polecenie rysuje bieżące zużycie jako kolorową siatkę z podziałem na kategorie (prompt systemowy, pliki pamięci, narzędzia, wiadomości) i podaje sugestie optymalizacji, np. „ciężkie” narzędzia MCP albo przerośnięty CLAUDE.md.
Żeby mieć tę liczbę stale na ekranie, dodaj linię statusu do .claude/settings.json (albo ~/.claude/settings.json dla wszystkich projektów). Claude Code przekazuje do polecenia JSON sesji, w tym context_window.used_percentage:
{ "statusLine": { "type": "command", "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'" }}Polecenie wymaga jq w PATH.
Jeśli obok kontekstu chcesz widzieć koszt, ccusage (npm ccusage) ma gotową linię statusu:
{ "statusLine": { "type": "command", "command": "npx -y ccusage statusline" } }Linia statusu działa poza modelem, więc nie dodaje tokenów do okna kontekstu; npx -y pobiera pakiet przy pierwszym uruchomieniu.
Uruchom /status w TUI Codeksa. Pokazuje bieżącą konfigurację sesji i zużycie tokenów. /statusline pozwala wybrać, co TUI trzyma w linii statusu.
Żeby zmienić okno albo próg kompaktowania dla jednego uruchomienia, podaj nadpisania konfiguracji w wierszu poleceń:
# terminal: większe okno robocze i wcześniejsze kompaktowanie, tylko dla tej sesjicodex -c model_context_window=400000 -c model_auto_compact_token_limit=300000Te same klucze w ~/.codex/config.toml działają na stałe. Sprawdzone na Codex CLI 0.157.1 i jego schemacie konfiguracji.
Ta strona nie podaje nazwy wskaźnika kontekstu w Cursorze ani progów streszczania, bo zmieniają się w zależności od modelu; aktualne okno sprawdzisz w selektorze modelu.
Techniki z reszty strony działają w Cursorze tak samo: jeden czat na jedno zadanie, konkretne pliki wskazane w prompcie, notatka przekazania na dysku i nowy czat, gdy bieżący zboczył z kursu. Agent Cursora może też delegować pracę subagentom (dokumentacja Cursora, sprawdzone 2026-08-28), co trzyma duże odczyty eksploracyjne poza głównym czatem.
Kiedy kompaktować, czyścić, rozgałęziać lub delegować?
Dział zatytułowany „Kiedy kompaktować, czyścić, rozgałęziać lub delegować?”Decyduj według tego, czego jeszcze potrzebujesz, a nie według wskaźnika zapełnienia:
| Sytuacja | Działanie | Claude Code | Codex | Cursor |
|---|---|---|---|---|
| To samo zadanie, długa historia, decyzje wciąż ważne | Kompaktuj z określonym celem | /compact <co zachować> | /compact | Zapisz notatkę przekazania, potem zacznij nowy czat |
| Szumem jest tylko część historii | Streść wycinek | /rewind → Summarize from here lub Summarize up to here | Codex CLI 0.157.1 nie ma streszczania wycinka: zapisz notatkę przekazania, potem /compact lub /new | Zapisz notatkę przekazania, potem zacznij nowy czat |
| Następne zadanie nie ma związku z obecnym | Wyczyść | /clear | /new | Nowy czat |
| Chcesz spróbować innego podejścia, nie tracąc obecnego | Rozgałęź | /branch | /fork | Nowy czat od notatki przekazania |
| Zadanie poboczne zaleje okno odczytami lub logami | Deleguj | Subagent: jego odczyty zostają w jego oknie, wraca tylko podsumowanie | Subagenci (/subagents przełącza między nimi) | Subagent (dokumentacja Cursora, sprawdzone 2026-08-28) |
| Szybkie pytanie o sesję | Zapytaj na boku | /btw <pytanie>, które nie trafia do rozmowy | /btw <pytanie> (rozmowa poboczna w efemerycznym forku; Ctrl+C wraca do głównego wątku) | Zapytaj w osobnym czacie |
W praktyce tabela działa dzięki dwóm zasadom:
- Kompaktuj przed zmianą fazy, a nie wtedy, gdy zmusza cię wskaźnik. Automatyczne kompaktowanie zgaduje, co jest ważne;
/compactz określonym celem po „diagnoza skończona, zaczynam poprawkę” zachowuje to, co wybierzesz ty. Żeby domyślnie kompaktować wcześniej, obniż okno auto-kompaktowania w Claude Code poleceniem/autocompact 500klub ustawmodel_auto_compact_token_limitw Codeksie./autocompactzapisuje wartość w ustawieniach użytkownika, więc obowiązuje we wszystkich projektach;/autocompact autoprzywraca domyślne okno. Dla jednej sesji użyjclaude --autocompact 500000. - Wszystko, co musi przetrwać reset, trzymaj na dysku. Plany, kryteria akceptacji i notatki z postępu w plikach przetrwają kompaktowanie,
/cleari nową sesję. Decyzje zapisane tylko w rozmowie nie przetrwają.
Jak prowadzić długie zadanie, nie gubiąc wątku
Dział zatytułowany „Jak prowadzić długie zadanie, nie gubiąc wątku”To przepływ pracy dla zadania, które przerośnie jedno okno: poprawki w wielu plikach, migracji, funkcji z kilkoma fazami.
-
Ogranicz sesję do jednego rezultatu. Zapisz rezultat i kryteria akceptacji w pliku, który agent może przeczytać ponownie, np.
.agent/handoff.md(dodaj katalog do.gitignore, jeśli nie chcesz go commitować). Jedna sesja, jeden rezultat; następny rezultat dostaje świeżą sesję. -
Eksploruj tanio. Proś o celowane odczyty i krótkie pisemne podsumowanie, zamiast pozwalać agentowi otwierać całe katalogi. Robi to pierwszy prompt poniżej. Szerokie dochodzenie oddaj subagentowi, żeby zawartość plików w ogóle nie trafiła do głównego okna.
-
Rób punkt kontrolny na granicy każdej fazy. Gdy diagnoza jest gotowa, niech agent zaktualizuje notatkę przekazania, a potem skompaktuj z określonym celem:
/compact Keep the acceptance criteria, the files changed so far, the rejected approaches and why, and the exact test command. Drop exploration output and old test logs. -
Spraw, by reguły automatycznie przetrwały kompaktowanie. W Claude Code
CLAUDE.mdz katalogu głównego projektu wraca po kompaktowaniu, ale reguły ograniczone ścieżką i zagnieżdżone plikiCLAUDE.mdzostają streszczone, dopóki agent nie przeczyta ponownie pasującego pliku (dokumentacjacontext-windowClaude Code, sprawdzone 2026-09-26). Dla reguł, które muszą obowiązywać przez całe zadanie, dodaj do.claude/settings.jsonhookSessionStartz matcheremcompact; Claude Code dołącza wyjście polecenia do skompaktowanego kontekstu:{"hooks": {"SessionStart": [{"matcher": "compact","hooks": [{ "type": "command", "command": "cat .agent/handoff.md 2>/dev/null || true" }]}]}}W Codeksie przywróć plik ręcznie: po
/compactwyślij „Read.agent/handoff.mdbefore continuing.” Codex CLI 0.157.1 ma też zdarzenia hookówPreCompactiPostCompact, które działają dopiero wtedy, gdy zaufasz im w/hooks; format hooków Codeksa opisuje strona o hookach jako deterministycznych zabezpieczeniach. W Cursorze zacznij kolejny czat od wskazania pliku przekazania. -
Czyść, gdy zmienia się zadanie. Następny rezultat zacznij od
/clear(Claude Code),/new(Codex) albo nowego czatu (Cursor), a pierwszym promptem niech będzie: „Read.agent/handoff.mdand continue from Next step.”
Jak udowodnić, że agent po resecie nadal trzyma się twoich ograniczeń?
Dział zatytułowany „Jak udowodnić, że agent po resecie nadal trzyma się twoich ograniczeń?”Nie trzeba czytać transkryptu, żeby wiedzieć, czy kompaktowanie coś zgubiło. Używaj kontroli, których wynik odczytasz w kilka sekund:
- Powtórz i porównaj. Zaraz po kompaktowaniu lub nowej sesji zapytaj: „List the acceptance criteria and the rejected approaches you are working under, verbatim.” Porównaj odpowiedź z sekcjami
## Goal and acceptance criteriai## Decisionsw pliku przekazania. Każdy brakujący lub przeredagowany punkt oznacza utracony kontekst; wskaż agentowi plik, zanim napisze więcej kodu. - Testy jako wyrocznia, nie streszczenie. Kryteria akceptacji z pliku przekazania powinny odpowiadać testom, które przed zmianą nie przechodzą. Wtedy nie ma znaczenia, czy agent „pamięta”: przebieg testów mówi, czy zachowanie istnieje. Jak sprawić, by te testy były warte zaufania, opisuje strona o sile wyroczni.
- Diff kontra lista „Done”.
git diff --statpowinien dotykać plików z notatki przekazania i niczego więcej. Plik spoza listy to wyciek zakresu i typowy objaw agenta, który zgubił instrukcje. - Wskaźnik w przeglądzie. Przy długich lub nienadzorowanych przebiegach zapisuj zużycie kontekstu i liczbę kompaktowań obok wyniku. Zadanie, które kompaktowało się wielokrotnie, zasługuje na dokładniejszy przegląd decyzji, a nie tylko zielonych testów.
Kontrolę „powtórz i porównaj” zatwierdza programista, który prowadził sesję; testy i zakres diffu zatwierdza recenzent, jak przy każdej zmianie.
Kiedy okno kontekstu działa przeciwko tobie
Dział zatytułowany „Kiedy okno kontekstu działa przeciwko tobie”Agent ignoruje regułę, której godzinę temu przestrzegał. Reguła była w rozmowie albo w regule ograniczonej ścieżką, którą kompaktowanie streściło. Co zrobić: przenieś regułę do CLAUDE.md lub AGENTS.md w katalogu głównym albo do pliku przekazania przywracanego hookiem kompaktowania, a potem poproś agenta, żeby przed dalszą pracą powtórzył swoje ograniczenia.
Kompaktowanie odpala się raz za razem, a każde streszczenie jest gorsze. Okno wypełniają wyniki narzędzi, nie decyzje. Co zrobić: zapisz notatkę przekazania, zrób /clear lub /new i zacznij od pliku. Filtruj hałaśliwe polecenia (uruchamiaj jeden plik testów, nie cały zestaw; przepuszczaj logi builda przez tail), żeby nowa sesja nie zapełniła się znowu logami.
Agent czyta 20 plików, by odpowiedzieć na wąskie pytanie. Szeroka eksploracja w głównej sesji. Co zrobić: przerwij, sam wskaż punkt wejścia i pliki albo wyślij pytanie do subagenta, który zwróci podsumowanie.
/context pokazuje okno zapełnione w połowie, zanim cokolwiek wpiszesz. To stały narzut: długi CLAUDE.md, wiele serwerów MCP, wiele skilli. Co zrobić: przeprowadź protokół ablacji plików kontekstowych i usuń serwery MCP, których projekt nie używa.
Claude Code kompaktuje zdecydowanie za wcześnie lub za późno na modelu za bramką. Dla identyfikatorów modeli, których nie rozpoznaje (np. aliasów bramki LLM), Claude Code zakłada pewien rozmiar okna. Co zrobić: dla aliasu bramki, którego Claude Code nie rozpoznaje (i który nie ma sufiksu [1m]), ustaw CLAUDE_CODE_MAX_CONTEXT_TOKENS na rzeczywiste okno modelu. Dla nierozpoznanego aliasu z [1m] ustaw dodatkowo CLAUDE_CODE_DISABLE_1M_CONTEXT=1. Dla identyfikatora, który Claude Code rozpoznaje, zmienna działa tylko razem z DISABLE_COMPACT, które wyłącza całe kompaktowanie, więc tam lepiej użyć /autocompact: jeśli bramka zatrzymuje się na 200K, uruchom /autocompact 200k (dokumentacja model-config i changelog 2.1.286 Claude Code, sprawdzone 2026-09-26).
Po zwiększeniu okna w Codeksie rachunek wzrósł razem z nim. Każda tura wysyła całe okno ponownie, więc sesja na 600K kosztuje za turę znacznie więcej niż sesja na 150K, a część dostawców wycenia długi kontekst wejściowy drożej. Co zrobić: do rutynowej pracy zostaw domyślne okno i zwiększaj je tylko dla zadania, które tego wymaga; zob. optymalizację kosztu kontekstu.
Dokąd dalej w zarządzaniu kontekstem
Dział zatytułowany „Dokąd dalej w zarządzaniu kontekstem”Jeśli nie masz jeszcze skonfigurowanego CLAUDE.md ani AGENTS.md, zacznij od przeglądu zarządzania kontekstem. Potem: