Skip to content

Codex 进阶配置

Codex CLI 的全部配置在 ~/.codex/config.toml。这一页讲怎么把它调到好用。

完整配置示例

toml
# 默认模型与 provider
model = "gpt-5.5"
model_provider = "kmt"
model_reasoning_effort = "medium"     # minimal | low | medium | high

# 审批策略:untrusted | on-failure | on-request | never
approval_policy = "on-request"

# 沙箱级别:read-only | workspace-write | danger-full-access
sandbox_mode = "workspace-write"

[sandbox_workspace_write]
network_access = true                  # 允许沙箱内联网(装依赖时需要)

# 快米兔 API
[model_providers.kmt]
name = "快米兔 API"
base_url = "https://api.52pay.com/v1"
env_key = "KMT_API_KEY"
wire_api = "responses"
request_max_retries = 3
stream_max_retries = 3
stream_idle_timeout_ms = 300000

# 备用:Chat Completions 协议(跑不支持 responses 的模型)
[model_providers.kmt-chat]
name = "快米兔 API (chat)"
base_url = "https://api.52pay.com/v1"
env_key = "KMT_API_KEY"
wire_api = "chat"

多 provider 并存

配置好多个 provider 后,用 --profile 一键切:

toml
[profiles.fast]
model = "gpt-5.4-mini"
model_provider = "kmt"
model_reasoning_effort = "low"

[profiles.deep]
model = "gpt-5.5"
model_provider = "kmt"
model_reasoning_effort = "high"

[profiles.claude]
model = "claude-sonnet-4-6"
model_provider = "kmt-chat"
bash
codex --profile fast    "改个 typo"
codex --profile deep    "重构整个鉴权模块"
codex --profile claude  "审查这段代码"

这是最实用的省钱开关

小活用 fastgpt-5.4-mini + low 推理),大活才用 deep。 推理强度从 high 降到 low,thinking token 能少一大截,而这些 token 是按输出价计费的。

推理强度怎么选

effort适合代价
minimal格式化、改文案、简单重命名几乎不产生 thinking token
low单文件小改动、写测试
medium日常开发(默认)
high跨模块重构、疑难 bug、架构设计thinking token 可能超过正文

命令行临时覆盖:

bash
codex --config model_reasoning_effort="high" "分析这个死锁"

审批与沙箱

这两个参数决定 Codex 能自己动多少东西:

approval_policy行为
untrusted任何命令都要你点确认(最安全)
on-request模型觉得需要时才问你(推荐)
on-failure只在命令失败时问
never全自动,不问(危险)
sandbox_mode行为
read-only只能读,不能改文件、不能跑命令
workspace-write能改当前工作区(推荐)
danger-full-access全盘可写,无沙箱

--full-auto / never + danger-full-access

这个组合会让模型不经确认地在你机器上执行任意命令。只在容器 / 一次性虚拟机里用。

项目级说明文件

和 Claude Code 的 CLAUDE.md 对应,Codex 读项目根目录的 AGENTS.md

markdown
# AGENTS.md

## 构建与测试
- 构建:`pnpm build`
- 测试:`pnpm test`
- Lint:`pnpm lint --fix`

## 约定
- TypeScript strict 模式,禁止 `any`
- 组件文件用 PascalCase,工具函数用 camelCase
- 提交前必须跑通 `pnpm lint && pnpm test`

写法建议见 CLAUDE.md 项目规范——两者的原则完全一样:规则要可判定

一个文件喂两个 Agent

如果你同时用 Claude Code 和 Codex,可以让 CLAUDE.md 只写一行 @AGENTS.md,把真正的内容都放在 AGENTS.md 里,避免两份文件互相漂移。

MCP 服务器

toml
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/projects"]

[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_PERSONAL_ACCESS_TOKEN = "ghp_xxx" }

详见 MCP 数据连接器

超时与重试

国内网络下建议放宽,避免长任务被本地掐断:

toml
[model_providers.kmt]
# ...
request_max_retries = 4          # 单次请求失败重试次数
stream_max_retries = 5           # 流式断开重连次数
stream_idle_timeout_ms = 600000  # 流式空闲超时(10 分钟)

重试次数别设太高

每次重试都是一次新的计费请求。设成 10 次,一个必然失败的请求会把钱花 10 遍。 3–5 次是合理区间;如果连续失败,先去查 错误代码,别靠重试硬扛。

排查配置问题

bash
# 看 Codex 实际读到了什么配置
codex --config-info

# 详细日志
RUST_LOG=debug codex exec "ping"

日志里能看到实际请求的 URL——确认它是不是打到了 https://api.52pay.com/v1/responses

配套阅读

文档持续更新 · 以 站内价格页 与控制台实际配置为准