10 10
11> [!NOTE]11> [!NOTE]
12>12>
13> * 要将您自己机器上的 Claude Code 连接到现有网关,请参阅[将 Claude Code 连接到 LLM 网关](/docs/zh-CN/llm-gateway-connect.md)13> * 要将您自己机器上的 Claude Code 连接到现有网关,请参阅[将 Claude Code 连接到 LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md)
14> * 有关 Claude Code 发送到网关的内容以及要转发的内容,请参阅[网关协议参考](/docs/zh-CN/llm-gateway-protocol.md)14> * 有关 Claude Code 发送到网关的内容以及要转发的内容,请参阅[网关协议参考](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md)
15 15
16## 前置条件16## 前置条件
17 17
20* 在您的基础设施上部署的网关,在您将分发给开发者的确切地址上提供 HTTPS,而不是重定向到它的地址,并配置为将 Claude 模型名称路由到您的提供商20* 在您的基础设施上部署的网关,在您将分发给开发者的确切地址上提供 HTTPS,而不是重定向到它的地址,并配置为将 Claude 模型名称路由到您的提供商
21* 网关转发的提供商凭证:21* 网关转发的提供商凭证:
22 * 对于 Anthropic API:来自 [Claude 控制台](https://platform.claude.com/settings/keys)的 API 密钥22 * 对于 Anthropic API:来自 [Claude 控制台](https://platform.claude.com/settings/keys)的 API 密钥
23 * 对于云提供商:具有模型访问权限的云凭证。请参阅 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock.md#prerequisites)、[Google Cloud 的 Agent Platform](/docs/zh-CN/google-vertex-ai.md#prerequisites) 或 [Microsoft Foundry](/docs/zh-CN/microsoft-foundry.md#prerequisites) 页面上的前置条件23 * 对于云提供商:具有模型访问权限的云凭证。请参阅 [Amazon Bedrock](https://code.claude.com/docs/zh-CN/amazon-bedrock.md#prerequisites)、[Google Cloud 的 Agent Platform](https://code.claude.com/docs/zh-CN/google-vertex-ai.md#prerequisites) 或 [Microsoft Foundry](https://code.claude.com/docs/zh-CN/microsoft-foundry.md#prerequisites) 页面上的前置条件
24* 一种向开发者机器交付设置文件的方式,例如 MDM 或配置管理24* 一种向开发者机器交付设置文件的方式,例如 MDM 或配置管理
25 * 如果您还没有,[设置如何到达设备](/docs/zh-CN/admin-setup.md#decide-how-settings-reach-devices)比较了各种选项25 * 如果您还没有,[设置如何到达设备](https://code.claude.com/docs/zh-CN/admin-setup.md#decide-how-settings-reach-devices)比较了各种选项
26 26
27### 网关要求27### 网关要求
28 28
29无论哪种产品提供网关,它必须:29无论哪种产品提供网关,它必须:
30 30
31* **接受支持的 API 格式**:[API 格式表](/docs/zh-CN/llm-gateway-protocol.md#api-formats)中的格式之一。下面的推出步骤假设 Anthropic Messages API 位于 `POST /v1/messages`,大多数网关都提供此格式31* **接受支持的 API 格式**:[API 格式表](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#api-formats)中的格式之一。下面的推出步骤假设 Anthropic Messages API 位于 `POST /v1/messages`,大多数网关都提供此格式
32* **流式传输响应**:按到达时传递服务器发送的事件,包括保活 ping,而不是缓冲整个响应;[流式传输](/docs/zh-CN/llm-gateway-protocol.md#streaming)涵盖了缓冲或剥离 ping 会破坏什么32* **流式传输响应**:按到达时传递服务器发送的事件,包括保活 ping,而不是缓冲整个响应;[流式传输](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#streaming)涵盖了缓冲或剥离 ping 会破坏什么
33* **路由 Claude 模型名称**:将开发者使用的每个名称映射到上游模型。Claude Code 在每个请求中发送模型名称,例如 `claude-sonnet-4-6`;在大多数网关产品中,映射是网关自己配置中的模型列表或路由表33* **路由 Claude 模型名称**:将开发者使用的每个名称映射到上游模型。Claude Code 在每个请求中发送模型名称,例如 `claude-sonnet-4-6`;在大多数网关产品中,映射是网关自己配置中的模型列表或路由表
34* **转发标头和正文不变**:在两个方向上传递 `anthropic-beta`、`anthropic-version` 和请求正文;[功能传递表](/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through)将每个映射到没有它就会中断的功能34* **转发标头和正文不变**:在两个方向上传递 `anthropic-beta`、`anthropic-version` 和请求正文;[功能传递表](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through)将每个映射到没有它就会中断的功能
35* **返回未修改的上游错误**:Claude Code 的自动恢复与错误措辞匹配,因此在网关自己的信封中包装错误会破坏它,除非信封的消息包含 [Claude apps 网关为云提供商的错误措辞替换](/docs/zh-CN/claude-apps-gateway-config.md#upstream-error-messages)的 `capability_rejected:` 令牌之一35* **返回未修改的上游错误**:Claude Code 的自动恢复与错误措辞匹配,因此在网关自己的信封中包装错误会破坏它,除非信封的消息包含 [Claude apps 网关为云提供商的错误措辞替换](https://code.claude.com/docs/zh-CN/claude-apps-gateway-config.md#upstream-error-messages)的 `capability_rejected:` 令牌之一
36* **豁免路径免受请求正文 WAF 检查**:Claude Code 提示包含源代码和 XML 样式标签,与跨站脚本正文规则匹配;网关前面的 WAF 在真实会话中返回 `403`,而短测试请求通过36* **豁免路径免受请求正文 WAF 检查**:Claude Code 提示包含源代码和 XML 样式标签,与跨站脚本正文规则匹配;网关前面的 WAF 在真实会话中返回 `403`,而短测试请求通过
37 37
38可选地,提供 `GET /v1/models` 以便 Claude Code 可以使用[模型发现](/docs/zh-CN/llm-gateway-protocol.md#model-discovery)从您的网关填充模型选择器。38可选地,提供 `GET /v1/models` 以便 Claude Code 可以使用[模型发现](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#model-discovery)从您的网关填充模型选择器。
39 39
40## 推出步骤40## 推出步骤
41 41
87 87
88> [!NOTE]88> [!NOTE]
89>89>
90> 避免在重定向后提供网关。重定向可能会在推理请求上丢弃请求正文或剥离凭证标头,[模型发现](/docs/zh-CN/llm-gateway-protocol.md#model-discovery)将任何重定向视为失败,因此凭证无法泄露到重定向目标。90> 避免在重定向后提供网关。重定向可能会在推理请求上丢弃请求正文或剥离凭证标头,[模型发现](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#model-discovery)将任何重定向视为失败,因此凭证无法泄露到重定向目标。
91 91
92### 颁发开发者凭证92### 颁发开发者凭证
93 93
116 116
117**检查点**:带有 `content` 字段的 `200` 意味着开发者密钥到达网关,网关转发它。当[前一步](#confirm-the-gateway-routes-your-models)成功时,这里的 `401` 意味着开发者密钥错误或尚未在网关处生效。117**检查点**:带有 `content` 字段的 `200` 意味着开发者密钥到达网关,网关转发它。当[前一步](#confirm-the-gateway-routes-your-models)成功时,这里的 `401` 意味着开发者密钥错误或尚未在网关处生效。
118 118
119为每个开发者颁发一个密钥而不是共享密钥是使每个开发者使用归因和个人离职工作的原因。保存密钥的环境变量取决于网关读取的标头。对于在 `Authorization: Bearer` 标头中检查凭证的网关,开发者在 `ANTHROPIC_AUTH_TOKEN` 中设置他们的密钥。对于从 `x-api-key` 标头读取密钥的网关,开发者改为设置 `ANTHROPIC_API_KEY`;[凭证表](/docs/zh-CN/llm-gateway-connect.md#set-the-credential-variable)涵盖了映射。119为每个开发者颁发一个密钥而不是共享密钥是使每个开发者使用归因和个人离职工作的原因。保存密钥的环境变量取决于网关读取的标头。对于在 `Authorization: Bearer` 标头中检查凭证的网关,开发者在 `ANTHROPIC_AUTH_TOKEN` 中设置他们的密钥。对于从 `x-api-key` 标头读取密钥的网关,开发者改为设置 `ANTHROPIC_API_KEY`;[凭证表](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#set-the-credential-variable)涵盖了映射。
120 120
121### 针对网关测试 Claude Code121### 针对网关测试 Claude Code
122 122
147* `Not logged in`:检查网关日志以区分两个原因。如果它是空的,没有凭证到达会话,没有请求离开机器;在您测试的 shell 中重新运行导出。如果它显示在 `401` 正文中带有 `x-api-key` 的被拒绝请求,网关期望密钥在该标头中;切换到 `ANTHROPIC_API_KEY`147* `Not logged in`:检查网关日志以区分两个原因。如果它是空的,没有凭证到达会话,没有请求离开机器;在您测试的 shell 中重新运行导出。如果它显示在 `401` 正文中带有 `x-api-key` 的被拒绝请求,网关期望密钥在该标头中;切换到 `ANTHROPIC_API_KEY`
148* `Failed to authenticate. API Error: 401` 意味着凭证被发送并被拒绝,网关日志说明了在哪里:命名 `api.anthropic.com` 或您的提供商端点的 `401` 意味着网关到达了上游但其提供商凭证被拒绝,因此开发者密钥有效,网关持有的提供商凭证错误或是占位符148* `Failed to authenticate. API Error: 401` 意味着凭证被发送并被拒绝,网关日志说明了在哪里:命名 `api.anthropic.com` 或您的提供商端点的 `401` 意味着网关到达了上游但其提供商凭证被拒绝,因此开发者密钥有效,网关持有的提供商凭证错误或是占位符
149 149
150错误或无法到达的基础 URL 会产生不同的症状:Claude Code [以退避方式重试连接](/docs/zh-CN/errors.md#automatic-retries),在报告错误之前可能会坐着没有输出几分钟。如果命令似乎挂起,请检查网关日志而不是等待;没有到达的请求意味着 `ANTHROPIC_BASE_URL` 不指向网关。150错误或无法到达的基础 URL 会产生不同的症状:Claude Code [以退避方式重试连接](https://code.claude.com/docs/zh-CN/errors.md#automatic-retries),在报告错误之前可能会坐着没有输出几分钟。如果命令似乎挂起,请检查网关日志而不是等待;没有到达的请求意味着 `ANTHROPIC_BASE_URL` 不指向网关。
151 151
152### 分发配置152### 分发配置
153 153
154每个开发者机器都需要网关地址和凭证。您可以通过[托管设置](/docs/zh-CN/managed-settings.md#delivery-mechanisms)集中分发它们,以便开发者不配置任何内容,或者手动向开发者提供值以自己设置。154每个开发者机器都需要网关地址和凭证。您可以通过[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)集中分发它们,以便开发者不配置任何内容,或者手动向开发者提供值以自己设置。
155 155
156#### 要分发的内容156#### 要分发的内容
157 157
162| `ANTHROPIC_BASE_URL` | 将 Claude Code 的 API 请求发送到网关而不是 `api.anthropic.com` | 总是 |162| `ANTHROPIC_BASE_URL` | 将 Claude Code 的 API 请求发送到网关而不是 `api.anthropic.com` | 总是 |
163| `apiKeyHelper`,或 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY` 中的凭证 | 对网关的每个请求进行身份验证。助手运行命令来获取密钥;变量保存静态密钥,分别作为 `Authorization: Bearer` 和 `x-api-key` 发送 | 总是;三个中的一个 |163| `apiKeyHelper`,或 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY` 中的凭证 | 对网关的每个请求进行身份验证。助手运行命令来获取密钥;变量保存静态密钥,分别作为 `Authorization: Bearer` 和 `x-api-key` 发送 | 总是;三个中的一个 |
164| `ANTHROPIC_CUSTOM_HEADERS` | 向每个 API 请求添加额外的 HTTP 标头 | 您的网关在每个请求上需要租户或路由标头 |164| `ANTHROPIC_CUSTOM_HEADERS` | 向每个 API 请求添加额外的 HTTP 标头 | 您的网关在每个请求上需要租户或路由标头 |
165| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 发送[网关提示标头](/docs/zh-CN/llm-gateway-protocol.md#gateway-hint-headers),它们为网关处的路由和调度决策对每个请求进行分类。需要 Claude Code v2.1.273 或更高版本 | 您的网关读取提示标头 |165| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 发送[网关提示标头](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#gateway-hint-headers),它们为网关处的路由和调度决策对每个请求进行分类。需要 Claude Code v2.1.273 或更高版本 | 您的网关读取提示标头 |
166| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 在启动时查询网关的 `/v1/models` 并将返回的名称添加到 `/model` 选择器 | 您的网关提供 `/v1/models` 并且您希望开发者的选择器从中填充 |166| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 在启动时查询网关的 `/v1/models` 并将返回的名称添加到 `/model` 选择器 | 您的网关提供 `/v1/models` 并且您希望开发者的选择器从中填充 |
167| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 停止 Claude Code 发送预发布功能标头和正文字段。[禁用预发布功能](/docs/zh-CN/llm-gateway-protocol.md#disable-pre-release-capabilities)涵盖了确切的范围 | 您的网关转发到拒绝 beta 字段的 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上游。请参阅[网关要求](#gateway-requirements) |167| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 停止 Claude Code 发送预发布功能标头和正文字段。[禁用预发布功能](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#disable-pre-release-capabilities)涵盖了确切的范围 | 您的网关转发到拒绝 beta 字段的 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上游。请参阅[网关要求](#gateway-requirements) |
168| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` 或 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 当其可用性检查(直接调用 `api.anthropic.com` 而不是遵循 `ANTHROPIC_BASE_URL`)失败、被拦截或因缺少 Anthropic 凭证而被跳过时,恢复[快速模式](/docs/zh-CN/fast-mode.md) | 您的组织使用快速模式,开发者仅使用 `ANTHROPIC_AUTH_TOKEN` 进行身份验证,在 `ANTHROPIC_API_KEY` 中使用网关颁发的密钥或来自 `apiKeyHelper`,或您的网络阻止或拦截对 `api.anthropic.com` 的直接请求;[在代理和 LLM 网关后面使用快速模式](/docs/zh-CN/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)涵盖了哪两个变量中的哪一个与您的配置匹配 |168| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` 或 `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | 当其可用性检查(直接调用 `api.anthropic.com` 而不是遵循 `ANTHROPIC_BASE_URL`)失败、被拦截或因缺少 Anthropic 凭证而被跳过时,恢复[快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md) | 您的组织使用快速模式,开发者仅使用 `ANTHROPIC_AUTH_TOKEN` 进行身份验证,在 `ANTHROPIC_API_KEY` 中使用网关颁发的密钥或来自 `apiKeyHelper`,或您的网络阻止或拦截对 `api.anthropic.com` 的直接请求;[在代理和 LLM 网关后面使用快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)涵盖了哪两个变量中的哪一个与您的配置匹配 |
169| `ANTHROPIC_MODEL` 或 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/docs/zh-CN/model-config) | 设置 Claude Code 为主会话和后台流量请求的模型名称 | 您的网关路由与 Claude Code 默认值不匹配的模型名称,或您将[后台功能](/docs/zh-CN/costs.md#background-token-usage)路由到不同的模型。在网关处路由覆盖名称和 Claude Code 的内置模型 ID,因为某些后台子调用可以请求内置 ID,无论覆盖如何;[模型配置](/docs/zh-CN/model-config.md)涵盖了会话的每个部分使用哪个模型 |169| `ANTHROPIC_MODEL` 或 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](https://code.claude.com/docs/zh-CN/model-config) | 设置 Claude Code 为主会话和后台流量请求的模型名称 | 您的网关路由与 Claude Code 默认值不匹配的模型名称,或您将[后台功能](https://code.claude.com/docs/zh-CN/costs.md#background-token-usage)路由到不同的模型。在网关处路由覆盖名称和 Claude Code 的内置模型 ID,因为某些后台子调用可以请求内置 ID,无论覆盖如何;[模型配置](https://code.claude.com/docs/zh-CN/model-config.md)涵盖了会话的每个部分使用哪个模型 |
170| `ANTHROPIC_BEDROCK_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL`、`ANTHROPIC_FOUNDRY_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 以及[该提供商的变量](/docs/zh-CN/llm-gateway-connect.md#route-to-a-cloud-provider-through-a-gateway) | 通过网关将 Claude Code 指向网关。Amazon Bedrock 和 Google Cloud 的 Agent Platform 也切换到这些提供商的本机请求格式 | 您的网关前置 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude 平台;请参阅 [API 格式](/docs/zh-CN/llm-gateway-protocol.md#api-formats) |170| `ANTHROPIC_BEDROCK_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL`、`ANTHROPIC_FOUNDRY_BASE_URL` 或 `ANTHROPIC_AWS_BASE_URL` 以及[该提供商的变量](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#route-to-a-cloud-provider-through-a-gateway) | 通过网关将 Claude Code 指向网关。Amazon Bedrock 和 Google Cloud 的 Agent Platform 也切换到这些提供商的本机请求格式 | 您的网关前置 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或 AWS 上的 Claude 平台;请参阅 [API 格式](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#api-formats) |
171 171
172#### 通过托管设置分发172#### 通过托管设置分发
173 173
174通过[托管设置文件](/docs/zh-CN/managed-settings.md#delivery-mechanisms)的 `env` 块交付变量,由 MDM、注册表策略或配置管理推送:174通过[托管设置文件](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms)的 `env` 块交付变量,由 MDM、注册表策略或配置管理推送:
175 175
176```json theme={null}176```json theme={null}
177{177{
184 184
185将表中的条件变量添加到相同的 `env` 块。托管的 `ANTHROPIC_BASE_URL` 被强制执行,不能被开发者的 shell 导出覆盖,因为 Claude Code 在进程环境和较低优先级设置上应用它。185将表中的条件变量添加到相同的 `env` 块。托管的 `ANTHROPIC_BASE_URL` 被强制执行,不能被开发者的 shell 导出覆盖,因为 Claude Code 在进程环境和较低优先级设置上应用它。
186 186
187不要在托管设置中与网关凭证一起包括 `forceLoginMethod`、`forceLoginOrgUUID` 或 `forceLoginGatewayUrl`。`forceLoginMethod` 或 `forceLoginOrgUUID`,具有任何值,在启动时阻止 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 和 `apiKeyHelper`,开发者无法继续。他们看到 `This machine's managed settings require a first-party login`,或当文件将 `forceLoginMethod` 设置为 `"gateway"` 或设置 `forceLoginGatewayUrl` 时看到 [`Administrator policy requires a Cloud gateway sign-in`](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。187不要在托管设置中与网关凭证一起包括 `forceLoginMethod`、`forceLoginOrgUUID` 或 `forceLoginGatewayUrl`。`forceLoginMethod` 或 `forceLoginOrgUUID`,具有任何值,在启动时阻止 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 和 `apiKeyHelper`,开发者无法继续。他们看到 `This machine's managed settings require a first-party login`,或当文件将 `forceLoginMethod` 设置为 `"gateway"` 或设置 `forceLoginGatewayUrl` 时看到 [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。
188 188
189[服务器管理的设置](/docs/zh-CN/server-managed-settings.md#platform-availability)交付需要直接连接到 `api.anthropic.com`,因此它不会到达网关路由的会话。网关部署使用这个基于文件的托管设置路径,它强制执行相同的密钥。189[服务器管理的设置](https://code.claude.com/docs/zh-CN/server-managed-settings.md#platform-availability)交付需要直接连接到 `api.anthropic.com`,因此它不会到达网关路由的会话。网关部署使用这个基于文件的托管设置路径,它强制执行相同的密钥。
190 190
191对于凭证,在托管设置文件中分发一个 [`apiKeyHelper`](/docs/zh-CN/llm-gateway-connect#rotate-credentials-with-apikeyhelper) 命令,如上所示;该命令作为本地开发者对您的秘密存储进行身份验证,因此每台机器都接收自己的密钥。或者,通过您现有的秘密流程向每个开发者交付他们的密钥,并让他们自己设置 `ANTHROPIC_AUTH_TOKEN`。191对于凭证,在托管设置文件中分发一个 [`apiKeyHelper`](https://code.claude.com/docs/zh-CN/llm-gateway-connect#rotate-credentials-with-apikeyhelper) 命令,如上所示;该命令作为本地开发者对您的秘密存储进行身份验证,因此每台机器都接收自己的密钥。或者,通过您现有的秘密流程向每个开发者交付他们的密钥,并让他们自己设置 `ANTHROPIC_AUTH_TOKEN`。
192 192
193某些环境需要单独的交付:193某些环境需要单独的交付:
194 194
195* 桌面应用从其第三方推理配置读取网关路由,而不是从托管设置;通过 MDM 部署该文件以及托管设置,以便桌面会话也通过网关路由。请参阅[桌面第三方配置文档](https://claude.com/docs/third-party/claude-desktop/configuration)和[桌面网关文档](https://claude.com/docs/third-party/claude-desktop/gateway)195* 桌面应用从其第三方推理配置读取网关路由,而不是从托管设置;通过 MDM 部署该文件以及托管设置,以便桌面会话也通过网关路由。请参阅[桌面第三方配置文档](https://claude.com/docs/third-party/claude-desktop/configuration)和[桌面网关文档](https://claude.com/docs/third-party/claude-desktop/gateway)
196* CI 运行器需要在[运行器的环境](/docs/zh-CN/llm-gateway-connect.md#configure-each-surface)中设置 `ANTHROPIC_BASE_URL` 和凭证196* CI 运行器需要在[运行器的环境](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#configure-each-surface)中设置 `ANTHROPIC_BASE_URL` 和凭证
197* 托管 Windows 机器上的 WSL 仅在 [`wslInheritsWindowsSettings`](/docs/zh-CN/settings-reference#wslinheritswindowssettings) 为 `true` 时读取 Windows 托管设置197* 托管 Windows 机器上的 WSL 仅在 [`wslInheritsWindowsSettings`](https://code.claude.com/docs/zh-CN/settings-reference#wslinheritswindowssettings) 为 `true` 时读取 Windows 托管设置
198 198
199#### 网关后的 HIPAA 配置199#### 网关后的 HIPAA 配置
200 200
201通过网关的会话不符合 HIPAA 配置的条件。[检查开发者如何登录和连接](/docs/zh-CN/hipaa-setup.md#check-how-developers-sign-in-and-connect)列出了哪些登录和连接方式符合条件。201通过网关的会话不符合 HIPAA 配置的条件。[检查开发者如何登录和连接](https://code.claude.com/docs/zh-CN/hipaa-setup.md#check-how-developers-sign-in-and-connect)列出了哪些登录和连接方式符合条件。
202 202
203要在托管设置文件中为这些会话限制功能,请使用[将出口路径映射到托管控制和事件](/docs/zh-CN/monitoring-usage.md#map-egress-paths-to-managed-controls-and-events)中的键。这些键不会使会话符合 HIPAA 配置的条件,也不涵盖该配置所更改的全部内容。例如:203要在托管设置文件中为这些会话限制功能,请使用[将出口路径映射到托管控制和事件](https://code.claude.com/docs/zh-CN/monitoring-usage.md#map-egress-paths-to-managed-controls-and-events)中的键。这些键不会使会话符合 HIPAA 配置的条件,也不涵盖该配置所更改的全部内容。例如:
204 204
205* **云端会话**:没有任何托管键可以关闭它们。请参阅[管理控制台控制](/docs/zh-CN/desktop.md#admin-console-controls)205* **云端会话**:没有任何托管键可以关闭它们。请参阅[管理控制台控制](https://code.claude.com/docs/zh-CN/desktop.md#admin-console-controls)
206* **子进程中的 Anthropic 凭据**:该配置会从 Claude Code 启动的进程中[移除它们](/docs/zh-CN/hipaa-setup.md#anthropic-credentials-in-commands-hooks-and-mcp-servers),而没有任何设置项只执行这一操作206* **子进程中的 Anthropic 凭据**:该配置会从 Claude Code 启动的进程中[移除它们](https://code.claude.com/docs/zh-CN/hipaa-setup.md#anthropic-credentials-in-commands-hooks-and-mcp-servers),而没有任何设置项只执行这一操作
207 207
208不要使用 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 代替这些键。它会关闭其中一些功能,但也会关闭自动更新程序,并且会让 WebFetch 保持开启。208不要使用 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 代替这些键。它会关闭其中一些功能,但也会关闭自动更新程序,并且会让 WebFetch 保持开启。
209 209
210#### 手动向开发者提供值以自己设置210#### 手动向开发者提供值以自己设置
211 211
212如果您没有托管设置分发,请向每个开发者发送他们需要的内容以遵循[连接页面](/docs/zh-CN/llm-gateway-connect.md#configure-claude-code-yourself):212如果您没有托管设置分发,请向每个开发者发送他们需要的内容以遵循[连接页面](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#configure-claude-code-yourself):
213 213
214* 网关 URL214* 网关 URL
215* 他们的个人凭证215* 他们的个人凭证
216* **将凭证放在哪个变量中**:对于 bearer-token 网关为 `ANTHROPIC_AUTH_TOKEN`,或对于 `x-api-key` 网关为 `ANTHROPIC_API_KEY`。告诉开发者哪一个可以节省他们在[连接页面](/docs/zh-CN/llm-gateway-connect.md#set-the-credential-variable)上描述的试错216* **将凭证放在哪个变量中**:对于 bearer-token 网关为 `ANTHROPIC_AUTH_TOKEN`,或对于 `x-api-key` 网关为 `ANTHROPIC_API_KEY`。告诉开发者哪一个可以节省他们在[连接页面](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#set-the-credential-variable)上描述的试错
217* [要分发的内容表](#what-to-distribute)中的任何条件变量,以及它们的值217* [要分发的内容表](#what-to-distribute)中的任何条件变量,以及它们的值
218 218
219[连接页面](/docs/zh-CN/llm-gateway-connect.md#configure-claude-code-yourself)指导开发者设置每一个。219[连接页面](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#configure-claude-code-yourself)指导开发者设置每一个。
220 220
221**检查点**:在开发者机器上,`claude` 启动会话而不显示登录屏幕,因为分发的凭证满足身份验证。然后运行 `/status` 并打开**状态**选项卡:`Anthropic base URL` 行显示网关地址,对于托管分发,`Setting sources` 行包括托管设置。登录屏幕或缺少 `Anthropic base URL` 行意味着配置没有到达机器。221**检查点**:在开发者机器上,`claude` 启动会话而不显示登录屏幕,因为分发的凭证满足身份验证。然后运行 `/status` 并打开**状态**选项卡:`Anthropic base URL` 行显示网关地址,对于托管分发,`Setting sources` 行包括托管设置。登录屏幕或缺少 `Anthropic base URL` 行意味着配置没有到达机器。
222 222
253* `Failed to authenticate` 错误意味着网关拒绝请求;其日志说明了哪个凭证失败。网关自己记录的拒绝命名开发者密钥,而来自 `api.anthropic.com` 或您的提供商端点的 `401` 意味着网关持有的提供商凭证被拒绝253* `Failed to authenticate` 错误意味着网关拒绝请求;其日志说明了哪个凭证失败。网关自己记录的拒绝命名开发者密钥,而来自 `api.anthropic.com` 或您的提供商端点的 `401` 意味着网关持有的提供商凭证被拒绝
254* 当网关期望密钥在 `x-api-key` 标头中时,在首次使用时出现一次性批准提示是预期的,设置为 `ANTHROPIC_API_KEY`。使用 `ANTHROPIC_AUTH_TOKEN`,不会出现提示,变量会无声地接管;以前保存的 claude.ai 登录对该会话无效254* 当网关期望密钥在 `x-api-key` 标头中时,在首次使用时出现一次性批准提示是预期的,设置为 `ANTHROPIC_API_KEY`。使用 `ANTHROPIC_AUTH_TOKEN`,不会出现提示,变量会无声地接管;以前保存的 claude.ai 登录对该会话无效
255 255
256如果您的组织使用[快速模式](/docs/zh-CN/fast-mode.md),也在这里运行 `/fast`:可用性检查直接调用 `api.anthropic.com` 而不是遵循网关基础 URL,因此网关路由的会话可以报告快速模式不可用或禁用,即使推理有效。[在代理和 LLM 网关后面使用快速模式](/docs/zh-CN/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)将每条消息映射到恢复它的变量,与[配置的其余部分](#distribute-the-configuration)一起分发。256如果您的组织使用[快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md),也在这里运行 `/fast`:可用性检查直接调用 `api.anthropic.com` 而不是遵循网关基础 URL,因此网关路由的会话可以报告快速模式不可用或禁用,即使推理有效。[在代理和 LLM 网关后面使用快速模式](https://code.claude.com/docs/zh-CN/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways)将每条消息映射到恢复它的变量,与[配置的其余部分](#distribute-the-configuration)一起分发。
257 257
258最后,检查网关的日志以查看您发送的消息:凭证标识开发者,[`x-claude-code-session-id` 标头](/docs/zh-CN/llm-gateway-protocol#request-headers)按会话对请求进行分组。如果功能因[故障排除症状](/docs/zh-CN/llm-gateway-connect.md#troubleshoot-gateway-errors)而失败,网关正在剥离标头或重写错误;请参阅上面的[网关要求](#gateway-requirements)。258最后,检查网关的日志以查看您发送的消息:凭证标识开发者,[`x-claude-code-session-id` 标头](https://code.claude.com/docs/zh-CN/llm-gateway-protocol#request-headers)按会话对请求进行分组。如果功能因[故障排除症状](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md#troubleshoot-gateway-errors)而失败,网关正在剥离标头或重写错误;请参阅上面的[网关要求](#gateway-requirements)。
259 259
260## 维护网关260## 维护网关
261 261
263 263
264| 变化 | 当网关没有跟上时的症状 | 行动 |264| 变化 | 当网关没有跟上时的症状 | 行动 |
265| :- | :- | :- |265| :- | :- | :- |
266| 新的 Claude Code 版本添加 `anthropic-beta` 值和请求正文字段 | 开发者在更新 Claude Code 后报告 `400` 错误,命名新字段;请参阅[功能传递](/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through) | 逐字转发 `anthropic-*` 标头和请求正文,而不是允许列表;在新 Claude Code 版本到达开发者之前针对网关测试它们,检查[规划 Claude Code 版本升级](#plan-claude-code-version-upgrades)中的区域 |266| 新的 Claude Code 版本添加 `anthropic-beta` 值和请求正文字段 | 开发者在更新 Claude Code 后报告 `400` 错误,命名新字段;请参阅[功能传递](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md#feature-pass-through) | 逐字转发 `anthropic-*` 标头和请求正文,而不是允许列表;在新 Claude Code 版本到达开发者之前针对网关测试它们,检查[规划 Claude Code 版本升级](#plan-claude-code-version-upgrades)中的区域 |
267| 新的 Claude 模型变得可用 | 开发者选择新模型名称得到 `404`;`/model` 选择器不列出它 | 将模型名称添加到网关的路由配置,然后重新运行[路由检查](#confirm-the-gateway-routes-your-models)。如果您分发 `ANTHROPIC_MODEL` 或默认模型变量,更新托管设置 |267| 新的 Claude 模型变得可用 | 开发者选择新模型名称得到 `404`;`/model` 选择器不列出它 | 将模型名称添加到网关的路由配置,然后重新运行[路由检查](#confirm-the-gateway-routes-your-models)。如果您分发 `ANTHROPIC_MODEL` 或默认模型变量,更新托管设置 |
268| 凭证过期或需要轮换 | 所有开发者请求开始从上游失败,出现 `401` | 按照自己的计划轮换网关的提供商凭证;开发者密钥在网关处轮换,[`apiKeyHelper`](/docs/zh-CN/llm-gateway-connect#rotate-credentials-with-apikeyhelper) 处理每个开发者的轮换,无需重新分发设置 |268| 凭证过期或需要轮换 | 所有开发者请求开始从上游失败,出现 `401` | 按照自己的计划轮换网关的提供商凭证;开发者密钥在网关处轮换,[`apiKeyHelper`](https://code.claude.com/docs/zh-CN/llm-gateway-connect#rotate-credentials-with-apikeyhelper) 处理每个开发者的轮换,无需重新分发设置 |
269 269
270在调整每个密钥的速率限制时,考虑客户端[重试瞬时故障](/docs/zh-CN/errors.md#automatic-retries),包括 `429` 响应,最多 10 次,带有退避,遵守 `Retry-After`。将[兼容性指南](/docs/zh-CN/llm-gateway-protocol.md)作为每个 Claude Code 版本发送的内容的参考。270在调整每个密钥的速率限制时,考虑客户端[重试瞬时故障](https://code.claude.com/docs/zh-CN/errors.md#automatic-retries),包括 `429` 响应,最多 10 次,带有退避,遵守 `Retry-After`。将[兼容性指南](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md)作为每个 Claude Code 版本发送的内容的参考。
271 271
272### 规划 Claude Code 版本升级272### 规划 Claude Code 版本升级
273 273
274某些 Claude Code 行为内置于已安装的版本中,而不是在您的网关处设置,因此将开发者移至新版本可以改变整个部署中的行为,即使网关配置没有改变。要控制何时发生这种情况,请使用 [`requiredMaximumVersion`](/docs/zh-CN/settings-reference#requiredmaximumversion) 将开发者固定到已测试的版本,或者如果您通过自己的渠道分发 Claude Code,请使用 [`DISABLE_UPDATES`](/docs/zh-CN/setup#disable-auto-updates)。在提高固定版本之前,请阅读新版本的[更新日志](/docs/en/changelog.md)条目并[针对网关测试它](#test-claude-code-against-the-gateway)。274某些 Claude Code 行为内置于已安装的版本中,而不是在您的网关处设置,因此将开发者移至新版本可以改变整个部署中的行为,即使网关配置没有改变。要控制何时发生这种情况,请使用 [`requiredMaximumVersion`](https://code.claude.com/docs/zh-CN/settings-reference#requiredmaximumversion) 将开发者固定到已测试的版本,或者如果您通过自己的渠道分发 Claude Code,请使用 [`DISABLE_UPDATES`](https://code.claude.com/docs/zh-CN/setup#disable-auto-updates)。在提高固定版本之前,请阅读新版本的[更新日志](https://code.claude.com/docs/en/changelog.md)条目并[针对网关测试它](#test-claude-code-against-the-gateway)。
275 275
276当您测试一个版本时,网关拒绝的新标头或请求字段显示为[维护网关](#maintain-the-gateway)中描述的 `400` 错误。下表涵盖不产生错误的版本相关变化,以及保持每个变化在升级中保持不变的设置。276当您测试一个版本时,网关拒绝的新标头或请求字段显示为[维护网关](#maintain-the-gateway)中描述的 `400` 错误。下表涵盖不产生错误的版本相关变化,以及保持每个变化在升级中保持不变的设置。
277 277
278| 区域 | 开发者升级时可能改变的内容 | 保持其不变的设置 |278| 区域 | 开发者升级时可能改变的内容 | 保持其不变的设置 |
279| :- | :- | :- |279| :- | :- | :- |
280| 功能标志默认值 | [不从 Anthropic 获取功能标志](/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话,例如云提供商上的会话或关闭遥测的会话,使用内置于已安装版本中的标志默认值。当版本改变其中一个默认值时,这些开发者的行为在他们升级后立即改变 | 版本固定本身,`requiredMaximumVersion` 或 `DISABLE_UPDATES` |280| 功能标志默认值 | [不从 Anthropic 获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话,例如云提供商上的会话或关闭遥测的会话,使用内置于已安装版本中的标志默认值。当版本改变其中一个默认值时,这些开发者的行为在他们升级后立即改变 | 版本固定本身,`requiredMaximumVersion` 或 `DISABLE_UPDATES` |
281| 模型能力假设 | 已安装版本不识别的模型 ID,例如网关别名 `prod-opus`,对[自适应推理](/docs/zh-CN/model-config.md#adaptive-reasoning-and-fixed-thinking-budgets)、努力参数和[上下文窗口](/docs/zh-CN/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)运行默认假设,直到更高版本识别该 ID 或您映射它 | 在网关处路由 Anthropic 模型 ID,或添加[`modelOverrides`](/docs/zh-CN/model-config#override-model-ids-per-version)条目,将 Anthropic 模型 ID 映射到您的别名。在云提供商连接上,您可以改为[声明固定模型的能力](/docs/zh-CN/model-config.md#customize-pinned-model-display-and-capabilities) |281| 模型能力假设 | 已安装版本不识别的模型 ID,例如网关别名 `prod-opus`,对[自适应推理](https://code.claude.com/docs/zh-CN/model-config.md#adaptive-reasoning-and-fixed-thinking-budgets)、努力参数和[上下文窗口](https://code.claude.com/docs/zh-CN/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id)运行默认假设,直到更高版本识别该 ID 或您映射它 | 在网关处路由 Anthropic 模型 ID,或添加[`modelOverrides`](https://code.claude.com/docs/zh-CN/model-config#override-model-ids-per-version)条目,将 Anthropic 模型 ID 映射到您的别名。在云提供商连接上,您可以改为[声明固定模型的能力](https://code.claude.com/docs/zh-CN/model-config.md#customize-pinned-model-display-and-capabilities) |
282| 默认模型和别名 | 新会话默认启动的模型,以及别名(如 `opus` 和 `sonnet`)解析到的模型,[内置于每个版本](/docs/zh-CN/model-config.md#pin-models-for-third-party-deployments)中,开发者升级时可能改变 | [`ANTHROPIC_DEFAULT_MODEL`](/docs/zh-CN/model-config#set-a-default-model-for-new-sessions) 用于新会话启动的模型,以及 [`ANTHROPIC_DEFAULT_*_MODEL` 变量](/docs/zh-CN/model-config#environment-variables),例如 `ANTHROPIC_DEFAULT_OPUS_MODEL`,用于每个别名解析到的内容。`ANTHROPIC_DEFAULT_MODEL` 需要 Claude Code v2.1.236 或更高版本 |282| 默认模型和别名 | 新会话默认启动的模型,以及别名(如 `opus` 和 `sonnet`)解析到的模型,[内置于每个版本](https://code.claude.com/docs/zh-CN/model-config.md#pin-models-for-third-party-deployments)中,开发者升级时可能改变 | [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/zh-CN/model-config#set-a-default-model-for-new-sessions) 用于新会话启动的模型,以及 [`ANTHROPIC_DEFAULT_*_MODEL` 变量](https://code.claude.com/docs/zh-CN/model-config#environment-variables),例如 `ANTHROPIC_DEFAULT_OPUS_MODEL`,用于每个别名解析到的内容。`ANTHROPIC_DEFAULT_MODEL` 需要 Claude Code v2.1.236 或更高版本 |
283 283
284## 相关资源284## 相关资源
285 285
286* [将 Claude Code 连接到 LLM 网关](/docs/zh-CN/llm-gateway-connect.md):面向开发者的设置步骤,具有每个表面的配置和您可以交给开发者的故障排除表286* [将 Claude Code 连接到 LLM 网关](https://code.claude.com/docs/zh-CN/llm-gateway-connect.md):面向开发者的设置步骤,具有每个表面的配置和您可以交给开发者的故障排除表
287* [网关兼容性指南](/docs/zh-CN/llm-gateway-protocol.md):网关运营商的参考指南,涵盖端点、要转发的标头以及功能传递表287* [网关兼容性指南](https://code.claude.com/docs/zh-CN/llm-gateway-protocol.md):网关运营商的参考指南,涵盖端点、要转发的标头以及功能传递表
288* [Claude Code 使用的值](/docs/zh-CN/settings.md#which-value-claude-code-uses):托管、项目和用户设置如何组合288* [Claude Code 使用的值](https://code.claude.com/docs/zh-CN/settings.md#which-value-claude-code-uses):托管、项目和用户设置如何组合
289* [交付机制](/docs/zh-CN/managed-settings.md#delivery-mechanisms):托管文件在每个平台上的位置289* [交付机制](https://code.claude.com/docs/zh-CN/managed-settings.md#delivery-mechanisms):托管文件在每个平台上的位置
290* [为您的组织设置 Claude Code](/docs/zh-CN/admin-setup.md):这个网关是其中一部分的更广泛推出,包括策略强制执行、使用可见性和数据处理290* [为您的组织设置 Claude Code](https://code.claude.com/docs/zh-CN/admin-setup.md):这个网关是其中一部分的更广泛推出,包括策略强制执行、使用可见性和数据处理