翻译 | OpenAI Codex 官方最佳实践指南
翻译 | OpenAI Codex 官方最佳实践指南
OpenAI本文翻译自 OpenAI 官方文档 Codex Best Practices。
补充内容来源:@jxnlco 推文 — Getting the most out of Codex
概述
本指南涵盖了在 CLI、IDE 扩展和 Codex 应用中使用 Codex 的有效习惯。核心理念是:**”少把它当作一次性的助手,多把它当作一个你可以持续配置和改进的队友。”**
推荐的渐进路径:从提供良好的任务上下文开始,使用 AGENTS.md 进行持久化指导,为你的工作流配置 Codex,通过 MCP 连接外部系统,将重复性工作打包为 Skills,最后将稳定的工作流自动化。
延伸阅读 — 大多数开发者最初把编码智能体用于代码:检查仓库、生成 diff、跑测试、开 PR。但计算机上的大量工作本身就由代码介导:执行 shell 命令、浏览网页、调用 API、导出文档、响应事件、触发自动化。随着这些能力对 Codex 开放,它越来越不像狭义的”编码助手”,而更像一个完成计算机工作的系统。
良好的首次使用:上下文与提示词
即使没有完美的提示词,Codex 也能交付不错的结果,但清晰的提示词能在大型代码库或高风险任务中提升可靠性。
一个好的提示词包含四个要素:
- 目标(Goal) — 你想要改变或构建什么
- 上下文(Context) — 相关的文件、文件夹、文档、示例或错误信息(使用 @ 提及)
- 约束(Constraints) — 需要遵循的标准、架构、安全要求或惯例
- 完成条件(Done when) — 完成时应该满足什么条件(测试通过、行为变更、Bug 修复)
推理级别
根据任务复杂度选择:
- Low — 更快,适用于范围明确的任务
- Medium 或 High — 复杂的变更或调试
- Extra High — 长时间运行的、需要深度推理的智能体任务
Codex 应用中的语音输入可以加速上下文的传递。
复杂任务先规划
对于复杂或模糊的任务,让 Codex 先规划再编码。
三种方式:
Plan 模式 — 使用
/plan或Shift+Tab切换。Codex 会收集上下文、提出澄清问题,并在实施前制定计划。采访式方法 — 让 Codex 先向你提问,挑战你的假设,将模糊的想法转化为具体方案。
PLANS.md 模板 — 对于高级工作流,配置 Codex 按照执行计划模板来处理多步骤工作。
引导(Steering)与排队(Queuing) — 在 Codex 执行任务时,你有两种干预方式。引导是在当前步骤完成前打断它、纠正方向,比如在审查网页时说”把这个缩小”、”这两个元素间距不对”。排队则不打断当前任务,而是追加下一步,比如”做完之后把预览链接发到 Slack 给审查者”。引导改变 Codex 正在做的事,排队改变接下来该做的事。
使用 AGENTS.md 让指导可复用
AGENTS.md 是一个”面向智能体的开放格式 README”,会自动加载到上下文中。它记录了你希望 Codex 在仓库中如何工作。
应该包含的内容:
- 仓库布局和重要目录
- 如何运行项目
- 构建、测试和 lint 命令
- 工程惯例和 PR 期望
- 约束和禁止事项
- 完成定义和验证步骤
关键实践:
- 在 CLI 中使用
/init生成初始 AGENTS.md - 在不同层级放置文件:全局(
~/.codex)、仓库级别、或子目录级别 - 离当前目录更近的文件优先级更高
- 保持简短准确,而非冗长模糊
- 当 Codex 重复犯同一个错误时,让它做复盘(retrospective)并更新 AGENTS.md
- 如果文件变得太大,保持主文件精简,引用特定任务的 markdown 文件
配置 Codex 以保持一致性
配置层级:
- 个人默认配置:
~/.codex/config.toml - 仓库级行为:
.codex/config.toml - 命令行覆盖:用于一次性场景(仅 CLI)
关键控制项:
- 审批模式(Approval mode) — Codex 何时请求运行命令的权限
- 沙箱模式(Sandbox mode) — 智能体可以读写哪些文件
对新手的建议:默认保持审批和沙箱收紧,仅对受信任的仓库或特定工作流放宽。
配置在 CLI、IDE 和 Codex 应用之间共享。许多质量问题源于配置问题,如错误的工作目录、缺少写入权限或错误的模型默认值。
通过测试和审查提升可靠性
不要只让 Codex 做变更——还要让它:
- 编写或更新测试
- 运行相关测试套件
- 检查 lint、格式化或类型检查
- 确认最终行为符合请求
- 审查 diff 中的 Bug、回归或风险模式
审查选项
/review 斜杠命令提供:
- 对比 base 分支审查(PR 风格)
- 审查未提交的变更
- 审查某个 commit
- 自定义审查指令
团队可以维护一个 code_review.md 文件,从 AGENTS.md 中引用,以保持一致的审查行为。GitHub Cloud 集成支持自动 PR 审查——OpenAI 使用 Codex 审查他们 100% 的 PR。
侧边面板(Side Panel)
侧边面板让工作产物紧贴在产生它的对话旁边,无需导出切换上下文。支持直接在产物上做标注(Annotations),标注会留在工作循环内。
内置浏览器让 Codex 可以检查渲染后的页面、控制它、并直接在审查的界面上响应标注。特别适合:index.html 轻量静态产物、Storybook UI 审查、Remotion Studio 程序化动画、基于浏览器的幻灯片、数据应用分析工作流。
使用 MCP 获取外部上下文
MCP(Model Context Protocol,模型上下文协议)将 Codex 连接到外部工具和系统。
何时使用 MCP:
- 上下文存在于仓库之外
- 数据频繁变化
- 你希望 Codex 使用工具,而非依赖手动粘贴的指令
- 你需要跨用户或项目的可重复集成
Codex 支持 STDIO 和 Streamable HTTP 服务器(带 OAuth)。通过应用中的 Settings → MCP servers 或 CLI 中的 codex mcp add 进行配置。
建议:从一两个能消除手动循环的工具开始,然后再扩展——不要一次性接入所有工具。
工具与触达范围 — 当线程有了连续性,下一个问题就是它能作用于什么。Codex 可以逐层向外扩展:
$browser— 侧边面板中的内置浏览器,检查和标注网页@chrome— 依赖用户登录状态的 Chrome 工作流@computer— 只能通过桌面 GUI 完成的工作
Slack、Gmail、Calendar 之所以重要,是因为许多重要任务最初以消息、收件箱项目或日程问题的形式出现,然后才变成代码。
将重复性工作转化为 Skills
Skills 将指令、上下文和支持逻辑打包到一个 SKILL.md 文件中,可在 CLI、IDE 和应用中一致地使用。
Skill 设计原则:
- 每个 Skill 专注于一项工作
- 从 2-3 个具体用例开始
- 定义清晰的输入和输出
- 编写描述,说明 Skill 做什么以及何时使用
- 包含用户实际会说的触发短语
- 仅在能提升可靠性时才添加脚本或资源
适合做成 Skill 的场景:
- 日志分类
- Release Notes 起草
- 按清单进行 PR 审查
- 迁移规划
- 遥测或事件摘要
- 标准调试流程
使用 $skill-creator 生成第一个版本。个人 Skills 放在 $HOME/.agents/skills;团队共享 Skills 放在仓库中的 .agents/skills。
使用 Automations 处理重复性工作
当工作流稳定后,通过 Codex 应用中的 Automations 标签页将其调度为后台运行。配置项目、提示词(可调用 Skills)、执行频率和执行环境(专用 git worktree 或本地)。
适合自动化的场景:
- 汇总最近的 commits
- 扫描潜在 Bug
- 起草 Release Notes
- 检查 CI 失败
- 生成站会摘要
- 按计划运行可重复的分析
核心原则:**”Skills 定义方法,Automations 定义调度。”** 如果工作流仍需要引导,先将其做成 Skill。也可以将 Automations 用于反思和维护——审查会话、总结摩擦点、持续改进配置。
线程自动化示例 — 固定线程很有用,但它们仍然等待用户回来。线程自动化可以每隔几分钟或几小时检查一次,持续运行直到满足条件。例如一个”参谋长”线程每 30 分钟运行一次:
“每 30 分钟检查 Slack 和 Gmail 中需要我关注的未回复消息。帮我排列优先级。如果有人问我问题,尽可能深入研究答案并起草回复,但不要发送。”
当用户回来时,收集上下文的昂贵工作往往已经完成——人类仍然决定什么被发送。
使用会话控制组织长期工作
会话会随时间积累上下文、决策和操作。
有用的 CLI 斜杠命令:
/experimental— 切换实验性功能/resume— 恢复已保存的对话/fork— 创建新线程,保留原始记录/compact— 压缩早期上下文(也会自动触发)/agent— 在并行的 agent 线程间切换/theme— 选择语法高亮主题/apps— 在 Codex 中使用 ChatGPT 应用/status— 检查当前会话状态
会话管理原则:
- 每个连贯的工作单元一个线程
- 如果工作属于同一个问题,留在同一个线程中(保留推理轨迹)
- 仅在工作真正分叉时才使用 fork
- 使用子智能体工作流将有界工作(探索、测试、分类)从主线程中卸载
Goals — 有明确终点的长期任务
Goals 是更长期运行的 Codex 任务,具有智能体可以持续推进的明确终点。
一个弱目标是”实现这个 Markdown 文件中的计划”;一个强目标有可衡量的成功标准。例如,工程师可以将内部工具从 Python 迁移到 Rust——新实现在单元测试通过之前不算完成。
Goal 结合了持续执行与验证器。用户定义结果、停止条件和判断是否在接近目标的信号。有用的验证器包括:
- 测试套件
- 基准测试
- Bug 复现
- 验证矩阵
- 必须持续通过的端到端工作流
有雄心很重要,但没有验证就只是一个愿望。
共享记忆(Shared Memory)
长期运行的线程在共享单个对话之外的记忆时会变得更有用。一种持久模式是将持久线程锚定在 Obsidian vault 中——一个纯文件文件夹,易于检查、编辑、移动和长期保存。
1 | vault/ |
在顶层,AGENTS.md 可以定义 Codex 如何更新该工作空间。一个实用的配置:
- 将
~/vault视为持久工作记忆 - 优先使用规范笔记而非笔记蔓延
- 明确路由 TODO、人员、项目、每日摘要和草稿笔记
- 保留决策、阻塞项、负责人、日期和有用链接
- 如果没有有意义的变化,不要搅动 vault
重要的上下文不应该只存在于对话记录中。把它写在下一个线程能接续的地方。
常见错误
| 错误做法 | 正确做法 |
|---|---|
| 在提示词中堆积持久性规则 | 写入 AGENTS.md 或 Skills |
| 不提供构建/测试命令导致智能体无法验证 | 在 AGENTS.md 中写清楚 |
| 复杂任务跳过规划直接开干 | 先用 Plan 模式规划 |
| 在理解工作流之前就授予完整权限 | 默认收紧,按需放开 |
| 在同一文件上运行多个活跃线程 | 使用 git worktree 隔离 |
| 手动都没跑通就自动化 | 先手动验证可靠,再配置 Automation |
| 盯着 Codex 一步步执行 | 让它并行运行,你去做别的事 |
| 每个项目只用一个线程 | 每个任务一个线程(避免上下文膨胀) |
原文链接:OpenAI Codex Best Practices
推文来源:@jxnlco — Getting the most out of Codex








