Zaawansowane porady Codex
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 wyniesiesz z tego artykułu
Dział zatytułowany „Co wyniesiesz z tego artykułu”- Wzorce orkiestracji wielopowierzchniowej łączące App, CLI i Cloud
- Konfiguracje niestandardowych dostawców modeli dla proxy, modeli lokalnych i Azure
- Wzorce integracji SDK do budowania własnych narzędzi
- 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 --full-auto "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.1"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”[model_providers.ollama]name = "Ollama"base_url = "http://localhost:11434/v1"
oss_provider = "ollama"Następnie uruchom: codex --oss "Explain this function"
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):
export OPENAI_BASE_URL="https://us.api.openai.com/v1"codexNie trzeba zmieniać konfiguracji.
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ńOpcje: minimal, low, medium, high, xhigh (zależne od modelu).
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”model_context_window = 128000model_auto_compact_token_limit = 100000 # Kompaktuj wcześniej, aby zostawić zapasUstaw model_auto_compact_token_limit niżej niż okno kontekstowe, aby wyzwolić kompaktowanie zanim okno wypełni się całkowicie.
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.
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:
codex sandbox -- ls /etccodex sandbox -- cat /etc/passwdcodex sandbox --full-auto -- npm testTo 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 | Beta | Tworzy migawki środowiska powłoki dla szybszych powtarzanych poleceń |
unified_exec | Beta | Używa PTY-backed exec dla lepszej obsługi terminala |
remote_compaction | Eksperymentalna | Przenosi kompaktowanie kontekstu na serwer |
request_rule | Stabilna | Inteligentne sugestie zatwierdzania na podstawie wzorców poleceń |
Włącz za pomocą:
codex features enable shell_snapshotcodex features enable unified_execEdytor 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.
Gdy coś się psuje
Dział zatytułowany „Gdy coś się psuje”- 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.
Co dalej
Dział zatytułowany „Co dalej”- 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ę