主题
一键配置脚本
把 Base URL 和 API Key 设进环境变量是接入各种 CLI(Claude Code / Codex / Gemini CLI)和部分桌面客户端的前置动作。本页给的是 可直接复制粘贴运行 的整段脚本,避免一行一行抄。
WARNING
脚本里 sk-你的key 字面替换成你自己 创建 API Key 拿到的 sk-xxxxxxxx,不要原样运行。
macOS / Linux(zsh / bash)
打开终端,先确认你的 shell 配置文件:
bash
echo $SHELL
# /bin/zsh → 用 ~/.zshrc
# /bin/bash → 用 ~/.bashrc(macOS 旧机器或 Linux)然后把下面整段贴进终端(自动判断 shell 类型 + 追加配置 + 立即生效):
bash
WHY01_KEY="sk-你的key"
WHY01_BASE="https://s1.why01.top"
# 自动选 rc 文件
RC_FILE="$HOME/.zshrc"
[ -n "$BASH_VERSION" ] && RC_FILE="$HOME/.bashrc"
# 追加 why01 配置块(带 marker,便于以后替换)
cat >> "$RC_FILE" <<EOF
# === why01 API begin ===
# Claude Code
export ANTHROPIC_BASE_URL=$WHY01_BASE
export ANTHROPIC_AUTH_TOKEN=$WHY01_KEY
# OpenAI 兼容(OpenAI SDK / 多数桌面客户端)
export OPENAI_BASE_URL=$WHY01_BASE/v1
export OPENAI_API_KEY=$WHY01_KEY
# Codex CLI
export WHY01_API_KEY=$WHY01_KEY
# Gemini CLI(覆盖三种命名)
export GEMINI_API_KEY=$WHY01_KEY
export CODE_ASSIST_ENDPOINT=$WHY01_BASE
export GOOGLE_GEMINI_BASE_URL=$WHY01_BASE
# === why01 API end ===
EOF
# 立即让当前终端生效
source "$RC_FILE"
echo "OK: $RC_FILE 已写入;新开终端也会自动加载。"Windows(PowerShell)
按 Win + X → 终端(管理员) 不是必须,普通用户权限就够(写的是用户级环境变量)。整段贴入 PowerShell:
powershell
$Why01Key = "sk-你的key"
$Why01Base = "https://s1.why01.top"
# Claude Code
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", $Why01Base, "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", $Why01Key, "User")
# OpenAI 兼容
[Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "$Why01Base/v1", "User")
[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", $Why01Key, "User")
# Codex CLI
[Environment]::SetEnvironmentVariable("WHY01_API_KEY", $Why01Key, "User")
# Gemini CLI(覆盖三种命名)
[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", $Why01Key, "User")
[Environment]::SetEnvironmentVariable("CODE_ASSIST_ENDPOINT", $Why01Base, "User")
[Environment]::SetEnvironmentVariable("GOOGLE_GEMINI_BASE_URL", $Why01Base, "User")
Write-Host "OK: 用户环境变量已写入。" -ForegroundColor Green
Write-Host "请关闭所有终端窗口后重新打开 —— 老窗口仍是旧 PATH。" -ForegroundColor YellowWindows 重要说明
SetEnvironmentVariable("...", "User") 写入的是 用户级永久环境变量——已打开的终端 / IDE 不会 立即看到,必须全部关闭重开。VS Code / Cursor 同理需要重启。
验证脚本
设完之后跑一段脚本验证:
bash
echo "=== Claude Code ==="
echo " BASE = $ANTHROPIC_BASE_URL"
echo " AUTH = ${ANTHROPIC_AUTH_TOKEN:0:8}***(仅前 8 位)"
echo "=== OpenAI 兼容 ==="
echo " BASE = $OPENAI_BASE_URL"
echo " KEY = ${OPENAI_API_KEY:0:8}***"
echo "=== Codex / Gemini ==="
echo " WHY01_API_KEY = ${WHY01_API_KEY:0:8}***"
echo " GEMINI_API_KEY = ${GEMINI_API_KEY:0:8}***"
echo "=== 实际调用一次 ==="
curl -sS https://s1.why01.top/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5-mini","messages":[{"role":"user","content":"ping"}]}' \
| head -c 400powershell
# 注意:刚设完要重开 PowerShell,不然这个新窗口看不到
Write-Host "=== Claude Code ==="
Write-Host " BASE = $env:ANTHROPIC_BASE_URL"
Write-Host " AUTH = $($env:ANTHROPIC_AUTH_TOKEN.Substring(0,[Math]::Min(8,$env:ANTHROPIC_AUTH_TOKEN.Length)))***"
Write-Host "=== OpenAI 兼容 ==="
Write-Host " BASE = $env:OPENAI_BASE_URL"
Write-Host " KEY = $($env:OPENAI_API_KEY.Substring(0,[Math]::Min(8,$env:OPENAI_API_KEY.Length)))***"
Write-Host "=== 实际调用一次 ==="
$body = '{"model":"gpt-5-mini","messages":[{"role":"user","content":"ping"}]}'
curl.exe -sS https://s1.why01.top/v1/chat/completions `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
-d $body输出 200 + 有 choices 字段就是接通了。401 / 403 见 错误码速查。
撤销 / 清理
如果想清干净(比如换 Key、回归官方账号):
bash
# 删 rc 文件里 marker 之间的整段(保险起见先备份)
RC_FILE="$HOME/.zshrc" # bash 用户改成 ~/.bashrc
cp "$RC_FILE" "$RC_FILE.bak.$(date +%s)"
sed -i.tmp '/# === why01 API begin ===/,/# === why01 API end ===/d' "$RC_FILE"
rm -f "$RC_FILE.tmp"
echo "已删除 why01 配置块;备份在 $RC_FILE.bak.*"
# 当前终端清掉变量
unset ANTHROPIC_BASE_URL ANTHROPIC_AUTH_TOKEN OPENAI_BASE_URL OPENAI_API_KEY \
WHY01_API_KEY GEMINI_API_KEY CODE_ASSIST_ENDPOINT GOOGLE_GEMINI_BASE_URLpowershell
$names = @(
"ANTHROPIC_BASE_URL", "ANTHROPIC_AUTH_TOKEN",
"OPENAI_BASE_URL", "OPENAI_API_KEY",
"WHY01_API_KEY",
"GEMINI_API_KEY", "CODE_ASSIST_ENDPOINT", "GOOGLE_GEMINI_BASE_URL"
)
foreach ($n in $names) {
[Environment]::SetEnvironmentVariable($n, $null, "User")
}
Write-Host "已清空 8 个用户环境变量。重开终端生效。" -ForegroundColor Green常见问题
我用的不是 zsh / bash,是 fish / nushell
把追加段改写成你 shell 的语法即可(fish 用 set -Ux ANTHROPIC_BASE_URL https://...,nushell 用 $env.ANTHROPIC_BASE_URL = "...")。其他逻辑(marker、追加文件、source)一致。
Windows 不想永久写到注册表,只想临时设
直接在 PowerShell 当前会话内 $env:OPENAI_API_KEY = "sk-...",关窗即失效。适合调试或敏感环境。
同一台机器要在 why01 和 OpenAI 官方之间切换
不要把 OPENAI_API_KEY 同时设两套——后写入的会覆盖先写入的。两种处理:
- 用项目级
.env(dotenv/direnv)按目录加载不同 key - 写两个 alias:
alias use-why01='export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://s1.why01.top/v1'和alias use-openai='export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://api.openai.com/v1'
多人共用一台机器,写到全局会泄露 Key
上面脚本写的都是当前用户的环境变量(rc 文件 / User 范围),其他用户读不到。但同一用户登录的所有进程都能读——不要在多人共享同一账号的机器上跑这套。
下一步
变量设完,按工具看具体接入: