交互模式适合边做边调整,但每天扫日志、补 changelog、批量改注释这类重复任务,不值得一直有人坐在终端前。codex exec 是 Codex 的非交互模式:接收一次任务,执行完成后退出,可以被 shell、CI 和定时任务调用。

交互模式和 exec 模式
直接运行 codex 会进入持续会话,适合需求还在变化的工作。codex exec 一次性接收任务、自行执行并退出:
codex exec "把 src 目录下所有函数补上类型注解"
cat task.txt | codex exec
git diff | codex exec "根据这些改动写一段 changelog"
它能读取 stdin、接收管道输入,也能嵌入任意 shell 逻辑。

让自动化行为可控
指定模型和推理强度:
codex exec -m gpt-5.1-codex \
-c model_reasoning_effort="low" \
"把这个文件里的 print 全换成 logging"
-c 可以覆盖 config.toml 中的配置项,嵌套配置使用点号路径。
将最终总结保存到文件:
codex exec -o result.txt "检查依赖有没有已知的安全漏洞"
cat result.txt
无人值守时必须提前限制权限。用 -s 指定只读或工作区写入策略;--skip-git-repo-check 允许在非 Git 目录运行。--dangerously-bypass-approvals-and-sandbox(别名 --yolo)会跳过所有确认和沙箱,只应在已经隔离的一次性环境中使用。

用 JSONL 交给下游程序
--json 会将执行过程以 JSONL 事件流输出:
codex exec --json "跑一遍测试,告诉我有没有失败" \
| jq -r 'select(.type=="item.completed") | .item.text' \
> report.txt
程序可以据此判断工具调用、步骤完成和最终结果。需要固定最终格式时,还可以使用 --output-schema 传入 JSON Schema 文件。

可直接接入的场景
CI 中只读审查:
git diff origin/main...HEAD \
| codex exec -s read-only -o review.md \
"审查这些改动,列出潜在 bug 和风格问题"
定时汇总日志:
0 8 * * * cd /path/to/project && \
codex exec -s read-only -o /tmp/daily.txt \
"扫一遍 logs/ 目录里昨天的日志,把报错归类总结"
批量处理文件:
for f in src/*.py; do
codex exec -s workspace-write \
"给 $f 补上文档字符串,风格参考 Google style"
done
这些任务的共同点是:任务描述清楚、权限边界明确、输出位置固定,执行过程不需要人工持续在场。

结论
交互模式解决如何和 AI 一起工作,exec 模式解决如何让 AI 被自动化调度。可以先从只读、低风险脚本开始,例如生成 commit message,再逐步接入 CI 和定时任务。无人值守不是把权限全部放开,而是把任务、沙箱和验收方式提前写清楚。