跳到正文

/claude-code

Claude Code

把 Claude Code 接到 OpenToken:改 ~/.claude/settings.json 或用 CC Switch 一键导入,含模型切换与两个已知副作用。

Claude Code 靠两个环境变量决定「请求发到哪、用什么身份」。把它们指向 OpenToken,claude 命令就会走中转,其余用法完全不变。

在用户级配置文件里加一个 env 块。这是官方推荐的做法,比在 shell 里 export 更可靠——原因见下面为什么不写在 shell 里

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://otokapi.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-YOUR-API-KEY"
  }
}
文件不存在就新建。如果已经有 env 块,把这两行并进去,不要整体覆盖原有内容。

sk-YOUR-API-KEY 换成你在控制台生成的密钥,存盘后重启 claude 即可生效。

为什么是 AUTH_TOKEN 而不是 API_KEY

Claude Code 有两个传密钥的变量,它们发出去的请求头不一样:

变量实际发送的请求头
ANTHROPIC_AUTH_TOKENAuthorization: Bearer <你的密钥>
ANTHROPIC_API_KEYX-Api-Key: <你的密钥>

OpenToken 两种都认,但请用 ANTHROPIC_AUTH_TOKEN

  • 官方文档对「不确定该用哪个」给出的答复就是用 ANTHROPIC_AUTH_TOKEN
  • 设了 ANTHROPIC_API_KEY 之后,Claude Code 在交互模式下会弹一次确认框,问你是否用这个密钥覆盖已登录的订阅账号。多一步打断,没有任何好处。

为什么不写在 shell 里

export ANTHROPIC_BASE_URL=... 能跑,但有两个坑。

第二个坑是后台任务:shell 里设的变量传不到 Claude Code 派生的后台 agent。官方说法很直接——任何需要后台任务也走网关的场景,都应该用配置文件而不是 shell 变量。

验证是否接通

最直接的办法是绕开 Claude Code,用 curl 直接打一次转发端点。这样能把「中转站的问题」和「客户端配置的问题」分开:

终端
curl -X POST "https://otokapi.com/v1/messages" \
  -H "Authorization: Bearer sk-YOUR-API-KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-4-6","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'
返回 JSON 说明密钥和地址都对了。返回 401 检查密钥,返回 404 检查地址是不是多写了 /v1。

curl 通了之后再启动 claude 随便问一句话,能正常回复就说明整条链路通了。会话里输入 /status 可以查看 Claude Code 当前识别到的配置。

指定模型(可选)

不配置模型时,Claude Code 用它自己的默认模型名,由 OpenToken 转发到上游,通常直接可用。只有想固定用某个模型时才需要下面这段。

先查你的账号能用哪些模型:

终端
curl -H "Authorization: Bearer sk-YOUR-API-KEY" https://otokapi.com/v1/models

把拿到的 ID 填进 env 块:

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://otokapi.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-YOUR-API-KEY",
    "ANTHROPIC_MODEL": "换成你查到的模型 ID",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "换成你查到的模型 ID",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "换成你查到的模型 ID",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "换成一个便宜的小模型 ID"
  }
}
四个变量各管一档。只想改主模型就只写 ANTHROPIC_MODEL,其余三个可以不写。

还有一点要知道:走中转时 Claude Code 不校验模型名,任何字符串都原样发出去。所以模型 ID 写错不会在启动时报错,要等第一次请求才暴露。

两个已知副作用

指向第三方地址后,Claude Code 有两个功能会自动关闭。这不是 OpenToken 的限制,是客户端对非官方端点的默认策略。

MCP 工具搜索默认关闭

ANTHROPIC_BASE_URL 指向非官方主机时,MCP tool search 默认被禁用。依赖这个功能的话可以显式打开:

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://otokapi.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-YOUR-API-KEY",
    "ENABLE_TOOL_SEARCH": "true"
  }
}
前提是中转站原样转发 tool_reference 块。打开后如果 MCP 工具行为异常,去掉这一行即可。

Remote Control 不可用

从 Claude Code v2.1.196 起,只要 ANTHROPIC_BASE_URL 指向 api.anthropic.com 以外的主机,Remote Control 就会被禁用。这个没有开关,用中转就用不了它。

切回官方账号

想暂时用回自己的 Claude 订阅,把 ~/.claude/settings.json 里的 env 块删掉再重启即可。

需要经常来回切,用 CC Switch 比手动改文件省事得多。