Przejdź do głównej zawartości

Poznawanie nieznanej bazy kodu z Codex

Codex mapuje nieznaną bazę kodu w sandboksie tylko do odczytu: interaktywna sesja CLI daje przegląd od góry i śledzenie jednego przepływu, subagenci prowadzą równoległe dochodzenia, codex exec zapisuje mapę do pliku, a Codex cloud przejmuje bardzo duże repozytoria. Mapie można ufać dopiero wtedy, gdy jej cytowania path:line przejdą skrypt, a kluczowe twierdzenie przejdzie test.

Przejmujesz serwis płatności bez dokumentu architektury, a inżynier, który rozumiał obsługę webhooków, odszedł pół roku temu. Pierwszy ticket brzmi „napraw logikę ponawiania webhooków”, a ty nie potrafisz jeszcze wskazać, gdzie webhooki są przetwarzane. Ta strona jest dla takiego dewelopera oraz dla tech leada, który chce, żeby każda nowa osoba doszła do pierwszej bezpiecznej zmiany bez tygodnia chodzenia za kimś krok w krok.

  • Konfigurację Codex tylko do odczytu, która może przejrzeć wszystko i niczego nie zmienia, oraz jej surowszy wariant dla kodu, któremu nie ufasz.
  • Sześć promptów do skopiowania: przegląd, śledzenie przepływu, odkrywanie konwencji, archeologię w gicie, równoległe dochodzenie subagentów i krytyczną weryfikację mapy.
  • Polecenie codex exec i polecenie codex cloud exec, po których mapa zostaje w pliku, a nie w transkrypcie czatu.
  • Skrypt powłoki, który sprawdza, czy każde cytowanie path:line istnieje, oraz test charakteryzacyjny, który zamienia kluczowe twierdzenie w coś, co CI sprawdza przy każdym commicie.
  • ARCHITECTURE.md dla ludzi i aktualizację AGENTS.md dla każdej przyszłej sesji Codex.

Wybieraj powierzchnię według pytania, nie z przyzwyczajenia. Każdy wiersz poza rozszerzeniem IDE zostawia artefakt, który da się sprawdzić.

PytaniePowierzchniaJak zacząćCo zostaje
„Czym jest ten system i gdzie leży mój ticket?”Interaktywne CLI, tylko odczytcodex -s read-onlySzkic ARCHITECTURE.md
„Co robi funkcja, którą mam otwartą?”Rozszerzenie IDE (VS Code i jego forki, np. Cursor)Zaznacz kod i zapytaj w panelu CodexNic trwałego; ważne ustalenia przenieś do mapy
„Chcę tę samą mapę co sprint”CLI bez interakcjicodex exec -s read-only -o …Datowany plik raportu
„Zbadaj repozytorium za duże na mój laptop albo gałąź, której nie mam lokalnie”Codex cloudcodex cloud exec --env … --branch …Zadanie w chmurze, którego diff zawiera raport
„Chcę prowadzić kilka wątków dochodzenia obok siebie”Aplikacja desktopowa Codex (codex app lub /app, tylko macOS i Windows)Kontynuuj sesję CLI przez /appTe same pliki, przeglądane w aplikacji

Według Neowin (źródło wtórne) aplikacja desktopowa Codex trafiła 9 lipca 2026 roku do aplikacji desktopowej ChatGPT jako tryb Codex; CLI Codex nadal nazywa ją aplikacją desktopową (Desktop app). Pracę w aplikacji opisuje strona Aplikacja desktopowa Codex: równoległe wątki, worktree i przegląd. Ta strona korzysta z CLI, bo tam każdy krok kończy się plikiem.

Eksploracja nie powinna edytować plików, więc wybierz sandbox świadomie. Uruchom w terminalu, w katalogu głównym repozytorium:

Okno terminala
codex -s read-only -c model_reasoning_effort="high"

-s read-only pozwala Codex czytać pliki i uruchamiać polecenia tylko do odczytu, takie jak git log, a blokuje zapisy w katalogu roboczym. Domyślny model Codex, GPT-6 Astra, pracuje domyślnie z wysiłkiem rozumowania low (dla zalogowanych kont serwer może to nadpisać; /status pokaże faktyczny model); mapowanie zyskuje na głębszym rozumowaniu, więc najpierw podnieś wysiłek, a dopiero potem rozważ inny model (aktualne ustawienia domyślne znajdziesz w przeglądzie modeli). Obie flagi są w codex --help 0.157.1.

OpenAI preferuje profile uprawnień, które są w wersji beta: codex -c default_permissions=":read-only". Używaj profilu albo -s, nie obu naraz, bo według OpenAI profile i starszy system sandboksów „do not compose”. W trakcie sesji /permissions zmienia uprawnienia Codex, a /status pokazuje bieżącą konfigurację i zużycie tokenów.

Dla repozytorium, któremu nie ufasz, na przykład kodu od dostawcy lub z przejętej firmy, działają dwa zabezpieczenia. Od Codex 0.150.0 projekt, którego nie oznaczysz jako zaufany, nie dostarcza swojego AGENTS.md, więc nie oznaczaj go jako zaufanego, gdy Codex o to zapyta. Hooki uruchamiają się dopiero po nadaniu im trwałego zaufania, więc tego też odmów. Mocniejszą izolację da uruchomienie sesji w kontenerze.

Kolejność ma znaczenie. Każdy krok zawęża pytanie, więc Codex czyta coraz mniej plików, a odpowiedzi stają się coraz konkretniejsze.

  1. Zdobądź przegląd. Codex czyta manifesty, drzewo katalogów, konfigurację i punkty wejścia, a potem zwraca krótkie podsumowanie. To podsumowanie jest twoim indeksem, a nie zrozumieniem systemu.

  2. Prześledź jeden przepływ, który musisz zmienić. Ogranicz śledzenie do swojego ticketu. Jedna ścieżka przebyta od początku do końca jest warta więcej niż wycieczka po wszystkich modułach. Wpisz @ w polu promptu albo użyj /mention, żeby dołączyć pliki, które już podejrzewasz.

  3. Poznaj konwencje, zanim napiszesz kod. Konwencje to niepisane zasady, za których złamanie recenzent odrzuci twój pierwszy pull request.

  4. Zapytaj gita, skąd wziął się dziwny kod. Historia commitów wyjaśnia decyzje, których sam kod nie wyjaśni, na przykład pozornie zbędną pętlę ponawiania albo komentarz „nie zmieniać”.

Utrzymaj główny wątek w czystości dzięki subagentom

Dział zatytułowany „Utrzymaj główny wątek w czystości dzięki subagentom”

Każdy plik przeczytany przez Codex zostaje w kontekście sesji, a odpowiedzi tracą precyzję, gdy kontekst się zapełnia. Subagenci są w Codex 0.157.1 domyślnie włączeni (multi_agent ma status stable w codex features list): każdy bada kod we własnym kontekście i zwraca podsumowanie. /subagents przełącza między nimi, a /side pozwala zadać szybkie pytanie w efemerycznym forku bez zaśmiecania głównego wątku.

Gdy /status pokazuje, że kontekst się zapełnia, uruchom /compact, żeby streścić rozmowę, albo /new, żeby zacząć od nowa na podstawie zapisanej mapy. Budżet kontekstu w długich sesjach opisuje zarządzanie kontekstem na powierzchniach Codex.

W bardzo dużym repozytorium najdroższą częścią eksploracji jest przeszukiwanie tekstu. Serwer MCP do analizy kodu odpowiada na pytanie „kto wywołuje tę funkcję” przez serwer językowy. Jedną z opcji jest Serena, serwer społecznościowy od Oraios (PyPI serena-agent 1.7.0, sprawdzone 2026-09-26). Jej opiekunowie odradzają instalację z marketplace’ów MCP i wtyczek, bo tamtejsze wpisy zawierają nieaktualne polecenia, więc zainstaluj ją ze źródła i zarejestruj w Codex:

Okno terminala
uv tool install -p 3.13 serena-agent
serena init
codex mcp add serena -- serena start-mcp-server --project-from-cwd --context=codex

Własna konfiguracja Sereny dla Codex (serena setup codex) dodatkowo podnosi startup_timeout_sec do 15 w config.toml; zrób to samo, jeśli serwer przekroczy limit czasu przy pierwszym uruchomieniu.

Porównanie z alternatywami znajdziesz w artykule serwery MCP do analizy kodu.

Mapy w transkrypcie czatu nie da się sprawdzić ani porównać. Uruchom przegląd bez interakcji, żeby wynik trafił do pliku. Zapisz prompt przeglądu z pierwszego kroku w prompts/architecture-map.md, a potem uruchom w terminalu, w katalogu głównym repozytorium:

Okno terminala
mkdir -p docs
codex exec -s read-only -c model_reasoning_effort="high" \
-o docs/ARCHITECTURE.md \
"$(cat prompts/architecture-map.md)"

-s read-only nie pozwala agentowi niczego zapisać, a -o (--output-last-message) sprawia, że to samo CLI zapisuje ostatnią wiadomość Codex do pliku. Obie flagi są w codex exec --help 0.157.1. Uruchomienia skryptowe, wyjście JSON i uwierzytelnianie w CI opisuje uruchamianie Codex bez interakcji.

Gdy repozytorium jest za duże, żeby wygodnie badać je na twojej maszynie, albo potrzebny kod leży na gałęzi, której nie masz lokalnie, zleć analizę jako zadanie w chmurze. Najpierw musi istnieć środowisko; zobacz środowiska chmurowe Codex.

Okno terminala
codex cloud exec --env ENV_ID --branch release/2026-09 \
"Map the authentication subsystem under src/auth/: every entry point, the \
middleware chain and session handling, with path:line citations. Write the \
result to docs/analysis/auth-map.md and change no other file."

Zastąp ENV_ID identyfikatorem swojego środowiska; codex cloud bez podpolecenia pozwala je przeglądać. --branch domyślnie wskazuje twoją bieżącą gałąź, więc podawaj ją zawsze, gdy chodzi ci o inną. codex cloud status TASK_ID pokazuje postęp, a codex cloud diff TASK_ID wyświetla raport jako diff, który czytasz bez nakładania. --attempts uruchamia best-of-N, co opłaca się bardziej przy zmianach w kodzie niż przy raportach. Polecenie codex cloud jest w 0.157.1 oznaczone jako eksperymentalne.

Płynne podsumowanie nie musi być poprawne. Agent może zacytować plik o zmienionej nazwie, opisać middleware, który jest zarejestrowany, ale wyłączony, albo przemilczeć dynamiczne wywołanie, którego nie rozwiązał. Nie naprawisz tego, czytając każdy plik od nowa. Sprawiasz, że każde twierdzenie da się sprawdzić, i zostawiasz sprawdzanie maszynom. Wykonaj te trzy kontrole po kolei, od najtańszej.

  1. Sprawdź każde cytowanie automatycznie. Powyższe prompty wymagają path:line dla każdego twierdzenia. Uruchom w terminalu, w katalogu głównym repozytorium. Skrypt wypisuje każde cytowanie, którego plik nie istnieje albo którego numer linii wychodzi poza koniec pliku:

    Okno terminala
    grep -oE '[A-Za-z0-9_./-]+\.[A-Za-z0-9]+:[0-9]+' docs/ARCHITECTURE.md \
    | sort -u | while IFS=: read -r f l; do
    if [ ! -f "$f" ]; then echo "missing file: $f"
    elif [ "$l" -gt "$(wc -l < "$f")" ]; then echo "line out of range: $f:$l"
    fi
    done

    Pusty wynik oznacza, że każde cytowanie wskazuje prawdziwy kod. Cytowania plików bez rozszerzenia, takich jak Dockerfile, nie są sprawdzane, a host:port pojawi się jako brakujący plik, który możesz zignorować. Kontrola dowodzi, że twierdzenia są zakotwiczone w kodzie, a nie że są prawdziwe.

  2. Zaatakuj mapę ze świeżym kontekstem. Recenzent, który nie pisał mapy, nie ma interesu w jej obronie. Uruchom poniższą kontrolę jako osobne wywołanie codex exec -s read-only --ephemeral albo w nowej sesji po /new, żeby nie przejęła założeń pierwszego przebiegu.

  3. Zamień kluczowe twierdzenie w test. Wybierz twierdzenie, od którego zależy twój ticket, na przykład „zdarzenie webhooka oznaczone już jako przetworzone jest potwierdzane bez drugiego zapisu do bazy”. Uruchom sesję z prawem zapisu (codex -s workspace-write), poproś Codex o test charakteryzacyjny, który sprawdza dokładnie to obecne zachowanie, i uruchom go. Test, który przechodzi, jest dowodem, że mapa zgadza się z kodem; test, który nie przechodzi, jest najcenniejszym odkryciem tygodnia. Po scaleniu CI sprawdza to twierdzenie przy każdym commicie. Technikę opisują testy charakteryzacyjne.

Kto zatwierdza. Deweloper zatwierdza mapę obszaru, który zamierza zmienić, gdy wszystkie trzy kontrole przejdą. Zmiany w ARCHITECTURE.md i AGENTS.md przechodzą przez zwykły pull request, w którym właściciel kodu tego obszaru przegląda diff kilkudziesięciu linii dokumentacji, a nie kod, który ona opisuje. Na tym polega przejście od czytania kodu do przeglądania dowodów opisane w artykule dowody zamiast diffów.

Zapisz to, czego się nauczyłeś, na następną sesję

Dział zatytułowany „Zapisz to, czego się nauczyłeś, na następną sesję”

Eksploracja, której nikt nie zapisał, zostanie powtórzona przez następną osobę i przez twoją własną następną sesję. Prowadź dwa pliki dla dwóch różnych odbiorców.

PlikOdbiorcaCo zawiera
docs/ARCHITECTURE.mdLudzieSprawdzoną mapę: podsystemy, prześledzone przepływy, kierunek zależności, otwarte pytania
AGENTS.mdKażda przyszła sesja CodexPolecenia budowania i testów, potwierdzone konwencje i pułapki, w jak najmniejszej liczbie linii

Jeśli repozytorium nie ma AGENTS.md, utwórz go przez /init, a potem dopracuj tym promptem w sesji z prawem zapisu:

Żeby mapa pozostała aktualna, zaplanuj kontrolę dryfu. Automatyzacje w aplikacji desktopowej służą do tego, by „schedule recurring tasks to run in the background”; harmonogram w CI z codex exec działa tak samo i zostawia log. W obu przypadkach niech zadanie raportuje dryf, a nie przepisuje pliku, a skrypt sprawdzający cytowania z poprzedniej sekcji uruchamiaj w CI, żeby nieaktualne cytowanie wywracało build. Konfigurację i zabezpieczenia obu wariantów opisują zaplanowane automatyzacje Codex.

ObjawPrawdopodobna przyczynaJak wyjść z sytuacji
Przegląd jest ogólnikowy („używa architektury warstwowej”)Prompt prosił o podsumowanie, a nie o cytowaniaZapytaj ponownie z dopiskiem „cite path:line for every claim, mark inferences”. Proza bez cytowań to zgadywanie.
Codex mapuje niewłaściwy serwis w monorepoUczepił się pierwszego manifestu lub pliku wejściowego, jaki znalazłNazwij zakres: „The service is packages/billing-api/. Ignore every other package.” Albo zacznij od codex -C packages/billing-api -s read-only.
Cytowania nie przechodzą skryptuPliki zmieniły nazwy albo model odtworzył ścieżkę z pamięciPowiedz Codex, które cytowania nie przeszły, i poproś o ponowne otwarcie tych plików. Nigdy nie poprawiaj cytowania ręcznie bez ponownego przeczytania kodu.
Odpowiedzi z czasem tracą precyzjęKontekst jest pełen zawartości plikówSprawdź /status. Przenieś szerokie czytanie do subagentów, potem /compact albo /new i kontynuuj od docs/ARCHITECTURE.md.
Codex opisuje system z README, a nie ten z koduNieaktualna dokumentacja została potraktowana jako źródło prawdyNapisz „when documentation and code disagree, the code wins; list every disagreement”. Te rozbieżności same są cennym wynikiem.
Śledzenie urywa się na wstrzykiwaniu zależności albo rejestrze wtyczekStatyczne czytanie nie rozwiąże połączeń tworzonych w czasie działaniaPoproś o miejsce rejestracji, a potem potwierdź je testem charakteryzacyjnym albo logiem debugowania w lokalnym uruchomieniu.
Raport z chmury opisuje nie ten kodZadanie uruchomiło się na twojej bieżącej gałęzi albo repozytorium środowiska jest nieaktualnePodawaj --branch jawnie i sprawdź konfigurację środowiska przed ponownym uruchomieniem.
Zapis został zablokowany w trakcie eksploracjiSandbox tylko do odczytu robi to, co powinienZostaw go. Na sesję z prawem zapisu przełącz się tylko na czas testu i aktualizacji AGENTS.md.

Ta strona dotyczy wyłącznie Codex. Schemat „zmapuj, prześledź, udowodnij, zapisz” działa także gdzie indziej, ale mechanizmy są inne: Claude Code używa trybu planowania, flagi --restricted i wbudowanych subagentów Explore, a Cursor pracuje z poziomu edytora. Zobacz poznawanie nieznanej bazy kodu z Claude Code i strategie Cursora dla dużych baz kodu. Porady niezależne od narzędzia dla monorepo i repozytoriów z milionami linii znajdziesz w artykule strategie dla bardzo dużych baz kodu, a cechy repozytorium, które ułatwiają sprawdzenie każdej mapy, w artykule jak przygotować repozytorium do pracy agentów.

Gdy mapa przejdzie kontrole, zaprojektuj lub zaplanuj zmianę na jej podstawie. Tech leadzi, którzy mierzą, jak szybko nowi inżynierowie dochodzą do pierwszej bezpiecznej zmiany, mogą użyć metryki czasu wdrożenia dewelopera.