Claude Code
通过 Echo Token Station 把 Claude Code 连接到 Claude 模型的设置,以及已确认的问题。
Claude Code 是 Anthropic 的编程用 AI 工具,在终端和 VS Code 里运行。Claude Code 用 Anthropic 格式连接 Echo。
验证情况:Claude Code 2.1.278(2026-09-27,Echo 的验证环境)
开始之前
- Claude Code 使用的是 Claude 的模型。Anthropic 不支持经由 Echo 这样的中转服务(网关)使用 Claude 以外的模型。Anthropic 也不推荐、不维护、不审核网关产品
- 设置了 Echo 的密钥期间,不会使用 claude.ai 的订阅。费用从 Echo 的余额中扣除
- 准备好 Echo 的 API 密钥,以及要用的 Claude 模型的 ID。提供的 Claude 模型及其 ID,可以在模型一览查看
设置
在终端里设置
设置下面的环境变量(设置在电脑上的、带名字的值)。把 sk-... 换成 Echo 的 API 密钥,把模型 ID 换成要用的模型的 ID。
bash
export ANTHROPIC_BASE_URL="https://token.echohub.io"
export ANTHROPIC_AUTH_TOKEN="sk-..."
export ANTHROPIC_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"| 变量 | 含义 |
|---|---|
ANTHROPIC_BASE_URL | 接入地址。不加 /v1。Claude Code 会加上 /v1/messages |
ANTHROPIC_AUTH_TOKEN | Echo 的 API 密钥。用 Authorization: Bearer 请求头发送 |
ANTHROPIC_MODEL | 要用的模型的 ID |
ANTHROPIC_DEFAULT_OPUS_MODEL、ANTHROPIC_DEFAULT_SONNET_MODEL | 在 Claude Code 里选择「opus」「sonnet」时使用的模型的 ID |
ANTHROPIC_DEFAULT_HAIKU_MODEL | 选择「haiku」时,以及后台处理(生成会话名等)使用的模型的 ID |
- 不设置模型 ID 时,Claude Code 会用它自己默认的模型 ID 调用。Echo 不提供那个 ID 时会出错,而且要 1 分钟以上才会显示错误(见下面的「已确认的问题」)
ANTHROPIC_DEFAULT_OPUS_MODEL等 3 个变量,也要填 Echo 提供的模型的 ID。填了 Echo 不提供的 ID,用到那个模型时会出错ANTHROPIC_API_KEY里放着别的密钥(Anthropic 的密钥等)时,先删掉再设置。Claude Code 会用x-api-key请求头发送这个变量里的密钥
写进设置文件
不想每次都设置时,写进 ~/.claude/settings.json(Windows 是 %USERPROFILE%\.claude\settings.json)的 env。
JSON
{
"env": {
"ANTHROPIC_BASE_URL": "https://token.echohub.io",
"ANTHROPIC_AUTH_TOKEN": "sk-...",
"ANTHROPIC_MODEL": "claude-sonnet-5",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5"
}
}在 shell 和设置文件里设置了同一个变量时,使用设置文件里的值。
注意:不要把密钥写进项目的 .claude/settings.json。这个文件会进入代码仓库,与其他人共享。
在 VS Code 扩展里使用
写进 VS Code 用户设置(用命令「Preferences: Open User Settings (JSON)」打开)的 claudeCode.environmentVariables。扩展会在启动前确认这个设置里的认证信息。
JSON
{
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "https://token.echohub.io" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-..." },
{ "name": "ANTHROPIC_MODEL", "value": "claude-sonnet-5" }
]
}确认能用
- 在设置了环境变量的终端里运行下面的命令。最后一行显示
200,上面显示包含"type":"message"的 JSON,就说明接入地址和密钥设置正确
bash
curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model": "claude-sonnet-5", "max_tokens": 16, "messages": [{"role": "user", "content": "こんにちは"}]}'- 在同一个终端里启动
claude,运行/status。确认接入地址是https://token.echohub.io,认证信息显示的是ANTHROPIC_AUTH_TOKEN - 随便问点什么,没有出错地返回回答就完成了。控制台的「呼び出し履歴」(调用记录)里也会出现记录
已确认的问题
以下是 2026-09-27 在 Echo 的验证环境中确认的行为。
| 情况 | 在 Claude Code 里的表现 | 处理方法 |
|---|---|---|
| 余额不足 | 显示 Failed to authenticate. API Error: 403 Insufficient balance。虽然写着「认证失败」,原因不是密钥而是余额 | 充值 |
| 密钥错误(401)、模型 ID 错误(503)、拥挤(429、529) | 显示错误之前会持续重试。验证时,有时 60 秒以上什么都不显示 | 想尽快查明原因时,用上面的 curl 查看 HTTP 状态码和错误正文。重试次数可以用环境变量 CLAUDE_CODE_MAX_RETRIES(默认 10 次)减少 |
| 回答过程中,上游 API 返回错误或连接断开 | 不显示错误,那一次的回答可能在中途结束或是空的 | 把同样的指示再发一次。修复预定:[ ] |
用到计算 token 数的 API(/v1/messages/count_tokens)时 | Echo 不支持这个 API,Claude Code 会改为按字数估算。/context 显示的是估算值 | 不需要处理。不影响价格的计算 |
上游 API 返回错误的情况,以及错误正文的一览,见错误与处理。
不能正常使用时
| 症状 | 原因 | 处理方法 |
|---|---|---|
| 一启动就出现登录页面 | Claude Code 没有读到 Echo 的密钥 | 在 shell 或 ~/.claude/settings.json 的 env 里设置 ANTHROPIC_AUTH_TOKEN |
| 启动时出现有两份认证信息的警告 | claude.ai 的登录和 Echo 的密钥同时有效 | 用 /logout 清除 claude.ai 的登录 |
| 长时间没有回答,之后出现 401 错误 | 密钥错误、已停用、已过期,或使用上限已用完 | 在控制台确认密钥的状态和使用上限 |
404 和 Invalid URL (POST /v1/v1/messages) | ANTHROPIC_BASE_URL 加了 /v1 | 改成 https://token.echohub.io |
Failed to authenticate. API Error: 403 Insufficient balance | 余额不足 | 充值 |
403 和 This API key has reached its spending limit | 密钥剩余的使用上限不够 | 查看上限与速率限制 |
长时间没有回答,之后出现 503 和 The model … does not exist or is not available | 模型 ID 错误,或 Echo 不提供的模型 | 确认 ANTHROPIC_MODEL 等变量的模型 ID |
400 并出现 context_management 或 Extra inputs are not permitted 等 | 上游 API 不接受 Claude Code 试验性功能的参数 | 设置 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
Claude Code 会在请求里附上区分终端和会话的 ID。Echo 不做修改地把这个值传给上游的 Anthropic。详情见数据处理。
信息来源
| 内容 | 来源 | 确认日期 |
|---|---|---|
用接入地址和模型的环境变量连接,余额不足、重试、回答中途停止时的表现,加了 /v1 时的 404 | Echo 验证环境中的实测(Claude Code 2.1.278)。使用与正式环境相同的中转设置,并用返回测试响应的服务器代替上游 API | 2026-09-27 |
接入地址和密钥的环境变量、ANTHROPIC_API_KEY 用 x-api-key 发送、设置文件的优先顺序、VS Code 的设置、确认用的 curl 和 /status、错误处理表 | https://code.claude.com/docs/en/llm-gateway-connect | 2026-09-27 |
| 不支持 Claude 以外的模型、不推荐、维护、审核网关产品、不再使用订阅 | https://code.claude.com/docs/en/llm-gateway | 2026-09-27 |
没有 /v1/messages/count_tokens 时按字数估算 | https://code.claude.com/docs/en/llm-gateway-protocol | 2026-09-27 |
重试次数和 CLAUDE_CODE_MAX_RETRIES | https://code.claude.com/docs/en/errors | 2026-09-27 |