Przejdź do głównej zawartości

Codex wspiera projektowanie systemów, dzieląc pracę między swoje narzędzia (CLI, tryb Plan, chmurę, worktree): uruchomienie CLI tylko do odczytu mapuje obecną architekturę, tryb Plan szkicuje warianty, Codex cloud sprawdza najbardziej ryzykowne założenia jednorazowymi spike’ami, a równoległe worktree budują konkurencyjne projekty na tych samych scenariuszach. Decyzja trafia potem do ADR i do reguły w CI.

Ta strona jest dla programisty lub tech leada, który odpowiada za decyzję architektoniczną i musi jej bronić. Sytuacja: każde wdrożenie monolitu to loteria, zespół zgodził się wydzielić moduł płatności do osobnego serwisu, a nikt nie jest zgodny co do granicy API, migracji danych ani tego, co się dzieje, gdy oba systemy działają równolegle. Do końca sprintu potrzebujesz decyzji popartej dowodami, a nie planu, który przeczytała jedna osoba.

Co zyskasz, projektując wydzielenie serwisu z Codeksem

Dział zatytułowany „Co zyskasz, projektując wydzielenie serwisu z Codeksem”
  • Sześciokrokową pętlę projektowania z narzędziem Codeksa, poleceniem i plikiem wynikowym dla każdego kroku
  • Siedem promptów do skopiowania: mapa z dowodami, porównanie wariantów, dwa spike’i w chmurze, porównanie prototypów w worktree, ADR z regułą egzekwującą i przegląd projektu
  • Tabelę weryfikacji, która mówi, czym udowodnić każdy rodzaj tezy projektowej i kto ją zatwierdza
  • Sposoby wyjścia z sytuacji, w których projektowanie z Codeksem idzie źle

Metodę niezależną od narzędzia (krótkie ADR-y plus ograniczenia sprawdzalne maszynowo) opisuje strona decyzje architektoniczne, których agenci przestrzegają. Ta strona to jej implementacja w Codeksie.

Które narzędzie Codeksa obsługuje którą część projektu?

Dział zatytułowany „Które narzędzie Codeksa obsługuje którą część projektu?”

Każdy krok zostawia plik, który da się sprawdzić, więc projekt nigdy nie żyje wyłącznie w historii czatu.

KrokNarzędzie CodeksaPolecenieCo zostaje
1. Mapa obecnego systemuCLI, sandbox tylko do odczytucodex exec -s read-only -o …docs/architecture/payments-map.md
2. Porównanie wariantówInteraktywne CLI w trybie Plan/plandocs/architecture/payments-options.md
3. Test ryzykownych założeńCodex cloud, best-of-Ncodex cloud exec --env … --attempts 2Diffy spike’ów i notatka z wnioskami, nigdy nie scalane
4. Konkurencyjne projektyZarządzane worktreecodex --worktreeDwie gałęzie z prototypami i jedna tabela porównawcza
5. Zapis i egzekwowanie decyzjiCLIcodexADR, reguła w AGENTS.md i reguła zależności w CI
6. Przegląd i pilnowanie dryfuCLI (tylko do odczytu), @codex review, automatyzacjecodex exec -s read-only …Uwagi z przeglądu i cotygodniowy raport dryfu

Projektowanie zyskuje na dłuższym rozumowaniu, niż daje mu domyślny wysiłek Codeksa (aktualny domyślny model i wysiłek podaje przegląd modeli), więc w tych sesjach podnieś wysiłek, zanim zaczniesz rozważać inny model. Dodaj -c model_reasoning_effort="high" do dowolnego polecenia z tej strony; klucz istnieje w Codex CLI 0.157.1.

Projekt jest tak dobry jak jego obraz obecnego systemu. Pierwsze przejście uruchom bez interfejsu i tylko do odczytu, żeby Codex mógł wszystko przejrzeć i niczego nie zmienić. Uruchom to w terminalu z katalogu głównego repozytorium:

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

-s read-only blokuje zapisy w katalogu roboczym, a -o zapisuje ostatnią wiadomość Codeksa do pliku, który tworzy samo CLI. Ten prompt umieść w prompts/payments-map.md:

Model językowy słabo liczy importy i gubi zależności wiązane w czasie działania, więc część mapy dotyczącą zależności traktuj jako szkic, a statyczny graf policz narzędziem. Dla bazy kodu w TypeScripcie (sprawdzone 2026-09-26 z dependency-cruiser 18.4.0):

Okno terminala
npx dependency-cruiser@18.4.0 src --no-config --output-type metrics > docs/architecture/metrics.txt
npx dependency-cruiser@18.4.0 src --no-config --output-type mermaid -f docs/architecture/deps.mmd

Plik z metrykami podaje sprzężenie każdego modułu (dośrodkowe, odśrodkowe i niestabilność), a plik Mermaid zawiera każdą statyczną krawędź importu. Potem w nowej sesji poproś Codeksa, żeby przeczytał docs/architecture/deps.mmd i wypisał każdą krawędź, którą narzędzie znalazło, a mapa pominęła, oraz każdą krawędź z mapy, której narzędzie nie pokazuje. Każda rozbieżność to albo powiązanie w czasie działania, o którym teraz wiesz, albo błąd, który usuwasz. Dokładniejsze wdrożenie w nieznane repozytorium opisuje strona zrozumienie bazy kodu z Codeksem.

Uruchom sesję interaktywną poleceniem codex -c model_reasoning_effort="high" -c plan_mode_reasoning_effort="high", przełącz ją w tryb Plan komendą /plan i daj Codeksowi mapę. Codex CLI 0.157.1 ma osobny klucz plan_mode_reasoning_effort dla trybu Plan, więc ustaw oba, żeby wyższy wysiłek został po przełączeniu. W trybie Plan sesja tworzy plan, zanim powstanie jakikolwiek kod, i właśnie tam jest miejsce na dyskusję o projekcie.

Uszeregowana lista krytycznych założeń to wejście do następnego kroku. Wariant, którego nie da się sprawdzić, to wariant przyjmowany na wiarę, i dokument powinien to mówić wprost.

Sprawdź najbardziej ryzykowne założenia spike’ami w Codex cloud

Dział zatytułowany „Sprawdź najbardziej ryzykowne założenia spike’ami w Codex cloud”

Spike to kod napisany po to, żeby odpowiedzieć na jedno pytanie, a potem wyrzucony. Codex cloud uruchamia go w kontenerze przygotowanym dla twojego repozytorium, więc spike nie dotyka twojej maszyny ani gałęzi. ENV_ID to identyfikator środowiska w chmurze: uruchom codex cloud, żeby przejrzeć środowiska, a konfigurację środowiska z testową bazą danych i skryptem przygotowującym opisuje strona środowiska Codex cloud. W Codex CLI 0.157.1 codex cloud jest oznaczone jako eksperymentalne, więc jeśli któraś z poniższych flag zostanie odrzucona, sprawdź codex cloud exec --help.

Najpierw zacommituj docs/architecture/ i wypchnij gałąź. codex cloud exec działa na gałęzi w zdalnym repozytorium (--branch, domyślnie bieżąca gałąź), a nie na twoim katalogu roboczym, więc spike nie przeczyta pliku z wariantami, który istnieje tylko na twojej maszynie. Poniższe polecenia podają gałąź wprost jako design/payments.

--attempts 2 zamawia dwie niezależne próby (best-of-N), co tu się przydaje: jeśli dwie próby dają różne odpowiedzi na to samo pytanie, sprawa nie jest rozstrzygnięta.

codex cloud diff pokazuje tylko pliki zmienione przez zadanie, a nie jego końcową wiadomość. Dlatego oba prompty zapisują wnioski do pliku w docs/architecture/spikes/: werdykt i dowody pojawiają się wtedy w diffie każdej próby. Gdy zadania się zakończą, porównaj próby z terminala:

Okno terminala
codex cloud list --env ENV_ID
codex cloud diff TASK_ID --attempt 1
codex cloud diff TASK_ID --attempt 2

Werdykty i dowody z tych plików spike’ów przenieś do docs/architecture/payments-options.md. Nie uruchamiaj codex cloud apply na spike’u: jego zadaniem była odpowiedź, nie kod.

Zbuduj konkurencyjne projekty w równoległych worktree

Dział zatytułowany „Zbuduj konkurencyjne projekty w równoległych worktree”

Gdy zespół dzieli się między dwa projekty, na przykład synchroniczne wywołania REST i zdarzenia na czas przejściowy, zbuduj oba i zmierz je na tych samych scenariuszach. Scenariusze napisz, zanim powstanie którykolwiek prototyp; inaczej każdy prototyp po cichu wybierze scenariusze, w których wygrywa.

  1. Zacommituj wspólny plik ze scenariuszami, docs/architecture/payments-scenarios.md, z 10 ponumerowanymi przypadkami: zwykłe obciążenie karty, zwrot, zduplikowany webhook, serwis płatności niedostępny przez 30 sekund, wolna baza danych i tak dalej. Każdy przypadek podaje oczekiwany wynik.

  2. Uruchom po jednej sesji Codeksa na projekt, każdą we własnym zarządzanym worktree, w dwóch terminalach:

    Okno terminala
    codex --worktree "$(cat prompts/prototype-rest.md)"
    codex --worktree "$(cat prompts/prototype-events.md)"
  3. Gdy obie się zakończą, uruchom ten sam skrypt scenariuszy w każdym worktree i wypełnij jedną tabelę porównawczą.

  4. Przenieś oba pliki z wynikami na gałąź projektu, bo każdy prototyp zapisał swój plik we własnej gałęzi worktree. W głównym katalogu roboczym, na gałęzi design/payments, uruchom git checkout <gałąź-worktree-rest> -- docs/architecture/results-rest.md oraz git checkout <gałąź-worktree-events> -- docs/architecture/results-events.md i zacommituj oba pliki. To działa, bo każdy prompt prototypu kończy się commitem pliku z wynikami na gałęzi swojego worktree. Prompt z następnego kroku czyta oba.

Oba pliki z promptami różnią się tylko pierwszą linią. Poniżej wersja REST; w drugim pliku zastąp pierwszą linię opisem projektu opartego na zdarzeniach:

Porównanie staje się tabelą wyników scenariuszy, a nie sporem przy tablicy. Przygotowanie i sprzątanie worktree opisuje strona izolowane zadania Codeksa w worktree Gita, a strona przepływy wieloagentowe przyda się, gdy wariantów jest więcej niż dwa.

Zapisz decyzję tak, żeby kolejne sesje agentów jej przestrzegały

Dział zatytułowany „Zapisz decyzję tak, żeby kolejne sesje agentów jej przestrzegały”

Decyzja, która istnieje tylko w dokumencie, rozmywa się przy pierwszym skrócie, na jaki pójdzie agent. Zapisz ją na trzy sposoby: jako ADR dla ludzi, jako regułę w AGENTS.md, którą Codex czyta na początku każdej sesji, i jako test w CI, który zawodzi, gdy reguła zostanie złamana.

Obecne naruszenia stają się listą prac migracji, a reguła nie pozwala dodać nowych, dopóki migracja trwa, ale tylko wtedy, gdy CI ją uruchamia i może na niej zawieść. Prompt ustawia w regule severity na "error", więc dependency-cruiser kończy się niezerowym kodem przy naruszeniu; sprawdź, czy tak się stało, i dodaj ten krok do CI:

Okno terminala
npx dependency-cruiser@18.4.0 src --config .dependency-cruiser.cjs

Pełne zadanie CI pokazuje przewodnik po funkcjach dopasowania. Znajdziesz tam też odpowiedniki tej reguły dla Pythona i Javy, a o tym, jak utrzymać AGENTS.md na tyle krótki, żeby był użyteczny, mówi strona optymalizacja AGENTS.md.

Zanim gałąź z projektem zostanie scalona, zamów niezależny przegląd. codex review --base main daje ogólny przegląd gałęzi, ale nie przyjmie własnej listy kontrolnej: w Codex CLI 0.157.1 codex review przyjmuje własne instrukcje tylko wtedy, gdy nie podasz --base, --commit ani --uncommitted, a --base main "…" kończy się błędem argumentów. Przegląd pod kątem architektury uruchom więc jako codex exec tylko do odczytu na diffie gałęzi:

Na GitHubie wspomnij @codex review w pull requeście; Codex stosuje też reguły przeglądu zapisane w AGENTS.md (dokumentacja integracji z GitHubem od OpenAI, sprawdzona 2026-08-28). Konfigurację opisuje strona code review z Codeksem.

Przez miesiące trwania migracji uruchamiaj co tydzień kontrolę dryfu jako automatyzację Codeksa w aplikacji desktopowej albo jako zaplanowane zadanie codex exec w CI; oba warianty pokazuje strona zaplanowane automatyzacje Codeksa. Przekaż jej ADR i poproś o raport nowych importów przez granicę, nowych endpointów dodanych do monolitu zamiast do serwisu oraz sekcji ADR, które nie zgadzają się już z kodem. Blokowanie zostaw regule dependency-cruiser; automatyzacja zgłasza to, czego reguła statyczna nie widzi.

Skąd wiesz, że projekt jest dobry, bez czytania każdej linii?

Dział zatytułowany „Skąd wiesz, że projekt jest dobry, bez czytania każdej linii?”

Nikt nie powinien czytać każdej linii dwóch prototypów i trzech spike’ów. Każdy rodzaj tezy sprawdzaj dowodem, który go potwierdza:

TezaDowódKto zatwierdza
„Mapa jest kompletna”Każda krawędź zacytowana jako path:line; zero niewyjaśnionych różnic względem wyniku dependency-cruiser; wyrywkowo sprawdzasz trzy cytowaniaProgramista, który odpowiada za moduł
„Granica się utrzyma”Obie próby w chmurze dają ten sam werdykt, a oznaczone odczyty mają uzgodnioną poprawkęTech lead
„Migracja jest bezpieczna”Wynik porównania wierszy ze spike’a, odtworzony przypadek awarii i pisemny rollback dla każdego etapuTech lead i właściciel bazy danych
„Projekt A jest lepszy od B”Oba prototypy przeszły te same 10 zacommitowanych scenariuszy; tabele wyników pochodzą ze scripts/run-scenarios.sh, a nie z podsumowania CodeksaZespół, na jednym spotkaniu przeglądowym
„Decyzja się utrzyma”Reguła dependency-cruiser działa w CI z severity: "error" i powoduje niepowodzenie buildu przy celowym naruszeniu testowymTech lead

Ostatni wiersz zespoły najczęściej pomijają. Dodaj na gałęzi jednorazowy import przez granicę i upewnij się, że CI robi się czerwone, zanim zaufasz regule.

Mapa pomija ukryte sprzężenia. Codex znajduje importy i wywołania, ale może przeoczyć sprzężenia przez wspólne wartości konfiguracji, granice transakcji albo middleware wstrzykujące zależności w czasie działania. Wyjście: porównaj sekcję „Not visible statically” z wynikiem narzędzia, a potem dodaj logowanie w trzech punktach integracji wskazanych przez Codeksa i uruchom testy płatności, żeby zobaczyć, co naprawdę przechodzi przez granicę.

Kod ze spike’a trafia na produkcję. Spike’i z założenia pomijają obsługę błędów i bezpieczeństwo. Wyjście: nigdy nie uruchamiaj codex cloud apply na spike’u; każdy prompt spike’a zaczynaj od „Spike, not production code”, a wybrany projekt zbuduj od nowa na podstawie ADR w świeżym zadaniu.

Dwie próby się nie zgadzają. Przy --attempts 2 różne werdykty oznaczają, że odpowiedź zależy od czegoś, czego prompt nie ustalił. Wyjście: porównaj próby przez codex cloud diff TASK_ID --attempt N, znajdź założenie, w którym się różnią, dopisz je do promptu i uruchom zadanie ponownie.

Prototypów nie da się porównać. Jeden prototyp przedefiniował scenariusz albo mierzył opóźnienie inaczej. Wyjście: plik ze scenariuszami jest zacommitowany, zanim ruszą prototypy, a prompt zabrania jego edycji; scripts/run-scenarios.sh uruchom sam w obu worktree, zamiast ufać któremukolwiek podsumowaniu.

Sesja gubi wątek w dużym monolicie. Domyślne okno kontekstu Codeksa (zob. przegląd modeli) ma skończoną pojemność, a pełna mapa dużego monolitu razem z dyskusją o wariantach potrafi je zapełnić. Wyjście: każdy krok prowadź w osobnej sesji i przekazuj stan przez pliki w docs/architecture/, a nie przez rozmowę.

Dokumentacja architektury się dezaktualizuje. Migracja, która trwa trzy miesiące, w drugim miesiącu odbiega już od planu. Wyjście: reguła w CI blokuje nowe naruszenia, cotygodniowy raport dryfu wypisuje resztę, a jedna wskazana osoba odpowiada za aktualizację ADR, gdy raport znajdzie rozbieżność.