编程进阶

Codex 完整使用教程

Codex 是 OpenAI 的编程智能体,目前有命令行、IDE 插件、ChatGPT 桌面端与云端环境几种入口;装好 Codex CLI 后在项目目录运行 codex 并用 ChatGPT 账号登录,就可以交付开发任务,由沙箱模式与审批策略决定它能改哪些文件、能执行哪些命令。

当前 Codex 是什么、从哪里进入、怎么装、怎么登录,以及如何在自己的仓库里安全地把开发任务交给它。

AI机场约 5 分钟更新于

开始之前

  • 一个 ChatGPT 账号(Plus、Pro、Business、Edu 或 Enterprise 方案),或可计费的 OpenAI API Key
  • 一个用 Git 管理的项目,最好是干净的工作区
  • 基本的终端操作能力

环境要求

系统平台
macOS、Linux、Windows(沙箱能力在 WSL2 下更完整)
软件环境
终端;npm 安装方式需要 Node.js 环境、Linux 与 WSL2 上的沙箱依赖 bubblewrap
账号
ChatGPT 付费方案账号,或 OpenAI API Key
网络
需放行到 chatgpt.com 的 HTTPS 与 WebSocket(TCP 443)流量
说明
云端任务还需要把 GitHub 或 GitLab 仓库授权给 Codex;企业网络若做 TLS 拦截,需要配置可信 CA。

快速步骤

  1. 确认要用哪个入口

    本地改代码用命令行或 IDE 插件,长任务与并行任务用云端环境,先想清楚再装。

  2. 安装 Codex CLI

    用官方安装脚本、Homebrew 或 npm 安装,安装后重开终端确认 codex 命令可用。

  3. 登录

    在项目目录运行 codex,选择用 ChatGPT 账号登录;远程与容器环境改用设备码登录。

  4. 准备一个可回退的分支

    先切到独立分支并提交一次检查点,让它的改动随时可以丢弃。

  5. 先让它读代码

    第一条指令用来确认它理解得对,例如让它说明项目结构与关键模块的职责。

  6. 设定沙箱与审批策略

    明确它可以改哪些范围、什么时候必须问你,再交付任务。

  7. 交付一个有边界的任务

    给出目标、涉及范围与验收标准,并要求它跑项目自己的测试或构建命令。

  8. 审阅并沉淀

    逐个文件看 diff,用 /review 复查,再把这次的项目约定写进 AGENTS.md。

讲清 Codex 当前的产品形态与入口,并给出命令行安装、ChatGPT 账号登录、在真实仓库里交付开发任务的完整流程,包括沙箱与审批策略、AGENTS.md 与配置文件的用法。

Codex 现在指的是什么

先把名字理清楚,否则搜到的教程会互相矛盾。今天的 Codex 是 OpenAI 的编程智能体产品线,不是早年那个同名的代码补全模型。它读取整个仓库、编辑文件、执行命令、跑测试,交付的是一段完成的工作,而不是几行补全建议。

它的官方文档目前挂在 ChatGPT 的文档站点下,这也说明了它的定位:Codex 是 ChatGPT 账号体系里的一种工作模式,而不是一个独立售卖的开发工具。

当前有哪些入口

入口位置适合
Codex CLI本地终端在自己的工作区里直接改代码,功能最完整
IDE 插件VS Code 及兼容编辑器(Cursor、Windsurf),以及 JetBrains、Xcode对照代码看 diff、局部采纳修改
ChatGPT 桌面端macOS、Windows、Linux 应用内切换到 Codex不想用终端时的图形入口
网页端与云端环境浏览器长任务、并行任务,在隔离环境里跑
GitHub 集成Pull Request代码审查与从 PR 直接派活

几个入口共用同一个账号与任务记录,可以在终端起个头,再把耗时的部分丢到云端继续。

开始之前

账号。 用 ChatGPT 账号登录,官方建议以 Plus、Pro、Business、Edu 或 Enterprise 方案的身份使用。也可以改用 OpenAI API Key 按量计费,但要知道:部分随账号提供的能力在 API Key 模式下不可用。

项目。 一定要在版本控制下工作,最好是干净的工作区。智能体的价值建立在「改错了可以整段丢掉」之上。

网络。 除普通 HTTPS 外,Codex 的模型采样与流式输出走 WebSocket,需要放行到 chatgpt.com 的 WebSocket 升级请求(TCP 443)。企业网络里这一条经常被漏掉,表现是能登录但输出卡住。

安装 Codex CLI

macOS 与 Linux:

curl -fsSL https://chatgpt.com/codex/install.sh | sh

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"

包管理器:

npm install -g @openai/codex
brew install --cask codex

也可以直接从官方仓库的 Release 页面下载对应平台的二进制文件。安装完成后重开终端,确认命令可用:

codex --version

登录

在任意项目目录运行:

codex

首次启动会让你选择登录方式,选 Sign in with ChatGPT,在浏览器里完成授权。

也可以用显式命令:

codex login
codex login status
codex logout

远程开发机、容器或没有图形界面的服务器上,浏览器回调回不来,改用设备码登录:

codex login --device-auth

API Key 的场景则是 codex login --with-api-key

凭据位置。 默认写在用户目录下的 ~/.codex/auth.json,是明文文件,里面有访问令牌,要按密钥对待:不要提交进仓库,不要随镜像分发。配置里可以把凭据存储切到系统钥匙串。

在项目里启动

cd /path/to/your/project
codex

和所有这类工具一样,启动目录决定它的工作范围。在仓库根目录启动。

先让它读,别急着让它改:

说明一下这个项目的结构,以及各目录分别负责什么
移动端导航是在哪几个文件里实现的?

如果它对项目的描述明显跑偏,先解决这个,再谈改代码。

交付一个开发任务

有效的任务描述包含目标、范围和验收标准:

当前 Astro 项目的移动端导航在 430px 以下会溢出容器。
请检查 src/components/layout/ 下的导航组件与相关样式并修复,
不要改动桌面端断点,改完运行 npm run build 确认构建通过。

对比一下无效的写法:「优化一下导航」。后者没有边界,也没有它可以自我判断的完成条件,返回什么都不奇怪。

TUI 里几个常用命令:

  • /init — 生成 AGENTS.md 项目约定文件
  • /status — 查看当前会话的账号、模型与配置
  • /permissions — 调整它能访问什么
  • /model — 切换模型与推理强度
  • /review — 让它复查当前改动

想继续之前的会话用 codex resume;写进脚本或 CI 用 codex exec 以非交互方式执行。

沙箱与审批:它能做什么

这是使用 Codex 最需要搞清楚的一块。两个开关互相独立:

沙箱模式决定它能碰到什么。

模式含义
read-only只读。要改文件或执行命令都得先经过审批
workspace-write默认。可以读、可以在工作区内改、可以跑常规本地命令
danger-full-access去掉文件系统与网络边界

审批策略决定它什么时候停下来问你,官方提供 untrustedon-requeston-failurenever 几档:从「不受信任的命令都要问」,到「只有越过沙箱边界时才问」,再到「完全不问」。

底层实现按平台不同:macOS 用系统自带的 Seatbelt,Linux 与 WSL2 用 bubblewrap(需要先装),Windows 上原生走 PowerShell 沙箱、在 WSL2 下则用 Linux 沙箱。默认情况下沙箱内的命令只能访问受管允许列表上的主机,不是随便联网。

命令行上有 --sandbox--full-auto 等开关可以临时调整,完整列表以 codex --help 为准。

一条实践建议: 不要用「跳过全部审批与沙箱」的选项去换省事。真的需要完全放开时,把它放进容器或虚拟机里,而不是直接在自己的开发机上跑。

Git、测试与代码审查

改动本身可以直接用自然语言驱动:

我改了哪些文件?把改动提交,说明修复了移动端导航溢出

但更重要的是两件事:动手前建分支,以及让它跑项目自己的验证命令。让它执行 npm testnpm run build 并根据真实输出继续修,比看代码「像是对的」可靠得多。

改完之后可以用 /review 让它复查一遍自己的改动。云端与 GitHub 集成还支持从 Pull Request 直接派活,以及对 PR 做审查。

配置:config.toml 与 AGENTS.md

配置文件是 TOML 格式,按这个顺序生效(越靠前优先级越高):命令行参数、项目里的 .codex/config.toml、用户目录下的 profile 文件、~/.codex/config.toml、系统级 /etc/codex/config.toml,最后才是内置默认值。

常用的键:

approval_policy = "on-request"
sandbox_mode = "workspace-write"
model_reasoning_effort = "high"

AGENTS.md 放在仓库里,写项目约定:构建命令、测试方式、目录职责、什么不能动。运行 /init 生成初稿,再补上代码里看不出来的部分。它和配置文件的分工很清楚——配置文件管工具行为,AGENTS.md 管项目知识。

顺带一提,这个文件名是跨工具通用的:Claude Code 读的是 CLAUDE.md,但可以用一行导入直接复用同一份 AGENTS.md,两个工具不必各写一遍。

云端环境与 IDE

云端要先把 GitHub 或 GitLab 仓库授权给 Codex,并选择它可以访问哪些仓库;然后在环境里配置依赖、工具、环境变量与密钥。任务跑起来后可以看日志,也可以让它在后台跑,完成后审阅摘要与 diff,确认无误再开 Pull Request。

IDE 插件装在 VS Code 及兼容编辑器(Cursor、Windsurf)里,JetBrains 与 Xcode 也有对应集成。它的优势是可以引用当前打开的文件与选中的代码,在编辑器里直接看 diff、按需采纳,也可以把大任务转派到云端。

安全注意事项

  • 改动一律审阅。 当成同事提交的 PR 处理:读一遍、跑测试、有问题打回。
  • auth.json 按密钥对待。 不进版本库,不进镜像,怀疑泄露就重新登录并吊销。
  • 别在有敏感数据的目录里启动。 它读到的内容会随请求发出去。
  • 完全放开权限只在隔离环境里做。 不要为了少按几次确认,在自己的开发机上关掉沙箱。
  • 不要因为报证书错误就关闭 TLS 校验。 企业网络做 TLS 拦截时,正确做法是配置可信 CA,而不是跳过验证。

连不上怎么办

登录一直失败、请求超时、输出卡住,先按这个顺序看:

  1. 官方服务状态。 打开 status.openai.com,页面上单独列了 Codex 的组件。
  2. 账号与方案。/status 确认当前登录身份与生效的配置。
  3. 网络。 确认到 chatgpt.com 的 HTTPS 与 WebSocket 都放行;企业网络还要确认 TLS 拦截没有破坏 WebSocket 握手。
  4. 代理与证书。 走公司代理时按官方文档配置可信 CA,不要关闭校验。

如果同一台机器上 ChatGPT 网页端也打不开,那说明问题在更靠前的一层,见 ChatGPT 无法使用与连接失败排查

和 Claude Code 怎么选

两者定位高度重合,差别在账号体系、云端能力和默认的权限模型。横向对比见 Claude Code vs Codex vs Cursor;想按同样的深度把 Claude Code 走一遍,见 Claude Code 完整使用教程

要把模型接进自己的应用而不是用现成的智能体,那是另一条路,见 OpenAI API 快速上手

参考资料

常见故障与解决方法

安装完成后终端提示找不到 codex 命令

可能原因安装目录没有进入 PATH,或终端仍在用安装前的环境变量。

解决方法关闭并重新打开终端;仍不行时确认安装路径已加入 PATH,或换一种安装方式重装。

在 SSH、容器或远程开发机上登录失败

可能原因浏览器开在另一台机器上,本地回调收不到。

解决方法改用设备码登录(codex login --device-auth),在任意一台能上网的设备上完成授权。

它执行命令时报权限或网络错误

可能原因当前沙箱模式限制了写入范围与网络访问。

解决方法确认任务是否真的需要联网或写入工作区之外;需要就调整沙箱模式,不需要就把任务改成在工作区内完成,不要直接关掉全部隔离。

改动范围超出预期

可能原因任务描述没有给出边界,审批策略又设成了不询问。

解决方法在指令里写清楚不能动的目录与文件,把审批策略调回会询问的等级,并始终在独立分支上工作。

输出流到一半卡住或断开

可能原因企业网络拦截了 WebSocket 升级请求,或代理对长连接设了空闲超时。

解决方法请网络管理员放行到 chatgpt.com 的 WebSocket 流量(TCP 443),并检查代理的空闲超时与消息大小限制。

常见问题

现在说的 Codex 到底是哪一个产品?

是 OpenAI 的编程智能体产品线,不是早年那个同名的代码补全模型。它现在包含命令行工具、IDE 插件、ChatGPT 桌面端里的 Codex、网页端与云端环境,共用同一个账号与任务记录。

需要单独订阅吗?

用 ChatGPT 账号登录即可,官方建议以 Plus、Pro、Business、Edu 或 Enterprise 方案的身份使用;也可以改用 OpenAI API Key 按用量计费,但部分随账号提供的能力在 API Key 模式下不可用。

命令行和 IDE 插件、云端有什么区别?

命令行在本地终端里直接改你的工作区;IDE 插件把同样的能力放进编辑器,方便对照 diff 改;云端环境在隔离容器里跑任务,适合耗时长或需要并行的工作,结果以 diff 和 Pull Request 回到仓库。

它会不会不问我就改文件、跑命令?

由沙箱模式和审批策略共同决定。默认的 workspace-write 允许它在工作区内读写并执行常规命令,超出边界时按审批策略询问;把审批策略设成不询问就不会再打断你,这只适合在隔离环境里做。

AGENTS.md 是什么?

放在仓库里的项目约定文件,Codex 每次工作时会读取。运行 /init 可以生成一份初稿,然后补上构建命令、测试方式、目录约定这些它自己看不出来的信息。

凭据存在哪里?安全吗?

默认写在用户目录下的 auth.json 里,是明文文件,包含访问令牌,要按密钥对待。也可以在配置里把凭据存储改为系统钥匙串。

可以写进 CI 或脚本吗?

可以,用 codex exec 以非交互方式运行。在无人值守的环境里务必明确沙箱范围与审批策略,不要用「跳过全部审批与沙箱」的选项去换取省事。

和 Claude Code 有什么不同?

两者都是终端里的编程智能体,差别主要在账号与生态:Codex 走 ChatGPT 账号体系并自带云端环境与代码审查集成,Claude Code 走 Claude 订阅或 Console 账号。具体对比见本文末尾的链接。