Codex CLI 新手教程

Codex CLI 新手教程

OpenAI 出品的终端编码 Agent:你用一句话描述任务,它在沙箱里读代码、跑命令、改文件,最后把 diff 交给你确认。

Rust 单二进制 Apache-2.0 v0.153.0 macOS / Linux / WSL2 GitHub 仓库
v0.153.0
2026-09-03 实测版本
27
个子命令
3
种沙箱模式
4GB
最低内存(8GB 推荐)
Apache-2.0
开源许可

1 这是什么

Codex CLI 是 openai/codex 开源的一个终端编码 Agent,官方一句话定义是 "Lightweight coding agent that runs in your terminal"。它不是补全插件,也不是聊天框——它会在你的项目目录里真正地执行命令、改文件、跑测试,然后把改动以 diff 的形式摊给你看。

三个容易混淆的入口,先分清:

形态在哪跑适合
Codex CLI(本教程)你的本机终端本地调试、快速迭代、接 CI
Codex IDE 扩展VS Code / Cursor / Windsurf想在编辑器里用
Codex Webchatgpt.com/codex 云端长任务、并行跑、自动开 PR
它不做什么
  • 不做行内补全——它不接管你的光标,Copilot 干的那活它不干。
  • 不在云端代跑——CLI 全程在你本机的沙箱里执行,代码不出机器(除非你自己接 MCP 或 Cloud)。
  • 不擅自扩大权限——能写哪些目录、要不要问你,是两个必须显式指定的开关,见第 11 节。
  • 不是聊天机器人——没有"帮我写首诗"这类场景,它是围绕代码仓库工作的。

2 为什么需要它

在它之前,"让 AI 帮我改代码"基本靠三种凑合办法,每种都卡在同一个地方:

老办法能走到哪一步卡在哪
IDE 里逐行补全把函数体写出来写完了没人跑测试,也改不动跨文件的调用链
把报错粘进网页聊天框拿到一段建议代码上下文靠手搬,命令还是你自己敲,改完还得自己验证
写一次性脚本批量替换处理死规则的机械修改遇到意外情况直接崩,且脚本复用一次就废
Codex 的核心洞察是:把「能碰什么」和「什么时候必须问你」拆成两个正交维度。前者叫沙箱模式(3 档),后者叫审批策略。绝大多数"AI 跑命令"类工具把这两件事混成一个开关,结果要么处处弹窗、要么一放到底;Codex 让你分别定,这才敢真的把执行权交出去。

第二个洞察是把约定固化下来:AGENTS.md 让"这个项目怎么构建、怎么测试、哪些目录别碰"变成随仓库走的文件,Agent 每次开工前先读,而不是每一轮对话都重新猜一遍你的习惯。

3 核心流程

一次典型的 Codex 任务只有三步,中间那步是它替你干的:

1 在项目目录说需求→ 2 它读代码 + 沙箱里跑→ 3 你看 diff 决定收不收
提需求 codex "修掉失败测试" 读仓库 + 跑命令 先读 AGENTS.md,沙箱内执行 产出改动 改了哪些文件 你拍板 diff 最后一步永远在你手上:它给 diff,你决定收不收 提需求 codex "修掉测试" 读仓库 + 跑命令 AGENTS.md + 沙箱 产出改动 改了哪些文件 你拍板 看 diff 收不收 最后一步 永远在人手里

4 安装

四条路,挑一条就行。独立安装脚本最省事,它会从 releases.openai.com 拉预编译二进制,装不上再自动回退到 GitHub Releases。

方式命令适合
独立脚本(推荐)curl -fsSL https://chatgpt.com/codex/install.sh | shmacOS / Linux,不装 Node 也能用
npmnpm install -g @openai/codex已有 Node 环境
Homebrewbrew install --cask codex习惯 brew 管理
手动下载二进制GitHub Releases 页面选对应平台离线环境 / 想锁死版本

Windows 只有一条路:Windows 11 + WSL2,在 WSL 里按 Linux 装。原生 Windows 不在支持列表里(有独立的 Windows 沙箱文档页,但 CLI 主路径是 WSL2)。PowerShell 安装脚本为 Windows 场景提供:

powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
最容易踩的一个坑:npm 包名必须带 scope,是 @openai/codex。如果你敲了 npm i -g codex,命令会"成功",但装到的是另一个同名无关项目,接下来十分钟你会在一个错误的工具里找 bug。装错了先 npm uninstall -g codex 再装正确的。

想强制走 GitHub Releases(比如公司网络拦了 releases.openai.com):

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

从 GitHub Release 手动下载时,挑你平台那一个,解压后重命名成 codex:

平台文件名
macOS(Apple Silicon)codex-aarch64-apple-darwin.tar.gz
macOS(Intel)codex-x86_64-apple-darwin.tar.gz
Linux x86_64codex-x86_64-unknown-linux-musl.tar.gz
Linux arm64codex-aarch64-unknown-linux-musl.tar.gz

更新和装是同一条命令:再跑一次安装脚本,或 codex update。

5 环境自检

装完先跑这三条,全绿再往下走:

codex --version          # 我本地实测输出:codex-cli 0.153.0
codex login status       # 看当前登录状态
codex doctor             # 一次性诊断安装、配置、鉴权、运行时健康度
依赖要求说明
操作系统macOS 12+ / Ubuntu 20.04+ / Debian 10+ / Windows 11 via WSL2官方明确要求,Windows 原生不支持
Git2.23+(可选但推荐)内置 PR 相关能力依赖它;不装也能跑,加 --skip-git-repo-check
内存4GB 最低,8GB 推荐Agent 会把仓库结构和命令输出塞进上下文
登录二选一
  • ChatGPT 账号(推荐):跑 codex 后选 Sign in with ChatGPT,Plus / Pro / Business / Edu / Enterprise 套餐都包含额度。
  • API key:走 printenv OPENAI_API_KEY | codex login --with-api-key;已有访问令牌则用 printenv CODEX_ACCESS_TOKEN | codex login --with-access-token。API key 方式需要额外配置,按量计费。

6 第一次实战

别拿真实项目开刀。先建一个能删的沙盒仓库,五分钟跑通全流程。

# 1 建一个临时项目并进 git(Codex 默认要求在 git 仓库里跑)
mkdir -p ~/demo/hello-codex && cd ~/demo/hello-codex
git init

# 2 放一个有问题的文件
printf 'def add(a, b):\n    return a - b\n' > calc.py

# 3 启动交互式会话(首次会让你登录)
codex

进到 TUI 之后按顺序做:

1 /init 生成 AGENTS.md→ 2 用大白话下任务→ 3 看它跑的命令→ 4 收下或推翻 diff
/init                            # 让它扫一遍仓库,生成 AGENTS.md
"calc.py 里的 add 函数算错了,改对并补一个 pytest 测试,然后跑测试给我看"
/permissions                     # 想改权限边界时开这个面板
/status                          # 看当前会话的模型、目录、配置
?                                # 忘了快捷键就按问号
它会先读 AGENTS.md,再决定怎么跑测试。所以先把构建/测试命令写进 AGENTS.md,比在对话里反复强调有用得多——下一次会话它照样记得。

想让它改别处的文件(比如 monorepo 里的兄弟目录),启动时加 --add-dir;想在非 git 目录里跑,加 --skip-git-repo-check。

codex --add-dir ../shared-types
codex -C ~/other/project "看看这里的构建为什么挂了"   # -C 指定工作根目录

7 产物结构

Codex 会在你机器上留下这几类文件。搞清楚它们在哪,出问题时才知道该删哪个、该改哪个。

路径用途
~/.codex/config.toml主配置文件。命令行用 -c key=value 可临时覆盖任意一项
~/.codex/AGENTS.md全局指令:跨项目生效,适合写个人偏好(回答风格、详细程度)
~/.codex/<name>.config.tomlprofile 配置,用 codex -p <name> 叠在主配置之上
~/.agents/skills/<skill>/SKILL.md全局技能,所有仓库都能用
<repo>/AGENTS.md仓库指令,签进版本控制给团队用;子目录里还能再放,离工作目录越近优先级越高
<repo>/.agents/skills/团队共享技能,随仓库分发
本地会话记录由 resume / fork / archive / delete 管理,加 --ephemeral 可不落盘
配置优先级一次说清:命令行 -c > profile 文件 > ~/.codex/config.toml;而 AGENTS.md 反过来——离当前工作目录越近的越优先(子目录 > 仓库根 > 全局)。前者是"这次怎么跑",后者是"这个项目什么规矩"。

SKILL.md 的样子(front matter 里的 description 决定它什么时候被自动挑中,写清楚很重要):

---
name: commit
description: Stage and commit changes in semantic groups. Use when the user wants
  to commit, organize commits, or clean up a branch before pushing.
---

1. Do not run `git add .`. Stage files in logical groups by purpose.
2. Group into separate commits: feat → test → docs → refactor → chore.
3. Write concise commit messages that match the change scope.
4. Keep each commit focused and reviewable.

8 日常怎么用

TUI 里的斜杠命令是最常用的五个:

命令作用
/init扫一遍仓库,生成 AGENTS.md 骨架
/status看当前会话的配置、模型、工作目录
/permissions调整这次运行的边界:什么时候能直接改文件/跑命令
/model换模型和推理强度(reasoning effort)
/review审查改动并找问题(对比基线分支 / 未提交改动 / 某个 commit)

终端外更常用的是这些子命令:

命令干嘛的
codex进交互式 TUI;后面直接跟提示词也能开跑
codex exec(别名 e)非交互跑一次就退出,脚本 / CI 用
codex review非交互代码审查,支持 --base / --uncommitted / --commit
codex resume --last接着上次会话继续;codex fork 则从某轮分叉重开
codex apply(别名 a)把最近一次产出的 diff git apply 到工作区
codex mcp管理 MCP 外部服务器:list / get / add / remove / login
codex plugin插件市场:add / list / marketplace / remove
codex doctor / codex update自检 / 升级
codex features list看当前版本所有 feature 开关(stable / under development / removed)
会发生
  • ✅ 它会先读 AGENTS.md,再动手。
  • ✅ 它执行的每条命令、每处改动都会显示在 transcript 里,可回看。
  • ✅ 越界的动作(比如访问沙箱外的网络)会停下来问你。
  • ❌ 它不会自己 push 到远端、不会自己合并分支——除非你明确让它做并批准。
  • ❌ 它不会"记住"上一次会话,除非你用 resume 或把结论写进 AGENTS.md。

9 进阶玩法

9.1 非交互执行:codex exec

交互式 TUI 适合探索,流水线里要用 exec:一次调用、跑完就退、输出可被程序消费。

# 只读沙箱里审一段 diff,输出 JSONL 给后续脚本处理
codex exec --sandbox read-only --json "总结这个 diff 的风险点"

# 把最后一条消息写到文件,方便贴到 PR 评论里
codex exec -o /tmp/review.md "审查未提交的改动"

# 从 stdin 喂提示词;配合 --cd 指定仓库
git diff | codex exec --cd ~/code/my-app - "解释这次改动会影响哪些调用方"

# 结构化输出:给它一个 JSON Schema,让它按格式答
codex exec --output-schema ./schema.json "列出所有公开函数及其参数"

CI 里常用的几个附加参数:--json(JSONL 事件流)、-o(最后消息落盘)、--ephemeral(不落会话文件)、--skip-git-repo-check(非 git 目录也能跑)、--strict-config(config.toml 有它不认识的字段就报错,防拼写错误)。

exec 默认日志级别是 RUST_LOG=error 且直接打在终端里;TUI 想看明文日志要显式开:

codex -c log_dir=./.codex-log
tail -F ./.codex-log/codex-tui.log

9.2 代码审查:codex review

codex review --uncommitted          # 审 staged / unstaged / untracked 改动
codex review --base main            # 对比基线分支(PR 风格)
codex review --commit abc1234       # 审某个 commit 引入的改动

9.3 会话管理:resume / fork / archive

codex resume --last                       # 接着最近一次会话
codex resume --all                        # 列出所有会话(不限当前目录)
codex fork --last                         # 从最近一次分叉出一条新分支重来
codex resume --include-non-interactive    # 把 exec 跑过的也算进来
codex archive <会话名或 id>                # 归档;delete 是彻底删除

9.4 接外部系统:MCP

MCP(Model Context Protocol)是 Codex 连外部工具的标准方式:Codex 是 host,内部连接是 client,外部系统(Figma、Linear、GitHub、内部知识库)是 server。server 可以暴露 tools(动作)、resources(数据)、prompts(模板)。

codex mcp list                       # 看已配置的服务器
codex mcp add --url https://example.com/mcp
codex mcp get <name>
codex mcp remove <name>
MCP 服务器的配置在 ~/.codex/config.toml,CLI、IDE 扩展、桌面端共用一份。第三方 MCP 不是可信执行环境——接之前先确认来源、权限范围和认证方式。

9.5 把重复流程变成技能:Skills

一个技能 = 一个 SKILL.md,可带 scripts/、references/、assets/。Codex 用渐进披露加载:先只拿 name + description 做发现,选中了才读 SKILL.md,真正需要时才读 references 或跑 scripts——所以技能再多也不会一上来撑爆上下文。

放全局(~/.agents/skills)还是仓库(.agents/skills),取决于这个流程是"你个人的习惯"还是"团队的规矩"。技能是编写格式,plugin 是分发单元:要跨团队发就把技能打包成 plugin。

9.6 其余好用的开关

参数作用
-m, --model指定模型
-p, --profile <name>叠一层 $CODEX_HOME/<name>.config.toml,按场景切配置
-i, --image <file>把报错截图、架构图、设计稿塞进首条提示
--search开实时联网搜索(搜索行为会记进 transcript)
--oss / --local-provider接本地开源模型(lmstudio 或 ollama)
--enable / --disable开关 feature flag,等价于 -c features.<name>=true
-c <key=value>临时覆盖任意配置项,值按 TOML 解析
codex -c model="o3" -c 'sandbox_permissions=["disk-full-read-access"]'
codex -c shell_environment_policy.inherit=all
codex --enable hooks

10 不止于此

名字叫 CLI,但它能待的地方不止终端:

CI 里的自动审查

codex review --base main --json 挂到流水线,失败项直接贴回 PR,人只管看结论。

批量机械改动

配合 exec 循环多个目录:改类名、迁 API、补 JSDoc,一次一目录,逐个看 diff。

交给云端跑

codex cloud 浏览云端任务、提交工作、把结果拉回本地仓库,长任务不用守着终端。

桌面端 / IDE

codex app 启动桌面端;VS Code、Cursor、Windsurf 有 IDE 扩展,共享同一份 MCP 配置。

反过来当工具

codex mcp-server 把 Codex 自己变成 stdio MCP server,让别的 Agent 来调它。

子 Agent 分工

subagents 把嘈杂或专业化的活(跑测试、捞生产日志)分给专职子 Agent,主会话只收结论。

11 沙箱与审批:先把边界定好

这是用 Codex 之前最该花两分钟搞懂的一节。两个维度各自独立:

能碰什么(-s, --sandbox)

取值能干什么什么时候用
read-only只读,写不了任何东西审查、分析、还不信任这条提示词时
workspace-write能在项目目录内改文件、跑命令日常主力档位
danger-full-access不设限只用于本身已被隔离的环境(容器、CI runner),别在自己笔记本上开

什么时候问你(-a, --ask-for-approval)

取值行为
on-request由模型判断什么时候该请示你
never从不问;被拒的操作直接作为执行失败回传给模型,而不是弹窗打断

还有两个明确标着危险的开关,看名字就该知道用途:

  • --approve-for-me:把审批请求转交给自动审查,配合 workspace-write 沙箱使用。
  • --dangerously-bypass-approvals-and-sandbox:跳过一切确认且不沙箱化。文档原话是 EXTREMELY DANGEROUS,只该用在已经外部沙箱化的环境里。
# 日常推荐组合:项目内放开写,越界才问我
codex -s workspace-write -a on-request

# CI 里的审查任务:只读 + 不打断
codex exec --sandbox read-only -a never "审查这个 diff"
一句话结论:先用 read-only 把提示词跑顺,再放到 workspace-write;danger-full-access 和 bypass 类开关永远只出现在容器里。单机开发机上最稳的默认就是「项目内自由、越界请示」。

12 FAQ / 踩坑

装完 codex 跑起来像个陌生工具,命令对不上
你装的是 npm 上无 scope 的同名包。先 npm uninstall -g codex,再 npm install -g @openai/codex。验证:codex --version 应该输出 codex-cli x.y.z。
提示"不在 git 仓库里",拒绝启动
两种情况:本来就该是 git 仓库 → 先 git init(顺带获得 git 提供的回滚能力);确实不想用 git → 加 --skip-git-repo-check。但请想清楚:没有 git,你就少了一层"一键撤销 Agent 改动"的保险。
安装脚本卡住 / 下载极慢
默认从 releases.openai.com 拉,超时会自动回退 GitHub Releases。想直接走 GitHub,设环境变量 CODEX_INSTALLER_USE_RELEASES_OPENAI_COM=false(0 和 no 也认)。还可以直接从 GitHub Releases 页面手动下二进制。
它改乱了我的文件,怎么回退
这就是必须在 git 仓库里跑的原因:git diff 看改动,git checkout -- . 全量撤销。更稳妥的做法是动手前先建分支;不想留下会话痕迹时用 codex exec --ephemeral。
关掉终端后,上次的上下文还能接着用吗
能。codex resume --last 接着最近一次;codex resume 进选择器,--all 看全部;想从某一轮重开用 codex fork --last。但要注意:会话记忆不等于长期记忆,希望它每次都遵守的规矩应该写进 AGENTS.md。
怎么知道它到底执行了什么
交互式 TUI 里 transcript 会逐条列出。想留明文日志:codex -c log_dir=./.codex-log,然后 tail -F ./.codex-log/codex-tui.log。非交互场景加 --json 拿到 JSONL 事件流,便于存档和排查。
改了 config.toml 没生效,或者怀疑写错了字段名
加 --strict-config(exec 子命令支持):遇到当前版本不认识的字段直接报错,专治拼写错误。排查顺序:codex doctor → codex --version → codex -c <key>=<value> 临时覆盖验证。不同版本配置项会变,别照搬旧教程的示例。
Windows 原生终端能用吗
官方系统要求里 Windows 一项写的是 Windows 11 via WSL2:在 WSL 里按 Linux 流程装。PowerShell 安装脚本 (install.ps1) 面向 Windows 场景,但主支持路径仍是 WSL2。
它老是弹审批,很烦
先确认是不是真的越界了:项目内的操作在 workspace-write 下不该反复问。如果只是想让它自己判断,用 -a on-request;要走自动审查用 --approve-for-me。--dangerously-bypass-approvals-and-sandbox 能彻底静音,但那个开关挂在你自己机器的全部文件上——除非你在容器里,否则别碰。
想让它遵守团队规范,每次都要重复说一遍吗
不用,写 AGENTS.md:构建和测试命令、评审要求、仓库约定、哪些目录别碰。放仓库根给团队,子目录里可以放更具体的(离工作目录越近优先级越高)。维护心法:它反复犯同一个错就加一条规则;同一个 PR 反馈出现第二次就固化下来;在 GitHub PR 评论里 @codex 可以委派它自己去更新 AGENTS.md。

13 开源与贡献政策

许可证是 Apache-2.0,商用没问题。但有一条和其他开源项目很不一样,值得提前知道:

仓库不接受外部代码贡献和 Pull Request。发现 bug 或想提功能,走 issue tracker;安全漏洞走安全策略渠道。所以别花半天写个 PR 然后等它被拒——先开 issue 描述清楚。

想自己改代码自己用,可以从源码构建(Rust 工具链):

git clone https://github.com/openai/codex.git
cd codex/codex-rs
cargo build
cargo run --bin codex -- "explain this codebase to me"

完整构建流程(rustfmt、clippy、just、dotslash、nextest 等)见仓库 docs/install.md。仓库还提供 DotSlash 文件,可以在源码控制里锁定所有人用同一个版本的二进制。

14 参考链接

资源地址
GitHub 仓库github.com/openai/codex
官方 Codex 文档developers.openai.com/codex
CLI 概览developers.openai.com/codex/cli
安装与源码构建docs/install.md
定制层(AGENTS.md / Skills / MCP)Codex customization
IDE 扩展developers.openai.com/codex/ide
Codex Web(云端)chatgpt.com/codex
套餐包含哪些额度Codex in ChatGPT 说明
本教程基于 codex-cli 0.153.0(2026-09-03 本机 npx @openai/codex@latest --version 实测)、仓库 README 与 docs/install.md、以及官方 Codex 文档整理。Codex 迭代很快,命令与配置项请以 codex --help 和官方 Config Reference 为准。
Codex CLI 新手教程 · 终端里的编码 Agent,从安装到沙箱边界
GitHub 仓库 · 官方文档 · Apache-2.0 开源