Claude Code
在 Claude Code 中使用平台的模型:安装、settings.json 配置、模型映射、上下文窗口与常见报错的处理。
更新于 2026-10-24·阅读约 6 分钟
Claude Code 通过 Anthropic Messages 格式(POST /v1/messages)调用平台的模型,平台上的对话模型均可使用。配置前先完成编程工具概览「准备」中的三步。
安装
#bashnpm install -g @anthropic-ai/claude-code
claude --version输出版本号表示安装成功。Windows 需先安装 WSL 或 Git for Windows。
配置
#Claude Code 从 settings.json 的 env 字段读取环境变量,写在这里对所有终端生效:
| 系统 | 文件路径 |
|---|---|
| macOS / Linux | ~/.claude/settings.json |
| Windows | C:\Users\<用户名>\.claude\settings.json |
文件不存在时新建。写入以下内容,将 YOUR_API_KEY 换成 SciRouter 的 Key、YOUR_MODEL_ID 换成平台的模型 id:
json{
"env": {
"ANTHROPIC_BASE_URL": "https://api.scirouter.cn",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "YOUR_MODEL_ID",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "YOUR_MODEL_ID"
}
}文件中已有其他设置时,只合并 env 中的这几项。ANTHROPIC_BASE_URL 不带 /v1:Claude Code 在其后拼接 /v1/messages。
也可只在当前终端设置,不写入文件:
bashexport ANTHROPIC_BASE_URL="https://api.scirouter.cn"
export ANTHROPIC_AUTH_TOKEN="$SCIROUTER_API_KEY"
export ANTHROPIC_MODEL="YOUR_MODEL_ID"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="YOUR_MODEL_ID"
claude环境变量
#| 环境变量 | 取值 | 说明 |
|---|---|---|
ANTHROPIC_BASE_URL | https://api.scirouter.cn | 不带 /v1 |
ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY | SciRouter 的 API Key | 设置其一。前者以 Authorization: Bearer 发送,后者以 x-api-key 发送 |
ANTHROPIC_MODEL | 平台的模型 id | 启动时使用的模型 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | 平台的模型 id | haiku 别名对应的模型;Claude Code 执行后台小任务时也使用它 |
ANTHROPIC_DEFAULT_SONNET_MODEL、ANTHROPIC_DEFAULT_OPUS_MODEL | 平台的模型 id | sonnet、opus 别名对应的模型,见多个模型 |
CLAUDE_CODE_SUBAGENT_MODEL | 平台的模型 id | 子代理未另行指定模型时使用的模型,见多个模型 |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | 所选模型的输出上限 | 见输出上限 |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | 所选模型的上下文窗口 | 见上下文窗口 |
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY | 1 | 见模型发现 |
CLAUDE_CODE_ATTRIBUTION_HEADER | 0 | 不发送归因块,见归因块 |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS | 1 | 见上游为其他厂商的兼容接口 |
ANTHROPIC_AUTH_TOKEN 与 ANTHROPIC_API_KEY 的变量名由 Claude Code 定义,取值为 SciRouter 控制台创建的 API Key(以 sk-sr- 开头),不能使用 Anthropic 官方的 Key。两者都设置且不是同一个 Key 时,请求返回 401;其中一个为空串时(发出空的 Authorization: Bearer)按未携带处理。shell 中已设置 ANTHROPIC_API_KEY 为官方 Key 的,删除该变量或改为 SciRouter 的 Key。
启动
#bashcd my-project
claude首次进入目录时选择信任该目录。发送一条消息,收到回答即接入成功;该请求出现在控制台调用日志中,调用格式为 Anthropic。
首次启动仍出现登录引导时,在 ~/.claude.json(Windows 为 C:\Users\<用户名>\.claude.json)中加入以下一项后重新启动。文件已存在时只加这一项,不覆盖其他内容:
json{
"hasCompletedOnboarding": true
}多个模型
#haiku、sonnet、opus 三个别名可分别映射到平台的不同模型,在会话中输入 /model 切换:
json{
"env": {
"ANTHROPIC_BASE_URL": "https://api.scirouter.cn",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "YOUR_MODEL_ID",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "YOUR_MODEL_ID",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "YOUR_MODEL_ID",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "YOUR_MODEL_ID",
"CLAUDE_CODE_SUBAGENT_MODEL": "YOUR_MODEL_ID"
}
}haiku用于后台小任务(生成标题、摘要等),宜映射到响应快、单价低的模型。- Claude Code 在检索代码、规划任务时会启动内置的子代理(如 Explore、Plan)。子代理所用的模型没有映射到平台的模型 id 时,请求可能返回 404
model_not_found;设置CLAUDE_CODE_SUBAGENT_MODEL后,未另行指定模型的子代理改用它。 - 切换到未映射的别名时,Claude Code 请求 Anthropic 的模型名;平台没有为该名称配置别名时返回 404
model_not_found。
VS Code 与 JetBrains
#Claude Code 的 IDE 插件使用同一份 settings.json,完成上文配置后在 IDE 的插件市场搜索 Claude Code 安装即可。
输出上限
#Claude Code 不识别平台的模型 id 时,默认每次请求 32000 个输出 token。超过模型或套餐的单次上限时,平台按上限发出,不返回错误,处理方式见 Messages(Anthropic 格式)「max_tokens」。回答达到上限时 stop_reason 为 max_tokens,与厂商截断时相同。
将 CLAUDE_CODE_MAX_OUTPUT_TOKENS 设为模型的输出上限后,Claude Code 按真实上限规划。上限见模型中心的详情页。
上下文窗口
#Claude Code 对不识别的模型 id 一律按 20 万 token 计算压缩对话的时机。所选模型的窗口更小时,用 CLAUDE_CODE_MAX_CONTEXT_TOKENS 写明真实窗口(见模型中心的详情页),Claude Code 才会按时压缩。
未设置时由平台兜底:输入、或输入加 max_tokens 放不进窗口的请求,平台在发出前返回 400 context_window_exceeded,Claude Code 根据 message 处理后重发。
| 情况 | message 包含 | Claude Code 的处理 |
|---|---|---|
| 输入超过窗口 | prompt is too long: N tokens > M maximum | 按两个数字压缩历史后重发 |
输入未超过窗口,加上 max_tokens 后超过 | input length and `max_tokens` exceed context limit | 调小 max_tokens 后重发 |
兜底方式每次多一个往返,建议设置 CLAUDE_CODE_MAX_CONTEXT_TOKENS。
模型发现
#设置 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 后,Claude Code 启动时读取一次平台的模型列表并放入 /model,只保留 id 中含 claude 或 anthropic 的模型。其他模型通过 ANTHROPIC_MODEL 与别名映射直接填写平台的模型 id。
归因块
#Claude Code 在 system 开头带一块归因信息(客户端版本与提示指纹)。使用非 Anthropic 的模型时,可设置 CLAUDE_CODE_ATTRIBUTION_HEADER=0 不发送。未设置时,平台走其他入口转换时去掉该块,响应头 X-SciRouter-Param-Actions 中记 reshaped=…。
厂商服务端工具
#WebSearch 是厂商的服务端工具,平台不支持,请求返回 400,details.reason 为 server_tool_unsupported。Claude Code 自身的 WebSearch / WebFetch 不受影响。
上游为其他厂商的兼容接口
#Claude Code 发送 Claude 官方接口支持的全部字段:thinking 的 adaptive、对话中途的 system 消息、context_management、output_config。线路背后是其他厂商的 Anthropic 兼容接口时,请求原样转发,厂商不支持这些字段时返回 400:
- 前几项由 Claude Code 自行去掉后重试。
context_management等提示类参数:厂商的报错中能识别出参数名时,平台去掉该参数,在同一条线路重发一次,X-SciRouter-Param-Actions中记healed=context_management;识别不出时仍返回 400。- 400
context_management: Extra inputs are not permitted一类报错反复出现时,设置CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1。
转换方式(线路没有 Anthropic 入口)不受影响:context_management 中的 clear_tool_uses_* 由平台补实现,其余编辑去掉并留痕。
平台拒绝请求时的两种标记(capability_rejected、policy_blocked)及 Claude Code 的处理见 Messages(Anthropic 格式)「错误」。