Przejdź do głównej zawartości

Komendy CLI Codex, komendy slash i skróty

Codex CLI to coś więcej niż codex "prompt": zapisuje każdą sesję, więc codex resume i codex fork kontynuują ją albo rozgałęziają z pełnym zapisem rozmowy, udostępnia dziesiątki komend slash w interfejsie terminalowym (TUI) oraz uruchamia codex review i codex exec ze skryptu. Każdą komendę i flagę poniżej sprawdzono na Codex CLI 0.157.1.

Ta strona jest dla programistów, którzy już pracują z Codexem w terminalu i wciąż płacą ten sam podatek: tłumaczą kontekst od nowa w świeżej sesji, tracą dobry wątek, gdy eksperyment pójdzie źle, i czytają cały diff, bo nic innego nie mówi im, czy zmiana jest poprawna. Większość tego podatku znika, gdy zaczniesz używać komend sesji, kilku komend slash i bramki przeglądu. Jeśli nie masz jeszcze zainstalowanego Codexa, zacznij od pierwszego zadania w Codexie.

  • Rutynę pracy z sesjami: nazwane sesje wznawiane po nazwie, forki do eksperymentów i kolejkę na kolejne polecenia.
  • Kilkanaście komend slash, które naprawdę przydają się na co dzień, i wiedzę, kiedy każda z nich się opłaca.
  • Klawisze TUI do korygowania trwającej tury, kolejkowania następnej i pisania długich promptów w edytorze.
  • Cztery prompty do skopiowania i bramkę z przeglądem i testami, która sprawdza wynik, więc nie musisz czytać każdej linii.
  • Pułapki wersji 0.157.1, które po cichu zmieniają zachowanie, wraz z rozwiązaniem każdej z nich.

Jak kontynuować sesję Codexa zamiast tłumaczyć wszystko od nowa?

Dział zatytułowany „Jak kontynuować sesję Codexa zamiast tłumaczyć wszystko od nowa?”

Codex zapisuje na dysku każdą sesję interaktywną. codex resume otwiera ją ponownie z całym zapisem rozmowy, więc agent pamięta decyzje, ograniczenia i pliki z poprzedniego razu.

Okno terminala
# Terminal: otwórz listę wyboru (sesje uruchomione w tym katalogu)
codex resume
# Kontynuuj najnowszą sesję
codex resume --last
# Szukaj sesji ze wszystkich katalogów, nie tylko z bieżącego
codex resume --all
# Kontynuuj i od razu wyślij kolejne polecenie
codex resume --last "The plan is approved. Implement step 1 and run the tests."

Lista wyboru domyślnie filtruje sesje po katalogu roboczym. Jeśli brakuje sesji, o której wiesz, że istnieje, uruchomiłeś ją gdzie indziej: dodaj --all. Sesje uruchomione przez codex exec też są ukryte w liście i w --last, dopóki nie dodasz --include-non-interactive.

UUID po tygodniu nic ci nie powie. W TUI uruchom /rename i nadaj wątkowi nazwę, na przykład payments-retry. Od tej chwili codex resume, codex exec resume, codex exec fork, codex archive i codex queue przyjmują nazwę wszędzie tam, gdzie przyjmują identyfikator sesji (codex fork przyjmuje UUID albo --last):

Okno terminala
codex resume payments-retry "CI is green again. Continue with the refund path."

Dwie kolejne komendy utrzymują listę w porządku: codex archive <nazwa> ukrywa zakończoną sesję, a codex unarchive <nazwa> ją przywraca, natomiast codex delete <nazwa> usuwa ją na stałe. W TUI to samo dla bieżącej sesji robią /archive i /delete.

codex queue dodaje wiadomość do kolejki istniejącej sesji, bez otwierania tej sesji w twoim terminalu. --thread przyjmuje UUID sesji albo jej dokładną nazwę:

Okno terminala
codex queue --thread payments-retry --message "When the tests pass, update CHANGELOG.md."

Jak sprawdzić alternatywę, nie tracąc oryginalnego wątku?

Dział zatytułowany „Jak sprawdzić alternatywę, nie tracąc oryginalnego wątku?”

codex fork kopiuje zapis rozmowy do nowego wątku i nie rusza oryginału. W wersji 0.157.1 przyjmuje prompt, więc rozgałęziasz i wydajesz polecenie jedną komendą. W TUI /fork rozgałęzia bieżącą rozmowę.

--worktree uruchamia każdy fork w nowym, zarządzanym worktree Gita; bez tej flagi oba forki edytują te same pliki. Pracę z worktree opisuje strona worktree w Codexie. Porównuj forki po wynikach testów i /diff, a nie po tym, jak pewnie brzmi ich końcowa wiadomość.

Wpisz / w polu wiadomości, żeby zobaczyć pełną listę dla twojej wersji; komendy /help nie ma (sprawdzone w 0.157.1, slash_command.rs). Poniżej te, które zmieniają przebieg sesji. Opisy są parafrazą pliku slash_command.rs w wersji 0.157.1.

KomendaCo robiKiedy po nią sięgnąć
/reviewPrzegląda bieżące zmiany i zgłasza problemyPrzed każdym commitem; przyjmuje własne instrukcje w tej samej linii
/diffPokazuje diff Gita, łącznie z nieśledzonymi plikamiZanim zaakceptujesz pracę z danej tury
/statusPokazuje konfigurację sesji i zużycie tokenówGdy agent zachowuje się, jakby miał inny model albo uprawnienia
/modelWybiera model i poziom rozumowaniaTrudny błąd wymaga większego wysiłku, zmiana nazwy mniejszego
/permissionsOkreśla, co Codex może robićZacząłeś w trybie tylko do odczytu, a teraz chcesz, żeby edytował pliki
/compactStreszcza rozmowę, żeby nie przekroczyć limitu kontekstuDługie sesje, zanim agent zacznie zapominać ograniczenia
/newZaczyna nową rozmowę w tym samym TUITemat się zmienił, a stary kontekst tylko by mylił
/fork, /resume, /renameRozgałęzia, wznawia albo nazywa wątkiZobacz sekcje powyżej
/planPrzełącza w tryb planowania (Plan mode)Uzgodnij podejście przed jakąkolwiek zmianą plików
/goalUstawia lub pokazuje cel długiego zadaniaWielogodzinne zadania, które nie mogą zboczyć z kursu
/initTworzy plik AGENTS.mdPierwsza sesja w repozytorium
/side, /btwOtwiera rozmowę poboczną w tymczasowym forkuSzybkie pytanie, które nie powinno zaśmiecać głównego wątku
/mcp, /skills, /pluginsWyświetla narzędzia MCP, skille i pluginySprawdzenie, czy integracja faktycznie się załadowała
/approveZatwierdza jedną ponowną próbę po odmowie auto-reviewAuto-review zablokował komendę, którą już sprawdziłeś
/copy, /exportKopiuje ostatnią odpowiedź albo eksportuje rozmowę do MarkdownuWklejenie planu do zgłoszenia albo PR

Większość komend, w tym /compact, /new, /init, /review i /plan, jest niedostępna, gdy tura trwa. Najpierw przerwij turę klawiszem Esc. /model, /permissions, /diff i /status działają w trakcie tury (sprawdzone w 0.157.1, slash_command.rs).

/review otwiera menu celów przeglądu. Te same cele są dostępne jako flagi codex review, które uruchamia przegląd bez TUI:

CelW TUIZ powłoki
Praca względem gałęzi bazowej/review → gałąź bazowacodex review --base main
Zmiany w indeksie (staged), poza indeksem i nieśledzone pliki/review → niezatwierdzone zmianycodex review --uncommitted
Jeden commit/review → commitcodex review --commit <SHA>
Własne instrukcje/review Focus on…codex review "Focus on…"

W 0.157.1 ostatniego wiersza nie połączysz z pozostałymi w powłoce: codex review odrzuca własny prompt razem z --uncommitted, --base lub --commit („the argument ‘—uncommitted’ cannot be used with ‘[PROMPT]’”). Podaj albo flagę celu, albo własne instrukcje, nie oba naraz.

Jeśli do przeglądów chcesz używać innego modelu niż do pisania kodu, ustaw review_model w ~/.codex/config.toml:

~/.codex/config.toml
review_model = "gpt-6-sol"

Który model pasuje do jakiego zadania, razem z cenami, znajdziesz w przeglądzie modeli.

Które klawisze TUI oszczędzają czas przy każdej turze?

Dział zatytułowany „Które klawisze TUI oszczędzają czas przy każdej turze?”

Naciśnij ? w pustym polu wiadomości, żeby zobaczyć skróty dla twojej wersji. Poniżej domyślne ustawienia z 0.157.1; możesz je zmienić komendą /keymap.

KlawiszCo robi
@Otwiera wyszukiwanie plików z dopasowaniem przybliżonym (fuzzy); wybrana ścieżka trafia do wiadomości
! na początku liniiUruchamia lokalną komendę powłoki; jej wynik trafia do rozmowy
Enter, gdy agent pracujeWysyła wiadomość do trwającej tury, żeby ją skorygować
Tab, gdy agent pracujeUstawia wiadomość w kolejce do wysłania po bieżącej turze
Esc, gdy agent pracujePrzerywa turę
Esc dwa razy w spoczynkuEdytuje poprzednią wiadomość
Ctrl+GOtwiera $VISUAL albo $EDITOR do napisania długiego promptu
Ctrl+RPrzeszukuje historię promptów
Ctrl+TOtwiera pełny zapis rozmowy
Alt+, / Alt+.Obniża lub podnosi poziom rozumowania

Różnicę między Enter a Tab warto mieć we krwi. Enter koryguje agenta od razu („stop, ta tabela jest generowana; zmień migrację”). Tab ustawia w kolejce następne zadanie, nie przeszkadzając w bieżącym („potem dopisz wpis do changeloga”).

Prefiks ! to najszybszy sposób, żeby dać agentowi dowody zamiast twojego streszczenia:

!npm test -- payments 2>&1 | tail -40

Dołącz obrazy do pierwszego promptu flagą -i albo --image. Wpisz prompt przed flagą albo użyj formy z =: w 0.157.1 -i pobiera kolejne argumenty aż do następnej flagi, więc prompt podany po niej zostanie odczytany jako kolejna ścieżka do obrazu.

Okno terminala
codex "The checkout button overlaps the total on a 375px viewport. Fix the CSS and tell me which rule caused it." -i broken-layout.png
codex --image=expected.png,actual.png "The first image is the design, the second is production. List every visual difference, then fix them."

W TUI możesz też wkleić obraz ze schowka do pola wiadomości. codex exec i codex resume przyjmują tę samą flagę -i z wieloma plikami; codex exec resume przyjmuje jeden plik -i <FILE> (sprawdzone w 0.157.1).

codex exec wykonuje jedno zadanie bez TUI i kończy działanie, więc nadaje się do skryptów i hooków Gita. Pełny opis, łącznie ze strumieniem zdarzeń JSONL i CI, znajdziesz na stronie Codex bez interakcji: codex exec. Trzy wywołania, których potrzebujesz najczęściej:

Okno terminala
# Edycja plików w sandboksie obszaru roboczego
codex exec --sandbox workspace-write "Fix the lint errors reported by npm run lint, then rerun it"
# Kontekst przez potok; stdin jest doklejane do promptu jako blok <stdin>
git diff main...HEAD | codex exec "Write a PR description for this diff: summary, risks, test plan"
# Zapis tylko końcowej wiadomości do pliku
codex exec -o release-notes.md "Draft release notes for the commits since the last tag"

Gdy wynik czyta skrypt, każ Codexowi zwrócić JSON zgodny ze schematem zamiast prozy:

endpoints.schema.json określa kształt, jaki musi mieć końcowa wiadomość:

{
"type": "object",
"additionalProperties": false,
"required": ["endpoints"],
"properties": {
"endpoints": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["method", "path", "description"],
"properties": {
"method": { "type": "string", "enum": ["GET", "POST", "PUT", "PATCH", "DELETE"] },
"path": { "type": "string" },
"description": { "type": "string" }
}
}
}
}
}

Skąd wiesz, że wynik jest poprawny, bez czytania każdej linii?

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

CLI daje ci elementy bramki; to ty decydujesz, co znaczy „gotowe”. Rutyna, która sprawdza się przy codziennych zmianach:

  1. Wpisz sprawdzenie do promptu. Każdy prompt na tej stronie kończy się komendą, którą agent musi uruchomić i zaraportować, na przykład komendą testów albo npm run lint. Deklaracja sukcesu bez tego wyniku nie jest sukcesem.

  2. Uruchom sprawdzenie sam. Uruchom te same komendy testów i sprawdzania typów w swoim terminalu albo przez ! w TUI. Zapis rozmowy agenta to raport, a nie dowód.

  3. Czytaj kształt diffa, nie każdą linię. /diff pokazuje, które pliki się zmieniły. Jednolinijkowa poprawka błędu, która dotyka ośmiu plików, najpierw wymaga pytania, a dopiero potem przeglądu.

  4. Uruchom niezależny przegląd. Zapisz prompt „tylko defekty” z tej strony jako review-prompt.txt i uruchom codex review - < review-prompt.txt albo wklej go po /review w TUI. Własny prompt zastępuje flagi celu, a przy własnym prompcie bez flagi celu to recenzent ustala zakres na podstawie twoich słów, więc nazwij go wprost („Review my uncommitted changes…”). Przegląd działa w świeżym kontekście, a nie w tym, który napisał zmianę. Popraw każde znalezisko P0 i P1 przed commitem; o P2 i P3 decydujesz sam.

  5. Waliduj wynik maszynowy mechanicznie. Przy uruchomieniach z --output-schema sprawdź plik przez jq w skrypcie (na przykład jq -e '.endpoints | length > 0' endpoints.json) i przerwij krok, gdy warunek nie jest spełniony.

Zatwierdzasz zachowanie: testy i wyniki przeglądu. Żeby ten sam przegląd działał na każdym pull requeście w całym zespole, skorzystaj z warstwowej konfiguracji opisanej na stronie przegląd kodu z Codexem.

Okno terminala
# Inny katalog jako katalog roboczy, bez cd
codex -C ~/src/shop-api "Explain how orders are persisted"
# Drugi katalog z prawem zapisu obok obszaru roboczego
codex -C apps/web --add-dir ../api "Rename the orderId field in the web client and the API together"
# exec poza repozytorium Gita
codex exec --skip-git-repo-check "Write a Python script that deduplicates rows in data.csv by email"

codex exec odmawia działania poza repozytorium Gita bez --skip-git-repo-check. To zabezpieczenie istnieje, bo Git jest twoim przyciskiem „cofnij”; używaj tej flagi tylko w katalogach do wyrzucenia.

Uzupełnianie komend w powłoce: wygeneruj skrypt dla swojej powłoki i załaduj go, na przykład eval "$(codex completion zsh)" w ~/.zshrc po compinit. Gdy coś w instalacji wygląda podejrzanie, codex doctor sprawdza instalację, konfigurację, uwierzytelnianie i stan środowiska uruchomieniowego.

Zadania w chmurze: codex cloud (w 0.157.1 oznaczone jako eksperymentalne) wysyła, wyświetla i stosuje zadania z terminala: codex cloud exec --env <ENV_ID> "…", codex cloud list, codex cloud diff <TASK_ID> i codex cloud apply <TASK_ID>. Konfigurację środowiska i best-of-N opisuje strona środowiska chmurowe Codex.

  • codex resume --last otwiera złą sesję. --last widzi tylko sesje interaktywne uruchomione w bieżącym katalogu. Dodaj --all dla innych katalogów i --include-non-interactive dla sesji uruchomionych przez codex exec. Lepiej: nazwij wątek przez /rename i wznawiaj go po nazwie.
  • Dwa forki nadpisują sobie nawzajem pliki. Fork kopiuje zapis rozmowy, a nie drzewo robocze. Uruchom każdy fork we własnym worktree z --worktree albo uruchamiaj je po kolei.
  • codex exec resume odrzuca --sandbox. W 0.157.1 codex exec resume nie ma flagi --sandbox (sprawdzone przez codex exec resume --help). Przekaż ustawienie jako konfigurację: codex exec resume --last -c sandbox_mode="workspace-write" "…".
  • codex exec -a never kończy się błędem „unexpected argument”. W 0.157.1 codex exec nie ma własnej flagi -a i jej nie potrzebuje: i tak działa z akceptacją never (on-request przy --approve-for-me), a prefiks codex -a never exec … tego nie zmienia. Usuń flagę, sprawdź linię approval: w nagłówku przebiegu i ogranicz przebieg sandboxem albo profilem uprawnień.
  • Skopiowana komenda używa --full-auto albo -a on-failure. Żadna nie działa w 0.157.1: --full-auto zniknęło z codex i codex exec, a -a przyjmuje tylko on-request i never. Użyj --sandbox workspace-write albo --approve-for-me, żeby kierować prośby o zgodę do automatycznego przeglądu.
  • Komenda slash nic nie robi. /compact, /new, /review i kilka innych jest niedostępnych w trakcie tury. Naciśnij Esc, potem uruchom komendę.
  • -i a.png "prompt" traktuje twój prompt jak plik. W 0.157.1 -i pobiera argumenty aż do następnej flagi, więc prompt podany po niej staje się ścieżką do pliku, także przy -i a.png,b.png (sprawdzone z codex exec 0.157.1). Wpisz prompt najpierw, użyj --image=a.png,b.png albo zakończ listę --.
  • Nigdy nie sięgaj po --dangerously-bypass-approvals-and-sandbox, żeby ominąć prośbę o zgodę. Wyłącza ona także sandbox; jest przeznaczona wyłącznie dla uruchomień, które już działają w zewnętrznym, jednorazowym sandboksie.

Ogólne wychodzenie z odmów sandboksa, przepełnienia kontekstu i edycji w złym kierunku opisuje strona odzyskiwanie po błędach w Codexie.