主题
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 "审查这段代码"这是最实用的省钱开关
小活用 fast(gpt-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。
