非交互模式
使用 Codex 的非交互模式来自动化常见工作流。
codex exec "计算此项目中代码行的总数"
在非交互模式下,Codex 不会请求命令或编辑批准。默认情况下,它以 read-only
模式运行,因此它无法编辑文件或运行需要网络访问的命令。
使用 codex exec --full-auto
允许文件编辑。使用 codex exec --sandbox danger-full-access
允许编辑和网络化命令。
默认输出模式
默认情况下,Codex 将其活动流式传输到 stderr,并且只将来自助手的最终消息写入 stdout。这使得更容易将 codex exec
通过管道传输到另一个工具而无需额外过滤。
要将 codex exec
的输出写入文件,除了使用像 >
这样的 shell 重定向外,还有一个专用标志来指定输出文件:-o
/--output-last-message
。
JSON 输出模式
codex exec
支持 --json
模式,该模式在助手运行时将事件作为 JSON Lines (JSONL) 流式传输到 stdout。
支持的事件类型:
thread.started
- 当线程启动或恢复时。turn.started
- 当回合开始时。回合包括用户消息和助手响应之间的所有事件。turn.completed
- 当回合完成时;包括令牌使用情况。turn.failed
- 当回合失败时;包括错误详情。item.started
/item.updated
/item.completed
- 当线程项目被添加/更新/完成时。
支持的项目类型:
assistant_message
- 助手消息。reasoning
- 助手思考的摘要。command_execution
- 助手执行命令。file_change
- 助手进行文件更改。mcp_tool_call
- 助手调用 MCP 工具。web_search
- 助手执行网络搜索。
通常,assistant_message
在回合结束时添加。
示例输出:
{"type":"thread.started","thread_id":"0199a213-81c0-7800-8aa1-bbab2a035a53"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","item_type":"reasoning","text":"**搜索 README 文件**"}}
{"type":"item.started","item":{"id":"item_1","item_type":"command_execution","command":"bash -lc ls","aggregated_output":"","status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_1","item_type":"command_execution","command":"bash -lc ls","aggregated_output":"2025-09-11\nAGENTS.md\nCHANGELOG.md\ncliff.toml\ncodex-cli\ncodex-rs\ndocs\nexamples\nflake.lock\nflake.nix\nLICENSE\nnode_modules\nNOTICE\npackage.json\npnpm-lock.yaml\npnpm-workspace.yaml\nPNPM.md\nREADME.md\nscripts\nsdk\ntmp\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_2","item_type":"reasoning","text":"**检查仓库根目录中的 README**"}}
{"type":"item.completed","item":{"id":"item_3","item_type":"assistant_message","text":"是的 — 仓库根目录中有一个 `README.md`。"}}
{"type":"turn.completed","usage":{"input_tokens":24763,"cached_input_tokens":24448,"output_tokens":122}}
结构化输出
默认情况下,助手以自然语言响应。使用 --output-schema
提供定义预期 JSON 输出的 JSON Schema。
JSON Schema 必须遵循 严格模式规则。
示例模式:
{
"type": "object",
"properties": {
"project_name": { "type": "string" },
"programming_languages": { "type": "array", "items": { "type": "string" } }
},
"required": ["project_name", "programming_languages"],
"additionalProperties": false
}
codex exec "提取项目详细信息" --output-schema ~/schema.json
...
{"project_name":"Codex CLI","programming_languages":["Rust","TypeScript","Shell"]}
将 --output-schema
与 -o
结合以仅打印最终的 JSON 输出。你也可以将文件路径传递给 -o
以将 JSON 输出保存到文件中。
Git 仓库要求
Codex 需要 Git 仓库以避免破坏性更改。要禁用此检查,请使用 codex exec --skip-git-repo-check
。
恢复非交互式会话
使用 codex exec resume <SESSION_ID>
或 codex exec resume --last
恢复之前的非交互式会话。这保留对话上下文,因此你可以提出后续问题或向助手分配新任务。
codex exec "审查更改,查找释放后使用问题"
codex exec resume --last "修复释放后使用问题"
只保留对话上下文;你仍必须提供标志来自定义 Codex 行为。
codex exec --model gpt-5-codex --json "审查更改,查找释放后使用问题"
codex exec --model gpt-5 --json resume --last "修复释放后使用问题"
身份验证
默认情况下,codex exec
将使用与 Codex CLI 和 VSCode 扩展相同的身份验证方法。你可以通过设置 CODEX_API_KEY
环境变量来覆盖 api 密钥。
CODEX_API_KEY=your-api-key-here codex exec "修复合并冲突"
注意:CODEX_API_KEY
仅在 codex exec
中受支持。