Jak wyjść z błędów i złych decyzji Codex
ENOdzyskiwanie po błędach Codex polega na przypisaniu awarii do jednego z pięciu typów — blokady sandboxa lub zatwierdzeń, nieudanego polecenia, zmiany w złym kierunku, długiego wątku, w którym Codex się pogubił, albo zerwanego połączenia — i zastosowaniu poprawki dla tego typu. Cofanie przewija rozmowę, a nie pliki: w Codex CLI 0.157.1 funkcja migawek undo jest usunięta, więc pliki przywracasz Gitem.
Ta strona jest dla programistów, którzy mają za sobą pierwsze zadanie w Codex i właśnie zobaczyli, jak kolejne idzie nie tak. Codex uruchomił npm install w repozytorium na pnpm, lockfile się zmienił i build przestał działać. Albo na błąd typów odpowiedział trzema rundami rzutowań, każda gorsza od poprzedniej. Albo przebudował moduł, o który nikt go nie prosił. Każdą z tych sytuacji cofniesz w kilka minut, jeśli wiesz, z jakim typem awarii masz do czynienia, i w całe popołudnie, jeśli nie wiesz.
Co daje ci procedura odzyskiwania w Codex
Dział zatytułowany „Co daje ci procedura odzyskiwania w Codex”- Tabelę triage, która prowadzi od objawu do właściwej sekcji z poprawką.
- Nawyk checkpointu w Git, dzięki któremu każde inne odzyskiwanie jest tanie.
- Dokładne opcje zatwierdzania, flagi i klucze konfiguracji dla Codex CLI 0.157.1, w tym wąskie uprawnienia, które odblokowują sandbox bez jego otwierania.
- Pięć promptów do skopiowania: najpierw plan, napraw przyczynę, zmień kierunek, przekaż długi wątek i przerwij pętlę błędów.
- Trzy kontrole, które dowodzą, że naprawiona zmiana działa, bez czytania każdej linii.
Z jakim typem awarii Codex masz do czynienia?
Dział zatytułowany „Z jakim typem awarii Codex masz do czynienia?”Zacznij od objawu. Najwięcej czasu przy odzyskiwaniu traci się na dobrą poprawkę dla złej awarii, na przykład na nowy wątek, gdy prawdziwym problemem jest brak dostępu do sieci.
| Objaw | Typ awarii | Pierwsze sprawdzenie | Przejdź do |
|---|---|---|---|
| Pojawia się prośba o zatwierdzenie albo polecenie kończy się „permission denied” lub błędem DNS | Blokada sandboxa lub zatwierdzeń | Czy zadanie wymaga czegoś spoza katalogu roboczego? | Napraw blokady sandboxa i zatwierdzeń |
| Polecenie powłoki kończy się kodem różnym od zera: błędy instalacji, builda lub testów | Nieudane polecenie | Czy AGENTS.md podaje właściwy menedżer pakietów i polecenie testów? | Napraw nieudane polecenie Codex |
| Kod się kompiluje, może nawet przechodzi testy, ale rozwiązuje inny problem | Zły kierunek | Czy Codex przedstawił plan przed edycją? | Cofnij zmianę w złym kierunku |
| Codex powtarza pracę albo przeczy wcześniejszej decyzji | Długi wątek | Co /status pokazuje w zużyciu tokenów? | Uratuj długi wątek, który się pogubił |
| Brakuje narzędzia MCP lub przekracza ono limit czasu, albo widzisz błędy uwierzytelniania | Połączenie | Co zgłaszają codex mcp list i codex doctor? | Napraw awarie MCP, sieci i logowania |
Ustaw checkpoint w Git przed ryzykownym zadaniem
Dział zatytułowany „Ustaw checkpoint w Git przed ryzykownym zadaniem”Każda ścieżka odzyskiwania poniżej kończy się tak samo: pliki wracają do znanego, dobrego stanu. Doprowadza je tam Git. Codex CLI nie robi już własnych migawek po każdej turze — codex features list w 0.157.1 pokazuje undo z etapem removed — więc checkpoint musi być twój.
W terminalu, zanim oddasz Codex refaktoryzację, zmianę zależności albo cokolwiek, co dotyka więcej niż kilku plików:
git status # start from a clean tree, or know what is already dirtygit add -A && git commit -m "checkpoint: before codex auth refactor"Przy większej lub eksploracyjnej pracy trzymaj Codex całkiem z dala od głównego checkoutu. codex --worktree uruchamia sesję w nowym, zarządzanym Git worktree, a /worktree robi to samo z wnętrza sesji. Nieudana próba w worktree kosztuje cię tylko katalog, który możesz usunąć. Cały przepływ opisuje strona izolowane zadania Codex w Git worktrees.
Najtańsze odzyskiwanie to takie, którego nie potrzebujesz. Plan przed jakąkolwiek edycją wyłapuje większość pracy w złym kierunku, póki jest jeszcze akapitem tekstu.
Napraw blokady sandboxa i zatwierdzeń w Codex
Dział zatytułowany „Napraw blokady sandboxa i zatwierdzeń w Codex”Gdy odpowiesz już na pytanie o zaufanie do repozytorium, a konfiguracja nie mówi inaczej, Codex uruchamia polecenia z polityką zatwierdzeń on-request i sandboxem workspace-write (sprawdzone w kodzie źródłowym 0.157.1). Może edytować pliki w katalogu roboczym i tam uruchamiać polecenia. Zapis poza katalogiem roboczym albo dostęp do sieci wymaga twojej zgody. Polecenie, które w sandboxie kończy się błędem DNS lub połączenia, zwykle oznacza, że sandbox działa zgodnie z przeznaczeniem, a nie że masz problem z siecią.
Gdy Codex prosi o przekroczenie granicy, okno zatwierdzenia w Codex CLI 0.157.1 proponuje między innymi takie opcje:
- Yes, proceed uruchamia to jedno polecenie.
- Yes, and don’t ask again for this command in this session wyłącza powtarzające się pytania o polecenie, któremu ufasz, na przykład o runner testów.
- No, and tell Codex what to do differently anuluje polecenie i pozwala od razu zmienić kierunek.
Wybieraj tę ostatnią opcję częściej, niż podpowiada intuicja. Gdy Codex chce pisać do /usr/local albo zainstalować pakiet globalnie, właściwą poprawką jest zwykle inne podejście, a nie szerszy sandbox.
Jeśli zadanie naprawdę potrzebuje większego dostępu, przyznaj najwęższe uprawnienie, które je odblokuje:
W terminalu dodaj katalog z prawem zapisu tylko na tę sesję:
codex --add-dir ../shared-fixturesReszta sandboxa zostaje bez zmian i nic nie przechodzi do następnej sesji.
Jeśli każde zadanie w projekcie potrzebuje sieci (na przykład rejestru pakietów), przyznaj tylko dostęp do sieci w ~/.codex/config.toml:
sandbox_mode = "workspace-write"
[sandbox_workspace_write]network_access = trueOpenAI zaleca teraz profile uprawnień (beta), wybierane kluczem default_permissions i przełączane w TUI poleceniem /permissions. Profile i starsze ustawienia sandboxa nie łączą się ze sobą, więc w jednej konfiguracji wybierz jeden system. Oba opisuje strona konfiguracja Codex.
Jeśli uruchamiasz Codex z --approve-for-me, o prośbach na granicy sandboxa decyduje za ciebie model recenzujący. Gdy odrzuci prośbę, o której wiesz, że jest bezpieczna, /approve ponawia tę jedną odmowę. Nic więcej w polityce się nie zmienia.
Napraw nieudane polecenie Codex
Dział zatytułowany „Napraw nieudane polecenie Codex”Nieudane polecenie to najczęstszy błąd Codex i najłatwiejszy do naprawienia. Codex zwykle sam czyta wynik błędu i próbuje ponownie.
-
Daj Codex jedną próbę. Codex czyta kod wyjścia i komunikat błędu, a literówkę albo brakujący import często poprawia bez pomocy. Wkrocz, jeśli druga próba powtarza pierwszą.
-
Przeczytaj pierwszy błąd samodzielnie. Ważna jest zwykle pierwsza linia, nie ostatnia. Kaskada 40 błędów typów często bierze się z jednego złego importu.
-
Uzupełnij brakujący fakt. Codex zgadywał menedżer pakietów, polecenie testów albo stan bazy danych. Powiedz mu to w jednym zdaniu, z dokładnym poleceniem.
-
Zapisz ten fakt. Dodaj właściwe polecenia builda, testów i lintera do
AGENTS.md, żeby następna sesja zaczynała od nich. Trzymaj je blisko początku pliku: Codex czyta najwyżejproject_doc_max_bytesinstrukcji projektu (domyślnie 32 KiB w 0.157.1). Układ pliku pokazuje strona AGENTS.md dla Codex.
Jeśli polecenie pada, bo brakuje usługi (bazy danych, kolejki, lokalnego API), poprawka leży poza Codex. Uruchom usługę albo każ Codex użyć dublera testowego, który projekt już ma. Do systematycznego tropienia prawdziwego błędu służy strona debugowanie i polowanie na błędy z Codex.
Cofnij zmianę w złym kierunku
Dział zatytułowany „Cofnij zmianę w złym kierunku”Zmiana w złym kierunku kosztuje najwięcej, bo nic nie świeci się na czerwono. Codex użył Express w serwisie na Fastify albo dodał endpoint REST tam, gdzie projekt używa GraphQL. Łap to wcześnie: obserwuj kilka pierwszych edycji i naciśnij Esc, gdy tylko kierunek wygląda źle. Codex przerywa turę i prosi, żebyś napisał modelowi, co ma zrobić inaczej.
Potem zdecyduj, jak daleko się cofnąć:
Jeśli dotychczasowe edycje w większości się nadają, skoryguj kurs i pozwól Codex posprzątać:
Stop. This service uses Fastify, not Express (see package.json and src/server.ts).Remove the Express code you added, re-implement the route with Fastify's routehandler pattern, and list every file you changed.Naciśnij Esc dwa razy przy pustym polu wpisywania, żeby przeglądać wcześniejsze prompty. Strzałkami wybierz jeden i naciśnij Enter. Codex cofa wątek do chwili sprzed tego promptu i wstawia go z powrotem do pola wpisywania, więc możesz go przepisać z brakującym ograniczeniem.
Przewinięcie zmienia rozmowę, nie twoje pliki. Uruchom potem /diff: jeśli edycje z porzuconych tur nadal tam są, przywróć pliki Gitem.
W terminalu wybierz szczegółowość:
git diff --stat # what changed since the checkpointgit restore -p src/ # discard chosen hunks interactivelygit restore src/routes/ src/server.ts # discard whole filesgit stash push -u -m "codex: express attempt" # set the whole attempt aside, recoverablyWybieraj git stash zamiast git reset --hard: stash zachowuje nieudaną próbę razem z nowymi, nieśledzonymi plikami, na wypadek gdyby jakaś jej część była warta zachowania. git reset --hard trwale odrzuca zmiany w śledzonych plikach, a nowe pliki zostawia na miejscu.
Uratuj długi wątek, który się pogubił
Dział zatytułowany „Uratuj długi wątek, który się pogubił”Długie wątki psują się po cichu. Gdy rozmowa zbliża się do limitu tokenów, Codex automatycznie kompaktuje starszą historię (próg ustawia model_auto_compact_token_limit w config.toml). Streszczenie po kompakcji może zgubić decyzję sprzed godziny. Objawy to powtarzana praca, ponownie otwierane decyzje i ignorowane ograniczenia.
-
Sprawdź liczby.
/statuspokazuje bieżącą konfigurację sesji i zużycie tokenów. -
Kompaktuj na własnych warunkach. Uruchom
/compactw naturalnym momencie, na przykład gdy funkcja przejdzie testy, zamiast czekać, aż automatyczna kompakcja trafi w środek zadania. -
Przekaż pracę do nowego wątku, gdy kompakcja nie wystarcza. Poproś Codex o zapisanie stanu do pliku (prompt poniżej), uruchom
/newi zacznij nowy wątek od tego pliku. -
Rozgałęź zamiast nadpisywać. Żeby wypróbować alternatywę bez utraty bieżącego wątku, użyj
/forkalbo z powłokicodex fork --last. Żeby wrócić do wczorajszej sesji, uruchomcodex resume --last.
Wzorce, które od początku utrzymują wątki krótkie, opisuje strona zarządzanie kontekstem na powierzchniach Codex.
Napraw awarie MCP, sieci i logowania
Dział zatytułowany „Napraw awarie MCP, sieci i logowania”Awarie połączenia zatrzymują zadanie bez jasnego komunikatu, więc zanim obwinisz model, sprawdź połączenia i konfigurację.
W terminalu:
codex mcp list # every configured servercodex mcp get sentry # one server's full definitionW sesji /mcp verbose pokazuje, jakie narzędzia każdy serwer faktycznie udostępnił. Powolny serwer to często limit czasu, a nie awaria. Podnieś limity albo wyłącz serwer bez usuwania konfiguracji w ~/.codex/config.toml:
[mcp_servers.sentry]startup_timeout_sec = 30tool_timeout_sec = 120# enabled = false # switch the server off and keep working without itW uruchomieniach skryptowych required = true sprawia, że codex exec kończy się błędem, gdy ten serwer nie wystartuje, zamiast pracować dalej bez niego. Szczegóły konfiguracji są na stronie serwery MCP w Codex.
codex login status # are you signed in, and howcodex doctor # install, config, auth and runtime healthcodex login # sign in againcodex doctor --json wypisuje raport z ukrytymi danymi wrażliwymi, który możesz dołączyć do zgłoszenia błędu. Metody logowania i użycie klucza API opisuje strona uwierzytelnianie Codex.
Jeśli Codex przestaje generować odpowiedź, naciśnij Esc, żeby przerwać turę, i wyślij krótką kontynuację, na przykład „continue from where you stopped”. Jeśli zawieszenia się powtarzają, uruchom codex doctor i sprawdź /warnings, gdzie są zachowane szczegóły diagnostyczne, zanim zrestartujesz sesję.
Przerwij pętlę błędów
Dział zatytułowany „Przerwij pętlę błędów”Najgorsza awaria łączy dwie inne: Codex naprawia błąd, poprawka powoduje nowy, a każda runda oddala kod od działającego stanu. Kolejne tury tylko pogarszają sprawę, bo każda nieudana próba zostaje w kontekście.
-
Zatrzymaj pętlę. Naciśnij
Escw CLI albo zatrzymaj zadanie na powierzchni, której używasz. -
Wróć do stanu sprzed pętli. Przywróć pliki do checkpointu Gitem albo odłóż próbę przez
git stash. Potem uruchom/new, żeby nieudane próby zniknęły z kontekstu. -
Znajdź pierwszy błąd. Przeczytaj błąd, od którego zaczęła się pętla, a nie ostatni.
-
Zacznij od nowa, w małym i ogrodzonym zakresie. Podaj Codex pierwotny błąd, podejście, które zawiodło, podejście, które ma zastosować, i granicę plików (prompt poniżej).
-
Weryfikuj po każdym kroku. Podziel pracę na dwa lub trzy zadania i uruchamiaj testy po każdym z nich, zanim zaczniesz następne.
Jak udowodnić, że naprawiona zmiana jest poprawna?
Dział zatytułowany „Jak udowodnić, że naprawiona zmiana jest poprawna?”Uratowana sesja wydaje się skończona, zanim naprawdę jest. Podsumowanie Codex („all tests pass”) to twierdzenie, nie dowód. Trzy kontrole potwierdzają wynik bez czytania linia po linii:
- Zakres. Uruchom
/diffalbogit diff --stati porównaj listę plików z planem. Plik spoza planu to albo pozostałość po nieudanej próbie, albo nowy zakres. Wyjaśnij go albo cofnij. - Bramki. Uruchom samodzielnie, we własnym terminalu, polecenia testów, sprawdzania typów i lintera z projektu i sprawdź kody wyjścia. Zwróć uwagę na testy usunięte, pominięte albo osłabione podczas odzyskiwania.
- Niezależny przegląd. Uruchom
/reviewalbocodex review --uncommitted, żeby dostać osobny przegląd zmiany w trybie tylko do odczytu, a potem oceń jego uwagi. Całą pętlę opisuje strona przegląd zmian Codex przed commitem.
Zatwierdzasz ty, nie Codex. Commituj dopiero, gdy wszystkie trzy kontrole są czyste, i zachowaj commit z checkpointem, dopóki zmiana nie zostanie zmergowana.
Gdy samo odzyskiwanie w Codex zawodzi
Dział zatytułowany „Gdy samo odzyskiwanie w Codex zawodzi”Przewinięcie zadziałało, ale pliki nadal pokazują złą zmianę. Cofanie przewija wątek, a nie drzewo robocze. Przywróć pliki Gitem, jak w sekcji Cofnij zmianę w złym kierunku.
Podwójne Esc nie otwiera wcześniejszych promptów. Codex nie może cofnąć wątku w trakcie tury: najpierw ją przerwij, potem spróbuj ponownie. W rozmowie pobocznej edycja wcześniejszych promptów jest niedostępna. Wróć do głównego wątku.
Codex wciąż ignoruje twoją korektę. Instrukcja podana późno w długim wątku konkuruje ze wszystkim, co było wcześniej. Zacznij nowy wątek przez /new i umieść wszystkie ograniczenia w pierwszej wiadomości albo dopisz ograniczenie do AGENTS.md, żeby każdy wątek od niego zaczynał.
Nie ma checkpointu w Git. Jeśli w repozytorium są niezacommitowane zmiany sprzed zadania, nie uruchamiaj git restore na wszystkim. Użyj git restore -p, żeby odrzucić tylko fragmenty napisane przez Codex, i oceniaj każdy fragment, gdy się pojawi.
Zadanie w chmurze Codex dało zły diff. Zadanie w chmurze działa we własnym środowisku, więc twój checkout pozostaje bez zmian, dopóki nie zastosujesz diffa przez codex apply <id-zadania> albo nie zmergujesz pull requesta. Nie rób ani jednego, ani drugiego. Zamknij pull request, popraw prompt lub środowisko i uruchom nowe zadanie. Konfigurację środowiska opisuje strona środowiska chmurowe Codex.
Ta sama awaria powtarza się w każdej sesji. Poprawka należy do konfiguracji, a nie do kolejnego promptu: polecenie w AGENTS.md, uprawnienie w config.toml albo limit czasu serwera MCP.
Dokąd dalej po szybkim starcie z Codex
Dział zatytułowany „Dokąd dalej po szybkim starcie z Codex”Ta strona zamyka szybki start z Codex. Umiesz już zainstalować Codex, zalogować się, skonfigurować go, napisać AGENTS.md, podłączyć serwery MCP, uruchamiać i przeglądać zadania oraz wychodzić z ich awarii.
Czy ten artykuł Ci pomógł?
Jedno kliknięcie, bez logowania.
Co z tym zrobisz?
Jak się czytało?
Co przeszkadzało? Możesz zaznaczyć kilka
Twoja rola?
Dzięki. Czytam każdą odpowiedź. Michał Jaskólski
Pomógł Ci ten artykuł?
Każde to jedno kliknięcie. Zamknij, kiedy chcesz.
bez logowania