Files
axmd/2026/agent_blog/codex_install.md
T

409 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Codex CLI 安装、配置与常用方法
date: 2026-05-26
tags: [Codex, OpenAI, CLI, AI 编程]
collections: [软件安装]
summary: 基于 2026-05-26 检索到的 OpenAI 官方文档,整理使用 mamba 准备 Node.js 环境后安装 Codex CLI 的流程、配置文件写法和常用操作。
draft: false
featured: false
---
# Codex CLI 安装、配置与常用方法
这篇笔记基于 2026-05-26 检索到的 OpenAI 官方文档整理,目标是把 Codex CLI 的安装、配置文件和常用操作一次讲清楚。考虑到我自己更习惯用 `mamba` 管理本地 Node.js 环境,下面先保留这条安装路径,再接官方的 npm 安装步骤。原始草稿里那种把真实密钥直接写进配置文件的做法不适合保留,正式使用时应当改成环境变量或官方登录方式。
## 安装 Codex CLI
### 使用 mamba 准备 Node.js 环境
如果你平时用 `mamba` 管理开发环境,可以先单独准备一个 Node.js 环境,再在这个环境里安装 Codex CLI:
```bash
mamba create -n node nodejs -y
mamba activate node
```
如果你已经有可用的 Node.js 环境,可以直接跳到下一步。
### 使用 npm 安装 Codex CLI
OpenAI 官方文档给出的 npm 安装命令如下:
```bash
npm i -g @openai/codex
```
安装完成后直接运行:
```bash
codex
```
第一次启动时,Codex 会提示登录。官方也给出了升级命令:
```bash
npm i -g @openai/codex@latest
```
如果你只是想先确认 CLI 是否已经可用,最直接的方式就是运行 `codex` 看是否能进入交互界面。
## 登录方式
Codex 官方支持两种主要认证方式:
1. 使用 ChatGPT 账号登录,适合日常交互式使用。
2. 使用 API key 登录,适合按量计费和自动化场景。
### 使用 ChatGPT 登录
对 CLI 来说,默认登录路径是 ChatGPT 登录。运行 `codex` 或显式执行下面的命令后,Codex 会打开浏览器完成登录流程:
```bash
codex login
```
这种方式更适合个人日常使用,因为它直接走 ChatGPT 账号授权流程。
### 使用 API key 登录
如果你更关心脚本化、CI/CD 或明确的 API 计费路径,可以改用 API key。官方建议把 API key 用在程序化工作流中,而不是写死在配置文件里。
```bash
export OPENAI_API_KEY="sk-..."
printenv OPENAI_API_KEY | codex login --with-api-key
```
### 无图形界面环境
如果是在远程服务器、无浏览器环境或者本地回调被网络策略拦截,可以使用设备码登录:
```bash
codex login --device-auth
```
## 配置文件位置与优先级
Codex 的用户级配置文件位于 `~/.codex/config.toml`。如果希望只对某个仓库生效,可以在项目中添加 `.codex/config.toml`
官方文档给出的配置优先级从高到低是:
1. CLI 参数和 `--config` 覆盖。
2. `--profile <name>` 指定的 profile。
3. 项目级 `.codex/config.toml`
4. 用户级 `~/.codex/config.toml`
5. 系统级配置。
6. 内置默认值。
需要注意的是,一些与机器本地环境强绑定的键不适合放在项目级配置里。像 `model_provider``model_providers``profiles``openai_base_url``chatgpt_base_url` 这类字段,官方明确要求放在用户级配置中。
## 一份适合日常使用的配置
如果你主要是在本机交互式写代码,下面这份配置已经够用:
```toml
model = "gpt-5.5"
model_reasoning_effort = "medium"
plan_mode_reasoning_effort = "high"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
web_search = "cached"
cli_auth_credentials_store = "keyring"
[projects."/path/to/project"]
trust_level = "trusted"
```
这份配置的含义很直接:
- `model` 指定默认模型。官方示例给大多数用户推荐的是 `gpt-5.5`
- `model_reasoning_effort` 控制默认推理强度,可选值包括 `minimal``low``medium``high``xhigh`
- `plan_mode_reasoning_effort` 控制计划模式下的推理强度,适合在 `/plan` 时单独拉高。
- `approval_policy = "on-request"` 表示由 Codex 决定何时向你申请批准,适合多数交互式场景。
- `sandbox_mode = "workspace-write"` 表示允许在当前工作区写文件,但不是完全放开机器权限。
- `web_search = "cached"` 表示默认启用缓存型网页搜索;如果要查最新资料,可以临时改成 `--search` 或把配置改成 `live`
- `cli_auth_credentials_store = "keyring"` 表示尽量把登录凭据放进系统密钥链,而不是纯文件。
- `trust_level = "trusted"` 表示把这个仓库标记为可信项目,这样项目级 `.codex/` 配置、rules 和 hooks 才会生效。
## 配置项详解
下面这些字段是最常用、也最值得理解的。
### `model`
`model` 决定 Codex 默认调用哪个模型。OpenAI 官方示例里推荐大多数用户使用 `gpt-5.5`;如果你更想显式指定编码导向模型,也可以改成例如 `gpt-5.3-codex`
```toml
model = "gpt-5.5"
```
### `model_provider`
`model_provider` 指向 `[model_providers]` 中的某个 provider id。默认 provider 是 `openai`
```toml
model_provider = "openai"
```
如果你没有自建代理、Azure 或本地模型需求,通常不需要改它。
### `model_reasoning_effort`
这个字段控制模型的推理强度,适合在速度和深度之间做平衡。
```toml
model_reasoning_effort = "medium"
```
一般可以这样理解:
- `low``medium` 适合日常改代码、解释报错、补文档。
- `high``xhigh` 更适合复杂重构、跨文件问题定位和方案分析。
### `plan_mode_reasoning_effort`
这是计划模式专用的推理强度覆盖项。也就是说,平时对话可以用 `medium`,但在 `/plan` 阶段单独切到 `high`
```toml
plan_mode_reasoning_effort = "high"
```
### `approval_policy`
官方支持三种主模式:
- `untrusted`:只自动执行已知安全的只读命令,其他操作更谨慎。
- `on-request`:由 Codex 决定何时请求批准。
- `never`:尽量不询问,风险最高。
```toml
approval_policy = "on-request"
```
如果是个人机器上的正常开发工作流,`on-request` 通常最稳妥。
### `sandbox_mode`
这个字段控制 Codex 执行命令时的沙箱范围:
- `read-only`
- `workspace-write`
- `danger-full-access`
```toml
sandbox_mode = "workspace-write"
```
通常建议从 `workspace-write` 起步,不要一开始就切到 `danger-full-access`
### `default_permissions`
新权限体系可以用 `default_permissions` 指向命名权限配置,官方内置了:
- `:read-only`
- `:workspace`
- `:danger-full-access`
```toml
default_permissions = ":workspace"
```
官方文档特别提醒,不要把这套权限配置和旧式的 `sandbox_mode` 混着用。二选一即可。
### `web_search`
Codex 自带第一方网页搜索工具,顶层配置支持:
- `disabled`
- `cached`
- `live`
```toml
web_search = "cached"
```
如果你查的是版本更新、价格、新闻或最近发布内容,改成 `live` 更合适。
### `review_model`
如果你经常在交互界面里使用 `/review`,可以单独给 review 指定模型:
```toml
review_model = "gpt-5.5"
```
不配置时,默认沿用当前会话模型。
### `cli_auth_credentials_store`
这个字段决定 CLI 如何保存登录凭据:
- `file`
- `keyring`
- `auto`
```toml
cli_auth_credentials_store = "keyring"
```
如果本机系统支持密钥链,优先用 `keyring``auto` 更合理。
## 自定义 provider 的正确写法
原始草稿里把真实密钥直接写进 TOML,这种方式不应该继续使用。官方给出的思路是:
1. 如果底层仍然使用 OpenAI 身份认证,就设置 `requires_openai_auth = true`
2. 如果底层需要单独的 provider key,就设置 `env_key = "YOUR_ENV_VAR"`
3. `wire_api` 目前只支持 `responses`
### 场景一:代理后端仍然走 OpenAI 登录
```toml
model = "gpt-5.3-codex"
model_provider = "proxy-openai"
[model_providers.proxy-openai]
name = "OpenAI Proxy"
base_url = "https://your-proxy.example.com/v1"
wire_api = "responses"
requires_openai_auth = true
```
这种写法的重点是:既然已经使用 OpenAI 认证,就不要再写 `env_key`,因为官方文档明确说明 `requires_openai_auth = true` 时会忽略 `env_key`
### 场景二:第三方兼容端点使用环境变量认证
```toml
model = "gpt-5.3-codex"
model_provider = "compatible-api"
[model_providers.compatible-api]
name = "Compatible API"
base_url = "https://api.example.com/v1"
wire_api = "responses"
env_key = "COMPATIBLE_API_KEY"
env_key_instructions = "export COMPATIBLE_API_KEY=..."
```
这里的 `env_key` 写的是环境变量名,不是密钥本身。
## 常用方法
Codex 真正常用的不是“装完能启动”,而是下面这些操作。
### 进入交互式会话
最常见的用法就是直接启动:
```bash
codex
```
如果启动时顺便给一句任务,也可以这样写:
```bash
codex "Explain this repository structure"
```
### 附带图片一起提问
CLI 支持把截图或设计图一起传给 Codex:
```bash
codex -i screenshot.png "Explain this error"
```
多张图片也可以一起传:
```bash
codex -i img1.png -i img2.jpg "Summarize these diagrams"
```
### 查询最新网页信息
官方文档说明,Codex CLI 默认可以使用缓存搜索;如果你需要最新信息,可以显式开启 live web search
```bash
codex --search "Check the latest release notes for this library"
```
### 非交互脚本化运行
如果要把 Codex 接进脚本或流水线,核心命令是 `codex exec`
```bash
codex exec "summarize the repo structure"
```
如果下游程序要消费结构化事件流,可以输出 JSON Lines:
```bash
codex exec --json "summarize the repo structure" | jq
```
还可以用 JSON Schema 限定最终输出格式,这对自动化很实用。
### 续跑上一次任务
非交互任务跑到一半后,如果你想接着上一轮继续做,可以使用 `resume`
```bash
codex exec "review the change for race conditions"
codex exec resume --last "fix the race conditions you found"
```
### Git 仓库保护
官方文档说明,`codex exec` 默认要求在 Git 仓库内运行,以降低误操作风险。只有在你明确知道环境安全时,才建议跳过这个检查:
```bash
codex exec --skip-git-repo-check "summarize files in this directory"
```
### 交互模式下最值得记住的 slash commands
下面这些命令最常用:
- `/model`:切换模型和推理强度。
- `/plan`:先让 Codex 给出计划,再决定是否进入执行。
- `/permissions`:动态调整当前会话的审批和权限级别。
- `/review`:让 Codex 检查当前工作区改动,优先指出风险和遗漏测试。
- `/diff`:查看当前工作树的变更。
- `/mcp`:检查本次会话可用的 MCP 工具。
- `/status`:查看当前模型、权限、上下文容量等状态。
- `/theme`:切换终端高亮主题。
## 一个更稳妥的使用建议
如果你刚开始用 Codex,建议先采用下面这套组合:
```toml
model = "gpt-5.5"
model_reasoning_effort = "medium"
approval_policy = "on-request"
sandbox_mode = "workspace-write"
web_search = "cached"
```
这套配置的特点是:
- 模型能力足够强。
- 推理强度不过高,响应速度更平衡。
- 允许写工作区,但不会默认放开整台机器。
- 大部分危险动作仍然会停下来让你确认。
等你熟悉自己的工作流后,再去细调 `plan_mode_reasoning_effort``review_model``profiles` 和自定义 provider。
## 参考链接
- [Codex CLI 官方总览](https://developers.openai.com/codex/cli)
- [Codex Authentication](https://developers.openai.com/codex/auth)
- [Config basics](https://developers.openai.com/codex/config-basic)
- [Configuration Reference](https://developers.openai.com/codex/config-reference)
- [Sample Configuration](https://developers.openai.com/codex/config-sample)
- [CLI Features](https://developers.openai.com/codex/cli/features)
- [Command line options](https://developers.openai.com/codex/cli/reference)
- [Slash commands](https://developers.openai.com/codex/cli/slash-commands)
- [Non-interactive mode](https://developers.openai.com/codex/noninteractive)