编程进阶
Codex 完整使用教程
Codex 是 OpenAI 的编程智能体,目前有命令行、IDE 插件、ChatGPT 桌面端与云端环境几种入口;装好 Codex CLI 后在项目目录运行 codex 并用 ChatGPT 账号登录,就可以交付开发任务,由沙箱模式与审批策略决定它能改哪些文件、能执行哪些命令。
当前 Codex 是什么、从哪里进入、怎么装、怎么登录,以及如何在自己的仓库里安全地把开发任务交给它。
开始之前
- 一个 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。
快速步骤
确认要用哪个入口
本地改代码用命令行或 IDE 插件,长任务与并行任务用云端环境,先想清楚再装。
安装 Codex CLI
用官方安装脚本、Homebrew 或 npm 安装,安装后重开终端确认 codex 命令可用。
登录
在项目目录运行 codex,选择用 ChatGPT 账号登录;远程与容器环境改用设备码登录。
准备一个可回退的分支
先切到独立分支并提交一次检查点,让它的改动随时可以丢弃。
先让它读代码
第一条指令用来确认它理解得对,例如让它说明项目结构与关键模块的职责。
设定沙箱与审批策略
明确它可以改哪些范围、什么时候必须问你,再交付任务。
交付一个有边界的任务
给出目标、涉及范围与验收标准,并要求它跑项目自己的测试或构建命令。
审阅并沉淀
逐个文件看 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 | 去掉文件系统与网络边界 |
审批策略决定它什么时候停下来问你,官方提供 untrusted、on-request、on-failure、never 几档:从「不受信任的命令都要问」,到「只有越过沙箱边界时才问」,再到「完全不问」。
底层实现按平台不同:macOS 用系统自带的 Seatbelt,Linux 与 WSL2 用 bubblewrap(需要先装),Windows 上原生走 PowerShell 沙箱、在 WSL2 下则用 Linux 沙箱。默认情况下沙箱内的命令只能访问受管允许列表上的主机,不是随便联网。
命令行上有 --sandbox、--full-auto 等开关可以临时调整,完整列表以 codex --help 为准。
一条实践建议: 不要用「跳过全部审批与沙箱」的选项去换省事。真的需要完全放开时,把它放进容器或虚拟机里,而不是直接在自己的开发机上跑。
Git、测试与代码审查
改动本身可以直接用自然语言驱动:
我改了哪些文件?把改动提交,说明修复了移动端导航溢出
但更重要的是两件事:动手前建分支,以及让它跑项目自己的验证命令。让它执行 npm test 或 npm 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,而不是跳过验证。
连不上怎么办
登录一直失败、请求超时、输出卡住,先按这个顺序看:
- 官方服务状态。 打开 status.openai.com,页面上单独列了 Codex 的组件。
- 账号与方案。 用
/status确认当前登录身份与生效的配置。 - 网络。 确认到
chatgpt.com的 HTTPS 与 WebSocket 都放行;企业网络还要确认 TLS 拦截没有破坏 WebSocket 握手。 - 代理与证书。 走公司代理时按官方文档配置可信 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 账号。具体对比见本文末尾的链接。