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.
Co zyskujesz, mapując bazę kodu z Codex
Dział zatytułowany „Co zyskujesz, mapując bazę kodu z Codex”- 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 execi poleceniecodex 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:lineistnieje, oraz test charakteryzacyjny, który zamienia kluczowe twierdzenie w coś, co CI sprawdza przy każdym commicie. ARCHITECTURE.mddla ludzi i aktualizacjęAGENTS.mddla każdej przyszłej sesji Codex.
Która powierzchnia Codex pasuje do którego pytania?
Dział zatytułowany „Która powierzchnia Codex pasuje do którego pytania?”Wybieraj powierzchnię według pytania, nie z przyzwyczajenia. Każdy wiersz poza rozszerzeniem IDE zostawia artefakt, który da się sprawdzić.
| Pytanie | Powierzchnia | Jak zacząć | Co zostaje |
|---|---|---|---|
| „Czym jest ten system i gdzie leży mój ticket?” | Interaktywne CLI, tylko odczyt | codex -s read-only | Szkic ARCHITECTURE.md |
| „Co robi funkcja, którą mam otwartą?” | Rozszerzenie IDE (VS Code i jego forki, np. Cursor) | Zaznacz kod i zapytaj w panelu Codex | Nic trwałego; ważne ustalenia przenieś do mapy |
| „Chcę tę samą mapę co sprint” | CLI bez interakcji | codex 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 cloud | codex 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 /app | Te 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.
Uruchom sesję Codex tylko do odczytu
Dział zatytułowany „Uruchom sesję Codex tylko do odczytu”Eksploracja nie powinna edytować plików, więc wybierz sandbox świadomie. Uruchom w terminalu, w katalogu głównym repozytorium:
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.
Zmapuj bazę kodu od góry do dołu
Dział zatytułowany „Zmapuj bazę kodu od góry do dołu”Kolejność ma znaczenie. Każdy krok zawęża pytanie, więc Codex czyta coraz mniej plików, a odpowiedzi stają się coraz konkretniejsze.
-
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.
-
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. -
Poznaj konwencje, zanim napiszesz kod. Konwencje to niepisane zasady, za których złamanie recenzent odrzuci twój pierwszy pull request.
-
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:
uv tool install -p 3.13 serena-agentserena initcodex mcp add serena -- serena start-mcp-server --project-from-cwd --context=codexWł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.
Zapisz mapę do pliku przez codex exec
Dział zatytułowany „Zapisz mapę do pliku przez codex exec”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:
mkdir -p docscodex 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.
Przekaż bardzo duże repozytorium do Codex cloud
Dział zatytułowany „Przekaż bardzo duże repozytorium do Codex cloud”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.
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.
Udowodnij mapę, zanim jej zaufasz
Dział zatytułowany „Udowodnij mapę, zanim jej zaufasz”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.
-
Sprawdź każde cytowanie automatycznie. Powyższe prompty wymagają
path:linedla 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; doif [ ! -f "$f" ]; then echo "missing file: $f"elif [ "$l" -gt "$(wc -l < "$f")" ]; then echo "line out of range: $f:$l"fidonePusty wynik oznacza, że każde cytowanie wskazuje prawdziwy kod. Cytowania plików bez rozszerzenia, takich jak
Dockerfile, nie są sprawdzane, ahost:portpojawi się jako brakujący plik, który możesz zignorować. Kontrola dowodzi, że twierdzenia są zakotwiczone w kodzie, a nie że są prawdziwe. -
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 --ephemeralalbo w nowej sesji po/new, żeby nie przejęła założeń pierwszego przebiegu. -
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.
| Plik | Odbiorca | Co zawiera |
|---|---|---|
docs/ARCHITECTURE.md | Ludzie | Sprawdzoną mapę: podsystemy, prześledzone przepływy, kierunek zależności, otwarte pytania |
AGENTS.md | Każda przyszła sesja Codex | Polecenia 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.
Co psuje się przy eksploracji bazy kodu z Codex
Dział zatytułowany „Co psuje się przy eksploracji bazy kodu z Codex”| Objaw | Prawdopodobna przyczyna | Jak wyjść z sytuacji |
|---|---|---|
| Przegląd jest ogólnikowy („używa architektury warstwowej”) | Prompt prosił o podsumowanie, a nie o cytowania | Zapytaj ponownie z dopiskiem „cite path:line for every claim, mark inferences”. Proza bez cytowań to zgadywanie. |
| Codex mapuje niewłaściwy serwis w monorepo | Uczepił 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ą skryptu | Pliki zmieniły nazwy albo model odtworzył ścieżkę z pamięci | Powiedz 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ów | Sprawdź /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 kodu | Nieaktualna dokumentacja została potraktowana jako źródło prawdy | Napisz „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 wtyczek | Statyczne czytanie nie rozwiąże połączeń tworzonych w czasie działania | Poproś o miejsce rejestracji, a potem potwierdź je testem charakteryzacyjnym albo logiem debugowania w lokalnym uruchomieniu. |
| Raport z chmury opisuje nie ten kod | Zadanie uruchomiło się na twojej bieżącej gałęzi albo repozytorium środowiska jest nieaktualne | Podawaj --branch jawnie i sprawdź konfigurację środowiska przed ponownym uruchomieniem. |
| Zapis został zablokowany w trakcie eksploracji | Sandbox tylko do odczytu robi to, co powinien | Zostaw go. Na sesję z prawem zapisu przełącz się tylko na czas testu i aktualizacji AGENTS.md. |
Jak to samo zadanie wygląda w Claude Code i Cursorze
Dział zatytułowany „Jak to samo zadanie wygląda w Claude Code i Cursorze”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.
Dokąd dalej po zmapowaniu bazy kodu
Dział zatytułowany „Dokąd dalej po zmapowaniu bazy kodu”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.