---
title: OpenAI Codex 最佳实践指南：提示工程、工具配置与安全策略
description: 综合官方文档与实战经验，系统梳理 OpenAI Codex 云端智能体和 CLI 的提示工程、工具配置、AGENTS.md 分层机制、安全模型与 API 高级特性。
category: AI 编程实战
head:
  - - meta
    - name: keywords
      content: OpenAI Codex,Codex CLI,codex-1,提示工程,AGENTS.md,AI编程,AI辅助开发,o3
---

# OpenAI Codex 最佳实践指南

大家好，我是 Guide。前面聊了 [Claude Code 的使用技巧](./claudecode-tips.md)，这篇来看看 OpenAI 阵营的主力编程工具——**Codex**。

OpenAI 在 2025 年推出了 Codex 系列产品线，涵盖基于 o3 模型的云端软件工程智能体（codex-1）和开源的终端编码助手 Codex CLI。它和传统的代码补全不同，能自己读代码、跑测试、提 PR，完成从理解到交付的完整闭环。但想让它真正好用，提示工程、工具配置、安全策略这几环缺一不可。

这篇文章综合 OpenAI 官方博客、Codex CLI 开源仓库 README、官方提示工程指南等多个来源，整理成一份实践指南。通过本文你将搞懂：

1. ⭐ **Codex 云端智能体和 CLI 的定位差异**：各适合什么场景
2. ⭐ **提示工程的核心原则**：行动优先、上下文收集、代码质量标准
3. ⭐ **AGENTS.md 的分层机制**：怎么组织项目级指令
4. **安全模型的三级审批**：从建议到全自动的安全边界
5. **GPT-5.3 Codex API 的高级特性**：上下文压缩、Phase 机制、推理强度

## 一、认识 Codex：两条产品线与一个核心理念

### Codex 云端智能体（codex-1）

OpenAI 发布了基于 o3 模型微调的 codex-1 云端智能体。它运行在 OpenAI 的安全沙箱中，可以读写代码、运行测试和命令行工具，甚至直接提交 Pull Request。三个核心特性：

- **自主执行**：你给出任务描述，它自行收集上下文、编写代码、运行测试，全程无需人工逐步引导
- **安全沙箱**：每个任务在独立的容器环境中运行，没有网络访问权限，防止对生产环境造成影响
- **AGENTS.md 指令机制**：类似于 `.cursorrules` 或 `CLAUDE.md`，你可以在仓库中放置 AGENTS.md 文件来定义项目级别的编码规范和约束

Codex 云端智能体目前通过 ChatGPT Pro、Business 和 Enterprise 计划提供访问，Plus 计划也于 2025 年 6 月起陆续开放。它支持两种工作模式：交互式对话和后台任务。后台模式下，你可以同时派发多个任务，每个任务在独立容器中并行执行。

> 一句话区分：**云端智能体适合“挂后台跑大任务”，CLI 适合“坐电脑前盯着改代码”。** 两者定位不同，核心理念一致——长期自主、减少人工干预、以可交付的代码为目标。

### Codex CLI：开源终端编码助手

Codex CLI 是一个完全开源的终端工具，用 Rust 编写，可以在本地机器上执行代码修改和 shell 命令。跟云端智能体的区别主要在运行环境和安全模型上：

| 维度     | Codex 云端智能体             | Codex CLI                        |
| -------- | ---------------------------- | -------------------------------- |
| 运行环境 | OpenAI 云端沙箱              | 本地机器                         |
| 网络访问 | 无（隔离环境）               | 取决于本地权限                   |
| 代码访问 | GitHub 仓库集成              | 本地文件系统                     |
| 安全模型 | 平台托管                     | 三级审批模式                     |
| 开源状态 | 闭源                         | 完全开源（Rust）                 |
| 适用计划 | Pro/Business/Enterprise/Plus | Plus/Pro/Business/Edu/Enterprise |

> **拓展一下**：Codex CLI 默认使用的模型是 `codex-mini-latest`（基于 o4-mini），面向低延迟的代码问答和编辑场景优化。而云端智能体使用的是 `codex-1`（基于 o3），面向需要深度推理的复杂工程任务。两者的定位差异类似“轻量级助手”和“高级工程师”的区别。

## 二、提示工程：让 Codex 高效工作的核心

搞清楚了 Codex 两条产品线的区别，接下来是最关键的部分——怎么写好提示词。这部分的内容同时适用于云端智能体和 CLI。

### ⭐️ 行动优先原则

这是 Codex 提示设计的第一原则——**“行动偏向”（Action Bias）**。好的提示应该引导模型直接交付可工作的代码，而不是用一堆问题结束回复。具体来说：

- 明确告知模型“交付可工作的代码，而不仅仅是计划”
- 模型应该默认做出合理假设并向前推进
- 只有在真正被阻塞（缺少关键信息或存在矛盾约束）时才向用户提问

**反面示例**：提示中要求模型“先列出计划，等确认后再执行”。这会让模型在完成工作前就停下来等待，严重降低效率。

**正面示例**：提示中写明“接到任务后立即开始工作，合理假设模糊部分，完成后展示结果。如有无法自行判断的阻塞问题，再询问用户。”

> **工程提示**：官方提示词中有一段很关键——“每次推出都应以具体编辑或明确的阻塞者加上有针对性的问题结束”。这句话直接告诉模型：不要用“我来帮你分析一下”之类的废话收尾，要么给出代码改动，要么给出阻塞原因和具体问题。

### ⭐️ 上下文收集策略

Codex 在开始修改代码之前，应该先充分理解代码库——这一点听起来理所当然，但实践中经常被忽略。提示中应明确要求：

1. **批量读取**：在调用工具前先想清楚需要哪些文件，然后一次性并行读取
2. **避免串行探索**：不要一个文件一个文件地逐个查看
3. **先搜索后新增**：在添加新实现之前，先搜索代码库中是否已有类似功能

这种“先规划、再并行”的策略可以显著减少往返轮次。

### ⭐️ 代码质量标准

Codex 的定位是“有判断力的高级工程师”。在提示中应体现以下工程标准：

- 正确性优先于速度，避免冒险的捷径、投机性改动和拼凑式修复
- 遵循代码库现有约定，偏离时需要说明理由
- 不添加宽泛的 try/catch，错误必须显式传播
- 保持类型安全，避免强制类型断言
- 先搜索已有实现再决定是否新增

对于前端任务，还要特别注明：避免千篇一律的模板化设计，追求有辨识度的视觉表达。

> **常见误区**：很多人在提示中写“代码要写得快、写得简洁”。但官方推荐的措辞恰恰相反——优先考虑正确性、清晰度和可靠性，而不是速度。把 Codex 当成“赶工的初级开发者”来用，效果反而不好。

### 对 Git 脏工作区的处理

这个细节很多人不会想到，但在多人协作或并行任务场景下特别重要——工作区可能包含其他人的未提交改动。提示中需要明确规定：

- 永远不要恢复不是自己做的改动
- 提交或编辑时，忽略与自己无关的变更
- 发现意外更改时立即停下询问用户
- 禁止使用 `git reset --hard` 等破坏性命令

## 三、工具配置：影响性能的关键环节

提示工程搞定了，接下来是工具配置。这部分的内容偏向实操，如果你的团队直接用 Codex CLI 或云端智能体，很多配置已经内置好了；但如果你通过 API 集成 Codex，这些细节会直接影响效果。

### ⭐️ apply_patch：最重要的编辑工具

`apply_patch` 是 Codex 修改代码的核心工具，OpenAI 官方强烈建议使用标准实现，因为模型就是在这种 diff 格式上训练的。有两种接入方式：

- **Responses API 内置**：直接在工具列表中加入 `{"type": "apply_patch"}`，最简单的方式
- **自由格式工具**：使用 Lark 语法定义上下文无关文法，适合需要自定义行为的场景

两种方式输出的 diff 格式相同，模型都能正确使用。官方建议优先使用 Responses API 内置方式，因为它开箱即用且与模型训练时的格式完全一致；只有需要自定义解析逻辑或扩展行为时才考虑自由格式工具。

### shell_command：字符串优于数组

一个容易忽视的细节：将命令作为单个字符串传递（而非字符串数组）效果更好。同时，工具描述中应要求"始终填写工作目录，避免在命令中使用 `cd`"，这能减少路径混淆。

### 并行工具调用

Codex 支持并行工具调用。通过设置 `parallel_tool_calls: true`，可以让模型同时发起多个工具调用，这比串行调用快不少。提示中应明确要求：

- 能并行的调用绝不串行
- 工作流应该是：规划需要读取的资源 → 批量并行发出 → 分析结果 → 如有新的未知需求再重复

### 工具响应的截断策略

当工具返回的内容过长时，建议截断到约 10k Token（可用字节数除以 4 近似估算）。截断方式为：前半段保留开头内容，后半段保留结尾内容，中间用 `…N tokens truncated…` 格式的省略标记连接（其中 N 为截断的 Token 数）。这样既保留了关键上下文，又不会浪费 Token 预算。

> **工程提示**：为什么要保留头尾两部分？因为工具输出的开头通常是摘要或状态信息，结尾往往是错误信息或最终结果——这两部分对模型决策最有价值。中间的重复性内容截断后影响最小。

## 四、AGENTS.md：项目级指令的分层机制

提示工程搞定了，接下来是另一个高频配置项——AGENTS.md。它的作用和 Claude Code 的 CLAUDE.md 类似，都是给 AI 注入项目级的上下文和规范。

### ⭐️ 加载规则

Codex CLI 会自动扫描并注入 `AGENTS.md` 文件（也支持 `.codex` 等替代文件名），加载逻辑遵循分层覆盖原则：

1. 从用户主目录 `~/.codex` 开始，沿仓库根目录到当前工作目录逐层扫描
2. 每个目录的指令独立成为一条用户消息
3. 子目录的指令会覆盖父目录的同名配置
4. 消息以根到叶的顺序注入对话历史

这意味着你可以实现分层配置：

| 层级 | 路径                   | 适用范围                                           |
| ---- | ---------------------- | -------------------------------------------------- |
| 全局 | `~/.codex/AGENTS.md`   | 所有项目的通用默认行为（如语言偏好、通用编码风格） |
| 项目 | 仓库根目录 `AGENTS.md` | 项目级约定（如构建命令、测试规范、依赖管理）       |
| 模块 | 子目录 `AGENTS.md`     | 模块级特殊规则（如某个微服务的特定 API 约定）      |

### 实际示例：OpenAI 自己的 AGENTS.md

OpenAI 在 Codex CLI 的开源仓库中放置了一份真实的 AGENTS.md，内容涵盖：

- Rust 代码风格约定（使用 `#[allow(clippy::xxx)]` 而非全局禁止 clippy 警告）
- TUI 界面的样式规则（使用 `ratatui` 框架）
- 测试策略（集成测试优先，单元测试为辅）
- API 开发规范（JSON 请求/响应格式、错误处理）

这份文件本身就是 AGENTS.md 最佳实践的参考范本。

## 五、安全模型：从建议到全自动

安全这一环不能跳过。Codex CLI 和云端智能体的安全机制差异较大，分开来说。

### ⭐️ Codex CLI 的三级审批模式

Codex CLI 提供三种安全模式，对应不同级别的自动化需求：

| 模式          | 说明                                 | 适用场景        |
| ------------- | ------------------------------------ | --------------- |
| **Suggest**   | 可读取文件，但所有写操作和命令需确认 | 代码审查、学习  |
| **Auto Edit** | 自动编辑文件，但命令行操作需确认     | 日常开发        |
| **Full Auto** | 全自动，编辑和命令都自动执行         | CI/CD、批量任务 |

在 Full Auto 模式下，Codex CLI 还提供沙箱机制来限制潜在风险：

- **macOS**：使用 Apple Seatbelt（`sandbox-exec`）将文件系统设为只读白名单，并完全阻断出站网络
- **Linux**：默认无沙箱，官方推荐使用 Docker 容器隔离，配合 `iptables`/`ipset` 防火墙脚本阻断除 OpenAI API 外的所有出站流量

> **拓展一下**：Full Auto 模式下，Codex CLI 还会在非 Git 仓库中弹出一个警告确认，提醒你没有版本控制的安全网。这个设计细节挺贴心——在全自动模式下，Git 仓库的“可回滚性”是最后一道防线。

### Codex 云端智能体的安全机制

云端智能体的安全设计更为严格：

- 每个任务在独立的容器中运行，完全没有网络访问权限
- 运行时间和资源消耗有明确限制

## 六、GPT-5.3 Codex API 的高级特性

> 本节内容适用于通过 Responses API 直接调用 `gpt-5.3-codex` 模型的开发者。Codex CLI 和云端智能体在内部封装了这些机制，用户无需手动配置。

### 上下文压缩

通过 Responses API 的 `/compact` 端点，Codex 可以压缩对话历史，使对话能够持续很多轮而不触碰上下文窗口限制。实际效果：

- 长时间任务不会因为上下文溢出而中断
- 超长任务链不再受典型窗口长度的限制
- Token 消耗比逐轮累积更可控

> **工程提示**：`/compact` 端点是 ZDR（Zero Data Retention）兼容的，返回的是一个 `encrypted_content` 项。后续请求中直接传递这个压缩项即可，无需手动处理上下文摘要。这一点在官方文档中没有特别强调，但集成时必须注意。

### ⭐️ Phase 机制

这是个容易踩坑的地方。GPT-5.3-Codex 引入了 `phase` 字段来区分模型输出的不同阶段：

- `null`：普通输出
- `commentary`：工作中对用户的进度更新
- `final_answer`：最终完成的交付

**重要提示**：phase 是 gpt-5.3-codex 的**必需项**（required），不是可选功能。如果不在历史消息中正确保留 phase 元数据，会导致显著的性能下降。此外，phase 字段只能附加在 assistant 消息上，不要添加到 user 消息中，否则会引发模型行为异常。

### Preamble（进度更新）的节奏控制

Preamble 是模型在执行过程中向用户报告进度的机制。官方给出了明确的节奏建议：

- **目标频率**：每隔 1-3 个执行步骤发送一次进度更新
- **硬性下限**：至少每 6 个步骤或每 10 次工具调用必须发送一次
- 如果模型连续执行了大量操作而没有任何进度输出，用户会失去对任务状态的感知

这意味着在提示工程中，应当明确要求模型保持合理的进度汇报节奏，避免过于频繁（变成日志式更新）或过于稀疏（让用户失去上下文）。

### 两种协作个性

Codex 支持切换“友好”和“务实”两种个性风格：

| 风格         | 特点                                   | 适用场景                           |
| ------------ | -------------------------------------- | ---------------------------------- |
| **友好模式** | 更像热情的结对编程伙伴，确认多、解释细 | 新人引导、模糊需求探索、高风险改动 |
| **务实模式** | 简洁直接，每个 Token 的信息密度更高    | 延迟敏感、用户已熟悉工作流         |

个性配置写在系统提示中，通过描述来引导模型的措辞风格、解释深度和热情程度。

### 推理强度选择

Codex 支持多级推理强度：

| 强度       | 说明                                         | 适用场景             |
| ---------- | -------------------------------------------- | -------------------- |
| **medium** | 日常交互式编码推荐，在智能和速度之间取得平衡 | 大部分日常开发       |
| **high**   | 较复杂的架构决策和重构任务                   | 跨模块重构、复杂需求 |
| **xhigh**  | 真正困难的多系统协调、复杂 bug 排查等场景    | 多服务联调、疑难 bug |

选择合适的推理强度可以直接影响成本和响应速度。我的建议是：**先用 medium 跑，遇到明显推理不足的情况再升级**，不要一上来就用 xhigh。

## 七、常见问题与调试技巧

实际使用中，有几个高频问题值得单独拿出来说。

### ⭐️ 三个常见失败模式

OpenAI 官方追踪到了三个高频问题，每个都有对应的解法：

**1. 过度思考**

模型在执行第一次有用操作前耗时过长。解决方法是在提示中明确要求“立即开始行动”。

**2. 日志式更新**

模型机械地汇报状态而非自然协作。解决方法是在提示中要求“只在关键节点报告进度，避免机械式状态日志”。

**3. 重复性口癖**

反复使用“好发现”、“明白了”等填充词。解决方法是在提示中直接禁止这些表达。

> **工程提示**：官方给出了一个很实用的调试技巧——“元提示”。做法是在模型的回复末尾追加反馈，要求它审视自己的指令并建议改进。生成几次回复后，取其中的共性建议，就能得到有针对性的指令优化方案。本质上就是在让模型帮你写提示词。

### 自定义工具的调优

对于 Web 搜索、语义搜索、MCP 等非标准工具，模型没有专门的后训练，效果会打折扣。但可以通过以下方式弥补：

- 工具命名要精确（`semantic_search` 比 `search` 好）
- 在提示中明确说明何时、为何、如何使用每个工具，附带正反示例
- 让自定义工具的输出格式区别于模型已熟悉的工具输出，避免混淆

> **常见误区**：很多人以为自定义工具只要定义好参数就行了。实际上，**工具的输出格式同样关键**——如果自定义工具的输出长得和 ripgrep 一模一样，模型可能会用错工具，因为它分不清两者的结果。让不同工具的输出在视觉上有明显区分，能有效减少混淆。

## 八、团队落地建议

最后聊几句团队层面的落地经验。

### 渐进式引入

建议团队按以下阶段逐步引入 Codex，不要一上来就 Full Auto：

1. **Suggest 模式试用**：让开发者熟悉 Codex 的代码理解能力和建议质量
2. **Auto Edit 模式日常使用**：在受控环境下逐步增加信任度
3. **Full Auto + 沙箱模式**：在 CI/CD 流水线或批量任务中启用全自动

### AGENTS.md 的团队协作

为团队项目建立 AGENTS.md 时，建议覆盖以下内容：

- 项目构建和测试命令
- 代码风格和命名约定
- 依赖管理策略
- Git 工作流规范
- 常见陷阱和注意事项

### 成本控制

- 合理选择推理强度（medium 能覆盖大部分日常场景）
- 利用上下文压缩减少 Token 消耗
- 并行任务时注意监控总资源使用量

> 一句话：**先用 Suggest 模式建立信任，再用 Auto Edit 提效，最后才考虑 Full Auto。** AGENTS.md 在团队推广前，最好先让一两个人试跑一周，把规则调顺了再全员铺开。

---

**参考来源**：

- OpenAI 官方博客：[Introducing Codex](https://openai.com/index/introducing-codex/)
- OpenAI Codex CLI 开源仓库：[github.com/openai/codex](https://github.com/openai/codex)
- OpenAI 官方提示工程指南（中文译文参考）：[liduos.com/posts/codex-prompting-guide](https://liduos.com/posts/codex-prompting-guide)
- OpenAI Codex 仓库 AGENTS.md 实际配置
