Skip to content

28 · 非交互模式 codex exec:把它塞进脚本和 CI 里跑

平时你和 Codex 是对话式协作。 codex exec 则是非交互模式:给它一条任务,让它跑完输出结果。

它适合脚本、CI、批处理。 不适合需求还没想清楚的聊天式任务。

codex exec 非交互流程

先判断:这件事能不能一次说清

非交互模式适合“规则很明确”的任务。 你可以先问自己 3 个问题:

  1. 输入文件在哪里?
  2. 希望输出什么结果?
  3. 出错时应该停下,还是继续?

如果这 3 个问题都答不出来,就先别用非交互模式。

第一次练习:只让它输出分析结果

不要第一次就让 codex exec 改文件。 先做只读总结:

bash
codex exec "请总结当前项目结构。只输出主要目录和用途,不要修改任何文件。"

你要看三件事:

  1. 它有没有真的读当前项目。
  2. 输出是不是你要的格式。
  3. 它有没有尝试修改文件。

这三点都稳定,再考虑放进脚本或 CI。

01 先想清楚:非交互模式到底为谁而生

适合:

  1. 固定检查。
  2. 批量处理。
  3. CI 里跑一次审查。
  4. 把上一个命令的输出交给 Codex 分析。

不适合:

  1. 需要反复沟通的需求。
  2. 你还不知道目标是什么。
  3. 涉及高风险写入的任务。

02 一上手:最简单的样子长这样

最简单就是:

bash
codex exec "请总结当前项目结构"

新手先用只读任务练。 不要第一条就让它改文件。

03 最关键的设计:进度走 stderr,结果走 stdout

这点对脚本很重要。

你可以先理解成:

  • 过程日志走一边。
  • 最终结果走另一边。

这样脚本更容易拿到“真正的输出”。

04 权限与安全:非交互模式默认是“只读”

非交互模式里,权限更要谨慎。

如果你让它写文件、安装依赖、执行命令,要明确确认。

提示词:

text
请把这个 codex exec 任务设计成只读。
不要修改文件,不要运行危险命令,只输出分析结果。

05 让输出机器可读:--json 与 -o 这对搭档

如果结果要给脚本继续用,就需要结构化输出。

比如 JSON。

你可以问:

text
请告诉我如何让 codex exec 输出 JSON,并保存到文件。
先解释参数,不要执行。

06 stdin 管道:把上一个命令的输出直接喂给它

管道适合把日志、diff、测试结果交给 Codex。

姿势一:提示词 + 管道

可以理解成:

你写指令,管道内容当材料。

示例场景:

text
把构建日志传给 Codex,让它只总结失败原因。

07 接着上次跑:codex exec resume

有些任务可以接着上次会话跑。

但小白要小心:接着跑意味着会带上之前上下文。

先问:

text
使用 codex exec resume 会继承哪些上下文?
是否适合当前任务?

08 动手:把“跑一次 → 拿结果 → 批量跑”走通

练习:

  1. 用只读命令总结一个文件。
  2. 把结果保存到文件。
  3. 换成 JSON 输出。
  4. 批量处理多个小文件。

先不要让它自动改文件。

09 小结

codex exec 是把 Codex 放进脚本和 CI 的入口。

小白先记住:

  • 需求明确才用。
  • 默认先只读。
  • 输出给机器用时考虑 JSON。