Przejdź do głównej zawartości

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.

  • Kompletne wzorce poleceń dla codex exec w 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

codex exec uruchamia Codex bez interaktywnego TUI. Postęp jest streamowany na stderr; końcowa wiadomość agenta jest drukowana na stdout.

Okno terminala
# Simple task
codex exec "summarize the repository structure and list the top 5 risky areas"
# Pipe output to a file
codex exec "generate release notes for the last 10 commits" | tee release-notes.md
# Read prompt from stdin
echo "explain the authentication flow" | codex exec -

Domyślnie codex exec uruchamia się w sandboxie read-only. Eskaluj uprawnienia świadomie:

Okno terminala
# Allow file edits within the workspace
codex exec --full-auto "fix the failing tests"
# Allow broader access (only in isolated CI runners)
codex exec --sandbox danger-full-access "update system configuration"

Do skryptowania i automatyzacji użyj --json, żeby otrzymać strumień JSONL każdego eventu emitowanego przez Codex:

Okno terminala
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}}

Gdy potrzebujesz stabilnych pól dla automatyzacji downstream, użyj --output-schema:

schema.json
{
"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
}
Okno terminala
codex exec "Analyze the codebase for security risks" \
--output-schema ./schema.json \
-o ./security-report.json

Output jest zgodny z twoim schematem, co czyni go bezpiecznym do parsowania programistycznego.

Łącz wiele wywołań codex exec w wieloetapowy pipeline:

Okno terminala
# Stage 1: Analyze
codex 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 session
codex exec resume 7f9f9a2e-1b3c-4c7a-9b0e-xxxx "implement the plan"

W środowiskach CI ustaw CODEX_API_KEY jako sekret:

Okno terminala
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.

Okno terminala
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.md
Okno terminala
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 -1
Okno terminala
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."
  • Wymagane repozytorium Git: codex exec domyślnie wymaga repozytorium Git. Użyj --skip-git-repo-check dla 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 jq z --slurp, jeśli musisz przetworzyć cały strumień jako tablicę.
  • Kody wyjścia: codex exec koń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.
  • GitHub Action — Gotowa GitHub Action opakowująca codex exec z 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