生活分享

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 测试和浏览器操作验收,并留下可重新启动与还原的交接纪录。

  • 生活分享

    用量与效率:减少重工

    记录任务条件、模型选项、时间与成果,找出能减少无效重试和过多上下文的调整。

最新旅游情报攻略

资料来源

生活分享