最近在用几个 AI 命令行工具,想接自己的 API 代理,折腾了一番总算搞定了。记录一下配置过程,三个系统都能用。

Claude Code

直接装:

1
npm install -g @anthropic-ai/claude-code

配置文件在这:

系统 路径
Windows %USERPROFILE%\.claude\settings.json
macOS/Linux ~/.claude/settings.json

打开编辑器(Windows 用 notepad,Mac/Linux 用 vimnano):

1
2
3
4
5
# Windows
notepad $env:USERPROFILE\.claude\settings.json

# macOS/Linux
vim ~/.claude/settings.json

填这些:

1
2
3
4
5
6
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.foobar.example/claude",
"ANTHROPIC_AUTH_TOKEN": "sk-xxxx"
}
}

改完就能用了:

1
claude

Codex

装起来:

1
npm install -g @openai/codex

配置路径:

系统 路径
Windows %USERPROFILE%\.codex\config.toml
macOS/Linux ~/.codex/config.toml

编辑配置:

1
2
3
4
5
# Windows
notepad $env:USERPROFILE\.codex\config.toml

# macOS/Linux
vim ~/.codex/config.toml

写入:

1
2
3
4
5
6
7
8
model = "gpt-5"
model_provider = "openai-chat-completions"

[model_providers.openai-chat-completions]
name = "PROXY"
base_url = "https://api.foobar.example/v1"
env_key = "PROXY_OPENAI_API_KEY"
wire_api = "chat"

Codex 比较麻烦,还要设环境变量:

Windows:

1
2
3
4
5
# 临时的
$env:PROXY_OPENAI_API_KEY = "sk-xxxx"

# 永久的
[System.Environment]::SetEnvironmentVariable('PROXY_OPENAI_API_KEY', 'sk-xxxx', 'User')

macOS/Linux:

1
2
3
4
5
6
# 临时的
export PROXY_OPENAI_API_KEY="sk-xxxx"

# 永久的,加到配置文件
echo 'export PROXY_OPENAI_API_KEY="sk-xxxx"' >> ~/.bashrc # 或 ~/.zshrc
source ~/.bashrc

Gemini CLI

装上:

1
npm install -g @google/gemini-cli

Gemini 没有专门的配置文件,直接用环境变量或者 .env 文件。

方法一:.env 文件

1
2
3
4
5
# Windows
notepad $env:USERPROFILE\.env

# macOS/Linux
vim ~/.env

写这些:

1
2
3
GOOGLE_GEMINI_BASE_URL=https://api.foobar.example/gemini
GEMINI_API_KEY=sk-xxxx
GEMINI_MODEL=gemini-2.5-pro

**方法二:**直接设环境变量

Windows:

1
2
3
[System.Environment]::SetEnvironmentVariable('GOOGLE_GEMINI_BASE_URL', 'https://api.foobar.example/gemini', 'User')
[System.Environment]::SetEnvironmentVariable('GEMINI_API_KEY', 'sk-xxxx', 'User')
[System.Environment]::SetEnvironmentVariable('GEMINI_MODEL', 'gemini-2.5-pro', 'User')

macOS/Linux:

1
2
3
4
5
6
7
cat >> ~/.bashrc << 'EOF'
export GOOGLE_GEMINI_BASE_URL=https://api.foobar.example/gemini
export GEMINI_API_KEY=sk-xxxx
export GEMINI_MODEL=gemini-2.5-pro
EOF

source ~/.bashrc

对比

工具 配置方式 环境变量 难度
Claude Code JSON 配置文件 不需要 简单
Codex TOML 配置 + 环境变量 需要 有点麻烦
Gemini CLI 环境变量或 .env 需要 还行

几个坑

API KEY 别泄露了

记得把配置文件加到 .gitignore

1
2
3
.env
settings.json
config.toml

环境变量要持久化

Windows 用系统环境变量或者 PowerShell 的 $PROFILE

macOS 加到 ~/.zshrc(默认用 Zsh)。

Linux 加到 ~/.bashrc~/.zshrc

文件权限

Windows:

1
icacls "$env:USERPROFILE\.claude\settings.json" /inheritance:r /grant:r "$env:USERNAME:F"

macOS/Linux:

1
2
3
chmod 600 ~/.claude/settings.json
chmod 600 ~/.codex/config.toml
chmod 600 ~/.env

常见问题

找不到配置目录?

手动建一个:

1
2
3
# Windows
mkdir $env:USERPROFILE\.claude -Force
mkdir $env:USERPROFILE\.codex -Force

环境变量不生效?

Windows 重启终端,macOS/Linux 跑一下 source ~/.bashrc

想切换不同的 API?

Codex 可以配多个 model_providers,改 model_provider 字段就行。