← 全部开发指南

codex exec,把 Codex 接进 CI、脚本和定时任务

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

更新于 2026/9/20

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

codex exec 原文配图 1

交互模式和 exec 模式

直接运行 codex 会进入持续会话,适合需求还在变化的工作。codex exec 一次性接收任务、自行执行并退出:

codex exec "把 src 目录下所有函数补上类型注解"
cat task.txt | codex exec
git diff | codex exec "根据这些改动写一段 changelog"

它能读取 stdin、接收管道输入,也能嵌入任意 shell 逻辑。

codex exec 原文配图 2

让自动化行为可控

指定模型和推理强度:

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)会跳过所有确认和沙箱,只应在已经隔离的一次性环境中使用。

codex exec 原文配图 3

用 JSONL 交给下游程序

--json 会将执行过程以 JSONL 事件流输出:

codex exec --json "跑一遍测试,告诉我有没有失败" \
  | jq -r 'select(.type=="item.completed") | .item.text' \
  > report.txt

程序可以据此判断工具调用、步骤完成和最终结果。需要固定最终格式时,还可以使用 --output-schema 传入 JSON Schema 文件。

codex exec 原文配图 4

可直接接入的场景

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

这些任务的共同点是:任务描述清楚、权限边界明确、输出位置固定,执行过程不需要人工持续在场。

codex exec 原文配图 5

结论

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

参考来源

AIGoCode · 面向开发者的实践与指南
codex exec,把 Codex 接进 CI、脚本和定时任务