文章目录

01 入门篇:快速上手与安装

本章是本文档的起点:先建立对 Codex 的整体认知,再完成账号与环境准备,并用 IDE / CLI / Cloud 三种方式把安装与一次真实任务跑通。

1.1 Codex 为何物?

官网地址:https://developers.openai.com/codex/quickstart

在这里插入图片描述

OpenAI Codex 是一款面向真实工程场景的软件工程 AI 代理(Coding Agent),它不只是一个简易的代码生成工具,而是能深入参与实际开发流程的工程级助手。 Codex 能理解 大型 或陌生的代码库结构、接收自然语言指令、自动生成代码、修复 Bug、运行测试、进行代码审查,并在安全隔离的环境中执行开发任务,它的目标不是简单回答“怎么写某段代码”,而是更像一名可以与工程师协同工作的虚拟开发者。

Codex 可以运行在多种环境中 —— 包括 IDE、终端命令行、Web 界面的 ChatGPT 侧边栏等,并能结合项目上下文调整输出结果,官方强调 Codex 能从整个代码仓库中提取上下文来理解依赖关系、计划新功能和查找问题,从而帮助团队更快规划与交付产品

在实际使用中,Codex 主要体现在以下几个工程级能力上:

  • 【编写代码】:开发者只需用自然语言描述需求,Codex 会结合现有项目结构和代码规范生成实现代码,而不是孤立的函数片段
  • 【理解陌生或遗留代码库】:Codex 可以阅读复杂、年代较久的代码,并解释系统结构、核心逻辑和关键依赖,帮助开发者快速上手
  • 【代码审查】:Codex 能分析代码中的潜在 Bug、逻辑问题以及容易被忽略的边界情况,起到初级代码审查的作用
  • 【调试与修复问题】:当测试失败或程序异常时,Codex 可以帮助定位错误来源、分析失败原因,并给出针对性的修复建议
  • 【自动化工程任务】:Codex 能执行重构、测试、迁移、初始化配置等重复性工作,让开发者把精力集中在更高价值的工程决策上

开发者只需用自然语言描述需求,Codex 就可结合整个项目上下文给出解决方案,并且在需要时自动编辑文件、运行测试等,减轻人工重复工作和上下文切换的负担。

1.2 账号与环境准备

1.2.1 国内注册

博主不太建议直接使用国内中间代理的 Codex,虽然口头上说是 “直连”,其实本质是走了代理,因此也踏了不少坑,费用是直连的几倍,最终使用了直连的方式。这里不讲述如何使用国内的,网上搜索应该一大堆。

1.2.2 官方直连

直连的方式很简单,只需要 魔法”+“注册” + “代充 即可,相信大家都懂,费用大概一个月100多,而且根本用不完,相比国内的中间代理,省了不止一倍,而且不存在稳定性的问题。

怎么使用 “魔法”,这里不再阐述了,适合自己就好,现在官网并不支持注册,可以自己去某宝买一个账号,同时让他代充即可。最后登录成功的 web 页面如下,可以看到目前默认使用 GPT 5.2,同时也支持邀请团队成员(这里使用的是 team 版,plus 版本可能更贵):

在这里插入图片描述

设置页面 也能看到用量:

在这里插入图片描述

1.2.3 价格与订阅方案

OpenAI 的 AI Codex 编程助手 并不是单独付费的单品,而是包含在不同 ChatGPT 订阅计划中的一项高级功能,用户通过这些计划即可在 WebCLIIDE 扩展等环境中使用 Codex 执行代码生成、重构、代码审查等任务。

Codex 的订阅计划如下

方案 /价格 定位 特性
Plus($20/月 ) 轻量编码需求 每周适合做几个中等规模的编码会话,可在 Web、CLI、IDE 中使用 Codex,以及获得最新模型和扩展使用额度
Pro($200/月 ) 全职开发者 包含 Plus 的所有内容,同时获得更高的使用限额、优先请求处理、更高性能的云任务等能力。
Business($30/用户/月) 团队与企业 适合公司团队使用,包括更大的 VM 实例、更强安全性控制、可共享使用额度等。
Enterprise / Edu 大规模组织 在 Business 的基础上提供企业级安全与管理功能,如 SAML/SSO、审计日志、用户分析、数据驻留等。

订阅中包含的 Codex 特性:

  • Web、CLI、IDE 扩展环境中的 Codex 辅助编码;
  • 最新 Codex 模型(如 GPT-5.2-Codex);
  • 较高的本地/云端使用额度(Pro 计划更高);
  • 可用 ChatGPT 额度扩展(通过购买额外 credits);

下面我帮你 补充完善 3.2 / 3.3 部分内容,尽可能保留原始链接的官方说明细节,并结合官方 Quickstart 页面信息进行整理。([OpenAI Developers][1])


1.3 Codex 安装指南

至此,相信读者们都能注册 Codex 成功了,那么怎么使用呢?这里讲解其安装方式。

1.3.1 系统与环境要求

在开始安装 Codex 之前,需要确保满足以下安装环境,整体配置门槛不高,主流开发环境均可顺利运行。

类型 要求
操作系统 macOS 11.0 及以上,Ubuntu 20.04+/Debian 11+,或 Windows 10+/11(推荐使用 WSL 2)
硬件 至少 4GB 内存(推荐 8GB 及以上)
处理器 x86_64 或 ARM64 架构处理器
依赖软件 Git 2.30+
Python 3.10+
Node.js 18+
运行环境 Docker 20.10+(可选,但强烈推荐)
网络 需要稳定的互联网连接,用于依赖下载、认证及模型调用
Shell Bash 或 Zsh(macOS / Linux),Windows 建议使用 WSL Bash
权限 当前用户需具备本地软件安装与网络访问权限

1.3.2 IDE 扩展

在这里插入图片描述

Codex 提供了 IDE 集成扩展,可以在熟悉的开发环境中启动 AI 编程助手,提升效率,官方 Quickstart 列出了多个常用编辑器的下载方式:

支持的 IDE 环境

安装与使用流程

  1. 从下载链接下载安装对应扩展;
  2. 在 IDE 中启用扩展后,Codex 会显示在侧边栏;
  3. 使用 ChatGPT 账号或 API key 登录,完成授权;
  4. Codex 会默认启动在 Agent 模式,可读取文件、运行命令并修改项目目录文件,建议配合 Git 管理变更记录。

1.3.3 CLI 安装

Codex CLI 是一款运行在本地终端的轻量级 AI 编程代理,可通过命令行与代码库交互,CLI 支持 macOS / Windows / Linux 平台,并可结合 Git 管理本地项目。

官方 Quickstart 提供了两个主流安装方式:

# 使用 npm 全局安装
npm install -g @openai/codex

# 或使用 Homebrew 安装
brew install codex

安装完成后,在终端运行:

codex

首次运行时,会提示你使用 ChatGPT 账号登录API key 登录,登录成功后,CLI 会提升权限读取当前目录的代码库,并允许你发出自然语言指令来完成任务。

1.3.4 Cloud(Web 云端)

CloudCodex 在线版,可直接在浏览器使用,无需本地安装。你可以在浏览器中创建项目、执行任务,并将 Codex 与 GitHub 仓库连接。使用流程如下:

  1. 在浏览器打开 Cloud Codex 平台。
  2. 登录 ChatGPT 账号;
  3. 在环境设置中连接你需要操作的 GitHub 仓库;
  4. 发起任务并监控执行进度;
  5. 使用 diff 工具检查变更,可直接在网页上创建 Pull Request。

在这里插入图片描述
特点如下:

  • 零安装:无需在本地配置,只要联网即可使用;
  • 集成 GitHub:可将 AI 修改整合到团队协作流程;
  • 实时预览:在浏览器中实时查看日志与变更摘要。

1.3.5 三种安装方式对比

方式 安装需求 使用模式 代码修改 场景适用性
IDE 扩展 本地插件安装 图形 IDE 集成 可直接编辑项目 编辑器内即时建议
CLI 本地安装命令行工具 终端命令驱动 支持自动读写修改 自动任务与脚本
Cloud 无安装,仅浏览器 Web 可视化操作 支持与 GitHub PR 流程协作 协作开发 & 云端执行

1.4 Codex 快速入门(CLI 实战)

前面讲的可能都比较偏概念化,这里实际的来操作演示,效果可能更好。

1.4.1 初始化与授权登录

1.4.1.1 创建项目

初次使用,我们可以进入项目的根目录,这里为了方便演示,我新建了一个 html-project 的文件夹,然后执行 codex 命令如下:

mkdir html-project
cd html-projectc
codex
1.4.1.2 登录与授权流程

运行后,会提示登录,这里提供两种登录方式,一种是直接跳转至 web 页面登录,一种是使用 API KEY,这里使用跳转 web 方式登录:

在这里插入图片描述

选择第一种之后,会自动跳转到浏览器授权页面:
在这里插入图片描述

点击 Continue 授权,授权成功后,页面会提示如下:
在这里插入图片描述

切换回终端,提示登录成功了,
在这里插入图片描述
登录成功页面如下:
在这里插入图片描述

1.4.2 用一句话完成一个真实需求

接下来,我们可以开发任务,例如:帮我创建一个静态的页面,打开后,是星空的动态效果。可以看到,Codex 在执行任务的过程中,会提示用户是否要执行该操作,上述有三个选项,我们可以选择2,意思是整个执行的过程都同意,不需要每次都提示:
在这里插入图片描述

最后执行成功的结果如下:
在这里插入图片描述
打开生成的HTML,可以看到如下效果,效果还是挺不错的。
在这里插入图片描述

1.5 小结

到这里,本章已经把 Codex 的快速上手流程跑通:从认识 Codex、账号与环境准备,到安装与在 CLI 中完成一个真实需求。

Codex 更像一名能读仓库、改文件、跑命令并验证结果的工程协作者,而不是一次性“生成代码”的工具。

建议你接下来:

  • 选一个真实小需求,按“描述 → 执行 → 验证 → 提交/回滚”走完闭环
  • 再进入后续篇章,把审批策略、沙箱边界与团队协作方式配置到位

02 概念篇:核心概念与方法论

本章承接入门篇,聚焦一个更关键的问题:当 Codex 不只是“会写代码”,而是能维护上下文、调用工具并执行工作流时,我们应该如何与它协作,才能稳定产出可交付结果?

当真正把 Codex 引入到日常工程实践中,一个更现实的问题很快会出现:

Codex 并不仅仅是一个“会写代码的模型”,而是一个具备状态、工具调用能力和工作流意识的工程智能体。
那么,我们究竟应该如何与它协作,才能真正发挥它的价值?

本文将围绕这一问题,系统整理 Codex 官方文档中提出的一组 核心概念与工程方法论,帮助大家从“用工具”过渡到“用智能体”,主要包括:

  • Prompting:如何给 Codex 下达可执行、可验证的工程级指令
  • Threads & Context:如何理解 Codex 的会话模型与上下文管理机制
  • Workflows:在真实开发场景中,如何设计高效、可复用的工作流程
  • Codex Models:不同模型在工程任务中的定位与选择
  • AI-Native Engineering Team:当智能体具备长时推理与执行能力后,工程团队应如何演进

本文并非简单翻译文档,而是站在工程实践视角,将 Codex 的能力映射到日常开发中的典型任务(理解代码、修 Bug、写测试、重构、审查 PR 等),帮助你回答一个关键问题: 如何把 Codex 从“辅助工具”,真正变成工程流程中的一名“虚拟工程师”?

在这里插入图片描述

2.1 Prompting(提示词)

原文地址:https://developers.openai.com/codex/prompting

2.1.1 与 Codex 代理的交互

当通过发送 提示词(promptsCodex 进行交互,提示词就是用自然语言描述你希望它做什么的消息,例如:

Explain how the transform module works and how other modules use it.
Add a new command-line option `--json` that outputs JSON.

提交一个提示后,Codex 会循环执行以下过程:

  1. 调用模型(生成输出)
  2. 根据模型输出执行相应操作(例如读写文件、编辑文件、调用工具等)

这个过程会一直持续,直到任务完成或你取消它,就像 ChatGPT 一样,Codex 的效果取决于给出的指令质量。以下是一些实用的提示建议:

  • Codex 在可以验证其工作的情况下生成更高质量的输出: 在提示中包含复现问题的步骤、验证某个特性、运行 lint 或 pre-commit 检查的方法会更有帮助。
  • 将复杂任务拆分成更小的步骤:Codex 更擅长处理分解之后、聚焦明确的子任务,对于大型复杂任务,分成小块更容易让 Codex 测试并便于你审查结果,如果不确定如何拆分任务,可让 Codex 提出一个计划。

2.1.2 Threads(线程)

一个 线程 表示一个独立的会话:包括你的提示、模型输出和随后所有的工具调用,一个线程可以包含多个提示词

例如:你的第一个提示可能让 Codex 实现某个功能,而后续提示可能要求添加测试

  • 当 Codex 正在处理任务时,该线程处于 “运行中” 状态;
  • 你可以同时运行多个线程,但要避免多个线程同时修改同一文件;
  • 也可以稍后恢复一个线程,只需继续向该线程发送新的提示。
2.1.2.1 本地线程 vs 云端线程

本地线程(Local threads)

  • 在本地机器上运行,Codex 可以读取和编辑本地的文件,并运行命令,可以看到实际更改并使用现有工具。
  • 为了降低意外修改工作区之外内容的风险,本地线程运行在一个沙箱环境中。

云端线程(Cloud threads)

  • 在隔离的环境中运行,Codex 会克隆你的仓库并检出正在处理的分支;
  • 云端线程适合并行运行任务或从另一台设备委派任务;
  • 使用云端线程之前,需要先将你的代码推送到 GitHub,也可以委派当前本地工作状态到云端线程。

2.1.3 Context(上下文)

当提交一个提示词时,包括 Codex 可利用的上下文 会提升结果质量,例如引用相关文件、图片等

Codex IDE 插件会自动将打开的文件列表和选中的文本范围作为上下文发送。
在这里插入图片描述

在任务执行过程中,Codex 也会从文件内容、工具输出以及正在进行的记录中收集上下文信息,所有信息必须适配模型的 上下文窗口(context window) 大小,它会根据不同模型而变化。

如果任务较长,Codex 可能会自动通过总结相关信息并丢弃不相关细节来 压缩上下文,经过反复压缩,Codex 可以在许多步骤中持续处理复杂任务。

2.2 Workflows(工作流程)

原文地址:https://developers.openai.com/codex/workflows

Codex上下文明确、完成标准清晰 的情况下效果最好,建议每个工作流程都包含以下内容:

  • 【适用场景】: 什么时候使用该流程,以及最适合的 Codex 入口(IDE / CLI / 云端);
  • 【步骤与示例提示】: 实际操作步骤和可直接使用的示例提示;
  • 【上下文说明】:Codex 自动能看到哪些内容,哪些需要你显式提供;
  • 【校验方法】:如何确认 Codex 的输出是正确的。

说明:

  • IDE 扩展 中,当前打开的文件会自动作为上下文。
  • CLI 中,通常需要在提示中显式写出路径,或使用 @路径 / /mention 来附加文件。

2.2.1 案例一:解析代码库

适用于你正在接手新项目、维护遗留系统,或需要理解协议、数据模型、请求流等场景。

IDE 扩展工作流程(最快的本地探索方式)

Step 1. 打开最相关的文件

Step 2. 选中你关注的代码段(推荐)

Step 3. 向 Codex 提示,并要求它包含:

  • 各模块的职责总结
  • 数据在哪里被校验
  • 修改代码时需要注意的一到两个“坑”
Explain how the request flows through the selected code.

Step 4. 校验提示(Verification):用于快速验证 Codex 是否理解正确。

Summarize the request flow as a numbered list of steps. Then list the files involved.

CLI 工作流程(适合需要 Shell 命令与执行记录):

Step 1:在仓库根目录启动 Codex:

codex

Step 2: 附加文件并提示:

I need to understand the protocol used by this service.
Read @foo.ts @schema.ts and explain the schema and request/response flow.
Focus on required vs optional fields and backward compatibility rules.

上下文说明:在 CLI 中使用 @/mention 附加文件路径

在这里插入图片描述


2.2.2 案例二:Bug 修复

当你本地可以重现失败行为时使用。

CLI 工作流程(快速复现 → 修复 → 验证)

Step 1. 启动 Codex

codex

Step 2. 提供清晰的 Bug 描述与复现步骤

问题描述: 点击设置页的 “Save” 有时显示 “Saved”,但实际上没有保存。

复现步骤:

1) npm run dev
2) 打开 /settings
3) 切换 “Enable alerts”
4) 点击 Save
5) 刷新页面,设置被重置

约束条件:

  • 不修改 API 结构
  • 修复尽量最小化
  • 尽可能添加回归测试

Step 3. 校验

  • 修复后再次执行复现步骤
  • 运行 lint / 测试并汇报结果

IDE 扩展工作流程

Step 1: 打开你认为有问题的文件及其调用方
Step 2: 提示词

Find the bug causing "Saved" to show without persisting changes.
After proposing the fix, tell me how to verify it in the UI.

2.2.3 案例三:编写测试用例

当你希望明确指定测试目标和范围时使用。

IDE 扩展(基于选区)

Step 1. 打开函数所在文件

Step 2. 选中函数定义

Step 3. 通过命令面板选择 Add to Codex Thread

Step 4. 提示词

Write a unit test for this function.
Follow conventions used in other tests.

CLI 工作流程

Step 1. 启动 Codex

codex

Step 2. 提示词

Add a test for the invert_list function in @transform.ts.
Cover the happy path plus edge cases.

2.2.4 案例四:从截图原型生成代码

当你有设计稿或截图,希望快速生成可运行 UI 时使用。

CLI 工作流程(图片 + 提示)

Step 1:将截图保存为本地文件(如 ./specs/ui.png

Step 2:启动 Codex

codex

Step 3: 将图片拖入终端作为提示的一部分

Step 4: 提示词

Create a new dashboard based on this image.

Constraints:
- Use react, vite, and tailwind in typescript.
- Match spacing, typography, and layout as closely as possible.

Deliverables:
- A new route/page that renders the UI
- Any small components needed
- README.md with instructions to run it locally

Step 5: 校验,如允许,让 Codex 启动 dev server 并给出访问地址


IDE 扩展(图片 + 项目风格)

Step 1:在 Codex 聊天中粘贴或拖入截图

Step 2:提示词

Create a new settings page.
Use the attached screenshot as the target UI.
Follow design and visual patterns from other files in this project.

2.2.5 案例五:迭代 UI

适合「改样式 → 刷新 → 再改」的快速循环。

CLI 工作流程

Step 1:启动 Codex

codex

Step 2:在另一个终端启动开发服务器

npm run dev

Step 3:提示词

Propose 2-3 styling improvements for the landing page.

Step 4: 选择方案并继续细化

Step 5: 在浏览器中实时预览并决定是否提交


2.2.6 案例六:将重构任务委派到云端

适合 本地设计方案,云端并行实现 的大任务。

本地规划(IDE)

Step 1: 确保代码已 commit 或 stash

Step 2: 让 Codex 生成计划:

$plan
We need to refactor the auth subsystem to:
- split responsibilities
- reduce circular imports
- improve testability

Constraints:
- No user-visible behavior changes
- Keep public APIs stable
- Include a step-by-step migration plan

Step 3: 审查并调整计划


云端执行(IDE → Cloud)

Step 1: 选择云环境

Step 2: 提示:

Implement Milestone 1 from the plan.

Step 3:审查云端 diff

Step 4: 直接创建 PR 或拉取到本地测试

2.2.7 案例七:本地代码审查

在提交或创建 PR 前进行质量检查。

CLI 工作流程

Step 1: 启动 Codex

codex

Step 2 :执行

/review

Step 3:可选增强提示

/review Focus on edge cases and security issues

2.2.8 案例八:审查 PR

无需拉取分支即可获得审查意见。

GitHub 评论工作流程

Step 1: 打开 PR

Step 2: 评论

@codex review

Step 3: 或指定方向

@codex review for security vulnerabilities

在这里插入图片描述

2.2.9 案例九:更新文档

用于生成准确、一致的文档修改。

IDE / CLI 工作流程

Step 1:打开或 @ 引用目标文档

Step 2: 提示

Update the "advanced features" documentation to provide authentication troubleshooting guidance.
Verify that all links are valid.

Step 3: 审查并渲染确认

2.3 Codex 模型(Codex Models)

原文地址:https://developers.openai.com/codex/models

在这里插入图片描述

2.3.1 推荐模型

推荐:gpt-5.2-codex
gpt-5.2-codex

面向真实工程任务的 最先进的智能编码模型,适用于 Codex CLI & SDK、IDE 扩展、云端任务、ChatGPT 积分和 API 调用

codex -m gpt-5.2-codex

推荐:gpt-5.1-codex-mini
在这里插入图片描述

更小、更具成本效益的版本,但能力较 gpt-5.2-codex 略弱

codex -m gpt-5.1-codex-mini

2.3.2 替代模型

gpt-5.1-codex-max: 针对长期、智能编码任务优化

codex -m gpt-5.1-codex-max

gpt-5.2:最佳通用智能体模型,适用于各类任务

codex -m gpt-5.2

gpt-5.1:优秀的跨领域编码与智能体任务模型

codex -m gpt-5.1

gpt-5.1-codex:针对长期智能编码任务的模型(已由 gpt-5.1-codex-max 更新替代)

codex -m gpt-5.1-codex

gpt-5-codexgpt-5-codex-mini:分别是 GPT-5 系列的编码优化版及更小成本版本

codex -m gpt-5-codex
codex -m gpt-5-codex-mini

gpt-5:用于编码与智能体任务的基础版本(已被后续版本取代)

codex -m gpt-5

2.3.3 其他模型支持

Codex 支持调用其他任意符合 Responses APIChat Completions API 的模型与提供者,以满足特定使用需求。

注意:Chat Completions API 支持即将弃用。([developers.openai.com][1])

2.3.4 配置模型

设置默认本地模型:在 config.toml 文件中添加模型名称,例如:

model = "gpt-5.2"

临时切换模型

  • 在 CLI 活动线程中使用 /model 命令
  • 或在 IDE 扩展下拉菜单选择模型
  • 也可以在启动命令中指定模型:
codex -m gpt-5.1-codex-mini

云任务模型:目前无法更改 Codex Cloud 任务的默认模型。

2.4 构建 AI 原生工程团队(AI-Native Team)

如何让编码智能体加速软件开发生命周期:https://developers.openai.com/codex/guides/build-ai-native-engineering-team

AI 模型所能执行的任务范围正在快速扩展,这对工程领域有深远影响,最先进的系统现在可以维持 多小时连续推理。截至 2025 年 8 月,METR 发现领先模型能够以 大约 50% 的准确率完成连续 2 小时 17 分钟的任务,这项能力正在迅速提升——任务长度约每七个月翻倍,几年前,模型只能处理约 30 秒的推理(足够提供小段代码建议),如今由于能维持更长连贯的推理,整个软件开发生命周期(SDLC)都可以引入 AI 辅助,让编码智能体在 规划、设计、开发、测试、代码审查和部署等阶段发挥作用。
在这里插入图片描述
这里将展示 AI 智能体如何在 SDLC 各阶段提供帮助,并给出工程领导者可以立即采用的实践建议,帮助团队构建 AI 原生工程流程与团队结构

2.4.1 AI 编程:从自动补全到智能体

AI 编程工具已经远远超越了最初作为自动补全助手的角色,早期工具只能处理简单任务,例如建议下一行代码或填充函数模板,随着模型推理能力增强,开发者开始通过 IDE 中的聊天界面与智能体互动,用于结对编程和代码探索。如今的编程智能体能够:

  • 生成完整文件;
  • 搭建新项目结构;
  • 将设计方案转换成代码;
  • 推理复杂多步问题,如调试或重构;
  • 在云端或多智能体环境中执行流程;

这改变了工程师的工作方式:不再在 IDE 内部与智能体逐行写代码,而是能将整个工作流程交给它处理,让工程师集中精力于高价值任务

智能体的能力包括:统一跨系统上下文、结构化工具执行、持久项目记忆、自动评估循环等。

2.4.2 SDLC 各阶段导入智能体

以下按照软件开发生命周期的主要阶段,说明智能体如何帮助提升效率,以及工程师在各阶段仍须承担的核心角色。

2.4.2.1 阶段一:规划(Plan)

问题:传统上,团队需要工程师判断功能可行性、开发时长及涉及系统,这通常需要对代码库有深入理解并多轮迭代才能明确范围。

智能体如何帮助

  • 与任务追踪系统集成读取规范文档
  • 与代码库交叉比对,标出不明确或冲突项
  • 拆解任务、估算复杂度
  • 快速追踪代码路径,展示涉及的服务及依赖关系

工程师如何转变

  • 工程师审核智能体分析结果以验证准确性与完整性
  • 人类负责故事点分配、难度评估与战略规划
  • 决策仍由人主导,如优先级确定与关键路径决策

入门清单

  • 实现需求与源码对齐流程
  • 自动化工单标签、去重和初步分解
  • 在任务进入特定阶段触发智能体运行补充信息

2.4.2.2 阶段二:设计(Design)

问题:设计往往被样板代码、项目骨架搭建、和 UI 组件初始化等基础工作拖慢。

智能体如何帮助

  • 自动生成样板代码与项目结构
  • 将设计 mockups 转换成可运行组件代码
  • 即时应用设计 token 或样式指南
  • 提出可访问性改进建议

工程师如何转变

  • 审核智能体输出的组件符合设计规范及可访问性要求
  • 专注于可扩展架构设计与质量标准维护
  • 设计师可探索更多设计方案加速验证迭代

入门清单

  • 使用支持文本+图像输入的多模态智能体
  • 将设计工具集成到智能体工作流
  • 建立从设计 → 组件 → 实现的自动化流程

2.4.2.3 阶段三:构建(Build)

问题:工程师常花大量时间将规范转换为代码结构、串联服务、生成样板、处理构建错误等机械工作。

智能体如何帮助

  • 编写完整功能实现,包括数据模型、API、UI、测试与文档
  • 跨文件搜索与一致性修改
  • 生成错误处理、遥测、安全包装等样板
  • 处理构建错误并即时修复
  • 与测试一体化写代码和测试

工程师如何转变

  • 审核AI生成代码的架构、安全与性能影响
  • 设计模式、规则和约束指导智能体输出
  • 关注正确性、可维护性与长期质量

入门清单

  • 从明确任务开始
  • 智能体生成 PLAN.md 并纳入代码库
  • 管理 AGENTS.md 文件以设定智能体规则与循环反馈
  • 确保智能体执行命令可成功运行 ([developers.openai.com][2])

示例:有企业每天用智能体将规范转成可运行代码,几分钟交付新功能。


2.4.2.4 阶段四:测试(Test)

问题:写测试既占时间又需深入理解边界情况,而测试维护常随代码变化而成为负担。

智能体如何帮助

  • 基于需求与代码逻辑自动生成测试用例
  • 建议边界条件和故障场景
  • 随代码演进自动维护测试

工程师如何转变

  • 审查生成测试以确保其有效性
  • 把握整体测试覆盖与质量目标
  • 指导智能体理解测试工具和标准

入门清单

  • 把测试作为独立步骤引导智能体生成
  • 在 AGENTS.md 设定测试覆盖要求
  • 给智能体示例代码覆盖工具以提高测试质量

2.4.2.5 阶段五:审查(Review)

问题:代码审查耗时,且需要在深度审核与快速反馈之间权衡。

智能体如何帮助

  • 提供一致的基础审查
  • 理解运行时行为并追踪跨文件逻辑
  • 发现关键错误或逻辑缺陷

工程师如何转变

  • 最终判断代码是否可合并
  • 审查架构一致性、模式使用与功能匹配性
  • 持续定义审查质量衡量标准

入门清单

  • 收集并保存优秀审查案例用于评估工具
  • 选择针对代码审查训练过的模型
  • 定义团队高质量审查指标

2.4.2.6 阶段六:文档(Document)

问题:文档更新常被忽略且滞后于代码变更。

智能体如何帮助

  • 自动基于代码生成结构化说明
  • 生成系统架构图(例如 Mermaid)
  • 持续纳入发布流程自动产出变更摘要

工程师如何转变

  • 审核核心文档的准确性
  • 决定文档组织结构与关键内容
  • 设置标准模板与智能体应遵循规则

入门清单

  • 在输出中包含自动生成文档的提示
  • 与发布流程集成文档自动化

2.4.2.7 阶段七:部署与维护(Deploy & Maintain)

问题:线上问题排查通常需要在多个工具间切换查看日志与历史代码。

智能体如何帮助

  • 访问日志和遥测数据
  • 快速关联错误与代码变更
  • 提供修复建议

工程师如何转变

  • 验证诊断结果可靠性与符合安全规范
  • 决定修复与发布策略
  • 在关键决策上保持最终控制权

入门清单

  • 将智能体集成至日志与部署工具
  • 准备标准提示模板用于分析异常
  • 做模拟演练测试智能体准确性

2.4.3 小结

AI 编程智能体正在重塑软件开发生命周期,它们能承担传统上耗时、重复的多步骤工作,让工程师专注于架构、设计、产品意图等高价值任务,成功打造 AI 原生工程团队不需要彻底重写流程,而是 以小型、精确的自动化开始积累效益,逐步扩大智能体责任范围,从而提升整体效率、质量与创新能力。

2.5 小结

本章围绕 Prompting、Threads & Context、Workflows、Models 与 AI-Native 团队实践,梳理了把 Codex 用成“工程智能体”的关键方法。

核心结论是让它可验证、可迭代、可控边界地工作:把复现步骤、验收标准与验证命令写进提示,把上下文管理与工作流设计当成工程能力的一部分。

接下来可以结合资源篇与使用篇,把这些方法论落到具体场景与入口选择上。


03 资源篇:官方 Cookbooks 导航(251 篇)

原文地址:https://developers.openai.com/resources/cookbooks

本章是本合集的“资料索引页”:把 OpenAI 官方 Cookbooks 按主题整理成可检索的导航表。你可以把它当作查找灵感与范例的入口——需要哪个主题,就从哪个分类开始。

本文主要整理自 OpenAI 官方 Cookbooks,合计 251 篇(已排除已归档内容),并按主题分类,便于快速导航,便于定位与阅读。

分类 描述 篇数
开源与自部署 gpt-oss 本地/自托管部署与生态 13
多模态-图像/视觉/视频 图像生成、理解与视频处理 19
音频/语音 语音识别、合成与实时音频 16
检索/RAG/搜索 向量检索、RAG 与搜索集成 79
ChatGPT 生态 ChatGPT 集成、工作流与数据 29
工具调用与扩展 函数调用、工具编排与扩展 28
代理与自动化 Agent 构建、自动化与多代理 10
微调/训练与提示词 微调、强化学习与提示工程 12
评测/安全/合规 Evals、治理、安全与合规 13
开发工具与工程实践 Codex、文档与工程实践 7
基础API与性能 核心 API、成本与性能优化 25

3.1 开源与自部署

标题 标签 发布日期
Build your own content fact checker with gpt-oss-120B, Cerebras, and Parallel cerebras, fact-checking, gpt-oss, open-models, reasoning, search 2026-01-13
User guide for gpt-oss-safeguard gpt-oss, guardrails, open-models 2025-10-29
Fine-tune gpt-oss for better Korean language performance gpt-oss, open-models 2025-08-26
Verifying gpt-oss implementations gpt-oss, gpt-oss-providers, open-models 2025-08-11
How to run gpt-oss locally with LM Studio gpt-oss, gpt-oss-local, open-models 2025-08-07
How to run gpt-oss-20b on Google Colab gpt-oss, gpt-oss-server, open-models 2025-08-06
Using NVIDIA TensorRT-LLM to run gpt-oss-20b gpt-oss, gpt-oss-server, open-models 2025-08-05
OpenAI Harmony Response Format gpt-oss, gpt-oss-fine-tuning, gpt-oss-providers, harmony, open-models 2025-08-05
How to run gpt-oss with vLLM gpt-oss, gpt-oss-server, open-models 2025-08-05
How to run gpt-oss with Transformers gpt-oss, gpt-oss-server, open-models 2025-08-05
How to run gpt-oss locally with Ollama gpt-oss, gpt-oss-local, open-models 2025-08-05
How to handle the raw chain of thought in gpt-oss gpt-oss, gpt-oss-fine-tuning, gpt-oss-providers, open-models 2025-08-05
Fine-tuning with gpt-oss and Hugging Face Transformers gpt-oss, gpt-oss-fine-tuning, open-models 2025-08-05

3.2 多模态-图像/视觉/视频

标题 标签 发布日期
Gpt-image-1.5 Prompting Guide images, vision 2025-12-16
Sora 2 Prompting Guide prompt, sora 2025-10-06
Generate images with high input fidelity images 2025-07-17
Using Evals API on Image Inputs evals, images 2025-07-15
Image Understanding with RAG RAG, images, responses, vision 2025-05-16
Generate images with GPT Image images 2025-04-23
Processing and narrating a video with GPT-4.1-mini’s visual capabilities and GPT-4o TTS API responses, speech, vision 2025-04-22
Using GPT4 Vision with Function Calling chat, vision 2024-12-13
Optimizing Retrieval-Augmented Generation using GPT-4o Vision Modality completions, vision 2024-11-12
Vision Fine-tuning on GPT-4o for Visual Question Answering completions, fine-tuning, vision 2024-11-01
How to parse PDF docs for RAG embeddings, vision 2024-09-29
Using GPT4o mini to tag and caption images embeddings, vision 2024-07-18
Introduction to GPT-4o and GPT-4o mini completions, vision, whisper 2024-07-18
How to combine GPT4o mini with RAG to create a clothing matchmaker app embeddings, vision 2024-07-18
Data Extraction and Transformation in ELT Workflows using GPT-4o as an OCR Alternative completions, vision 2024-07-09
CLIP embeddings to improve multimodal RAG with GPT-4 Vision embeddings, vision 2024-04-10
Creating slides with the Assistants API and DALL·E 3 assistants, dall-e 2023-12-08
What’s new with DALL·E 3? dall-e 2023-11-06
How to create dynamic masks with DALL·E and Segment Anything dall-e 2023-05-19

3.3 音频/语音

标题 标签 发布日期
Transcribing User Audio with a Separate Realtime Request audio, realtime, speech, transcription, voice 2025-11-20
Building with Realtime Mini gpt-realtime-mini 2025-10-11
Realtime Prompting Guide audio, realtime, responses, speech 2025-08-28
Using Evals API on Audio Inputs audio, evals 2025-08-13
MCP-Powered Agentic Voice Framework agents-sdk, functions, mcp, tracing, voice 2025-06-17
Practical guide to data-intensive apps with the Realtime API audio, speech 2025-05-29
Context Summarization with Realtime API audio, speech, tiktoken 2025-05-10
ElatoAI - Realtime Speech AI Agents for ESP32 on Arduino arduino, audio, esp32, iot, realtime-api, speech 2025-05-01
Comparing Speech-to-Text Methods with the OpenAI API agents-sdk, audio, speech 2025-04-29
Building a Voice Assistant with the Agents SDK audio, responses, speech 2025-03-27
Multi-Language One-Way Translation with the Realtime API audio, speech 2025-03-24
Steering Text-to-Speech for more dynamic audio generation audio, completions 2024-11-01
Voice Translation into Different Languages audio, completions 2024-10-21
Enhancing Whisper transcriptions: pre- & post-processing techniques whisper 2023-08-11
Addressing transcription misspellings: prompt vs post-processing completions, whisper 2023-08-11
Whisper prompting guide completions, whisper 2023-06-27

3.4 检索/RAG/搜索

标题 标签 发布日期
Temporal Agents with Knowledge Graphs functions, knowledge-graphs, responses, retrieval 2025-07-22
Reinforcement Fine-Tuning for Conversational Reasoning with the OpenAI API evals, fine-tuning, qa, reinforcement 2025-05-21
Practical Guide for Model Selection for Real‑World Use Cases RAG, functions, insurance, legal, pharma, responses, tool calling, web-search 2025-05-07
Robust question answering with Chroma and OpenAI completions, embeddings 2025-04-23
Multi-Tool Orchestration with RAG approach using OpenAI’s Responses API functions, pinecone, responses, web-search 2025-03-28
Web Search and States with Responses API functions, responses, web-search 2025-03-11
How to handle rate limits completions, embeddings 2025-01-22
Embedding Wikipedia articles for search completions, embeddings 2024-11-26
Pinecone Vector Database and Retool Workflow with GPT Actions chatgpt, chatgpt-and-api, embeddings, gpt-actions-library 2024-11-11
GCP BigQuery Vector Search with GCP Functions and GPT Actions in ChatGPT chatgpt, chatgpt-and-api, completions, embeddings, tiktoken 2024-08-02
Azure AI Search with Azure Functions and GPT Actions in ChatGPT chatgpt, chatgpt-and-api, completions, embeddings, tiktoken 2024-07-08
RAG with a Graph database completions, embeddings 2023-12-08
Supabase Vector Database embeddings 2023-12-04
Semantic search using Supabase Vector embeddings 2023-12-04
Semantic search using MongoDB Atlas Vector Search and OpenAI completions, embeddings 2023-11-21
MongoDB Atlas Vector Search completions, embeddings 2023-11-21
Evaluate RAG with LlamaIndex completions, embeddings 2023-11-06
Question answering with LangChain, Deep Lake, & OpenAI embeddings 2023-09-30
Vector similarity search using Neon Postgres embeddings 2023-09-28
Neon as a vector database embeddings 2023-09-28
How to automate AWS tasks with function calling completions, embeddings, functions 2023-09-27
Using Tair as a vector database for OpenAI embeddings embeddings 2023-09-11
Question answering with Langchain, Tair and OpenAI completions, embeddings, tiktoken 2023-09-11
Azure AI Search as a vector database for OpenAI embeddings embeddings 2023-09-11
Fine-Tuning for retrieval augmented generation (RAG) with Qdrant completions, embeddings, fine-tuning 2023-09-04
Semantic search using Elasticsearch and OpenAI embeddings 2023-08-29
Retrieval augmented generation using Elasticsearch and OpenAI completions, embeddings 2023-08-29
Philosophy with vector embeddings, OpenAI and Cassandra / Astra DB completions, embeddings 2023-08-29
Philosophy with vector embeddings, OpenAI and Cassandra / Astra DB completions, embeddings 2023-08-29
Elasticsearch completions, embeddings 2023-08-29
Cassandra / Astra DB embeddings 2023-08-29
How to evaluate a summarization task completions, embeddings 2023-08-16
Visualizing the embeddings in Kangas embeddings 2023-07-11
Using PolarDB-PG as a vector database for OpenAI embeddings embeddings 2023-07-11
Vector databases embeddings 2023-06-28
Using Weaviate for embeddings search embeddings 2023-06-28
Using Typesense for embeddings search embeddings 2023-06-28
Using Redis for embeddings search embeddings 2023-06-28
Using Qdrant for embeddings search embeddings 2023-06-28
Using Pinecone for embeddings search embeddings 2023-06-28
Using MyScale for embeddings search embeddings 2023-06-28
Using Chroma for embeddings search embeddings 2023-06-28
Search reranking with cross-encoders completions, embeddings 2023-06-28
Financial document analysis with LlamaIndex completions, embeddings 2023-06-22
Question answering using a search API and re-ranking completions, embeddings 2023-06-16
Using Weaviate with generative OpenAI module for generative search completions, embeddings 2023-05-22
SingleStoreDB completions, embeddings 2023-05-22
Semantic search with SingleStoreDB completions, embeddings 2023-05-22
Using Hologres as a vector database for OpenAI embeddings embeddings 2023-05-19
Running hybrid VSS queries with Redis and OpenAI embeddings 2023-05-11
Redis as a context store with Chat Completions completions, embeddings 2023-05-11
Redis vectors as JSON with OpenAI embeddings 2023-05-10
Kusto as a vector database for embeddings embeddings 2023-05-10
Kusto as a vector database embeddings 2023-05-10
Question answering with Langchain, AnalyticDB and OpenAI embeddings, tiktoken 2023-05-05
How to build a tool-using agent with LangChain agents, completions, embeddings 2023-05-02
Using MyScale as a vector database for OpenAI embeddings embeddings 2023-05-01
Typesense embeddings 2023-04-13
Using AnalyticDB as a vector database for OpenAI embeddings embeddings 2023-04-06
Visualizing embeddings in Atlas embeddings 2023-03-28
Getting started with Milvus and OpenAI embeddings 2023-03-28
Getting Started with Zilliz and OpenAI embeddings 2023-03-28
Filtered search with Milvus and OpenAI embeddings 2023-03-28
Filtered Search with Zilliz and OpenAI embeddings 2023-03-28
Semantic search with Pinecone and OpenAI embeddings 2023-03-24
Retrieval augmentation for GPT-4 using Pinecone completions, embeddings, tiktoken 2023-03-24
Pinecone vector database completions, embeddings 2023-03-24
Using Qdrant as a vector database for OpenAI embeddings embeddings 2023-02-16
Question answering with Langchain, Qdrant and OpenAI embeddings 2023-02-16
Weaviate <> OpenAI embeddings 2023-02-13
Using Weaviate with OpenAI vectorize module for hybrid search embeddings 2023-02-13
Using Weaviate with OpenAI vectorize module for embeddings search embeddings 2023-02-13
Using Redis as a vector database with OpenAI embeddings 2023-02-13
Redis completions, embeddings 2023-02-13
Question Answering in Weaviate with OpenAI Q&A module completions, embeddings 2023-02-13
Retrieval augmented generative question answering with Pinecone completions, embeddings 2023-02-07
Visualizing embeddings in Weights and Biases embeddings 2023-02-01
Use cases for embeddings embeddings 2023-01-20
Related resources from around the web completions, embeddings 2023-01-20

3.5 ChatGPT 生态

标题 标签 发布日期
OpenAI Compliance Logs Platform quickstart chatgpt, chatgpt-and-api, chatgpt-data, compliance, enterprise 2025-12-11
GPT Actions library - Salesforce & Gong chatgpt, chatgpt-productivity, gpt-actions-library 2025-04-07
GPT Actions library - Tray.ai APIM chatgpt, chatgpt-middleware, gpt-actions-library 2024-11-26
GPT Actions library - Google Calendar chatgpt, chatgpt-communication, gpt-actions-library 2024-11-22
GPT Actions library - Workday chatgpt, chatgpt-productivity, gpt-actions-library 2024-11-20
GPT Actions library - GitHub chatgpt, chatgpt-productivity, gpt-actions-library 2024-10-23
GPT Actions library - Google Ads via Adzviser chatgpt, chatgpt-data, chatgpt-middleware, chatgpt-productivity, gpt-actions-library 2024-10-10
GPT Actions library - Canvas Learning Management System chatgpt, gpt-actions-library 2024-09-17
GPT Actions library - Retool Workflow chatgpt, chatgpt-middleware, gpt-actions-library 2024-08-28
GPT Actions library - Snowflake Middleware chatgpt, chatgpt-data, gpt-actions-library 2024-08-14
GPT Actions library - Snowflake Direct chatgpt, chatgpt-data, gpt-actions-library 2024-08-13
GPT Actions library - Google Drive chatgpt, chatgpt-productivity, gpt-actions-library 2024-08-11
GPT Actions library (Middleware) - Google Cloud Function chatgpt, chatgpt-middleware, gpt-actions-library 2024-08-11
GPT Actions library - AWS Redshift chatgpt, chatgpt-data, gpt-actions-library 2024-08-09
GPT Actions library - AWS Middleware chatgpt, chatgpt-middleware, gpt-actions-library 2024-08-09
GPT Actions library - Zapier chatgpt, chatgpt-middleware, gpt-actions-library 2024-08-05
GPT Actions library - Box chatgpt, chatgpt-productivity, gpt-actions-library 2024-08-02
GPT Actions library - SQL Database chatgpt, chatgpt-data, gpt-actions-library 2024-07-31
GPT Actions library - Confluence chatgpt, chatgpt-productivity, gpt-actions-library 2024-07-31
GPT Actions library - Notion chatgpt, chatgpt-productivity, gpt-actions-library 2024-07-25
GPT Actions library - Jira chatgpt, chatgpt-productivity, gpt-actions-library 2024-07-24
GPT Actions library - Gmail chatgpt, chatgpt-communication, gpt-actions-library 2024-07-24
GPT Actions library - Salesforce chatgpt, gpt-actions-library 2024-07-18
GPT Actions library - Outlook chatgpt, chatgpt-communication, gpt-actions-library 2024-07-15
GPT Actions library - getting started chatgpt, gpt-actions-library 2024-07-09
GPT Actions library - BigQuery chatgpt, chatgpt-data, gpt-actions-library 2024-07-09
GPT Actions library - Sharepoint (Return Text) chatgpt, chatgpt-productivity, gpt-actions-library 2024-05-24
GPT Actions library - Sharepoint (Return Docs) chatgpt, chatgpt-productivity, gpt-actions-library 2024-05-24
GPT Actions library (Middleware) - Azure Functions chatgpt, chatgpt-middleware, gpt-actions-library 2024-05-24

3.6 工具调用与扩展

标题 标签 发布日期
Building Consistent Workflows with Codex CLI & Agents SDK agents-sdk, codex, mcp 2025-10-01
GPT-5 New Params and Tools functions, gpt-5, reasoning 2025-08-07
Building a Supply-Chain Copilot with OpenAI Agent SDK and Databricks MCP Servers agents-sdk, mcp, tracing 2025-07-08
Introduction to deep research in the OpenAI API deep-research, deep-research-api, mcp, responses 2025-06-25
Deep Research API with the Agents SDK agents, agents-sdk, deep-research, deep-research-api, mcp 2025-06-25
Building a Deep Research MCP Server agents, agents-sdk, deep-research, deep-research-api, mcp, responses 2025-06-25
Evals API Use-case - MCP Evaluation evals, evals-api, mcp, responses 2025-06-09
Eval Driven System Design - From Prototype to Production API Flywheel, completions, evals, functions, responses, tracing 2025-06-02
Multi-Agent Portfolio Collaboration with OpenAI Agents SDK agents-sdk, functions, mutli-agent-collaboration, responses 2025-05-28
o3/o4-mini Function Calling Guide functions, reasoning, responses 2025-05-26
Guide to Using the Responses API’s MCP Tool mcp 2025-05-21
Better performance from reasoning models using the Responses API functions, responses 2025-05-11
Handling Function Calls with Reasoning Models api, functions, reasoning, responses 2025-04-25
Automating Dispute Management with Agents SDK and Stripe API agents-sdk, functions, responses 2025-03-17
Doing RAG on PDFs using File Search in the Responses API functions, responses 2025-03-11
Orchestrating Agents: Routines and Handoffs agents, completions, functions 2024-10-10
Structured Outputs for Multi-Agent Systems agents, completions, functions 2024-08-06
Introduction to Structured Outputs completions, functions 2024-08-06
Using tool required for customer service completions, functions 2024-05-01
Assistants API Overview (Python SDK) assistants, functions 2023-11-10
Fine tuning for function calling completions, fine-tuning, functions 2023-11-07
Named Entity Recognition to Enrich Text completions, functions 2023-10-20
Function calling with an OpenAPI specification completions, functions 2023-10-15
How to build an agent with the OpenAI Node.js SDK agents, completions, functions 2023-10-05
Function calling for nearby places: Leveraging the Google Places API and customer profiles completions, functions 2023-08-11
Azure functions example completions, functions 2023-07-21
How to use functions with a knowledge base completions, functions 2023-06-14
How to call functions with chat models completions, functions 2023-06-13

3.7 代理与自动化

标题 标签 发布日期
Context Engineering for Personalization - State Management with Long-Term Memory Notes using OpenAI Agents SDK agents-sdk 2026-01-05
Build a coding agent with GPT 5.1 agents-sdk 2025-11-13
Self-Evolving Agents - A Cookbook for Autonomous Agent Retraining agent-retraining, evals, llmops, partners, prompt-engineering, self-evolving-agents 2025-11-04
Build, deploy, and optimize agentic workflows with AgentKit agentkit, evals 2025-10-17
Using PLANS.md for multi-hour problem solving agents, codex, documentation, gpt-5, planning 2025-10-07
Context Engineering - Short-Term Memory Management with Sessions from OpenAI Agents SDK agents-sdk 2025-09-09
Optimize Prompts agents-sdk, completions, prompt, responses, tracing 2025-07-14
Automate Jira ↔ GitHub with Codex automation, codex 2025-06-21
Parallel Agents with the OpenAI Agents SDK agents, agents-sdk, parallel-agents 2025-05-01
Evaluating Agents with Langfuse agents-sdk, evals 2025-03-31

3.8 微调/训练与提示词

标题 标签 发布日期
Prompt Personalities gpt-5, prompt-personalities 2026-01-05
Building resilient prompts using an evaluation flywheel datasets, evals 2025-10-06
GPT-5 Troubleshooting Guide gpt-5, prompt-optimization 2025-09-17
GPT-5 Prompt Migration and Improvement Using the New Optimizer gpt-5, prompt-optimization, reasoning, responses 2025-08-07
Prompt Migration Guide completions, prompt, responses 2025-06-26
Fine-Tuning Techniques - Choosing Between SFT, DPO, and RFT (With a Guide to DPO) fine-tuning 2025-06-18
Exploring Model Graders for Reinforcement Fine-Tuning fine-tuning, reinforcement-learning, reinforcement-learning-graders 2025-05-23
Leveraging model distillation to fine-tune a model completions, fine-tuning 2024-10-16
Prompt Caching 101 completions, cost, latency, prompt caching 2024-10-01
How to fine-tune chat models completions, fine-tuning 2024-07-23
Fine-tuning OpenAI models with Weights & Biases completions, fine-tuning, tiktoken 2023-10-04
Data preparation and analysis for chat model fine-tuning completions, fine-tuning, tiktoken 2023-08-22

3.9 评测/安全/合规

标题 标签 发布日期
Evals API Use-case - Web Search Evaluation evals, evals-api, responses 2025-06-09
Evals API Use-case - Tools Evaluation evals, evals-api, responses 2025-06-09
Evals API Use-case - Structured Outputs Evaluation evals, evals-api, responses 2025-06-09
Selecting a Model Based on Stripe Conversion – A Practical Eval for Startups conversion, evals, stripe 2025-06-02
Evals API Use-case - Responses Evaluation evals, responses 2025-05-13
Evals API Use-case - Monitoring stored completions completions, evals 2025-04-08
Evals API Use-case - Detecting prompt regressions completions, evals 2025-04-08
Evals API Use-case - Bulk model and prompt experimentation completions, evals 2025-04-08
Custom LLM as a Judge to Detect Hallucinations with Braintrust completions, evals 2024-10-14
Developing Hallucination Guardrails guardrails 2024-05-29
How to use the moderation API moderation 2024-03-05
How to evaluate LLMs for SQL generation guardrails 2024-01-23
How to implement LLM guardrails guardrails 2023-12-19

3.10 开发工具与工程实践

标题 标签 发布日期
Codex Prompting Guide codex, compaction, responses 2025-12-04
Modernizing your Codebase with Codex codex 2025-11-19
Build Code Review with the Codex SDK codex 2025-10-21
Use Codex CLI to automatically fix CI failures codex 2025-09-30
Automating Code Quality and Security Fixes with Codex CLI on GitLab codex 2025-08-29
Reasoning over Code Quality and Security in GitHub Pull Requests SDLC, completions, reasoning 2024-12-24
What makes documentation good 2023-09-01

3.11 基础API与性能

标题 标签 发布日期
GPT-5.2 Prompting Guide gpt-5.2 2025-12-11
GPT-5.1 Prompting Guide gpt-5.1 2025-11-13
GPT-5 prompting guide gpt-5, reasoning, responses 2025-08-07
Frontend coding with GPT-5 gpt-5, reasoning, responses 2025-08-07
GPT-4.1 Prompting Guide api, responses 2025-04-14
Build Your Own Code Interpreter - Dynamic Tool Generation and Execution With o3-mini completions 2025-02-03
How to use the Usage API and Cost API to monitor your OpenAI usage cost-api, usage-api 2025-01-14
Enhance your prompts with meta prompting completions, reasoning 2024-10-23
Using chained calls for o1 structured outputs completions, reasoning 2024-09-26
Building a Bring Your Own Browser (BYOB) Tool for Web Browsing and Summarization completions 2024-09-26
Using reasoning for routine generation completions, reasoning 2024-09-12
Using reasoning for data validation completions, reasoning 2024-09-12
Batch processing with the Batch API batch, completions 2024-04-24
Summarizing Long Documents chat 2024-04-19
Synthetic data generation (Part 1) completions 2024-04-10
Getting Started with OpenAI Evals completions 2024-03-21
Using logprobs completions 2023-12-20
How to make your completions outputs consistent with the new seed parameter completions 2023-11-06
OpenAI API Monitoring with Weights & Biases Weave completions, tiktoken 2023-10-04
Azure Chat Completion models with your own data (preview) completions 2023-09-11
Unit test writing using a multi-step prompt with legacy Completions completions 2023-05-19
Azure Chat Completions example (preview) completions 2023-03-28
How to format inputs to ChatGPT models completions, tiktoken 2023-03-01
Long document content extraction completions 2023-02-20
How to work with large language models completions 2023-01-20

04 使用篇:IDE / CLI / Cloud / 团队集成

本章聚焦“选对入口”:同一个任务在 IDE / CLI / Cloud 的效率差异很大。这里会按场景拆解各端的能力边界,并给出一个可复用的选择原则:写改与即时反馈用 IDE;批处理、脚本与审查用 CLI;并行与长任务交给 Cloud;团队协作则通过各类集成把 Codex 放进流程。

读完本章,你应该能快速判断“这类问题该在什么入口解决”,并把结果以 diff / 测试记录 / PR 评审等形式交付出去。

4.1 IDE 插件(IDE Extension)

4.1.1 概述

原文地址:https://developers.openai.com/codex/ide
视频地址:https://youtu.be/sd21Igx4HtA

CodexOpenAI 的编程智能代理,它可以读取、编辑和运行代码,帮助你更快构建项目、修复错误并理解不熟悉的代码,Codex 可以通过 VS Code 扩展 在你的 IDE 中并排工作,或将任务委托到云端执行。

Codex IDE 扩展支持 Visual Studio Code 的各类版本,包括 Visual Studio Code、Cursor、Windsurf,也可以从对应市场下载安装扩展:

注:macOS 和 Linux 上扩展支持完全;Windows 上当前为实验性支持。建议在 Windows 上使用 WSL 工作区获得最佳体验。

安装完成后:

  1. 在 IDE 左侧扩展栏中可以看到 Codex 图标;
  2. 如果没有显示,在 VS Code 中重启编辑器;
  3. 在 Cursor 等 IDE 中,可能需要固定图标以便显示。
    在这里插入图片描述

也可以将 Codex 拖动到右侧侧边栏作为一个独立的标签页查看:
在这里插入图片描述

安装扩展后,它会提示你使用 ChatGPT 帐户登录 或使用 API 密钥。下面是使用 Codex IDE 扩展一些常用的工作方式:

  • 利用编辑器上下文提示: 使用打开文件、选中的代码和文件标识符,使提示更相关;
  • 切换模型: 可以从默认模型切换到其它支持代码的模型;
  • 调整推理强度: 根据任务难度选择 “低、中、高” 推理设置,以权衡速度与深度;
  • 选择审批模式: 可在 Chat、Agent、Agent(Full Access) 之间切换 Codex 的自主权限;
  • 委托到云端: 将复杂任务发送到云端执行,然后在 IDE 中监控进度并查看结果;
  • 继续云端作业: 预览云端生成的变更、请求后续操作,并在本地测试完成它们。

4.1.2 扩展功能

原文地址:https://developers.openai.com/codex/ide/features

1. 使用 Codex IDE 扩展可以做什么

Codex IDE 扩展让你可以在 VS Code、Cursor、Windsurf 及其他兼容 VS Code 的编辑器中直接访问 Codex。它使用与 Codex CLI 相同的智能体,并共享相同的配置。


2. Codex 提示词

在编辑器中使用 Codex 聊天、编辑和预览更改,当 Codex 拥有来自打开文件和选中代码的上下文时,你可以写更短的提示,并获得更快、更相关的结果

可以通过在提示中引用编辑器里的文件来指定上下文,例如(将 @example.tsx 作为参考文件):

Use @example.tsx as a reference to add a new page named "Resources" to the app that contains a list of resources defined in @resources.ts

3. 切换模型(Switch between models)

可以在聊天输入框下方的切换器中切换不同的模型。

在这里插入图片描述


4. 调整推理强度(Adjust reasoning effort)

你可以调整 Codex 的推理强度,以控制 Codex 在响应前思考多久(更高的推理强度适用于更复杂的任务,但响应时间会更长,也会消耗更多令牌/配额)。


5. 选择审批模式(Choose an approval mode)

默认情况下,Codex 使用 “Agent”(代理)模式,在此模式下,Codex 可以自动读取文件、进行编辑并在工作目录中运行命令,如果 Codex 要访问工作目录以外的文件或网络,仍然需要你的批准,如果只是想聊天或先规划再修改,可以切换到 “Chat”(聊天)模式:
在这里插入图片描述

如果需要 Codex 读取文件、编辑并运行命令且无需批准,可以选择 “Agent(Full Access)”(完全访问)模式 — 但这种模式要谨慎使用。


6. 云端委派(Cloud delegation)

你可以将较大的任务委派给云端的 Codex,然后在 IDE 中跟踪进度并审查结果,而无需离开当前工作环境。

  1. 设置一个 Codex 云环境(https://chatgpt.com/codex/settings/environments
  2. 选择运行在云端

在这里插入图片描述

当你从本地对话启动云端任务时,Codex 会记住对话上下文,这样你可以在之后从相同位置继续进行。


7. 云端任务后续(Cloud task follow-up)

Codex 扩展让你轻松预览云端变更,你可以要求后续任务在云端运行,但通常你也可以将更改应用到本地以测试和完成任务,在本地继续对话时,Codex 仍会保留上下文以节省时间。
在这里插入图片描述


8. 将图片拖放到提示中

你可以将图片拖放到提示编辑器中作为上下文内容(按住 Shift 拖放图片),在 VS Code 中默认阻止扩展接收拖放,所以必须这样操作。

4.1.3 设置

原文地址:https://developers.openai.com/codex/ide/settings

如果要更改设置,需要按照下面步骤操作:

  1. 打开编辑器设置。
  2. 搜索 “Codex” 或具体设置名称。
  3. 修改对应的值。([OpenAI][1])

注意: 有些行为(例如默认模型、审批策略和沙箱设置)不在编辑器设置中配置,而是在共享的 ~/.codex/config.toml 文件中设置(与 Codex CLI 共用)。

以下是可以在编辑器中直接配置的设置项及其含义:

设置项 说明
chatgpt.cliExecutable 仅限开发用途:指定 Codex CLI 可执行文件的路径,一般不需要手动设置,手动设置可能会导致扩展部分功能异常
chatgpt.commentCodeLensEnabled 在待办(TODO)注释上方显示 CodeLens,让你可以用 Codex 快速完成这些待办项。
chatgpt.localeOverride Codex UI 界面的首选语言,留空表示自动检测语言。
chatgpt.openOnStartup 启动扩展时自动聚焦到 Codex 侧边栏。
chatgpt.runCodexInWindowsSubsystemForLinux 仅 Windows 平台:当 Windows Subsystem for Linux(WSL)可用时,是否在 WSL 中运行 Codex,推荐开启以提升沙箱安全性和性能,目前在 Windows 上运行 Codex Agent 模式需要 WSL。更改此项后需要重新加载 VS Code 才会生效。

4.1.4 命令

原文地址:https://developers.openai.com/codex/ide/commands

这是 Codex IDE 扩展VS Code(及兼容 IDE)命令面板 中可用的命令列表,可以从命令面板运行这些命令,也可以将它们绑定到快捷键。如果想为某个 Codex 命令分配或更改快捷键,按如下步骤执行:

Step 1:打开命令面板:

  • macOS 上按 Cmd + Shift + P
  • Windows/Linux 上按 Ctrl + Shift + P

Step 2:运行 Preferences: Open Keyboard Shortcuts(首选项:打开键盘快捷键)。

Step 3: 搜索 “Codex” 或命令 ID(例如 chatgpt.newChat)。

Step 4: 点击铅笔图标,然后输入你想使用的快捷键。

命令 ID 默认快捷键 说明
chatgpt.addToThread - 将选中的文本片段作为上下文添加到当前会话线程中。
chatgpt.addFileToThread - 将当前整个文件作为上下文添加到当前会话线程中。
chatgpt.newChat macOS: Cmd + N
Windows/Linux: Ctrl + N
创建一个新的对话线程。
chatgpt.implementTodo - 让 Codex 处理当前选中的 TODO 注释。
chatgpt.newCodexPanel - 打开一个新的 Codex 面板。
chatgpt.openSidebar - 打开 Codex 侧边栏面板。

这些命令可以更方便地与 Codex 交互并控制它在 IDE 中的工作方式。

4.1.5 斜杠命令

原文地址:https://developers.openai.com/codex/ide/slash-commands

斜杠命令是一种快速控制 Codex 的方式,在聊天输入中输入 / 然后选择或输入命令名称即可执行特定动作,具体的使用方式如下:

  1. Codex 聊天输入框 中输入 /
  2. 从出现的列表中选择一个命令,或者继续输入以筛选命令(例如 /status)。
  3. Enter 执行命令。

可用的斜杠命令 列表

斜杠命令 说明
/auto-context 开启或关闭自动上下文功能,让 Codex 自动包括最近打开的文件和 IDE 上下文。
/cloud 切换到 云端模式,让任务在远程云环境执行(需要已启用云访问权限)。
/cloud-environment 选择要使用的云环境(仅在云端模式下可用)。
/feedback 打开反馈对话框,提交反馈内容,并可附带日志。
/local 切换到 本地模式,在本地工作区运行任务。
/review 启动代码复查模式,用于查看未提交的更改或与某个基础分支比较。
/status 显示当前线程 ID、上下文使用情况和速率限制等状态信息。

4.2 CLI(终端)

4.2.1 概述

原文地址:https://developers.openai.com/codex/cli
视频地址:https://youtu.be/iqNzfK4_meQ

Codex CLI 是 OpenAI 发布的 终端编码代理工具,可以在本地的终端(Terminal / Shell)中运行它。Codex CLI 能 读取、修改和执行代码,与目录中的代码库交互,帮助你处理各种开发任务(包括编辑文件、运行命令等),它是开源的,用 Rust 语言实现,以提高速度和效率。

4.2.1.1 安装设置CLI

可以使用包管理器以及Homebrew的方式安装 CLI

# 使用 npm
npm install -g @openai/codex

# 使用 Homebrew 安装(macOS)
brew install --cask codex

安装完成后,在终端输入 codex 运行即可,首次运行时需要登录认证你的 ChatGPT 账户或使用 API Key。

运行:输入 codex 启动交互式会话,它会读取当前目录,生成和执行命令,并在全屏交互模式下与 Codex 进行对话。

4.2.1.2 主要功能

1. 交互式模式(Interactive Mode):运行 codex 不带参数时进入交互式界面,你可以在这个界面中:

  • 输入自然语言提示让 Codex 生成、修改或解释代码。
  • 审查 Codex 规划的步骤并按需批准或拒绝。

2. 恢复会话:Codex 会保存历史会话,你可以使用命令恢复之前的工作状态,这样 Codex 可以继续利用已有的上下文,而不必重新输入信息

  • codex resume —— 选择并恢复某个会话
  • codex resume --last —— 恢复最近一次的会话
  • 指定会话 ID 恢复特定 session

3.模型切换与推理设置:在 CLI 会话中,Codex 默认使用与平台匹配的模型,也可以使用 /model 命令或启动参数指定不同模型:

  • macOS / Linux 默认是 gpt-5-codex
  • Windows 默认是 gpt-5

4. 图片输入:Codex CLI 支持将图片作为输入上下文,例如屏幕截图或设计规范,也可以同时附带多张图片(用逗号分隔):

codex -i 错误截图.png "解释这个错误"

5.本地代码审查模式:在 CLI 中输入 /review 即可启动代码审查功能,这一过程不会修改你的工作区;建议在 pull request 之前使用。

  • 扫描未提交的更改
  • 对比某个分支的差异
  • 优先提出可执行的改进建议

6. 网络搜索支持(可选):可以启用 Codex 调用网络搜索来获取新上下文(需要在配置或命令中启用)。


7. 自动完成 Shell 脚本:执行如下脚本,可以输出对应 shell(bash / zsh / fish 等)的自动补全脚本,方便日常使用

codex completion bash

8. 批准模式(Approval Modes):这些模式控制 Codex 在执行编辑/命令之前是否需要你确认:

  • Auto(默认):自动读写当前目录中的文件,外部操作仍需审批
  • Read-Only:Codex 只能读代码,不会修改
  • Full Access:允许 Codex 在整个系统范围内运行命令(建议谨慎使用)([OpenAI][2])

9. 自动化脚本(Scripting):你可以使用子命令 codex exec 运行非交互任务,适合结合脚本或 CI/CD 流程自动化繁琐任务,例如:

codex exec "修复 CI 失败"

10. 与 Codex Cloud 集成:使用 codex cloud 命令可以:

  • 查看和启动云端任务
  • 在本地应用任务结果 diff

例如:

codex cloud exec --env ENV_ID "总结未解决的 bug"

这样可以在本地终端启动云端 Codex 任务,并将更改合并到项目中。


11. 斜杠命令(Slash Commands)支持:可以利用以 / 开头的命令快速调用特定工作流,如 /review/fork 或自定义的命令。


12. 模型上下文协议(MCP)支持:Codex CLI 也可以通过 Model Context Protocol(MCP) 连接到扩展工具,例如语言服务器或外部数据源,让 AI 能访问更多的上下文资源

4.2.2 功能

原文地址:https://developers.openai.com/codex/cli/features

下面是 Codex CLI(命令行界面) 的功能说明

交互模式(Interactive Mode)

运行命令:

codex
codex "Explain this codebase to me"

启动全屏终端 UI,你可以通过自然语言提示让 Codex 读取代码库、生成修改、执行命令 并实时互动。也可以发送提示、代码片段、甚至图像(截图)、实时查看 Codex 的计划,并批准或拒绝它要执行的步骤。


恢复会话(Resuming Conversations)

Codex 会将会话记录保存在本地,因此可以恢复之前的工作状态:

  • codex resume —— 选择并恢复某个交互式会话
  • codex resume --last —— 恢复最近的一次
  • codex resume <SESSION_ID> —— 根据 ID 直接恢复某次会话

例如:

codex exec resume --last "Fix the race conditions you found"
codex exec resume 7f9f9a2e-1b3c-4c7a-9b0e-.... "Implement the plan"

恢复会话时,Codex 会保留历史对话、计划记录和批准状态,这样能继续用已有上下文工作。


模型与推理(Models and Reasoning)

默认情况下:

  • macOS/Linux 使用 gpt-5-codex
  • Windows 使用 gpt-5

可以通过命令 /model 或 CLI 启动参数来切换模型。

codex --model gpt-5-codex

图像输入(Image Inputs)

你可以在命令行中附带一或多张图片,让 Codex 一起分析图像内容,例如设计图、错误截图等:

codex -i screenshot.png "解释这个错误"
codex --image img1.png,img2.jpg "Summarize these diagrams"

支持常见格式(如 PNG、JPEG)并可以多个文件一起输入。


本地代码审查(Local Code Review)

在 CLI 中输入 /review,启动代码审查模式。可以:

  • 审查未提交更改
  • 对比某个基础分支
  • 对某个提交历史进行审查

Codex 会输出重点反馈,而不会自动更改文件。


网络搜索(Web Search)

Codex CLI 内置可选的网络搜索功能:

  • 通过配置文件或命令参数启用网络搜索
  • 启用后,Codex 可以在需要时查询最新的网页内容来补充上下文,提高准确性。
[features]
web_search_request = true

[sandbox_workspace_write]
network_access = true

命令行提示执行(Running with an Input Prompt)

可以直接在命令行后跟提示,让 Codex 读取当前目录、规划步骤并返回结果,而不打开交互界面,并结合 --path--model 等参数进一步控制行为。

codex "解释这个代码库"

Shell 自动补全(Shell Completions)

可以生成并安装自动补全脚本(bash/zsh/fish),让终端支持,然后将补全脚本加入你的 shell 配置文件,实现按 Tab 自动补全命令和参数。

codex completion bash
codex completion zsh
codex completion fish

批准模式(Approval Modes)

批准模式控制 Codex 在执行修改/命令前是否需要你的确认:

  • Auto(默认): 自动读取、编辑和运行命令(工作目录内),网络操作或系统范围行为仍需审批
  • Read-only : 只读模式,不修改文件或执行命令(等待你批准)
  • Full Access: 允许 Codex 跨系统修改并运行命令(风险较高,需谨慎)

自动化与脚本运行(Scripting)

可以通过 codex exec 子命令让 Codex 非交互式执行任务,输出结果或计划到标准输出,方便结合脚本和自动化工作流,这对 自动化任务、CI/CD 流程非常有用。

codex exec "修复 CI 失败"

与 Codex Cloud 集成(Cloud Tasks)

可以使用:

codex cloud exec --env ENV_ID "Summarize open bugs"

在 CLI 中浏览、启动云端任务,并可以将任务生成的更改应用到本地项目,无需离开终端。


斜杠命令支持(Slash Commands)

命令行中也支持以 / 开头的快捷命令,例如:

  • /review
  • /fork
  • 以及自定义的命令

这些命令可以快速执行特定工作流。


提示编辑器(Prompt Editor)

在 CLI 会话中按 Ctrl+G 可打开系统定义的编辑器(如 Vim / VS Code),便于输入、修改大量提示文本,然后发送回 Codex 执行。


Model Context Protocol(MCP) 支持

Codex CLI 支持通过 MCP 协议连接额外工具和数据源:

  • ~/.codex/config.toml 配置 MCP 服务器
  • Codex 在会话启动时自动启动相关服务,并将工具集成到工作流中

其他实用提示(Tips & Shortcuts)

下面是提升使用体验的快捷操作:

  • 输入 @ 在当前工作区快速模糊搜索文件路径
  • 在提示行前加 ! 执行本地 shell 命令
  • 启动 Codex 时指定路径:codex --cd <目录>
  • 添加多个可写根目录:--add-dir

4.2.3 命令行选项

原文地址:https://developers.openai.com/codex/cli/reference

4.2.3.1 全局标志
类型 / 值 说明
--add-dir path 在主工作区之外,额外授予目录写权限。可重复指定多个路径。
--ask-for-approval, -a untrusted on-failure
--cd, -C path 在代理开始处理请求之前设置工作目录。
--config, -c key=value 覆盖配置值。如果可能,值会按 JSON 解析;否则使用字面字符串。
--dangerously-bypass-approvals-and-sandbox, --yolo boolean 在不请求批准且不使用沙箱的情况下运行所有命令。仅应在外部已加固的环境中使用。
--disable feature 强制禁用某个功能标志(等价于 -c features.<name>=false)。可重复。
--enable feature 强制启用某个功能标志(等价于 -c features.<name>=true)。可重复。
--full-auto boolean 低摩擦本地工作的快捷方式:设置 --ask-for-approval on-request--sandbox workspace-write
--image, -i path[,path…] 向初始提示附加一个或多个图像文件。多个路径用逗号分隔,或重复该标志。
--model, -m string 覆盖配置中的模型(例如 gpt-5-codex)。
--oss boolean 使用本地开源模型提供方(等价于 -c model_provider="oss")。会验证 Ollama 是否正在运行。
--profile, -p string ~/.codex/config.toml 中加载的配置 profile 名称。
--sandbox, -s read-only workspace-write
--search boolean 启用网络搜索。为 true 时,代理可在无需每次询问的情况下调用 web_search 工具。
PROMPT string 用于启动会话的可选文本指令。省略则直接启动 TUI,不预填消息。

这些选项适用于基础 codex 命令,并会传递给每个子命令,除非下方某个部分另有说明。
在使用子命令时,请将全局标志放在子命令之后(例如 codex exec --oss ...),以确保它们按预期生效。


4.2.3.2 命令概览

Maturity(成熟度)列使用诸如 Experimental(实验)Beta(测试)Stable(稳定) 等标签。

成熟度 说明
codex Stable 启动终端 UI。接受上述全局标志以及可选提示或图像附件。
codex app-server Experimental 启动 Codex 应用服务器,用于本地开发或调试。
codex apply Stable 将 Codex Cloud 任务生成的最新 diff 应用到本地工作树。别名:codex a
codex cloud Experimental 在不打开 TUI 的情况下,从终端浏览或执行 Codex Cloud 任务。别名:codex cloud-tasks
codex completion Stable 生成 Bash、Zsh、Fish 或 PowerShell 的 shell 自动补全脚本。
codex exec Stable 非交互方式运行 Codex。别名:codex e。将结果流式输出到 stdout 或 JSONL,并可恢复之前的会话。
codex execpolicy Experimental 评估 execpolicy 规则文件,查看某个命令会被允许、提示还是阻止。
codex login Stable 使用 ChatGPT OAuth、设备认证或通过 stdin 传入的 API key 进行认证。
codex logout Stable 移除已存储的认证凭据。
codex mcp Experimental 管理 Model Context Protocol 服务器(列出、添加、删除、认证)。
codex mcp-server Experimental 将 Codex 本身作为 MCP 服务器通过 stdio 运行,供其他代理使用。
codex resume Stable 通过 ID 继续先前的交互式会话,或恢复最近一次对话。
codex sandbox Experimental 在 Codex 提供的 macOS seatbelt 或 Linux landlock 沙箱中运行任意命令。

4.2.3.3 命令解析
4.2.3.3.1 codex

在没有子命令的情况下运行 codex 会启动交互式终端 UI(TUI)。代理接受上述全局标志以及图像附件。使用 --search 启用网页浏览,使用 --full-auto 允许 Codex 在大多数情况下无需提示即可运行命令。


4.2.3.3.2 codex app-server

在本地启动 Codex 应用服务器,主要用于开发和调试,接口和行为可能随时更改,不另行通知


4.2.3.3.3 codex apply

将 Codex 云任务生成的最新 diff 应用到本地仓库,必须已经认证,并且对该任务有访问权限。

类型 / 值 说明
TASK_ID string 要应用 diff 的 Codex Cloud 任务标识符。

Codex 会打印被打补丁的文件;如果 git apply 失败(例如发生冲突),将以非零状态码退出。


4.2.3.3.4 codex cloud

从终端与 Codex Cloud 任务交互,默认命令会打开交互式选择器,codex cloud exec 会直接提交一个任务。

类型 / 值 说明
–attempts 1–4 Codex Cloud 运行的助手尝试次数(best-of-N)。
–env ENV_ID 目标 Codex Cloud 环境标识符(必填)。使用 codex cloud 查看可选项。
QUERY string 任务提示。如果省略,Codex 会交互式询问细节。

认证方式与主 CLI 相同,若任务提交失败,Codex 会以非零状态码退出。


4.2.3.3.5 codex completion

生成 shell 自动补全脚本,并将输出重定向到合适的位置,例如:codex completion zsh > "${fpath[1]}/_codex"

类型 / 值 说明
SHELL bash、zsh 、 fish 、 power-shell 、 elvish 要生成补全脚本的 shell,输出打印到 stdout。

4.2.3.3.6 codex exec

使用 codex exec(或简写 codex e)进行脚本化或 CI 场景的运行,这类运行应当在无需人工交互的情况下完成。

类型 / 值 说明
--cd, -C path 在执行任务前设置工作区根目录。
--color always 、never 、 auto 控制 stdout 中的 ANSI 颜色。
--dangerously-bypass-approvals-and-sandbox, --yolo boolean 跳过批准提示和沙箱。危险——仅在隔离的执行环境中使用。
--full-auto boolean 应用低摩擦自动化预设(workspace-write 沙箱 + on-request 批准)。
--image, -i path[,path…] 将图像附加到第一条消息。可重复;支持逗号分隔。
--json, --experimental-json boolean 输出逐行 JSON 事件,而不是格式化文本。
--model, -m string 覆盖本次运行使用的模型。
--oss boolean 使用本地开源模型提供方(需要运行中的 Ollama 实例)。
--output-last-message, -o path 将助手的最终消息写入文件,便于后续脚本处理。
--output-schema path 描述期望最终响应结构的 JSON Schema 文件。Codex 会校验工具输出。
--profile, -p string 选择在 config.toml 中定义的配置 profile。
--sandbox, -s read-only workspace-write
--skip-git-repo-check boolean 允许在非 Git 仓库目录中运行(适用于一次性目录)。
-c, --config key=value 为非交互式运行内联覆盖配置(可重复)。
PROMPT string -(从 stdin 读取)

4.2.3.3.7 Resume 子命令
codex exec resume [SESSION_ID]

通过 ID 恢复一个 exec 会话,或使用 --last 继续最近一次会话,可接受一个可选的后续提示。默认情况下 Codex 会输出格式化文本,添加 --json 可获得逐行 JSON 事件(每次状态变化一条)。

类型 / 值 说明
--last boolean 跳过选择器,自动恢复最近一次对话。
PROMPT string 、 - 恢复后立即发送的可选后续指令。
SESSION_ID uuid 恢复指定会话;若省略则需使用 --last

4.2.3.3.8 codex execpolicy

在保存 execpolicy 规则文件前进行检查。codex execpolicy check 接受一个或多个 --rules 标志(例如 ~/.codex/rules 下的文件),并输出 JSON,展示最严格的决策结果匹配到的规则,添加 --pretty 可格式化输出,execpolicy 当前处于预览阶段。

类型 / 值 说明
--pretty boolean 美化打印 JSON 结果。
--rules, -r path(可重复) 要评估的 execpolicy 规则文件路径。可组合多个文件。
COMMAND... var-args 要根据指定策略进行检查的命令。

4.2.3.3.9 codex login

使用 ChatGPT 账户或 API key 对 CLI 进行认证,不带标志时,Codex 会打开浏览器进入 ChatGPT OAuth 流程。

类型 说明
--with-api-key boolean 从 stdin 读取 API key(例如 printenv OPENAI_API_KEY | codex login --with-api-key)。
status、subcommand codex login status 打印当前激活的认证方式;在已登录时以状态码 0 退出,便于自动化脚本判断。

4.2.3.3.10 codex logout

移除已保存的 API key 和 ChatGPT 认证凭据,该命令没有任何标志


4.2.3.3.11 codex mcp

管理存储在 ~/.codex/config.toml 中的 Model Context Protocol 服务器条目。

子命令 选项 说明
add <name> -- <command...> --url <value>
get <name> --json 显示指定服务器配置,--json 输出原始配置条目
list --json 列出已配置的 MCP 服务器,--json 用于机器可读输出
login <name> --scopes scope1,scope2 对支持 OAuth 的可流式 HTTP 服务器发起登录
logout <name> 移除该 HTTP 服务器的 OAuth 凭据
remove <name> 删除已存储的 MCP 服务器定义

add 子命令的额外选项:

类型 / 值 说明
--bearer-token-env-var ENV_VAR 连接可流式 HTTP 服务器时,将该环境变量的值作为 bearer token 发送。
--env KEY=VALUE 可重复 启动 stdio 服务器时设置的环境变量。
--url https://… 注册可流式 HTTP 服务器,与 COMMAND... 互斥。
COMMAND... stdio transport 启动 MCP 服务器的可执行程序及其参数,放在 -- 之后。

OAuth 操作(login、logout)仅适用于可流式 HTTP 服务器,且服务器必须支持 OAuth。


4.2.3.3.12 codex mcp-server

通过 stdio 将 Codex 作为 MCP 服务器运行,以供其他工具连接,该命令会继承全局配置覆盖,并在下游客户端关闭连接时退出。


4.2.3.3.13 codex resume

通过 ID 继续一个交互式会话,或恢复最近一次对话,codex resume 接受与 codex 相同的全局标志,包括模型和沙箱覆盖。

类型 / 值 说明
--last boolean 跳过选择器,自动恢复最近一次对话。
PROMPT string -
SESSION_ID uuid 恢复指定会话;若省略则需使用 --last

4.2.3.3.14 codex sandbox

使用沙箱辅助工具,在与 Codex 内部相同的策略下运行命令。

macOS Seatbelt:

类型 / 值 说明
--config, -c key=value 向沙箱运行传入配置覆盖(可重复)。
--full-auto boolean 无需批准地授予当前工作区和 /tmp 的写权限。
COMMAND... var-args 在 macOS Seatbelt 下执行的 shell 命令,-- 之后的内容会被原样转发。

Linux Landlock:

类型 / 值 说明
--config, -c key=value 在启动沙箱前应用的配置覆盖(可重复)。
--full-auto boolean 在 Landlock 沙箱内授予当前工作区和 /tmp 的写权限。
COMMAND... var-args 在 Landlock + seccomp 下执行的命令,可执行程序放在 -- 之后。

标志组合与安全建议:

  • 对于无人值守的本地工作,可设置 --full-auto,但避免--dangerously-bypass-approvals-and-sandbox 组合使用,除非你身处专用的沙箱虚拟机中。
  • 当需要授予 Codex 对更多目录的写权限时,优先使用 --add-dir,而不是强制使用 --sandbox danger-full-access
  • 在 CI 中,将 --json--output-last-message 搭配使用,可同时捕获机器可读的进度信息最终的自然语言总结

4.2.4 斜杠命令

原文地址:https://developers.openai.com/codex/cli/slash-commands

4.2.4.1 概览

斜杠命令能让你在交互式 Codex 会话中快速使用键盘进行控制。在对话输入框中输入 / 会出现斜杠命令弹窗,选择命令后,Codex 会执行对应操作,比如切换模型、调整审批设置,或在不离开终端的情况下总结长对话。下面是一些常用命令及其作用:

命令 作用
/approvals 设置 Codex 在无需再次询问的情况下可以执行哪些类型的操作(调整审批策略)。
/compact 总结当前可见对话内容,以节省上下文空间。
/diff 显示 Git 差异,包括未被 Git 跟踪的文件。
/exit/quit 退出 CLI 会话。
/feedback 发送日志和诊断信息给 Codex 维护者。
/init 在当前目录生成一个 AGENTS.md 初始文件。
/logout 登出 Codex(清除本地凭据)。
/mcp 列出当前可用的 Model Context Protocol 工具。
/mention 将某个文件附加到当前对话,让 Codex 关注它。
/model 选择当前使用的模型。
/fork 将已保存的会话分支为新线程。
/resume 恢复一个已保存的会话。
/new 在当前 CLI 会话里开始一个新的对话。
/review 请求 Codex 审查当前工作目录的更改。
/status 显示当前会话状态,例如活跃模型、审批策略、Token 使用情况等。

当然还可以创建属于自己的重复使用的提示(带参数或元数据),让它们像斜杠命令一样被调用,例如:

/prompts:<命令名>

4.2.4.2 斜杠命令例子
4.2.4.2.1 切换模型(model)

在 Composer 中输入:

/model

然后在弹出列表中选择所需的模型,例如 gpt-4.1-mini 或其他更深层次模型。
Codex 会确认模型已切换。使用 /status 可验证当前设置。([OpenAI][1])


4.2.4.2.2 更新审批规则(approvals)

输入:

/approvals

然后选择适合的审批预设,比如 “Auto”(自动审批)或 “Read Only”(只读模式)。未来操作将按照这个策略执行。


4.2.4.2.3 查看状态(status)

在任何对话中输入:

/status

Codex 会显示当前会话的主要信息,包括活跃模型、审批策略、可写根目录和当前上下文使用情况。


4.2.4.2.4 精简对话内容(compact)

当对话很长时,使用:

/compact

Codex 会将已有对话摘要化,压缩内容以腾出更多上下文空间。


4.2.4.2.5 审查修改(diff)

输入:

/diff

可以查看 Git diff 内容,包括已暂存和未暂存的变更,以及未被 Git 管理的文件,以便你决定接下来怎么处理。


4.2.4.2.6 附加文件到对话(mention)

输入:

/mention <路径>

可以让 Codex 将某个文件加入当前对话上下文,让后续操作更聚焦于该文件。

4.3 Web(Codex 云)

4.3.1 概览

Codex 是 OpenAI 提供的智能编码代理,它可以读取、编辑并运行代码,帮助开发者更快地构建功能、修复错误、理解不熟悉的代码库等,通过 Codex 云端(Cloud),这些任务可以在后台由 Codex 的云环境并行执行,从而提升效率和自动化程度。 ([OpenAI][1])

Codex 云端实际上是 Codex 在云上的运行模式,在这种模式下:

  • Codex 可以在自己的云容器中运行任务,不受本地机器限制;
  • 支持 后台执行、并行处理多个任务
  • 每个任务都在独立的沙盒环境中运行,隔离性好、安全性高;
  • 任务执行结果可以生成可验证的修改(例如 diff 和测试结果),供开发者审查。

Codex 云端如何设置

要在云端使用 Codex,需要:

  1. 访问 Codex(chatgpt.com/codex)
  2. 连接的 GitHub 帐户
  3. 授权之后,Codex 即可访问你仓库中的代码,自动创建修改建议并提交成 GitHub Pull Request。

Codex 云端带来的优势

  • 提高开发效率:Codex 能够自动处理重复性任务,如编写功能框架、修复 bug、生成测试文件等,让开发者专注于更高价值工作。
  • 更好的团队协作:通过 GitHub 集成,Codex 可以直接在开发流程中提出建议、解决问题并提交 PR,加快团队协作节奏。
  • 安全透明:每次任务都有日志和测试输出证明执行过程,开发者可以清晰追踪 Codex 做了什么,确保可控。

Codex 云端是一个面向未来的软件工程智能体,它在云环境中后台执行代码任务,通过与 GitHub 和 IDE 的深度集成,让开发者能够更快速地完成复杂开发流程,无论是个人开发者还是大型团队,都可以借助 Codex 云端提升开发效率和协作效果。

4.3.2 云环境

原文地址:https://developers.openai.com/codex/cloud/environments

使用 环境(environments) 来控制 Codex 在云端任务运行期间安装和执行的内容。
例如:

  • 添加依赖项(packages)
  • 安装代码检查工具、格式化工具等
  • 设置环境变量

这些配置可以在 Codex 设置 中完成。


Codex 云任务如何运行?

当提交一个任务时,大致会发生以下流程:

Step 1: Codex 创建一个容器(container),并在指定的分支或指定的 commit SHA 处检出你的代码仓库(checkout)。

Step 2: Codex 运行你的 setup 脚本,必要时也会运行维护脚本(maintenance script),尤其是在使用缓存容器时。

Step 3: Codex 会应用你的 Internet 设置。

  • 在 setup 阶段,网络访问可以打开
  • 在 agent 执行阶段默认 关闭 Internet 访问(除非你在设置中开启有限或无限制访问)

Step 4: Agent 会循环运行终端命令:

  • 编辑代码
  • 运行检查(比如测试、lint)
  • 尝试验证其操作是否有效
  • 如果你的仓库中有 AGENTS.md 文件,agent 会使用它来了解项目的具体命令(例如运行测试、lint)。

Step 5: 当任务完成后,结果会展示出来,并显示对文件的 diff(变更),然后你可以选择打开 Pull Request 或继续提出后续问题。


默认容器镜像(Default universal image)

Codex agent 在默认的容器镜像 universal 中运行,该镜像预装了常见语言、库和工具,在环境设置中,你可以选择固定 Python、Node.js 等运行时的版本,如果需要更多软件包,也可以通过 setup 脚本手动安装。


环境变量与密钥(Environment variables 和 secrets)

环境变量在任务全过程(setup 脚本 + agent 阶段)中有效。Secrets(密钥)在运行期间会被加密存储,仅在 setup 脚本阶段解密可用,为安全起见,在 agent 阶段会被移除。


自动与手动设置

自动设置:对于常用包管理工具(如 npm、yarn、pip、poetry 等),Codex 可以自动安装依赖和工具。

手动设置: 如果你的开发环境更复杂,也可以提供自定义 setup 脚本,例如:

# 安装类型检查器
pip install pyright

# 安装项目依赖
poetry install --with test
pnpm install

注意:setup 脚本与 agent 阶段分别在不同的 Bash 会话中运行,因此像 export 这样的命令不会带到 agent 阶段。如果希望变量在 agent 阶段持续有效,请在 ~/.bashrc 中设置,或者在环境设置中新增这些变量。


容器缓存(Container caching)

Codex 会缓存容器状态最长 12 小时,以加速后续任务和后续对话,当使用缓存容器时:

  • 会检出仓库;
  • 运行维护脚本(maintenance script);
  • 如果 setup 脚本、环境变量、密钥或维护脚本等发生更改,则缓存会失效;
  • Business 和 Enterprise 用户的缓存可以在同一 workspace 中被多个用户共享。

网络访问与代理

  • 在 setup 脚本阶段允许访问互联网,用于安装依赖。
  • agent 执行阶段默认关闭互联网访问,除非你在环境设置里启用了有限或无限制访问。
  • 所有网络访问都经过 HTTP/HTTPS 代理,以增强安全性和防止滥用。

4.3.3 网络访问

原文地址:https://developers.openai.com/codex/cloud/internet-access

默认情况下,在 agent 执行阶段,Codex 不允许访问互联网,但可以在环境设置中为特定环境开启访问,并精细控制访问范围。


网络访问默认行为

  • 默认关闭:在 agent 执行阶段,Codex 的互联网访问是 完全禁止的,以降低安全风险。
  • Setup 阶段允许访问:只有在 setup 脚本阶段才允许访问互联网,用于安装依赖等操作。

启用互联网访问的风险

在 agent 执行阶段开启互联网访问可能带来安全问题,包括:

  • 提示注入(Prompt Injection):代理从不可信网站读取内容并按照内容执行,可能导致信息泄露或执行不安全的操作。
  • 敏感信息泄露:代码、密钥或最后的提交信息可能被发送到受控服务器。
  • 恶意依赖或恶意资源下载:从不安全源下载代码或包可能包含恶意内容。
  • 版权/许可证问题:从外部拉取的代码可能存在版权或许可限制。建议只允许访问可信域名,并严格审查日志与输出。
    在这里插入图片描述

配置互联网访问(按环境设置)

Off(关闭):完全阻止 agent 在执行阶段访问互联网,这是默认设置。

On(开启) + 自定义控制:开启后你可以进一步控制域名允许列表(Domain Allowlist),可以选择:

  • None → 空列表:从零开始自行添加可信域名。
  • Common dependencies → 常见依赖域名列表:使用官方预设的一些常见依赖下载域名(如 npm、pypi 等)。
  • All(无限制):允许访问所有域名。

之后还能手动添加或移除特定域名。


允许的 HTTP 方法

为了安全起见,你可以限定 agent 仅允许某些 HTTP 方法,例如:GETHEADOPTIONS 等安全方法,禁止危险方法如 POSTPUTDELETE 等,减少意外行为风险。


域名允许列表示例

官方提供了一个 常见依赖域名列表(Common dependencies),包括:

alpinelinux.org
anaconda.com
apache.org
apt.llvm.org
archlinux.org
azure.com
bitbucket.org
bower.io
centos.org
cocoapods.org
continuum.io
cpan.org
crates.io
debian.org
docker.com
docker.io
dot.net
dotnet.microsoft.com
eclipse.org
fedoraproject.org
gcr.io
ghcr.io
github.com
githubusercontent.com
gitlab.com
golang.org
google.com
goproxy.io
gradle.org
hashicorp.com
haskell.org
hex.pm
java.com
java.net
jcenter.bintray.com
json-schema.org
json.schemastore.org
k8s.io
launchpad.net
maven.org
mcr.microsoft.com
metacpan.org
microsoft.com
nodejs.org
npmjs.com
npmjs.org
nuget.org
oracle.com
packagecloud.io
packages.microsoft.com
packagist.org
pkg.go.dev
ppa.launchpad.net
pub.dev
pypa.io
pypi.org
pypi.python.org
pythonhosted.org
quay.io
ruby-lang.org
rubyforge.org
rubygems.org
rubyonrails.org
rustup.rs
rvm.io
sourceforge.net
spring.io
swift.org
ubuntu.com
visualstudio.com
yarnpkg.com
…

这些域名通常用于下载包、获取源代码、构建依赖等。

4.4 集成(Integrations)

4.4.1 Github

原文地址:https://developers.openai.com/codex/integrations/github
视频教程:https://youtu.be/HwbSWVg5Ln4

可以使用 Codex 在 GitHub 的 Pull Request(拉取请求)中执行代码审查,而无需离开 GitHub 界面。具体做法是在 Pull Request 的评论里写下@codex review,然后 Codex 会自动回复一个标准的 GitHub 代码审查

4.4.1.1 设置代码审查
  1. 配置 Codex Cloud
  2. 打开你的仓库设置,找到 Codex 设置 并为该仓库开启 代码审查(Code review) 功能,(界面里会有一个切换开关来启用代码审查。在这里插入图片描述

在某个 Pull Request 里发表评论,写上@codex review
在这里插入图片描述
然后等待 Codex 处理并发布审查结果,就像一个团队成员那样发表评论。
在这里插入图片描述

4.4.1.2 自定义 Codex 审查规则

默认情况下,Codex 会根据你的代码库中的 AGENTS.md 文件应用一些审查指南。你可以在仓库顶层添加或更新 AGENTS.md,写下自定义的审核规则。例如:

## Review guidelines

- 不要打印敏感个人信息(PII)。
- 确保每个路由都被身份验证中间件包裹。

这样,Codex 会按照这些规则执行审查,如果你在 Pull Request 评论里写类似:

@codex review for security regressions

Codex 会根据语义做更具体的审查。


4.4.1.3 给 Codex 指派其他任务

当你在评论里提到 @codex 并跟随其他指令(不是 review),Codex 会在云端将这个 Pull Request 作为上下文来创建一个新任务。例如:

@codex fix the CI failures

Codex 会尝试定位并修复 CI(持续集成)失败的问题。

4.4.2 Slack

原文地址:https://developers.openai.com/codex/integrations/slack

可以在 Slack 的频道或线程里调用 Codex 来执行编码任务。只需在消息中提及 @Codex 并附上提示,Codex 会创建一个 云任务 并回复结果。
在这里插入图片描述

4.4.2.1 设置 Slack 应用
  1. 配置 Codex 云任务(Codex cloud tasks):需要一个 Plus、Pro、Business、Enterprise 或 Edu 计划,还需连接一个 GitHub 帐户 并至少有一个环境(environment)。
  2. 前往 Codex 设置 并为你的工作区安装 Slack 应用:根据 Slack 的策略,可能需要管理员批准安装。
  3. 在一个频道里添加 @Codex:如果还没添加,Slack 会在你提及时提示。

4.4.2.2 发起任务

在 Slack 的某个频道或线程内,提及 @Codex 并写出你的提示。Codex 能引用线程内早先的消息,因此通常不需要重复背景上下文。可以在提示里指定环境或仓库,这样能明确 Codex 使用哪个环境或代码仓库,例如:

@Codex 修复上面的内容 在 openai/codex

等待 Codex 做出反应并回复一个任务链接,任务完成后,Codex 会将结果发布在该线程中(视设置而定)。

4.4.2.3 Codex 如何选择环境和仓库
  • Codex 会查看你有访问权限的环境,并从中选择最匹配你请求的一个。
  • 如果请求不明确,它会回退到你最近使用过的环境。
  • 任务会在该环境所列第一个仓库的默认分支上运行。你可以在 Codex 里更新仓库映射,以更改默认仓库或添加更多仓库。
  • 如果没有适合的环境或仓库,Codex 会在 Slack 中回复说明,提示你如何修复问题再重试。

4.4.2.4 企业数据控制

默认情况下,Codex 会在线程中发布结果,这可能包括它所运行环境的信息。如果你希望 Codex 只发送任务链接而不包含答案,企业管理员可以在 ChatGPT 工作区设置中关闭 “允许 Codex Slack 应用在任务完成时发布答案” 选项。


4.4.2.5 数据使用、隐私与安全

当提及 @Codex 时,Slack 的消息内容和线程历史会被发送给 Codex 以理解请求并创建任务。数据处理遵循 OpenAI 隐私政策使用条款 以及其他适用政策。

注意:Codex 使用大型语言模型生成回答,它可能会犯错。请始终自行复查结果和 diff。


4.4.2.6 提示与故障排查

常见问题及解决方法:

  • 连接丢失:如果 Codex 无法确认你的 Slack 或 GitHub 连接,它会回复一个重新连接的链接。
  • 环境选择错误:你可以在线程中用自然语言指出希望使用的环境(例如 请在 openai/openai 环境运行),然后再次 mention @Codex
  • 长线程或复杂上下文:把关键信息摘要写在最新消息里,以免上下文被埋没。
  • 工作区发布限制:某些企业工作区可能限制发布最终答案,这种情况下可以点击任务链接查看进度和结果。

4.4.3 Linear

原文地址:https://developers.openai.com/codex/integrations/linear

如果在 Linear 任务中运行 Codex,可以:

  • 使用 Linear 中的 Codex 可以 从 issue(问题/任务)中委派工作
  • 可以 将某个 issue 分配给 Codex,或者在评论中提到 @Codex,Codex 会创建一个云端任务并回复进度与结果。
4.4.3.1 设置 Linear

按照下面步骤配置 Linear 与 Codex 的联动:

  1. 先通过在 Codex 中连接 GitHub 并为要让 Codex 工作的仓库创建环境 来设置 Codex Cloud Tasks
  2. 进入 Codex 设置为你的工作区安装 Linear 的 Codex 集成
  3. 通过在 Linear issue 的评论线程中提到 @Codex链接你的 Linear 账户

4.4.3.2 如何将工作委派给 Codex?

你可以通过下面两种方式委派任务:

1) 将 issue 分配给 Codex:安装并启用集成后,你可以像将任务分配给团队成员一样,将 issue 分配给 Codex。 Codex 会开始处理任务,并在 issue 中发布进度更新。
在这里插入图片描述

2) 在评论中提及 @Codex:也可以在评论中写 @Codex 来委派任务或提问。Codex 回复后,你可以在同一个评论线程中继续提问或增加说明以延续当前会话。
在这里插入图片描述

4.4.3.3 环境与仓库如何被 Codex 选中

Codex 开始工作后,会根据 issue 内容选择 合适的环境和仓库,如果你想指定固定仓库,可以在评论中写清楚,例如:

@Codex fix this in openai/codex

如果建议不明确,Codex 会采用最近一次使用的环境。任务默认运行在该环境仓库列表中第一个仓库的默认分支上。如需更改默认仓库或加入更多仓库,你可以在 Codex 配置中更新环境的仓库映射。

4.4.3.4 查看 Codex 的进展

可以 在 issue 的 Activity(活动)视图 中查看更新,点击任务链接查看更详细的进度,当任务完成后,Codex 会发布摘要并附上完成任务的链接,你可以据此创建 Pull Request(PR)。

4.4.3.5 自动将 Issue 指派给 Codex

可以通过设置 triage rules(初筛规则)自动将新 issue 分派给 Codex:

  1. 在 Linear 侧边栏进入 Settings(设置)
  2. Your teams(你的团队) 下选择你想要设置的团队。
  3. 打开 Workflow(工作流) → Triage(初筛)
  4. 新建规则并设置将符合条件的 issue 委派给 Codex
  5. 新任务符合规则后将自动分配给 Codex 执行。

当使用 triage 规则自动委派时,Codex 会使用 issue 创建者的账户 来运行任务。
在这里插入图片描述


4.4.3.6 数据使用、隐私与安全

当你 mention 尽量写清楚你想让 Codex 做什么,因为 Codex 会读取这段内容来理解请求并生成任务。数据处理遵循 OpenAI 的隐私政策与使用条款;详见官方文档。 Codex 生成的内容可能不总是正确,你仍需手动审核其回答和 diffs(变更差异)。

4.4.3.7 常见提示与故障排查

连接失败:如果 Codex 无法确认链接,它会在 issue 中回复一个连接账户的链接。

环境被选错了:在评论中补充你想要的环境,这样可指导 Codex 选择正确环境执行任务,例如:

@Codex please run this in openai/codex

代码上下文不准确或不完整:提供更多上下文或明确指令,有助于 Codex 更准确完成任务。

查看更多帮助:可以查阅 OpenAI 的帮助中心获取更完整的说明。


4.4.3.8 在本地通过 MCC 使用 Linear

如果你想让 Codex 在本地访问 Linear issue(如通过 CLI 或 IDE 扩展),可以使用 Codex 的 MCP(Model Context Protocol)服务器,推荐方法(CLI)

codex mcp add linear --url https://mcp.linear.app/mcp

执行后系统会提示登录 Linear,完成账户连接。也可以使用手动方法,在 ~/.codex/config.toml 文件中添加:

[mcp_servers.linear]
url = "https://mcp.linear.app/mcp"

然后运行,即可手动连接 Linear:

codex mcp login linear

好,这里给你一版第一人称(博主视角)+ 精简概括型的整篇博客小结,偏“收束观点 + 给读者方向”,不铺细节、不啰嗦:


4.5 小结

本章对比了 IDE、CLI、Cloud(Web)以及 GitHub / Slack / Linear 等集成入口的定位与适用场景。

一个实用的选择原则是:写改与即时反馈用 IDE;批处理、脚本与审查用 CLI;并行/长任务用 Cloud;团队协作则把 Codex 放进现有流程。

建议你先固定一套自己最常用场景的“输入 → 执行 → 验证 → 交付”模板,后续再通过 config、rules 与 skills 逐步工程化。


05 配置篇:config.toml(模型 / 审批 / 沙箱)

本章是本合集的配置篇,聚焦 Codex 本地运行的“控制面板”——~/.codex/config.toml。如果你已经能跑通一次基本会话,本章将帮助你把模型选择、审批策略与沙箱边界调整到适合自己的工作流。

Codex 会在本地执行命令、读写文件、请求审批,其行为几乎完全由 ~/.codex/config.toml 决定。默认配置虽然安全,但在真实工程场景下往往限制较多。

本文将围绕 Codex 的配置体系展开,从基础配置到高级用法,重点说明每个关键配置项的作用与影响范围,帮助大家快速搭建一套符合自己工作流的 Codex 运行环境。

5.1 基础配置

原文地址:https://developers.openai.com/codex/config-basic

Codex 会从 ~/.codex/config.toml 读取本地设置,你可以使用这个文件来更改默认值(比如模型)、设置审批与沙箱行为,以及配置 MCP 服务器。

5.1.1 配置文件

Codex 将其配置存储在:~/.codex/config.toml,要从 Codex IDE 扩展打开该配置文件:

  1. 点击右上角的齿轮图标;
  2. 选择 Codex 设置(Codex Settings)
  3. 然后选择 打开 config.toml(Open config.toml)

CLI 与 IDE 扩展共用同一个 config.toml 文件。你可以使用它来:

  • 设置默认模型与提供商
  • 配置审批策略与沙箱设置
  • 配置 MCP 服务器

5.1.2 配置优先级

Codex 在解析值时遵循以下顺序:

  1. CLI 标志(例如 --model);
  2. 通过 --profile <名称> 指定的配置文件值(Profile);
  3. config.toml 顶层值;
  4. 内置默认值 。

使用这种优先级意味着你可以在顶层设置共享默认值,将可变的值保持在 Profile 中,要进行单次覆盖(包括 TOML 引号规则),请参阅高级配置(Advanced Config):https://developers.openai.com/codex/config-advanced#one-off-overrides-from-the-cli

备注:在受管理的机器上,你的组织也可能通过 requirements.toml 强制执行约束,例如不允许 approval_policy = "never"sandbox_mode = "danger-full-access"


5.1.3 常见配置选项

以下是最常修改的一些配置,所有示例都在 config.toml 顶层配置中设置。

① 默认模型:选择 CLI 和 IDE 中 Codex 默认使用的模型

model = "gpt-5.2"

② 审批提示: 控制 Codex 在执行生成命令之前何时暂停询问

approval_policy = "on-request"

③ 沙箱级别:调整 Codex 在执行命令时对文件系统和网络访问的程度

sandbox_mode = "workspace-write"

④ 推理强度:调整在模型支持时 Codex 使用多少推理能力

model_reasoning_effort = "high"

⑤ 命令环境:限制或扩展哪些环境变量会被传递给被启动的命令:

[shell_environment_policy]
include_only = ["PATH", "HOME"]

5.1.4 功能开关

可选的实验性功能可以通过 config.toml 中的 [features] 表来切换:

[features]
shell_snapshot = true           # 加快重复命令的速度
web_search_request = true       # 允许模型请求网页搜索

支持的功能(成熟度标签表示该功能的稳定性与实验性质,可以根据需要选择开启或保持默认)

默认值 成熟度 描述
apply_patch_freeform false Experimental 包含自由形式的 apply_patch 工具
elevated_windows_sandbox false Experimental 使用提升权限的 Windows 沙箱
exec_policy true Experimental shell / unified_exec 强制策略检查
experimental_windows_sandbox false Experimental 使用 Windows 限制令牌沙箱
remote_compaction true Experimental 启用远程压缩(仅限 ChatGPT 授权)
remote_models false Experimental 刷新远程模型列表以显示可用性
shell_snapshot false Beta 快速完成重复命令
shell_tool true Stable 启用默认的 shell 工具
unified_exec false Beta 使用统一的 PTY 执行工具
undo true Stable 支持通过每次操作的 git 快照进行撤销
web_search_request false Stable 允许模型发起网页搜索请求

如果要快速启用某个功能,可以 在 config.toml[features] 部分添加:

feature_name = true

或者从命令行运行:

codex --enable feature_name

如果要同时启用多个功能:

codex --enable feature_a --enable feature_b

要停用某个功能,将其设置为:

feature_name = false

这样就可以灵活控制 Codex 的实验性与高级功能。

5.2 高级配置

原文链接:https://developers.openai.com/codex/config-advanced

5.2.1 Profiles

Profiles 允许你保存一组具名的配置集合,并在 CLI 中快速切换。

Profiles 目前仍处于实验阶段,未来版本中可能会变更或移除;
Codex IDE 扩展目前 不支持 Profiles

config.toml 中通过 [profiles.<name>] 定义profiles,然后运行:

codex --profile <name>

示例:

model = "gpt-5-codex"
approval_policy = "on-request"

[profiles.deep-review]
model = "gpt-5-pro"
model_reasoning_effort = "high"
approval_policy = "never"

[profiles.lightweight]
model = "gpt-4.1"
approval_policy = "untrusted"

如果你想让某个 profile 成为默认值,可在 config.toml 顶层添加:

profile = "deep-review"

除非在命令行中显式覆盖,否则 Codex 会自动加载该 profile。


5.2.2 通过 CLI 进行单次覆盖

除了编辑 ~/.codex/config.toml 之外,你还可以在 单次运行时 通过 CLI 覆盖配置:

  • 优先使用已有的专用参数(例如 --model
  • 如需覆盖任意键,使用 -c / --config

示例:

# 专用参数
codex --model gpt-5.2

# 通用键值覆盖(值是 TOML,而不是 JSON)
codex --config model='"gpt-5.2"'
codex --config sandbox_workspace_write.network_access=true
codex --config 'shell_environment_policy.include_only=["PATH","HOME"]'

注意事项:

  • 配置键支持 点号语法 来设置嵌套值(例如:mcp_servers.context7.enabled=false);
  • --config 的值会按 TOML 解析;
  • 如有疑问,请加引号以避免 shell 按空格拆分,如果无法解析为 TOML,Codex 会将其当作字符串处理。

5.2.3 配置与状态文件位置

Codex 会将本地状态存储在 CODEX_HOME 目录下(默认是 ~/.codex),你可能会看到的常见文件包括:

  • config.toml:本地配置;
  • auth.json:使用文件方式存储凭据时或系统的 keychain / keyring;
  • history.jsonl:启用历史记录持久化时,其他每用户状态,例如日志和缓存。

关于认证(包括凭据存储方式)的更多细节,请参见 Authentication,完整配置键列表请参见 Configuration Reference


5.2.4 项目根目录检测

Codex 会从当前工作目录向上查找项目配置(例如 .codex/ 层级和 AGENTS.md),直到找到“项目根目录”,默认情况下,只要目录中包含 .git,就会被视为项目根目录,可以在 config.toml 中自定义该行为:

# 当目录中包含以下任意标记时,将其视为项目根目录
project_root_markers = [".git", ".hg", ".sl"]

如果设置为空数组:

project_root_markers = []

则 Codex 不再向上搜索父目录,而是将当前工作目录视为项目根目录。


5.2.5 自定义模型提供方

模型提供方定义了 Codex 如何连接模型(基础 URL、API 协议、可选 HTTP 头),你可以定义额外的提供方,并通过 model_provider 指向它们:

model = "gpt-5.1"
model_provider = "proxy"

[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "http://proxy.example.com"
env_key = "OPENAI_API_KEY"

[model_providers.ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"

[model_providers.mistral]
name = "Mistral"
base_url = "https://api.mistral.ai/v1"
env_key = "MISTRAL_API_KEY"

如有需要,可添加请求头:

[model_providers.example]
http_headers = { "X-Example-Header" = "example-value" }
env_http_headers = { "X-Example-Features" = "EXAMPLE_FEATURES" }

5.2.6 OpenAI 基础 URL 覆盖

如果你只是想让内置 OpenAI 提供方指向一个 LLM 代理或路由器,可以直接设置 OPENAI_BASE_URL,无需修改 config.toml

export OPENAI_BASE_URL="https://api.openai.com/v1"
codex

5.2.7 OSS 模式(本地模型提供方)

当你使用 --oss 参数时,Codex 可以运行在本地“开源”模型提供方之上(例如 Ollama 或 LM Studio),如果使用 --oss 但未指定提供方,Codex 会使用 oss_provider 作为默认值:

# 使用 --oss 时的默认本地提供方
oss_provider = "ollama" # 或 "lmstudio"

5.2.8 Azure 提供方及单独调优

[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT_NAME.openai.azure.com/openai"
env_key = "AZURE_OPENAI_API_KEY"
query_params = { api-version = "2025-04-01-preview" }
wire_api = "responses"

[model_providers.openai]
request_max_retries = 4
stream_max_retries = 10
stream_idle_timeout_ms = 300000

5.2.9 模型推理、输出冗长度与限制

model_reasoning_summary = "none"          # 禁用推理摘要
model_verbosity = "low"                   # 缩短回复
model_supports_reasoning_summaries = true # 强制启用推理
model_context_window = 128000             # 上下文窗口大小

model_verbosity 仅对使用 Responses API 的提供方生效。 Chat Completions 提供方会忽略该设置。


5.2.10 审批策略与沙箱模式

选择审批严格度(影响 Codex 何时暂停)以及沙箱级别(影响文件 / 网络访问)。更深入的示例请参见 Sandbox & approvals

approval_policy = "untrusted"   # 其他选项:on-request, on-failure, never
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
exclude_tmpdir_env_var = false  # 允许 $TMPDIR
exclude_slash_tmp = false       # 允许 /tmp
writable_roots = ["/Users/YOU/.pyenv/shims"]
network_access = false          # 是否允许外部网络访问

workspace-write 模式下,某些环境仍会将 .git/.codex/ 设为只读。因此,即使工作区可写,git commit 等命令仍可能需要审批,如果你希望 Codex 跳过特定命令(例如阻止沙箱外的 git commit),请使用 rules

完全禁用沙箱(⚠️仅在你的环境已自行隔离进程时使用):

sandbox_mode = "danger-full-access"

5.2.11 Shell 环境变量策略

shell_environment_policy 控制 Codex 启动子进程时传递哪些环境变量(例如执行模型提出的工具命令时)。可以从一个干净环境(inherit = "none")或精简环境(inherit = "core")开始,再叠加排除、包含和覆盖规则,避免泄露密钥,同时仍保留必要路径或标志。

[shell_environment_policy]
inherit = "none"
set = { PATH = "/usr/bin", MY_FLAG = "1" }
ignore_default_excludes = false
exclude = ["AWS_*", "AZURE_*"]
include_only = ["PATH", "HOME"]

匹配规则为不区分大小写的 glob 模式*, ?, [A-Z])。当 ignore_default_excludes = false 时,会在你自定义规则前自动过滤 KEY/SECRET/TOKEN


5.2.12 可观测性与遥测

你可以启用 OpenTelemetry(OTel)日志导出,用于跟踪 Codex 运行情况(API 请求、SSE 事件、提示词、工具审批 / 结果等)。默认关闭,需要在 [otel] 中显式启用:

[otel]
environment = "staging"   # 默认为 "dev"
exporter = "none"         # 可设为 otlp-http 或 otlp-grpc
log_user_prompt = false   # 默认不记录用户提示内容

选择导出器:

[otel]
exporter = { otlp-http = {
  endpoint = "https://otel.example.com/v1/logs",
  protocol = "binary",
  headers = { "x-otlp-api-key" = "${OTLP_TOKEN}" }
}}
[otel]
exporter = { otlp-grpc = {
  endpoint = "https://otel.example.com:4317",
  headers = { "x-otlp-meta" = "abc123" }
}}

exporter = "none" 时,Codex 会记录事件但不会发送,导出器会异步批量发送,并在退出时刷新。


会发送哪些事件?

Codex 会为运行和工具使用发送结构化日志事件,示例包括:

  • codex.conversation_starts(model, reasoning settings, sandbox/approval policy)
  • codex.api_request and codex.sse_event (durations, status, token counts)
  • codex.user_prompt(length; content redacted unless explicitly enabled)
  • codex.tool_decision (approved/denied and whether the decision came from config vs user)
  • codex.tool_result (duration, success, output snippet)

更详细的安全与隐私说明请参见 Security


指标(Metrics)

默认情况下,Codex 会周期性地向 OpenAI 发送少量匿名使用与健康数据,用于检测故障并了解功能使用情况。这些数据 不包含任何 PII(个人可识别信息),如需完全关闭指标收集:

[analytics]
enabled = false

默认上下文字段(适用于所有事件 / 指标)

  • surface
  • version
  • auth_mode
  • model

指标目录

Metric Type Fields Description
features.state counter key, value Feature values that differ from defaults (emit one row per non-default).
thread.started counter is_git New thread created.
task.compact counter type Number of compactions per type (remote or local), including manual and auto.
task.user_shell counter Number of user shell actions (! in the TUI for example).
task.review counter Number of reviews triggered.
approval.requested counter tool, approved Tool approval request result (approved: yes or no).
conversation.turn.count counter User/assistant turns per thread, recorded at the end of the thread.
mcp.call counter status MCP tool invocation result (ok or error string).
model.call.duration_ms histogram status, attempt Model API request duration.
tool.call counter tool, status Tool invocation result (ok or error string).
tool.call.duration_ms histogram tool, success Tool execution time.
user.feedback.submitted counter category, include_logs, success Feedback submission via /feedback.

反馈控制

默认支持通过 /feedback 提交反馈,如需禁用:

[feedback]
enabled = false

隐藏或显示推理事件

hide_agent_reasoning = true
show_raw_agent_reasoning = true

仅在你的工作流允许的情况下启用原始推理内容。


通知

使用 notify 在 Codex 触发事件时调用外部程序(目前支持 agent-turn-complete)。

notify = ["python3", "/path/to/notify.py"]

示例脚本:

#!/usr/bin/env python3
import json, subprocess, sys

def main() -> int:
    notification = json.loads(sys.argv[1])
    if notification.get("type") != "agent-turn-complete":
        return 0
    title = f"Codex: {notification.get('last-assistant-message', 'Turn Complete!')}"
    message = " ".join(notification.get("input-messages", []))
    subprocess.check_output([
        "terminal-notifier",
        "-title", title,
        "-message", message,
        "-group", "codex-" + notification.get("thread-id", ""),
        "-activate", "com.googlecode.iterm2",
    ])
    return 0

if __name__ == "__main__":
    sys.exit(main())


历史记录持久化

默认情况下,Codex 会将会话记录保存在 CODEX_HOME 下:

[history]
persistence = "none"

限制历史文件大小:

[history]
max_bytes = 104857600 # 100 MiB

可点击的文件引用

file_opener = "vscode" # 或 cursor, windsurf, vscode-insiders, none

5.2.13 项目指令发现

Codex 会读取 AGENTS.md 并在会话首轮中注入项目指引,相关配置:

  • project_doc_max_bytes
  • project_doc_fallback_filenames

详见 Custom instructions with AGENTS.md


5.2.14 TUI options

TUI(终端界面)选项

直接运行 codex 会启动交互式 TUI,专属配置位于 [tui] 下,包括:

  • tui.notifications
  • tui.animations
  • tui.scroll_*

5.3 完整配置参考

原文地址:https://developers.openai.com/codex/config-reference

以下是 Codex 的 config.tomlrequirements.toml 的完整参考文档。

5.3.1 config.toml

用户级别的配置位于:~/.codex/config.toml

Key Type / Values Details
approval_policy untrusted on-failure
chatgpt_base_url string 覆盖 ChatGPT 登录流程中使用的基础 URL。
check_for_update_on_startup boolean 在启动时检查 Codex 更新(仅在更新由集中管理时才设置为 false)。
cli_auth_credentials_store file keyring
compact_prompt string 内联覆盖用于历史压缩的提示词。
developer_instructions string 注入到会话中的额外开发者指令(可选)。
disable_paste_burst boolean 在 TUI 中禁用批量粘贴检测。
experimental_compact_prompt_file string (path) 从文件加载历史压缩提示词的覆盖版本(实验性)。
experimental_instructions_file string (path) 实验性:使用该文件替代内置指令,而不是 AGENTS.md
experimental_use_freeform_apply_patch boolean 启用自由格式 apply_patch 的旧名称;推荐使用 [features].apply_patch_freeformcodex --enable apply_patch_freeform
experimental_use_unified_exec_tool boolean 启用 unified exec 的旧名称;推荐使用 [features].unified_execcodex --enable unified_exec
features.apply_patch_freeform boolean 暴露自由格式的 apply_patch 工具(实验性)。
features.elevated_windows_sandbox boolean 启用提升权限的 Windows 沙箱管道(实验性)。
features.exec_policy boolean shell / unified_exec 强制执行规则检查(实验性;默认开启)。
features.experimental_windows_sandbox boolean 运行 Windows 受限令牌沙箱(实验性)。
features.powershell_utf8 boolean 强制 PowerShell 使用 UTF-8 输出(默认 true)。
features.remote_compaction boolean 启用远程历史压缩(仅 ChatGPT 登录;实验性;默认开启)。
features.remote_models boolean 在显示就绪状态前刷新远程模型列表(实验性)。
features.shell_snapshot boolean 对 shell 环境进行快照以加速重复命令(beta)。
features.shell_tool boolean 启用默认的 shell 工具以运行命令(稳定版;默认开启)。
features.tui2 boolean 启用 TUI2 界面(实验性)。
features.unified_exec boolean 使用统一的、基于 PTY 的 exec 工具(beta)。
features.web_search_request boolean 允许模型发起 Web 搜索请求(稳定)。
feedback.enabled boolean 通过 /feedback 启用跨 Codex 界面的反馈提交(默认 true)。
file_opener vscode vscode-insiders
forced_chatgpt_workspace_id string (uuid) 将 ChatGPT 登录限制到指定的工作区标识符。
forced_login_method chatgpt api
hide_agent_reasoning boolean 在 TUI 和 codex exec 输出中隐藏推理事件。
history.max_bytes number 如果设置,将通过丢弃最旧条目来限制历史文件大小(字节)。
history.persistence save-all none
include_apply_patch_tool boolean 启用自由格式 apply_patch 的旧名称;推荐使用 [features].apply_patch_freeform
instructions string 保留供未来使用;推荐使用 experimental_instructions_fileAGENTS.md
mcp_oauth_credentials_store auto file
mcp_servers..args array 传递给 MCP stdio server 命令的参数。
mcp_servers..bearer_token_env_var string 为 MCP HTTP server 提供 bearer token 的环境变量。
mcp_servers..command string MCP stdio server 的启动命令。
mcp_servers..cwd string MCP stdio server 进程的工作目录。
mcp_servers..disabled_tools array enabled_tools 之后应用的工具拒绝列表。
mcp_servers..enabled boolean 在不移除配置的情况下禁用 MCP server。
mcp_servers..enabled_tools array MCP server 暴露的工具名称白名单。
mcp_servers..env map<string,string> 转发给 MCP stdio server 的环境变量。
mcp_servers..env_http_headers map<string,string> 从环境变量填充的 HTTP Header(用于 MCP HTTP server)。
mcp_servers..env_vars array 额外允许的 MCP stdio server 环境变量白名单。
mcp_servers..http_headers map<string,string> 每次 MCP HTTP 请求都会包含的静态 Header。
mcp_servers..startup_timeout_ms number startup_timeout_sec 的毫秒别名。
mcp_servers..startup_timeout_sec number 覆盖 MCP server 默认 10 秒的启动超时。
mcp_servers..tool_timeout_sec number 覆盖 MCP server 默认 60 秒的单工具超时。
mcp_servers..url string MCP 可流式 HTTP server 的端点。
model string 使用的模型(例如 gpt-5-codex)。
model_auto_compact_token_limit number 触发自动历史压缩的 token 阈值(未设置则使用模型默认值)。
model_context_window number 当前模型可用的上下文窗口 token 数。
model_provider string 来自 model_providers 的 provider id(默认:openai)。
model_providers..base_url string 模型提供方的 API 基础 URL。
model_providers..env_http_headers map<string,string> 从环境变量填充的 HTTP Header。
model_providers..env_key string 提供方 API Key 所在的环境变量。
model_providers..env_key_instructions string 可选的 API Key 配置说明。
model_providers..experimental_bearer_token string 直接提供 bearer token(不推荐;请使用 env_key)。
model_providers..http_headers map<string,string> 添加到提供方请求中的静态 HTTP Header。
model_providers..name string 自定义模型提供方的显示名称。
model_providers..query_params map<string,string> 附加到请求中的额外查询参数。
model_providers..request_max_retries number 提供方 HTTP 请求的最大重试次数(默认 4)。
model_providers..requires_openai_auth boolean 提供方是否使用 OpenAI 认证(默认 false)。
model_providers..stream_idle_timeout_ms number SSE 流的空闲超时(毫秒,默认 300000)。
model_providers..stream_max_retries number SSE 流中断的最大重试次数(默认 5)。
model_providers..wire_api chat responses
model_reasoning_effort minimal low
model_reasoning_summary auto concise
model_supports_reasoning_summaries boolean 即使是未知模型也强制 Codex 发送推理元数据。
model_verbosity low medium
notice.hide_full_access_warning boolean 记录是否确认“完全访问权限”警告。
notice.hide_gpt-5.1-codex-max_migration_prompt boolean 记录是否确认 gpt-5.1-codex-max 迁移提示。
notice.hide_gpt5_1_migration_prompt boolean 记录是否确认 GPT-5.1 迁移提示。
notice.hide_rate_limit_model_nudge boolean 记录是否选择退出速率限制模型切换提示。
notice.hide_world_writable_warning boolean 记录是否确认 Windows 全局可写目录警告。
notice.model_migrations map<string,string> 记录已确认的模型迁移映射(旧 → 新)。
notify array 用于通知的命令;会接收来自 Codex 的 JSON 负载。
oss_provider lmstudio ollama
otel.environment string 应用于 OpenTelemetry 事件的环境标签(默认 dev)。
otel.exporter none otlp-http
otel.exporter..endpoint string OTEL 日志导出端点。
otel.exporter..headers map<string,string> OTEL 导出请求中包含的静态 Header。
otel.exporter..protocol binary json
otel.exporter..tls.ca-certificate string OTEL 导出器 TLS 的 CA 证书路径。
otel.exporter..tls.client-certificate string OTEL 导出器 TLS 的客户端证书路径。
otel.exporter..tls.client-private-key string OTEL 导出器 TLS 的客户端私钥路径。
otel.log_user_prompt boolean 选择是否在 OpenTelemetry 日志中导出原始用户提示词。
otel.trace_exporter none otlp-http
otel.trace_exporter..endpoint string Trace 导出端点。
otel.trace_exporter..headers map<string,string> Trace 导出请求的静态 Header。
otel.trace_exporter..protocol binary json
otel.trace_exporter..tls.ca-certificate string Trace 导出器 TLS 的 CA 证书路径。
otel.trace_exporter..tls.client-certificate string Trace 导出器 TLS 的客户端证书路径。
otel.trace_exporter..tls.client-private-key string Trace 导出器 TLS 的客户端私钥路径。
profile string 启动时应用的默认 profile(等价于 --profile)。
profiles..* various 对任意支持配置项的 profile 级别覆盖。
profiles..experimental_use_freeform_apply_patch boolean 启用自由格式 apply_patch 的旧名称。
profiles..experimental_use_unified_exec_tool boolean 启用 unified exec 的旧名称。
profiles..include_apply_patch_tool boolean 启用自由格式 apply_patch 的旧名称。
profiles..oss_provider lmstudio ollama
project_doc_fallback_filenames array AGENTS.md 缺失时尝试的额外文件名。
project_doc_max_bytes number 构建项目指令时从 AGENTS.md 读取的最大字节数。
project_root_markers array 用于查找项目根目录的标记文件名列表。
projects. .trust_level string 将项目或 worktree 标记为受信任或不受信任("trusted"
review_model string /review 使用的模型覆盖。
sandbox_mode read-only workspace-write
sandbox_workspace_write.exclude_slash_tmp boolean 在 workspace-write 模式下排除 /tmp
sandbox_workspace_write.exclude_tmpdir_env_var boolean 在 workspace-write 模式下排除 $TMPDIR
sandbox_workspace_write.network_access boolean 允许 workspace-write 沙箱内的外部网络访问。
sandbox_workspace_write.writable_roots array workspace-write 模式下额外的可写目录。
shell_environment_policy.exclude array 默认处理后移除的环境变量 glob 模式。
shell_environment_policy.experimental_use_profile boolean 生成子进程时使用用户 shell profile。
shell_environment_policy.ignore_default_excludes boolean 在其他过滤前保留包含 KEY/SECRET/TOKEN 的变量。
shell_environment_policy.include_only array 白名单模式,仅保留匹配的变量。
shell_environment_policy.inherit all core
shell_environment_policy.set map<string,string> 注入到每个子进程的显式环境变量。
show_raw_agent_reasoning boolean 当模型输出推理时展示原始推理内容。
skills.config array 存储在 config.toml 中的技能级别启用配置。
skills.config..enabled boolean 启用或禁用对应技能。
skills.config..path string (path) 包含 SKILL.md 的技能目录路径。
tool_output_token_limit number 单个工具/函数输出存入历史的 token 上限。
tui table TUI 专用选项,例如启用桌面内联通知。
tui.animations boolean 启用终端动画(欢迎页、闪光、加载器)(默认 true)。
tui.notifications boolean array
tui.scroll_events_per_tick number TUI2 中用于标准化滚动的事件密度。
tui.scroll_invert boolean 反转 TUI2 的鼠标滚动方向。
tui.scroll_mode auto wheel
tui.scroll_trackpad_accel_events number 触发 +1x 加速所需的触控板事件数。
tui.scroll_trackpad_accel_max number 触控板滚动的最大加速倍数。
tui.scroll_trackpad_lines number TUI2 的触控板滚动基础灵敏度。
tui.scroll_wheel_like_max_duration_ms number 自动模式下回退为滚轮的持续时间阈值(毫秒)。
tui.scroll_wheel_lines number TUI2 中每次滚轮刻度滚动的行数。
tui.scroll_wheel_tick_detect_max_ms number 自动模式下滚轮刻度检测阈值(毫秒)。
tui.show_tooltips boolean 在 TUI 欢迎界面显示新手提示(默认 true)。
windows_wsl_setup_acknowledged boolean 记录 Windows 引导流程的确认状态(仅 Windows)。

5.3.2 requirements.toml

requirements.toml由管理员强制执行的配置文件,用于限制用户无法覆盖的安全敏感设置。
有关详情、路径和示例,请参见 Admin-enforced requirements

Key Type / Values Details
allowed_approval_policies array<string> approval_policy 允许使用的取值。
allowed_sandbox_modes array<string> sandbox_mode 允许使用的取值。

5.4 示例配置

下面的代码片段可以作为参考使用,只需将配置项和配置段复制到 ~/.codex/config.toml 中,然后根据你的实际环境调整相应的值。

# Codex 示例配置(config.toml)
#
# 本文件列出了 Codex 会从 config.toml 读取的所有键、它们的默认值,
# 以及简要说明。这里的值与 CLI 编译进来的“实际默认值”一致。
# 可按需调整。
#
# 备注
# - 根级键必须出现在 TOML 的表(table)之前。
# - 默认值为 “未设置(unset)” 的可选键会以注释形式展示并附带说明。
# - MCP 服务器、profiles(配置文件)以及模型提供方都是示例;可删除或修改。

################################################################################
# 核心模型选择
################################################################################

# Codex 使用的主模型。默认:所有平台均为 "gpt-5.2-codex"。
model = "gpt-5.2-codex"

# /review 功能(代码审查)使用的模型。默认:"gpt-5.2-codex"。
review_model = "gpt-5.2-codex"

# 从 [model_providers] 中选择的提供方 id。默认:"openai"。
model_provider = "openai"

# 用于 --oss 会话的默认开源提供方。未设置时,Codex 会提示选择。默认:未设置。
# oss_provider = "ollama"

# 可选的手动模型元数据。未设置时,Codex 会根据 model 自动检测。
# 取消注释以强制指定这些值。
# model_context_window = 128000       # token 数;默认:按模型自动决定
# model_auto_compact_token_limit = 0  # token 数;未设置时使用模型默认值
# tool_output_token_limit = 10000     # 每个工具输出存储的 token 数;对 gpt-5.2-codex 默认是 10000

################################################################################
# 推理与详细度(支持 Responses API 的模型)
################################################################################

# 推理强度:minimal | low | medium | high | xhigh(默认:medium;在 gpt-5.2-codex 与 gpt-5.2 上为 xhigh)
model_reasoning_effort = "medium"

# 推理摘要:auto | concise | detailed | none(默认:auto)
model_reasoning_summary = "auto"

# GPT-5 系列(Responses API)的文本输出详细度:low | medium | high(默认:medium)
model_verbosity = "medium"

# 为当前模型强制启用推理摘要(默认:false)
model_supports_reasoning_summaries = false

################################################################################
# 指令覆盖
################################################################################

# 额外的用户指令会在 AGENTS.md 之前注入。默认:未设置。
# developer_instructions = ""

#(已忽略)可选的旧版基础指令覆盖(建议使用 AGENTS.md)。默认:未设置。
# instructions = ""

# 历史压缩提示词(compaction prompt)的内联覆盖。默认:未设置。
# compact_prompt = ""

# 用文件路径覆盖内置的基础指令。默认:未设置。
# experimental_instructions_file = "/absolute/or/relative/path/to/instructions.txt"

# 从文件加载历史压缩提示词覆盖。默认:未设置。
# experimental_compact_prompt_file = "/absolute/or/relative/path/to/compact_prompt.txt"


################################################################################
# 通知
################################################################################

# 外部通知程序(argv 数组)。未设置时:禁用。
# 示例:notify = ["notify-send", "Codex"]
notify = [ ]


################################################################################
# 审批与沙箱
################################################################################

# 何时请求命令审批:
# - untrusted:仅已知安全的只读命令自动执行;其余命令会提示确认
# - on-failure:在沙箱中自动执行;仅在失败时提示升级/放权
# - on-request:由模型决定何时询问(默认)
# - never:从不询问(风险较大)
approval_policy = "on-request"

# 工具调用的文件系统/网络沙箱策略:
# - read-only(默认)
# - workspace-write
# - danger-full-access(无沙箱;极其危险)
sandbox_mode = "read-only"

################################################################################
# 认证与登录
################################################################################

# CLI 登录凭据的持久化方式:file(默认) | keyring | auto
cli_auth_credentials_store = "file"

# ChatGPT 认证流程的基础 URL(不是 OpenAI API)。默认:
chatgpt_base_url = "https://chatgpt.com/backend-api/"

# 将 ChatGPT 登录限制到指定 workspace id。默认:未设置。
# forced_chatgpt_workspace_id = ""

# 当 Codex 通常会自动选择时,强制指定登录机制。默认:未设置。
# 可选值:chatgpt | api
# forced_login_method = "chatgpt"

# MCP OAuth 凭据的首选存储方式:auto(默认) | file | keyring
mcp_oauth_credentials_store = "auto"

################################################################################
# 项目文档控制
################################################################################

# 从 AGENTS.md 中最多嵌入到首轮指令的字节数。默认:32768
project_doc_max_bytes = 32768

# 当某一层目录缺少 AGENTS.md 时,按顺序尝试的备用文件名。默认:[]
project_doc_fallback_filenames = []

# 在向上查找父目录时,用来识别项目根目录的标记文件名。默认:[".git"]
# project_root_markers = [".git"]

################################################################################
# 历史与文件打开方式
################################################################################

# 可点击引用(citations)的 URI scheme:vscode(默认) | vscode-insiders | windsurf | cursor | none
file_opener = "vscode"

################################################################################
# UI、通知与杂项
################################################################################

# 抑制内部推理事件的输出。默认:false
hide_agent_reasoning = false

# 当可用时显示原始推理内容。默认:false
show_raw_agent_reasoning = false

# 禁用 TUI 中的“突发粘贴(burst-paste)”检测。默认:false
disable_paste_burst = false

# 记录 Windows 入门设置确认(仅 Windows)。默认:false
windows_wsl_setup_acknowledged = false

# 启动时检查更新。默认:true
check_for_update_on_startup = true

################################################################################
# Profiles(命名预设)
################################################################################

# 当前启用的 profile 名称。未设置时,不应用任何 profile。
# profile = "default"

################################################################################
# Skills(按技能覆盖)
################################################################################

# 在不删除技能的情况下禁用或重新启用某个技能。
[[skills.config]]
# path = "/path/to/skill"
# enabled = false

################################################################################
# 实验性开关(旧版;优先使用 [features])
################################################################################

experimental_use_unified_exec_tool = false

# 通过自由编辑路径包含 apply_patch(影响默认工具集)。默认:false
experimental_use_freeform_apply_patch = false

################################################################################
# 沙箱设置(表)
################################################################################

# 仅在 sandbox_mode = "workspace-write" 时使用的额外设置。
[sandbox_workspace_write]
# 除工作区(cwd)外额外允许写入的根目录。默认:[]
writable_roots = []
# 允许在沙箱内进行出站网络访问。默认:false
network_access = false
# 将 $TMPDIR 从可写根目录中排除。默认:false
exclude_tmpdir_env_var = false
# 将 /tmp 从可写根目录中排除。默认:false
exclude_slash_tmp = false

################################################################################
# 生成子进程的 Shell 环境策略(表)
################################################################################

[shell_environment_policy]
# inherit:all(默认) | core | none
inherit = "all"
# 对名称包含 KEY/SECRET/TOKEN(不区分大小写)的变量,跳过默认排除规则。默认:true
ignore_default_excludes = true
# 要移除的(不区分大小写)glob 模式(例如:"AWS_*", "AZURE_*")。默认:[]
exclude = []
# 显式 key/value 覆盖(始终优先)。默认:{}
set = {}
# 白名单;若非空,则只保留匹配的变量。默认:[]
include_only = []
# 实验性:通过用户 shell profile 运行。默认:false
experimental_use_profile = false

################################################################################
# 历史(表)
################################################################################

[history]
# save-all(默认) | none
persistence = "save-all"
# 历史文件最大字节数;超过后会裁剪最旧条目。示例:5242880
# max_bytes = 0

################################################################################
# UI、通知与杂项(表)
################################################################################

[tui]
# 来自 TUI 的桌面通知:布尔值或过滤列表。默认:true
# 示例:false | ["agent-turn-complete", "approval-requested"]
notifications = false

# 启用欢迎/状态/加载动画。默认:true
animations = true

# 在欢迎界面显示入门提示。默认:true
show_tooltips = true

# 可选的 TUI2 滚动调优(未设置则使用默认值)。
# scroll_events_per_tick = 0
# scroll_wheel_lines = 0
# scroll_trackpad_lines = 0
# scroll_trackpad_accel_events = 0
# scroll_trackpad_accel_max = 0
# scroll_mode = "auto"  # auto | wheel | trackpad
# scroll_wheel_tick_detect_max_ms = 0
# scroll_wheel_like_max_duration_ms = 0
# scroll_invert = false

# 控制用户是否可以通过 `/feedback` 提交反馈。默认:true
[feedback]
enabled = true

# 产品内提示(多由 Codex 自动设置)。
[notice]
# hide_full_access_warning = true
# hide_world_writable_warning = true
# hide_rate_limit_model_nudge = true
# hide_gpt5_1_migration_prompt = true
# "hide_gpt-5.1-codex-max_migration_prompt" = true
# model_migrations = { "gpt-4.1" = "gpt-5.1" }

################################################################################
# 集中式功能开关(推荐)
################################################################################

[features]
# 将该表留空即可接受默认值。设置显式布尔值以选择加入/退出。
shell_tool = true
web_search_request = false
unified_exec = false
shell_snapshot = false
apply_patch_freeform = false
exec_policy = true
experimental_windows_sandbox = false
elevated_windows_sandbox = false
remote_compaction = true
remote_models = false
powershell_utf8 = true
tui2 = false

################################################################################
# 在此表下定义 MCP 服务器。留空则禁用。
################################################################################

[mcp_servers]

# --- 示例:STDIO 传输 ---
# [mcp_servers.docs]
# enabled = true                       # 可选;默认 true
# command = "docs-server"                 # 必填
# args = ["--port", "4000"]               # 可选
# env = { "API_KEY" = "value" }           # 可选:按原样复制的 key/value
# env_vars = ["ANOTHER_SECRET"]            # 可选:从父进程环境转发这些变量
# cwd = "/path/to/server"                 # 可选:工作目录覆盖
# startup_timeout_sec = 10.0               # 可选;默认 10.0 秒
# # startup_timeout_ms = 10000              # 可选:启动超时(毫秒)的别名
# tool_timeout_sec = 60.0                  # 可选;默认 60.0 秒
# enabled_tools = ["search", "summarize"]  # 可选:允许列表
# disabled_tools = ["slow-tool"]           # 可选:禁用列表(在允许列表之后生效)

# --- 示例:可流式 HTTP 传输 ---
# [mcp_servers.github]
# enabled = true                          # 可选;默认 true
# url = "https://github-mcp.example.com/mcp"  # 必填
# bearer_token_env_var = "GITHUB_TOKEN"        # 可选;Authorization: Bearer <token>
# http_headers = { "X-Example" = "value" }    # 可选:静态请求头
# env_http_headers = { "X-Auth" = "AUTH_ENV" } # 可选:从环境变量填充的请求头
# startup_timeout_sec = 10.0                   # 可选
# tool_timeout_sec = 60.0                      # 可选
# enabled_tools = ["list_issues"]             # 可选:允许列表

################################################################################
# 模型提供方(扩展/覆盖内置)
################################################################################

# 内置包括:
# - openai(Responses API;需要登录或通过认证流程提供 OPENAI_API_KEY)
# - oss(Chat Completions API;默认指向 http://localhost:11434/v1)

[model_providers]

# --- 示例:用显式 base URL 或 headers 覆盖 OpenAI ---
# [model_providers.openai]
# name = "OpenAI"
# base_url = "https://api.openai.com/v1"         # 未设置时的默认值
# wire_api = "responses"                         # "responses" | "chat"(默认因情况而异)
# # requires_openai_auth = true                    # 内置 OpenAI 默认 true
# # request_max_retries = 4                        # 默认 4;最大 100
# # stream_max_retries = 5                         # 默认 5;最大 100
# # stream_idle_timeout_ms = 300000                # 默认 300_000(5 分钟)
# # experimental_bearer_token = "sk-example"      # 可选:仅开发用途的直接 bearer token
# # http_headers = { "X-Example" = "value" }
# # env_http_headers = { "OpenAI-Organization" = "OPENAI_ORGANIZATION", "OpenAI-Project" = "OPENAI_PROJECT" }

# --- 示例:Azure(根据端点选择 Chat/Responses)---
# [model_providers.azure]
# name = "Azure"
# base_url = "https://YOUR_PROJECT_NAME.openai.azure.com/openai"
# wire_api = "responses"                          # 或按端点使用 "chat"
# query_params = { api-version = "2025-04-01-preview" }
# env_key = "AZURE_OPENAI_API_KEY"
# # env_key_instructions = "在环境变量中设置 AZURE_OPENAI_API_KEY"

# --- 示例:本地 OSS(例如 Ollama 兼容)---
# [model_providers.ollama]
# name = "Ollama"
# base_url = "http://localhost:11434/v1"
# wire_api = "chat"

################################################################################
# Profiles(命名预设)
################################################################################

[profiles]

# [profiles.default]
# model = "gpt-5.2-codex"
# model_provider = "openai"
# approval_policy = "on-request"
# sandbox_mode = "read-only"
# oss_provider = "ollama"
# model_reasoning_effort = "medium"
# model_reasoning_summary = "auto"
# model_verbosity = "medium"
# chatgpt_base_url = "https://chatgpt.com/backend-api/"
# experimental_compact_prompt_file = "./compact_prompt.txt"
# include_apply_patch_tool = false
# experimental_use_unified_exec_tool = false
# experimental_use_freeform_apply_patch = false
# tools_web_search = false
# features = { unified_exec = false }

################################################################################
# Projects(信任级别)
################################################################################

# 将特定 worktree 标记为可信或不可信。
[projects]
# [projects."/absolute/path/to/project"]
# trust_level = "trusted"  # 或 "untrusted"

################################################################################
# OpenTelemetry(OTEL)- 默认禁用
################################################################################

[otel]
# 在日志中包含用户提示文本。默认:false
log_user_prompt = false
# 应用于遥测数据的环境标签。默认:"dev"
environment = "dev"
# 导出器:none(默认) | otlp-http | otlp-grpc
exporter = "none"
# Trace 导出器:none(默认) | otlp-http | otlp-grpc
trace_exporter = "none"

# 示例:OTLP/HTTP 导出器配置
# [otel.exporter."otlp-http"]
# endpoint = "https://otel.example.com/v1/logs"
# protocol = "binary"                         # "binary" | "json"

# [otel.exporter."otlp-http".headers]
# "x-otlp-api-key" = "${OTLP_TOKEN}"

# 示例:OTLP/gRPC 导出器配置
# [otel.exporter."otlp-grpc"]
# endpoint = "https://otel.example.com:4317",
# headers = { "x-otlp-meta" = "abc123" }

# 示例:带双向 TLS 的 OTLP 导出器
# [otel.exporter."otlp-http"]
# endpoint = "https://otel.example.com/v1/logs"
# protocol = "binary"

# [otel.exporter."otlp-http".headers]
# "x-otlp-api-key" = "${OTLP_TOKEN}"

# [otel.exporter."otlp-http".tls]
# ca-certificate = "certs/otel-ca.pem"
# client-certificate = "/etc/codex/certs/client.pem"
# client-private-key = "/etc/codex/certs/client-key.pem"

5.5 小结

本章从工程实践角度梳理了 config.toml 的核心项与高级用法,包括模型与 profiles、approval_policysandbox_mode 等关键配置。

配置的重点不是“全放开”,而是先画清边界:用审批策略和沙箱级别控制风险,再按需逐步放宽到命令、网络与工具链能力。

下一步可以继续阅读机制篇,把这些边界落实到 Rules、AGENTS 与可复用提示模板上。


06 机制篇:Rules / AGENTS / Prompts / MCP

本章把“边界与复用”落到机制层:用 Rules 控制高风险命令,用 AGENTS.md 做分层指令与团队约束,用自定义 Prompts 复用提示模板,用 MCP 把能力扩展到外部系统。

如果你希望 Codex 既能更自动化、又不失控,本章的目标是帮你把“可控、可查、可复用、可扩展”这四件事落到具体配置与写法上。

6.1 规则

描述:控制 Codex 在沙箱外可以运行哪些命令
原文地址https://developers.openai.com/codex/rules

可以使用规则(Rules)来控制 Codex 在沙箱(sandbox)之外可以运行的命令。

6.1.1 创建规则文件

Step1:首先在 ~/.codex/rules 目录下创建一个 .rules 文件(例如:~/.codex/rules/default.rules)。

Step2:添加一条规则,下面这个示例会在 允许 gh pr view 在沙箱外运行之前进行提示确认

# 在沙箱外运行以 `gh pr view` 为前缀的命令前进行提示。
prefix_rule(
    # 要匹配的命令前缀。
    pattern = ["gh", "pr", "view"],

    # 当 Codex 请求运行匹配的命令时采取的动作。
    decision = "prompt",

    # 该规则存在的可选说明理由。
    justification = "在获得批准的情况下允许查看 PR",

    # `match` 和 `not_match` 是可选的“内联单元测试”,
    # 用于提供应该(或不应该)匹配该规则的命令示例。
    match = [
        "gh pr view 7888",
        "gh pr view --repo openai/codex",
        "gh pr view 7888 --json title,body,comments",
    ],
    not_match = [
        # 不匹配,因为 `pattern` 必须是一个精确的前缀。
        "gh pr --repo openai/codex view 7888",
    ],
)

Step3:重启,Codex在启动时加载 ~/.codex/rules 目录下的所有 *.rules 文件,当你在 TUI(终端交互界面)中将某个命令加入允许列表时,Codex 会自动把对应规则追加到~/.codex/rules/default.rules,这样以后运行时就可以跳过提示。


6.1.2 理解规则字段

prefix_rule() 支持以下字段:

pattern(必填):一个非空列表,用于定义要匹配的命令前缀,列表中的每个元素可以是:

  • 一个字面量字符串(例如 "pr"
  • 一个字面量联合(例如 ["view", "list"]),用于在该参数位置匹配多种可能

decision(默认值为 "allow":当规则匹配时采取的动作,当有多条规则同时匹配时,Codex 会选择限制性最强的决策(forbidden > prompt > allow)。可选值包括:

  • allow:无需提示,直接在沙箱外运行命令
  • prompt:每次匹配时都进行提示确认
  • forbidden:不提示,直接阻止该请求

justification(可选):一段非空的、对人类可读的规则说明,Codex 可能会在审批提示或拒绝信息中展示该内容。当你使用 forbidden 时,建议在说明中给出可替代方案,例如:“请使用 rg 代替 grep。”

match 和 not_match(默认值为 []:用于在加载规则时由 Codex 验证的示例命令,它们可以帮助你在规则生效前发现错误配置。

当 Codex 判断是否运行某条命令时,会将该命令的参数列表pattern 进行比较。在内部,Codex 会把命令当作一个参数数组处理(类似 execvp(3) 接收到的形式)。


6.1.3 Shell 包装器与复合命令

有些工具会把多个 shell 命令包装成一次调用,例如:

["bash", "-lc", "git add . && rm -rf /"]

由于这种形式可能在一个字符串中隐藏多个操作,
Codex 会对 bash -lcbash -c 以及它们在 zsh / sh 中的等价形式进行特殊处理。


① 当 Codex 拆分脚本

如果 shell 脚本是一个简单、线性的命令链,并且只包含:

  • 普通单词(不包含变量展开、VAR=...$FOO* 等)
  • 使用安全操作符连接(&&||;|

那么 Codex 会使用 tree-sitter 对脚本进行解析,并在应用规则之前将其拆分为多个独立命令。

例如,上面的脚本会被拆分为两个命令:

["git", "add", "."]
["rm", "-rf", "/"]

Codex 会分别对每个命令应用规则,并最终采用限制性最强的结果。因此,即使你允许了:

pattern = ["git", "add"]

Codex 也不会自动允许:

git add . && rm -rf /

因为 rm -rf / 会被单独评估,并阻止整个命令的自动执行。这种机制可以防止把危险命令“夹带”在安全命令中一起执行。


② 当Codex 不拆分脚本

如果脚本使用了更复杂的 shell 特性,例如:

  • 重定向(>>><
  • 命令替换($(...)...
  • 环境变量(FOO=bar
  • 通配符(*?
  • 控制流(iffor、带赋值的 && 等)

那么 Codex 不会尝试解析或拆分脚本。在这种情况下,整个调用会被当作一个单独命令处理:

["bash", "-lc", "<完整脚本>"]

规则也只会应用在这一次调用上。通过这种特殊处理方式,在安全可解析时实现逐命令评估,在无法确定安全性时采取更保守的行为。


6.1.4 测试规则文件

可以使用以下命令来测试规则对某个命令的影响:

codex execpolicy check --pretty \
  --rules ~/.codex/rules/default.rules \
  -- gh pr view 7888 --json title,body,comments

该命令会输出 JSON,展示:

  • 最严格的决策结果
  • 所有匹配到的规则
  • 以及规则中包含的 justification 信息

可以使用多个 --rules 参数来组合多个规则文件,并使用 --pretty 让输出结果更易读。


6.1.5 理解规则语言

.rules 文件使用 Starlark 语言编写(可参考其语言规范)。它的语法类似 Python,但被设计为安全可执行,规则引擎可以运行它而不会产生副作用(例如访问或修改文件系统)。

6.2 AGENTS

描述:为你的项目向 Codex 提供额外的指令和上下文
原文链接:https://developers.openai.com/codex/guides/agents-md

Codex 在开始任何工作之前都会读取 AGENTS.md 文件,通过将全局指导与项目级别的覆盖规则分层组合,你可以在打开任何仓库时,都以一致的预期开始每一个任务

6.2.1 Codex 如何发现指令

Codex 在启动时会构建一条指令链(每次运行一次,在 TUI 中通常意味着每次启动一个会话)。指令发现遵循以下优先级顺序


全局作用域(Global scope):在你的 Codex 主目录中(默认为 ~/.codex,除非你设置了 CODEX_HOME),Codex 会:

  • 如果存在 AGENTS.override.md,则读取它
  • 否则读取 AGENTS.md
  • 在这一层级中,Codex 只会使用第一个非空文件

项目作用域(Project scope):从项目根目录(通常是 Git 根目录)开始,Codex 会向下遍历到你当前的工作目录:

  • 如果 Codex 无法找到项目根目录,则只检查当前目录

  • 在路径上的每一个目录中,依次检查:

    1. AGENTS.override.md
    2. AGENTS.md
    3. project_doc_fallback_filenames 中配置的备用文件名
  • 每个目录最多只会包含一个指令文件

合并顺序(Merge order)

  • Codex 会从根目录向下拼接这些文件,并用空行连接
  • 越靠近当前工作目录的文件优先级越高,因为它们在合并后的提示中出现得更晚

Codex 会跳过空文件,并在合并内容达到 project_doc_max_bytes 定义的大小上限时停止(默认是 32 KiB)。有关这些参数的详细说明,请参阅 Project instructions discovery。当你触及大小上限时,可以提高限制,或将指令拆分到更深层的子目录中。


6.2.2 创建全局指引

在 Codex 主目录中创建持久化的默认规则,让每一个仓库都能继承你的工作约定。

Step1:需要确保目录存在:

mkdir -p ~/.codex

Step2: 创建 ~/.codex/AGENTS.md,写入可复用的偏好设置:

# ~/.codex/AGENTS.md

## Working agreements

- Always run `npm test` after modifying JavaScript files.
- Prefer `pnpm` when installing dependencies.
- Ask for confirmation before adding new production dependencies.

Step3:在任意位置运行 Codex,确认它加载了该文件:

codex --ask-for-approval never "Summarize the current instructions."

预期结果:Codex 会在提出工作建议之前,引用 ~/.codex/AGENTS.md 中的条目。

当你需要临时的全局覆盖规则而又不想删除基础文件时,可以使用~/.codex/AGENTS.override.md,删除该 override 文件即可恢复共享指引。


6.2.3 分层设置项目指令

仓库级别的文件可以让 Codex 了解项目规范,同时仍然继承你的全局默认规则。

Step1:在仓库根目录中添加 AGENTS.md,用于基础设置:

# AGENTS.md

## Repository expectations

- Run `npm run lint` before opening a pull request.
- Document public utilities in `docs/` when you change behavior.

Step2:当特定团队需要不同规则时,在子目录中添加覆盖文件

例如,在 services/payments/ 目录下创建 AGENTS.override.md

# services/payments/AGENTS.override.md

## Payments service rules

- Use `make test-payments` instead of `npm test`.
- Never rotate API keys without notifying the security channel.

Step3:从 payments 目录启动 Codex

codex --cd services/payments --ask-for-approval never "List the instruction sources you loaded."

预期结果:Codex 会依次报告 “全局指令文件” → “仓库根目录的 AGENTS.md” → “payments 目录下的 override 文件(最后加载)”

Codex 在到达当前工作目录后就会停止搜索,因此应尽量将 override 文件放在 最接近具体工作的目录中。添加了全局文件和 payments 专用 override 之后,一个示例仓库结构如下:

在这里插入图片描述


6.2.4 自定义备用文件名

如果你的仓库已经使用了不同的文件名(例如 TEAM_GUIDE.md),可以将它加入备用列表,让 Codex 将其视为指令文件。

可以编辑 Codex 配置:

# ~/.codex/config.toml
project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]
project_doc_max_bytes = 65536

然后重启 Codex,或运行一条新命令,使更新后的配置生效,Codex 会按以下顺序检查每个目录:

  • AGENTS.override.md
  • AGENTS.md
  • TEAM_GUIDE.md
  • .agents.md

不在该列表中的文件名将被忽略,更大的字节限制允许在被截断之前合并更多指引内容。在配置了 fallback 列表后,Codex 会将这些替代文件当作指令文件处理:
在这里插入图片描述

如果需要使用不同的配置(例如:项目专用的自动化用户)时,可以设置 CODEX_HOME 环境变量:

CODEX_HOME=$(pwd)/.codex codex exec "List active instruction sources"

预期结果:输出会列出相对于自定义 .codex 目录的指令文件。


6.2.5 验证配置

可以在仓库根目录运行如下命令,Codex 应按优先级顺序回显全局和项目指令:

codex --ask-for-approval never "Summarize the current instructions."

使用子目录验证覆盖规则:

codex --cd subdir --ask-for-approval never "Show which instruction files are active."

如果需要审计 Codex 加载了哪些指令文件:

  • 查看 ~/.codex/log/codex-tui.log
  • 或(如果启用了会话日志)查看最新的 session-*.jsonl 文件

如果指令看起来是旧的:

  • 在目标目录中重启 Codex
  • Codex 会在每次运行时(以及每个 TUI 会话开始时)重建指令链,因此无需手动清缓存

6.2.6 问题排查

① 什么都没加载

  • 确认你在正确的仓库中
  • 检查 codex status 是否显示了你期望的工作区根目录
  • 确保指令文件中有内容(空文件会被忽略)

② 出现了错误的指引

  • 检查目录树中更高层是否存在 AGENTS.override.md(包括 Codex 主目录)
  • 重命名或删除 override 文件即可回退到普通文件

③ Codex 忽略了 fallback 文件名

  • 确认你已正确配置 project_doc_fallback_filenames,且无拼写错误
  • 重启 Codex 以使配置生效

④ 指令被截断

  • 提高 project_doc_max_bytes
  • 或将大型文件拆分到嵌套目录中

⑤ 配置档案混乱(Profile confusion)

  • 在启动 Codex 前运行:

    echo $CODEX_HOME
    
  • 非默认值意味着 Codex 正在使用与你编辑的不同主目录

6.3 自定义提示词

描述:定义可复用的提示,使其像斜杠命令一样工作
原文地址https://developers.openai.com/codex/custom-prompts

自定义提示允许你将 Markdown 文件 转换为可复用的提示,并且可以在 Codex CLICodex IDE 扩展中通过斜杠命令来调用。自定义提示需要 显式调用,并且存放在你本地的 Codex 主目录中(例如 ~/.codex),因此不会随着你的代码仓库共享,如果希望共享一个提示(或者希望 Codex 能够隐式调用它),请使用 skills。接下来看看如何自定义提示词。

6.3.1 创建文件

首先创建 prompts 目录:

mkdir -p ~/.codex/prompts

然后创建 ~/.codex/prompts/draftpr.md,并添加可复用的指导内容:

---
description: Prep a branch, commit, and open a draft PR
argument-hint: [FILES=<paths>] [PR_TITLE="<title>"]
---

Create a branch named `dev/<feature_name>` for this work.
If files are specified, stage them first: $FILES.
Commit the staged changes with a clear message.
Open a draft PR on the same branch. Use $PR_TITLE when supplied; otherwise write a concise summary yourself.

最后重启 Codex 以加载新的提示(重启 CLI 会话;如果你在使用 IDE 扩展,请重新加载扩展)。

预期效果:在斜杠命令菜单中输入 /prompts:draftpr,你会看到自定义命令,其描述来自 front matter,并提示文件和 PR 标题是可选参数。


6.3.2 添加元数据和参数

Codex 会在下次会话启动时读取提示元数据并解析占位符。

  • Description:显示在弹出窗口中命令名称下方。通过 YAML front matter 中的 description: 设置。
  • Argument hint:使用 argument-hint: KEY=<value> 来说明期望的参数。
  • 位置占位符(Positional placeholders)$1$9 会从你在命令后提供的、以空格分隔的参数中展开,$ARGUMENTS 包含所有这些参数。
  • 命名占位符(Named placeholders):使用大写名称(如 $FILE$TICKET_ID),并通过 KEY=value 形式提供值,包含空格的值需要加引号(例如:FOCUS="loading state")。
  • 字面量美元符号:使用 $$ 来输出一个单独的 $
  • 在编辑提示文件后,重启 Codex 或打开一个新的聊天以加载更新,Codex 会忽略 prompts 目录中非 Markdown 的文件。

6.3.3 调用和管理自定义命令

在 Codex(CLI 或 IDE 扩展)中,输入 / 打开斜杠命令菜单。输入 prompts: 或直接输入提示名称,例如:

/prompts:draftpr

提供所需参数:

/prompts:draftpr FILES="src/pages/index.astro src/lib/api.ts" PR_TITLE="Add hero animation"

按 Enter 发送展开后的指令(当不需要某个参数时,可以省略它)。

预期效果:Codex 会展开 draftpr.md 的内容,用你提供的参数替换占位符,然后将结果作为一条消息发送。

可以通过编辑或删除 ~/.codex/prompts/ 目录下的文件来管理提示,Codex 只扫描该文件夹顶层的 Markdown 文件,因此请将每个自定义提示直接放在 ~/.codex/prompts/ 下,而不要放在子目录中。

6.4 MCP

描述:为 Codex 提供对第三方工具和上下文的访问能力
原文地址:https://developers.openai.com/codex/mcp

模型上下文协议(Model Context Protocol,简称 MCP)用于将模型连接到工具和上下文,你可以使用它让 Codex 访问第三方文档,或让它与开发者工具(如浏览器或 Figma)进行交互,Codex 在 CLIIDE 扩展中都支持 MCP 服务器。


6.4.1 支持的 MCP 功能

  • STDIO 服务器:作为本地进程运行的服务器(通过命令启动)

  • 可流式的 HTTP 服务器:通过地址访问的服务器

    • Bearer Token 认证
    • OAuth 认证(对于支持 OAuth 的服务器,运行 codex mcp login <server-name>

6.4.2 连接 MCP 服务器

Codex 会将 MCP 配置存储在 ~/.codex/config.toml 中,与其他 Codex 配置项放在一起,CLI 与 IDE 扩展 共享同一份配置,一旦配置好了 MCP 服务器,就可以在两个 Codex 客户端之间切换,而无需重新设置。

要配置 MCP 服务器,可以选择以下方式之一:

  • 使用 CLI:运行 codex mcp 来添加和管理服务器。
  • 编辑 config.toml:直接修改 ~/.codex/config.toml

6.4.2.1 CLI 配置 MCP

添加一个 MCP 服务器

codex mcp add <server-name> --env VAR1=VALUE1 --env VAR2=VALUE2 -- <stdio server-command>

例如,要添加 Context7(一个免费的开发者文档 MCP 服务器),可以运行以下命令:

codex mcp add context7 -- npx -y @upstash/context7-mcp

要查看所有可用的 MCP 命令,可以运行:

codex mcp --help
6.4.2.2 config.toml 配置 MCP

如果需要对 MCP 服务器选项进行更精细的控制,可以编辑 ~/.codex/config.toml,在 IDE 扩展中,可以通过齿轮菜单选择 MCP settings > Open config.toml 来打开该文件。

在配置文件中,为每个 MCP 服务器使用一个 [mcp_servers.<server-name>] 表进行配置。相关参数配置如下:


STDIO 服务器

  • command(必填):启动服务器的命令。
  • args(可选):传递给服务器的参数。
  • env(可选):为服务器设置的环境变量。
  • env_vars(可选):允许并转发的环境变量。
  • cwd(可选):启动服务器时使用的工作目录。

可流式的 HTTP 服务器

  • url(必填):服务器地址。
  • bearer_token_env_var(可选):用于在 Authorization 中发送 Bearer Token 的环境变量名。
  • http_headers(可选):请求头名称到静态值的映射。
  • env_http_headers(可选):请求头名称到环境变量名的映射(值从环境变量中读取)。

其他配置选项

  • startup_timeout_sec(可选):服务器启动超时时间(秒),默认值:10;
  • tool_timeout_sec(可选):服务器运行工具的超时时间(秒),默认值:60;
  • enabled(可选):设置为 false 可在不删除服务器的情况下禁用它;
  • enabled_tools(可选):允许使用的工具白名单;
  • disabled_tools(可选):禁止使用的工具黑名单(在 enabled_tools 之后生效)。

config.toml 示例

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]

[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"

[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }

[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # 在 enabled_tools 之后生效
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true

6.4.3 常用的 MCP 服务器示例

MCP 服务器的列表仍在不断增长,以下是一些常见示例:

  • OpenAI Docs MCP:搜索并阅读 OpenAI 开发者文档。
  • Context7:连接到最新的开发者文档。
  • Figma LocalRemote:访问你的 Figma 设计。
  • Playwright:使用 Playwright 控制和检查浏览器。
  • Chrome Developer Tools:控制和检查 Chrome。
  • Sentry:访问 Sentry 日志。
  • GitHub:管理 GitHub(超出 git 本身支持的能力,例如拉取请求和 Issue)。

6.5 小结

本章覆盖了 Rules(命令与审批控制)、AGENTS.md(分层指令)、自定义 Prompts(提示复用)与 MCP(工具扩展),对应的是 Codex 的可控性、可发现性、可复用性与可扩展性。

实践上建议先用 Rules 管住高风险命令,再用 AGENTS/Prompts 固化团队约束,最后按需接入 MCP 连接外部系统。


07 工程化篇:Agent Skills(封装 / 复用 / 共享)

本章进入“工程化复用”的阶段:把零散的提示与操作步骤,封装成可反复调用、可共享给团队的 Skills。你可以把 Skill 理解成一个“带说明书与资源的工作流包”,用于稳定复现某类任务的做法与验收标准。

Agent Skills(代理技能) 可以为 Codex 扩展面向特定任务的能力,一个技能会将指令、资源以及可选脚本打包在一起,使 Codex 能够可靠地遵循某一工作流,你可以在团队之间共享技能,或将其分享给社区,技能都是基于开放的 Agent Skills 标准构建。


7.1 Agent skill 定义

描述:为 Codex 赋予新的能力与专业知识
原文地址https://developers.openai.com/codex/skills

一个技能通过位于 SKILL.md 文件中的 Markdown 指令 来表达某种能力,技能文件夹中还可以包含脚本、资源和素材,供 Codex 在执行特定任务时使用。

在这里插入图片描述

技能使用渐进式披露(progressive disclosure)来高效管理上下文,在启动时,Codex 只会加载每个可用技能的名称和描述。随后,Codex 可以通过以下两种方式激活并使用技能:

显式调用(Explicit invocation):可以在提示中直接包含技能。通过运行 /skills 斜杠命令来选择技能或输入 $ 来提及某个技能

在这里插入图片描述 在这里插入图片描述

隐式调用(Implicit invocation):当你的任务与某个技能的描述匹配时,Codex 可以自行决定使用该技能。无论采用哪种方式,一旦技能被调用,Codex 都会读取该技能的完整指令以及技能目录中包含的所有附加参考资料


当 Codex 从这些位置加载技能时,如果存在同名技能,则会用优先级更高的作用域中的技能覆盖优先级较低的,下表按优先级从高到低列出了技能作用域及其位置:

作用域 位置 建议
REPO $CWD/.codex/skills
启动 Codex 时的当前工作目录
如果你在某个仓库或代码环境中,团队可以提交仅与该工作目录相关的技能,例如只适用于某个微服务或模块的技能
REPO $CWD/../.codex/skills
在 Git 仓库中启动 Codex 时,位于 CWD 上一级的目录
当仓库存在多级子目录时,组织可以在父目录中提交适用于共享区域的技能
REPO $REPO_ROOT/.codex/skills
在 Git 仓库中启动 Codex 时的最顶层根目录
适用于整个仓库的通用技能。它们可被任何子目录中的技能覆盖
USER $CODEX_HOME/skills
(macOS 和 Linux 默认:~/.codex/skills
用户个人目录中的技能,适用于用户可能使用的任何仓库
ADMIN /etc/codex/skills 机器或容器中的系统级共享技能,适用于 SDK 脚本、自动化以及默认的管理员技能
SYSTEM 随 Codex 一起打包 面向广泛用户的通用技能(如 skill-creator、plan 技能),对所有用户可用,可被上层作用域覆盖

Codex 支持 符号链接(symlink) 的技能文件夹,在扫描这些位置时会跟随符号链接的目标路径。


也可以在 ~/.codex/config.toml 中按技能粒度进行启用或禁用目前属于 实验性功能,未来可能会调整,你可以使用 [[skills.config]] 条目来禁用某个技能,而无需删除它,然后重启 Codex:

[[skills.config]]
path = "/path/to/skill"
enabled = false

7.2 创建技能

描述:使用 Codex 创建自定义工作流,并在项目之间强制执行最佳实践
原文地址:https://developers.openai.com/codex/skills/create-skill

技能(Skills)让团队能够沉淀组织内部知识,并将其转化为可复用、可共享的工作流,技能可以帮助 Codex 在不同用户、代码仓库和会话之间保持一致的行为,尤其适用于希望自动应用标准约定和检查的场景。

一个技能是一个小型的组合体,包含以下内容:

  • 名称
  • 描述(说明技能的作用以及何时使用)
  • 可选的指令正文

Codex 在运行时上下文中只会注入技能的名称、描述和文件路径指令正文不会被注入,除非该技能被明确调用。


7.2.1 什么时候需要创建技能

当你希望在团队中共享行为、强制统一工作流,或将最佳实践编码一次并在各处复用时,应使用技能。典型使用场景包括:

  • 标准化代码审查清单和约定
  • 强制执行安全或合规检查
  • 自动化常见分析任务
  • 提供 Codex 可自动发现的团队专属工具

不建议将技能用于一次性提示或探索性任务;应保持技能聚焦、单一职责,而不是试图建模大型多步骤系统。


7.2.2 创建技能

7.2.2.1 使用技能创建器

Codex 内置了一个用于创建新技能的技能,使用该方法可以获得引导,并对技能进行迭代优化。

可通过 Codex CLI 或 Codex IDE 扩展调用技能创建器:

$skill-creator

也可以添加你希望该技能实现功能的上下文说明。

$skill-creator

Create a skill that drafts a conventional commit message based on a short summary of changes.

在这里插入图片描述

创建器会询问:

  • 技能的作用
  • Codex 何时应自动触发该技能
  • 运行类型(仅指令 / 脚本支持)

于是继续输入:

Example trigger requests:
1) 根据以下改动摘要帮我写一条 conventional commit message:<改动摘要>
2) 把这段改动说明转换成符合 Conventional Commits 的提交信息:<改动说明>
3) 生成一条 conventional commit:<一句话总结/要点列表>

Conventional Commit constraints: default (standard types feat/fix/docs/style/refactor/perf/test/build/ci/chore/revert; optional scope; use ! + BREAKING CHANGE footer when breaking; add Refs footer if issue id present)
shell

输出结果是一个 SKILL.md 文件,包含名称、描述和指令,目录在 skills/draft-conventional-commit/SKILL.md,内容如下:
在这里插入图片描述

7.2.2.2 手动创建技能

当你需要完全控制,或直接在编辑器中操作时,可使用该方式。

Step1:选择存放位置(仓库级或用户级)

# 用户级技能(macOS/Linux 默认)
mkdir -p ~/.codex/skills/<skill-name>

# 仓库级技能(提交到代码仓库中)
mkdir -p .codex/skills/<skill-name>

Step2:创建 SKILL.md

---
name: <skill-name>
description: <功能说明及使用时机>
---

<指令、参考资料或示例>

重启 Codex 以加载该技能。


7.2.3 理解技能格式

技能使用 YAML front matter + 可选正文 的格式。必填字段:

  • name:非空,最多 100 个字符,单行
  • description:非空,最多 500 个字符,单行

Codex 会忽略多余的键,正文部分可以包含任意 Markdown 内容,会保存在磁盘上,且不会注入运行时上下文,除非技能被明确调用。

除了内联指令外,技能目录通常还包含:

  • 脚本(如 Python 文件):用于确定性处理、校验或调用外部工具
  • 模板和结构定义:如报告模板、JSON/YAML Schema、配置默认值
  • 参考数据:如查找表、提示语、固定示例
  • 文档:说明假设条件、输入或预期输出

示例目录结构:
在这里插入图片描述

技能指令可以引用这些资源,但它们仍保留在磁盘上,从而使运行时上下文保持小且可预测。真实世界的模式和示例可参考 agentskills.io,以及 github.com/openai/skills 上的技能目录。


7.2.4 选择技能的保存位置

Codex 会从以下位置加载技能(仓库级、用户级、管理员级和系统级)。根据技能适用对象选择合适位置:

  • 当技能应随代码库一起使用时,保存到仓库的 .codex/skills/
  • 当技能应作用于本机所有仓库时,保存到用户技能目录
  • 仅在受管环境中使用管理员/系统级位置(如共享机器)

完整的支持路径和优先级规则,请参阅 Skills 概览中的 “Where to save skills” 部分。


7.2.5 示例技能

示例技能如下:

---
name: draft-commit-message
description: Draft a conventional commit message when the user asks for help writing a commit message.
metadata:
  short-description: Draft an informative commit message.
---

Draft a conventional commit message that matches the change summary provided by the user.

Requirements:

- Use the Conventional Commits format: `type(scope): summary`
- Use the imperative mood in the summary (for example, "Add", "Fix", "Refactor")
- Keep the summary under 72 characters
- If there are breaking changes, include a `BREAKING CHANGE:` footer

触发该技能的示例提示:

Help me write a commit message for these changes: I renamed `SkillCreator` to `SkillsCreator` and updated the sidebar.

更多示例技能和创意请参阅 github.com/openai/skills 仓库。

编写技能时,建议遵循原则:

  • 明确触发条件:描述用于告诉 Codex 何时触发技能
  • 保持技能小而精:优先使用窄范围、模块化技能
  • 优先使用指令而非脚本:仅在需要确定性或外部数据时使用脚本
  • 假设无上下文:指令应假定 Codex 只知道输入内容
  • 避免歧义:使用祈使句、分步骤指令
  • 测试触发条件:确认示例提示能按预期激活技能

7.2.6 引入技能方式

① 团队级技能(随代码走)

<repo>/
└── .codex/
    └── skills/
        └── <team-skill>/
            └── SKILL.md

② 个人常用技能

~/.codex/skills/<skill-name>/

③ 使用符号链接共享技能

ln -s ~/company-skills/review-skill ~/.codex/skills/review-skill

7.2.7 问题排查

① 技能未显示(Skill doesn’t appear)

如果技能未出现在 Codex 中,请确认:

  • 已启用技能并重启 Codex
  • 文件名严格为 SKILL.md
  • 文件位于受支持路径(如 ~/.codex/skills

如果你在 ~/.codex/config.toml 中禁用了某技能,请移除或修改对应的 [[skills.config]] 条目并重启 Codex。

如使用符号链接目录,请确认目标路径存在且可读。Codex 也会跳过 YAML 格式错误name/description 超出长度限制 的技能。


② 技能未触发(Skill doesn’t trigger)

若技能已加载但未自动运行,最常见原因是触发条件不明确

  • 确保 description 中明确说明何时使用该技能
  • 使用与描述匹配的提示进行测试

若多个技能意图重叠,请缩小描述范围,以便 Codex 选择正确技能。


③ 启动校验错误(Startup validation errors)

如果 Codex 在启动时报校验错误,请根据提示修复 SKILL.md 中的问题,最常见原因是 多行超长 的 name 或 description,修复后重启 Codex 以重新加载技能。

7.3 常见主流的 Skills 仓库

随着 Agent Skills 标准逐步统一,社区已经出现了一批可直接复用或作为模板的 Skills 仓库。下面列出目前较为主流、与 Codex 兼容度高的仓库,并说明推荐的引入方式。

7.3.1 openai/skills(官方推荐)

仓库地址https://github.com/openai/skills
在这里插入图片描述

定位:

  • OpenAI 官方维护
  • 提供一组 可直接使用 / 可参考实现 的 Codex Skills
  • 覆盖规划、写作、代码、流程类技能
  • 非常适合作为团队技能模板

引入方式一:直接克隆到用户级技能目录

git clone https://github.com/openai/skills ~/.codex/skills/openai-skills

引入方式二:只引入单个技能

mkdir -p ~/.codex/skills
cp -r skills/<skill-name> ~/.codex/skills/

重启 Codex 后即可通过 /skills$<skill-name> 使用。


7.3.2 agentskills/agentskills

仓库地址https://github.com/agentskills/agentskills
在这里插入图片描述

定位

  • Agent Skills 规范仓库
  • 定义 SKILL.md 格式、字段约束、设计原则
  • 包含示例与工具说明
  • 更偏「写技能的人必看

推荐用途

  • 校对你写的技能是否符合规范
  • 作为内部技能编写指南
  • 不建议直接整体引入作为可执行技能

引入方式:不建议整体放入 .codex/skills,建议作为文档仓库单独 clone 阅读

git clone https://github.com/agentskills/agentskills

7.3.3 anthropics/skills(Claude 社区示例)

仓库地址https://github.com/anthropics/skills
在这里插入图片描述

定位

  • Claude 社区公开 Skills 示例
  • 包含较完整的目录组织、指令写法
  • 对 Codex 高度可借鉴(SKILL.md 结构基本一致)

推荐用途

  • 参考复杂技能如何拆分资源 / 模板 / 文档
  • 借鉴 description 与 trigger 的写法

引入方式(选择性)

建议只复制单个技能目录,而不是整体引入。

git clone https://github.com/anthropics/skills
cp -r skills/<skill-name> ~/.codex/skills/

导入后重启内容如下:

在这里插入图片描述


7.3.4 agentskills.io(社区索引 / 市场)

网站地址https://agentskills.io
在这里插入图片描述

定位

  • 社区 Skills 聚合索引
  • 可按类别搜索(写作 / 代码 / 分析 / DevOps 等)
  • 指向 GitHub 仓库或可安装源

推荐用途

  • 找灵感 / 找现成技能
  • 快速定位某类工作流是否已有成熟实现

引入方式

  1. 在 agentskills.io 找到技能
  2. 跳转对应 GitHub 仓库
  3. 复制技能目录到:
~/.codex/skills/

7.4 小结

本章说明了 Agent Skills 的概念、目录结构与作用域优先级,并整理了常见社区资源。技能的目标是把零散 Prompt 升级为可复用、可共享的工作流包。

落地建议从一个高频任务开始(如 PR 审查、发布检查、迁移脚本),把输入、验收标准、脚本与模板收进一个 skill,再逐步扩展到团队共享。


08 总结篇:5W1H 心智模型

本章用于把前面各章的知识点串成一条主线。用 5W1H(What / Why / Who / When / Where / How)快速回答:Codex 到底是什么、为什么要用、团队里谁该参与、什么时候用哪些能力、它运行在哪里、以及如何从 0 到工程化落地。

你可以把本章当作复习提纲:需要对外解释 Codex、做团队共识、或回看关键边界与落地路径时,直接从这里查即可。

8.1 【WHAT】:Codex 是什么?

Codex 是面向真实工程场景的软件工程 AI 代理(Coding Agent):它不是“只会生成代码的聊天模型”,而是能在工程工作台里 读仓库、改文件、跑命令、做审查、产出可验证证据 的“工程级协作者”。

一、它的本质:一个“可执行”的工程智能体

  • 输入:自然语言提示(Prompts)+ 代码上下文(文件/选区/截图)+ 工程约束(规范/安全/验证标准)。
  • 过程:模型推理 → 调用工具(读写文件/运行命令/检索资源/连接外部系统)→ 根据结果迭代。
  • 输出:不仅是文字解释,更包括 跨文件变更、测试/构建结果、diff、PR 审查意见 等“可交付物”。

二、四个核心抽象:Prompts / Threads / Context / Workflows

1)Prompting(提示词)

  • 关键原则:Codex 在“可验证”时质量更高。复现步骤、验证命令、验收标准越明确,越容易形成闭环。
  • 复杂任务最好拆分成更小步骤:可以先让 Codex 给计划(例如 $plan),由读者审查后再执行。

2)Threads(线程/会话)

  • 一个 thread 包含:多轮提示 + 模型输出 + 期间的所有工具调用记录。
  • 线程可以恢复继续;也可以并行跑多个线程,但应避免多个线程同时改同一文件。
  • 本地线程(Local threads):在本地机器运行,可直接读写本地文件、运行本地命令,默认受沙箱保护。
  • 云端线程(Cloud threads):在云端隔离环境运行,会克隆仓库并检出分支;适合并行任务、跨设备委派、或长任务执行。

3)Context(上下文)

  • IDE 插件通常会自动带上“打开的文件 + 选中的代码”作为上下文;CLI 更依赖显式引用(如 @path/mention)。
  • 上下文需要适配模型的 context window;会话过长时 Codex 可能自动“压缩上下文”(summary + 丢弃无关细节),以便持续推进长任务。

4)Workflows(工作流程)
一个可复用的工程 workflow 通常应包含:

  • 适用场景:什么时候用、用 IDE/CLI/Cloud 哪个入口更合适。
  • 步骤与示例提示:能直接复制运行。
  • 上下文说明:哪些自动可见、哪些需要显式提供。
  • 校验方法:怎么证明“做对了”(测试/复现/对比/验收清单)。

三、它能“在哪些入口”工作:IDE / CLI / Web(Cloud) / 集成平台

IDE Extension(VS Code / Cursor / Windsurf 等兼容 VS Code 的编辑器)

  • 优势:上下文天然就在编辑器里(打开文件、选区、符号定位),适合 边读边改边验证
  • 常见能力:切换模型、调整推理强度、选择审批模式、在本地/云端之间切换、/review/status/auto-context/cloud/local 等斜杠命令。

CLI(终端)

  • 优势:天然与 shell/脚本/工具链结合,适合 批处理、跑测试、自动化执行、审查与记录
  • 支持:图像输入(如错误截图/设计稿)、恢复会话(codex resume)、非交互执行(codex exec)、云任务(codex cloud ...)、/review/diff/compact/model/approvals/mention 等斜杠命令。

Web / Cloud(云端 Codex)

  • 优势:后台并行执行、隔离容器、可直接产出 diff/PR,适合 复杂任务、并行执行、团队协作
  • 典型流程:创建容器 → checkout 仓库/分支 → 运行 setup/maintenance → agent 循环“编辑/运行检查/验证” → 输出 diff → 由读者审查并创建 PR 或继续迭代。
  • 网络访问策略:setup 阶段可联网安装依赖;agent 阶段默认禁网(可按环境开启并细粒度限制)。

Integrations(集成)

  • GitHub:PR/Issue 工作流中触发审查与任务委派(如评论 @codex review)。
  • Slack:在团队 IM 中把任务委派给 Codex,获取进度与结果(适合“协作入口”)。
  • Linear:可把 issue 分配给 Codex 或在评论里 @Codex,并可结合 MCP 在本地访问 Linear。

四、它如何“被工程化”:配置 + 安全边界 + 可复用资产

1)config.toml:Codex 的运行“总开关”

  • 核心位置:~/.codex/config.toml(CLI 与 IDE 共享)。
  • 可控制:默认模型、推理强度、审批策略、沙箱模式、网络访问、环境变量传递、MCP 服务器、实验性功能开关等。

2)Approvals & Sandbox:把“能做事”变成“可控地做事”

  • approval_policy:控制“什么时候需要确认”。
    • untrusted:仅安全只读命令自动执行,其余都要确认
    • on-failure:沙箱内自动执行,失败时才提示升级/放权
    • on-request:由模型决定何时询问(常见默认)
    • never:从不询问(风险很高)
  • sandbox_mode:控制文件系统/网络边界。
    • read-only(默认):只读
    • workspace-write:允许写工作区(但某些目录仍可能只读)
    • danger-full-access:无沙箱(极其危险,只建议在已有外部隔离时使用)

术语澄清:文章(尤其是 CLI/IDE 章节)里也会出现“批准模式/Approval Modes(如 Auto / Read-Only / Full Access)”的说法,它更像是产品界面上的一组预设;而 config.toml 中的 approval_policy / sandbox_mode底层配置键。不同版本/不同入口可能在命名上略有差异,但本质都是在控制“是否需要确认”以及“可访问的文件/网络边界”。

3)Rules:控制“哪些命令可以在沙箱外跑”

  • ~/.codex/rules/*.rules:通过规则语言定义允许/提示/禁止的命令前缀(如 prefix_rule(pattern=["gh","pr","view"], decision="prompt", ...))。
  • 多规则匹配时选“限制性最强”的结果:forbidden > prompt > allow

4)AGENTS.md:让 Codex“默认懂项目与规范”

  • Codex 会在启动时按路径分层发现并合并指令文件(全局 + 仓库根 + 子目录 override)。
  • 典型用途:写清楚“怎么跑测试/怎么 lint/改动要注意什么/不能做什么”。

5)Custom Prompts vs Skills:提示复用的两条路

  • 自定义提示词(Custom Prompts):存放在 ~/.codex/prompts/*.md,显式调用(如 /prompts:draftpr),更偏“个人复用”。
  • Skills(Agent Skills):指令 + 资源 + 可选脚本打包,可显式或隐式调用,可仓库级共享,更适合“团队 SOP 固化与复用”。

6)MCP:把智能体连接到外部真实系统

  • config.toml 中配置 [mcp_servers.<name>],支持 STDIO 进程型与可流式 HTTP 服务器型。
  • 可让 Codex 访问第三方文档、设计工具(Figma)、浏览器控制(Playwright/Chrome DevTools)、日志平台(Sentry)、项目管理(GitHub/Linear)等。

五、学习资源:251 篇官方 Cookbooks(索引型内容)

第三篇文章本质上是一个“官方实战指南导航”,把 251 篇 Cookbooks(去除归档)按主题整理,覆盖:

  • 开源与自部署(gpt-oss 本地/自托管生态)
  • 多模态(图像/视觉/视频)、音频/语音
  • 检索/RAG/搜索(占比最大)
  • ChatGPT 生态、工具调用与扩展、代理与自动化
  • 微调/训练与提示词、评测/安全/合规
  • 开发工具与工程实践、基础 API 与性能优化

8.2 【WHY】:为什么要用 Codex?

一、它解决的核心不是“会不会写代码”,而是“交付闭环效率”

真实工程里最耗时的往往不是敲代码,而是:

  • 跨文件定位真正的改动点、理解依赖与数据流
  • 改完后跑测试/构建/脚本 → 根据报错继续修 → 再验证(闭环)
  • 代码审查、补测试、写变更说明与文档、整理证据

Codex 的价值在于:它能在同一工作台里,把“理解 → 修改 → 执行 → 验证 → 复盘”尽量跑完,让人把时间更多用在架构判断与需求决策上。

二、它把“工程经验”变成默认流程(团队价值)

当团队开始把 Codex 当“工程成员”使用时,效率之外更重要的是稳定性:

  • AGENTS.md 把团队约束写出来(测试、lint、目录结构、禁忌操作、提交规范等)。
  • config.toml 固化安全边界(审批策略、沙箱模式、网络访问、环境变量传递)。
  • 用 Rules 把“沙箱外命令”做门禁(允许/提示/禁止),降低误操作风险。
  • 用 Skills 把 SOP(比如“发版前检查”“迁移可回滚”“PR 必须附证据”)封装成可复用能力,让不同项目输出一致。

三、它让 SDLC 全阶段都能引入智能体(AI-Native Team)

第二篇文章把 SDLC 分成 Plan / Design / Build / Test / Review / Document / Deploy&Maintain,并给出“智能体能做什么、人类要做什么、入门清单”。核心结论是:

  • 智能体越来越适合做“多步、重复、可验证”的工程任务;
  • 人类更应聚焦:需求意图、架构取舍、安全与性能边界、上线决策与责任。

四、多端形态让 Codex“放在合适的位置”

第四篇文章强调:入口选对了,体验会从“能用”变成“顺手”:

  • 写代码/改代码/读代码:IDE 最顺
  • 批处理、跑脚本、审查、记录:CLI 更强
  • 并行大任务、产出 PR、隔离执行:Cloud 更合适
  • 团队协作委派入口:GitHub/Slack/Linear 集成更自然

8.3 【WHO】:谁适合用?团队如何协作?

一、个人开发者

  • 快速理解陌生仓库、修 Bug、补测试、做本地审查、整理文档与变更摘要。
  • 适合从 CLI/IDE 开始,用“可验证提示 + 小步迭代”建立正反馈。

二、Tech Lead / 架构与平台团队

  • 更关心“把能力变成流程”:配置、权限、规范、复用模板、质量门禁。
  • 典型抓手:AGENTS.md(规则与约束)、Skills(SOP 固化)、Rules(沙箱外命令门禁)、Cloud/Integrations(接入团队系统)。

三、测试 / 质量工程

  • 让 Codex 按项目约定补测试、跑测试并回传证据;把测试作为独立步骤纳入工作流。
  • 典型抓手:在 AGENTS.md 写清测试框架、覆盖要求、常用命令;用 workflow 指定“先写测试再修 bug”等策略。

四、运维 / 安全 / 合规

  • 重点是边界与审计:审批策略、沙箱、网络访问风险、prompt injection 风险、密钥处理方式。
  • 典型抓手:config.toml 的 sandbox_mode / approval_policy、Rules 的 forbidden/prompt、Cloud 的网络访问策略与 secrets 生命周期、MCP 的工具白名单/黑名单。

五、协作场景的“入口角色”

  • GitHub:PR/Review/Issue 让 Codex 成为协作者(例如评论触发 review)。
  • Slack:更像“团队机器人”,适合问答、委派、进度同步。
  • Linear:更像“任务执行者”,可分配 issue、自动更新进展、并能通过 MCP 在本地读取任务上下文。

8.4 【WHEN】:什么时候用哪些能力/入口?

这一部分把七篇内容里的“案例、能力与阶段”合并成一张“时间点地图”:读者可以按任务阶段(SDLC)或按任务类型来选入口与能力。

一、按 SDLC 阶段选 Codex 的用法(来自 AI-Native Team 章节)

  • Plan(规划):读规范/工单/仓库,拆任务、估复杂度、标依赖与风险;人类负责优先级与关键路径决策。
  • Design(设计):搭骨架、生成样板、从设计稿/截图生成组件、提出可访问性建议;人类审核设计一致性与可扩展性。
  • Build(构建):跨文件实现功能、补错误处理/遥测/安全包装、修构建报错;人类把控架构、安全与性能边界。
  • Test(测试):生成测试用例、补边界场景、随代码演进维护测试;人类审核测试有效性与覆盖目标。
  • Review(审查):本地 /review 或 PR review;人类做最终合并判断与架构一致性把关。
  • Document(文档):更新 README/指南/排障文档,生成结构化说明与变更摘要;人类审核准确性与信息组织。
  • Deploy & Maintain(部署运维):结合日志/遥测/工单系统做排障建议;人类决定修复与发布策略并保持最终控制。

二、按“任务类型”选入口:IDE / CLI / Cloud / 集成

任务类型 更推荐入口 原因(概括)
理解代码、追数据流、解释模块职责 IDE 打开文件/选区天然就是上下文
修 Bug(可复现)、跑测试验证 CLI / IDE CLI 更擅长执行命令与记录;IDE 更适合定位与修改
写测试(对齐项目习惯) IDE(选区)/ CLI IDE 选中函数更快;CLI 便于明确文件路径与批量跑测
从截图/设计稿生成 UI CLI / IDE 支持图像输入;可要求可运行交付物 + README
UI 快速迭代(改样式→预览→再改) CLI + 本地 dev server 双终端循环更顺畅
大型重构(本地规划 + 云端并行实现) IDE → Cloud 本地审计划、云端跑实现与验证,最后拉 diff/PR
提交前质量检查 CLI /review 不改文件,集中输出可执行建议
审查 PR(无需拉分支) GitHub 集成 评论触发 review,适合团队协作
更新文档与变更说明 IDE / CLI 方便引用文档并做链接校验

三、Workflows 里的 9 个典型案例(可直接当“模板”)

第二篇文章给了 9 个 workflow 案例,读者可以把它们理解为“最常用的九种提问方式”:

  1. 解析代码库(模块职责、数据校验点、潜在坑)
  2. Bug 修复(复现步骤 + 约束 + 回归测试 + 验证)
  3. 编写测试(对齐项目约定、覆盖 happy path 与 edge cases)
  4. 从截图原型生成代码(约束技术栈 + 交付物 + 运行方式)
  5. 迭代 UI(提出多方案 → 选定 → 细化)
  6. 将重构任务委派到云端(先计划再执行里程碑)
  7. 本地代码审查(/review,聚焦边界与安全)
  8. 审查 PR(GitHub 评论 @codex review ...
  9. 更新文档(明确要更新的章节、验证链接与渲染)

8.5 【WHERE】:它运行在哪?配置/文件放哪?边界在哪里?

一、本地:读者需要记住的“Codex 工作目录体系”

1)主目录(CODEX_HOME,默认 ~/.codex

  • ~/.codex/config.toml:核心配置(模型/审批/沙箱/MCP/功能开关等)
  • ~/.codex/rules/*.rules:沙箱外命令规则(allow/prompt/forbidden)
  • ~/.codex/prompts/*.md:自定义提示(显式调用 /prompts:<name>
  • ~/.codex/skills/:用户级技能(可跨仓库复用)
  • 可能的状态文件:auth.jsonhistory.jsonl、日志与缓存等

2)项目/仓库内(随代码走的沉淀)

  • AGENTS.md / AGENTS.override.md:项目与子目录的指令(分层合并)
  • <repo>/.codex/skills/:仓库级技能(团队共享、随仓库分发)
  • 其他项目资料:README、docs、团队指南(可通过 fallback 文件名让 Codex 识别)

二、云端:任务在隔离容器内如何跑?

Cloud 任务大致流程:

  1. 创建容器并 checkout 仓库/分支或指定 commit
  2. 运行 setup(必要时运行 maintenance;使用缓存容器会更常见)
  3. 应用网络策略:setup 阶段可联网;agent 阶段默认禁网(可按环境开启)
  4. agent 循环执行:编辑代码 → 运行检查(测试/lint 等)→ 根据结果迭代
  5. 输出结果:展示 diff/日志/验证信息 → 由读者审查并开 PR 或继续追问

三、Secrets 与网络访问:云端边界要特别注意

  • 环境变量:可在任务全过程(setup + agent)可用。
  • secrets:运行期加密存储,通常只在 setup 阶段可用,agent 阶段会移除(降低泄露风险)。
  • 网络访问风险:agent 阶段开网会引入 prompt injection、敏感信息外泄、恶意依赖下载、许可证风险等;建议尽量限制可信域名并审查日志。

四、指令发现“在哪里发生”:AGENTS 的分层合并

Codex 启动时会构建指令链:

  • 全局:~/.codex/AGENTS.override.md(若存在)否则 ~/.codex/AGENTS.md
  • 项目:从项目根到当前工作目录逐层检查:
    • AGENTS.override.mdAGENTS.mdproject_doc_fallback_filenames 中的文件名
  • 合并顺序:从根到叶拼接,越靠近当前目录优先级越高;默认最多嵌入 project_doc_max_bytes(32 KiB)

五、技能“在哪里加载”:Skills 的作用域优先级

同名技能会被“更高优先级作用域”覆盖(从高到低概括):

  • REPO:当前目录或仓库根的 .codex/skills
  • USER:$CODEX_HOME/skills(默认 ~/.codex/skills
  • ADMIN:/etc/codex/skills
  • SYSTEM:随 Codex 打包的系统技能

8.6 【HOW】:怎么从 0 到工程化落地(可直接照做)

这一章把七篇文章里所有“操作型内容”串成一条落地路径:先能用 → 再顺手 → 最后团队化与平台化。

Step 1:准备账号与入口(Web / CLI / IDE)

  1. 明确使用入口:IDE(编辑器内)、CLI(终端)、Cloud(Web)或团队集成(GitHub/Slack/Linear)。
  2. CLI 常见安装方式:
# npm
npm install -g @openai/codex

# Homebrew(macOS)
# 两种写法在文章中都出现过,按安装渠道选择其一:
brew install codex
brew install --cask codex
  1. 运行 codex,选择 ChatGPT 登录API Key,完成授权。

Step 2:先把“安全边界”设好(配置 + 审批 + 沙箱)

~/.codex/config.toml 里优先关注三件事:

  1. 默认模型(影响质量/成本/速度)
  2. approval_policy(影响“什么时候询问确认”)
  3. sandbox_mode(影响“它能改哪里、能不能联网”)

示例(偏稳妥、适合日常开发):

model = "gpt-5.2-codex"
approval_policy = "on-request"
sandbox_mode = "workspace-write"

如果需要让工作区之外某些路径可写(如特定工具链目录),可在 sandbox_workspace_write.writable_roots 精确放行;如果要开网络访问,尽量只在必要时按环境开启,并配合 Rules/日志审计。


Step 3:学会写“工程级提示词”(把任务变成可验证的闭环)

博主建议提示至少包含 5 个元素(顺序可调):

  1. 目标(Goal):需要交付什么结果
  2. 上下文(Context):相关文件、入口、运行环境(IDE 可少写,CLI 要写清)
  3. 约束(Constraints):不改 API、不引入依赖、最小 diff、性能/安全边界
  4. 交付物(Deliverables):需要哪些文件/改动/说明
  5. 验证(Verification):复现步骤、测试命令、lint、验收清单

示例(Bug 修复类):

  • “问题是什么 + 复现步骤 + 不允许改什么 + 必须补什么测试 + 修完怎么验证”

示例(功能实现类):

  • “按项目规范实现 X,要求跑通 npm test,并给出变更摘要与验证结果”

Step 4:把常用任务套进 Workflows(九大模板直接复用)

  • 解析代码库:让它输出“请求流编号步骤 + 涉及文件列表 + 校验点 + 潜在坑”
  • 修 Bug:让它先复现(或解释如何复现)→ 修复 → 跑测 → 回归测试
  • 写测试:选中函数/引用文件 → 明确覆盖 edge cases → 对齐项目 conventions
  • UI 从截图:给技术栈、路由/页面交付物、README 运行说明
  • UI 迭代:先要 2-3 个方案,再逐步收敛
  • 大重构:本地先计划(里程碑)→ 云端执行里程碑 → 拉 diff/PR
  • 本地审查:/review,加上安全/边界/性能关注点
  • PR 审查:GitHub 评论 @codex review for ...
  • 文档更新:指定章节、要求校验链接与渲染

Step 5:选模型与推理强度(把“质量/成本/速度”调到合适)

文章给出的典型模型选择思路:

  • 默认推荐:gpt-5.2-codex(工程任务最强通用)
  • 成本敏感:gpt-5.1-codex-mini(更省但能力略弱)
  • 长任务/更深推理:gpt-5.1-codex-max(更适合长链路编码任务)
  • 通用智能体:gpt-5.2 / gpt-5.1(更泛化)

备注:在配置参考(config reference)片段中写明 “默认:所有平台均为 gpt-5.2-codex”。如果在某些地方看到 “macOS/Linux 默认 gpt-5-codex、Windows 默认 gpt-5” 之类描述,通常意味着它来自更早的版本/文档表述;以当前安装版本的 /status~/.codex/config.toml 生效值为准。

CLI 可临时切换:

codex -m gpt-5.1-codex-mini

也可在会话中 /model 切换。


Step 6:用 Rules 给“沙箱外命令”上门禁(允许/提示/禁止)

  1. ~/.codex/rules/ 下创建 *.rules
  2. prefix_rule() 匹配命令前缀,指定 decision
    • allow:直接放行
    • prompt:每次提示确认
    • forbidden:直接拒绝(建议写替代方案)
  3. match/not_match 当“内联单测”,避免误配。
  4. 注意 bash -lc 这类包装器可能隐藏复合命令,Codex 会做特殊处理;能拆分时会拆分后再判定规则。

Step 7:用 AGENTS.md 让它“默认懂项目”(全局 + 仓库 + 子目录覆盖)

读者可以从两层开始:

1)全局 ~/.codex/AGENTS.md(个人工作约定)

  • 常用测试命令、依赖管理偏好、是否允许加生产依赖、提交规范等。

2)仓库根 AGENTS.md(项目规范)

  • 如何运行/测试/构建、目录结构、禁忌操作、安全要求、文档要求。

当某个子目录(如某个微服务)有特殊规则,用 AGENTS.override.md 放在子目录里覆盖。

验证是否生效:

codex --ask-for-approval never "Summarize the current instructions."

Step 8:把高频提示做成“自定义提示词”(个人复用)

  1. 创建 ~/.codex/prompts/xxx.md,在 YAML front matter 写 descriptionargument-hint
  2. 在内容里使用占位符(如 $FILES$PR_TITLE$1..$9)。
  3. 重启 Codex 后用 /prompts:xxx 调用。

适用:个人常用的“草稿 PR”“变更摘要”“统一 review 模板”等。
不适用:需要随仓库共享、希望隐式触发的 SOP(这更适合 Skills)。


Step 9:接入 MCP,让它能用“外部工具与真实系统”

两种方式:

  • CLI:codex mcp add ...
  • 直接改 ~/.codex/config.toml[mcp_servers.<name>]

读者需要重点理解的配置维度:

  • STDIO(本地进程):command/args/env/env_vars/cwd
  • HTTP(远程服务):url、token 与 headers、OAuth(codex mcp login <name>
  • 运行控制:enabledstartup_timeout_sectool_timeout_secenabled_tools/disabled_tools

Step 10:用 Skills 把 SOP 封装成“团队可复用能力”

技能的核心是一个目录 + SKILL.md(可以附带脚本/资源/模板),Codex 采用“渐进式披露”:

  • 启动时只加载 skills 的 name/description(省上下文)
  • 显式调用:/skills 或在提示中 $SkillName
  • 隐式调用:任务与 description 匹配时自动选择技能

保存位置的三种常用方式:

  • 用户级:~/.codex/skills/<skill>/SKILL.md(个人跨仓库复用)
  • 仓库级:<repo>/.codex/skills/<skill>/SKILL.md(团队随仓库共享)
  • 符号链接:把“公司技能仓库”链接到 ~/.codex/skills/(统一维护)

常见排查点:

  • 文件名必须是 SKILL.md
  • YAML/name/description 需符合格式与长度限制
  • 触发不明显:description 写得不够明确或多个技能意图重叠

社区/官方资源:

  • openai/skills(官方推荐,可直接用/可做模板)
  • agentskills/agentskills(更偏规范与写技能指南)
  • anthropics/skills(可借鉴复杂技能组织方式)
  • agentskills.io(索引/市场)

8.7 小结

本章用 5W1H 把前面各篇串成一条主线:是什么、为什么、谁参与、何时用、在哪运行、以及如何工程化落地。

如果只记一条:用 config / approvals / sandbox 画边界,用 rules / agents / prompts / mcp / skills 做复用,让每次协作都能形成可验证的交付闭环。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐