Codex — OpenAI 的编程智能体
安装 Codex,在项目文件夹里完成第一项任务,再通过四个阶段标签逐步提高。先确认需要准备什么,再复制适合你电脑的安装命令。
基础 — 安装并完成你的第一个任务
第一次接触?从这里开始。了解 Codex 是什么,安装它,再跟着做最初的五个步骤。全部做完后,进入上方的 [进阶] 标签。
它是什么
是 的。它可以在(Codex CLI)、扩展和 应用中工作。用 还可以把工作交给端环境,再把结果应用到自己的电脑上。
项目规则写在 里,这是一种许多编程智能体都会读取的开放格式。Codex 能做什么,由你用 / 来选择。
你需要什么
- 账户:所有 ChatGPT 套餐(Free、Go、Plus、Pro、Business、Edu、Enterprise)都包含 Codex,但能用的地方不同。Free 和 Go 只能在桌面应用中使用(正在逐步开放),本页的 需要 Plus 或更高套餐。也可以用 登录 CLI——按 价格付费,没有云端功能。
- 电脑: 或 (),或 ( 安装脚本)。也可以用 和 安装。
- 一个用来工作的项目文件夹 — 最好是 ,这样每处改动都能查看和撤销。
安装
在 macOS 和 Linux 上运行第一行;在 Windows 上运行 PowerShell 那一行。如果是用安装的,再运行一次同样的即可更新。
- 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
npm install -g @openai/codex- Homebrew
brew install --cask codex
检查安装
打开一个新的终端窗口。codex 应显示号。如果看到“”,请重新打开终端并检查 。
codex --version
第一次运行 — 五个步骤
- 打开终端,用 <文件夹> 进入项目文件夹,然后输入 codex 并按 Enter,选择“Sign in with ChatGPT”。
- 问它“给我介绍一下这个项目”,让它阅读项目。
- 运行 创建 AGENTS.md,然后写上你的和要遵守的规则。
- 用 /permissions 选择 Codex 不用问就能做的事。
- 布置任务时写明文件、行为和检查方法。阅读 ,自己运行测试,然后。
cd my-project
codex
常用功能
- AGENTS.md — 每次会话都会读取的项目指令(用 /init 开始)
- /permissions — 它可以在多大范围内修改文件和运行命令
- "…" — 不打开聊天界面运行,用于脚本和
- codex cloud — 把工作交给云端环境,再把结果应用到本地
- 代码编辑器扩展和 ChatGPT 应用 — 在其他地方使用同一个 Codex
- — 用 ./skills/ 里的 文件夹教它做重复的工作
安全地使用
- 如果它改得比你要求的多,就让它停下。用 <文件> 还原一个文件,只想挑一部分就用 git restore -p <文件>。这会丢掉该文件中所有未暂存的修改——包括你自己的修改——但已暂存的修改和新建的文件(untracked)会保留(GIT 第 4 步)。然后写明准确的文件名再请求一次。
- 即使测试通过也要阅读 diff,只提交你看懂的内容。
- 大任务先让它给出计划,再分成小块交给它。
基础练习 — 从头试一次
- 建一个练习文件夹( hello-ai cd hello-ai),用 git init 把它变成 Git 仓库,然后运行 codex。看到输入框就说明成功了。
- 请它:“做一个显示今天日期的单页网页 。”如果它在创建文件前询问,先读它打算做什么,再允许。
- 用打开生成的 index.html,亲眼确认日期显示出来了。
- 用 git status 看改了什么,再用 git add . 和 git commit -m "first page" 保存。
- 再请它一次:“把日期的字放大。”如果不满意结果,用 git restore index.html 回到上一次提交的状态。
卡住时:codex 启动不了就用 codex --version 检查安装;登录失败就运行 codex login。五项都做完了?进入 [进阶] 标签。
在 SONUB 上深入学习
官方文档
已于 2026-10-19 对照官方文档核实。这些工具变化很快 — 如果命令不起作用,请查看官方文档。
进阶 — 每天的习惯:AGENTS.md、审批和沙箱、命令
已经安装好并完成了第一个任务 — 现在来养成每天都会用到的习惯。写好 AGENTS.md,和 Claude Code 等其他 AI 共享同一份指令,用审批和沙箱决定交出多少权限,再学习聊天命令和好好提问的方法。
模型和推理努力程度 — 该用哪个(推荐:GPT-6.1 Sol,High)
截至2026年11月,开发请用 GPT-6.1 Sol,强度选 High——按下面的方法设置,或用 / 选择。所有模型和强度,以及什么时候调低、什么时候调高,都在工具大师的“推荐用法”里。
model = "gpt-6.1-sol"
model_reasoning_effort = "high"
codex -m gpt-6.1-sol
codex -m gpt-6.1-sol -c model_reasoning_effort=high
codex exec -m gpt-6.1-sol "Review the current changes"
# inside Codex
/model # model → effort (Max · Ultra: More reasoning…)
写好 AGENTS.md
开始工作时会读取 。它先读取你的文件(~/.codex/AGENTS.md),然后从项目顶层(通常是 的顶层)一路走到,每个文件夹找一个文件,按顺序拼接起来。越靠近当前文件夹的文件排在越后面,所以以它为准。
- ~/.codex/AGENTS.md — 适用于所有项目的个人指令
- 项目顶层的 AGENTS.md — 团队共享的指令(它)
- 里的 AGENTS.md — 只在该文件夹里工作时追加的指令
- — 如果它在同一个文件夹里,会代替 AGENTS.md 被读取(用于临时试一下改动)。
- 默认总共只读取 32 (project_doc_max_bytes)。要使用其他名称的文件,把它们列在 project_doc_fallback_filenames 里。
# AGENTS.md
## Setup
- Install: pnpm install
- Test: pnpm test
- Lint: pnpm lint
## Code style
- TypeScript strict mode, single quotes.
- Keep functions small. Add a test for every bug fix.
## Don't
- Don't edit generated files in dist/.
- Don't commit .env files.
~/.codex/AGENTS.md ← you, every project (read first)
my-project/AGENTS.md ← team rules (commit it)
my-project/web/AGENTS.md ← only for web/ (read last, so it wins)
会阅读项目并写出第一版 AGENTS.md。AGENTS.md 每次运行只读取一次,所以编辑后要重启 Codex。
审批和沙箱 — 交出多少权限
Codex 用两种方式保证安全。决定它在技术上能做什么(写文件、),决定它什么时候问你。两者要一起选择。
- — 只读取,什么都不改。用来浏览你不熟悉的项目。
- — 只在工作文件夹内编辑和运行。在 Git 仓库里默认是“Auto”,即把它和 on-request 搭配使用。网络默认关闭,.git、.codex 和 .agents 无法写入。
- — 没有沙箱,什么都能做。只在的里使用。
- 审批策略(-a):on-request 在需要走出沙箱时询问,never 不询问(只在沙箱内工作)。
- /permissions 在对话中切换模式,/status 显示当前设置。
codex --sandbox read-only # look only, change nothing
codex --sandbox workspace-write # edit inside this folder ("Auto" in a Git repo)
codex -a never --sandbox workspace-write # never ask, but stay inside the sandbox
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
network_access = false
旧文章里的 --full-auto 已经不存在了。要达到同样效果,请用 --sandbox workspace-write。--yolo(--dangerously-bypass-approvals-and-sandbox)会同时关闭沙箱和审批,所以只在隔离的地方使用。
聊天界面里的命令
在 Codex 聊天界面输入 /,就会出现命令列表。先学会每天都用的那些。
- /model — 选择模型和思考的深度()。
- /diff — 查看这次会话中改动的文件。/review — 让它审查改动的。
- /compact — 总结对话来腾出空间。/new — 开始新的对话。
- — 选一个更早的对话继续。在终端里用 codex resume 或 codex resume --last。
- /status — 查看模型、、工作文件夹等当前设置。/mcp — 查看已连接的 。
- @ — 查找文件并附加到请求里。$ — 技能。! — 立即运行 命令(!git status)。
- -i picture.png — 附带启动(对话中直接粘贴)。--search — 开启实时网页搜索。
- /init — 创建 AGENTS.md。/plan — 让它先做计划。
- <终点线> — 一直工作到达成为止。只输入 /goal 查看;/goal pause、resume、clear 用来暂停、继续和删除(Codex 0.128.0 起)。
从 Claude Code 过来的?/import 会导入 Claude Code 的设置和最近的对话。
节省上下文 — SONUB 标准:约 400k 时自动压缩,基础上下文不超过 6%
Codex 每次收到请求时也会重新读取当前的整个,所以采用和 Claude Code 相同的标准 — 用 (自动压缩),只用约 400k 工作,而不是用满 1M,并把基础上下文(默认、技能、MCP 等)保持在 6% 以下。这样可以大幅减少用量。 约 400k 和 6% 是 SONUB 自己定的经验标准,不是官方推荐值——官方文档只说明设置方法。
- 在 ~/.codex/config.toml 中加入 model_context_window = 500000 和 model_auto_compact_token_limit = 475000(见下例):Codex 会把当作 500k token,并在上下文达到 475k 时自动压缩。
- 随时可以用 /compact 手动压缩,工作一换就用 /new 开始新对话。
- 打开新对话后立刻用 /status 查看上下文用量。还没提任何请求就已占用的部分(系统提示词、AGENTS.md、技能、MCP 工具)就是基础上下文,应不超过 6%。
- 超过 6% 就精简 — 把不用的 MCP 服务器从 中删掉或用 enabled = false 关闭,删掉不用的技能,AGENTS.md 只留下真正需要的规则。
model_context_window = 500000
model_auto_compact_token_limit = 475000
基础上下文会随每次请求一起发送,所以哪怕只省几个百分点,也会在整段对话中累积,大幅减少用量。
好好交代工作 — 在哪里、做什么、怎么检查
好的请求有三个部分:在哪里(文件和文件夹)、做什么(你想要的行为)、怎么检查(测试、命令、画面)。这三点越清楚,Codex 就越少走弯路,也越会自己检查结果。
- 模糊的请求:“修一下购物车”
- 清楚的请求:“在 @src/cart.ts 里,数量为 0 时总价会变成 。改成数量为 0 时删除该商品,在 tests/cart.test.ts 里加一个测试,并确认 test 通过。”
- 大任务先说“先只给我看计划”,调整计划后再让它继续。
- 如果它改得比你要求的多,就让它停下,只用 <文件> 还原那个文件(该文件中你自己未暂存的修改也会一起丢掉),然后写明文件名再请求一次。
- 把完整的错误输出粘贴进去 — 原文比总结更准确。
- 完成后,用 /diff 阅读改动,自己,然后提交。
最佳实践 — OpenAI 推荐的 Codex 用法
简单说:请求里写清四部分(目标、背景、限制、完成标准),难的事先做计划,让 Codex 自己检查,规则放在 AGENTS.md 里,一件事用一个对话。六个好习惯和两个工具的命令都在“推荐用法”里。
常见错误 — 以及如何避免
官方指南列出八个错误——例如把规则都塞进请求、没告诉构建或测试命令、跳过计划、太早给完全权限。两份指南里的十个常见错误及改正方法,都在“推荐用法”里。
进阶练习 — 在你自己的项目里试试
- 用 /init 创建 AGENTS.md,完善测试命令和三条规则。
- 如果你也用 Claude Code,确认项目里没有 CLAUDE.md,让两个 AI 读取同一个 AGENTS.md。
- 用 codex --sandbox read-only 让它浏览项目,再用 workspace-write 交给它一个小修改。
- 用 /diff 和 /review 审查改动。
- 用 /status 查看当前设置,用 codex resume --last 继续对话。
五项都做完了?进入 [高级] 标签。
官方文档
- Codex — AGENTS.md
- Codex — Approvals & security
- Codex — Config reference
- AGENTS.md
- Codex — Models
- Codex — Best practices
- Codex — Common mistakes
已于 2026-10-19 对照官方文档核实。这些工具变化很快 — 如果命令不起作用,请查看官方文档。
高级 — 扩展它:config.toml、codex exec、MCP、技能、钩子
用配置文件和配置档让 Codex 适合你的工作方式,用 codex exec 把它放进脚本,用 MCP 连接外部工具,用技能教它重复的工作,再用钩子强制执行必须遵守的规则。
config.toml 和配置档 — 让它适合你的工作方式
的设置保存在 ~/.codex/ 里。以前每次都要加的选项,写在这里就成了默认值。因工作而异的设置放进文件。
- · model_reasoning_effort — 使用的模型和思考的深度
- · sandbox_mode — 和(进阶里讲过的值)
- 配置档是一个 ~/.codex/<名称>.config.toml 文件。用 codex -p <名称> 选择,它的值会叠加在基础设置之上(旧的 [profiles.x] 表已不再读取)。
- -c key=value 只在这次运行中更改某项设置(比如 -c sandbox_workspace_write.network_access=true)。
model_reasoning_effort = "high"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
web_search = "cached"
# a profile: codex -p review
model_reasoning_effort = "xhigh"
sandbox_mode = "read-only"
codex -p review
codex -c sandbox_workspace_write.network_access=true
项目里的 .codex/config.toml 只保存该项目的设置 — 只有在你标记为受信任的项目里才会被读取。
codex exec — 不用聊天界面的自动化
"…" 不打开聊天界面完成一次工作后退出。进度输出到 ,最终回答输出到 stdout,所以很适合放进、 和 。
- 默认是 。加上 --sandbox workspace-write 才能让它编辑文件。
- --json 以 (JSONL)发送进度,-o <文件> 把最终回答保存到文件,--output-schema <文件> 得到符合 的回答。
- 不带提示,标准输入就成为提示;带着提示再用管道传入输入时,输入会附加在后面。
- 在 之外需要 --skip-git-repo-check。codex exec resume --last 继续上一次运行。
# Ask once, print the answer (read-only by default)
codex exec "Summarize what changed in the last 5 commits"
# Allow edits inside this folder
codex exec --sandbox workspace-write "Fix the failing test in tests/cart.test.ts"
# Pipe input in
cat error.log | codex exec "Find the cause"
# For scripts: JSON events, the final answer in a file, a JSON Schema answer
codex exec --json "List the TODOs in src/" > events.jsonl
codex exec -o notes.md "Write release notes for this week"
codex exec --output-schema schema.json "Rate the test coverage of each file"
# Continue the last run
codex exec resume --last "Now add tests for it"
在 CI 里,只把 CODEX_API_KEY 传给运行 Codex 的那一步,这样其他步骤的脚本就看不到。
MCP — 连接外部工具
(Model Context Protocol)是让 工具使用外部服务(问题跟踪、、、文档工具)的。给 Codex 添加一个 MCP ,它就能使用该服务器的工具 — 用的服务器也可以直接使用。
- codex mcp add <名称> -- <> — 添加在你电脑上运行的服务器(stdio)。
- codex mcp add <名称> --url <> — 添加远程服务器()。
- 添加的服务器保存在 config.toml 的 [mcp_servers.<名称>] 表里。对话中,/mcp 会显示它们的状态。
# A server that runs on your computer (stdio)
codex mcp add playwright -- npx @playwright/mcp@latest
# A remote server (streamable HTTP)
codex mcp add notion --url https://mcp.notion.com/mcp
codex mcp list
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
tool_timeout_sec = 60
只添加你信任的 MCP 服务器。获取外部文字的服务器,可能会把藏在文字里的指令带进来()。
智能体技能 — 教它你重复做的工作
技能就是一个装有 的文件夹 — 和 Claude Code 是同样的开放格式。平时 Codex 只知道每个技能的名称和说明;当工作符合说明时,它才会读取正文并照着做。以前的自定义提示(~/.codex/)现在应该改成技能。
- .agents/skills/<名称>/SKILL.md 用于这个仓库,~/.agents/skills/ 用于你的所有项目。
- 用 $<技能名称> 直接,或用 /skills 从列表中选择。当说明符合时,它也会自己使用。
- 写好 name 和 description,把脚本和参考文档放在 scripts/ 和 references/ 里。
- 向内置的 提出请求,它会帮你做一个新技能。
---
name: release-notes
description: Write release notes from the git log. Use when the user asks for release notes or a changelog.
---
1. Find the last tag: `git describe --tags --abbrev=0`
2. Read the commits since then: `git log <tag>..HEAD --oneline`
3. Group them under Added / Fixed / Changed, in plain sentences.
钩子 — 在设定的时机必定运行的命令
是 Codex 在设定的时机必定运行的命令。 里的请求可能会被忘记,但钩子每次都会运行。可以用钩子运行、挡住危险命令,以及在工作完成时收到通知。
- 放在 ~/.codex/hooks.json(你自己)或仓库里的 .codex/hooks.json(项目)。
- 把它们挂到这些时机上: 和 PostToolUse(使用工具前后)、UserPromptSubmit(你发送请求时)、Stop(它回答完毕时)和 SessionStart(会话开始时)。
- 选择工具,如果命令以 2 结束,该操作会被阻止。
- 如果只需要通知,在 config.toml 的 notify 里放一个 — 每轮结束时它都会带着一个 运行。
新的钩子要在 /hooks 里标记为受信任后才会运行。别人写的钩子,要先读懂它的命令再信任。
高级练习
- 在 ~/.codex/config.toml 里写上默认的审批和沙箱,做一个只读的审查配置档(review.config.toml),并用 codex -p review 使用它。
- 写一个脚本,用 codex exec -o 把这周的总结到一个文件里。
- 添加一个 MCP 服务器,用 /mcp 检查。
- 把一件常做的工作做成 .agents/skills/ 里的技能,并用 $name 调用。
- 用 PostToolUse 钩子,让每次编辑文件时都运行格式化工具,并在 /hooks 里把它标记为受信任。
五项都做完了?进入 [大师] 标签。
官方文档
已于 2026-10-19 对照官方文档核实。这些工具变化很快 — 如果命令不起作用,请查看官方文档。
大师 — 子智能体、云端、GitHub、多个 AI 一起
把工作交给子智能体和云端,在 GitHub 上让 @codex 帮你审查,和 Claude Code 等其他 AI 互相审查,让团队按同一套设置工作。
子智能体 — 把部分工作交出去
请 启动,它就会把调查、构建和审查拆开同时进行。每个子智能体都有自己的对话,所以主对话保持干净。
- 内置的 default、worker 和 explorer 一开始就有,/subagents 可以在子智能体之间切换。
- 在 .codex/agents/(项目)或 ~/.codex/agents/(你自己)里用 文件做你自己的子智能体 — name、description、developer_instructions。
- 子智能体会继承父级的和审批设置。
- 在请求里分好角色,比如“用 reviewer 审查当前的 ,同时让 worker 写测试”。
name = "reviewer"
description = "Reviews diffs for bugs and missing tests. Read-only."
developer_instructions = """
Run git diff. List bugs with file and line, then missing tests.
Never edit files.
"""
model_reasoning_effort = "high"
Codex cloud — 把工作交给云端
在 的端环境里运行工作。它不占用你的电脑,所以你可以一次交出多项工作,只把你选中的完成结果应用到自己的文件上。
- 先在 的 Codex 设置里创建一个环境(、设置、、互联网访问)。
- codex cloud 显示任务列表并启动新任务。也可以用 codex cloud exec --env <环境 > "…" 直接交出一项任务。
- codex apply <任务 ID> 把云端做的改动应用到你的仓库()。
- 让它把同一项工作尝试多次(--attempts),再挑出最好的结果。
codex cloud # see and start cloud tasks
codex cloud exec --env <ENV_ID> "Add input checks to the signup form"
codex cloud list
codex apply <TASK_ID> # apply the result to your files
GitHub — 在 PR 里使用 @codex review
把 仓库连接到 Codex 后,只要在 评论里写 @codex review 就能得到审查。用 (openai/codex-action),还可以在每个 PR 上自动运行。
- @codex review — 审查该 PR,只报告严重的问题(、P1)。你可以在 Codex 设置里开启对每个 PR 的自动审查。
- 其他任何 @codex … 评论都会以该内容启动一个云端任务。
- openai/codex-action@v1 接收 和 sandbox,运行 Codex,并以 final-message 给出最终回答 — 在下一步把它发成评论。
- 把密钥作为(OPENAI_API_KEY)传入;只读取的审查,sandbox 保持 。
name: Codex review
on:
pull_request:
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: openai/codex-action@v1
id: codex
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
prompt: "Review this pull request. List bugs and missing tests."
sandbox: read-only
# the answer is in steps.codex.outputs.final-message
在 里加一个 ## Rules 小节,Codex 的 PR 审查就会遵守这些规则。
多个 AI 一起使用 — 互相审查
让另一个 审查一个 AI 写的,单独一个会漏掉的问题就会显现出来。如果通过 AGENTS.md 共享同一份指令,在一个项目里切换 Codex 和 就很容易。
分配角色也是一种方法。一个 AI 计划和构建,另一个审查和测试,最后由人阅读最终的 diff 并决定是否合并。
- codex review --uncommitted — Codex 审查未的改动。--base <> 审查整个分支。
- diff | claude -p "…" — Claude Code 审查 Codex 做的改动。
- 在另一个 AI 的会话里,可以用 把一项工作交给 Codex(比如写测试或做图片)。
- 两个 AI 意见不一致时,让双方都给出证据(文件、行、测试结果),由人来检查并选择。
# Claude Code wrote the change — Codex reviews it
codex review --uncommitted
# Codex wrote the change — Claude Code reviews it
git diff | claude -p "Review this diff. List bugs and missing tests."
# From inside another AI's session, hand one job to Codex
codex exec --sandbox workspace-write "Write unit tests for src/price.ts"
管理团队设置 — 大家用同一套设置
当很多人和很多 AI 在一个仓库里工作时,设置会很快堆积起来。要决定哪些共享、哪些个人,哪些是请求、哪些是强制。
- 共享(提交):AGENTS.md、.codex/config.toml、.codex/hooks.json、.codex/agents/、.agents/skills/
- 个人(不提交):~/.codex/config.toml、文件、~/.codex/AGENTS.md
- AGENTS.md 保持简短。只有同样的错误反复出现时才加规则,错误的规则就删掉。
- 必须遵守的事,用沙箱、审批和来强制,而不是靠指令。
- 密钥只传给运行 Codex 的那一步,审查用 read-only 运行。
大师练习 — 自动化与其他 AI 协作
- 不对话运行一次:codex exec "Find the test of this project" > report.md 把结果存进文件,再阅读 report.md。
- 把常用设置(、沙箱)写进 ~/.codex/config.toml,重新打开 codex,用 /status 确认已生效。
- 用 add ../my-project-b -b try-b 再建一个文件夹,分别交给 Codex 和 Claude Code 不同的任务。两者都完成后,让它们互相审查对方的 diff。
- 在 GitHub 的拉取请求里留言 @codex review,看看是否收到审查(需先把 Codex 连接到仓库)。
- 在 AGENTS.md 里加一条团队规则,把同一个任务交给 Codex 和 Claude Code,比较两者是否都遵守了规则。
卡住时:codex exec 默认只读,需要改文件时加上 --sandbox workspace-write。设置没生效就用 /status 和 codex --help 查看当前值。五项都做完了?用下面的检查清单自查。
大师检查清单
- 共享规则写在 AGENTS.md — Claude Code 等其他 AI 按同一份指令工作
- 你根据工作选择沙箱和审批,默认值写在 和配置档里
- 重复的工作交给技能,必须遵守的规则交给钩子,外部工具通过 连接
- 重复的工作用 codex exec 和 GitHub Action
- 大任务分给子智能体和 codex cloud,只应用选中的结果
- AI 互相审查彼此的工作,由人检查最终的 diff 和测试
工具变化很快。如果命令不起作用,先查看 codex --help 和官方文档。旧文章里的选项(--full-auto、[profiles.x])可能已经变了。
官方文档
已于 2026-10-19 对照官方文档核实。这些工具变化很快 — 如果命令不起作用,请查看官方文档。
加载中…
请选择要取消的待付款预约。每次取消都需要确认。
你所在国家的时间: