Codex 使用指南
Codex 是一个能真正动手干活的编程智能体:你用自然语言说清目标,它会读代码、改文件、跑命令,再把改动以 diff 的形式交给你审阅。这份指南从安装讲到高效协作,内容按本机安装的 Codex 实际命令核对整理,可离线查看。
- 终端 · 编辑器 · 桌面 · 云端
- 基于 codex-cli 0.162.1 核对
- 附可复制的命令示例
01Codex 是什么
一句话:把"要做的事"说清楚,剩下的读代码、写代码、跑测试、看报错,它自己循环完成,然后请你验收。
它和代码补全不一样。补全工具猜你下一行想写什么;Codex 接受的是一个任务——"把支付回调的重复逻辑抽出来并补测试"——并自己决定读哪些文件、改哪些地方、跑什么命令来证明改对了。每一次改动都留在 Git 里,以 diff 的形式等你确认。
终端 CLI
最直接的方式。在项目目录里敲 codex,进入交互式会话,命令在本机沙箱内执行。
编辑器内
在编辑器里贴着代码工作,改动与 diff 并排显示,适合逐处精修。
桌面应用
面向规划、审阅和多任务并行:一边跑任务,一边看改动、预览页面、审阅 diff。
云端任务
把任务交给远端环境执行,完成后用 codex cloud 浏览结果并把补丁取回本地。
关于本页的来源。命令清单、参数取值与说明文字均取自本机 codex-cli 0.162.1 的帮助输出,未凭印象编写。功能会持续增加,正式使用时请以 codex --help 与你所在团队的配置约束为准。
02快速开始
从零到第一条任务,五步。
-
安装
通过 npm 全局安装命令行版本,或者安装桌面应用(
codex app在缺失时会打开安装程序)。shellnpm install -g @openai/codex -
登录
用
codex login按提示完成授权,凭据保存在本机 Codex 目录下;退出用codex logout。shellcodex login -
在项目里启动
切到仓库目录再启动,Codex 就以它为工作根目录。也可以用
-C指定目录、用--add-dir额外开放可写目录。shell# 进入仓库后启动(macOS / Linux) cd ~/code/my-project codex # 或一步指定目录 codex -C ~/code/my-project # Windows 下把路径换成 D:\my-project -
说清第一个目标
上来先让它做一件小事:摸清仓库、跑通测试、解释一处逻辑。这比一上来丢一个大需求更容易建立信任。
prompt先浏览这个仓库的结构,告诉我它是做什么的、怎么跑测试, 然后跑一遍测试并把失败项摘要给我。也可以把任务直接写在启动命令后面:
codex "把 README 里的安装步骤按当前脚本更新一遍"。 -
审阅并确认
需要执行敏感命令时它会先征求同意;改完代码它会给出 diff。你逐处看过、确认无误,再决定是否提交。
shell# 在仓库里查看改动 git diff # 满意就提交 git add -p git commit -m "refactor: 抽取支付回调重复逻辑"
动手前先 git commit 一次,或者用 codex --worktree 让它在一个独立的 Git worktree 里工作。这样任何改动都能干净地丢弃,试错成本几乎为零。
03一次典型的协作循环
理解这五步,就知道什么时候该说话、什么时候该放手。
你说目标
描述要做的事、边界和验收标准。你
它摸清现状
搜索文件、读相关实现,必要时先给出计划再动手。Codex
它执行并自证
改文件、装依赖、跑测试;越出沙箱边界的动作会先请你批准。Codex
你审阅 diff
看它改了什么、为什么改,重点盯"顺手改的无关文件"。你
收敛或提交
继续追加要求,或确认提交、开 PR。你
- 随时可以打断。它在跑的时候你也能补一句"先别改测试""顺便把日志级别统一一下",它会带着新要求继续。
- 一轮别塞太多事。大需求拆成几步,每步都能验证,出问题时定位范围小得多。
- 要它拿证据说话。让它跑测试、跑构建、复现原始报错,而不是只说"已修复"。
- 不满意就直说。指出具体哪一处不对、期望是什么样,比"再优化下"有效得多。
04权限与沙箱:它能动到哪一步
两个开关决定"它能碰什么"和"什么时候必须问你"。默认组合是能在工作区里自由干活,出圈要打招呼。
沙箱模式 -s, --sandbox
| 取值 | 含义 | 适合场景 |
|---|---|---|
| read-only | 只能读取和查看,不能修改文件 | 只想让它调研、解释、审查,不改代码 |
| workspace-write | 可以修改当前工作区(以及允许的临时目录) | 日常默认,改代码、跑测试都在这里完成 |
| danger-full-access | 不限制文件与系统访问 | 仅在你已用容器或虚拟机隔离风险时使用 |
审批策略 -a, --ask-for-approval
| 取值 | 含义 |
|---|---|
| on-request | 由模型自行判断哪些命令需要先问你(默认,最稳妥) |
| never | 从不询问,命令失败的输出直接返回给模型。适合已经隔离好的自动化环境 |
想少被打断,从这三个方向调
| 做法 | 效果 | 代价 |
|---|---|---|
| --approve-for-me | 审批请求交给自动审查处理,仍限制在 workspace-write 沙箱内 | 几乎不用点确认,但自动审查可能误判 |
| -a never | 不再询问;需要出界的命令直接失败并把错误交回给模型 | 部分操作做不了,得手动补 |
| --dangerously-bypass-approvals-and-sandbox | 跳过全部确认并取消沙箱,等同"最大权限" | 官方标注为极度危险,只应在外部已隔离的环境使用 |
只放宽某个目录
需要同时改两个仓库时用 --add-dir <目录> 追加可写目录,而不是把整个沙箱放开。改动范围越明确,审查越轻松。
让配置说了算
把 approval_policy 与 sandbox_mode 写进 config.toml,就不用每次启动都带一长串参数。写法见第 08 节。
05命令速查
以下命令与说明取自本机 codex-cli 0.162.1 的帮助输出。输入关键词可以过滤。
| 命令 | 作用 |
|---|---|
| codex | 在当前目录启动交互式会话(可跟一段初始任务文本) |
| codex "任务描述" | 带着初始任务直接进入会话 |
| codex -C <目录> | 指定会话的工作根目录 |
| codex -m <模型> | 指定本次使用的模型 |
| codex -i <图片> | 给初始提示附上截图或设计图 |
| codex -s <模式> | 指定沙箱:read-only / workspace-write / danger-full-access |
| codex -a <策略> | 指定审批策略:on-request / never |
| codex --approve-for-me | 审批交给自动审查,仍在 workspace-write 沙箱内执行 |
| codex --add-dir <目录> | 在主工作区之外再开放一个可写目录 |
| codex --worktree | 在新建的托管 Git worktree 中运行会话,改动与主工作区隔离 |
| codex --search | 为本次会话开启实时联网搜索能力 |
| codex -c key=value | 临时覆盖配置项,如 -c model="..."、-c features.xxx=true |
| codex -p <profile> | 叠加一层命名配置:$CODEX_HOME/<名字>.config.toml |
| codex --oss --local-provider ollama | 改用开源 / 本地模型提供方(ollama 或 lmstudio) |
| codex resume | 恢复历史会话(列表选择);加 --last 直接继续最近一次 |
| codex fork | 从某个历史会话分叉出新会话,原会话保持不变 |
| codex exec "任务" | 非交互执行,任务完成后退出,适合脚本与 CI |
| codex exec resume --last | 非交互地接着最近一次会话继续做 |
| codex review --uncommitted | 审查暂存区、工作区与未跟踪的改动 |
| codex review --base main | 与指定基线分支比对后做代码审查 |
| codex apply | 把 Codex 生成的最新补丁应用到本地工作区 |
| codex doctor | 诊断安装、配置、登录与运行时健康状况 |
| codex update | 更新到最新版本 |
| codex login / logout | 登录,或清除本机保存的凭据 |
| codex mcp add / list / get / remove / login | 管理外部 MCP 服务器接入 |
| codex plugin add / list / remove / marketplace | 安装、查看、卸载插件,管理插件市场 |
| codex cloud | 浏览 Codex 云端任务,并把结果应用到本地(实验特性) |
| codex agents | 浏览共享本地服务上的全部 agent 会话 |
| codex archive / unarchive / delete <会话> | 归档、取消归档或永久删除本地会话 |
| codex queue "消息" | 给正在运行的会话排队一条消息 |
| codex features | 查看特性开关;--enable / --disable 可临时开关某项能力 |
| codex debug models | 输出模型目录的原始 JSON,排查模型可用性时有用 |
| codex sandbox <命令> | 在 Codex 提供的沙箱环境里运行指定命令 |
| codex completion | 生成 shell 补全脚本 |
06会话内的斜杠指令
进入交互式会话后,以 / 开头的短指令用来控制会话本身,而不是干活的指令。直接敲一个 / 就能看到当前版本支持的完整列表,下面是高频项。
把控方向
- /init · 为当前仓库生成 AGENTS.md 初稿
- /model · 查看或切换本次会话使用的模型
- /approvals · 调整审批策略,少被打断或多加一层关
- /status · 查看会话状态(工作目录、配置、用量等)
- /compact · 压缩上下文,长会话接近上限时用它续命
管理会话与改动
- /diff · 查看当前改动
- /review · 让 Codex 审查改动
- /new · 开一个新会话,上下文互不干扰
- /resume · 回到之前的会话
- /fork · 从当前会话分叉出一条新线,用于试不同方案
- /skills · 查看可用技能
- /mcp · 查看已接入的 MCP 服务器
- /help · 指令总览;/quit · 退出会话
斜杠指令的名字在不同版本里会调整,以 / 拉出的列表为准。上面这些在本机 0.162.1 上都可以直接使用。
07非交互模式与自动化
codex exec 把 Codex 当成一条普通命令来用:给任务、等结果、拿输出。这是把它接进脚本、CI、定时任务的方式。
# 一条命令跑完一个任务
codex exec "为 src/utils/date.ts 里的公开函数补齐注释和单测,跑通测试"
# 从标准输入接手任务描述
cat spec.md | codex exec -
# 机器可读输出,并把最终消息写进文件
codex exec --json -o result.txt "跑测试并总结失败原因"
Windows PowerShell 里把 cat spec.md 换成 Get-Content spec.md 即可,管道后的命令不变。
常用配套选项
| 选项 | 作用 |
|---|---|
| --json | 以 JSONL 形式输出事件流,便于脚本解析 |
| -o, --output-last-message <文件> | 把 agent 的最后一条消息写入指定文件 |
| --output-schema <文件> | 用 JSON Schema 约束最终输出的结构,适合接下游程序 |
| --ephemeral | 不把会话文件持久化到磁盘 |
| --skip-git-repo-check | 允许在非 Git 仓库目录中运行 |
| --ignore-user-config | 不加载用户的 config.toml,让 CI 行为可复现 |
| --color never | 关闭彩色输出,日志更干净 |
| -s / -a | 在无人值守环境里把权限边界写死,例如只给 workspace-write |
放进流水线
- name: 自动审查本次改动
run: |
codex exec \
--skip-git-repo-check \
--color never \
-s read-only \
-o review.md \
"审查本次改动,按严重程度列出问题,不要改动文件"
- name: 与基线分支比对审查
run: codex review --base main
无人值守时,把权限收窄比放开更重要:只想让它评论代码就给 read-only;需要它落盘改动,就用 workspace-write,并把产出当补丁走正常的评审流程。
08配置与扩展:让它更懂你的项目
大部分不确定来自"它不知道你的规矩"。把规矩沉淀到下面这些地方,就不用每次在对话里重复交代。
AGENTS.md · 项目规矩
- 仓库根目录放整体约定:怎么装依赖、怎么跑测试、代码风格、禁区
- 子目录可放更细的说明:越靠近文件的规则越具体、优先适用
- 会话里用 /init 先生成初稿,再按团队习惯改
config.toml · 默认设置
- 用户级
~/.codex/config.toml:个人在所有项目里的默认值 - 项目级 仓库内的
.codex/config.toml:跟着仓库走的约定 - 临时覆盖
-c key=value;命名配置-p <名字>叠加$CODEX_HOME/<名字>.config.toml
技能 Skills · 可复用的做法
- 把重复出现的流程写成一份带步骤说明的技能(可附带脚本与素材)
- 放在 Codex 目录下的
skills里,会话中按需触发 - 适合"发版检查清单""新接口脚手架""固定格式的报告"这类活儿
MCP 与插件 · 接上外部世界
- MCP 服务器:让 Codex 访问真实数据与工具,用
codex mcp add - 插件:把技能、工具、命令、MCP 配置打包分发,用
codex plugin add - 钩子 hooks:在关键节点做机械式校验或拦截,把规矩变成硬约束
一个 config.toml 的样子
# ~/.codex/config.toml
model = "你的账号可用的模型"
model_reasoning_effort = "high"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
# 接入一个 MCP 服务器
[mcp_servers.example]
command = "npx"
args = ["-y", "some-mcp-server"]
配置项会随版本演进。改完用 codex doctor 体检;启动时加 --strict-config,Codex 会对不认识的字段直接报错,能帮你尽早发现拼写错误或过时配置。
09怎么提问更有效
同一件事,说法不同返工次数能差好几倍。把这几样说清楚就够了:做什么、在哪做、别碰什么、怎么算完成。
几个立刻能用上的习惯
- 大任务先要计划。"先别改代码,列出你打算改哪些文件、怎么验证,我确认后再动手。"
- 让它分清确定与猜测。"不确定的地方单独列出来问我,不要替我假设。"
- 要证据。"跑一遍测试并把输出贴出来",比"确保没问题"可靠得多。
- 给它上下文。相关文件、接口文档、线上日志、界面截图都可以直接给它(命令行用
-i附图片,或用管道把文档喂进去)。 - 长会话及时收口。任务切换时开新会话,或先
/compact再继续,避免旧上下文干扰当前判断。 - 不满意就具体化。"第 2 个测试的断言改错了,应该判断 401 而不是抛异常"远比"再改改"有效。
10实践原则
安全地用
- 保持默认沙箱与审批,别为了省几次确认就长期关掉
- 开工前先提交或开 worktree,改动随时能干净丢弃
- 密钥、令牌、生产数据不要写进提示词或仓库
- 需要更宽权限时用
--add-dir精确放权,而不是整体放开
高效地用
- 认真审 diff,重点看它"顺手"改掉的文件
- 把团队约定写进 AGENTS.md,让每次会话都从同一份规矩出发
- 重复劳动固化成技能或脚本,别每次口头教一遍
- 能自动化的检查(代码审查、依赖巡检)交给
codex exec定时跑 - 任务拆小、每步可验证,比一口气许愿成功率高得多
把它当成一位刚入职、能力很强、但完全不熟悉你项目的同事:给背景、给标准、看产出。协作质量的上限,主要由你交代任务的质量决定。
11实战连载:九篇,按顺序读
指南把概念、命令和权限边界讲清楚;《Codex 教程》九篇记录的是同一套工具在真实项目里的用法——发布、迁机、收信、值守。前三篇打好基本盘,后六篇各解决一类具体问题。
12常见问题
它会擅自修改我的文件吗?
改动都在沙箱允许的范围内,并且以 diff 的形式呈现给你。越过边界的操作(访问工作区外的文件、执行高危命令等)会先征求同意——除非你显式把审批关掉。
最稳的用法:先提交当前状态,再让它动手,随后用 git diff 逐块审查。
每次都要点同意,太打断节奏了怎么办?
按风险从小到大有三个层次:会话里用 /approvals 调整策略;启动时加 --approve-for-me 让自动审查接管审批;确实需要完全不问时用 -a never(沙箱约束仍然生效)。
要长期生效,把 approval_policy 和 sandbox_mode 写进 ~/.codex/config.toml。
会话中断了,或者我想接着昨天那条线继续?
交互式会话里用 /resume,命令行用 codex resume(加 --last 直接继续最近一次)。想保留原会话、换个思路重来时用 codex fork。要给正在跑的会话补一句话,用 codex queue "消息"。
改坏了怎么回退?
改动都在 Git 里,按平常的方式回退即可:git diff 看,git restore 或 git checkout 丢弃。如果用的是 --worktree,整个 worktree 直接弃置就行,主工作区没被碰过。
codex apply 是相反方向的操作:把 Codex 生成的最新补丁应用到本地。
它需要联网吗?能不能只用本地模型?
正常使用时模型在云端,需要网络。想走本地或自托管模型,可以用 --oss --local-provider ollama(或 lmstudio)切换提供方;需要查阅实时资料时,单独用 --search 给这次会话开启联网搜索。
怎么知道我的版本支持哪些功能?
codex --version 看版本,codex --help 看子命令与参数,codex features 看特性开关,codex doctor 排查环境问题。会话里敲一个 / 就能列出斜杠指令。
怎么接入我团队的工具和数据?
用 codex mcp add 接 MCP 服务器,把外部系统以工具形式暴露给 Codex;需要成套能力(技能 + 工具 + 命令 + 钩子)时打成插件,用 codex plugin add 安装。接入时留意权限范围,能少给就少给。
为什么有些命令或选项不在本页里?
本页按本机 codex-cli 0.162.1 整理,覆盖常用部分。功能会持续增加,未列出不等于不存在——请以 codex --help 和 codex <子命令> --help 的实际输出为准。
13资料与版本说明
本页内容的来源
- 命令清单、参数取值与说明文字:取自本机 codex-cli 0.162.1 的
codex --help、codex exec --help、codex review --help、codex mcp --help、codex plugin --help实际输出 - 配置层次与扩展方式(AGENTS.md、配置目录、技能、插件、MCP、钩子):结合本机安装目录结构核对
- 未能核对的部分:官方文档站在当前网络环境下返回 403、正文不可读,因此模型名称、套餐权益、云端能力细节以你账号与版本的实际可用情况为准
自己核对一遍
codex --version # 版本
codex --help # 子命令与全局参数
codex exec --help # 非交互模式的全部选项
codex doctor # 环境体检