Appearance
28 · 非交互模式 codex exec:把它塞进脚本和 CI 里跑
平时你和 Codex 是对话式协作。 codex exec 则是非交互模式:给它一条任务,让它跑完输出结果。
它适合脚本、CI、批处理。 不适合需求还没想清楚的聊天式任务。
先判断:这件事能不能一次说清
非交互模式适合“规则很明确”的任务。 你可以先问自己 3 个问题:
- 输入文件在哪里?
- 希望输出什么结果?
- 出错时应该停下,还是继续?
如果这 3 个问题都答不出来,就先别用非交互模式。
第一次练习:只让它输出分析结果
不要第一次就让 codex exec 改文件。 先做只读总结:
bash
codex exec "请总结当前项目结构。只输出主要目录和用途,不要修改任何文件。"你要看三件事:
- 它有没有真的读当前项目。
- 输出是不是你要的格式。
- 它有没有尝试修改文件。
这三点都稳定,再考虑放进脚本或 CI。
01 先想清楚:非交互模式到底为谁而生
适合:
- 固定检查。
- 批量处理。
- CI 里跑一次审查。
- 把上一个命令的输出交给 Codex 分析。
不适合:
- 需要反复沟通的需求。
- 你还不知道目标是什么。
- 涉及高风险写入的任务。
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 动手:把“跑一次 → 拿结果 → 批量跑”走通
练习:
- 用只读命令总结一个文件。
- 把结果保存到文件。
- 换成 JSON 输出。
- 批量处理多个小文件。
先不要让它自动改文件。
09 小结
codex exec 是把 Codex 放进脚本和 CI 的入口。
小白先记住:
- 需求明确才用。
- 默认先只读。
- 输出给机器用时考虑 JSON。