生活分享

codex exec 與腳本整合

codex exec 在非互動模式執行一次任務,適合腳本與 CI。預設一般輸出把進度放 stderr、最後回答放 stdout;--json 改成逐行 JSON 事件,不能把整份輸出當成單一 JSON 物件解析。

閱讀時間約 15 分鐘 · 操作 20 分鐘

實作順序示意圖,非產品介面截圖。
圖片:Mokaair (© Mokaair)
本篇目錄
  1. 目標與準備
  2. 步驟 1:認識執行入口
  3. 步驟 2:建立獨立輸入
  4. 步驟 3:保存輸出並立刻記下退出狀態
  5. 步驟 4:確認失敗不會被當成答案
  6. 常見問題、還原與下一步

目標與準備

本段提到的教學與資源:

步驟 1:認識執行入口

codex exec 是終端機命令,不是桌面聊天的斜線指令。Windows 在 PowerShell 執行;macOS 的 Terminal 與 Linux 的終端機執行相同 CLI。若用 WSL,就在 WSL 裡安裝與登入後執行,不能把 Windows 的登入狀態視為已同步。桌面與 IDE 可開終端機執行;手機畫面上的對話不是這個本機程序,必須有能執行 CLI 的電腦或受控遠端環境。各系統先執行以下兩行,確認本機版本提供本文旗標,再繼續。

查看 CLI 版本與 exec 說明 · sh
codex --version
codex exec --help
介面本篇內容用法
終端機codex exec啟動一次非互動工作
提示詞參數Read tasks.md…告訴代理工作目標
stdout最後答案可存成文字檔
stderr過程與診斷有文字不等於失敗
退出狀態整數0 代表程序成功結束,仍需驗證答案

篇會切換 stdout 的格式;此處先保持普通文字。不要以診斷檔是否空白、回答是否寫著 Done,替代退出狀態與內容檢查。

步驟 2:建立獨立輸入

在自己的練習位置建立全新的 exec-lab 資料夾,再以編輯器開啟它。若同名資料夾已有資料,改用另一個空白名稱。新增 UTF-8 的 tasks.md,內容完整如下。不要使用正式專案、私有日誌或整個使用者目錄;一份小而可人工核對的清單就能練習輸入與輸出。接著在這個資料夾的終端機初始化 Git;本文不需要提交、遠端或 GitHub 帳號。

exec-lab/tasks.md · markdown
# Practice tasks
Revision: exec-practice-1

- [x] Read the guide
- [ ] Create a practice file
- [ ] Verify the result
在 exec-lab 內執行,各平台相同 · sh
git init
git status --short

預期看到 tasks.md 是未追蹤檔案。Git 初始化只是滿足 CLI 工作目錄檢查,沒有把檔案上傳。先人工記下版本 exec-practice-1、總數 3、完成 1、未完成 2。不要把這些答案直接寫進下一步提示詞,才能檢查它是否真的讀到資料。若目前資料夾有其他檔案,先用確認自己位於哪裡。

步驟 3:保存輸出並立刻記下退出狀態

以下兩組選自己系統的一組,執行前確認 report-01.md、stdout-01.txt、stderr-01.log 不存在;macOS/Linux 也要確認 tasks-before.md 尚不存在;第二次練習改用 02,避免把舊答案誤認為新成功。唯讀沙盒限制代理的修改權限,shell 重新導向與 -o 仍會寫出指定報告,這正是本篇要保存的產物。--ephemeral 不保留工作階段檔,仍不代表不會使用帳號額度或不會產生這三份檔案。

Windows PowerShell · powershell
$practiceBefore = (Get-FileHash -LiteralPath tasks.md -Algorithm SHA256).Hash
codex exec --sandbox read-only --ephemeral -o report-01.md 'Read tasks.md. Report its revision and the total, completed and pending checkbox counts. Do not edit input files or use external tools.' 1> stdout-01.txt 2> stderr-01.log
$practiceExit = $LASTEXITCODE
$practiceExit
Get-Content -LiteralPath report-01.md
$practiceBefore -eq (Get-FileHash -LiteralPath tasks.md -Algorithm SHA256).Hash
macOS/Linux shell · sh
cp tasks.md tasks-before.md
codex exec --sandbox read-only --ephemeral -o report-01.md 'Read tasks.md. Report its revision and the total, completed and pending checkbox counts. Do not edit input files or use external tools.' > stdout-01.txt 2> stderr-01.log
practice_exit=$?
printf '%s\n' "$practice_exit"
cat report-01.md
cmp tasks-before.md tasks.md

提示詞中的 external tools 指外部服務;Codex 可以用本機讀檔工具讀取 tasks.md。退出狀態要在下一個原生命令之前保存,否則可能變成另一條命令的狀態。成功時檢查三件事:狀態為 0、報告含正確版本與 3/1/2、原始檔相同。PowerShell 最後一行應為 True;macOS/Linux 的 cmp 無輸出且退出 0 表示相同。若報告語言或句型不同,只要數值和依據正確就接受,不要求逐字一樣。

步驟 4:確認失敗不會被當成答案

各平台的無效參數練習 · sh
codex exec --sandbox invalid 'Read tasks.md'

這一行應在解析參數時被拒絕,不會取得新的模型答案。PowerShell 緊接著輸入 $LASTEXITCODE;macOS/Linux 緊接著輸入 echo $?,應為非 0。此時上一輪的 report-01.md 可能仍存在,但不能拿來宣稱本輪成功。修正為 read-only 後若要重跑,用新的輸出檔名並重新記錄狀態。不要為了消除錯誤改成略過權限或沙盒;參數錯誤、登入錯誤、額度不足與輸入不存在應分別處理。

將結果記成兩列:第一次唯讀工作填實際輸出檔名、退出碼與計數;無效旗標那列填「參數解析失敗,未產生新答案」。查看舊 report-01.md 的內容仍在,只能證明舊檔保留,不能填入第二列的成功欄。若第一輪尚未真的呼叫模型,就留為未執行,仍可獨立完成無效旗標練習。

常見問題、還原與下一步

找不到 codex 時回到安裝篇查 PATH,不在這裡反覆登入。出現 Git 工作目錄錯誤就確認 exec-lab 及 git status,不直接略過檢查。登入或用量錯誤先用 codex login status 查看登入狀態,再依查對應入口;不要公開診斷裡的憑證、使用者路徑或私人提示詞。若要求互動授權導致無法繼續,先回互動模式確認必要權限,再決定如何縮小非互動工作的範圍。

最後保留本輪退出狀態與核對結果,重新開啟 tasks.md 確認內容。若要清理,用檔案管理員逐一選取自己建立的 report、stdout、stderr,以及 macOS/Linux 的 tasks-before.md;不要刪除整個專案目錄或使用清除全部未追蹤檔的指令。你已完成一次可核對的唯讀執行;下一篇把同樣任務改成有欄位驗證的結構化輸出,之後才接入 。本文旗標依官方文件及列出的 CLI help 核對;不把參考腳本通過當作每個讀者帳號已成功執行模型。

30. codex exec 與腳本整合 — 實作順序示意圖,非產品介面截圖。 Prompt → codex exec → JSONL / report
30. codex exec 與腳本整合 — 實作順序示意圖,非產品介面截圖。 Prompt → codex exec → JSONL / report · 圖片:Mokaair (© Mokaair)
閱讀完整文字說明

Prompt to codex exec to JSONL / report

回總目錄

  • 生活分享

    Codex 學習中心:完整教學目錄

    從安裝、第一個任務到 MD 規則與進階整合,規劃 60 篇 Codex 教學、十個單元。依程度、平台、需求或指令搜尋下一篇;尚未公開的教學會標示狀態,方便安排學習路線。

  • 生活分享

    Worktree 與多任務隔離

    Worktree 讓同一個 Git 程式庫有不同的工作目錄,各自承接不同分支。它適合讓兩項工作分開改檔,但資料庫、連接埠與外部服務仍可能共用,不能把檔案隔離當成所有資源隔離。

  • 生活分享

    實戰:製作小網站

    從 brief.md 規劃並製作 Small Steps 待辦網站,完成新增、完成、刪除、篩選與本機資料保存。將 HTML、CSS、資料函式、畫面事件與測試分開,以 Node 測試和瀏覽器操作驗收,並留下可重新啟動與還原的交接紀錄。

  • 生活分享

    用量與效率:減少重工

    記錄任務條件、模型選項、時間與成果,找出能減少無效重試和過多上下文的調整。

最新旅遊情報攻略

資料來源

生活分享