Zarządzanie kontekstem w różnych interfejsach Codex
Zarządzanie kontekstem w Codex polega na tym, by stały prefiks wątku (instrukcje, AGENTS.md, narzędzia MCP i skille) był mały, a rozmowa na tyle krótka, żeby wczesne ograniczenia przetrwały. Codex CLI 0.157.1 kompaktuje historię automatycznie i na żądanie (/compact). Przy długiej pracy sprawdza się łańcuch krótkich wątków połączonych plikiem przekazania, a testy są dowodem.
Ta strona jest dla programistów, którzy uruchamiają Codex przy wielogodzinnych zadaniach, i dla tech leadów, którzy chcą, żeby takie sesje kończyły się tak samo u każdego w zespole. Sytuacja jest znajoma: masz za sobą 40 tur migracji rozliczeń, a Codex edytuje trasę v1, którą wykluczyłeś w trzeciej turze, ponownie czyta pliki, które już streścił, i zadaje pytanie, na które odpowiedziałeś godzinę temu. Model nie zgłupiał. Pogorszył się kontekst, z którego pracuje.
Jeśli nie masz jeszcze skonfigurowanego config.toml ani serwerów MCP, zacznij od konfiguracji Codex i konfiguracji MCP.
Co daje zdyscyplinowane zarządzanie kontekstem w Codex
Dział zatytułowany „Co daje zdyscyplinowane zarządzanie kontekstem w Codex”- Sposób, by zmierzyć, co niesie wątek, zanim obwinisz model:
/status,/mcpicodex debug prompt-input. - Regułę decyzyjną: kiedy kompaktować, forkować, zadać pytanie na boku, a kiedy zacząć nowy wątek.
- Plik przekazania i dwa prompty, które przenoszą zadanie między wątkami bez planowania od nowa.
- Sposób, by udowodnić, że długa sesja trzyma się ograniczeń, bez czytania transkryptu.
- Jasność, co przechodzi z CLI do aplikacji desktopowej, IDE i Codex cloud, a co nie.
Co wypełnia kontekst wątku Codex?
Dział zatytułowany „Co wypełnia kontekst wątku Codex?”Każda tura wysyła do modelu jedno wejście. Składa się z dwóch części, które psują się na różne sposoby.
| Część | Co zawiera | Jak ją zobaczyć | Jak ją zmniejszyć |
|---|---|---|---|
| Stały prefiks, płacony w każdej turze | Instrukcje samego Codex, globalny ~/.codex/AGENTS.md, łańcuch projektowych AGENTS.md, nazwy i opisy skilli, definicje narzędzi MCP | codex debug prompt-input "ping" renderuje część instrukcyjną jako JSON; /mcp pokazuje podłączone narzędzia; /skills pokazuje skille | Przytnij łańcuch AGENTS.md i przenieś procedury do skilli; wyłącz serwery MCP, których repozytorium nie potrzebuje |
| Rozmowa, rośnie z każdą turą | Twoje prompty, odpowiedzi agenta, wywołania narzędzi, wyjście poleceń i zawartość przeczytanych plików | /status pokazuje zużycie tokenów i okno kontekstu bieżącego modelu | /compact, /side, subagenty i nowe wątki |
Dla bieżących modeli OpenAI Codex używa domyślnie okna 272K tokenów. Możesz je powiększyć kluczem model_context_window w config.toml, do limitu katalogu 872K (szczegóły per model: przegląd modeli). Większe okno odsuwa kompakcję. Nie sprawia jednak, że model przykłada tę samą uwagę do tury 3 i tury 300, a każda tura ponownie wysyła wszystko, co nadal jest w oknie. Dlatego ta strona traktuje okno jako budżet do zarządzania, a nie liczbę do maksymalizowania.
Zrób audyt wątku przed długim zadaniem
Dział zatytułowany „Zrób audyt wątku przed długim zadaniem”Zrób to raz na repozytorium i ponownie, gdy ktoś doda serwer MCP albo duży AGENTS.md.
-
Zacznij nowy wątek w katalogu, w którym zwykle pracujesz, i uruchom
/status. Zanotuj wiersz Agents.md (które pliki instrukcji się załadowały i w jakiej kolejności), Token usage oraz Context window. Przed pierwszą turą zużycie może jeszcze nie być widoczne, więc wyślij jeden krótki prompt (na przykładping) i ponownie uruchom/status: zużycie tokenów po tej pierwszej turze to w przybliżeniu twój prefiks. -
Wypisz narzędzia. Uruchom
/mcp verbose. Każdy podłączony serwer dokłada definicje narzędzi. Serwer do automatyzacji przeglądarki to martwy balast przy migracji bazy danych. -
Wyłącz to, czego to zadanie nie potrzebuje. W
.codex/config.tomlprojektu albo w swoim~/.codex/config.toml:[mcp_servers.playwright]enabled = false[mcp_servers.github]enabled_tools = ["get_pull_request", "list_pull_request_files"] -
Sprawdź łańcuch instrukcji. Jeśli w wierszu Agents.md brakuje oczekiwanego pliku, zatrzymaj się i przejdź do opisu, jak Codex wybiera pliki
AGENTS.mddo załadowania. Łańcuch projektowy dzieli budżet 32 KiB (project_doc_max_bytes, domyślnie 32 768 bajtów), a gdy budżet się kończy, Codex po cichu obcina najgłębszy plik. -
Uruchom ponownie
/statusw nowym wątku po tym samym krótkim prompcie i potwierdź, że liczba tokenów spadła.
Kiedy kompaktować, forkować, pytać na boku, a kiedy zacząć nowy wątek?
Dział zatytułowany „Kiedy kompaktować, forkować, pytać na boku, a kiedy zacząć nowy wątek?”Codex daje kilka sposobów, by zatrzymać przyrost historii wątku. Nie są wymienne.
| Chcesz… | Użyj | Co dzieje się z kontekstem |
|---|---|---|
| Kontynuować to samo zadanie, ale wątek jest długi | /compact | Rozmowa zostaje zastąpiona streszczeniem. Szczegóły, których nie powtórzysz, mogą przepaść. |
| Zadać szybkie pytanie bez zaśmiecania głównego wątku | /side (alias /btw) | Rozmowa poboczna w efemerycznym forku. Główny wątek nie rośnie. |
| Wypróbować inne podejście od bieżącego miejsca | /fork w TUI albo codex fork --last | Kopiuje wątek. Obie kopie niosą pełną historię. |
| Zacząć następną fazę z czystym oknem | /new, potem wklej plik przekazania albo wskaż go | Przetrwa tylko to, co przekażesz. |
| Przenieść eksplorację gdzie indziej | Poproś Codex o uruchomienie subagenta (multi-agent jest domyślnie włączony w 0.157.1; /subagents przełącza między nimi) | Subagent czyta pliki we własnym wątku i zwraca raport. |
| Wrócić do wczorajszej pracy | codex resume --last albo codex resume <SESSION_ID lub nazwa> | Wczytuje zapisany wątek razem ze wszystkim, co było w jego kontekście. |
Wynika z tego reguła: kompaktuj w obrębie fazy, nowy wątek zaczynaj między fazami. Faza to jednostka, którą da się zweryfikować samodzielnie, na przykład „router v2 ma szkielet, a jego testy kontraktowe przechodzą”. Kompakcja to streszczenie napisane przez model pod presją. Plik przekazania to streszczenie, które napisałeś świadomie i które możesz przeczytać.
Ustaw, kiedy uruchamia się automatyczna kompakcja
Dział zatytułowany „Ustaw, kiedy uruchamia się automatyczna kompakcja”Codex kompaktuje sam, gdy wątek zbliża się do limitu. Dwa klucze config.toml, oba obecne w Codex CLI 0.157.1, zmieniają moment kompakcji:
# Kompaktuj, gdy rozmowa osiągnie tyle tokenów, zamiast tuż przed końcem okna.model_auto_compact_token_limit = 180000
# Kompaktuj też po odpowiedzi końcowej, gdy zużycie przekroczy ten procent (od 0 do 100, sprawdzone w 0.157.1).model_post_turn_compact_threshold_percent = 70Zostaw oba nieustawione, żeby zachować wbudowane zachowanie Codex. Obniż je, gdy zauważysz, że pod koniec długich wątków ograniczenia się rozmywają. Wcześniejsza kompakcja daje mniejsze, częstsze streszczenia, a tury pozostają tańsze. Codex 0.157.1 emituje też zdarzenia hooków PreCompact i PostCompact, dzięki którym możesz logować moment kompakcji w sesji, którą audytujesz.
Kompakcja to zabezpieczenie, a nie plan. Codex 0.157.1 sam wyświetla ostrzeżenie: „Long threads and multiple compactions can cause the model to be less accurate. Start a new thread when possible to keep threads small and targeted.” (długie wątki i wielokrotna kompakcja obniżają dokładność modelu; gdy to możliwe, zaczynaj nowy wątek). Następna sekcja zamienia tę radę w rutynę.
Łącz krótkie wątki plikiem przekazania
Dział zatytułowany „Łącz krótkie wątki plikiem przekazania”Przy zadaniu na kilka dni sprawdza się łańcuch: jeden wątek planuje, a każdy kolejny implementuje jedną fazę na podstawie pliku w repozytorium. Plik jest jedyną rzeczą, która przekracza granicę wątku, więc możesz go przejrzeć i wersjonować.
-
Zaplanuj w pierwszym wątku. Poproś o fazy, pliki, których dotyka każda faza, i testy, które dowodzą, że faza jest skończona.
-
Zapisz przekazanie na dysku. Niech Codex zapisze
docs/plans/invoice-v2.mdpromptem poniżej. Przeczytaj go sam; z założenia jest krótki. To jedyny artefakt w łańcuchu, który sprawdzasz linijka po linijce. -
Każdą fazę zaczynaj w nowym wątku przez
/new, wskaż plik i nazwij wątek przez/rename invoice-v2-phase-1, żebycodex resume invoice-v2-phase-1znalazło go później. -
Kończ każdą fazę aktualizacją pliku. Wątek zapisuje, co się zmieniło, jakie decyzje podjął i które polecenie testowe przeszło. Kolejny wątek startuje od tego stanu, zamiast odkrywać go na nowo.
W fazach uruchamianych skryptem codex exec obsługuje ten sam łańcuch. Świadomie wybierz między kontynuacją sesji a czystym startem:
# terminal: kontynuacja ostatniej sesji exec, z całym transkryptem i jego kosztem kontekstucodex exec resume --last "Implement phase 2 from docs/plans/invoice-v2.md, then run its tests."
# terminal: czysty start; przechodzi tylko plik przekazaniacodex exec "Implement the phase marked next in docs/plans/invoice-v2.md, run its tests, update the file."Czysty start to domyślny wybór dla nowej fazy. Wznawiaj, gdy poprzednie uruchomienie przerwano w połowie fazy i nadal potrzebujesz wyniku jego narzędzi. W interaktywnym TUI odpowiednikami są codex resume --last i /new. O --json, --output-schema i --ephemeral w potokach przeczytasz w artykule o nieinteraktywnym Codex.
Trzymaj eksplorację poza głównym wątkiem
Dział zatytułowany „Trzymaj eksplorację poza głównym wątkiem”Najszybciej zapełnia okno wątek implementujący, któremu pozwalasz czytać kod. Dwa nawyki utrzymują go w ryzach.
- Deleguj czytanie. Poproś subagenta, żeby zmapował kod i zwrócił krótki raport. Zawartość plików zostaje w wątku subagenta. Wzorce znajdziesz w artykule o przepływach wieloagentowych w Codex.
- Proś o symbole, nie o pliki. „Przeczytaj
createInvoicei miejsca wywołań” kosztuje ułamek tego, co „przeczytajservices/api/src/”.
Jak udowodnić, że długa sesja trzymała się ograniczeń?
Dział zatytułowany „Jak udowodnić, że długa sesja trzymała się ograniczeń?”W długim wątku najłatwiej ukryć dryf, a czytanie 300 tur, żeby go znaleźć, przekreśla sens delegowania. Umieść dowód w artefaktach, które sprawdzisz w minutę.
-
Ograniczenia jako kontrole, nie proza. „Nie zmieniaj tras v1” staje się kontrolą w CI, która pada, gdy diff dotyka
src/routes/v1/. Regułę, którą agent może zapomnieć po kompakcji, powinien egzekwować build. Jako krok CI:Okno terminala git fetch origin mainbase=$(git merge-base origin/main HEAD) || exit 1changed=$(git diff --name-only "$base" HEAD) || exit 1if printf '%s\n' "$changed" | grep -q '^src/routes/v1/'; thenecho 'Trasy v1 są zamrożone'; exit 1fiKrok potrzebuje historii sięgającej bazy scalenia, na przykład
fetch-depth: 0wactions/checkout. Na płytkim kloniegit merge-basezawodzi i krok kończy się błędem, zamiast po cichu przejść. Przy wyzwalaczupull_requestplik workflow pochodzi z samego pull requesta, więc ten sam diff może usunąć sprawdzenie: działa ono tylko wtedy, gdy/.github/jest wCODEOWNERS, a ochrona gałęzi albo ruleset wymaga review właściciela kodu. -
Polecenie testowe dla każdej fazy w pliku przekazania, uruchamiane przez wątek kończący fazę i wklejane do pliku razem z wynikiem.
-
Review w świeżym kontekście. Po każdej fazie uruchom
/revieww nowym wątku albocodex exec reviewz terminala. Recenzent nie widział rozumowania implementującego, więc ocenia diff, a nie narrację. Zobacz code review z Codex. -
Kontrola zakresu diffu.
/diffna koniec fazy, porównany z listą plików w przekazaniu. Plik spoza listy to pierwszy sygnał, że wątek zgubił plan. -
Zapis.
/exportzapisuje rozmowę jako Markdown. Dołącz go do pull requesta, gdy recenzent musi prześledzić decyzję, zamiast wklejać transkrypty na czat.
Tech lead zatwierdza plik przekazania i wynik CI; nikt nie zatwierdza transkryptu.
Co przechodzi między CLI, IDE, aplikacją i chmurą Codex?
Dział zatytułowany „Co przechodzi między CLI, IDE, aplikacją i chmurą Codex?”CLI, rozszerzenie IDE, aplikacja desktopowa i Codex cloud współdzielą konfigurację i instrukcje tylko w niektórych kierunkach. Zaplanuj to, co się nie przenosi.
| Skąd → dokąd | Co przechodzi | Co nie przechodzi |
|---|---|---|
| CLI → aplikacja desktopowa | /app kontynuuje bieżącą sesję w aplikacji desktopowej (tylko macOS i Windows; linuksowe CLI nie ma /app) | Niedostępne z Linuksa. Na macOS i Windows nic nie ginie, ale sprawdź, czy aplikacja otworzyła ten sam wątek |
| IDE → CLI | /ide wciąga do TUI bieżące zaznaczenie, otwarte pliki i inny kontekst z IDE | Wszystko, czego nie zaznaczyłeś ani nie otworzyłeś |
| Lokalnie → Codex cloud | To, co jest zacommitowane w repozytorium, w tym pliki AGENTS.md | Twoja konfiguracja ~/.codex/ i globalny AGENTS.md, niezacommitowane pliki i lokalne notatki przekazania |
| Wątek → inny wątek | Plik przekazania, jeśli jest zacommitowany albo leży na dysku | Historia wątku; memories jest w 0.157.1 domyślnie wyłączone, więc nie oczekuj, że Codex zapamięta coś między wątkami |
Wiersz o chmurze zaskakuje najczęściej. Zadanie w chmurze widzi repozytorium, a nie twój laptop. Zanim zdelegujesz, zacommituj plik przekazania i każdą regułę AGENTS.md, od której zadanie zależy. Skrypty konfiguracyjne i zmienne środowiskowe opisuje artykuł o środowiskach Codex cloud.
Co się psuje, gdy wątkowi Codex kończy się miejsce?
Dział zatytułowany „Co się psuje, gdy wątkowi Codex kończy się miejsce?”- Ograniczenie z początku wątku jest ignorowane. Kompakcja zgubiła je w streszczeniu. Powtórz je teraz w bieżącym prompcie, potem przenieś do pliku przekazania, a jeśli się da, do kontroli w CI. Jeśli problem wraca, obniż
model_auto_compact_token_limit. - Tury zwalniają, a wątek w kółko czyta te same pliki. Okno jest prawie pełne i każda tura wysyła je ponownie. Zapisz plik przekazania i kontynuuj w nowym wątku; nie rób
/compactpo raz trzeci. - Przestały działać reguły z
AGENTS.mdmodułu. Łańcuch projektowy przekroczył budżet 32 KiB i najgłębszy plik został obcięty albo przesłania goAGENTS.override.md. Sprawdź wiersz Agents.md w/status, a potem zastosuj poprawki budżetu. - Nie ładują się żadne instrukcje projektu. Od 0.150.0 niezaufany projekt nie dostarcza projektowego
AGENTS.md. Zaufaj projektowi, gdy Codex zapyta, albo sprawdź jego wpis[projects."<path>"]w~/.codex/config.toml. - Wznowiony wątek od razu jest blisko limitu.
codex resumewczytuje wszystko, co wątek zawierał. Wznawiaj tylko po to, żeby dokończyć przerwaną fazę; następną zaczynaj przez/newz plikiem przekazania. - Zadanie w chmurze ignoruje konwencję, na której polegasz lokalnie. Reguła siedzi w
~/.codex/AGENTS.mdalbo w niezacommitowanym pliku. Zacommituj ją doAGENTS.mdrepozytorium. - Podniesienie
model_context_windownie pomogło. Większe okno opóźnia kompakcję, ale każda tura kosztuje więcej. Najpierw przytnij prefiks i skróć wątki; jak sumuje się zużycie, opisuje artykuł o zarządzaniu kosztami.
Dokąd dalej w temacie kontekstu Codex
Dział zatytułowany „Dokąd dalej w temacie kontekstu Codex”- Optymalizacja
AGENTS.mdi skilli dla Codex: budżet, kolejność ładowania i reguły obcinania stojące za stałym prefiksem. - Prompt engineering dla Codex: prompty, które podają ograniczenia raz i precyzyjnie.
- Przepływy wieloagentowe: podział pracy tak, by żaden wątek nie niósł jej całej.
- Build: najpierw plan.md, potem implementacja: neutralna narzędziowo wersja łańcucha z plikiem przekazania.
- Triki na wydajność: skróty do wznawiania, forkowania i przechodzenia między CLI, IDE, aplikacją i chmurą.