Dola
Codex 使用指南 · codex-cli 0.162.1

Codex 使用指南

Codex 是一个能真正动手干活的编程智能体:你用自然语言说清目标,它会读代码、改文件、跑命令,再把改动以 diff 的形式交给你审阅。这份指南从安装讲到高效协作,内容按本机安装的 Codex 实际命令核对整理,可离线查看。

  • 终端 · 编辑器 · 桌面 · 云端
  • 基于 codex-cli 0.162.1 核对
  • 附可复制的命令示例

01Codex 是什么

一句话:把"要做的事"说清楚,剩下的读代码、写代码、跑测试、看报错,它自己循环完成,然后请你验收。

它和代码补全不一样。补全工具猜你下一行想写什么;Codex 接受的是一个任务——"把支付回调的重复逻辑抽出来并补测试"——并自己决定读哪些文件、改哪些地方、跑什么命令来证明改对了。每一次改动都留在 Git 里,以 diff 的形式等你确认。

codex

终端 CLI

最直接的方式。在项目目录里敲 codex,进入交互式会话,命令在本机沙箱内执行。

IDE

编辑器内

在编辑器里贴着代码工作,改动与 diff 并排显示,适合逐处精修。

codex app

桌面应用

面向规划、审阅和多任务并行:一边跑任务,一边看改动、预览页面、审阅 diff。

codex cloud

云端任务

把任务交给远端环境执行,完成后用 codex cloud 浏览结果并把补丁取回本地。

关于本页的来源。命令清单、参数取值与说明文字均取自本机 codex-cli 0.162.1 的帮助输出,未凭印象编写。功能会持续增加,正式使用时请以 codex --help 与你所在团队的配置约束为准。

02快速开始

从零到第一条任务,五步。

  1. 安装

    通过 npm 全局安装命令行版本,或者安装桌面应用(codex app 在缺失时会打开安装程序)。

    shell
    npm install -g @openai/codex
  2. 登录

    用 codex login 按提示完成授权,凭据保存在本机 Codex 目录下;退出用 codex logout。

    shell
    codex login
  3. 在项目里启动

    切到仓库目录再启动,Codex 就以它为工作根目录。也可以用 -C 指定目录、用 --add-dir 额外开放可写目录。

    shell
    # 进入仓库后启动(macOS / Linux)
    cd ~/code/my-project
    codex
    
    # 或一步指定目录
    codex -C ~/code/my-project
    
    # Windows 下把路径换成 D:\my-project
  4. 说清第一个目标

    上来先让它做一件小事:摸清仓库、跑通测试、解释一处逻辑。这比一上来丢一个大需求更容易建立信任。

    prompt
    先浏览这个仓库的结构,告诉我它是做什么的、怎么跑测试,
    然后跑一遍测试并把失败项摘要给我。

    也可以把任务直接写在启动命令后面:codex "把 README 里的安装步骤按当前脚本更新一遍"。

  5. 审阅并确认

    需要执行敏感命令时它会先征求同意;改完代码它会给出 diff。你逐处看过、确认无误,再决定是否提交。

    shell
    # 在仓库里查看改动
    git diff
    
    # 满意就提交
    git add -p
    git commit -m "refactor: 抽取支付回调重复逻辑"

动手前先 git commit 一次,或者用 codex --worktree 让它在一个独立的 Git worktree 里工作。这样任何改动都能干净地丢弃,试错成本几乎为零。

03一次典型的协作循环

理解这五步,就知道什么时候该说话、什么时候该放手。

01

你说目标

描述要做的事、边界和验收标准。你

02

它摸清现状

搜索文件、读相关实现,必要时先给出计划再动手。Codex

03

它执行并自证

改文件、装依赖、跑测试;越出沙箱边界的动作会先请你批准。Codex

04

你审阅 diff

看它改了什么、为什么改,重点盯"顺手改的无关文件"。你

05

收敛或提交

继续追加要求,或确认提交、开 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、定时任务的方式。

shell · 基本用法
# 一条命令跑完一个任务
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

放进流水线

yaml · CI 示意
- 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 的样子

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怎么提问更有效

同一件事,说法不同返工次数能差好几倍。把这几样说清楚就够了:做什么、在哪做、别碰什么、怎么算完成。

含糊
帮我优化一下代码。
范围、目标、验收标准全空,它只能猜。
明确
src/api/ 下三个请求函数里的错误处理是重复的。抽成一个封装并替换调用点,保持现有函数签名和错误信息不变;跑通 api 相关的测试用例;最后列出改动点和不影响的行为。
范围(三个函数)、约束(签名不变)、验收(测试通过)、交付(改动清单)都在。
含糊
登录接口报错了,你看看。
它得先猜是哪个接口、什么错。
明确
POST /api/login 在密码错误时返回 500,应该返回 401。下面是完整堆栈和复现步骤。先复现,再定位,修完补一个回归测试,把根因写清楚。
贴原始报错 + 期望行为 + 复现路径 + 要求它自证。

几个立刻能用上的习惯

  • 大任务先要计划。"先别改代码,列出你打算改哪些文件、怎么验证,我确认后再动手。"
  • 让它分清确定与猜测。"不确定的地方单独列出来问我,不要替我假设。"
  • 要证据。"跑一遍测试并把输出贴出来",比"确保没问题"可靠得多。
  • 给它上下文。相关文件、接口文档、线上日志、界面截图都可以直接给它(命令行用 -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、正文不可读,因此模型名称、套餐权益、云端能力细节以你账号与版本的实际可用情况为准

自己核对一遍

shell
codex --version        # 版本
codex --help           # 子命令与全局参数
codex exec --help      # 非交互模式的全部选项
codex doctor           # 环境体检