Zaawansowane porady Codex
Zaawansowane techniki Codex obejmują orkiestrację wielopowierzchniową CLI, App i Cloud, konfigurację niestandardowych dostawców modeli dla proxy, modeli lokalnych i Azure, integrację programową przez SDK i strumień zdarzeń JSON oraz obserwowalność OpenTelemetry i dostrajanie sandboxa dla środowisk wymagających wysokiego bezpieczeństwa. Razem zmieniają Codex z asystenta kodowania w komponent infrastruktury deweloperskiej.
Opanowałeś podstawy każdej powierzchni Codex. Wiesz, jak działają worktree, twoja konfiguracja jest dostrojona, a AGENTS.md ma odpowiednią strukturę. Teraz chcesz pójść dalej: uruchomić Codex jako serwer MCP konsumowany przez inne agenty, skierować go na lokalne modele przez Ollama, przekierować ustrukturyzowane wyjście do swojego systemu budowania i śledzić każde wywołanie API przez OpenTelemetry. To techniki, które zmieniają Codex z asystenta kodowania w komponent infrastruktury deweloperskiej.
Co dają zaawansowane techniki Codex
Dział zatytułowany „Co dają zaawansowane techniki Codex”- Wzorce orkiestracji wielopowierzchniowej łączące App, CLI i Cloud
- Konfiguracje niestandardowych dostawców modeli dla proxy, modeli lokalnych i Azure
- Programowa integracja przez
@openai/codex-sdki strumień zdarzeńcodex exec --json - Konfiguracja obserwowalności z OpenTelemetry do śledzenia użycia Codex
- Zaawansowane dostrajanie sandboxa dla środowisk wymagających wysokiego poziomu bezpieczeństwa
Orkiestracja wielopowierzchniowa
Dział zatytułowany „Orkiestracja wielopowierzchniowa”Wzorzec przekazywania między powierzchniami
Dział zatytułowany „Wzorzec przekazywania między powierzchniami”Każda powierzchnia ma swój optymalny zastosowanie. Łącz je dla maksymalnego efektu:
-
Zacznij w CLI dla szybkiej diagnozy:
Okno terminala codex "What's causing the TypeScript errors in src/services/?" -
Przejdź do App dla równoległej implementacji:
- Otwórz wątek Worktree dla poprawki
- Otwórz kolejny wątek Worktree dla testów
- Przeglądaj diffy wizualnie w panelu diff aplikacji
-
Prześlij do Cloud w celu weryfikacji:
Okno terminala codex cloud exec --env staging --attempts 2 \"Run the full integration test suite against these changes" -
Wróć do CLI na finalny commit:
Okno terminala codex exec --sandbox workspace-write "Create a PR with a summary of all changes"
Kontekst między powierzchniami
Dział zatytułowany „Kontekst między powierzchniami”App i CLI współdzielą konfigurację, AGENTS.md i umiejętności — ale nie historię wątków. Aby przekazać kontekst między powierzchniami:
- Użyj zintegrowanego terminala w App do uruchamiania poleceń CLI
- Kopiuj istotne podsumowania z wątków App do promptów CLI
- Użyj
codex resume, aby kontynuować sesję z App w CLI
Gdy rozszerzenie IDE i App są zsynchronizowane, współdzielą widoczność wątków i automatyczny kontekst. To najpłynniejszy przepływ międzypowierzchniowy.
Niestandardowi dostawcy modeli
Dział zatytułowany „Niestandardowi dostawcy modeli”Kierowanie przez proxy
Dział zatytułowany „Kierowanie przez proxy”model = "gpt-5.6-sol"model_provider = "proxy"
[model_providers.proxy]name = "OpenAI via internal proxy"base_url = "http://proxy.internal.company.com"env_key = "OPENAI_API_KEY"Użycie Ollama dla modeli lokalnych
Dział zatytułowany „Użycie Ollama dla modeli lokalnych”Ollama i LM Studio są zarezerwowanymi, wbudowanymi dostawcami lokalnymi. Wybierz domyślnego kluczem najwyższego poziomu oss_provider; nie definiuj ich ponownie pod [model_providers]:
oss_provider = "ollama" # lub "lmstudio"Następnie uruchom codex --oss "Explain this function" albo wybierz jednorazowo codex --oss --local-provider lmstudio. Interaktywny Codex zapyta o dostawcę, gdy żadna opcja nie jest ustawiona; codex exec --oss zakończy się błędem zamiast zgadywać.
Azure OpenAI
Dział zatytułowany „Azure OpenAI”[model_providers.azure]name = "Azure"base_url = "https://YOUR_PROJECT.openai.azure.com/openai"env_key = "AZURE_OPENAI_API_KEY"query_params = { api-version = "2025-04-01-preview" }wire_api = "responses"Dostrajanie specyficzne dla dostawcy
Dział zatytułowany „Dostrajanie specyficzne dla dostawcy”[model_providers.openai]request_max_retries = 4stream_max_retries = 10stream_idle_timeout_ms = 300000Zwiększ stream_idle_timeout_ms, jeśli widzisz błędy timeout przy długotrwałych zadaniach. Zwiększ liczbę ponownych prób przy niestabilnych warunkach sieciowych.
Szybkie nadpisanie endpointu
Dział zatytułowany „Szybkie nadpisanie endpointu”Jeśli potrzebujesz jedynie skierować wbudowanego dostawcę OpenAI na inny endpoint (np. ze względu na rezydencję danych):
# zastąp swoim rzeczywistym regionalnym endpointem / endpointem proxyexport OPENAI_BASE_URL="https://your-region.api.openai.com/v1"codexNie trzeba zmieniać konfiguracji. OPENAI_BASE_URL nadpisuje endpoint wbudowanego dostawcy OpenAI dla bieżącej powłoki.
Rozumowanie modelu i kontrola wyjścia
Dział zatytułowany „Rozumowanie modelu i kontrola wyjścia”Dostosuj wysiłek rozumowania
Dział zatytułowany „Dostosuj wysiłek rozumowania”model_reasoning_effort = "high" # Dla złożonych decyzji architektonicznych# lubmodel_reasoning_effort = "low" # Dla prostych, szybkich zadańBieżąca dokumentacja config.toml podaje minimal, low, medium, high i zależne od modelu xhigh. GPT-5.6 udostępnia też max w ustawieniach produktu Codex wszystkim użytkownikom z dostępem do modelu oraz wieloagentowe ultra od planu Plus wzwyż. Nie wpisuj max ani ultra do model_reasoning_effort, dopóki schemat twojej zainstalowanej wersji Codex ich nie akceptuje.
Kontroluj gadatliwość
Dział zatytułowany „Kontroluj gadatliwość”model_verbosity = "low" # Krótsze odpowiedzi, mniej wyjaśnieńmodel_reasoning_summary = "concise" # Zwięzłe podsumowania rozumowaniaDla logów CI całkowicie ukryj rozumowanie:
hide_agent_reasoning = trueDostrajanie okna kontekstowego
Dział zatytułowany „Dostrajanie okna kontekstowego”Pozostaw te nadpisania nieustawione dla wbudowanych modeli OpenAI, chyba że masz zmierzony powód, aby skrócić okno robocze. Codex zna już ich metadane i zarządza kompaktowaniem. Jawnych wartości używaj głównie dla niestandardowego providera i dopasuj je do opublikowanego przez niego limitu:
# Tylko przykład: model niestandardowego providera z oknem kontekstowym 128K.model_context_window = 128000model_auto_compact_token_limit = 100000 # Kompaktuj wcześniej, aby zostawić zapasUstaw model_auto_compact_token_limit niżej niż skonfigurowane okno kontekstowe, aby wyzwolić kompaktowanie zanim okno wypełni się całkowicie. Dla porównania karty modeli OpenAI API podają obecnie 1 050 000 tokenów kontekstu i maksymalnie 128 000 tokenów wyjściowych dla GPT-5.6 Sol, Terra i Luna. Te limity API są czymś innym niż kontekst roboczy raportowany dla konkretnego wątku przez daną powierzchnię Codex.
Codex jako serwer MCP
Dział zatytułowany „Codex jako serwer MCP”Uruchom sam Codex jako serwer MCP, aby inne agenty mogły go konsumować:
codex mcp-serverTo uruchamia Codex przez stdio, umożliwiając innemu narzędziu lub agentowi połączenie się i używanie Codex jako narzędzia. Przydatne do budowania systemów wieloagentowych, gdzie koordynator deleguje zadania do Codex.
Integracja programowa (SDK i strumień JSON)
Dział zatytułowany „Integracja programowa (SDK i strumień JSON)”Gdy chcesz mieć Codex wewnątrz własnego oprzyrządowania — niestandardowego CLI, bramki CI, chatbota — masz dwie powierzchnie integracji.
SDK dla TypeScript
Dział zatytułowany „SDK dla TypeScript”Zainstaluj @openai/codex-sdk i steruj wątkami z poziomu kodu. SDK uruchamia tego samego agenta co CLI, więc twój AGENTS.md, umiejętności i konfiguracja obowiązują:
import { Codex } from '@openai/codex-sdk';
const codex = new Codex();const thread = codex.startThread();
const result = await thread.run('Diagnose and fix the failing CI tests, then summarize what changed.');console.log(result);
// Kontynuuj ten sam wątek lub wznów wcześniejszy po ID za pomocą codex.resumeThread(id)await thread.run('Now add a regression test for the bug you fixed.');Przekierowanie strumienia zdarzeń JSON
Dział zatytułowany „Przekierowanie strumienia zdarzeń JSON”Dla automatyzacji niezależnej od języka dodaj --json do codex exec, aby otrzymać zdarzenia JSON rozdzielone znakami nowej linii (jedno na zmianę stanu). Przekieruj je do jq lub dowolnego parsera, aby wpiąć Codex w krok budowania:
Każda linia niesie najwyższego poziomu .type (thread.started, turn.started, turn.completed, turn.failed, item.started, item.completed, error); rodzaj pracy, którą reprezentuje element (agent_message, command_execution, file_change, mcp_tool_call, …) znajduje się w .item.type. Aby obserwować zakończone uruchomienia poleceń i wiadomości modelu:
codex exec --json --sandbox workspace-write \ "Bump every dependency to its latest minor and run the test suite" \ | jq -c 'select(.type == "item.completed") | select(.item.type == "command_execution" or .item.type == "agent_message") | .item'Połącz --json z --output-last-message out.txt w CI, aby w jednym uruchomieniu uchwycić zarówno czytelny dla maszyny strumień zdarzeń, jak i końcowe podsumowanie w języku naturalnym.
Dostrajanie sandboxa
Dział zatytułowany „Dostrajanie sandboxa”Zapis w workspace z siecią
Dział zatytułowany „Zapis w workspace z siecią”sandbox_mode = "workspace-write"
[sandbox_workspace_write]network_access = truewritable_roots = ["/Users/me/.pyenv/shims", "/tmp"]exclude_tmpdir_env_var = falseexclude_slash_tmp = falsePrzyznanie zapisu do dodatkowych katalogów
Dział zatytułowany „Przyznanie zapisu do dodatkowych katalogów”Użyj --add-dir zamiast rozszerzania sandboxa:
codex --cd apps/frontend --add-dir ../backend --add-dir ../shared \ "Coordinate API changes between frontend and backend"To przyznaje ograniczony dostęp do zapisu bez otwierania danger-full-access.
Testowanie zachowania sandboxa
Dział zatytułowany „Testowanie zachowania sandboxa”Użyj polecenia codex sandbox, aby przetestować, co dane polecenie może zrobić przy twoich obecnych ustawieniach:
# Użyj `macos` na macOS, `linux` na Linux (aliasy: seatbelt / landlock)codex sandbox macos -- ls /etccodex sandbox macos -- cat /etc/passwdcodex sandbox macos -- npm testPodkomenda platformy jest wymagana; wszystko po -- to polecenie do uruchomienia. To uruchamia polecenie pod tym samym sandboxem, którego Codex używa wewnętrznie, więc możesz zweryfikować polityki zanim agent na nie natrafi.
Obserwowalność z OpenTelemetry
Dział zatytułowany „Obserwowalność z OpenTelemetry”Włącz eksport OTel
Dział zatytułowany „Włącz eksport OTel”[otel]environment = "production"log_user_prompt = false # Nie eksportuj surowych promptów
[otel.exporter.otlp-http]endpoint = "https://otel-collector.internal.company.com/v1/logs"protocol = "binary"headers = { "x-otlp-api-key" = "${OTLP_TOKEN}" }Co jest eksportowane
Dział zatytułowany „Co jest eksportowane”Codex emituje ustrukturyzowane zdarzenia logów dla:
codex.conversation_starts— Model, ustawienia, polityka sandboxacodex.api_request— Status, czas trwania, szczegóły błęducodex.tool_decision— Zatwierdzono/odrzucono, przez konfigurację vs użytkownikacodex.tool_result— Czas trwania, sukces, fragment wyjścia
Wyłącz anonimowe metryki
Dział zatytułowany „Wyłącz anonimowe metryki”Codex domyślnie wysyła anonimowe dane o użyciu. Wyłącz to:
[analytics]enabled = falseTo jest niezależne od eksportu OTel — analityka trafia do OpenAI, OTel trafia do twojej infrastruktury.
Zaawansowane wzorce powiadomień
Dział zatytułowany „Zaawansowane wzorce powiadomień”Niestandardowy skrypt powiadomień
Dział zatytułowany „Niestandardowy skrypt powiadomień”notify = ["python3", "/path/to/notify.py"]Skrypt otrzymuje argument JSON ze szczegółami zdarzenia:
#!/usr/bin/env python3import json, subprocess, sys
def main(): notification = json.loads(sys.argv[1]) if notification.get("type") != "agent-turn-complete": return 0 title = f"Codex: {notification.get('last-assistant-message', 'Done!')}" subprocess.run([ "terminal-notifier", "-title", title, "-message", " ".join(notification.get("input-messages", [])), "-group", "codex-" + notification.get("thread-id", ""), ]) return 0
if __name__ == "__main__": sys.exit(main())Filtrowanie powiadomień TUI
Dział zatytułowany „Filtrowanie powiadomień TUI”[tui]notifications = ["agent-turn-complete", "approval-requested"]notification_method = "osc9" # Powiadomienia desktopowe przez sekwencję ucieczki OSC 9Flagi funkcji warte poznania
Dział zatytułowany „Flagi funkcji warte poznania”| Flaga | Status | Co robi |
|---|---|---|
shell_snapshot | Stabilna, domyślnie włączona | Tworzy migawki środowiska powłoki dla szybszych powtarzanych poleceń |
unified_exec | Stabilna, domyślnie włączona poza Windows | Używa PTY-backed exec dla lepszej obsługi terminala |
goals | Stabilna, domyślnie włączona | Utrwala cele i obsługuje automatyczną kontynuację |
Sprawdź lub świadomie nadpisz je przez:
codex features listcodex features disable shell_snapshotEdytor promptów dla długich instrukcji
Dział zatytułowany „Edytor promptów dla długich instrukcji”Dla złożonych, wieloakapitowych promptów naciśnij Ctrl + G w TUI, aby otworzyć skonfigurowany edytor. Ustaw edytor:
export VISUAL=code # Lub vim, nvim, nano, itp.Napisz pełny prompt w edytorze, zapisz i zamknij, a Codex go wyśle. To znacznie wygodniejsze niż wpisywanie długich instrukcji w kompozytorze.
Gdzie zawodzą zaawansowane konfiguracje Codex
Dział zatytułowany „Gdzie zawodzą zaawansowane konfiguracje Codex”- Uwierzytelnianie niestandardowego dostawcy nie działa: Sprawdź, czy zmienna środowiskowa
env_keyjest ustawiona i wyeksportowana. Użyjcodex login status, aby sprawdzić autoryzację. - Zdarzenia OTel się nie pojawiają: Sprawdź, czy
exporterjest ustawiony naotlp-httplubotlp-grpc, a nienone. Zweryfikuj, czy endpoint jest osiągalny z twojej maszyny. - Sandbox zbyt restrykcyjny dla twojego przepływu pracy: Użyj
codex sandbox, aby przetestować konkretne polecenia. Dodajwritable_rootsdla katalogów, których agent potrzebuje. - Tryb serwera MCP się rozłącza: Codex kończy pracę, gdy klient zamknie połączenie. Upewnij się, że twój klient utrzymuje pipe stdio.
- Flagi funkcji znikają po restarcie: Flagi funkcji są zapisywane w
config.toml, ale flagi związane z profilem działają tylko gdy dany profil jest aktywny.
Dokąd dalej z zaawansowanymi technikami Codex
Dział zatytułowany „Dokąd dalej z zaawansowanymi technikami Codex”- Współpraca zespołowa — Udostępnij te zaawansowane konfiguracje swojemu zespołowi
- Instalacja i konfiguracja — Podstawowa konfiguracja wspierająca te techniki
- Optymalizacja AGENTS.md — Nałóż instrukcje na zaawansowaną konfigurację