Skip to content

一键配置脚本

把 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 Yellow

Windows 重要说明

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 400
powershell
# 注意:刚设完要重开 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_URL
powershell
$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 同时设两套——后写入的会覆盖先写入的。两种处理:

  1. 用项目级 .envdotenv/direnv)按目录加载不同 key
  2. 写两个 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 范围),其他用户读不到。但同一用户登录的所有进程都能读——不要在多人共享同一账号的机器上跑这套。

下一步

变量设完,按工具看具体接入: