API配置改了却没生效,先确认“哪个进程读哪个文件、哪个字段被覆盖”。CC Switch 负责写入和切换配置,小贺 API 提供接口服务;两者都不是客户端自身的优先级规则。
Codex:先看启动参数,再看配置层
按2026年10月11日的官方配置说明,从高到低是:CLI 参数与 --config;受信任项目内 .codex/config.toml(离当前目录近者优先);选中的 profile 文件;用户 ~/.codex/config.toml;工作区云端默认值;系统配置;内置默认值。管理员 requirements.toml 的强制约束要另看,不能用个人文件解除。
具体字段还有作用域限制:model_provider、model_providers 等提供商配置不能放进项目级文件来覆盖,应放在用户配置。不要据此推出“所有环境变量都最高优先级”;认证变量与模型配置是不同字段。
先运行 codex --version 记录版本;在会话中用 /status 核对模型和工作目录。排查某个 model 值时,检查实际启动命令是否含 --model 或 -c model=...,再检查当前目录及其父目录中的项目文件,最后检查用户配置。不要输出 auth.json 的凭证。
Claude Code:文件优先级与环境变量分别判断
settings 文件按管理员设置、命令行 --settings、项目本地 .claude/settings.local.json、项目共享 .claude/settings.json、用户 ~/.claude/settings.json 排序。列表与安全字段有专门规则,不能把整个文件简单当成替换关系。
环境变量要按字段判断。例如 ANTHROPIC_MODEL 可覆盖文件中的 model,而启动参数 --model 可覆盖这两者;ANTHROPIC_DEFAULT_MODEL 只在没有文件设置 model 时作为默认值。运行 /status 查看加载的配置,设置解析错误则运行 claude doctor。不要凭“重启过”就推断加载了哪个文件。
一个只改模型的排查例子
教学场景:Claude Code 用户配置写了模型A,旧 PowerShell 窗口仍带 ANTHROPIC_MODEL=模型B。先记录 /status 的模型,只查看非密钥变量:
[Environment]::GetEnvironmentVariable('ANTHROPIC_MODEL', 'Process')
[Environment]::GetEnvironmentVariable('ANTHROPIC_MODEL', 'User')
确认进程变量是冲突来源后,仅移除当前终端的该变量,再从此终端启动一次新的 claude 会话:
Remove-Item Env:ANTHROPIC_MODEL -ErrorAction SilentlyContinue
claude
预期模型回到文件设置;如仍是B,再查启动参数、项目文件或管理员约束。这个命令不删除用户级永久变量,也不会改变已经启动的旧进程。若新开的终端再次出现B,检查系统用户变量或终端启动脚本,而不是反复改Key。
如何确认本次修正有效
保持地址、Key、模型中另外两项不变,新开会话,只发“回复 OK”。将修改前后的配置来源、请求时间、实际请求模型和状态码放在同一条记录中。界面保存成功只证明保存动作完成;请求成功只证明该配置当时可调用,不能独立证明第三方网关实际使用的上游模型身份。
资料来源
下一步
继续阅读与你当前问题相关的教程:


