codex 使用指南
AI 工具的使用大势所趋,充分地利用能有效提升学习的效率。
安装 codex。
1 | npm install -g @openai/codex |
然后配置基本的模型,在 ~/.codex/config.toml。
1 | model_provider = "codex" |
uvx 安装。
1 | curl -LsSf https://astral.sh/uv/install.sh | sh |
1 基本用法
1 | codex [OPTIONS] [PROMPT] |
2 子命令
- exec / e: 非交互执行任务,适合脚本化调用
- review: 非交互代码审查
- login: 登录管理
- logout: 删除本地登录凭据
- mcp: 管理外部 MCP 服务器
- mcp-server: 把 Codex 作为 MCP server 启动,走 stdio
- app-server: 实验功能,运行 app server 或相关工具
- completion: 生成 shell 自动补全脚本
- sandbox: 在 Codex 提供的沙箱里运行命令
- debug: 调试工具
- apply / a: 把最近一次 agent 生成的 diff 应用到本地 git 工作区
- resume: 恢复之前的交互会话,默认弹选择器;–last 继续最近一次
- fork: 基于之前的会话分叉一个新会话,默认弹选择器;–last 分叉最近一次
- cloud: 实验功能,浏览 Codex Cloud 任务并把改动应用到本地
- exec-server: 实验功能,运行独立的 exec-server
- features: 查看 feature flags
- help: 查看帮助
3 顶层选项
- -c, –config <key=value>: 覆盖配置项,等价于临时改
~/.codex/config.toml- 例子:
1
2codex -c model=\"o3\"
codex -c 'sandbox_permissions=[\"disk-full-read-access\"]'
- 例子:
- –enable
: 启用某个 feature,可重复写多个 - –disable
: 禁用某个 feature,可重复写多个 - –remote
: 连接远程 app server 的 websocket 地址 - 例子:
1
codex --remote ws://127.0.0.1:3000
- 例子:
- –remote-auth-token-env
: 指定一个环境变量名,从里面读取远程连接用的 bearer token - -i, –image
…: 给初始 prompt 附加图片,可传多个 - 例子:
1
codex -i a.png -i b.jpg "分析这两张图"
- 例子:
- -m, –model
: 指定模型 - 例子:
1
codex -m gpt-5.4
- 例子:
- –oss: 使用本地开源模型提供方,相当于设置 model_provider=oss,会检查本地 LM Studio 或 Ollama
- –local-provider
: 指定本地 provider:lmstudio 或 ollama - -p, –profile
: 使用 config.toml 里的某个 profile - -s, –sandbox
: 设置命令执行沙箱模式 - 可选值:
1
2
3read-only:只读
workspace-write:可写当前工作区
danger-full-access:完全访问
- 可选值:
- -a, –ask-for-approval
: 设置什么时候需要人工批准 - 可选值:
1
2
3
4untrusted:只有“可信命令”直接执行,其他都先问你
on-failure:已弃用;先执行,失败后再请求升级权限
on-request:模型自行判断何时请求批准
never:永不请求批准,失败直接返回给模型
- 可选值:
- –full-auto: 便捷模式,等价于
-a on-request --sandbox workspace-write - –dangerously-bypass-approvals-and-sandbox: 跳过审批并关闭沙箱,直接执行。
- -C, –cd <DIR>: 指定工作目录
- 例子:
codex -C /path/to/project
- 例子:
- –search: 开启联网搜索能力,模型可直接使用
web_search工具 - –add-dir <DIR>: 给当前主工作区之外,再额外增加可写目录
- –no-alt-screen: 关闭备用屏幕模式,保留终端滚动历史。像 zellij/tmux 这类场景里比较有用
- -h, –help: 查看帮助
- -V, –version: 查看版本
4 codex 快捷设置
- /permissions:改 Codex 的权限策略,比如自动执行、只读、需要审批等。
- /ide:把当前 IDE 的打开文件、选区、编辑器上下文带进下一条对话。
- /keymap:查看或修改 TUI 快捷键绑定,并可保存到配置里。
- /vim:开关 Vim 编辑模式。
- /sandbox-add-read-dir:给沙箱额外添加一个可读目录。仅 Windows 提供。
- /agent:切换当前活动的 agent 线程,查看或继续子 agent 的工作。
- /apps:浏览可连接的 apps/connectors,并把它们插入当前提示词。
- /plugins:浏览、安装、管理插件。
- /hooks:查看和管理生命周期 hooks。
- /clear:清空终端显示并开始一段新的聊天。
- /archive:归档当前会话并退出 Codex。
- /compact:把当前长对话压缩总结,节省上下文 token。
- /copy:复制最近一条已完成的回答。
- /diff:显示当前工作区的 Git diff,包括未跟踪文件。
- /exit:退出 CLI,和 /quit 基本等价。
- /experimental:开关实验功能。
- /approve:对最近一次被自动审查拒绝的动作,批准重试一次。
- /memories:配置记忆功能,决定是否读取或生成 memories。
- /skills:浏览并启用技能,让下一步按某个 skill 的流程工作。
- /feedback:提交反馈,并可附带日志。
- /init:在当前目录生成 AGENTS.md 模板。
- /logout:退出当前 Codex 账号登录状态。
- /mcp:查看已配置的 MCP 工具或服务器状态。
- /mention:把文件或目录附加到当前对话,提示 Codex 优先看它们。
- /model:切换当前使用的模型;某些环境还能同时选 reasoning effort。
- /fast:开关 Fast 服务层。只在当前模型支持时显示。
- /plan:切到 plan mode,先做规划再执行。
- /goal:设置、查看、暂停、恢复或清除一个持续目标。
- /personality:切换回答风格,比如更简洁、更务实、更友好。仅支持时显示。
- /ps:查看实验性的后台终端任务及最近输出。
- /stop:停止当前会话启动的后台终端任务。
- /fork:把当前对话分叉成一个新线程,方便尝试另一条思路。
- /side:开一个临时的旁支对话,不打乱主线程。
- /btw:和 /side 同义,也是临时旁支对话。
- /raw:切换原始滚动输出模式,方便复制和查看长终端文本。
- /resume:从已保存的会话列表里恢复一个旧会话。
- /new:在同一个 CLI 会话里开一段全新的对话。
- /quit:退出 CLI,和 /exit 基本等价。
- /review:让 Codex 审查当前工作区改动。
- /status:显示当前会话状态,比如模型、权限、token 使用、上下文容量等。
- /debug-config:打印配置来源和优先级,用来排查配置为什么生效或没生效。
- /statusline:配置底部状态栏显示哪些项目、顺序如何。
- /title:配置终端窗口标题显示哪些信息。
- /theme:切换终端语法高亮主题。
5 MCP
MCP 全称 Model Context Protocol。它是一个把模型连接到“外部工具和上下文”的协议,让 Codex 不只会聊天,还能调用第三方能力,比如查文档、连 Figma、控制浏览器、读Sentry、做 GitHub 操作。Codex 在 CLI 和 IDE 扩展里都支持 MCP。
5.1 MCP 配置
全局配置。
1 | ~/.codex/config.toml |
项目级配置。
1 | .codex/config.toml |
通过 config.toml 配置的 MCP server 有三种类型。
STDIO 类型:
- command:启动命令,必填
- args:参数
- env:直接设置环境变量
- env_vars:把本机环境变量透传进去
- cwd:工作目录
HTTP 类型:
- url:服务地址,必填
- bearer_token_env_var:认证 token 来自哪个环境变量
- http_headers / env_http_headers:附加请求头
使用命令。
1 | codex mcp add <名称> ... |
5.1.1 MCP 服务器
基于 typescript 的服务器可以直接使用 npx。
1 | npx -y @modelcontextprotocol/server-memory |
基于 python 的服务器可以直接使用 uvx。
1 | # Using uvx |
5.1.2 MCP 配置实例
假设我们接入一个叫 context7 的 MCP server。
1 | # codex mcp add context7:给 Codex 新增一个名叫 context7 的 MCP server |
或者在 ~/.codex/config.toml 加入。
1 | [mcp_servers.context7] |
观察,添加 MCP server 前后。
1 | /mcp |
发现貌似启动不了,这里改成 HTTP 类型。
1 | [mcp_servers.context7] |
结果如下。
1 | /mcp |
怎么禁用对应的 MCP?
在对应的 config.toml 当中设置成为 enabled = false。
怎么删除对应的 MCP?
1 | codex mcp remove context7 |
6 常用模板
6.1 优化类
记录上下文。
1 | 每次在当前工作目录执行任务时,都同步维护 `process.md`: |
6.2 科研类
6.3 工程类
功能开发。
1 | 在 [模块路径] 添加 [功能名称] 功能 |
Bug 修复。
1 | 问题描述:[Bug 表现] |
快速问题分析。
1 | # 提供完整错误 |
代码审查。
1 | /review [范围] for [重点] |
References
- codex 最佳实践: https://www.runoob.com/codex/codex-prompting.html
- codex 快捷设置: https://developers.openai.com/codex/cli/slash-commands
- codex MCP 配置: https://developers.openai.com/codex/mcp