28 28
29對對話層的變更會保留系統提示詞和專案上下文的快取。對系統提示詞的變更會使所有內容失效,因為所有後續內容現在位於不同的前綴後面。第三欄提供常見的觸發器,而不是詳盡的清單,下面的章節涵蓋完整的集合。29對對話層的變更會保留系統提示詞和專案上下文的快取。對系統提示詞的變更會使所有內容失效,因為所有後續內容現在位於不同的前綴後面。第三欄提供常見的觸發器,而不是詳盡的清單,下面的章節涵蓋完整的集合。
30 30
31前綴比對規則解釋了此頁面上的大多數行為。例如,[plan mode](/docs/zh-TW/permission-modes.md#analyze-before-you-edit-with-plan-mode) 和 [skill loading](/docs/zh-TW/skills.md) 會將其指示附加為對話訊息,因此快取的前綴保持完整。31前綴比對規則解釋了此頁面上的大多數行為。例如,[plan mode](https://code.claude.com/docs/zh-TW/permission-modes.md#analyze-before-you-edit-with-plan-mode) 和 [skill loading](https://code.claude.com/docs/zh-TW/skills.md) 會將其指示附加為對話訊息,因此快取的前綴保持完整。
32 32
33有兩個設定不會出現在層級表中,但仍會影響保留的快取內容:33有兩個設定不會出現在層級表中,但仍會影響保留的快取內容:
34 34
43 43
44快取發生在伺服器端,在提供您的模型的任何基礎設施中。位置取決於您的身份驗證方式:44快取發生在伺服器端,在提供您的模型的任何基礎設施中。位置取決於您的身份驗證方式:
45 45
46* **API 金鑰、Claude 訂閱或 [Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws.md)**:快取位於 Anthropic 的基礎設施中,透過 [Claude API](https://platform.claude.com/docs) 存取46* **API 金鑰、Claude 訂閱或 [Claude Platform on AWS](https://code.claude.com/docs/zh-TW/claude-platform-on-aws.md)**:快取位於 Anthropic 的基礎設施中,透過 [Claude API](https://platform.claude.com/docs) 存取
47* **Amazon Bedrock 或 Google Cloud 的 Agent Platform**:快取位於您的雲端提供者的提供基礎設施中47* **Amazon Bedrock 或 Google Cloud 的 Agent Platform**:快取位於您的雲端提供者的提供基礎設施中
48* **Microsoft Foundry**:取決於部署的 [hosting option](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)。在 Azure 部署上託管的部署在 Azure 基礎設施上提供;在 Anthropic 部署上託管的部署在 Anthropic 的基礎設施上提供48* **Microsoft Foundry**:取決於部署的 [hosting option](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)。在 Azure 部署上託管的部署在 Azure 基礎設施上提供;在 Anthropic 部署上託管的部署在 Anthropic 的基礎設施上提供
49* **自訂 `ANTHROPIC_BASE_URL` 或 [LLM gateway](/docs/zh-TW/llm-gateway)**:快取位於您的請求被轉發的位置,快取是否有效取決於閘道49* **自訂 `ANTHROPIC_BASE_URL` 或 [LLM gateway](https://code.claude.com/docs/zh-TW/llm-gateway)**:快取位於您的請求被轉發的位置,快取是否有效取決於閘道
50 50
51Claude Code 也會在對話中途附加系統上下文,例如檔案變更通知,並在每個提供者和連線上標記該區塊以進行快取,除非您設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities),在這種情況下該區塊會以未快取的方式傳送。51Claude Code 也會在對話中途附加系統上下文,例如檔案變更通知,並在每個提供者和連線上標記該區塊以進行快取,除非您設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](https://code.claude.com/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities),在這種情況下該區塊會以未快取的方式傳送。
52 52
53在提供者自己的端點、Amazon Bedrock 及其 [Mantle endpoint](/docs/zh-TW/amazon-bedrock.md#use-the-mantle-endpoint)、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,快取該區塊的方式與 Claude API 相同。53在提供者自己的端點、Amazon Bedrock 及其 [Mantle endpoint](https://code.claude.com/docs/zh-TW/amazon-bedrock.md#use-the-mantle-endpoint)、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,快取該區塊的方式與 Claude API 相同。
54 54
55當您的請求通過 [LLM gateway](/docs/zh-TW/llm-gateway)、自訂 `ANTHROPIC_BASE_URL` 或雲端提供者基礎 URL 覆寫(例如 [`ANTHROPIC_BEDROCK_BASE_URL`](/docs/zh-TW/env-vars))時,保留的快取取決於閘道如何處理 Claude Code 傳送的 [`cache_control` 標記](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints):55當您的請求通過 [LLM gateway](https://code.claude.com/docs/zh-TW/llm-gateway)、自訂 `ANTHROPIC_BASE_URL` 或雲端提供者基礎 URL 覆寫(例如 [`ANTHROPIC_BEDROCK_BASE_URL`](https://code.claude.com/docs/zh-TW/env-vars))時,保留的快取取決於閘道如何處理 Claude Code 傳送的 [`cache_control` 標記](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#explicit-cache-breakpoints):
56 56
57* **原封不動地轉發它們**:該區塊和您的對話快取方式與在提供者自己的端點上相同。57* **原封不動地轉發它們**:該區塊和您的對話快取方式與在提供者自己的端點上相同。
58* **以命名 `cache_control` 的 `400` 錯誤拒絕標記的請求**:Claude Code 會重新傳送請求,將標記從區塊移到您的最後一條對話訊息上,並保持在那裡,直到 Claude Code 結束為止。該區塊計費為未快取的輸入;您的對話保持快取。58* **以命名 `cache_control` 的 `400` 錯誤拒絕標記的請求**:Claude Code 會重新傳送請求,將標記從區塊移到您的最後一條對話訊息上,並保持在那裡,直到 Claude Code 結束為止。該區塊計費為未快取的輸入;您的對話保持快取。
59* **在返回成功時移除標記**:您的整個對話歷史記錄在每個回合上計費為未快取的輸入。將區塊形式的系統內容轉換為純字串的閘道會以相同的方式丟棄標記。59* **在返回成功時移除標記**:您的整個對話歷史記錄在每個回合上計費為未快取的輸入。將區塊形式的系統內容轉換為純字串的閘道會以相同的方式丟棄標記。
60 60
61有關每個提供者儲存和處理的內容,請參閱 [data usage](/docs/zh-TW/data-usage.md)。無論快取位於何處,條目在一段時間不活動後過期,下面的 [Cache lifetime](#cache-lifetime) 涵蓋 TTL 以及如何延長它。61有關每個提供者儲存和處理的內容,請參閱 [data usage](https://code.claude.com/docs/zh-TW/data-usage.md)。無論快取位於何處,條目在一段時間不活動後過期,下面的 [Cache lifetime](#cache-lifetime) 涵蓋 TTL 以及如何延長它。
62 62
63## 使快取失效的動作63## 使快取失效的動作
64 64
76 76
77### 切換模型77### 切換模型
78 78
79每個模型都有自己的快取。使用 [`/model`](/docs/zh-TW/model-config#setting-your-model) 切換意味著下一個請求會讀取整個對話歷史記錄而沒有快取命中,即使內容相同。79每個模型都有自己的快取。使用 [`/model`](https://code.claude.com/docs/zh-TW/model-config#setting-your-model) 切換意味著下一個請求會讀取整個對話歷史記錄而沒有快取命中,即使內容相同。
80 80
81當您在終端機執行 `/model` 時,Claude Code 會要求您確認切換,但僅限於快取仍然溫暖且新模型不是產生最後一個回應的模型時。快取在 Claude Code 在此對話中最後一次傳送請求或 Claude 最後一次回應後的一個[快取 TTL](#cache-lifetime) 內保持溫暖。一旦該時間過去,快取就會過期,因此 Claude Code 會在不詢問的情況下進行切換。81當您在終端機執行 `/model` 時,Claude Code 會要求您確認切換,但僅限於快取仍然溫暖且新模型不是產生最後一個回應的模型時。快取在 Claude Code 在此對話中最後一次傳送請求或 Claude 最後一次回應後的一個[快取 TTL](#cache-lifetime) 內保持溫暖。一旦該時間過去,快取就會過期,因此 Claude Code 會在不詢問的情況下進行切換。
82 82
83在 v2.1.238 之前,Claude Code 沒有檢查快取 TTL,即使在快取過期後也會詢問。83在 v2.1.238 之前,Claude Code 沒有檢查快取 TTL,即使在快取過期後也會詢問。
84 84
85您也可以使用 [PreModelSwitch hook](/docs/zh-TW/hooks.md#premodelswitch-decision-control) 要求此確認或跳過它。85您也可以使用 [PreModelSwitch hook](https://code.claude.com/docs/zh-TW/hooks.md#premodelswitch-decision-control) 要求此確認或跳過它。
86 86
87[`opusplan` 模型設定](/docs/zh-TW/model-config#opusplan-model-setting)在 plan mode 期間解析為 Opus,在執行期間解析為 Sonnet,因此每次 plan mode 切換都是模型切換並啟動新的快取。87[`opusplan` 模型設定](https://code.claude.com/docs/zh-TW/model-config#opusplan-model-setting)在 plan mode 期間解析為 Opus,在執行期間解析為 Sonnet,因此每次 plan mode 切換都是模型切換並啟動新的快取。
88 88
89[自動模型備援](/docs/zh-TW/model-config.md#automatic-model-fallback)在 Fable 模型、Opus 5.5、Sonnet 5.5 和 Opus 5 上也是模型切換。當安全分類器在具有備援模型的類別中標記請求時,Claude Code 會在該模型上重新執行請求,並且工作階段會在那裡繼續。89[自動模型備援](https://code.claude.com/docs/zh-TW/model-config.md#automatic-model-fallback)在 Fable 模型、Opus 5.5、Sonnet 5.5 和 Opus 5 上也是模型切換。當安全分類器在具有備援模型的類別中標記請求時,Claude Code 會在該模型上重新執行請求,並且工作階段會在那裡繼續。
90 90
91當 skill 或命令的 frontmatter 指定的 [`model`](/docs/zh-TW/skills#frontmatter-reference) 不同於工作階段目前模型時,該回合也是模型切換:下一個請求會讀取整個對話歷史記錄而沒有快取命中。工作階段模型會在您的下一個提示詞時恢復。`context: fork` skill 則會改為設定[分叉 subagent 的模型](/docs/zh-TW/skills.md#run-skills-in-a-subagent)。91當 skill 或命令的 frontmatter 指定的 [`model`](https://code.claude.com/docs/zh-TW/skills#frontmatter-reference) 不同於工作階段目前模型時,該回合也是模型切換:下一個請求會讀取整個對話歷史記錄而沒有快取命中。工作階段模型會在您的下一個提示詞時恢復。`context: fork` skill 則會改為設定[分叉 subagent 的模型](https://code.claude.com/docs/zh-TW/skills.md#run-skills-in-a-subagent)。
92 92
93### 變更 effort 等級93### 變更 effort 等級
94 94
95在大多數模型上,在工作階段中途變更 [effort 等級](/docs/zh-TW/model-config.md#adjust-effort-level)意味著下一個請求會讀取整個對話歷史記錄而沒有快取命中。當快取仍然溫暖時,Claude Code 會要求您先確認變更。95在大多數模型上,在工作階段中途變更 [effort 等級](https://code.claude.com/docs/zh-TW/model-config.md#adjust-effort-level)意味著下一個請求會讀取整個對話歷史記錄而沒有快取命中。當快取仍然溫暖時,Claude Code 會要求您先確認變更。
96 96
97在具有 API 金鑰或 Claude 訂閱的 Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 5.1 上,變更 effort 會保留快取,Claude Code 會在不詢問的情況下套用新的等級。這不適用於 Amazon Bedrock、Google Cloud 的 Agent Platform 或 [Claude 應用程式閘道](/docs/zh-TW/claude-apps-gateway),或當您設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities) 或您的組織具有 HIPAA 設定時。97在具有 API 金鑰或 Claude 訂閱的 Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 5.1 上,變更 effort 會保留快取,Claude Code 會在不詢問的情況下套用新的等級。這不適用於 Amazon Bedrock、Google Cloud 的 Agent Platform 或 [Claude 應用程式閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway),或當您設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](https://code.claude.com/docs/zh-TW/llm-gateway-protocol#disable-pre-release-capabilities) 或您的組織具有 HIPAA 設定時。
98 98
99在 v2.1.260 之前,在具有 API 金鑰或 Claude 訂閱的 Fable 5.1 上變更 effort 也會使快取失效。99在 v2.1.260 之前,在具有 API 金鑰或 Claude 訂閱的 Fable 5.1 上變更 effort 也會使快取失效。
100 100
101### 開啟快速模式101### 開啟快速模式
102 102
103啟用[快速模式](/docs/zh-TW/fast-mode.md)會新增一個請求標頭,該標頭是快取金鑰的一部分,因此 Claude Code 傳送的第一個啟用快速模式的請求會讀取整個對話歷史記錄而沒有快取命中。Claude Code 在回合開始時設定該標頭一次,並為整個回合保留它,因此當您在 Claude 工作時開啟快速模式時,標頭的快取遺漏會在您下一個回合的第一個請求時發生。這些未快取的輸入 token 按[快速模式費率](/docs/zh-TW/fast-mode.md#understand-the-cost-tradeoff)計費,這就是為什麼在工作階段開始時開啟它的成本比在長工作階段深處開啟它的成本要低。如果您目前的模型不支援快速模式,啟用快速模式也會[切換您的模型](#switching-models),該切換本身會從執行回合中的下一個請求開始啟動新的快取。103啟用[快速模式](https://code.claude.com/docs/zh-TW/fast-mode.md)會新增一個請求標頭,該標頭是快取金鑰的一部分,因此 Claude Code 傳送的第一個啟用快速模式的請求會讀取整個對話歷史記錄而沒有快取命中。Claude Code 在回合開始時設定該標頭一次,並為整個回合保留它,因此當您在 Claude 工作時開啟快速模式時,標頭的快取遺漏會在您下一個回合的第一個請求時發生。這些未快取的輸入 token 按[快速模式費率](https://code.claude.com/docs/zh-TW/fast-mode.md#understand-the-cost-tradeoff)計費,這就是為什麼在工作階段開始時開啟它的成本比在長工作階段深處開啟它的成本要低。如果您目前的模型不支援快速模式,啟用快速模式也會[切換您的模型](#switching-models),該切換本身會從執行回合中的下一個請求開始啟動新的快取。
104 104
105成本每個對話應用一次。在第一個快速模式回合之後,Claude Code 會繼續傳送標頭,並且僅改變請求的速度設定,這不是快取金鑰的一部分。關閉快速模式、[達到速率限制後自動改用標準速度](/docs/zh-TW/fast-mode.md#handle-rate-limits)以及稍後重新開啟都會保留快取。如果您[在工作階段中途用完用量點數](/docs/zh-TW/fast-mode.md#handle-rate-limits),Claude Code 會以相同方式在標準速度下重試每個被拒絕的快速模式請求,因此此備援也會保留快取。`/clear` 和 `/compact` 會重設此設定,因為它們無論如何都會在這些點重建快取。105成本每個對話應用一次。在第一個快速模式回合之後,Claude Code 會繼續傳送標頭,並且僅改變請求的速度設定,這不是快取金鑰的一部分。關閉快速模式、[達到速率限制後自動改用標準速度](https://code.claude.com/docs/zh-TW/fast-mode.md#handle-rate-limits)以及稍後重新開啟都會保留快取。如果您[在工作階段中途用完用量點數](https://code.claude.com/docs/zh-TW/fast-mode.md#handle-rate-limits),Claude Code 會以相同方式在標準速度下重試每個被拒絕的快速模式請求,因此此備援也會保留快取。`/clear` 和 `/compact` 會重設此設定,因為它們無論如何都會在這些點重建快取。
106 106
107### 連接或移除 MCP 伺服器107### 連接或移除 MCP 伺服器
108 108
109工具定義位於系統提示詞層,因此當請求中的工具定義集合在回合之間變更時,快取會失效。切換[顧問工具](/docs/zh-TW/advisor.md)是一個例外:其定義位於快取中斷點之後,因此啟用或停用 `/advisor` 會保留快取的前綴完整。[MCP 伺服器](/docs/zh-TW/mcp.md)變更是否執行此操作取決於[工具搜尋](/docs/zh-TW/mcp.md#scale-with-mcp-tool-search)是否延遲工作階段的 MCP 工具,在支援的模型上為預設值:109工具定義位於系統提示詞層,因此當請求中的工具定義集合在回合之間變更時,快取會失效。切換[顧問工具](https://code.claude.com/docs/zh-TW/advisor.md)是一個例外:其定義位於快取中斷點之後,因此啟用或停用 `/advisor` 會保留快取的前綴完整。[MCP 伺服器](https://code.claude.com/docs/zh-TW/mcp.md)變更是否執行此操作取決於[工具搜尋](https://code.claude.com/docs/zh-TW/mcp.md#scale-with-mcp-tool-search)是否延遲工作階段的 MCP 工具,在支援的模型上為預設值:
110 110
111* **工具延遲**:Claude Code 會為整個對話保留對話第一個請求中的工具清單,因此伺服器在工作階段中途連接或斷開不會擾亂已快取的任何內容。在第一個請求後完成連接的伺服器會提供其工具作為延遲定義,Claude 會按需載入。111* **工具延遲**:Claude Code 會為整個對話保留對話第一個請求中的工具清單,因此伺服器在工作階段中途連接或斷開不會擾亂已快取的任何內容。在第一個請求後完成連接的伺服器會提供其工具作為延遲定義,Claude 會按需載入。
112* **預先載入工具**:新增定義會使快取失效,刻意移除定義也會如此。這適用於工具搜尋[已關閉或不可用](/docs/zh-TW/mcp.md#configure-tool-search)時,例如在:112* **預先載入工具**:新增定義會使快取失效,刻意移除定義也會如此。這適用於工具搜尋[已關閉或不可用](https://code.claude.com/docs/zh-TW/mcp.md#configure-tool-search)時,例如在:
113 * 早於 Opus 4.5、Sonnet 4.5 和 Haiku 4.5 的 Google Cloud Agent Platform 模型上113 * 早於 Opus 4.5、Sonnet 4.5 和 Haiku 4.5 的 Google Cloud Agent Platform 模型上
114 * Microsoft Foundry [託管於 Azure 的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上,且 Claude Code 偵測到該部署拒絕工具搜尋時114 * Microsoft Foundry [託管於 Azure 的部署](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)上,且 Claude Code 偵測到該部署拒絕工具搜尋時
115 115
117 117
118| 工作階段中途的變更 | 快取 | 下一個請求中的工具定義 |118| 工作階段中途的變更 | 快取 | 下一個請求中的工具定義 |
119| - | - | - |119| - | - | - |
120| 伺服器連接,或[動態工具更新](/docs/zh-TW/mcp.md#dynamic-tool-updates)新增工具 | 已失效 | 新定義已新增 |120| 伺服器連接,或[動態工具更新](https://code.claude.com/docs/zh-TW/mcp.md#dynamic-tool-updates)新增工具 | 已失效 | 新定義已新增 |
121| 伺服器在沒有您採取任何動作的情況下斷開,例如 stdio 伺服器的程序退出 | 已保留 | 伺服器的定義保持不變。呼叫其中一個工具會傳回錯誤而不是執行 |121| 伺服器在沒有您採取任何動作的情況下斷開,例如 stdio 伺服器的程序退出 | 已保留 | 伺服器的定義保持不變。呼叫其中一個工具會傳回錯誤而不是執行,除非 Claude Code 為該次呼叫[再次啟動伺服器](https://code.claude.com/docs/zh-TW/mcp.md#stdio-servers-that-exit-or-fail-to-start) |
122| 遠端伺服器在連接斷開後[自動重新連接](/docs/zh-TW/mcp.md#automatic-reconnection) | 已保留,除非在伺服器重新連接時傳送的請求新增 `WaitForMcpServers` 工具,這會使快取失效一次 | 伺服器的定義保持不變。在伺服器重新連接時傳送的請求可以在對話尚未列出時新增 `WaitForMcpServers`,然後該工具會在對話的其餘部分保持列出 |122| 遠端伺服器在連接斷開後[自動重新連接](https://code.claude.com/docs/zh-TW/mcp.md#automatic-reconnection) | 已保留,除非在伺服器重新連接時傳送的請求新增 `WaitForMcpServers` 工具,這會使快取失效一次 | 伺服器的定義保持不變。在伺服器重新連接時傳送的請求可以在對話尚未列出時新增 `WaitForMcpServers`,然後該工具會在對話的其餘部分保持列出 |
123| 您故意移除工具,例如使用[拒絕規則](#denying-an-entire-tool)或在 `/mcp` 中停用其伺服器 | 已失效 | 定義已移除 |123| 您故意移除工具,例如使用[拒絕規則](#denying-an-entire-tool)或在 `/mcp` 中停用其伺服器 | 已失效 | 定義已移除 |
124 124
125當您繼續其工具載入到前綴中的對話時,其中一個 MCP 伺服器仍然可以在第一個請求發出時進行連接。如果逐字稿記錄了該伺服器的工具定義,該請求會按記錄的方式包含它們,因此當伺服器以相同工具完成連接時不會變更。125當您繼續其工具載入到前綴中的對話時,其中一個 MCP 伺服器仍然可以在第一個請求發出時進行連接。如果逐字稿記錄了該伺服器的工具定義,該請求會按記錄的方式包含它們,因此當伺服器以相同工具完成連接時不會變更。
128 128
129### 啟用或停用外掛程式129### 啟用或停用外掛程式
130 130
131當您啟用或停用[外掛程式](/docs/zh-TW/plugins/overview.md)時,變更的成本取決於外掛程式提供的元件類型。下面的案例涵蓋每個元件類型、Claude Code 何時套用變更,以及在同一工作階段中再次停用外掛程式時會發生什麼。131當您啟用或停用[外掛程式](https://code.claude.com/docs/zh-TW/plugins/overview.md)時,變更的成本取決於外掛程式提供的元件類型。下面的案例涵蓋每個元件類型、Claude Code 何時套用變更,以及在同一工作階段中再次停用外掛程式時會發生什麼。
132 132
133#### 保留快取的外掛程式元件133#### 保留快取的外掛程式元件
134 134
136 136
137#### 提供 MCP 伺服器的外掛程式137#### 提供 MCP 伺服器的外掛程式
138 138
139當您啟用或停用提供 [MCP 伺服器](/docs/zh-TW/plugins/components.md#mcp-servers) 的外掛程式時,Claude Code 會遵循與[連接或移除 MCP 伺服器](#connecting-or-removing-an-mcp-server)相同的規則。139當您啟用或停用提供 [MCP 伺服器](https://code.claude.com/docs/zh-TW/plugins/components.md#mcp-servers) 的外掛程式時,Claude Code 會遵循與[連接或移除 MCP 伺服器](#connecting-or-removing-an-mcp-server)相同的規則。
140 140
141#### 程式碼智慧外掛程式141#### 程式碼智慧外掛程式
142 142
143當您啟用[程式碼智慧外掛程式](/docs/zh-TW/plugins/code-intelligence.md)時,Claude 會取得 [LSP 工具](/docs/zh-TW/tools-reference.md#lsp-tool-behavior)。143當您啟用[程式碼智慧外掛程式](https://code.claude.com/docs/zh-TW/plugins/code-intelligence.md)時,Claude 會取得 [LSP 工具](https://code.claude.com/docs/zh-TW/tools-reference.md#lsp-tool-behavior)。
144 144
145#### 外掛程式變更何時套用145#### 外掛程式變更何時套用
146 146
147您在 `/plugin` 功能表中所做的變更會通過 [`/reload-plugins`](/docs/zh-TW/plugins/cli-reference#reload-plugins) 進行,Claude Code 會在您關閉功能表時為您執行。您會支付成本,無論是附加的公告還是完整重新讀取,都是在變更套用後的第一個回合。Claude Code 也可以自行套用變更:147您在 `/plugin` 功能表中所做的變更會通過 [`/reload-plugins`](https://code.claude.com/docs/zh-TW/plugins/cli-reference#reload-plugins) 進行,Claude Code 會在您關閉功能表時為您執行。您會支付成本,無論是附加的公告還是完整重新讀取,都是在變更套用後的第一個回合。Claude Code 也可以自行套用變更:
148 148
149* 對於具有 `command` 來源的外掛程式,Claude Code [可以自行重新載入外掛程式](/docs/zh-TW/plugins/loading.md#when-a-command-source-re-runs)。149* 對於具有 `command` 來源的外掛程式,Claude Code [可以自行重新載入外掛程式](https://code.claude.com/docs/zh-TW/plugins/loading.md#when-a-command-source-re-runs)。
150* 當您[從 `/plugin` 介面安裝外掛程式](/docs/zh-TW/plugins/install#install-a-plugin)時,Claude Code 可以在安裝期間啟動它。安裝摘要會告訴您它是否執行了此操作。150* 當您[從 `/plugin` 介面安裝外掛程式](https://code.claude.com/docs/zh-TW/plugins/install#install-a-plugin)時,Claude Code 可以在安裝期間啟動它。安裝摘要會告訴您它是否執行了此操作。
151* 當您在 v2.1.246 或更新版本上使用 `/cd` [移動工作階段](/docs/zh-TW/permissions.md#move-the-session-to-another-directory)時,Claude Code 會在移動過程中套用新目錄的設定啟用的外掛程式,而不會出現保留 `/reload-plugins` 的完整重新讀取警告。151* 當您在 v2.1.246 或更新版本上使用 `/cd` [移動工作階段](https://code.claude.com/docs/zh-TW/permissions.md#move-the-session-to-another-directory)時,Claude Code 會在移動過程中套用新目錄的設定啟用的外掛程式,而不會出現保留 `/reload-plugins` 的完整重新讀取警告。
152* 在互動式工作階段中,當您在使用 `--plugin-dir` 傳遞的[外掛程式資料夾](/docs/zh-TW/plugins/create.md#load-a-directory-or-archive-for-one-session)中新增或移除外掛程式時,變更會立即套用。如果套用它會觸發完整重新讀取,Claude Code 會改為保留變更並顯示通知以執行 `/reload-plugins`。需要 Claude Code v2.1.265 或更新版本。152* 在互動式工作階段中,當您在使用 `--plugin-dir` 傳遞的[外掛程式資料夾](https://code.claude.com/docs/zh-TW/plugins/create.md#load-a-directory-or-archive-for-one-session)中新增或移除外掛程式時,變更會立即套用。如果套用它會觸發完整重新讀取,Claude Code 會改為保留變更並顯示通知以執行 `/reload-plugins`。需要 Claude Code v2.1.265 或更新版本。
153 153
154當 `/reload-plugins` 執行且重新載入會觸發完整重新讀取時,Claude Code 會顯示警告且不套用重新載入。執行 `/reload-plugins --force` 以無論如何套用它。154當 `/reload-plugins` 執行且重新載入會觸發完整重新讀取時,Claude Code 會顯示警告且不套用重新載入。執行 `/reload-plugins --force` 以無論如何套用它。
155 155
156`/reload-plugins` 也在沒有互動式終端機的工作階段中執行,例如桌面應用程式、Agent SDK 和搭配 `-p` 的[非互動模式](/docs/zh-TW/headless.md),當您直接將其輸入工作階段時。需要 Claude Code v2.1.260 或更新版本。156`/reload-plugins` 也在沒有互動式終端機的工作階段中執行,例如桌面應用程式、Agent SDK 和搭配 `-p` 的[非互動模式](https://code.claude.com/docs/zh-TW/headless.md),當您直接將其輸入工作階段時。需要 Claude Code v2.1.260 或更新版本。
157 157
158在這些工作階段中,重新載入會套用除了外掛程式 MCP 伺服器變更之外的所有內容,這些變更[在您的下一個工作階段中生效](/docs/zh-TW/plugins/cli-reference.md#reload-plugins),因此永遠不會在工作階段中途造成完整重新讀取的成本。158在這些工作階段中,重新載入會套用除了外掛程式 MCP 伺服器變更之外的所有內容,這些變更[在您的下一個工作階段中生效](https://code.claude.com/docs/zh-TW/plugins/cli-reference.md#reload-plugins),因此永遠不會在工作階段中途造成完整重新讀取的成本。
159 159
160#### 您在一個工作階段中啟用然後停用的外掛程式160#### 您在一個工作階段中啟用然後停用的外掛程式
161 161
163 163
164### 拒絕整個工具164### 拒絕整個工具
165 165
166如果您新增裸工具名稱(如 `Bash` 或 `WebFetch`)作為[拒絕規則](/docs/zh-TW/permissions.md#manage-permissions),Claude 從您的下一個請求開始便無法呼叫該工具,無論您是通過 `/permissions` 新增規則還是通過[直接編輯設定檔](/docs/zh-TW/settings.md#when-edits-take-effect)。這包括您在回合中途通過 `/permissions` 新增的規則。166如果您新增裸工具名稱(如 `Bash` 或 `WebFetch`)作為[拒絕規則](https://code.claude.com/docs/zh-TW/permissions.md#manage-permissions),Claude 從您的下一個請求開始便無法呼叫該工具,無論您是通過 `/permissions` 新增規則還是通過[直接編輯設定檔](https://code.claude.com/docs/zh-TW/settings.md#when-edits-take-effect)。這包括您在回合中途通過 `/permissions` 新增的規則。
167 167
168當[工具搜尋](/docs/zh-TW/mcp.md#scale-with-mcp-tool-search)處於活動狀態時(在支援的模型上為預設值),請求的工具定義不會變更,快取的前綴會保留。當工具搜尋不可用或已停用時,Claude Code 會從下一個請求中移除定義,這會使快取失效,稍後移除規則也會如此。168當[工具搜尋](https://code.claude.com/docs/zh-TW/mcp.md#scale-with-mcp-tool-search)處於活動狀態時(在支援的模型上為預設值),請求的工具定義不會變更,快取的前綴會保留。當工具搜尋不可用或已停用時,Claude Code 會從下一個請求中移除定義,這會使快取失效,稍後移除規則也會如此。
169 169
170只有在工具名稱位置相符的拒絕規則才會以此方式封鎖工具:裸工具名稱、等效的 `Bash(*)` 形式或[工具名稱 glob](/docs/zh-TW/permissions.md#tool-name-wildcards)(如 `"*"`)。只與 MCP 工具相符的 glob(如 `"mcp__*"`)會以相同方式封鎖這些工具。範圍拒絕規則(如 `Bash(rm *)`)以及所有允許和詢問規則都不會變更 Claude 看到的工具。Claude Code 在 Claude 嘗試呼叫時檢查它們,保留前綴完整。170只有在工具名稱位置相符的拒絕規則才會以此方式封鎖工具:裸工具名稱、等效的 `Bash(*)` 形式或[工具名稱 glob](https://code.claude.com/docs/zh-TW/permissions.md#tool-name-wildcards)(如 `"*"`)。只與 MCP 工具相符的 glob(如 `"mcp__*"`)會以相同方式封鎖這些工具。範圍拒絕規則(如 `Bash(rm *)`)以及所有允許和詢問規則都不會變更 Claude 看到的工具。Claude Code 在 Claude 嘗試呼叫時檢查它們,保留前綴完整。
171 171
172### 壓縮對話172### 壓縮對話
173 173
174[壓縮](/docs/zh-TW/context-window.md#what-survives-compaction)會用摘要取代您的訊息歷史記錄。根據設計,這會使對話層失效:下一個請求具有新的、較短的歷史記錄,不與舊歷史記錄共享前綴。系統提示詞層和專案上下文層可以保持快取:174[壓縮](https://code.claude.com/docs/zh-TW/context-window.md#what-survives-compaction)會用摘要取代您的訊息歷史記錄。根據設計,這會使對話層失效:下一個請求具有新的、較短的歷史記錄,不與舊歷史記錄共享前綴。系統提示詞層和專案上下文層可以保持快取:
175 175
176* **系統提示詞**:下一個請求會從快取讀取此層,除非[繼續的對話](#resuming-a-session)保留了現已過時的系統提示詞。該對話第一次被壓縮時,Claude Code 會將其切換為目前的提示詞,下一個請求會重建此層的快取一次。176* **系統提示詞**:下一個請求會從快取讀取此層,除非[繼續的對話](#resuming-a-session)保留了現已過時的系統提示詞。該對話第一次被壓縮時,Claude Code 會將其切換為目前的提示詞,下一個請求會重建此層的快取一次。
177* **專案上下文**:Claude Code 會從磁碟重新載入此層。只有在工作階段開始以來 CLAUDE.md 和記憶未變更時,下一個請求才會從快取讀取它。177* **專案上下文**:Claude Code 會從磁碟重新載入此層。只有在工作階段開始以來 CLAUDE.md 和記憶未變更時,下一個請求才會從快取讀取它。
178 178
179為了產生摘要,Claude Code 會傳送一個單獨的請求。該請求會重複您對話的系統提示詞、工具以及要摘要的歷史記錄,並以一則摘要指令作結。當快取溫暖時,該請求會從快取讀取您的前綴。因此,工作階段中途的 `/compact` 成本只是上下文大小所暗示的一小部分,並且大部分時間花在產生摘要上。179為了產生摘要,Claude Code 會傳送一個單獨的請求。該請求會重複您對話的系統提示詞、工具以及要摘要的歷史記錄,並以一則摘要指令作結。當快取溫暖時,該請求會從快取讀取您的前綴。因此,工作階段中途的 `/compact` 成本只是上下文大小所暗示的一小部分,並且大部分時間花在產生摘要上。
180 180
181在超過[快取生命週期](#cache-lifetime)的中斷後,沒有快取可讀取,因此摘要請求會將該歷史記錄重新處理為未快取的輸入。這就是為什麼當您[繼續舊工作階段](/docs/zh-TW/sessions.md#resume-a-session)時 `/compact` 成本最高。在溫暖和冷的情況下,壓縮後的回合只會為更短的摘要重建對話快取,因此該回合不是較慢的部分。181在超過[快取生命週期](#cache-lifetime)的中斷後,沒有快取可讀取,因此摘要請求會將該歷史記錄重新處理為未快取的輸入。這就是為什麼當您[繼續舊工作階段](https://code.claude.com/docs/zh-TW/sessions.md#resume-a-session)時 `/compact` 成本最高。在溫暖和冷的情況下,壓縮後的回合只會為更短的摘要重建對話快取,因此該回合不是較慢的部分。
182 182
183> [!TIP]183> [!TIP]
184>184>
185> 當您捨棄的上下文是您不再需要的內容時,壓縮對您有利。為了選擇其開銷何時發生,請在工作的自然中斷處(例如任務之間)執行 `/compact`,而不是等待自動壓縮在任務中途觸發。如果您走上了想要完全放棄的路徑,請改為使用 [`/rewind`](#rewinding-the-conversation) 回到較早的回合。倒轉會截斷回到已快取的前綴,而不是像壓縮那樣建立新的前綴。185> 當您捨棄的上下文是您不再需要的內容時,壓縮對您有利。為了選擇其開銷何時發生,請在工作的自然中斷處(例如任務之間)執行 `/compact`,而不是等待自動壓縮在任務中途觸發。如果您走上了想要完全放棄的路徑,請改為使用 [`/rewind`](#rewinding-the-conversation) 回到較早的回合。倒轉會截斷回到已快取的前綴,而不是像壓縮那樣建立新的前綴。
186 186
187如果您在終端機工作階段中讓長對話閒置,且該對話處於[一小時 TTL](#which-ttl-each-request-gets),Claude Code 可能會在快取過期前不久將其壓縮。若要關閉閒置壓縮,請將 [`idleCompaction`](/docs/zh-TW/settings-reference#idlecompaction) 設定為 `false`,這需要 Claude Code v2.1.290 或更新版本。187如果您在終端機工作階段中讓長對話閒置,且該對話處於[一小時 TTL](#which-ttl-each-request-gets),Claude Code 可能會在快取過期前不久將其壓縮。若要關閉閒置壓縮,請將 [`idleCompaction`](https://code.claude.com/docs/zh-TW/settings-reference#idlecompaction) 設定為 `false`,這需要 Claude Code v2.1.290 或更新版本。
188 188
189### 累積許多影像189### 累積許多影像
190 190
196 196
197### 升級 Claude Code197### 升級 Claude Code
198 198
199新的 Claude Code 版本通常會更新系統提示詞或工具定義,因此您在升級後開始的第一個對話會從頭開始建立其快取。[自動更新](/docs/zh-TW/setup.md#auto-updates)會在背景下載新版本,但在下一次啟動時套用它們,永遠不會在工作階段中途,因此您會看到這是重新啟動後的未快取第一個回合,而不是工作階段期間的意外。設定 `DISABLE_AUTOUPDATER=1` 以控制何時套用升級。199新的 Claude Code 版本通常會更新系統提示詞或工具定義,因此您在升級後開始的第一個對話會從頭開始建立其快取。[自動更新](https://code.claude.com/docs/zh-TW/setup.md#auto-updates)會在背景下載新版本,但在下一次啟動時套用它們,永遠不會在工作階段中途,因此您會看到這是重新啟動後的未快取第一個回合,而不是工作階段期間的意外。設定 `DISABLE_AUTOUPDATER=1` 以控制何時套用升級。
200 200
201> [!NOTE]201> [!NOTE]
202>202>
217 217
218### 編輯您的儲存庫中的檔案218### 編輯您的儲存庫中的檔案
219 219
220檔案內容只有在 Claude 讀取時才會進入上下文,而讀取會附加到對話中。編輯 Claude 之前讀過的檔案不會追溯性地改變歷史記錄中的早期讀取。相反,Claude Code 會附加一個 [`<system-reminder>`](/docs/zh-TW/glossary#system-reminder) 注意到檔案已變更,如果需要,Claude 會重新讀取它。220檔案內容只有在 Claude 讀取時才會進入上下文,而讀取會附加到對話中。編輯 Claude 之前讀過的檔案不會追溯性地改變歷史記錄中的早期讀取。相反,Claude Code 會附加一個 [`<system-reminder>`](https://code.claude.com/docs/zh-TW/glossary#system-reminder) 注意到檔案已變更,如果需要,Claude 會重新讀取它。
221 221
222### 在工作階段中編輯 CLAUDE.md222### 在工作階段中編輯 CLAUDE.md
223 223
224您的專案根目錄和使用者層級 CLAUDE.md 檔案在工作階段開始時讀取一次並保存在記憶體中。在工作階段中編輯它們不會使快取失效,但編輯也不會套用。Claude 繼續使用在工作階段開始時載入的版本。新內容在下一次 `/clear`、`/compact` 或重新啟動時載入。224您的專案根目錄和使用者層級 CLAUDE.md 檔案在工作階段開始時讀取一次並保存在記憶體中。在工作階段中編輯它們不會使快取失效,但編輯也不會套用。Claude 繼續使用在工作階段開始時載入的版本。新內容在下一次 `/clear`、`/compact` 或重新啟動時載入。
225 225
226[子目錄中的巢狀 CLAUDE.md 檔案](/docs/zh-TW/memory.md)和[具有 `paths:` frontmatter 的規則](/docs/zh-TW/memory#path-specific-rules)會在稍後視需要載入。在它載入之前自行編輯它確實會生效。載入後,內容是對話歷史記錄的一部分,因此在工作階段中編輯不會追溯性地改變它。226[子目錄中的巢狀 CLAUDE.md 檔案](https://code.claude.com/docs/zh-TW/memory.md)和[具有 `paths:` frontmatter 的規則](https://code.claude.com/docs/zh-TW/memory#path-specific-rules)會在稍後視需要載入。在它載入之前自行編輯它確實會生效。載入後,內容是對話歷史記錄的一部分,因此在工作階段中編輯不會追溯性地改變它。
227 227
228### 變更權限模式228### 變更權限模式
229 229
230在[權限模式](/docs/zh-TW/permission-modes.md)之間切換,例如從手動切換到接受編輯,不會改變系統提示詞或工具定義,因此模式變更是快取安全的。例外是使用 [`opusplan`](/docs/zh-TW/model-config#opusplan-model-setting) 模型設定的 plan mode,它在您進入或離開 plan mode 時在 Opus 和 Sonnet 之間切換模型。這使得模式切換成為[模型切換](#switching-models)。230在[權限模式](https://code.claude.com/docs/zh-TW/permission-modes.md)之間切換,例如從手動切換到接受編輯,不會改變系統提示詞或工具定義,因此模式變更是快取安全的。例外是使用 [`opusplan`](https://code.claude.com/docs/zh-TW/model-config#opusplan-model-setting) 模型設定的 plan mode,它在您進入或離開 plan mode 時在 Opus 和 Sonnet 之間切換模型。這使得模式切換成為[模型切換](#switching-models)。
231 231
232### 變更輸出風格232### 變更輸出風格
233 233
234當您在工作階段中使用 [`/output-style`](/docs/zh-TW/output-styles#change-your-output-style)、`/config` 或 `outputStyle` 設定切換[輸出風格](/docs/zh-TW/output-styles.md)時,Claude 從您的下一條訊息開始使用新風格。Claude Code 將新風格的指示作為對話中的訊息傳遞,因此該請求仍然從快取中讀取系統提示詞和較早的對話。234當您在工作階段中使用 [`/output-style`](https://code.claude.com/docs/zh-TW/output-styles#change-your-output-style)、`/config` 或 `outputStyle` 設定切換[輸出風格](https://code.claude.com/docs/zh-TW/output-styles.md)時,Claude 從您的下一條訊息開始使用新風格。Claude Code 將新風格的指示作為對話中的訊息傳遞,因此該請求仍然從快取中讀取系統提示詞和較早的對話。
235 235
236在 v2.1.251 之前,在工作階段中切換風格會保留快取,但在您執行 `/clear` 或開始新工作階段之前不會套用。236在 v2.1.251 之前,在工作階段中切換風格會保留快取,但在您執行 `/clear` 或開始新工作階段之前不會套用。
237 237
238### 叫用 skill 和命令238### 叫用 skill 和命令
239 239
240[Skill](/docs/zh-TW/skills.md) 和[命令](/docs/zh-TW/commands.md)在叫用點將其指示作為使用者訊息注入。對話中較早的任何內容都不會改變。frontmatter 命名 `model` 的 skill 或命令可以是該回合的[模型切換](#switching-models)。240[Skill](https://code.claude.com/docs/zh-TW/skills.md) 和[命令](https://code.claude.com/docs/zh-TW/commands.md)在叫用點將其指示作為使用者訊息注入。對話中較早的任何內容都不會改變。frontmatter 命名 `model` 的 skill 或命令可以是該回合的[模型切換](#switching-models)。
241 241
242### 執行 `/recap`242### 執行 `/recap`
243 243
244[`/recap`](/docs/zh-TW/interactive-mode#session-recap) 生成一個摘要以在您的終端機中顯示。與 `/compact` 不同,它將摘要附加為命令輸出,而不是替換您的訊息歷史記錄,因此快取的前綴保持完整。244[`/recap`](https://code.claude.com/docs/zh-TW/interactive-mode#session-recap) 生成一個摘要以在您的終端機中顯示。與 `/compact` 不同,它將摘要附加為命令輸出,而不是替換您的訊息歷史記錄,因此快取的前綴保持完整。
245 245
246### 倒帶對話246### 倒帶對話
247 247
248[`/rewind`](/docs/zh-TW/checkpointing) 將您的對話截斷回較早的回合。剩餘的歷史記錄是快取在該點建立時的相同內容,系統提示詞和專案上下文層保持不變,因此下一個請求會命中較早的快取項目。自那時以來的每一回合都已讀過該前綴,即使原始回合比 TTL 更久遠,也保持了該項目的活躍狀態。248[`/rewind`](https://code.claude.com/docs/zh-TW/checkpointing) 將您的對話截斷回較早的回合。剩餘的歷史記錄是快取在該點建立時的相同內容,系統提示詞和專案上下文層保持不變,因此下一個請求會命中較早的快取項目。自那時以來的每一回合都已讀過該前綴,即使原始回合比 TTL 更久遠,也保持了該項目的活躍狀態。
249 249
250將檔案檢查點與對話一起還原對快取沒有單獨的影響。檔案內容只有在 Claude 讀取時才會進入上下文,與[編輯您的儲存庫中的檔案](#editing-files-in-your-repository)相同。250將檔案檢查點與對話一起還原對快取沒有單獨的影響。檔案內容只有在 Claude 讀取時才會進入上下文,與[編輯您的儲存庫中的檔案](#editing-files-in-your-repository)相同。
251 251
252## 復原工作階段252## 復原工作階段
253 253
254當您[復原工作階段](/docs/zh-TW/sessions.md#resume-a-session)時,Claude Code 會重新傳送整個對話,而請求會從快取中讀取其前綴中未變更且仍在[快取生命週期](#cache-lifetime)內的任何部分。本頁頂部的圖層表說明每個圖層的變更內容。254當您[復原工作階段](https://code.claude.com/docs/zh-TW/sessions.md#resume-a-session)時,Claude Code 會重新傳送整個對話,而請求會從快取中讀取其前綴中未變更且仍在[快取生命週期](#cache-lifetime)內的任何部分。本頁頂部的圖層表說明每個圖層的變更內容。
255 255
256系統提示會在[Claude Code 升級](#upgrading-claude-code)後或在復原時使用不同的[`--append-system-prompt`](/docs/zh-TW/cli-reference#system-prompt-flags)文字時變更。根據預設,復原的對話會保留其開始時的系統提示,因此其歷史記錄仍位於相同提示後面,變更會在對話壓縮或新對話中生效。[復原對話中的系統提示旗標](/docs/zh-TW/cli-reference.md#system-prompt-flags-in-resumed-conversations)涵蓋 Claude Code 在每個請求上重新建置提示的情況。256系統提示會在[Claude Code 升級](#upgrading-claude-code)後或在復原時使用不同的[`--append-system-prompt`](https://code.claude.com/docs/zh-TW/cli-reference#system-prompt-flags)文字時變更。根據預設,復原的對話會保留其開始時的系統提示,因此其歷史記錄仍位於相同提示後面,變更會在對話壓縮或新對話中生效。[復原對話中的系統提示旗標](https://code.claude.com/docs/zh-TW/cli-reference.md#system-prompt-flags-in-resumed-conversations)涵蓋 Claude Code 在每個請求上重新建置提示的情況。
257 257
258## 快取生命週期258## 快取生命週期
259 259
266Claude Code 按請求決定 TTL,每個請求都屬於以下兩個固定桶之一:266Claude Code 按請求決定 TTL,每個請求都屬於以下兩個固定桶之一:
267 267
268* **主要對話**:您的互動式轉向、非互動式 `-p` 執行和 Agent SDK 轉向,加上 Claude Code 與它們內聯執行的幫助程式268* **主要對話**:您的互動式轉向、非互動式 `-p` 執行和 Agent SDK 轉向,加上 Claude Code 與它們內聯執行的幫助程式
269* **其他所有內容**:Claude Code 在該對話之外進行的請求,例如[子代理](/docs/zh-TW/sub-agents.md)、[工作流程](/docs/zh-TW/workflows.md)、進程內[隊友](/docs/zh-TW/agent-teams.md)、分支、壓縮和工作階段標題269* **其他所有內容**:Claude Code 在該對話之外進行的請求,例如[子代理](https://code.claude.com/docs/zh-TW/sub-agents.md)、[工作流程](https://code.claude.com/docs/zh-TW/workflows.md)、進程內[隊友](https://code.claude.com/docs/zh-TW/agent-teams.md)、分支、壓縮和工作階段標題
270 270
271除非您自己選擇 TTL,否則 Claude Code 僅在您方案的包含使用量內的 Claude 訂閱上請求一小時 TTL。在那裡,它為主要對話請求一小時,加上 Anthropic 在伺服器端控制的一小組幫助程式請求。此表格提供兩種計費方式下每個桶的預設 TTL。271除非您自己選擇 TTL,否則 Claude Code 僅在您方案的包含使用量內的 Claude 訂閱上請求一小時 TTL。在那裡,它為主要對話請求一小時,加上 Anthropic 在伺服器端控制的一小組幫助程式請求。此表格提供兩種計費方式下每個桶的預設 TTL。
272 272
281 281
282您可以為任一桶設定 TTL。每個控制項採用 `5m` 或 `1h`,Claude Code 會忽略任何其他值。282您可以為任一桶設定 TTL。每個控制項採用 `5m` 或 `1h`,Claude Code 會忽略任何其他值。
283 283
284* **主要對話**:[`promptCacheTtl`](/docs/zh-TW/settings-reference#promptcachettl) 設定,或 `CLAUDE_CODE_PROMPT_CACHE_TTL` [環境變數](/docs/zh-TW/env-vars.md)284* **主要對話**:[`promptCacheTtl`](https://code.claude.com/docs/zh-TW/settings-reference#promptcachettl) 設定,或 `CLAUDE_CODE_PROMPT_CACHE_TTL` [環境變數](https://code.claude.com/docs/zh-TW/env-vars.md)
285* **其他所有內容**:[`subagentPromptCacheTtl`](/docs/zh-TW/settings-reference#subagentpromptcachettl) 設定,或 `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` 環境變數285* **其他所有內容**:[`subagentPromptCacheTtl`](https://code.claude.com/docs/zh-TW/settings-reference#subagentpromptcachettl) 設定,或 `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` 環境變數
286 286
287兩個設定和兩個環境變數都需要 Claude Code v2.1.242 或更新版本。如果您使用 API 金鑰登入或使用雲端提供者,請將 `promptCacheTtl` 設定為 `1h` 以為主要對話提供一小時快取。其外的請求保持五分鐘預設值,直到您也為該桶選擇 TTL。287兩個設定和兩個環境變數都需要 Claude Code v2.1.242 或更新版本。如果您使用 API 金鑰登入或使用雲端提供者,請將 `promptCacheTtl` 設定為 `1h` 以為主要對話提供一小時快取。其外的請求保持五分鐘預設值,直到您也為該桶選擇 TTL。
288 288
2911. `FORCE_PROMPT_CACHING_5M=1`,為兩個桶強制五分鐘2911. `FORCE_PROMPT_CACHING_5M=1`,為兩個桶強制五分鐘
2922. 桶的環境變數2922. 桶的環境變數
2933. 桶的設定2933. 桶的設定
2944. 對於子代理的請求,子代理的 [`experimental` frontmatter 欄位](/docs/zh-TW/sub-agents#supported-frontmatter-fields)中的 `cacheTtl` 值,需要 Claude Code v2.1.248 或更新版本。當您的 Claude 訂閱使用使用額度時,Claude Code 會忽略那裡的 `1h`2944. 對於子代理的請求,子代理的 [`experimental` frontmatter 欄位](https://code.claude.com/docs/zh-TW/sub-agents#supported-frontmatter-fields)中的 `cacheTtl` 值,需要 Claude Code v2.1.248 或更新版本。當您的 Claude 訂閱使用使用額度時,Claude Code 會忽略那裡的 `1h`
2955. `ENABLE_PROMPT_CACHING_1H=1`,為兩個桶請求一小時2955. `ENABLE_PROMPT_CACHING_1H=1`,為兩個桶請求一小時
2966. [請求桶的預設值](#which-ttl-each-request-gets)2966. [請求桶的預設值](#which-ttl-each-request-gets)
297 297
298當您調試快取行為、比較兩個 TTL 或覆蓋在[受管設定](/docs/zh-TW/managed-settings.md)中設定的較長 TTL 時,設定 `FORCE_PROMPT_CACHING_5M=1`。298當您調試快取行為、比較兩個 TTL 或覆蓋在[受管設定](https://code.claude.com/docs/zh-TW/managed-settings.md)中設定的較長 TTL 時,設定 `FORCE_PROMPT_CACHING_5M=1`。
299 299
300要確認您的主要對話的快取寫入使用了哪個 TTL,請執行 `claude -p "hello" --output-format json` 並讀取結果中的 `usage.cache_creation`。Claude Code 在 `ephemeral_1h_input_tokens` 下報告一小時快取寫入,在 `ephemeral_5m_input_tokens` 下報告五分鐘快取寫入。300要確認您的主要對話的快取寫入使用了哪個 TTL,請執行 `claude -p "hello" --output-format json` 並讀取結果中的 `usage.cache_creation`。Claude Code 在 `ephemeral_1h_input_tokens` 下報告一小時快取寫入,在 `ephemeral_5m_input_tokens` 下報告五分鐘快取寫入。
301 301
302若要透過閘道或在 Amazon Bedrock 上取得一小時 TTL:302若要透過閘道或在 Amazon Bedrock 上取得一小時 TTL:
303 303
304* **您使用 `ANTHROPIC_BASE_URL` 設定的 LLM 閘道**:部分一小時請求在 `anthropic-beta` 標頭中傳輸,因此請設定閘道以[原封不動地轉發該標頭](/docs/zh-TW/llm-gateway-protocol.md#request-headers)304* **您使用 `ANTHROPIC_BASE_URL` 設定的 LLM 閘道**:部分一小時請求在 `anthropic-beta` 標頭中傳輸,因此請設定閘道以[原封不動地轉發該標頭](https://code.claude.com/docs/zh-TW/llm-gateway-protocol.md#request-headers)
305* **[Claude 應用程式閘道](/docs/zh-TW/claude-apps-gateway)**:請您的管理員在[閘道政策](/docs/zh-TW/claude-apps-gateway-config.md#one-hour-prompt-cache)中請求一小時 TTL305* **[Claude 應用程式閘道](https://code.claude.com/docs/zh-TW/claude-apps-gateway)**:請您的管理員在[閘道政策](https://code.claude.com/docs/zh-TW/claude-apps-gateway-config.md#one-hour-prompt-cache)中請求一小時 TTL
306* **Amazon Bedrock**:提示快取支援、最小可快取前綴長度和一小時 TTL 可用性都因模型而異。如果快取 token 計數保持為零,請檢查 Amazon Bedrock 文件中的[支援的模型、區域和限制](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)。306* **Amazon Bedrock**:提示快取支援、最小可快取前綴長度和一小時 TTL 可用性都因模型而異。如果快取 token 計數保持為零,請檢查 Amazon Bedrock 文件中的[支援的模型、區域和限制](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)。
307 307
308## 快取範圍308## 快取範圍
311 311
312您在同一目錄中並行執行的工作階段會建立相符的前綴並讀取彼此的快取。順序工作階段只有在啟動時取得的 git 狀態快照相符時才會共享前綴,因為每個對話也會帶有該快照中的分支和最近的提交。312您在同一目錄中並行執行的工作階段會建立相符的前綴並讀取彼此的快取。順序工作階段只有在啟動時取得的 git 狀態快照相符時才會共享前綴,因為每個對話也會帶有該快照中的分支和最近的提交。
313 313
314底層 API 快取的範圍更廣。快取在組織之間是隔離的,在某些提供者上,[在組織內的工作區之間隔離](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing)。在這些邊界內,任何兩個具有相同模型和前綴的請求都會讀取相同的快取。對於執行自動化程序群隊的 Agent SDK 呼叫者,請參閱[改善跨使用者和機器的提示快取](/docs/zh-TW/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines)以將自動記憶位置移出系統提示並在使用者和機器之間共享系統提示的快取項目。314底層 API 快取的範圍更廣。快取在組織之間是隔離的,在某些提供者上,[在組織內的工作區之間隔離](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing)。在這些邊界內,任何兩個具有相同模型和前綴的請求都會讀取相同的快取。對於執行自動化程序群隊的 Agent SDK 呼叫者,請參閱[改善跨使用者和機器的提示快取](https://code.claude.com/docs/zh-TW/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines)以將自動記憶位置移出系統提示並在使用者和機器之間共享系統提示的快取項目。
315 315
316## 檢查快取效能316## 檢查快取效能
317 317
318快取效能會在 API 對每個回應報告的兩個權杖計數中顯示。最直接的方式是使用[狀態列指令碼](/docs/zh-TW/statusline.md)來監看 `current_usage` 物件:318快取效能會在 API 對每個回應報告的兩個權杖計數中顯示。最直接的方式是使用[狀態列指令碼](https://code.claude.com/docs/zh-TW/statusline.md)來監看 `current_usage` 物件:
319 319
320| 欄位 | 意義 |320| 欄位 | 意義 |
321| - | - |321| - | - |
324 324
325高讀取與建立比率表示快取運作良好。如果建立在輪次之間保持高位,表示您的前綴中有所變更。[使快取失效的動作](#actions-that-invalidate-the-cache)章節列出常見原因。325高讀取與建立比率表示快取運作良好。如果建立在輪次之間保持高位,表示您的前綴中有所變更。[使快取失效的動作](#actions-that-invalidate-the-cache)章節列出常見原因。
326 326
327如需每個工作階段的摘要,請執行 `/usage`。在主要對話的第一個回應之後,Claude Code 會在工作階段區塊中新增[`Prompt cache (main)` 行](/docs/zh-TW/costs#prompt-cache-statistics),顯示工作階段的命中率、未命中計數,以及快取目前是否為熱狀態。狀態列指令碼可以從 [`prompt_cache` 物件](/docs/zh-TW/statusline#prompt-cache-fields)讀取相同的數字。兩者都需要 Claude Code v2.1.251 或更新版本。327如需每個工作階段的摘要,請執行 `/usage`。在主要對話的第一個回應之後,Claude Code 會在工作階段區塊中新增[`Prompt cache (main)` 行](https://code.claude.com/docs/zh-TW/costs#prompt-cache-statistics),顯示工作階段的命中率、未命中計數,以及快取目前是否為熱狀態。狀態列指令碼可以從 [`prompt_cache` 物件](https://code.claude.com/docs/zh-TW/statusline#prompt-cache-fields)讀取相同的數字。兩者都需要 Claude Code v2.1.251 或更新版本。
328 328
329當 Claude Code 能夠識別時,`Prompt cache (main)` 行也會命名最後一次未命中的可能原因,例如 `likely cause: tool definitions changed`。可能原因文字需要 Claude Code v2.1.260 或更新版本。329當 Claude Code 能夠識別時,`Prompt cache (main)` 行也會命名最後一次未命中的可能原因,例如 `likely cause: tool definitions changed`。可能原因文字需要 Claude Code v2.1.260 或更新版本。
330 330
331如需整個組織的可見性,OpenTelemetry 匯出器會報告每個使用者和工作階段的快取讀取和建立權杖。請參閱[監控使用情況](/docs/zh-TW/monitoring-usage.md)以取得度量和事件屬性參考。331如需整個組織的可見性,OpenTelemetry 匯出器會報告每個使用者和工作階段的快取讀取和建立權杖。請參閱[監控使用情況](https://code.claude.com/docs/zh-TW/monitoring-usage.md)以取得度量和事件屬性參考。
332 332
333## 子代理與快取333## 子代理與快取
334 334
335[子代理](/docs/zh-TW/sub-agents.md)會以自己的系統提示和工具集開始新的對話,與父代理分開。它的第一個請求不會讀取父代理的快取,因為兩個前綴不同,並且它會在自己的轉換過程中預熱自己的快取。子代理位於主對話[TTL 時間桶](#which-ttl-each-request-gets)之外,因此即使在訂閱上也能獲得五分鐘,直到您[選擇更長的時間](#choose-the-ttl-yourself)。335[子代理](https://code.claude.com/docs/zh-TW/sub-agents.md)會以自己的系統提示和工具集開始新的對話,與父代理分開。它的第一個請求不會讀取父代理的快取,因為兩個前綴不同,並且它會在自己的轉換過程中預熱自己的快取。子代理位於主對話[TTL 時間桶](#which-ttl-each-request-gets)之外,因此即使在訂閱上也能獲得五分鐘,直到您[選擇更長的時間](#choose-the-ttl-yourself)。
336 336
337父代理的快取不受影響。從父代理的角度來看,子代理的呼叫和結果會附加到對話中,保持父代理的前綴完整。337父代理的快取不受影響。從父代理的角度來看,子代理的呼叫和結果會附加到對話中,保持父代理的前綴完整。
338 338
339相比之下,[分支](/docs/zh-TW/sub-agents.md#fork-the-current-conversation)會完全繼承父代理的系統提示、工具和對話歷史,因此它的第一個請求會讀取父代理的快取。339相比之下,[分支](https://code.claude.com/docs/zh-TW/sub-agents.md#fork-the-current-conversation)會完全繼承父代理的系統提示、工具和對話歷史,因此它的第一個請求會讀取父代理的快取。
340 340
341其他請求也可以讀取較早請求快取的前綴:341其他請求也可以讀取較早請求快取的前綴:
342 342
343* **工作階段副本**:您[使用 `/fork` 複製的工作階段](/docs/zh-TW/agent-view#copy-the-session-with-%2Ffork)會在複製的對話末尾收到其隔離指令作為訊息,因此原始對話建立的快取保持完整。343* **工作階段副本**:您[使用 `/fork` 複製的工作階段](https://code.claude.com/docs/zh-TW/agent-view#copy-the-session-with-%2Ffork)會在複製的對話末尾收到其隔離指令作為訊息,因此原始對話建立的快取保持完整。
344* **壓縮**:[壓縮對話](#compacting-the-conversation)中描述的摘要化呼叫使用相同的前綴共享方法。344* **壓縮**:[壓縮對話](#compacting-the-conversation)中描述的摘要化呼叫使用相同的前綴共享方法。
345* **已恢復的子代理**:當 Claude [恢復子代理](/docs/zh-TW/sub-agents.md#resume-subagents)時,已恢復執行的第一個請求可以讀取原始執行預熱的快取。345* **已恢復的子代理**:當 Claude [恢復子代理](https://code.claude.com/docs/zh-TW/sub-agents.md#resume-subagents)時,已恢復執行的第一個請求可以讀取原始執行預熱的快取。
346* **工作流扇出**:在[工作流扇出](/docs/zh-TW/workflows.md#prompt-caching-in-a-fan-out)中,Claude Code 預設會將除第一個代理外的所有代理保留最多 5 秒,因此它們的第一個請求可以讀取第一個代理快取的前綴。346* **工作流扇出**:在[工作流扇出](https://code.claude.com/docs/zh-TW/workflows.md#prompt-caching-in-a-fan-out)中,Claude Code 預設會將除第一個代理外的所有代理保留最多 5 秒,因此它們的第一個請求可以讀取第一個代理快取的前綴。
347 347
348## 停用 prompt caching348## 停用 prompt caching
349 349
365 365
366`DISABLE_PROMPT_CACHING_SONNET` 和 `DISABLE_PROMPT_CACHING_OPUS` 各自適用於 `sonnet` 或 `opus` 別名解析到的模型。如果您將任何其他 Sonnet 或 Opus 模型 ID 設定為主要模型,該模型會保持 caching。例如,在 `claude-sonnet-5` 上的工作階段會保持 caching,而 `sonnet` 解析到 `claude-sonnet-5-5`。若要停用該模型的 caching,請設定 `DISABLE_PROMPT_CACHING`。366`DISABLE_PROMPT_CACHING_SONNET` 和 `DISABLE_PROMPT_CACHING_OPUS` 各自適用於 `sonnet` 或 `opus` 別名解析到的模型。如果您將任何其他 Sonnet 或 Opus 模型 ID 設定為主要模型,該模型會保持 caching。例如,在 `claude-sonnet-5` 上的工作階段會保持 caching,而 `sonnet` 解析到 `claude-sonnet-5-5`。若要停用該模型的 caching,請設定 `DISABLE_PROMPT_CACHING`。
367 367
368若要在整個組織中設定 caching 原則,請將這些變數或 [TTL 變數](#cache-lifetime) 中的任何一個放在[受管設定](/docs/zh-TW/managed-settings.md)的 `env` 區塊中。在正常使用時,請保持 caching 啟用。368若要在整個組織中設定 caching 原則,請將這些變數或 [TTL 變數](#cache-lifetime) 中的任何一個放在[受管設定](https://code.claude.com/docs/zh-TW/managed-settings.md)的 `env` 區塊中。在正常使用時,請保持 caching 啟用。
369 369
370## 相關資源370## 相關資源
371 371
372* [從建立 Claude Code 中學到的課程:Prompt caching 就是一切](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything):Plan Mode、延遲工具加載和壓縮的設計基本原理372* [從建立 Claude Code 中學到的課程:Prompt caching 就是一切](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything):Plan Mode、延遲工具加載和壓縮的設計基本原理
373* [探索上下文視窗](/docs/zh-TW/context-window.md):什麼加載到上下文以及何時加載373* [探索上下文視窗](https://code.claude.com/docs/zh-TW/context-window.md):什麼加載到上下文以及何時加載
374* [減少令牌使用](/docs/zh-TW/costs.md#reduce-token-usage):超越快取的策略,用於管理上下文大小374* [減少令牌使用](https://code.claude.com/docs/zh-TW/costs.md#reduce-token-usage):超越快取的策略,用於管理上下文大小
375* [追蹤和減少成本](/docs/zh-TW/agent-sdk/cost-tracking.md):Agent SDK 呼叫者的快取令牌追蹤和 TTL 配置375* [追蹤和減少成本](https://code.claude.com/docs/zh-TW/agent-sdk/cost-tracking.md):Agent SDK 呼叫者的快取令牌追蹤和 TTL 配置
376* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching):基礎 API 機制、中斷點和定價376* [Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching):基礎 API 機制、中斷點和定價