workflows / exec-scripting · 約 8 分
exec --json -o をスクリプトにする
JSONL イベントと最終メッセージファイルを使い分けます。
学習目標
--json を付けると stdout は JSONL です。最終メッセージだけ欲しいときは -o / --output-last-message です。両方同時でも、最終メッセージはファイルに書けます。
[codex-noninteractive]
前提
Git リポ。認証済み。
なぜ必要か
jq で turn.completed を拾うには JSONL が必要です。人間が読む要約は -o が向きます。
実行場所
実機。
chmod +x scripts/exec-summary.sh
./scripts/exec-summary.sh stdin の扱い
- プロンプトを引数に渡すスクリプトでは、非 TTY 実行時に
</dev/nullで stdin を閉じます。EOF が無いとReading additional input from stdin...のまま止まります。 - テストログを渡すときだけ、stdin を意図的に使います(この場合は
</dev/nullを付けません)。
npm test 2>&1 | codex exec "失敗テストを要約し、最小の修正方針を書く"
対話 CLI の codex --ask-for-approval never "..." とは別物です。codex exec に -a / --ask-for-approval は無いので付けないでください。
成功結果
スクリプトが codex exec と --json を含みます。
失敗対処
JSONL と最終テキストが混ざるときは、--json の stdout をファイルへリダイレクトし、人間向けは -o を使います。stdin 待ちで止まるときは </dev/null を確認します。
このレッスンで接続する
ページを移動するとブラウザ内実習の接続とファイルは消えます。演習の直前に、このパネルから明示的に再接続してください(自動では戻りません)。