SpyBara
Go Premium

Documentation 2026-07-28 23:57 UTC to 2026-07-29 19:02 UTC

5 files changed +618 −63. View all changes and history on the product overview
2026
Wed 29 19:02 Tue 28 23:57 Mon 27 21:02 Sun 26 19:02 Sat 25 21:59 Fri 24 23:01 Thu 23 23:57 Wed 22 23:59 Tue 21 23:00 Mon 20 23:01 Sat 18 16:02 Fri 17 22:57 Thu 16 22:59 Wed 15 22:00 Tue 14 23:01 Mon 13 23:57 Sat 11 19:03 Fri 10 17:00 Thu 9 23:58 Wed 8 16:02 Tue 7 16:02 Mon 6 23:57 Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01

claude-apps-gateway.md +349 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Amazon Bedrock、Claude Platform on AWS、Google Cloud 和 Microsoft Foundry 的 Claude 應用程式閘道

6 

7> 透過自託管閘道在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 或 Microsoft Foundry 上執行 Claude Code,具備 SSO 登入、按群組模型存取和 OTLP 遙測功能。

8 

9<Note>

10 Claude 應用程式閘道是為必須或偏好透過自己的雲端提供商路由推論的組織而設計的,例如為了滿足[資料駐留](/docs/zh-TW/claude-apps-gateway-deploy#compliance-posture)要求。如果您沒有此要求,並且想要存取其他功能,例如 SCIM 佈建或 Claude Code 網頁和行動版本,Claude Enterprise 可能更適合。請參閱[功能可用性](/docs/zh-TW/feature-availability)頁面,以取得所有部署方法的完整比較。

11</Note>

12 

13Claude 應用程式閘道是一個自託管服務,位於開發人員的 Claude Code 用戶端和模型提供商之間。開發人員使用您的企業身份提供商 (IdP) 登入,而不是持有 API 金鑰或雲端認證。閘道持有上游認證,按 IdP 群組強制執行模型存取和[受管設定](/docs/zh-TW/permissions#managed-settings),並將使用情況遙測轉發到您自己的可觀測性堆疊。

14 

15它包含在 `claude` 二進位檔中,因此在筆記型電腦上執行 Claude Code 的相同可執行檔可以使用 `claude gateway --config gateway.yaml` 執行閘道伺服器。

16 

17本頁涵蓋:

18 

19* [為什麼使用 Claude 應用程式閘道](#why-claude-apps-gateway)、它相比自行執行增加了什麼,以及何時其他解決方案更合適

20* 一個[快速入門](#quickstart),包含[先決條件](#prerequisites),可將閘道從零開始設定為已登入的開發人員

21* [連接開發人員](#connect-developers),包括透過受管設定設定閘道 URL

22* [可用性和限制](#availability-and-limitations),涵蓋哪些 Claude Code 功能可透過閘道運作,以及伺服器支援什麼

23 

24相關頁面會更深入地介紹。[配置參考](/docs/zh-TW/claude-apps-gateway-config)涵蓋快速入門寫入的 YAML 檔案中的每個選項,[部署指南](/docs/zh-TW/claude-apps-gateway-deploy)涵蓋每個 IdP 的設定、Kubernetes 和 Cloud Run 部署,以及操作。

25 

26<h2 id="why-claude-apps-gateway">

27 為什麼使用 Claude 應用程式閘道

28</h2>

29 

30[閘道概述](/docs/zh-TW/gateways)涵蓋閘道的功能以及為什麼要執行一個。Claude 應用程式閘道是 Anthropic 自己的閘道,內建於 `claude` 二進位檔中,並與每個 Claude Code 版本一起測試,因此它轉發 Claude Code 發送的標頭和請求欄位,無需操作員維護單獨的允許清單。部署後,它為您提供:

31 

32* **認證**:上游 API 金鑰或雲端認證僅存在於您的基礎設施中。開發人員使用公司 SSO 進行身份驗證並接收短期的持有人令牌,因此離職發生在您的 IdP 中。取消佈建使用者,其閘道存取在會話生命週期內過期,預設為一小時。

33* **存取控制**:您的 IdP 群組對應到模型允許清單和[受管設定](/docs/zh-TW/permissions#managed-settings)原則。閘道在伺服器端強制執行模型存取,拒絕非授予模型的請求,並選擇每個群組的受管設定原則,CLI 在[受管設定層級](/docs/zh-TW/settings#settings-precedence)應用該原則。不同的團隊獲得不同的模型、工具和權限,開發人員無法覆蓋其原則鎖定的內容。

34* **設定傳遞**:閘道本身將受管設定傳遞給已登入的用戶端,取代來自 claude.ai 管理員主控台的[伺服器管理設定](/docs/zh-TW/server-managed-settings)。

35* **遙測**:每個配置的目的地(例如 Datadog、Splunk 或 ClickHouse)接收[OpenTelemetry Protocol (OTLP) 指標](/docs/zh-TW/monitoring-usage),預設包含令牌計數、模型、使用者身份和延遲,日誌和追蹤作為按目的地的選擇加入。

36* **上游路由**:用戶端向閘道說 Anthropic Messages API,閘道為每個上游進行轉換,無論是 Amazon Bedrock、[AWS 上的 Claude Platform](/docs/zh-TW/claude-platform-on-aws)、Google Cloud 的 Agent Platform、Microsoft Foundry 或 Anthropic API,並在它們之間進行故障轉移。您可以更改區域、提供商或故障轉移順序,而開發人員無需注意或重新配置。

37 

38<Frame>

39 <img src="https://mintcdn.com/claude-code/st9_ZQOFsZa3cKFl/images/claude-gateway-architecture.svg?fit=max&auto=format&n=st9_ZQOFsZa3cKFl&q=85&s=560770d8f49bbd6f1ca7090ed1f13c03" alt="圖表顯示 Claude Code 用戶端透過 HTTPS 和持有人令牌連接到您基礎設施內的自託管 Claude 應用程式閘道,該閘道針對您的 IdP 簽署使用者,在 PostgreSQL 中儲存身份驗證狀態,將遙測轉發到您的 OTLP 收集器,並將推理轉發到 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud、Microsoft Foundry 或 Anthropic API" width="760" height="320" data-path="images/claude-gateway-architecture.svg" />

40</Frame>

41 

42<Note>

43 閘道自己的資料平面不會向 Anthropic 基礎設施發送任何內容,除非 Anthropic API 是配置的上游。您控制遙測、稽核日誌、受管設定和開發人員的 IdP 身份去向,閘道不會將它們中的任何一個發送給 Anthropic。對於其餘流量,CLI 程序可以發送什麼以及如何關閉它,請參閱[合規性態勢](/docs/zh-TW/claude-apps-gateway-deploy#compliance-posture)。

44</Note>

45 

46有關哪些 Claude Code 功能可透過閘道運作以及伺服器本身支援什麼,請參閱下面的[可用性和限制](#availability-and-limitations)。有關成本、繞過、執行多個閘道和無伺服器平台等決策,請參閱[部署指南](/docs/zh-TW/claude-apps-gateway-deploy#deployment)。

47 

48<h3 id="other-gateway-implementations">

49 其他閘道實現

50</h3>

51 

52如果您已經執行滿足您需求的 LLM 閘道或 API 閘道,請繼續使用它;[其他 LLM 閘道](/docs/zh-TW/llm-gateway)涵蓋針對它配置 Claude Code。

53 

54[閘道協議參考](/docs/zh-TW/llm-gateway-protocol)記錄了 Claude Code 期望從任何閘道的合約:它呼叫的端點、要轉發的標頭和正文欄位,以及當它們被剝離時停止運作的內容。執行中的 Claude 應用程式閘道在 `GET /protocol` 提供該合約的超集,添加 Claude 應用程式閘道特定的端點用於 SSO 登入、受管設定傳遞和遙測。使用 `curl https://claude-gateway.internal.example.com/protocol` 從任何部署的閘道(例如下面[快速入門](#quickstart)產生的閘道)獲取它。協議的重大變更會提前宣佈,但不保證無限期的向後相容性。

55 

56<h2 id="quickstart">

57 快速入門

58</h2>

59 

60此快速入門走最小路徑:在您的 IdP 中註冊 OAuth 用戶端,寫入 `gateway.yaml`,使用 Docker Compose 與 Postgres 一起執行閘道,並驗證端到端登入。它使用 Amazon Bedrock 上游;Claude Platform on AWS、Google Cloud 的 Agent Platform、Microsoft Foundry 和 Anthropic API 同樣受支援,只需如[配置參考](/docs/zh-TW/claude-apps-gateway-config#upstreams)所示交換 `upstreams` 區塊。最後,您有一個開發人員可以 `/login` 的閘道。

61 

62<Note>

63 **在您的私有網路上部署。** Claude Code 只連接到地址為私有的閘道。這是一個安全防護,因為受信任的閘道可以推送在開發人員機器上執行命令的設定。將閘道放在內部負載平衡器或 VPN 後面,並給它一個只解析為私有 IP 的主機名。

64 

65 Anthropic 營運的公開閘道端點是例外:`/login` 透過 `https://` 接受它們。這些是 Anthropic 本身營運的一小組固定閘道;它們不是您可以選擇或配置的部署選項。清單編譯到 Claude Code 中,因此沒有配置可以將主機名新增到其中,您託管的任何閘道都不符合豁免資格。{/* min-version: 2.1.206 */}在 v2.1.206 之前,`/login` 像任何其他公開地址一樣拒絕這些端點。

66</Note>

67 

68<h3 id="prerequisites">

69 先決條件

70</h3>

71 

72在開始之前,請準備好以下內容:

73 

74| 您需要 | 詳細資訊 |

75| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

76| Claude Code v2.1.195 或更新版本 | `claude gateway` 子命令和閘道登入流程在 v2.1.195 中發布。較早的公開版本不包含它們。執行閘道伺服器的機器和每個開發人員的機器都必須是 v2.1.195 或更新版本;執行 `claude update` 以取得最新版本。{/* min-version: 2.1.198 */}[Claude Platform on AWS 上游](/docs/zh-TW/claude-apps-gateway-config#claude-platform-on-aws)在閘道伺服器上需要 Claude Code v2.1.198 或更新版本。 |

77| OpenID Connect (OIDC) 身份提供商 | Okta、Microsoft Entra ID、Google Workspace、Keycloak 或 Dex,或任何其他符合 OIDC 的 IdP,例如 PingFederate。閘道針對它執行標準 OIDC 發現和授權碼流程。不支援 SAML 和 LDAP。 |

78| PostgreSQL 14 或更新版本 | 支援裝置登入流程,其中瀏覽器回呼寫入,輪詢 CLI 讀取,加上速率限制計數器。任何受管 Postgres 都可以,包括最小層級。在未配置支出限制的情況下,閘道儲存幾 KB 的短期身份驗證狀態;使用[支出限制](/docs/zh-TW/claude-apps-gateway-spend-limits),它還持有應備份的耐久支出、稽核和身份表。建議透過 `?sslmode=require` 使用 TLS。 |

79| 模型上游 | Amazon Bedrock 認證、Claude Platform on AWS 認證、Google Cloud 認證、Microsoft Foundry 資源或 Anthropic API 金鑰。支援多個上游和故障轉移。 |

80| HTTPS | 閘道必須可從開發人員筆記型電腦和用於登入的任何瀏覽器透過 `https://` 到達;閘道在同一監聽器上提供裝置驗證頁面。透過 `listen.tls` 提供 TLS 憑證,或在 TLS 終止入口後執行並設定 `listen.public_url`。純 `http://` 來源僅在本地開發的環回上接受。 |

81| 私有網路地址 | 在 `/login` 處,Claude Code 要求閘道的主機名或 IP 地址僅解析為私有地址:RFC 1918、CGNAT `100.64.0.0/10`、IPv6 ULA `fc00::/7` 或本地開發的環回。檢查在每個解析的 IP 上執行,因此如果名稱解析到的任何地址是公開的,`/login` 會拒絕該 URL。如果開發人員機器透過公司代理路由 HTTPS,登入還要求代理主機解析為私有地址;如果不是,將閘道主機新增到 `NO_PROXY`,以便 CLI 直接連接。{/* min-version: 2.1.206 */}Anthropic 營運的公開閘道端點豁免於私有地址和代理檢查:`/login` 透過精確主機名符合接受它們,因此私有網路要求僅適用於您自己託管的閘道。在 v2.1.206 之前,`/login` 像任何其他公開地址一樣拒絕 Anthropic 營運的端點。 |

82| Linux 執行時 | 閘道伺服器僅在原生 Linux 二進位檔上執行。macOS 適用於本地開發。Windows 不支援作為伺服器平台。 |

83 

84閘道伺服器需要原生 `claude` 二進位檔;如[安裝 Claude Code](/docs/zh-TW/setup) 中所述下載固定版本。伺服器使用在 Claude Code 在 Node 下執行時不可用的執行時功能。如果您在啟動時看到 `requires the native binary`,請切換到其中一個獨立安裝方法。

85 

86<h3 id="steps">

87 步驟

88</h3>

89 

90<Steps>

91 <Step title="在您的 IdP 中註冊 OAuth 用戶端">

92 首先決定閘道的主機名,因為重定向 URI 必須與其匹配。建立新的 OIDC Web 應用程式,並將重定向 URI 設定為 `https://claude-gateway.<your-domain>/oauth/callback`,其中主機是您在步驟 3 中設定為 [`listen.public_url`](/docs/zh-TW/claude-apps-gateway-config#listen) 的相同值。記下 `client_id` 和 `client_secret`。每個 IdP 的說明在[身份提供商設定](/docs/zh-TW/claude-apps-gateway-deploy#identity-provider-setup)中。

93 </Step>

94 

95 <Step title="佈建 PostgreSQL 資料庫">

96 任何 Postgres 14 或更新版本都可以,包括最小受管層級。閘道在啟動時執行自己的架構遷移,因此資料庫使用者需要 `CREATE TABLE` 權限。如果您的安全原則禁止應用程式角色的 DDL,請改為預先建立架構;請參閱 [`store`](/docs/zh-TW/claude-apps-gateway-config#store)。

97 </Step>

98 

99 <Step title="寫入 gateway.yaml">

100 機密透過 `${ENV_VAR}` 擴展讀取,因此檔案本身可以存在於版本控制中。使用在您的網路上解析為私有 IP 的 `public_url` 主機名,因為 `/login` 拒絕公開地址。最小配置有五個部分,其他每個欄位都有預設值:

101 

102 ```yaml gateway.yaml theme={null}

103 listen:

104 host: 0.0.0.0

105 port: 8080

106 # 在任何 TLS 終止代理後面需要。用於 IdP

107 # redirect_uri 和發現文件。

108 public_url: https://claude-gateway.internal.example.com

109 

110 oidc:

111 issuer: https://login.example.com # 必須提供 /.well-known/openid-configuration

112 client_id: 0oa1example2

113 client_secret: ${OIDC_CLIENT_SECRET}

114 allowed_email_domains: [example.com] # 拒絕組織外的 id_tokens

115 userinfo_fallback: true # 對於 id_token 省略電子郵件/群組的 IdP;否則無害

116 

117 session:

118 jwt_secret: ${GATEWAY_JWT_SECRET} # openssl rand -base64 32

119 ttl_hours: 1 # 也限制 IdP 取消佈建時的撤銷延遲

120 

121 store:

122 postgres_url: ${GATEWAY_POSTGRES_URL} # 為受管 Postgres 新增 ?sslmode=require

123 

124 upstreams:

125 - provider: bedrock

126 region: us-east-1

127 auth: {} # 空:AWS 預設認證鏈

128 # (IRSA、EC2/ECS 任務角色、環境變數、~/.aws)

129 

130 # 模型會自動按上游轉換。內建目錄

131 # 將 claude-opus-4-8 對應到 us.anthropic.claude-opus-4-8 等,適用於每個

132 # Bedrock 支援的 Claude 模型。設定為 false 並新增 `models:` 清單以

133 # 僅公開特定模型。

134 auto_include_builtin_models: true

135 ```

136 

137 此配置足以使用預設 Amazon Bedrock 模型目錄進行有效的登入迴圈。執行後,透過 [`managed.policies`](/docs/zh-TW/claude-apps-gateway-config#managed) 新增按群組 RBAC 和受管設定、透過 [`telemetry`](/docs/zh-TW/claude-apps-gateway-config#telemetry) 的遙測扇出,以及多上游故障轉移、佈建輸送量 ARN 或非美國區域,透過 [`models`](/docs/zh-TW/claude-apps-gateway-config#models)。

138 

139 <Note>

140 Bedrock 上游需要一個 AWS 主體,具有 `bedrock:InvokeModel` 和 `bedrock:InvokeModelWithResponseStream` 在 `inference-profile/us.anthropic.*` ARN 和基礎 `foundation-model/anthropic.*` ARN 上,以及在 Bedrock 主控台中為您想要的 Claude 模型啟用的模型存取。使用 EKS 上的 IRSA、ECS 任務角色或 EC2 執行個體設定檔提供認證,而不是靜態金鑰。[`upstreams` 參考](/docs/zh-TW/claude-apps-gateway-config#upstreams)具有完整的 IAM 詳細資訊、跨雲認證矩陣和其他提供商的 `auth` 區塊。

141 </Note>

142 </Step>

143 

144 <Step title="執行它">

145 圍繞滿足[映像要求](/docs/zh-TW/claude-apps-gateway-deploy#container-image)的 `claude` 二進位檔建立容器映像,然後與 Postgres 一起執行它:

146 

147 ```yaml docker-compose.yaml theme={null}

148 services:

149 gateway:

150 image: <your-registry>/claude-gateway:<version>

151 ports: ["8080:8080"]

152 volumes: ["./gateway.yaml:/etc/claude/gateway.yaml:ro"]

153 environment:

154 OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}

155 GATEWAY_JWT_SECRET: ${GATEWAY_JWT_SECRET}

156 GATEWAY_POSTGRES_URL: postgres://gw:pw@postgres/gateway

157 # AWS 認證:在生產中,省略這些並使用執行個體

158 # 角色。對於本地 Compose 測試,傳遞您自己的:

159 AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}

160 AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}

161 AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN}

162 depends_on:

163 postgres:

164 condition: service_healthy

165 postgres:

166 image: postgres:16-alpine

167 environment: { POSTGRES_USER: gw, POSTGRES_PASSWORD: pw, POSTGRES_DB: gateway }

168 healthcheck:

169 test: ["CMD-SHELL", "pg_isready -U gw"]

170 interval: 5s

171 volumes: ["pgdata:/var/lib/postgresql/data"]

172 volumes: { pgdata: }

173 ```

174 

175 閘道是一個單一 Linux 二進位檔,讀取配置,針對您的 IdP 執行 OIDC 發現,應用其 Postgres 架構遷移,建立上游用戶端,並開始監聽。啟動對配置、Postgres 連接(5 秒超時)、OIDC 發現和上游用戶端構造是失敗關閉的。如果其中任何一個無法到達或配置錯誤,閘道會以錯誤退出,而不是以降級狀態提供流量。

176 

177 成功啟動不驗證推理路徑,因為 Bedrock 和 Google Cloud 的 Agent Platform 執行個體認證在第一個請求時解析,而不是在啟動時。

178 

179 監視 stderr 以了解啟動序列。日誌行使用格式 `[gateway] <timestamp> <level> <message>`,稽核事件是帶有 `evt` 欄位的單行 JSON,啟動橫幅(下面省略)在遷移和監聽行之間列印。您應該按順序看到:

180 

181 ```text theme={null}

182 {"ts":"2026-06-10T17:03:21.114Z","evt":"config.load","path":"/etc/claude/gateway.yaml","sha256":"…"}

183 [gateway] 2026-06-10T17:03:21.408Z info migration 1 applied

184 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080

185 ```

186 

187 如果啟動在 `claude gateway listening on` 行之前退出,stderr 的最後一行命名問題:

188 

189 * 無法到達的 Postgres

190 * 沒有 DDL 權限的 Postgres 角色

191 * 無法到達或無效的 OIDC 發現文件

192 * 配置架構違規,帶有違規欄位路徑

193 

194 修復它並重新啟動。

195 

196 如果您已經有 TLS 終止入口,請跳過 Compose 並直接使用 `claude gateway --config gateway.yaml` 執行二進位檔。將 `public_url` 設定為入口來源,並將 `listen` 綁定到環回或叢集內部地址。

197 </Step>

198 

199 <Step title="驗證身份驗證表面">

200 三個檢查確認閘道可以在將其交給開發人員之前驗證真實使用者。

201 

202 示例使用閘道的公開 URL;對於沒有入口的本地 Compose 設定,在前兩個檢查中替換 `http://localhost:8080`。第三個檢查開啟 `verification_uri_complete`,它從 `public_url` 建立,因此對於本地 Compose,在 `gateway.yaml` 中設定 `public_url: http://localhost:8080`,並在步驟 1 的 OAuth 用戶端上新增 `http://localhost:8080/oauth/callback` 作為第二個重定向 URI,因為閘道從 `public_url` 建立 IdP `redirect_uri`。驗證連結然後在您的本地瀏覽器中開啟。

203 

204 在 Windows PowerShell 中,執行 `curl.exe`;裸 `curl` 是 `Invoke-WebRequest` 的別名,拒絕這些標誌。

205 

206 首先,獲取發現文件,確認閘道已啟動、配置有效且所有啟動檢查已通過:

207 

208 ```bash theme={null}

209 curl -s https://claude-gateway.internal.example.com/.well-known/oauth-authorization-server | jq

210 ```

211 

212 ```json theme={null}

213 {

214 "issuer": "https://claude-gateway.internal.example.com",

215 "device_authorization_endpoint": "…/oauth/device_authorization",

216 "token_endpoint": "…/oauth/token",

217 "grant_types_supported": ["urn:ietf:params:oauth:grant-type:device_code", "refresh_token"]

218 }

219 ```

220 

221 回應包括其他欄位,例如 `response_types_supported` 和 `scopes_supported`。

222 

223 其次,請求裝置授權,確認裝置登入流程有效且 Postgres 可到達且可寫:

224 

225 ```bash theme={null}

226 curl -s -X POST https://claude-gateway.internal.example.com/oauth/device_authorization | jq

227 ```

228 

229 ```json theme={null}

230 {

231 "device_code": "…",

232 "user_code": "WDJB-MJHT",

233 "verification_uri": "https://claude-gateway.internal.example.com/device",

234 "verification_uri_complete": "https://claude-gateway.internal.example.com/device?user_code=WDJB-MJHT",

235 "expires_in": 600,

236 "interval": 5

237 }

238 ```

239 

240 第三,透過在瀏覽器中開啟 `verification_uri_complete` 並確認代碼來測試瀏覽器部分。您應該被重定向到您的 IdP 的登入頁面,登入後,返回閘道並顯示已登入確認。

241 

242 使用第一個失敗的檢查來定位問題:

243 

244 * **第一個檢查失敗**:啟動未完成;檢查 stderr

245 * **第二個檢查失敗**:Postgres 無法從閘道到達或角色無法寫入;檢查連接字串和授予

246 * **第三個檢查無法到達 IdP**:檢查 IdP 的重定向 URI 是否完全符合 `https://<gateway>/oauth/callback`

247 * **第三個檢查到達 IdP 但以錯誤反彈**:讀取閘道的稽核日誌,它記錄每個身份驗證拒絕及其原因,例如 `email domain not allowed`

248 </Step>

249 

250 <Step title="登入開發人員">

251 最後一步發生在開發人員機器上,而不是伺服器上。在該機器的[受管設定檔](/docs/zh-TW/settings#settings-files)中將 `forceLoginMethod` 設定為 `"gateway"` 並將 `forceLoginGatewayUrl` 設定為您的閘道的 `public_url`,然後執行 `/login`,在**雲端閘道**螢幕上按 Enter,並完成瀏覽器登入。下面的[設定閘道 URL](#set-the-gateway-url) 涵蓋大規模分發兩個金鑰。

252 </Step>

253</Steps>

254 

255<h2 id="connect-developers">

256 連接開發人員

257</h2>

258 

259開發人員從自己的筆記型電腦使用一次瀏覽器登入進行連接,使用他們的公司工作帳戶。他們不需要 claude.ai 帳戶、API 金鑰或訂閱,因為對模型的請求透過使用組織上游認證的閘道進行。連接由您透過 MDM 推送的[用戶端側受管設定](/docs/zh-TW/claude-apps-gateway-config#client-side-managed-settings)驅動,因此開發人員端沒有手動設定;本節涵蓋管理員配置的內容。

260 

261CLI 在首次連接時對閘道的 TLS 葉憑證進行指紋識別,並按主機名固定它。發佈預期的 SHA-256 指紋以及閘道 URL,以便開發人員有可比較的內容。使用 `openssl x509 -noout -fingerprint -sha256 -in cert.pem` 從憑證檔案取得指紋;`/login` 提示顯示摘要的前 16 個字元作為小寫十六進位,無分隔符。

262 

263當憑證輪換時,每個開發人員都會再次看到信任提示,因此將輪換視為計劃事件並重新發佈指紋。

264 

265登入後,[模型選擇器](/docs/zh-TW/model-config)顯示開發人員 `availableModels` 允許清單中的模型、受管設定在啟動時應用並每小時刷新一次,遙測路由到您的收集器。會話在 `ttl_hours` 過期前無聲刷新,IdP 取消佈建後的失敗刷新會提示重新登入。

266 

267<h3 id="set-the-gateway-url">

268 設定閘道 URL

269</h3>

270 

271在您透過 MDM 或直接在磁碟上部署的每個 OS [受管設定檔](/docs/zh-TW/settings#settings-files)中設定兩個金鑰,`/login` 直接在**雲端閘道**螢幕上開啟,URL 已填入:

272 

273```json theme={null}

274{

275 "forceLoginMethod": "gateway",

276 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

277}

278```

279 

280開發人員按 Enter 進行連接。首次連接 TLS 指紋提示仍然出現。

281 

282登入選擇器中沒有閘道選項供開發人員手動選擇,`forceLoginGatewayUrl` 在開發人員自己的設定檔中被忽略。`forceLoginMethod` 單獨,沒有 URL,將開發人員留在「聯絡您的 IT 管理員」訊息處。兩個金鑰都應該在您推送到機器的檔案中,而不是在閘道的 `managed.policies[].cli` 區塊中,該區塊僅到達已連接的用戶端。

283 

284<h3 id="ci-pipelines-and-remote-machines">

285 CI 管道和遠端機器

286</h3>

287 

288沒有無人值守管道的服務令牌流程。閘道登入始終執行瀏覽器裝置流程,因此沒有開發人員批准登入的 CI 作業無法進行身份驗證;針對您的提供商直接配置這些。

289 

290開發人員登入後,該機器上的每個 Claude Code 呼叫都使用閘道會話,包括非互動式 `claude -p` 執行和由 Agent SDK 啟動的會話,[閘道原則適用於所有這些](/docs/zh-TW/claude-apps-gateway-config#managed)。

291 

292裝置流程將輪詢 CLI 與批准瀏覽器分開,因此沒有顯示的遠端開發框仍然有效:開發人員透過 SSH 在遠端機器上執行 `/login`,並在其筆記型電腦上的瀏覽器中開啟驗證連結。

293 

294<h3 id="what’s-enforced-on-developers">

295 在開發人員上強制執行的內容

296</h3>

297 

298這些保證適用於每個已登入的閘道會話。

299 

300* **模型存取**:對於原則不授予的模型的請求返回 400,`/model` 選擇器被篩選為原則的 `availableModels` 允許清單。在原則中設定 [`enforceAvailableModels: true`](/docs/zh-TW/model-config#default-model-behavior),以便預設選項解析為 `availableModels` 內的模型,而不是 Claude Code 的內建預設值;沒有它,預設保持可選擇,如果該模型未被授予,則在請求時被拒絕。

301* **遙測目的地**:當配置[遙測轉發](/docs/zh-TW/claude-apps-gateway-config#telemetry)時,OTLP 匯出端點被固定到閘道,閘道推送的配置覆蓋本地設定的 `OTEL_*` 變數。

302* **認證**:閘道令牌是會話的唯一認證。`ANTHROPIC_AUTH_TOKEN`、`ANTHROPIC_API_KEY`、`apiKeyHelper` 和任何較早的 claude.ai 登入在登入時被忽略,因此開發人員不需要先登出 claude.ai。

303* **受管設定**:鎖定的金鑰無法在本地覆蓋。CLI 在啟動時和每個每小時輪詢時應用原則。

304* **啟動**:當閘道無法到達時,已登入的會話在啟動時約 10 秒後以錯誤退出,而不是在沒有其設定的情況下啟動。

305* **取消佈建**:其使用者在 IdP 中被禁用的會話在下一次刷新失敗時在 `ttl_hours` 內過期。

306 

307<h3 id="what-the-organization-can-see">

308 組織可以看到什麼

309</h3>

310 

311使用情況遙測攜帶開發人員的身份、令牌計數、模型和延遲到組織的收集器。閘道不記錄或儲存提示或完成內容。是否收集更豐富的遙測(例如日誌和追蹤),可能包括命令和檔案路徑,是組織的[按目的地選擇](/docs/zh-TW/claude-apps-gateway-config#telemetry)。

312 

313<h2 id="availability-and-limitations">

314 可用性和限制

315</h2>

316 

317該表涵蓋當開發人員透過閘道連接時哪些 Claude Code 功能有效,以及閘道伺服器本身支援什麼。如果不支援某些內容,「備註」欄提供替代方案。

318 

319閘道傳遞 CLI 發送到每個上游的 [`anthropic-beta`](https://platform.claude.com/docs/en/api/beta-headers) 值,因此操作員不維護測試版允許清單。對於 Amazon Bedrock(忽略標頭),閘道將值移到請求正文的 `anthropic_beta` 欄位;其他上游接收按發送方式發送的標頭。CLI 的閘道會話測試版集合省略了僅限第一方的測試版和擴展快取 TTL 測試版,這就是為什麼下面這些行顯示為不可用。

320 

321| 功能 | 狀態 | 備註 |

322| ------------------------------------------------------------------------------------------------------ | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

323| 推理轉發 (Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform、Microsoft Foundry、Anthropic) | 可用 | 具有按上游模型轉換和故障轉移。Amazon Bedrock 上游使用 `bedrock-runtime` 端點和 AWS 預設認證鏈;Amazon Bedrock [Mantle 端點](/docs/zh-TW/amazon-bedrock#use-the-mantle-endpoint)不是支援的上游。[Claude Platform on AWS 上游](/docs/zh-TW/claude-apps-gateway-config#claude-platform-on-aws)需要閘道伺服器上的 Claude Code v2.1.198 或更新版本。 |

324| 按 IdP 群組的模型存取和受管設定 | 可用 | 模型存取在伺服器端強制執行;受管設定按 IdP 群組傳遞,由 CLI 在[受管設定層級](/docs/zh-TW/settings#settings-precedence)應用 |

325| 遙測扇出 (OTLP/HTTP) | 可用 | 按匯出標識戳記;protobuf 和 JSON 編碼 |

326| OIDC 身份提供者 | 可用 | 任何符合 OIDC 的 IdP;閘道執行標準 OIDC 探索和授權碼流程。請參閱[身份提供者設定](/docs/zh-TW/claude-apps-gateway-deploy#identity-provider-setup)以了解各 IdP 的配置 |

327| 按使用者和按群組支出限制 | 可用 | 請參閱[支出限制](/docs/zh-TW/claude-apps-gateway-spend-limits) |

328| 伺服器端網路搜尋 | 不可用 | CLI 無法看到閘道路由到的上游提供商,因此無法驗證網路搜尋支援並在閘道會話上禁用 WebSearch |

329| 標準提示快取 | 可用 | `cache_control` 斷點被轉發到每個上游 |

330| 1 小時快取 TTL | 不可用 | CLI 在閘道會話上省略擴展快取 TTL 測試版,因為並非閘道可以路由到的每個上游都支援 1 小時 TTL,因此透過閘道的提示快取使用 5 分鐘 TTL;請參閱上面的測試版標頭備註 |

331| 自動模式 | 可用 | 遵循[第三方提供商規則](/docs/zh-TW/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry):只有第三方提供商上符合條件的模型可以使用它。{/* min-version: 2.1.207 */}在 v2.1.207 之前,閘道會話上的自動模式需要設定 `CLAUDE_CODE_ENABLE_AUTO_MODE=1`,可透過受管原則 `env` 區塊傳遞 |

332| 僅限第一方的最佳化,例如全域快取範圍和令牌高效工具 | 不可用 | CLI 在閘道會話上不啟用它們;請參閱上面的測試版標頭備註 |

333| OTLP/gRPC | 不支援 | 僅 OTLP over HTTP |

334| SAML、LDAP 和其他非 OIDC 身份驗證 | 不支援 | 僅 OIDC。如果需要,使用 OIDC 橋接 |

335| 多租戶(多個 OIDC 發行者) | 不支援 | 每個閘道一個發行者。執行單獨的執行個體 |

336| Windows 伺服器 | 不支援 | 在 Linux 上部署。僅本地開發的 macOS |

337| Helm 圖表 | 不可用 | 閘道作為標準無狀態部署執行;請參閱[部署指南](/docs/zh-TW/claude-apps-gateway-deploy#kubernetes) |

338| 管理員 UI | 不可用 | 配置是 YAML 檔案;重新部署以更改它 |

339 

340<h2 id="next-steps">

341 後續步驟

342</h2>

343 

344快速入門讓您在 Docker Compose 下執行最小配置。要進一步進行:

345 

346* 擴展 `gateway.yaml` 超越最小配置,例如新增按群組 RBAC、多上游故障轉移或遙測目的地。[配置參考](/docs/zh-TW/claude-apps-gateway-config)涵蓋每個選項。

347* 從 Compose 移動到 Kubernetes 或 Cloud Run 上的生產部署,正確設定您的 IdP,並檢查安全模型。[部署和操作指南](/docs/zh-TW/claude-apps-gateway-deploy)涵蓋每個 IdP 的設定、容器映像要求、健康探針和故障排除。

348* 對個別開發人員或群組設定支出上限,以便失控的工作負載無法消耗您的整個承諾。[支出限制](/docs/zh-TW/claude-apps-gateway-spend-limits)涵蓋管理員 API 以及強制執行的工作方式。

349* 有關 Google Cloud 上的完整實踐示例,包括 Cloud Run、Cloud SQL 和 Secret Manager,請參閱[在 Google Cloud 上部署](/docs/zh-TW/claude-apps-gateway-on-gcp)。

corporate-launcher.md +142 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# 在公司啟動程式後面執行 Claude Code

6 

7> 使用 CLAUDE_CODE_PROCESS_WRAPPER 透過必要的啟動程式路由 Claude Code 從其自身二進位檔案啟動的程序,包括背景服務和每個代理檢視工作階段。

8 

9某些組織要求工作站上的每個程序都透過強制性啟動程式啟動。啟動程式會應用沙箱、網路控制或認證注入,這些是公司安全態勢所依賴的,而不透過它啟動的二進位檔案是違反政策的。

10 

11`CLAUDE_CODE_PROCESS_WRAPPER` 透過您的啟動程式啟動 Claude Code 從其自身二進位檔案啟動的每個程序:背景服務、它在[代理檢視](/docs/zh-TW/agent-view)中託管的每個工作階段,以及 Claude Code 在更新後的重新啟動。將其設定為您的啟動程式的絕對路徑,Claude Code 會執行啟動程式,並將 Claude Code 命令作為其引數。

12 

13在您的 `PATH` 上包裝 `claude` 命令的啟動程式無法到達這些程序,因為它們從二進位檔案的直接路徑啟動,不會查詢 `claude`。

14 

15<Note>

16 `CLAUDE_CODE_PROCESS_WRAPPER` 需要 Claude Code v2.1.208 或更新版本。較早的版本會忽略該變數,並啟動每個未包裝的程序。

17</Note>

18 

19<h2 id="what-the-launcher-covers">

20 啟動程式涵蓋的內容

21</h2>

22 

23設定 `CLAUDE_CODE_PROCESS_WRAPPER` 後,Claude Code 會透過您的啟動程式啟動以下每個程序:

24 

25* `claude agents` 和背景工作階段按需啟動的背景服務。

26* 每個代理檢視列中的終端主機和 Claude Code 工作階段,包括服務保持就緒的暖備用工作階段。

27* 服務在更新或當機後重新產生的工作階段。

28* Claude Code 執行自身以完成安裝更新的重新啟動,包括代理檢視的重新啟動以進行更新動作。

29 

30在 Windows 上,該變數被忽略:啟動程式合約取決於 `exec`,而 Windows 不支援。設定了該變數的 Windows 機器會執行每個未包裝的程序並繼續工作,唯一的信號是[偵錯日誌](/docs/zh-TW/troubleshooting)中的警告。如果您的啟動程式政策涵蓋 Windows,該變數在那裡不滿足它:在規劃推出時,將 Windows 機器計為未包裝。

31 

32<h3 id="processes-that-start-outside-the-launcher">

33 在啟動程式外啟動的程序

34</h3>

35 

36三個程序永遠不會透過啟動程式啟動:

37 

38* [已安裝的背景服務](/docs/zh-TW/agent-view#the-supervisor-process):`launchd` 或 `systemd` 從其單位檔案啟動該程序。當這適用時,`/status` 和 `claude daemon status` 會發出警告,服務產生的工作階段在服務使用設定中的變數重新啟動後仍會透過啟動程式啟動。

39* 您自己在終端中啟動的工作階段,它會按照您叫用它的方式執行。要涵蓋這些工作階段,請在 `PATH` 上較早的目錄中放置一個名為 `claude` 的指令碼,該指令碼使用真實二進位檔案執行您的啟動程式;不要替換受管理的符號連結。自我產生不會查詢 `PATH`,因此兩個啟動程式永遠不會堆疊。

40* `claude-cli://` 深層連結的第一個程序,作業系統的協定處理程式直接啟動。該工作階段之後在背景中啟動的所有內容都會透過啟動程式執行。要完全關閉此路徑,請使用 `disableDeepLinkRegistration` 設定[防止處理程式註冊](/docs/zh-TW/deep-links#registration-and-supported-platforms)。

41 

42<h3 id="helper-process-names-in-process-monitors">

43 程序監視器中的協助程序名稱

44</h3>

45 

46配置了啟動程式後,`ps` 和 Activity Monitor 會顯示背景協助程序的版本化二進位檔案名稱,而不是 Claude Code 的 `claude bg-pty-host` 和 `claude bg-spare` 標籤,因為啟動程式的 `exec` 會重建引數清單。重新命名是副作用,不是隱蔽:程序在其他方面保持不變,Claude Code 透過二進位檔案路徑識別自己的程序,永遠不會透過顯示名稱。

47 

48<h2 id="set-up-the-launcher">

49 設定啟動程式

50</h2>

51 

52<Steps>

53 <Step title="編寫啟動程式指令碼">

54 在絕對路徑(例如 `/opt/corp/launcher`)建立可執行指令碼。Claude Code 使用完整的 Claude Code 命令作為其引數執行它,指令碼必須以呼叫 `exec "$@"` 結尾,以便它用 Claude Code 替換自身:

55 

56 ```bash theme={null}

57 #!/bin/sh

58 # Your organization's setup: enter the sandbox, apply

59 # network controls, or inject credentials.

60 exec "$@"

61 ```

62 

63 使用 `chmod +x` 使其可執行。設定部分是您的啟動程式在 Claude Code 執行前必須執行的任何操作;下面的[啟動程式合約](#the-launcher-contract)列出了指令碼必須遵循的規則。

64 

65 <Note>

66 如果您之前用您的啟動程式替換了 `~/.local/bin/claude` 符號連結,請在同一變更中還原原始符號連結。替換的符號連結會導致第一個包裝的工作階段透過兩個啟動程式同時啟動背景服務,並將安裝置於外部受管理狀態:`/doctor` 會報告它,自動更新會將檔案保留在原位,舊版本的清理會保持禁用,直到安裝程式再次管理該路徑。

67 </Note>

68 </Step>

69 

70 <Step title="在設定中設定 CLAUDE_CODE_PROCESS_WRAPPER">

71 在設定檔案的 `env` 區塊中設定變數,以便分離的背景服務繼承它。shell `export` 還不夠:背景服務按需啟動,超過您的 shell 的生命週期,並且永遠不會重新讀取 shell 設定檔。

72 

73 對於一台機器,將其新增到 `~/.claude/settings.json`。要將其部署到組織中的每台機器,請在[受管理設定](/docs/zh-TW/permissions#managed-settings)中放置相同的區塊:

74 

75 ```json theme={null}

76 {

77 "env": {

78 "CLAUDE_CODE_PROCESS_WRAPPER": "/opt/corp/launcher"

79 }

80 }

81 ```

82 

83 當多個來源設定變數時,受管理設定值會覆蓋 `~/.claude/settings.json` 和 shell 中匯出的值,因此使用者無法將自我產生指向不同的啟動程式。

84 

85 專案和本機設定無法設定此變數。提交到儲存庫的檔案不得能夠將二進位檔案放在機器上的每個 Claude Code 程序前面,因此 `.claude/settings.json` 或 `.claude/settings.local.json` 中的 `CLAUDE_CODE_PROCESS_WRAPPER` 會被忽略,並在[偵錯日誌](/docs/zh-TW/troubleshooting)中發出警告。

86 </Step>

87 

88 <Step title="重新啟動背景服務和您的工作階段">

89 執行中的背景服務和任何開啟的 `claude` 工作階段在啟動時讀取變數一次,因此它們會繼續啟動未包裝的程序,直到重新啟動。執行 `claude daemon stop --any` 以停止按需服務;下一個需要它的命令(例如 `claude agents`)會啟動一個包裝的命令。[已安裝的服務](/docs/zh-TW/agent-view#the-supervisor-process)採用 `claude daemon stop` 而不需要 `--any`。然後重新啟動您開啟的 `claude` 工作階段。

90 

91 在您無法手動重新啟動的機器上,設定推送後啟動的第一個工作階段會自動淘汰遺留的未包裝按需服務。沒有新工作階段啟動的機器會保留其未包裝的服務,直到啟動一個,而已安裝的服務始終需要此步驟中的重新啟動。

92 </Step>

93 

94 <Step title="驗證">

95 在工作階段中執行 `/status`:Self-exec 項目顯示已解析的啟動命令,並在執行中的背景服務與其不匹配時發出警告。`claude daemon status` 從 shell 列印相同的資訊,包括在您取消設定變數後,當 `/status` 不再顯示該項目時。

96 </Step>

97</Steps>

98 

99<h2 id="the-launcher-contract">

100 啟動程式合約

101</h2>

102 

103當啟動程式無法執行時,Claude Code 拒絕啟動程序,而不是啟動它未包裝。在 Windows 上,[變數被忽略](#what-the-launcher-covers),程序啟動未包裝。Claude Code 對指令碼遵循這些規則:

104 

105* **以 `exec "$@"` 結尾。** 分叉子程序並退出的啟動程式會留下孤立的 Claude Code 程序,背景服務無法追蹤。代理檢視會將此類工作階段標記為失敗,並顯示命名啟動程式的訊息,服務會清理啟動程式留下的內容。

106* **不要重新排序、吸收或前置引數。** 第一個引數是 Claude Code 二進位檔案,其後的所有內容都是其 argv。

107* **將每個繼承的環境變數傳遞給 `exec`。** 新增變數(例如注入的認證)沒問題;刪除繼承的變數不行。

108 * 每個工作階段的驗證令牌、模型和提供者選擇,以及 `CLAUDE_CODE_PROCESS_WRAPPER` 本身都在繼承的環境中傳遞,因此從允許清單重建環境的啟動程式會破壞它啟動的工作階段,`/status` 會報告啟動程式不匹配。

109 * 如果啟動程式必須進入重設環境的命名空間或沙箱,請在其內部逐字重新匯出繼承的環境。

110* **在啟動程式每次執行時約三秒內到達 `exec`。** 冷背景分派在第一個輸出位元組前連續執行啟動程式兩次,因此請懶惰地或從快取執行緩慢的工作,例如單一登入交換。

111 * 執行遠超預算的啟動程式被視為停滯啟動並重新啟動。

112* **容忍從內部叫用自身。** Claude Code 將啟動程式應用於每個嵌套的自我產生,因此獲取獨佔資源的啟動程式必須偵測它是否已持有它。

113* **在 Claude Code 啟動前不要寫入終端。** 在 `exec` 前列印的任何內容都會在工作階段在初始化前死亡時報告為當機原因。

114 

115<h3 id="format-of-the-claude_code_process_wrapper-value">

116 `CLAUDE_CODE_PROCESS_WRAPPER` 值的格式

117</h3>

118 

119對於大多數啟動程式,該值只是指令碼的絕對路徑,例如 `/opt/corp/launcher`。

120 

121要傳遞您的啟動程式自己的引數,請在路徑後寫入它們。Claude Code 將該值解析為引數清單,而不是 shell 命令:

122 

123* 空白分隔令牌,雙引號將包含空格的令牌分組。

124* 以 `[` 開頭的值被讀取為 JSON 字串陣列,例如 `["/opt/corp/launcher", "--profile", "cc"]`。

125* Shell 語法不起作用:沒有變數擴展或全域化,未引用的運算子(例如 `;`、`|`、`&` 或 `$(`)被拒絕為配置錯誤,而不是重新解釋。

126 

127當無法使用該值時,Claude Code 拒絕啟動受影響的程序並[報告原因](/docs/zh-TW/errors#claude_code_process_wrapper-launcher-errors)。

128 

129<h2 id="relationship-to-claude_code_shell_prefix">

130 與 `CLAUDE_CODE_SHELL_PREFIX` 的關係

131</h2>

132 

133`CLAUDE_CODE_PROCESS_WRAPPER` 包裝 Claude Code 自己的程序,並將命令作為單獨的 argv 令牌傳遞給啟動程式以執行。[`CLAUDE_CODE_SHELL_PREFIX`](/docs/zh-TW/env-vars) 包裝 Claude Code 代表您執行的 shell 命令,例如 Bash 工具呼叫、hooks 和啟動 stdio MCP 伺服器的命令,並將每個命令作為 `$1` 中的單個 shell 引用字串傳遞給包裝程式以重新評估。為一個編寫的啟動程式不會作為另一個工作。

134 

135<h2 id="related-resources">

136 相關資源

137</h2>

138 

139* [代理檢視](/docs/zh-TW/agent-view):啟動程式涵蓋的背景工作階段和監督程序

140* [環境變數](/docs/zh-TW/env-vars):`CLAUDE_CODE_PROCESS_WRAPPER` 參考項目

141* [受管理設定](/docs/zh-TW/permissions#managed-settings):在整個機隊中傳遞 `env` 區塊

142* [啟動程式錯誤參考](/docs/zh-TW/errors#claude_code_process_wrapper-launcher-errors):拒絕訊息以及如何恢復

devcontainer.md +25 −25

Details

12 12 

13<Warning>13<Warning>

14 雖然開發容器提供了大量保護,但沒有任何系統完全免疫所有攻擊。14 雖然開發容器提供了大量保護,但沒有任何系統完全免疫所有攻擊。

15 當使用 `--dangerously-skip-permissions` 執行時,開發容器不會阻止惡意專案從容器內可存取的任何內容(包括儲存在 [`~/.claude`](/zh-TW/claude-directory) 中的 Claude Code 認證)進行資料外洩。15 當使用 `--dangerously-skip-permissions` 執行時,開發容器不會阻止惡意專案從容器內可存取的任何內容(包括儲存在 [`~/.claude`](/docs/zh-TW/claude-directory) 中的 Claude Code 認證)進行資料外洩。

16 僅在使用受信任的儲存庫進行開發時使用開發容器,並監控 Claude 的活動。16 僅在使用受信任的儲存庫進行開發時使用開發容器,並監控 Claude 的活動。

17 避免將主機祕密(例如 `~/.ssh` 或雲端認證檔案)掛載到容器中;優先使用儲存庫範圍或短期有效的令牌。17 避免將主機祕密(例如 `~/.ssh` 或雲端認證檔案)掛載到容器中;優先使用儲存庫範圍或短期有效的令牌。

18</Warning>18</Warning>


20<Accordion title="開發容器如何與您的編輯器配合使用">20<Accordion title="開發容器如何與您的編輯器配合使用">

21 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="顯示主機上的編輯器連接到 Docker 開發容器的圖表。Claude Code、終端和構建工具在容器內執行。主機儲存庫被綁定掛載到容器中作為工作區。" width="640" height="300" data-path="images/devcontainer-architecture.svg" />21 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="顯示主機上的編輯器連接到 Docker 開發容器的圖表。Claude Code、終端和構建工具在容器內執行。主機儲存庫被綁定掛載到容器中作為工作區。" width="640" height="300" data-path="images/devcontainer-architecture.svg" />

22 22 

23 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="顯示主機上的編輯器連接到 Docker 開發容器的圖表。Claude Code、終端和構建工具在容器內執行。主機儲存庫被綁定掛載到容器中作為工作區。" width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />23 <img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=a0a340b1f2afc6a590696102c8acaaca" className="hidden dark:block" alt="顯示主機上的編輯器連接到 Docker 開發容器的圖表。Claude Code、終端和構建工具在容器內執行。主機儲存庫被綁定掛載到容器中作為工作區。" width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

24 24 

25 開發容器作為 Docker 容器執行,可以在您的機器上或雲端主機(例如 GitHub Codespaces)上執行。支援 Dev Containers 規範的編輯器(例如 VS Code、GitHub Codespaces、JetBrains IDE 或 Cursor)連接到該容器:您在編輯器中照常瀏覽和編輯檔案,但整合終端、語言伺服器和構建工具都在容器內執行,而不是在您的主機上。不支援開發容器的編輯器(例如純 Vim)不是此工作流程的一部分。25 開發容器作為 Docker 容器執行,可以在您的機器上或雲端主機(例如 GitHub Codespaces)上執行。支援 Dev Containers 規範的編輯器(例如 VS Code、GitHub Codespaces、JetBrains IDE 或 Cursor)連接到該容器:您在編輯器中照常瀏覽和編輯檔案,但整合終端、語言伺服器和構建工具都在容器內執行,而不是在您的主機上。不支援開發容器的編輯器(例如純 Vim)不是此工作流程的一部分。

26 26 

27 Claude Code 在容器內執行,因此它看到與您的專案工具鏈其餘部分相同的檔案、依賴項和工具。在 VS Code 中,您可以使用 [Claude Code 擴充功能面板](/zh-TW/vs-code) 或在整合終端中執行 `claude`;兩者都在容器內執行並共享相同的 `~/.claude` 配置。27 Claude Code 在容器內執行,因此它看到與您的專案工具鏈其餘部分相同的檔案、依賴項和工具。在 VS Code 中,您可以使用 [Claude Code 擴充功能面板](/docs/zh-TW/vs-code) 或在整合終端中執行 `claude`;兩者都在容器內執行並共享相同的 `~/.claude` 配置。

28</Accordion>28</Accordion>

29 29 

30<h2 id="add-claude-code-to-your-dev-container">30<h2 id="add-claude-code-to-your-dev-container">


75您在身份驗證提示中看到的內容取決於您的提供者:75您在身份驗證提示中看到的內容取決於您的提供者:

76 76 

77* **Anthropic**:透過瀏覽器使用您的 Claude 或 Anthropic Console 帳戶登入77* **Anthropic**:透過瀏覽器使用您的 Claude 或 Anthropic Console 帳戶登入

78* **[Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry](/zh-TW/third-party-integrations)**:Claude Code 使用您的雲端提供者認證,無需瀏覽器提示78* **[Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry](/docs/zh-TW/third-party-integrations)**:Claude Code 使用您的雲端提供者認證,無需瀏覽器提示

79 79 

80對於雲端提供者,透過 `containerEnv`、Codespaces 祕密或您的雲端的工作負載身份(而不是從主機掛載認證檔案)將認證傳遞到容器中。請參閱 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Cloud 的 Agent Platform](/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/zh-TW/microsoft-foundry) 以了解 Claude Code 讀取的認證鏈。80對於雲端提供者,透過 `containerEnv`、Codespaces 祕密或您的雲端的工作負載身份(而不是從主機掛載認證檔案)將認證傳遞到容器中。請參閱 [Amazon Bedrock](/docs/zh-TW/amazon-bedrock)、[Google Cloud 的 Agent Platform](/docs/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 以了解 Claude Code 讀取的認證鏈。

81 81 

82請參閱[選擇您的 API 提供者](/zh-TW/admin-setup#choose-your-api-provider)以決定哪條路徑適合您的組織。82請參閱[選擇您的 API 提供者](/docs/zh-TW/admin-setup#choose-your-api-provider)以決定哪條路徑適合您的組織。

83 83 

84<Note>84<Note>

85 如果瀏覽器登入完成但回調從未到達容器,請複製瀏覽器中顯示的代碼,並將其貼上到終端中的 `Paste code here if prompted` 提示處。當編輯器的連接埠轉發不會路由 localhost 回調時,可能會發生這種情況。85 如果瀏覽器登入完成但回調從未到達容器,請複製瀏覽器中顯示的代碼,並將其貼上到終端中的 `Paste code here if prompted` 提示處。當編輯器的連接埠轉發不會路由 localhost 回調時,可能會發生這種情況。


89 在重新構建時保持身份驗證和設定89 在重新構建時保持身份驗證和設定

90</h2>90</h2>

91 91 

92預設情況下,容器的主目錄在重新構建時會被丟棄,因此工程師必須每次都重新登入。Claude Code 將其身份驗證令牌、使用者設定和工作階段歷史記錄儲存在 [`~/.claude`](/zh-TW/claude-directory) 下。在該路徑掛載一個命名磁碟區以在重新構建時保持此狀態。92預設情況下,容器的主目錄在重新構建時會被丟棄,因此工程師必須每次都重新登入。Claude Code 將其身份驗證令牌、使用者設定和工作階段歷史記錄儲存在 [`~/.claude`](/docs/zh-TW/claude-directory) 下。在該路徑掛載一個命名磁碟區以在重新構建時保持此狀態。

93 93 

94以下示例在 `node` 使用者的主目錄掛載一個磁碟區:94以下示例在 `node` 使用者的主目錄掛載一個磁碟區:

95 95 


99]99]

100```100```

101 101 

102將 `/home/node` 替換為您的容器的 `remoteUser` 的主目錄。如果您在 `~/.claude` 以外的位置掛載磁碟區,請設定 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars) 為掛載路徑,以便 Claude Code 在那裡讀取和寫入。102將 `/home/node` 替換為您的容器的 `remoteUser` 的主目錄。如果您在 `~/.claude` 以外的位置掛載磁碟區,請設定 [`CLAUDE_CONFIG_DIR`](/docs/zh-TW/env-vars) 為掛載路徑,以便 Claude Code 在那裡讀取和寫入。

103 103 

104若要隔離每個專案的狀態,而不是在所有儲存庫中共享一個磁碟區,請在來源名稱中包含 `${devcontainerId}` 變數。[參考配置](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json)為此目的使用 `source=claude-code-config-${devcontainerId}`。104若要隔離每個專案的狀態,而不是在所有儲存庫中共享一個磁碟區,請在來源名稱中包含 `${devcontainerId}` 變數。[參考配置](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json)為此目的使用 `source=claude-code-config-${devcontainerId}`。

105 105 

106在 GitHub Codespaces 中,`~/.claude` 在停止和啟動 codespace 時會保持,但在重新構建容器時仍會被清除,因此上面的磁碟區掛載也適用於此。若要在 codespace 之間進行身份驗證,請將 `ANTHROPIC_API_KEY` 或來自 [`claude setup-token`](/zh-TW/authentication#generate-a-long-lived-token) 的 `CLAUDE_CODE_OAUTH_TOKEN` 儲存為 [Codespaces 祕密](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces);Codespaces 會自動將祕密作為環境變數提供給容器內。106在 GitHub Codespaces 中,`~/.claude` 在停止和啟動 codespace 時會保持,但在重新構建容器時仍會被清除,因此上面的磁碟區掛載也適用於此。若要在 codespace 之間進行身份驗證,請將 `ANTHROPIC_API_KEY` 或來自 [`claude setup-token`](/docs/zh-TW/authentication#generate-a-long-lived-token) 的 `CLAUDE_CODE_OAUTH_TOKEN` 儲存為 [Codespaces 祕密](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces);Codespaces 會自動將祕密作為環境變數提供給容器內。

107 107 

108<h2 id="enforce-organization-policy">108<h2 id="enforce-organization-policy">

109 強制執行組織政策109 強制執行組織政策


111 111 

112開發容器是應用組織政策的便利場所,因為相同的映像和配置在每位工程師的機器上執行。112開發容器是應用組織政策的便利場所,因為相同的映像和配置在每位工程師的機器上執行。

113 113 

114Claude Code 在 Linux 上讀取 `/etc/claude-code/managed-settings.json` 並在[設定層級結構](/zh-TW/settings#how-scopes-interact)中以最高優先級應用它,因此那裡的值會覆蓋工程師在 `~/.claude` 或專案的 `.claude/` 目錄中設定的任何內容。從您的 Dockerfile 複製檔案到位置:114Claude Code 在 Linux 上讀取 `/etc/claude-code/managed-settings.json` 並在[設定層級結構](/docs/zh-TW/settings#how-scopes-interact)中以最高優先級應用它,因此那裡的值會覆蓋工程師在 `~/.claude` 或專案的 `.claude/` 目錄中設定的任何內容。從您的 Dockerfile 複製檔案到位置:

115 115 

116```dockerfile Dockerfile theme={null}116```dockerfile Dockerfile theme={null}

117RUN mkdir -p /etc/claude-code117RUN mkdir -p /etc/claude-code

118COPY managed-settings.json /etc/claude-code/managed-settings.json118COPY managed-settings.json /etc/claude-code/managed-settings.json

119```119```

120 120 

121因為 Dockerfile 存在於儲存庫中,任何具有寫入存取權限的人都可以更改或移除此步驟。對於工程師無法透過編輯儲存庫檔案來繞過的政策,請透過[伺服器管理的設定](/zh-TW/server-managed-settings)或您的 MDM 提供託管設定。請參閱[託管設定檔案](/zh-TW/settings#settings-files)以了解可用的鍵和其他傳遞路徑。121因為 Dockerfile 存在於儲存庫中,任何具有寫入存取權限的人都可以更改或移除此步驟。對於工程師無法透過編輯儲存庫檔案來繞過的政策,請透過[伺服器管理的設定](/docs/zh-TW/server-managed-settings)或您的 MDM 提供託管設定。請參閱[託管設定檔案](/docs/zh-TW/settings#settings-files)以了解可用的鍵和其他傳遞路徑。

122 122 

123若要設定適用於容器中每個 Claude Code 工作階段的[環境變數](/zh-TW/env-vars),請將它們新增到您的 `devcontainer.json` 中的 `containerEnv`。以下示例選擇退出遙測和錯誤報告,並防止 Claude Code 在安裝後自動更新:123若要設定適用於容器中每個 Claude Code 工作階段的[環境變數](/docs/zh-TW/env-vars),請將它們新增到您的 `devcontainer.json` 中的 `containerEnv`。以下示例選擇退出遙測和錯誤報告,並防止 Claude Code 在安裝後自動更新:

124 124 

125```json devcontainer.json theme={null}125```json devcontainer.json theme={null}

126"containerEnv": {126"containerEnv": {


131 131 

132Dev Container Feature 始終安裝最新的 Claude Code 版本。若要為可重現的構建固定特定的 Claude Code 版本,請從您的 Dockerfile 使用 `npm install -g @anthropic-ai/claude-code@X.Y.Z` 安裝它,而不是使用該功能,並設定 `DISABLE_AUTOUPDATER`,如上所示。132Dev Container Feature 始終安裝最新的 Claude Code 版本。若要為可重現的構建固定特定的 Claude Code 版本,請從您的 Dockerfile 使用 `npm install -g @anthropic-ai/claude-code@X.Y.Z` 安裝它,而不是使用該功能,並設定 `DISABLE_AUTOUPDATER`,如上所示。

133 133 

134如需完整的政策控制清單(包括權限規則、工具限制和 MCP 伺服器允許清單),請參閱[為您的組織設定 Claude Code](/zh-TW/admin-setup)。134如需完整的政策控制清單(包括權限規則、工具限制和 MCP 伺服器允許清單),請參閱[為您的組織設定 Claude Code](/docs/zh-TW/admin-setup)。

135 135 

136若要在容器內提供 [MCP 伺服器](/zh-TW/mcp),請在儲存庫根目錄的 `.mcp.json` 檔案中以[專案範圍](/zh-TW/mcp#mcp-installation-scopes)定義它們,以便它們與您的開發容器配置一起簽入。在您的 Dockerfile 中安裝本地 stdio 伺服器所依賴的任何二進位檔案,並將遠端伺服器網域新增到您的網路允許清單。136若要在容器內提供 [MCP 伺服器](/docs/zh-TW/mcp),請在儲存庫根目錄的 `.mcp.json` 檔案中以[專案範圍](/docs/zh-TW/mcp#mcp-installation-scopes)定義它們,以便它們與您的開發容器配置一起簽入。在您的 Dockerfile 中安裝本地 stdio 伺服器所依賴的任何二進位檔案,並將遠端伺服器網域新增到您的網路允許清單。

137 137 

138<h2 id="restrict-network-egress">138<h2 id="restrict-network-egress">

139 限制網路出站流量139 限制網路出站流量

140</h2>140</h2>

141 141 

142您可以將容器的出站流量限制為僅 Claude Code 需要的網域。請參閱[網路存取要求](/zh-TW/network-config#network-access-requirements)以了解推理和身份驗證網域,以及[遙測服務](/zh-TW/data-usage#telemetry-services)以了解可選的遙測和錯誤報告連接以及如何停用它們。142您可以將容器的出站流量限制為僅 Claude Code 需要的網域。請參閱[網路存取要求](/docs/zh-TW/network-config#network-access-requirements)以了解推理和身份驗證網域,以及[遙測服務](/docs/zh-TW/data-usage#telemetry-services)以了解可選的遙測和錯誤報告連接以及如何停用它們。

143 143 

144參考容器包含一個 [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) 指令碼,該指令碼會阻止除 Claude Code 和您的開發工具需要的網域之外的所有出站流量。在容器內執行防火牆需要額外的權限,因此參考透過 `runArgs` 新增 `NET_ADMIN` 和 `NET_RAW` 功能。防火牆指令碼和這些功能對 Claude Code 本身不是必需的:您可以將它們省略並改為依賴您自己的網路控制。144參考容器包含一個 [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) 指令碼,該指令碼會阻止除 Claude Code 和您的開發工具需要的網域之外的所有出站流量。在容器內執行防火牆需要額外的權限,因此參考透過 `runArgs` 新增 `NET_ADMIN` 和 `NET_RAW` 功能。防火牆指令碼和這些功能對 Claude Code 本身不是必需的:您可以將它們省略並改為依賴您自己的網路控制。

145 145 


151 151 

152跳過權限提示會移除您在工具呼叫執行前進行審查的機會。Claude 仍然可以修改綁定掛載工作區中的任何檔案(該檔案直接出現在您的主機上),並到達容器的網路政策允許的任何內容。將此標誌與上面的[網路出站流量限制](#restrict-network-egress)配對,以限制繞過的工作階段可以到達的內容。152跳過權限提示會移除您在工具呼叫執行前進行審查的機會。Claude 仍然可以修改綁定掛載工作區中的任何檔案(該檔案直接出現在您的主機上),並到達容器的網路政策允許的任何內容。將此標誌與上面的[網路出站流量限制](#restrict-network-egress)配對,以限制繞過的工作階段可以到達的內容。

153 153 

154如果您想要更少的提示而不停用安全檢查,請考慮改為[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),該模式具有在執行前審查操作的分類器。若要完全防止工程師使用 `--dangerously-skip-permissions`,請在[託管設定](/zh-TW/settings#permission-settings)中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"`。154如果您想要更少的提示而不停用安全檢查,請考慮改為[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),該模式具有在執行前審查操作的分類器。若要完全防止工程師使用 `--dangerously-skip-permissions`,請在[託管設定](/docs/zh-TW/settings#permission-settings)中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"`。

155 155 

156<h2 id="try-the-reference-container">156<h2 id="try-the-reference-container">

157 試用參考容器157 試用參考容器


193 193 

194Claude Code 在您的開發容器中執行後,下面的頁面涵蓋組織推出的其餘部分:選擇身份驗證路徑、在儲存庫外提供託管政策、監控使用情況以及了解 Claude Code 儲存和傳送的內容。194Claude Code 在您的開發容器中執行後,下面的頁面涵蓋組織推出的其餘部分:選擇身份驗證路徑、在儲存庫外提供託管政策、監控使用情況以及了解 Claude Code 儲存和傳送的內容。

195 195 

196* [為您的組織設定 Claude Code](/zh-TW/admin-setup):選擇身份驗證提供者、決定政策如何到達裝置以及規劃推出196* [為您的組織設定 Claude Code](/docs/zh-TW/admin-setup):選擇身份驗證提供者、決定政策如何到達裝置以及規劃推出

197* [伺服器管理的設定](/zh-TW/server-managed-settings):從 Claude.ai 管理員控制台提供託管政策,以便工程師無法透過編輯儲存庫檔案來繞過它197* [伺服器管理的設定](/docs/zh-TW/server-managed-settings):從 Claude.ai 管理員控制台提供託管政策,以便工程師無法透過編輯儲存庫檔案來繞過它

198* [監控使用情況和審計活動](/zh-TW/monitoring-usage):匯出 OpenTelemetry 指標並審查您的團隊正在執行的內容198* [監控使用情況和審計活動](/docs/zh-TW/monitoring-usage):匯出 OpenTelemetry 指標並審查您的團隊正在執行的內容

199* [網路存取要求](/zh-TW/network-config#network-access-requirements):代理和防火牆的完整網域允許清單199* [網路存取要求](/docs/zh-TW/network-config#network-access-requirements):代理和防火牆的完整網域允許清單

200* [遙測服務和選擇退出](/zh-TW/data-usage#telemetry-services):Claude Code 預設傳送的內容以及停用它的環境變數200* [遙測服務和選擇退出](/docs/zh-TW/data-usage#telemetry-services):Claude Code 預設傳送的內容以及停用它的環境變數

201* [探索 `.claude` 目錄](/zh-TW/claude-directory):磁碟區掛載包含的內容,包括認證、設定和工作階段歷史記錄201* [探索 `.claude` 目錄](/docs/zh-TW/claude-directory):磁碟區掛載包含的內容,包括認證、設定和工作階段歷史記錄

202* [沙箱環境](/zh-TW/sandbox-environments):比較開發容器與內建 Bash 沙箱、自訂容器和虛擬機器202* [沙箱環境](/docs/zh-TW/sandbox-environments):比較開發容器與內建 Bash 沙箱、自訂容器和虛擬機器

203* [安全模型](/zh-TW/security):Claude Code 的權限系統、沙箱和提示注入保護如何組合在一起203* [安全模型](/docs/zh-TW/security):Claude Code 的權限系統、沙箱和提示注入保護如何組合在一起

204* [Permission modes](/zh-TW/permission-modes):從 Plan Mode 到 auto mode 到 bypass 的完整範圍,以及何時使用每種模式204* [Permission modes](/docs/zh-TW/permission-modes):從 Plan Mode 到 auto mode 到 bypass 的完整範圍,以及何時使用每種模式

llm-gateway.md +64 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# 其他 LLM gateway

6 

7> 透過您的組織已運行的 LLM gateway 路由 Claude Code。涵蓋將 Claude Code 連接到 gateway、為您的組織推出 gateway,以及 Claude Code 發送到 gateway 的內容。

8 

9本節涵蓋使用您的組織已運行的 gateway 產品,而不是 [Claude apps gateway](/docs/zh-TW/claude-apps-gateway)。有關 gateway 是什麼、它如何位於 Claude Code 和您的提供商之間,以及如何在 Claude apps gateway 和其他產品之間進行選擇,請參閱 [gateway 概述](/docs/zh-TW/gateways)。

10 

11<Note>

12 * 如果您是連接到現有 gateway 的開發人員:[將 Claude Code 連接到您的 gateway](/docs/zh-TW/llm-gateway-connect)

13 * 如果您是為組織推出 gateway 的管理員:[部署和分發 gateway](/docs/zh-TW/llm-gateway-rollout)

14 * 如果您正在配置 gateway 產品:[gateway 協議參考](/docs/zh-TW/llm-gateway-protocol)

15</Note>

16 

17任何公開[支持的 API 格式](/docs/zh-TW/llm-gateway-protocol#api-formats)的 gateway 都可以運作。Anthropic 不認可、維護或審計第三方 gateway 產品,也不支持透過任何 gateway 將 Claude Code 路由到非 Claude 模型。按照 gateway 自己的文檔部署它,然後使用下面的[推出步驟](#roll-out-a-gateway)完成 Claude Code 端的配置。

18 

19<h2 id="what-a-gateway-provides">

20 gateway 提供的功能

21</h2>

22 

23gateway 為您的組織提供一個地方來管理:

24 

25* **憑證**:提供商金鑰保留在伺服器端;開發人員改為持有 gateway 憑證

26* **使用情況追蹤**:按開發人員或團隊歸屬使用情況,無論哪個提供商處理請求

27* **成本控制**:在一個地方強制執行預算和速率限制

28* **審計日誌**:記錄每個模型請求以進行合規性檢查

29* **提供商切換**:在 gateway 配置中更改提供商,無需觸及開發人員機器

30 

31除了提供商切換外,所有這些都適用於上游是 Anthropic API 還是[雲提供商](/docs/zh-TW/third-party-integrations)。提供商切換而無需重新配置開發人員機器也取決於 gateway 公開單一 [Anthropic 格式端點](/docs/zh-TW/llm-gateway-protocol#api-formats),無論上游如何;公開提供商自己格式的 gateway 將客戶端配置與該提供商綁定。

32 

33權衡是 gateway 成為您的組織運營的基礎設施。Claude Code 在每個版本中添加功能,不轉發這些功能的 gateway 會破壞相應的功能,因此 gateway 產品需要隨著 Claude Code 的發展而保持更新。[gateway 協議參考](/docs/zh-TW/llm-gateway-protocol)涵蓋要轉發的內容。

34 

35<h2 id="roll-out-a-gateway">

36 推出 gateway

37</h2>

38 

39當您準備好為組織推出 LLM gateway 時,無論您選擇哪個 gateway 產品,順序都是相同的:

40 

411. 部署 gateway 並給予它您的提供商憑證,以便它可以對它轉發的請求進行身份驗證。

422. 為每個開發人員發行 gateway 憑證,以便使用情況歸屬於開發人員,離職時撤銷一個憑證。

433. 透過[受管設定檔](/docs/zh-TW/settings#settings-files)和您的機密工具分發配置,以便每台機器都接收基本 URL 和憑證。當兩者都分發時,開發人員無需配置任何內容。如果您沒有設定分發,開發人員按照[連接頁面](/docs/zh-TW/llm-gateway-connect)自己設置變數。

444. 讓每個開發人員[檢查 Claude Code 中的配置](/docs/zh-TW/llm-gateway-connect#check-for-an-existing-configuration),以便分發問題在他們依賴 gateway 之前浮出水面。

45 

46[為您的組織推出 LLM gateway](/docs/zh-TW/llm-gateway-rollout)逐步介紹每個步驟,並顯示在每個步驟分發的配置檔案。gateway 是組織設置的一部分;有關政策強制執行、使用情況可見性和資料處理決策,請參閱[為您的組織設置 Claude Code](/docs/zh-TW/admin-setup)。

47 

48<h2 id="subscriptions-and-gateways">

49 訂閱和 gateway

50</h2>

51 

52當[gateway 憑證變數](/docs/zh-TW/llm-gateway-connect#set-the-credential-variable)或 `apiKeyHelper` 處於活動狀態時,開發人員的 claude.ai 訂閱不被使用:憑證替換該會話的訂閱登錄,訂閱的使用限制不適用。該流量按令牌計費給擁有 gateway 轉發的憑證的人,例如您的組織的 Anthropic Console 帳戶,或當 gateway 路由到那裡時您的 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 帳戶。

53 

54[`ANTHROPIC_BASE_URL`](/docs/zh-TW/llm-gateway-connect#set-the-base-url-and-credential)是指向 Claude Code 指向 gateway 的變數。僅設置該變數而不設置 gateway 憑證不會替換訂閱。請求仍然透過 gateway 路由,但保存的 claude.ai 登錄保持活動憑證,因此其使用限制和計費適用。將此流量轉發給 Anthropic 的 gateway 必須轉發 `anthropic-beta` 中的 OAuth 功能;請參閱[請求標頭參考](/docs/zh-TW/llm-gateway-protocol#request-headers)。

55 

56<h2 id="related-pages">

57 相關頁面

58</h2>

59 

60* [Gateway 概述](/docs/zh-TW/gateways):gateway 如何運作以及如何在 Claude apps gateway 和其他產品之間進行選擇

61* [Claude apps gateway](/docs/zh-TW/claude-apps-gateway):Anthropic 的自託管 gateway,具有 SSO 登錄和 OTLP 遙測

62* [將 Claude Code 連接到 LLM gateway](/docs/zh-TW/llm-gateway-connect):在您自己的機器上設置基本 URL 和憑證,具有每個表面的配置和故障排除表

63* [為您的組織推出 LLM gateway](/docs/zh-TW/llm-gateway-rollout):部署 gateway、發行開發人員憑證和分發受管設定的管理員檢查清單

64* [Gateway 協議參考](/docs/zh-TW/llm-gateway-protocol):Claude Code 發送到 gateway 的內容,供配置 gateway 的操作人員使用,涵蓋端點、要轉發的標頭和功能傳遞

prompt-caching.md +38 −38

Details

20 20 

21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="四個轉換顯示為不斷增長的水平條。每個轉換的請求包含前一個轉換的所有內容加上附加在末尾的最新交換。在第二和第三個轉換中,未變更的前綴從快取中讀取,只有新的交換被處理。在第四個轉換中,系統提示已變更,因此前綴不再匹配,整個請求被重新處理並寫入。" width="720" height="454" data-path="images/prompt-caching-prefix.svg" />21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="四個轉換顯示為不斷增長的水平條。每個轉換的請求包含前一個轉換的所有內容加上附加在末尾的最新交換。在第二和第三個轉換中,未變更的前綴從快取中讀取,只有新的交換被處理。在第四個轉換中,系統提示已變更,因此前綴不再匹配,整個請求被重新處理並寫入。" width="720" height="454" data-path="images/prompt-caching-prefix.svg" />

22 22 

23<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=7434a04e08187edd26ec6c3dd332f624" className="hidden dark:block" alt="四個轉換顯示為不斷增長的水平條。每個轉換的請求包含前一個轉換的所有內容加上附加在末尾的最新交換。在第二和第三個轉換中,未變更的前綴從快取中讀取,只有新的交換被處理。在第四個轉換中,系統提示已變更,因此前綴不再匹配,整個請求被重新處理並寫入。" width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="四個轉換顯示為不斷增長的水平條。每個轉換的請求包含前一個轉換的所有內容加上附加在末尾的最新交換。在第二和第三個轉換中,未變更的前綴從快取中讀取,只有新的交換被處理。在第四個轉換中,系統提示已變更,因此前綴不再匹配,整個請求被重新處理並寫入。" width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />

24 24 

25為了充分利用前綴匹配,Claude Code 會組織每個請求,使轉換之間很少變更的內容首先出現:25為了充分利用前綴匹配,Claude Code 會組織每個請求,使轉換之間很少變更的內容首先出現:

26 26 


32 32 

33對對話層的變更會保留系統提示和專案上下文的快取。對系統提示的變更會使所有內容失效,因為所有後續內容現在位於不同的前綴後面。第三列提供常見觸發器而不是詳盡列表,下面的部分涵蓋完整集合,包括在會話開始時固定的輸出風格等內容。33對對話層的變更會保留系統提示和專案上下文的快取。對系統提示的變更會使所有內容失效,因為所有後續內容現在位於不同的前綴後面。第三列提供常見觸發器而不是詳盡列表,下面的部分涵蓋完整集合,包括在會話開始時固定的輸出風格等內容。

34 34 

35前綴匹配規則解釋了本頁上的大多數行為。例如,[Plan Mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 和[技能加載](/zh-TW/skills)將其指令附加為對話訊息,因此快取的前綴保持完整。35前綴匹配規則解釋了本頁上的大多數行為。例如,[Plan Mode](/docs/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 和[技能加載](/docs/zh-TW/skills)將其指令附加為對話訊息,因此快取的前綴保持完整。

36 36 

37兩個設定根本不是提示文本的一部分,因此它們不會出現在層表中,但兩者都是快取金鑰的一部分:37兩個設定根本不是提示文本的一部分,因此它們不會出現在層表中,但兩者都是快取金鑰的一部分:

38 38 


49 49 

50快取發生在伺服器端,在提供您的模型的任何基礎設施中。位置取決於您如何進行身份驗證:50快取發生在伺服器端,在提供您的模型的任何基礎設施中。位置取決於您如何進行身份驗證:

51 51 

52* **API 金鑰、Claude 訂閱或 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws)**:快取位於 Anthropic 的基礎設施中,通過 [Claude API](https://platform.claude.com/docs) 訪問52* **API 金鑰、Claude 訂閱或 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws)**:快取位於 Anthropic 的基礎設施中,通過 [Claude API](https://platform.claude.com/docs) 訪問

53* **Amazon Bedrock 或 Google Cloud 的 Agent Platform**:快取位於您的雲端提供商的服務基礎設施中53* **Amazon Bedrock 或 Google Cloud 的 Agent Platform**:快取位於您的雲端提供商的服務基礎設施中

54* **Microsoft Foundry**:請求路由到 Anthropic 的基礎設施54* **Microsoft Foundry**:請求路由到 Anthropic 的基礎設施

55* **自訂 `ANTHROPIC_BASE_URL` 或 [LLM gateway](/zh-TW/llm-gateway)**:快取位於您的請求轉發到的位置,快取是否工作取決於閘道55* **自訂 `ANTHROPIC_BASE_URL` 或 [LLM gateway](/docs/zh-TW/llm-gateway)**:快取位於您的請求轉發到的位置,快取是否工作取決於閘道

56 56 

57有關每個提供商存儲和處理的內容,請參閱[資料使用](/zh-TW/data-usage)。無論快取位於何處,條目在一段時間不活動後過期,[下面的快取生命週期](#cache-lifetime)涵蓋 TTL 以及如何延長它。57有關每個提供商存儲和處理的內容,請參閱[資料使用](/docs/zh-TW/data-usage)。無論快取位於何處,條目在一段時間不活動後過期,[下面的快取生命週期](#cache-lifetime)涵蓋 TTL 以及如何延長它。

58 58 

59<h2 id="actions-that-invalidate-the-cache">59<h2 id="actions-that-invalidate-the-cache">

60 使快取失效的操作60 使快取失效的操作


75 切換模型75 切換模型

76</h3>76</h3>

77 77 

78每個模型都有自己的快取。使用 [`/model`](/zh-TW/model-config#setting-your-model) 切換意味著下一個請求讀取整個對話歷史記錄而沒有快取命中,即使內容相同。78每個模型都有自己的快取。使用 [`/model`](/docs/zh-TW/model-config#setting-your-model) 切換意味著下一個請求讀取整個對話歷史記錄而沒有快取命中,即使內容相同。

79 79 

80[`opusplan` 模型設定](/zh-TW/model-config#opusplan-model-setting)在 Plan Mode 期間解析為 Opus,在執行期間解析為 Sonnet,因此每個 Plan Mode 切換都是模型切換並啟動新的快取。80[`opusplan` 模型設定](/docs/zh-TW/model-config#opusplan-model-setting)在 Plan Mode 期間解析為 Opus,在執行期間解析為 Sonnet,因此每個 Plan Mode 切換都是模型切換並啟動新的快取。

81 81 

82[Fable 5 上的自動模型回退](/zh-TW/model-config#automatic-model-fallback)也是模型切換。當安全分類器標記請求時,Claude Code 會在預設 Opus 模型上重新執行它,會話會在那裡繼續。82[Fable 5 上的自動模型回退](/docs/zh-TW/model-config#automatic-model-fallback)也是模型切換。當安全分類器標記請求時,Claude Code 會在預設 Opus 模型上重新執行它,會話會在那裡繼續。

83 83 

84<h3 id="changing-effort-level">84<h3 id="changing-effort-level">

85 變更努力程度85 變更努力程度

86</h3>86</h3>

87 87 

88快取由[努力程度](/zh-TW/model-config#adjust-effort-level)以及模型作為鍵,因此使用 `/effort` 切換意味著下一個請求讀取整個對話歷史記錄而沒有快取命中。一旦對話開始,Claude Code 會在應用會使快取失效的努力程度變更之前顯示確認對話框。解析為已生效的相同程度的變更(例如明確設定模型的預設值)會跳過對話框並保持快取。88快取由[努力程度](/docs/zh-TW/model-config#adjust-effort-level)以及模型作為鍵,因此使用 `/effort` 切換意味著下一個請求讀取整個對話歷史記錄而沒有快取命中。一旦對話開始,Claude Code 會在應用會使快取失效的努力程度變更之前顯示確認對話框。解析為已生效的相同程度的變更(例如明確設定模型的預設值)會跳過對話框並保持快取。

89 89 

90<h3 id="turning-on-fast-mode">90<h3 id="turning-on-fast-mode">

91 開啟快速模式91 開啟快速模式

92</h3>92</h3>

93 93 

94啟用[快速模式](/zh-TW/fast-mode)會新增一個請求標頭,該標頭是快取鍵的一部分,因此下一個請求讀取整個對話歷史記錄而沒有快取命中。這些未快取的輸入令牌按[快速模式費率](/zh-TW/fast-mode#understand-the-cost-tradeoff)計費,這就是為什麼在會話開始時開啟它的成本比在長會話深處開啟它的成本要低。從非 Opus 模型啟用快速模式也會[切換您的模型](#switching-models),這本身會啟動新的快取。94啟用[快速模式](/docs/zh-TW/fast-mode)會新增一個請求標頭,該標頭是快取鍵的一部分,因此下一個請求讀取整個對話歷史記錄而沒有快取命中。這些未快取的輸入令牌按[快速模式費率](/docs/zh-TW/fast-mode#understand-the-cost-tradeoff)計費,這就是為什麼在會話開始時開啟它的成本比在長會話深處開啟它的成本要低。從非 Opus 模型啟用快速模式也會[切換您的模型](#switching-models),這本身會啟動新的快取。

95 95 

96成本每個對話應用一次。在第一個快速模式轉換之後,Claude Code 會繼續發送標頭,並且只改變請求的速度設定,這不是快取鍵的一部分。關閉快速模式、[在速率限制後自動回退到標準速度](/zh-TW/fast-mode#handle-rate-limits),以及稍後重新開啟它都會保持快取。`/clear` 和 `/compact` 會重設此設定,因為它們無論如何都會在這些點重新建立快取。96成本每個對話應用一次。在第一個快速模式轉換之後,Claude Code 會繼續發送標頭,並且只改變請求的速度設定,這不是快取鍵的一部分。關閉快速模式、[在速率限制後自動回退到標準速度](/docs/zh-TW/fast-mode#handle-rate-limits),以及稍後重新開啟它都會保持快取。`/clear` 和 `/compact` 會重設此設定,因為它們無論如何都會在這些點重新建立快取。

97 97 

98<h3 id="connecting-or-disconnecting-an-mcp-server">98<h3 id="connecting-or-disconnecting-an-mcp-server">

99 連接或斷開 MCP 伺服器99 連接或斷開 MCP 伺服器

100</h3>100</h3>

101 101 

102工具定義位於系統提示層中,因此當請求之間的工具定義集合變更時,快取會失效。切換[顧問工具](/zh-TW/advisor)是例外:其定義位於快取中斷點之後,因此啟用或停用 `/advisor` 會保持快取的前綴完整。[MCP 伺服器](/zh-TW/mcp)變更是否執行此操作取決於其工具是否由[工具搜尋](/zh-TW/mcp#scale-with-mcp-tool-search)延遲或載入到前綴中:102工具定義位於系統提示層中,因此當請求之間的工具定義集合變更時,快取會失效。切換[顧問工具](/docs/zh-TW/advisor)是例外:其定義位於快取中斷點之後,因此啟用或停用 `/advisor` 會保持快取的前綴完整。[MCP 伺服器](/docs/zh-TW/mcp)變更是否執行此操作取決於其工具是否由[工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)延遲或載入到前綴中:

103 103 

104* **延遲工具**,在支援的模型上為預設值:伺服器連接、斷開連接或變更其工具列表只會附加新內容,不會擾亂已快取的任何內容。104* **延遲工具**,在支援的模型上為預設值:伺服器連接、斷開連接或變更其工具列表只會附加新內容,不會擾亂已快取的任何內容。

105* **載入到前綴中的工具**:對它們的任何變更都會使快取失效。這發生在[工具搜尋不可用或已停用](/zh-TW/mcp#configure-tool-search)時,例如在 Google Cloud 的 Agent Platform 上或使用自訂 `ANTHROPIC_BASE_URL` 閘道時。它也發生在標記為 [`alwaysLoad`](/zh-TW/mcp#exempt-a-server-from-deferral) 的伺服器或工具上,以及由[基於閾值的載入](/zh-TW/mcp#configure-tool-search)保持在前面的定義上。105* **載入到前綴中的工具**:對它們的任何變更都會使快取失效。這發生在[工具搜尋不可用或已停用](/docs/zh-TW/mcp#configure-tool-search)時,例如在 Google Cloud 的 Agent Platform 上或使用自訂 `ANTHROPIC_BASE_URL` 閘道時。它也發生在標記為 [`alwaysLoad`](/docs/zh-TW/mcp#exempt-a-server-from-deferral) 的伺服器或工具上,以及由[基於閾值的載入](/docs/zh-TW/mcp#configure-tool-search)保持在前面的定義上。

106 106 

107當工具載入到前綴中時,失效的最常見原因是伺服器在會話中期連接或斷開連接,這可能在沒有您採取任何操作的情況下發生:stdio 伺服器的進程退出、HTTP 會話過期,或伺服器[在暫時性故障後自動重新連接](/zh-TW/mcp#automatic-reconnection)。連接的伺服器也可以推送[動態工具更新](/zh-TW/mcp#dynamic-tool-updates)來變更其工具列表。107當工具載入到前綴中時,失效的最常見原因是伺服器在會話中期連接或斷開連接,這可能在沒有您採取任何操作的情況下發生:stdio 伺服器的進程退出、HTTP 會話過期,或伺服器[在暫時性故障後自動重新連接](/docs/zh-TW/mcp#automatic-reconnection)。連接的伺服器也可以推送[動態工具更新](/docs/zh-TW/mcp#dynamic-tool-updates)來變更其工具列表。

108 108 

109編輯您的 MCP 配置本身不會變更快取。新配置只有在重新啟動後才會生效,這是伺服器連接或斷開連接的時候。109編輯您的 MCP 配置本身不會變更快取。新配置只有在重新啟動後才會生效,這是伺服器連接或斷開連接的時候。

110 110 


112 啟用或停用外掛程式112 啟用或停用外掛程式

113</h3>113</h3>

114 114 

115[外掛程式](/zh-TW/plugins)捆綁多個元件類型,變更的成本取決於外掛程式提供的元件。Skills、commands、agents、hooks、LSP 伺服器、monitors 和 themes 永遠不會使快取失效:它們添加到請求的任何內容都會附加在現有對話之後,因此下一個請求為新內容付費,但仍然從快取中讀取它之前的所有內容。115[外掛程式](/docs/zh-TW/plugins)捆綁多個元件類型,變更的成本取決於外掛程式提供的元件。Skills、commands、agents、hooks、LSP 伺服器、monitors 和 themes 永遠不會使快取失效:它們添加到請求的任何內容都會附加在現有對話之後,因此下一個請求為新內容付費,但仍然從快取中讀取它之前的所有內容。

116 116 

117例外是提供 [MCP 伺服器](/zh-TW/plugins-reference#mcp-servers)的外掛程式。啟用或停用一個遵循與[連接或斷開 MCP 伺服器](#connecting-or-disconnecting-an-mcp-server)相同的規則:當伺服器的工具被延遲時快取會保留,當它們載入到前綴中時下一個請求會重新讀取整個對話。117例外是提供 [MCP 伺服器](/docs/zh-TW/plugins-reference#mcp-servers)的外掛程式。啟用或停用一個遵循與[連接或斷開 MCP 伺服器](#connecting-or-disconnecting-an-mcp-server)相同的規則:當伺服器的工具被延遲時快取會保留,當它們載入到前綴中時下一個請求會重新讀取整個對話。

118 118 

119外掛程式變更在您運行 [`/reload-plugins`](/zh-TW/discover-plugins#apply-plugin-changes-without-restarting) 或啟動新會話時應用。成本(無論是附加公告還是完整重新讀取)會在重新載入後的第一個轉換時顯示,而不是在您運行 `/plugin install`、`/plugin enable` 或 `/plugin disable` 時。{/* min-version: 2.1.163 */}自 v2.1.163 起,當重新載入會觸發完整重新讀取時,`/reload-plugins` 會顯示警告並不應用重新載入。傳遞 `--force` 以強制應用。119外掛程式變更在您運行 [`/reload-plugins`](/docs/zh-TW/discover-plugins#apply-plugin-changes-without-restarting) 或啟動新會話時應用。成本(無論是附加公告還是完整重新讀取)會在重新載入後的第一個轉換時顯示,而不是在您運行 `/plugin install`、`/plugin enable` 或 `/plugin disable` 時。{/* min-version: 2.1.163 */}自 v2.1.163 起,當重新載入會觸發完整重新讀取時,`/reload-plugins` 會顯示警告並不應用重新載入。傳遞 `--force` 以強制應用。

120 120 

121停用您在會話中較早啟用的外掛程式會恢復先前的請求形狀。如果該前綴仍在其[快取生命週期](#cache-lifetime)內,下一個請求會讀取較舊的快取項目,而不是重新建立。121停用您在會話中較早啟用的外掛程式會恢復先前的請求形狀。如果該前綴仍在其[快取生命週期](#cache-lifetime)內,下一個請求會讀取較舊的快取項目,而不是重新建立。

122 122 


124 拒絕整個工具124 拒絕整個工具

125</h3>125</h3>

126 126 

127添加裸工具名稱(如 `Bash` 或 `WebFetch`)作為[拒絕規則](/zh-TW/permissions#manage-permissions)會將該工具從 Claude 的上下文中完全移除。內建工具定義載入到系統提示層中,因此在會話中期添加或移除其中一個規則會使快取失效。無論您通過 `/permissions` 添加它還是通過[直接編輯設定檔](/zh-TW/settings#when-edits-take-effect),變更都會在下一個轉換時生效。127添加裸工具名稱(如 `Bash` 或 `WebFetch`)作為[拒絕規則](/docs/zh-TW/permissions#manage-permissions)會將該工具從 Claude 的上下文中完全移除。內建工具定義載入到系統提示層中,因此在會話中期添加或移除其中一個規則會使快取失效。無論您通過 `/permissions` 添加它還是通過[直接編輯設定檔](/docs/zh-TW/settings#when-edits-take-effect),變更都會在下一個轉換時生效。

128 128 

129只有裸工具名稱、等效的 `Bash(*)` 形式或[工具名稱 glob](/zh-TW/permissions#tool-name-wildcards)(如 `"*"`)才有此效果。匹配只有 MCP 工具的 glob(例如 `"mcp__*"`)會以相同方式移除這些工具,但當匹配的工具被[延遲](#connecting-or-disconnecting-an-mcp-server)時(預設值)會保持快取完整,因為延遲定義從未在快取的前綴中。作用域拒絕規則(如 `Bash(rm *)`)以及所有允許和詢問規則都不會改變 Claude 看到的工具。Claude Code 在 Claude 嘗試呼叫時檢查它們,保持前綴完整。129只有裸工具名稱、等效的 `Bash(*)` 形式或[工具名稱 glob](/docs/zh-TW/permissions#tool-name-wildcards)(如 `"*"`)才有此效果。匹配只有 MCP 工具的 glob(例如 `"mcp__*"`)會以相同方式移除這些工具,但當匹配的工具被[延遲](#connecting-or-disconnecting-an-mcp-server)時(預設值)會保持快取完整,因為延遲定義從未在快取的前綴中。作用域拒絕規則(如 `Bash(rm *)`)以及所有允許和詢問規則都不會改變 Claude 看到的工具。Claude Code 在 Claude 嘗試呼叫時檢查它們,保持前綴完整。

130 130 

131<h3 id="compacting-the-conversation">131<h3 id="compacting-the-conversation">

132 壓縮對話132 壓縮對話

133</h3>133</h3>

134 134 

135[壓縮](/zh-TW/context-window#what-survives-compaction)用摘要替換您的訊息歷史記錄。根據設計,這會使對話層失效,因為下一個請求有一個新的、更短的歷史記錄,不與舊的共享前綴。Claude Code 重複使用系統提示層並從磁碟重新載入專案上下文,只有在 CLAUDE.md 和記憶自會話開始以來未變更時才快取命中。135[壓縮](/docs/zh-TW/context-window#what-survives-compaction)用摘要替換您的訊息歷史記錄。根據設計,這會使對話層失效,因為下一個請求有一個新的、更短的歷史記錄,不與舊的共享前綴。Claude Code 重複使用系統提示層並從磁碟重新載入專案上下文,只有在 CLAUDE.md 和記憶自會話開始以來未變更時才快取命中。

136 136 

137為了生成摘要,Claude Code 發送一個一次性請求,其系統提示、工具和歷史記錄與您的對話相同,加上作為最終使用者訊息附加的摘要指令。因為它共享您的前綴,該請求讀取現有快取而不是重新處理完整歷史記錄。壓縮的大部分時間用於生成摘要,而不是快取未命中。隨後的轉換只為更短的摘要重新建立對話快取,因此壓縮後的轉換不是緩慢的部分。137為了生成摘要,Claude Code 發送一個一次性請求,其系統提示、工具和歷史記錄與您的對話相同,加上作為最終使用者訊息附加的摘要指令。因為它共享您的前綴,該請求讀取現有快取而不是重新處理完整歷史記錄。壓縮的大部分時間用於生成摘要,而不是快取未命中。隨後的轉換只為更短的摘要重新建立對話快取,因此壓縮後的轉換不是緩慢的部分。

138 138 


144 升級 Claude Code144 升級 Claude Code

145</h3>145</h3>

146 146 

147新的 Claude Code 版本通常會更新系統提示或工具定義,因此升級後的第一個請求會從頂部重新建立快取。[自動更新](/zh-TW/setup#auto-updates)在後台下載新版本,但在下次啟動時應用它們,從不在會話中期,因此您會看到這是重新啟動後的未快取第一個轉換,而不是會話期間的驚喜。設定 `DISABLE_AUTOUPDATER=1` 以控制何時應用升級。147新的 Claude Code 版本通常會更新系統提示或工具定義,因此升級後的第一個請求會從頂部重新建立快取。[自動更新](/docs/zh-TW/setup#auto-updates)在後台下載新版本,但在下次啟動時應用它們,從不在會話中期,因此您會看到這是重新啟動後的未快取第一個轉換,而不是會話期間的驚喜。設定 `DISABLE_AUTOUPDATER=1` 以控制何時應用升級。

148 148 

149<Note>149<Note>

150 在升級後[恢復會話](/zh-TW/sessions#resume-a-session)會重新處理整個對話歷史記錄而沒有快取命中,因為歷史記錄現在位於不同的系統提示後面。成本隨著恢復的對話有多長而擴展,因此回到長會話的第一個轉換可能是您發送的最昂貴的請求。150 在升級後[恢復會話](/docs/zh-TW/sessions#resume-a-session)會重新處理整個對話歷史記錄而沒有快取命中,因為歷史記錄現在位於不同的系統提示後面。成本隨著恢復的對話有多長而擴展,因此回到長會話的第一個轉換可能是您發送的最昂貴的請求。

151</Note>151</Note>

152 152 

153<h2 id="actions-that-keep-the-cache">153<h2 id="actions-that-keep-the-cache">


177 177 

178您的專案根目錄和使用者級別 CLAUDE.md 檔案在會話開始時讀取一次並保存在記憶中。在會話中期編輯它們不會使快取失效,但編輯也不會應用。Claude 繼續使用在會話開始時加載的版本。新內容在下一個 `/clear`、`/compact` 或重新啟動時加載。178您的專案根目錄和使用者級別 CLAUDE.md 檔案在會話開始時讀取一次並保存在記憶中。在會話中期編輯它們不會使快取失效,但編輯也不會應用。Claude 繼續使用在會話開始時加載的版本。新內容在下一個 `/clear`、`/compact` 或重新啟動時加載。

179 179 

180[子目錄中的嵌套 CLAUDE.md 檔案](/zh-TW/memory)和[帶有 `paths:` frontmatter 的規則](/zh-TW/memory#path-specific-rules)稍後加載,當 Claude 首次讀取匹配檔案時。在它加載之前編輯一個確實會生效。加載後,內容是對話歷史記錄的一部分,因此會話中期的編輯不會追溯變更它。180[子目錄中的嵌套 CLAUDE.md 檔案](/docs/zh-TW/memory)和[帶有 `paths:` frontmatter 的規則](/docs/zh-TW/memory#path-specific-rules)稍後加載,當 Claude 首次讀取匹配檔案時。在它加載之前編輯一個確實會生效。加載後,內容是對話歷史記錄的一部分,因此會話中期的編輯不會追溯變更它。

181 181 

182<h3 id="changing-output-style">182<h3 id="changing-output-style">

183 變更輸出風格183 變更輸出風格

184</h3>184</h3>

185 185 

186[輸出風格](/zh-TW/output-styles)是系統提示的一部分,Claude Code 在會話開始時讀取一次。通過 `/config` 或 `outputStyle` 設定在會話中期變更它不會使快取失效,但變更也不會應用。Claude 繼續使用在會話開始時加載的風格。新風格在下一個 `/clear` 或重新啟動時加載。186[輸出風格](/docs/zh-TW/output-styles)是系統提示的一部分,Claude Code 在會話開始時讀取一次。通過 `/config` 或 `outputStyle` 設定在會話中期變更它不會使快取失效,但變更也不會應用。Claude 繼續使用在會話開始時加載的風格。新風格在下一個 `/clear` 或重新啟動時加載。

187 187 

188<h3 id="changing-permission-mode">188<h3 id="changing-permission-mode">

189 變更權限模式189 變更權限模式

190</h3>190</h3>

191 191 

192在[權限模式](/zh-TW/permission-modes)之間切換,例如從預設切換到接受編輯,不會變更系統提示或工具定義,因此模式變更是快取安全的。例外是使用 [`opusplan`](/zh-TW/model-config#opusplan-model-setting) 模型設定的 Plan Mode,它在進入或離開 Plan Mode 時在 Opus 和 Sonnet 之間切換模型。這使模式切換成為[模型切換](#switching-models)。192在[權限模式](/docs/zh-TW/permission-modes)之間切換,例如從預設切換到接受編輯,不會變更系統提示或工具定義,因此模式變更是快取安全的。例外是使用 [`opusplan`](/docs/zh-TW/model-config#opusplan-model-setting) 模型設定的 Plan Mode,它在進入或離開 Plan Mode 時在 Opus 和 Sonnet 之間切換模型。這使模式切換成為[模型切換](#switching-models)。

193 193 

194<h3 id="invoking-skills-and-commands">194<h3 id="invoking-skills-and-commands">

195 調用技能和命令195 調用技能和命令

196</h3>196</h3>

197 197 

198[技能](/zh-TW/skills)和[命令](/zh-TW/commands)在調用點將其指令注入為使用者訊息。對話中較早的任何內容都不會變更。198[技能](/docs/zh-TW/skills)和[命令](/docs/zh-TW/commands)在調用點將其指令注入為使用者訊息。對話中較早的任何內容都不會變更。

199 199 

200<h3 id="running-/recap">200<h3 id="running-/recap">

201 運行 `/recap`201 運行 `/recap`

202</h3>202</h3>

203 203 

204[`/recap`](/zh-TW/interactive-mode#session-recap) 生成一個摘要以在您的終端中顯示。與 `/compact` 不同,它將摘要附加為命令輸出而不是替換您的訊息歷史記錄,因此快取的前綴保持完整。204[`/recap`](/docs/zh-TW/interactive-mode#session-recap) 生成一個摘要以在您的終端中顯示。與 `/compact` 不同,它將摘要附加為命令輸出而不是替換您的訊息歷史記錄,因此快取的前綴保持完整。

205 205 

206<h3 id="rewinding-the-conversation">206<h3 id="rewinding-the-conversation">

207 重新開始對話207 重新開始對話

208</h3>208</h3>

209 209 

210[`/rewind`](/zh-TW/checkpointing) 將您的對話截斷回到較早的轉換。剩餘的歷史記錄是快取在該點建立時的相同內容,系統提示和專案上下文層未變更,因此下一個請求命中較早的快取條目。自那時以來的每個轉換都通過該前綴讀取,即使原始轉換比 TTL 更久遠,也保持條目溫暖。210[`/rewind`](/docs/zh-TW/checkpointing) 將您的對話截斷回到較早的轉換。剩餘的歷史記錄是快取在該點建立時的相同內容,系統提示和專案上下文層未變更,因此下一個請求命中較早的快取條目。自那時以來的每個轉換都通過該前綴讀取,即使原始轉換比 TTL 更久遠,也保持條目溫暖。

211 211 

212恢復檔案檢查點與對話一起對快取沒有單獨的影響。檔案內容只有在 Claude 讀取它們時才進入上下文,與[編輯您的儲存庫中的檔案](#editing-files-in-your-repository)相同。212恢復檔案檢查點與對話一起對快取沒有單獨的影響。檔案內容只有在 Claude 讀取它們時才進入上下文,與[編輯您的儲存庫中的檔案](#editing-files-in-your-repository)相同。

213 213 


239 覆蓋 TTL239 覆蓋 TTL

240</h3>240</h3>

241 241 

242設定 `FORCE_PROMPT_CACHING_5M=1` 以強制五分鐘 TTL,無論身份驗證如何。當您調試快取行為、比較兩個 TTL 或覆蓋在[受管設定](/zh-TW/settings#settings-files)中設定的 `ENABLE_PROMPT_CACHING_1H` 時,這很有用。242設定 `FORCE_PROMPT_CACHING_5M=1` 以強制五分鐘 TTL,無論身份驗證如何。當您調試快取行為、比較兩個 TTL 或覆蓋在[受管設定](/docs/zh-TW/settings#settings-files)中設定的 `ENABLE_PROMPT_CACHING_1H` 時,這很有用。

243 243 

244<h2 id="cache-scope">244<h2 id="cache-scope">

245 快取範圍245 快取範圍


249 249 

250您在同一目錄中並行運行的會話建立匹配的前綴並讀取彼此的快取。順序會話只有在啟動時的 git 狀態快照匹配時才共享前綴,因為系統提示也捕獲分支和最近的提交。250您在同一目錄中並行運行的會話建立匹配的前綴並讀取彼此的快取。順序會話只有在啟動時的 git 狀態快照匹配時才共享前綴,因為系統提示也捕獲分支和最近的提交。

251 251 

252基礎 API 快取更廣泛。快取在組織之間隔離,在某些提供商上,[在組織內的工作區之間隔離](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching#cache-storage-and-sharing)。在這些邊界內,任何兩個具有相同模型和前綴的請求讀取相同的快取。對於運行自動化流程艦隊的 Agent SDK 呼叫者,請參閱[改進跨使用者和機器的 prompt caching](/zh-TW/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines)以抑制系統提示的按機器部分並跨機器共享快取。252基礎 API 快取更廣泛。快取在組織之間隔離,在某些提供商上,[在組織內的工作區之間隔離](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching#cache-storage-and-sharing)。在這些邊界內,任何兩個具有相同模型和前綴的請求讀取相同的快取。對於運行自動化流程艦隊的 Agent SDK 呼叫者,請參閱[改進跨使用者和機器的 prompt caching](/docs/zh-TW/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines)以抑制系統提示的按機器部分並跨機器共享快取。

253 253 

254<h2 id="check-cache-performance">254<h2 id="check-cache-performance">

255 檢查快取效能255 檢查快取效能

256</h2>256</h2>

257 257 

258快取效能顯示為 API 在每個回應上報告的兩個令牌計數。最直接的方式是觀看它們實時是[狀態行指令碼](/zh-TW/statusline),它讀取 `current_usage` 物件:258快取效能顯示為 API 在每個回應上報告的兩個令牌計數。最直接的方式是觀看它們實時是[狀態行指令碼](/docs/zh-TW/statusline),它讀取 `current_usage` 物件:

259 259 

260| 欄位 | 含義 |260| 欄位 | 含義 |

261| ----------------------------- | ------------------------------- |261| ----------------------------- | ------------------------------- |


264 264 

265高讀取與建立比率意味著快取工作良好。如果建立在轉換之間保持高位,您的前綴中有些東西在變更。[使快取失效的操作](#actions-that-invalidate-the-cache)部分列出了常見原因。265高讀取與建立比率意味著快取工作良好。如果建立在轉換之間保持高位,您的前綴中有些東西在變更。[使快取失效的操作](#actions-that-invalidate-the-cache)部分列出了常見原因。

266 266 

267為了在整個組織中獲得可見性,OpenTelemetry 匯出器報告每個使用者和會話的快取讀取和建立令牌。請參閱[監控使用](/zh-TW/monitoring-usage)以了解指標和事件屬性參考。267為了在整個組織中獲得可見性,OpenTelemetry 匯出器報告每個使用者和會話的快取讀取和建立令牌。請參閱[監控使用](/docs/zh-TW/monitoring-usage)以了解指標和事件屬性參考。

268 268 

269<h2 id="subagents-and-the-cache">269<h2 id="subagents-and-the-cache">

270 子代理和快取270 子代理和快取

271</h2>271</h2>

272 272 

273[子代理](/zh-TW/sub-agents)開始自己的對話,具有自己的系統提示和工具集,與父代分開。它建立自己的快取,在第一次呼叫時沒有快取命中,並在自己的轉換中預熱。子代理使用五分鐘 TTL,即使在訂閱上,因為自動一小時 TTL 適用於主對話。273[子代理](/docs/zh-TW/sub-agents)開始自己的對話,具有自己的系統提示和工具集,與父代分開。它建立自己的快取,在第一次呼叫時沒有快取命中,並在自己的轉換中預熱。子代理使用五分鐘 TTL,即使在訂閱上,因為自動一小時 TTL 適用於主對話。

274 274 

275父代的快取不受影響。從父代的角度來看,子代理的呼叫和結果附加到對話,保留父代的前綴完整。275父代的快取不受影響。從父代的角度來看,子代理的呼叫和結果附加到對話,保留父代的前綴完整。

276 276 

277[分支](/zh-TW/sub-agents#fork-the-current-conversation)相比之下,完全繼承父代的系統提示、工具和對話歷史記錄,因此其第一個請求讀取父代的快取。[壓縮對話](#compacting-the-conversation)中描述的壓縮摘要呼叫使用相同的前綴共享方法。277[分支](/docs/zh-TW/sub-agents#fork-the-current-conversation)相比之下,完全繼承父代的系統提示、工具和對話歷史記錄,因此其第一個請求讀取父代的快取。[壓縮對話](#compacting-the-conversation)中描述的壓縮摘要呼叫使用相同的前綴共享方法。

278 278 

279<h2 id="disable-prompt-caching">279<h2 id="disable-prompt-caching">

280 禁用 prompt caching280 禁用 prompt caching


290| `DISABLE_PROMPT_CACHING_OPUS` | 僅為 Opus 禁用 |290| `DISABLE_PROMPT_CACHING_OPUS` | 僅為 Opus 禁用 |

291| `DISABLE_PROMPT_CACHING_FABLE` | 僅為 Fable 禁用 |291| `DISABLE_PROMPT_CACHING_FABLE` | 僅為 Fable 禁用 |

292 292 

293要在整個組織中設定快取策略,請將這些或[TTL 變數](#cache-lifetime)中的任何一個放在[受管設定](/zh-TW/settings#settings-files)的 `env` 區塊中。為了正常使用,請保持快取啟用。293要在整個組織中設定快取策略,請將這些或[TTL 變數](#cache-lifetime)中的任何一個放在[受管設定](/docs/zh-TW/settings#settings-files)的 `env` 區塊中。為了正常使用,請保持快取啟用。

294 294 

295<h2 id="related-resources">295<h2 id="related-resources">

296 相關資源296 相關資源

297</h2>297</h2>

298 298 

299* [從建立 Claude Code 中學到的課程:Prompt caching 就是一切](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything):Plan Mode、延遲工具加載和壓縮的設計基本原理299* [從建立 Claude Code 中學到的課程:Prompt caching 就是一切](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything):Plan Mode、延遲工具加載和壓縮的設計基本原理

300* [探索上下文視窗](/zh-TW/context-window):什麼加載到上下文以及何時加載300* [探索上下文視窗](/docs/zh-TW/context-window):什麼加載到上下文以及何時加載

301* [減少令牌使用](/zh-TW/costs#reduce-token-usage):超越快取的策略,用於管理上下文大小301* [減少令牌使用](/docs/zh-TW/costs#reduce-token-usage):超越快取的策略,用於管理上下文大小

302* [追蹤和減少成本](/zh-TW/agent-sdk/cost-tracking):Agent SDK 呼叫者的快取令牌追蹤和 TTL 配置302* [追蹤和減少成本](/docs/zh-TW/agent-sdk/cost-tracking):Agent SDK 呼叫者的快取令牌追蹤和 TTL 配置

303* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching):基礎 API 機制、中斷點和定價303* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching):基礎 API 機制、中斷點和定價