外观
Codex 是 OpenAI 的编程代理,可以在 CLI、IDE 扩展、桌面应用和云端(chatgpt.com/codex)使用。结论先说:从官方渠道安装 CLI 后先登录(ChatGPT 账号走订阅权益,API Key 按 API 用量计费);在 Git 仓库里推荐 workspace-write 沙箱 + on-request 审批;仓库根目录写好 AGENTS.md;每个任务说清改哪里、不改哪里、怎样算完成;所有改动都在独立分支上审阅并跑测试。公司网络有 TLS 解密代理时,登录前先配置证书。
本页适合已经会用 Git、想让 AI 参与日常开发的读者。下面先给一张速查表,再讲安装与登录、config.toml、沙箱与审批、代理与证书、AGENTS.md、任务拆分与验收、审阅与自动化、故障排查;页面末尾的「官方资格入口」列出 OpenAI 的支持地区页面。命令和配置项按 2026-10-07 的官方文档核对,后续变化以官方文档为准。
核心结论
核心结论
- 官方入口:文档在 OpenAI 官方开发者文档站,源码在 github.com/openai/codex,云端任务在 chatgpt.com/codex,只从这些来源安装和查资料。
- 安装后先登录:用 ChatGPT 账号登录走订阅权益;用 API Key 登录按 API 用量计费;无浏览器环境用
codex login --device-auth。 - 默认就有沙箱:Git 仓库里推荐
workspace-write+on-request,命令联网默认关闭;danger-full-access只在隔离环境使用。 - 仓库要有 AGENTS.md:写清目录结构、构建 / 测试命令和约定,Codex 会从 Git 根目录到当前目录逐级读取,合并后有大小上限。
- 任务要有边界:说明改哪里、不改哪里、怎样算完成,比「帮我优化代码」可靠得多。
- 所有改动都要审阅并跑测试:在独立 Git 分支上工作,用
/diff、/review和自己的测试命令双重确认,合并决定权留在人手里。 - 企业网络先配证书:TLS 解密代理环境下,登录前设置
CODEX_CA_CERTIFICATE(或SSL_CERT_FILE)。
Codex 速查表
| 你要做的事 | 怎么做 | 本页章节 |
|---|---|---|
| 安装 CLI | 官方安装脚本、npm 或 Homebrew,装完运行 codex --version | 「安装与更新 Codex CLI」 |
| 登录 | codex login;无浏览器环境用 codex login --device-auth | 「身份验证与凭据保管」 |
| 查看登录与会话状态 | codex login status,会话内 /status | 「身份验证与凭据保管」「常见故障排查」 |
| 设定默认权限 | 沙箱 workspace-write + 审批 on-request | 「沙箱、审批与权限安全」 |
| 告诉它项目约定 | 在仓库写 AGENTS.md | 「AGENTS.md:写给 Codex 的项目说明」 |
| 公司网络证书报错 | 登录前设置 CODEX_CA_CERTIFICATE 或 SSL_CERT_FILE | 「代理与受限网络环境下的配置」 |
| 放进脚本或 CI | codex exec 非交互运行 | 「非交互运行与自动化」 |
| 并行跑独立任务 | 云端任务 chatgpt.com/codex 或桌面应用 | 「官方产品入口与使用方式」 |
| 确认所在地区能否使用 | OpenAI 官方支持地区页面 | 「官方资格入口」 |
Codex 是什么,适合解决什么问题
Codex 是 OpenAI 的编程代理(coding agent):它不只是回答编程问题,而是能在你授权的范围内读取代码、修改文件、运行命令,并根据命令输出继续调整,直到完成任务或需要你确认。理解这一点很重要:你交给它的是「一件事」,而不是「一个问题」。
一次典型任务是怎么跑完的
一次任务通常经历以下循环,理解它有助于判断该在哪个环节介入:
- 读取上下文:加载 AGENTS.md、你的提示和它主动打开的源码文件。
- 形成计划:判断要改哪些文件、需要运行什么命令来验证。
- 执行动作:编辑文件、运行构建或测试命令。每个动作都受沙箱和审批策略约束,超出范围时会停下来请求你批准。
- 读取结果并迭代:根据测试输出或报错继续修改。
- 汇报:总结改了什么、验证结果如何,等待你审阅。
在这个循环里,你能控制的杠杆主要有三个:项目说明(AGENTS.md,决定它「知道什么」)、任务描述(决定它「做什么、做到什么程度」)、权限设置(决定它「能做什么」)。本文后面的章节就是围绕这三个杠杆展开的。
与聊天式问答的区别
| 对比项 | 在 ChatGPT 中问编程问题 | 使用 Codex |
|---|---|---|
| 能否看到你的仓库 | 只能看到你粘贴的片段 | 能在授权范围内读取整个工作目录 |
| 能否修改文件 | 不能,需要你手动复制 | 能直接编辑,改动体现在 Git 工作区 |
| 能否运行命令 | 不能 | 能运行构建、测试等命令,受沙箱约束 |
| 结果如何验证 | 你自己试 | 它可以先跑测试自检,你再复核 |
| 主要风险 | 答案不准确 | 改动越界、误执行命令,需要权限与审阅兜底 |
官方产品入口与使用方式
Codex 有多个入口,共享相同的工作理念:CLI 最透明、IDE 扩展最贴近编辑习惯、桌面应用适合管理多项目、云端任务适合并行和不依赖本地环境的工作。
| 形态 | 入口 | 适合的场景 |
|---|---|---|
| Codex CLI | 终端中运行 codex | 在本地仓库中交互式开发、调试、执行命令 |
| IDE 扩展 | VS Code 及兼容编辑器(如 Cursor、Windsurf) | 边看代码边让 Codex 修改,就地查看改动 |
| 桌面应用 | Codex App(可在 CLI 中运行 codex app 打开) | 同时管理多个项目和较长时间运行的任务 |
| 云端任务 | chatgpt.com/codex | 在云端环境中并行运行任务,适合不依赖本地环境的工作 |
如何选择
- 改动需要本地环境(本地数据库、私有依赖、特定硬件):用 CLI 或 IDE 扩展。
- 想并行跑多个相互独立的任务:考虑云端任务或桌面应用。
- 刚开始接触:建议从 CLI 起步,所有操作都在眼前,最容易理解代理在做什么。
- 需要放进脚本或 CI:用 CLI 的非交互命令
codex exec(见后文「非交互运行与自动化」)。
几种形态之间并不互斥。常见的组合是:日常在 IDE 扩展或 CLI 中处理需要本地环境的改动;把相互独立、耗时较长的任务(例如为多个模块分别补测试)交给云端并行运行,完成后在 GitHub 上以 PR 的形式审阅。需要注意,云端任务运行在远程环境中,代码会被拉取到云端处理,涉及保密代码时先确认所在单位是否允许;本地 CLI 的改动则直接落在你的工作区,更便于逐步审阅。
地区与账号
Codex 需要 ChatGPT 账号或 OpenAI API 账号,服务仅在 OpenAI 支持的国家和地区提供,名单以 OpenAI 帮助中心为准。网络问题可参考 常见问题 与 AI 机场推荐,并请遵守所在地法律法规与服务条款。
安装与更新 Codex CLI
Codex CLI 官方提供独立安装脚本、npm 和 Homebrew 三种安装方式,任选其一即可;Windows 使用官方 PowerShell 安装脚本。
bash
# macOS / Linux:官方安装脚本
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# 或使用 npm 全局安装
npm install -g @openai/codex
# 或使用 Homebrew
brew install --cask codexWindows 可在 PowerShell 中运行官方安装脚本:
powershell
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"安装后自检
- 重新打开一个终端窗口,让新的 PATH 生效。
- 运行
codex --version,能输出版本号说明命令可用。 - 进入一个 Git 仓库,运行
codex,确认能进入交互界面并提示登录。 - 在交互界面输入
/status,查看当前会话的模型、权限与用量配置。
更新方式
更新方式与安装方式保持一致:npm 安装的用 npm install -g @openai/codex 重新安装最新版,Homebrew 安装的用 brew upgrade --cask codex,脚本安装的重新运行官方脚本即可。不要混用多种方式安装,否则 PATH 中可能同时存在新旧两个 codex,出现「升级了却没变化」的情况——用 which codex(Windows 用 where codex)确认实际调用的是哪一个。
只从官方来源安装
安装命令以官方 README 和文档为准。不要使用来源不明的「加速版」「破解版」安装包;通过管道执行脚本前,确认网址确实是官方域名。npm 包名是 @openai/codex,注意与名字相近的第三方包区分。
身份验证与凭据保管
Codex 支持「用 ChatGPT 登录」和「用 API Key 登录」两种方式,二者的计费体系不同;凭据默认以明文缓存在本机,必须像密码一样保管。
| 方式 | 命令 | 计费 |
|---|---|---|
| ChatGPT 账号登录 | 运行 codex 选择 Sign in with ChatGPT,或 codex login | 使用 ChatGPT 方案中的 Codex 权益,以官方说明为准 |
| API Key 登录 | 通过标准输入传入 API Key(见下方命令) | 按 OpenAI API 用量计费 |
| 无浏览器环境 | codex login --device-auth | 设备码方式:在任意有浏览器的设备上打开链接并输入一次性代码 |
API Key 登录与常用的账号管理命令:
bash
# 用环境变量中的 API Key 登录(避免 Key 出现在命令历史里)
printenv OPENAI_API_KEY | codex login --with-api-key
codex login status # 查看当前登录状态
codex logout # 退出登录凭据存放位置
登录信息的存放方式由 config.toml 中的 cli_auth_credentials_store 控制:
| 取值 | 行为 | 适合 |
|---|---|---|
file | 写入 ~/.codex/auth.json(明文) | 个人电脑、需要简单迁移时 |
keyring | 存入操作系统的凭据管理器 | 希望凭据不以明文落盘 |
auto | 优先系统凭据管理器,不可用时退回 auth.json | 多数桌面环境 |
ephemeral | 只保存在内存,进程结束即失效 | 临时环境、共享机器 |
toml
# ~/.codex/config.toml(示例)
cli_auth_credentials_store = "keyring"auth.json 等同于密码
~/.codex/auth.json 不要提交到仓库、不要拷贝进 Docker 镜像、不要发给他人。怀疑泄露时,ChatGPT 登录方式应退出并重新登录,API Key 方式应立即在 OpenAI 控制台吊销该 Key。
选择哪种登录方式
- 个人日常开发:用 ChatGPT 账号登录最省事,权益与限额以所订阅方案的官方说明为准。
- 团队统一计费或需要精细预算控制:用组织的 API Key,并在 OpenAI 控制台为项目设置用量上限。
- 远程服务器、容器:用
--device-auth,或通过环境变量注入 API Key,不要把个人电脑上的auth.json复制过去。 - 企业管理员:可在配置中用
forced_login_method(取值chatgpt或api)限制允许的登录方式。
配置文件 config.toml
Codex 的持久配置写在 TOML 格式的 config.toml 里:用户级在 ~/.codex/config.toml,项目级覆盖在仓库的 .codex/config.toml,后者只在你信任该项目时才会加载。
| 位置 | 作用范围 | 说明 |
|---|---|---|
~/.codex/config.toml | 本机所有项目 | 个人默认值,如模型、审批策略、凭据存放方式 |
<仓库>/.codex/config.toml | 当前项目 | 项目级覆盖,仅在受信任项目中加载 |
CODEX_HOME 环境变量 | 改变 Codex 主目录 | 默认是 ~/.codex,设置后配置、AGENTS.md 全局说明等都从新目录读取 |
常用配置项
| 配置项 | 作用 |
|---|---|
model | 默认使用的模型,填官方模型列表中的 ID |
approval_policy | 何时暂停请求批准,取值见后文 |
sandbox_mode | 沙箱模式:read-only、workspace-write、danger-full-access |
[sandbox_workspace_write] 下的 network_access | 在 workspace-write 模式下是否允许命令联网 |
project_doc_max_bytes | 读取 AGENTS.md 等说明文件的总字节上限 |
project_doc_fallback_filenames | AGENTS.md 缺失时尝试的其他文件名 |
cli_auth_credentials_store | 凭据存放方式 |
model_provider / openai_base_url | 模型服务提供方与 OpenAI 接口地址覆盖,一般无需修改 |
一个偏保守的个人配置示例(MODEL_ID 替换为官方模型列表中的 ID):
toml
# ~/.codex/config.toml(示例)
model = "MODEL_ID"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
cli_auth_credentials_store = "keyring"
# 合并后的项目说明上限,默认 32 KiB,这里放宽到 64 KiB
project_doc_max_bytes = 65536
[sandbox_workspace_write]
# 默认关闭;需要安装依赖等联网操作时再临时打开
network_access = false改完配置怎么确认生效
重启 Codex 后运行 /status 查看当前会话的配置与用量;如果怀疑多层配置互相覆盖,可以用 /debug-config 打印各配置层的诊断信息。
沙箱、审批与权限安全
Codex 的安全模型由两层组成:沙箱(sandbox,操作系统层面限制命令能读写什么、能否联网)和审批策略(approval policy,决定什么时候停下来问你)。两者配合使用,默认设置已经相当克制,不建议一上来就放宽。
三种沙箱模式
| 模式 | 能做什么 | 适合 |
|---|---|---|
read-only | 读取文件、在沙箱内执行命令;越界动作需要批准 | 阅读陌生仓库、只做分析和规划 |
workspace-write | 在工作目录内读写文件和运行命令;越界与联网需要批准 | 日常开发,Git 仓库中的推荐默认值 |
danger-full-access | 不受沙箱限制 | 仅限一次性的隔离容器或虚拟机 |
Codex 会自动识别目录类型:在受版本控制的目录中推荐 workspace-write + on-request;在不受版本控制的目录中默认 read-only。这背后的逻辑是:有 Git 兜底时改错了还能回退,没有 Git 时应更谨慎。
审批策略
| 取值 | 行为 |
|---|---|
on-request | 在需要越出沙箱、联网或执行被拦截的命令时询问你 |
never | 从不弹出审批,但仍受沙箱约束;被拦截的动作直接失败 |
granular | 按类别细粒度控制哪些情况需要审批 |
旧的 untrusted 取值已经停用,官方建议改用 on-request 并搭配合适的沙箱模式。
命令行参数与会话内切换
bash
# 只读方式启动,适合先让它读懂项目
codex --sandbox read-only
# 明确指定沙箱与审批策略
codex --sandbox workspace-write --ask-for-approval on-request-s 是 --sandbox 的简写,-a 是 --ask-for-approval 的简写。会话进行中可以用 /permissions 切换,例如规划阶段先切到只读,确认方案后再切回可写。
受保护路径与网络
- 即使在可写模式下,
.git(以及其指向的 gitdir)、.agents、.codex目录仍保持只读,防止代理篡改版本历史和自身配置。 workspace-write下命令的网络访问默认关闭。需要时在[sandbox_workspace_write]中设置network_access = true;更精细的做法是启用官方的网络代理功能,按域名设置允许 / 拒绝规则,拒绝规则优先。
关于 --yolo
--dangerously-bypass-approvals-and-sandbox(别名 --yolo)会同时关闭审批和沙箱。不要在保存有 SSH 私钥、云平台凭据、生产数据库连接信息的日常电脑上使用它;确有需要时,只在用完即弃的容器或虚拟机里使用。
一份权限选择决策表
| 场景 | 建议组合 |
|---|---|
| 第一次接触某个仓库 | read-only,只让它读和讲 |
| 日常修 bug、写功能 | workspace-write + on-request |
| 需要安装依赖或访问内部包仓库 | 保持 on-request,在提示时临时批准联网,或只为该项目打开 network_access |
| CI 中只读审查 | read-only + never |
| 一次性容器内的批量改造 | 在隔离环境中才考虑放宽,完成后销毁环境 |
代理与受限网络环境下的配置
在公司代理、TLS 解密网关或其他受限网络中使用 Codex,要分清两条连接:一条是 Codex 本身连接 OpenAI 服务(登录、模型请求),另一条是 Codex 在沙箱里执行的命令联网(如 npm install)。前者靠证书和代理环境变量解决,后者靠沙箱的网络设置解决。
Codex 自身的连接:证书
企业网络常用 TLS 解密代理,它会用公司私有根证书重新签发 HTTPS 证书,未信任该根证书的程序会报证书错误。官方文档给出的做法是在登录前设置:
bash
# 指向企业根证书(PEM 格式),然后再登录
export CODEX_CA_CERTIFICATE=/path/to/corporate-root-ca.pem
codex login如果没有设置 CODEX_CA_CERTIFICATE,Codex 会读取 SSL_CERT_FILE 作为后备。证书文件请向公司 IT 部门索取,不要从网上下载来源不明的「根证书」。
Codex 自身的连接:代理环境变量
终端程序通常通过 HTTPS_PROXY、HTTP_PROXY、NO_PROXY 这几个标准环境变量走代理。社区实践中 Codex 一般也会读取它们,但官方文档目前没有逐项列出各变量的支持细节,部分版本中个别连接路径(如登录流程)的代理支持也有过变化。稳妥做法是:
bash
# 示例:在启动 Codex 的同一个终端里设置(地址替换为你实际的代理)
export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1
codex设置后先用 codex login status 和一个简单任务验证;若登录可用而某个功能失败,记下具体报错,到 openai/codex 仓库的 issue 中检索。是否支持 SOCKS 代理、系统代理(PAC)等细节,以官方文档和发行说明为准。
沙箱内命令的联网
| 现象 | 原因 | 处理 |
|---|---|---|
Codex 能对话,但它运行的 npm install、pip install 失败 | workspace-write 默认禁止命令联网 | 在提示时批准,或为该项目设置 network_access = true |
打开了 network_access 仍然连不上内部仓库 | 命令本身没有拿到代理或证书配置 | 在项目的包管理器配置中设置代理和证书(如 npm、pip 自己的配置) |
| 只想允许访问少数域名 | 全开网络风险过大 | 使用官方网络代理功能的域名允许 / 拒绝规则 |
请遵守网络与合规要求
公司网络的代理和证书配置应遵循所在单位的 IT 安全规定。个人网络环境的选择可参考 AI 机场推荐 中的判断标准,并请遵守所在地法律法规与服务条款。
AGENTS.md:写给 Codex 的项目说明
AGENTS.md 是写给编程代理看的项目说明文件,是让 Codex「少猜、少犯错」最有效的手段。在 Codex CLI 中运行 /init 可以在当前目录生成初稿,再由你补充修订。
读取顺序与优先级
Codex 每次开始工作时按以下顺序组装说明:
- 全局说明:先读 Codex 主目录(默认
~/.codex,可用CODEX_HOME修改)中的AGENTS.override.md,不存在则读AGENTS.md。 - 项目说明:从 Git 根目录开始,逐级走到当前工作目录,在每一层依次查找
AGENTS.override.md、AGENTS.md,以及project_doc_fallback_filenames中配置的备用文件名。 - 每层最多一个文件:同一目录只取找到的第一个。
- 按顺序拼接:越靠近当前目录的说明越靠后,相互冲突时以它为准。
- 大小上限:空文件会被跳过;拼接总大小达到
project_doc_max_bytes(默认 32 KiB)后不再追加。
| 文件 | 用途 |
|---|---|
~/.codex/AGENTS.md | 你个人在所有项目通用的习惯,如回复语言、提交信息风格 |
<仓库根>/AGENTS.md | 团队共享的项目说明,提交到仓库 |
<子目录>/AGENTS.md | 只对该子目录生效的补充规则,适合 monorepo |
AGENTS.override.md | 临时覆盖同层的 AGENTS.md,用完记得删除 |
一个实用的 AGENTS.md 示例
markdown
# 项目说明
## 结构
- `src/api/`:后端接口
- `src/web/`:前端页面
- `tests/`:单元测试与集成测试
## 常用命令
- 安装依赖:`npm install`
- 运行测试:`npm test`
- 代码检查:`npm run lint`
## 约定
- 使用 TypeScript 严格模式,不引入 `any`。
- 新增功能必须附带测试。
- 不修改 `migrations/` 下已合并的迁移文件。
- 提交前确保 `npm test` 与 `npm run lint` 通过。
## 完成标准
- 在回复中列出改动的文件和原因。
- 说明运行了哪些验证命令以及结果。写什么、不写什么
| 应该写 | 不应该写 |
|---|---|
| 构建、测试、lint 的准确命令 | API Key、数据库密码等任何密钥 |
| 目录职责和模块边界 | 从代码一眼就能看出来的信息 |
| 团队约定与禁区(不准动的目录、不准引入的依赖) | 大段产品文档、会议记录 |
| 业务术语的含义 | 含糊的要求,如「写出高质量代码」 |
| 「怎样算完成」的通用标准 | 只对某一次任务有用的临时指令 |
示例场景:monorepo 中的分层说明
示例场景:一个仓库同时包含前端 apps/web 和后端 services/api,两边的测试命令、代码风格都不同。合理的组织方式是:根目录的 AGENTS.md 只写全仓库通用的内容(目录总览、提交规范、禁止修改的公共目录);apps/web/AGENTS.md 写前端的安装、测试和组件约定;services/api/AGENTS.md 写后端的测试命令和数据库迁移规则。当你在 services/api 下启动 Codex 时,它会依次读到根目录和后端两份说明,后端规则排在后面、优先级更高,而前端说明不会混进来占用上下文。这样既避免单个文件过长被截断,也让每个子团队只维护自己那一份。
让 AGENTS.md 持续变好
AGENTS.md 不是写一次就结束的文件。比较有效的维护习惯是:每当你在任务中第二次纠正 Codex 同一个问题(例如又用错了测试命令、又改了不该改的目录),就把这条纠正写进 AGENTS.md;每隔一段时间删掉已经过时的命令和目录说明。把它当作代码的一部分,通过 PR 修改、让团队成员审阅,比私下各自维护一份更可靠。
验证说明是否生效
官方提供了一个简单的核对方法:在仓库目录运行下面的命令,让 Codex 复述它读到的指令。
bash
codex --ask-for-approval never "Summarize the current instructions."如果复述内容不对,按以下顺序检查:启动目录是否在仓库内;文件是否为空;上层目录是否有 AGENTS.override.md 覆盖了你的文件;备用文件名是否拼写正确;内容是否因超过上限被截断(可调大 project_doc_max_bytes 或拆分到子目录);echo $CODEX_HOME 确认主目录是否是你以为的那个。
从已有仓库组织开发任务
Codex 在已有仓库中最能发挥作用,但前提是它能快速理解项目。建议按「先理解、再计划、后修改」的顺序推进,并用 Git 分支隔离每个任务。
开始前的本地准备清单
- 仓库已用 Git 管理,工作区干净(
git status无未提交改动)。 - 为本次任务新建分支,例如
git switch -c codex/fix-login-timeout。 - 依赖已安装、项目能在本地构建,测试命令可以正常运行。
- 敏感配置(
.env、密钥文件)已加入.gitignore,不在仓库中明文出现。 - 在仓库根目录启动
codex,让它以项目为工作范围。
第一步:让它先读懂项目
text
请先阅读这个仓库,不要修改任何文件。
告诉我:
1. 项目的主要模块和各自职责;
2. 构建、运行和测试的命令;
3. 与「用户登录」相关的代码在哪些文件。把它的回答与你的认知对照,有偏差就当场纠正,并考虑把正确信息写进 AGENTS.md。这一步最好在 read-only 模式下进行。
第二步:先要计划,再动手
对于涉及多个文件的任务,先让 Codex 给出计划:要改哪些文件、每处改什么、如何验证。可以用 /plan 切换到计划模式并附上任务描述。确认计划合理后再让它执行;计划不清楚的地方,执行时只会更混乱。
第三步:按可验证的小步执行
| 任务规模 | 建议做法 |
|---|---|
| 小修复(单文件、明确报错) | 直接描述问题和期望行为,一次完成 |
| 中等功能(若干文件) | 先计划,再分 2–3 步执行,每步跑测试 |
| 大型改造(跨模块、重构) | 拆成多个独立任务,每个任务单独分支和提交 |
拆分任务的四条原则
- 每个任务只有一个目的:「修 bug」「重构」「升级依赖」分开做。
- 每个任务都能独立验证:拆出来的子任务完成后,测试应该能跑通。
- 先补测试,再改实现:对没有测试覆盖的旧代码,先让它补上能反映当前行为的测试,再动手修改。
- 上下文过长就换会话:长对话可以用
/compact压缩,切换到无关任务时用/new开新对话,避免旧上下文干扰。
一次只做一件事
把「修 bug + 顺便重构 + 升级依赖」放在同一个任务里,改动会难以审阅,出问题也难以回滚。拆开做,每个提交只有一个目的。
会话与上下文管理
上下文(context)指模型在一次对话中能同时「看到」的全部内容,包括说明文件、对话历史和读过的代码。上下文越杂,越容易遗忘早先的约定。Codex CLI 提供了几个用于管理会话的斜杠命令:
| 命令 | 作用 | 什么时候用 |
|---|---|---|
/mention | 把指定文件附加到对话 | 你明确知道相关代码在哪,想让它少走弯路 |
/compact | 总结当前可见对话以释放空间 | 同一任务还要继续,但对话已经很长 |
/new | 在同一个 CLI 中开始新对话 | 切换到无关的新任务 |
/fork | 把当前对话复制成一个新对话 | 想尝试另一种方案,又不想破坏现有进度 |
/resume | 恢复已保存的对话 | 回到之前中断的工作 |
/status | 查看会话配置与 token 用量 | 判断是否该压缩或换会话 |
经验法则:一个会话对应一个任务分支;任务切换就开新会话,而不是在旧会话里接着说「现在换个事情」。
示例场景:修复一个线上报错
示例场景:日志中出现某接口偶发返回 500。合理的推进方式是:先把报错堆栈和复现条件贴给 Codex,要求它在只读模式下定位可能原因并给出两三种假设;你确认最可能的一种后,让它先写一个能复现问题的失败测试;测试确实失败后,再让它修改实现直到测试通过;最后由你审阅 diff、运行完整测试并提交。整个过程中,「失败的测试」就是客观的验收标准。
任务范围与验收要求
任务描述里最关键的两条信息是范围(改哪里、不改哪里)和验收(怎样算完成);缺了它们,代理往往会改动过多或提前宣布完成。
任务描述模板
text
目标:登录接口在网络超时后应返回明确错误,而不是一直等待。
范围:只修改 src/api/auth/ 下的文件和对应测试;不要改动数据库结构。
约束:沿用现有错误码格式;不新增第三方依赖。
验收:
- 新增一个模拟超时的测试,并通过;
- npm test 与 npm run lint 全部通过;
- 在回复中说明改动了哪些文件以及原因。好与差的任务描述对比
| 差的描述 | 问题 | 改进后的描述 |
|---|---|---|
| 帮我优化一下代码 | 没有目标,改动范围不可控 | 把 src/report/ 中重复的日期格式化逻辑抽成一个函数,不改变输出 |
| 修一下登录 bug | 没有现象和复现方式 | 用户输入错误密码 5 次后仍能继续尝试,期望第 6 次返回锁定提示 |
| 加个缓存 | 没有约束和验收 | 为商品详情查询加内存缓存,过期时间可配置,新增命中与过期两个测试 |
| 把测试修好 | 可能被理解为「删掉失败的测试」 | 找出 tests/order 失败的原因并修复实现;不允许删除或跳过测试 |
验收清单(Definition of Done)
- [ ] 改动只涉及任务范围内的文件;
- [ ] 新增或修改的行为有对应测试;
- [ ] 原有测试没有被删除、跳过或放宽断言;
- [ ] 构建、测试、lint 全部通过,且由你本人复跑过;
- [ ] 没有新增未说明的依赖;
- [ ] 没有引入密钥、调试输出或临时文件;
- [ ] Codex 的总结与实际 diff 一致。
把这份清单的通用部分写进 AGENTS.md 的「完成标准」,可以让 Codex 在每次任务结束时主动自查。
改动审阅、测试验证和代码审查
AI 生成的改动和同事提交的代码一样,需要审阅后才能合并;Codex 自带的 /diff 和 /review 能帮你提速,但不能替代你自己看 diff 和跑测试。
审阅流程
- 看改动范围:在会话内用
/diff查看改动(包括 Git 尚未跟踪的新文件),或在终端用git status与git diff --stat,确认没有超出任务范围的文件。 - 逐个看 diff:
git diff检查逻辑,重点看错误处理、边界条件和删除的代码。 - 跑测试和检查:自己执行一遍测试和 lint,不只看 Codex 的汇报。
- 请它自审:用
/review让 Codex 审查工作区改动;官方说明审查可以针对未提交改动、某个提交或相对基准分支进行,审查过程不会修改你的工作区。 - 小步提交:确认无误后提交,提交信息写清改了什么、为什么改。
bash
git status
git diff --stat
git diff
npm test
git add -A
git commit -m "fix(auth): return explicit error on login timeout"审阅时重点关注
| 风险 | 表现 | 检查方法 |
|---|---|---|
| 改动越界 | 修改了任务范围外的文件或配置 | git diff --stat 对照任务范围 |
| 测试被弱化 | 删除、跳过或放宽了原有断言 | 在 diff 中搜索 skip、only、被删除的 assert / expect |
| 隐藏的副作用 | 改了公共函数签名、全局配置或依赖版本 | 重点看锁文件、配置文件和导出接口 |
| 安全问题 | 把密钥写进代码、关闭了校验、拼接未转义的输入 | 搜索 key、token、password 等关键字 |
| 看似通过的假修复 | 用特殊判断绕过测试数据 | 阅读实现逻辑,而不是只看测试结果 |
不要直接合并未审阅的改动
即使测试全部通过,也可能存在测试未覆盖的问题。生产代码的合并决定权应始终在人。
改错了怎么办
- 还没提交:
git restore <文件>撤销单个文件,git stash暂存全部改动再对比。 - 已经提交:
git revert <提交>生成反向提交,保留历史。 - 方向整体错了:直接删除任务分支,从主分支重新开始,并把教训写进任务描述或 AGENTS.md。
非交互运行与自动化
codex exec 是 Codex CLI 的非交互命令,适合在脚本或 CI 中执行可重复的任务;它不会停下来等你输入,所以权限设置比交互模式更要从严。
bash
# 示例:在只读沙箱中让 Codex 总结最近改动的风险
codex exec --sandbox read-only "阅读当前分支相对 main 的改动,列出可能的风险点,不要修改文件"
# 恢复上一次的非交互会话,继续追加指令
codex exec resume --last "针对你发现的第一个风险,给出修复建议"交互会话同样可以恢复:codex resume 会列出最近的会话供你选择。
在 CI 中使用的注意事项
- 默认只读:大多数 CI 场景(审查、生成报告)不需要写权限。
- 凭据用密钥管理:通过 CI 平台的加密变量注入 API Key,不要写在流水线文件里。
- 限制触发来源:不要让来自外部贡献者的 PR 内容直接驱动有写权限或带凭据的任务,防止提示注入(prompt injection,指在代码或文档中埋入诱导代理执行恶意操作的文字)。
- 结果必须人工确认:CI 中生成的改动应以 PR 形式提交,由人审阅后合并。
团队协作、交接与过程记录
在团队中使用 Codex,关键是让「代理做了什么、为什么这样做」可追溯:改动走正常的分支和 PR 流程,经验沉淀到 AGENTS.md,而不是只留在某个人的会话记录里。
推荐的团队约定
| 约定 | 做法 | 目的 |
|---|---|---|
| 分支命名 | 用统一前缀,如 codex/ 开头 | 一眼看出哪些分支由代理参与 |
| 提交粒度 | 一个提交只做一件事,提交信息写原因 | 便于审阅和回滚 |
| PR 描述 | 写明任务描述、验收标准和运行过的验证命令 | 审阅者能按同一标准检查 |
| 人工审阅 | 代理参与的 PR 至少由一位同事审阅 | 避免「作者和审阅者都是 AI」 |
| 共享说明 | AGENTS.md 提交到仓库并通过 PR 修改 | 所有人和所有会话使用同一套规则 |
| 个人偏好 | 写在 ~/.codex/AGENTS.md,不放进仓库 | 不把个人习惯强加给团队 |
任务交接小结
一个任务告一段落、但还没有全部完成时,让 Codex 输出一份交接小结,并保存到 issue 或 PR 描述中:
text
请用以下格式总结本次工作,不要修改文件:
1. 已完成:改了哪些文件,每处改动的目的;
2. 已验证:运行了哪些命令,结果如何;
3. 未完成:还剩哪些步骤;
4. 已知问题与风险:需要人工确认的地方;
5. 下一步建议:如果明天继续,应该从哪里开始。第二天继续时,可以用 codex resume 回到原会话;如果原会话上下文已经很长,更好的做法是开新会话,把这份小结作为第一条消息贴进去,让它在干净的上下文中继续工作。
自己验证的顺序
Codex 装好却用不了时,按下面的顺序逐步排除,每一步确认没问题再进入下一步:
- 确认资格:打开下文「官方资格入口」中的 OpenAI 支持地区页面,确认你所在的国家或地区在名单内;用 API Key 登录时同时看 API 名单。
- 确认安装:运行
codex --version,能输出版本号说明命令可用。 - 确认登录:运行
codex login status,确认登录方式(ChatGPT 账号或 API Key)符合预期。 - 确认网络与证书:在启动 Codex 的同一个终端里检查代理环境变量;公司网络有 TLS 解密代理时,先配置
CODEX_CA_CERTIFICATE再重新登录。 - 确认会话配置:在会话中运行
/status,看模型、沙箱和审批策略是否符合预期;命令无法联网时,先确认沙箱是否默认关闭了网络。 - 从小任务到大任务:先让它只读地总结项目结构,再执行一个改动小、能用测试验证的任务。
怎样记录一次有效测试
每次只改一个变量,并写下:时间(含时区)、使用的入口或命令、网络环境(家庭宽带 / 手机网络 / 公司网络)、做了什么操作、结果与报错原文。连续几次记录都指向同一环节,再去对应章节处理或向官方支持反馈,比凭印象判断可靠得多。
常见故障排查
Codex 的大多数问题集中在安装路径、登录凭据、网络证书、沙箱权限和项目说明五类,先判断属于哪一类再对症处理。
症状、原因与处理对照表
| 现象 | 可能原因 | 处理思路 |
|---|---|---|
找不到 codex 命令 | 安装目录不在 PATH 中 | 重新打开终端;用 which codex / where codex 检查;按安装方式的说明修复 PATH |
| 升级后版本没变 | 多种安装方式并存 | 确认实际调用的路径,卸载多余的那一份 |
| 登录后仍提示未授权 | 凭据过期或登录方式不符 | codex login status 查看,必要时 codex logout 后重新登录 |
| 登录时报证书 / TLS 错误 | 企业 TLS 解密代理,根证书未被信任 | 设置 CODEX_CA_CERTIFICATE 或 SSL_CERT_FILE 后重新登录 |
| 服务器上无法打开浏览器登录 | 无图形环境 | 使用 codex login --device-auth |
| 连接超时或频繁中断 | 网络不稳定或代理未生效 | 确认代理环境变量设置在启动 Codex 的同一终端;参考 速度慢与断流 |
| 它运行的安装依赖命令失败 | 沙箱默认禁止命令联网 | 批准该次联网,或为项目开启 network_access |
| 提示无法写入某些文件 | 文件在工作目录外或属于受保护路径 | 确认启动目录;.git、.codex 等本就只读 |
| 不遵守项目约定 | AGENTS.md 缺失、被覆盖或被截断 | 用前文的核对命令检查实际读到的说明 |
| 改动过多、偏离目标 | 任务缺少范围与验收 | 用上文模板重写任务描述 |
| 回复变慢、遗忘前文 | 上下文过长 | /compact 压缩,或 /new 开新对话并附上小结 |
| 用量很快用完 | 任务过大、上下文过多 | 拆小任务;用 /status、/usage 查看用量,规则以官方说明为准 |
| 配置似乎没生效 | 多层配置覆盖,或项目未受信任 | /debug-config 查看配置层;项目级配置只在受信任项目中加载 |
通用排查步骤
- 记录完整报错原文,不要只记「失败了」。
- 运行
codex --version与codex login status,排除安装和登录问题。 - 在会话中运行
/status,确认模型、沙箱、审批策略是否符合预期。 - 换一个最简单的任务(如「列出仓库根目录的文件」)测试,判断是环境问题还是任务问题。
- 网络相关问题,先在同一终端用其他命令确认能访问外网,再检查证书和代理变量。
- 仍无法解决时,用
/feedback向官方反馈日志,或到 openai/codex 仓库检索 issue。
适合与不太适合的工作
Codex 最适合目标清楚、能用测试验证的工程任务;需求模糊、风险高或需要接触生产环境的工作,应由人主导、代理辅助。
| 适合 | 需要谨慎 |
|---|---|
| 根据报错定位并修复 bug | 涉及资金、权限、安全的核心逻辑 |
| 为已有代码补充测试 | 没有测试覆盖的大规模重构 |
| 按明确规范做批量修改 | 需求本身尚未想清楚的新功能 |
| 阅读陌生代码库、写说明文档 | 需要访问生产环境或真实用户数据的操作 |
| 代码审查前的自查 | 处理受保密协议约束、不允许外传的代码 |
数据与合规提醒
使用 Codex 时,你的代码片段和命令输出会发送到 OpenAI 服务进行处理。处理公司代码前,请确认符合所在单位的数据政策;数据使用规则以 OpenAI 官方隐私政策和企业协议为准。
官方资格入口
Codex 需要 ChatGPT 账号或 OpenAI API 账号,服务只在 OpenAI 支持的国家和地区提供。下面只列官方页面:
| 产品 | 官方页面 | 说明 |
|---|---|---|
| ChatGPT(网页版与应用) | OpenAI 帮助中心:ChatGPT 支持的国家和地区 | ChatGPT 与 Codex 的地区要求以此为准 |
| OpenAI API | OpenAI 开发者文档:API 支持的国家和地区 | 与 ChatGPT 名单分开列出,两份不一定相同 |
以官方页面为准
名单会随时调整,本站只提供官方页面的入口,不代为判断某个账号能否使用,请以官方页面当前内容为准,并遵守所在地法律法规与各服务的使用条款。
依据与来源
| 信息 | 来源 | 核验时间 |
|---|---|---|
| 安装命令(脚本、npm、Homebrew、Windows PowerShell)、开源许可证、IDE 扩展与桌面应用 | GitHub openai/codex 仓库 README(github.com/openai/codex);Codex CLI 文档 learn.chatgpt.com/docs/codex/cli.md | 2026-10-07 |
斜杠命令(/init、/permissions、/review、/diff、/status、/compact、/new、/plan、/debug-config 等) | Codex 命令文档 learn.chatgpt.com/docs/developer-commands.md?surface=cli | 2026-10-07 |
codex login、--with-api-key、--device-auth、凭据存放方式、CODEX_CA_CERTIFICATE、SSL_CERT_FILE、forced_login_method | Codex 身份验证文档 learn.chatgpt.com/docs/auth | 2026-10-07 |
沙箱模式、审批策略、--sandbox、--ask-for-approval、--yolo、受保护路径、网络默认关闭 | Codex 审批与安全文档 learn.chatgpt.com/docs/agent-approvals-security | 2026-10-07 |
| config.toml 位置与配置项 | Codex 配置参考 learn.chatgpt.com/docs/config-file/config-reference | 2026-10-07 |
| AGENTS.md 读取顺序、override 文件、32 KiB 默认上限、核对命令 | Codex AGENTS.md 文档 learn.chatgpt.com/docs/agent-configuration/agents-md | 2026-10-07 |
常见问题
Codex 有哪些使用方式?
OpenAI Codex 提供命令行工具 Codex CLI、编辑器扩展、桌面应用,以及在 chatgpt.com/codex 使用的云端任务。它们面向同一类编程代理工作,适合的场景略有不同。
Codex CLI 怎么登录?
运行 codex 后选择用 ChatGPT 账号登录,或执行 codex login;也可以把 API Key 通过标准输入传给 codex login --with-api-key,此时按 OpenAI API 的用量计费。没有浏览器的服务器可用 codex login --device-auth。
AGENTS.md 是什么?
AGENTS.md 是放在仓库中的说明文件,告诉 Codex 项目结构、构建与测试命令和编码约定。在 Codex CLI 中运行 /init 可以生成初稿,Codex 会从 Git 根目录到当前目录逐级读取。
Codex CLI 是开源的吗?
是。Codex CLI 的源代码托管在 GitHub 的 openai/codex 仓库,采用 Apache-2.0 许可证。
Codex 的沙箱模式有哪几种?
官方提供 read-only、workspace-write 和 danger-full-access 三种沙箱模式。在 Git 仓库中通常建议 workspace-write 搭配 on-request 审批,danger-full-access 只应在隔离环境中使用。
为什么 Codex 执行的命令无法联网?
在 workspace-write 沙箱中,命令的网络访问默认关闭。确有需要时可以在 config.toml 的 [sandbox_workspace_write] 中设置 network_access = true,或在需要时通过审批临时放行。
公司网络有 TLS 解密代理,Codex 登录报证书错误怎么办?
官方文档建议在登录前设置 CODEX_CA_CERTIFICATE 指向企业根证书的 PEM 文件,Codex 也会读取 SSL_CERT_FILE 作为后备,然后重新执行 codex login。
AGENTS.md 写了但 Codex 好像没读到怎么办?
先确认文件不是空的、启动目录在仓库内,再检查上层目录有没有 AGENTS.override.md 覆盖了它。可以运行 codex --ask-for-approval never 加一句让它总结当前指令的提示来核对。
延伸阅读
- Claude Code 教程:另一款终端编程代理的安装、权限模式与 CLAUDE.md 写法。
- ChatGPT 使用教程:ChatGPT 账号、订阅与产品形态。
- AI API 入门:使用 API Key 时的计费、限流与错误码。
- AI 机场推荐:长时间编程会话对网络稳定性的要求。
- 速度慢与断流:会话频繁中断时的排查方法。
- TLS 与证书问题:登录或请求报证书错误时的排查方向。
- 代理冲突排查:系统代理、终端代理与其他软件互相干扰时的处理。
更新记录
| 日期 | 变更 |
|---|---|
| 2026-10-07 | 首次发布完整内容 |
| 2026-10-07 | 扩写为深度指南 |
| 2026-10-08 | 按搜索结果页结构调整:开头直接回答、增加速查表、「自己验证的顺序」与「官方资格入口」(仅链接官方页面) |
本专题文章
暂无文章,敬请期待。