Przejdź do głównej zawartości

Okno 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ą.

  • 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.

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 miejsceKiedy się ładujeJak to zmniejszyć
Prompt systemowy, informacje o środowiskuZawsze, jako pierwszeNie da się; to stały narzut
CLAUDE.md / AGENTS.md i regułyNa starcie sesji i ponownie po kompaktowaniuPrzytnij plik; materiał referencyjny przenieś do skilli lub reguł ograniczonych ścieżką
Definicje narzędzi MCPNa starcie lub na żądanie, zależnie od narzędziaUsuń nieużywane serwery; zob. ograniczanie kosztu tokenów MCP
Odczyty plikówZa każdym razem, gdy agent otwiera plikWskaż konkretne pliki; proś o jedną funkcję, nie cały plik
Wyniki komendKażde uruchomienie testów, builda czy grepaFiltruj wyjście (--silent, logi przez tail -50); przerywaj przy pierwszym błędzie
Historia rozmowyRoś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=1 zostawia 200K). Domyślnie sesja na modelu z oknem 1M kompaktuje się automatycznie przy około 967K tokenów (dokumentacja model-config Claude 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_window w ~/.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.

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:

SytuacjaDziałanieClaude CodeCodexCursor
To samo zadanie, długa historia, decyzje wciąż ważneKompaktuj z określonym celem/compact <co zachować>/compactZapisz notatkę przekazania, potem zacznij nowy czat
Szumem jest tylko część historiiStreść wycinek/rewind → Summarize from here lub Summarize up to hereCodex CLI 0.157.1 nie ma streszczania wycinka: zapisz notatkę przekazania, potem /compact lub /newZapisz notatkę przekazania, potem zacznij nowy czat
Następne zadanie nie ma związku z obecnymWyczyść/clear/newNowy czat
Chcesz spróbować innego podejścia, nie tracąc obecnegoRozgałęź/branch/forkNowy czat od notatki przekazania
Zadanie poboczne zaleje okno odczytami lub logamiDelegujSubagent: jego odczyty zostają w jego oknie, wraca tylko podsumowanieSubagenci (/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:

  1. Kompaktuj przed zmianą fazy, a nie wtedy, gdy zmusza cię wskaźnik. Automatyczne kompaktowanie zgaduje, co jest ważne; /compact z 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 500k lub ustaw model_auto_compact_token_limit w Codeksie. /autocompact zapisuje wartość w ustawieniach użytkownika, więc obowiązuje we wszystkich projektach; /autocompact auto przywraca domyślne okno. Dla jednej sesji użyj claude --autocompact 500000.
  2. Wszystko, co musi przetrwać reset, trzymaj na dysku. Plany, kryteria akceptacji i notatki z postępu w plikach przetrwają kompaktowanie, /clear i nową sesję. Decyzje zapisane tylko w rozmowie nie przetrwają.

To przepływ pracy dla zadania, które przerośnie jedno okno: poprawki w wielu plikach, migracji, funkcji z kilkoma fazami.

  1. 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ę.

  2. 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.

  3. 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.
  4. Spraw, by reguły automatycznie przetrwały kompaktowanie. W Claude Code CLAUDE.md z katalogu głównego projektu wraca po kompaktowaniu, ale reguły ograniczone ścieżką i zagnieżdżone pliki CLAUDE.md zostają streszczone, dopóki agent nie przeczyta ponownie pasującego pliku (dokumentacja context-window Claude Code, sprawdzone 2026-09-26). Dla reguł, które muszą obowiązywać przez całe zadanie, dodaj do .claude/settings.json hook SessionStart z matcherem compact; 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 /compact wyślij „Read .agent/handoff.md before continuing.” Codex CLI 0.157.1 ma też zdarzenia hooków PreCompact i PostCompact, 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.

  5. 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.md and 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 criteria i ## Decisions w 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 --stat powinien 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.

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.

Jeśli nie masz jeszcze skonfigurowanego CLAUDE.md ani AGENTS.md, zacznij od przeglądu zarządzania kontekstem. Potem: