环境变量与配置文件不生效怎么排查
改了 Key、Base URL 或模型,工具却还是用旧的,或者干脆不走 HRouter。这是最让人困惑的一类问题,原因几乎都是:配置写在了错的地方、被别处的配置覆盖,或者进程没有重新读取。按下面的顺序排查。
先做一次对照测试
用 curl 绕过所有工具,直接验证 Key 和地址本身:
curl -i https://hrouter.net/v1/models \
-H "Authorization: Bearer $HROUTER_API_KEY"
- 返回 200:Key 和网络没问题,问题出在工具的配置上,继续往下看。
- 返回 401:Key 本身有问题,见 API 401 报错。
1. 必须重启进程
环境变量和配置文件只在进程启动时读取:
- 终端里改了环境变量:关闭这个终端窗口,重新打开。
- 改了
settings.json、config.toml、auth.json:重新启动claude或codex。 - 在 VSCode、JetBrains 里:完全退出并重新打开 IDE,只重新加载窗口不一定够。
2. 检查环境变量到底有没有值
macOS / Linux:
echo $ANTHROPIC_BASE_URL
echo $OPENAI_BASE_URL
Windows PowerShell:
echo $env:ANTHROPIC_BASE_URL
echo $env:OPENAI_BASE_URL
输出为空,说明这个终端里没有设置。注意 Windows 上用 setx 或系统环境变量设置后,只对之后新开的终端生效。
3. 多处配置互相覆盖
同一个设置写在多个地方时,优先级不一样,旧的值可能在起作用:
| 工具 | 可能的配置位置 |
|---|---|
| Claude Code | ~/.claude/settings.json 的 env、系统环境变量、项目目录下的 .claude/settings.json |
| Codex | ~/.codex/config.toml、~/.codex/auth.json、项目里的配置 |
| Gemini CLI | 三个环境变量 GOOGLE_GEMINI_BASE_URL、GEMINI_API_KEY、GEMINI_MODEL |
处理办法:只保留一处。排查时先把其他位置的同名配置注释掉或删除,确认生效后再整理。用 HRouter Desktop 配置时,它会统一写入,不容易出现冲突。
4. 路径写错
| 系统 | Claude Code | Codex |
|---|---|---|
| Windows | C:\Users\你的用户名\.claude\ |
C:\Users\你的用户名\.codex\ |
| Mac / Linux | ~/.claude/ |
~/.codex/ |
- 文件夹名以点开头,Windows 资源管理器里需要显示隐藏项目才看得到。
- 文件名要精确:Claude Code 编辑器集成需要的是
config.json,CLI 配置是settings.json,不要混淆,见 Claude Code VSCode。
5. 格式错误
settings.json、auth.json必须是合法 JSON:引号是半角双引号,不能有多余的逗号,不能有注释。config.toml的节名要一致:model_provider = "hrouter"对应[model_providers.hrouter],见 Codex 安装与配置。- 复制粘贴时,聊天软件或文档工具可能把引号替换成中文引号,粘贴后检查一下。
6. claude 或 codex 命令不存在
npm 的全局目录没有加入 PATH:
npm config get prefix
确认输出路径下的 bin 目录(Windows 是该目录本身)在 PATH 里。加入后重新打开终端。
7. IDE 终端和系统终端不一致
IDE 可能没有继承你 shell 里设置的环境变量。在 IDE 自带终端里重新执行 echo 检查,或者改用配置文件(settings.json、config.toml)而不是环境变量,见 Claude Code JetBrains、Codex JetBrains。
8. 确认请求真的发给了 HRouter
到 使用记录 看有没有刚才的请求:
- 有:配置生效了,问题是别的(模型、额度等),按报错码排查。
- 没有:请求没有到达 HRouter,说明还在走旧地址,回到上面的步骤检查。