Tryb bezgłowy i nieinteraktywny
Twój pipeline CI właśnie się wysypał. Logi testowe pokazują kryptyczny błąd asercji, którego diagnoza zajęłaby programiście 30 minut. Zamiast tego workflow post-failure uruchamia codex exec, który czyta repo, uruchamia testy, identyfikuje jednoliniową poprawkę, aplikuje ją, weryfikuje przechodzenie testów i otwiera PR — wszystko w mniej niż pięć minut bez jakiejkolwiek interwencji człowieka. To codex exec w swoim żywiole.
Czego się nauczysz
Dział zatytułowany „Czego się nauczysz”- Kompletne wzorce poleceń dla
codex execw tym output JSON, ustrukturyzowane schematy i wznawianie sesji - Produkcyjny workflow CI automatycznie naprawiający awarie testów i otwierający PR-y
- Techniki pipingowania outputu Codex do innych narzędzi do dalszego przetwarzania
- Ustawienia bezpieczeństwa dające Codex dokładnie takie uprawnienia, jakie potrzebuje i nic więcej
Podstawowe użycie
Dział zatytułowany „Podstawowe użycie”codex exec uruchamia Codex bez interaktywnego TUI. Postęp jest streamowany na stderr; końcowa wiadomość agenta jest drukowana na stdout.
# Simple taskcodex exec "summarize the repository structure and list the top 5 risky areas"
# Pipe output to a filecodex exec "generate release notes for the last 10 commits" | tee release-notes.md
# Read prompt from stdinecho "explain the authentication flow" | codex exec -Uprawnienia i bezpieczeństwo
Dział zatytułowany „Uprawnienia i bezpieczeństwo”Domyślnie codex exec uruchamia się w sandboxie read-only. Eskaluj uprawnienia świadomie:
# Allow file edits within the workspacecodex exec --full-auto "fix the failing tests"
# Allow broader access (only in isolated CI runners)codex exec --sandbox danger-full-access "update system configuration"Czytelny maszynowo output JSON
Dział zatytułowany „Czytelny maszynowo output JSON”Do skryptowania i automatyzacji użyj --json, żeby otrzymać strumień JSONL każdego eventu emitowanego przez Codex:
codex exec --json "summarize the repo structure" | jq '.type'Typy eventów obejmują thread.started, turn.started, turn.completed, turn.failed i różne eventy item.* dla wiadomości, poleceń, zmian plików i wywołań narzędzi MCP.
Przykładowy output:
{"type":"thread.started","thread_id":"0199a213-81c0-7800-8aa1-bbab2a035a53"}{"type":"turn.started"}{"type":"item.completed","item":{"id":"item_3","type":"agent_message","text":"Repo contains docs, sdk, and examples."}}{"type":"turn.completed","usage":{"input_tokens":24763,"output_tokens":122}}Strukturalny output ze schematem JSON
Dział zatytułowany „Strukturalny output ze schematem JSON”Gdy potrzebujesz stabilnych pól dla automatyzacji downstream, użyj --output-schema:
{ "type": "object", "properties": { "project_name": { "type": "string" }, "risk_areas": { "type": "array", "items": { "type": "object", "properties": { "file": { "type": "string" }, "severity": { "type": "string" }, "description": { "type": "string" } } } } }, "required": ["project_name", "risk_areas"], "additionalProperties": false}codex exec "Analyze the codebase for security risks" \ --output-schema ./schema.json \ -o ./security-report.jsonOutput jest zgodny z twoim schematem, co czyni go bezpiecznym do parsowania programistycznego.
Wznawianie sesji
Dział zatytułowany „Wznawianie sesji”Łącz wiele wywołań codex exec w wieloetapowy pipeline:
# Stage 1: Analyzecodex exec "review the codebase for race conditions"
# Stage 2: Fix (resume the same session)codex exec resume --last "fix the race conditions you found"
# Or resume a specific sessioncodex exec resume 7f9f9a2e-1b3c-4c7a-9b0e-xxxx "implement the plan"Uwierzytelnianie w CI
Dział zatytułowany „Uwierzytelnianie w CI”W środowiskach CI ustaw CODEX_API_KEY jako sekret:
CODEX_API_KEY=${{ secrets.OPENAI_API_KEY }} codex exec --json "triage open bug reports"CODEX_API_KEY jest obsługiwany tylko w codex exec. Dla sesji interaktywnych użyj codex login.
Typowe wzorce automatyzacji
Dział zatytułowany „Typowe wzorce automatyzacji”Generowanie release notes
Dział zatytułowany „Generowanie release notes”codex exec "Generate release notes for v2.1.0 based on commits since the v2.0.0 tag. Format as markdown with sections for Features, Fixes, and Breaking Changes." -o release-notes.mdKontrola jakości przed merge’em
Dział zatytułowany „Kontrola jakości przed merge’em”codex exec --json "Review the diff between HEAD and origin/main. Flag any breaking API changes, missing tests, or security issues. Output a pass/fail verdict." | jq '.item.text // empty' | tail -1Nocny raport zdrowia codebase’u
Dział zatytułowany „Nocny raport zdrowia codebase’u”codex exec --output-schema ./health-schema.json -o health-report.json \ "Analyze code quality metrics: test coverage gaps, dead code, unused dependencies, and type safety issues. Prioritize by impact."Gdy coś nie działa
Dział zatytułowany „Gdy coś nie działa”- Wymagane repozytorium Git:
codex execdomyślnie wymaga repozytorium Git. Użyj--skip-git-repo-checkdla katalogów nie-Git, ale tylko gdy jesteś pewien, że środowisko jest bezpieczne. - Prompt zbyt długi na stdin: Zapisz długie prompty do pliku i przekieruj je:
cat prompt.md | codex exec - - Awarie parsowania JSON: Strumień JSONL emituje jeden obiekt JSON na linię. Użyj
jqz--slurp, jeśli musisz przetworzyć cały strumień jako tablicę. - Kody wyjścia:
codex execkończy się kodem niezerowym przy awarii. Sprawdzaj$?w swoich skryptach i obsługuj awarie jawnie. - Limity tokenów: Długotrwałe sesje exec mogą trafić na limity kontekstu. Dziel złożoną pracę na wiele etapów
run+resume.
Co dalej
Dział zatytułowany „Co dalej”- GitHub Action — Gotowa GitHub Action opakowująca
codex execz dodatkowymi udogodnieniami CI - Codex SDK — Dla bardziej złożonej kontroli programistycznej wykraczającej poza możliwości
codex exec - Zarządzanie kosztami — Monitoruj zużycie kredytów dla zautomatyzowanych pipeline’ów