SpyBara
Go Premium

Documentation 2026-06-09 06:34 UTC to 2026-06-10 23:57 UTC

139 files changed +14,632 −5,088. View all changes and history on the product overview
2026
Tue 30 23:02 Mon 29 23:02 Sat 27 01:01 Fri 26 23:00 Thu 25 23:58 Wed 24 22:02 Tue 23 22:00 Mon 22 23:59 Fri 19 22:58 Thu 18 22:00 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

admin-setup.md +5 −3

Details

66受管設定可以鎖定工具、沙箱執行、限制 MCP 伺服器和外掛程式來源,以及控制哪些 hooks 執行。每一行都是一個控制表面,具有驅動它的設定鍵。66受管設定可以鎖定工具、沙箱執行、限制 MCP 伺服器和外掛程式來源,以及控制哪些 hooks 執行。每一行都是一個控制表面,具有驅動它的設定鍵。

67 67 

68| 控制 | 它的作用 | 關鍵設定 |68| 控制 | 它的作用 | 關鍵設定 |

69| :---------------------------------------------------------------------------------------- | :--------------------------------------------- | :--------------------------------------------------------------------------- |69| :---------------------------------------------------------------------------------------- | :--------------------------------------------------------- | :---------------------------------------------------------------------------------------------- |

70| [Permission rules](/zh-TW/permissions) | 允許、詢問或拒絕特定工具和命令 | `permissions.allow`、`permissions.deny` |70| [Permission rules](/zh-TW/permissions) | 允許、詢問或拒絕特定工具和命令 | `permissions.allow`、`permissions.deny` |

71| [Permission lockdown](/zh-TW/permissions#managed-only-settings) | 僅受管權限規則適用;禁用 `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`、`permissions.disableBypassPermissionsMode` |71| [Permission lockdown](/zh-TW/permissions#managed-only-settings) | 僅受管權限規則適用;禁用 `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`、`permissions.disableBypassPermissionsMode` |

72| [Sandboxing](/zh-TW/sandboxing) | 作業系統級別的檔案系統和網路隔離,具有網域允許清單 | `sandbox.enabled`、`sandbox.network.allowedDomains` |72| [Sandboxing](/zh-TW/sandboxing) | 作業系統級別的檔案系統和網路隔離,具有網域允許清單 | `sandbox.enabled`、`sandbox.network.allowedDomains` |

73| [Managed policy CLAUDE.md](/zh-TW/memory#deploy-organization-wide-claude-md) | 在每個會話中載入的組織範圍指令,無法排除 | 受管政策路徑中的檔案 |73| [Managed policy CLAUDE.md](/zh-TW/memory#deploy-organization-wide-claude-md) | 在每個會話中載入的組織範圍指令,無法排除 | 受管政策路徑中的檔案 |

74| [MCP server control](/zh-TW/mcp#managed-mcp-configuration) | 限制使用者可以新增或連接的 MCP 伺服器 | `allowedMcpServers`、`deniedMcpServers`、`allowManagedMcpServersOnly` |74| [MCP server control](/zh-TW/managed-mcp) | 限制使用者可以新增或連接的 MCP 伺服器,或部署固定集合 | `allowedMcpServers`、`deniedMcpServers`、`allowManagedMcpServersOnly`,或已部署的 `managed-mcp.json` 檔案 |

75| [Plugin marketplace control](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) | 限制使用者可以新增和安裝的市場來源 | `strictKnownMarketplaces`、`blockedMarketplaces` |75| [Plugin marketplace control](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) | 限制使用者可以新增和安裝的市場來源 | `strictKnownMarketplaces`、`blockedMarketplaces` |

76| [Customization lockdown](/zh-TW/settings#strictpluginonlycustomization) | 阻止 skills、agents、hooks 和 MCP 伺服器來自使用者和專案來源,使其只能來自外掛程式或受管設定 | `strictPluginOnlyCustomization` |

76| [Hook restrictions](/zh-TW/settings#hook-configuration) | 僅受管 hooks 載入;限制 HTTP hook URL | `allowManagedHooksOnly`、`allowedHttpHookUrls` |77| [Hook restrictions](/zh-TW/settings#hook-configuration) | 僅受管 hooks 載入;限制 HTTP hook URL | `allowManagedHooksOnly`、`allowedHttpHookUrls` |

77| [Disable agent view](/zh-TW/agent-view#how-background-sessions-are-hosted) | 關閉 `claude agents`、`--bg`、`/background` 和隨選監督員 | `disableAgentView` |78| [Disable agent view](/zh-TW/agent-view#how-background-sessions-are-hosted) | 關閉 `claude agents`、`--bg`、`/background` 和隨選監督員 | `disableAgentView` |

78| [Version floor](/zh-TW/settings) | 防止自動更新安裝低於組織範圍最小值的版本 | `minimumVersion` |79| [Version floor](/zh-TW/settings) | 防止自動更新安裝低於組織範圍最小值的版本 | `minimumVersion` |


129 130 

130* [Server-managed settings](/zh-TW/server-managed-settings):從 Claude 管理員控制台傳遞受管政策131* [Server-managed settings](/zh-TW/server-managed-settings):從 Claude 管理員控制台傳遞受管政策

131* [Settings reference](/zh-TW/settings):每個設定鍵、檔案位置和優先級規則132* [Settings reference](/zh-TW/settings):每個設定鍵、檔案位置和優先級規則

133* [Monorepos and large repos](/zh-TW/large-codebases):為部署到 monorepo 的組織提供的每個目錄配置模式

132* [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai)、[Microsoft Foundry](/zh-TW/microsoft-foundry):提供者特定部署134* [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai)、[Microsoft Foundry](/zh-TW/microsoft-foundry):提供者特定部署

133* [Claude 企業管理員指南](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide):SSO、SCIM、座位管理和推出劇本135* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide):SSO、SCIM、座位管理和推出劇本

Details

10 10 

11當您啟動代理程式時,SDK 會執行與 [Claude Code 相同的執行迴圈](/zh-TW/how-claude-code-works#the-agentic-loop):Claude 評估您的提示、呼叫工具採取行動、接收結果,並重複直到任務完成。本頁說明該迴圈內發生的情況,以便您可以有效地建立、除錯和最佳化代理程式。11當您啟動代理程式時,SDK 會執行與 [Claude Code 相同的執行迴圈](/zh-TW/how-claude-code-works#the-agentic-loop):Claude 評估您的提示、呼叫工具採取行動、接收結果,並重複直到任務完成。本頁說明該迴圈內發生的情況,以便您可以有效地建立、除錯和最佳化代理程式。

12 12 

13## 迴圈概覽13<h2 id="the-loop-at-a-glance">

14 迴圈概覽

15</h2>

14 16 

15每個代理程式工作階段都遵循相同的週期:17每個代理程式工作階段都遵循相同的週期:

16 18 


24 26 

25一個快速問題(「這裡有什麼檔案?」)可能需要一到兩個回合的 `Glob` 呼叫和結果回應。一個複雜的任務(「重構驗證模組並更新測試」)可以在許多回合中鏈接數十個工具呼叫,讀取檔案、編輯程式碼和執行測試,Claude 根據每個結果調整其方法。27一個快速問題(「這裡有什麼檔案?」)可能需要一到兩個回合的 `Glob` 呼叫和結果回應。一個複雜的任務(「重構驗證模組並更新測試」)可以在許多回合中鏈接數十個工具呼叫,讀取檔案、編輯程式碼和執行測試,Claude 根據每個結果調整其方法。

26 28 

27## 回合和訊息29<h2 id="turns-and-messages">

30 回合和訊息

31</h2>

28 32 

29回合是迴圈內的一個往返:Claude 產生包含工具呼叫的輸出,SDK 執行這些工具,結果自動回饋給 Claude。這發生在不將控制權交回給您的程式碼的情況下。回合繼續進行,直到 Claude 產生沒有工具呼叫的輸出,此時迴圈結束並傳遞最終結果。33回合是迴圈內的一個往返:Claude 產生包含工具呼叫的輸出,SDK 執行這些工具,結果自動回饋給 Claude。這發生在不將控制權交回給您的程式碼的情況下。回合繼續進行,直到 Claude 產生沒有工具呼叫的輸出,此時迴圈結束並傳遞最終結果。

30 34 


43 47 

44沒有限制,迴圈會執行到 Claude 自己完成為止,這對於範圍明確的任務很好,但對於開放式提示(「改進此程式碼庫」)可能會執行很長時間。設定預算是生產代理程式的好預設值。請參閱下面的 [回合和預算](#turns-and-budget) 以了解選項參考。48沒有限制,迴圈會執行到 Claude 自己完成為止,這對於範圍明確的任務很好,但對於開放式提示(「改進此程式碼庫」)可能會執行很長時間。設定預算是生產代理程式的好預設值。請參閱下面的 [回合和預算](#turns-and-budget) 以了解選項參考。

45 49 

46## 訊息類型50<h2 id="message-types">

51 訊息類型

52</h2>

47 53 

48當迴圈執行時,SDK 會產生一串訊息。每個訊息都帶有一個類型,告訴您它來自迴圈的哪個階段。五個核心類型是:54當迴圈執行時,SDK 會產生一串訊息。每個訊息都帶有一個類型,告訴您它來自迴圈的哪個階段。五個核心類型是:

49 55 


55 61 

56這五種類型涵蓋了兩個 SDK 中完整的代理程式迴圈生命週期。TypeScript SDK 還會產生額外的可觀測性事件(hook 事件、工具進度、速率限制、任務通知),提供額外詳細資訊,但不需要驅動迴圈。請參閱 [Python 訊息類型參考](/zh-TW/agent-sdk/python#message-types) 和 [TypeScript 訊息類型參考](/zh-TW/agent-sdk/typescript#message-types) 以了解完整清單。62這五種類型涵蓋了兩個 SDK 中完整的代理程式迴圈生命週期。TypeScript SDK 還會產生額外的可觀測性事件(hook 事件、工具進度、速率限制、任務通知),提供額外詳細資訊,但不需要驅動迴圈。請參閱 [Python 訊息類型參考](/zh-TW/agent-sdk/python#message-types) 和 [TypeScript 訊息類型參考](/zh-TW/agent-sdk/typescript#message-types) 以了解完整清單。

57 63 

58### 處理訊息64<h3 id="handle-messages">

65 處理訊息

66</h3>

59 67 

60您處理哪些訊息取決於您正在建立的內容:68您處理哪些訊息取決於您正在建立的內容:

61 69 


102 </CodeGroup>110 </CodeGroup>

103</Accordion>111</Accordion>

104 112 

105## 工具執行113<h2 id="tool-execution">

114 工具執行

115</h2>

106 116 

107工具讓您的代理程式能夠採取行動。沒有工具,Claude 只能以文字回應。有了工具,Claude 可以讀取檔案、執行命令、搜尋程式碼並與外部服務互動。117工具讓您的代理程式能夠採取行動。沒有工具,Claude 只能以文字回應。有了工具,Claude 可以讀取檔案、執行命令、搜尋程式碼並與外部服務互動。

108 118 

109### 內建工具119<h3 id="built-in-tools">

120 內建工具

121</h3>

110 122 

111SDK 包含與 Claude Code 相同的工具:123SDK 包含與 Claude Code 相同的工具:

112 124 


125* **使用 [自訂工具處理程式](/zh-TW/agent-sdk/custom-tools) 定義自訂工具**137* **使用 [自訂工具處理程式](/zh-TW/agent-sdk/custom-tools) 定義自訂工具**

126* **透過 [設定來源](/zh-TW/agent-sdk/claude-code-features) 加載專案技能**以實現可重複使用的工作流程138* **透過 [設定來源](/zh-TW/agent-sdk/claude-code-features) 加載專案技能**以實現可重複使用的工作流程

127 139 

128### 工具權限140<h3 id="tool-permissions">

141 工具權限

142</h3>

129 143 

130Claude 根據任務決定呼叫哪些工具,但您控制這些呼叫是否允許執行。您可以自動批准特定工具、完全阻止其他工具,或要求對所有工具進行批准。三個選項一起工作以確定運行的內容:144Claude 根據任務決定呼叫哪些工具,但您控制這些呼叫是否允許執行。您可以自動批准特定工具、完全阻止其他工具,或要求對所有工具進行批准。三個選項一起工作以確定運行的內容:

131 145 


137 151 

138當工具被拒絕時,Claude 會收到一條拒絕訊息作為工具結果,通常會嘗試不同的方法或報告它無法繼續。152當工具被拒絕時,Claude 會收到一條拒絕訊息作為工具結果,通常會嘗試不同的方法或報告它無法繼續。

139 153 

140### 平行工具執行154<h3 id="parallel-tool-execution">

155 平行工具執行

156</h3>

141 157 

142當 Claude 在單個回合中要求多個工具呼叫時,兩個 SDK 可以根據工具同時或順序執行它們。唯讀工具(如 `Read`、`Glob`、`Grep` 和標記為唯讀的 MCP 工具)可以同時執行。修改狀態的工具(如 `Edit`、`Write` 和 `Bash`)順序執行以避免衝突。158當 Claude 在單個回合中要求多個工具呼叫時,兩個 SDK 可以根據工具同時或順序執行它們。唯讀工具(如 `Read`、`Glob`、`Grep` 和標記為唯讀的 MCP 工具)可以同時執行。修改狀態的工具(如 `Edit`、`Write` 和 `Bash`)順序執行以避免衝突。

143 159 

144自訂工具預設為順序執行。要為自訂工具啟用平行執行,請在其註釋中設定 `readOnlyHint`。[TypeScript](/zh-TW/agent-sdk/typescript#tool) 和 [Python](/zh-TW/agent-sdk/python#tool) SDK 都使用 MCP SDK 中的此欄位名稱。160自訂工具預設為順序執行。要為自訂工具啟用平行執行,請在其註釋中設定 `readOnlyHint`。[TypeScript](/zh-TW/agent-sdk/typescript#tool) 和 [Python](/zh-TW/agent-sdk/python#tool) SDK 都使用 MCP SDK 中的此欄位名稱。

145 161 

146## 控制迴圈如何執行162<h2 id="control-how-the-loop-runs">

163 控制迴圈如何執行

164</h2>

147 165 

148您可以限制迴圈執行的回合數、成本、Claude 推理的深度,以及工具是否需要在執行前獲得批准。所有這些都是 [`ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions)(Python)/ [`Options`](/zh-TW/agent-sdk/typescript#options)(TypeScript)上的欄位。166您可以限制迴圈執行的回合數、成本、Claude 推理的深度,以及工具是否需要在執行前獲得批准。所有這些都是 [`ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions)(Python)/ [`Options`](/zh-TW/agent-sdk/typescript#options)(TypeScript)上的欄位。

149 167 

150### 回合和預算168<h3 id="turns-and-budget">

169 回合和預算

170</h3>

151 171 

152| 選項 | 它控制什麼 | 預設值 |172| 選項 | 它控制什麼 | 預設值 |

153| :-------------------------------------- | :--------- | :-- |173| :-------------------------------------- | :--------- | :-- |


156 176 

157當達到任一限制時,SDK 會返回一個 `ResultMessage`,其中包含相應的錯誤子類型(`error_max_turns` 或 `error_max_budget_usd`)。請參閱 [處理結果](#handle-the-result) 以了解如何檢查這些子類型,以及 [`ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions) / [`Options`](/zh-TW/agent-sdk/typescript#options) 以了解語法。177當達到任一限制時,SDK 會返回一個 `ResultMessage`,其中包含相應的錯誤子類型(`error_max_turns` 或 `error_max_budget_usd`)。請參閱 [處理結果](#handle-the-result) 以了解如何檢查這些子類型,以及 [`ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions) / [`Options`](/zh-TW/agent-sdk/typescript#options) 以了解語法。

158 178 

159### 努力等級179<h3 id="effort-level">

180 努力等級

181</h3>

160 182 

161`effort` 選項控制 Claude 應用多少推理。較低的努力等級每個回合使用更少的代幣並降低成本。並非所有模型都支援努力參數。請參閱 [努力](https://platform.claude.com/docs/en/build-with-claude/effort) 以了解哪些模型支援它。183`effort` 選項控制 Claude 應用多少推理。較低的努力等級每個回合使用更少的代幣並降低成本。並非所有模型都支援努力參數。請參閱 [努力](https://platform.claude.com/docs/en/build-with-claude/effort) 以了解哪些模型支援它。

162 184 


176 198 

177對於執行簡單、範圍明確的任務(如列出檔案或執行單個 grep)的代理程式,使用較低的努力來降低成本和延遲。在頂級 `query()` 選項中設定 `effort` 以用於整個工作階段,或在 [`AgentDefinition`](/zh-TW/agent-sdk/subagents#agentdefinition-configuration) 上使用 `effort` 欄位以每個子代理程式為基礎覆蓋工作階段等級。199對於執行簡單、範圍明確的任務(如列出檔案或執行單個 grep)的代理程式,使用較低的努力來降低成本和延遲。在頂級 `query()` 選項中設定 `effort` 以用於整個工作階段,或在 [`AgentDefinition`](/zh-TW/agent-sdk/subagents#agentdefinition-configuration) 上使用 `effort` 欄位以每個子代理程式為基礎覆蓋工作階段等級。

178 200 

179### 權限模式201<h3 id="permission-mode">

202 權限模式

203</h3>

180 204 

181權限模式選項(Python 中的 `permission_mode`、TypeScript 中的 `permissionMode`)控制代理程式是否在使用工具前要求批准:205權限模式選項(Python 中的 `permission_mode`、TypeScript 中的 `permissionMode`)控制代理程式是否在使用工具前要求批准:

182 206 


191 215 

192對於互動式應用程式,使用 `"default"` 和工具批准回呼來顯示批准提示。對於開發機器上的自主代理程式,`"acceptEdits"` 自動批准檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等),同時仍然在允許規則後面限制其他 `Bash` 命令。為 CI、容器或其他隔離環境保留 `"bypassPermissions"`。請參閱 [權限](/zh-TW/agent-sdk/permissions) 以了解完整詳細資訊。216對於互動式應用程式,使用 `"default"` 和工具批准回呼來顯示批准提示。對於開發機器上的自主代理程式,`"acceptEdits"` 自動批准檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等),同時仍然在允許規則後面限制其他 `Bash` 命令。為 CI、容器或其他隔離環境保留 `"bypassPermissions"`。請參閱 [權限](/zh-TW/agent-sdk/permissions) 以了解完整詳細資訊。

193 217 

194### 模型218<h3 id="model">

219 模型

220</h3>

195 221 

196如果您不設定 `model`,SDK 會使用 Claude Code 的預設值,這取決於您的驗證方法和訂閱。明確設定它(例如,`model="claude-sonnet-4-6"`)以固定特定模型或使用較小的模型以獲得更快、更便宜的代理程式。請參閱 [模型](https://platform.claude.com/docs/en/about-claude/models) 以了解可用的 ID。222如果您不設定 `model`,SDK 會使用 Claude Code 的預設值,這取決於您的驗證方法和訂閱。明確設定它(例如,`model="claude-sonnet-4-6"`)以固定特定模型或使用較小的模型以獲得更快、更便宜的代理程式。請參閱 [模型](https://platform.claude.com/docs/en/about-claude/models) 以了解可用的 ID。

197 223 

198## 上下文視窗224<h2 id="the-context-window">

225 上下文視窗

226</h2>

199 227 

200上下文視窗是工作階段期間可用於 Claude 的資訊總量。它不會在工作階段內的回合之間重置。所有內容都會累積:系統提示、工具定義、對話歷史記錄、工具輸入和工具輸出。在回合之間保持相同的內容(系統提示、工具定義、CLAUDE.md)會自動進行 [提示快取](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching),這會減少重複前綴的成本和延遲。228上下文視窗是工作階段期間可用於 Claude 的資訊總量。它不會在工作階段內的回合之間重置。所有內容都會累積:系統提示、工具定義、對話歷史記錄、工具輸入和工具輸出。在回合之間保持相同的內容(系統提示、工具定義、CLAUDE.md)會自動進行 [提示快取](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching),這會減少重複前綴的成本和延遲。

201 229 

202### 什麼消耗上下文230<h3 id="what-consumes-context">

231 什麼消耗上下文

232</h3>

203 233 

204以下是每個元件如何影響 SDK 中上下文的方式:234以下是每個元件如何影響 SDK 中上下文的方式:

205 235 


213 243 

214大型工具輸出消耗大量上下文。讀取大檔案或執行具有詳細輸出的命令可以在單個回合中使用數千個代幣。上下文在回合中累積,因此具有許多工具呼叫的較長工作階段比短工作階段建立更多上下文。244大型工具輸出消耗大量上下文。讀取大檔案或執行具有詳細輸出的命令可以在單個回合中使用數千個代幣。上下文在回合中累積,因此具有許多工具呼叫的較長工作階段比短工作階段建立更多上下文。

215 245 

216### 自動壓縮246<h3 id="automatic-compaction">

247 自動壓縮

248</h3>

217 249 

218當上下文視窗接近其限制時,SDK 會自動壓縮對話:它總結較舊的歷史記錄以釋放空間,保持您最近的交換和關鍵決定完整。SDK 在串流中發出一個 `type: "system"` 和 `subtype: "compact_boundary"` 的訊息(在 Python 中這是一個 `SystemMessage`;在 TypeScript 中它是一個單獨的 `SDKCompactBoundaryMessage` 類型)。250當上下文視窗接近其限制時,SDK 會自動壓縮對話:它總結較舊的歷史記錄以釋放空間,保持您最近的交換和關鍵決定完整。SDK 在串流中發出一個 `type: "system"` 和 `subtype: "compact_boundary"` 的訊息(在 Python 中這是一個 `SystemMessage`;在 TypeScript 中它是一個單獨的 `SDKCompactBoundaryMessage` 類型)。

219 251 


223 255 

224* **CLAUDE.md 中的摘要指示:** 壓縮器像任何其他上下文一樣讀取您的 CLAUDE.md,因此您可以包含一個部分,告訴它在摘要時要保留什麼。部分標題是自由格式的(不是魔法字串);壓縮器根據意圖匹配。256* **CLAUDE.md 中的摘要指示:** 壓縮器像任何其他上下文一樣讀取您的 CLAUDE.md,因此您可以包含一個部分,告訴它在摘要時要保留什麼。部分標題是自由格式的(不是魔法字串);壓縮器根據意圖匹配。

225* **`PreCompact` hook:** 在壓縮發生前執行自訂邏輯,例如存檔完整成績單。hook 接收一個 `trigger` 欄位(`manual` 或 `auto`)。請參閱 [hooks](/zh-TW/agent-sdk/hooks)。257* **`PreCompact` hook:** 在壓縮發生前執行自訂邏輯,例如存檔完整成績單。hook 接收一個 `trigger` 欄位(`manual` 或 `auto`)。請參閱 [hooks](/zh-TW/agent-sdk/hooks)。

226* **手動壓縮:** 將 `/compact` 作為提示字串發送以按需觸發壓縮。(以這種方式發送的斜線命令是 SDK 輸入,而不是僅限 CLI 的快捷方式。請參閱 [SDK 中的斜線命令](/zh-TW/agent-sdk/slash-commands)。258* **手動壓縮:** 將 `/compact` 作為提示字串發送以按需觸發壓縮。以這種方式發送的命令是 SDK 輸入,而不是僅限 CLI 的快捷方式。請參閱 [SDK 中的命令](/zh-TW/agent-sdk/slash-commands)。

227 259 

228<Accordion title="範例:CLAUDE.md 中的摘要指示">260<Accordion title="範例:CLAUDE.md 中的摘要指示">

229 將一個部分添加到您的專案的 CLAUDE.md,告訴壓縮器要保留什麼。標題名稱不是特殊的;使用任何清晰的標籤。261 將一個部分添加到您的專案的 CLAUDE.md,告訴壓縮器要保留什麼。標題名稱不是特殊的;使用任何清晰的標籤。


239 ```271 ```

240</Accordion>272</Accordion>

241 273 

242### 保持上下文高效274<h3 id="keep-context-efficient">

275 保持上下文高效

276</h3>

243 277 

244長時間執行代理程式的幾個策略:278長時間執行代理程式的幾個策略:

245 279 


250 284 

251有關每個功能上下文成本的詳細分解,請參閱 [了解上下文成本](/zh-TW/features-overview#understand-context-costs)。285有關每個功能上下文成本的詳細分解,請參閱 [了解上下文成本](/zh-TW/features-overview#understand-context-costs)。

252 286 

253## 工作階段和連續性287<h2 id="sessions-and-continuity">

288 工作階段和連續性

289</h2>

254 290 

255與 SDK 的每次互動都會建立或繼續一個工作階段。從 `ResultMessage.session_id`(在兩個 SDK 中都可用)捕獲工作階段 ID 以稍後恢復。TypeScript SDK 也將其公開為初始化 `SystemMessage` 上的直接欄位;在 Python 中,它嵌套在 `SystemMessage.data` 中。291與 SDK 的每次互動都會建立或繼續一個工作階段。從 `ResultMessage.session_id`(在兩個 SDK 中都可用)捕獲工作階段 ID 以稍後恢復。TypeScript SDK 也將其公開為初始化 `SystemMessage` 上的直接欄位;在 Python 中,它嵌套在 `SystemMessage.data` 中。

256 292 


262 在 Python 中,`ClaudeSDKClient` 在多個呼叫中自動處理工作階段 ID。請參閱 [Python SDK 參考](/zh-TW/agent-sdk/python#choosing-between-query-and-claudesdkclient) 以了解詳細資訊。298 在 Python 中,`ClaudeSDKClient` 在多個呼叫中自動處理工作階段 ID。請參閱 [Python SDK 參考](/zh-TW/agent-sdk/python#choosing-between-query-and-claudesdkclient) 以了解詳細資訊。

263</Note>299</Note>

264 300 

265## 處理結果301<h2 id="handle-the-result">

302 處理結果

303</h2>

266 304 

267當迴圈結束時,`ResultMessage` 告訴您發生了什麼並給您輸出。`subtype` 欄位(在兩個 SDK 中都可用)是檢查終止狀態的主要方式。305當迴圈結束時,`ResultMessage` 告訴您發生了什麼並給您輸出。`subtype` 欄位(在兩個 SDK 中都可用)是檢查終止狀態的主要方式。

268 306 


278 316 

279結果還包括一個 `stop_reason` 欄位(TypeScript 中的 `string | null`、Python 中的 `str | None`),指示模型為什麼在最後一個回合停止生成。常見值是 `end_turn`(模型正常完成)、`max_tokens`(達到輸出代幣限制)和 `refusal`(模型拒絕了請求)。在錯誤結果子類型上,`stop_reason` 帶有迴圈結束前最後一個助手回應的值。要檢測拒絕,請檢查 `stop_reason === "refusal"`(TypeScript)或 `stop_reason == "refusal"`(Python)。請參閱 [`SDKResultMessage`](/zh-TW/agent-sdk/typescript#sdkresultmessage)(TypeScript)或 [`ResultMessage`](/zh-TW/agent-sdk/python#resultmessage)(Python)以了解完整類型。317結果還包括一個 `stop_reason` 欄位(TypeScript 中的 `string | null`、Python 中的 `str | None`),指示模型為什麼在最後一個回合停止生成。常見值是 `end_turn`(模型正常完成)、`max_tokens`(達到輸出代幣限制)和 `refusal`(模型拒絕了請求)。在錯誤結果子類型上,`stop_reason` 帶有迴圈結束前最後一個助手回應的值。要檢測拒絕,請檢查 `stop_reason === "refusal"`(TypeScript)或 `stop_reason == "refusal"`(Python)。請參閱 [`SDKResultMessage`](/zh-TW/agent-sdk/typescript#sdkresultmessage)(TypeScript)或 [`ResultMessage`](/zh-TW/agent-sdk/python#resultmessage)(Python)以了解完整類型。

280 318 

281## Hooks319<h2 id="hooks">

320 Hooks

321</h2>

282 322 

283[Hooks](/zh-TW/agent-sdk/hooks) 是在迴圈中的特定點觸發的回呼:在工具執行前、執行後、代理程式完成時等。一些常用的 hooks 是:323[Hooks](/zh-TW/agent-sdk/hooks) 是在迴圈中的特定點觸發的回呼:在工具執行前、執行後、代理程式完成時等。一些常用的 hooks 是:

284 324 


295 335 

296兩個 SDK 都支援上述所有事件。TypeScript SDK 包含 Python 尚不支援的額外事件。請參閱 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks) 以了解完整的事件清單、每個 SDK 的可用性和完整的回呼 API。336兩個 SDK 都支援上述所有事件。TypeScript SDK 包含 Python 尚不支援的額外事件。請參閱 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks) 以了解完整的事件清單、每個 SDK 的可用性和完整的回呼 API。

297 337 

298## 將其全部整合在一起338<h2 id="put-it-all-together">

339 將其全部整合在一起

340</h2>

299 341 

300此範例將本頁的關鍵概念組合成一個修復失敗測試的單個代理程式。它使用允許的工具(自動批准,以便代理程式自主執行)、專案設定和回合和推理努力的安全限制來配置代理程式。當迴圈執行時,它捕獲工作階段 ID 以進行潛在恢復、處理最終結果並列印總成本。342此範例將本頁的關鍵概念組合成一個修復失敗測試的單個代理程式。它使用允許的工具(自動批准,以便代理程式自主執行)、專案設定和回合和推理努力的安全限制來配置代理程式。當迴圈執行時,它捕獲工作階段 ID 以進行潛在恢復、處理最終結果並列印總成本。

301 343 


382 ```424 ```

383</CodeGroup>425</CodeGroup>

384 426 

385## 後續步驟427<h2 id="next-steps">

428 後續步驟

429</h2>

386 430 

387現在您了解了迴圈,以下是根據您正在建立的內容去往何處:431現在您了解了迴圈,以下是根據您正在建立的內容去往何處:

388 432 

Details

12 12 

13如需每項功能的概念概述及何時使用,請參閱 [擴展 Claude Code](/zh-TW/features-overview)。13如需每項功能的概念概述及何時使用,請參閱 [擴展 Claude Code](/zh-TW/features-overview)。

14 14 

15## 使用 settingSources 控制檔案系統設定15<h2 id="control-filesystem-settings-with-settingsources">

16 使用 settingSources 控制檔案系統設定

17</h2>

16 18 

17設定來源選項(Python 中的 [`setting_sources`](/zh-TW/agent-sdk/python#claudeagentoptions)、TypeScript 中的 [`settingSources`](/zh-TW/agent-sdk/typescript#settingsource))控制 SDK 載入哪些基於檔案系統的設定。傳遞明確清單以選擇加入特定來源,或傳遞空陣列以停用使用者、專案和本機設定。19設定來源選項(Python 中的 [`setting_sources`](/zh-TW/agent-sdk/python#claudeagentoptions)、TypeScript 中的 [`settingSources`](/zh-TW/agent-sdk/typescript#settingsource))控制 SDK 載入哪些基於檔案系統的設定。傳遞明確清單以選擇加入特定來源,或傳遞空陣列以停用使用者、專案和本機設定。

18 20 


77 79 

78`cwd` 選項決定 SDK 在何處尋找專案層級輸入。CLAUDE.md 和 rules 從 `<cwd>` 和每個父目錄載入。Skills 從 `<cwd>` 和每個父目錄直到儲存庫根目錄載入。專案 `settings.json` 和 hooks 僅從 `<cwd>/.claude/` 載入,沒有父目錄回退。80`cwd` 選項決定 SDK 在何處尋找專案層級輸入。CLAUDE.md 和 rules 從 `<cwd>` 和每個父目錄載入。Skills 從 `<cwd>` 和每個父目錄直到儲存庫根目錄載入。專案 `settings.json` 和 hooks 僅從 `<cwd>/.claude/` 載入,沒有父目錄回退。

79 81 

80### settingSources 不控制的內容82<h3 id="what-settingsources-does-not-control">

83 settingSources 不控制的內容

84</h3>

81 85 

82`settingSources` 涵蓋使用者、專案和本機設定。無論其值如何,都會讀取一些輸入:86`settingSources` 涵蓋使用者、專案和本機設定。無論其值如何,都會讀取一些輸入:

83 87 

84| 輸入 | 行為 | 停用方式 |88| 輸入 | 行為 | 停用方式 |

85| :-------------------------------------------- | :--------- | :--------------------------------------------------------------------------------- |89| :------------------------------------------------------------- | :--------------------------------------------------- | :--------------------------------------------------------------------------------- |

86| 受管原則設定 | 主機上存在時始終載入 | 移除受管設定檔 |90| 受管原則設定 | 主機上存在時始終載入 | 移除受管設定檔 |

87| `~/.claude.json` 全域設定 | 始終讀取 | 在 `env` 中使用 `CLAUDE_CONFIG_DIR` 重新定位 |91| `~/.claude.json` 全域設定 | 始終讀取 | 在 `env` 中使用 `CLAUDE_CONFIG_DIR` 重新定位 |

88| `~/.claude/projects/<project>/memory/` 的自動記憶體 | 預設載入到系統提示中 | 在設定中設定 `autoMemoryEnabled: false`,或在 `env` 中設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` |92| `~/.claude/projects/<project>/memory/` 的自動記憶體 | 預設載入到系統提示中 | 在設定中設定 `autoMemoryEnabled: false`,或在 `env` 中設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` |

93| [claude.ai MCP 連接器](/zh-TW/mcp#use-mcp-servers-from-claude-ai) | 當作用中驗證方法是 claude.ai 訂閱時載入。傳遞 `mcpServers: {}` 不會抑制它們 | 設定 `strictMcpConfig: true`,或在 `env` 中設定 `ENABLE_CLAUDEAI_MCP_SERVERS=false` |

89 94 

90<Warning>95<Warning>

91 不要依賴預設 `query()` 選項進行多租戶隔離。因為上述輸入無論 `settingSources` 如何都會被讀取,SDK 程序可能會拾取主機層級設定和每個目錄的記憶體。對於多租戶部署,在其自己的檔案系統中執行每個租戶,並設定 `settingSources: []` 加上在 `env` 中設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`。請參閱 [安全部署](/zh-TW/agent-sdk/secure-deployment)。96 不要依賴預設 `query()` 選項進行多租戶隔離。因為上述輸入無論 `settingSources` 如何都會被讀取,SDK 程序可能會拾取主機層級設定和每個目錄的記憶體。對於多租戶部署,在其自己的檔案系統中執行每個租戶,並設定 `settingSources: []` 加上在 `env` 中設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`。請參閱 [安全部署](/zh-TW/agent-sdk/secure-deployment)。

92</Warning>97</Warning>

93 98 

94## 專案指令(CLAUDE.md 和規則)99<h2 id="project-instructions-claude-md-and-rules">

100 專案指令(CLAUDE.md 和規則)

101</h2>

95 102 

96`CLAUDE.md` 檔案和 `.claude/rules/*.md` 檔案為您的代理提供有關您的專案的持久上下文:編碼慣例、建置命令、架構決策和指令。當 `settingSources` 包含 `"project"`(如上面的範例所示)時,SDK 在工作階段開始時將這些檔案載入到上下文中。代理隨後會遵循您的專案慣例,而無需在每個提示中重複它們。103`CLAUDE.md` 檔案和 `.claude/rules/*.md` 檔案為您的代理提供有關您的專案的持久上下文:編碼慣例、建置命令、架構決策和指令。當 `settingSources` 包含 `"project"`(如上面的範例所示)時,SDK 在工作階段開始時將這些檔案載入到上下文中。代理隨後會遵循您的專案慣例,而無需在每個提示中重複它們。

97 104 

98### CLAUDE.md 載入位置105<h3 id="claude-md-load-locations">

106 CLAUDE.md 載入位置

107</h3>

99 108 

100| 層級 | 位置 | 何時載入 |109| 層級 | 位置 | 何時載入 |

101| :------ | :-------------------------------------------------------- | :------------------------------------------------ |110| :------ | :-------------------------------------------------------- | :------------------------------------------------ |


115 124 

116如需如何結構化和組織 CLAUDE.md 內容的資訊,請參閱 [管理 Claude 的記憶體](/zh-TW/memory)。125如需如何結構化和組織 CLAUDE.md 內容的資訊,請參閱 [管理 Claude 的記憶體](/zh-TW/memory)。

117 126 

118## Skills127<h2 id="skills">

128 Skills

129</h2>

119 130 

120Skills 是 markdown 檔案,為您的代理提供專門知識和可呼叫的工作流程。與 `CLAUDE.md`(每個工作階段都載入)不同,skills 按需載入。代理在啟動時接收 skill 描述,並在相關時載入完整內容。131Skills 是 markdown 檔案,為您的代理提供專門知識和可呼叫的工作流程。與 `CLAUDE.md`(每個工作階段都載入)不同,skills 按需載入。代理在啟動時接收 skill 描述,並在相關時載入完整內容。

121 132 

122Skills 透過 `settingSources` 從檔案系統中發現。當 `query()` 上的 `skills` 選項被省略時,已發現的使用者和專案 skills 會被啟用,且 Skill 工具可用,符合 CLI 行為。若要控制啟用哪些 skills,請將 `skills` 傳遞為 `"all"`、skill 名稱清單或 `[]` 以停用全部。SDK 在設定 `skills` 時會自動啟用 Skill 工具,因此您不需要將其新增至 `allowedTools`。133Skills 透過 `settingSources` 從檔案系統中發現。當 `query()` 上的 `skills` 選項被省略時,已發現的使用者和專案 skills 會被啟用,且 Skill 工具可用,符合 CLI 行為。若要控制啟用哪些 skills,請將 `skills` 傳遞為 `"all"`、skill 名稱清單或 `[]` 以停用全部。 `skills` 被設定時,SDK 會自動將 Skill 工具新增至 `allowedTools`。如果您也傳遞明確的 `tools` 清單,請在該清單中包含 `"Skill"`,以便 Claude 可以呼叫 skills。

123 134 

124<CodeGroup>135<CodeGroup>

125 ```python Python theme={null}136 ```python Python theme={null}


165 176 

166如需建立和使用 skills 的詳細資訊,請參閱 [SDK 中的代理 Skills](/zh-TW/agent-sdk/skills)。177如需建立和使用 skills 的詳細資訊,請參閱 [SDK 中的代理 Skills](/zh-TW/agent-sdk/skills)。

167 178 

168## Hooks179<h2 id="hooks">

180 Hooks

181</h2>

169 182 

170SDK 支援兩種定義 hooks 的方式,它們並行執行:183SDK 支援兩種定義 hooks 的方式,它們並行執行:

171 184 


174 187 

175兩種類型都在相同的 hook 生命週期中執行。如果您已經在專案的 `.claude/settings.json` 中有 hooks,並且您設定 `settingSources: ["project"]`,那些 hooks 會在 SDK 中自動執行,無需額外設定。188兩種類型都在相同的 hook 生命週期中執行。如果您已經在專案的 `.claude/settings.json` 中有 hooks,並且您設定 `settingSources: ["project"]`,那些 hooks 會在 SDK 中自動執行,無需額外設定。

176 189 

177Hook 回呼接收工具輸入並返回決策字典。返回 `{}`(空字典)表示允許工具繼續。返回 `{"decision": "block", "reason": "..."}` 會阻止執行,原因會作為工具結果發送給 Claude。請參閱 [hooks 指南](/zh-TW/agent-sdk/hooks) 以取得完整的回呼簽名和返回型別。190Hook 回呼接收工具輸入並返回決策字典。返回 `{}` 表示允許工具繼續。若要阻止執行,請返回一個 `hookSpecificOutput` 物件,其中包含 `permissionDecision: "deny"` 和 `permissionDecisionReason`。原因會作為工具結果發送給 Claude。頂層的 `decision` 和 `reason` 欄位已針對 `PreToolUse` 棄用。請參閱 [hooks 指南](/zh-TW/agent-sdk/hooks) 以取得完整的回呼簽名和返回型別。

178 191 

179<CodeGroup>192<CodeGroup>

180 ```python Python theme={null}193 ```python Python theme={null}


188 async def audit_bash(input_data, tool_use_id, context):201 async def audit_bash(input_data, tool_use_id, context):

189 command = input_data.get("tool_input", {}).get("command", "")202 command = input_data.get("tool_input", {}).get("command", "")

190 if "rm -rf" in command:203 if "rm -rf" in command:

191 return {"decision": "block", "reason": "Destructive command blocked"}204 return {

205 "hookSpecificOutput": {

206 "hookEventName": "PreToolUse",

207 "permissionDecision": "deny",

208 "permissionDecisionReason": "Destructive command blocked",

209 }

210 }

192 return {} # Empty dict: allow the tool to proceed211 return {} # Empty dict: allow the tool to proceed

193 212 

194 213 


219 if (input.hook_event_name !== "PreToolUse") return {};238 if (input.hook_event_name !== "PreToolUse") return {};

220 const toolInput = input.tool_input as { command?: string };239 const toolInput = input.tool_input as { command?: string };

221 if (toolInput.command?.includes("rm -rf")) {240 if (toolInput.command?.includes("rm -rf")) {

222 return { decision: "block", reason: "Destructive command blocked" };241 return {

242 hookSpecificOutput: {

243 hookEventName: "PreToolUse",

244 permissionDecision: "deny",

245 permissionDecisionReason: "Destructive command blocked",

246 },

247 };

223 }248 }

224 return {}; // Empty object: allow the tool to proceed249 return {}; // Empty object: allow the tool to proceed

225 };250 };


242 ```267 ```

243</CodeGroup>268</CodeGroup>

244 269 

245### 何時使用哪種 hook 類型270<h3 id="when-to-use-which-hook-type">

271 何時使用哪種 hook 類型

272</h3>

246 273 

247| Hook 類型 | 最適合 |274| Hook 類型 | 最適合 |

248| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |275| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

249| **檔案系統**(`settings.json`) | 在 CLI 和 SDK 工作階段之間共享 hooks。支援 `"command"`(shell 指令碼)、`"http"`(POST 到端點)、`"mcp_tool"`(呼叫連接的 MCP 伺服器的工具)、`"prompt"`(LLM 評估提示)和 `"agent"`(生成驗證器代理)。這些在主代理和它生成的任何子代理中執行。 |276| **檔案系統**(`settings.json`) | 在 CLI 和 SDK 工作階段之間共享 hooks。支援 `"command"`(shell 指令碼)、`"http"`(POST 到端點)、`"mcp_tool"`(呼叫連接的 MCP 伺服器的工具)、`"prompt"`(LLM 評估提示)和 `"agent"`(生成驗證器代理)。這些在主代理和它生成的任何子代理中執行。 |

250| **程式設計**(`query()` 中的回呼) | 應用程式特定邏輯;返回結構化決策;進程內整合限制於主工作階段 |277| **程式設計**(`query()` 中的回呼) | 應用程式特定邏輯、結構化決策和進程內整合這些也在子代理內執行回呼接收 `agent_id` 和 `agent_type` 以進行區分。 |

251 278 

252<Note>279<Note>

253 TypeScript SDK 支援超出 Python 的其他 hook 事件,包括 `SessionStart`、`SessionEnd`、`TeammateIdle` 和 `TaskCompleted`。請參閱 [hooks 指南](/zh-TW/agent-sdk/hooks) 以取得完整的事件相容性表。280 TypeScript SDK 支援超出 Python 的其他 hook 事件,包括 `SessionStart`、`SessionEnd`、`TeammateIdle` 和 `TaskCompleted`。請參閱 [hooks 指南](/zh-TW/agent-sdk/hooks) 以取得完整的事件相容性表。


255 282 

256如需程式設計 hooks 的完整詳細資訊,請參閱 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks)。如需檔案系統 hook 語法,請參閱 [Hooks](/zh-TW/hooks)。283如需程式設計 hooks 的完整詳細資訊,請參閱 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks)。如需檔案系統 hook 語法,請參閱 [Hooks](/zh-TW/hooks)。

257 284 

258## 選擇正確的功能285<h2 id="choose-the-right-feature">

286 選擇正確的功能

287</h2>

259 288 

260Agent SDK 為您提供了多種方式來擴展代理的行為。如果您不確定要使用哪一種,此表將常見目標對應到正確的方法。289Agent SDK 為您提供了多種方式來擴展代理的行為。如果您不確定要使用哪一種,此表將常見目標對應到正確的方法。

261 290 


275 304 

276您啟用的每項功能都會增加代理的上下文視窗。如需每項功能的成本以及這些功能如何分層組合,請參閱 [擴展 Claude Code](/zh-TW/features-overview#understand-context-costs)。305您啟用的每項功能都會增加代理的上下文視窗。如需每項功能的成本以及這些功能如何分層組合,請參閱 [擴展 Claude Code](/zh-TW/features-overview#understand-context-costs)。

277 306 

278## 相關資源307<h2 id="related-resources">

308 相關資源

309</h2>

279 310 

280* [擴展 Claude Code](/zh-TW/features-overview):所有擴展功能的概念概述,包含比較表和上下文成本分析311* [擴展 Claude Code](/zh-TW/features-overview):所有擴展功能的概念概述,包含比較表和上下文成本分析

281* [SDK 中的 Skills](/zh-TW/agent-sdk/skills):以程式設計方式使用 skills 的完整指南312* [SDK 中的 Skills](/zh-TW/agent-sdk/skills):以程式設計方式使用 skills 的完整指南

Details

20 使用這些欄位進行開發洞察和大約預算編制。如需權威計費,請使用 [Usage and Cost API](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) 或 [Claude Console](https://platform.claude.com/usage) 中的 Usage 頁面。不要向終端使用者計費或根據這些欄位觸發財務決策。20 使用這些欄位進行開發洞察和大約預算編制。如需權威計費,請使用 [Usage and Cost API](https://platform.claude.com/docs/en/build-with-claude/usage-cost-api) 或 [Claude Console](https://platform.claude.com/usage) 中的 Usage 頁面。不要向終端使用者計費或根據這些欄位觸發財務決策。

21</Warning>21</Warning>

22 22 

23## 了解 token 使用情況23<h2 id="understand-token-usage">

24 了解 token 使用情況

25</h2>

24 26 

25TypeScript 和 Python SDK 使用不同的欄位名稱公開相同的使用資料:27TypeScript 和 Python SDK 使用不同的欄位名稱公開相同的使用資料:

26 28 


31 33 

32成本追蹤取決於理解 SDK 如何限定使用資料的範圍:34成本追蹤取決於理解 SDK 如何限定使用資料的範圍:

33 35 

34* **`query()` 呼叫:** SDK 的 `query()` 函數的一次調用。單次呼叫可能涉及多個步驟(Claude 回應、使用工具、獲取結果、再次回應)。每次呼叫在末尾產生一個 [`result`](/zh-TW/agent-sdk/typescript#sdk-result-message) 訊息。36* **`query()` 呼叫:** SDK 的 `query()` 函數的一次調用。單次呼叫可能涉及多個步驟(Claude 回應、使用工具、獲取結果、再次回應)。每次呼叫在末尾產生一個 [`result`](/zh-TW/agent-sdk/typescript#sdkresultmessage) 訊息。

35* **步驟:** `query()` 呼叫中的單個請求/回應週期。每個步驟產生帶有 token 使用情況的助手訊息。37* **步驟:** `query()` 呼叫中的單個請求/回應週期。每個步驟產生帶有 token 使用情況的助手訊息。

36* **會話:** 由會話 ID 連結的一系列 `query()` 呼叫(使用 `resume` 選項)。會話中的每個 `query()` 呼叫獨立報告其自己的成本。38* **會話:** 由會話 ID 連結的一系列 `query()` 呼叫(使用 `resume` 選項)。會話中的每個 `query()` 呼叫獨立報告其自己的成本。

37 39 


45 </Step>47 </Step>

46 48 

47 <Step title="結果訊息提供累積估計">49 <Step title="結果訊息提供累積估計">

48 當 `query()` 呼叫完成時,SDK 發出一個結果訊息,其中包含 `total_cost_usd` 和累積 `usage`。這在 TypeScript([`SDKResultMessage`](/zh-TW/agent-sdk/typescript#sdk-result-message))和 Python([`ResultMessage`](/zh-TW/agent-sdk/python#result-message))中都可用。如果您進行多個 `query()` 呼叫(例如,在多回合會話中),每個結果只反映該個別呼叫的成本。如果您只需要估計的總計,您可以忽略每步使用情況並讀取此單一值。50 當 `query()` 呼叫完成時,SDK 發出一個結果訊息,其中包含 `total_cost_usd` 和累積 `usage`。這在 TypeScript([`SDKResultMessage`](/zh-TW/agent-sdk/typescript#sdkresultmessage))和 Python([`ResultMessage`](/zh-TW/agent-sdk/python#resultmessage))中都可用。如果您進行多個 `query()` 呼叫(例如,在多回合會話中),每個結果只反映該個別呼叫的成本。如果您只需要估計的總計,您可以忽略每步使用情況並讀取此單一值。

49 </Step>51 </Step>

50</Steps>52</Steps>

51 53 

52## 取得查詢的總成本54<h2 id="get-the-total-cost-of-a-query">

55 取得查詢的總成本

56</h2>

53 57 

54結果訊息([TypeScript](/zh-TW/agent-sdk/typescript#sdk-result-message)、[Python](/zh-TW/agent-sdk/python#result-message))標記 `query()` 呼叫的代理迴圈的結束。它包含 `total_cost_usd`,即該呼叫中所有步驟的累積估計成本。這適用於成功和錯誤結果。如果您使用會話進行多個 `query()` 呼叫,每個結果只反映該個別呼叫的成本。58結果訊息([TypeScript](/zh-TW/agent-sdk/typescript#sdkresultmessage)、[Python](/zh-TW/agent-sdk/python#resultmessage))標記 `query()` 呼叫的代理迴圈的結束。它包含 `total_cost_usd`,即該呼叫中所有步驟的累積估計成本。這適用於成功和錯誤結果。如果您使用會話進行多個 `query()` 呼叫,每個結果只反映該個別呼叫的成本。

55 59 

56以下範例遍歷來自 `query()` 呼叫的訊息流,並在 `result` 訊息到達時列印總成本:60以下範例遍歷來自 `query()` 呼叫的訊息流,並在 `result` 訊息到達時列印總成本:

57 61 


81 ```85 ```

82</CodeGroup>86</CodeGroup>

83 87 

84## 追蹤每步和每個模型的使用情況88<h2 id="track-per-step-and-per-model-usage">

89 追蹤每步和每個模型的使用情況

90</h2>

85 91 

86本節中的範例使用 TypeScript 欄位名稱。在 Python 中,等效欄位是 [`AssistantMessage.usage`](/zh-TW/agent-sdk/python#assistant-message) 和 `AssistantMessage.message_id` 用於每步使用情況,以及 [`ResultMessage.model_usage`](/zh-TW/agent-sdk/python#result-message) 用於每個模型的細分。92本節中的範例使用 TypeScript 欄位名稱。在 Python 中,等效欄位是 [`AssistantMessage.usage`](/zh-TW/agent-sdk/python#assistantmessage) 和 `AssistantMessage.message_id` 用於每步使用情況,以及 [`ResultMessage.model_usage`](/zh-TW/agent-sdk/python#resultmessage) 用於每個模型的細分。

87 93 

88### 追蹤每步使用情況94<h3 id="track-per-step-usage">

95 追蹤每步使用情況

96</h3>

89 97 

90每個助手訊息包含一個嵌套的 `BetaMessage`(通過 `message.message` 存取),具有 `id` 和 `usage` 物件,其中包含 token 計數。當 Claude 並行使用工具時,多個訊息共享相同的 `id` 和相同的使用資料。追蹤您已經計數的 ID,並跳過重複項以避免膨脹的總計。98每個助手訊息包含一個嵌套的 `BetaMessage`(通過 `message.message` 存取),具有 `id` 和 `usage` 物件,其中包含 token 計數。當 Claude 並行使用工具時,多個訊息共享相同的 `id` 和相同的使用資料。追蹤您已經計數的 ID,並跳過重複項以避免膨脹的總計。

91 99 


120console.log(`Output tokens: ${totalOutputTokens}`);128console.log(`Output tokens: ${totalOutputTokens}`);

121```129```

122 130 

123### 按模型細分使用情況131<h3 id="break-down-usage-per-model">

132 按模型細分使用情況

133</h3>

124 134 

125結果訊息包含 [`modelUsage`](/zh-TW/agent-sdk/typescript#model-usage),一個模型名稱到每個模型 token 計數和成本的映射。當您執行多個模型(例如,子代理使用 Haiku,主代理使用 Opus)並想查看 token 的去向時,這很有用。135結果訊息包含 [`modelUsage`](/zh-TW/agent-sdk/typescript#modelusage),一個模型名稱到每個模型 token 計數和成本的映射。當您執行多個模型(例如,子代理使用 Haiku,主代理使用 Opus)並想查看 token 的去向時,這很有用。

126 136 

127以下範例執行查詢並列印每個使用的模型的成本和 token 細分:137以下範例執行查詢並列印每個使用的模型的成本和 token 細分:

128 138 


142}152}

143```153```

144 154 

145## 累積多個呼叫的成本155<h2 id="accumulate-costs-across-multiple-calls">

156 累積多個呼叫的成本

157</h2>

146 158 

147每個 `query()` 呼叫返回其自己的 `total_cost_usd`。SDK 不提供會話級別的總計,因此如果您的應用程式進行多個 `query()` 呼叫(例如,在多回合會話中或跨不同使用者),請自行累積總計。159每個 `query()` 呼叫返回其自己的 `total_cost_usd`。SDK 不提供會話級別的總計,因此如果您的應用程式進行多個 `query()` 呼叫(例如,在多回合會話中或跨不同使用者),請自行累積總計。

148 160 


200 ```212 ```

201</CodeGroup>213</CodeGroup>

202 214 

203## 處理錯誤、快取和 token 差異215<h2 id="handle-errors-caching-and-token-discrepancies">

216 處理錯誤、快取和 token 差異

217</h2>

204 218 

205為了準確的成本追蹤,請考慮失敗的對話、快取 token 定價和偶爾的報告不一致。219為了準確的成本追蹤,請考慮失敗的對話、快取 token 定價和偶爾的報告不一致。

206 220 

207### 解決輸出 token 差異221<h3 id="resolve-output-token-discrepancies">

222 解決輸出 token 差異

223</h3>

208 224 

209在罕見情況下,您可能會觀察到具有相同 ID 的訊息的不同 `output_tokens` 值。當發生這種情況時:225在罕見情況下,您可能會觀察到具有相同 ID 的訊息的不同 `output_tokens` 值。當發生這種情況時:

210 226 


2122. **優先使用結果訊息:** 結果訊息中的 `total_cost_usd` 反映 SDK 在所有步驟中的累積估計,因此比自己求和每步值更可靠。它仍然是一個估計值,可能與您的實際帳單不同。2282. **優先使用結果訊息:** 結果訊息中的 `total_cost_usd` 反映 SDK 在所有步驟中的累積估計,因此比自己求和每步值更可靠。它仍然是一個估計值,可能與您的實際帳單不同。

2133. **報告不一致:** 在 [Claude Code GitHub 儲存庫](https://github.com/anthropics/claude-code/issues) 提交問題。2293. **報告不一致:** 在 [Claude Code GitHub 儲存庫](https://github.com/anthropics/claude-code/issues) 提交問題。

214 230 

215### 追蹤失敗對話的成本231<h3 id="track-costs-on-failed-conversations">

232 追蹤失敗對話的成本

233</h3>

216 234 

217成功和錯誤結果訊息都包含 `usage` 和 `total_cost_usd`。如果對話在中途失敗,您仍然消耗了到失敗點為止的 token。無論其 `subtype` 如何,始終從結果訊息讀取成本資料。235成功和錯誤結果訊息都包含 `usage` 和 `total_cost_usd`。如果對話在中途失敗,您仍然消耗了到失敗點為止的 token。無論其 `subtype` 如何,始終從結果訊息讀取成本資料。

218 236 

219### 追蹤快取 token237<h3 id="track-cache-tokens">

238 追蹤快取 token

239</h3>

220 240 

221Agent SDK 自動使用 [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 來減少重複內容的成本。您不需要自己配置快取。使用物件包含兩個額外的欄位用於快取追蹤:241Agent SDK 自動使用 [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 來減少重複內容的成本。您不需要自己配置快取。使用物件包含兩個額外的欄位用於快取追蹤:

222 242 

223* `cache_creation_input_tokens`:用於建立新快取項目的 token(按比標準輸入 token 更高的費率計費)。243* `cache_creation_input_tokens`:用於建立新快取項目的 token(按比標準輸入 token 更高的費率計費)。

224* `cache_read_input_tokens`:從現有快取項目讀取的 token(按降低的費率計費)。244* `cache_read_input_tokens`:從現有快取項目讀取的 token(按降低的費率計費)。

225 245 

226將這些與 `input_tokens` 分開追蹤以了解快取節省。在 TypeScript 中,這些欄位在 [`Usage`](/zh-TW/agent-sdk/typescript#usage) 物件上輸入。在 Python 中,它們作為 [`ResultMessage.usage`](/zh-TW/agent-sdk/python#result-message) 字典中的鍵出現(例如,`message.usage.get("cache_read_input_tokens", 0)`)。246將這些與 `input_tokens` 分開追蹤以了解快取節省。在 TypeScript 中,這些欄位在 [`Usage`](/zh-TW/agent-sdk/typescript#usage) 物件上輸入。在 Python 中,它們作為 [`ResultMessage.usage`](/zh-TW/agent-sdk/python#resultmessage) 字典中的鍵出現(例如,`message.usage.get("cache_read_input_tokens", 0)`)。

227 247 

228### 將 prompt 快取 TTL 延長至一小時248<h3 id="extend-the-prompt-cache-ttl-to-one-hour">

249 將 prompt 快取 TTL 延長至一小時

250</h3>

229 251 

230當您使用 API 金鑰進行身份驗證或在 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 上執行時,SDK 寫入的快取項目預設使用 5 分鐘的 TTL。如果您的工作負載針對相同的系統提示和上下文執行許多短會話,且它們之間的間隔超過 5 分鐘,快取會在會話之間過期,每個新會話都會支付完整的輸入價格。252當您使用 API 金鑰進行身份驗證或在 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 上執行時,SDK 寫入的快取項目預設使用 5 分鐘的 TTL。如果您的工作負載針對相同的系統提示和上下文執行許多短會話,且它們之間的間隔超過 5 分鐘,快取會在會話之間過期,每個新會話都會支付完整的輸入價格。

231 253 


256 278 

257具有 1 小時 TTL 的快取寫入按比 5 分鐘寫入更高的費率計費,因此啟用此功能會用更高的寫入成本換取更多的快取讀取。有關詳細資訊,請參閱 [prompt caching 定價](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)。Claude 訂閱使用者已自動獲得 1 小時 TTL,不需要設定此變數。279具有 1 小時 TTL 的快取寫入按比 5 分鐘寫入更高的費率計費,因此啟用此功能會用更高的寫入成本換取更多的快取讀取。有關詳細資訊,請參閱 [prompt caching 定價](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)。Claude 訂閱使用者已自動獲得 1 小時 TTL,不需要設定此變數。

258 280 

259## 相關文件281<h2 id="related-documentation">

282 相關文件

283</h2>

260 284 

261* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript) - 完整的 API 文件285* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript) - 完整的 API 文件

262* [SDK 概述](/zh-TW/agent-sdk/overview) - SDK 入門286* [SDK 概述](/zh-TW/agent-sdk/overview) - SDK 入門

Details

10 10 

11本指南涵蓋如何使用輸入結構描述和處理程式定義工具、將它們組合到 MCP 伺服器中、將它們傳遞給 `query`,以及控制 Claude 可以存取哪些工具。它也涵蓋錯誤處理、工具註解,以及傳回非文字內容(如影像)。11本指南涵蓋如何使用輸入結構描述和處理程式定義工具、將它們組合到 MCP 伺服器中、將它們傳遞給 `query`,以及控制 Claude 可以存取哪些工具。它也涵蓋錯誤處理、工具註解,以及傳回非文字內容(如影像)。

12 12 

13## 快速參考13<h2 id="quick-reference">

14 快速參考

15</h2>

14 16 

15| 如果您想要... | 執行此操作 |17| 如果您想要... | 執行此操作 |

16| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |18| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |


24| 傳回機器可讀的 JSON 結果 | 在結果上設定 `structuredContent`。請參閱[傳回結構化資料](#return-structured-data)。 |26| 傳回機器可讀的 JSON 結果 | 在結果上設定 `structuredContent`。請參閱[傳回結構化資料](#return-structured-data)。 |

25| 擴展到許多工具 | 使用[工具搜尋](/zh-TW/agent-sdk/tool-search)按需載入工具。 |27| 擴展到許多工具 | 使用[工具搜尋](/zh-TW/agent-sdk/tool-search)按需載入工具。 |

26 28 

27## 建立自訂工具29<h2 id="create-a-custom-tool">

30 建立自訂工具

31</h2>

28 32 

29工具由四個部分定義,作為 TypeScript 中 [`tool()`](/zh-TW/agent-sdk/typescript#tool) 協助程式或 Python 中 [`@tool`](/zh-TW/agent-sdk/python#tool) 裝飾器的引數傳遞:33工具由四個部分定義,作為 TypeScript 中 [`tool()`](/zh-TW/agent-sdk/typescript#tool) 協助程式或 Python 中 [`@tool`](/zh-TW/agent-sdk/python#tool) 裝飾器的引數傳遞:

30 34 


38 42 

39定義工具後,使用 [`createSdkMcpServer`](/zh-TW/agent-sdk/typescript#createsdkmcpserver)(TypeScript)或 [`create_sdk_mcp_server`](/zh-TW/agent-sdk/python#create_sdk_mcp_server)(Python)將其包裝在伺服器中。伺服器在應用程式內同程序執行,而不是作為單獨的程序。43定義工具後,使用 [`createSdkMcpServer`](/zh-TW/agent-sdk/typescript#createsdkmcpserver)(TypeScript)或 [`create_sdk_mcp_server`](/zh-TW/agent-sdk/python#create_sdk_mcp_server)(Python)將其包裝在伺服器中。伺服器在應用程式內同程序執行,而不是作為單獨的程序。

40 44 

41### 天氣工具範例45<h3 id="weather-tool-example">

46 天氣工具範例

47</h3>

42 48 

43此範例定義 `get_temperature` 工具並將其包裝在 MCP 伺服器中。它只設定工具;若要將其傳遞至 `query` 並執行它,請參閱下面的[呼叫自訂工具](#call-a-custom-tool)。49此範例定義 `get_temperature` 工具並將其包裝在 MCP 伺服器中。它只設定工具;若要將其傳遞至 `query` 並執行它,請參閱下面的[呼叫自訂工具](#call-a-custom-tool)。

44 50 


128 若要使參數成為選用:在 TypeScript 中,將 `.default()` 新增至 Zod 欄位。在 Python 中,字典結構描述將每個鍵視為必需,因此請將參數留出結構描述,在描述字串中提及它,並在處理程式中使用 `args.get()` 讀取它。下面的 [`get_precipitation_chance` 工具](#add-more-tools)顯示兩種模式。134 若要使參數成為選用:在 TypeScript 中,將 `.default()` 新增至 Zod 欄位。在 Python 中,字典結構描述將每個鍵視為必需,因此請將參數留出結構描述,在描述字串中提及它,並在處理程式中使用 `args.get()` 讀取它。下面的 [`get_precipitation_chance` 工具](#add-more-tools)顯示兩種模式。

129</Tip>135</Tip>

130 136 

131### 呼叫自訂工具137<h3 id="call-a-custom-tool">

138 呼叫自訂工具

139</h3>

132 140 

133透過 `mcpServers` 選項將您建立的 MCP 伺服器傳遞至 `query`。`mcpServers` 中的鍵成為每個工具的完全限定名稱中的 `{server_name}` 區段:`mcp__{server_name}__{tool_name}`。在 `allowedTools` 中列出該名稱,以便工具執行而不會出現權限提示。141透過 `mcpServers` 選項將您建立的 MCP 伺服器傳遞至 `query`。`mcpServers` 中的鍵成為每個工具的完全限定名稱中的 `{server_name}` 區段:`mcp__{server_name}__{tool_name}`。在 `allowedTools` 中列出該名稱,以便工具執行而不會出現權限提示。

134 142 


176 ```184 ```

177</CodeGroup>185</CodeGroup>

178 186 

179### 新增更多工具187<h3 id="add-more-tools">

188 新增更多工具

189</h3>

180 190 

181伺服器在其 `tools` 陣列中列出的工具一樣多。如果有多個工具在伺服器上,您可以在 `allowedTools` 中個別列出每個工具,或使用萬用字元 `mcp__weather__*` 來涵蓋伺服器公開的每個工具。191伺服器在其 `tools` 陣列中列出的工具一樣多。如果有多個工具在伺服器上,您可以在 `allowedTools` 中個別列出每個工具,或使用萬用字元 `mcp__weather__*` 來涵蓋伺服器公開的每個工具。

182 192 


265 275 

266此陣列中的每個工具在每個回合都會消耗內容視窗空間。如果您定義了數十個工具,請參閱[工具搜尋](/zh-TW/agent-sdk/tool-search)以改為按需載入它們。276此陣列中的每個工具在每個回合都會消耗內容視窗空間。如果您定義了數十個工具,請參閱[工具搜尋](/zh-TW/agent-sdk/tool-search)以改為按需載入它們。

267 277 

268### 新增工具註解278<h3 id="add-tool-annotations">

279 新增工具註解

280</h3>

269 281 

270[工具註解](https://modelcontextprotocol.io/docs/concepts/tools#tool-annotations)是描述工具行為方式的選用中繼資料。在 TypeScript 中將它們作為 `tool()` 協助程式的第五個引數傳遞,或在 Python 中透過 `@tool` 裝飾器的 `annotations` 關鍵字引數傳遞。所有提示欄位都是布林值。282[工具註解](https://modelcontextprotocol.io/docs/concepts/tools#tool-annotations)是描述工具行為方式的選用中繼資料。在 TypeScript 中將它們作為 `tool()` 協助程式的第五個引數傳遞,或在 Python 中透過 `@tool` 裝飾器的 `annotations` 關鍵字引數傳遞。所有提示欄位都是布林值。

271 283 


310 322 

311請參閱 [TypeScript](/zh-TW/agent-sdk/typescript#toolannotations) 或 [Python](/zh-TW/agent-sdk/python#toolannotations) 參考中的 `ToolAnnotations`。323請參閱 [TypeScript](/zh-TW/agent-sdk/typescript#toolannotations) 或 [Python](/zh-TW/agent-sdk/python#toolannotations) 參考中的 `ToolAnnotations`。

312 324 

313## 控制工具存取325<h2 id="control-tool-access">

326 控制工具存取

327</h2>

314 328 

315[天氣工具範例](#weather-tool-example)註冊了伺服器並在 `allowedTools` 中列出了工具。本節涵蓋工具名稱的構造方式,以及當您有多個工具或想要限制內建工具時如何限制存取。329[天氣工具範例](#weather-tool-example)註冊了伺服器並在 `allowedTools` 中列出了工具。本節涵蓋工具名稱的構造方式,以及當您有多個工具或想要限制內建工具時如何限制存取。

316 330 

317### 工具名稱格式331<h3 id="tool-name-format">

332 工具名稱格式

333</h3>

318 334 

319當 MCP 工具公開給 Claude 時,它們的名稱遵循特定格式:335當 MCP 工具公開給 Claude 時,它們的名稱遵循特定格式:

320 336 

321* 模式:`mcp__{server_name}__{tool_name}`337* 模式:`mcp__{server_name}__{tool_name}`

322* 範例:伺服器 `weather` 中名為 `get_temperature` 的工具變成 `mcp__weather__get_temperature`338* 範例:伺服器 `weather` 中名為 `get_temperature` 的工具變成 `mcp__weather__get_temperature`

323 339 

324### 設定允許的工具340<h3 id="configure-allowed-tools">

341 設定允許的工具

342</h3>

325 343 

326`tools` 選項和允許/不允許清單在不同層級上運作。`tools` 控制哪些內建工具出現在 Claude 的內容中允許和不允許工具清單控制 Claude 嘗試呼叫後是否核准或拒絕呼叫344`tools` 選項和允許/不允許清單影響兩個層級:可用性控制工具是否出現在 Claude 的內容中,權限控制 Claude 嘗試呼叫後是否核准呼叫。`tools` 和裸名稱 `disallowedTools` 項目改變可用性`allowedTools` 和限定範圍的 `disallowedTools` 規則只改變權限

327 345 

328| 選項 | 層級 | 效果 |346| 選項 | 層級 | 效果 |

329| :------------------------ | :-- | :--------------------------------------------------------------------- |347| :------------------------ | :-- | :------------------------------------------------------------------------------------------------------ |

330| `tools: ["Read", "Grep"]` | 可用性 | 只有列出的內建工具在 Claude 的內容中。未列出的內建工具會被移除。MCP 工具不受影響。 |348| `tools: ["Read", "Grep"]` | 可用性 | 只有列出的內建工具在 Claude 的內容中。未列出的內建工具會被移除。MCP 工具不受影響。 |

331| `tools: []` | 可用性 | 所有內建工具都被移除。Claude 只能使用您的 MCP 工具。 |349| `tools: []` | 可用性 | 所有內建工具都被移除。Claude 只能使用您的 MCP 工具。 |

332| 允許的工具 | 權限 | 列出的工具執行時不會出現權限提示。未列出的工具保持可用;呼叫會通過[權限流程](/zh-TW/agent-sdk/permissions)。 |350| 允許的工具 | 權限 | 列出的工具執行時不會出現權限提示。未列出的工具保持可用;呼叫會通過[權限流程](/zh-TW/agent-sdk/permissions)。 |

333| 不允許的工具 | 權限 | 對列出的工具的每次呼叫都被拒絕。工具保留在 Claude 的內容中因此 Claude 可能仍會在呼叫被拒絕之前嘗試它 |351| 不允許的工具 | 兩者 | 裸工具名稱(例如 `"Bash"`)會將工具從 Claude 的內容中移除與從 `tools` 中省略它相同限定範圍的規則(例如 `"Bash(rm *)"`)會將工具保留在內容中,並僅拒絕符合的呼叫。 |

334 352 

335若要限制 Claude 可以使用哪些內建工具請優先使用 `tools` 而不是不允許的工具。從 `tools` 中省略工具會將其從內容中移除,以便 Claude 永遠不會嘗試它;在 `disallowedTools` 中列出它(Python:`disallowed_tools`)會阻止呼叫但保留工具可見,因此 Claude 可能會浪費一個回合嘗試它。請參閱[設定權限](/zh-TW/agent-sdk/permissions)以取得完整的評估順序。353若要完全移除內建工具請從 `tools` 中省略它或在 `disallowedTools` 中列出其裸名稱(Python:`disallowed_tools`);兩者都會將工具保留在內容之外,以便 Claude 永遠不會嘗試它。限定範圍的 `disallowedTools` 規則會阻止符合的呼叫但會將工具保留為可見,因此 Claude 可能會浪費一個回合嘗試它。請參閱[設定權限](/zh-TW/agent-sdk/permissions)以取得完整的評估順序。

336 354 

337## 處理錯誤355<h2 id="handle-errors">

356 處理錯誤

357</h2>

338 358 

339您的處理程式報告錯誤的方式決定代理迴圈是繼續還是停止:359您的處理程式報告錯誤的方式決定代理迴圈是繼續還是停止:

340 360 


437 ```457 ```

438</CodeGroup>458</CodeGroup>

439 459 

440## 傳回影像和資源460<h2 id="return-images-and-resources">

461 傳回影像和資源

462</h2>

441 463 

442工具結果中的 `content` 陣列接受 `text`、`image` 和 `resource` 區塊。您可以在同一回應中混合它們。464工具結果中的 `content` 陣列接受 `text`、`image` 和 `resource` 區塊。您可以在同一回應中混合它們。

443 465 

444### 影像466<h3 id="images">

467 影像

468</h3>

445 469 

446影像區塊以 base64 編碼的方式內聯攜帶影像位元組。沒有 URL 欄位。若要傳回位於 URL 的影像,請在處理程式中擷取它、讀取回應位元組,並在傳回前進行 base64 編碼。結果作為視覺輸入進行處理。470影像區塊以 base64 編碼的方式內聯攜帶影像位元組。沒有 URL 欄位。若要傳回位於 URL 的影像,請在處理程式中擷取它、讀取回應位元組,並在傳回前進行 base64 編碼。結果作為視覺輸入進行處理。

447 471 


504 ```528 ```

505</CodeGroup>529</CodeGroup>

506 530 

507### 資源531<h3 id="resources">

532 資源

533</h3>

508 534 

509資源區塊嵌入由 URI 識別的內容片段。URI 是 Claude 參考的標籤;實際內容位於區塊的 `text` 或 `blob` 欄位中。當您的工具產生稍後按名稱尋址有意義的內容時使用此項,例如生成的檔案或來自外部系統的記錄。535資源區塊嵌入由 URI 識別的內容片段。URI 是 Claude 參考的標籤;實際內容位於區塊的 `text` 或 `blob` 欄位中。當您的工具產生稍後按名稱尋址有意義的內容時使用此項,例如生成的檔案或來自外部系統的記錄。

510 536 


552 578 

553這些區塊形狀來自 MCP `CallToolResult` 類型。請參閱 [MCP 規格](https://modelcontextprotocol.io/specification/2025-06-18/server/tools#tool-result)以取得完整定義。579這些區塊形狀來自 MCP `CallToolResult` 類型。請參閱 [MCP 規格](https://modelcontextprotocol.io/specification/2025-06-18/server/tools#tool-result)以取得完整定義。

554 580 

555## 傳回結構化資料581<h2 id="return-structured-data">

582 傳回結構化資料

583</h2>

556 584 

557`structuredContent` 是結果上的選用 JSON 物件,與 `content` 陣列分開。使用它傳回原始值,Claude 可以將其讀取為確切欄位,而不是從文字字串或影像中解析它們。585`structuredContent` 是結果上的選用 JSON 物件,與 `content` 陣列分開。使用它傳回原始值,Claude 可以將其讀取為確切欄位,而不是從文字字串或影像中解析它們。

558 586 


579 Python `@tool` 裝飾器僅從處理程式的傳回字典轉發 `content` 和 `is_error`。若要從 Python 傳回 `structuredContent`,請改為執行[獨立 MCP 伺服器](/zh-TW/agent-sdk/mcp)。607 Python `@tool` 裝飾器僅從處理程式的傳回字典轉發 `content` 和 `is_error`。若要從 Python 傳回 `structuredContent`,請改為執行[獨立 MCP 伺服器](/zh-TW/agent-sdk/mcp)。

580</Note>608</Note>

581 609 

582## 範例:單位轉換器610<h2 id="example-unit-converter">

611 範例:單位轉換器

612</h2>

583 613 

584此工具在長度、溫度和重量的單位之間轉換值。使用者可以詢問「將 100 公里轉換為英里」或「72°F 是多少攝氏度」,Claude 從請求中選擇正確的單位類型和單位。614此工具在長度、溫度和重量的單位之間轉換值。使用者可以詢問「將 100 公里轉換為英里」或「72°F 是多少攝氏度」,Claude 從請求中選擇正確的單位類型和單位。

585 615 


815 ```845 ```

816</CodeGroup>846</CodeGroup>

817 847 

818## 後續步驟848<h2 id="next-steps">

849 後續步驟

850</h2>

819 851 

820自訂工具在標準介面中包裝非同步函數。您可以在同一伺服器中混合本頁上的模式:單一伺服器可以並排保存資料庫工具、API 閘道工具和影像呈現器。852自訂工具在標準介面中包裝非同步函數。您可以在同一伺服器中混合本頁上的模式:單一伺服器可以並排保存資料庫工具、API 閘道工具和影像呈現器。

821 853 


825* 若要連接到外部 MCP 伺服器(檔案系統、GitHub、Slack)而不是建立自己的,請參閱[連接 MCP 伺服器](/zh-TW/agent-sdk/mcp)。857* 若要連接到外部 MCP 伺服器(檔案系統、GitHub、Slack)而不是建立自己的,請參閱[連接 MCP 伺服器](/zh-TW/agent-sdk/mcp)。

826* 若要控制哪些工具自動執行與需要核准,請參閱[設定權限](/zh-TW/agent-sdk/permissions)。858* 若要控制哪些工具自動執行與需要核准,請參閱[設定權限](/zh-TW/agent-sdk/permissions)。

827 859 

828## 相關文件860<h2 id="related-documentation">

861 相關文件

862</h2>

829 863 

830* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript)864* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript)

831* [Python SDK 參考](/zh-TW/agent-sdk/python)865* [Python SDK 參考](/zh-TW/agent-sdk/python)

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# 使用 checkpointing 回溯檔案變更

6 

7> 追蹤代理程式工作階段期間的檔案變更,並將檔案還原到任何先前的狀態

8 

9File checkpointing 追蹤在代理程式工作階段期間透過 Write、Edit 和 NotebookEdit 工具所做的檔案修改,允許您將檔案回溯到任何先前的狀態。想要試試看嗎?跳到[互動式範例](#try-it-out)。

10 

11使用 checkpointing,您可以:

12 

13* **撤銷不需要的變更**,透過將檔案還原到已知的良好狀態

14* **探索替代方案**,透過還原到 checkpoint 並嘗試不同的方法

15* **從錯誤中恢復**,當代理程式進行不正確的修改時

16 

17<Warning>

18 只有透過 Write、Edit 和 NotebookEdit 工具所做的變更才會被追蹤。透過 Bash 命令所做的變更(例如 `echo > file.txt` 或 `sed -i`)不會被 checkpoint 系統捕捉。

19</Warning>

20 

21<h2 id="how-checkpointing-works">

22 checkpointing 如何運作

23</h2>

24 

25當您啟用檔案 checkpointing 時,SDK 會在透過 Write、Edit 或 NotebookEdit 工具修改檔案之前建立檔案備份。回應串流中的使用者訊息包含一個 checkpoint UUID,您可以將其用作還原點。

26 

27Checkpoint 適用於代理程式用來修改檔案的這些內建工具:

28 

29| 工具 | 描述 |

30| ------------ | -------------------------------- |

31| Write | 建立新檔案或用新內容覆蓋現有檔案 |

32| Edit | 對現有檔案的特定部分進行有針對性的編輯 |

33| NotebookEdit | 修改 Jupyter 筆記本(`.ipynb` 檔案)中的儲存格 |

34 

35<Note>

36 檔案回溯將磁碟上的檔案還原到先前的狀態。它不會回溯對話本身。呼叫 `rewindFiles()`(TypeScript)或 `rewind_files()`(Python)後,對話歷史記錄和上下文保持不變。

37</Note>

38 

39checkpoint 系統追蹤:

40 

41* 在工作階段期間建立的檔案

42* 在工作階段期間修改的檔案

43* 修改檔案的原始內容

44 

45當您回溯到 checkpoint 時,建立的檔案會被刪除,修改的檔案會還原到該時間點的內容。

46 

47<h2 id="implement-checkpointing">

48 實現 checkpointing

49</h2>

50 

51若要使用檔案 checkpointing,請在您的選項中啟用它,從回應串流中捕捉 checkpoint UUID,然後在需要還原時呼叫 `rewindFiles()`(TypeScript)或 `rewind_files()`(Python)。

52 

53以下範例顯示完整流程:啟用 checkpointing、從回應串流中捕捉 checkpoint UUID 和工作階段 ID,然後稍後恢復工作階段以回溯檔案。下面詳細說明每個步驟。

54 

55<CodeGroup>

56 ```python Python theme={null}

57 import asyncio

58 from claude_agent_sdk import (

59 ClaudeSDKClient,

60 ClaudeAgentOptions,

61 UserMessage,

62 ResultMessage,

63 )

64 

65 

66 async def main():

67 # Step 1: Enable checkpointing

68 options = ClaudeAgentOptions(

69 enable_file_checkpointing=True,

70 permission_mode="acceptEdits", # Auto-accept file edits without prompting

71 extra_args={

72 "replay-user-messages": None

73 }, # Required to receive checkpoint UUIDs in the response stream

74 )

75 

76 checkpoint_id = None

77 session_id = None

78 

79 # Run the query and capture checkpoint UUID and session ID

80 async with ClaudeSDKClient(options) as client:

81 await client.query("Refactor the authentication module")

82 

83 # Step 2: Capture checkpoint UUID from the first user message

84 async for message in client.receive_response():

85 if isinstance(message, UserMessage) and message.uuid and not checkpoint_id:

86 checkpoint_id = message.uuid

87 if isinstance(message, ResultMessage) and not session_id:

88 session_id = message.session_id

89 

90 # Step 3: Later, rewind by resuming the session with an empty prompt

91 if checkpoint_id and session_id:

92 async with ClaudeSDKClient(

93 ClaudeAgentOptions(enable_file_checkpointing=True, resume=session_id)

94 ) as client:

95 await client.query("") # Empty prompt to open the connection

96 async for message in client.receive_response():

97 await client.rewind_files(checkpoint_id)

98 break

99 print(f"Rewound to checkpoint: {checkpoint_id}")

100 

101 

102 asyncio.run(main())

103 ```

104 

105 ```typescript TypeScript theme={null}

106 import { query } from "@anthropic-ai/claude-agent-sdk";

107 

108 async function main() {

109 // Step 1: Enable checkpointing

110 const opts = {

111 enableFileCheckpointing: true,

112 permissionMode: "acceptEdits" as const, // Auto-accept file edits without prompting

113 extraArgs: { "replay-user-messages": null } // Required to receive checkpoint UUIDs in the response stream

114 };

115 

116 const response = query({

117 prompt: "Refactor the authentication module",

118 options: opts

119 });

120 

121 let checkpointId: string | undefined;

122 let sessionId: string | undefined;

123 

124 // Step 2: Capture checkpoint UUID from the first user message

125 for await (const message of response) {

126 if (message.type === "user" && message.uuid && !checkpointId) {

127 checkpointId = message.uuid;

128 }

129 if ("session_id" in message && !sessionId) {

130 sessionId = message.session_id;

131 }

132 }

133 

134 // Step 3: Later, rewind by resuming the session with an empty prompt

135 if (checkpointId && sessionId) {

136 const rewindQuery = query({

137 prompt: "", // Empty prompt to open the connection

138 options: { ...opts, resume: sessionId }

139 });

140 

141 for await (const msg of rewindQuery) {

142 await rewindQuery.rewindFiles(checkpointId);

143 break;

144 }

145 console.log(`Rewound to checkpoint: ${checkpointId}`);

146 }

147 }

148 

149 main();

150 ```

151</CodeGroup>

152 

153<Steps>

154 <Step title="啟用 checkpointing">

155 配置您的 SDK 選項以啟用 checkpointing 並接收 checkpoint UUID:

156 

157 | 選項 | Python | TypeScript | 描述 |

158 | ------------------ | ------------------------------------------- | --------------------------------------------- | ------------------ |

159 | 啟用 checkpointing | `enable_file_checkpointing=True` | `enableFileCheckpointing: true` | 追蹤檔案變更以進行回溯 |

160 | 接收 checkpoint UUID | `extra_args={"replay-user-messages": None}` | `extraArgs: { 'replay-user-messages': null }` | 需要在串流中取得使用者訊息 UUID |

161 

162 <CodeGroup>

163 ```python Python theme={null}

164 options = ClaudeAgentOptions(

165 enable_file_checkpointing=True,

166 permission_mode="acceptEdits",

167 extra_args={"replay-user-messages": None},

168 )

169 

170 async with ClaudeSDKClient(options) as client:

171 await client.query("Refactor the authentication module")

172 ```

173 

174 ```typescript TypeScript theme={null}

175 const response = query({

176 prompt: "Refactor the authentication module",

177 options: {

178 enableFileCheckpointing: true,

179 permissionMode: "acceptEdits" as const,

180 extraArgs: { "replay-user-messages": null }

181 }

182 });

183 ```

184 </CodeGroup>

185 </Step>

186 

187 <Step title="捕捉 checkpoint UUID 和工作階段 ID">

188 設定 `replay-user-messages` 選項後(如上所示),回應串流中的每個使用者訊息都有一個 UUID,可作為 checkpoint。

189 

190 對於大多數使用案例,捕捉第一個使用者訊息 UUID(`message.uuid`);回溯到它會將所有檔案還原到其原始狀態。若要儲存多個 checkpoint 並回溯到中間狀態,請參閱[多個還原點](#multiple-restore-points)。

191 

192 捕捉工作階段 ID(`message.session_id`)是可選的;只有在您想要稍後回溯(在串流完成後)時才需要它。如果您在仍在處理訊息時立即呼叫 `rewindFiles()`(如[在危險操作前進行 checkpoint](#checkpoint-before-risky-operations) 中的範例所做的),您可以跳過捕捉工作階段 ID。

193 

194 <CodeGroup>

195 ```python Python theme={null}

196 checkpoint_id = None

197 session_id = None

198 

199 async for message in client.receive_response():

200 # Update checkpoint on each user message (keeps the latest)

201 if isinstance(message, UserMessage) and message.uuid:

202 checkpoint_id = message.uuid

203 # Capture session ID from the result message

204 if isinstance(message, ResultMessage):

205 session_id = message.session_id

206 ```

207 

208 ```typescript TypeScript theme={null}

209 let checkpointId: string | undefined;

210 let sessionId: string | undefined;

211 

212 for await (const message of response) {

213 // Update checkpoint on each user message (keeps the latest)

214 if (message.type === "user" && message.uuid) {

215 checkpointId = message.uuid;

216 }

217 // Capture session ID from any message that has it

218 if ("session_id" in message) {

219 sessionId = message.session_id;

220 }

221 }

222 ```

223 </CodeGroup>

224 </Step>

225 

226 <Step title="回溯檔案">

227 若要在串流完成後回溯,請使用空提示恢復工作階段,並使用您的 checkpoint UUID 呼叫 `rewind_files()`(Python)或 `rewindFiles()`(TypeScript)。您也可以在串流期間回溯;請參閱[在危險操作前進行 checkpoint](#checkpoint-before-risky-operations) 以了解該模式。

228 

229 <CodeGroup>

230 ```python Python theme={null}

231 async with ClaudeSDKClient(

232 ClaudeAgentOptions(enable_file_checkpointing=True, resume=session_id)

233 ) as client:

234 await client.query("") # Empty prompt to open the connection

235 async for message in client.receive_response():

236 await client.rewind_files(checkpoint_id)

237 break

238 ```

239 

240 ```typescript TypeScript theme={null}

241 const rewindQuery = query({

242 prompt: "", // Empty prompt to open the connection

243 options: { ...opts, resume: sessionId }

244 });

245 

246 for await (const msg of rewindQuery) {

247 await rewindQuery.rewindFiles(checkpointId);

248 break;

249 }

250 ```

251 </CodeGroup>

252 

253 如果您捕捉了工作階段 ID 和 checkpoint ID,您也可以從 CLI 回溯:

254 

255 ```bash theme={null}

256 claude -p --resume <session-id> --rewind-files <checkpoint-uuid>

257 ```

258 </Step>

259</Steps>

260 

261<h2 id="common-patterns">

262 常見模式

263</h2>

264 

265這些模式顯示根據您的使用案例捕捉和使用 checkpoint UUID 的不同方式。

266 

267<h3 id="checkpoint-before-risky-operations">

268 在危險操作前進行 checkpoint

269</h3>

270 

271此模式只保留最新的 checkpoint UUID,在每個代理程式轉向前更新它。如果在處理期間出現問題,您可以立即回溯到最後的安全狀態並跳出迴圈。

272 

273<CodeGroup>

274 ```python Python theme={null}

275 import asyncio

276 from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, UserMessage

277 

278 

279 async def main():

280 options = ClaudeAgentOptions(

281 enable_file_checkpointing=True,

282 permission_mode="acceptEdits",

283 extra_args={"replay-user-messages": None},

284 )

285 

286 safe_checkpoint = None

287 

288 async with ClaudeSDKClient(options) as client:

289 await client.query("Refactor the authentication module")

290 

291 async for message in client.receive_response():

292 # Update checkpoint before each agent turn starts

293 # This overwrites the previous checkpoint. Only keep the latest

294 if isinstance(message, UserMessage) and message.uuid:

295 safe_checkpoint = message.uuid

296 

297 # Decide when to revert based on your own logic

298 # For example: error detection, validation failure, or user input

299 if your_revert_condition and safe_checkpoint:

300 await client.rewind_files(safe_checkpoint)

301 # Exit the loop after rewinding, files are restored

302 break

303 

304 

305 asyncio.run(main())

306 ```

307 

308 ```typescript TypeScript theme={null}

309 import { query } from "@anthropic-ai/claude-agent-sdk";

310 

311 async function main() {

312 const response = query({

313 prompt: "Refactor the authentication module",

314 options: {

315 enableFileCheckpointing: true,

316 permissionMode: "acceptEdits" as const,

317 extraArgs: { "replay-user-messages": null }

318 }

319 });

320 

321 let safeCheckpoint: string | undefined;

322 

323 for await (const message of response) {

324 // Update checkpoint before each agent turn starts

325 // This overwrites the previous checkpoint. Only keep the latest

326 if (message.type === "user" && message.uuid) {

327 safeCheckpoint = message.uuid;

328 }

329 

330 // Decide when to revert based on your own logic

331 // For example: error detection, validation failure, or user input

332 if (yourRevertCondition && safeCheckpoint) {

333 await response.rewindFiles(safeCheckpoint);

334 // Exit the loop after rewinding, files are restored

335 break;

336 }

337 }

338 }

339 

340 main();

341 ```

342</CodeGroup>

343 

344<h3 id="multiple-restore-points">

345 多個還原點

346</h3>

347 

348如果 Claude 在多個轉向中進行變更,您可能想要回溯到特定點而不是一直回到開始。例如,如果 Claude 在第一個轉向中重構檔案,在第二個轉向中新增測試,您可能想要保留重構但撤銷測試。

349 

350此模式將所有 checkpoint UUID 儲存在具有中繼資料的陣列中。工作階段完成後,您可以回溯到任何先前的 checkpoint:

351 

352<CodeGroup>

353 ```python Python theme={null}

354 import asyncio

355 from dataclasses import dataclass

356 from datetime import datetime

357 from claude_agent_sdk import (

358 ClaudeSDKClient,

359 ClaudeAgentOptions,

360 UserMessage,

361 ResultMessage,

362 )

363 

364 

365 # Store checkpoint metadata for better tracking

366 @dataclass

367 class Checkpoint:

368 id: str

369 description: str

370 timestamp: datetime

371 

372 

373 async def main():

374 options = ClaudeAgentOptions(

375 enable_file_checkpointing=True,

376 permission_mode="acceptEdits",

377 extra_args={"replay-user-messages": None},

378 )

379 

380 checkpoints = []

381 session_id = None

382 

383 async with ClaudeSDKClient(options) as client:

384 await client.query("Refactor the authentication module")

385 

386 async for message in client.receive_response():

387 if isinstance(message, UserMessage) and message.uuid:

388 checkpoints.append(

389 Checkpoint(

390 id=message.uuid,

391 description=f"After turn {len(checkpoints) + 1}",

392 timestamp=datetime.now(),

393 )

394 )

395 if isinstance(message, ResultMessage) and not session_id:

396 session_id = message.session_id

397 

398 # Later: rewind to any checkpoint by resuming the session

399 if checkpoints and session_id:

400 target = checkpoints[0] # Pick any checkpoint

401 async with ClaudeSDKClient(

402 ClaudeAgentOptions(enable_file_checkpointing=True, resume=session_id)

403 ) as client:

404 await client.query("") # Empty prompt to open the connection

405 async for message in client.receive_response():

406 await client.rewind_files(target.id)

407 break

408 print(f"Rewound to: {target.description}")

409 

410 

411 asyncio.run(main())

412 ```

413 

414 ```typescript TypeScript theme={null}

415 import { query } from "@anthropic-ai/claude-agent-sdk";

416 

417 // Store checkpoint metadata for better tracking

418 interface Checkpoint {

419 id: string;

420 description: string;

421 timestamp: Date;

422 }

423 

424 async function main() {

425 const opts = {

426 enableFileCheckpointing: true,

427 permissionMode: "acceptEdits" as const,

428 extraArgs: { "replay-user-messages": null }

429 };

430 

431 const response = query({

432 prompt: "Refactor the authentication module",

433 options: opts

434 });

435 

436 const checkpoints: Checkpoint[] = [];

437 let sessionId: string | undefined;

438 

439 for await (const message of response) {

440 if (message.type === "user" && message.uuid) {

441 checkpoints.push({

442 id: message.uuid,

443 description: `After turn ${checkpoints.length + 1}`,

444 timestamp: new Date()

445 });

446 }

447 if ("session_id" in message && !sessionId) {

448 sessionId = message.session_id;

449 }

450 }

451 

452 // Later: rewind to any checkpoint by resuming the session

453 if (checkpoints.length > 0 && sessionId) {

454 const target = checkpoints[0]; // Pick any checkpoint

455 const rewindQuery = query({

456 prompt: "", // Empty prompt to open the connection

457 options: { ...opts, resume: sessionId }

458 });

459 

460 for await (const msg of rewindQuery) {

461 await rewindQuery.rewindFiles(target.id);

462 break;

463 }

464 console.log(`Rewound to: ${target.description}`);

465 }

466 }

467 

468 main();

469 ```

470</CodeGroup>

471 

472<h2 id="try-it-out">

473 試試看

474</h2>

475 

476此完整範例建立一個小型公用程式檔案,讓代理程式新增文件註解,向您顯示變更,然後詢問您是否想要回溯。

477 

478開始之前,請確保您已[安裝 Claude Agent SDK](/zh-TW/agent-sdk/quickstart)。

479 

480<Steps>

481 <Step title="建立測試檔案">

482 建立一個名為 `utils.py`(Python)或 `utils.ts`(TypeScript)的新檔案,並貼上以下程式碼:

483 

484 <CodeGroup>

485 ```python utils.py theme={null}

486 def add(a, b):

487 return a + b

488 

489 

490 def subtract(a, b):

491 return a - b

492 

493 

494 def multiply(a, b):

495 return a * b

496 

497 

498 def divide(a, b):

499 if b == 0:

500 raise ValueError("Cannot divide by zero")

501 return a / b

502 ```

503 

504 ```typescript utils.ts theme={null}

505 export function add(a: number, b: number): number {

506 return a + b;

507 }

508 

509 export function subtract(a: number, b: number): number {

510 return a - b;

511 }

512 

513 export function multiply(a: number, b: number): number {

514 return a * b;

515 }

516 

517 export function divide(a: number, b: number): number {

518 if (b === 0) {

519 throw new Error("Cannot divide by zero");

520 }

521 return a / b;

522 }

523 ```

524 </CodeGroup>

525 </Step>

526 

527 <Step title="執行互動式範例">

528 在與您的公用程式檔案相同的目錄中建立一個名為 `try_checkpointing.py`(Python)或 `try_checkpointing.ts`(TypeScript)的新檔案,並貼上以下程式碼。

529 

530 此指令碼要求 Claude 將文件註解新增到您的公用程式檔案,然後為您提供回溯和還原原始檔案的選項。

531 

532 <CodeGroup>

533 ```python try_checkpointing.py theme={null}

534 import asyncio

535 from claude_agent_sdk import (

536 ClaudeSDKClient,

537 ClaudeAgentOptions,

538 UserMessage,

539 ResultMessage,

540 )

541 

542 

543 async def main():

544 # Configure the SDK with checkpointing enabled

545 # - enable_file_checkpointing: Track file changes for rewinding

546 # - permission_mode: Auto-accept file edits without prompting

547 # - extra_args: Required to receive user message UUIDs in the stream

548 options = ClaudeAgentOptions(

549 enable_file_checkpointing=True,

550 permission_mode="acceptEdits",

551 extra_args={"replay-user-messages": None},

552 )

553 

554 checkpoint_id = None # Store the user message UUID for rewinding

555 session_id = None # Store the session ID for resuming

556 

557 print("Running agent to add doc comments to utils.py...\n")

558 

559 # Run the agent and capture checkpoint data from the response stream

560 async with ClaudeSDKClient(options) as client:

561 await client.query("Add doc comments to utils.py")

562 

563 async for message in client.receive_response():

564 # Capture the first user message UUID - this is our restore point

565 if isinstance(message, UserMessage) and message.uuid and not checkpoint_id:

566 checkpoint_id = message.uuid

567 # Capture the session ID so we can resume later

568 if isinstance(message, ResultMessage):

569 session_id = message.session_id

570 

571 print("Done! Open utils.py to see the added doc comments.\n")

572 

573 # Ask the user if they want to rewind the changes

574 if checkpoint_id and session_id:

575 response = input("Rewind to remove the doc comments? (y/n): ")

576 

577 if response.lower() == "y":

578 # Resume the session with an empty prompt, then rewind

579 async with ClaudeSDKClient(

580 ClaudeAgentOptions(enable_file_checkpointing=True, resume=session_id)

581 ) as client:

582 await client.query("") # Empty prompt opens the connection

583 async for message in client.receive_response():

584 await client.rewind_files(checkpoint_id) # Restore files

585 break

586 

587 print(

588 "\n✓ File restored! Open utils.py to verify the doc comments are gone."

589 )

590 else:

591 print("\nKept the modified file.")

592 

593 

594 asyncio.run(main())

595 ```

596 

597 ```typescript try_checkpointing.ts theme={null}

598 import { query } from "@anthropic-ai/claude-agent-sdk";

599 import * as readline from "readline";

600 

601 async function main() {

602 // Configure the SDK with checkpointing enabled

603 // - enableFileCheckpointing: Track file changes for rewinding

604 // - permissionMode: Auto-accept file edits without prompting

605 // - extraArgs: Required to receive user message UUIDs in the stream

606 const opts = {

607 enableFileCheckpointing: true,

608 permissionMode: "acceptEdits" as const,

609 extraArgs: { "replay-user-messages": null }

610 };

611 

612 let sessionId: string | undefined; // Store the session ID for resuming

613 let checkpointId: string | undefined; // Store the user message UUID for rewinding

614 

615 console.log("Running agent to add doc comments to utils.ts...\n");

616 

617 // Run the agent and capture checkpoint data from the response stream

618 const response = query({

619 prompt: "Add doc comments to utils.ts",

620 options: opts

621 });

622 

623 for await (const message of response) {

624 // Capture the first user message UUID - this is our restore point

625 if (message.type === "user" && message.uuid && !checkpointId) {

626 checkpointId = message.uuid;

627 }

628 // Capture the session ID so we can resume later

629 if ("session_id" in message) {

630 sessionId = message.session_id;

631 }

632 }

633 

634 console.log("Done! Open utils.ts to see the added doc comments.\n");

635 

636 // Ask the user if they want to rewind the changes

637 if (checkpointId && sessionId) {

638 const rl = readline.createInterface({

639 input: process.stdin,

640 output: process.stdout

641 });

642 

643 const answer = await new Promise<string>((resolve) => {

644 rl.question("Rewind to remove the doc comments? (y/n): ", resolve);

645 });

646 rl.close();

647 

648 if (answer.toLowerCase() === "y") {

649 // Resume the session with an empty prompt, then rewind

650 const rewindQuery = query({

651 prompt: "", // Empty prompt opens the connection

652 options: { ...opts, resume: sessionId }

653 });

654 

655 for await (const msg of rewindQuery) {

656 await rewindQuery.rewindFiles(checkpointId); // Restore files

657 break;

658 }

659 

660 console.log("\n✓ File restored! Open utils.ts to verify the doc comments are gone.");

661 } else {

662 console.log("\nKept the modified file.");

663 }

664 }

665 }

666 

667 main();

668 ```

669 </CodeGroup>

670 

671 此範例演示完整的 checkpointing 工作流程:

672 

673 1. **啟用 checkpointing**:使用 `enable_file_checkpointing=True` 和 `permission_mode="acceptEdits"` 配置 SDK 以自動批准檔案編輯

674 2. **捕捉 checkpoint 資料**:當代理程式執行時,儲存第一個使用者訊息 UUID(您的還原點)和工作階段 ID

675 3. **提示回溯**:代理程式完成後,檢查您的公用程式檔案以查看文件註解,然後決定是否要撤銷變更

676 4. **恢復和回溯**:如果是,請使用空提示恢復工作階段,並呼叫 `rewind_files()` 以還原原始檔案

677 </Step>

678 

679 <Step title="執行範例">

680 從與您的公用程式檔案相同的目錄執行指令碼。

681 

682 <Tip>

683 在執行指令碼之前,在您的 IDE 或編輯器中開啟您的公用程式檔案(`utils.py` 或 `utils.ts`)。當代理程式新增文件註解時,您會看到檔案即時更新,然後當您選擇回溯時回復到原始檔案。

684 </Tip>

685 

686 <Tabs>

687 <Tab title="Python">

688 ```bash theme={null}

689 python try_checkpointing.py

690 ```

691 </Tab>

692 

693 <Tab title="TypeScript">

694 ```bash theme={null}

695 npx tsx try_checkpointing.ts

696 ```

697 </Tab>

698 </Tabs>

699 

700 您會看到代理程式新增文件註解,然後出現一個提示,詢問您是否想要回溯。如果您選擇是,檔案會還原到其原始狀態。

701 </Step>

702</Steps>

703 

704<h2 id="limitations">

705 限制

706</h2>

707 

708檔案 checkpointing 有以下限制:

709 

710| 限制 | 描述 |

711| ----------------------------- | ------------------------ |

712| 僅限 Write/Edit/NotebookEdit 工具 | 透過 Bash 命令所做的變更不會被追蹤 |

713| 相同工作階段 | Checkpoint 與建立它們的工作階段相關聯 |

714| 僅限檔案內容 | 建立、移動或刪除目錄不會透過回溯來撤銷 |

715| 本機檔案 | 遠端或網路檔案不會被追蹤 |

716 

717<h2 id="troubleshooting">

718 疑難排解

719</h2>

720 

721<h3 id="checkpointing-options-not-recognized">

722 Checkpointing 選項無法識別

723</h3>

724 

725如果 `enableFileCheckpointing` 或 `rewindFiles()` 無法使用,您可能使用的是較舊的 SDK 版本。

726 

727**解決方案**:更新到最新的 SDK 版本:

728 

729* **Python**:`pip install --upgrade claude-agent-sdk`

730* **TypeScript**:`npm install @anthropic-ai/claude-agent-sdk@latest`

731 

732<h3 id="user-messages-don-t-have-uuids">

733 使用者訊息沒有 UUID

734</h3>

735 

736如果 `message.uuid` 是 `undefined` 或遺失,您沒有接收 checkpoint UUID。

737 

738**原因**:未設定 `replay-user-messages` 選項。

739 

740**解決方案**:將 `extra_args={"replay-user-messages": None}`(Python)或 `extraArgs: { 'replay-user-messages': null }`(TypeScript)新增到您的選項。

741 

742<h3 id="no-file-checkpoint-found-for-message-error">

743 "No file checkpoint found for message" 錯誤

744</h3>

745 

746當指定的使用者訊息 UUID 的 checkpoint 資料不存在時,會發生此錯誤。

747 

748**常見原因**:

749 

750* 檔案 checkpointing 未在原始工作階段上啟用(`enable_file_checkpointing` 或 `enableFileCheckpointing` 未設定為 `true`)

751* 在嘗試恢復和回溯之前,工作階段未正確完成

752 

753**解決方案**:確保在原始工作階段上設定了 `enable_file_checkpointing=True`(Python)或 `enableFileCheckpointing: true`(TypeScript),然後使用範例中顯示的模式:捕捉第一個使用者訊息 UUID,完全完成工作階段,然後使用空提示恢復並呼叫 `rewindFiles()` 一次。

754 

755<h3 id="processtransport-is-not-ready-for-writing-error">

756 "ProcessTransport is not ready for writing" 錯誤

757</h3>

758 

759當您在完成回應迭代後呼叫 `rewindFiles()` 或 `rewind_files()` 時,會發生此錯誤。當迴圈完成時,與 CLI 程序的連線會關閉。

760 

761**解決方案**:使用空提示恢復工作階段,然後在新查詢上呼叫回溯:

762 

763<CodeGroup>

764 ```python Python theme={null}

765 # Resume session with empty prompt, then rewind

766 async with ClaudeSDKClient(

767 ClaudeAgentOptions(enable_file_checkpointing=True, resume=session_id)

768 ) as client:

769 await client.query("")

770 async for message in client.receive_response():

771 await client.rewind_files(checkpoint_id)

772 break

773 ```

774 

775 ```typescript TypeScript theme={null}

776 // Resume session with empty prompt, then rewind

777 const rewindQuery = query({

778 prompt: "",

779 options: { ...opts, resume: sessionId }

780 });

781 

782 for await (const msg of rewindQuery) {

783 await rewindQuery.rewindFiles(checkpointId);

784 break;

785 }

786 ```

787</CodeGroup>

788 

789<h2 id="next-steps">

790 後續步驟

791</h2>

792 

793* **[Sessions](/zh-TW/agent-sdk/sessions)**:了解如何恢復工作階段,這是在串流完成後回溯所需的。涵蓋工作階段 ID、恢復對話和工作階段分叉。

794* **[Permissions](/zh-TW/agent-sdk/permissions)**:配置 Claude 可以使用哪些工具以及如何批准檔案修改。如果您想更好地控制何時進行編輯,這很有用。

795* **[TypeScript SDK reference](/zh-TW/agent-sdk/typescript)**:完整的 API 參考,包括 `query()` 的所有選項和 `rewindFiles()` 方法。

796* **[Python SDK reference](/zh-TW/agent-sdk/python)**:完整的 API 參考,包括 `ClaudeAgentOptions` 的所有選項和 `rewind_files()` 方法。

agent-sdk/hooks.md +106 −36

Details

16 16 

17本指南涵蓋 hooks 的工作原理、如何配置它們,並提供常見模式的範例,例如阻止工具、修改輸入和轉發通知。17本指南涵蓋 hooks 的工作原理、如何配置它們,並提供常見模式的範例,例如阻止工具、修改輸入和轉發通知。

18 18 

19## Hooks 如何工作19<h2 id="how-hooks-work">

20 Hooks 如何工作

21</h2>

20 22 

21<Steps>23<Steps>

22 <Step title="事件觸發">24 <Step title="事件觸發">


140 ```142 ```

141</CodeGroup>143</CodeGroup>

142 144 

143## 可用的 hooks145<h2 id="available-hooks">

146 可用的 hooks

147</h2>

144 148 

145SDK 為代理執行的不同階段提供 hooks。某些 hooks 在兩個 SDK 中都可用,而其他則僅限 TypeScript。149SDK 為代理執行的不同階段提供 hooks。某些 hooks 在兩個 SDK 中都可用,而其他則僅限 TypeScript。

146 150 

147| Hook 事件 | Python SDK | TypeScript SDK | 觸發條件 | 使用案例範例 |151| Hook 事件 | Python SDK | TypeScript SDK | 觸發條件 | 使用案例範例 |

148| -------------------- | ---------- | -------------- | ------------------------- | ---------------------------- |152| -------------------- | ---------- | -------------- | -------------------------- | ---------------------------- |

149| `PreToolUse` | 是 | 是 | 工具呼叫請求(可以阻止或修改) | 阻止危險的 shell 命令 |153| `PreToolUse` | 是 | 是 | 工具呼叫請求(可以阻止或修改) | 阻止危險的 shell 命令 |

150| `PostToolUse` | 是 | 是 | 工具執行結果 | 將所有檔案變更記錄到審計追蹤 |154| `PostToolUse` | 是 | 是 | 工具執行結果 | 將所有檔案變更記錄到審計追蹤 |

151| `PostToolUseFailure` | 是 | 是 | 工具執行失敗 | 處理或記錄工具錯誤 |155| `PostToolUseFailure` | 是 | 是 | 工具執行失敗 | 處理或記錄工具錯誤 |

152| `PostToolBatch` | 否 | 是 | 一整批工具呼叫解決,每批一次,在下一個模型呼叫之前 | 為整個批次注入約定 |156| `PostToolBatch` | 否 | 是 | 一整批工具呼叫解決,每批一次,在下一個模型呼叫之前 | 為整個批次注入約定 |

153| `UserPromptSubmit` | 是 | 是 | 使用者提示提交 | 將額外上下文注入提示 |157| `UserPromptSubmit` | 是 | 是 | 使用者提示提交 | 將額外上下文注入提示 |

158| `MessageDisplay` | 否 | 是 | 助手訊息包含文字完成,每則訊息一次,包含完整訊息文字 | 編輯或重新格式化顯示的文字,不改變記錄 |

154| `Stop` | 是 | 是 | 代理執行停止 | 在退出前保存會話狀態 |159| `Stop` | 是 | 是 | 代理執行停止 | 在退出前保存會話狀態 |

155| `SubagentStart` | 是 | 是 | 子代理初始化 | 追蹤平行任務生成 |160| `SubagentStart` | 是 | 是 | 子代理初始化 | 追蹤平行任務生成 |

156| `SubagentStop` | 是 | 是 | 子代理完成 | 聚合來自平行任務的結果 |161| `SubagentStop` | 是 | 是 | 子代理完成 | 聚合來自平行任務的結果 |


166| `WorktreeCreate` | 否 | 是 | Git worktree 已建立 | 追蹤隔離的工作區 |171| `WorktreeCreate` | 否 | 是 | Git worktree 已建立 | 追蹤隔離的工作區 |

167| `WorktreeRemove` | 否 | 是 | Git worktree 已移除 | 清理工作區資源 |172| `WorktreeRemove` | 否 | 是 | Git worktree 已移除 | 清理工作區資源 |

168 173 

169## 配置 hooks174<h2 id="configure-hooks">

175 配置 hooks

176</h2>

170 177 

171要配置 hook,請在代理選項的 `hooks` 欄位中傳遞它(Python 中的 `ClaudeAgentOptions`,TypeScript 中的 `options` 物件):178要配置 hook,請在代理選項的 `hooks` 欄位中傳遞它(Python 中的 `ClaudeAgentOptions`,TypeScript 中的 `options` 物件):

172 179 


201* **鍵**是 [hook 事件名稱](#available-hooks)(例如 `'PreToolUse'`、`'PostToolUse'`、`'Stop'`)208* **鍵**是 [hook 事件名稱](#available-hooks)(例如 `'PreToolUse'`、`'PostToolUse'`、`'Stop'`)

202* **值**是[匹配器](#matchers)的陣列,每個都包含可選的篩選模式和您的[回調函數](#callback-functions)209* **值**是[匹配器](#matchers)的陣列,每個都包含可選的篩選模式和您的[回調函數](#callback-functions)

203 210 

204### 匹配器211<h3 id="matchers">

212 匹配器

213</h3>

205 214 

206使用匹配器篩選您的回調何時觸發。`matcher` 欄位是一個正規表達式字串,根據 hook 事件類型匹配不同的值。例如,工具型 hooks 匹配工具名稱,而 `Notification` hooks 匹配通知類型。請參閱 [Claude Code hooks 參考](/zh-TW/hooks#matcher-patterns)以取得每個事件類型的完整匹配器值列表。215使用匹配器篩選您的回調何時觸發。`matcher` 欄位根據 hook 事件類型匹配不同的值。例如,工具型 hooks 匹配工具名稱,而 `Notification` hooks 匹配通知類型。請參閱 [Claude Code hooks 參考](/zh-TW/hooks#matcher-patterns)以取得每個事件類型的完整匹配器值列表。

216 

217SDK 匹配器遵循與[設定檔案中的匹配器](/zh-TW/hooks#matcher-patterns)相同的規則:只包含字母、數字、`_` 和 `|` 的匹配器會被比較為精確字串,其中 `|` 分隔替代項,因此 `Write|Edit` 精確匹配這兩個工具。匹配器 `*`、空字串或完全省略匹配器會匹配事件的每次出現;包含任何其他字元的匹配器會被評估為正規表達式,因此 `^mcp__` 匹配每個 MCP 工具。像 `mcp__memory` 這樣的匹配器只包含字母和底線,因此會被比較為精確字串且不匹配任何工具;使用 `mcp__memory__.*` 來匹配來自該伺服器的每個工具。

207 218 

208| 選項 | 類型 | 預設值 | 描述 |219| 選項 | 類型 | 預設值 | 描述 |

209| --------- | ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |220| --------- | ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

210| `matcher` | `string` | `undefined` | 針對事件的篩選欄位匹配的正規表達式模式。對於工具 hooks,這是工具名稱。內建工具包括 `Bash`、`Read`、`Write`、`Edit`、`Glob`、`Grep`、`WebFetch`、`Agent` 等(請參閱[工具輸入類型](/zh-TW/agent-sdk/typescript#tool-input-types)以取得完整列表)。MCP 工具使用模式 `mcp__<server>__<action>`。 |221| `matcher` | `string` | `undefined` | 針對事件的篩選欄位匹配的模式,遵循上述比較規則。對於工具 hooks,這是工具名稱。內建工具包括 `Bash`、`Read`、`Write`、`Edit`、`Glob`、`Grep`、`WebFetch`、`Agent` 等(請參閱[工具輸入類型](/zh-TW/agent-sdk/typescript#tool-input-types)以取得完整列表)。MCP 工具使用模式 `mcp__<server>__<action>`。 |

211| `hooks` | `HookCallback[]` | - | 必需。當模式匹配時執行的回調函數陣列 |222| `hooks` | `HookCallback[]` | - | 必需。當模式匹配時執行的回調函數陣列 |

212| `timeout` | `number` | `60` | 超時時間(秒) |223| `timeout` | `number` | `60` | 超時時間(秒) |

213 224 


219 **MCP 工具命名:** MCP 工具始終以 `mcp__` 開頭,後跟伺服器名稱和操作:`mcp__<server>__<action>`。例如,如果您配置名為 `playwright` 的伺服器,其工具將被命名為 `mcp__playwright__browser_screenshot`、`mcp__playwright__browser_click` 等。伺服器名稱來自您在 `mcpServers` 配置中使用的鍵。230 **MCP 工具命名:** MCP 工具始終以 `mcp__` 開頭,後跟伺服器名稱和操作:`mcp__<server>__<action>`。例如,如果您配置名為 `playwright` 的伺服器,其工具將被命名為 `mcp__playwright__browser_screenshot`、`mcp__playwright__browser_click` 等。伺服器名稱來自您在 `mcpServers` 配置中使用的鍵。

220</Tip>231</Tip>

221 232 

222### 回調函數233<h3 id="callback-functions">

234 回調函數

235</h3>

223 236 

224#### 輸入237<h4 id="inputs">

238 輸入

239</h4>

225 240 

226每個 hook 回調接收三個參數:241每個 hook 回調接收三個參數:

227 242 


231* **工具使用 ID**(`str | None` / `string | undefined`):關聯同一工具呼叫的 `PreToolUse` 和 `PostToolUse` 事件。246* **工具使用 ID**(`str | None` / `string | undefined`):關聯同一工具呼叫的 `PreToolUse` 和 `PostToolUse` 事件。

232* **上下文:** 在 TypeScript 中,包含用於取消的 `signal` 屬性(`AbortSignal`)。在 Python 中,此參數保留供將來使用。247* **上下文:** 在 TypeScript 中,包含用於取消的 `signal` 屬性(`AbortSignal`)。在 Python 中,此參數保留供將來使用。

233 248 

234#### 輸出249<h4 id="outputs">

250 輸出

251</h4>

235 252 

236您的回調返回一個具有兩類欄位的物件:253您的回調返回一個具有兩類欄位的物件:

237 254 

238* **頂級欄位**在每個事件上的工作方式相同:`systemMessage` 向使用者顯示訊息,`continue`(Python 中的 `continue_`)決定此 hook 後代理是否繼續執行。255* **頂級欄位**在每個事件上的工作方式相同:`systemMessage` 向使用者顯示訊息,`continue`(Python 中的 `continue_`)決定此 hook 後代理是否繼續執行。

239* **`hookSpecificOutput`** 控制目前操作。內部的欄位取決於 hook 事件類型。對於 `PreToolUse` hooks,這是您設定 `permissionDecision`(`"allow"`、`"deny"`、`"ask"` 或 `"defer"`)、`permissionDecisionReason` 和 `updatedInput` 的地方。返回 `"defer"` 會結束查詢,以便您可以[稍後繼續](/zh-TW/hooks#defer-a-tool-call-for-later)。對於 `PostToolUse` hooks,您可以設定 `additionalContext` 以將資訊附加到工具結果,或設定 `updatedToolOutput` 以在 Claude 看到之前完全替換工具的輸出256* **`hookSpecificOutput`** 控制目前操作。內部的欄位取決於 hook 事件類型。對於 `PreToolUse` hooks,這是您設定 `permissionDecision`(`"allow"`、`"deny"`、`"ask"` 或 `"defer"`)、`permissionDecisionReason` 和 `updatedInput` 的地方。返回 `"defer"` 會結束查詢,以便您可以[稍後繼續](/zh-TW/hooks#defer-a-tool-call-for-later)。對於 `PostToolUse` hooks,您可以設定 `additionalContext` 以將資訊附加到工具結果。要在 Claude 看到之前替換工具的輸出請設定 `updatedToolOutput`,這適用於兩個 SDK 中的任何工具。較舊的 `updatedMCPToolOutput` 欄位僅替換 MCP 工具輸出,已被棄用

240 257 

241返回 `{}` 以允許操作而不進行變更。SDK 回調 hooks 使用與 [Claude Code shell 命令 hooks](/zh-TW/hooks#json-output) 相同的 JSON 輸出格式,其記錄每個欄位和事件特定選項。對於 SDK 類型定義,請參閱 [TypeScript](/zh-TW/agent-sdk/typescript#synchookjsonoutput) 和 [Python](/zh-TW/agent-sdk/python#synchookjsonoutput) SDK 參考。258返回 `{}` 以允許操作而不進行變更。SDK 回調 hooks 使用與 [Claude Code shell 命令 hooks](/zh-TW/hooks#json-output) 相同的 JSON 輸出格式,其記錄每個欄位和事件特定選項。對於 SDK 類型定義,請參閱 [TypeScript](/zh-TW/agent-sdk/typescript#synchookjsonoutput) 和 [Python](/zh-TW/agent-sdk/python#synchookjsonoutput) SDK 參考。

242 259 


244 當多個 hooks 或權限規則適用時,**deny** 優先於 **defer**,**defer** 優先於 **ask**,**ask** 優先於 **allow**。如果任何 hook 返回 `deny`,操作將被阻止,無論其他 hooks 如何。261 當多個 hooks 或權限規則適用時,**deny** 優先於 **defer**,**defer** 優先於 **ask**,**ask** 優先於 **allow**。如果任何 hook 返回 `deny`,操作將被阻止,無論其他 hooks 如何。

245</Note>262</Note>

246 263 

247#### 非同步輸出264<h4 id="asynchronous-output">

265 非同步輸出

266</h4>

248 267 

249預設情況下,代理在您的 hook 返回前等待。如果您的 hook 執行副作用(記錄、傳送 webhook)並且不需要影響代理的行為,您可以改為返回非同步輸出。這告訴代理立即繼續,無需等待 hook 完成:268預設情況下,代理在您的 hook 返回前等待。如果您的 hook 執行副作用(記錄、傳送 webhook)並且不需要影響代理的行為,您可以改為返回非同步輸出。這告訴代理立即繼續,無需等待 hook 完成:

250 269 


274 非同步輸出無法阻止、修改或將上下文注入操作,因為代理已經繼續。僅將它們用於副作用,例如記錄、指標或通知。293 非同步輸出無法阻止、修改或將上下文注入操作,因為代理已經繼續。僅將它們用於副作用,例如記錄、指標或通知。

275</Note>294</Note>

276 295 

277## 範例296<h2 id="examples">

297 範例

298</h2>

278 299 

279### 修改工具輸入300<h3 id="modify-tool-input">

301 修改工具輸入

302</h3>

280 303 

281此範例攔截 Write 工具呼叫並重寫 `file_path` 參數以預先加上 `/sandbox`,將所有檔案寫入重定向到沙箱目錄。回調返回帶有修改路徑的 `updatedInput` 和 `permissionDecision: 'allow'` 以自動批准重寫的操作:304此範例攔截 Write 工具呼叫並重寫 `file_path` 參數以預先加上 `/sandbox`,將所有檔案寫入重定向到沙箱目錄。回調返回帶有修改路徑的 `updatedInput` 和 `permissionDecision: 'allow'` 以自動批准重寫的操作:

282 305 


329 使用 `updatedInput` 時,您還必須包括 `permissionDecision: 'allow'` 以自動批准修改的輸入,或 `permissionDecision: 'ask'` 以將其顯示給使用者。使用 `'defer'` 時,`updatedInput` 會被忽略。始終返回新物件,而不是改變原始 `tool_input`。352 使用 `updatedInput` 時,您還必須包括 `permissionDecision: 'allow'` 以自動批准修改的輸入,或 `permissionDecision: 'ask'` 以將其顯示給使用者。使用 `'defer'` 時,`updatedInput` 會被忽略。始終返回新物件,而不是改變原始 `tool_input`。

330</Note>353</Note>

331 354 

332### 新增上下文並阻止工具355<h3 id="add-context-and-block-a-tool">

356 新增上下文並阻止工具

357</h3>

333 358 

334此範例阻止寫入 `/etc` 目錄並向模型和使用者解釋原因:359此範例阻止寫入 `/etc` 目錄並向模型和使用者解釋原因:

335 360 


379 ```404 ```

380</CodeGroup>405</CodeGroup>

381 406 

382### 自動批准特定工具407<h3 id="auto-approve-specific-tools">

408 自動批准特定工具

409</h3>

383 410 

384預設情況下,代理可能在使用某些工具前提示權限。此範例通過返回 `permissionDecision: 'allow'` 自動批准唯讀檔案系統工具(Read、Glob、Grep),讓它們無需使用者確認即可執行,同時讓所有其他工具受到正常權限檢查:411預設情況下,代理可能在使用某些工具前提示權限。此範例通過返回 `permissionDecision: 'allow'` 自動批准唯讀檔案系統工具(Read、Glob、Grep),讓它們無需使用者確認即可執行,同時讓所有其他工具受到正常權限檢查:

385 412 


421 ```448 ```

422</CodeGroup>449</CodeGroup>

423 450 

424### 註冊多個 hooks451<h3 id="register-multiple-hooks">

452 註冊多個 hooks

453</h3>

425 454 

426當事件觸發時,所有匹配的 hooks 並行執行。對於權限決定,最嚴格的結果獲勝:單個 `deny` 會阻止工具呼叫,無論其他 hooks 返回什麼。由於完成順序是不確定的,請編寫每個 hook 以獨立行動,而不是依賴另一個 hook 已執行。455當事件觸發時,所有匹配的 hooks 並行執行。對於權限決定,最嚴格的結果獲勝:單個 `deny` 會阻止工具呼叫,無論其他 hooks 返回什麼。由於完成順序是不確定的,請編寫每個 hook 以獨立行動,而不是依賴另一個 hook 已執行。

427 456 


453 ```482 ```

454</CodeGroup>483</CodeGroup>

455 484 

456### 使用正規表達式匹配器篩選485<h3 id="filter-with-multi-tool-matchers">

486 使用多工具匹配器篩選

487</h3>

488 

489使用多工具匹配器在相關工具間共享一個回調。此範例註冊三個具有不同範圍的匹配器:

457 490 

458使用正規表達式模式匹配多個工具。此範例註冊三個具有不同範圍的匹配器:第一個僅針對檔案修改工具觸發 `file_security_hook`,第二個針對任何 MCP 工具名稱以 `mcp__` 開頭的工具)觸發 `mcp_audit_hook`,第三個針對每個工具呼叫(無論名稱如何觸發 `global_logger`491* 管道分隔的精確列表(`Write|Edit|Delete`)僅針對檔案修改工具觸發 `file_security_hook`

492* 正規表達式(`^mcp__`)針對任何名稱以 `mcp__` 開頭的 MCP 工具觸發 `mcp_audit_hook`。

493* 省略的匹配器針對每個工具呼叫(無論名稱如何)觸發 `global_logger`。

459 494 

460<CodeGroup>495<CodeGroup>

461 ```python Python theme={null}496 ```python Python theme={null}


491 ```526 ```

492</CodeGroup>527</CodeGroup>

493 528 

494### 追蹤子代理活動529<h3 id="track-subagent-activity">

530 追蹤子代理活動

531</h3>

495 532 

496使用 `SubagentStop` hooks 監控子代理何時完成其工作。請參閱 [TypeScript](/zh-TW/agent-sdk/typescript#hookinput) 和 [Python](/zh-TW/agent-sdk/python#hookinput) SDK 參考中的完整輸入類型。此範例在每次子代理完成時記錄摘要:533使用 `SubagentStop` hooks 監控子代理何時完成其工作。請參閱 [TypeScript](/zh-TW/agent-sdk/typescript#hookinput) 和 [Python](/zh-TW/agent-sdk/python#hookinput) SDK 參考中的完整輸入類型。此範例在每次子代理完成時記錄摘要:

497 534 


534 ```571 ```

535</CodeGroup>572</CodeGroup>

536 573 

537### 從 hooks 發出 HTTP 請求574<h3 id="make-http-requests-from-hooks">

575 從 hooks 發出 HTTP 請求

576</h3>

538 577 

539Hooks 可以執行非同步操作,例如 HTTP 請求。在您的 hook 內捕捉錯誤,而不是讓它們傳播,因為未處理的異常可能會中斷代理。578Hooks 可以執行非同步操作,例如 HTTP 請求。在您的 hook 內捕捉錯誤,而不是讓它們傳播,因為未處理的異常可能會中斷代理。

540 579 


623 ```662 ```

624</CodeGroup>663</CodeGroup>

625 664 

626### 將通知轉發到 Slack665<h3 id="forward-notifications-to-slack">

666 將通知轉發到 Slack

667</h3>

668 

669使用 `Notification` hooks 接收來自代理的系統通知並將其轉發到外部服務。通知針對特定事件類型觸發,例如:

670 

671* `permission_prompt` 當 Claude 需要權限時

672* `idle_prompt` 當 Claude 等待輸入時

673* `auth_success` 當認證完成時

674* `elicitation_dialog`、`elicitation_complete` 和 `elicitation_response` 用於使用者提示引導流程

627 675 

628使用 `Notification` hooks 接收來自代理的系統通知並將其轉發到外部服務。通知針對特定事件類型觸發:`permission_prompt`(Claude 需要權限)、`idle_prompt`(Claude 等待輸入)、`auth_success`(認證完成)、`elicitation_dialog`(Claude 提示使用者)、`elicitation_response`(使用者回答了引導)和 `elicitation_complete`(引導已關閉)。每個通知都包括帶有人類可讀描述的 `message` 欄位,以及可選的 `title`。676每個通知都包括帶有人類可讀描述的 `message` 欄位,以及可選的 `title`。

629 677 

630此範例將每個通知轉發到 Slack 頻道。它需要 [Slack 傳入 webhook URL](https://api.slack.com/messaging/webhooks),您可以通過將應用程式新增到 Slack 工作區並啟用傳入 webhooks 來建立:678此範例將每個通知轉發到 Slack 頻道。它需要 [Slack 傳入 webhook URL](https://api.slack.com/messaging/webhooks),您可以通過將應用程式新增到 Slack 工作區並啟用傳入 webhooks 來建立:

631 679 


723 ```771 ```

724</CodeGroup>772</CodeGroup>

725 773 

726## 修復常見問題774<h2 id="fix-common-issues">

775 修復常見問題

776</h2>

727 777 

728### Hook 未觸發778<h3 id="hook-not-firing">

779 Hook 未觸發

780</h3>

729 781 

730* 驗證 hook 事件名稱正確且區分大小寫(`PreToolUse`,而不是 `preToolUse`)782* 驗證 hook 事件名稱正確且區分大小寫(`PreToolUse`,而不是 `preToolUse`)

731* 檢查您的匹配器模式是否與工具名稱完全匹配783* 檢查您的匹配器模式是否與工具名稱完全匹配


733* 對於非工具 hooks,如 `Stop` 和 `SubagentStop`,匹配器匹配不同的欄位(請參閱[匹配器模式](/zh-TW/hooks#matcher-patterns))785* 對於非工具 hooks,如 `Stop` 和 `SubagentStop`,匹配器匹配不同的欄位(請參閱[匹配器模式](/zh-TW/hooks#matcher-patterns))

734* 當代理達到 [`max_turns`](/zh-TW/agent-sdk/python#claudeagentoptions) 限制時,hooks 可能不會觸發,因為會話在 hooks 可以執行前結束786* 當代理達到 [`max_turns`](/zh-TW/agent-sdk/python#claudeagentoptions) 限制時,hooks 可能不會觸發,因為會話在 hooks 可以執行前結束

735 787 

736### 匹配器未按預期篩選788<h3 id="matcher-not-filtering-as-expected">

789 匹配器未按預期篩選

790</h3>

737 791 

738匹配器只匹配**工具名稱**,不匹配檔案路徑或其他參數。要按檔案路徑篩選,請在您的 hook 內檢查 `tool_input.file_path`:792匹配器只匹配**工具名稱**,不匹配檔案路徑或其他參數。要按檔案路徑篩選,請在您的 hook 內檢查 `tool_input.file_path`:

739 793 


748};802};

749```803```

750 804 

751### Hook 超時805<h3 id="hook-timeout">

806 Hook 超時

807</h3>

752 808 

753* 增加 `HookMatcher` 配置中的 `timeout` 值809* 增加 `HookMatcher` 配置中的 `timeout` 值

754* 在 TypeScript 中使用第三個回調參數中的 `AbortSignal` 以優雅地處理取消810* 在 TypeScript 中使用第三個回調參數中的 `AbortSignal` 以優雅地處理取消

755 811 

756### 工具意外被阻止812<h3 id="tool-blocked-unexpectedly">

813 工具意外被阻止

814</h3>

757 815 

758* 檢查所有 `PreToolUse` hooks 是否返回 `permissionDecision: 'deny'`816* 檢查所有 `PreToolUse` hooks 是否返回 `permissionDecision: 'deny'`

759* 將記錄新增到您的 hooks 以查看它們返回的 `permissionDecisionReason`817* 將記錄新增到您的 hooks 以查看它們返回的 `permissionDecisionReason`

760* 驗證匹配器模式不會太寬泛(空匹配器匹配所有工具)818* 驗證匹配器模式不會太寬泛(空匹配器匹配所有工具)

761 819 

762### 修改的輸入未應用820<h3 id="modified-input-not-applied">

821 修改的輸入未應用

822</h3>

763 823 

764* 確保 `updatedInput` 在 `hookSpecificOutput` 內,而不是在頂級:824* 確保 `updatedInput` 在 `hookSpecificOutput` 內,而不是在頂級:

765 825 


773 };833 };

774 ```834 ```

775 835 

776* 您還必須返回 `permissionDecision: 'allow'` 或 `'ask'` 以使輸入修改生效836* 返回 `permissionDecision: 'allow'` 以自動批准修改的輸入,或 `'ask'` 以向使用者顯示以供批准

777 837 

778* 在 `hookSpecificOutput` 中包括 `hookEventName` 以識別輸出適用於哪個 hook 類型838* 在 `hookSpecificOutput` 中包括 `hookEventName` 以識別輸出適用於哪個 hook 類型

779 839 

780### Python 中不可用會話 hooks840<h3 id="session-hooks-not-available-in-python">

841 Python 中不可用會話 hooks

842</h3>

781 843 

782`SessionStart` 和 `SessionEnd` 可以在 TypeScript 中註冊為 SDK 回調 hooks,但在 Python SDK 中不可用(`HookEvent` 省略它們)。在 Python 中,它們僅作為[shell 命令 hooks](/zh-TW/hooks#hook-events) 在設定檔案中定義(例如 `.claude/settings.json`)。要從您的 SDK 應用程式載入 shell 命令 hooks,請使用 [`setting_sources`](/zh-TW/agent-sdk/python#settingsource) 或 [`settingSources`](/zh-TW/agent-sdk/typescript#settingsource) 包括適當的設定來源:844`SessionStart` 和 `SessionEnd` 可以在 TypeScript 中註冊為 SDK 回調 hooks,但在 Python SDK 中不可用(`HookEvent` 省略它們)。在 Python 中,它們僅作為[shell 命令 hooks](/zh-TW/hooks#hook-events) 在設定檔案中定義(例如 `.claude/settings.json`)。要從您的 SDK 應用程式載入 shell 命令 hooks,請使用 [`setting_sources`](/zh-TW/agent-sdk/python#settingsource) 或 [`settingSources`](/zh-TW/agent-sdk/typescript#settingsource) 包括適當的設定來源:

783 845 


797 859 

798要改為執行初始化邏輯作為 Python SDK 回調,請使用 `client.receive_response()` 的第一條訊息作為您的觸發器。860要改為執行初始化邏輯作為 Python SDK 回調,請使用 `client.receive_response()` 的第一條訊息作為您的觸發器。

799 861 

800### 子代理權限提示倍增862<h3 id="subagent-permission-prompts-multiplying">

863 子代理權限提示倍增

864</h3>

801 865 

802生成多個子代理時,每個子代理可能會分別請求權限。子代理不會自動繼承父代理權限。要避免重複提示,請使用 `PreToolUse` hooks 自動批准特定工具,或配置適用於子代理會話的權限規則。866生成多個子代理時,每個子代理可能會分別請求權限。子代理不會自動繼承父代理權限。要避免重複提示,請使用 `PreToolUse` hooks 自動批准特定工具,或配置適用於子代理會話的權限規則。

803 867 

804### 子代理的遞迴 hook 迴圈868<h3 id="recursive-hook-loops-with-subagents">

869 子代理的遞迴 hook 迴圈

870</h3>

805 871 

806生成子代理的 `UserPromptSubmit` hook 如果這些子代理觸發相同的 hook,可能會建立無限迴圈。要防止這種情況:872生成子代理的 `UserPromptSubmit` hook 如果這些子代理觸發相同的 hook,可能會建立無限迴圈。要防止這種情況:

807 873 


809* 使用共享變數或會話狀態來追蹤您是否已在子代理內875* 使用共享變數或會話狀態來追蹤您是否已在子代理內

810* 將 hooks 範圍限制為僅針對頂級代理會話執行876* 將 hooks 範圍限制為僅針對頂級代理會話執行

811 877 

812### systemMessage 未出現在輸出中878<h3 id="systemmessage-not-appearing-in-output">

879 systemMessage 未出現在輸出中

880</h3>

813 881 

814`systemMessage` 欄位向使用者顯示訊息,而不是模型。預設情況下,SDK 不會在訊息流中呈現 hook 輸出,因此除非您設定 `includeHookEvents`(Python 中的 `include_hook_events`),否則訊息可能不會出現。要改為將上下文傳遞給模型,請返回 [`additionalContext`](/zh-TW/hooks#add-context-for-claude)。882`systemMessage` 欄位向使用者顯示訊息,而不是模型。預設情況下,SDK 不會在訊息流中呈現 hook 輸出,因此除非您設定 `includeHookEvents`(Python 中的 `include_hook_events`),否則訊息可能不會出現。要改為將上下文傳遞給模型,請返回 [`additionalContext`](/zh-TW/hooks#add-context-for-claude)。

815 883 

816如果您需要可靠地將 hook 決定呈現給您的應用程式,請分別記錄它們或使用專用輸出頻道。884如果您需要可靠地將 hook 決定呈現給您的應用程式,請分別記錄它們或使用專用輸出頻道。

817 885 

818## 相關資源886<h2 id="related-resources">

887 相關資源

888</h2>

819 889 

820* [Claude Code hooks 參考](/zh-TW/hooks):完整的 JSON 輸入/輸出架構、事件文件和匹配器模式890* [Claude Code hooks 參考](/zh-TW/hooks):完整的 JSON 輸入/輸出架構、事件文件和匹配器模式

821* [Claude Code hooks 指南](/zh-TW/hooks-guide):shell 命令 hook 範例和逐步解說891* [Claude Code hooks 指南](/zh-TW/hooks-guide):shell 命令 hook 範例和逐步解說

Details

4 4 

5# 託管 Agent SDK5# 託管 Agent SDK

6 6 

7> 在生產環境中部署和託管 Claude Agent SDK7> 在生產環境中部署 Agent SDK:子流程架構、會話持久化、擴展、可觀測性和 Docker、Kubernetes 及沙箱提供商的多租戶隔離。

8 8 

9Claude Agent SDK 與傳統的無狀態 LLM API 不同,它維護對話狀態並在持久環境中執行命令本指南涵蓋了在生產環境中部署基於 SDK 的代理的架構託管考慮因素和最佳實踐9Agent SDK 會生成並監督一個擁有 shell、工作目錄和磁盤上會話文件的 `claude` CLI 子流程託管它不像託管無狀態 API 包裝器。每個運行的代理都是與本地狀態綁定的長期進程,這決定了您如何分配資源持久化會話以及跨租戶進行擴展

10 

11本頁涵蓋在您自己的基礎設施上自託管:了解[子流程模型](#the-subprocess-model)、[選擇會話模式](#choose-a-session-pattern)、[配置容器](#provision-the-container)以及[處理生產問題](#handle-production-concerns),如持久化、可觀測性、身份驗證和多租戶隔離。有關可部署的 Dockerfile 和 Kubernetes 清單,請參閱[託管指南](https://github.com/anthropics/claude-cookbooks/tree/main/claude_agent_sdk/hosting)。

12 

13如果您不需要基礎設施控制、自定義隔離或自己的數據平面,請改為考慮[託管代理](https://platform.claude.com/docs/en/managed-agents/overview):一個託管的 REST API,其中 Anthropic 運行代理和沙箱,因此您的應用程序發送事件並流回結果,無需操作任何託管基礎設施。

10 14 

11<Info>15<Info>

12 如需超越基本沙箱的安全強化(包括網路控制、認證管理和隔離選項),請參閱 [安全部署](/zh-TW/agent-sdk/secure-deployment)。16 如需超越基本沙箱的安全強化(包括網路控制、認證管理和隔離選項),請參閱[安全部署](/zh-TW/agent-sdk/secure-deployment)。

13</Info>17</Info>

14 18 

15## 託管要求19<h2 id="the-subprocess-model">

20 子進程模型

21</h2>

22 

23此頁面上的每個託管決策都遵循 SDK 如何運行代理的方式。當您的代碼調用 `query()` 時,SDK 會生成一個單獨的 `claude` CLI 進程,並通過 stdio 與其通信。該子進程擁有 shell、工作目錄和本地磁盤上的 JSONL 會話記錄。

24 

25<img src="https://mintcdn.com/claude-code/Akpoo6g0xDlAmvHv/images/agent-sdk/hosting-subprocess.svg?fit=max&auto=format&n=Akpoo6g0xDlAmvHv&q=85&s=d348cc9687d47e0bc954075fd88d0e60" alt="Request flow: client to your app, which spawns a claude CLI subprocess over stdio inside the container; the subprocess writes to local disk and calls api.anthropic.com over HTTPS" width="920" height="220" data-path="images/agent-sdk/hosting-subprocess.svg" />

26 

27一個代理會話映射到一個子進程。運行 N 個並發會話意味著 N 個子進程,每個都有自己的進程樹和記錄文件。默認情況下,它們都繼承您應用程序的工作目錄,因此當會話需要單獨的文件系統時,在每個 `query()` 調用上傳遞 `cwd`:

28 

29<CodeGroup>

30 ```typescript TypeScript theme={null}

31 query({ prompt, options: { cwd: "/work/session-a" } })

32 ```

33 

34 ```python Python theme={null}

35 query(prompt=prompt, options=ClaudeAgentOptions(cwd="/work/session-a"))

36 ```

37</CodeGroup>

38 

39<h3 id="state-that-lives-on-local-disk">

40 存儲在本地磁盤上的狀態

41</h3>

42 

43三種代理狀態默認存儲在容器的文件系統上。它們都不會在容器重新啟動、縮減或移動到不同節點時存活。

44 

45| 狀態 | 默認位置 |

46| ---------------- | --------------------------------------------------------------------- |

47| 會話記錄 | `~/.claude/projects/`,或如果設置了 `CLAUDE_CONFIG_DIR`,則為其下的 `projects/` 目錄 |

48| `CLAUDE.md` 內存文件 | 用戶層級的 `~/.claude/CLAUDE.md` 和項目層級的會話工作目錄 |

49| 工作目錄工件 | 會話的工作目錄 |

50 

51要在主機之間持久化記錄,請配置 [`SessionStore` 適配器](/zh-TW/agent-sdk/session-storage)。內存文件和其他工作目錄工件需要自己的存儲策略,例如掛載卷或對象存儲同步。

52 

53有關會話、恢復和分叉在 API 級別如何工作的信息,請參閱 [Sessions](/zh-TW/agent-sdk/sessions)。

54 

55<h2 id="choose-a-session-pattern">

56 選擇會話模式

57</h2>

58 

59這四種模式涵蓋會話生命週期:容器相對於其服務的會話存在多長時間。關於容器運行的位置,[託管食譜](https://github.com/anthropics/claude-cookbooks/blob/main/claude_agent_sdk/07_Hosting_the_agent.ipynb)提供了[可部署的代碼](https://github.com/anthropics/claude-cookbooks/tree/main/claude_agent_sdk/hosting),用於本地 Docker、Modal 和 Kubernetes。在此選擇會話模式,並從食譜中選擇部署目標。

60 

61<h3 id="ephemeral-sessions">

62 臨時會話

63</h3>

64 

65為每個用戶任務創建一個容器,並在任務完成時銷毀它。最適合一次性任務。用戶可能仍然可以在任務完成時與 AI 互動,但一旦完成,容器就會被銷毀。

66 

67示例工作負載包括錯誤調查和修復、發票和收據提取、文檔翻譯和媒體轉換。

68 

69容器運行一個一次性入口點,該入口點調用 SDK 並退出。下面的示例顯示了一個最小的 TypeScript 版本。將其保存為 `entrypoint.mts` 或在 `package.json` 中設置 `"type": "module"`,以便頂級 `await` 可用。

70 

71```typescript theme={null}

72import { query } from "@anthropic-ai/claude-agent-sdk";

73 

74const prompt = process.env.TASK_PROMPT!;

75for await (const message of query({ prompt, options: { maxTurns: 20 } })) {

76 console.log(message);

77}

78```

79 

80<h3 id="long-running-sessions">

81 長時間運行的會話

82</h3>

83 

84運行持久容器實例,通常在每個容器中託管多個 SDK 進程,以服務持續的工作。最適合採取自主行動、提供內容或處理高容量消息流的代理。

85 

86示例工作負載包括對傳入郵件進行分類和回應的電子郵件代理、通過容器端口託管每個用戶可編輯網站的網站構建器,以及處理來自 Slack 等平台的持續流量的聊天機器人。

87 

88容器公開 HTTP 或 WebSocket 端點,並將每個活動會話映射到長期查詢及其背後的子進程。在 TypeScript 中,使用 [`streamInput()`](/zh-TW/agent-sdk/typescript#query-object) 向活動會話添加轉換,並使用 [`startup()`](/zh-TW/agent-sdk/typescript#startup) 在傳入流量之前預熱子進程。在 Python 中,使用 [`ClaudeSDKClient`](/zh-TW/agent-sdk/python#claudesdkclient) 在多個轉換中保持會話打開。調整容器大小,使其能夠在內存中保持最大數量的並發會話。

89 

90<h3 id="hybrid-sessions">

91 混合會話

92</h3>

93 

94臨時容器在啟動時從 [`SessionStore`](/zh-TW/agent-sdk/session-storage) 進行補充,並將更新持久化回去。最適合跨越許多交互但在交互之間處於空閒狀態的會話。容器在空閒期間關閉,當用戶返回時重新啟動。

95 

96示例工作負載包括具有間歇性檢查的個人項目管理器、暫停和恢復數小時的深度研究,以及在交互中加載票證歷史記錄的客戶支持代理。

97 

98根據您期望用戶返回的頻率調整提供商的空閒超時。在沒有配置 `SessionStore` 的情況下關閉容器會丟失其轉錄,因此存儲對於此模式是必需的,而不是可選的。

99 

100該模式的關鍵在於通過 ID 恢復會話,並附加共享存儲:

101 

102<CodeGroup>

103 ```typescript TypeScript theme={null}

104 import { query, type SessionStore } from "@anthropic-ai/claude-agent-sdk";

105 

106 declare const userInput: string;

107 declare const sessionId: string; // looked up from your database by user

108 declare const sessionStore: SessionStore; // S3, Redis, Postgres, or your own adapter

109 

110 for await (const message of query({

111 prompt: userInput,

112 options: { resume: sessionId, sessionStore },

113 })) {

114 // ...

115 }

116 ```

117 

118 ```python Python theme={null}

119 from claude_agent_sdk import query, ClaudeAgentOptions

120 

121 async for message in query(

122 prompt=user_input,

123 options=ClaudeAgentOptions(

124 resume=session_id, # looked up from your database by user

125 session_store=session_store, # S3, Redis, Postgres, or your own adapter

126 ),

127 ):

128 ...

129 ```

130</CodeGroup>

131 

132有關完整的 `SessionStore` 接口和參考適配器,請參閱[會話存儲](/zh-TW/agent-sdk/session-storage)。

133 

134<h3 id="multi-agent-container">

135 多代理容器

136</h3>

137 

138在一個容器內運行多個 SDK 子進程。最適合必須密切協作的代理,例如多代理模擬,其中代理在共享環境中相互交互。

16 139 

17### 基於容器的沙箱140為每個代理提供自己的工作目錄,以便它們不會相互覆蓋文件,並隔離設置加載,以便每個代理的 `CLAUDE.md` 文件不會洩露到其他代理。有關特定選項,請參閱[多租戶隔離](#multi-tenant-isolation)。

18 141 

19為了安全和隔離,SDK 應在沙箱容器環境中運行。這提供了進程隔離、資源限制、網路控制和臨時文件系統。142<h2 id="provision-the-container">

143 配置容器

144</h2>

20 145 

21SDK 還支持 [程序化沙箱配置](/zh-TW/agent-sdk/typescript#sandbox-settings) 用於命令執行。146<h3 id="container-based-sandboxing">

147 基於容器的沙箱

148</h3>

22 149 

23### 系統要求150在沙箱容器內運行 SDK,以實現進程隔離、資源限制、網絡控制和臨時文件系統。多個提供商專門提供適合 Agent SDK 模型的沙箱容器環境。

24 151 

25每個 SDK 實例需要152選擇提供商時要回答的問題

26 153 

27* **運行時依賴項**154* **誰運行沙箱**:沙箱即服務提供商為您運營基礎設施,而自託管選項則提供您可在自己的基礎設施上運行的軟件。

28 * Python 3.10+ 用於 Python SDK,或 Node.js 18+ 用於 TypeScript SDK155* **冷啟動延遲**:從「創建沙箱」到「準備好接受第一個請求」需要多長時間。臨時模式需要亞秒級啟動。長期運行模式可以容忍更長的延遲。

29 * 兩個 SDK 套件都為主機平台捆綁了本機 Claude Code 二進制文件,因此不需要為生成的 CLI 單獨安裝 Claude Code 或 Node.js156* **持久存儲**:提供商是否提供持久卷或僅提供臨時磁盤。混合模式需要在沙箱內或沙箱旁邊的某處進行持久存儲。

157* **定價模型**:按秒、按請求或按小時固定計費。按秒計費適合突發性臨時工作負載。按小時計費適合長期運行的會話。

158* **網絡**:支持自定義出站規則、出站代理和私有 VPC 對等互連,用於受管制的環境。

30 159 

31* **資源分配**160要評估的提供商:

32 * 建議:1GiB RAM、5GiB 磁盤和 1 個 CPU(根據您的任務需要進行調整)

33 161 

34* **網路訪問**162* [Modal Sandbox](https://modal.com/docs/guide/sandbox),附帶[演示實現](https://modal.com/docs/examples/claude-slack-gif-creator)

35 * 出站 HTTPS 到 `api.anthropic.com`163* [Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)

36 * 可選:訪問 MCP 伺服器或外部工具164* [Daytona](https://www.daytona.io/)

165* [E2B](https://e2b.dev/)

166* [Fly Machines](https://fly.io/docs/machines/)

167* [Vercel Sandbox](https://vercel.com/docs/functions/sandbox)

37 168 

38## 理解 SDK 架構169有關自託管選項(如 Docker、gVisor Firecracker)以及詳細的隔離配置,請參閱[隔離技術](/zh-TW/agent-sdk/secure-deployment#isolation-technologies)。

39 170 

40與無狀態 API 調用不同,Claude Agent SDK 作為 **長時間運行的進程** 運行,該進程:171<h3 id="runtime-dependencies">

172 運行時依賴項

173</h3>

41 174 

42* **在持久 shell 環境中執行命令**175容器只需要您的 SDK 的語言運行時:

43* **在工作目錄內管理文件操作**

44* **使用來自先前交互的上下文處理工具執行**

45 176 

46## 沙箱提供商選項177* Python SDK 需要 Python 3.10+,或 TypeScript SDK 需要 Node.js 18+

178* 兩個 SDK 套件都為主機平台捆綁了本機 Claude Code 二進制文件,因此不需要為生成的 CLI 單獨安裝 Claude Code 或 Node.js

47 179 

48多個提供商專門提供用於 AI 代碼執行的安全容器環境180捆綁的二進制文件被固定到 SDK 套件版本,因此更新 SDK 是更新 CLI 的方式。SDK 遵循 semver持續採用補丁版本,並在採用次要版本之前查看 [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) 或 [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) 更改日誌。

49 181 

50* **[Modal Sandbox](https://modal.com/docs/guide/sandbox)** - [演示實現](https://modal.com/docs/examples/claude-slack-gif-creator)182<h3 id="resources">

51* **[Cloudflare Sandboxes](https://github.com/cloudflare/sandbox-sdk)**183 資源

52* **[Daytona](https://www.daytona.io/)**184</h3>

53* **[E2B](https://e2b.dev/)**

54* **[Fly Machines](https://fly.io/docs/machines/)**

55* **[Vercel Sandbox](https://vercel.com/docs/functions/sandbox)**

56 185 

57有關自託管選項(Docker、gVisorFirecracker)和詳細隔離配置,請參閱 [隔離技術](/zh-TW/agent-sdk/secure-deployment#isolation-technologies)。186每個代理的 1 GiB RAM5 GiB 磁盤和 1 個 CPU 是新啟動實例的合理起點。內存使用量隨著會話長度和工具活動而增長因此應根據您實際需要的會話長度和並發性進行調整,而不是根據空閒基線。有關如何計算每個主機的代理數量,請參閱[擴展和並發](#scaling-and-concurrency)。

58 187 

59## 生產部署模式188<h3 id="network">

189 網絡

190</h3>

60 191 

61### 模式 1:臨時會話192SDK 需要對 `api.anthropic.com` 的出站 HTTPS,或在 Bedrock 或 Vertex 上運行時對您提供商的區域端點的出站 HTTPS。如果您的代理使用 [MCP servers](/zh-TW/agent-sdk/mcp) 或外部工具,它們還需要對這些端點的出站訪問。對於生產環境,通過強制執行域名允許列表、注入憑證和記錄請求的出站代理路由出站流量。有關完整模式,請參閱[安全部署](/zh-TW/agent-sdk/secure-deployment)。

62 193 

63為每個用戶任務創建一個新容器然後在完成時銷毀它194對於入站流量在容器上公開 HTTP 或 WebSocket 端口您的應用程序在該端口上處理客戶端請求並在內部調用 SDK;子進程本身不在網絡上監聽。

64 195 

65最適合一次性任務,用戶可能仍然在任務完成時與 AI 交互,但一旦完成,容器就會被銷毀。196<h2 id="handle-production-concerns">

197 處理生產環境問題

198</h2>

66 199 

67**示例:**200在部署自託管代理之前,請完成這些決策。

68 201 

69* 錯誤調查和修復:使用相關上下文調試和解決特定問題202<h3 id="session-and-state-persistence">

70* 發票處理:從收據/發票中提取和結構化數據用於會計系統203 會話和狀態持久化

71* 翻譯任務:在語言之間翻譯文檔或內容批次204</h3>

72* 圖像/視頻處理:對媒體文件應用轉換、優化或提取元數據

73 205 

74### 模式 2:長時間運行的會話206預設本地磁碟在重新啟動、縮減或移至不同節點時會遺失。對於任何使用者期望恢復的會話,使用 [`SessionStore` 適配器](/zh-TW/agent-sdk/session-storage)將文字記錄鏡像到持久儲存。請參閱[參考實現](/zh-TW/agent-sdk/session-storage#reference-implementations)以了解 S3、Redis 和 Postgres 適配器,以及用於您自己實現的一致性測試套件。

75 207 

76為長時間運行的任務維護持久容器實例。通常在容器內根據需求運行 **多個** Claude Agent 進程。208關於 `SessionStore` 行為,有三件事需要了解:

77 209 

78最適合主動代理它們在沒有用戶輸入的情況下採取行動、提供內容的代理或處理大量消息的代理210* **僅文字記錄**:`SessionStore` 鏡像文字記錄而不是 `CLAUDE.md` 記憶檔案或其他工作目錄工件掛載共享磁碟區或分別同步這些檔案。

211* **鏡像,而非替換**:子程序首先寫入本地磁碟,然後存儲接收每個批次的副本。本地寫入保持權威性。

212* **`mirror_error` 訊息**:如果存儲拒絕或逾時,SDK 會發出 `{ type: "system", subtype: "mirror_error" }` 訊息並繼續查詢而不重試。如果存儲持久性很重要,請對這些進行警報。

79 213 

80**示例:**214<h3 id="observability">

215 可觀測性

216</h3>

81 217 

82* 電子郵件代理:監控傳入電子郵件並根據內容自主進行分類回應或採取行動218Agent SDK 代理是長期運行的程序,在許多 API 往返中生成工具呼叫。沒有遙測,您無法看到哪些工具運行它們花費了多長時間或會話在何處停滯。

83* 網站構建器:為每個用戶託管自定義網站,具有通過容器端口提供的實時編輯功能

84* 高頻聊天機器人:處理來自 Slack 等平台的連續消息流,其中快速響應時間至關重要

85 219 

86### 模式 3:混合會話220SDK 從環境繼承 OpenTelemetry 配置。在容器或編排器級別設定 OTEL 環境變數,以便每個 `query()` 呼叫都將跨度、指標和日誌事件匯出到您的收集器。下面的範例為所有三個信號啟用 OTLP 匯出。`CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` 僅對跟蹤是必需的;如果您僅匯出指標和日誌,請省略它。

87 221 

88臨時容器,使用歷史和狀態進行補充,可能來自數據庫或 SDK 的會話恢復功能。222```bash title=".env' theme={null}

223CLAUDE_CODE_ENABLE_TELEMETRY=1

224CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1

225OTEL_TRACES_EXPORTER=otlp

226OTEL_METRICS_EXPORTER=otlp

227OTEL_LOGS_EXPORTER=otlp

228OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf

229OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318

230```

89 231 

90最適合與用戶進行間歇性交互的容器啟動工作並在工作完成時關閉但可以繼續232預設情況下匯出中不包含提示文字和工具輸入。請參閱[控制匯出中的敏感資料](/zh-TW/agent-sdk/observability#control-sensitive-data-in-exports)以了解選擇加入標誌以及[可觀測性](/zh-TW/agent-sdk/observability)以了解完整的信號目錄

91 233 

92**示例:**234<h3 id="auth-and-secrets">

235 驗證和祕密

236</h3>

93 237 

94* 個人項目經理幫助管理進行中的項目,進行間歇性檢查,維護任務、決策和進度的上下文238託管時有三個驗證問題很重要

95* 深度研究:進行多小時的研究任務,保存發現並在用戶返回時恢復調查

96* 客戶支持代理:處理跨越多個交互的支持票證,加載票證歷史和客戶上下文

97 239 

98### 模式 4單個容器240* **Anthropic API**子程序從其環境讀取 `ANTHROPIC_API_KEY`。從您的祕密管理器提供它,或設定 `ANTHROPIC_BASE_URL` 以透過在容器外注入金鑰的代理路由模型呼叫。請參閱[認證管理](/zh-TW/agent-sdk/secure-deployment#credential-management)以了解代理模式,以及[SDK 概述](/zh-TW/agent-sdk/overview#get-started)以了解支援的驗證方法。

241* **入站**:在代理容器前面的閘道處放置驗證。代理應接收預先驗證的請求,不應是驗證使用者令牌的元件。

242* **出站工具**:將工具認證保留在代理環境之外。透過在請求離開容器後注入 API 金鑰的代理路由出站呼叫。代理進行呼叫;代理添加認證。

99 243 

100在一個全局容器中運行多個 Claude Agent SDK 進程。244<h3 id="scaling-and-concurrency">

245 縮放和並行

246</h3>

101 247 

102最適合必須密切協作的代理。這可能是最不受歡迎的模式因為您必須防止代理相互覆蓋248每個會話在其自己的子程序中運行因此主機上的並行受其 RAM 可以容納多少個子程序的限制

103 249 

104**示例**250使用此公式調整每個主機的大小

105 251 

106* **模擬**:在模擬(如視頻遊戲)中相互交互的代理。252```text theme={null}

253agents per host = (host RAM - overhead) / (per-session RAM ceiling)

254```

107 255 

108## 常見問題256透過在您的目標長度下運行代表性會話並在預期的工具負載下記錄峰值 RSS 來測量每個會話的上限。[資源](#resources)中的 1 GiB 起點是下限,而不是上限。

109 257 

110### 我如何與我的沙箱通信?258水平縮放路由取決於您的模式。對於長時間運行的會話,其中容器保持許多會話,在負載平衡器後面運行容器池,並使用 `sessionId` 上的一致性雜湊將每個會話固定到一個容器。固定的會話會持續命中同一容器,因此會命中同一運行中的子程序,直到它被驅逐或容器重新啟動。

111 259 

112在容器中託管時,公開端口以與您的 SDK 實例通信您的應用程序可以為外部客戶端公開 HTTP/WebSocket 端點而 SDK 在容器內部運行260來自單個會話的大量並行[子代理](/zh-TW/agent-sdk/subagents)可能會達到 API 速率限制將工作分解為較小的批次而不是發出一個寬廣的調度

113 261 

114### 託管容器的成本是多少?262<h3 id="cost">

263 成本

264</h3>

115 265 

116提供代理的主要成本是令牌;容器根據您配置的內容而異,但最低成本大約是每小時 5 美分266Anthropic 令牌成本通常主導容器基礎設施成本一個數量級或更多。最小配置的容器大約每小時運行 \$0.05,而單個長代理會話可能花費數美元的令牌請參閱[成本追蹤](/zh-TW/agent-sdk/cost-tracking)以了解每個會話的令牌計帳。

117 267 

118### 我應該何時關閉空閒容器與保持它們溫暖?268<h3 id="multi-tenant-isolation">

269 多租戶隔離

270</h3>

119 271 

120這可能取決於提供商,不同的沙箱提供商將允許您為空閒超時設置不同的條件之後沙箱可能會關閉272預設 SDK 行為從檔案系統讀取設定和 `CLAUDE.md` 記憶檔案。在為多個租戶提供服務的共享容器中這些檔案可能會將一個租戶的上下文洩露到另一個租戶的會話中

121您需要根據您認為用戶響應可能的頻率來調整此超時。

122 273 

123### 我應該多久更新一次 Claude Code CLI?274要在共享容器內隔離租戶:

124 275 

125Claude Code CLI 使用 semver 進行版本控制因此任何破壞性更改都將被版本化276* TypeScript 中傳遞 `settingSources: []` 或在 Python 中傳遞 `setting_sources=[]`以便不載入檔案系統設定

277* 在 `env` 中設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`。[自動記憶](/zh-TW/memory#auto-memory)在 `~/.claude/projects/<project>/memory/` 載入系統提示,無論 `settingSources` 如何。請參閱[settingSources 不控制的內容](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control)以了解無條件載入的其他輸入。

278* 將 `CLAUDE_CONFIG_DIR` 指向每個租戶目錄,以便租戶不共享 `~/.claude.json` 全域配置。

279* 使用每個租戶的工作目錄。在每個 `query()` 呼叫上明確傳遞 `cwd`。

280* 在您的代理處應用每個租戶的出站規則,例如不同的出站 IP、認證或網域允許清單,以便受損的租戶無法透過另一個租戶的出站原則進行資料外洩。

126 281 

127### 我如何監控容器健康和代理性能?282下面的範例將四個 SDK 級別的選項應用在一起。構造 `tenantDir` 和 `configDir`,以便每個租戶獲得其他租戶無法讀取的路徑。在 TypeScript 中,`env` 替換子程序環境,因此展開 `...process.env` 以保留繼承的變數,如 `PATH` 和 `ANTHROPIC_API_KEY`。在 Python 中,`env` 合併在繼承的環境之上。

128 283 

129由於容器只是伺服器,您用於後端的相同日誌記錄基礎設施將適用於容器。284<CodeGroup>

285 ```typescript TypeScript theme={null}

286 import { query } from "@anthropic-ai/claude-agent-sdk";

130 287 

131### 代理會話在超時前可以運行多長時間?288 declare const prompt: string;

289 declare const tenantDir: string;

290 declare const configDir: string;

132 291 

133代理會話不會超時,但考慮設置 'maxTurns' 屬性以防止 Claude 陷入循環。292 for await (const message of query({

293 prompt,

294 options: {

295 cwd: tenantDir,

296 settingSources: [],

297 env: {

298 ...process.env,

299 CLAUDE_CONFIG_DIR: configDir,

300 CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1",

301 },

302 },

303 })) {

304 // ...

305 }

306 ```

134 307 

135## 後續步驟308 ```python Python theme={null}

309 from claude_agent_sdk import query, ClaudeAgentOptions

310 

311 async for message in query(

312 prompt=prompt,

313 options=ClaudeAgentOptions(

314 cwd=tenant_dir,

315 setting_sources=[],

316 env={

317 "CLAUDE_CONFIG_DIR": config_dir,

318 "CLAUDE_CODE_DISABLE_AUTO_MEMORY": "1",

319 },

320 ),

321 ):

322 ...

323 ```

324</CodeGroup>

325 

326如需每個租戶的網路控制,請參閱[安全部署](/zh-TW/agent-sdk/secure-deployment)。

327 

328<h2 id="known-limitations">

329 已知限制

330</h2>

136 331 

137* [安全部署](/zh-TW/agent-sdk/secure-deployment) - 網路控制、認證管理和隔離強化332在您的部署設計中規劃這些限制。

138* [TypeScript SDK - Sandbox Settings](/zh-TW/agent-sdk/typescript#sandbox-settings) - 以程序方式配置沙箱333 

139* [會話指南](/zh-TW/agent-sdk/sessions) - 了解會話管理334| 限制 | 解決方案 |

140* [權限](/zh-TW/agent-sdk/permissions) - 配置工具權限335| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141* [成本追蹤](/zh-TW/agent-sdk/cost-tracking) - 監控 API 使用情況336| 沒有頂級會話超時 | 會話不會自動超時。在 `Options` 中設置 `maxTurns` 以限制代理在停止前進行多少次工具使用往返。 |

142* [MCP 集成](/zh-TW/agent-sdk/mcp) - 使用自定義工具進行擴展337| 長會話期間的記憶體增長 | 限制會話長度或定期回收子流程。請參閱 [Scaling and concurrency](#scaling-and-concurrency)。 |

338| 大規模並行子代理扇出可能會觸發速率限制 | 將工作分解為較小的批次,而不是發出一次寬泛的調度。 |

339| 沒有每個子代理的牆鐘截止時間 | 使用 `AgentDefinition` 中的 `maxTurns` 限制每個 [subagent](/zh-TW/agent-sdk/subagents)。僅對於後台子代理,`CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` 設置一個停滯監視程序,當 `run_in_background` 子代理停止產生輸出時觸發;它不是總運行時間截止時間。 |

340 

341<h2 id="next-steps">

342 後續步驟

343</h2>

344 

345* [Hosting cookbook](https://github.com/anthropics/claude-cookbooks/blob/main/claude_agent_sdk/07_Hosting_the_agent.ipynb):包含 Docker、Modal 和 Kubernetes 的[可部署程式碼](https://github.com/anthropics/claude-cookbooks/tree/main/claude_agent_sdk/hosting)的筆記本逐步解說。

346* [Session storage](/zh-TW/agent-sdk/session-storage):使用 `SessionStore` 配接器在主機間保留文字記錄。

347* [Observability](/zh-TW/agent-sdk/observability):將 OTEL 追蹤、指標和日誌匯出到您的收集器。

348* [Secure deployment](/zh-TW/agent-sdk/secure-deployment):網路控制、認證管理和隔離強化。

349* [Cost tracking](/zh-TW/agent-sdk/cost-tracking):每個會話的權杖和成本計算。

agent-sdk/mcp.md +12 −12

Details

152 152 

153MCP 工具遵循命名模式 `mcp__<server-name>__<tool-name>`。例如,名為 `"github"` 的 GitHub 伺服器,其 `list_issues` 工具變為 `mcp__github__list_issues`。153MCP 工具遵循命名模式 `mcp__<server-name>__<tool-name>`。例如,名為 `"github"` 的 GitHub 伺服器,其 `list_issues` 工具變為 `mcp__github__list_issues`。

154 154 

155### 使用 allowedTools 授予訪問權限155### 使用 allowedTools 自動批准

156 156 

157使用 `allowedTools` 指定 Claude 可以使用哪些 MCP 工具:157使用 `allowedTools` 自動批准特定的 MCP 工具,讓 Claude 可以在沒有權限提示的情況下使用它們

158 158 

159```typescript hidelines={1,-1} theme={null}159```typescript hidelines={1,-1} theme={null}

160const _ = {160const _ = {


719 719 

720## 故障排除720## 故障排除

721 721 

722### 伺服器顯示"失敗"狀態722### 伺服器顯示失敗狀態

723 723 

724檢查 `init` 消息以查看哪些伺服器無法連接724檢查 `init` 訊息以查看哪些伺服器無法連接

725 725 

726```typescript theme={null}726```typescript theme={null}

727if (message.type === "system" && message.subtype === "init") {727if (message.type === "system" && message.subtype === "init") {


735 735 

736常見原因:736常見原因:

737 737 

738* **缺少環境變數**:確保設置了所需的令牌和憑據。對於 stdio 伺服器,檢查 `env` 字段是否與伺服器期望的相匹配738* **缺少環境變數**:確保設置了所需的令牌和憑證。對於 stdio 伺服器,檢查 `env` 欄位是否與伺服器期望的相符

739* **伺服器未安裝**:對於 `npx` 命令,驗證包存在且 Node.js 在您的 PATH 中。739* **伺服器未安裝**:對於 `npx` 命令,驗證套件存在且 Node.js 在您的 PATH 中。

740* **無效的連接字符串**:對於資料庫伺服器,驗證連接字符串格式以及資料庫是否可訪問740* **無效的連接字串**:對於資料庫伺服器,驗證連接字串格式以及資料庫是否可存取

741* **網絡問題**:對於遠程 HTTP/SSE 伺服器,檢查 URL 是否可訪問以及任何防火牆是否允許連接741* **網路問題**:對於遠端 HTTP/SSE 伺服器,檢查 URL 是否可存取以及任何防火牆是否允許連接

742 742 

743### 工具未被調用743### 工具未被呼叫

744 744 

745如果 Claude 看到工具但不使用它們,請檢查您是否已使用 `allowedTools` 授予權限:745如果 Claude 看到工具但不使用它們,請檢查您是否已使用 `allowedTools` 授予權限:

746 746 


750 mcpServers: {750 mcpServers: {

751 // your servers751 // your servers

752 },752 },

753 allowedTools: ["mcp__servername__*"] // Required for Claude to use the tools753 allowedTools: ["mcp__servername__*"] // 自動核准來自此伺服器的呼叫

754 }754 }

755};755};

756```756```

757 757 

758### 連接超時758### 連接逾時

759 759 

760MCP SDK 對伺服器連接的默認超時為 60 秒。如果您的伺服器需要更長時間才能啟動,連接將失敗。對於需要更多啟動時間的伺服器,請考慮:760MCP SDK 對伺服器連接的預設逾時為 60 秒。如果您的伺服器需要更長時間才能啟動,連接將失敗。對於需要更多啟動時間的伺服器,請考慮:

761 761 

762* 使用更輕量級的伺服器(如果可用)762* 使用更輕量級的伺服器(如果可用)

763* 在啟動代理程式前預熱伺服器763* 在啟動代理程式前預熱伺服器

Details

6 6 

7> 將 Claude Code TypeScript 和 Python SDK 遷移至 Claude Agent SDK 的指南7> 將 Claude Code TypeScript 和 Python SDK 遷移至 Claude Agent SDK 的指南

8 8 

9## 概述9<h2 id="overview">

10 概述

11</h2>

10 12 

11Claude Code SDK 已重新命名為 **Claude Agent SDK**,其文檔已重新組織。此變更反映了該 SDK 在構建超越編碼任務的 AI 代理方面的更廣泛功能。13Claude Code SDK 已重新命名為 **Claude Agent SDK**,其文檔已重新組織。此變更反映了該 SDK 在構建超越編碼任務的 AI 代理方面的更廣泛功能。

12 14 

13## 變更內容15<h2 id="what-s-changed">

16 變更內容

17</h2>

14 18 

15| 方面 | 舊版 | 新版 |19| 方面 | 舊版 | 新版 |

16| :--------------- | :-------------------------- | :------------------------------- |20| :--------------- | :-------------------------- | :------------------------------- |


22 **文檔變更:** Agent SDK 文檔已從 Claude Code 文檔移至 API 指南下的專用 [Agent SDK](/zh-TW/agent-sdk/overview) 部分。Claude Code 文檔現在專注於 CLI 工具和自動化功能。26 **文檔變更:** Agent SDK 文檔已從 Claude Code 文檔移至 API 指南下的專用 [Agent SDK](/zh-TW/agent-sdk/overview) 部分。Claude Code 文檔現在專注於 CLI 工具和自動化功能。

23</Note>27</Note>

24 28 

25## 遷移步驟29<h2 id="migration-steps">

30 遷移步驟

31</h2>

26 32 

27### 針對 TypeScript/JavaScript 專案33<h3 id="for-typescript/javascript-projects">

34 針對 TypeScript/JavaScript 專案

35</h3>

28 36 

29**1. 卸載舊套件:**37**1. 卸載舊套件:**

30 38 


76 84 

77就這樣!無需進行其他代碼變更。85就這樣!無需進行其他代碼變更。

78 86 

79### 針對 Python 專案87<h3 id="for-python-projects">

88 針對 Python 專案

89</h3>

80 90 

81**1. 卸載舊套件:**91**1. 卸載舊套件:**

82 92 


122 132 

123進行完成遷移所需的任何代碼變更。133進行完成遷移所需的任何代碼變更。

124 134 

125## 重大變更135<h2 id="breaking-changes">

136 重大變更

137</h2>

126 138 

127<Warning>139<Warning>

128 為了改進隔離和明確配置,Claude Agent SDK v0.1.0 為從 Claude Code SDK 遷移的用戶引入了重大變更。在遷移前請仔細檢查本部分。140 為了改進隔離和明確配置,Claude Agent SDK v0.1.0 為從 Claude Code SDK 遷移的用戶引入了重大變更。在遷移前請仔細檢查本部分。

129</Warning>141</Warning>

130 142 

131### Python:ClaudeCodeOptions 重新命名為 ClaudeAgentOptions143<h3 id="python-claudecodeoptions-renamed-to-claudeagentoptions">

144 Python:ClaudeCodeOptions 重新命名為 ClaudeAgentOptions

145</h3>

132 146 

133**變更內容:** Python SDK 類型 `ClaudeCodeOptions` 已重新命名為 `ClaudeAgentOptions`。147**變更內容:** Python SDK 類型 `ClaudeCodeOptions` 已重新命名為 `ClaudeAgentOptions`。

134 148 


148 162 

149**為什麼變更:** 類型名稱現在與「Claude Agent SDK」品牌相符,並在 SDK 的命名約定中提供一致性。163**為什麼變更:** 類型名稱現在與「Claude Agent SDK」品牌相符,並在 SDK 的命名約定中提供一致性。

150 164 

151### 系統提示不再是預設值165<h3 id="system-prompt-no-longer-default">

166 系統提示不再是預設值

167</h3>

152 168 

153**變更內容:** SDK 不再預設使用 Claude Code 的系統提示。169**變更內容:** SDK 不再預設使用 Claude Code 的系統提示。

154 170 


205 221 

206**為什麼變更:** 為 SDK 應用程式提供更好的控制和隔離。您現在可以構建具有自訂行為的代理,而無需繼承 Claude Code 的 CLI 焦點指令。222**為什麼變更:** 為 SDK 應用程式提供更好的控制和隔離。您現在可以構建具有自訂行為的代理,而無需繼承 Claude Code 的 CLI 焦點指令。

207 223 

208### 設定來源預設值224<h3 id="settings-sources-default">

225 設定來源預設值

226</h3>

209 227 

210此預設值在 v0.1.0 中曾短暫變更,然後被還原,因此無需進行遷移操作。228此預設值在 v0.1.0 中曾短暫變更,然後被還原,因此無需進行遷移操作。

211 229 


257 SDK v0.1.0 曾短暫預設為未載入任何設定;這在後續版本中被還原。Python SDK 0.1.59 及更早版本將空清單視為與省略選項相同,因此在依賴 `setting_sources=[]` 之前請升級。請參閱 [settingSources 不控制的內容](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 以了解即使 `settingSources` 為 `[]` 時也會讀取的輸入。275 SDK v0.1.0 曾短暫預設為未載入任何設定;這在後續版本中被還原。Python SDK 0.1.59 及更早版本將空清單視為與省略選項相同,因此在依賴 `setting_sources=[]` 之前請升級。請參閱 [settingSources 不控制的內容](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 以了解即使 `settingSources` 為 `[]` 時也會讀取的輸入。

258</Note>276</Note>

259 277 

260## 為什麼重新命名?278<h2 id="why-the-rename">

279 為什麼重新命名?

280</h2>

261 281 

262Claude Code SDK 最初是為編碼任務設計的,但它已發展成為構建所有類型 AI 代理的強大框架。新名稱「Claude Agent SDK」更好地反映了其功能:282Claude Code SDK 最初是為編碼任務設計的,但它已發展成為構建所有類型 AI 代理的強大框架。新名稱「Claude Agent SDK」更好地反映了其功能:

263 283 


265* 建立專門的編碼代理(SRE 機器人、安全審查員、代碼審查代理)285* 建立專門的編碼代理(SRE 機器人、安全審查員、代碼審查代理)

266* 為任何領域開發自訂代理,具有工具使用、MCP 整合等功能286* 為任何領域開發自訂代理,具有工具使用、MCP 整合等功能

267 287 

268## 獲取幫助288<h2 id="getting-help">

289 獲取幫助

290</h2>

269 291 

270如果您在遷移過程中遇到任何問題:292如果您在遷移過程中遇到任何問題:

271 293 


2812. 驗證您的 requirements.txt 或 pyproject.toml 具有新套件名稱3032. 驗證您的 requirements.txt 或 pyproject.toml 具有新套件名稱

2823. 執行 `pip install claude-agent-sdk` 以確保套件已安裝3043. 執行 `pip install claude-agent-sdk` 以確保套件已安裝

283 305 

284## 後續步驟306<h2 id="next-steps">

307 後續步驟

308</h2>

285 309 

286* 探索 [Agent SDK 概述](/zh-TW/agent-sdk/overview) 以了解可用功能310* 探索 [Agent SDK 概述](/zh-TW/agent-sdk/overview) 以了解可用功能

287* 查看 [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript) 以取得詳細的 API 文檔311* 查看 [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript) 以取得詳細的 API 文檔

Details

15* [比較四種方法](#compare-the-four-approaches),按持久性、範圍和它們保留的內容進行比較15* [比較四種方法](#compare-the-four-approaches),按持久性、範圍和它們保留的內容進行比較

16* [組合方法](#combine-approaches),將自訂方法分層組合在一起16* [組合方法](#combine-approaches),將自訂方法分層組合在一起

17 17 

18## 系統提示詞如何運作18<h2 id="how-system-prompts-work">

19 系統提示詞如何運作

20</h2>

19 21 

20系統提示詞是初始指令集,塑造了 Claude 在整個對話中的行為方式。Agent SDK 有三個起點:22系統提示詞是初始指令集,塑造了 Claude 在整個對話中的行為方式。Agent SDK 有三個起點:

21 23 


23* **`claude_code` 預設**:Claude Code CLI 使用的完整系統提示詞,包含工具使用指令、程式碼風格和格式化指南、回應語氣和詳細程度規則、安全和防護指令,以及關於工作目錄和環境的上下文。在 TypeScript 中設定 `systemPrompt: { type: "preset", preset: "claude_code" }`,或在 Python 中設定 `system_prompt={"type": "preset", "preset": "claude_code"}`,可選擇使用 `append` 在末尾新增您自己的指令。25* **`claude_code` 預設**:Claude Code CLI 使用的完整系統提示詞,包含工具使用指令、程式碼風格和格式化指南、回應語氣和詳細程度規則、安全和防護指令,以及關於工作目錄和環境的上下文。在 TypeScript 中設定 `systemPrompt: { type: "preset", preset: "claude_code" }`,或在 Python 中設定 `system_prompt={"type": "preset", "preset": "claude_code"}`,可選擇使用 `append` 在末尾新增您自己的指令。

24* **自訂字串**:您自己撰寫的提示詞。SDK 只會傳送您提供的內容。26* **自訂字串**:您自己撰寫的提示詞。SDK 只會傳送您提供的內容。

25 27 

26### 決定起點28<h3 id="decide-on-a-starting-point">

29 決定起點

30</h3>

27 31 

28決定因素是您的代理與 Claude Code 的相似程度:一個在儲存庫中運作的編碼代理,有人類監看串流輸出並引導工作。您的產品離該情況越遠,您就越想撰寫自己的提示詞。32決定因素是您的代理與 Claude Code 的相似程度:一個在儲存庫中運作的編碼代理,有人類監看串流輸出並引導工作。您的產品離該情況越遠,您就越想撰寫自己的提示詞。

29 33 


43 47 

44[比較表](#compare-the-four-approaches)顯示每種自訂方法保留的內容。48[比較表](#compare-the-four-approaches)顯示每種自訂方法保留的內容。

45 49 

46## 自訂代理程式行為50<h2 id="customize-agent-behavior">

51 自訂代理程式行為

52</h2>

47 53 

48輸出樣式、`append` 和自訂提示詞字串各自直接改變系統提示詞。CLAUDE.md 採用不同的路徑:SDK 讀取它並將其內容作為專案上下文注入對話中,而不是注入系統提示詞,因此它與您選擇的任何系統提示詞一起塑造行為。[Skills](/zh-TW/agent-sdk/skills)、[hooks](/zh-TW/agent-sdk/hooks) 和 [permissions](/zh-TW/agent-sdk/permissions) 也在系統提示詞之外塑造行為,並在各自的頁面上涵蓋。54輸出樣式、`append` 和自訂提示詞字串各自直接改變系統提示詞。CLAUDE.md 採用不同的路徑:SDK 讀取它並將其內容作為專案上下文注入對話中,而不是注入系統提示詞,因此它與您選擇的任何系統提示詞一起塑造行為。[Skills](/zh-TW/agent-sdk/skills)、[hooks](/zh-TW/agent-sdk/hooks) 和 [permissions](/zh-TW/agent-sdk/permissions) 也在系統提示詞之外塑造行為,並在各自的頁面上涵蓋。

49 55 

50### 專案級指令的 CLAUDE.md 檔案56<h3 id="claude-md-files-for-project-level-instructions">

57 專案級指令的 CLAUDE.md 檔案

58</h3>

51 59 

52CLAUDE.md 檔案為 Claude 提供持久的專案上下文和指令。SDK 將其內容注入對話中,而不是注入系統提示詞,因此它們適用於任何系統提示詞配置。關於在 CLAUDE.md 中放入什麼、放在哪裡以及如何編寫有效的指令,請參閱 [Claude 如何記住您的專案](/zh-TW/memory)。本節涵蓋 SDK 特定的內容:CLAUDE.md 如何載入。60CLAUDE.md 檔案為 Claude 提供持久的專案上下文和指令。SDK 將其內容注入對話中,而不是注入系統提示詞,因此它們適用於任何系統提示詞配置。關於在 CLAUDE.md 中放入什麼、放在哪裡以及如何編寫有效的指令,請參閱 [Claude 如何記住您的專案](/zh-TW/memory)。本節涵蓋 SDK 特定的內容:CLAUDE.md 如何載入。

53 61 

54當匹配的設定來源已啟用時,SDK 讀取 CLAUDE.md:`'project'` 從工作目錄載入 `CLAUDE.md` 或 `.claude/CLAUDE.md`,`'user'` 載入 `~/.claude/CLAUDE.md`。預設 `query()` 選項啟用兩個來源,因此 CLAUDE.md 會自動載入。如果您在 TypeScript 中明確設定 `settingSources` 或在 Python 中設定 `setting_sources`,請包含您需要的來源。CLAUDE.md 載入由設定來源控制,而不是由 `claude_code` 預設值控制。62當匹配的設定來源已啟用時,SDK 讀取 CLAUDE.md:`'project'` 從工作目錄載入 `CLAUDE.md` 或 `.claude/CLAUDE.md`,`'user'` 載入 `~/.claude/CLAUDE.md`。預設 `query()` 選項啟用兩個來源,因此 CLAUDE.md 會自動載入。如果您在 TypeScript 中明確設定 `settingSources` 或在 Python 中設定 `setting_sources`,請包含您需要的來源。CLAUDE.md 載入由設定來源控制,而不是由 `claude_code` 預設值控制。

55 63 

56#### 使用 SDK 載入 CLAUDE.md64<h4 id="load-claude-md-with-the-sdk">

65 使用 SDK 載入 CLAUDE.md

66</h4>

57 67 

58要載入 CLAUDE.md,請設定 `settingSources` 以包含您的 CLAUDE.md 所在的級別。下面的範例載入專案級 CLAUDE.md 以及 `claude_code` 預設值,因此 Claude 同時具有完整的編碼代理程式提示詞和您專案的約定:68要載入 CLAUDE.md,請設定 `settingSources` 以包含您的 CLAUDE.md 所在的級別。下面的範例載入專案級 CLAUDE.md 以及 `claude_code` 預設值,因此 Claude 同時具有完整的編碼代理程式提示詞和您專案的約定:

59 69 


102 112 

103CLAUDE.md 在專案的所有會話中持續存在,通過 git 與您的團隊共享,並自動發現而無需程式碼變更。如果您傳遞空的 `settingSources` 陣列,則不會載入。113CLAUDE.md 在專案的所有會話中持續存在,通過 git 與您的團隊共享,並自動發現而無需程式碼變更。如果您傳遞空的 `settingSources` 陣列,則不會載入。

104 114 

105### 輸出樣式用於持久配置115<h3 id="output-styles-for-persistent-configurations">

116 輸出樣式用於持久配置

117</h3>

106 118 

107輸出樣式是修改 Claude 系統提示詞的已儲存配置。它們儲存為 markdown 檔案,可以在會話和專案中重複使用。119輸出樣式是修改 Claude 系統提示詞的已儲存配置。它們儲存為 markdown 檔案,可以在會話和專案中重複使用。

108 120 

109#### 建立輸出樣式121<h4 id="create-an-output-style">

122 建立輸出樣式

123</h4>

110 124 

111輸出樣式是一個 markdown 檔案,其 [frontmatter](/zh-TW/output-styles#frontmatter) 中有中繼資料,後面跟著提示詞內容。將其儲存到 `~/.claude/output-styles/` 以獲得在每個專案中可用的使用者級樣式,或儲存到您的儲存庫中的 `.claude/output-styles/` 以獲得可以提交並與您的團隊共享的專案級樣式。125輸出樣式是一個 markdown 檔案,其 [frontmatter](/zh-TW/output-styles#frontmatter) 中有中繼資料,後面跟著提示詞內容。將其儲存到 `~/.claude/output-styles/` 以獲得在每個專案中可用的使用者級樣式,或儲存到您的儲存庫中的 `.claude/output-styles/` 以獲得可以提交並與您的團隊共享的專案級樣式。

112 126 


1304. Rate code quality (1-10)1444. Rate code quality (1-10)

131```145```

132 146 

133#### 啟用輸出樣式147<h4 id="activate-an-output-style">

148 啟用輸出樣式

149</h4>

134 150 

135建立後,通過以下方式啟用輸出樣式:151建立後,通過以下方式啟用輸出樣式:

136 152 

137* **CLI**:執行 `/config` 並選擇輸出樣式153* **CLI**:執行 `/config` 並選擇輸出樣式

138* **設定**:在 `.claude/settings.local.json` 中設定 `outputStyle`154* **設定**:在 `.claude/settings.local.json` 中設定 `outputStyle`

139* **TypeScript SDK**: `options.outputStyle` 設定為樣式的名稱155* **TypeScript SDK**:在傳遞給 `query()` 的內聯 `settings` 物件內設定 `outputStyle`,或將 `settings` 指向設定該值的設定檔。`outputStyle` 不是頂級 `Options` 欄位

140 156 

141Python SDK 沒有以程式設計方式選擇輸出樣式的選項。對於無法寫入 `.claude/settings.local.json` 的僅程式碼部署,請改用 `append` 或自訂提示詞字串。157Python SDK 沒有以程式設計方式選擇輸出樣式的選項。對於無法寫入 `.claude/settings.local.json` 的僅程式碼部署,請改用 `append` 或自訂提示詞字串。

142 158 

143**SDK 使用者注意:** 當您在選項中包含 `settingSources: ['user']` 或 `settingSources: ['project']`(TypeScript)/ `setting_sources=["user"]` 或 `setting_sources=["project"]`(Python)時,輸出樣式會被載入。159**SDK 使用者注意:** 當您在選項中包含 `settingSources: ['user']` 或 `settingSources: ['project']`(TypeScript)/ `setting_sources=["user"]` 或 `setting_sources=["project"]`(Python)時,輸出樣式會被載入。

144 160 

145### 附加到 `claude_code` 預設值161<h3 id="append-to-the-claude_code-preset">

162 附加到 `claude_code` 預設值

163</h3>

146 164 

147您可以使用 Claude Code 預設值搭配 `append` 屬性來新增自訂指令,同時保留所有內建功能。165您可以使用 Claude Code 預設值搭配 `append` 屬性來新增自訂指令,同時保留所有內建功能。

148 166 


190 ```208 ```

191</CodeGroup>209</CodeGroup>

192 210 

193#### 改進跨使用者和機器的提示詞快取211<h4 id="improve-prompt-caching-across-users-and-machines">

212 改進跨使用者和機器的提示詞快取

213</h4>

194 214 

195預設情況下,使用相同 `claude_code` 預設值和 `append` 文字的兩個會話,如果從不同的工作目錄執行,仍然無法共享提示詞快取項目。這是因為預設值在您的 `append` 文字之前在系統提示詞中嵌入了每個會話的上下文:工作目錄、它是否為 git 儲存庫、平台、活動 shell、OS 版本和自動記憶路徑。該上下文中的任何差異都會產生不同的系統提示詞和快取未命中。CLAUDE.md 內容不會影響系統提示詞快取,因為 SDK 將其注入對話中,而不是系統提示詞。215預設情況下,使用相同 `claude_code` 預設值和 `append` 文字的兩個會話,如果從不同的工作目錄執行,仍然無法共享提示詞快取項目。這是因為預設值在您的 `append` 文字之前在系統提示詞中嵌入了每個會話的上下文:工作目錄、它是否為 git 儲存庫、平台、活動 shell、OS 版本和自動記憶路徑。該上下文中的任何差異都會產生不同的系統提示詞和快取未命中。CLAUDE.md 內容不會影響系統提示詞快取,因為 SDK 將其注入對話中,而不是系統提示詞。

196 216 


243 263 

244對於非互動式 CLI 模式中的等效旗標,請參閱 [`--exclude-dynamic-system-prompt-sections`](/zh-TW/cli-reference)。264對於非互動式 CLI 模式中的等效旗標,請參閱 [`--exclude-dynamic-system-prompt-sections`](/zh-TW/cli-reference)。

245 265 

246### 自訂系統提示詞266<h3 id="custom-system-prompts">

267 自訂系統提示詞

268</h3>

247 269 

248您可以提供自訂字串作為 `systemPrompt` 以完全用您自己的指令替換預設值。270您可以提供自訂字串作為 `systemPrompt` 以完全用您自己的指令替換預設值。

249 271 


297 ```319 ```

298</CodeGroup>320</CodeGroup>

299 321 

300## 比較四種方法322<h2 id="compare-the-four-approaches">

323 比較四種方法

324</h2>

301 325 

302四種自訂方法在位置、共享方式和從 `claude_code` 預設保留的內容方面有所不同。326四種自訂方法在位置、共享方式和從 `claude_code` 預設保留的內容方面有所不同。

303 327 


315 339 

316「附加」是指在 TypeScript 中使用 `systemPrompt: { type: "preset", preset: "claude_code", append: "..." }`,或在 Python 中使用 `system_prompt={"type": "preset", "preset": "claude_code", "append": "..."}`。CLAUDE.md 不會變更系統提示本身:SDK 會將其內容作為專案上下文注入到對話中。340「附加」是指在 TypeScript 中使用 `systemPrompt: { type: "preset", preset: "claude_code", append: "..." }`,或在 Python 中使用 `system_prompt={"type": "preset", "preset": "claude_code", "append": "..."}`。CLAUDE.md 不會變更系統提示本身:SDK 會將其內容作為專案上下文注入到對話中。

317 341 

318## 使用案例和最佳實踐342<h2 id="use-cases-and-best-practices">

343 使用案例和最佳實踐

344</h2>

319 345 

320### 何時使用 CLAUDE.md346<h3 id="when-to-use-claude-md">

347 何時使用 CLAUDE.md

348</h3>

321 349 

322使用 CLAUDE.md 來記錄應該適用於專案中每個會話的指令,無論該會話使用哪個系統提示詞:編碼標準、常見命令、架構上下文和團隊約定。CLAUDE.md 被提交到您的儲存庫,因此它與它描述的程式碼保持同步。請參閱 [何時新增到 CLAUDE.md](/zh-TW/memory#when-to-add-to-claude-md) 以獲得完整指導。350使用 CLAUDE.md 來記錄應該適用於專案中每個會話的指令,無論該會話使用哪個系統提示詞:編碼標準、常見命令、架構上下文和團隊約定。CLAUDE.md 被提交到您的儲存庫,因此它與它描述的程式碼保持同步。請參閱 [何時新增到 CLAUDE.md](/zh-TW/memory#when-to-add-to-claude-md) 以獲得完整指導。

323 351 

324CLAUDE.md 檔案在啟用 `project` 設定來源時載入,預設 `query()` 選項已啟用此功能。如果您在 TypeScript 中明確設定 `settingSources` 或在 Python 中設定 `setting_sources`,請包含 `'project'` 以繼續載入專案級 CLAUDE.md。352CLAUDE.md 檔案在啟用 `project` 設定來源時載入,預設 `query()` 選項已啟用此功能。如果您在 TypeScript 中明確設定 `settingSources` 或在 Python 中設定 `setting_sources`,請包含 `'project'` 以繼續載入專案級 CLAUDE.md。

325 353 

326### 何時使用輸出樣式354<h3 id="when-to-use-output-styles">

355 何時使用輸出樣式

356</h3>

327 357 

328輸出樣式適用於您想在 CLI 和 SDK 中重複使用的角色,無需變更應用程式程式碼。因為它們作為檔案存在於 `.claude/output-styles` 中,相同的角色可從 CLI 中的 `/config` 以及載入相符設定來源的任何 SDK 會話中使用。358輸出樣式適用於您想在 CLI 和 SDK 中重複使用的角色,無需變更應用程式程式碼。因為它們作為檔案存在於 `.claude/output-styles` 中,相同的角色可從 CLI 中的 `/config` 以及載入相符設定來源的任何 SDK 會話中使用。

329 359 


340* 建置安全焦點的程式碼審查者370* 建置安全焦點的程式碼審查者

341* 開發具有特定教學法的教學助手371* 開發具有特定教學法的教學助手

342 372 

343### 何時使用 `systemPrompt` 附加373<h3 id="when-to-use-systemprompt-with-append">

374 何時使用 `systemPrompt` 附加

375</h3>

344 376 

345在 `claude_code` 預設已經符合您的產品需求,而您只需要疊加額外指令時,使用 `append`。您保留預設的工具指導、安全規則和編碼約定,無需重新實現它們。377在 `claude_code` 預設已經符合您的產品需求,而您只需要疊加額外指令時,使用 `append`。您保留預設的工具指導、安全規則和編碼約定,無需重新實現它們。

346 378 


352* 修改回應詳細程度384* 修改回應詳細程度

353* 在不失去工具指令的情況下增強 Claude Code 的預設行為385* 在不失去工具指令的情況下增強 Claude Code 的預設行為

354 386 

355### 何時使用自訂 `systemPrompt`387<h3 id="when-to-use-custom-systemprompt">

388 何時使用自訂 `systemPrompt`

389</h3>

356 390 

357當您的代理程式的表面、身份或權限模型與 Claude Code 的不同時,使用自訂提示詞,如 [決定起點](#decide-on-a-starting-point) 中所述。您定義完整的指令集,包括您的代理程式需要的任何工具指導和安全規則。391當您的代理程式的表面、身份或權限模型與 Claude Code 的不同時,使用自訂提示詞,如 [決定起點](#decide-on-a-starting-point) 中所述。您定義完整的指令集,包括您的代理程式需要的任何工具指導和安全規則。

358 392 


364* 不需要預設工具的情況398* 不需要預設工具的情況

365* 建置具有獨特行為的專門代理程式399* 建置具有獨特行為的專門代理程式

366 400 

367## 結合方法401<h2 id="combine-approaches">

402 結合方法

403</h2>

368 404 

369這些方法可以組合使用。持久輸出樣式或 CLAUDE.md 設定長期行為,而 `append` 在不觸及已保存配置的情況下,在頂部疊加會話特定的指令。405這些方法可以組合使用。持久輸出樣式或 CLAUDE.md 設定長期行為,而 `append` 在不觸及已保存配置的情況下,在頂部疊加會話特定的指令。

370 406 

371### 結合輸出樣式與會話特定新增407<h3 id="combine-an-output-style-with-session-specific-additions">

408 結合輸出樣式與會話特定新增

409</h3>

372 410 

373下面的範例假設 Code Reviewer 輸出樣式已經啟用。`append` 區塊在角色上疊加會話特定的焦點區域,因此單一審查會話可以優先考慮 OAuth 和令牌存儲,而無需更改已保存的輸出樣式:411下面的範例假設 Code Reviewer 輸出樣式已經啟用。`append` 區塊在角色上疊加會話特定的焦點區域,因此單一審查會話可以優先考慮 OAuth 和令牌存儲,而無需更改已保存的輸出樣式:

374 412 


425 ```463 ```

426</CodeGroup>464</CodeGroup>

427 465 

428## 另請參閱466<h2 id="see-also">

467 另請參閱

468</h2>

429 469 

430* [輸出樣式](/zh-TW/output-styles):為 CLI 建立、管理和分享輸出樣式,包括檔案格式和儲存位置470* [輸出樣式](/zh-TW/output-styles):為 CLI 建立、管理和分享輸出樣式,包括檔案格式和儲存位置

431* [Claude 如何記住您的專案](/zh-TW/memory):CLAUDE.md 中應放入的內容、放置位置,以及如何撰寫有效的專案指示471* [Claude 如何記住您的專案](/zh-TW/memory):CLAUDE.md 中應放入的內容、放置位置,以及如何撰寫有效的專案指示

432* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript):完整的 `Options` 類型,包括 `systemPrompt`、`settingSources` 和 `outputStyle`472* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript):完整的 `Options` 類型,包括 `systemPrompt`、`settingSources` 和 `settings`

433* [Python SDK 參考](/zh-TW/agent-sdk/python):完整的 `ClaudeAgentOptions` 類型,包括 `system_prompt` 和 `setting_sources`473* [Python SDK 參考](/zh-TW/agent-sdk/python):完整的 `ClaudeAgentOptions` 類型,包括 `system_prompt` 和 `setting_sources`

434* [設定](/zh-TW/settings):`settings.json` 參考,包括輸出樣式和其他配置的儲存位置474* [設定](/zh-TW/settings):`settings.json` 參考,包括輸出樣式和其他配置的儲存位置

agent-sdk/observability.md +259 −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# 使用 OpenTelemetry 進行可觀測性

6 

7> 使用 OpenTelemetry 將追蹤、指標和事件從 Agent SDK 匯出到您的可觀測性後端。

8 

9當您在生產環境中執行代理時,您需要了解它們的行為:

10 

11* 它們呼叫了哪些工具

12* 每個模型請求花費了多長時間

13* 花費了多少個 token

14* 失敗發生在哪裡

15 

16Agent SDK 可以將此資料作為 OpenTelemetry 追蹤、指標和日誌事件匯出到任何接受 OpenTelemetry Protocol (OTLP) 的後端,例如 Honeycomb、Datadog、Grafana、Langfuse 或自託管收集器。

17 

18本指南說明 SDK 如何發出遙測資料、如何配置匯出,以及如何在資料到達您的後端後標記和篩選資料。若要直接從 SDK 回應流讀取 token 使用量和成本,而不是匯出到後端,請參閱[追蹤成本和使用量](/zh-TW/agent-sdk/cost-tracking)。

19 

20<h2 id="how-telemetry-flows-from-the-sdk">

21 遙測資料如何從 SDK 流動

22</h2>

23 

24Agent SDK 將 Claude Code CLI 作為子程序執行,並通過本地管道與其通訊。CLI 內建了 OpenTelemetry 檢測:它在每個模型請求和工具執行周圍記錄 span,為 token 和成本計數器發出指標,並為提示和工具結果發出結構化日誌事件。SDK 本身不產生遙測資料。相反,它將配置傳遞給 CLI 程序,CLI 直接匯出到您的收集器。

25 

26配置作為環境變數傳遞。預設情況下,子程序繼承您應用程式的環境,因此您可以在以下兩個位置之一配置遙測資料:

27 

28* **程序環境:** 在應用程式啟動前在您的 shell、容器或編排器中設定變數。每個 `query()` 呼叫都會自動選擇它們,無需程式碼變更。這是生產部署的推薦方法。

29* **按呼叫選項:** 在 `ClaudeAgentOptions.env`(Python)或 `options.env`(TypeScript)中設定變數。當同一程序中的不同代理需要不同的遙測設定時,請使用此方法。在 Python 中,`env` 會合併到繼承的環境之上。在 TypeScript 中,`env` 完全替換繼承的環境,因此請在您傳遞的物件中包含 `...process.env`。

30 

31CLI 匯出三個獨立的 OpenTelemetry 訊號。每個都有自己的啟用開關和自己的匯出器,因此您只能開啟需要的訊號。

32 

33| 訊號 | 包含內容 | 啟用方式 |

34| ---------- | -------------------------------- | ----------------------------------------------------------------- |

35| Metrics | token、成本、工作階段、程式碼行數和工具決策的計數器 | `OTEL_METRICS_EXPORTER` |

36| Log events | 每個提示、API 請求、API 錯誤和工具結果的結構化記錄 | `OTEL_LOGS_EXPORTER` |

37| Traces | 每個互動、模型請求、工具呼叫和 hook 的 span(測試版) | `OTEL_TRACES_EXPORTER` 加上 `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` |

38 

39如需完整的指標名稱、事件名稱和屬性清單,請參閱 Claude Code [監控](/zh-TW/monitoring-usage)參考。Agent SDK 發出相同的資料,因為它執行相同的 CLI。Span 名稱列在下面的[讀取代理追蹤](#read-agent-traces)中。

40 

41<h2 id="enable-telemetry-export">

42 啟用遙測匯出

43</h2>

44 

45遙測資料預設為關閉,直到您設定 `CLAUDE_CODE_ENABLE_TELEMETRY=1` 並選擇至少一個匯出器。最常見的配置是通過 OTLP HTTP 將所有三個訊號傳送到收集器。

46 

47以下範例在字典中設定變數,並通過 `options.env` 傳遞它們。代理執行單個任務,CLI 將 span、指標和事件匯出到位於 `collector.example.com` 的收集器,同時迴圈消費回應流:

48 

49<CodeGroup>

50 ```python Python theme={null}

51 import asyncio

52 from claude_agent_sdk import query, ClaudeAgentOptions

53 

54 OTEL_ENV = {

55 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

56 # 追蹤需要此項,追蹤處於測試版。指標和日誌事件不需要此項。

57 "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1",

58 # 為每個訊號選擇一個匯出器。SDK 使用 otlp;請參閱下面的注意。

59 "OTEL_TRACES_EXPORTER": "otlp",

60 "OTEL_METRICS_EXPORTER": "otlp",

61 "OTEL_LOGS_EXPORTER": "otlp",

62 # 標準 OTLP 傳輸配置。

63 "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",

64 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4318",

65 "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer your-token",

66 }

67 

68 

69 async def main():

70 options = ClaudeAgentOptions(env=OTEL_ENV)

71 async for message in query(

72 prompt="List the files in this directory", options=options

73 ):

74 print(message)

75 

76 

77 asyncio.run(main())

78 ```

79 

80 ```typescript TypeScript theme={null}

81 import { query } from "@anthropic-ai/claude-agent-sdk";

82 

83 const otelEnv = {

84 CLAUDE_CODE_ENABLE_TELEMETRY: "1",

85 // 追蹤需要此項,追蹤處於測試版。指標和日誌事件不需要此項。

86 CLAUDE_CODE_ENHANCED_TELEMETRY_BETA: "1",

87 // 為每個訊號選擇一個匯出器。SDK 使用 otlp;請參閱下面的注意。

88 OTEL_TRACES_EXPORTER: "otlp",

89 OTEL_METRICS_EXPORTER: "otlp",

90 OTEL_LOGS_EXPORTER: "otlp",

91 // 標準 OTLP 傳輸配置。

92 OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf",

93 OTEL_EXPORTER_OTLP_ENDPOINT: "http://collector.example.com:4318",

94 OTEL_EXPORTER_OTLP_HEADERS: "Authorization=Bearer your-token",

95 };

96 

97 for await (const message of query({

98 prompt: "List the files in this directory",

99 // env 在 TypeScript 中完全替換繼承的環境,因此首先展開

100 // process.env 以保留 PATH、ANTHROPIC_API_KEY 和其他變數。

101 options: { env: { ...process.env, ...otelEnv } },

102 })) {

103 console.log(message);

104 }

105 ```

106</CodeGroup>

107 

108因為子程序預設繼承您應用程式的環境,您可以通過在 Dockerfile、Kubernetes 清單或 shell 設定檔中匯出這些變數並完全省略 `options.env` 來達到相同的結果。

109 

110<Note>

111 `console` 匯出器將遙測資料寫入標準輸出,SDK 將其用作其訊息通道。在通過 SDK 執行時,不要將 `console` 設定為匯出器值。若要在本地檢查遙測資料,請將 `OTEL_EXPORTER_OTLP_ENDPOINT` 指向本地收集器或一體化 Jaeger 容器。

112</Note>

113 

114<h3 id="flush-telemetry-from-short-lived-calls">

115 從短期呼叫刷新遙測資料

116</h3>

117 

118CLI 批次處理遙測資料並按間隔匯出。在乾淨的程序退出時,它會嘗試刷新待處理資料,但刷新受短暫超時限制,因此如果收集器回應緩慢,span 仍可能被丟棄。如果程序在 CLI 關閉前被終止,批次緩衝區中的任何內容都會丟失。降低匯出間隔會減少這兩個時間窗口。

119 

120預設情況下,指標每 60 秒匯出一次,追蹤和日誌每 5 秒匯出一次。以下範例縮短了所有三個間隔,以便資料在短任務仍在執行時到達收集器:

121 

122<CodeGroup>

123 ```python Python theme={null}

124 OTEL_ENV = {

125 # ... 來自前面範例的匯出器配置 ...

126 "OTEL_METRIC_EXPORT_INTERVAL": "1000",

127 "OTEL_LOGS_EXPORT_INTERVAL": "1000",

128 "OTEL_TRACES_EXPORT_INTERVAL": "1000",

129 }

130 ```

131 

132 ```typescript TypeScript theme={null}

133 const otelEnv = {

134 // ... 來自前面範例的匯出器配置 ...

135 OTEL_METRIC_EXPORT_INTERVAL: "1000",

136 OTEL_LOGS_EXPORT_INTERVAL: "1000",

137 OTEL_TRACES_EXPORT_INTERVAL: "1000",

138 };

139 ```

140</CodeGroup>

141 

142<h2 id="read-agent-traces">

143 讀取代理追蹤

144</h2>

145 

146追蹤提供了代理執行的最詳細檢視。設定 `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` 後,代理迴圈的每一步都會變成您可以在追蹤後端檢查的 span:

147 

148* **`claude_code.interaction`:** 包裝代理迴圈的單個轉折,從接收提示到產生回應。

149* **`claude_code.llm_request`:** 包裝每個 Claude API 呼叫,將模型名稱、延遲和 token 計數作為屬性。

150* **`claude_code.tool`:** 包裝每個工具呼叫,具有權限等待的子 span(`claude_code.tool.blocked_on_user`)和執行本身(`claude_code.tool.execution`)。

151* **`claude_code.hook`:** 包裝每個 [hook](/zh-TW/agent-sdk/hooks) 執行。除了上述變數外,還需要詳細的測試版追蹤(`ENABLE_BETA_TRACING_DETAILED=1` 和 `BETA_TRACING_ENDPOINT`)。

152 

153`llm_request`、`tool` 和 `hook` span 是封閉 `claude_code.interaction` span 的子項。當代理通過 Task 工具生成子代理時,子代理的 `llm_request` 和 `tool` span 嵌套在父代理的 `claude_code.tool` span 下,因此完整的委派鏈顯示為一個追蹤。

154 

155Span 預設帶有 `session.id` 屬性。當您對同一[工作階段](/zh-TW/agent-sdk/sessions)進行多個 `query()` 呼叫時,在您的後端篩選 `session.id` 以將它們視為一個時間線。如果 `OTEL_METRICS_INCLUDE_SESSION_ID` 設定為假值,則省略該屬性。

156 

157<Note>

158 追蹤處於測試版。Span 名稱和屬性可能在版本之間變更。請參閱監控參考中的[追蹤(測試版)](/zh-TW/monitoring-usage#traces-beta)以了解追蹤匯出器配置變數。

159</Note>

160 

161<h2 id="link-traces-to-your-application">

162 將追蹤連結到您的應用程式

163</h2>

164 

165SDK 自動將 W3C 追蹤上下文傳播到 CLI 子程序。當您在應用程式中有活躍的 OpenTelemetry span 時呼叫 `query()`,SDK 會將 `TRACEPARENT` 和 `TRACESTATE` 注入子程序環境,CLI 讀取它們,使其 `claude_code.interaction` span 成為您的 span 的子項。代理執行隨後出現在您的應用程式追蹤中,而不是作為斷開連接的根。

166 

167啟用追蹤上下文傳播時,CLI 還會將 `TRACEPARENT` 轉發到它執行的每個 Bash 和 PowerShell 命令。如果通過 Bash 工具啟動的命令發出自己的 OpenTelemetry span,這些 span 會嵌套在包裝該命令的 `claude_code.tool.execution` span 下。

168 

169當您在 `options.env` 中明確設定 `TRACEPARENT` 時,會跳過自動注入,因此您可以在需要時固定特定的父上下文。互動式 CLI 工作階段完全忽略入站 `TRACEPARENT`;只有 Agent SDK 和 `claude -p` 執行會遵守它。請參閱監控參考中的[追蹤(測試版)](/zh-TW/monitoring-usage#traces-beta)以了解完整的 span 和屬性參考。

170 

171<h2 id="tag-telemetry-from-your-agent">

172 從您的代理標記遙測資料

173</h2>

174 

175預設情況下,CLI 將 `service.name` 報告為 `claude-code`。如果您執行多個代理,或將 SDK 與匯出到同一收集器的其他服務一起執行,請覆蓋服務名稱並新增資源屬性,以便您可以在後端按代理篩選。

176 

177以下範例重新命名服務並附加部署中繼資料。這些值作為 OpenTelemetry 資源屬性應用於代理發出的每個 span、指標和事件:

178 

179<CodeGroup>

180 ```python Python theme={null}

181 options = ClaudeAgentOptions(

182 env={

183 # ... 匯出器配置 ...

184 "OTEL_SERVICE_NAME": "support-triage-agent",

185 "OTEL_RESOURCE_ATTRIBUTES": "service.version=1.4.0,deployment.environment=production",

186 },

187 )

188 ```

189 

190 ```typescript TypeScript theme={null}

191 const options = {

192 env: {

193 ...process.env,

194 // ... 匯出器配置 ...

195 OTEL_SERVICE_NAME: "support-triage-agent",

196 OTEL_RESOURCE_ATTRIBUTES:

197 "service.version=1.4.0,deployment.environment=production",

198 },

199 };

200 ```

201</CodeGroup>

202 

203<h2 id="attribute-actions-to-your-end-users">

204 將屬性操作歸因於您的終端使用者

205</h2>

206 

207CLI 根據它用來呼叫 Anthropic 的認證將[身份屬性](/zh-TW/monitoring-usage#standard-attributes)附加到每個事件。當您建立一個從一個部署為許多終端使用者提供服務的應用程式時,這些屬性識別您的服務認證,而不是代理代表其行動的終端使用者。

208 

209若要使工具呼叫和 MCP 活動可歸因於您應用程式的終端使用者,請在每個 `query()` 呼叫上將終端使用者身份注入為資源屬性。在插值前對值進行百分比編碼,因為 `OTEL_RESOURCE_ATTRIBUTES` [保留逗號、空格和等號](/zh-TW/monitoring-usage#multi-team-organization-support)。以下範例將請求使用者和租戶附加到來自一個請求的每個 span 和事件:

210 

211<CodeGroup>

212 ```python Python theme={null}

213 from urllib.parse import quote

214 

215 options = ClaudeAgentOptions(

216 env={

217 # ... 匯出器配置 ...

218 "OTEL_RESOURCE_ATTRIBUTES": f"enduser.id={quote(request.user_id)},tenant.id={quote(request.tenant_id)}",

219 },

220 )

221 ```

222 

223 ```typescript TypeScript theme={null}

224 const options = {

225 env: {

226 ...process.env,

227 // ... 匯出器配置 ...

228 OTEL_RESOURCE_ATTRIBUTES: `enduser.id=${encodeURIComponent(request.userId)},tenant.id=${encodeURIComponent(request.tenantId)}`,

229 },

230 };

231 ```

232</CodeGroup>

233 

234附加終端使用者身份後,`tool_decision`、`tool_result`、`mcp_server_connection` 和 `permission_mode_changed` 事件會變成您可以轉發到安全資訊和事件管理 (SIEM) 平台的按使用者稽核追蹤。請參閱監控參考中的[稽核安全事件](/zh-TW/monitoring-usage#audit-security-events)以了解完整的安全相關事件清單和每個事件攜帶的屬性。

235 

236<h2 id="control-sensitive-data-in-exports">

237 控制匯出中的敏感資料

238</h2>

239 

240遙測資料預設是結構化的。持續時間、模型名稱和工具名稱記錄在每個 span 上;token 計數在基礎 API 請求返回使用資料時記錄,因此失敗或中止請求的 span 可能會省略它們。您的代理讀取和寫入的內容預設不被記錄。這些選擇加入變數將內容新增到匯出的資料:

241 

242| 變數 | 新增內容 |

243| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

244| `OTEL_LOG_USER_PROMPTS=1` | `claude_code.user_prompt` 事件和 `claude_code.interaction` span 上的提示文字 |

245| `OTEL_LOG_TOOL_DETAILS=1` | `claude_code.tool_result` 事件上的工具輸入引數(檔案路徑、shell 命令、搜尋模式) |

246| `OTEL_LOG_TOOL_CONTENT=1` | `claude_code.tool` 上的完整工具輸入和輸出主體作為 span 事件,截斷為 60 KB。需要啟用[追蹤](#read-agent-traces) |

247| `OTEL_LOG_RAW_API_BODIES` | 完整的 Anthropic Messages API 請求和回應 JSON 作為 `claude_code.api_request_body` 和 `claude_code.api_response_body` 日誌事件。設定為 `1` 以獲得截斷為 60 KB 的內聯主體,或 `file:<dir>` 以在磁碟上獲得未截斷的主體,事件中有 `body_ref` 路徑。主體包括整個對話歷史記錄,並且已編輯了擴展思考內容。啟用此項意味著同意上述三個變數將揭示的所有內容 |

248 

249除非您的可觀測性管道已獲准儲存您的代理處理的資料,否則請保持這些未設定。請參閱監控參考中的[安全和隱私](/zh-TW/monitoring-usage#security-and-privacy)以了解完整的屬性清單和編輯行為。

250 

251<h2 id="related-documentation">

252 相關文件

253</h2>

254 

255這些指南涵蓋了監控和部署代理的相鄰主題:

256 

257* [追蹤成本和使用量](/zh-TW/agent-sdk/cost-tracking):從訊息流讀取 token 和成本資料,無需外部後端。

258* [託管 Agent SDK](/zh-TW/agent-sdk/hosting):在容器中部署代理,您可以在環境層級設定 OpenTelemetry 變數。

259* [監控](/zh-TW/monitoring-usage):CLI 發出的每個環境變數、指標和事件的完整參考。

Details

53 </Card>53 </Card>

54</CardGroup>54</CardGroup>

55 55 

56## 開始使用56<h2 id="get-started">

57 開始使用

58</h2>

57 59 

58<Steps>60<Steps>

59 <Step title="安裝 SDK">61 <Step title="安裝 SDK">


68 ```bash theme={null}70 ```bash theme={null}

69 pip install claude-agent-sdk71 pip install claude-agent-sdk

70 ```72 ```

73 

74 Python 套件需要 Python 3.10 或更新版本。如果 pip 報告 `No matching distribution found for claude-agent-sdk`,表示您的直譯器版本早於 3.10。在 macOS 或 Linux 上執行 `python3 --version`,或在 Windows 上執行 `py --version`,以檢查版本。

71 </Tab>75 </Tab>

72 </Tabs>76 </Tabs>

73 77 


134 138 

135**準備好構建了嗎?** 遵循[快速入門](/zh-TW/agent-sdk/quickstart)在幾分鐘內建立一個尋找和修復錯誤的代理。139**準備好構建了嗎?** 遵循[快速入門](/zh-TW/agent-sdk/quickstart)在幾分鐘內建立一個尋找和修復錯誤的代理。

136 140 

137## 功能141<h2 id="capabilities">

142 功能

143</h2>

138 144 

139使 Claude Code 強大的一切都可在 SDK 中使用:145使 Claude Code 強大的一切都可在 SDK 中使用:

140 146 


258 <Tab title="子代理">264 <Tab title="子代理">

259 生成專門的代理來處理集中的子任務。您的主代理委派工作,子代理報告結果。265 生成專門的代理來處理集中的子任務。您的主代理委派工作,子代理報告結果。

260 266 

261 定義具有專門指令的自訂代理。 `allowedTools` 中包含 `Agent`,因為子代理透過 Agent 工具呼叫267 定義具有專門指令的自訂代理。子代理透過 Agent 工具呼叫,因此在 `allowedTools` 中包含 `Agent` 以自動批准這些呼叫

262 268 

263 <CodeGroup>269 <CodeGroup>

264 ```python Python theme={null}270 ```python Python theme={null}


468 </Tab>474 </Tab>

469</Tabs>475</Tabs>

470 476 

471### Claude Code 功能477<h3 id="claude-code-features">

478 Claude Code 功能

479</h3>

472 480 

473SDK 也支援 Claude Code 的基於檔案系統的配置。使用預設選項,SDK 從工作目錄中的 `.claude/` 和 `~/.claude/` 載入這些。要限制載入哪些來源,請在選項中設定 `setting_sources`(Python)或 `settingSources`(TypeScript)。481SDK 也支援 Claude Code 的基於檔案系統的配置。使用預設選項,SDK 從工作目錄中的 `.claude/` 和 `~/.claude/` 載入這些。要限制載入哪些來源,請在選項中設定 `setting_sources`(Python)或 `settingSources`(TypeScript)。

474 482 

475| 功能 | 描述 | 位置 |483| 功能 | 描述 | 位置 |

476| --------------------------------------------------- | ---------------------- | --------------------------------- |484| --------------------------------------------------- | -------------------------------- | --------------------------------- |

477| [Skills](/zh-TW/agent-sdk/skills) | Markdown 中定義的專門功能 | `.claude/skills/*/SKILL.md` |485| [Skills](/zh-TW/agent-sdk/skills) | Claude 自動使用或您使用 `/name` 呼叫的專門功能 | `.claude/skills/*/SKILL.md` |

478| [Slash commands](/zh-TW/agent-sdk/slash-commands) | 用於常見任務的自訂命令 | `.claude/commands/*.md` |486| [Commands](/zh-TW/agent-sdk/slash-commands) | 舊版格式的自訂命令。新的自訂命令請使用 skills | `.claude/commands/*.md` |

479| [Memory](/zh-TW/agent-sdk/modifying-system-prompts) | 專案上下文和指令 | `CLAUDE.md` 或 `.claude/CLAUDE.md` |487| [Memory](/zh-TW/agent-sdk/modifying-system-prompts) | 專案上下文和指令 | `CLAUDE.md` 或 `.claude/CLAUDE.md` |

480| [Plugins](/zh-TW/agent-sdk/plugins) | 使用自訂命令代理和 MCP 伺服器進行擴展 | 透過 `plugins` 選項進行程式設計 |488| [Plugins](/zh-TW/agent-sdk/plugins) | 使用 skills代理、hooks MCP 伺服器進行擴展 | 透過 `plugins` 選項進行程式設計 |

481 489 

482## 將 Agent SDK 與其他 Claude 工具進行比較490<h2 id="compare-the-agent-sdk-to-other-claude-tools">

491 將 Agent SDK 與其他 Claude 工具進行比較

492</h2>

483 493 

484Claude 平台提供多種方式來使用 Claude 進行構建。以下是 Agent SDK 的適用方式:494Claude 平台提供多種方式來使用 Claude 進行構建。以下是 Agent SDK 的適用方式:

485 495 


548 </Tab>558 </Tab>

549</Tabs>559</Tabs>

550 560 

551## 變更日誌561<h2 id="changelog">

562 變更日誌

563</h2>

552 564 

553查看完整的變更日誌以了解 SDK 更新、錯誤修復和新功能:565查看完整的變更日誌以了解 SDK 更新、錯誤修復和新功能:

554 566 

555* **TypeScript SDK**:[檢視 CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)567* **TypeScript SDK**:[檢視 CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md)

556* **Python SDK**:[檢視 CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)568* **Python SDK**:[檢視 CHANGELOG.md](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md)

557 569 

558## 報告錯誤570<h2 id="reporting-bugs">

571 報告錯誤

572</h2>

559 573 

560如果您遇到 Agent SDK 的錯誤或問題:574如果您遇到 Agent SDK 的錯誤或問題:

561 575 

562* **TypeScript SDK**:[在 GitHub 上報告問題](https://github.com/anthropics/claude-agent-sdk-typescript/issues)576* **TypeScript SDK**:[在 GitHub 上報告問題](https://github.com/anthropics/claude-agent-sdk-typescript/issues)

563* **Python SDK**:[在 GitHub 上報告問題](https://github.com/anthropics/claude-agent-sdk-python/issues)577* **Python SDK**:[在 GitHub 上報告問題](https://github.com/anthropics/claude-agent-sdk-python/issues)

564 578 

565## 品牌指南579<h2 id="branding-guidelines">

580 品牌指南

581</h2>

566 582 

567對於整合 Claude Agent SDK 的合作夥伴,使用 Claude 品牌是可選的。在您的產品中引用 Claude 時:583對於整合 Claude Agent SDK 的合作夥伴,使用 Claude 品牌是可選的。在您的產品中引用 Claude 時:

568 584 


579 595 

580您的產品應保持自己的品牌,不應顯示為 Claude Code 或任何 Anthropic 產品。有關品牌合規性的問題,請聯絡 Anthropic [銷售團隊](https://www.anthropic.com/contact-sales)。596您的產品應保持自己的品牌,不應顯示為 Claude Code 或任何 Anthropic 產品。有關品牌合規性的問題,請聯絡 Anthropic [銷售團隊](https://www.anthropic.com/contact-sales)。

581 597 

582## 許可證和條款598<h2 id="license-and-terms">

599 許可證和條款

600</h2>

583 601 

584Claude Agent SDK 的使用受 [Anthropic 商業服務條款](https://www.anthropic.com/legal/commercial-terms)管制,包括當您使用它為您自己的客戶和最終使用者提供的產品和服務提供動力時,除非特定元件或依賴項受到該元件 LICENSE 檔案中指示的不同許可證的保護。602Claude Agent SDK 的使用受 [Anthropic 商業服務條款](https://www.anthropic.com/legal/commercial-terms)管制,包括當您使用它為您自己的客戶和最終使用者提供的產品和服務提供動力時,除非特定元件或依賴項受到該元件 LICENSE 檔案中指示的不同許可證的保護。

585 603 

586## 後續步驟604<h2 id="next-steps">

605 後續步驟

606</h2>

587 607 

588<CardGroup cols={2}>608<CardGroup cols={2}>

589 <Card title="快速入門" icon="play" href="/zh-TW/agent-sdk/quickstart">609 <Card title="快速入門" icon="play" href="/zh-TW/agent-sdk/quickstart">

Details

12 本頁涵蓋權限模式和規則。若要建立互動式核准流程,讓使用者在執行時核准或拒絕工具請求,請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input)。12 本頁涵蓋權限模式和規則。若要建立互動式核准流程,讓使用者在執行時核准或拒絕工具請求,請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input)。

13</Note>13</Note>

14 14 

15## 權限如何被評估15<h2 id="how-permissions-are-evaluated">

16 權限如何被評估

17</h2>

16 18 

17當 Claude 請求工具時,SDK 會按照以下順序檢查權限:19當 Claude 請求工具時,SDK 會按照以下順序檢查權限:

18 20 


22 </Step>24 </Step>

23 25 

24 <Step title="拒絕規則">26 <Step title="拒絕規則">

25 檢查 `deny` 規則(來自 `disallowed_tools` 和 [settings.json](/zh-TW/settings#permission-settings))。如果拒絕規則符合,工具會被阻止,即使在 `bypassPermissions` 模式下也是如此。27 檢查 `deny` 規則(來自 `disallowed_tools` 和 [settings.json](/zh-TW/settings#permission-settings))。如果拒絕規則符合,工具會被阻止,即使在 `bypassPermissions` 模式下也是如此。裸名稱拒絕規則(如 `Bash`)會在此評估開始前將工具從 Claude 的上下文中移除,因此只有範圍規則(如 `Bash(rm *)`)會在此步驟中被檢查。

26 </Step>28 </Step>

27 29 

28 <Step title="權限模式">30 <Step title="權限模式">


45* **Hooks:** 執行自訂程式碼以允許、拒絕或修改工具請求。請參閱 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks)。47* **Hooks:** 執行自訂程式碼以允許、拒絕或修改工具請求。請參閱 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks)。

46* **canUseTool 回呼:** 在執行時提示使用者核准。請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input)。48* **canUseTool 回呼:** 在執行時提示使用者核准。請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input)。

47 49 

48## 允許和拒絕規則50<h2 id="allow-and-deny-rules">

51 允許和拒絕規則

52</h2>

49 53 

50`allowed_tools` 和 `disallowed_tools`(TypeScript:`allowedTools` / `disallowedTools`)將條目新增到上述評估流程中的允許和拒絕規則清單。它們控制工具呼叫是否被批准,而不是工具是否可供 Claude 使用。54`allowed_tools` 和 `disallowed_tools`(TypeScript:`allowedTools` / `disallowedTools`)將條目新增到上述評估流程中的允許和拒絕規則清單。允許規則只影響批准:未列在 `allowed_tools` 中的工具仍然可供 Claude 使用,並會通過權限模式拒絕規則的行為取決於它們是命名工具還是在工具內限定模式。

51 55 

52| 選項 | 效果 |56| 選項 | 效果 |

53| :------------------------------- | :----------------------------------------------------------- |57| :-------------------------------- | :--------------------------------------------------------------------------------- |

54| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動批准。此處未列出的工具仍然存在,並會通過權限模式和 `canUseTool`。 |58| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動批准。此處未列出的工具仍然存在,並會通過權限模式和 `canUseTool`。 |

55| `disallowed_tools=["Bash"]` | `Bash` 始終被拒絕拒絕規則會首先被檢查,並在每個權限模式中都有效,包括 `bypassPermissions` |59| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除Claude 看不到該工具,無法嘗試使用它 |

60| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` 的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫會通過權限模式。 |

56 61 

57對於鎖定的代理程式,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對。列出的工具會被批准;其他任何工具都會被直接拒絕,而不是提示:62對於鎖定的代理程式,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對。列出的工具會被批准;其他任何工具都會被直接拒絕,而不是提示:

58 63 


69 74 

70您也可以在 `.claude/settings.json` 中宣告式地設定允許、拒絕和詢問規則。當啟用 `project` 設定來源時,這些規則會被讀取,預設 `query()` 選項就是這樣。如果您明確設定 `setting_sources`(TypeScript:`settingSources`),請包含 `"project"` 以便它們適用。請參閱 [權限設定](/zh-TW/settings#permission-settings) 以了解規則語法。75您也可以在 `.claude/settings.json` 中宣告式地設定允許、拒絕和詢問規則。當啟用 `project` 設定來源時,這些規則會被讀取,預設 `query()` 選項就是這樣。如果您明確設定 `setting_sources`(TypeScript:`settingSources`),請包含 `"project"` 以便它們適用。請參閱 [權限設定](/zh-TW/settings#permission-settings) 以了解規則語法。

71 76 

72## 權限模式77<h2 id="permission-modes">

78 權限模式

79</h2>

73 80 

74權限模式提供對 Claude 如何使用工具的全域控制。您可以在呼叫 `query()` 時設定權限模式,或在串流會話期間動態更改它。81權限模式提供對 Claude 如何使用工具的全域控制。您可以在呼叫 `query()` 時設定權限模式,或在串流會話期間動態更改它。

75 82 

76### 可用模式83<h3 id="available-modes">

84 可用模式

85</h3>

77 86 

78SDK 支援這些權限模式:87SDK 支援這些權限模式:

79 88 


90 **子代理程式繼承:** 當父代理程式使用 `bypassPermissions`、`acceptEdits` 或 `auto` 時,所有子代理程式都會繼承該模式,且無法按子代理程式覆蓋。子代理程式可能有不同的系統提示和行為限制較少,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權,無需任何核准提示。99 **子代理程式繼承:** 當父代理程式使用 `bypassPermissions`、`acceptEdits` 或 `auto` 時,所有子代理程式都會繼承該模式,且無法按子代理程式覆蓋。子代理程式可能有不同的系統提示和行為限制較少,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權,無需任何核准提示。

91</Warning>100</Warning>

92 101 

93### 設定權限模式102<h3 id="set-permission-mode">

103 設定權限模式

104</h3>

94 105 

95您可以在開始查詢時設定一次權限模式,或在會話活躍時動態更改它。106您可以在開始查詢時設定一次權限模式,或在會話活躍時動態更改它。

96 107 


196 </Tab>207 </Tab>

197</Tabs>208</Tabs>

198 209 

199### 模式詳細資訊210<h3 id="mode-details">

211 模式詳細資訊

212</h3>

200 213 

201#### 接受編輯模式(`acceptEdits`)214<h4 id="accept-edits-mode-acceptedits">

215 接受編輯模式(`acceptEdits`)

216</h4>

202 217 

203自動批准檔案操作,以便 Claude 可以編輯程式碼而無需提示。其他工具(例如不是檔案系統操作的 Bash 命令)仍然需要正常權限。218自動批准檔案操作,以便 Claude 可以編輯程式碼而無需提示。其他工具(例如不是檔案系統操作的 Bash 命令)仍然需要正常權限。

204 219 


211 226 

212**使用時機:** 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時。227**使用時機:** 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時。

213 228 

214#### 不詢問模式(`dontAsk`)229<h4 id="don-t-ask-mode-dontask">

230 不詢問模式(`dontAsk`)

231</h4>

215 232 

216將任何權限提示轉換為拒絕。由 `allowed_tools`、`settings.json` 允許規則或作為 hook 執行的工具會正常執行。其他所有內容都會被拒絕,而不呼叫 `canUseTool`。233將任何權限提示轉換為拒絕。由 `allowed_tools`、`settings.json` 允許規則或作為 hook 執行的工具會正常執行。其他所有內容都會被拒絕,而不呼叫 `canUseTool`。

217 234 

218**使用時機:** 您想要為無頭代理程式提供固定的明確工具表面,並且更喜歡硬拒絕而不是無聲依賴 `canUseTool` 不存在。235**使用時機:** 您想要為無頭代理程式提供固定的明確工具表面,並且更喜歡硬拒絕而不是無聲依賴 `canUseTool` 不存在。

219 236 

220#### 繞過權限模式(`bypassPermissions`)237<h4 id="bypass-permissions-mode-bypasspermissions">

238 繞過權限模式(`bypassPermissions`)

239</h4>

221 240 

222自動批准所有工具使用而無需提示。Hooks 仍然執行,如果需要可以阻止操作。241自動批准所有工具使用而無需提示。Hooks 仍然執行,如果需要可以阻止操作。

223 242 


227 `allowed_tools` 不會限制此模式。每個工具都會被批准,而不僅僅是您列出的工具。拒絕規則(`disallowed_tools`)、明確的 `ask` 規則和 hooks 會在模式檢查之前被評估,仍然可以阻止工具。246 `allowed_tools` 不會限制此模式。每個工具都會被批准,而不僅僅是您列出的工具。拒絕規則(`disallowed_tools`)、明確的 `ask` 規則和 hooks 會在模式檢查之前被評估,仍然可以阻止工具。

228</Warning>247</Warning>

229 248 

230#### 規劃模式(`plan`)249<h4 id="plan-mode-plan">

250 規劃模式(`plan`)

251</h4>

231 252 

232將 Claude 限制為唯讀工具。Claude 可以讀取檔案並執行唯讀 shell 命令來探索程式碼庫,但不編輯您的原始檔案。Claude 可能會使用 `AskUserQuestion` 在最終確定計畫之前澄清需求。請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input#handle-clarifying-questions) 以處理這些提示。253將 Claude 限制為唯讀工具。Claude 可以讀取檔案並執行唯讀 shell 命令來探索程式碼庫,但不編輯您的原始檔案。Claude 可能會使用 `AskUserQuestion` 在最終確定計畫之前澄清需求。請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input#handle-clarifying-questions) 以處理這些提示。

233 254 

234**使用時機:** 您想要 Claude 提出變更建議而不執行它們,例如在程式碼審查期間或當您需要在進行變更之前核准變更時。255**使用時機:** 您想要 Claude 提出變更建議而不執行它們,例如在程式碼審查期間或當您需要在進行變更之前核准變更時。

235 256 

236## 相關資源257<h2 id="related-resources">

258 相關資源

259</h2>

237 260 

238對於權限評估流程中的其他步驟:261對於權限評估流程中的其他步驟:

239 262 

Details

4 4 

5# SDK 中的 Plugins5# SDK 中的 Plugins

6 6 

7> 通過 Agent SDK 加載自訂 plugins,以使用命令、agents、skillshooks 擴展 Claude Code7> 通過 Agent SDK 加載自訂 plugins,以使用 skills、agents、hooksMCP servers 擴展 Claude Code

8 8 

9Plugins 允許您使用可在專案間共享的自訂功能來擴展 Claude Code。通過 Agent SDK,您可以以程式方式從本地目錄加載 plugins,以將自訂 slash commands、agents、skills、hooks 和 MCP servers 添加到您的 agent sessions。9Plugins 允許您使用可在專案間共享的自訂功能來擴展 Claude Code。通過 Agent SDK,您可以以程式方式從本地目錄加載 plugins,以將 skills、agents、hooks 和 MCP servers 添加到您的 agent sessions。

10 10 

11## 什麼是 plugins11<h2 id="what-are-plugins">

12 什麼是 plugins?

13</h2>

12 14 

13Plugins 是 Claude Code 擴展的套件,可以包括:15Plugins 是 Claude Code 擴展的套件,可以包括:

14 16 


23 25 

24有關 plugin 結構和如何創建 plugins 的完整信息,請參閱 [Plugins](/zh-TW/plugins)。26有關 plugin 結構和如何創建 plugins 的完整信息,請參閱 [Plugins](/zh-TW/plugins)。

25 27 

26## 加載 plugins28<h2 id="loading-plugins">

29 加載 plugins

30</h2>

27 31 

28通過在選項配置中提供本地文件系統路徑來加載 plugins。`type` 字段必須是 `"local"`,這是 SDK 接受的唯一值。要使用通過 [marketplace](/zh-TW/plugin-marketplaces) 或遠程存儲庫分發的 plugin,請先下載它並提供本地目錄路徑。SDK 支持從不同位置加載多個 plugins。32通過在選項配置中提供本地文件系統路徑來加載 plugins。`type` 字段必須是 `"local"`,這是 SDK 接受的唯一值。要使用通過 [marketplace](/zh-TW/plugin-marketplaces) 或遠程存儲庫分發的 plugin,請先下載它並提供本地目錄路徑。SDK 支持從不同位置加載多個 plugins。

29 33 


67 ```71 ```

68</CodeGroup>72</CodeGroup>

69 73 

70### 路徑規範74<h3 id="path-specifications">

75 路徑規範

76</h3>

71 77 

72Plugin 路徑可以是:78Plugin 路徑可以是:

73 79 


75* **絕對路徑**:完整文件系統路徑(例如,`"/home/user/plugins/my-plugin"`)81* **絕對路徑**:完整文件系統路徑(例如,`"/home/user/plugins/my-plugin"`)

76 82 

77<Note>83<Note>

78 路徑應指向 plugin 的根目錄(包含 `.claude-plugin/plugin.json` 的目錄)84 路徑應指向 plugin 的根目錄:`skills/`、`agents/`、`hooks/`、`commands/`舊版)或 `.claude-plugin/` 的父目錄,而不是子目錄

79</Note>85</Note>

80 86 

81## 驗證 plugin 安裝87<h2 id="verifying-plugin-installation">

88 驗證 plugin 安裝

89</h2>

82 90 

83當 plugins 成功加載時,它們會出現在系統初始化消息中。您可以驗證您的 plugins 是否可用:91當 plugins 成功加載時,它們會出現在系統初始化消息中。您可以驗證您的 plugins 是否可用:

84 92 


97 console.log("Plugins:", message.plugins);105 console.log("Plugins:", message.plugins);

98 // 範例:[{ name: "my-plugin", path: "./my-plugin" }]106 // 範例:[{ name: "my-plugin", path: "./my-plugin" }]

99 107 

100 // 檢查來自 plugins 的可用命令108 // Plugin skills 會以 plugin 名稱作為前綴出現

109 console.log("Skills:", message.skills);

110 // 範例:["my-plugin:greet"]

111 

112 // Plugin 命令使用相同的前綴,skills 也會出現在這裡

101 console.log("Commands:", message.slash_commands);113 console.log("Commands:", message.slash_commands);

102 // 範例:["/help", "/compact", "my-plugin:custom-command"]114 // 範例:["compact", "context", "my-plugin:custom-command", "my-plugin:greet"]

103 }115 }

104 }116 }

105 ```117 ```


121 print("Plugins:", message.data.get("plugins"))133 print("Plugins:", message.data.get("plugins"))

122 # 範例:[{"name": "my-plugin", "path": "./my-plugin"}]134 # 範例:[{"name": "my-plugin", "path": "./my-plugin"}]

123 135 

124 # 檢查來自 plugins 的可用命令136 # Plugin skills 會以 plugin 名稱作為前綴出現

137 print("Skills:", message.data.get("skills"))

138 # 範例:["my-plugin:greet"]

139 

140 # Plugin 命令使用相同的前綴,skills 也會出現在這裡

125 print("Commands:", message.data.get("slash_commands"))141 print("Commands:", message.data.get("slash_commands"))

126 # 範例:["/help", "/compact", "my-plugin:custom-command"]142 # 範例:["compact", "context", "my-plugin:custom-command", "my-plugin:greet"]

127 143 

128 144 

129 asyncio.run(main())145 asyncio.run(main())

130 ```146 ```

131</CodeGroup>147</CodeGroup>

132 148 

133## 使用 plugin skills149<h2 id="using-plugin-skills">

150 使用 plugin skills

151</h2>

134 152 

135來自 plugins 的 skills 會自動使用 plugin 名稱進行命名空間化,以避免衝突。當作為 slash commands 調用時格式為 `plugin-name:skill-name`。153來自 plugins 的 skills 會自動使用 plugin 名稱進行命名空間化,以避免衝突。若要直接調用請在提示中發送 `/plugin-name:skill-name`。

136 154 

137<CodeGroup>155<CodeGroup>

138 ```typescript TypeScript theme={null}156 ```typescript TypeScript theme={null}


180 如果您通過 CLI 安裝了 plugin(例如,`/plugin install my-plugin@marketplace`),您仍然可以通過提供其安裝路徑在 SDK 中使用它。檢查 `~/.claude/plugins/` 以查找 CLI 安裝的 plugins。198 如果您通過 CLI 安裝了 plugin(例如,`/plugin install my-plugin@marketplace`),您仍然可以通過提供其安裝路徑在 SDK 中使用它。檢查 `~/.claude/plugins/` 以查找 CLI 安裝的 plugins。

181</Note>199</Note>

182 200 

183## 完整示例201<h2 id="complete-example">

202 完整示例

203</h2>

184 204 

185以下是演示 plugin 加載和使用的完整示例205以下是演示 plugin 載入和使用的完整示例

186 206 

187<CodeGroup>207<CodeGroup>

188 ```typescript TypeScript theme={null}208 ```typescript TypeScript theme={null}


203 })) {223 })) {

204 if (message.type === "system" && message.subtype === "init") {224 if (message.type === "system" && message.subtype === "init") {

205 console.log("Loaded plugins:", message.plugins);225 console.log("Loaded plugins:", message.plugins);

226 console.log("Available skills:", message.skills);

206 console.log("Available commands:", message.slash_commands);227 console.log("Available commands:", message.slash_commands);

207 }228 }

208 229 


246 ):267 ):

247 if isinstance(message, SystemMessage) and message.subtype == "init":268 if isinstance(message, SystemMessage) and message.subtype == "init":

248 print(f"Loaded plugins: {message.data.get('plugins')}")269 print(f"Loaded plugins: {message.data.get('plugins')}")

270 print(f"Available skills: {message.data.get('skills')}")

249 print(f"Available commands: {message.data.get('slash_commands')}")271 print(f"Available commands: {message.data.get('slash_commands')}")

250 272 

251 if isinstance(message, AssistantMessage):273 if isinstance(message, AssistantMessage):


259 ```281 ```

260</CodeGroup>282</CodeGroup>

261 283 

262## Plugin 結構參考284<h2 id="plugin-structure-reference">

285 Plugin 結構參考

286</h2>

263 287 

264Plugin 目錄必須包含 `.claude-plugin/plugin.json` 清單文件。它可以選擇性地包括288Plugin 目錄通常包含 `.claude-plugin/plugin.json` 清單文件。清單是可選的。省略時,Claude Code 會從目錄佈局自動發現組件。目錄可以包括

265 289 

266```text theme={null}290```text theme={null}

267my-plugin/291my-plugin/

268├── .claude-plugin/292├── .claude-plugin/

269│ └── plugin.json # Required: plugin manifest293│ └── plugin.json # Plugin 清單(可選,沒有它也會自動發現組件)

270├── skills/ # Agent Skills (invoked autonomously or via /skill-name)294├── skills/ # Agent Skills(自主調用或通過 /skill-name

271│ └── my-skill/295│ └── my-skill/

272│ └── SKILL.md296│ └── SKILL.md

273├── commands/ # Legacy: use skills/ instead297├── commands/ # 舊版:改用 skills/ 代替

274│ └── custom-cmd.md298│ └── custom-cmd.md

275├── agents/ # Custom agents299├── agents/ # 自訂代理

276│ └── specialist.md300│ └── specialist.md

277├── hooks/ # Event handlers301├── hooks/ # 事件處理程序

278│ └── hooks.json302│ └── hooks.json

279└── .mcp.json # MCP server definitions303└── .mcp.json # MCP 伺服器定義

280```304```

281 305 

282有關創建 plugins 的詳細信息,請參閱:306有關創建 plugins 的詳細信息,請參閱:


284* [Plugins](/zh-TW/plugins) - 完整的 plugin 開發指南308* [Plugins](/zh-TW/plugins) - 完整的 plugin 開發指南

285* [Plugins reference](/zh-TW/plugins-reference) - 技術規範和架構309* [Plugins reference](/zh-TW/plugins-reference) - 技術規範和架構

286 310 

287## 常見用例311<h2 id="common-use-cases">

312 常見用例

313</h2>

288 314 

289### 開發和測試315<h3 id="development-and-testing">

316 開發和測試

317</h3>

290 318 

291在開發期間加載 plugins,無需全局安裝它們:319在開發期間加載 plugins,無需全局安裝它們:

292 320 


294plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];322plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

295```323```

296 324 

297### 專案特定的擴展325<h3 id="project-specific-extensions">

326 專案特定的擴展

327</h3>

298 328 

299在您的專案存儲庫中包含 plugins,以實現團隊範圍的一致性:329在您的專案存儲庫中包含 plugins,以實現團隊範圍的一致性:

300 330 


302plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];332plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

303```333```

304 334 

305### 多個 plugin 來源335<h3 id="multiple-plugin-sources">

336 多個 plugin 來源

337</h3>

306 338 

307結合來自不同位置的 plugins:339結合來自不同位置的 plugins:

308 340 


313];345];

314```346```

315 347 

316## Troubleshooting348<h2 id="troubleshooting">

349 故障排除

350</h2>

317 351 

318### Plugin 未加載352<h3 id="plugin-not-loading">

353 Plugin 未加載

354</h3>

319 355 

320如果您的 plugin 未出現在初始化消息中:356如果您的 plugin 未出現在初始化消息中:

321 357 

3221. **檢查路徑**:確保路徑指向 plugin 根目錄(包含 `.claude-plugin/`3581. **檢查路徑**:確保路徑指向 plugin 根目錄,即 `skills/`、`agents/`、`hooks/`、`commands/`舊版)或 `.claude-plugin/` 的父目錄

3232. **驗證 plugin.json**:確保您的清單文件具有有效的 JSON 語法3592. **驗證 plugin.json**:如果您的 plugin 包含清單,請確保它具有有效的 JSON 語法

3243. **檢查文件權限**:確保 plugin 目錄可讀3603. **檢查文件權限**:確保 plugin 目錄可讀

325 361 

326### Skills 未出現362<h3 id="skills-not-appearing">

363 Skills 未出現

364</h3>

327 365 

328如果 plugin skills 不起作用:366如果 plugin skills 不起作用:

329 367 

3301. **使用命名空間**:Plugin skills 在作為 slash commands 調用時需要 `plugin-name:skill-name` 格式3681. **使用命名空間**: `/plugin-name:skill-name` 的方式調用 plugin skills

3312. **檢查初始化消息**:驗證 skill 是否以正確的命名空間出現在 `slash_commands` 3692. **檢查初始化消息**:驗證 skill 是否以正確的命名空間出現在 `skills` 列表中

3323. **驗證 skill 文件**:確保每個 skill 在 `skills/` 下的自己的子目錄中都有 `SKILL.md` 文件(例如,`skills/my-skill/SKILL.md`3703. **驗證 skill 文件**:確保每個 skill 在 `skills/` 下的自己的子目錄中都有 `SKILL.md` 文件,例如 `skills/my-skill/SKILL.md`

333 371 

334### 路徑解析問題372<h3 id="path-resolution-issues">

373 路徑解析問題

374</h3>

335 375 

336如果相對路徑不起作用:376如果相對路徑不起作用:

337 377 


3392. **使用絕對路徑**:為了可靠性,請考慮使用絕對路徑3792. **使用絕對路徑**:為了可靠性,請考慮使用絕對路徑

3403. **規範化路徑**:使用路徑實用程序正確構造路徑3803. **規範化路徑**:使用路徑實用程序正確構造路徑

341 381 

342## 另請參閱382<h2 id="see-also">

383 另請參閱

384</h2>

343 385 

344* [Plugins](/zh-TW/plugins) - 完整的 plugin 開發指南386* [Plugins](/zh-TW/plugins) - 完整的 plugin 開發指南

345* [Plugins reference](/zh-TW/plugins-reference) - 技術規範387* [Plugins reference](/zh-TW/plugins-reference) - 技術規範

346* [Slash Commands](/zh-TW/agent-sdk/slash-commands) - 在 SDK 中使用 slash commands388* [Commands](/zh-TW/agent-sdk/slash-commands) - 在 SDK 中使用 commands

347* [Subagents](/zh-TW/agent-sdk/subagents) - 使用專門的 agents389* [Subagents](/zh-TW/agent-sdk/subagents) - 使用專門的 agents

348* [Skills](/zh-TW/agent-sdk/skills) - 使用 Agent Skills390* [Skills](/zh-TW/agent-sdk/skills) - 使用 Agent Skills

Details

797```797```

798 798 

799| 屬性 | 類型 | 預設 | 描述 |799| 屬性 | 類型 | 預設 | 描述 |

800| :---------------------------- | :--------------------------------------------------------------------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |800| :---------------------------- | :--------------------------------------------------------------------------------------- | :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

801| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Tools 配置。使用 `{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的預設 tools |801| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Tools 配置。使用 `{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的預設 tools |

802| `allowed_tools` | `list[str]` | `[]` | 自動批准的 tools,無需提示。這不會限制 Claude 僅使用這些 tools;未列出的 tools 會進入 `permission_mode` 和 `can_use_tool`。使用 `disallowed_tools` 來阻止 tools。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |802| `allowed_tools` | `list[str]` | `[]` | 自動批准的 tools,無需提示。這不會限制 Claude 僅使用這些 tools;未列出的 tools 會進入 `permission_mode` 和 `can_use_tool`。使用 `disallowed_tools` 來阻止 tools。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

803| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | 系統提示配置。傳遞字串以取得自訂提示,或使用 `{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的系統提示。新增 `"append"` 以擴展預設 |803| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | 系統提示配置。傳遞字串以取得自訂提示,或使用 `{"type": "preset", "preset": "claude_code"}` 以取得 Claude Code 的系統提示。新增 `"append"` 以擴展預設 |

804| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP 伺服器配置或配置檔案路徑 |804| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | MCP 伺服器配置或配置檔案路徑 |

805| `strict_mcp_config` | `bool` | `False` | 當為 `True` 時,僅使用在 `mcp_servers` 中傳遞的伺服器,並忽略專案 `.mcp.json`、使用者設定和外掛程式提供的 MCP 伺服器。對應到 CLI `--strict-mcp-config` 旗標 |805| `strict_mcp_config` | `bool` | `False` | 當為 `True` 時,僅使用在 `mcp_servers` 中傳遞的伺服器,並忽略專案 `.mcp.json`、使用者設定、外掛程式提供的 MCP 伺服器和 [claude.ai 連接器](/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對應到 CLI `--strict-mcp-config` 旗標 |

806| `permission_mode` | `PermissionMode \| None` | `None` | tool 使用的權限模式 |806| `permission_mode` | `PermissionMode \| None` | `None` | tool 使用的權限模式 |

807| `continue_conversation` | `bool` | `False` | 繼續最近的對話 |807| `continue_conversation` | `bool` | `False` | 繼續最近的對話 |

808| `resume` | `str \| None` | `None` | 要繼續的 session ID |808| `resume` | `str \| None` | `None` | 要繼續的 session ID |

809| `max_turns` | `int \| None` | `None` | 最大代理轉數(tool 使用往返) |809| `max_turns` | `int \| None` | `None` | 最大代理轉數(tool 使用往返) |

810| `max_budget_usd` | `float \| None` | `None` | 當客戶端成本估計達到此 USD 值時停止查詢。與 `total_cost_usd` 的相同估計進行比較;見 [追蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 以了解準確性注意事項 |810| `max_budget_usd` | `float \| None` | `None` | 當客戶端成本估計達到此 USD 值時停止查詢。與 `total_cost_usd` 的相同估計進行比較;見 [追蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 以了解準確性注意事項 |

811| `disallowed_tools` | `list[str]` | `[]` | 始終拒絕的 tools。拒絕規則首先檢查並覆蓋 `allowed_tools` `permission_mode`(包括 `bypassPermissions`) |811| `disallowed_tools` | `list[str]` | `[]` | 要拒絕的 tools。裸名稱(例如 `"Bash"`)會從 Claude 的上下文中移除該 tool。範圍規則(例如 `"Bash(rm *)"`)會保留該 tool 可用,並在每個權限模式(包括 `bypassPermissions`)中拒絕匹配的呼叫。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

812| `enable_file_checkpointing` | `bool` | `False` | 啟用檔案變更追蹤以進行倒帶。見 [檔案 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |812| `enable_file_checkpointing` | `bool` | `False` | 啟用檔案變更追蹤以進行倒帶。見 [檔案 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |

813| `model` | `str \| None` | `None` | 要使用的 Claude 模型 |813| `model` | `str \| None` | `None` | 要使用的 Claude 模型 |

814| `fallback_model` | `str \| None` | `None` | 如果主模型失敗,使用的備用模型 |814| `fallback_model` | `str \| None` | `None` | 如果主模型失敗,使用的備用模型 |


834| `plugins` | `list[SdkPluginConfig]` | `[]` | 從本地路徑載入自訂外掛程式。見 [外掛程式](/zh-TW/agent-sdk/plugins) 以了解詳情 |834| `plugins` | `list[SdkPluginConfig]` | `[]` | 從本地路徑載入自訂外掛程式。見 [外掛程式](/zh-TW/agent-sdk/plugins) 以了解詳情 |

835| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | 以程式設計方式配置沙箱行為。見 [沙箱設定](#sandboxsettings) 以了解詳情 |835| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | 以程式設計方式配置沙箱行為。見 [沙箱設定](#sandboxsettings) 以了解詳情 |

836| `setting_sources` | `list[SettingSource] \| None` | `None`(CLI 預設值:所有來源) | 控制要載入哪些檔案系統設定。傳遞 `[]` 以停用使用者、專案和本地設定。無論如何都會載入受管原則設定。見 [使用 Claude Code 功能](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) |836| `setting_sources` | `list[SettingSource] \| None` | `None`(CLI 預設值:所有來源) | 控制要載入哪些檔案系統設定。傳遞 `[]` 以停用使用者、專案和本地設定。無論如何都會載入受管原則設定。見 [使用 Claude Code 功能](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

837| `skills` | `list[str] \| Literal["all"] \| None` | `None` | 可供 session 使用的 skills。傳遞 `"all"` 以啟用每個發現的 skill,或傳遞 skill 名稱清單。設定時,SDK 會自動啟用 Skill tool,無需在 `allowed_tools` 中列出。見 [Skills](/zh-TW/agent-sdk/skills) |837| `skills` | `list[str] \| Literal["all"] \| None` | `None` | 可供 session 使用的 skills。傳遞 `"all"` 以啟用每個發現的 skill,或傳遞 skill 名稱清單。設定時,SDK 會自動將 Skill tool 新增到 `allowed_tools`。如果您也傳遞 `tools`,請在該清單中包括 `"Skill"`。見 [Skills](/zh-TW/agent-sdk/skills) |

838| `max_thinking_tokens` | `int \| None` | `None` | *已棄用* - 思考區塊的最大令牌數。改用 `thinking` |838| `max_thinking_tokens` | `int \| None` | `None` | *已棄用* - 思考區塊的最大令牌數。改用 `thinking` |

839| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | 控制擴展思考行為。優先於 `max_thinking_tokens` |839| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | 控制擴展思考行為。優先於 `max_thinking_tokens` |

840| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | 思考深度的努力級別 |840| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | 思考深度的努力級別 |


1861```1861```

1862 1862 

1863<Note>1863<Note>

1864 TypeScript SDK 支援 Python 中尚未提供的其他 hook 事件:`SessionStart`、`SessionEnd`、`Setup`、`TeammateIdle`、`TaskCompleted`、`ConfigChange`、`WorktreeCreate`、`WorktreeRemove` 和 `PostToolBatch`。1864 TypeScript SDK 支援 Python 中尚未提供的其他 hook 事件:`SessionStart`、`SessionEnd`、`Setup`、`TeammateIdle`、`TaskCompleted`、`ConfigChange`、`WorktreeCreate`、`WorktreeRemove`、`PostToolBatch` 和 `MessageDisplay`。

1865</Note>1865</Note>

1866 1866 

1867### `HookCallback`1867### `HookCallback`


2868 2868 

2869### ListMcpResources2869### ListMcpResources

2870 2870 

2871**Tool 名稱:** `ListMcpResources`2871**Tool 名稱:** `ListMcpResourcesTool`

2872 2872 

2873**輸入:**2873**輸入:**

2874 2874 


2897 2897 

2898### ReadMcpResource2898### ReadMcpResource

2899 2899 

2900**Tool 名稱:** `ReadMcpResource`2900**Tool 名稱:** `ReadMcpResourceTool`

2901 2901 

2902**輸入:**2902**輸入:**

2903 2903 


3297| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandboxignoreviolations) | `None` | 配置要忽略的沙箱違規 |3297| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandboxignoreviolations) | `None` | 配置要忽略的沙箱違規 |

3298| `enableWeakerNestedSandbox` | `bool` | `False` | 啟用較弱的嵌套沙箱以相容性 |3298| `enableWeakerNestedSandbox` | `bool` | `False` | 啟用較弱的嵌套沙箱以相容性 |

3299 3299 

3300<Note>

3301 沙箱取決於平台支援,在 Linux 上,需要 `bubblewrap` 和 `socat` 等工具。預設情況下,當 `enabled` 為 `True` 但沙箱無法啟動時,命令會在沙箱外執行,並在 stderr 上顯示警告。此預設與 TypeScript SDK 不同,其中 `failIfUnavailable` 預設為 `true`。

3302 

3303 在沙箱設定中設定 `"failIfUnavailable": True` 以改為停止。該鍵尚未在 `SandboxSettings` 上宣告,但 SDK 會將其轉發給 Claude Code,後者會遵守它。`query()` 然後報告 `ResultMessage`,其中 `subtype="error_during_execution"` 且原因在 `errors` 中。監視該子類型,而不是期望 `query()` 在產生訊息之前引發。

3304</Note>

3305 

3300#### 範例使用3306#### 範例使用

3301 3307 

3302```python theme={null}3308```python theme={null}


3321 3327 

3322### `SandboxNetworkConfig`3328### `SandboxNetworkConfig`

3323 3329 

3324沙箱模式的網路特定配置。3330沙箱模式的網路特定配置。這些設定適用於當父 [`SandboxSettings`](#sandboxsettings) 中的 `enabled` 為 `True` 時的沙箱化 Bash 命令。它們不會限制 WebFetch 工具,該工具改用[權限規則](/zh-TW/permissions#webfetch)。

3325 3331 

3326```python theme={null}3332```python theme={null}

3327class SandboxNetworkConfig(TypedDict, total=False):3333class SandboxNetworkConfig(TypedDict, total=False):

Details

142. 創建一個包含一些有缺陷代碼的文件142. 創建一個包含一些有缺陷代碼的文件

153. 運行一個代理,自動查找並修復錯誤153. 運行一個代理,自動查找並修復錯誤

16 16 

17## 先決條件17<h2 id="prerequisites">

18 先決條件

19</h2>

18 20 

19* **Node.js 18+** 或 **Python 3.10+**21* **Node.js 18+** 或 **Python 3.10+**

20* 一個 **Anthropic 帳戶**([在此註冊](https://platform.claude.com/))22* 一個 **Anthropic 帳戶**([在此註冊](https://platform.claude.com/))

21 23 

22## 設置24<h2 id="setup">

25 設置

26</h2>

23 27 

24<Steps>28<Steps>

25 <Step title="創建項目文件夾">29 <Step title="創建項目文件夾">

26 為此快速開始創建一個新目錄:30 為此快速開始創建一個新目錄:

27 31 

28 ```bash theme={null}32 ```bash theme={null}

29 mkdir my-agent && cd my-agent33 mkdir my-agent

34 cd my-agent

30 ```35 ```

31 36 

32 對於您自己的項目,您可以從任何文件夾運行 SDK;默認情況下,它將有權訪問該目錄及其子目錄中的文件。37 對於您自己的項目,您可以從任何文件夾運行 SDK;默認情況下,它將有權訪問該目錄及其子目錄中的文件。


43 </Tab>48 </Tab>

44 49 

45 <Tab title="Python (uv)">50 <Tab title="Python (uv)">

46 [uv Python 包管理器](https://docs.astral.sh/uv/)是一個快速的 Python 包管理器,可自動處理虛擬環境:51 [uv](https://docs.astral.sh/uv/) 是一個快速的 Python 包管理器,可自動處理虛擬環境:

47 52 

48 ```bash theme={null}53 ```bash theme={null}

49 uv init && uv add claude-agent-sdk54 uv init

55 uv add claude-agent-sdk

50 ```56 ```

51 </Tab>57 </Tab>

52 58 

53 <Tab title="Python (pip)">59 <Tab title="Python (pip)">

54 首先創建虛擬環境然後安裝:60 創建並激活虛擬環境然後安裝該包。

61 

62 在 macOS 或 Linux 上:

55 63 

56 ```bash theme={null}64 ```bash theme={null}

57 python3 -m venv .venv && source .venv/bin/activate65 python3 -m venv .venv

58 pip3 install claude-agent-sdk66 source .venv/bin/activate

67 pip install claude-agent-sdk

68 ```

69 

70 在 Windows 上:

71 

72 ```powershell theme={null}

73 py -m venv .venv

74 .venv\Scripts\Activate.ps1

75 pip install claude-agent-sdk

59 ```76 ```

77 

78 如果 PowerShell 因執行策略錯誤而阻止 `Activate.ps1`,請先運行 `Set-ExecutionPolicy -Scope Process RemoteSigned`。

60 </Tab>79 </Tab>

61 </Tabs>80 </Tabs>

62 81 


66 </Step>85 </Step>

67 86 

68 <Step title="設置您的 API 密鑰">87 <Step title="設置您的 API 密鑰">

69 從 [Claude 控制台](https://platform.claude.com/)獲取 API 密鑰,然後在您的項目目錄中創建一個 `.env` 文件:88 從 [Claude 控制台](https://platform.claude.com/) 獲取 API 密鑰,然後在您的項目目錄中創建一個 `.env` 文件:

70 89 

71 ```bash theme={null}90 ```bash theme={null}

72 ANTHROPIC_API_KEY=your-api-key91 ANTHROPIC_API_KEY=your-api-key


87 </Step>106 </Step>

88</Steps>107</Steps>

89 108 

90## 創建有缺陷的文件109<h2 id="create-a-buggy-file">

110 創建有缺陷的文件

111</h2>

91 112 

92此快速開始將引導您構建一個可以查找並修復代碼中的錯誤的代理。首先,您需要一個包含一些故意錯誤的文件供代理修復。在 `my-agent` 目錄中創建 `utils.py` 並粘貼以下代碼:113此快速開始將引導您構建一個可以查找並修復代碼中的錯誤的代理。首先,您需要一個包含一些故意錯誤的文件供代理修復。在 `my-agent` 目錄中創建 `utils.py` 並粘貼以下代碼:

93 114 


1081. `calculate_average([])` 因除以零而崩潰1291. `calculate_average([])` 因除以零而崩潰

1092. `get_user_name(None)` 因 TypeError 而崩潰1302. `get_user_name(None)` 因 TypeError 而崩潰

110 131 

111## 構建查找並修復錯誤的代理132<h2 id="build-an-agent-that-finds-and-fixes-bugs">

133 構建查找並修復錯誤的代理

134</h2>

112 135 

113如果您使用 Python SDK,請創建 `agent.py`,或者如果使用 TypeScript,請創建 `agent.ts`:136如果您使用 Python SDK,請創建 `agent.py`,或者如果使用 TypeScript,請創建 `agent.ts`:

114 137 


123 async for message in query(146 async for message in query(

124 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",147 prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",

125 options=ClaudeAgentOptions(148 options=ClaudeAgentOptions(

126 allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use149 allowed_tools=["Read", "Edit", "Glob"], # Auto-approve these tools

127 permission_mode="acceptEdits", # Auto-approve file edits150 permission_mode="acceptEdits", # Auto-approve file edits

128 ),151 ),

129 ):152 ):


148 for await (const message of query({171 for await (const message of query({

149 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",172 prompt: "Review utils.py for bugs that would cause crashes. Fix any issues you find.",

150 options: {173 options: {

151 allowedTools: ["Read", "Edit", "Glob"], // Tools Claude can use174 allowedTools: ["Read", "Edit", "Glob"], // Auto-approve these tools

152 permissionMode: "acceptEdits" // Auto-approve file edits175 permissionMode: "acceptEdits" // Auto-approve file edits

153 }176 }

154 })) {177 })) {


184 此示例使用流式傳輸來實時顯示進度。如果您不需要實時輸出(例如,對於後台作業或 CI 管道),您可以一次收集所有消息。有關詳細信息,請參閱[流式傳輸與單輪模式](/zh-TW/agent-sdk/streaming-vs-single-mode)。207 此示例使用流式傳輸來實時顯示進度。如果您不需要實時輸出(例如,對於後台作業或 CI 管道),您可以一次收集所有消息。有關詳細信息,請參閱[流式傳輸與單輪模式](/zh-TW/agent-sdk/streaming-vs-single-mode)。

185</Note>208</Note>

186 209 

187### 運行您的代理210<h3 id="run-your-agent">

211 運行您的代理

212</h3>

188 213 

189您的代理已準備好。使用以下命令運行它:214您的代理已準備好。使用以下命令運行它:

190 215 

191<Tabs>216<Tabs>

192 <Tab title="Python">217 <Tab title="TypeScript">

193 ```bash theme={null}218 ```bash theme={null}

194 python3 agent.py219 npx tsx agent.ts

195 ```220 ```

196 </Tab>221 </Tab>

197 222 

198 <Tab title="TypeScript">223 <Tab title="Python (uv)">

199 ```bash theme={null}224 ```bash theme={null}

200 npx tsx agent.ts225 uv run agent.py

226 ```

227 </Tab>

228 

229 <Tab title="Python (pip)">

230 使用您仍然激活的虛擬環境:

231 

232 ```bash theme={null}

233 python agent.py

201 ```234 ```

202 </Tab>235 </Tab>

203</Tabs>236</Tabs>


214 如果您看到「API key not found」,請確保您已在 `.env` 文件或 shell 環境中設置 `ANTHROPIC_API_KEY` 環境變量。有關更多幫助,請參閱[完整故障排除指南](/zh-TW/troubleshooting)。247 如果您看到「API key not found」,請確保您已在 `.env` 文件或 shell 環境中設置 `ANTHROPIC_API_KEY` 環境變量。有關更多幫助,請參閱[完整故障排除指南](/zh-TW/troubleshooting)。

215</Note>248</Note>

216 249 

217### 嘗試其他提示250<h3 id="try-other-prompts">

251 嘗試其他提示

252</h3>

218 253 

219現在您的代理已設置好,嘗試一些不同的提示:254現在您的代理已設置好,嘗試一些不同的提示:

220 255 


222* `"Add type hints to all functions in utils.py"`257* `"Add type hints to all functions in utils.py"`

223* `"Create a README.md documenting the functions in utils.py"`258* `"Create a README.md documenting the functions in utils.py"`

224 259 

225### 自定義您的代理260<h3 id="customize-your-agent">

261 自定義您的代理

262</h3>

226 263 

227您可以通過更改選項來修改代理的行為。以下是一些示例:264您可以通過更改選項來修改代理的行為。以下是一些示例:

228 265 


288 325 

289啟用 `Bash` 後,嘗試:`"Write unit tests for utils.py, run them, and fix any failures"`326啟用 `Bash` 後,嘗試:`"Write unit tests for utils.py, run them, and fix any failures"`

290 327 

291## 關鍵概念328<h2 id="key-concepts">

329 關鍵概念

330</h2>

292 331 

293**工具**控制您的代理可以執行的操作:332**工具**控制您的代理可以執行的操作:

294 333 


310 349 

311上面的示例使用 `acceptEdits` 模式,它自動批准文件操作,以便代理可以無需交互提示地運行。如果您想提示用戶批准,請使用 `default` 模式並提供一個 [`canUseTool` 回調](/zh-TW/agent-sdk/user-input)來收集用戶輸入。如需更多控制,請參閱[權限](/zh-TW/agent-sdk/permissions)。350上面的示例使用 `acceptEdits` 模式,它自動批准文件操作,以便代理可以無需交互提示地運行。如果您想提示用戶批准,請使用 `default` 模式並提供一個 [`canUseTool` 回調](/zh-TW/agent-sdk/user-input)來收集用戶輸入。如需更多控制,請參閱[權限](/zh-TW/agent-sdk/permissions)。

312 351 

313## 故障排除352<h2 id="troubleshooting">

353 故障排除

354</h2>

314 355 

315### API 錯誤 `thinking.type.enabled` 不支持此模型356<h3 id="api-error-thinking-type-enabled-is-not-supported-for-this-model">

357 API 錯誤 `thinking.type.enabled` 不支持此模型

358</h3>

316 359 

317Claude Opus 4.7 將 `thinking.type.enabled` 替換為 `thinking.type.adaptive`。當您選擇 `claude-opus-4-7` 時,較舊的 Agent SDK 版本會失敗並出現以下 API 錯誤:360Claude Opus 4.7 將 `thinking.type.enabled` 替換為 `thinking.type.adaptive`。當您選擇 `claude-opus-4-7` 時,較舊的 Agent SDK 版本會失敗並出現以下 API 錯誤:

318 361 


322 365 

323升級到 Agent SDK v0.2.111 或更高版本以使用 Opus 4.7。366升級到 Agent SDK v0.2.111 或更高版本以使用 Opus 4.7。

324 367 

325## 後續步驟368<h2 id="next-steps">

369 後續步驟

370</h2>

326 371 

327現在您已創建了第一個代理,了解如何擴展其功能並根據您的用例進行定制:372現在您已創建了第一個代理,了解如何擴展其功能並根據您的用例進行定制:

328 373 

agent-sdk/secure-deployment.md +396 −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# 安全部署 AI 代理

6 

7> 一份關於使用隔離、認證管理和網路控制來保護 Claude Code 和 Agent SDK 部署的指南

8 

9Claude Code 和 Agent SDK 是強大的工具,可以代表您執行程式碼、存取檔案並與外部服務互動。與任何具有這些功能的工具一樣,經過深思熟慮的部署可確保您獲得好處,同時保持適當的控制。

10 

11與遵循預定程式碼路徑的傳統軟體不同,這些工具根據上下文和目標動態生成其操作。這種靈活性是它們有用的原因,但這也意味著它們的行為可能受到它們處理的內容的影響:檔案、網頁或使用者輸入。這有時被稱為提示注入。例如,如果儲存庫的 README 包含不尋常的指令,Claude Code 可能會以操作員未預期的方式將這些指令納入其操作中。本指南涵蓋了減少此風險的實用方法。

12 

13好消息是,保護代理部署不需要異國情調的基礎設施。適用於執行任何半信任程式碼的相同原則也適用於此:隔離、最小權限和深度防禦。Claude Code 包含多項安全功能,可幫助解決常見問題,本指南將介紹這些功能以及對於需要它們的人的其他強化選項。

14 

15並非每個部署都需要最大安全性。在筆記型電腦上執行 Claude Code 的開發人員的要求與在多租戶環境中處理客戶資料的公司不同。本指南提供了從 Claude Code 的內建安全功能到強化生產架構的選項,因此您可以選擇適合您情況的選項。

16 

17<h2 id="threat-model">

18 威脅模型

19</h2>

20 

21代理可能因提示注入(嵌入在它們處理的內容中的指令)或模型錯誤而採取意外操作。Claude 模型旨在抵抗這種情況;請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)和您部署的模型的系統卡以了解評估詳情。

22 

23不過,深度防禦仍然是很好的做法。例如,如果代理處理一個惡意檔案,該檔案指示它將客戶資料發送到外部伺服器,網路控制可以完全阻止該請求。

24 

25<h2 id="built-in-security-features">

26 內建安全功能

27</h2>

28 

29Claude Code 包含多項安全功能,可解決常見問題。有關完整詳情,請參閱[安全文件](/zh-TW/security)。

30 

31* **權限系統**:每個工具和 bash 命令都可以配置為允許、阻止或提示使用者批准。使用 glob 模式建立規則,例如「允許所有 npm 命令」或「阻止任何包含 sudo 的命令」。組織可以設定適用於所有使用者的政策。請參閱[權限](/zh-TW/permissions)。

32* **用於權限的命令解析**:在執行 bash 命令之前,Claude Code 將其解析為 AST 並將結果與您的權限規則進行比對。無法乾淨解析或不符合允許規則的命令需要明確批准。一小組構造(例如 `eval`)無論允許規則如何都始終需要批准。這是一個權限閘道,而不是沙箱;它不會根據其目標路徑或效果推斷命令是否危險。

33* **Web 搜尋摘要**:搜尋結果被摘要化,而不是將原始內容直接傳遞到上下文中,降低了來自惡意 Web 內容的提示注入風險。

34* **Sandbox 模式**:Bash 命令可以在限制檔案系統和網路存取的沙箱環境中執行。有關詳情,請參閱[沙箱文件](/zh-TW/sandboxing)。

35 

36<h2 id="security-principles">

37 安全原則

38</h2>

39 

40對於需要超越 Claude Code 預設值進行額外強化的部署,這些原則指導可用選項。

41 

42<h3 id="security-boundaries">

43 安全邊界

44</h3>

45 

46安全邊界將具有不同信任級別的元件分開。對於高安全性部署,您可以將敏感資源(如認證)放在包含代理的邊界之外。如果代理環境中出現問題,該邊界外的資源仍然受到保護。

47 

48例如,與其直接給予代理 API 金鑰的存取權,您可以在代理環境外執行代理,將金鑰注入到請求中。代理可以進行 API 呼叫,但它永遠看不到認證本身。此模式對於多租戶部署或處理不受信任的內容時很有用。

49 

50<h3 id="least-privilege">

51 最小權限

52</h3>

53 

54在需要時,您可以限制代理僅具有其特定任務所需的功能:

55 

56| 資源 | 限制選項 |

57| ---- | --------------- |

58| 檔案系統 | 僅掛載所需目錄,偏好唯讀 |

59| 網路 | 透過代理限制到特定端點 |

60| 認證 | 透過代理注入而不是直接公開 |

61| 系統功能 | 在容器中刪除 Linux 功能 |

62 

63<h3 id="defense-in-depth">

64 深度防禦

65</h3>

66 

67對於高安全性環境,分層多個控制提供額外保護。選項包括:

68 

69* 容器隔離

70* 網路限制

71* 檔案系統控制

72* 代理處的請求驗證

73 

74正確的組合取決於您的威脅模型和操作要求。

75 

76<h2 id="isolation-technologies">

77 隔離技術

78</h2>

79 

80不同的隔離技術在安全強度、效能和操作複雜性之間提供不同的權衡。

81 

82<Info>

83 在所有這些配置中,Claude Code(或您的 Agent SDK 應用程式)在隔離邊界內執行(沙箱、容器或 VM)。下面描述的安全控制限制了代理可以從該邊界內存取的內容。

84</Info>

85 

86| 技術 | 隔離強度 | 效能開銷 | 複雜性 |

87| ---------------------- | --------- | ---- | ---- |

88| Sandbox runtime | 良好(安全預設值) | 非常低 | 低 |

89| 容器 (Docker) | 取決於設定 | 低 | 中等 |

90| gVisor | 優秀(設定正確時) | 中等/高 | 中等 |

91| VM (Firecracker, QEMU) | 優秀(設定正確時) | 高 | 中等/高 |

92 

93<h3 id="sandbox-runtime">

94 Sandbox runtime

95</h3>

96 

97對於無需容器的輕量級隔離,[sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime) 在 OS 級別強制執行檔案系統和網路限制。

98 

99主要優點是簡單性:不需要 Docker 配置、容器映像或網路設定。代理和檔案系統限制是內建的。您提供一個設定檔,指定允許的網域和路徑。

100 

101**工作原理:**

102 

103* **檔案系統**:使用 OS 原語(Linux 上的 `bubblewrap`、macOS 上的 `sandbox-exec`)限制對配置路徑的讀/寫存取

104* **網路**:移除網路命名空間 (Linux) 或使用 Seatbelt 設定檔 (macOS) 透過內建代理路由網路流量

105* **配置**:基於 JSON 的網域和檔案系統路徑允許清單

106 

107**設定:**

108 

109```bash theme={null}

110npm install @anthropic-ai/sandbox-runtime

111```

112 

113然後建立一個設定檔,指定允許的路徑和網域。

114 

115**安全考量:**

116 

1171. **同主機核心**:與 VM 不同,沙箱化程序共享主機核心。核心漏洞理論上可能導致逃逸。對於某些威脅模型,這是可以接受的,但如果您需要核心級隔離,請使用 gVisor 或單獨的 VM。

118 

1192. **無 TLS 檢查**:代理根據用戶端提供的主機名稱允許清單網域,不會終止或檢查加密流量。在沙箱內執行的程式碼可能會使用[網域前置](https://en.wikipedia.org/wiki/Domain_fronting)或類似技術來到達允許清單外的主機。如果您的威脅模型需要更強的保證,請配置[TLS 終止代理](#traffic-forwarding)。有關更多詳情,請參閱[沙箱安全限制](/zh-TW/sandboxing#security-limitations)。另外,如果代理對允許的網域具有寬鬆認證,請確保它無法使用該網域觸發其他網路請求或洩露資料。

120 

121對於許多單開發人員和 CI/CD 用例,sandbox-runtime 以最少的設定顯著提高了標準。下面的部分涵蓋了需要更強隔離的部署的容器和 VM。

122 

123<h3 id="containers">

124 容器

125</h3>

126 

127容器透過 Linux 命名空間提供隔離。每個容器都有自己的檔案系統、程序樹和網路堆棧視圖,同時共享主機核心。

128 

129安全強化的容器配置可能如下所示:

130 

131```bash theme={null}

132docker run \

133 --cap-drop ALL \

134 --security-opt no-new-privileges \

135 --security-opt seccomp=/path/to/seccomp-profile.json \

136 --read-only \

137 --tmpfs /tmp:rw,noexec,nosuid,size=100m \

138 --tmpfs /home/agent:rw,noexec,nosuid,size=500m \

139 --network none \

140 --memory 2g \

141 --cpus 2 \

142 --pids-limit 100 \

143 --user 1000:1000 \

144 -v /path/to/code:/workspace:ro \

145 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \

146 agent-image

147```

148 

149以下是每個選項的作用:

150 

151| 選項 | 目的 |

152| ---------------------------------- | ---------------------------------------------------------------------------- |

153| `--cap-drop ALL` | 移除 Linux 功能,例如可能導致權限提升的 `NET_ADMIN` 和 `SYS_ADMIN` |

154| `--security-opt no-new-privileges` | 防止程序透過 setuid 二進位檔案獲得權限 |

155| `--security-opt seccomp=...` | 限制可用的系統呼叫;Docker 的預設值阻止約 44 個,自訂設定檔可以阻止更多 |

156| `--read-only` | 使容器的根檔案系統不可變,防止代理持久化更改 |

157| `--tmpfs /tmp:...` | 提供一個可寫的臨時目錄,在容器停止時清除 |

158| `--network none` | 移除所有網路介面;代理透過下面掛載的 Unix 套接字進行通訊 |

159| `--memory 2g` | 將記憶體使用限制為 2GB,以防止資源耗盡 |

160| `--pids-limit 100` | 限制程序計數以防止 fork 炸彈 |

161| `--user 1000:1000` | 以非 root 使用者身份執行 |

162| `-v ...:/workspace:ro` | 以唯讀方式掛載程式碼,以便代理可以分析但不能修改它。**避免掛載敏感的主機目錄,例如 `~/.ssh`、`~/.aws` 或 `~/.config`** |

163| `-v .../proxy.sock:...` | 掛載連接到在容器外執行的代理的 Unix 套接字(見下文) |

164 

165**Unix 套接字架構:**

166 

167使用 `--network none`,容器根本沒有網路介面。代理到達外部世界的唯一方式是透過掛載的 Unix 套接字,該套接字連接到在主機上執行的代理。此代理可以強制執行網域允許清單、注入認證並記錄所有流量。

168 

169這與 [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime) 使用的架構相同。即使代理透過提示注入而被洩露,它也無法將資料洩露到任意伺服器。它只能透過代理進行通訊,代理控制哪些網域可到達。有關更多詳情,請參閱 [Claude Code 沙箱部落格文章](https://www.anthropic.com/engineering/claude-code-sandboxing)。

170 

171**額外強化選項:**

172 

173| 選項 | 目的 |

174| ---------------- | ------------------------------------------ |

175| `--userns-remap` | 將容器 root 對應到無特權主機使用者;需要守護程序配置,但限制容器逃逸造成的損害 |

176| `--ipc private` | 隔離程序間通訊以防止跨容器攻擊 |

177 

178<h3 id="gvisor">

179 gVisor

180</h3>

181 

182標準容器共享主機核心:當容器內的程式碼進行系統呼叫時,它直接進入執行主機的同一核心。這意味著核心漏洞可能允許容器逃逸。gVisor 透過在使用者空間中攔截系統呼叫,在它們到達主機核心之前,實現自己的相容性層來處理大多數系統呼叫,而無需涉及真實核心,從而解決了這個問題。

183 

184如果代理執行惡意程式碼(可能由於提示注入),該程式碼在容器中執行,可能會嘗試核心漏洞利用。使用 gVisor,攻擊面要小得多:惡意程式碼首先需要利用 gVisor 的使用者空間實現,並且對真實核心的存取有限。

185 

186要將 gVisor 與 Docker 一起使用,請安裝 `runsc` 執行時並配置守護程序:

187 

188```json theme={null}

189// /etc/docker/daemon.json

190{

191 "runtimes": {

192 "runsc": {

193 "path": "/usr/local/bin/runsc"

194 }

195 }

196}

197```

198 

199然後使用以下命令執行容器:

200 

201```bash theme={null}

202docker run --runtime=runsc agent-image

203```

204 

205**效能考量:**

206 

207| 工作負載 | 開銷 |

208| ---------- | ------------------------- |

209| CPU 密集型計算 | \~0%(無系統呼叫攔截) |

210| 簡單系統呼叫 | \~2 倍慢 |

211| 檔案 I/O 密集型 | 對於繁重的開啟/關閉模式,最多慢 10-200 倍 |

212 

213對於多租戶環境或處理不受信任的內容時,額外的隔離通常值得開銷。

214 

215<h3 id="virtual-machines">

216 虛擬機

217</h3>

218 

219VM 透過 CPU 虛擬化擴展提供硬體級隔離。每個 VM 執行自己的核心,建立強大的邊界。客體核心中的漏洞不會直接危害主機。但是,VM 不會自動比 gVisor 等替代方案「更安全」。VM 安全性在很大程度上取決於虛擬機管理程式和裝置模擬程式碼。

220 

221Firecracker 專為輕量級 microVM 隔離而設計。它可以在 125 毫秒內啟動 VM,記憶體開銷不到 5 MiB,去除不必要的裝置模擬以減少攻擊面。

222 

223使用此方法,代理 VM 沒有外部網路介面。相反,它透過 `vsock`(虛擬套接字)進行通訊。所有流量透過 vsock 路由到主機上的代理,該代理強制執行允許清單並在轉發請求之前注入認證。

224 

225<h3 id="cloud-deployments">

226 雲部署

227</h3>

228 

229對於雲部署,您可以將上述任何隔離技術與雲原生網路控制相結合:

230 

2311. 在沒有網際網路閘道的私有子網中執行代理容器

2322. 配置雲防火牆規則(AWS 安全群組、GCP VPC 防火牆)以阻止除代理外的所有出站流量

2333. 執行代理(例如 [Envoy](https://www.envoyproxy.io/),其 `credential_injector` 篩選器)來驗證請求、強制執行網域允許清單、注入認證並轉發到外部 API

2344. 為代理的服務帳戶分配最小 IAM 權限,盡可能透過代理路由敏感存取

2355. 在代理處記錄所有流量以進行審計

236 

237<h2 id="credential-management">

238 認證管理

239</h2>

240 

241代理通常需要認證來呼叫 API、存取儲存庫或與雲服務互動。挑戰是提供此存取權,而不公開認證本身。

242 

243<h3 id="the-proxy-pattern">

244 代理模式

245</h3>

246 

247建議的方法是在代理的安全邊界外執行代理,將認證注入到傳出請求中。代理發送沒有認證的請求,代理添加它們,並將請求轉發到其目的地。

248 

249此模式有幾個好處:

250 

2511. 代理永遠看不到實際認證

2522. 代理可以強制執行允許的端點允許清單

2533. 代理可以記錄所有請求以進行審計

2544. 認證存儲在一個安全位置,而不是分散到每個代理

255 

256<h3 id="configuring-claude-code-to-use-a-proxy">

257 配置 Claude Code 以使用代理

258</h3>

259 

260Claude Code 支援兩種方法來透過代理路由採樣請求:

261 

262**選項 1:ANTHROPIC\_BASE\_URL(簡單,但僅適用於採樣 API 請求)**

263 

264```bash theme={null}

265export ANTHROPIC_BASE_URL="http://localhost:8080"

266```

267 

268這告訴 Claude Code 和 Agent SDK 將採樣請求發送到您的代理,而不是直接發送到 Claude API。您的代理接收純文字 HTTP 請求,可以檢查和修改它們(包括注入認證),然後轉發到真實 API。

269 

270**選項 2:HTTP\_PROXY / HTTPS\_PROXY(系統範圍)**

271 

272```bash theme={null}

273export HTTP_PROXY="http://localhost:8080"

274export HTTPS_PROXY="http://localhost:8080"

275```

276 

277Claude Code 和 Agent SDK 尊重這些標準環境變數,透過代理路由所有 HTTP 流量。對於 HTTPS,代理建立加密的 CONNECT 隧道:它無法在沒有 TLS 檢查的情況下看到或修改請求內容。

278 

279<h3 id="implementing-a-proxy">

280 實現代理

281</h3>

282 

283您可以建立自己的代理或使用現有的代理:

284 

285* [Envoy Proxy](https://www.envoyproxy.io/):生產級代理,具有 `credential_injector` 篩選器用於添加身份驗證標頭

286* [mitmproxy](https://mitmproxy.org/):TLS 終止代理,用於檢查和修改 HTTPS 流量

287* [Squid](http://www.squid-cache.org/):具有存取控制清單的快取代理

288* [LiteLLM](https://github.com/BerriAI/litellm):LLM 閘道,具有認證注入和速率限制

289 

290<h3 id="credentials-for-other-services">

291 其他服務的認證

292</h3>

293 

294除了從 Claude API 採樣外,代理通常需要對其他服務的身份驗證存取,例如 git 儲存庫、資料庫和內部 API。有兩種主要方法:

295 

296<h4 id="custom-tools">

297 自訂工具

298</h4>

299 

300透過 MCP 伺服器或自訂工具提供存取,該工具將請求路由到在代理安全邊界外執行的服務。代理呼叫工具,但實際的身份驗證請求發生在外部。工具呼叫代理,代理注入認證。

301 

302例如,git MCP 伺服器可以接受來自代理的命令,但將它們轉發到在主機上執行的 git 代理,該代理在聯絡遠端儲存庫之前添加身份驗證。代理永遠看不到認證。

303 

304優點:

305 

306* **無 TLS 檢查**:外部服務直接進行身份驗證請求

307* **認證保持在外部**:代理只看到工具介面,而不是基礎認證

308 

309<h4 id="traffic-forwarding">

310 流量轉發

311</h4>

312 

313對於 Claude API 呼叫,`ANTHROPIC_BASE_URL` 允許您將請求路由到可以以純文字檢查和修改它們的代理。但對於其他 HTTPS 服務(GitHub、npm 登錄檔、內部 API),流量通常是端到端加密的。即使您透過 `HTTP_PROXY` 透過代理路由它,代理也只看到不透明的 TLS 隧道,無法注入認證。

314 

315要修改任意服務的 HTTPS 流量,而不使用自訂工具,您需要一個 TLS 終止代理,該代理解密流量、檢查或修改它,然後在轉發之前重新加密它。這需要:

316 

3171. 在代理的容器外執行代理

3182. 在代理的信任存儲中安裝代理的 CA 憑證(以便代理信任代理的憑證)

3193. 配置 `HTTP_PROXY`/`HTTPS_PROXY` 透過代理路由流量

320 

321此方法處理任何基於 HTTP 的服務,而無需編寫自訂工具,但增加了圍繞憑證管理的複雜性。

322 

323請注意,並非所有程式都尊重 `HTTP_PROXY`/`HTTPS_PROXY`。大多數工具(curl、pip、npm、git)都這樣做,但有些可能會繞過這些變數並直接連接。例如,Node.js `fetch()` 預設忽略這些變數;在 Node 24+ 中,您可以設定 `NODE_USE_ENV_PROXY=1` 以啟用支援。為了全面涵蓋,您可以使用 [proxychains](https://github.com/haad/proxychains) 來攔截網路呼叫,或配置 iptables 將出站流量重定向到透明代理。

324 

325<Info>

326 **透明代理**在網路級別攔截流量,因此用戶端不需要配置為使用它。常規代理要求用戶端明確連接並說 HTTP CONNECT 或 SOCKS。透明代理(如 Squid 或 mitmproxy 透明模式)可以處理原始重定向的 TCP 連接。

327</Info>

328 

329兩種方法仍然需要 TLS 終止代理和受信任的 CA 憑證。它們只是確保流量實際到達代理。

330 

331<h2 id="filesystem-configuration">

332 檔案系統配置

333</h2>

334 

335檔案系統控制決定代理可以讀取和寫入的檔案。

336 

337<h3 id="read-only-code-mounting">

338 唯讀程式碼掛載

339</h3>

340 

341當代理需要分析程式碼但不修改它時,以唯讀方式掛載目錄:

342 

343```bash theme={null}

344docker run -v /path/to/code:/workspace:ro agent-image

345```

346 

347<Warning>

348 即使對程式碼目錄的唯讀存取也可能公開認證。掛載前要排除或清理的常見檔案:

349 

350 | 檔案 | 風險 |

351 | ------------------------------------------------------- | ------------------- |

352 | `.env`, `.env.local` | API 金鑰、資料庫密碼、機密 |

353 | `~/.git-credentials` | Git 密碼/令牌(純文字) |

354 | `~/.aws/credentials` | AWS 存取金鑰 |

355 | `~/.config/gcloud/application_default_credentials.json` | Google Cloud ADC 令牌 |

356 | `~/.azure/` | Azure CLI 認證 |

357 | `~/.docker/config.json` | Docker 登錄檔身份驗證令牌 |

358 | `~/.kube/config` | Kubernetes 叢集認證 |

359 | `.npmrc`, `.pypirc` | 套件登錄檔令牌 |

360 | `*-service-account.json` | GCP 服務帳戶金鑰 |

361 | `*.pem`, `*.key` | 私密金鑰 |

362 

363 考慮僅複製所需的原始檔案,或使用 `.dockerignore` 樣式篩選。

364</Warning>

365 

366<h3 id="writable-locations">

367 可寫位置

368</h3>

369 

370如果代理需要寫入檔案,您有幾個選項,取決於您是否希望更改持久化:

371 

372對於容器中的臨時工作區,使用僅存在於記憶體中的 `tmpfs` 掛載,在容器停止時清除:

373 

374```bash theme={null}

375docker run \

376 --read-only \

377 --tmpfs /tmp:rw,noexec,nosuid,size=100m \

378 --tmpfs /workspace:rw,noexec,size=500m \

379 agent-image

380```

381 

382如果您想在持久化更改之前檢查它們,覆蓋檔案系統允許代理寫入而不修改基礎檔案。更改存儲在單獨的層中,您可以檢查、應用或丟棄。對於完全持久的輸出,掛載專用磁碟區,但將其與敏感目錄分開。

383 

384<h2 id="further-reading">

385 進一步閱讀

386</h2>

387 

388* [Claude Code 安全文件](/zh-TW/security)

389* [託管 Agent SDK](/zh-TW/agent-sdk/hosting)

390* [處理權限](/zh-TW/agent-sdk/permissions)

391* [Sandbox runtime](https://github.com/anthropic-experimental/sandbox-runtime)

392* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)

393* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)

394* [Docker Security Best Practices](https://docs.docker.com/engine/security/)

395* [gVisor Documentation](https://gvisor.dev/docs/)

396* [Firecracker Documentation](https://firecracker-microvm.github.io/)

agent-sdk/session-storage.md +287 −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# 將會話持久化到外部存儲

6 

7> 將會話記錄鏡像到 S3、Redis 或您自己的後端,以便任何主機都可以恢復它們。

8 

9默認情況下,SDK 將會話記錄寫入本地文件系統上 `~/.claude/projects/` 下的 JSONL 文件。`SessionStore` 適配器允許您將這些記錄鏡像到您自己的後端,例如 S3、Redis 或數據庫,以便在一個主機上創建的會話可以在另一個主機上恢復。

10 

11使用會話存儲的常見原因:

12 

13* **多主機部署。** 無服務器函數、自動擴展的工作進程和 CI 運行器不共享文件系統。共享存儲允許任何副本恢復任何會話。

14* **耐久性。** 本地容器是短暫的。由 S3 或數據庫支持的存儲可以在重新啟動和重新部署後存活。

15* **合規性和審計。** 將記錄保存在您已經管理的存儲中,使用您自己的保留規則、加密和訪問控制。

16 

17<h2 id="the-sessionstore-interface">

18 `SessionStore` 接口

19</h2>

20 

21`SessionStore` 是一個對象,具有兩個必需的方法 `append` 和 `load`,以及三個可選方法。SDK 調用 `append` 在查詢期間寫入記錄條目,調用 `load` 讀取它們以進行恢復。

22 

23<CodeGroup>

24 ```typescript TypeScript theme={null}

25 // Exported from @anthropic-ai/claude-agent-sdk as

26 // SessionStore, SessionKey, SessionStoreEntry.

27 

28 type SessionKey = {

29 projectKey: string;

30 sessionId: string;

31 subpath?: string;

32 };

33 

34 type SessionStore = {

35 // Required

36 append(key: SessionKey, entries: SessionStoreEntry[]): Promise<void>;

37 load(key: SessionKey): Promise<SessionStoreEntry[] | null>;

38 

39 // Optional

40 listSessions?(

41 projectKey: string,

42 ): Promise<Array<{ sessionId: string; mtime: number }>>;

43 delete?(key: SessionKey): Promise<void>;

44 listSubkeys?(key: {

45 projectKey: string;

46 sessionId: string;

47 }): Promise<string[]>;

48 };

49 ```

50 

51 ```python Python theme={null}

52 # Exported from claude_agent_sdk as

53 # SessionStore, SessionKey, SessionStoreEntry.

54 

55 class SessionKey(TypedDict):

56 project_key: str

57 session_id: str

58 subpath: NotRequired[str]

59 

60 class SessionStore(Protocol):

61 # Required

62 async def append(

63 self, key: SessionKey, entries: list[SessionStoreEntry]

64 ) -> None: ...

65 async def load(self, key: SessionKey) -> list[SessionStoreEntry] | None: ...

66 

67 # Optional — omit or raise NotImplementedError

68 async def list_sessions(

69 self, project_key: str

70 ) -> list[SessionStoreListEntry]: ...

71 async def delete(self, key: SessionKey) -> None: ...

72 async def list_subkeys(self, key: SessionListSubkeysKey) -> list[str]: ...

73 ```

74</CodeGroup>

75 

76`SessionKey` 指向一個記錄。`projectKey` 是工作目錄的穩定、文件系統安全的編碼,`sessionId` 是會話 UUID,`subpath` 在條目屬於子代理記錄或邊車文件而不是主對話時設置。將 `subpath` 視為不透明的鍵後綴;它遵循磁盤上的佈局,例如 `subagents/agent-<id>`。當 `subpath` 未定義時,鍵指向主記錄。

77 

78| 方法 | 必需 | 調用時機 |

79| :------------- | :- | :------------------------------------------------------------------------------------------------ |

80| `append` | 是 | 在本地寫入每批記錄條目後。條目是 JSON 安全的對象,本地 JSONL 中每行一個。 |

81| `load` | 是 | 在子進程生成之前一次,當設置 `resume` 時。如果會話未知,返回 `null`。 |

82| `listSessions` | 否 | 由 `listSessions({ sessionStore })` 和 `query()`/`startup()` 與 `continue: true` 調用。如果未定義,這些調用會拋出異常。 |

83| `delete` | 否 | 由 `deleteSession({ sessionStore })` 調用。刪除主鍵(無 `subpath`)必須級聯到該會話的所有子鍵。如果未定義,刪除是無操作的,適合僅追加後端。 |

84| `listSubkeys` | 否 | 在恢復期間,發現子代理記錄。如果未定義,只有主記錄被恢復。 |

85 

86<h2 id="quick-start">

87 快速開始

88</h2>

89 

90SDK 附帶一個 `InMemorySessionStore` 用於開發和測試。下面的示例使用附加的存儲運行查詢,從結果消息中捕獲會話 ID,然後在第二個 `query()` 調用中從存儲恢復。第二個調用傳遞相同的存儲實例加上 `resume`,因此 SDK 從存儲而不是本地文件系統加載記錄:

91 

92<CodeGroup>

93 ```typescript TypeScript theme={null}

94 import { query, InMemorySessionStore } from "@anthropic-ai/claude-agent-sdk";

95 

96 const store = new InMemorySessionStore();

97 

98 let sessionId: string | undefined;

99 for await (const message of query({

100 prompt: "List the TypeScript files under src/",

101 options: { sessionStore: store },

102 })) {

103 if (message.type === "result") {

104 sessionId = message.session_id;

105 }

106 }

107 

108 // Resume from the store. The agent has full context from the first call.

109 for await (const message of query({

110 prompt: "Summarize what those files do",

111 options: { sessionStore: store, resume: sessionId },

112 })) {

113 if (message.type === "result" && message.subtype === "success") {

114 console.log(message.result);

115 }

116 }

117 ```

118 

119 ```python Python theme={null}

120 import asyncio

121 from claude_agent_sdk import (

122 ClaudeAgentOptions,

123 InMemorySessionStore,

124 ResultMessage,

125 query,

126 )

127 

128 store = InMemorySessionStore()

129 

130 

131 async def main():

132 session_id = None

133 async for message in query(

134 prompt="List the Python files under src/",

135 options=ClaudeAgentOptions(session_store=store),

136 ):

137 if isinstance(message, ResultMessage):

138 session_id = message.session_id

139 

140 # Resume from the store. The agent has full context from the first call.

141 async for message in query(

142 prompt="Summarize what those files do",

143 options=ClaudeAgentOptions(session_store=store, resume=session_id),

144 ):

145 if isinstance(message, ResultMessage) and message.subtype == "success":

146 print(message.result)

147 

148 

149 asyncio.run(main())

150 ```

151</CodeGroup>

152 

153<h2 id="write-your-own-adapter">

154 編寫您自己的適配器

155</h2>

156 

157針對您的後端實現 `append` 和 `load`。如果您希望 `listSessions()`、`deleteSession()` 和子代理恢復針對存儲工作,請添加 `listSessions`、`delete` 和 `listSubkeys`。

158 

159傳遞給 `append` 的條目類型為 `SessionStoreEntry`(一個 `{ type: string; ... }` 對象)。將它們視為不透明的 JSON 安全值:按順序持久化它們,並從 `load` 以相同順序返回它們。`load` 必須返回與追加的條目深度相等的條目;不需要字節相等的序列化,因此像 Postgres `jsonb` 這樣重新排序對象鍵的後端是可以的。

160 

161<h2 id="reference-implementations">

162 參考實現

163</h2>

164 

165TypeScript SDK 存儲庫在 [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores) 下包含 S3、Redis 和 Postgres 的可運行參考適配器。它們未發佈到 npm;將您需要的 `src/` 文件複製到您的項目中並安裝相應的後端客戶端。

166 

167| 適配器 | 後端客戶端 | 存儲模型 |

168| :----------------------------------------------------------------------------------------------------------------------------- | :------------------- | :--------------------------------------------- |

169| [`S3SessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/s3) | `@aws-sdk/client-s3` | 每個 `append()` 一個 JSONL 部分文件;`load()` 列出、排序和連接。 |

170| [`RedisSessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/redis) | `ioredis` | 每個記錄的 `RPUSH`/`LRANGE` 列表,加上排序集會話索引。 |

171| [`PostgresSessionStore`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores/postgres) | `pg` | `jsonb` 表中每個條目一行,按 `BIGSERIAL` 排序。 |

172 

173每個適配器都採用預配置的客戶端實例,因此您可以控制憑證、TLS、區域和池。例如,使用 S3:

174 

175```typescript TypeScript theme={null}

176import { query } from "@anthropic-ai/claude-agent-sdk";

177import { S3Client } from "@aws-sdk/client-s3";

178import { S3SessionStore } from "./S3SessionStore"; // copied from examples/session-stores/s3

179 

180const store = new S3SessionStore({

181 bucket: "my-claude-sessions",

182 prefix: "transcripts",

183 client: new S3Client({ region: "us-east-1" }),

184});

185 

186for await (const message of query({

187 prompt: "Hello!",

188 options: { sessionStore: store },

189})) {

190 if (message.type === "result" && message.subtype === "success") {

191 console.log(message.result);

192 }

193}

194 

195// Later, possibly on a different host:

196for await (const message of query({

197 prompt: "Continue where we left off",

198 options: { sessionStore: store, resume: "previous-session-id" },

199})) {

200 // ...

201}

202```

203 

204<h3 id="validate-your-adapter">

205 驗證您的適配器

206</h3>

207 

208兩個 SDK 都附帶一個符合性套件,該套件斷言 `append`、`load` 和可選方法必須滿足的行為契約。當未實現這些方法時,可選方法的測試會自動跳過。

209 

210在 TypeScript 中,從示例目錄將 [`shared/conformance.ts`](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/examples/session-stores/shared/conformance.ts) 複製到您的測試套件中。在 Python 中,該套件在包中提供:

211 

212```python Python theme={null}

213import pytest

214from claude_agent_sdk.testing import run_session_store_conformance

215 

216 

217@pytest.mark.asyncio

218async def test_my_store_conformance():

219 await run_session_store_conformance(MyRedisStore)

220```

221 

222<h2 id="behavior-notes">

223 行為說明

224</h2>

225 

226<h3 id="dual-write-architecture">

227 雙寫架構

228</h3>

229 

230存儲是鏡像,不是替代品。Claude Code 子進程始終首先寫入本地磁盤;SDK 然後將每批轉發到 `append()`。如果您希望本地副本是短暫的,請在 `options.env` 中將 `CLAUDE_CONFIG_DIR` 指向臨時目錄。因為鏡像依賴於本地寫入,`sessionStore` 不能與 `persistSession: false` 結合;如果您同時設置兩者,SDK 會拋出異常。如果與 `enableFileCheckpointing` 結合,它也會拋出異常,因為文件歷史備份 blob 直接寫入本地磁盤,不會鏡像到存儲。

231 

232<h3 id="mirror-writes-are-best-effort">

233 鏡像寫入是盡力而為

234</h3>

235 

236如果 `append()` 拒絕或超時,錯誤被記錄,一個 `{ type: "system", subtype: "mirror_error" }` 消息被發出到迭代器中,查詢繼續。本地記錄已經在磁盤上持久化,因此存儲中斷不會中斷代理或在本地丟失數據。失敗的批次不會重試,因此如果您需要檢測存儲數據丟失,請監視 `mirror_error`。

237 

238<h3 id="getsessionmessages-returns-the-post-compaction-chain">

239 `getSessionMessages` 返回後壓縮鏈

240</h3>

241 

242`getSessionMessages({ sessionStore })` 返回代理在恢復時會看到的鏈接消息鏈。自動壓縮後,早期的轉向被摘要替換,因此存儲持有 503 個原始條目的會話可能從 `getSessionMessages` 返回 18 條消息。對於完整的原始歷史記錄,包括壓縮前的轉向和元數據條目,直接調用 `store.load(key)`。

243 

244<h3 id="forksession-is-not-a-byte-copy">

245 `forkSession` 不是字節副本

246</h3>

247 

248`forkSession({ sessionStore })` 讀取源條目,重寫每個 `sessionId` 字段並重新映射消息 UUID,然後在新鍵下追加轉換後的條目。適配器級別的副本或 `CopyObject` 快捷方式會產生仍然引用舊會話 ID 的記錄,因此 SDK 不使用它。

249 

250<h3 id="subagent-transcripts">

251 子代理記錄

252</h3>

253 

254子代理記錄在 `subpath: "subagents/agent-<id>"` 下鏡像。`listSubagents({ sessionStore })` 要求適配器實現 `listSubkeys`;`getSubagentMessages({ sessionStore })` 在可用時使用它,但在未定義時回退到直接子路徑。恢復也調用 `listSubkeys` 來恢復子代理文件;沒有它,只有主記錄被物化。

255 

256<h3 id="retention">

257 保留

258</h3>

259 

260SDK 永遠不會自行從您的存儲中刪除。保留是適配器的責任:根據您的合規要求實現 TTL、S3 生命週期策略或計劃清理。`CLAUDE_CONFIG_DIR` 下的本地記錄由 `cleanupPeriodDays` 設置獨立清掃。

261 

262<h2 id="supported-on">

263 支持於

264</h2>

265 

266以下 SDK 函數接受 `sessionStore` 選項,當提供時針對存儲而不是本地文件系統運行:

267 

268* [`query()`](/zh-TW/agent-sdk/typescript#query)

269* [`startup()`](/zh-TW/agent-sdk/typescript#startup)

270* [`listSessions()`](/zh-TW/agent-sdk/typescript#listsessions)

271* [`getSessionInfo()`](/zh-TW/agent-sdk/typescript#getsessioninfo)

272* [`getSessionMessages()`](/zh-TW/agent-sdk/typescript#getsessionmessages)

273* [`renameSession()`](/zh-TW/agent-sdk/typescript#renamesession)

274* [`tagSession()`](/zh-TW/agent-sdk/typescript#tagsession)

275* [`deleteSession()`](/zh-TW/agent-sdk/typescript)

276* [`forkSession()`](/zh-TW/agent-sdk/typescript)

277* [`listSubagents()`](/zh-TW/agent-sdk/typescript)

278* [`getSubagentMessages()`](/zh-TW/agent-sdk/typescript)

279 

280<h2 id="related-resources">

281 相關資源

282</h2>

283 

284* [使用會話](/zh-TW/agent-sdk/sessions):在沒有自定義存儲的情況下繼續、恢復和分叉

285* [託管 SDK](/zh-TW/agent-sdk/hosting):多主機環境的部署模式

286* [TypeScript `Options`](/zh-TW/agent-sdk/typescript#options):完整選項參考

287* [`examples/session-stores/`](https://github.com/anthropics/claude-agent-sdk-typescript/tree/main/examples/session-stores):可運行的 S3、Redis 和 Postgres 參考適配器

Details

16 16 

17本指南涵蓋如何為您的應用選擇正確的方法、自動追蹤 sessions 的 SDK 介面、如何捕獲 session ID 並手動使用 `resume` 和 `fork`,以及關於跨主機恢復 sessions 的注意事項。17本指南涵蓋如何為您的應用選擇正確的方法、自動追蹤 sessions 的 SDK 介面、如何捕獲 session ID 並手動使用 `resume` 和 `fork`,以及關於跨主機恢復 sessions 的注意事項。

18 18 

19## 選擇一個方法19<h2 id="choose-an-approach">

20 選擇一個方法

21</h2>

20 22 

21您需要多少 session 處理取決於您的應用程式的形狀。當您發送應該共享上下文的多個提示時,session 管理就會發揮作用。在單個 `query()` 呼叫中,代理已經根據需要進行了盡可能多的轉換,並且權限提示和 `AskUserQuestion` 是[在迴圈中處理](/zh-TW/agent-sdk/user-input)的(它們不會結束呼叫)。23您需要多少 session 處理取決於您的應用程式的形狀。當您發送應該共享上下文的多個提示時,session 管理就會發揮作用。在單個 `query()` 呼叫中,代理已經根據需要進行了盡可能多的轉換,並且權限提示和 `AskUserQuestion` 是[在迴圈中處理](/zh-TW/agent-sdk/user-input)的(它們不會結束呼叫)。

22 24 


29| 嘗試替代方法而不失去原始方法 | Fork session。 |31| 嘗試替代方法而不失去原始方法 | Fork session。 |

30| 無狀態任務,不想將任何內容寫入磁碟(僅限 TypeScript) | 設定 [`persistSession: false`](/zh-TW/agent-sdk/typescript#options)。Session 僅在呼叫期間存在於記憶體中。Python 始終保持到磁碟。 |32| 無狀態任務,不想將任何內容寫入磁碟(僅限 TypeScript) | 設定 [`persistSession: false`](/zh-TW/agent-sdk/typescript#options)。Session 僅在呼叫期間存在於記憶體中。Python 始終保持到磁碟。 |

31 33 

32### Continue、resumefork34<h3 id="continue-resume-and-fork">

35 Continue、resume 和 fork

36</h3>

33 37 

34Continue、resume 和 fork 是您在 `query()` 上設定的選項欄位(Python 中的 [`ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions),TypeScript 中的 [`Options`](/zh-TW/agent-sdk/typescript#options))。38Continue、resume 和 fork 是您在 `query()` 上設定的選項欄位(Python 中的 [`ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions),TypeScript 中的 [`Options`](/zh-TW/agent-sdk/typescript#options))。

35 39 


40 44 

41**Fork** 不同:它創建一個新 session,從原始 session 的歷史副本開始。原始 session 保持不變。使用 fork 嘗試不同的方向,同時保持返回的選項。45**Fork** 不同:它創建一個新 session,從原始 session 的歷史副本開始。原始 session 保持不變。使用 fork 嘗試不同的方向,同時保持返回的選項。

42 46 

43## 自動 session 管理47<h2 id="automatic-session-management">

48 自動 session 管理

49</h2>

44 50 

45兩個 SDK 都提供一個介面,可以跨呼叫為您追蹤 session 狀態,因此您無需手動傳遞 ID。將這些用於單個進程中的多轉對話。51兩個 SDK 都提供一個介面,可以跨呼叫為您追蹤 session 狀態,因此您無需手動傳遞 ID。將這些用於單個進程中的多轉對話。

46 52 

47### Python:`ClaudeSDKClient`53<h3 id="python-claudesdkclient">

54 Python:`ClaudeSDKClient`

55</h3>

48 56 

49[`ClaudeSDKClient`](/zh-TW/agent-sdk/python#claudesdkclient) 在內部處理 session ID。每次呼叫 `client.query()` 都會自動繼續相同的 session。呼叫 [`client.receive_response()`](/zh-TW/agent-sdk/python#claudesdkclient) 以迭代當前查詢的訊息。客戶端通常用作非同步上下文管理器57[`ClaudeSDKClient`](/zh-TW/agent-sdk/python#claudesdkclient) 在內部處理 session ID。每次呼叫 `client.query()` 都會自動繼續相同的 session。呼叫 [`client.receive_response()`](/zh-TW/agent-sdk/python#claudesdkclient) 以迭代當前查詢的訊息。使用客戶端作為非同步上下文管理器,以便為您處理連接設置和拆卸,或手動呼叫 `connect()` 和 `disconnect()`

50 58 

51此示例針對相同的 `client` 運行兩個查詢。第一個要求代理分析一個模組;第二個要求它重構該模組。因為兩個呼叫都通過相同的客戶端實例進行,第二個查詢具有來自第一個的完整上下文,無需任何明確的 `resume` 或 session ID:59此示例針對相同的 `client` 運行兩個查詢。第一個要求代理分析一個模組;第二個要求它重構該模組。因為兩個呼叫都通過相同的客戶端實例進行,第二個查詢具有來自第一個的完整上下文,無需任何明確的 `resume` 或 session ID:

52 60 


98 106 

99有關何時使用 `ClaudeSDKClient` 與獨立 `query()` 函數的詳細信息,請參閱 [Python SDK 參考](/zh-TW/agent-sdk/python#choosing-between-query-and-claudesdkclient)。107有關何時使用 `ClaudeSDKClient` 與獨立 `query()` 函數的詳細信息,請參閱 [Python SDK 參考](/zh-TW/agent-sdk/python#choosing-between-query-and-claudesdkclient)。

100 108 

101### TypeScript:`continue: true`109<h3 id="typescript-continue-true">

110 TypeScript:`continue: true`

111</h3>

102 112 

103TypeScript SDK 沒有像 Python 的 `ClaudeSDKClient` 那樣的 session 持有客戶端物件。相反,在每個後續 `query()` 呼叫上傳遞 `continue: true`,SDK 會在當前目錄中拾取最近的 session。無需 ID 追蹤。113TypeScript SDK 沒有像 Python 的 `ClaudeSDKClient` 那樣的 session 持有客戶端物件。相反,在每個後續 `query()` 呼叫上傳遞 `continue: true`,SDK 會在當前目錄中拾取最近的 session。無需 ID 追蹤。

104 114 


135 實驗性的 [V2 session API](/zh-TW/agent-sdk/typescript-v2-preview)(提供了 `createSession()` 與 `send` / `stream` 模式)已在 TypeScript Agent SDK 0.3.142 中移除。改用 `query()` 函數和本頁面上描述的 session 選項。145 實驗性的 [V2 session API](/zh-TW/agent-sdk/typescript-v2-preview)(提供了 `createSession()` 與 `send` / `stream` 模式)已在 TypeScript Agent SDK 0.3.142 中移除。改用 `query()` 函數和本頁面上描述的 session 選項。

136</Note>146</Note>

137 147 

138## 使用 session 選項與 `query()`148<h2 id="use-session-options-with-query">

149 使用 session 選項與 `query()`

150</h2>

139 151 

140### 捕獲 session ID152<h3 id="capture-the-session-id">

153 捕獲 session ID

154</h3>

141 155 

142Resume 和 fork 需要 session ID。從結果訊息上的 `session_id` 欄位讀取它(Python 中的 [`ResultMessage`](/zh-TW/agent-sdk/python#resultmessage),TypeScript 中的 [`SDKResultMessage`](/zh-TW/agent-sdk/typescript#sdkresultmessage)),無論成功或錯誤,它都存在於每個結果上。在 TypeScript 中,ID 也可以作為初始化 `SystemMessage` 上的直接欄位更早獲得;在 Python 中,它嵌套在 `SystemMessage.data` 內。156Resume 和 fork 需要 session ID。從結果訊息上的 `session_id` 欄位讀取它(Python 中的 [`ResultMessage`](/zh-TW/agent-sdk/python#resultmessage),TypeScript 中的 [`SDKResultMessage`](/zh-TW/agent-sdk/typescript#sdkresultmessage)),無論成功或錯誤,它都存在於每個結果上。在 TypeScript 中,ID 也可以作為初始化 `SystemMessage` 上的直接欄位更早獲得;在 Python 中,它嵌套在 `SystemMessage.data` 內。

143 157 


189 ```203 ```

190</CodeGroup>204</CodeGroup>

191 205 

192### 按 ID 恢復206<h3 id="resume-by-id">

207 按 ID 恢復

208</h3>

193 209 

194將 session ID 傳遞給 `resume` 以返回到該特定 session。代理從 session 中斷的任何地方拾取完整上下文。恢復的常見原因:210將 session ID 傳遞給 `resume` 以返回到該特定 session。代理從 session 中斷的任何地方拾取完整上下文。恢復的常見原因:

195 211 


235 251 

236要跨機器或在無伺服器環境中恢復 sessions,請使用 [`SessionStore` 適配器](/zh-TW/agent-sdk/session-storage)將記錄鏡像到共享存儲。252要跨機器或在無伺服器環境中恢復 sessions,請使用 [`SessionStore` 適配器](/zh-TW/agent-sdk/session-storage)將記錄鏡像到共享存儲。

237 253 

238### Fork 以探索替代方案254<h3 id="fork-to-explore-alternatives">

255 Fork 以探索替代方案

256</h3>

239 257 

240Forking 創建一個新 session,從原始 session 的歷史副本開始,但從該點開始分歧。fork 獲得自己的 session ID;原始的 ID 和歷史保持不變。您最終得到兩個獨立的 sessions,可以分別恢復。258Forking 創建一個新 session,從原始 session 的歷史副本開始,但從該點開始分歧。fork 獲得自己的 session ID;原始的 ID 和歷史保持不變。您最終得到兩個獨立的 sessions,可以分別恢復。

241 259 


305 ```323 ```

306</CodeGroup>324</CodeGroup>

307 325 

308## 跨主機恢復326<h2 id="resume-across-hosts">

327 跨主機恢復

328</h2>

309 329 

310Session 文件是創建它們的機器的本地文件。要在不同的主機上恢復 session(CI 工作者、臨時容器、無伺服器),您有兩個選項:330Session 文件是創建它們的機器的本地文件。要在不同的主機上恢復 session(CI 工作者、臨時容器、無伺服器),您有兩個選項:

311 331 


316 336 

317兩個 SDK 也公開用於查找和變更個別 sessions 的函數:Python 中的 [`get_session_info()`](/zh-TW/agent-sdk/python#get_session_info)、[`rename_session()`](/zh-TW/agent-sdk/python#rename_session) 和 [`tag_session()`](/zh-TW/agent-sdk/python#tag_session),以及 TypeScript 中的 [`getSessionInfo()`](/zh-TW/agent-sdk/typescript#getsessioninfo)、[`renameSession()`](/zh-TW/agent-sdk/typescript#renamesession) 和 [`tagSession()`](/zh-TW/agent-sdk/typescript#tagsession)。使用它們按標籤組織 sessions 或給它們人類可讀的標題。337兩個 SDK 也公開用於查找和變更個別 sessions 的函數:Python 中的 [`get_session_info()`](/zh-TW/agent-sdk/python#get_session_info)、[`rename_session()`](/zh-TW/agent-sdk/python#rename_session) 和 [`tag_session()`](/zh-TW/agent-sdk/python#tag_session),以及 TypeScript 中的 [`getSessionInfo()`](/zh-TW/agent-sdk/typescript#getsessioninfo)、[`renameSession()`](/zh-TW/agent-sdk/typescript#renamesession) 和 [`tagSession()`](/zh-TW/agent-sdk/typescript#tagsession)。使用它們按標籤組織 sessions 或給它們人類可讀的標題。

318 338 

319## 相關資源339<h2 id="related-resources">

340 相關資源

341</h2>

320 342 

321* [代理迴圈如何工作](/zh-TW/agent-sdk/agent-loop):了解 session 中的轉換、訊息和上下文累積343* [代理迴圈如何工作](/zh-TW/agent-sdk/agent-loop):了解 session 中的轉換、訊息和上下文累積

322* [文件檢查點](/zh-TW/agent-sdk/file-checkpointing): sessions 追蹤和還原文件更改344* [文件檢查點](/zh-TW/agent-sdk/file-checkpointing):快照和還原代理在 session 中所做的文件更改

323* [Python `ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions):Python 的完整 session 選項參考345* [Python `ClaudeAgentOptions`](/zh-TW/agent-sdk/python#claudeagentoptions):Python 的完整 session 選項參考

324* [TypeScript `Options`](/zh-TW/agent-sdk/typescript#options):TypeScript 的完整 session 選項參考346* [TypeScript `Options`](/zh-TW/agent-sdk/typescript#options):TypeScript 的完整 session 選項參考

Details

6 6 

7> 使用 Claude Agent SDK 中的 Agent Skills 擴展 Claude 的專門功能7> 使用 Claude Agent SDK 中的 Agent Skills 擴展 Claude 的專門功能

8 8 

9## 概述9<h2 id="overview">

10 概述

11</h2>

10 12 

11Agent Skills 使用專門功能擴展 Claude,Claude 會在相關時自動調用這些功能。Skills 被打包為 `SKILL.md` 文件,包含說明、描述和可選的支持資源。13Agent Skills 使用專門功能擴展 Claude,Claude 會在相關時自動調用這些功能。Skills 被打包為 `SKILL.md` 文件,包含說明、描述和可選的支持資源。

12 14 

13有關 Skills 的全面信息,包括優勢、架構和編寫指南,請參閱 [Agent Skills 概述](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview)。15有關 Skills 的全面信息,包括優勢、架構和編寫指南,請參閱 [Agent Skills 概述](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview)。

14 16 

15## Skills 如何與 SDK 配合使用17<h2 id="how-skills-work-with-the-sdk">

18 Skills 如何與 SDK 配合使用

19</h2>

16 20 

17使用 Claude Agent SDK 時,Skills 的特點是:21使用 Claude Agent SDK 時,Skills 的特點是:

18 22 


28 Skills 通過文件系統設置源發現。使用默認 `query()` 選項時,SDK 加載用戶和項目源,因此 `~/.claude/skills/`、`<cwd>/.claude/skills/` 和 `<cwd>` 的任何父目錄(直到存儲庫根目錄)中的 `.claude/skills/` 中的 Skills 可用。如果您明確設置 `settingSources`,請包含 `'user'` 或 `'project'` 以保持 Skill 發現,或使用 [`plugins` 選項](/zh-TW/agent-sdk/plugins) 從特定路徑加載 Skills。32 Skills 通過文件系統設置源發現。使用默認 `query()` 選項時,SDK 加載用戶和項目源,因此 `~/.claude/skills/`、`<cwd>/.claude/skills/` 和 `<cwd>` 的任何父目錄(直到存儲庫根目錄)中的 `.claude/skills/` 中的 Skills 可用。如果您明確設置 `settingSources`,請包含 `'user'` 或 `'project'` 以保持 Skill 發現,或使用 [`plugins` 選項](/zh-TW/agent-sdk/plugins) 從特定路徑加載 Skills。

29</Note>33</Note>

30 34 

31## 在 SDK 中使用 Skills35<h2 id="using-skills-with-the-sdk">

36 在 SDK 中使用 Skills

37</h2>

32 38 

33在 `query()` 上設置 `skills` 選項以控制會話中可用的 Skills。省略時,發現的 Skills 啟用且 Skill 工具可用,與 CLI 行為匹配。傳遞 `"all"` 以啟用每個發現的 Skill,傳遞 Skill 名稱列表以僅啟用那些,或傳遞 `[]` 以禁用全部。設置 `skills` 時,SDK 自動啟用 Skill 工具,因此您無需在 `allowedTools` 中列出它39在 `query()` 上設置 `skills` 選項以控制會話中可用的 Skills。省略時,發現的 Skills 啟用且 Skill 工具可用,與 CLI 行為匹配。傳遞 `"all"` 以啟用每個發現的 Skill,傳遞 Skill 名稱列表以僅啟用那些,或傳遞 `[]` 以禁用全部。設置 `skills` 時,SDK 會自動將 Skill 工具新增至 `allowedTools`。如果您也傳遞明確的 `tools` 列表,請在該列表中包含 `"Skill"`,以便 Claude 可以叫用 skills

34 40 

35配置後,Claude 自動從文件系統發現 Skills 並在與用戶請求相關時調用它們41配置後,Claude 自動從檔案系統發現 Skills 並在與使用者請求相關時叫用它們

36 42 

37<CodeGroup>43<CodeGroup>

38 ```python Python theme={null}44 ```python Python theme={null}


74 ```80 ```

75</CodeGroup>81</CodeGroup>

76 82 

77要僅啟用特定 Skills,請傳遞它們的名稱。名稱與 `SKILL.md` 中的 `name` 字段或 Skill 的目錄名稱匹配。對於插件提供的 Skills,使用 `plugin:skill`。83要僅啟用特定 Skills,請傳遞它們的名稱。名稱與 `SKILL.md` 中的 `name` 欄位或 Skill 的目錄名稱匹配。對於外掛提供的 Skills,使用 `plugin:skill`。

78 84 

79<CodeGroup>85<CodeGroup>

80 ```python Python theme={null}86 ```python Python theme={null}


86 ```92 ```

87</CodeGroup>93</CodeGroup>

88 94 

89`skills` 選項是上下文篩選器,不是沙箱。未列出的 Skills 對模型隱藏並被 Skill 工具拒絕,但它們的文件仍在磁盤上可通過 Read 和 Bash 訪問95`skills` 選項是內容篩選器,不是沙箱。未列出的 Skills 對模型隱藏並被 Skill 工具拒絕,但它們的檔案仍在磁碟上可透過 Read 和 Bash 存取

90 96 

91## Skill 位置97<h2 id="skill-locations">

98 Skill 位置

99</h2>

92 100 

93Skills 根據您的 `settingSources`/`setting_sources` 配置從文件系統目錄加載:101Skills 根據您的 `settingSources`/`setting_sources` 配置從文件系統目錄加載:

94 102 


96* **用戶 Skills**(`~/.claude/skills/`):跨所有項目的個人 Skills - 當 `setting_sources` 包含 `"user"` 時加載104* **用戶 Skills**(`~/.claude/skills/`):跨所有項目的個人 Skills - 當 `setting_sources` 包含 `"user"` 時加載

97* **插件 Skills**:與已安裝的 Claude Code 插件捆綁105* **插件 Skills**:與已安裝的 Claude Code 插件捆綁

98 106 

99## 創建 Skills107<h2 id="creating-skills">

108 創建 Skills

109</h2>

100 110 

101Skills 定義為包含具有 YAML frontmatter 和 Markdown 內容的 `SKILL.md` 文件的目錄。`description` 字段確定 Claude 何時調用您的 Skill。111Skills 定義為包含具有 YAML frontmatter 和 Markdown 內容的 `SKILL.md` 文件的目錄。`description` 字段確定 Claude 何時調用您的 Skill。

102 112 


113* [Agent Skills 最佳實踐](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices):編寫指南和命名約定123* [Agent Skills 最佳實踐](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices):編寫指南和命名約定

114* [Agent Skills Cookbook](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction):示例 Skills 和模板124* [Agent Skills Cookbook](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction):示例 Skills 和模板

115 125 

116## 工具限制126<h2 id="tool-restrictions">

127 工具限制

128</h2>

117 129 

118<Note>130<Note>

119 SKILL.md 中的 `allowed-tools` frontmatter 字段僅在直接使用 Claude Code CLI 時受支持。**通過 SDK 使用 Skills 時不適用**。131 SKILL.md 中的 `allowed-tools` frontmatter 字段僅在直接使用 Claude Code CLI 時受支持。**通過 SDK 使用 Skills 時不適用**。


154 ```166 ```

155</CodeGroup>167</CodeGroup>

156 168 

157## 發現可用的 Skills169<h2 id="discovering-available-skills">

170 發現可用的 Skills

171</h2>

158 172 

159要查看 SDK 應用程序中可用的 Skills,只需詢問 Claude:173要查看 SDK 應用程序中可用的 Skills,只需詢問 Claude:

160 174 


184 198 

185Claude 將根據您當前的工作目錄和已安裝的插件列出可用的 Skills。199Claude 將根據您當前的工作目錄和已安裝的插件列出可用的 Skills。

186 200 

187## 測試 Skills201<h2 id="testing-skills">

202 測試 Skills

203</h2>

188 204 

189通過提出與其描述相匹配的問題來測試 Skills:205通過提出與其描述相匹配的問題來測試 Skills:

190 206 


218 234 

219如果描述與您的請求相匹配,Claude 會自動調用相關的 Skill。235如果描述與您的請求相匹配,Claude 會自動調用相關的 Skill。

220 236 

221## 故障排除237<h2 id="troubleshooting">

238 故障排除

239</h2>

222 240 

223### 找不到 Skills241<h3 id="skills-not-found">

242 找不到 Skills

243</h3>

224 244 

225**檢查 settingSources 配置**:Skills 通過 `user` 和 `project` 設置源發現。如果您明確設置 `settingSources`/`setting_sources` 並省略這些源,Skills 不會加載:245**檢查 settingSources 配置**:Skills 通過 `user` 和 `project` 設置源發現。如果您明確設置 `settingSources`/`setting_sources` 並省略這些源,Skills 不會加載:

226 246 


287ls ~/.claude/skills/*/SKILL.md307ls ~/.claude/skills/*/SKILL.md

288```308```

289 309 

290### Skill 未被使用310<h3 id="skill-not-being-used">

311 Skill 未被使用

312</h3>

291 313 

292**檢查 `skills` 選項**:如果您傳遞了 `skills` 列表,確認 Skill 的名稱已包含。傳遞 `[]` 會禁用所有 Skills。314**檢查 `skills` 選項**:如果您傳遞了 `skills` 列表,確認 Skill 的名稱已包含。傳遞 `[]` 會禁用所有 Skills。

293 315 

294**檢查描述**:確保它具體且包含相關關鍵字。有關編寫有效描述的指導,請參閱 [Agent Skills 最佳實踐](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#writing-effective-descriptions)。316**檢查描述**:確保它具體且包含相關關鍵字。有關編寫有效描述的指導,請參閱 [Agent Skills 最佳實踐](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#writing-effective-descriptions)。

295 317 

296### 其他故障排除318<h3 id="additional-troubleshooting">

319 其他故障排除

320</h3>

297 321 

298有關一般 Skills 故障排除(YAML 語法、調試等),請參閱 [Claude Code Skills 故障排除部分](/zh-TW/skills#troubleshooting)。322有關一般 Skills 故障排除(YAML 語法、調試等),請參閱 [Claude Code Skills 故障排除部分](/zh-TW/skills#troubleshooting)。

299 323 

300## 相關文檔324<h2 id="related-documentation">

325 相關文檔

326</h2>

301 327 

302### Skills 指南328<h3 id="skills-guides">

329 Skills 指南

330</h3>

303 331 

304* [Claude Code 中的 Agent Skills](/zh-TW/skills):包含創建、示例和故障排除的完整 Skills 指南332* [Claude Code 中的 Agent Skills](/zh-TW/skills):包含創建、示例和故障排除的完整 Skills 指南

305* [Agent Skills 概述](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview):概念概述、優勢和架構333* [Agent Skills 概述](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview):概念概述、優勢和架構

306* [Agent Skills 最佳實踐](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices):有效 Skills 的編寫指南334* [Agent Skills 最佳實踐](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices):有效 Skills 的編寫指南

307* [Agent Skills Cookbook](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction):示例 Skills 和模板335* [Agent Skills Cookbook](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction):示例 Skills 和模板

308 336 

309### SDK 資源337<h3 id="sdk-resources">

338 SDK 資源

339</h3>

310 340 

311* [SDK 中的子代理](/zh-TW/agent-sdk/subagents):類似的基於文件系統的代理,具有編程選項341* [SDK 中的子代理](/zh-TW/agent-sdk/subagents):類似的基於文件系統的代理,具有編程選項

312* [SDK 中的斜杠命令](/zh-TW/agent-sdk/slash-commands):用戶調用的命令342* [SDK 中的斜杠命令](/zh-TW/agent-sdk/slash-commands):用戶調用的命令

Details

8 8 

9Slash commands 提供了一種方式來控制 Claude Code 會話,使用以 `/` 開頭的特殊命令。這些命令可以透過 SDK 發送,以執行諸如壓縮上下文、列出上下文使用情況或調用自訂命令等操作。只有在不需要互動式終端的情況下才能工作的命令才能透過 SDK 分派;`system/init` 訊息列出了您會話中可用的命令。9Slash commands 提供了一種方式來控制 Claude Code 會話,使用以 `/` 開頭的特殊命令。這些命令可以透過 SDK 發送,以執行諸如壓縮上下文、列出上下文使用情況或調用自訂命令等操作。只有在不需要互動式終端的情況下才能工作的命令才能透過 SDK 分派;`system/init` 訊息列出了您會話中可用的命令。

10 10 

11## 發現可用的 Slash Commands11<h2 id="discovering-available-slash-commands">

12 發現可用的 Slash Commands

13</h2>

12 14 

13Claude Agent SDK 在系統初始化訊息中提供有關可用 slash commands 的資訊。在您的會話開始時存取此資訊:15Claude Agent SDK 在系統初始化訊息中提供有關可用 slash commands 的資訊。在您的會話開始時存取此資訊:

14 16 


22 })) {24 })) {

23 if (message.type === "system" && message.subtype === "init") {25 if (message.type === "system" && message.subtype === "init") {

24 console.log("Available slash commands:", message.slash_commands);26 console.log("Available slash commands:", message.slash_commands);

25 // Example output: ["/compact", "/context", "/usage"]27 // Example output: ["clear", "compact", "context", "usage"]

26 }28 }

27 }29 }

28 ```30 ```


36 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):38 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

37 if isinstance(message, SystemMessage) and message.subtype == "init":39 if isinstance(message, SystemMessage) and message.subtype == "init":

38 print("Available slash commands:", message.data["slash_commands"])40 print("Available slash commands:", message.data["slash_commands"])

39 # Example output: ["/compact", "/context", "/usage"]41 # Example output: ["clear", "compact", "context", "usage"]

40 42 

41 43 

42 asyncio.run(main())44 asyncio.run(main())

43 ```45 ```

44</CodeGroup>46</CodeGroup>

45 47 

46## 發送 Slash Commands48<h2 id="sending-slash-commands">

49 發送 Slash Commands

50</h2>

47 51 

48透過在您的提示字串中包含 slash commands 來發送它們,就像常規文字一樣:52透過在您的提示字串中包含 slash commands 來發送它們,就像常規文字一樣:

49 53 


78 ```82 ```

79</CodeGroup>83</CodeGroup>

80 84 

81## 常見的 Slash Commands85<h2 id="common-slash-commands">

86 常見的 Slash Commands

87</h2>

82 88 

83### `/compact` - 壓縮對話歷史89<h3 id="/compact-compact-conversation-history">

90 `/compact` - 壓縮對話歷史

91</h3>

84 92 

85`/compact` 命令透過總結較舊的訊息同時保留重要上下文來減少您的對話歷史的大小:93`/compact` 命令透過總結較舊的訊息同時保留重要上下文來減少您的對話歷史的大小:

86 94 


117 ```125 ```

118</CodeGroup>126</CodeGroup>

119 127 

120### 清除對話128<h3 id="/clear-reset-conversation-context">

129 `/clear` - 重設對話上下文

130</h3>

121 131 

122互動式 `/clear` 命令在 SDK 中不可用。每個 `query()` 呼叫已經開始一個新的對話,所以要清除上下文請結束目前的 `query()` 並開始一個新的。先前的對話保存在磁碟上,可以透過將其會話 ID 傳遞給 [`resume` 選項](/zh-TW/agent-sdk/sessions#resume-by-id) 來返回。132`/clear` 命令將對話重設為空上下文因此後續提示會從沒有先前對話歷史的狀態開始。先前的對話保存在磁碟上,可以透過將其會話 ID 傳遞給 [`resume` 選項](/zh-TW/agent-sdk/sessions#resume-by-id) 來返回。

123 133 

124## 建立自訂 Slash Commands134這在[串流輸入模式](/zh-TW/agent-sdk/streaming-vs-single-mode)中很有用,您可以在單一連線上傳送多個提示。對於一次性的 `query()` 呼叫,每個呼叫已經開始時具有空上下文,因此傳送 `/clear` 沒有實際效果;請改為開始一個新的 `query()`。

135 

136<Note>

137 SDK 中的 `/clear` 需要 Claude Code v2.1.117 或更新版本。在較早的版本中,它會從 `slash_commands` 中省略。

138</Note>

139 

140<h2 id="creating-custom-slash-commands">

141 建立自訂 Slash Commands

142</h2>

125 143 

126除了使用內建 slash commands 外,您還可以建立自己的自訂命令,這些命令可透過 SDK 使用。自訂命令定義為特定目錄中的 markdown 檔案,類似於子代理的配置方式。144除了使用內建 slash commands 外,您還可以建立自己的自訂命令,這些命令可透過 SDK 使用。自訂命令定義為特定目錄中的 markdown 檔案,類似於子代理的配置方式。

127 145 


129 `.claude/commands/` 目錄是舊版格式。建議的格式是 `.claude/skills/<name>/SKILL.md`,它支援相同的 slash command 調用(`/name`)加上 Claude 的自主調用。請參閱 [Skills](/zh-TW/agent-sdk/skills) 以了解目前的格式。CLI 繼續支援兩種格式,下面的範例對於 `.claude/commands/` 仍然準確。147 `.claude/commands/` 目錄是舊版格式。建議的格式是 `.claude/skills/<name>/SKILL.md`,它支援相同的 slash command 調用(`/name`)加上 Claude 的自主調用。請參閱 [Skills](/zh-TW/agent-sdk/skills) 以了解目前的格式。CLI 繼續支援兩種格式,下面的範例對於 `.claude/commands/` 仍然準確。

130</Note>148</Note>

131 149 

132### 檔案位置150<h3 id="file-locations">

151 檔案位置

152</h3>

133 153 

134自訂 slash commands 根據其範圍儲存在指定的目錄中:154自訂 slash commands 根據其範圍儲存在指定的目錄中:

135 155 

136* **專案命令**:`.claude/commands/` - 僅在目前專案中可用(舊版;建議使用 `.claude/skills/`)156* **專案命令**:`.claude/commands/` - 僅在目前專案中可用(舊版;建議使用 `.claude/skills/`)

137* **個人命令**:`~/.claude/commands/` - 在您的所有專案中可用(舊版;建議使用 `~/.claude/skills/`)157* **個人命令**:`~/.claude/commands/` - 在您的所有專案中可用(舊版;建議使用 `~/.claude/skills/`)

138 158 

139### 檔案格式159<h3 id="file-format">

160 檔案格式

161</h3>

140 162 

141每個自訂命令都是一個 markdown 檔案,其中:163每個自訂命令都是一個 markdown 檔案,其中:

142 164 


144* 檔案內容定義命令的功能166* 檔案內容定義命令的功能

145* 可選的 YAML frontmatter 提供配置167* 可選的 YAML frontmatter 提供配置

146 168 

147#### 基本範例169<h4 id="basic-example">

170 基本範例

171</h4>

148 172 

149建立 `.claude/commands/refactor.md`:173建立 `.claude/commands/refactor.md`:

150 174 


155 179 

156這會建立 `/refactor` 命令,您可以透過 SDK 使用。180這會建立 `/refactor` 命令,您可以透過 SDK 使用。

157 181 

158#### 使用 Frontmatter182<h4 id="with-frontmatter">

183 使用 Frontmatter

184</h4>

159 185 

160建立 `.claude/commands/security-check.md`:186建立 `.claude/commands/security-check.md`:

161 187 


173- Insecure configurations199- Insecure configurations

174```200```

175 201 

176### 在 SDK 中使用自訂命令202<h3 id="using-custom-commands-in-the-sdk">

203 在 SDK 中使用自訂命令

204</h3>

177 205 

178一旦在檔案系統中定義,自訂命令就會自動透過 SDK 可用:206一旦在檔案系統中定義,自訂命令就會自動透過 SDK 可用:

179 207 


199 if (message.type === "system" && message.subtype === "init") {227 if (message.type === "system" && message.subtype === "init") {

200 // Will include both built-in and custom commands228 // Will include both built-in and custom commands

201 console.log("Available commands:", message.slash_commands);229 console.log("Available commands:", message.slash_commands);

202 // Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]230 // Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]

203 }231 }

204 }232 }

205 ```233 ```


224 if isinstance(message, SystemMessage) and message.subtype == "init":252 if isinstance(message, SystemMessage) and message.subtype == "init":

225 # Will include both built-in and custom commands253 # Will include both built-in and custom commands

226 print("Available commands:", message.data["slash_commands"])254 print("Available commands:", message.data["slash_commands"])

227 # Example: ["/compact", "/context", "/usage", "/refactor", "/security-check"]255 # Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]

228 256 

229 257 

230 asyncio.run(main())258 asyncio.run(main())

231 ```259 ```

232</CodeGroup>260</CodeGroup>

233 261 

234### 進階功能262<h3 id="advanced-features">

263 進階功能

264</h3>

235 265 

236#### 引數和佔位符266<h4 id="arguments-and-placeholders">

267 引數和佔位符

268</h4>

237 269 

238自訂命令支援使用佔位符的動態引數:270自訂命令支援使用佔位符的動態引數:

239 271 


245description: Fix a GitHub issue277description: Fix a GitHub issue

246---278---

247 279 

248Fix issue #$1 with priority $2.280Fix issue #$0 with priority $1.

249Check the issue description and implement the necessary changes.281Check the issue description and implement the necessary changes.

250```282```

251 283 


260 prompt: "/fix-issue 123 high",292 prompt: "/fix-issue 123 high",

261 options: { maxTurns: 5 }293 options: { maxTurns: 5 }

262 })) {294 })) {

263 // Command will process with $1="123" and $2="high"295 // Command will process with $0="123" and $1="high"

264 if (message.type === "result" && message.subtype === "success") {296 if (message.type === "result" && message.subtype === "success") {

265 console.log("Issue fixed:", message.result);297 console.log("Issue fixed:", message.result);

266 }298 }


275 async def main():307 async def main():

276 # Pass arguments to custom command308 # Pass arguments to custom command

277 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):309 async for message in query(prompt="/fix-issue 123 high", options=ClaudeAgentOptions(max_turns=5)):

278 # Command will process with $1="123" and $2="high"310 # Command will process with $0="123" and $1="high"

279 if isinstance(message, ResultMessage):311 if isinstance(message, ResultMessage):

280 print("Issue fixed:", message.result)312 print("Issue fixed:", message.result)

281 313 


284 ```316 ```

285</CodeGroup>317</CodeGroup>

286 318 

287#### Bash 命令執行319<h4 id="bash-command-execution">

320 Bash 命令執行

321</h4>

288 322 

289自訂命令可以執行 bash 命令並包含其輸出:323自訂命令可以執行 bash 命令並包含其輸出:

290 324 


306Create a git commit with appropriate message based on the changes.340Create a git commit with appropriate message based on the changes.

307```341```

308 342 

309#### 檔案參考343<h4 id="file-references">

344 檔案參考

345</h4>

310 346 

311使用 `@` 前綴包含檔案內容:347使用 `@` 前綴包含檔案內容:

312 348 


325Check for security issues, outdated dependencies, and misconfigurations.361Check for security issues, outdated dependencies, and misconfigurations.

326```362```

327 363 

328### 使用命名空間組織364<h3 id="organization-with-namespacing">

365 使用命名空間組織

366</h3>

329 367 

330在子目錄中組織命令以獲得更好的結構:368在子目錄中組織命令以獲得更好的結構:

331 369 


342 380 

343子目錄出現在命令描述中,但不會影響命令名稱本身。381子目錄出現在命令描述中,但不會影響命令名稱本身。

344 382 

345### 實用範例383<h3 id="practical-examples">

384 實用範例

385</h3>

346 386 

347#### 程式碼審查命令387<h4 id="code-review-command">

388 程式碼審查命令

389</h4>

348 390 

349建立 `.claude/commands/code-review.md`:391建立 `.claude/commands/code-review.md`:

350 392 


372Provide specific, actionable feedback organized by priority.414Provide specific, actionable feedback organized by priority.

373```415```

374 416 

375#### 測試執行器命令417<h4 id="test-runner-command">

418 測試執行器命令

419</h4>

376 420 

377建立 `.claude/commands/test.md`:421建立 `.claude/commands/test.md`:

378 422 


435 ```479 ```

436</CodeGroup>480</CodeGroup>

437 481 

438## 另請參閱482<h2 id="see-also">

483 另請參閱

484</h2>

439 485 

440* [Slash Commands](/zh-TW/skills) - 完整的 slash command 文件486* [Slash Commands](/zh-TW/skills) - 完整的 slash command 文件

441* [SDK 中的子代理](/zh-TW/agent-sdk/subagents) - 子代理的類似檔案系統配置487* [SDK 中的子代理](/zh-TW/agent-sdk/subagents) - 子代理的類似檔案系統配置

Details

12 本頁涵蓋輸出串流(即時接收權杖)。如需輸入模式(如何傳送訊息),請參閱[傳送訊息給代理](/zh-TW/agent-sdk/streaming-vs-single-mode)。您也可以[透過 CLI 使用 Agent SDK 串流回應](/zh-TW/headless)。12 本頁涵蓋輸出串流(即時接收權杖)。如需輸入模式(如何傳送訊息),請參閱[傳送訊息給代理](/zh-TW/agent-sdk/streaming-vs-single-mode)。您也可以[透過 CLI 使用 Agent SDK 串流回應](/zh-TW/headless)。

13</Tip>13</Tip>

14 14 

15## 啟用串流輸出15<h2 id="enable-streaming-output">

16 啟用串流輸出

17</h2>

16 18 

17若要啟用串流,請在選項中將 `include_partial_messages`(Python)或 `includePartialMessages`(TypeScript)設定為 `true`。這會導致 SDK 產生包含原始 API 事件的 `StreamEvent` 訊息(當它們到達時),以及通常的 `AssistantMessage` 和 `ResultMessage`。19若要啟用串流,請在選項中將 `include_partial_messages`(Python)或 `includePartialMessages`(TypeScript)設定為 `true`。這會導致 SDK 產生包含原始 API 事件的 `StreamEvent` 訊息(當它們到達時),以及通常的 `AssistantMessage` 和 `ResultMessage`。

18 20 


71 ```73 ```

72</CodeGroup>74</CodeGroup>

73 75 

74## StreamEvent 參考76<h2 id="streamevent-reference">

77 StreamEvent 參考

78</h2>

75 79 

76啟用部分訊息時,您會收到包裝在物件中的原始 Claude API 串流事件。該類型在每個 SDK 中有不同的名稱:80啟用部分訊息時,您會收到包裝在物件中的原始 Claude API 串流事件。該類型在每個 SDK 中有不同的名稱:

77 81 


112| `message_delta` | 訊息層級的更新(停止原因、使用情況) |116| `message_delta` | 訊息層級的更新(停止原因、使用情況) |

113| `message_stop` | 訊息的結束 |117| `message_stop` | 訊息的結束 |

114 118 

115## 訊息流119<h2 id="message-flow">

120 訊息流

121</h2>

116 122 

117啟用部分訊息後,您會按此順序接收訊息:123啟用部分訊息後,您會按此順序接收訊息:

118 124 


134 140 

135未啟用部分訊息(Python 中的 `include_partial_messages`、TypeScript 中的 `includePartialMessages`)時,您會收到除 `StreamEvent` 外的所有訊息類型。常見類型包括 `SystemMessage`(工作階段初始化)、`AssistantMessage`(完整回應)、`ResultMessage`(最終結果)和指示何時壓縮對話歷史記錄的緊湊邊界訊息(TypeScript 中的 `SDKCompactBoundaryMessage`;Python 中具有子類型 `"compact_boundary"` 的 `SystemMessage`)。141未啟用部分訊息(Python 中的 `include_partial_messages`、TypeScript 中的 `includePartialMessages`)時,您會收到除 `StreamEvent` 外的所有訊息類型。常見類型包括 `SystemMessage`(工作階段初始化)、`AssistantMessage`(完整回應)、`ResultMessage`(最終結果)和指示何時壓縮對話歷史記錄的緊湊邊界訊息(TypeScript 中的 `SDKCompactBoundaryMessage`;Python 中具有子類型 `"compact_boundary"` 的 `SystemMessage`)。

136 142 

137## 串流文字回應143<h2 id="stream-text-responses">

144 串流文字回應

145</h2>

138 146 

139若要在生成文字時顯示它,請尋找 `content_block_delta` 事件,其中 `delta.type` 是 `text_delta`。這些包含增量文字區塊。下面的範例在每個區塊到達時列印它:147若要在生成文字時顯示它,請尋找 `content_block_delta` 事件,其中 `delta.type` 是 `text_delta`。這些包含增量文字區塊。下面的範例在每個區塊到達時列印它:

140 148 


182 ```190 ```

183</CodeGroup>191</CodeGroup>

184 192 

185## 串流工具呼叫193<h2 id="stream-tool-calls">

194 串流工具呼叫

195</h2>

186 196 

187工具呼叫也會增量串流。您可以追蹤工具何時開始、在生成時接收其輸入,以及查看何時完成。下面的範例追蹤目前被呼叫的工具並在串流進來時累積 JSON 輸入。它使用三種事件類型:197工具呼叫也會增量串流。您可以追蹤工具何時開始、在生成時接收其輸入,以及查看何時完成。下面的範例追蹤目前被呼叫的工具並在串流進來時累積 JSON 輸入。它使用三種事件類型:

188 198 


281 ```291 ```

282</CodeGroup>292</CodeGroup>

283 293 

284## 建立串流 UI294<h2 id="build-a-streaming-ui">

295 建立串流 UI

296</h2>

285 297 

286此範例將文字和工具串流結合成一個有凝聚力的 UI。它追蹤代理目前是否正在執行工具(使用 `in_tool` 旗標)以顯示狀態指示器,例如在工具執行時顯示 `[Using Read...]`。文字在不在工具中時正常串流,工具完成會觸發「完成」訊息。此模式對於需要在多步驟代理任務期間顯示進度的聊天介面很有用。298此範例將文字和工具串流結合成一個有凝聚力的 UI。它追蹤代理目前是否正在執行工具(使用 `in_tool` 旗標)以顯示狀態指示器,例如在工具執行時顯示 `[Using Read...]`。文字在不在工具中時正常串流,工具完成會觸發「完成」訊息。此模式對於需要在多步驟代理任務期間顯示進度的聊天介面很有用。

287 299 


380 ```392 ```

381</CodeGroup>393</CodeGroup>

382 394 

383## 已知限制395<h2 id="known-limitations">

396 已知限制

397</h2>

384 398 

385某些 SDK 功能與串流不相容399* **結構化輸出**JSON 結果僅出現在最終 `ResultMessage.structured_output` 中,而不是作為串流增量。如需詳細資訊,請參閱[結構化輸出](/zh-TW/agent-sdk/structured-outputs)。

386 400 

387* **Extended thinking**:當您明確設定 `max_thinking_tokens`(Python)或 `maxThinkingTokens`(TypeScript)時,不會發出 `StreamEvent` 訊息。您只會在每個回合後收到完整訊息。請注意,思考在 SDK 中預設是停用的,因此串流有效,除非您啟用它。401<h2 id="next-steps">

388* **Structured output**:JSON 結果僅出現在最終 `ResultMessage.structured_output` 中,而不是作為串流增量。如需詳細資訊,請參閱[結構化輸出](/zh-TW/agent-sdk/structured-outputs)。402 後續步驟

389 403</h2>

390## 後續步驟

391 404 

392現在您可以即時串流文字和工具呼叫,請探索這些相關主題:405現在您可以即時串流文字和工具呼叫,請探索這些相關主題:

393 406 

Details

6 6 

7> 了解 Claude Agent SDK 的兩種輸入模式及何時使用各種模式7> 了解 Claude Agent SDK 的兩種輸入模式及何時使用各種模式

8 8 

9## 概述9<h2 id="overview">

10 概述

11</h2>

10 12 

11Claude Agent SDK 支援兩種不同的輸入模式來與代理互動:13Claude Agent SDK 支援兩種不同的輸入模式來與代理互動:

12 14 


15 17 

16本指南說明每種模式的差異、優點和使用案例,幫助您為應用程式選擇正確的方法。18本指南說明每種模式的差異、優點和使用案例,幫助您為應用程式選擇正確的方法。

17 19 

18## 串流輸入模式(推薦)20<h2 id="streaming-input-mode-recommended">

21 串流輸入模式(推薦)

22</h2>

19 23 

20串流輸入模式是使用 Claude Agent SDK 的**首選**方式。它提供對代理功能的完整存取,並啟用豐富的互動式體驗。24串流輸入模式是使用 Claude Agent SDK 的**首選**方式。它提供對代理功能的完整存取,並啟用豐富的互動式體驗。

21 25 

22它允許代理作為長期執行的程序運作,接收使用者輸入、處理中斷、顯示權限請求,以及處理工作階段管理。26它允許代理作為長期執行的程序運作,接收使用者輸入、處理中斷、顯示權限請求,以及處理工作階段管理。

23 27 

24### 運作方式28<h3 id="how-it-works">

29 運作方式

30</h3>

25 31 

26```mermaid theme={null}32```mermaid theme={null}

27sequenceDiagram33sequenceDiagram


59 deactivate Agent65 deactivate Agent

60```66```

61 67 

62### 優點68<h3 id="benefits">

69 優點

70</h3>

63 71 

64<CardGroup cols={2}>72<CardGroup cols={2}>

65 <Card title="影像上傳" icon="image">73 <Card title="影像上傳" icon="image">


74 在工作階段期間完整存取所有工具和自訂 MCP 伺服器82 在工作階段期間完整存取所有工具和自訂 MCP 伺服器

75 </Card>83 </Card>

76 84 

77 <Card title="Hooks 支援" icon="link">

78 使用生命週期 hooks 在各個點自訂行為

79 </Card>

80 

81 <Card title="即時回饋" icon="lightning">85 <Card title="即時回饋" icon="lightning">

82 查看產生的回應,而不僅僅是最終結果86 查看產生的回應,而不僅僅是最終結果

83 </Card>87 </Card>


87 </Card>91 </Card>

88</CardGroup>92</CardGroup>

89 93 

90### 實作範例94<h3 id="implementation-example">

95 實作範例

96</h3>

91 97 

92<CodeGroup>98<CodeGroup>

93 ```typescript TypeScript theme={null}99 ```typescript TypeScript theme={null}


212 ```218 ```

213</CodeGroup>219</CodeGroup>

214 220 

215## 單一訊息輸入221<h2 id="single-message-input">

222 單一訊息輸入

223</h2>

216 224 

217單一訊息輸入更簡單但功能更受限。225單一訊息輸入更簡單但功能更受限。

218 226 

219### 何時使用單一訊息輸入227<h3 id="when-to-use-single-message-input">

228 何時使用單一訊息輸入

229</h3>

220 230 

221在以下情況下使用單一訊息輸入:231在以下情況下使用單一訊息輸入:

222 232 

223* 您需要一次性回應233* 您需要一次性回應

224* 您不需要影像附件、hooks 等234* 您不需要影像附件或中途工作階段控制方法

225* 您需要在無狀態環境中運作,例如 lambda 函式235* 您需要在無狀態環境中運作,例如 lambda 函式

226 236 

227### 限制237<h3 id="limitations">

238 限制

239</h3>

228 240 

229<Warning>241<Warning>

230 單一訊息輸入模式**不**支援:242 單一訊息輸入模式**不**支援:


232 * 訊息中的直接影像附件244 * 訊息中的直接影像附件

233 * 動態訊息佇列245 * 動態訊息佇列

234 * 即時中斷246 * 即時中斷

235 * Hook 整合

236 * 自然的多回合對話247 * 自然的多回合對話

237</Warning>248</Warning>

238 249 

239### 實作範例250<h3 id="implementation-example">

251 實作範例

252</h3>

240 253 

241<CodeGroup>254<CodeGroup>

242 ```typescript TypeScript theme={null}255 ```typescript TypeScript theme={null}

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# 從代理獲取結構化輸出

6 

7> 使用 JSON Schema、Zod 或 Pydantic 從代理工作流程返回驗證的 JSON。在多輪工具使用後獲得類型安全的結構化資料。

8 

9結構化輸出讓您定義想要從代理返回的資料的確切形狀。代理可以使用任何需要的工具來完成任務,而您仍然會在最後獲得與您的架構相匹配的驗證 JSON。定義一個 [JSON Schema](https://json-schema.org/understanding-json-schema/about) 來描述您需要的結構,SDK 會根據它驗證輸出,在不匹配時重新提示。如果驗證在重試限制內未成功,結果將是錯誤而不是結構化資料;請參閱 [錯誤處理](#error-handling)。

10 

11為了獲得完整的類型安全,使用 [Zod](#type-safe-schemas-with-zod-and-pydantic)(TypeScript)或 [Pydantic](#type-safe-schemas-with-zod-and-pydantic)(Python)來定義您的架構並獲得強類型物件。

12 

13<h2 id="why-structured-outputs">

14 為什麼要使用結構化輸出?

15</h2>

16 

17代理預設返回自由格式的文本,這適用於聊天但不適用於您需要以程式方式使用輸出的情況。結構化輸出為您提供類型化資料,您可以直接傳遞給應用程式邏輯、資料庫或 UI 元件。

18 

19考慮一個食譜應用程式,其中代理搜尋網路並帶回食譜。沒有結構化輸出,您會獲得自由格式的文本,需要自己解析。使用結構化輸出,您定義想要的形狀並獲得可以直接在應用程式中使用的類型化資料。

20 

21<AccordionGroup>

22 <Accordion title="沒有結構化輸出">

23 ```text theme={null}

24 這是一個經典的巧克力晶片餅乾食譜!

25 

26 **巧克力晶片餅乾**

27 準備時間:15 分鐘 | 烹飪時間:10 分鐘

28 

29 材料:

30 - 2 1/4 杯通用麵粉

31 - 1 杯軟化黃油

32 ...

33 ```

34 

35 要在您的應用程式中使用這個,您需要解析出標題,將'15 分鐘'轉換為數字,將材料與說明分開,並處理跨回應的不一致格式。

36 </Accordion>

37 

38 <Accordion title="使用結構化輸出">

39 ```json theme={null}

40 {

41 "name": "Chocolate Chip Cookies",

42 "prep_time_minutes": 15,

43 "cook_time_minutes": 10,

44 "ingredients": [

45 { "item": "all-purpose flour", "amount": 2.25, "unit": "cups" },

46 { "item": "butter, softened", "amount": 1, "unit": "cup" }

47 // ...

48 ],

49 "steps": ["Preheat oven to 375°F", "Cream butter and sugar" /* ... */]

50 }

51 ```

52 

53 您可以直接在 UI 中使用的類型化資料。

54 </Accordion>

55</AccordionGroup>

56 

57<h2 id="quick-start">

58 快速開始

59</h2>

60 

61要使用結構化輸出,定義一個 [JSON Schema](https://json-schema.org/understanding-json-schema/about) 來描述您想要的資料形狀,然後通過 `outputFormat` 選項(TypeScript)或 `output_format` 選項(Python)將其傳遞給 `query()`。當代理完成時,結果訊息包含一個 `structured_output` 欄位,其中包含與您的架構相匹配的驗證資料。

62 

63下面的範例要求代理研究 Anthropic 並返回公司名稱、成立年份和總部作為結構化輸出。

64 

65<CodeGroup>

66 ```typescript TypeScript theme={null}

67 import { query } from "@anthropic-ai/claude-agent-sdk";

68 

69 // 定義您想要返回的資料形狀

70 const schema = {

71 type: "object",

72 properties: {

73 company_name: { type: "string" },

74 founded_year: { type: "number" },

75 headquarters: { type: "string" }

76 },

77 required: ["company_name"]

78 };

79 

80 for await (const message of query({

81 prompt: "Research Anthropic and provide key company information",

82 options: {

83 outputFormat: {

84 type: "json_schema",

85 schema: schema

86 }

87 }

88 })) {

89 // 結果訊息包含具有驗證資料的 structured_output

90 if (message.type === "result" && message.subtype === "success" && message.structured_output) {

91 console.log(message.structured_output);

92 // { company_name: "Anthropic", founded_year: 2021, headquarters: "San Francisco, CA" }

93 }

94 }

95 ```

96 

97 ```python Python theme={null}

98 import asyncio

99 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

100 

101 # 定義您想要返回的資料形狀

102 schema = {

103 "type": "object",

104 "properties": {

105 "company_name": {"type": "string"},

106 "founded_year": {"type": "number"},

107 "headquarters": {"type": "string"},

108 },

109 "required": ["company_name"],

110 }

111 

112 

113 async def main():

114 async for message in query(

115 prompt="Research Anthropic and provide key company information",

116 options=ClaudeAgentOptions(

117 output_format={"type": "json_schema", "schema": schema}

118 ),

119 ):

120 # 結果訊息包含具有驗證資料的 structured_output

121 if isinstance(message, ResultMessage) and message.structured_output:

122 print(message.structured_output)

123 # {'company_name': 'Anthropic', 'founded_year': 2021, 'headquarters': 'San Francisco, CA'}

124 

125 

126 asyncio.run(main())

127 ```

128</CodeGroup>

129 

130<h2 id="type-safe-schemas-with-zod-and-pydantic">

131 使用 Zod 和 Pydantic 的類型安全架構

132</h2>

133 

134與其手動編寫 JSON Schema,您可以使用 [Zod](https://zod.dev/)(TypeScript)或 [Pydantic](https://docs.pydantic.dev/latest/)(Python)來定義您的架構。這些庫為您生成 JSON Schema,並讓您將回應解析為完全類型化的物件,您可以在整個程式碼庫中使用,具有自動完成和類型檢查。

135 

136下面的範例定義了一個功能實現計劃的架構,包括摘要、步驟列表(每個步驟都有複雜性級別)和潛在風險。代理計劃該功能並返回一個類型化的 `FeaturePlan` 物件。然後您可以訪問 `plan.summary` 等屬性,並使用完整的類型安全遍歷 `plan.steps`。

137 

138<CodeGroup>

139 ```typescript TypeScript theme={null}

140 import { z } from "zod";

141 import { query } from "@anthropic-ai/claude-agent-sdk";

142 

143 // 使用 Zod 定義架構

144 const FeaturePlan = z.object({

145 feature_name: z.string(),

146 summary: z.string(),

147 steps: z.array(

148 z.object({

149 step_number: z.number(),

150 description: z.string(),

151 estimated_complexity: z.enum(["low", "medium", "high"])

152 })

153 ),

154 risks: z.array(z.string())

155 });

156 

157 type FeaturePlan = z.infer<typeof FeaturePlan>;

158 

159 // 轉換為 JSON Schema

160 const schema = z.toJSONSchema(FeaturePlan);

161 

162 // 在查詢中使用

163 for await (const message of query({

164 prompt:

165 "Plan how to add dark mode support to a React app. Break it into implementation steps.",

166 options: {

167 outputFormat: {

168 type: "json_schema",

169 schema: schema

170 }

171 }

172 })) {

173 if (message.type === "result" && message.subtype === "success" && message.structured_output) {

174 // 驗證並獲得完全類型化的結果

175 const parsed = FeaturePlan.safeParse(message.structured_output);

176 if (parsed.success) {

177 const plan: FeaturePlan = parsed.data;

178 console.log(`Feature: ${plan.feature_name}`);

179 console.log(`Summary: ${plan.summary}`);

180 plan.steps.forEach((step) => {

181 console.log(`${step.step_number}. [${step.estimated_complexity}] ${step.description}`);

182 });

183 }

184 }

185 }

186 ```

187 

188 ```python Python theme={null}

189 import asyncio

190 from pydantic import BaseModel

191 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

192 

193 

194 class Step(BaseModel):

195 step_number: int

196 description: str

197 estimated_complexity: str # 'low', 'medium', 'high'

198 

199 

200 class FeaturePlan(BaseModel):

201 feature_name: str

202 summary: str

203 steps: list[Step]

204 risks: list[str]

205 

206 

207 async def main():

208 async for message in query(

209 prompt="Plan how to add dark mode support to a React app. Break it into implementation steps.",

210 options=ClaudeAgentOptions(

211 output_format={

212 "type": "json_schema",

213 "schema": FeaturePlan.model_json_schema(),

214 }

215 ),

216 ):

217 if isinstance(message, ResultMessage) and message.structured_output:

218 # 驗證並獲得完全類型化的結果

219 plan = FeaturePlan.model_validate(message.structured_output)

220 print(f"Feature: {plan.feature_name}")

221 print(f"Summary: {plan.summary}")

222 for step in plan.steps:

223 print(

224 f"{step.step_number}. [{step.estimated_complexity}] {step.description}"

225 )

226 

227 

228 asyncio.run(main())

229 ```

230</CodeGroup>

231 

232**優點:**

233 

234* 完整的類型推斷(TypeScript)和類型提示(Python)

235* 使用 `safeParse()` 或 `model_validate()` 進行運行時驗證

236* 更好的錯誤訊息

237* 可組合、可重用的架構

238 

239<h2 id="output-format-configuration">

240 輸出格式配置

241</h2>

242 

243`outputFormat`(TypeScript)或 `output_format`(Python)選項接受一個物件,其中包含:

244 

245* `type`:設置為 `"json_schema"` 以進行結構化輸出

246* `schema`:一個 [JSON Schema](https://json-schema.org/understanding-json-schema/about) 物件,定義您的輸出結構。您可以使用 `z.toJSONSchema()` 從 Zod 架構或使用 `.model_json_schema()` 從 Pydantic 模型生成此項。

247 

248SDK 支援標準 JSON Schema 功能,包括所有基本類型(object、array、string、number、boolean、null)、`enum`、`const`、`required`、嵌套物件和 `$ref` 定義。有關支援的功能和限制的完整列表,請參閱 [JSON Schema 限制](https://platform.claude.com/docs/en/build-with-claude/structured-outputs#json-schema-limitations)。

249 

250<h2 id="example-todo-tracking-agent">

251 範例:TODO 追蹤代理

252</h2>

253 

254此範例演示了結構化輸出如何與多步驟工具使用配合使用。代理需要在程式碼庫中查找 TODO 註釋,然後為每個註釋查找 git blame 資訊。它自主決定使用哪些工具(Grep 搜尋、Bash 執行 git 命令)並將結果組合成單個結構化回應。

255 

256架構包括可選欄位(`author` 和 `date`),因為 git blame 資訊可能不適用於所有檔案。代理填入它能找到的內容並省略其餘部分。

257 

258<CodeGroup>

259 ```typescript TypeScript theme={null}

260 import { query } from "@anthropic-ai/claude-agent-sdk";

261 

262 // 定義 TODO 提取的結構

263 const todoSchema = {

264 type: "object",

265 properties: {

266 todos: {

267 type: "array",

268 items: {

269 type: "object",

270 properties: {

271 text: { type: "string" },

272 file: { type: "string" },

273 line: { type: "number" },

274 author: { type: "string" },

275 date: { type: "string" }

276 },

277 required: ["text", "file", "line"]

278 }

279 },

280 total_count: { type: "number" }

281 },

282 required: ["todos", "total_count"]

283 };

284 

285 // 代理使用 Grep 查找 TODO,使用 Bash 獲取 git blame 資訊

286 for await (const message of query({

287 prompt: "Find all TODO comments in this codebase and identify who added them",

288 options: {

289 outputFormat: {

290 type: "json_schema",

291 schema: todoSchema

292 }

293 }

294 })) {

295 if (message.type === "result" && message.subtype === "success" && message.structured_output) {

296 const data = message.structured_output as { total_count: number; todos: Array<{ file: string; line: number; text: string; author?: string; date?: string }> };

297 console.log(`Found ${data.total_count} TODOs`);

298 data.todos.forEach((todo) => {

299 console.log(`${todo.file}:${todo.line} - ${todo.text}`);

300 if (todo.author) {

301 console.log(` Added by ${todo.author} on ${todo.date}`);

302 }

303 });

304 }

305 }

306 ```

307 

308 ```python Python theme={null}

309 import asyncio

310 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

311 

312 # 定義 TODO 提取的結構

313 todo_schema = {

314 "type": "object",

315 "properties": {

316 "todos": {

317 "type": "array",

318 "items": {

319 "type": "object",

320 "properties": {

321 "text": {"type": "string"},

322 "file": {"type": "string"},

323 "line": {"type": "number"},

324 "author": {"type": "string"},

325 "date": {"type": "string"},

326 },

327 "required": ["text", "file", "line"],

328 },

329 },

330 "total_count": {"type": "number"},

331 },

332 "required": ["todos", "total_count"],

333 }

334 

335 

336 async def main():

337 # 代理使用 Grep 查找 TODO,使用 Bash 獲取 git blame 資訊

338 async for message in query(

339 prompt="Find all TODO comments in this codebase and identify who added them",

340 options=ClaudeAgentOptions(

341 output_format={"type": "json_schema", "schema": todo_schema}

342 ),

343 ):

344 if isinstance(message, ResultMessage) and message.structured_output:

345 data = message.structured_output

346 print(f"Found {data['total_count']} TODOs")

347 for todo in data["todos"]:

348 print(f"{todo['file']}:{todo['line']} - {todo['text']}")

349 if "author" in todo:

350 print(f" Added by {todo['author']} on {todo['date']}")

351 

352 

353 asyncio.run(main())

354 ```

355</CodeGroup>

356 

357<h2 id="error-handling">

358 錯誤處理

359</h2>

360 

361當代理無法生成與您的架構相匹配的有效 JSON 時,結構化輸出生成可能會失敗。這通常發生在架構對於任務過於複雜、任務本身不明確或代理在嘗試修復驗證錯誤時達到重試限制時。

362 

363發生錯誤時,結果訊息有一個 `subtype` 指示出了什麼問題:

364 

365| Subtype | 含義 |

366| ------------------------------------- | ---------------- |

367| `success` | 輸出已成功生成並驗證 |

368| `error_max_structured_output_retries` | 代理在多次嘗試後無法生成有效輸出 |

369 

370下面的範例檢查 `subtype` 欄位以確定輸出是否成功生成或您是否需要處理失敗:

371 

372<CodeGroup>

373 ```typescript TypeScript theme={null}

374 for await (const msg of query({

375 prompt: "Extract contact info from the document",

376 options: {

377 outputFormat: {

378 type: "json_schema",

379 schema: contactSchema

380 }

381 }

382 })) {

383 if (msg.type === "result") {

384 if (msg.subtype === "success" && msg.structured_output) {

385 // 使用驗證的輸出

386 console.log(msg.structured_output);

387 } else if (msg.subtype === "error_max_structured_output_retries") {

388 // 處理失敗 - 使用更簡單的提示重試、回退到非結構化等

389 console.error("Could not produce valid output");

390 }

391 }

392 }

393 ```

394 

395 ```python Python theme={null}

396 async for message in query(

397 prompt="Extract contact info from the document",

398 options=ClaudeAgentOptions(

399 output_format={"type": "json_schema", "schema": contact_schema}

400 ),

401 ):

402 if isinstance(message, ResultMessage):

403 if message.subtype == "success" and message.structured_output:

404 # 使用驗證的輸出

405 print(message.structured_output)

406 elif message.subtype == "error_max_structured_output_retries":

407 # 處理失敗

408 print("Could not produce valid output")

409 ```

410</CodeGroup>

411 

412**避免錯誤的提示:**

413 

414* **保持架構專注。** 具有許多必需欄位的深層嵌套架構更難滿足。從簡單開始,根據需要添加複雜性。

415* **匹配架構與任務。** 如果任務可能沒有您的架構所需的所有資訊,請將這些欄位設為可選。

416* **使用清晰的提示。** 不明確的提示使代理更難知道要生成什麼輸出。

417 

418<h2 id="related-resources">

419 相關資源

420</h2>

421 

422* [JSON Schema 文件](https://json-schema.org/):學習 JSON Schema 語法以定義具有嵌套物件、陣列、列舉和驗證約束的複雜架構

423* [API 結構化輸出](https://platform.claude.com/docs/en/build-with-claude/structured-outputs):直接使用 Claude API 的結構化輸出進行單輪請求,無需工具使用

424* [自訂工具](/zh-TW/agent-sdk/custom-tools):在返回結構化輸出之前,在執行期間為您的代理提供自訂工具以供調用

Details

11 11 

12本指南說明如何使用 `agents` 參數在 SDK 中定義和使用子代理。12本指南說明如何使用 `agents` 參數在 SDK 中定義和使用子代理。

13 13 

14## 概述14<h2 id="overview">

15 概述

16</h2>

15 17 

16您可以通過三種方式創建子代理:18您可以通過三種方式創建子代理:

17 19 


23 25 

24定義子代理時,Claude 根據每個子代理的 `description` 欄位確定是否調用它。編寫清晰的描述,說明何時應使用子代理,Claude 將自動委派適當的任務。您也可以在提示詞中按名稱明確請求子代理(例如,「使用代碼審查員代理來...」)。26定義子代理時,Claude 根據每個子代理的 `description` 欄位確定是否調用它。編寫清晰的描述,說明何時應使用子代理,Claude 將自動委派適當的任務。您也可以在提示詞中按名稱明確請求子代理(例如,「使用代碼審查員代理來...」)。

25 27 

26## 使用子代理的好處28<h2 id="benefits-of-using-subagents">

29 使用子代理的好處

30</h2>

27 31 

28### 上下文隔離32<h3 id="context-isolation">

33 上下文隔離

34</h3>

29 35 

30每個子代理在其自己的新對話中運行。中間工具調用和結果保留在子代理內;只有其最終消息返回到父代理。請參閱[子代理繼承的內容](#what-subagents-inherit)以了解子代理上下文中的確切內容。36每個子代理在其自己的新對話中運行。中間工具調用和結果保留在子代理內;只有其最終消息返回到父代理。請參閱[子代理繼承的內容](#what-subagents-inherit)以了解子代理上下文中的確切內容。

31 37 

32**示例:** `research-assistant` 子代理可以探索數十個檔案,而無需任何該內容在主對話中累積。父代理接收簡潔的摘要,而不是子代理讀取的每個檔案。38**示例:** `research-assistant` 子代理可以探索數十個檔案,而無需任何該內容在主對話中累積。父代理接收簡潔的摘要,而不是子代理讀取的每個檔案。

33 39 

34### 並行化40<h3 id="parallelization">

41 並行化

42</h3>

35 43 

36多個子代理可以並發運行,大大加快複雜工作流程的速度。44多個子代理可以並發運行,大大加快複雜工作流程的速度。

37 45 

38**示例:** 在代碼審查期間,您可以同時運行 `style-checker`、`security-scanner` 和 `test-coverage` 子代理,將審查時間從幾分鐘縮短到幾秒鐘。46**示例:** 在代碼審查期間,您可以同時運行 `style-checker`、`security-scanner` 和 `test-coverage` 子代理,將審查時間從幾分鐘縮短到幾秒鐘。

39 47 

40### 專門化指令和知識48<h3 id="specialized-instructions-and-knowledge">

49 專門化指令和知識

50</h3>

41 51 

42每個子代理可以有具有特定專業知識、最佳實踐和約束的定製系統提示詞。52每個子代理可以有具有特定專業知識、最佳實踐和約束的定製系統提示詞。

43 53 

44**示例:** `database-migration` 子代理可以具有有關 SQL 最佳實踐、回滾策略和數據完整性檢查的詳細知識,這些在主代理的指令中將是不必要的噪音。54**示例:** `database-migration` 子代理可以具有有關 SQL 最佳實踐、回滾策略和數據完整性檢查的詳細知識,這些在主代理的指令中將是不必要的噪音。

45 55 

46### 工具限制56<h3 id="tool-restrictions">

57 工具限制

58</h3>

47 59 

48子代理可以限制為特定工具,降低意外操作的風險。60子代理可以限制為特定工具,降低意外操作的風險。

49 61 

50**示例:** `doc-reviewer` 子代理可能只能訪問 Read 和 Grep 工具,確保它可以分析但永遠不會意外修改您的文檔檔案。62**示例:** `doc-reviewer` 子代理可能只能訪問 Read 和 Grep 工具,確保它可以分析但永遠不會意外修改您的文檔檔案。

51 63 

52## 創建子代理64<h2 id="creating-subagents">

65 創建子代理

66</h2>

53 67 

54### 程式化定義(推薦)68<h3 id="programmatic-definition-recommended">

69 程式化定義(推薦)

70</h3>

55 71 

56使用 `agents` 參數直接在代碼中定義子代理。此示例創建兩個子代理:一個具有唯讀訪問權限的代碼審查員和一個可以執行命令的測試運行器。由於 Claude 通過 Agent 工具調用子代理,因此 `Agent` 工具必須包含在 `allowedTools` 72使用 `agents` 參數直接在代碼中定義子代理。此示例創建兩個子代理:一個具有唯讀訪問權限的代碼審查員和一個可以執行命令的測試運行器。Claude 通過 Agent 工具調用子代理,因此請在 `allowedTools` 中包含 `Agent` 以自動批准子代理調用,無需權限提示

57 73 

58<CodeGroup>74<CodeGroup>

59 ```python Python theme={null}75 ```python Python theme={null}


65 async for message in query(81 async for message in query(

66 prompt="Review the authentication module for security issues",82 prompt="Review the authentication module for security issues",

67 options=ClaudeAgentOptions(83 options=ClaudeAgentOptions(

68 # Agent tool is required for subagent invocation84 # Auto-approve these tools, including Agent for subagent invocation

69 allowed_tools=["Read", "Grep", "Glob", "Agent"],85 allowed_tools=["Read", "Grep", "Glob", "Agent"],

70 agents={86 agents={

71 "code-reviewer": AgentDefinition(87 "code-reviewer": AgentDefinition(


114 for await (const message of query({130 for await (const message of query({

115 prompt: "Review the authentication module for security issues",131 prompt: "Review the authentication module for security issues",

116 options: {132 options: {

117 // Agent tool is required for subagent invocation133 // Auto-approve these tools, including Agent for subagent invocation

118 allowedTools: ["Read", "Grep", "Glob", "Agent"],134 allowedTools: ["Read", "Grep", "Glob", "Agent"],

119 agents: {135 agents: {

120 "code-reviewer": {136 "code-reviewer": {


157 ```173 ```

158</CodeGroup>174</CodeGroup>

159 175 

160### AgentDefinition 配置176<h3 id="agentdefinition-configuration">

177 AgentDefinition 配置

178</h3>

161 179 

162| 欄位 | 類型 | 必需 | 描述 |180| 欄位 | 類型 | 必需 | 描述 |

163| :---------------- | :---------------------------------------------------------- | :- | :------------------------------------------------------------------------------ |181| :---------------- | :---------------------------------------------------------- | :- | :------------------------------------------------------------------------------ |


166| `tools` | `string[]` | 否 | 允許的工具名稱陣列。如果省略,繼承所有工具 |184| `tools` | `string[]` | 否 | 允許的工具名稱陣列。如果省略,繼承所有工具 |

167| `disallowedTools` | `string[]` | 否 | 要從代理的工具集中移除的工具名稱陣列 |185| `disallowedTools` | `string[]` | 否 | 要從代理的工具集中移除的工具名稱陣列 |

168| `model` | `string` | 否 | 此代理的模型覆蓋。接受別名,例如 `'sonnet'`、`'opus'`、`'haiku'`、`'inherit'`,或完整模型 ID。如果省略,預設為主模型 |186| `model` | `string` | 否 | 此代理的模型覆蓋。接受別名,例如 `'sonnet'`、`'opus'`、`'haiku'`、`'inherit'`,或完整模型 ID。如果省略,預設為主模型 |

169| `skills` | `string[]` | 否 | 在啟動時預加載到代理上下文中的技能名稱列表未列出的技能仍可通過 Skill 工具調用 |187| `skills` | `string[]` | 否 | 在啟動時預加載到代理上下文中的 skills 名稱列表未列出的 skills 仍可通過 Skill 工具調用 |

170| `memory` | `'user' \| 'project' \| 'local'` | 否 | 此代理的記憶體來源 |188| `memory` | `'user' \| 'project' \| 'local'` | 否 | 此代理的記憶體來源 |

171| `mcpServers` | `(string \| object)[]` | 否 | 此代理可用的 MCP 伺服器,按名稱或內聯配置 |189| `mcpServers` | `(string \| object)[]` | 否 | 此代理可用的 MCP 伺服器,按名稱或內聯配置 |

172| `maxTurns` | `number` | 否 | 代理停止前的最大代理轉數 |190| `maxTurns` | `number` | 否 | 代理停止前的最大代理轉數 |


180 子代理無法生成自己的子代理。不要在子代理的 `tools` 陣列中包含 `Agent`。198 子代理無法生成自己的子代理。不要在子代理的 `tools` 陣列中包含 `Agent`。

181</Note>199</Note>

182 200 

183### 基於檔案系統的定義(替代方案)201<h3 id="filesystem-based-definition-alternative">

202 基於檔案系統的定義(替代方案)

203</h3>

184 204 

185您也可以在 `.claude/agents/` 目錄中將子代理定義為 markdown 檔案。有關此方法的詳細信息,請參閱 [Claude Code 子代理文檔](/zh-TW/sub-agents)。以程式方式定義的代理優先於具有相同名稱的基於檔案系統的代理。205您也可以在 `.claude/agents/` 目錄中將子代理定義為 markdown 檔案。有關此方法的詳細信息,請參閱 [Claude Code 子代理文檔](/zh-TW/sub-agents)。以程式方式定義的代理優先於具有相同名稱的基於檔案系統的代理。

186 206 

187<Note>207<Note>

188 即使不定義自訂子代理,當 `Agent` 在您的 `allowedTools` 中時,Claude 也可以生成內置的 `general-purpose` 子代理。這對於委派研究或探索任務而無需創建專門代理很有用。208 即使不定義自訂子代理,Claude 也可以生成內置的 `general-purpose` 子代理。這對於委派研究或探索任務而無需創建專門代理很有用。請在 `allowedTools` 中包含 `Agent`,以便這些調用自動批准,無需權限提示。

189</Note>209</Note>

190 210 

191## 子代理繼承的內容211<h2 id="what-subagents-inherit">

212 子代理繼承的內容

213</h2>

192 214 

193子代理的上下文窗口從新開始(無父對話),但並非空的。從父代理到子代理的唯一通道是 Agent 工具的提示詞字符串,因此請直接在該提示詞中包含子代理需要的任何檔案路徑、錯誤消息或決策。215子代理的上下文窗口從新開始(無父對話),但並非空的。從父代理到子代理的唯一通道是 Agent 工具的提示詞字符串,因此請直接在該提示詞中包含子代理需要的任何檔案路徑、錯誤消息或決策。

194 216 


202 父代理逐字接收子代理的最終消息作為 Agent 工具結果,但可能在其自己的回應中進行摘要。要在面向用戶的回應中逐字保留子代理輸出,請在您傳遞給**主** `query()` 調用的提示詞或 `systemPrompt` 選項中包含執行此操作的指令。224 父代理逐字接收子代理的最終消息作為 Agent 工具結果,但可能在其自己的回應中進行摘要。要在面向用戶的回應中逐字保留子代理輸出,請在您傳遞給**主** `query()` 調用的提示詞或 `systemPrompt` 選項中包含執行此操作的指令。

203</Note>225</Note>

204 226 

205## 調用子代理227<h2 id="invoking-subagents">

228 調用子代理

229</h2>

206 230 

207### 自動調用231<h3 id="automatic-invocation">

232 自動調用

233</h3>

208 234 

209Claude 根據任務和每個子代理的 `description` 自動決定何時調用子代理。例如,如果您定義了一個 `performance-optimizer` 子代理,其描述為「查詢調優的性能優化專家」,當您的提示詞提到優化查詢時,Claude 將調用它。235Claude 根據任務和每個子代理的 `description` 自動決定何時調用子代理。例如,如果您定義了一個 `performance-optimizer` 子代理,其描述為「查詢調優的性能優化專家」,當您的提示詞提到優化查詢時,Claude 將調用它。

210 236 

211編寫清晰、具體的描述,以便 Claude 可以將任務匹配到正確的子代理。237編寫清晰、具體的描述,以便 Claude 可以將任務匹配到正確的子代理。

212 238 

213### 明確調用239<h3 id="explicit-invocation">

240 明確調用

241</h3>

214 242 

215要保證 Claude 使用特定的子代理,請在提示詞中按名稱提及它:243要保證 Claude 使用特定的子代理,請在提示詞中按名稱提及它:

216 244 


220 248 

221這繞過自動匹配並直接調用命名的子代理。249這繞過自動匹配並直接調用命名的子代理。

222 250 

223### 動態代理配置251<h3 id="dynamic-agent-configuration">

252 動態代理配置

253</h3>

224 254 

225您可以根據運行時條件動態創建代理定義。此示例創建一個安全審查員,具有不同的嚴格級別,對嚴格審查使用更強大的模型。255您可以根據運行時條件動態創建代理定義。此示例創建一個安全審查員,具有不同的嚴格級別,對嚴格審查使用更強大的模型。

226 256 


296 ```326 ```

297</CodeGroup>327</CodeGroup>

298 328 

299## 檢測子代理調用329<h2 id="detecting-subagent-invocation">

330 檢測子代理調用

331</h2>

300 332 

301子代理通過 Agent 工具調用。要檢測何時調用子代理,請檢查 `tool_use` 塊,其中 `name` 是 `"Agent"`。來自子代理上下文內的訊息包括 `parent_tool_use_id` 欄位。333子代理通過 Agent 工具調用。要檢測何時調用子代理,請檢查 `tool_use` 塊,其中 `name` 是 `"Agent"`。來自子代理上下文內的訊息包括 `parent_tool_use_id` 欄位。

302 334 


389 ```421 ```

390</CodeGroup>422</CodeGroup>

391 423 

392## 恢復子代理424<h2 id="resuming-subagents">

425 恢復子代理

426</h2>

393 427 

394子代理可以恢復以繼續中斷的地方。恢復的子代理保留其完整的對話歷史,包括所有先前的工具調用、結果和推理。子代理從停止的地方繼續,而不是從頭開始。428子代理可以恢復以繼續中斷的地方。恢復的子代理保留其完整的對話歷史,包括所有先前的工具調用、結果和推理。子代理從停止的地方繼續,而不是從頭開始。

395 429 


507* **會話持久性**:子代理記錄在其會話內持續存在。您可以通過恢復相同會話在重新啟動 Claude Code 後恢復子代理。541* **會話持久性**:子代理記錄在其會話內持續存在。您可以通過恢復相同會話在重新啟動 Claude Code 後恢復子代理。

508* **自動清理**:記錄根據 `cleanupPeriodDays` 設置進行清理(預設:30 天)。542* **自動清理**:記錄根據 `cleanupPeriodDays` 設置進行清理(預設:30 天)。

509 543 

510## 工具限制544<h2 id="tool-restrictions">

545 工具限制

546</h2>

511 547 

512子代理可以通過 `tools` 欄位具有受限的工具訪問:548子代理可以通過 `tools` 欄位具有受限的工具訪問:

513 549 


568 ```604 ```

569</CodeGroup>605</CodeGroup>

570 606 

571### 常見工具組合607<h3 id="common-tool-combinations">

608 常見工具組合

609</h3>

572 610 

573| 使用案例 | 工具 | 描述 |611| 使用案例 | 工具 | 描述 |

574| :--- | :---------------------------------- | :------------------------ |612| :--- | :---------------------------------- | :------------------------ |


577| 代碼修改 | `Read`、`Edit`、`Write`、`Grep`、`Glob` | 完整的讀/寫訪問,無需命令執行 |615| 代碼修改 | `Read`、`Edit`、`Write`、`Grep`、`Glob` | 完整的讀/寫訪問,無需命令執行 |

578| 完全訪問 | 所有工具 | 從父代理繼承所有工具(省略 `tools` 欄位) |616| 完全訪問 | 所有工具 | 從父代理繼承所有工具(省略 `tools` 欄位) |

579 617 

580## 故障排除618<h2 id="scale-up-with-dynamic-workflows">

619 使用動態工作流程進行擴展

620</h2>

581 621 

582### Claude 不委派給子代理622子代理適用於每轉委派幾個任務。對於協調數十到數百個代理的運行,請使用 `Workflow` 工具,它將編排移到運行時在對話上下文外執行的腳本中。請參閱[動態工作流程](/zh-TW/workflows)以了解工作流程與逐轉子代理委派的區別。

623 

624`Workflow` 工具在 TypeScript Agent SDK v0.3.149 及更高版本中可用。在 `allowedTools` 中包含 `Workflow` 以自動批准工作流程運行。工具輸入和輸出架構列在 [TypeScript 參考](/zh-TW/agent-sdk/typescript#workflow)中。

625 

626<h2 id="troubleshooting">

627 故障排除

628</h2>

629 

630<h3 id="claude-not-delegating-to-subagents">

631 Claude 不委派給子代理

632</h3>

583 633 

584如果 Claude 直接完成任務而不是委派給您的子代理:634如果 Claude 直接完成任務而不是委派給您的子代理:

585 635 

5861. **包含 Agent 工具**:子代理通過 Agent 工具調用因此它必須在 `allowedTools` 6361. **檢查 Agent 調用已獲批准**: `allowedTools` 中包含 `Agent` 以自動批准子代理調用。沒有它Agent 調用會轉到您的 `canUseTool` 回調,或在 `dontAsk` 模式下被拒絕

5872. **使用明確提示**:在提示詞中按名稱提及子代理(例如,「使用代碼審查員代理來...」)6372. **使用明確提示**:在您的提示詞中按名稱提及子代理(例如,「使用代碼審查員代理來...」)

5883. **編寫清晰的描述**:準確解釋何時應使用子代理,以便 Claude 可以適當地匹配任務6383. **編寫清晰的描述**:準確解釋何時應使用子代理,以便 Claude 可以適當地匹配任務

589 639 

590### 基於檔案系統的代理未加載640<h3 id="filesystem-based-agents-not-loading">

641 基於檔案系統的代理未加載

642</h3>

591 643 

592在 `.claude/agents/` 中定義的代理僅在啟動時加載。如果在 Claude Code 運行時創建新的代理檔案,請重新啟動會話以加載它。644在 `.claude/agents/` 中定義的代理僅在啟動時加載。如果在 Claude Code 運行時創建新的代理檔案,請重新啟動會話以加載它。

593 645 

594### Windows:長提示詞失敗646<h3 id="windows-long-prompt-failures">

647 Windows:長提示詞失敗

648</h3>

595 649 

596在 Windows 上,具有非常長提示詞的子代理可能因命令行長度限制(8191 個字符)而失敗。保持提示詞簡潔或使用基於檔案系統的代理來處理複雜指令。650在 Windows 上,具有非常長提示詞的子代理可能因命令行長度限制(8191 個字符)而失敗。保持提示詞簡潔或使用基於檔案系統的代理來處理複雜指令。

597 651 

598## 相關文檔652<h2 id="related-documentation">

653 相關文檔

654</h2>

599 655 

600* [Claude Code 子代理](/zh-TW/sub-agents):包括基於檔案系統定義的全面子代理文檔656* [Claude Code 子代理](/zh-TW/sub-agents):包括基於檔案系統定義的全面子代理文檔

657* [動態工作流程](/zh-TW/workflows):從腳本協調許多子代理,用於對話太大的工作

601* [SDK 概述](/zh-TW/agent-sdk/overview):Claude Agent SDK 入門658* [SDK 概述](/zh-TW/agent-sdk/overview):Claude Agent SDK 入門

Details

12 自 TypeScript Agent SDK 0.3.142 和 Claude Code v2.1.142 起,會話使用結構化的 Task 工具 `TaskCreate`、`TaskUpdate`、`TaskGet` 和 `TaskList`,而不是 `TodoWrite`。請參閱[遷移到 Task 工具](#migrate-to-task-tools)以了解監控代碼如何變更。此頁面上的範例設置 `CLAUDE_CODE_ENABLE_TASKS=0` 以繼續為尚未遷移的會話顯示 `TodoWrite`。12 自 TypeScript Agent SDK 0.3.142 和 Claude Code v2.1.142 起,會話使用結構化的 Task 工具 `TaskCreate`、`TaskUpdate`、`TaskGet` 和 `TaskList`,而不是 `TodoWrite`。請參閱[遷移到 Task 工具](#migrate-to-task-tools)以了解監控代碼如何變更。此頁面上的範例設置 `CLAUDE_CODE_ENABLE_TASKS=0` 以繼續為尚未遷移的會話顯示 `TodoWrite`。

13</Note>13</Note>

14 14 

15### 待辦事項生命週期15<h3 id="todo-lifecycle">

16 待辦事項生命週期

17</h3>

16 18 

17待辦事項遵循可預測的生命週期:19待辦事項遵循可預測的生命週期:

18 20 


213. **完成**當任務成功完成時233. **完成**當任務成功完成時

224. **移除**當群組中的所有任務都完成時244. **移除**當群組中的所有任務都完成時

23 25 

24### 何時使用待辦事項26<h3 id="when-todos-are-used">

27 何時使用待辦事項

28</h3>

25 29 

26SDK 會自動為以下情況建立待辦事項:30SDK 會自動為以下情況建立待辦事項:

27 31 


30* **非平凡的操作**受益於進度追蹤34* **非平凡的操作**受益於進度追蹤

31* **明確的請求**當用戶要求待辦事項組織時35* **明確的請求**當用戶要求待辦事項組織時

32 36 

33## 範例37<h2 id="examples">

38 範例

39</h2>

34 40 

35### 監控待辦事項變更41<h3 id="monitoring-todo-changes">

42 監控待辦事項變更

43</h3>

36 44 

37<CodeGroup>45<CodeGroup>

38 ```typescript TypeScript theme={null}46 ```typescript TypeScript theme={null}


90 ```98 ```

91</CodeGroup>99</CodeGroup>

92 100 

93### 實時進度顯示101<h3 id="real-time-progress-display">

102 實時進度顯示

103</h3>

94 104 

95<CodeGroup>105<CodeGroup>

96 ```typescript TypeScript theme={null}106 ```typescript TypeScript theme={null}


194 ```204 ```

195</CodeGroup>205</CodeGroup>

196 206 

197## 遷移到 Task 工具207<h2 id="migrate-to-task-tools">

208 遷移到 Task 工具

209</h2>

198 210 

199Task 工具將單個 `TodoWrite` 呼叫分割為每個新項目的 `TaskCreate` 和每個狀態變更的 `TaskUpdate`,並提供 `TaskList` 和 `TaskGet` 供模型讀回當前清單。您的監控代碼仍然檢查助手流中的 `tool_use` 區塊,但維護一個由任務 ID 鍵入的映射,而不是在每次呼叫時替換整個清單。{/* min-version: 2.1.142 */}Task 工具是 TypeScript Agent SDK 0.3.142 和 Claude Code v2.1.142 起的預設值,因此不需要 `options.env` 變更。211Task 工具將單個 `TodoWrite` 呼叫分割為每個新項目的 `TaskCreate` 和每個狀態變更的 `TaskUpdate`,並提供 `TaskList` 和 `TaskGet` 供模型讀回當前清單。您的監控代碼仍然檢查助手流中的 `tool_use` 區塊,但維護一個由任務 ID 鍵入的映射,而不是在每次呼叫時替換整個清單。{/* min-version: 2.1.142 */}Task 工具是 TypeScript Agent SDK 0.3.142 和 Claude Code v2.1.142 起的預設值,因此不需要 `options.env` 變更。

200 212 


246 ```258 ```

247</CodeGroup>259</CodeGroup>

248 260 

249## 相關文檔261<h2 id="related-documentation">

262 相關文檔

263</h2>

250 264 

251* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript)265* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript)

252* [Python SDK 參考](/zh-TW/agent-sdk/python)266* [Python SDK 參考](/zh-TW/agent-sdk/python)

Details

8 8 

9<script src="/components/typescript-sdk-type-links.js" defer />9<script src="/components/typescript-sdk-type-links.js" defer />

10 10 

11## 安裝11<h2 id="installation">

12 安裝

13</h2>

12 14 

13```bash theme={null}15```bash theme={null}

14npm install @anthropic-ai/claude-agent-sdk16npm install @anthropic-ai/claude-agent-sdk


18 SDK 為您的平台捆綁了一個原生 Claude Code 二進制文件作為可選依賴項,例如 `@anthropic-ai/claude-agent-sdk-darwin-arm64`。您不需要單獨安裝 Claude Code。如果您的包管理器跳過可選依賴項,SDK 會拋出 `Native CLI binary for <platform> not found`;改為將 [`pathToClaudeCodeExecutable`](#options) 設置為單獨安裝的 `claude` 二進制文件。20 SDK 為您的平台捆綁了一個原生 Claude Code 二進制文件作為可選依賴項,例如 `@anthropic-ai/claude-agent-sdk-darwin-arm64`。您不需要單獨安裝 Claude Code。如果您的包管理器跳過可選依賴項,SDK 會拋出 `Native CLI binary for <platform> not found`;改為將 [`pathToClaudeCodeExecutable`](#options) 設置為單獨安裝的 `claude` 二進制文件。

19</Note>21</Note>

20 22 

21## 函數23<h3 id="compile-to-a-single-executable">

24 編譯為單個可執行文件

25</h3>

22 26 

23### `query()`27當您使用 `bun build --compile` 將應用程序編譯為單個文件可執行文件時,SDK 無法在運行時解析捆綁的 CLI 二進制文件。`require.resolve` 在編譯後可執行文件的 `$bunfs` 虛擬文件系統內不起作用,因此 SDK 會拋出 `Native CLI binary for <platform> not found`。

28 

29要解決此問題,請將平台二進制文件嵌入為文件資產,在啟動時使用 `extractFromBunfs()` 將其提取到真實路徑,並將該路徑傳遞給 [`pathToClaudeCodeExecutable`](#options)。

30 

31`extractFromBunfs()` 輔助函數需要 `@anthropic-ai/claude-agent-sdk` v0.3.144 或更高版本。下面的示例為 Apple Silicon 上的 macOS 構建:

32 

33```typescript theme={null}

34import binPath from "@anthropic-ai/claude-agent-sdk-darwin-arm64/claude" with { type: "file" };

35import { extractFromBunfs } from "@anthropic-ai/claude-agent-sdk/extract";

36import { query } from "@anthropic-ai/claude-agent-sdk";

37 

38const cliPath = extractFromBunfs(binPath);

39 

40for await (const message of query({

41 prompt: "Hello",

42 options: { pathToClaudeCodeExecutable: cliPath },

43})) {

44 console.log(message);

45}

46```

47 

48`extractFromBunfs()` 將嵌入的二進制文件從編譯後可執行文件的虛擬文件系統複製到每個用戶的臨時目錄,並返回真實路徑。在編譯後的可執行文件外,它返回輸入路徑不變,因此相同的代碼在開發中無需修改即可運行。

49 

50每個編譯後的可執行文件都嵌入單個平台的二進制文件。將導入中的平台包與您的 `--target` 匹配:

51 

52* 要進行交叉編譯,請安裝不匹配的平台包,例如 `npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force`。

53* 在 Windows 上,二進制子路徑是 `claude.exe`,例如 `@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe`。

54 

55<h2 id="functions">

56 函數

57</h2>

58 

59<h3 id="query">

60 `query()`

61</h3>

24 62 

25與 Claude Code 互動的主要函數。創建一個異步生成器,在消息到達時流式傳輸消息。63與 Claude Code 互動的主要函數。創建一個異步生成器,在消息到達時流式傳輸消息。

26 64 


34}): Query;72}): Query;

35```73```

36 74 

37#### 參數75<h4 id="parameters">

76 參數

77</h4>

38 78 

39| 參數 | 類型 | 描述 |79| 參數 | 類型 | 描述 |

40| :-------- | :--------------------------------------------------------------- | :------------------------ |80| :-------- | :--------------------------------------------------------------- | :------------------------ |

41| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkusermessage)`>` | 輸入提示,可以是字符串或異步可迭代對象用於流式模式 |81| `prompt` | `string \| AsyncIterable<`[`SDKUserMessage`](#sdkusermessage)`>` | 輸入提示,可以是字符串或異步可迭代對象用於流式模式 |

42| `options` | [`Options`](#options) | 可選配置對象(見下面的 Options 類型) |82| `options` | [`Options`](#options) | 可選配置對象(見下面的 Options 類型) |

43 83 

44#### 返回值84<h4 id="returns">

85 返回值

86</h4>

45 87 

46返回一個 [`Query`](#query-object) 對象,它擴展了 `AsyncGenerator<`[`SDKMessage`](#sdkmessage)`, void>` 並具有額外的方法。88返回一個 [`Query`](#query-object) 對象,它擴展了 `AsyncGenerator<`[`SDKMessage`](#sdkmessage)`, void>` 並具有額外的方法。

47 89 

48### `startup()`90<h3 id="startup">

91 `startup()`

92</h3>

49 93 

50通過生成 CLI 子進程並在提示可用之前完成初始化握手來預熱 CLI 子進程。返回的 [`WarmQuery`](#warmquery) 句柄稍後接受提示並將其寫入已準備好的進程,因此第一個 `query()` 調用解析時無需支付子進程生成和初始化成本。94通過生成 CLI 子進程並在提示可用之前完成初始化握手來預熱 CLI 子進程。返回的 [`WarmQuery`](#warmquery) 句柄稍後接受提示並將其寫入已準備好的進程,因此第一個 `query()` 調用解析時無需支付子進程生成和初始化成本。

51 95 


56}): Promise<WarmQuery>;100}): Promise<WarmQuery>;

57```101```

58 102 

59#### 參數103<h4 id="parameters">

104 參數

105</h4>

60 106 

61| 參數 | 類型 | 描述 |107| 參數 | 類型 | 描述 |

62| :-------------------- | :-------------------- | :---------------------------------------------------------- |108| :-------------------- | :-------------------- | :---------------------------------------------------------- |

63| `options` | [`Options`](#options) | 可選配置對象。與 `query()` 的 `options` 參數相同 |109| `options` | [`Options`](#options) | 可選配置對象。與 `query()` 的 `options` 參數相同 |

64| `initializeTimeoutMs` | `number` | 等待子進程初始化的最大時間(毫秒)。默認為 `60000`。如果初始化未在時間內完成,promise 將以超時錯誤拒絕 |110| `initializeTimeoutMs` | `number` | 等待子進程初始化的最大時間(毫秒)。默認為 `60000`。如果初始化未在時間內完成,promise 將以超時錯誤拒絕 |

65 111 

66#### 返回值112<h4 id="returns">

113 返回值

114</h4>

67 115 

68返回一個 `Promise<`[`WarmQuery`](#warmquery)`>`,在子進程生成並完成其初始化握手後解析。116返回一個 `Promise<`[`WarmQuery`](#warmquery)`>`,在子進程生成並完成其初始化握手後解析。

69 117 

70#### 示例118<h4 id="example">

119 示例

120</h4>

71 121 

72早期調用 `startup()`,例如在應用程序啟動時,然後在提示準備好後在返回的句柄上調用 `.query()`。這將子進程生成和初始化移出關鍵路徑。122早期調用 `startup()`,例如在應用程序啟動時,然後在提示準備好後在返回的句柄上調用 `.query()`。這將子進程生成和初始化移出關鍵路徑。

73 123 


83}133}

84```134```

85 135 

86### `tool()`136<h3 id="tool">

137 `tool()`

138</h3>

87 139 

88為與 SDK MCP 服務器一起使用創建類型安全的 MCP 工具定義。140為與 SDK MCP 服務器一起使用創建類型安全的 MCP 工具定義。

89 141 


97): SdkMcpToolDefinition<Schema>;149): SdkMcpToolDefinition<Schema>;

98```150```

99 151 

100#### 參數152<h4 id="parameters">

153 參數

154</h4>

101 155 

102| 參數 | 類型 | 描述 |156| 參數 | 類型 | 描述 |

103| :------------ | :---------------------------------------------------------------- | :--------------------------------- |157| :------------ | :---------------------------------------------------------------- | :--------------------------------- |


107| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#calltoolresult)`>` | 執行工具邏輯的異步函數 |161| `handler` | `(args, extra) => Promise<`[`CallToolResult`](#calltoolresult)`>` | 執行工具邏輯的異步函數 |

108| `extras` | `{ annotations?: `[`ToolAnnotations`](#toolannotations)` }` | 可選的 MCP 工具註釋,為客戶端提供行為提示 |162| `extras` | `{ annotations?: `[`ToolAnnotations`](#toolannotations)` }` | 可選的 MCP 工具註釋,為客戶端提供行為提示 |

109 163 

110#### `ToolAnnotations`164<h4 id="toolannotations">

165 `ToolAnnotations`

166</h4>

111 167 

112從 `@modelcontextprotocol/sdk/types.js` 重新導出。所有字段都是可選提示;客戶端不應依賴它們進行安全決策。168從 `@modelcontextprotocol/sdk/types.js` 重新導出。所有字段都是可選提示;客戶端不應依賴它們進行安全決策。

113 169 


134);190);

135```191```

136 192 

137### `createSdkMcpServer()`193<h3 id="createsdkmcpserver">

194 `createSdkMcpServer()`

195</h3>

138 196 

139創建在與應用程序相同的進程中運行的 MCP 服務器實例。197創建在與應用程序相同的進程中運行的 MCP 服務器實例。

140 198 


146}): McpSdkServerConfigWithInstance;204}): McpSdkServerConfigWithInstance;

147```205```

148 206 

149#### 參數207<h4 id="parameters">

208 參數

209</h4>

150 210 

151| 參數 | 類型 | 描述 |211| 參數 | 類型 | 描述 |

152| :---------------- | :---------------------------- | :----------------------------- |212| :---------------- | :---------------------------- | :----------------------------- |


154| `options.version` | `string` | 可選版本字符串 |214| `options.version` | `string` | 可選版本字符串 |

155| `options.tools` | `Array<SdkMcpToolDefinition>` | 使用 [`tool()`](#tool) 創建的工具定義數組 |215| `options.tools` | `Array<SdkMcpToolDefinition>` | 使用 [`tool()`](#tool) 創建的工具定義數組 |

156 216 

157### `listSessions()`217<h3 id="listsessions">

218 `listSessions()`

219</h3>

158 220 

159發現並列出具有輕量級元數據的過去會話。按項目目錄篩選或列出所有項目中的會話。221發現並列出具有輕量級元數據的過去會話。按項目目錄篩選或列出所有項目中的會話。

160 222 


162function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;224function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

163```225```

164 226 

165#### 參數227<h4 id="parameters">

228 參數

229</h4>

166 230 

167| 參數 | 類型 | 默認值 | 描述 |231| 參數 | 類型 | 默認值 | 描述 |

168| :------------------------- | :-------- | :---------- | :---------------------------------------- |232| :------------------------- | :-------- | :---------- | :---------------------------------------- |


170| `options.limit` | `number` | `undefined` | 返回的最大會話數 |234| `options.limit` | `number` | `undefined` | 返回的最大會話數 |

171| `options.includeWorktrees` | `boolean` | `true` | 當 `dir` 在 git 存儲庫內時,包括來自所有 worktree 路徑的會話 |235| `options.includeWorktrees` | `boolean` | `true` | 當 `dir` 在 git 存儲庫內時,包括來自所有 worktree 路徑的會話 |

172 236 

173#### 返回類型:`SDKSessionInfo`237<h4 id="return-type-sdksessioninfo">

238 返回類型:`SDKSessionInfo`

239</h4>

174 240 

175| 屬性 | 類型 | 描述 |241| 屬性 | 類型 | 描述 |

176| :------------- | :-------------------- | :----------------------------------------- |242| :------------- | :-------------------- | :----------------------------------------- |


185| `tag` | `string \| undefined` | 用戶設置的會話標籤(見 [`tagSession()`](#tagsession)) |251| `tag` | `string \| undefined` | 用戶設置的會話標籤(見 [`tagSession()`](#tagsession)) |

186| `createdAt` | `number \| undefined` | 創建時間(自紀元以來的毫秒數),來自第一個條目的時間戳 |252| `createdAt` | `number \| undefined` | 創建時間(自紀元以來的毫秒數),來自第一個條目的時間戳 |

187 253 

188#### 示例254<h4 id="example">

255 示例

256</h4>

189 257 

190打印項目的 10 個最近會話。結果按 `lastModified` 降序排序,因此第一項是最新的。省略 `dir` 以搜索所有項目。258打印項目的 10 個最近會話。結果按 `lastModified` 降序排序,因此第一項是最新的。省略 `dir` 以搜索所有項目。

191 259 


199}267}

200```268```

201 269 

202### `getSessionMessages()`270<h3 id="getsessionmessages">

271 `getSessionMessages()`

272</h3>

203 273 

204從過去的會話記錄中讀取用戶和助手消息。274從過去的會話記錄中讀取用戶和助手消息。

205 275 


210): Promise<SessionMessage[]>;280): Promise<SessionMessage[]>;

211```281```

212 282 

213#### 參數283<h4 id="parameters">

284 參數

285</h4>

214 286 

215| 參數 | 類型 | 默認值 | 描述 |287| 參數 | 類型 | 默認值 | 描述 |

216| :--------------- | :------- | :---------- | :------------------------------ |288| :--------------- | :------- | :---------- | :------------------------------ |


219| `options.limit` | `number` | `undefined` | 返回的最大消息數 |291| `options.limit` | `number` | `undefined` | 返回的最大消息數 |

220| `options.offset` | `number` | `undefined` | 從開始跳過的消息數 |292| `options.offset` | `number` | `undefined` | 從開始跳過的消息數 |

221 293 

222#### 返回類型:`SessionMessage`294<h4 id="return-type-sessionmessage">

295 返回類型:`SessionMessage`

296</h4>

223 297 

224| 屬性 | 類型 | 描述 |298| 屬性 | 類型 | 描述 |

225| :------------------- | :---------------------- | :------------ |299| :------------------- | :---------------------- | :----------------------------------------------------------- |

226| `type` | `"user" \| "assistant"` | 消息角色 |300| `type` | `"user" \| "assistant"` | 消息角色 |

227| `uuid` | `string` | 唯一消息標識符 |301| `uuid` | `string` | 唯一消息標識符 |

228| `session_id` | `string` | 此消息所屬的會話 |302| `session_id` | `string` | 此消息所屬的會話 |

229| `message` | `unknown` | 來自記錄的原始消息有效負載 |303| `message` | `unknown` | 來自記錄的原始消息有效負載 |

230| `parent_tool_use_id` | `null` | 保留 |304| `parent_tool_use_id` | `string \| null` | 對於子代理消息,生成 `Agent` 工具調用的 `tool_use_id`。對於主會話消息和較舊的會話為 `null` |

231 305 

232#### 示例306<h4 id="example">

307 示例

308</h4>

233 309 

234```typescript theme={null}310```typescript theme={null}

235import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";311import { listSessions, getSessionMessages } from "@anthropic-ai/claude-agent-sdk";


248}324}

249```325```

250 326 

251### `getSessionInfo()`327<h3 id="getsessioninfo">

328 `getSessionInfo()`

329</h3>

252 330 

253按 ID 讀取單個會話的元數據,無需掃描完整項目目錄。331按 ID 讀取單個會話的元數據,無需掃描完整項目目錄。

254 332 


259): Promise<SDKSessionInfo | undefined>;337): Promise<SDKSessionInfo | undefined>;

260```338```

261 339 

262#### 參數340<h4 id="parameters">

341 參數

342</h4>

263 343 

264| 參數 | 類型 | 默認值 | 描述 |344| 參數 | 類型 | 默認值 | 描述 |

265| :------------ | :------- | :---------- | :------------------ |345| :------------ | :------- | :---------- | :------------------ |


268 348 

269返回 [`SDKSessionInfo`](#return-type-sdksessioninfo),如果找不到會話則返回 `undefined`。349返回 [`SDKSessionInfo`](#return-type-sdksessioninfo),如果找不到會話則返回 `undefined`。

270 350 

271### `renameSession()`351<h3 id="renamesession">

352 `renameSession()`

353</h3>

272 354 

273通過附加自定義標題條目來重命名會話。重複調用是安全的;最新的標題獲勝。355通過附加自定義標題條目來重命名會話。重複調用是安全的;最新的標題獲勝。

274 356 


280): Promise<void>;362): Promise<void>;

281```363```

282 364 

283#### 參數365<h4 id="parameters">

366 參數

367</h4>

284 368 

285| 參數 | 類型 | 默認值 | 描述 |369| 參數 | 類型 | 默認值 | 描述 |

286| :------------ | :------- | :---------- | :------------------ |370| :------------ | :------- | :---------- | :------------------ |


288| `title` | `string` | 必需 | 新標題。修剪空格後必須非空 |372| `title` | `string` | 必需 | 新標題。修剪空格後必須非空 |

289| `options.dir` | `string` | `undefined` | 項目目錄路徑。省略時,搜索所有項目目錄 |373| `options.dir` | `string` | `undefined` | 項目目錄路徑。省略時,搜索所有項目目錄 |

290 374 

291### `tagSession()`375<h3 id="tagsession">

376 `tagSession()`

377</h3>

292 378 

293標記會話。傳遞 `null` 以清除標籤。重複調用是安全的;最新的標籤獲勝。379標記會話。傳遞 `null` 以清除標籤。重複調用是安全的;最新的標籤獲勝。

294 380 


300): Promise<void>;386): Promise<void>;

301```387```

302 388 

303#### 參數389<h4 id="parameters">

390 參數

391</h4>

304 392 

305| 參數 | 類型 | 默認值 | 描述 |393| 參數 | 類型 | 默認值 | 描述 |

306| :------------ | :--------------- | :---------- | :------------------ |394| :------------ | :--------------- | :---------- | :------------------ |


308| `tag` | `string \| null` | 必需 | 標籤字符串,或 `null` 以清除 |396| `tag` | `string \| null` | 必需 | 標籤字符串,或 `null` 以清除 |

309| `options.dir` | `string` | `undefined` | 項目目錄路徑。省略時,搜索所有項目目錄 |397| `options.dir` | `string` | `undefined` | 項目目錄路徑。省略時,搜索所有項目目錄 |

310 398 

311### `resolveSettings()`399<h3 id="resolvesettings">

400 `resolveSettings()`

401</h3>

312 402 

313使用與 CLI 相同的合併引擎為給定目錄解析有效的 Claude Code 設置,無需生成 Claude CLI。在調用 `query()` 之前使用它來檢查 `query()` 調用將看到什麼配置。403使用與 CLI 相同的合併引擎為給定目錄解析有效的 Claude Code 設置,無需生成 Claude CLI。在調用 `query()` 之前使用它來檢查 `query()` 調用將看到什麼配置。

314 404 


322): Promise<ResolvedSettings>;412): Promise<ResolvedSettings>;

323```413```

324 414 

325#### 參數415<h4 id="parameters">

416 參數

417</h4>

326 418 

327`resolveSettings()` 接受單個選項對象。所有字段都是可選的。419`resolveSettings()` 接受單個選項對象。所有字段都是可選的。

328 420 

329| 參數 | 類型 | 默認值 | 描述 |421| 參數 | 類型 | 默認值 | 描述 |

330| :------------------------------ | :------------------------------------ | :-------------- | :------------------------------------------------------ |422| :------------------------------ | :------------------------------------ | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

331| `options.cwd` | `string` | `process.cwd()` | 用於解析項目和本地設置的相對目錄 |423| `options.cwd` | `string` | `process.cwd()` | 用於解析項目和本地設置的相對目錄 |

332| `options.settingSources` | [`SettingSource`](#settingsource)`[]` | 所有源 | 要加載的文件系統源。傳遞 `[]` 以跳過用戶、項目和本地設置。託管策略設置在所有情況下都會加載 |424| `options.settingSources` | [`SettingSource`](#settingsource)`[]` | 所有源 | 要加載的文件系統源。傳遞 `[]` 以跳過用戶、項目和本地設置。託管策略設置在所有情況下都會加載 |

333| `options.managedSettings` | `Settings` | `undefined` | 在託管策略優先級別合併的限制性策略層設置。非限制性鍵(如 `model`)會被靜默丟棄 |425| `options.managedSettings` | `Settings` | `undefined` | 由嵌入主機提供的限制性策略層設置當存在管理員部署的託管層時被丟棄;當 [`parentSettingsBehavior`](/zh-TW/settings#available-settings) 為 `"merge"` 時在該層下合併。非限制性鍵(如 `model`)會被靜默丟棄,以便此選項可以加強託管策略但不能放寬它 |

334| `options.serverManagedSettings` | `Settings` | `undefined` | 來自 `/api/claude_code/settings` 的服務器託管設置有效負載。非限制性鍵無過濾地通過 |426| `options.serverManagedSettings` | `Settings` | `undefined` | 來自 `/api/claude_code/settings` 的服務器託管設置有效負載。非限制性鍵無過濾地通過 |

335 427 

336#### 返回類型:`ResolvedSettings`428<h4 id="return-type-resolvedsettings">

429 返回類型:`ResolvedSettings`

430</h4>

337 431 

338`resolveSettings()` 返回一個對象,描述合併的設置和為每個鍵提供的源。432`resolveSettings()` 返回一個對象,描述合併的設置和為每個鍵提供的源。

339 433 


343| `provenance` | `Partial<Record<keyof Settings, ProvenanceEntry>>` | 對於 `effective` 中的每個頂級鍵,哪個源提供了該值 |437| `provenance` | `Partial<Record<keyof Settings, ProvenanceEntry>>` | 對於 `effective` 中的每個頂級鍵,哪個源提供了該值 |

344| `sources` | `Array<{ source, settings, path?, policyOrigin? }>` | 每個源的原始設置,按從最低到最高優先級排序 |438| `sources` | `Array<{ source, settings, path?, policyOrigin? }>` | 每個源的原始設置,按從最低到最高優先級排序 |

345 439 

346#### 示例440<h4 id="example">

441 示例

442</h4>

347 443 

348下面的示例為項目目錄解析設置並打印控制清理期的源。444下面的示例為項目目錄解析設置並打印控制清理期的源。

349 445 


359console.log(`Set by: ${provenance.cleanupPeriodDays?.source}`);455console.log(`Set by: ${provenance.cleanupPeriodDays?.source}`);

360```456```

361 457 

362## 類型458<h2 id="types">

459 類型

460</h2>

363 461 

364### `Options`462<h3 id="options">

463 `Options`

464</h3>

365 465 

366`query()` 函數的配置對象。466`query()` 函數的配置對象。

367 467 

368| 屬性 | 類型 | 默認值 | 描述 |468| 屬性 | 類型 | 默認值 | 描述 |

369| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |469| :-------------------------------- | :------------------------------------------------------------------------------------------------------- | :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

370| `abortController` | `AbortController` | `new AbortController()` | 用於取消操作的控制器 |470| `abortController` | `AbortController` | `new AbortController()` | 用於取消操作的控制器 |

371| `additionalDirectories` | `string[]` | `[]` | Claude 可以訪問的其他目錄 |471| `additionalDirectories` | `string[]` | `[]` | Claude 可以訪問的其他目錄 |

372| `agent` | `string` | `undefined` | 主線程的代理名稱。代理必須在 `agents` 選項或設置中定義 |472| `agent` | `string` | `undefined` | 主線程的代理名稱。代理必須在 `agents` 選項或設置中定義 |

373| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | 以編程方式定義子代理 |473| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | 以編程方式定義子代理 |

474| `agentProgressSummaries` | `boolean` | `false` | 當為 `true` 時,為子代理生成單行進度摘要,並通過 `summary` 字段在 [`task_progress`](#sdktaskprogressmessage) 事件上轉發它們。適用於前景和背景子代理 |

374| `allowDangerouslySkipPermissions` | `boolean` | `false` | 啟用繞過權限。使用 `permissionMode: 'bypassPermissions'` 時需要 |475| `allowDangerouslySkipPermissions` | `boolean` | `false` | 啟用繞過權限。使用 `permissionMode: 'bypassPermissions'` 時需要 |

375| `allowedTools` | `string[]` | `[]` | 無需提示即可自動批准的工具。這不會將 Claude 限制為僅這些工具;未列出的工具會進入 `permissionMode` 和 `canUseTool`。使用 `disallowedTools` 來阻止工具。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |476| `allowedTools` | `string[]` | `[]` | 無需提示即可自動批准的工具。這不會將 Claude 限制為僅這些工具;未列出的工具會進入 `permissionMode` 和 `canUseTool`。使用 `disallowedTools` 來阻止工具。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

376| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | 啟用測試功能 |477| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | 啟用測試功能 |


379| `cwd` | `string` | `process.cwd()` | 當前工作目錄 |480| `cwd` | `string` | `process.cwd()` | 當前工作目錄 |

380| `debug` | `boolean` | `false` | 為 Claude Code 進程啟用調試模式 |481| `debug` | `boolean` | `false` | 為 Claude Code 進程啟用調試模式 |

381| `debugFile` | `string` | `undefined` | 將調試日誌寫入特定文件路徑。隱式啟用調試模式 |482| `debugFile` | `string` | `undefined` | 將調試日誌寫入特定文件路徑。隱式啟用調試模式 |

382| `disallowedTools` | `string[]` | `[]` | 始終拒絕的工具拒絕規則首先檢查並覆蓋 `allowedTools` `permissionMode`包括 `bypassPermissions`|483| `disallowedTools` | `string[]` | `[]` | 要拒絕的工具裸名稱如 `"Bash"` 會從 Claude 的上下文中移除該工具。作用域規則如 `"Bash(rm *)"` 會保留該工具可用,並在每個權限模式中拒絕匹配的調用,包括 `bypassPermissions`。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

383| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | 控制 Claude 在其響應中投入多少努力。與自適應思考一起工作以指導思考深度 |484| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | 控制 Claude 在其響應中投入多少努力。與自適應思考一起工作以指導思考深度 |

384| `enableFileCheckpointing` | `boolean` | `false` | 啟用文件更改跟蹤以進行回滾。見 [文件檢查點](/zh-TW/agent-sdk/file-checkpointing) |485| `enableFileCheckpointing` | `boolean` | `false` | 啟用文件更改跟蹤以進行回滾。見 [文件 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |

385| `env` | `Record<string, string \| undefined>` | `process.env` | 環境變量。 [環境變量](/zh-TW/env-vars) 了解底層 CLI 讀取的變量,以及 [處理緩慢或停滯的 API 響應](#handle-slow-or-stalled-api-responses) 了解與超時相關的變量。設置 `CLAUDE_AGENT_SDK_CLIENT_APP` 以在 User-Agent 標頭中標識您的應用程序 |486| `env` | `Record<string, string \| undefined>` | `process.env` | 環境變量。設置此項時,這會替換子進程環境而不是與 `process.env` 合併,因此傳遞 `{ ...process.env, YOUR_VAR: 'value' }` 以保留繼承的變量如 `PATH`。見 [處理緩慢或停滯的 API 響應](#handle-slow-or-stalled-api-responses) 了解此模式的示例,以及 [環境變量](/zh-TW/env-vars) 了解底層 CLI 讀取的變量。設置 `CLAUDE_AGENT_SDK_CLIENT_APP` 以在 User-Agent 標頭中標識您的應用程序 |

386| `executable` | `'bun' \| 'deno' \| 'node'` | 自動檢測 | 要使用的 JavaScript 運行時 |487| `executable` | `'bun' \| 'deno' \| 'node'` | 自動檢測 | 要使用的 JavaScript 運行時 |

387| `executableArgs` | `string[]` | `[]` | 傳遞給可執行文件的參數 |488| `executableArgs` | `string[]` | `[]` | 傳遞給可執行文件的參數 |

388| `extraArgs` | `Record<string, string \| null>` | `{}` | 其他參數 |489| `extraArgs` | `Record<string, string \| null>` | `{}` | 其他參數 |

389| `fallbackModel` | `string` | `undefined` | 主模型失敗時使用的模型 |490| `fallbackModel` | `string` | `undefined` | 主模型失敗時使用的模型 |

390| `forkSession` | `boolean` | `false` | 使用 `resume` 恢復時,分叉到新會話 ID 而不是繼續原始會話 |491| `forkSession` | `boolean` | `false` | 使用 `resume` 恢復時,分叉到新會話 ID 而不是繼續原始會話 |

492| `forwardSubagentText` | `boolean` | `false` | 轉發子代理文本和思考塊作為助手和用戶消息,並設置 `parent_tool_use_id`,以便消費者可以呈現嵌套記錄。默認情況下,只有來自子代理的 `tool_use` 和 `tool_result` 塊被發出 |

391| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | 事件的 hooks 回調 |493| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | 事件的 hooks 回調 |

392| `includeHookEvents` | `boolean` | `false` | 將 hooks 生命週期事件包括在消息流中,作為 [`SDKHookStartedMessage`](#sdkhookstartedmessage)、[`SDKHookProgressMessage`](#sdkhookprogressmessage) 和 [`SDKHookResponseMessage`](#sdkhookresponsemessage) |494| `includeHookEvents` | `boolean` | `false` | 將 hooks 生命週期事件包括在消息流中,作為 [`SDKHookStartedMessage`](#sdkhookstartedmessage)、[`SDKHookProgressMessage`](#sdkhookprogressmessage) 和 [`SDKHookResponseMessage`](#sdkhookresponsemessage) |

393| `includePartialMessages` | `boolean` | `false` | 包括部分消息事件 |495| `includePartialMessages` | `boolean` | `false` | 包括部分消息事件 |

496| `loadTimeoutMs` | `number` | `60000` | *Alpha。* 在恢復物化期間,每個 `sessionStore.load()` 和 `sessionStore.listSubkeys()` 調用的超時時間(以毫秒為單位)。如果適配器未在此窗口內解決,查詢將失敗而不是掛起。未設置 `sessionStore` 時忽略 |

497| `managedSettings` | `Settings` | `undefined` | 由生成父進程提供的策略層設置。當機器上已存在 IT 控制的託管設置層時被丟棄,除非該管理員選擇使用 `parentSettingsBehavior: 'merge'`。無論如何都被過濾為僅限制性鍵 |

394| `maxBudgetUsd` | `number` | `undefined` | 當客戶端成本估計達到此 USD 值時停止查詢。與 `total_cost_usd` 的相同估計進行比較;見 [跟蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 了解準確性注意事項 |498| `maxBudgetUsd` | `number` | `undefined` | 當客戶端成本估計達到此 USD 值時停止查詢。與 `total_cost_usd` 的相同估計進行比較;見 [跟蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 了解準確性注意事項 |

395| `maxThinkingTokens` | `number` | `undefined` | *已棄用:* 改用 `thinking`。思考過程的最大令牌數 |499| `maxThinkingTokens` | `number` | `undefined` | *已棄用:* 改用 `thinking`。思考過程的最大令牌數 |

396| `maxTurns` | `number` | `undefined` | 最大代理轉數(工具使用往返) |500| `maxTurns` | `number` | `undefined` | 最大代理轉數(工具使用往返) |

397| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 服務器配置 |501| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 服務器配置 |

398| `model` | `string` | CLI 默認值 | 要使用的 Claude 模型 |502| `model` | `string` | CLI 默認值 | 要使用的 Claude 模型 |

503| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | 用於處理 MCP 引出請求的回調。當 MCP 服務器請求用戶輸入且沒有 hooks 首先處理它時調用。未提供時,未處理的引出請求會自動被拒絕 |

399| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 為代理結果定義輸出格式。見 [結構化輸出](/zh-TW/agent-sdk/structured-outputs) 了解詳情 |504| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 為代理結果定義輸出格式。見 [結構化輸出](/zh-TW/agent-sdk/structured-outputs) 了解詳情 |

400| `outputStyle` | `string` | `undefined` | 要為會話激活的 [輸出樣式](/zh-TW/output-styles) 的名稱。該樣式必須存在於已加載的 `settingSources` 位置,例如 `.claude/output-styles/`。見 [激活輸出樣式](/zh-TW/agent-sdk/modifying-system-prompts#activate-an-output-style) |505| `outputStyle` | `string` | `undefined` | 不是 `Options` 字段。改為在內聯 [`settings`](/zh-TW/settings) 對象或設置文件中設置 `outputStyle`。見 [激活輸出樣式](/zh-TW/agent-sdk/modifying-system-prompts#activate-an-output-style) |

401| `pathToClaudeCodeExecutable` | `string` | 從捆綁的原生二進制文件自動解析 | Claude Code 可執行文件的路徑。僅在安裝期間跳過可選依賴項或您的平台不在支持的集合中時需要 |506| `pathToClaudeCodeExecutable` | `string` | 從捆綁的原生二進制文件自動解析 | Claude Code 可執行文件的路徑。僅在安裝期間跳過可選依賴項或您的平台不在支持的集合中時需要 |

402| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | 會話的權限模式 |507| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | 會話的權限模式 |

403| `permissionPromptToolName` | `string` | `undefined` | 權限提示的 MCP 工具名稱 |508| `permissionPromptToolName` | `string` | `undefined` | 權限提示的 MCP 工具名稱 |

404| `persistSession` | `boolean` | `true` | 當為 `false` 時,禁用會話持久化到磁盤。會話之後無法恢復 |509| `persistSession` | `boolean` | `true` | 當為 `false` 時,禁用會話持久化到磁盤。會話之後無法恢復 |

510| `planModeInstructions` | `string` | `undefined` | Plan Mode 的自定義工作流指令。當 `permissionMode` 為 `'plan'` 時,此字符串替換默認 Plan Mode 工作流正文。CLI 仍然使用只讀強制前言和 ExitPlanMode 協議頁腳包裝它 |

405| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | 從本地路徑加載自定義 plugins。見 [Plugins](/zh-TW/agent-sdk/plugins) 了解詳情 |511| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | 從本地路徑加載自定義 plugins。見 [Plugins](/zh-TW/agent-sdk/plugins) 了解詳情 |

406| `promptSuggestions` | `boolean` | `false` | 啟用提示建議。在每個轉數後發出 `prompt_suggestion` 消息,帶有預測的下一個用戶提示 |512| `promptSuggestions` | `boolean` | `false` | 啟用提示建議。在每個轉數後發出 `prompt_suggestion` 消息,帶有預測的下一個用戶提示 |

407| `resume` | `string` | `undefined` | 要恢復的會話 ID |513| `resume` | `string` | `undefined` | 要恢復的會話 ID |

408| `resumeSessionAt` | `string` | `undefined` | 在特定消息 UUID 處恢復會話 |514| `resumeSessionAt` | `string` | `undefined` | 在特定消息 UUID 處恢復會話 |

409| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | 以編程方式配置沙箱行為。見 [沙箱設置](#sandboxsettings) 了解詳情 |515| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | 以編程方式配置 sandbox 行為。見 [Sandbox 設置](#sandboxsettings) 了解詳情 |

410| `sessionId` | `string` | 自動生成 | 使用特定 UUID 作為會話,而不是自動生成一個 |516| `sessionId` | `string` | 自動生成 | 使用特定 UUID 作為會話,而不是自動生成一個 |

411| `sessionStore` | [`SessionStore`](/zh-TW/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | 將會話記錄鏡像到外部後端,以便任何主機都可以恢復它們。見 [將會話持久化到外部存儲](/zh-TW/agent-sdk/session-storage) |517| `sessionStore` | [`SessionStore`](/zh-TW/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | 將會話記錄鏡像到外部後端,以便任何主機都可以恢復它們。見 [將會話持久化到外部存儲](/zh-TW/agent-sdk/session-storage) |

518| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha。* `sessionStore` 的刷新模式。未設置 `sessionStore` 時忽略 |

412| `settings` | `string \| Settings` | `undefined` | 內聯 [設置](/zh-TW/settings) 對象或設置文件的路徑。填充 [優先級順序](/zh-TW/settings#settings-precedence) 中的標誌設置層。使用 [`applyFlagSettings()`](#applyflagsettings) 在運行時更改 |519| `settings` | `string \| Settings` | `undefined` | 內聯 [設置](/zh-TW/settings) 對象或設置文件的路徑。填充 [優先級順序](/zh-TW/settings#settings-precedence) 中的標誌設置層。使用 [`applyFlagSettings()`](#applyflagsettings) 在運行時更改 |

413| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI 默認值(所有源) | 控制加載哪些文件系統設置。傳遞 `[]` 以禁用用戶、項目和本地設置。無論如何都會加載託管策略設置。見 [使用 Claude Code 功能](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) |520| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI 默認值(所有源) | 控制加載哪些文件系統設置。傳遞 `[]` 以禁用用戶、項目和本地設置。無論如何都會加載託管策略設置。見 [使用 Claude Code 功能](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

414| `skills` | `string[] \| 'all'` | `undefined` | 會話可用的 skills。傳遞 `'all'` 以啟用每個發現的 skill,或傳遞 skill 名稱列表。設置後,SDK 會自動啟用 Skill 工具,無需在 `allowedTools` 中列出。見 [Skills](/zh-TW/agent-sdk/skills) |521| `skills` | `string[] \| 'all'` | `undefined` | 會話可用的 skills。傳遞 `'all'` 以啟用每個發現的 skill,或傳遞 skill 名稱列表。設置後,SDK 會自動將 Skill 工具添加到 `allowedTools`。如果您也傳遞 `tools`,請在該列表中包含 `'Skill'`。見 [Skills](/zh-TW/agent-sdk/skills) |

415| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | 用於生成 Claude Code 進程的自定義函數。用於在 VM、容器或遠程環境中運行 Claude Code |522| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | 用於生成 Claude Code 進程的自定義函數。用於在 VM、容器或遠程環境中運行 Claude Code |

416| `stderr` | `(data: string) => void` | `undefined` | stderr 輸出的回調 |523| `stderr` | `(data: string) => void` | `undefined` | stderr 輸出的回調 |

417| `strictMcpConfig` | `boolean` | `false` | 僅使用在 `mcpServers` 中傳遞的服務器,並忽略項目 `.mcp.json`、用戶設置和 plugin 提供的 MCP 服務器 |524| `strictMcpConfig` | `boolean` | `false` | 僅使用在 `mcpServers` 中傳遞的服務器,並忽略項目 `.mcp.json`、用戶設置、plugin 提供的 MCP 服務器和 [claude.ai connectors](/zh-TW/mcp#use-mcp-servers-from-claude-ai) |

418| `systemPrompt` | `string \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined`(最小提示) | 系統提示配置。傳遞字符串以獲得自定義提示,或 `{ type: 'preset', preset: 'claude_code' }` 以使用 Claude Code 的系統提示。使用預設對象形式時,添加 `append` 以使用其他指令擴展它,並設置 `excludeDynamicSections: true` 以將每個會話上下文移到第一個用戶消息中以獲得 [跨機器更好的提示緩存重用](/zh-TW/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |525| `systemPrompt` | `string \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean }` | `undefined`(最小提示) | 系統提示配置。傳遞字符串以獲得自定義提示,或 `{ type: 'preset', preset: 'claude_code' }` 以使用 Claude Code 的系統提示。使用預設對象形式時,添加 `append` 以使用其他指令擴展它,並設置 `excludeDynamicSections: true` 以將每個會話上下文移到第一個用戶消息中以獲得 [跨機器更好的提示 cache 重用](/zh-TW/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

526| `taskBudget` | `{ total: number }` | `undefined` | *Alpha。* API 端任務預算(以令牌為單位)。設置後,模型會被告知其剩餘令牌預算,以便它可以調整工具使用速度並在達到限制前完成 |

419| `thinking` | [`ThinkingConfig`](#thinkingconfig) | 支持的模型為 `{ type: 'adaptive' }` | 控制 Claude 的思考/推理行為。見 [`ThinkingConfig`](#thinkingconfig) 了解選項 |527| `thinking` | [`ThinkingConfig`](#thinkingconfig) | 支持的模型為 `{ type: 'adaptive' }` | 控制 Claude 的思考/推理行為。見 [`ThinkingConfig`](#thinkingconfig) 了解選項 |

528| `title` | `string` | `undefined` | 會話的顯示標題。通過 `resume` 或 `continue` 恢復時,恢復的會話的持久化標題優先;使用 [`renameSession()`](#renamesession) 重新標題現有會話 |

529| `toolAliases` | `Record<string, string>` | `undefined` | 將內置工具名稱映射到 MCP 工具名稱,以便 Claude 調用您的 MCP 實現而不是內置工具。例如,`{ Bash: 'mcp__workspace__bash' }` |

420| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | 內置工具行為的配置。見 [`ToolConfig`](#toolconfig) 了解詳情 |530| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | 內置工具行為的配置。見 [`ToolConfig`](#toolconfig) 了解詳情 |

421| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | 工具配置。傳遞工具名稱數組或使用預設以獲得 Claude Code 的默認工具 |531| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | 工具配置。傳遞工具名稱數組或使用預設以獲得 Claude Code 的默認工具 |

422 532 

423#### 處理緩慢或停滯的 API 響應533<h4 id="handle-slow-or-stalled-api-responses">

534 處理緩慢或停滯的 API 響應

535</h4>

424 536 

425CLI 子進程讀取多個環境變量,這些變量控制 API 超時和停滯檢測。通過 `env` 選項傳遞它們:537CLI 子進程讀取多個環境變量,這些變量控制 API 超時和停滯檢測。通過 `env` 選項傳遞它們:

426 538 


443* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:使用 `run_in_background` 啟動的子代理的停滯監視程序。默認 `600000`。在每個流事件上重置;在停滯時中止子代理,將任務標記為失敗,並將錯誤與任何部分結果一起呈現給父代理。不適用於同步子代理。555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:使用 `run_in_background` 啟動的子代理的停滯監視程序。默認 `600000`。在每個流事件上重置;在停滯時中止子代理,將任務標記為失敗,並將錯誤與任何部分結果一起呈現給父代理。不適用於同步子代理。

444* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` 與 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`:當標頭已到達但響應正文停止流式傳輸時中止請求。默認關閉。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 默認為 `300000` 並被限制為該最小值。中止的請求通過正常重試路徑進行。556* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` 與 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`:當標頭已到達但響應正文停止流式傳輸時中止請求。默認關閉。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 默認為 `300000` 並被限制為該最小值。中止的請求通過正常重試路徑進行。

445 557 

446### `Query` 對象558<h3 id="query-object">

559 `Query` 對象

560</h3>

447 561 

448由 `query()` 函數返回的介面。562由 `query()` 函數返回的介面。

449 563 


473}587}

474```588```

475 589 

476#### 方法590<h4 id="methods">

591 方法

592</h4>

477 593 

478| 方法 | 描述 |594| 方法 | 描述 |

479| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------- |595| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

480| `interrupt()` | 中斷查詢(僅在流式輸入模式下可用) |596| `interrupt()` | 中斷查詢(僅在流式輸入模式下可用) |

481| `rewindFiles(userMessageId, options?)` | 將文件恢復到指定用戶消息時的狀態。傳遞 `{ dryRun: true }` 以預覽更改。需要 `enableFileCheckpointing: true`。見 [文件檢查點](/zh-TW/agent-sdk/file-checkpointing) |597| `rewindFiles(userMessageId, options?)` | 將文件恢復到指定用戶消息時的狀態。傳遞 `{ dryRun: true }` 以預覽更改。需要 `enableFileCheckpointing: true`。見 [文件 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |

482| `setPermissionMode()` | 更改權限模式(僅在流式輸入模式下可用) |598| `setPermissionMode()` | 更改權限模式(僅在流式輸入模式下可用) |

483| `setModel()` | 更改模型(僅在流式輸入模式下可用) |599| `setModel()` | 更改模型(僅在流式輸入模式下可用) |

484| `setMaxThinkingTokens()` | *已棄用:* 改用 `thinking` 選項。更改最大思考令牌 |600| `setMaxThinkingTokens()` | *已棄用:* 改用 `thinking` 選項。更改最大思考令牌 |


496| `stopTask(taskId)` | 按 ID 停止運行的後台任務 |612| `stopTask(taskId)` | 按 ID 停止運行的後台任務 |

497| `close()` | 關閉查詢並終止底層進程。強制結束查詢並清理所有資源 |613| `close()` | 關閉查詢並終止底層進程。強制結束查詢並清理所有資源 |

498 614 

499#### `applyFlagSettings()`615<h4 id="applyflagsettings">

616 `applyFlagSettings()`

617</h4>

500 618 

501在運行會話上更改任何 [設置](/zh-TW/settings),無需重新啟動查詢。當沒有專用設置器的設置需要在會話中期更改時使用它,例如在代理讀取不受信任的輸入後收緊 `permissions`。`setModel()` 和 `setPermissionMode()` 是這兩個鍵的專用設置器;`applyFlagSettings()` 是接受任何設置鍵子集的通用形式,在此處傳遞 `model` 的行為與 `setModel()` 相同。619在運行會話上更改任何 [設置](/zh-TW/settings),無需重新啟動查詢。當沒有專用設置器的設置需要在會話中期更改時使用它,例如在代理讀取不受信任的輸入後收緊 `permissions`。`setModel()` 和 `setPermissionMode()` 是這兩個鍵的專用設置器;`applyFlagSettings()` 是接受任何設置鍵子集的通用形式,在此處傳遞 `model` 的行為與 `setModel()` 相同。

502 620 

621只有某些鍵在會話中期生效:

622 

623* **在下一個轉數上應用**:`model`、`effortLevel`、`ultracode`、`permissions`、`hooks`、`skillOverrides`、`fastMode`、`awaySummaryEnabled`、`agent`。切換 `agent` 也會在下一個轉數上應用該代理的模型覆蓋、hooks 和系統提示。

624* **在會話中期無效**:系統提示選項。這些在啟動時解決一次,因此運行會話保持原始值,即使調用成功。要更改它們,請啟動新會話。

625 

503這些值被寫入標誌設置層,這是內聯 `query()` 的 `settings` 選項在啟動時填充的同一層。標誌設置位於 [設置優先級順序](/zh-TW/settings#settings-precedence) 的頂部附近:它們覆蓋用戶、項目和本地設置,只有託管策略設置可以覆蓋它們。這是 [優先級部分](#settings-precedence) 稱為編程選項的同一層。626這些值被寫入標誌設置層,這是內聯 `query()` 的 `settings` 選項在啟動時填充的同一層。標誌設置位於 [設置優先級順序](/zh-TW/settings#settings-precedence) 的頂部附近:它們覆蓋用戶、項目和本地設置,只有託管策略設置可以覆蓋它們。這是 [優先級部分](#settings-precedence) 稱為編程選項的同一層。

504 627 

505連續調用淺合併頂級鍵。第二次調用 `{ permissions: {...} }` 會替換先前調用中的整個 `permissions` 對象,而不是深度合併到其中。要從標誌層清除鍵並回退到較低優先級源,請為該鍵傳遞 `null`。傳遞 `undefined` 沒有效果,因為 JSON 序列化會將其刪除。628連續調用淺合併頂級鍵。第二次調用 `{ permissions: {...} }` 會替換先前調用中的整個 `permissions` 對象,而不是深度合併到其中。要從標誌層清除鍵並回退到較低優先級源,請為該鍵傳遞 `null`。傳遞 `undefined` 沒有效果,因為 JSON 序列化會將其刪除。


522 `applyFlagSettings()` 僅適用於 TypeScript。Python SDK 不公開等效方法。645 `applyFlagSettings()` 僅適用於 TypeScript。Python SDK 不公開等效方法。

523</Note>646</Note>

524 647 

525### `WarmQuery`648<h3 id="warmquery">

649 `WarmQuery`

650</h3>

526 651 

527由 [`startup()`](#startup) 返回的句柄。子進程已生成並初始化,因此在此句柄上調用 `query()` 會直接將提示寫入準備好的進程,無需啟動延遲。652由 [`startup()`](#startup) 返回的句柄。子進程已生成並初始化,因此在此句柄上調用 `query()` 會直接將提示寫入準備好的進程,無需啟動延遲。

528 653 


533}658}

534```659```

535 660 

536#### 方法661<h4 id="methods">

662 方法

663</h4>

537 664 

538| 方法 | 描述 |665| 方法 | 描述 |

539| :-------------- | :------------------------------------------------------------ |666| :-------------- | :------------------------------------------------------------ |


542 669 

543`WarmQuery` 實現 `AsyncDisposable`,因此可以與 `await using` 一起使用以進行自動清理。670`WarmQuery` 實現 `AsyncDisposable`,因此可以與 `await using` 一起使用以進行自動清理。

544 671 

545### `SDKControlInitializeResponse`672<h3 id="sdkcontrolinitializeresponse">

673 `SDKControlInitializeResponse`

674</h3>

546 675 

547`initializationResult()` 的返回類型。包含會話初始化數據。676`initializationResult()` 的返回類型。包含會話初始化數據。

548 677 


558};687};

559```688```

560 689 

561### `AgentDefinition`690當客戶端向已運行的會話發送 `initialize` 時,控制響應包裝器也會帶有可選的 `pending_permission_requests` 數組。該字段位於響應包裝器本身上,而不是上面的 `SDKControlInitializeResponse` 有效負載中。每個條目都是一個完整的 `control_request` 消息,具有與會話在運行時為權限請求流式傳輸的相同 `{ type: "control_request", request_id, request }` 形狀。

691 

692這些是在客戶端連接之前發出的請求,仍在等待回复,因此讀取此數組以立即在表面中顯示進行中的權限提示;它們不會被重新發送。

693 

694<h3 id="agentdefinition">

695 `AgentDefinition`

696</h3>

562 697 

563以編程方式定義的子代理的配置。698以編程方式定義的子代理的配置。

564 699 


598| `permissionMode` | 否 | 此代理內工具執行的權限模式。見 [`PermissionMode`](#permissionmode) |733| `permissionMode` | 否 | 此代理內工具執行的權限模式。見 [`PermissionMode`](#permissionmode) |

599| `criticalSystemReminder_EXPERIMENTAL` | 否 | 實驗性:添加到系統提示的關鍵提醒 |734| `criticalSystemReminder_EXPERIMENTAL` | 否 | 實驗性:添加到系統提示的關鍵提醒 |

600 735 

601### `AgentMcpServerSpec`736<h3 id="agentmcpserverspec">

737 `AgentMcpServerSpec`

738</h3>

602 739 

603指定子代理可用的 MCP 服務器。可以是服務器名稱(字符串,引用父代理 `mcpServers` 配置中的服務器)或內聯服務器配置記錄,將服務器名稱映射到配置。740指定子代理可用的 MCP 服務器。可以是服務器名稱(字符串,引用父代理 `mcpServers` 配置中的服務器)或內聯服務器配置記錄,將服務器名稱映射到配置。

604 741 


608 745 

609其中 `McpServerConfigForProcessTransport` 是 `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig`。746其中 `McpServerConfigForProcessTransport` 是 `McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig`。

610 747 

611### `SettingSource`748<h3 id="settingsource">

749 `SettingSource`

750</h3>

612 751 

613控制 SDK 從哪些基於文件系統的配置源加載設置。752控制 SDK 從哪些基於文件系統的配置源加載設置。

614 753 


622| `'project'` | 共享項目設置(版本控制) | `.claude/settings.json` |761| `'project'` | 共享項目設置(版本控制) | `.claude/settings.json` |

623| `'local'` | 本地項目設置(gitignored) | `.claude/settings.local.json` |762| `'local'` | 本地項目設置(gitignored) | `.claude/settings.local.json` |

624 763 

625#### 默認行為764<h4 id="default-behavior">

765 默認行為

766</h4>

626 767 

627當 `settingSources` 被省略或 `undefined` 時,`query()` 加載與 Claude Code CLI 相同的文件系統設置:用戶、項目和本地。託管策略設置在所有情況下都會加載。見 [settingSources 不控制什麼](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 了解無論此選項如何都會讀取的輸入,以及如何禁用它們。768當 `settingSources` 被省略或 `undefined` 時,`query()` 加載與 Claude Code CLI 相同的文件系統設置:用戶、項目和本地。託管策略設置在所有情況下都會加載。見 [settingSources 不控制什麼](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 了解無論此選項如何都會讀取的輸入,以及如何禁用它們。

628 769 

629#### 為什麼使用 settingSources770<h4 id="why-use-settingsources">

771 為什麼使用 settingSources

772</h4>

630 773 

631**禁用文件系統設置:**774**禁用文件系統設置:**

632 775 


711});854});

712```855```

713 856 

714#### 設置優先級857<h4 id="settings-precedence">

858 設置優先級

859</h4>

715 860 

716加載多個源時,設置按此優先級(最高到最低)合併:861加載多個源時,設置按此優先級(最高到最低)合併:

717 862 


721 866 

722編程選項(如 `agents`、`allowedTools` 和 `settings`)覆蓋用戶、項目和本地文件系統設置。託管策略設置優先於編程選項。867編程選項(如 `agents`、`allowedTools` 和 `settings`)覆蓋用戶、項目和本地文件系統設置。託管策略設置優先於編程選項。

723 868 

724### `PermissionMode`869<h3 id="permissionmode">

870 `PermissionMode`

871</h3>

725 872 

726```typescript theme={null}873```typescript theme={null}

727type PermissionMode =874type PermissionMode =

728 | "default" // 標準權限行為875 | "default" // 標準權限行為

729 | "acceptEdits" // 自動接受文件編輯876 | "acceptEdits" // 自動接受文件編輯

730 | "bypassPermissions" // 繞過所有權限檢查877 | "bypassPermissions" // 繞過所有權限檢查

731 | "plan" // 規劃模式 - 僅讀取工具878 | "plan" // Plan Mode - 僅讀取工具

732 | "dontAsk" // 不提示權限,如果未預批准則拒絕879 | "dontAsk" // 不提示權限,如果未預批准則拒絕

733 | "auto"; // 使用模型分類器批准或拒絕每個工具調用880 | "auto"; // 使用模型分類器批准或拒絕每個工具調用

734```881```

735 882 

736### `CanUseTool`883<h3 id="canusetool">

884 `CanUseTool`

885</h3>

737 886 

738用於控制工具使用的自定義權限函數類型。887用於控制工具使用的自定義權限函數類型。

739 888 


761| `toolUseID` | `string` | 此特定工具調用在助手消息中的唯一標識符 |910| `toolUseID` | `string` | 此特定工具調用在助手消息中的唯一標識符 |

762| `agentID` | `string` | 如果在子代理中運行,子代理的 ID |911| `agentID` | `string` | 如果在子代理中運行,子代理的 ID |

763 912 

764### `PermissionResult`913<h3 id="permissionresult">

914 `PermissionResult`

915</h3>

765 916 

766權限檢查的結果。917權限檢查的結果。

767 918 


781 };932 };

782```933```

783 934 

784### `ToolConfig`935<h3 id="toolconfig">

936 `ToolConfig`

937</h3>

785 938 

786內置工具行為的配置。939內置工具行為的配置。

787 940 


797| :------------------------------ | :--------------------- | :---------------------------------------------------------------------------------------------------------------- |950| :------------------------------ | :--------------------- | :---------------------------------------------------------------------------------------------------------------- |

798| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | 選擇進入 [`AskUserQuestion`](/zh-TW/agent-sdk/user-input#question-format) 選項上的 `preview` 字段並設置其內容格式。未設置時,Claude 不發出預覽 |951| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | 選擇進入 [`AskUserQuestion`](/zh-TW/agent-sdk/user-input#question-format) 選項上的 `preview` 字段並設置其內容格式。未設置時,Claude 不發出預覽 |

799 952 

800### `McpServerConfig`953<h3 id="mcpserverconfig">

954 `McpServerConfig`

955</h3>

801 956 

802MCP 服務器的配置。957MCP 服務器的配置。

803 958 


809 | McpSdkServerConfigWithInstance;964 | McpSdkServerConfigWithInstance;

810```965```

811 966 

812#### `McpStdioServerConfig`967<h4 id="mcpstdioserverconfig">

968 `McpStdioServerConfig`

969</h4>

813 970 

814```typescript theme={null}971```typescript theme={null}

815type McpStdioServerConfig = {972type McpStdioServerConfig = {


820};977};

821```978```

822 979 

823#### `McpSSEServerConfig`980<h4 id="mcpsseserverconfig">

981 `McpSSEServerConfig`

982</h4>

824 983 

825```typescript theme={null}984```typescript theme={null}

826type McpSSEServerConfig = {985type McpSSEServerConfig = {


830};989};

831```990```

832 991 

833#### `McpHttpServerConfig`992<h4 id="mcphttpserverconfig">

993 `McpHttpServerConfig`

994</h4>

834 995 

835```typescript theme={null}996```typescript theme={null}

836type McpHttpServerConfig = {997type McpHttpServerConfig = {


840};1001};

841```1002```

842 1003 

843#### `McpSdkServerConfigWithInstance`1004<h4 id="mcpsdkserverconfigwithinstance">

1005 `McpSdkServerConfigWithInstance`

1006</h4>

844 1007 

845```typescript theme={null}1008```typescript theme={null}

846type McpSdkServerConfigWithInstance = {1009type McpSdkServerConfigWithInstance = {


850};1013};

851```1014```

852 1015 

853#### `McpClaudeAIProxyServerConfig`1016<h4 id="mcpclaudeaiproxyserverconfig">

1017 `McpClaudeAIProxyServerConfig`

1018</h4>

854 1019 

855```typescript theme={null}1020```typescript theme={null}

856type McpClaudeAIProxyServerConfig = {1021type McpClaudeAIProxyServerConfig = {


860};1025};

861```1026```

862 1027 

863### `SdkPluginConfig`1028<h3 id="sdkpluginconfig">

1029 `SdkPluginConfig`

1030</h3>

864 1031 

865SDK 中加載 plugins 的配置。1032SDK 中加載 plugins 的配置。

866 1033 


887 1054 

888有關創建和使用 plugins 的完整信息,見 [Plugins](/zh-TW/agent-sdk/plugins)。1055有關創建和使用 plugins 的完整信息,見 [Plugins](/zh-TW/agent-sdk/plugins)。

889 1056 

890## 消息類型1057<h2 id="message-types">

1058 消息類型

1059</h2>

891 1060 

892### `SDKMessage`1061<h3 id="sdkmessage">

1062 `SDKMessage`

1063</h3>

893 1064 

894查詢返回的所有可能消息的聯合類型。1065查詢返回的所有可能消息的聯合類型。

895 1066 


914 | SDKTaskStartedMessage1085 | SDKTaskStartedMessage

915 | SDKTaskProgressMessage1086 | SDKTaskProgressMessage

916 | SDKTaskUpdatedMessage1087 | SDKTaskUpdatedMessage

1088 | SDKSessionStateChangedMessage

1089 | SDKCommandsChangedMessage

1090 | SDKNotificationMessage

917 | SDKFilesPersistedEvent1091 | SDKFilesPersistedEvent

918 | SDKToolUseSummaryMessage1092 | SDKToolUseSummaryMessage

1093 | SDKMemoryRecallMessage

919 | SDKRateLimitEvent1094 | SDKRateLimitEvent

1095 | SDKElicitationCompleteMessage

920 | SDKPermissionDeniedMessage1096 | SDKPermissionDeniedMessage

921 | SDKPromptSuggestionMessage;1097 | SDKPromptSuggestionMessage

1098 | SDKAPIRetryMessage

1099 | SDKMirrorErrorMessage;

922```1100```

923 1101 

924### `SDKAssistantMessage`1102<h3 id="sdkassistantmessage">

1103 `SDKAssistantMessage`

1104</h3>

925 1105 

926助手響應消息。1106助手響應消息。

927 1107 


938 1118 

939`message` 字段是來自 Anthropic SDK 的 [`BetaMessage`](https://platform.claude.com/docs/zh-TW/api/messages/create)。它包括 `id`、`content`、`model`、`stop_reason` 和 `usage` 等字段。1119`message` 字段是來自 Anthropic SDK 的 [`BetaMessage`](https://platform.claude.com/docs/zh-TW/api/messages/create)。它包括 `id`、`content`、`model`、`stop_reason` 和 `usage` 等字段。

940 1120 

941`SDKAssistantMessageError` 是以下之一:`'authentication_failed'`、`'oauth_org_not_allowed'`、`'billing_error'`、`'rate_limit'`、`'invalid_request'`、`'server_error'`、`'max_output_tokens'` 或 `'unknown'`。1121`SDKAssistantMessageError` 是以下之一:`'authentication_failed'`、`'oauth_org_not_allowed'`、`'billing_error'`、`'rate_limit'`、`'overloaded'`、`'invalid_request'`、`'model_not_found'`、`'server_error'`、`'max_output_tokens'` 或 `'unknown'`。`'model_not_found'` 表示選定的模型不存在或對您的帳戶或部署不可用。`'overloaded'` 表示 API 返回了 529,因為伺服器已滿載,與 `'rate_limit'` 相對,後者是針對您配額的 429。

942 1122 

943### `SDKUserMessage`1123<h3 id="sdkusermessage">

1124 `SDKUserMessage`

1125</h3>

944 1126 

945用戶輸入消息。1127用戶輸入消息。

946 1128 


960 1142 

961將 `shouldQuery` 設置為 `false` 以將消息附加到記錄而不觸發助手轉數。消息被保留並合併到下一個觸發轉數的用戶消息中。使用此方法注入上下文,例如您在帶外運行的命令的輸出,而無需在其上花費模型調用。1143將 `shouldQuery` 設置為 `false` 以將消息附加到記錄而不觸發助手轉數。消息被保留並合併到下一個觸發轉數的用戶消息中。使用此方法注入上下文,例如您在帶外運行的命令的輸出,而無需在其上花費模型調用。

962 1144 

963### `SDKUserMessageReplay`1145<h3 id="sdkusermessagereplay">

1146 `SDKUserMessageReplay`

1147</h3>

964 1148 

965帶有必需 UUID 的重放用戶消息。1149帶有必需 UUID 的重放用戶消息。

966 1150 


978};1162};

979```1163```

980 1164 

981### `SDKResultMessage`1165<h3 id="sdkresultmessage">

1166 `SDKResultMessage`

1167</h3>

982 1168 

983最終結果消息。1169最終結果消息。

984 1170 


992 duration_ms: number;1178 duration_ms: number;

993 duration_api_ms: number;1179 duration_api_ms: number;

994 is_error: boolean;1180 is_error: boolean;

1181 api_error_status?: number | null;

995 num_turns: number;1182 num_turns: number;

996 result: string;1183 result: string;

997 stop_reason: string | null;1184 stop_reason: string | null;

1185 ttft_ms?: number;

998 total_cost_usd: number;1186 total_cost_usd: number;

999 usage: NonNullableUsage;1187 usage: NonNullableUsage;

1000 modelUsage: { [modelName: string]: ModelUsage };1188 modelUsage: { [modelName: string]: ModelUsage };

1001 permission_denials: SDKPermissionDenial[];1189 permission_denials: SDKPermissionDenial[];

1002 structured_output?: unknown;1190 structured_output?: unknown;

1003 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };1191 deferred_tool_use?: { id: string; name: string; input: Record<string, unknown> };

1192 terminal_reason?: TerminalReason;

1193 fast_mode_state?: FastModeState;

1004 origin?: SDKMessageOrigin;1194 origin?: SDKMessageOrigin;

1005 }1195 }

1006 | {1196 | {


1022 modelUsage: { [modelName: string]: ModelUsage };1212 modelUsage: { [modelName: string]: ModelUsage };

1023 permission_denials: SDKPermissionDenial[];1213 permission_denials: SDKPermissionDenial[];

1024 errors: string[];1214 errors: string[];

1215 terminal_reason?: TerminalReason;

1216 fast_mode_state?: FastModeState;

1025 origin?: SDKMessageOrigin;1217 origin?: SDKMessageOrigin;

1026 };1218 };

1027```1219```

1028 1220 

1221結果上的多個字段除了 `subtype` 之外還攜帶診斷詳細信息:

1222 

1223* `api_error_status`:終止對話的 API 錯誤的 HTTP 狀態碼。當轉數在沒有 API 錯誤的情況下結束時,不存在或為 `null`。

1224* `ttft_ms`:首個令牌的時間(毫秒)。僅在成功分支上出現。

1225* `terminal_reason`:循環結束的原因。為 `"completed"`、`"max_turns"`、`"tool_deferred"`、`"aborted_streaming"`、`"aborted_tools"`、`"hook_stopped"`、`"stop_hook_prevented"`、`"blocking_limit"`、`"rapid_refill_breaker"`、`"prompt_too_long"`、`"image_error"` 或 `"model_error"` 之一。

1226* `fast_mode_state`:為 `"on"`、`"off"` 或 `"cooldown"` 之一。

1227 

1029`origin` 字段轉發觸發此結果的用戶消息的 [`SDKMessageOrigin`](#sdkmessageorigin)。當後台任務完成且 SDK 注入合成後續轉數時,生成的 `SDKResultMessage` 攜帶 `origin: { kind: "task-notification" }`。檢查此字段以區分回答您的提示的結果與為後台任務後續發出的結果,以便您可以路由或抑制後者。對於在任何用戶轉數之前發出的結果(例如啟動錯誤),該字段不存在。1228`origin` 字段轉發觸發此結果的用戶消息的 [`SDKMessageOrigin`](#sdkmessageorigin)。當後台任務完成且 SDK 注入合成後續轉數時,生成的 `SDKResultMessage` 攜帶 `origin: { kind: "task-notification" }`。檢查此字段以區分回答您的提示的結果與為後台任務後續發出的結果,以便您可以路由或抑制後者。對於在任何用戶轉數之前發出的結果(例如啟動錯誤),該字段不存在。

1030 1229 

1031當 `PreToolUse` hook 返回 `permissionDecision: "defer"` 時,結果具有 `stop_reason: "tool_deferred"` 和 `deferred_tool_use` 攜帶待處理工具的 `id`、`name` 和 `input`。讀取此字段以在您自己的 UI 中顯示請求,然後使用相同的 `session_id` 恢復以繼續。有關完整往返,請參閱[稍後延遲工具調用](/zh-TW/hooks#defer-a-tool-call-for-later)。1230當 `PreToolUse` hook 返回 `permissionDecision: "defer"` 時,結果具有 `stop_reason: "tool_deferred"` 和 `deferred_tool_use` 攜帶待處理工具的 `id`、`name` 和 `input`。讀取此字段以在您自己的 UI 中顯示請求,然後使用相同的 `session_id` 恢復以繼續。有關完整往返,請參閱[稍後延遲工具調用](/zh-TW/hooks#defer-a-tool-call-for-later)。

1032 1231 

1033### `SDKSystemMessage`1232<h3 id="sdksystemmessage">

1233 `SDKSystemMessage`

1234</h3>

1034 1235 

1035系統初始化消息。1236系統初始化消息。

1036 1237 


1059};1260};

1060```1261```

1061 1262 

1062### `SDKPartialAssistantMessage`1263<h3 id="sdkpartialassistantmessage">

1264 `SDKPartialAssistantMessage`

1265</h3>

1063 1266 

1064流式部分消息(僅當 `includePartialMessages` 為 true 時)。1267流式部分消息(僅當 `includePartialMessages` 為 true 時)。

1065 1268 


1073};1276};

1074```1277```

1075 1278 

1076### `SDKCompactBoundaryMessage`1279<h3 id="sdkcompactboundarymessage">

1280 `SDKCompactBoundaryMessage`

1281</h3>

1077 1282 

1078指示對話壓縮邊界的消息。1283指示對話壓縮邊界的消息。

1079 1284 


1090};1295};

1091```1296```

1092 1297 

1093### `SDKPluginInstallMessage`1298<h3 id="sdkplugininstallmessage">

1299 `SDKPluginInstallMessage`

1300</h3>

1094 1301 

1095插件安裝進度事件。當設置 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/zh-TW/env-vars) 時發出,以便您的 Agent SDK 應用程序可以在第一個轉數之前跟蹤市場插件安裝。`started` 和 `completed` 狀態括起整體安裝。`installed` 和 `failed` 狀態報告單個市場並包括 `name`。1302插件安裝進度事件。當設置 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/zh-TW/env-vars) 時發出,以便您的 Agent SDK 應用程序可以在第一個轉數之前跟蹤市場插件安裝。`started` 和 `completed` 狀態括起整體安裝。`installed` 和 `failed` 狀態報告單個市場並包括 `name`。

1096 1303 


1106};1313};

1107```1314```

1108 1315 

1109### `SDKPermissionDeniedMessage`1316<h3 id="sdkpermissiondeniedmessage">

1317 `SDKPermissionDeniedMessage`

1318</h3>

1110 1319 

1111當權限系統自動拒絕工具調用而不進行互動式提示時發出的流事件。使用它在發生時在您的 UI 中呈現拒絕,而不是僅觀察隨後的 `is_error` 工具結果。互動式詢問路徑通過 [`canUseTool`](#canusetool) 回調單獨到達您的應用程序。由 `PreToolUse` hook 發出的拒絕不會通過此事件報告。1320當權限系統自動拒絕工具調用而不進行互動式提示時發出的流事件。使用它在發生時在您的 UI 中呈現拒絕,而不是僅觀察隨後的 `is_error` 工具結果。互動式詢問路徑通過 [`canUseTool`](#canusetool) 回調單獨到達您的應用程序。由 `PreToolUse` hook 發出的拒絕不會通過此事件報告。

1112 1321 


1136| `decision_reason` | `string` | 來自決定組件的人類可讀原因(如果可用) |1345| `decision_reason` | `string` | 來自決定組件的人類可讀原因(如果可用) |

1137| `message` | `string` | 在 `tool_result` 中返回給模型的拒絕消息 |1346| `message` | `string` | 在 `tool_result` 中返回給模型的拒絕消息 |

1138 1347 

1139### `SDKPermissionDenial`1348<h3 id="sdkpermissiondenial">

1349 `SDKPermissionDenial`

1350</h3>

1140 1351 

1141有關被拒絕的工具使用的信息。1352有關被拒絕的工具使用的信息。

1142 1353 


1148};1359};

1149```1360```

1150 1361 

1151### `SDKMessageOrigin`1362<h3 id="sdkmessageorigin">

1363 `SDKMessageOrigin`

1364</h3>

1152 1365 

1153用戶角色消息的來源。這在 [`SDKUserMessage`](#sdkusermessage) 上顯示為 `origin`,並轉發到相應的 [`SDKResultMessage`](#sdkresultmessage),以便您可以判斷給定轉數的觸發因素。1366用戶角色消息的來源。這在 [`SDKUserMessage`](#sdkusermessage) 上顯示為 `origin`,並轉發到相應的 [`SDKResultMessage`](#sdkresultmessage),以便您可以判斷給定轉數的觸發因素。

1154 1367 


1169| `task-notification` | 後台任務完成後注入的合成轉數。請參閱 [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)。 |1382| `task-notification` | 後台任務完成後注入的合成轉數。請參閱 [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)。 |

1170| `coordinator` | 來自[代理團隊](/zh-TW/agent-teams)中的團隊協調員的消息。 |1383| `coordinator` | 來自[代理團隊](/zh-TW/agent-teams)中的團隊協調員的消息。 |

1171 1384 

1172## Hook 類型1385<h2 id="hook-types">

1386 Hook 類型

1387</h2>

1173 1388 

1174有關使用 hooks 的綜合指南,包括示例和常見模式,見 [Hooks 指南](/zh-TW/agent-sdk/hooks)。1389有關使用 hooks 的綜合指南,包括示例和常見模式,見 [Hooks 指南](/zh-TW/agent-sdk/hooks)。

1175 1390 

1176### `HookEvent`1391<h3 id="hookevent">

1392 `HookEvent`

1393</h3>

1177 1394 

1178可用的 hook 事件。1395可用的 hook 事件。

1179 1396 


1197 | "TaskCompleted"1414 | "TaskCompleted"

1198 | "ConfigChange"1415 | "ConfigChange"

1199 | "WorktreeCreate"1416 | "WorktreeCreate"

1200 | "WorktreeRemove";1417 | "WorktreeRemove"

1418 | "MessageDisplay";

1201```1419```

1202 1420 

1203### `HookCallback`1421<h3 id="hookcallback">

1422 `HookCallback`

1423</h3>

1204 1424 

1205Hook 回調函數類型。1425Hook 回調函數類型。

1206 1426 


1212) => Promise<HookJSONOutput>;1432) => Promise<HookJSONOutput>;

1213```1433```

1214 1434 

1215### `HookCallbackMatcher`1435<h3 id="hookcallbackmatcher">

1436 `HookCallbackMatcher`

1437</h3>

1216 1438 

1217帶有可選匹配器的 Hook 配置。1439帶有可選匹配器的 Hook 配置。

1218 1440 


1224}1446}

1225```1447```

1226 1448 

1227### `HookInput`1449<h3 id="hookinput">

1450 `HookInput`

1451</h3>

1228 1452 

1229所有 hook 輸入類型的聯合類型。1453所有 hook 輸入類型的聯合類型。

1230 1454 


1248 | TaskCompletedHookInput1472 | TaskCompletedHookInput

1249 | ConfigChangeHookInput1473 | ConfigChangeHookInput

1250 | WorktreeCreateHookInput1474 | WorktreeCreateHookInput

1251 | WorktreeRemoveHookInput;1475 | WorktreeRemoveHookInput

1476 | MessageDisplayHookInput;

1252```1477```

1253 1478 

1254### `BaseHookInput`1479<h3 id="basehookinput">

1480 `BaseHookInput`

1481</h3>

1255 1482 

1256所有 hook 輸入類型擴展的基本介面。1483所有 hook 輸入類型擴展的基本介面。

1257 1484 


1267};1494};

1268```1495```

1269 1496 

1270#### `PreToolUseHookInput`1497<h4 id="pretoolusehookinput">

1498 `PreToolUseHookInput`

1499</h4>

1271 1500 

1272```typescript theme={null}1501```typescript theme={null}

1273type PreToolUseHookInput = BaseHookInput & {1502type PreToolUseHookInput = BaseHookInput & {


1278};1507};

1279```1508```

1280 1509 

1281#### `PostToolUseHookInput`1510<h4 id="posttoolusehookinput">

1511 `PostToolUseHookInput`

1512</h4>

1282 1513 

1283```typescript theme={null}1514```typescript theme={null}

1284type PostToolUseHookInput = BaseHookInput & {1515type PostToolUseHookInput = BaseHookInput & {


1291};1522};

1292```1523```

1293 1524 

1294#### `PostToolUseFailureHookInput`1525<h4 id="posttoolusefailurehookinput">

1526 `PostToolUseFailureHookInput`

1527</h4>

1295 1528 

1296```typescript theme={null}1529```typescript theme={null}

1297type PostToolUseFailureHookInput = BaseHookInput & {1530type PostToolUseFailureHookInput = BaseHookInput & {


1305};1538};

1306```1539```

1307 1540 

1308#### `PostToolBatchHookInput`1541<h4 id="posttoolbatchhookinput">

1542 `PostToolBatchHookInput`

1543</h4>

1309 1544 

1310在批次中的每個工具呼叫都已解決後、下一個模型請求之前觸發一次。`tool_response` 攜帶序列化的 `tool_result` 內容,模型會看到;其形狀與 `PostToolUseHookInput` 的結構化 `Output` 物件不同。1545在批次中的每個工具呼叫都已解決後、下一個模型請求之前觸發一次。`tool_response` 攜帶序列化的 `tool_result` 內容,模型會看到;其形狀與 `PostToolUseHookInput` 的結構化 `Output` 物件不同。

1311 1546 


1323};1558};

1324```1559```

1325 1560 

1326#### `NotificationHookInput`1561<h4 id="notificationhookinput">

1562 `NotificationHookInput`

1563</h4>

1327 1564 

1328```typescript theme={null}1565```typescript theme={null}

1329type NotificationHookInput = BaseHookInput & {1566type NotificationHookInput = BaseHookInput & {


1334};1571};

1335```1572```

1336 1573 

1337#### `UserPromptSubmitHookInput`1574<h4 id="userpromptsubmithookinput">

1575 `UserPromptSubmitHookInput`

1576</h4>

1338 1577 

1339```typescript theme={null}1578```typescript theme={null}

1340type UserPromptSubmitHookInput = BaseHookInput & {1579type UserPromptSubmitHookInput = BaseHookInput & {


1343};1582};

1344```1583```

1345 1584 

1346#### `SessionStartHookInput`1585<h4 id="sessionstarthookinput">

1586 `SessionStartHookInput`

1587</h4>

1347 1588 

1348```typescript theme={null}1589```typescript theme={null}

1349type SessionStartHookInput = BaseHookInput & {1590type SessionStartHookInput = BaseHookInput & {


1354};1595};

1355```1596```

1356 1597 

1357#### `SessionEndHookInput`1598<h4 id="sessionendhookinput">

1599 `SessionEndHookInput`

1600</h4>

1358 1601 

1359```typescript theme={null}1602```typescript theme={null}

1360type SessionEndHookInput = BaseHookInput & {1603type SessionEndHookInput = BaseHookInput & {


1363};1606};

1364```1607```

1365 1608 

1366#### `StopHookInput`1609<h4 id="stophookinput">

1610 `StopHookInput`

1611</h4>

1367 1612 

1368```typescript theme={null}1613```typescript theme={null}

1369type StopHookInput = BaseHookInput & {1614type StopHookInput = BaseHookInput & {

1370 hook_event_name: "Stop";1615 hook_event_name: "Stop";

1371 stop_hook_active: boolean;1616 stop_hook_active: boolean;

1372 last_assistant_message?: string;1617 last_assistant_message?: string;

1618 background_tasks?: BackgroundTaskSummary[];

1619 session_crons?: SessionCronSummary[];

1373};1620};

1374```1621```

1375 1622 

1376#### `SubagentStartHookInput`1623<h4 id="subagentstarthookinput">

1624 `SubagentStartHookInput`

1625</h4>

1377 1626 

1378```typescript theme={null}1627```typescript theme={null}

1379type SubagentStartHookInput = BaseHookInput & {1628type SubagentStartHookInput = BaseHookInput & {


1383};1632};

1384```1633```

1385 1634 

1386#### `SubagentStopHookInput`1635<h4 id="subagentstophookinput">

1636 `SubagentStopHookInput`

1637</h4>

1387 1638 

1388```typescript theme={null}1639```typescript theme={null}

1389type SubagentStopHookInput = BaseHookInput & {1640type SubagentStopHookInput = BaseHookInput & {


1393 agent_transcript_path: string;1644 agent_transcript_path: string;

1394 agent_type: string;1645 agent_type: string;

1395 last_assistant_message?: string;1646 last_assistant_message?: string;

1647 background_tasks?: BackgroundTaskSummary[];

1648 session_crons?: SessionCronSummary[];

1649};

1650 

1651type BackgroundTaskSummary = {

1652 id: string;

1653 type: string;

1654 status: string;

1655 description: string;

1656 command?: string;

1657 agent_type?: string;

1658 server?: string;

1659 tool?: string;

1660 name?: string;

1661};

1662 

1663type SessionCronSummary = {

1664 id: string;

1665 schedule: string;

1666 recurring: boolean;

1667 prompt: string;

1396};1668};

1397```1669```

1398 1670 

1399#### `PreCompactHookInput`1671<h4 id="precompacthookinput">

1672 `PreCompactHookInput`

1673</h4>

1400 1674 

1401```typescript theme={null}1675```typescript theme={null}

1402type PreCompactHookInput = BaseHookInput & {1676type PreCompactHookInput = BaseHookInput & {


1406};1680};

1407```1681```

1408 1682 

1409#### `PermissionRequestHookInput`1683<h4 id="permissionrequesthookinput">

1684 `PermissionRequestHookInput`

1685</h4>

1410 1686 

1411```typescript theme={null}1687```typescript theme={null}

1412type PermissionRequestHookInput = BaseHookInput & {1688type PermissionRequestHookInput = BaseHookInput & {


1417};1693};

1418```1694```

1419 1695 

1420#### `SetupHookInput`1696<h4 id="setuphookinput">

1697 `SetupHookInput`

1698</h4>

1421 1699 

1422```typescript theme={null}1700```typescript theme={null}

1423type SetupHookInput = BaseHookInput & {1701type SetupHookInput = BaseHookInput & {


1426};1704};

1427```1705```

1428 1706 

1429#### `TeammateIdleHookInput`1707<h4 id="teammateidlehookinput">

1708 `TeammateIdleHookInput`

1709</h4>

1430 1710 

1431```typescript theme={null}1711```typescript theme={null}

1432type TeammateIdleHookInput = BaseHookInput & {1712type TeammateIdleHookInput = BaseHookInput & {


1436};1716};

1437```1717```

1438 1718 

1439#### `TaskCompletedHookInput`1719<h4 id="taskcompletedhookinput">

1720 `TaskCompletedHookInput`

1721</h4>

1440 1722 

1441```typescript theme={null}1723```typescript theme={null}

1442type TaskCompletedHookInput = BaseHookInput & {1724type TaskCompletedHookInput = BaseHookInput & {


1449};1731};

1450```1732```

1451 1733 

1452#### `ConfigChangeHookInput`1734<h4 id="configchangehookinput">

1735 `ConfigChangeHookInput`

1736</h4>

1453 1737 

1454```typescript theme={null}1738```typescript theme={null}

1455type ConfigChangeHookInput = BaseHookInput & {1739type ConfigChangeHookInput = BaseHookInput & {


1464};1748};

1465```1749```

1466 1750 

1467#### `WorktreeCreateHookInput`1751<h4 id="worktreecreatehookinput">

1752 `WorktreeCreateHookInput`

1753</h4>

1468 1754 

1469```typescript theme={null}1755```typescript theme={null}

1470type WorktreeCreateHookInput = BaseHookInput & {1756type WorktreeCreateHookInput = BaseHookInput & {


1473};1759};

1474```1760```

1475 1761 

1476#### `WorktreeRemoveHookInput`1762<h4 id="worktreeremovehookinput">

1763 `WorktreeRemoveHookInput`

1764</h4>

1477 1765 

1478```typescript theme={null}1766```typescript theme={null}

1479type WorktreeRemoveHookInput = BaseHookInput & {1767type WorktreeRemoveHookInput = BaseHookInput & {


1482};1770};

1483```1771```

1484 1772 

1485### `HookJSONOutput`1773<h4 id="messagedisplayhookinput">

1774 `MessageDisplayHookInput`

1775</h4>

1776 

1777```typescript theme={null}

1778type MessageDisplayHookInput = BaseHookInput & {

1779 hook_event_name: "MessageDisplay";

1780 turn_id: string;

1781 message_id: string;

1782 index: number;

1783 final: boolean;

1784 delta: string;

1785};

1786```

1787 

1788<h3 id="hookjsonoutput">

1789 `HookJSONOutput`

1790</h3>

1486 1791 

1487Hook 返回值。1792Hook 返回值。

1488 1793 


1490type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;1795type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

1491```1796```

1492 1797 

1493#### `AsyncHookJSONOutput`1798<h4 id="asynchookjsonoutput">

1799 `AsyncHookJSONOutput`

1800</h4>

1494 1801 

1495```typescript theme={null}1802```typescript theme={null}

1496type AsyncHookJSONOutput = {1803type AsyncHookJSONOutput = {


1499};1806};

1500```1807```

1501 1808 

1502#### `SyncHookJSONOutput`1809<h4 id="synchookjsonoutput">

1810 `SyncHookJSONOutput`

1811</h4>

1503 1812 

1504```typescript theme={null}1813```typescript theme={null}

1505type SyncHookJSONOutput = {1814type SyncHookJSONOutput = {


1569};1878};

1570```1879```

1571 1880 

1572## 工具輸入類型1881<h2 id="tool-input-types">

1882 工具輸入類型

1883</h2>

1573 1884 

1574所有內置 Claude Code 工具的輸入架構文檔。這些類型從 `@anthropic-ai/claude-agent-sdk` 導出,可用於類型安全的工具交互。1885所有內置 Claude Code 工具的輸入架構文檔。這些類型從 `@anthropic-ai/claude-agent-sdk` 導出,可用於類型安全的工具交互。

1575 1886 

1576### `ToolInputSchemas`1887<h3 id="toolinputschemas">

1888 `ToolInputSchemas`

1889</h3>

1577 1890 

1578所有工具輸入類型的聯合,從 `@anthropic-ai/claude-agent-sdk` 導出。1891所有工具輸入類型的聯合,從 `@anthropic-ai/claude-agent-sdk` 導出。

1579 1892 


1606 | UnsubscribeMcpResourceInput1919 | UnsubscribeMcpResourceInput

1607 | UnsubscribePollingInput1920 | UnsubscribePollingInput

1608 | WebFetchInput1921 | WebFetchInput

1609 | WebSearchInput;1922 | WebSearchInput

1923 | WorkflowInput;

1610```1924```

1611 1925 

1612### Agent1926<h3 id="agent">

1927 Agent

1928</h3>

1613 1929 

1614**工具名稱:** `Agent`(之前是 `Task`,仍然接受作為別名)1930**工具名稱:** `Agent`(之前是 `Task`,仍然接受作為別名)

1615 1931 


1631 1947 

1632啟動新代理以自主處理複雜的多步驟任務。1948啟動新代理以自主處理複雜的多步驟任務。

1633 1949 

1634### AskUserQuestion1950<h3 id="askuserquestion">

1951 AskUserQuestion

1952</h3>

1635 1953 

1636**工具名稱:** `AskUserQuestion`1954**工具名稱:** `AskUserQuestion`

1637 1955 


1648 1966 

1649在執行期間向用戶提出澄清問題。見 [處理批准和用戶輸入](/zh-TW/agent-sdk/user-input#handle-clarifying-questions) 了解使用詳情。1967在執行期間向用戶提出澄清問題。見 [處理批准和用戶輸入](/zh-TW/agent-sdk/user-input#handle-clarifying-questions) 了解使用詳情。

1650 1968 

1651### Bash1969<h3 id="bash">

1970 Bash

1971</h3>

1652 1972 

1653**工具名稱:** `Bash`1973**工具名稱:** `Bash`

1654 1974 


1664 1984 

1665在持久 shell 會話中執行 bash 命令,具有可選的超時和後台執行。1985在持久 shell 會話中執行 bash 命令,具有可選的超時和後台執行。

1666 1986 

1667### Monitor1987<h3 id="monitor">

1988 Monitor

1989</h3>

1668 1990 

1669**工具名稱:** `Monitor`1991**工具名稱:** `Monitor`

1670 1992 


1679 2001 

1680運行後台腳本並將每個 stdout 行作為事件傳遞給 Claude,以便它可以在不輪詢的情況下做出反應。為會話長度的監視(如日誌尾部)設置 `persistent: true`。Monitor 遵循與 Bash 相同的權限規則。見 [Monitor 工具參考](/zh-TW/tools-reference#monitor-tool) 了解行為和提供商可用性。2002運行後台腳本並將每個 stdout 行作為事件傳遞給 Claude,以便它可以在不輪詢的情況下做出反應。為會話長度的監視(如日誌尾部)設置 `persistent: true`。Monitor 遵循與 Bash 相同的權限規則。見 [Monitor 工具參考](/zh-TW/tools-reference#monitor-tool) 了解行為和提供商可用性。

1681 2003 

1682### TaskOutput2004<h3 id="taskoutput">

2005 TaskOutput

2006</h3>

1683 2007 

1684**工具名稱:** `TaskOutput`2008**工具名稱:** `TaskOutput`

1685 2009 


1693 2017 

1694從運行或已完成的後台任務檢索輸出。2018從運行或已完成的後台任務檢索輸出。

1695 2019 

1696### Edit2020<h3 id="edit">

2021 Edit

2022</h3>

1697 2023 

1698**工具名稱:** `Edit`2024**工具名稱:** `Edit`

1699 2025 


1708 2034 

1709在文件中執行精確字符串替換。2035在文件中執行精確字符串替換。

1710 2036 

1711### Read2037<h3 id="read">

2038 Read

2039</h3>

1712 2040 

1713**工具名稱:** `Read`2041**工具名稱:** `Read`

1714 2042 


1723 2051 

1724從本地文件系統讀取文件,包括文本、圖像、PDF 和 Jupyter 筆記本。對 PDF 頁面範圍使用 `pages`(例如,`"1-5"`)。2052從本地文件系統讀取文件,包括文本、圖像、PDF 和 Jupyter 筆記本。對 PDF 頁面範圍使用 `pages`(例如,`"1-5"`)。

1725 2053 

1726### Write2054<h3 id="write">

2055 Write

2056</h3>

1727 2057 

1728**工具名稱:** `Write`2058**工具名稱:** `Write`

1729 2059 


1736 2066 

1737將文件寫入本地文件系統,如果存在則覆蓋。2067將文件寫入本地文件系統,如果存在則覆蓋。

1738 2068 

1739### Glob2069<h3 id="glob">

2070 Glob

2071</h3>

1740 2072 

1741**工具名稱:** `Glob`2073**工具名稱:** `Glob`

1742 2074 


1749 2081 

1750快速文件模式匹配,適用於任何代碼庫大小。2082快速文件模式匹配,適用於任何代碼庫大小。

1751 2083 

1752### Grep2084<h3 id="grep">

2085 Grep

2086</h3>

1753 2087 

1754**工具名稱:** `Grep`2088**工具名稱:** `Grep`

1755 2089 


1774 2108 

1775基於 ripgrep 的強大搜索工具,支持正則表達式。2109基於 ripgrep 的強大搜索工具,支持正則表達式。

1776 2110 

1777### TaskStop2111<h3 id="taskstop">

2112 TaskStop

2113</h3>

1778 2114 

1779**工具名稱:** `TaskStop`2115**工具名稱:** `TaskStop`

1780 2116 


1787 2123 

1788按 ID 停止運行的後台任務或 shell。2124按 ID 停止運行的後台任務或 shell。

1789 2125 

1790### NotebookEdit2126<h3 id="notebookedit">

2127 NotebookEdit

2128</h3>

1791 2129 

1792**工具名稱:** `NotebookEdit`2130**工具名稱:** `NotebookEdit`

1793 2131 


1803 2141 

1804編輯 Jupyter 筆記本文件中的單元格。2142編輯 Jupyter 筆記本文件中的單元格。

1805 2143 

1806### WebFetch2144<h3 id="webfetch">

2145 WebFetch

2146</h3>

1807 2147 

1808**工具名稱:** `WebFetch`2148**工具名稱:** `WebFetch`

1809 2149 


1816 2156 

1817從 URL 獲取內容並使用 AI 模型處理它。2157從 URL 獲取內容並使用 AI 模型處理它。

1818 2158 

1819### WebSearch2159<h3 id="websearch">

2160 WebSearch

2161</h3>

1820 2162 

1821**工具名稱:** `WebSearch`2163**工具名稱:** `WebSearch`

1822 2164 


1830 2172 

1831搜索網絡並返回格式化結果。2173搜索網絡並返回格式化結果。

1832 2174 

1833### TodoWrite2175<h3 id="workflow">

2176 Workflow

2177</h3>

2178 

2179**工具名稱:** `Workflow`

2180 

2181```typescript theme={null}

2182type WorkflowInput = {

2183 script?: string;

2184 name?: string;

2185 scriptPath?: string;

2186 args?: unknown;

2187 resumeFromRunId?: string;

2188};

2189```

2190 

2191運行 [動態工作流](/zh-TW/workflows):一個在後台協調許多子代理並返回一個統一結果的腳本。`Workflow` 工具在 Agent SDK v0.3.149 及更高版本中可用。至少需要 `script`、`name` 或 `scriptPath` 之一。

2192 

2193| 字段 | 類型 | 描述 |

2194| ----------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------- |

2195| `script` | `string` | 內聯工作流腳本。必須以 `export const meta = { name, description, phases }` 作為字面量開始,然後是使用 `agent()`、`parallel()`、`pipeline()` 和 `phase()` 的腳本主體 |

2196| `name` | `string` | 內置工作流的名稱或保存在 `.claude/workflows/` 中的工作流名稱。解析為腳本 |

2197| `scriptPath` | `string` | 磁盤上工作流腳本文件的路徑。優先於 `script` 和 `name`。每次調用都會持久化其腳本並在結果中返回路徑,因此您可以編輯該文件並使用相同的 `scriptPath` 重新調用以進行迭代 |

2198| `args` | `unknown` | 輸入值,作為全局 `args` 暴露給腳本,用於參數化的命名工作流,例如研究問題或文件路徑列表。將數組和對象作為實際 JSON 值傳遞,而不是作為 JSON 編碼的字符串 |

2199| `resumeFromRunId` | `string` | 先前 `Workflow` 調用的運行 ID 以恢復。具有未更改輸入的已完成 `agent()` 調用返回緩存結果;只有更改或新調用才會實時運行。僅限同一會話 |

2200 

2201<h3 id="todowrite">

2202 TodoWrite

2203</h3>

1834 2204 

1835**工具名稱:** `TodoWrite`2205**工具名稱:** `TodoWrite`

1836 2206 


1850 自 TypeScript Agent SDK 0.3.142 起,`TodoWrite` 預設為禁用。改用 `TaskCreate`、`TaskGet`、`TaskUpdate` 和 `TaskList`。見 [遷移到 Task 工具](/zh-TW/agent-sdk/todo-tracking#migrate-to-task-tools) 更新您的監視代碼,或設置 `CLAUDE_CODE_ENABLE_TASKS=0` 以恢復為 `TodoWrite`。2220 自 TypeScript Agent SDK 0.3.142 起,`TodoWrite` 預設為禁用。改用 `TaskCreate`、`TaskGet`、`TaskUpdate` 和 `TaskList`。見 [遷移到 Task 工具](/zh-TW/agent-sdk/todo-tracking#migrate-to-task-tools) 更新您的監視代碼,或設置 `CLAUDE_CODE_ENABLE_TASKS=0` 以恢復為 `TodoWrite`。

1851</Note>2221</Note>

1852 2222 

1853### TaskCreate2223<h3 id="taskcreate">

2224 TaskCreate

2225</h3>

1854 2226 

1855**工具名稱:** `TaskCreate`2227**工具名稱:** `TaskCreate`

1856 2228 


1865 2237 

1866創建單個任務並返回其分配的 ID。2238創建單個任務並返回其分配的 ID。

1867 2239 

1868### TaskUpdate2240<h3 id="taskupdate">

2241 TaskUpdate

2242</h3>

1869 2243 

1870**工具名稱:** `TaskUpdate`2244**工具名稱:** `TaskUpdate`

1871 2245 


1885 2259 

1886按 ID 修補一個任務。將 `status` 設置為 `"deleted"` 以移除它。2260按 ID 修補一個任務。將 `status` 設置為 `"deleted"` 以移除它。

1887 2261 

1888### TaskGet2262<h3 id="taskget">

2263 TaskGet

2264</h3>

1889 2265 

1890**工具名稱:** `TaskGet`2266**工具名稱:** `TaskGet`

1891 2267 


1897 2273 

1898返回一個任務的完整詳情,或在找不到 ID 時返回 `null`。2274返回一個任務的完整詳情,或在找不到 ID 時返回 `null`。

1899 2275 

1900### TaskList2276<h3 id="tasklist">

2277 TaskList

2278</h3>

1901 2279 

1902**工具名稱:** `TaskList`2280**工具名稱:** `TaskList`

1903 2281 


1907 2285 

1908返回當前列表中所有任務的快照。2286返回當前列表中所有任務的快照。

1909 2287 

1910### ExitPlanMode2288<h3 id="exitplanmode">

2289 ExitPlanMode

2290</h3>

1911 2291 

1912**工具名稱:** `ExitPlanMode`2292**工具名稱:** `ExitPlanMode`

1913 2293 


1922 2302 

1923退出規劃模式。可選地指定實施計劃所需的基於提示的權限。2303退出規劃模式。可選地指定實施計劃所需的基於提示的權限。

1924 2304 

1925### ListMcpResources2305<h3 id="listmcpresources">

2306 ListMcpResources

2307</h3>

1926 2308 

1927**工具名稱:** `ListMcpResources`2309**工具名稱:** `ListMcpResourcesTool`

1928 2310 

1929```typescript theme={null}2311```typescript theme={null}

1930type ListMcpResourcesInput = {2312type ListMcpResourcesInput = {


1934 2316 

1935列出來自連接服務器的可用 MCP 資源。2317列出來自連接服務器的可用 MCP 資源。

1936 2318 

1937### ReadMcpResource2319<h3 id="readmcpresource">

2320 ReadMcpResource

2321</h3>

1938 2322 

1939**工具名稱:** `ReadMcpResource`2323**工具名稱:** `ReadMcpResourceTool`

1940 2324 

1941```typescript theme={null}2325```typescript theme={null}

1942type ReadMcpResourceInput = {2326type ReadMcpResourceInput = {


1947 2331 

1948從服務器讀取特定的 MCP 資源。2332從服務器讀取特定的 MCP 資源。

1949 2333 

1950### EnterWorktree2334<h3 id="enterworktree">

2335 EnterWorktree

2336</h3>

1951 2337 

1952**工具名稱:** `EnterWorktree`2338**工具名稱:** `EnterWorktree`

1953 2339 


1960 2346 

1961創建並進入臨時 git worktree 以進行隔離工作。傳遞 `path` 以切換到當前存儲庫的現有 worktree,而不是創建新的。`name` 和 `path` 互斥。2347創建並進入臨時 git worktree 以進行隔離工作。傳遞 `path` 以切換到當前存儲庫的現有 worktree,而不是創建新的。`name` 和 `path` 互斥。

1962 2348 

1963## 工具輸出類型2349<h2 id="tool-output-types">

2350 工具輸出類型

2351</h2>

1964 2352 

1965所有內置 Claude Code 工具的輸出架構文檔。這些類型從 `@anthropic-ai/claude-agent-sdk` 導出,代表每個工具返回的實際響應數據。2353所有內置 Claude Code 工具的輸出架構文檔。這些類型從 `@anthropic-ai/claude-agent-sdk` 導出,代表每個工具返回的實際響應數據。

1966 2354 

1967### `ToolOutputSchemas`2355<h3 id="tooloutputschemas">

2356 `ToolOutputSchemas`

2357</h3>

1968 2358 

1969所有工具輸出類型的聯合。2359所有工具輸出類型的聯合。

1970 2360 


1991 | TaskUpdateOutput2381 | TaskUpdateOutput

1992 | TodoWriteOutput2382 | TodoWriteOutput

1993 | WebFetchOutput2383 | WebFetchOutput

1994 | WebSearchOutput;2384 | WebSearchOutput

2385 | WorkflowOutput;

1995```2386```

1996 2387 

1997### Agent2388<h3 id="agent">

2389 Agent

2390</h3>

1998 2391 

1999**工具名稱:** `Agent`(之前是 `Task`,仍然接受作為別名)2392**工具名稱:** `Agent`(之前是 `Task`,仍然接受作為別名)

2000 2393 


2041 2434 

2042返回子代理的結果。在 `status` 字段上區分:`"completed"` 用於已完成的任務,`"async_launched"` 用於後台任務,`"sub_agent_entered"` 用於交互式子代理。2435返回子代理的結果。在 `status` 字段上區分:`"completed"` 用於已完成的任務,`"async_launched"` 用於後台任務,`"sub_agent_entered"` 用於交互式子代理。

2043 2436 

2044### AskUserQuestion2437<h3 id="askuserquestion">

2438 AskUserQuestion

2439</h3>

2045 2440 

2046**工具名稱:** `AskUserQuestion`2441**工具名稱:** `AskUserQuestion`

2047 2442 


2054 multiSelect: boolean;2449 multiSelect: boolean;

2055 }>;2450 }>;

2056 answers: Record<string, string>;2451 answers: Record<string, string>;

2452 response?: string;

2057};2453};

2058```2454```

2059 2455 

2060返回提出的問題和用戶的答案。2456返回提出的問題和用戶的答案。當用戶輸入自由形式的回覆而不是回答結構化問題時,`response` 被設置;當存在時,Claude 會收到「用戶回應:…」而不是每個問題的答案列表。

2061 2457 

2062### Bash2458<h3 id="bash">

2459 Bash

2460</h3>

2063 2461 

2064**工具名稱:** `Bash`2462**工具名稱:** `Bash`

2065 2463 


2082 2480 

2083返回命令輸出,stdout/stderr 分開。後台命令包括 `backgroundTaskId`。2481返回命令輸出,stdout/stderr 分開。後台命令包括 `backgroundTaskId`。

2084 2482 

2085### Monitor2483<h3 id="monitor">

2484 Monitor

2485</h3>

2086 2486 

2087**工具名稱:** `Monitor`2487**工具名稱:** `Monitor`

2088 2488 


2096 2496 

2097返回運行監視器的後台任務 ID。使用此 ID 與 `TaskStop` 一起提前取消監視。2497返回運行監視器的後台任務 ID。使用此 ID 與 `TaskStop` 一起提前取消監視。

2098 2498 

2099### Edit2499<h3 id="edit">

2500 Edit

2501</h3>

2100 2502 

2101**工具名稱:** `Edit`2503**工具名稱:** `Edit`

2102 2504 


2128 2530 

2129返回編輯操作的結構化差異。2531返回編輯操作的結構化差異。

2130 2532 

2131### Read2533<h3 id="read">

2534 Read

2535</h3>

2132 2536 

2133**工具名稱:** `Read`2537**工具名稱:** `Read`

2134 2538 


2186 2590 

2187返回適合文件類型的文件內容。在 `type` 字段上區分。2591返回適合文件類型的文件內容。在 `type` 字段上區分。

2188 2592 

2189### Write2593<h3 id="write">

2594 Write

2595</h3>

2190 2596 

2191**工具名稱:** `Write`2597**工具名稱:** `Write`

2192 2598 


2216 2622 

2217返回寫入結果,包含結構化差異信息。2623返回寫入結果,包含結構化差異信息。

2218 2624 

2219### Glob2625<h3 id="glob">

2626 Glob

2627</h3>

2220 2628 

2221**工具名稱:** `Glob`2629**工具名稱:** `Glob`

2222 2630 


2231 2639 

2232返回與 glob 模式匹配的文件路徑,按修改時間排序。2640返回與 glob 模式匹配的文件路徑,按修改時間排序。

2233 2641 

2234### Grep2642<h3 id="grep">

2643 Grep

2644</h3>

2235 2645 

2236**工具名稱:** `Grep`2646**工具名稱:** `Grep`

2237 2647 


2250 2660 

2251返回搜索結果。形狀因 `mode` 而異:文件列表、帶匹配的內容或匹配計數。2661返回搜索結果。形狀因 `mode` 而異:文件列表、帶匹配的內容或匹配計數。

2252 2662 

2253### TaskStop2663<h3 id="taskstop">

2664 TaskStop

2665</h3>

2254 2666 

2255**工具名稱:** `TaskStop`2667**工具名稱:** `TaskStop`

2256 2668 


2265 2677 

2266停止後台任務後返回確認。2678停止後台任務後返回確認。

2267 2679 

2268### NotebookEdit2680<h3 id="notebookedit">

2681 NotebookEdit

2682</h3>

2269 2683 

2270**工具名稱:** `NotebookEdit`2684**工具名稱:** `NotebookEdit`

2271 2685 


2285 2699 

2286返回筆記本編輯的結果,包含原始和更新的文件內容。2700返回筆記本編輯的結果,包含原始和更新的文件內容。

2287 2701 

2288### WebFetch2702<h3 id="webfetch">

2703 WebFetch

2704</h3>

2289 2705 

2290**工具名稱:** `WebFetch`2706**工具名稱:** `WebFetch`

2291 2707 


2302 2718 

2303返回獲取的內容,包含 HTTP 狀態和元數據。2719返回獲取的內容,包含 HTTP 狀態和元數據。

2304 2720 

2305### WebSearch2721<h3 id="websearch">

2722 WebSearch

2723</h3>

2306 2724 

2307**工具名稱:** `WebSearch`2725**工具名稱:** `WebSearch`

2308 2726 


2322 2740 

2323返回來自網絡的搜索結果。2741返回來自網絡的搜索結果。

2324 2742 

2325### TodoWrite2743<h3 id="workflow">

2744 Workflow

2745</h3>

2746 

2747**工具名稱:** `Workflow`

2748 

2749```typescript theme={null}

2750type WorkflowOutput = {

2751 status: "async_launched";

2752 taskId: string;

2753 runId?: string;

2754 summary?: string;

2755 transcriptDir?: string;

2756 scriptPath?: string;

2757 error?: string;

2758};

2759```

2760 

2761在工具接受調用後立即返回。最終結果稍後作為任務完成到達。在將運行視為已啟動之前檢查 `error`:失敗語法檢查的腳本返回 `status: "async_launched"` 並設置 `error`,並且永遠不會運行。

2762 

2763| 字段 | 類型 | 描述 |

2764| --------------- | ------------------ | ---------------------------------------------------- |

2765| `status` | `"async_launched"` | 工具接受了調用。這是該字段採用的唯一值 |

2766| `taskId` | `string` | 運行的後台任務標識符 |

2767| `runId` | `string` | 工作流運行標識符,用於在稍後調用時作為 `resumeFromRunId` 傳遞 |

2768| `summary` | `string` | 工作流功能的單行描述 |

2769| `transcriptDir` | `string` | 執行期間寫入子代理轉錄的目錄 |

2770| `scriptPath` | `string` | 此運行的持久化工作流腳本的路徑。編輯它並作為 `scriptPath` 傳回以重新運行而無需重新發送腳本 |

2771| `error` | `string` | 當腳本失敗其語法檢查時設置。存在時,儘管 `async_launched` 狀態,運行未啟動 |

2772 

2773<h3 id="todowrite">

2774 TodoWrite

2775</h3>

2326 2776 

2327**工具名稱:** `TodoWrite`2777**工具名稱:** `TodoWrite`

2328 2778 


2347 自 TypeScript Agent SDK 0.3.142 起,`TodoWrite` 預設為禁用。改用 `TaskCreate`、`TaskGet`、`TaskUpdate` 和 `TaskList`。請參閱[遷移到 Task 工具](/zh-TW/agent-sdk/todo-tracking#migrate-to-task-tools)以更新您的監視代碼,或設置 `CLAUDE_CODE_ENABLE_TASKS=0` 以恢復為 `TodoWrite`。2797 自 TypeScript Agent SDK 0.3.142 起,`TodoWrite` 預設為禁用。改用 `TaskCreate`、`TaskGet`、`TaskUpdate` 和 `TaskList`。請參閱[遷移到 Task 工具](/zh-TW/agent-sdk/todo-tracking#migrate-to-task-tools)以更新您的監視代碼,或設置 `CLAUDE_CODE_ENABLE_TASKS=0` 以恢復為 `TodoWrite`。

2348</Note>2798</Note>

2349 2799 

2350### TaskCreate2800<h3 id="taskcreate">

2801 TaskCreate

2802</h3>

2351 2803 

2352**工具名稱:** `TaskCreate`2804**工具名稱:** `TaskCreate`

2353 2805 


2362 2814 

2363返回創建的任務及其分配的 ID。2815返回創建的任務及其分配的 ID。

2364 2816 

2365### TaskUpdate2817<h3 id="taskupdate">

2818 TaskUpdate

2819</h3>

2366 2820 

2367**工具名稱:** `TaskUpdate`2821**工具名稱:** `TaskUpdate`

2368 2822 


2381 2835 

2382返回更新結果,包括哪些字段已更改。2836返回更新結果,包括哪些字段已更改。

2383 2837 

2384### TaskGet2838<h3 id="taskget">

2839 TaskGet

2840</h3>

2385 2841 

2386**工具名稱:** `TaskGet`2842**工具名稱:** `TaskGet`

2387 2843 


2400 2856 

2401返回完整的任務記錄,或在找不到 ID 時返回 `null`。2857返回完整的任務記錄,或在找不到 ID 時返回 `null`。

2402 2858 

2403### TaskList2859<h3 id="tasklist">

2860 TaskList

2861</h3>

2404 2862 

2405**工具名稱:** `TaskList`2863**工具名稱:** `TaskList`

2406 2864 


2418 2876 

2419返回當前列表中所有任務的快照。2877返回當前列表中所有任務的快照。

2420 2878 

2421### ExitPlanMode2879<h3 id="exitplanmode">

2880 ExitPlanMode

2881</h3>

2422 2882 

2423**工具名稱:** `ExitPlanMode`2883**工具名稱:** `ExitPlanMode`

2424 2884 


2435 2895 

2436返回退出 Plan Mode 後的計劃狀態。2896返回退出 Plan Mode 後的計劃狀態。

2437 2897 

2438### ListMcpResources2898<h3 id="listmcpresources">

2899 ListMcpResources

2900</h3>

2439 2901 

2440**工具名稱:** `ListMcpResources`2902**工具名稱:** `ListMcpResourcesTool`

2441 2903 

2442```typescript theme={null}2904```typescript theme={null}

2443type ListMcpResourcesOutput = Array<{2905type ListMcpResourcesOutput = Array<{


2451 2913 

2452返回可用 MCP 資源的數組。2914返回可用 MCP 資源的數組。

2453 2915 

2454### ReadMcpResource2916<h3 id="readmcpresource">

2917 ReadMcpResource

2918</h3>

2455 2919 

2456**工具名稱:** `ReadMcpResource`2920**工具名稱:** `ReadMcpResourceTool`

2457 2921 

2458```typescript theme={null}2922```typescript theme={null}

2459type ReadMcpResourceOutput = {2923type ReadMcpResourceOutput = {


2467 2931 

2468返回請求的 MCP 資源的內容。2932返回請求的 MCP 資源的內容。

2469 2933 

2470### EnterWorktree2934<h3 id="enterworktree">

2935 EnterWorktree

2936</h3>

2471 2937 

2472**工具名稱:** `EnterWorktree`2938**工具名稱:** `EnterWorktree`

2473 2939 


2481 2947 

2482返回有關 git worktree 的信息。2948返回有關 git worktree 的信息。

2483 2949 

2484## 權限類型2950<h2 id="permission-types">

2951 權限類型

2952</h2>

2485 2953 

2486### `PermissionUpdate`2954<h3 id="permissionupdate">

2955 `PermissionUpdate`

2956</h3>

2487 2957 

2488用於更新權限的操作。2958用於更新權限的操作。

2489 2959 


2524 };2994 };

2525```2995```

2526 2996 

2527### `PermissionBehavior`2997<h3 id="permissionbehavior">

2998 `PermissionBehavior`

2999</h3>

2528 3000 

2529```typescript theme={null}3001```typescript theme={null}

2530type PermissionBehavior = "allow" | "deny" | "ask";3002type PermissionBehavior = "allow" | "deny" | "ask";

2531```3003```

2532 3004 

2533### `PermissionUpdateDestination`3005<h3 id="permissionupdatedestination">

3006 `PermissionUpdateDestination`

3007</h3>

2534 3008 

2535```typescript theme={null}3009```typescript theme={null}

2536type PermissionUpdateDestination =3010type PermissionUpdateDestination =


2541 | "cliArg"; // CLI 參數3015 | "cliArg"; // CLI 參數

2542```3016```

2543 3017 

2544### `PermissionRuleValue`3018<h3 id="permissionrulevalue">

3019 `PermissionRuleValue`

3020</h3>

2545 3021 

2546```typescript theme={null}3022```typescript theme={null}

2547type PermissionRuleValue = {3023type PermissionRuleValue = {


2550};3026};

2551```3027```

2552 3028 

2553## 其他類型3029<h2 id="other-types">

3030 其他類型

3031</h2>

2554 3032 

2555### `ApiKeySource`3033<h3 id="apikeysource">

3034 `ApiKeySource`

3035</h3>

2556 3036 

2557```typescript theme={null}3037```typescript theme={null}

2558type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";3038type ApiKeySource = "user" | "project" | "org" | "temporary" | "oauth";

2559```3039```

2560 3040 

2561### `SdkBeta`3041<h3 id="sdkbeta">

3042 `SdkBeta`

3043</h3>

2562 3044 

2563可通過 `betas` 選項啟用的可用測試功能。見 [Beta 標頭](https://platform.claude.com/docs/zh-TW/api/beta-headers) 了解更多信息。3045可通過 `betas` 選項啟用的可用測試功能。見 [Beta 標頭](https://platform.claude.com/docs/zh-TW/api/beta-headers) 了解更多信息。

2564 3046 


2570 `context-1m-2025-08-07` beta 自 2026 年 4 月 30 日起已停用。使用 Claude Sonnet 4.5 或 Sonnet 4 傳遞此值無效,超過標準 200k 令牌上下文窗口的請求返回錯誤。要使用 1M 令牌上下文窗口,請遷移到 [Claude Sonnet 4.6、Claude Opus 4.6 或 Claude Opus 4.7](https://platform.claude.com/docs/zh-TW/about-claude/models/overview),它們以標準定價包括 1M 上下文,無需 beta 標頭。3052 `context-1m-2025-08-07` beta 自 2026 年 4 月 30 日起已停用。使用 Claude Sonnet 4.5 或 Sonnet 4 傳遞此值無效,超過標準 200k 令牌上下文窗口的請求返回錯誤。要使用 1M 令牌上下文窗口,請遷移到 [Claude Sonnet 4.6、Claude Opus 4.6 或 Claude Opus 4.7](https://platform.claude.com/docs/zh-TW/about-claude/models/overview),它們以標準定價包括 1M 上下文,無需 beta 標頭。

2571</Warning>3053</Warning>

2572 3054 

2573### `SlashCommand`3055<h3 id="slashcommand">

3056 `SlashCommand`

3057</h3>

2574 3058 

2575有關可用 slash command 的信息。3059有關可用 slash command 的信息。

2576 3060 


2583};3067};

2584```3068```

2585 3069 

2586### `ModelInfo`3070<h3 id="modelinfo">

3071 `ModelInfo`

3072</h3>

2587 3073 

2588有關可用模型的信息。3074有關可用模型的信息。

2589 3075 


2599};3085};

2600```3086```

2601 3087 

2602### `AgentInfo`3088<h3 id="agentinfo">

3089 `AgentInfo`

3090</h3>

2603 3091 

2604有關可通過 Agent 工具調用的可用子代理的信息。3092有關可通過 Agent 工具調用的可用子代理的信息。

2605 3093 


2617| `description` | `string` | 何時使用此代理的描述 |3105| `description` | `string` | 何時使用此代理的描述 |

2618| `model` | `string \| undefined` | 此代理使用的模型別名。如果省略,繼承父代理的模型 |3106| `model` | `string \| undefined` | 此代理使用的模型別名。如果省略,繼承父代理的模型 |

2619 3107 

2620### `McpServerStatus`3108<h3 id="mcpserverstatus">

3109 `McpServerStatus`

3110</h3>

2621 3111 

2622連接的 MCP 服務器的狀態。3112連接的 MCP 服務器的狀態。

2623 3113 


2644};3134};

2645```3135```

2646 3136 

2647### `McpServerStatusConfig`3137<h3 id="mcpserverstatusconfig">

3138 `McpServerStatusConfig`

3139</h3>

2648 3140 

2649MCP 服務器的配置,如 `mcpServerStatus()` 報告的那樣。這是所有 MCP 服務器傳輸類型的聯合。3141MCP 服務器的配置,如 `mcpServerStatus()` 報告的那樣。這是所有 MCP 服務器傳輸類型的聯合。

2650 3142 


2659 3151 

2660見 [`McpServerConfig`](#mcpserverconfig) 了解每種傳輸類型的詳情。3152見 [`McpServerConfig`](#mcpserverconfig) 了解每種傳輸類型的詳情。

2661 3153 

2662### `AccountInfo`3154<h3 id="accountinfo">

3155 `AccountInfo`

3156</h3>

2663 3157 

2664經過身份驗證的用戶的帳戶信息。3158經過身份驗證的用戶的帳戶信息。

2665 3159 


2673};3167};

2674```3168```

2675 3169 

2676### `ModelUsage`3170<h3 id="modelusage">

3171 `ModelUsage`

3172</h3>

2677 3173 

2678結果消息中返回的每個模型使用統計。`costUSD` 值是客戶端估計。見 [跟蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 了解計費注意事項。3174結果消息中返回的每個模型使用統計。`costUSD` 值是客戶端估計。見 [跟蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 了解計費注意事項。

2679 3175 


2690};3186};

2691```3187```

2692 3188 

2693### `ConfigScope`3189<h3 id="configscope">

3190 `ConfigScope`

3191</h3>

2694 3192 

2695```typescript theme={null}3193```typescript theme={null}

2696type ConfigScope = "local" | "user" | "project";3194type ConfigScope = "local" | "user" | "project";

2697```3195```

2698 3196 

2699### `NonNullableUsage`3197<h3 id="nonnullableusage">

3198 `NonNullableUsage`

3199</h3>

2700 3200 

2701[`Usage`](#usage) 的版本,所有可空字段都變為非可空。3201[`Usage`](#usage) 的版本,所有可空字段都變為非可空。

2702 3202 


2706};3206};

2707```3207```

2708 3208 

2709### `Usage`3209<h3 id="usage">

3210 `Usage`

3211</h3>

2710 3212 

2711令牌使用統計(來自 `@anthropic-ai/sdk`3213令牌使用統計。這是來自 `@anthropic-ai/sdk` 的 `BetaUsage` 類型

2712 3214 

2713```typescript theme={null}3215```typescript theme={null}

2714type Usage = {3216type Usage = {

2715 input_tokens: number | null;3217 input_tokens: number;

2716 output_tokens: number | null;3218 output_tokens: number;

2717 cache_creation_input_tokens?: number | null;3219 cache_creation_input_tokens: number | null;

2718 cache_read_input_tokens?: number | null;3220 cache_read_input_tokens: number | null;

3221 cache_creation: {

3222 ephemeral_5m_input_tokens: number;

3223 ephemeral_1h_input_tokens: number;

3224 } | null;

3225 server_tool_use: BetaServerToolUsage | null;

3226 service_tier: "standard" | "priority" | "batch" | null;

3227 speed: "standard" | "fast" | null;

3228 inference_geo: string | null;

3229 iterations: BetaIterationsUsage | null;

2719};3230};

2720```3231```

2721 3232 

2722### `CallToolResult`3233`BetaServerToolUsage` `BetaIterationsUsage` 在 `@anthropic-ai/sdk` 中定義。

3234 

3235<h3 id="calltoolresult">

3236 `CallToolResult`

3237</h3>

2723 3238 

2724MCP 工具結果類型(來自 `@modelcontextprotocol/sdk/types.js`)。`structuredContent` 是一個 JSON 對象,可以與 `content` 一起返回,包括圖像塊。見 [返回結構化數據](/zh-TW/agent-sdk/custom-tools#return-structured-data)。3239MCP 工具結果類型(來自 `@modelcontextprotocol/sdk/types.js`)。`structuredContent` 是一個 JSON 對象,可以與 `content` 一起返回,包括圖像塊。見 [返回結構化數據](/zh-TW/agent-sdk/custom-tools#return-structured-data)。

2725 3240 


2734};3249};

2735```3250```

2736 3251 

2737### `ThinkingConfig`3252<h3 id="thinkingconfig">

3253 `ThinkingConfig`

3254</h3>

2738 3255 

2739控制 Claude 的思考/推理行為。優先於已棄用的 `maxThinkingTokens`。3256控制 Claude 的思考/推理行為。優先於已棄用的 `maxThinkingTokens`。

2740 3257 


2749 3266 

2750可選的 `display` 字段控制思考文本是否返回為 `"summarized"` 或 `"omitted"`。在 Claude Opus 4.7 及更高版本上,API 默認值為 `"omitted"`,因此設置 `"summarized"` 以在 `thinking` 塊中接收思考內容。3267可選的 `display` 字段控制思考文本是否返回為 `"summarized"` 或 `"omitted"`。在 Claude Opus 4.7 及更高版本上,API 默認值為 `"omitted"`,因此設置 `"summarized"` 以在 `thinking` 塊中接收思考內容。

2751 3268 

2752### `SpawnedProcess`3269<h3 id="spawnedprocess">

3270 `SpawnedProcess`

3271</h3>

2753 3272 

2754自定義進程生成的介面(與 `spawnClaudeCodeProcess` 選項一起使用)。`ChildProcess` 已滿足此介面。3273自定義進程生成的介面(與 `spawnClaudeCodeProcess` 選項一起使用)。`ChildProcess` 已滿足此介面。

2755 3274 


2778}3297}

2779```3298```

2780 3299 

2781### `SpawnOptions`3300<h3 id="spawnoptions">

3301 `SpawnOptions`

3302</h3>

2782 3303 

2783傳遞給自定義生成函數的選項。3304傳遞給自定義生成函數的選項。

2784 3305 


2792}3313}

2793```3314```

2794 3315 

2795### `McpSetServersResult`3316<Note>

3317 `signal` 字段告訴您的生成函數何時拆除進程。將其作為 `signal` 選項傳遞給 Node 的 `spawn()`,或將其傳遞給您的 VM 或容器拆除處理程序。

3318 

3319 此信號不會在 [`Options.abortController`](#options) 中止的瞬間觸發。SDK 首先關閉進程的 stdin 並等待約兩秒,以便 CLI 可以乾淨地關閉,然後中止此信號。要在調用者中止的瞬間做出反應,請改為監聽您自己的 `Options.abortController.signal`,您的生成函數可以從其封閉範圍引用。

3320</Note>

3321 

3322<h3 id="mcpsetserversresult">

3323 `McpSetServersResult`

3324</h3>

2796 3325 

2797`setMcpServers()` 操作的結果。3326`setMcpServers()` 操作的結果。

2798 3327 


2804};3333};

2805```3334```

2806 3335 

2807### `RewindFilesResult`3336<h3 id="rewindfilesresult">

3337 `RewindFilesResult`

3338</h3>

2808 3339 

2809`rewindFiles()` 操作的結果。3340`rewindFiles()` 操作的結果。

2810 3341 


2818};3349};

2819```3350```

2820 3351 

2821### `SDKStatusMessage`3352<h3 id="sdkstatusmessage">

3353 `SDKStatusMessage`

3354</h3>

2822 3355 

2823狀態更新消息(例如,壓縮)。3356狀態更新消息(例如,壓縮)。

2824 3357 


2833};3366};

2834```3367```

2835 3368 

2836### `SDKTaskNotificationMessage`3369<h3 id="sdktasknotificationmessage">

3370 `SDKTaskNotificationMessage`

3371</h3>

2837 3372 

2838後台任務完成、失敗或停止時的通知。後台任務包括 `run_in_background` Bash 命令、[Monitor](#monitor) 監視和後台子代理。3373後台任務完成、失敗或停止時的通知。後台任務包括 `run_in_background` Bash 命令、[Monitor](#monitor) 監視和後台子代理。

2839 3374 


2856};3391};

2857```3392```

2858 3393 

2859### `SDKToolUseSummaryMessage`3394<h3 id="sdktoolusesummarymessage">

3395 `SDKToolUseSummaryMessage`

3396</h3>

2860 3397 

2861對話中工具使用的摘要。3398對話中工具使用的摘要。

2862 3399 


2870};3407};

2871```3408```

2872 3409 

2873### `SDKHookStartedMessage`3410<h3 id="sdkhookstartedmessage">

3411 `SDKHookStartedMessage`

3412</h3>

2874 3413 

2875Hook 開始執行時發出。3414Hook 開始執行時發出。

2876 3415 


2886};3425};

2887```3426```

2888 3427 

2889### `SDKHookProgressMessage`3428<h3 id="sdkhookprogressmessage">

3429 `SDKHookProgressMessage`

3430</h3>

2890 3431 

2891Hook 運行時發出,帶有 stdout/stderr 輸出。3432Hook 運行時發出,帶有 stdout/stderr 輸出。

2892 3433 


2905};3446};

2906```3447```

2907 3448 

2908### `SDKHookResponseMessage`3449<h3 id="sdkhookresponsemessage">

3450 `SDKHookResponseMessage`

3451</h3>

2909 3452 

2910Hook 完成執行時發出。3453Hook 完成執行時發出。

2911 3454 


2926};3469};

2927```3470```

2928 3471 

2929### `SDKToolProgressMessage`3472<h3 id="sdktoolprogressmessage">

3473 `SDKToolProgressMessage`

3474</h3>

2930 3475 

2931工具執行時定期發出,以指示進度。3476工具執行時定期發出,以指示進度。

2932 3477 


2943};3488};

2944```3489```

2945 3490 

2946### `SDKAuthStatusMessage`3491<h3 id="sdkauthstatusmessage">

3492 `SDKAuthStatusMessage`

3493</h3>

2947 3494 

2948在身份驗證流程中發出。3495在身份驗證流程中發出。

2949 3496 


2958};3505};

2959```3506```

2960 3507 

2961### `SDKTaskStartedMessage`3508<h3 id="sdktaskstartedmessage">

3509 `SDKTaskStartedMessage`

3510</h3>

2962 3511 

2963後台任務開始時發出。`task_type` 字段是 `"local_bash"` 用於後台 Bash 命令和 [Monitor](#monitor) 監視,`"local_agent"` 用於子代理,或 `"remote_agent"`。3512後台任務開始時發出。`task_type` 字段是 `"local_bash"` 用於後台 Bash 命令和 [Monitor](#monitor) 監視,`"local_agent"` 用於子代理,或 `"remote_agent"`。

2964 3513 


2975};3524};

2976```3525```

2977 3526 

2978### `SDKTaskProgressMessage`3527<h3 id="sdktaskprogressmessage">

3528 `SDKTaskProgressMessage`

3529</h3>

2979 3530 

2980後台任務運行時定期發出3531子代理或後台任務運行時定期發出`summary` 字段僅在啟用 [`agentProgressSummaries`](#options) 時填充。

2981 3532 

2982```typescript theme={null}3533```typescript theme={null}

2983type SDKTaskProgressMessage = {3534type SDKTaskProgressMessage = {


2986 task_id: string;3537 task_id: string;

2987 tool_use_id?: string;3538 tool_use_id?: string;

2988 description: string;3539 description: string;

3540 subagent_type?: string;

2989 usage: {3541 usage: {

2990 total_tokens: number;3542 total_tokens: number;

2991 tool_uses: number;3543 tool_uses: number;

2992 duration_ms: number;3544 duration_ms: number;

2993 };3545 };

2994 last_tool_name?: string;3546 last_tool_name?: string;

3547 summary?: string;

2995 uuid: UUID;3548 uuid: UUID;

2996 session_id: string;3549 session_id: string;

2997};3550};

2998```3551```

2999 3552 

3000### `SDKTaskUpdatedMessage`3553<h3 id="sdktaskupdatedmessage">

3554 `SDKTaskUpdatedMessage`

3555</h3>

3001 3556 

3002後台任務的狀態發生變化時發出,例如當它從 `running` 轉換為 `completed` 時。將 `patch` 合併到按 `task_id` 鍵入的本地任務映射中。`end_time` 字段是 Unix 紀元時間戳(以毫秒為單位),可與 `Date.now()` 比較。3557後台任務的狀態發生變化時發出,例如當它從 `running` 轉換為 `completed` 時。將 `patch` 合併到按 `task_id` 鍵入的本地任務映射中。`end_time` 字段是 Unix 紀元時間戳(以毫秒為單位),可與 `Date.now()` 比較。

3003 3558 


3019};3574};

3020```3575```

3021 3576 

3022### `SDKFilesPersistedEvent`3577<h3 id="sdkfilespersistedevent">

3578 `SDKFilesPersistedEvent`

3579</h3>

3023 3580 

3024文件檢查點持久化到磁盤時發出。3581文件檢查點持久化到磁盤時發出。

3025 3582 


3035};3592};

3036```3593```

3037 3594 

3038### `SDKRateLimitEvent`3595<h3 id="sdkratelimitevent">

3596 `SDKRateLimitEvent`

3597</h3>

3039 3598 

3040會話遇到速率限制時發出。3599會話遇到速率限制時發出。

3041 3600 


3052};3611};

3053```3612```

3054 3613 

3055### `SDKLocalCommandOutputMessage`3614<h3 id="sdklocalcommandoutputmessage">

3615 `SDKLocalCommandOutputMessage`

3616</h3>

3056 3617 

3057本地 slash command 的輸出(例如,`/voice` 或 `/usage`)。在記錄中顯示為助手風格的文本。3618本地 slash command 的輸出(例如,`/voice` 或 `/usage`)。在記錄中顯示為助手風格的文本。

3058 3619 


3066};3627};

3067```3628```

3068 3629 

3069### `SDKPromptSuggestionMessage`3630<h3 id="sdkcommandschangedmessage">

3631 `SDKCommandsChangedMessage`

3632</h3>

3633 

3634可用命令集在會話中期發生變化時發出,例如當代理進入子目錄時發現技能。`commands` 陣列是完整的更新列表,因此用此有效負載替換任何緩存的命令列表。再次調用 `supportedCommands()` 不等同:該方法返回在初始化時捕獲的快照,不反映會話中期的變化。

3635 

3636```typescript theme={null}

3637type SDKCommandsChangedMessage = {

3638 type: "system";

3639 subtype: "commands_changed";

3640 commands: SlashCommand[];

3641 uuid: UUID;

3642 session_id: string;

3643};

3644```

3645 

3646<h3 id="sdkpromptsuggestionmessage">

3647 `SDKPromptSuggestionMessage`

3648</h3>

3070 3649 

3071啟用 `promptSuggestions` 時在每個轉數後發出。包含預測的下一個用戶提示。3650啟用 `promptSuggestions` 時在每個轉數後發出。包含預測的下一個用戶提示。

3072 3651 


3079};3658};

3080```3659```

3081 3660 

3082### `AbortError`3661<h3 id="aborterror">

3662 `AbortError`

3663</h3>

3083 3664 

3084中止操作的自定義錯誤類。3665中止操作的自定義錯誤類。

3085 3666 


3087class AbortError extends Error {}3668class AbortError extends Error {}

3088```3669```

3089 3670 

3090## 沙箱配置3671<h2 id="sandbox-configuration">

3672 沙箱配置

3673</h2>

3091 3674 

3092### `SandboxSettings`3675<h3 id="sandboxsettings">

3676 `SandboxSettings`

3677</h3>

3093 3678 

3094沙箱行為的配置。使用此選項以編程方式啟用命令沙箱和配置網絡限制。3679沙箱行為的配置。使用此選項以編程方式啟用命令沙箱和配置網絡限制。

3095 3680 

3096```typescript theme={null}3681```typescript theme={null}

3097type SandboxSettings = {3682type SandboxSettings = {

3098 enabled?: boolean;3683 enabled?: boolean;

3684 failIfUnavailable?: boolean;

3099 autoAllowBashIfSandboxed?: boolean;3685 autoAllowBashIfSandboxed?: boolean;

3100 excludedCommands?: string[];3686 excludedCommands?: string[];

3101 allowUnsandboxedCommands?: boolean;3687 allowUnsandboxedCommands?: boolean;


3110| 屬性 | 類型 | 默認值 | 描述 |3696| 屬性 | 類型 | 默認值 | 描述 |

3111| :-------------------------- | :---------------------------------------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------- |3697| :-------------------------- | :---------------------------------------------------- | :---------- | :------------------------------------------------------------------------------------------------------------------------------- |

3112| `enabled` | `boolean` | `false` | 為命令執行啟用沙箱模式 |3698| `enabled` | `boolean` | `false` | 為命令執行啟用沙箱模式 |

3699| `failIfUnavailable` | `boolean` | `true` | 如果 `enabled` 為 `true` 但沙箱無法啟動,則在啟動時停止。設置為 `false` 以回退到無沙箱執行,並在 stderr 上顯示警告 |

3113| `autoAllowBashIfSandboxed` | `boolean` | `true` | 啟用沙箱時自動批准 bash 命令 |3700| `autoAllowBashIfSandboxed` | `boolean` | `true` | 啟用沙箱時自動批准 bash 命令 |

3114| `excludedCommands` | `string[]` | `[]` | 始終繞過沙箱限制的命令(例如,`['docker']`)。這些自動運行在沙箱外,無需模型參與 |3701| `excludedCommands` | `string[]` | `[]` | 始終繞過沙箱限制的命令(例如,`['docker']`)。這些自動運行在沙箱外,無需模型參與 |

3115| `allowUnsandboxedCommands` | `boolean` | `true` | 允許模型請求在沙箱外運行命令。當為 `true` 時,模型可以在工具輸入中設置 `dangerouslyDisableSandbox`,這會回退到 [權限系統](#permissions-fallback-for-unsandboxed-commands) |3702| `allowUnsandboxedCommands` | `boolean` | `true` | 允許模型請求在沙箱外運行命令。當為 `true` 時,模型可以在工具輸入中設置 `dangerouslyDisableSandbox`,這會回退到 [權限系統](#permissions-fallback-for-unsandboxed-commands) |


3119| `enableWeakerNestedSandbox` | `boolean` | `false` | 為兼容性啟用較弱的嵌套沙箱 |3706| `enableWeakerNestedSandbox` | `boolean` | `false` | 為兼容性啟用較弱的嵌套沙箱 |

3120| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | 沙箱環境中的自定義 ripgrep 二進制配置 |3707| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | 沙箱環境中的自定義 ripgrep 二進制配置 |

3121 3708 

3122#### 示例用法3709<Note>

3710 沙箱取決於平台支持,在 Linux 上,還需要 `bubblewrap` 和 `socat` 等工具。當 `enabled` 為 `true` 且沙箱無法啟動時,`query()` 會報告一條 `result` 消息,其中 `subtype: "error_during_execution"`,並在 `errors` 中包含原因,然後停止。應監視該子類型,而不是期望 `query()` 在產生消息之前拋出異常。

3711 

3712 要改為運行無沙箱,請設置 `failIfUnavailable: false`。

3713</Note>

3714 

3715<h4 id="example-usage">

3716 示例用法

3717</h4>

3123 3718 

3124```typescript theme={null}3719```typescript theme={null}

3125import { query } from "@anthropic-ai/claude-agent-sdk";3720import { query } from "@anthropic-ai/claude-agent-sdk";


3144 **Unix socket 安全性:** `allowUnixSockets` 選項可以授予對強大系統服務的訪問權限。例如,允許 `/var/run/docker.sock` 實際上通過 Docker API 授予對主機系統的完全訪問權限,繞過沙箱隔離。僅允許絕對必要的 Unix sockets 並了解每個的安全含義。3739 **Unix socket 安全性:** `allowUnixSockets` 選項可以授予對強大系統服務的訪問權限。例如,允許 `/var/run/docker.sock` 實際上通過 Docker API 授予對主機系統的完全訪問權限,繞過沙箱隔離。僅允許絕對必要的 Unix sockets 並了解每個的安全含義。

3145</Warning>3740</Warning>

3146 3741 

3147### `SandboxNetworkConfig`3742<h3 id="sandboxnetworkconfig">

3743 `SandboxNetworkConfig`

3744</h3>

3148 3745 

3149沙箱模式的網絡特定配置。3746沙箱模式的網絡特定配置。這些設置適用於當父級 [`SandboxSettings`](#sandboxsettings) 中的 `enabled` 為 `true` 時的沙箱化 Bash 命令。它們不限制 WebFetch 工具,該工具改用 [權限規則](/zh-TW/permissions#webfetch)。

3150 3747 

3151```typescript theme={null}3748```typescript theme={null}

3152type SandboxNetworkConfig = {3749type SandboxNetworkConfig = {


3176 內置沙箱代理根據請求的主機名強制執行 `allowedDomains`,並且不終止或檢查 TLS 流量,因此 [域前置](https://en.wikipedia.org/wiki/Domain_fronting) 等技術可能會繞過它。有關詳細信息,請參閱 [沙箱安全限制](/zh-TW/sandboxing#security-limitations),以及 [安全部署](/zh-TW/agent-sdk/secure-deployment#traffic-forwarding) 以配置 TLS 終止代理。3773 內置沙箱代理根據請求的主機名強制執行 `allowedDomains`,並且不終止或檢查 TLS 流量,因此 [域前置](https://en.wikipedia.org/wiki/Domain_fronting) 等技術可能會繞過它。有關詳細信息,請參閱 [沙箱安全限制](/zh-TW/sandboxing#security-limitations),以及 [安全部署](/zh-TW/agent-sdk/secure-deployment#traffic-forwarding) 以配置 TLS 終止代理。

3177</Note>3774</Note>

3178 3775 

3179### `SandboxFilesystemConfig`3776<h3 id="sandboxfilesystemconfig">

3777 `SandboxFilesystemConfig`

3778</h3>

3180 3779 

3181沙箱模式的文件系統特定配置。3780沙箱模式的文件系統特定配置。

3182 3781 


3194| `denyWrite` | `string[]` | `[]` | 拒絕寫入訪問的文件路徑模式 |3793| `denyWrite` | `string[]` | `[]` | 拒絕寫入訪問的文件路徑模式 |

3195| `denyRead` | `string[]` | `[]` | 拒絕讀取訪問的文件路徑模式 |3794| `denyRead` | `string[]` | `[]` | 拒絕讀取訪問的文件路徑模式 |

3196 3795 

3197### 無沙箱命令的權限回退3796<h3 id="permissions-fallback-for-unsandboxed-commands">

3797 無沙箱命令的權限回退

3798</h3>

3198 3799 

3199啟用 `allowUnsandboxedCommands` 時,模型可以通過在工具輸入中設置 `dangerouslyDisableSandbox: true` 來請求在沙箱外運行命令。這些請求回退到現有的權限系統,意味著您的 `canUseTool` 處理程序被調用,允許您實現自定義授權邏輯。3800啟用 `allowUnsandboxedCommands` 時,模型可以通過在工具輸入中設置 `dangerouslyDisableSandbox: true` 來請求在沙箱外運行命令。這些請求回退到現有的權限系統,意味著您的 `canUseTool` 處理程序被調用,允許您實現自定義授權邏輯。

3200 3801 


3250 如果 `permissionMode` 設置為 `bypassPermissions` 且 `allowUnsandboxedCommands` 啟用,模型可以自主執行沙箱外的命令,無需任何批准提示。此組合實際上允許模型無聲地逃離沙箱隔離。3851 如果 `permissionMode` 設置為 `bypassPermissions` 且 `allowUnsandboxedCommands` 啟用,模型可以自主執行沙箱外的命令,無需任何批准提示。此組合實際上允許模型無聲地逃離沙箱隔離。

3251</Warning>3852</Warning>

3252 3853 

3253## 另見3854<h2 id="see-also">

3855 另見

3856</h2>

3254 3857 

3255* [SDK 概述](/zh-TW/agent-sdk/overview) - 常規 SDK 概念3858* [SDK 概述](/zh-TW/agent-sdk/overview) - 常規 SDK 概念

3256* [Python SDK 參考](/zh-TW/agent-sdk/python) - Python SDK 文檔3859* [Python SDK 參考](/zh-TW/agent-sdk/python) - Python SDK 文檔

Details

18* `session.send()`:發送訊息18* `session.send()`:發送訊息

19* `session.stream()`:取得回應19* `session.stream()`:取得回應

20 20 

21## 安裝21<h2 id="installation">

22 安裝

23</h2>

22 24 

23Agent SDK 0.2.x 是包含 V2 介面的最後一個版本。套件版本從 0.2.x 直接跳到 0.3.142,因此上面的移除版本和下面的安裝固定版本描述的是同一個邊界。若要安裝最後一個 V2 相容版本,請固定主要和次要版本:25Agent SDK 0.2.x 是包含 V2 介面的最後一個版本。套件版本從 0.2.x 直接跳到 0.3.142,因此上面的移除版本和下面的安裝固定版本描述的是同一個邊界。若要安裝最後一個 V2 相容版本,請固定主要和次要版本:

24 26 


30 SDK 為您的平台捆綁了一個原生 Claude Code 二進位檔案作為可選依賴項,因此您無需單獨安裝 Claude Code。32 SDK 為您的平台捆綁了一個原生 Claude Code 二進位檔案作為可選依賴項,因此您無需單獨安裝 Claude Code。

31</Note>33</Note>

32 34 

33## 快速開始35<h2 id="quick-start">

36 快速開始

37</h2>

34 38 

35### 單次提示39<h3 id="one-shot-prompt">

40 單次提示

41</h3>

36 42 

37對於不需要維護會話的簡單單輪查詢,請使用 `unstable_v2_prompt()`。此範例發送一個數學問題並記錄答案:43對於不需要維護會話的簡單單輪查詢,請使用 `unstable_v2_prompt()`。此範例發送一個數學問題並記錄答案:

38 44 


66 ```72 ```

67</details>73</details>

68 74 

69### 基本會話75<h3 id="basic-session">

76 基本會話

77</h3>

70 78 

71對於超出單個提示的互動,請建立一個會話。V2 將發送和串流分為不同的步驟:79對於超出單個提示的互動,請建立一個會話。V2 將發送和串流分為不同的步驟:

72 80 


122 ```130 ```

123</details>131</details>

124 132 

125### 多輪對話133<h3 id="multi-turn-conversation">

134 多輪對話

135</h3>

126 136 

127會話在多次交換中保持上下文。要繼續對話,請在同一會話上再次呼叫 `send()`。Claude 會記住之前的輪次。137會話在多次交換中保持上下文。要繼續對話,請在同一會話上再次呼叫 `send()`。Claude 會記住之前的輪次。

128 138 


201 ```211 ```

202</details>212</details>

203 213 

204### 會話恢復214<h3 id="session-resume">

215 會話恢復

216</h3>

205 217 

206如果您有來自先前互動的會話 ID,您可以稍後恢復它。這對於長時間運行的工作流程或當您需要在應用程式重新啟動時保持對話時很有用。218如果您有來自先前互動的會話 ID,您可以稍後恢復它。這對於長時間運行的工作流程或當您需要在應用程式重新啟動時保持對話時很有用。

207 219 


301 ```313 ```

302</details>314</details>

303 315 

304### 清理316<h3 id="cleanup">

317 清理

318</h3>

305 319 

306會話可以手動關閉或使用 [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management)(TypeScript 5.2+ 功能用於自動資源清理)自動關閉。如果您使用的是較舊的 TypeScript 版本或遇到相容性問題,請改用手動清理。320會話可以手動關閉或使用 [`await using`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management)(TypeScript 5.2+ 功能用於自動資源清理)自動關閉。如果您使用的是較舊的 TypeScript 版本或遇到相容性問題,請改用手動清理。

307 321 


328session.close();342session.close();

329```343```

330 344 

331## API 參考345<h2 id="api-reference">

346 API 參考

347</h2>

332 348 

333### `unstable_v2_createSession()`349<h3 id="unstable_v2_createsession">

350 `unstable_v2_createSession()`

351</h3>

334 352 

335為多輪對話建立新會話。353為多輪對話建立新會話。

336 354 


341}): SDKSession;359}): SDKSession;

342```360```

343 361 

344### `unstable_v2_resumeSession()`362<h3 id="unstable_v2_resumesession">

363 `unstable_v2_resumeSession()`

364</h3>

345 365 

346按 ID 恢復現有會話。366按 ID 恢復現有會話。

347 367 


355): SDKSession;375): SDKSession;

356```376```

357 377 

358### `unstable_v2_prompt()`378<h3 id="unstable_v2_prompt">

379 `unstable_v2_prompt()`

380</h3>

359 381 

360用於單輪查詢的單次便利函數。382用於單輪查詢的單次便利函數。

361 383 


369): Promise<SDKResultMessage>;391): Promise<SDKResultMessage>;

370```392```

371 393 

372### SDKSession 介面394<h3 id="sdksession-interface">

395 SDKSession 介面

396</h3>

373 397 

374```typescript theme={null}398```typescript theme={null}

375interface SDKSession {399interface SDKSession {


380}404}

381```405```

382 406 

383## 功能可用性407<h2 id="feature-availability">

408 功能可用性

409</h2>

384 410 

385V2 會話 API 不支援每個 V1 功能。以下功能需要使用 [V1 SDK](/zh-TW/agent-sdk/typescript):411V2 會話 API 不支援每個 V1 功能。以下功能需要使用 [V1 SDK](/zh-TW/agent-sdk/typescript):

386 412 

387* 會話分叉(`forkSession` 選項)413* 會話分叉(`forkSession` 選項)

388* 某些進階串流輸入模式414* 某些進階串流輸入模式

389 415 

390## 另請參閱416<h2 id="see-also">

417 另請參閱

418</h2>

391 419 

392* [TypeScript SDK 參考(V1)](/zh-TW/agent-sdk/typescript) - 完整的 V1 SDK 文件420* [TypeScript SDK 參考(V1)](/zh-TW/agent-sdk/typescript) - 完整的 V1 SDK 文件

393* [SDK 概述](/zh-TW/agent-sdk/overview) - 一般 SDK 概念421* [SDK 概述](/zh-TW/agent-sdk/overview) - 一般 SDK 概念

Details

626返回 `answers` 物件,將每個問題的 `question` 欄位對應到所選選項的 `label`:626返回 `answers` 物件,將每個問題的 `question` 欄位對應到所選選項的 `label`:

627 627 

628| 欄位 | 描述 |628| 欄位 | 描述 |

629| ----------- | ------------------ |629| ----------- | ----------------------------- |

630| `questions` | 傳遞原始問題陣列(工具處理所需) |630| `questions` | 傳遞原始問題陣列(工具處理所需) |

631| `answers` | 物件,其中鍵是問題文字,值是所選標籤 |631| `answers` | 物件,其中鍵是問題文字,值是所選標籤 |

632| `response` | 可選的自由形式回覆,使用者輸入的內容,而不是回答結構化問題 |

632 633 

633對於多選問題,傳遞標籤陣列或使用 `", "` 連接它們。對於自由文字輸入直接使用使用者的自訂文字634對於多選問題,傳遞標籤陣列或使用 `", "` 連接它們。對於每個問題的自由文字例如「其他」選項,將使用者的文字放在 `answers[question]` 中,如[支援自由文字輸入](#support-free-text-input)中所示僅當您的 UI 讓使用者關閉問題卡並輸入不是任何特定問題答案的一般回覆時,才設定 `response`。當設定 `response` 時,Claude 會收到「使用者回應:…」而不是每個問題的答案清單。

634 635 

635```json theme={null}636```json theme={null}

636{637{

agent-view.md +214 −70

Details

30* [從 shell 管理工作階段](#manage-sessions-from-the-shell)30* [從 shell 管理工作階段](#manage-sessions-from-the-shell)

31* [背景工作階段如何被託管](#how-background-sessions-are-hosted),由監督程序31* [背景工作階段如何被託管](#how-background-sessions-are-hosted),由監督程序

32 32 

33## 快速開始33<h2 id="quick-start">

34 快速開始

35</h2>

34 36 

35本逐步解說涵蓋核心 agent view 迴圈:分派工作、觀看其列更新(Claude 正在工作)、查看以檢查並回覆,以及附加到完整對話。您分派的工作階段在關閉 agent view 後會繼續執行,因此您可以離開並稍後返回。37本逐步解說涵蓋核心 agent view 迴圈:分派工作、觀看其列更新(Claude 正在工作)、查看以檢查並回覆,以及附加到完整對話。您分派的工作階段在關閉 agent view 後會繼續執行,因此您可以離開並稍後返回。

36 38 


58 </Step>60 </Step>

59 61 

60 <Step title="附加和分離">62 <Step title="附加和分離">

61 在一列上按 `Enter` 或 `→` 以在需要完整對話時附加。工作階段接管終端,就像您執行了 `claude` 一樣。在空提示上按 `←` 分離並返回表格。63 在一列上按 `Enter` 或 `→` 以在需要完整對話時附加。工作階段接管終端,就像完整的互動式 Claude Code 工作階段一樣。在空提示上按 `←` 分離並返回表格。

62 </Step>64 </Step>

63 65 

64 <Step title="帶入現有工作階段">66 <Step title="帶入現有工作階段">


68 70 

69您可以使用 `claude agents` 作為主要進入點而不是 `claude`:從 agent view 分派每個工作,在需要完整對話時附加,然後按 `←` 返回表格。71您可以使用 `claude agents` 作為主要進入點而不是 `claude`:從 agent view 分派每個工作,在需要完整對話時附加,然後按 `←` 返回表格。

70 72 

71## 使用 agent view 監控工作階段73<h2 id="monitor-sessions-with-agent-view">

74 使用 agent view 監控工作階段

75</h2>

72 76 

73執行 `claude agents` 開啟 agent view。它接管整個終端並列出按狀態分組的每個工作階段,固定的工作階段和需要您的工作階段在頂部。每行顯示工作階段的名稱、當前活動和上次更改的時間。77執行 `claude agents` 開啟 agent view。它接管整個終端並列出按狀態分組的每個工作階段,固定的工作階段和需要您的工作階段在頂部。每行顯示工作階段的名稱、當前活動和上次更改的時間。

74 78 


87 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m91 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m

88 92 

89Ready for review93Ready for review

90 ∙ jump physics github.com/example/game/pull/2048 2h94 ∙ jump physics Opened PR with collision fix PR #2048 2h

91 95 

92Needs input96Needs input

93 ✻ power-up design needs input: double jump or wall climb? 1m97 ✻ power-up design needs input: double jump or wall climb? 1m


102 … 6 more106 … 6 more

103```107```

104 108 

105### 讀取工作階段狀態109<h3 id="read-session-state">

110 讀取工作階段狀態

111</h3>

106 112 

107每行開始的圖示,其顏色和動畫顯示工作階段的狀態:113每行開始的圖示,其顏色和動畫顯示工作階段的狀態:

108 114 


123| `∙` | 程序已退出。您仍然可以查看、回覆或附加,Claude 從中斷的地方重新啟動 |129| `∙` | 程序已退出。您仍然可以查看、回覆或附加,Claude 從中斷的地方重新啟動 |

124| `✢` | 一個 [`/loop`](/zh-TW/scheduled-tasks) 工作階段在迭代之間休眠。該行顯示其執行計數和倒計時 |130| `✢` | 一個 [`/loop`](/zh-TW/scheduled-tasks) 工作階段在迭代之間休眠。該行顯示其執行計數和倒計時 |

125 131 

126出現在行右邊緣的 `` [拉取請求狀態](#pull-request-status) 指示器,不是狀態圖示的一部分。它前面的數字是工作階段開啟的拉取請求計數132出現在行右邊緣的 `PR #N` 標籤是 [工作階段開啟的拉取請求](#pull-request-status),不是狀態圖示的一部分。當工作階段開啟了多個拉取請求時,標籤會顯示計數,例如 `3 PRs`

133 

134終端標籤標題在 agent view 開啟時顯示等待輸入計數:當工作階段需要輸入時為 `2 awaiting input · claude agents`,或當沒有工作階段需要輸入時為 `claude agents`。

127 135 

128背景工作階段不需要任何開啟的終端即可繼續工作。單獨的 [監督程序](#the-supervisor-process) 執行它們,因此您可以關閉 agent view、關閉 shell 或啟動新的互動工作階段,您分派的工作會繼續進行。136背景工作階段不需要任何開啟的終端即可繼續工作。單獨的 [監督程序](#the-supervisor-process) 執行它們,因此您可以關閉 agent view、關閉 shell 或啟動新的互動工作階段,您分派的工作會繼續進行。

129 137 

130工作階段狀態通過自動更新和監督程序重新啟動在磁碟上持久化。工作階段也會在您的機器進入睡眠時保留。它們的程序在喚醒時恢復,監督程序會重新連接到它們,而不是將時間間隔視為閒置。關閉仍會停止執行中的工作階段;請參閱 [工作階段在關閉後顯示為失敗](#sessions-show-as-failed-after-shutdown) 以了解如何恢復它們。138工作階段狀態通過自動更新和監督程序重新啟動在磁碟上持久化。工作階段也會在您的機器進入睡眠時保留。它們的程序在喚醒時恢復,監督程序會重新連接到它們,而不是將時間間隔視為閒置。關閉仍會停止執行中的工作階段;請參閱 [工作階段在關閉後顯示為失敗](#sessions-show-as-failed-after-shutdown) 以了解如何恢復它們。

131 139 

132### 行摘要140<h3 id="row-summaries">

141 行摘要

142</h3>

133 143 

134每行中的單行摘要由 [Haiku-class 模型](/zh-TW/model-config) 生成,因此該行可以告訴您工作階段正在做什麼、需要什麼或生成了什麼,無需開啟記錄。當工作階段主動工作時,摘要最多每 15 秒刷新一次,加上每個回合結束時刷新一次。144每行中的單行摘要由 [Haiku-class 模型](/zh-TW/model-config) 生成,因此該行可以告訴您工作階段正在做什麼、需要什麼或生成了什麼,無需開啟記錄。當工作階段主動工作時,摘要最多每 15 秒刷新一次,加上每個回合結束時刷新一次。

135 145 

136每次刷新都是通過您的正常提供者的一個簡短 Haiku-class 請求,按照與工作階段本身相同的 [資料使用條款](/zh-TW/data-usage) 計費和處理。146每次刷新都是通過您的正常提供者的一個簡短 Haiku-class 請求,按照與工作階段本身相同的 [資料使用條款](/zh-TW/data-usage) 計費和處理。在第三方提供者(例如 Bedrock、Vertex AI、Microsoft Foundry 和自訂閘道)上,當未配置 Haiku 模型時,請求會回退到工作階段的主要模型。設定 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/zh-TW/model-config#environment-variables) 以在這些提供者上為這些摘要選擇模型。

147 

148<h3 id="pull-request-status">

149 拉取請求狀態

150</h3>

151 

152當工作階段開啟拉取請求時,`PR #1234` 標籤會出現在該行的右邊緣,在支援超連結的終端中連結到拉取請求。當您向工作階段發送後續訊息時標籤會保留,因此拉取請求在該行恢復為即時進度時保持可見。

137 153 

138### 拉取請求狀態154當工作階段開啟了多個拉取請求時,標籤會顯示計數,例如 `3 PRs`,按最需要關注的開啟拉取請求著色。開啟 [查看面板](#peek-and-reply) 以查看它們全部。

139 155 

140當工作階段開啟拉取請求時,狀態點會出現在該行的右邊緣,在支援超連結的終端中連結到拉取請求。當工作階段開啟了多個拉取請求時,計數會出現在點之前,顏色反映最需要關注的那個。156拉取請求編號按其狀態著色:

141 157 

142| 點的顏色 | 拉取請求狀態 |158| 顏色 | 拉取請求狀態 |

143| :--- | :------------ |159| :- | :------------ |

144| 黃色 | 等待檢查或審查,或檢查失敗 |160| 黃色 | 等待檢查或審查,或檢查失敗 |

145| 綠色 | 檢查通過且沒有審查阻止 |161| 綠色 | 檢查通過且沒有審查阻止 |

146| 紫色 | 已合併 |162| 紫色 | 已合併 |

147| 灰色 | 草稿或已關閉 |163| 灰色 | 草稿或已關閉 |

148 164 

149對於大多數任務,此行是您收集結果的地方當點變綠時審查並合併拉取請求165對於大多數任務,此欄是您收集結果的地方當拉取請求編號變綠時審查並合併拉取請求

150 166 

151### 查看和回覆167<h3 id="peek-and-reply">

168 查看和回覆

169</h3>

152 170 

153在選定的行上按 `Space` 開啟查看面板。它顯示工作階段需要您提供什麼、其最近的輸出以及它開啟的任何拉取請求。大多數時候這就足夠了,您永遠不需要開啟完整記錄。171在選定的行上按 `Space` 開啟查看面板。它顯示工作階段需要您提供什麼、其最近的輸出以及它開啟的任何拉取請求。大多數時候這就足夠了,您永遠不需要開啟完整記錄。

154 172 

155在查看面板中輸入回覆並按 `Enter` 將其發送到該工作階段。當工作階段詢問多選問題時,查看面板顯示選項,您可以按數字鍵選擇一個。對於其他被阻止的工作階段,按 `Tab` 用建議的回覆填充輸入,您可以在發送前編輯。使用 `!` 前綴回覆以發送 Bash 命令。173在查看面板中輸入回覆並按 `Enter` 將其發送到該工作階段。當工作階段詢問多選問題時,查看面板顯示選項,您可以按數字鍵選擇一個。對於其他被阻止的工作階段,按 `Tab` 用建議的回覆填充輸入,您可以在發送前編輯。使用 `!` 前綴回覆以發送 Bash 命令。

156 174 

175啟用 [語音聽寫](/zh-TW/voice-dictation) 後,在回覆輸入有焦點時按住或點擊您的推送通話鍵以聽寫回覆,而不是輸入。同樣的方式也適用於 agent view 底部的分派輸入。

176 

157使用 `↑` 和 `↓` 查看相鄰工作階段而無需關閉面板,或按 `→` 附加。177使用 `↑` 和 `↓` 查看相鄰工作階段而無需關閉面板,或按 `→` 附加。

158 178 

159### 附加到工作階段179<h3 id="attach-to-a-session">

180 附加到工作階段

181</h3>

160 182 

161在選定的行上按 `Enter` 或 `→` 附加。Agent view 被完整的互動工作階段替換,就像您在該目錄中執行了 `claude` 一樣。附加時,Claude 發佈您離開時發生的簡短回顧。183在選定的行上按 `Enter` 或 `→` 附加。Agent view 被完整的互動工作階段替換。附加時,Claude 發佈您離開時發生的簡短回顧。

162 184 

163附加時,工作階段的行為與任何其他 Claude Code 工作階段相同:每個 [命令](/zh-TW/commands)、快捷鍵和功能都有效。185附加時,工作階段的行為與任何其他 Claude Code 工作階段相同:每個 [命令](/zh-TW/commands)、快捷鍵和功能都有效。

164 186 

187附加的工作階段始終以 [全螢幕模式](/zh-TW/fullscreen) 呈現,無論您的 `tui` 設定如何,因為背景工作階段沒有終端滾動回溯可附加。使用 `PgUp`、`PgDn` 或滑鼠滾輪滾動,並按 `Ctrl+O` 進入記錄模式。您終端的原生滾動和 tmux 複製模式只顯示當前視口,與執行任何全螢幕應用程式時相同。

188 

165在空提示上按 `←` 分離並返回 agent view。如果對話框有焦點且不響應 `←`,按 `Ctrl+Z` 立即分離。189在空提示上按 `←` 分離並返回 agent view。如果對話框有焦點且不響應 `←`,按 `Ctrl+Z` 立即分離。

166 190 

167分離永遠不會停止背景工作階段:`←`、`Ctrl+C`、`Ctrl+D`、`Ctrl+Z` `/exit` 都會讓它繼續執行。要從內部結束工作階段執行 `/stop`。191`Ctrl+C` 在附加時保持其標準中斷行為:它取消執行中的回應或 `!` shell 命令而不是分離。在空提示上按 `Ctrl+C` 兩次會分離,與任何工作階段中相同

168 192 

169在您分派或背景化工作階段後,在空提示上按 `←` 可從任何 Claude Code 工作階段工作,而不僅僅是您從 agent view 附加的工作階段。它背景化當前工作階段並開啟 agent view,預先選擇該工作階段,因此您可以在不離開終端的情況下切換工作階段。該行會被建立,即使是從沒有對話歷史的全新工作階段,所以 `` 會返回到它當該行是唯一的行時agent view 會在其下方顯示一個入門提示。您可以在 `/config` 中關閉此快捷鍵(`leftArrowOpensAgents` 設定)193分離永遠不會停止背景工作階段:`←`、`Ctrl+Z`、`/exit` 和雙 `Ctrl+C` 或雙 `Ctrl+D` 都會讓它繼續執行要從內部結束工作階段執行 `/stop`。

170 194 

171### 組織列表195在空提示上按 `←` 可從任何 Claude Code 工作階段工作,而不僅僅是您從 agent view 附加的工作階段。它背景化當前工作階段並開啟 agent view,預先選擇該工作階段,因此您可以在不離開終端的情況下切換工作階段。該行會被建立,即使是從沒有對話歷史的全新工作階段,所以 `→` 會返回到它。當該行是唯一的行時,agent view 會在其下方顯示一個入門提示。您可以在 `/config` 中關閉此快捷鍵(`leftArrowOpensAgents` 設定)。

196 

197<h3 id="organize-the-list">

198 組織列表

199</h3>

172 200 

173Agent view 按狀態分組工作階段,需要輸入的工作階段在頂部,`Ready for review` 和 `Needs input` 在 `Working` 和 `Completed` 上方。這些組名稱不與上面的 [狀態](#read-session-state) 一一對應:當工作階段有開啟的拉取請求時,它會移動到 `Ready for review`,`Completed` 收集已完成、失敗和已停止的工作階段。按 `Ctrl+S` 改為按目錄分組。您的選擇在執行中保存。201Agent view 按狀態分組工作階段,需要輸入的工作階段在頂部,`Ready for review` 和 `Needs input` 在 `Working` 和 `Completed` 上方。這些組名稱不與上面的 [狀態](#read-session-state) 一一對應:當工作階段有開啟的拉取請求時,它會移動到 `Ready for review`,`Completed` 收集已完成、失敗和已停止的工作階段。按 `Ctrl+S` 改為按目錄分組。您的選擇在執行中保存。

174 202 

175在組內:203在組內:

176 204 

177* 按 `Ctrl+T` 將工作階段固定到頂部205* 按 `Ctrl+T` 將工作階段固定到頂部並 [在閒置時保持其程序執行](#the-supervisor-process)

178* 按 `Shift+↑` 或 `Shift+↓` 重新排序工作階段206* 按 `Shift+↑` 或 `Shift+↓` 重新排序工作階段

179* 按 `Ctrl+R` 重命名工作階段207* 按 `Ctrl+R` 重命名工作階段

180* 在組標題上按 `Enter` 摺疊它208* 在組標題上按 `Enter` 摺疊它

181 209 

182要移除工作階段,按 `Ctrl+X` 停止它,然後在兩秒內再次按 `Ctrl+X` 刪除它。在組標題上按 `Ctrl+X` 會在確認後刪除該組中的每個工作階段。210要移除工作階段,按 `Ctrl+X` 停止它,然後在兩秒內再次按 `Ctrl+X` 刪除它。在組標題上按 `Ctrl+X` 會在確認後刪除該組中的每個工作階段。

183 211 

184刪除會從 agent view 中移除工作階段並移除其對話記錄。如果 Claude [為工作階段建立了 worktree](#how-file-edits-are-isolated),刪除會移除該 worktree,包括其中的任何未提交的更改,因此在刪除前推送或提交您想保留的工作。您自己建立的 worktree 並在其中啟動工作階段的會保留在原地。212刪除會從 agent view 中移除工作階段。如果 Claude [為工作階段建立了 worktree](#how-file-edits-are-isolated),刪除會移除該 worktree,包括其中的任何未提交的更改,因此在刪除前推送或提交您想保留的工作。您自己建立的 worktree 並在其中啟動工作階段的會保留在原地。對話記錄會保留在您的本機上,並且仍然可以通過 `claude --resume` 存取。

185 213 

186較舊的已完成工作階段摺疊為 `… N more` 行以保持列表簡短。失敗和具有開啟拉取請求的工作階段始終保持可見。214較舊的已完成工作階段摺疊為 `… N more` 行以保持列表簡短。失敗和具有開啟拉取請求的工作階段始終保持可見。

187 215 

188### 篩選工作階段216<h3 id="filter-sessions">

217 篩選工作階段

218</h3>

189 219 

190在分派輸入中輸入以篩選而不是分派:220在分派輸入中輸入以篩選而不是分派:

191 221 


195| `s:<state>` | 給定狀態中的工作階段,例如 `s:working`。也接受 `s:blocked` 表示等待您的所有工作階段 |225| `s:<state>` | 給定狀態中的工作階段,例如 `s:working`。也接受 `s:blocked` 表示等待您的所有工作階段 |

196| `#<number>` 或 PR URL | 在該拉取請求上工作的工作階段 |226| `#<number>` 或 PR URL | 在該拉取請求上工作的工作階段 |

197 227 

198### 快捷鍵228<h3 id="keyboard-shortcuts">

229 快捷鍵

230</h3>

199 231 

200在 agent view 中按 `?` 查看每個快捷鍵。下表總結了它們。232在 agent view 中按 `?` 查看每個快捷鍵。下表總結了它們。

201 233 


218| `Ctrl+C` | 清除輸入;按兩次退出 |250| `Ctrl+C` | 清除輸入;按兩次退出 |

219| `?` | 顯示所有快捷鍵 |251| `?` | 顯示所有快捷鍵 |

220 252 

221## 分派新代理253<h2 id="dispatch-new-agents">

254 分派新代理

255</h2>

222 256 

223您可以從 agent view 分派新的背景工作階段、將現有互動工作階段發送到背景,或直接從 shell 啟動一個。257您可以從 agent view 分派新的背景工作階段、將現有互動工作階段發送到背景,或直接從 shell 啟動一個。

224 258 

225### 從 agent view259<h3 id="from-agent-view">

260 從 agent view

261</h3>

226 262 

227在 agent view 底部的輸入框中輸入提示,然後按 `Enter` 啟動新的背景工作階段。工作階段從提示自動命名;稍後可以使用 `Ctrl+R` 重命名它。263在 agent view 底部的輸入框中輸入提示,然後按 `Enter` 啟動新的背景工作階段。工作階段從提示自動命名;稍後可以使用 `Ctrl+R` 重命名它。

228 264 


235| `<agent-name> <prompt>` | 如果第一個單詞與自訂 [subagent](/zh-TW/sub-agents) 名稱匹配,該 subagent 以工作階段的主代理身份執行,其 frontmatter 中的配置 |271| `<agent-name> <prompt>` | 如果第一個單詞與自訂 [subagent](/zh-TW/sub-agents) 名稱匹配,該 subagent 以工作階段的主代理身份執行,其 frontmatter 中的配置 |

236| `@<agent-name>` | 在提示中的任何地方提及自訂 subagent 以將其作為主代理執行 |272| `@<agent-name>` | 在提示中的任何地方提及自訂 subagent 以將其作為主代理執行 |

237| `@<repo>` | 提及您開啟 agent view 的目錄下的存儲庫以在那裡執行工作階段 |273| `@<repo>` | 提及您開啟 agent view 的目錄下的存儲庫以在那裡執行工作階段 |

238| `/<skill>` | 建議 [skills](/zh-TW/skills) 作為提示分派 |274| `/<command>` | 建議 [skills](/zh-TW/skills) 和 [commands](/zh-TW/commands) 作為提示分派 |

275| `! <command>` | 執行 shell 命令作為背景工作而不是啟動 Claude 工作階段。該工作顯示為一行,您可以附加到、監視和分離 |

239| `#<number>` 或拉取請求 URL | 如果工作階段已在該 PR 上工作,選擇它而不是分派 |276| `#<number>` 或拉取請求 URL | 如果工作階段已在該 PR 上工作,選擇它而不是分派 |

240| `Shift+Enter` | 分派並立即附加到新工作階段 |277| `Shift+Enter` | 分派並立即附加到新工作階段 |

241 278 

279一小組命令在 agent view 本身中執行,而不是分派:`/exit` 和 `/quit` 關閉 agent view,`/logout` 將您登出。所有其他命令和 skill 都作為新背景工作階段的第一個提示發送。

280 

242將重複任務打包為 [skill](/zh-TW/skills) 可讓您從 agent view 多次啟動相同的工作流程,無需重新輸入提示。281將重複任務打包為 [skill](/zh-TW/skills) 可讓您從 agent view 多次啟動相同的工作流程,無需重新輸入提示。

243 282 

244當相同的 `@name` 同時與 subagent 和同級存儲庫匹配時,subagent 優先。不帶 `@` 的第一個單詞形式也適用,因此以與您的 subagent 名稱之一匹配的單詞開頭的提示會分派該 subagent 而不是將該單詞視為純文本。當您想要明確時,請使用 `@` 形式,或以不同的單詞開頭提示以避免匹配。283當相同的 `@name` 同時與 subagent 和同級存儲庫匹配時,subagent 優先。不帶 `@` 的第一個單詞形式也適用,因此以與您的 subagent 名稱之一匹配的單詞開頭的提示會分派該 subagent 而不是將該單詞視為純文本。當您想要明確時,請使用 `@` 形式,或以不同的單詞開頭提示以避免匹配。

245 284 

246#### 分派到特定目錄285<h4 id="dispatch-to-a-specific-directory">

286 分派到特定目錄

287</h4>

247 288 

248新工作階段在您開啟 agent view 的目錄中執行。要針對不同的目錄:289新工作階段在您開啟 agent view 的目錄中執行。要針對不同的目錄:

249 290 


253 294 

254當 agent view 按目錄分組時,突出顯示的行的目錄成為分派目標,因此您可以滾動到組並在其中分派,無需重新輸入路徑。295當 agent view 按目錄分組時,突出顯示的行的目錄成為分派目標,因此您可以滾動到組並在其中分派,無需重新輸入路徑。

255 296 

256### 從工作階段內部297<h3 id="from-inside-a-session">

298 從工作階段內部

299</h3>

257 300 

258執行 `/background` 或其別名 `/bg` 將當前對話移動到背景工作階段。傳遞提示,例如 `/bg run the test suite and fix any failures`,以在分派前發送一個額外的指令。301執行 `/background` 或其別名 `/bg` 將當前對話移動到背景工作階段。傳遞提示,例如 `/bg run the test suite and fix any failures`,以在分派前發送一個額外的指令。如果 Claude 在您執行 `/bg` 時正在回應,回應會在背景工作階段中繼續。

259 302 

260從互動工作階段背景化會啟動一個新的進程,該進程從保存的對話恢復,因此執行 subagents、[monitors](/zh-TW/tools-reference#monitor-tool) 和背景命令不會轉移到它。當任何正在執行時,Claude 會要求您在背景化前確認。進入背景後,工作階段可以啟動新的 subagents、monitors 和背景命令,這些命令在稍後分離和重新附加時保持執行。303從互動工作階段背景化會啟動一個新的進程,該進程從保存的對話恢復,因此執行 subagents、[monitors](/zh-TW/tools-reference#monitor-tool) 和背景命令不會轉移到它。當任何正在執行時,Claude 會要求您在背景化前確認。進入背景後,工作階段可以啟動新的 subagents、monitors 和背景命令,這些命令在稍後分離和重新附加時保持執行。

261 304 


268* `--fallback-model`311* `--fallback-model`

269* `--allow-dangerously-skip-permissions`312* `--allow-dangerously-skip-permissions`

270 313 

314您在工作階段期間使用 [`/add-dir`](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration) 新增的目錄也會傳遞。

315 

271傳遞 `--allow-dangerously-skip-permissions` 會在背景化工作階段中保持 `bypassPermissions` 可達,但它不會授予任何新的權限。該模式仍然需要在任何工作階段使用它之前進行相同的一次性互動接受,如 [Permission mode, model, and effort](#permission-mode-model-and-effort) 中所述。316傳遞 `--allow-dangerously-skip-permissions` 會在背景化工作階段中保持 `bypassPermissions` 可達,但它不會授予任何新的權限。該模式仍然需要在任何工作階段使用它之前進行相同的一次性互動接受,如 [Permission mode, model, and effort](#permission-mode-model-and-effort) 中所述。

272 317 

273### 從您的 shell318<h3 id="from-your-shell">

319 從您的 shell

320</h3>

274 321 

275傳遞 `--bg` 啟動直接進入背景的工作階段:322傳遞 `--bg` 啟動直接進入背景的工作階段:

276 323 


290claude --bg --name "flaky-test-fix" "investigate the flaky SettingsChangeDetector test"337claude --bg --name "flaky-test-fix" "investigate the flaky SettingsChangeDetector test"

291```338```

292 339 

293背景化後,Claude 列印工作階段的短 ID 和管理它的命令:340背景化後,Claude 列印工作階段的短 ID 和管理它的命令。當您傳遞 `--name` 時,名稱會出現在短 ID 之後

294 341 

295```text theme={null}342```text theme={null}

296backgrounded · 7c5dcf5d343backgrounded · 7c5dcf5d · flaky-test-fix

297 claude agents list sessions344 claude agents list sessions

298 claude attach 7c5dcf5d open in this terminal345 claude attach 7c5dcf5d open in this terminal

299 claude logs 7c5dcf5d show recent output346 claude logs 7c5dcf5d show recent output

300 claude stop 7c5dcf5d stop this session347 claude stop 7c5dcf5d stop this session

301```348```

302 349 

303### 檔案編輯如何隔離350<h4 id="run-a-shell-command">

351 執行 shell 命令

352</h4>

353 

354要執行 shell 命令作為背景工作而不是 Claude 工作階段,請在 agent view 分派輸入的第一個字符中輸入 `!`。`!` 顯示為前綴,您在其後輸入的所有內容都是命令。以下示例從 agent view 輸入框分派 `pytest -x`:

355 

356```text theme={null}

357! pytest -x

358```

359 

360按 `Enter` 啟動工作。相同的工作也可以直接從您的 shell 使用 `--exec` 啟動:

361 

362```bash theme={null}

363claude --bg --exec 'pytest -x'

364```

365 

366該命令作為 PTY 支持的工作執行,並在 agent view 中顯示為一行,其最近的輸出行作為其狀態。shell 工作執行命令代替 Claude,因此不調用任何模型,輸出不發送到任何工作階段。

367 

368要查看輸出,附加到該行,按 `Space` 以在不附加的情況下查看,或從您的 shell 執行 `claude logs <id>`。捕獲的輸出保留在記憶體中,不寫入磁碟。該行及其輸出在命令退出後約五分鐘自動清理,因此如果您需要結果,請在那之前讀取它。

369 

370<h3 id="how-file-edits-are-isolated">

371 檔案編輯如何隔離

372</h3>

304 373 

305每個背景工作階段,無論是從 agent view、`/bg` 或 `claude --bg` 啟動,都在您的工作目錄中啟動。編輯檔案前,Claude 將工作階段移動到 `.claude/worktrees/` 下的隔離 [git worktree](/zh-TW/worktrees) 中,因此並行工作階段可以讀取相同的檢出,但每個都寫入自己的。374每個背景工作階段,無論是從 agent view、`/bg` 或 `claude --bg` 啟動,都在您的工作目錄中啟動。編輯檔案前,Claude 將工作階段移動到 `.claude/worktrees/` 下的隔離 [git worktrees](/zh-TW/worktrees) 中,因此並行工作階段可以讀取相同的檢出,但每個都寫入自己的。

306 375 

307Claude 在以下情況下跳過 worktree:376Claude 在以下情況下跳過 worktree:

308 377 

309* 工作階段已在連結的 git worktree 內,無論 Claude 是在 `.claude/worktrees/` 下建立它,還是您使用 `git worktree add` 在其他地方建立它378* 工作階段已在連結的 git worktree 內,無論 Claude 是在 `.claude/worktrees/` 下建立它,還是您使用 `git worktree add` 在其他地方建立它

310* 工作目錄不是 git 存儲庫379* 工作目錄不是 git 存儲庫且沒有配置 [`WorktreeCreate` hook](/zh-TW/hooks#worktreecreate)

311* 寫入在工作目錄外380* 寫入在工作目錄外

312 381 

313要為 git worktrees 不實用的存儲庫關閉 worktree 隔離,請將 [`worktree.bgIsolation`](/zh-TW/settings#worktree-settings) 設定為 `"none"`。背景工作階段隨後直接編輯您的工作副本,無需先移動到 worktree。將設定新增到專案的 `.claude/settings.json`:382要為 git worktrees 不實用的存儲庫關閉 worktree 隔離,請將 [`worktree.bgIsolation`](/zh-TW/settings#worktree-settings) 設定為 `"none"`。背景工作階段隨後直接編輯您的工作副本,無需先移動到 worktree。將設定新增到專案的 `.claude/settings.json`:


324 `worktree.bgIsolation` 設定需要 Claude Code v2.1.143 或更新版本。393 `worktree.bgIsolation` 設定需要 Claude Code v2.1.143 或更新版本。

325</Note>394</Note>

326 395 

327在 git 存儲庫外,工作階段直接寫入工作目錄,彼此之間不隔離,因此避免分派編輯相同檔案的並行工作階段。396在 git 存儲庫外,工作階段直接寫入工作目錄,彼此之間不隔離,因此避免分派編輯相同檔案的並行工作階段。如果您使用不同的版本控制系統,請配置 [`WorktreeCreate` hook](/zh-TW/worktrees#non-git-version-control),Claude 會以與 git 相同的方式隔離編輯。

328 397 

329在 agent view 中刪除工作階段(`Ctrl+X` 兩次)會移除 Claude 為其建立的 worktree,包括任何未提交的更改,因此在刪除前合併或推送您想保留的更改。從 shell 使用 [`claude rm`](#manage-sessions-from-the-shell) 刪除會保留具有未提交更改的 worktree 並列印其路徑,以便您可以自己清理它。您自己建立並在其中啟動工作階段的 worktree 無論如何都會保留在原位。398在 agent view 中刪除工作階段(`Ctrl+X` 兩次)會移除 Claude 為其建立的 worktree,包括任何未提交的更改,因此在刪除前合併或推送您想保留的更改。從 shell 使用 [`claude rm`](#manage-sessions-from-the-shell) 刪除會保留具有未提交更改的 worktree 並列印其路徑,以便您可以自己清理它。您自己建立並在其中啟動工作階段的 worktree 無論如何都會保留在原位。

330 399 

331要找到工作階段的 worktree 路徑,查看工作階段或附加並檢查其工作目錄。400要找到工作階段的 worktree 路徑,查看工作階段或附加並檢查其工作目錄。

332 401 

333要使 subagent 始終在其自己的 worktree 中執行,無論如何啟動,請在其 frontmatter 中設定 [`isolation: worktree`](/zh-TW/sub-agents#supported-frontmatter-fields)。402[subagent](/zh-TW/sub-agents) 背景工作階段生成的會繼承工作階段的工作目錄,因此其檔案編輯會進入工作階段的 worktree 而不是您的工作副本。要給 subagent 其自己的單獨 worktree,請在其 frontmatter 中設定 [`isolation: worktree`](/zh-TW/sub-agents#supported-frontmatter-fields) 或在生成它時傳遞 `isolation: "worktree"`

334 403 

335### 設定模型404<h3 id="set-the-model">

405 設定模型

406</h3>

336 407 

337agent view 標題中顯示的模型名稱是分派預設值。您從輸入啟動的新工作階段使用此模型,這與 [`/model`](/zh-TW/model-config) 在任何工作階段中控制的設定相同。要為整個 agent view 工作階段覆蓋它,請在開啟 agent view 時傳遞 `--model`。請參閱 [Permission mode, model, and effort](#permission-mode-model-and-effort)。408agent view 標題中顯示的模型名稱是分派預設值。您從輸入啟動的新工作階段使用此模型,這來自您使用者設定中的 [`model` setting](/zh-TW/settings#available-settings)。通過在 [`/model` picker](/zh-TW/model-config) 中選擇模型來設定它,或直接編輯設定。要為整個 agent view 工作階段覆蓋它,請在開啟 agent view 時傳遞 `--model`。請參閱 [Permission mode, model, and effort](#permission-mode-model-and-effort)。

338 409 

339每個背景工作階段可以在不同的模型上執行。要為一個工作階段覆蓋它:410每個背景工作階段可以在不同的模型上執行。要為一個工作階段覆蓋它:

340 411 

341* 從 shell,使用 `claude --bg` 傳遞 `--model`。412* 從 shell,使用 `claude --bg` 傳遞 `--model`。

342* 附加到執行中的工作階段並在那裡執行 `/model`。如果工作階段被重新生成,更改會持續。413* 附加到執行中的工作階段,開啟 `/model`,並在模型上按 `s` 以僅為該工作階段切換。如果工作階段被重新生成,更改會持續。

343* 分派一個 [subagent](/zh-TW/sub-agents),其 frontmatter 設定 `model` 欄位。414* 分派一個 [subagent](/zh-TW/sub-agents),其 frontmatter 設定 `model` 欄位。

344 415 

345### Permission mode, model, and effort416<h3 id="permission-mode-model-and-effort">

417 Permission mode, model, and effort

418</h3>

346 419 

347背景工作階段從它執行的目錄讀取其 [settings](/zh-TW/settings),就像您在那裡啟動了 `claude` 一樣。420背景工作階段從它執行的目錄讀取其 [settings](/zh-TW/settings),就像您在那裡啟動了 `claude` 一樣。

348 421 

349[permission mode](/zh-TW/permissions) 取決於您如何啟動工作階段。使用 `/bg` 或 `←` 背景化現有工作階段會保持當前權限模式,因此您切換到 `acceptEdits` 或 `auto` 的工作階段在分離後仍保持該模式。從 agent view 輸入分派或從 shell 執行 `claude --bg` 使用該目錄設定中的 `defaultMode`,或分派的 [subagent 的 frontmatter](/zh-TW/sub-agents#supported-frontmatter-fields) 中的 `permissionMode`。422[permission mode](/zh-TW/permissions) 取決於您如何啟動工作階段。使用 `/bg` 或 `←` 背景化現有工作階段會保持當前權限模式,因此您切換到 `acceptEdits` 或 `auto` 的工作階段在分離後仍保持該模式。從 agent view 輸入分派或從 shell 執行 `claude --bg` 使用該目錄設定中的 `defaultMode`,或分派的 [subagent 的 frontmatter](/zh-TW/sub-agents#supported-frontmatter-fields) 中的 `permissionMode`。

350 423 

351您啟動背景工作階段時的權限模式在監督者稍後 [stops and restarts](#the-supervisor-process) 工作階段的進程時持續。您使用 `claude --bg --dangerously-skip-permissions` 或 `claude --bg --permission-mode bypassPermissions` 啟動的工作階段在該重新啟動後保持 `bypassPermissions`,而不是回退到目錄的 `defaultMode`。424背景工作階段啟動時的權限模式、模型和努力,以及它攜帶的 [configuration flags](#from-inside-a-session),在監督者稍後 [stops and restarts](#the-supervisor-process) 其進程時都會持續。您使用 `claude --bg --dangerously-skip-permissions` 或 `claude --bg --permission-mode bypassPermissions` 啟動的工作階段在該重新啟動後保持 `bypassPermissions`,而不是回退到目錄的 `defaultMode`,並且您使用 `/model` 或 `/effort` 在工作階段中途更改的模型或努力會被保留

352 425 

353要為您從 agent view 分派的每個工作階段設定預設值,請在開啟它時傳遞 `--permission-mode`、`--model` 或 `--effort` 中的任何一個:426要為您從 agent view 分派的每個工作階段設定預設值,請在開啟它時傳遞 `--permission-mode`、`--model`、`--effort` 或 `--agent` 中的任何一個:

354 427 

355```bash theme={null}428```bash theme={null}

356claude agents --permission-mode plan --model opus --effort high429claude agents --permission-mode plan --model opus --effort high

357```430```

358 431 

432`--agent` 設定 [subagent](/zh-TW/sub-agents),當分派提示未使用 `@name` 或作為第一個單詞命名時使用。如果設定了 [`agent` setting](/zh-TW/settings#available-settings),則預設為該設定,否則為內建的全能 `claude` 代理。在分派輸入中命名 subagent 會覆蓋兩者。

433 

359`claude agents` 也接受 `--dangerously-skip-permissions` 作為 `--permission-mode bypassPermissions` 的簡寫,以及 `--allow-dangerously-skip-permissions` 以在每個分派工作階段的 `Shift+Tab` 循環中提供 `bypassPermissions`,而不是以該模式啟動。兩者都與 [top-level CLI flags](/zh-TW/cli-reference) 相符。434`claude agents` 也接受 `--dangerously-skip-permissions` 作為 `--permission-mode bypassPermissions` 的簡寫,以及 `--allow-dangerously-skip-permissions` 以在每個分派工作階段的 `Shift+Tab` 循環中提供 `bypassPermissions`,而不是以該模式啟動。兩者都與 [top-level CLI flags](/zh-TW/cli-reference) 相符。

360 435 

361<Note>436這些標誌在各個版本中新增。較早的版本會以未知選項錯誤拒絕它們。

362 傳遞 `--permission-mode`、`--model`、`--effort` 或 `--dangerously-skip-permissions` 到 `claude agents` 需要 Claude Code v2.1.142 或更新版本。`--allow-dangerously-skip-permissions` 在 `claude agents` 上需要 v2.1.143 或更新版本。較早的版本會以未知選項錯誤拒絕這些標誌。437 

363</Note>438| 標誌或設定 | 最低版本 |

439| :------------------------------------------------------------------------ | :------- |

440| `--permission-mode`、`--model`、`--effort`、`--dangerously-skip-permissions` | v2.1.142 |

441| `--allow-dangerously-skip-permissions` | v2.1.143 |

442| `--agent` 和尊重分派工作階段的 `agent` 設定 | v2.1.157 |

443 

444在 v2.1.157 之前,agent view 忽略 `agent` 設定並分派內建的 `claude` 代理。

364 445 

365活動預設值出現在分派輸入下方的頁腳中。446活動預設值出現在分派輸入下方的頁腳中。

366 447 


368 449 

369使用 `bypassPermissions` 或 `auto` 被拒絕,直到您通過以互動方式運行 `claude` 接受該模式,因為這些模式讓您未監視的工作階段無需批准即可行動。無論您是將模式傳遞給 `claude agents` 還是 `claude --bg --permission-mode`,同樣的規則也適用。450使用 `bypassPermissions` 或 `auto` 被拒絕,直到您通過以互動方式運行 `claude` 接受該模式,因為這些模式讓您未監視的工作階段無需批准即可行動。無論您是將模式傳遞給 `claude agents` 還是 `claude --bg --permission-mode`,同樣的規則也適用。

370 451 

371### Settings, plugins, and MCP servers452<h3 id="settings-plugins-and-mcp-servers">

453 Settings, plugins, and MCP servers

454</h3>

372 455 

373Agent view 接受與 `claude` 相同的配置標誌,用於載入 settings、plugins、MCP servers 和額外目錄。這些標誌需要 Claude Code v2.1.142 或更新版本。每個標誌適用於 agent view 本身,並傳遞給您從它分派的每個工作階段,因此以這種方式載入的 plugin 或 MCP server 在這些工作階段中也可用。456Agent view 接受與 `claude` 相同的配置標誌,用於載入 settings、plugins、MCP servers 和額外目錄。這些標誌需要 Claude Code v2.1.142 或更新版本。每個標誌適用於 agent view 本身,並傳遞給您從它分派的每個工作階段,因此以這種方式載入的 plugin 或 MCP server 在這些工作階段中也可用。

374 457 


388claude agents --settings ./ci-settings.json --add-dir ../shared-lib471claude agents --settings ./ci-settings.json --add-dir ../shared-lib

389```472```

390 473 

391## 從 shell 管理工作階段474<h2 id="manage-sessions-from-the-shell">

475 從 shell 管理工作階段

476</h2>

392 477 

393每個背景工作階段都有一個短 ID,您可以從 shell 使用。當您使用 `claude --bg` 啟動工作階段時會列印該 ID,每個工作階段的 ID 是其在 `~/.claude/jobs/` 下的目錄名稱。這些命令對於指令碼編寫或當您不想開啟 agent view 時很有用。478每個背景工作階段都有一個短 ID,您可以從 shell 使用。當您使用 `claude --bg` 啟動工作階段時會列印該 ID,每個工作階段的 ID 是其在 `~/.claude/jobs/` 下的目錄名稱。這些命令對於指令碼編寫或當您不想開啟 agent view 時很有用。

394 479 

395| 命令 | 目的 |480| 命令 | 目的 |

396| :--------------------------- | :-------------------------------------------------------------------------------------------- |481| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |

397| `claude agents` | 開啟 agent view |482| `claude agents` | 開啟 agent view |

398| `claude agents --cwd <path>` | 開啟 agent view,範圍限定於在 `<path>` 下啟動的工作階段 |483| `claude agents --cwd <path>` | 開啟 agent view,範圍限定於在 `<path>` 下啟動的工作階段 |

484| `claude agents --json` | 將即時工作階段列印為 JSON 陣列並結束。每個項目都有 `pid`、`cwd`、`kind` 和 `startedAt`,加上設定時的 `sessionId`、`name` 和 `status`。與 `--cwd <path>` 結合以篩選 |

399| `claude attach <id>` | 在此終端中附加到工作階段 |485| `claude attach <id>` | 在此終端中附加到工作階段 |

400| `claude logs <id>` | 列印工作階段的最近輸出 |486| `claude logs <id>` | 列印工作階段的最近輸出 |

401| `claude stop <id>` | 停止工作階段。也接受 `claude kill` |487| `claude stop <id>` | 停止工作階段。也接受 `claude kill` |

402| `claude respawn <id>` | 重新啟動工作階段(執行中或已停止),保持其對話完整,例如用於採用更新的 Claude Code 二進位檔案 |488| `claude respawn <id>` | 重新啟動工作階段(執行中或已停止),保持其對話完整,例如用於採用更新的 Claude Code 二進位檔案 |

403| `claude respawn --all` | 重新啟動每個執行中的工作階段,例如一次將所有工作階段移至更新的 Claude Code 二進位檔案 |489| `claude respawn --all` | 重新啟動每個執行中的工作階段,例如一次將所有工作階段移至更新的 Claude Code 二進位檔案 |

404| `claude rm <id>` | 移除工作階段及其文字記錄。如果沒有未提交的變更,會移除 Claude 為工作階段建立的 worktree;否則會列印 worktree 路徑以便您清理。保留您自己建立的 worktree |490| `claude rm <id>` | 從清單中移除工作階段。如果沒有未提交的變更,會移除 Claude 為工作階段建立的 worktree;否則會列印 worktree 路徑以便您清理。保留您自己建立的 worktree。對話記錄會保留在您的本機上,並可透過 `claude --resume` 繼續使用 |

405| `claude daemon status` | 列印 [supervisor](#the-supervisor-process) 的狀態、版本、socket 目錄和 worker 計數 |491| `claude daemon status` | 列印 [supervisor](#the-supervisor-process) 的狀態、版本、socket 目錄和 worker 計數 |

492| `claude daemon stop --any` | 停止 supervisor 程序及其託管的背景工作階段。傳遞 `--keep-workers` 以保持背景工作階段執行中,以便下一個 supervisor 可以重新連接到它們。下一個 `claude agents` 或 `claude --bg` 會啟動全新的 supervisor |

406 493 

407## 背景工作階段如何被託管494<h2 id="how-background-sessions-are-hosted">

495 背景工作階段如何被託管

496</h2>

408 497 

409agent view 中列出的每個工作階段都被視為背景工作階段,無論您目前是否連接到它。相比之下,直接執行 `claude` 啟動的工作階段與該終端相關聯,並在終端關閉時結束,除非您[將其發送到背景](#from-inside-a-session)。498agent view 中列出的每個工作階段都被視為背景工作階段,無論您目前是否連接到它。相比之下,直接執行 `claude` 啟動的工作階段與該終端相關聯,並在終端關閉時結束,除非您[將其發送到背景](#from-inside-a-session)。

410 499 

411### 監督程序500<h3 id="the-supervisor-process">

501 監督程序

502</h3>

412 503 

413背景工作階段由每個使用者的監督程序託管,與您的終端和 agent view 分開。監督程序在您第一次背景化工作階段或開啟 agent view 時自動啟動,您不直接管理它。504背景工作階段由每個使用者的監督程序託管,與您的終端和 agent view 分開。監督程序在您第一次背景化工作階段或開啟 agent view 時自動啟動,您不直接管理它。

414 505 

415監督程序及其工作階段使用與互動工作階段相同的認證進行身份驗證,並且除了模型 API 外不進行額外的網路連接。506監督程序及其工作階段使用與互動工作階段相同的認證進行身份驗證,並且除了模型 API 外不進行額外的網路連接。

416 507 

417每個背景工作階段都是其自己的 Claude Code 程序,由監督程序管理而不是與您的終端相關聯。正在主動工作、等待您的輸入或已連接終端的工作階段保持其程序執行。508每個背景工作階段都是其自己的 Claude Code 程序,由監督程序管理而不是與您的終端相關聯。正在主動工作、等待您的輸入或已連接終端的工作階段保持其程序執行。執行中的背景 shell 命令、子代理、動態工作流程或監視器計為主動工作,因此長時間執行的程序(例如開發伺服器)會保持工作階段活躍。

418 509 

419一旦工作階段完成並在未附加的情況下閒置約一小時,監督程序停止其程序以釋放資源。記錄和狀態保留在磁碟上,下次您附加、查看或回覆時,監督程序從中斷的地方啟動新程序。當每個工作階段都完成且沒有終端連接時,監督程序本身退出,並在下次您需要它時再次啟動。510一旦工作階段完成並在未附加的情況下閒置約一小時,監督程序停止其程序以釋放資源。您使用 `Ctrl+T` [釘選](#organize-the-list)的工作階段不受此限制在閒置時保持其程序執行。無論如何,文字記錄和狀態保留在磁碟上,下次您附加、查看或回覆已停止的工作階段時,監督程序從中斷的地方啟動新程序。當每個工作階段都完成且沒有終端連接時,監督程序本身退出,並在下次您需要它時再次啟動。

420 511 

421監督程序監視磁碟上已安裝的 Claude Code 二進位檔案,並在常規[自動更新程序](/zh-TW/setup#auto-updates)替換它後重新啟動到新版本。這是本地檔案監視不是網路檢查。背景工作階段是分離的程序因此它們在重新啟動期間繼續執行新監督程序重新連接到它們512按下 `←` 留下的空白列從未被給予提示會在約五分鐘後被完全移除以便列表自動清除使用 `claude --bg` 啟動的工作階段和等待設定提示(例如信任對話)的工作階段不會以這種方式被移除。

422 513 

423### 狀態存儲位置514當主機記憶體不足時,監督程序首先停止閒置的未釘選工作階段,只有在釋放任何資源時才停止閒置的釘選工作階段。

515 

516監督程序監視磁碟上已安裝的 Claude Code 二進位檔案,並在常規[自動更新程序](/zh-TW/setup#auto-updates)替換它後重新啟動到新版本。這是本地檔案監視,不是網路檢查。背景工作階段是分離的程序,因此它們在重新啟動期間繼續執行,新監督程序重新連接到它們。閒置的釘選工作階段也會就地重新啟動到新版本,以便它在您不重新附加的情況下獲取更新。

517 

518<h3 id="where-state-is-stored">

519 狀態存儲位置

520</h3>

424 521 

425工作階段狀態存儲在您的 Claude Code 配置目錄下。如果您設定 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),監督程序改用該目錄而不是 `~/.claude`,並作為具有其自己工作階段的單獨實例執行。522工作階段狀態存儲在您的 Claude Code 配置目錄下。如果您設定 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),監督程序改用該目錄而不是 `~/.claude`,並作為具有其自己工作階段的單獨實例執行。

426 523 

427| 路徑 | 內容 |524| 路徑 | 內容 |

428| :------------------------------- | :------------------------ |525| :------------------------------- | :------------------------------- |

429| `~/.claude/daemon.log` | 監督程序日誌 |526| `~/.claude/daemon.log` | 監督程序日誌 |

430| `~/.claude/daemon/roster.json` | 執行中的背景工作階段列表,用於在重新啟動後重新連接 |527| `~/.claude/daemon/roster.json` | 執行中的背景工作階段列表,用於在重新啟動後重新連接 |

431| `~/.claude/jobs/<id>/state.json` | 在 agent view 中顯示的每個工作階段狀態 |528| `~/.claude/jobs/<id>/state.json` | 在 agent view 中顯示的每個工作階段狀態 |

529| `~/.claude/jobs/<id>/tmp/` | 每個工作階段的暫存目錄。寫入此處不會提示權限。工作階段刪除時移除 |

530 

531每個背景工作階段都設定了 `CLAUDE_JOB_DIR` 環境變數,指向其 `~/.claude/jobs/<id>` 目錄,因此工作階段執行的 shell 命令可以將臨時檔案寫入 `$CLAUDE_JOB_DIR/tmp`,而不會與平行工作階段衝突。

432 532 

433要在不直接讀取檔案的情況下檢查此狀態,請執行 `claude daemon status`。它報告監督程序是否可達、其程序 ID 和版本、socket 目錄,以及有多少背景工作階段處於活動狀態。`/doctor` 包含相同檢查的摘要。在 Windows 上,當 daemon 的 pipe-key 檔案被鎖定或無法讀取時,`claude daemon status` 會顯示基礎檔案錯誤,而不是報告通用連接失敗。533要在不直接讀取檔案的情況下檢查此狀態,請執行 `claude daemon status`。它報告監督程序是否可達、其程序 ID 和版本、socket 目錄,以及有多少背景工作階段處於活動狀態。`/doctor` 包含相同檢查的摘要。在 Windows 上,當 daemon 的 pipe-key 檔案被鎖定或無法讀取時,`claude daemon status` 會顯示基礎檔案錯誤,而不是報告通用連接失敗。

434 534 

435### 關閉 agent view535<h3 id="turn-off-agent-view">

536 關閉 agent view

537</h3>

436 538 

437要完全關閉背景代理和 agent view,將 `disableAgentView` [設定](/zh-TW/settings)設為 `true` 或設定 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 環境變數。管理員可以通過[受管設定](/zh-TW/permissions#managed-settings)強制執行此操作。539要完全關閉背景代理和 agent view,將 `disableAgentView` [設定](/zh-TW/settings)設為 `true` 或設定 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 環境變數。管理員可以通過[受管設定](/zh-TW/permissions#managed-settings)強制執行此操作。

438 540 

439## 故障排除541<h2 id="troubleshooting">

542 故障排除

543</h2>

440 544 

441### `claude agents` 列出子代理而不是開啟代理檢視545<h3 id="claude-agents-lists-subagents-instead-of-opening-agent-view">

546 `claude agents` 列出子代理而不是開啟代理檢視

547</h3>

442 548 

443如果 `claude agents` 列印計數後跟著您設定的子代理,然後退出,代理檢視在您的環境中不可用。較早的版本不會在每個環境中開啟代理檢視,包括透過 Bedrock、Vertex AI 或 Foundry 連接時。執行 `claude update` 以安裝最新版本。549如果 `claude agents` 列印計數後跟著您設定的子代理,然後退出,代理檢視在您的環境中不可用。較早的版本不會在每個環境中開啟代理檢視,包括透過 Bedrock、Vertex AI 或 Foundry 連接時。執行 `claude update` 以安裝最新版本。

444 550 

445如果更新後代理檢視仍未開啟,請檢查它是否已被設定或環境變數[關閉](#turn-off-agent-view)。551如果更新後代理檢視仍未開啟,請檢查它是否已被設定或環境變數[關閉](#turn-off-agent-view)。

446 552 

447### Agent view 開啟時沒有工作階段553<h3 id="agent-view-opens-with-no-sessions">

554 Agent view 開啟時沒有工作階段

555</h3>

448 556 

449在您分派第一個工作階段之前,agent view 會顯示簡短的入門提示,並在工作階段清單的位置顯示範例提示。在底部的輸入框中輸入提示並按 `Enter` 以分派您的第一個工作階段。557在您分派第一個工作階段之前,agent view 會顯示簡短的入門提示,並在工作階段清單的位置顯示範例提示。在底部的輸入框中輸入提示並按 `Enter` 以分派您的第一個工作階段。

450 558 

451### 無法開啟代理,因為背景工作正在執行559<h3 id="cannot-open-agents-because-background-tasks-are-running">

560 無法開啟代理,因為背景工作正在執行

561</h3>

452 562 

453如果按 `←` 將目前工作階段放在背景中顯示 `Cannot open agents — N background task(s) running`,工作階段有進行中的工作,例如子代理、工作流程或背景 shell 命令,快捷鍵不會無聲地放棄它。執行 `/tasks` 以查看正在執行的內容,然後執行 `/bg` 以確認放棄它們。請參閱[從工作階段內部](#from-inside-a-session)以了解背景化時哪些會轉移,哪些不會。563如果按 `←` 將目前工作階段放在背景中顯示 `Cannot open agents — N background task(s) running`,工作階段有進行中的工作,例如子代理、動態工作流程或背景 shell 命令,快捷鍵不會無聲地放棄它。執行 `/tasks` 以查看正在執行的內容,然後執行 `/bg` 以確認放棄它們。請參閱[從工作階段內部](#from-inside-a-session)以了解背景化時哪些會轉移,哪些不會。

454 564 

455### 提示被拒絕為過短565<h3 id="prompt-rejected-as-too-short">

566 提示被拒絕為過短

567</h3>

456 568 

457分派輸入期望任務描述,而不是對話開場白。短於四個字元的提示會被拒絕並顯示 `Too short` 提示,以便隨意按鍵不會啟動工作階段。描述您希望工作階段執行的操作,例如 `investigate the flaky checkout test`。569分派輸入期望任務描述,而不是對話開場白。短於四個字元的提示會被拒絕並顯示 `Too short` 提示,以便隨意按鍵不會啟動工作階段。描述您希望工作階段執行的操作,例如 `investigate the flaky checkout test`。

458 570 

459### 工作階段在關閉後顯示為失敗571<h3 id="sessions-show-as-failed-after-shutdown">

572 工作階段在關閉後顯示為失敗

573</h3>

460 574 

461關閉或重新啟動您的機器會停止執行中的背景工作階段,因此當您下次開啟 agent view 時,它們會顯示為失敗。附加、查看或回覆任何工作階段,工作階段會從中斷的地方重新啟動。575關閉或重新啟動您的機器會停止執行中的背景工作階段,因此當您下次開啟 agent view 時,它們會顯示為失敗。附加、查看或回覆任何工作階段,工作階段會從中斷的地方重新啟動。

462 576 

463睡眠單獨不會導致這種情況。工作階段在睡眠期間會被保留,監督程序在喚醒時會重新連接到它們。577睡眠單獨不會導致這種情況。工作階段在睡眠期間會被保留,監督程序在喚醒時會重新連接到它們。

464 578 

465### 附加後工作階段響應緩慢579<h3 id="agent-view-says-the-background-service-did-not-respond">

580 Agent view 表示背景服務未回應

581</h3>

582 

583如果附加、查看或 `claude logs` 報告背景服務未回應,監督程序可能已停止回應。停止它並讓下一個 `claude agents` 啟動新的程序。若要在重新啟動期間保持背景工作階段執行,請傳遞 `--keep-workers`:

584 

585```bash theme={null}

586claude daemon stop --any --keep-workers

587```

588 

589新的監督程序會重新連接到執行中的工作階段。如果沒有 `--keep-workers`,該命令也會結束背景工作階段。`--any` 旗標確認您想要停止按需啟動的監督程序,而不是作為已安裝的服務啟動的程序,這是預設值。

590 

591在 Windows 上,如果監督程序未回應停止請求,該命令會列印其程序 ID。使用 `taskkill /PID <pid>` 結束該程序以完成復原。當您傳遞 `--keep-workers` 時,背景工作階段仍會被保留。

592 

593<h3 id="background-sessions-cannot-read-desktop-documents-or-downloads-on-macos">

594 背景工作階段無法在 macOS 上讀取 Desktop、Documents 或 Downloads

595</h3>

596 

597在 macOS 上,背景工作階段主機作為其自己的程序執行,並與您的終端分開請求對受保護資料夾的存取。如果背景工作階段在讀取 `~/Desktop`、`~/Documents`、`~/Downloads` 或其他受保護位置時報告 `Operation not permitted`,請在系統設定中的隱私與安全性 > 檔案和資料夾下授予存取權限,或為該項目啟用完整磁碟存取。

598 

599使用原生安裝程式,該項目會顯示為 Claude Code,授予的權限在更新後會保留。使用其他安裝方法(例如 Homebrew 或 npm),該項目會顯示二進位檔路徑,更新後可能需要再次授予。

600 

601<h3 id="a-session-is-slow-to-respond-after-attaching">

602 工作階段在附加後響應緩慢

603</h3>

466 604 

467一旦工作階段完成並在未附加的情況下閒置約一小時,監督程序會停止其程序以釋放資源。附加會啟動從中斷的地方開始的新程序,這需要一些時間。正在工作或等待您的工作階段永遠不會以這種方式停止605一旦工作階段完成並在未附加的情況下閒置約一小時,監督程序會停止其程序以釋放資源。附加會啟動從中斷的地方開始的新程序,這需要一些時間。正在工作、等待您或[釘選](#organize-the-list)的工作階段不會以這種方式停止,因此使用 `Ctrl+T` 釘選工作階段以保持其回應性

468 606 

469### `.claude/worktrees/` 正在填滿607<h3 id="claude/worktrees/-is-filling-up">

608 `.claude/worktrees/` 正在填滿

609</h3>

470 610 

471在 agent view 中刪除工作階段會移除 Claude 為其建立的 worktree。`claude rm` 會保留具有未提交變更的 worktree 並列印其路徑。在專案目錄中使用 `git worktree list` 列出剩餘條目,並使用 `git worktree remove <path>` 移除每個。請參閱[清理 worktrees](/zh-TW/worktrees#clean-up-worktrees)。611在 agent view 中刪除工作階段會移除 Claude 為其建立的 worktree。`claude rm` 會保留具有未提交變更的 worktree 並列印其路徑。在專案目錄中使用 `git worktree list` 列出剩餘條目,並使用 `git worktree remove <path>` 移除每個。請參閱[清理 worktrees](/zh-TW/worktrees#clean-up-worktrees)。

472 612 

473## 限制613<h2 id="limitations">

614 限制

615</h2>

474 616 

475Agent view 是研究預覽版本,具有以下限制:617Agent view 是研究預覽版本,具有以下限制:

476 618 


478* **工作階段是本地的**:背景工作階段在您的機器上執行。它們在睡眠時保留,但如果機器關閉則停止。620* **工作階段是本地的**:背景工作階段在您的機器上執行。它們在睡眠時保留,但如果機器關閉則停止。

479* **Claude 建立的 worktrees 在 agent view 中隨工作階段刪除**:在刪除在其自己的 worktree 中編輯檔案的工作階段之前,合併或推送更改。`claude rm` 保留具有未提交更改的 worktree;您自己建立的 worktree 會保留在原位。621* **Claude 建立的 worktrees 在 agent view 中隨工作階段刪除**:在刪除在其自己的 worktree 中編輯檔案的工作階段之前,合併或推送更改。`claude rm` 保留具有未提交更改的 worktree;您自己建立的 worktree 會保留在原位。

480 622 

481## 相關資源623<h2 id="related-resources">

624 相關資源

625</h2>

482 626 

483如需了解在平行中執行 Claude 的其他方式,請參閱:627如需了解在平行中執行 Claude 的其他方式,請參閱:

484 628 

agents.md +32 −12

Details

4 4 

5# 並行運行代理5# 並行運行代理

6 6 

7> 比較 Claude Code 同時處理多個任務的方式:子代理、代理視圖、代理團隊和隔離的 worktree 會話7> 比較 Claude Code 同時處理多個任務的方式:子代理、代理視圖、代理團隊和動態工作流

8 8 

9[子代理](/zh-TW/sub-agents)、[代理視圖](/zh-TW/agent-view)、[代理團隊](/zh-TW/agent-teams) 和 [worktrees](/zh-TW/worktrees) 各自以不同的方式並行化工作。正確的選擇取決於您是否想要自己留在每個對話中、交付任務並稍後檢查,或讓 Claude 為您協調一組工作人員。9[子代理](/zh-TW/sub-agents)、[代理視圖](/zh-TW/agent-view)、[代理團隊](/zh-TW/agent-teams) 和 [動態工作流](/zh-TW/workflows) 各自以不同的方式並行化工作。正確的選擇取決於您是否想要自己留在每個對話中、交付任務並稍後檢查,或讓 Claude 為您協調一組工作人員。

10 10 

11| 方法 | 它提供什麼 | 何時使用 |11| 方法 | 它提供什麼 | 何時使用 |

12| :---------------------------- | :----------------------------------------------- | :---------------------------------- |12| :------------------------- | :-------------------------------------------- | :------------------------------------------------- |

13| [子代理](/zh-TW/sub-agents) | 在一個會話內的委派工作人員,在自己的上下文中執行側任務並返回摘要 | 側任務會用搜尋結果、日誌或您不會再次參考的文件內容淹沒您的主要對話 |13| [子代理](/zh-TW/sub-agents) | 在一個會話內的委派工作人員,在自己的上下文中執行側任務並返回摘要 | 側任務會用搜尋結果、日誌或您不會再次參考的文件內容淹沒您的主要對話 |

14| [代理視圖](/zh-TW/agent-view) | 一個屏幕來調度和監控在後台運行的會話,使用 `claude agents` 打開。研究預覽 | 您有多個獨立任務,想要交付它們,一目了然地檢查狀態,並且只在需要時介入 |14| [代理視圖](/zh-TW/agent-view) | 一個屏幕來調度和監控在後台運行的會話,使用 `claude agents` 打開。研究預覽 | 您有多個獨立任務,想要交付它們,一目了然地檢查狀態,並且只在需要時介入 |

15| [代理團隊](/zh-TW/agent-teams) | 多個協調的會話,具有共享任務列表和代理間消息傳遞,由領導者管理。實驗性功能,默認禁用 | 您希望 Claude 將項目分成多個部分、分配它們並保持工作人員同步 |15| [代理團隊](/zh-TW/agent-teams) | 多個協調的會話,具有共享任務列表和代理間消息傳遞,由領導者管理。實驗性功能,默認禁用 | 您希望 Claude 將項目分成多個部分、分配它們並保持工作人員同步 |

16| [Worktrees](/zh-TW/worktrees) | 單獨的 git 檢出,以便並行會話永遠不會接觸彼此的文件 | 您正在自己運行多個會話,或您的子代理編輯重疊的文件 |16| [動態工作流](/zh-TW/workflows) | 一個運行許多子代理並檢查其結果的腳本,用於一個太大而無法一次協調的工作。研究預覽 | 一個任務對於少數子代理來說太大了:一個代碼庫範圍的審計、一個 500 文件遷移或需要對抗性驗證的研究 |

17| [`/batch`](/zh-TW/commands) | 將一個大型更改計劃分成 5 到 30 個 worktree 隔離的子代理,每個都打開一個拉取請求 | 您可以在一個指令中描述的存儲庫範圍遷移或機械重構 |

18 17 

19在每種方法中,工作人員都是 Claude 會話。要涉及不同的工具,請將其作為 [MCP server](/zh-TW/mcp) 公開給 Claude。18在每種方法中,工作人員都是 Claude 會話。要涉及不同的工具,請將其作為 [MCP server](/zh-TW/mcp) 公開給 Claude。

20 19 

21您可以組合這些方法。代理視圖在需要編輯文件時自動將每個調度的會話移動到自己的 worktree 中,而您正在處理的會話可以生成子代理每個都獲得自己的 worktree。20還有兩個工具支持這項工作但它們本身不是運行代理的方式:

21 

22* [Worktrees](/zh-TW/worktrees) 為每個會話提供單獨的 git 檢出,因此並行會話永遠不會編輯相同的文件。將它們用於您自己運行的會話。代理視圖會自動將每個調度的會話移動到自己的 worktree 中,您生成的子代理也可以各自獲得一個。

23* [`/batch`](/zh-TW/commands) 是一個 [skill](/zh-TW/skills),它讓 Claude 將一個大型更改分成 5 到 30 個 worktree 隔離的子代理,每個都打開一個拉取請求。它是子代理和 worktrees 的打包使用,不是一個單獨的協調風格。

24 

25還有一些其他功能在沒有您驅動每一步的情況下運行 Claude,但它們解決的問題與在代理之間分割工作不同:

26 

27* 一個 [background bash command](/zh-TW/interactive-mode#background-bash-commands) 運行一個 shell 命令而不阻止對話。它不會生成一個代理。

28* 一個 [forked subagent](/zh-TW/sub-agents#fork-the-current-conversation) 是一個繼承您完整對話上下文而不是從頭開始的子代理。它是一種生成子代理的方式,不是一個單獨的表面。

29* 一個 [routine](/zh-TW/routines) 在 Anthropic 的雲中按計劃運行一個會話,而不是在您的機器上並行運行。

22 30 

23<Note>31<Note>

24 同時運行多個會話或子代理會增加令牌使用量。有關使用情況和速率限制詳細信息,請參閱 [Costs](/zh-TW/costs)。32 同時運行多個會話或子代理會增加令牌使用量。有關使用情況和速率限制詳細信息,請參閱 [Costs](/zh-TW/costs)。

25</Note>33</Note>

26 34 

27## 選擇一種方法35<h2 id="choose-an-approach">

36 選擇一種方法

37</h2>

28 38 

29正確的方法取決於誰協調工作、工作人員是否需要通信以及他們是否編輯相同的文件:39正確的方法取決於誰協調工作、工作人員是否需要通信以及他們是否編輯相同的文件:

30 40 

31* **誰協調工作?** 如果您希望 Claude 在一個對話中委派和收集結果,請使用 [子代理](/zh-TW/sub-agents)。如果您正在交付獨立任務並檢查它們,請使用 [代理視圖](/zh-TW/agent-view)。如果您希望 Claude 計劃、分配和監督一組工作人員,請使用 [代理團隊](/zh-TW/agent-teams),這是實驗性的且默認禁用。41* **誰協調工作?**

32* **工作人員需要相互交談嗎?** 子代理將結果報告回生成它們的對話,代理視圖會話只向您報告。代理團隊中的隊友共享任務列表並直接相互發送消息。42 * Claude 在一個對話中委派和收集結果:[subagents](/zh-TW/sub-agents)

33* **任務是否涉及相同的文件?** 使用 [worktrees](/zh-TW/worktrees) 隔離工作。子代理和您自己運行的會話可以各自使用單獨的 worktree。代理團隊不會在 worktrees 中隔離隊友,因此 [分區工作](/zh-TW/agent-teams#avoid-file-conflicts),以便每個隊友擁有不同的文件集。43 * 您交付獨立任務並稍後檢查:[agent view](/zh-TW/agent-view)

44 * Claude 計劃、分配和監督一組工作人員:[agent teams](/zh-TW/agent-teams),實驗性且默認禁用

45 * 一個腳本而不是 Claude 的逐輪判斷來保持協調:[dynamic workflows](/zh-TW/workflows)。請參閱 [workflows 與 subagents 和 skills 的比較方式](/zh-TW/workflows#when-to-use-a-workflow)

46* **工作人員需要相互交談嗎?** Subagents 將結果報告回生成它們的對話,agent view 會話只向您報告。agent team 中的隊友共享任務列表並直接相互發送消息。

47* **任務是否涉及相同的文件?** 使用 [worktrees](/zh-TW/worktrees) 隔離工作。Subagents 和您自己運行的會話可以各自使用單獨的 worktree。Agent teams 不會在 worktrees 中隔離隊友,因此 [分區工作](/zh-TW/agent-teams#avoid-file-conflicts),以便每個隊友擁有不同的文件集。

34 48 

35## 檢查運行中的工作49<h2 id="check-on-running-work">

50 檢查運行中的工作

51</h2>

36 52 

37檢查運行中工作的命令取決於您使用的方法:53檢查運行中工作的命令取決於您使用的方法:

38 54 

39* 對於後台會話,`claude agents` 打開 [代理視圖](/zh-TW/agent-view):一個屏幕顯示每個會話、其狀態以及哪些需要您的輸入。55* 對於後台會話,`claude agents` 打開 [代理視圖](/zh-TW/agent-view):一個屏幕顯示每個會話、其狀態以及哪些需要您的輸入。

40* 對於當前會話中的子代理,`/agents` 打開一個面板,其中 **Running** 選項卡列出實時子代理,**Library** 選項卡是您 [創建和編輯自定義子代理](/zh-TW/sub-agents#use-the-%2Fagents-command) 的地方。儘管名稱相似,但這與 `claude agents` 分開。56* 對於當前會話中的子代理,`/agents` 打開一個面板,其中 **Running** 選項卡列出實時子代理,**Library** 選項卡是您 [創建和編輯自定義子代理](/zh-TW/sub-agents#use-the-%2Fagents-command) 的地方。儘管名稱相似,但這與 `claude agents` 分開。

41* 對於當前會話後台運行的任何內容,`/tasks` 列出每個項目,並讓您檢查、附加到或停止它。57* 對於當前會話後台運行的任何內容,`/tasks` 列出每個項目,並讓您檢查、附加到或停止它。

58* 對於動態工作流程,`/workflows` 列出運行和已完成的運行、每個運行所處的階段,以及有多少代理已完成。

42 59 

43有關所有會話的桌面視圖,請參閱 [桌面應用中的並行會話](/zh-TW/desktop#work-in-parallel-with-sessions)。60有關所有會話的桌面視圖,請參閱 [桌面應用中的並行會話](/zh-TW/desktop#work-in-parallel-with-sessions)。

44 61 

45## 了解更多62<h2 id="learn-more">

63 了解更多

64</h2>

46 65 

47下面的每個指南涵蓋一種方法的設置和配置:66下面的每個指南涵蓋一種方法的設置和配置:

48 67 

49* [創建自定義子代理](/zh-TW/sub-agents):定義可重用的專家並控制他們可以使用的工具。68* [創建自定義子代理](/zh-TW/sub-agents):定義可重用的專家並控制他們可以使用的工具。

50* [使用代理視圖管理代理](/zh-TW/agent-view):調度會話、監視其狀態並在需要時附加。69* [使用代理視圖管理代理](/zh-TW/agent-view):調度會話、監視其狀態並在需要時附加。

51* [協調代理團隊](/zh-TW/agent-teams):設置領導者和隊友、分配任務並審查他們的工作。70* [協調代理團隊](/zh-TW/agent-teams):設置領導者和隊友、分配任務並審查他們的工作。

71* [協調動態工作流](/zh-TW/workflows):運行捆綁的工作流或讓 Claude 編寫一個運行許多子代理並驗證其發現相互對比的工作流。

52* [使用 worktrees 運行並行會話](/zh-TW/worktrees):在隔離的檢出中啟動 Claude、控制複製的內容並在之後進行清理。72* [使用 worktrees 運行並行會話](/zh-TW/worktrees):在隔離的檢出中啟動 Claude、控制複製的內容並在之後進行清理。

amazon-bedrock.md +90 −105

Details

6 6 

7> 了解如何透過 Amazon Bedrock 設定 Claude Code,包括設定、IAM 設定和故障排除。7> 了解如何透過 Amazon Bedrock 設定 Claude Code,包括設定、IAM 設定和故障排除。

8 8 

9export const ContactSalesCard = ({surface}) => {9<h2 id="prerequisites">

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;10 先決條件

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">11</h2>

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79<ContactSalesCard surface="bedrock" />

80 

81## 先決條件

82 12 

83在使用 Bedrock 設定 Claude Code 之前,請確保您具有:13在使用 Bedrock 設定 Claude Code 之前,請確保您具有:

84 14 


89 19 

90若要使用您自己的 Bedrock 認證登入,請遵循下面的[使用 Bedrock 登入](#sign-in-with-bedrock)。若要在整個團隊中部署 Claude Code,請使用[手動設定](#set-up-manually)步驟並在推出前[固定您的模型版本](#4-pin-model-versions)。20若要使用您自己的 Bedrock 認證登入,請遵循下面的[使用 Bedrock 登入](#sign-in-with-bedrock)。若要在整個團隊中部署 Claude Code,請使用[手動設定](#set-up-manually)步驟並在推出前[固定您的模型版本](#4-pin-model-versions)。

91 21 

92## 使用 Bedrock 登入22<h2 id="sign-in-with-bedrock">

23 使用 Bedrock 登入

24</h2>

93 25 

94如果您有 AWS 認證並想開始透過 Bedrock 使用 Claude Code,登入精靈會引導您完成整個過程。您每個帳戶完成一次 AWS 端的先決條件;精靈會處理 Claude Code 端。26如果您有 AWS 認證並想開始透過 Bedrock 使用 Claude Code,登入精靈會引導您完成整個過程。您每個帳戶完成一次 AWS 端的先決條件;精靈會處理 Claude Code 端。

95 27 


109 41 

110登入後,隨時執行 `/setup-bedrock` 以重新開啟精靈並變更您的認證、區域或模型固定。42登入後,隨時執行 `/setup-bedrock` 以重新開啟精靈並變更您的認證、區域或模型固定。

111 43 

112## 手動設定44<h2 id="set-up-manually">

45 手動設定

46</h2>

113 47 

114若要透過環境變數而不是精靈來設定 Bedrock,例如在 CI 或指令碼化企業推出中,請遵循下面的步驟。48若要透過環境變數而不是精靈來設定 Bedrock,例如在 CI 或指令碼化企業推出中,請遵循下面的步驟。

115 49 

116### 1. 提交使用案例詳細資訊50<h3 id="1-submit-use-case-details">

51 1. 提交使用案例詳細資訊

52</h3>

117 53 

118Anthropic 模型的首次使用者必須在叫用模型之前提交使用案例詳細資訊。這是每個 AWS 帳戶執行一次的操作。54Anthropic 模型的首次使用者必須在叫用模型之前提交使用案例詳細資訊。這是每個 AWS 帳戶執行一次的操作。

119 55 


124 60 

125如果您使用 AWS Organizations,您可以使用 [`PutUseCaseForModelAccess` API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html) 從管理帳戶提交一次表單。此呼叫需要 `bedrock:PutUseCaseForModelAccess` IAM 權限。核准會自動延伸到子帳戶。61如果您使用 AWS Organizations,您可以使用 [`PutUseCaseForModelAccess` API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html) 從管理帳戶提交一次表單。此呼叫需要 `bedrock:PutUseCaseForModelAccess` IAM 權限。核准會自動延伸到子帳戶。

126 62 

127### 2. 設定 AWS 認證63<h3 id="2-configure-aws-credentials">

64 2. 設定 AWS 認證

65</h3>

128 66 

129Claude Code 使用預設的 AWS SDK 認證鏈。使用以下其中一種方法設定您的認證:67Claude Code 使用預設的 AWS SDK 認證鏈。使用以下其中一種方法設定您的認證:

130 68 


166 104 

167Bedrock API 金鑰提供了一種更簡單的驗證方法,無需完整的 AWS 認證。[深入了解 Bedrock API 金鑰](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)。105Bedrock API 金鑰提供了一種更簡單的驗證方法,無需完整的 AWS 認證。[深入了解 Bedrock API 金鑰](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)。

168 106 

169#### 進階認證設定107<h4 id="advanced-credential-configuration">

108 進階認證設定

109</h4>

170 110 

171Claude Code 支援 AWS SSO 和公司身分提供者的自動認證重新整理。將這些設定新增至您的 Claude Code 設定檔(請參閱[設定](/zh-TW/settings)以了解檔案位置)。111Claude Code 支援 AWS SSO 和公司身分提供者的自動認證重新整理。將這些設定新增至您的 Claude Code 設定檔(請參閱[設定](/zh-TW/settings)以了解檔案位置)。

172 112 


175* **`awsAuthRefresh`**:僅在 Claude Code 偵測到您的 AWS 認證已過期時執行,基於本機時間戳記或當 Bedrock 傳回認證錯誤時,然後使用重新整理的認證重試請求。115* **`awsAuthRefresh`**:僅在 Claude Code 偵測到您的 AWS 認證已過期時執行,基於本機時間戳記或當 Bedrock 傳回認證錯誤時,然後使用重新整理的認證重試請求。

176* **`awsCredentialExport`**:在工作階段開始時和每次認證重新載入時執行,即使您的 AWS 預設認證提供者鏈中的認證仍然有效。當您的 Bedrock 帳戶需要與預設提供者鏈會解析的認證不同的跨帳戶認證時,請使用此選項。116* **`awsCredentialExport`**:在工作階段開始時和每次認證重新載入時執行,即使您的 AWS 預設認證提供者鏈中的認證仍然有效。當您的 Bedrock 帳戶需要與預設提供者鏈會解析的認證不同的跨帳戶認證時,請使用此選項。

177 117 

178##### 範例設定118<h5 id="example-configuration">

119 範例設定

120</h5>

179 121 

180```json theme={null}122```json theme={null}

181{123{


186}128}

187```129```

188 130 

189##### 設定說明131<h5 id="configuration-settings-explained">

132 設定說明

133</h5>

190 134 

191**`awsAuthRefresh`**:用於修改 `.aws` 目錄的命令,例如更新認證、SSO 快取或設定檔。命令的輸出會顯示給使用者,但不支援互動式輸入。這適用於瀏覽器型 SSO 流程,其中 CLI 顯示 URL 或代碼,您在瀏覽器中完成驗證。135**`awsAuthRefresh`**:用於修改 `.aws` 目錄的命令,例如更新認證、SSO 快取或設定檔。命令的輸出會顯示給使用者,但不支援互動式輸入。這適用於瀏覽器型 SSO 流程,其中 CLI 顯示 URL 或代碼,您在瀏覽器中完成驗證。

192 136 


202}146}

203```147```

204 148 

205### 3. 設定 Claude Code149<h3 id="3-configure-claude-code">

150 3. 設定 Claude Code

151</h3>

206 152 

207設定下列環境變數以啟用 Bedrock:153設定下列環境變數以啟用 Bedrock:

208 154 


223為 Claude Code 啟用 Bedrock 時,請記住以下事項:169為 Claude Code 啟用 Bedrock 時,請記住以下事項:

224 170 

225* `AWS_REGION` 是必需的環境變數。Claude Code 不會從 `.aws` 設定檔讀取此設定。171* `AWS_REGION` 是必需的環境變數。Claude Code 不會從 `.aws` 設定檔讀取此設定。

226* 使用 Bedrock 時,`/login` 和 `/logout` 命令會被停用,因為驗證是透過 AWS 認證處理的。172* 使用 Bedrock 時,`/logout` 命令無法使用,因為驗證是透過 AWS 認證處理的。

173* WebSearch 工具在 Bedrock 上無法使用。請參閱 [WebSearch 工具行為](/zh-TW/tools-reference#websearch-tool-behavior)。

227* 您可以使用設定檔來設定環境變數,例如 `AWS_PROFILE`,您不想將其洩露給其他程序。請參閱[設定](/zh-TW/settings)以取得更多資訊。174* 您可以使用設定檔來設定環境變數,例如 `AWS_PROFILE`,您不想將其洩露給其他程序。請參閱[設定](/zh-TW/settings)以取得更多資訊。

228 175 

229### 4. 固定模型版本176<h3 id="4-pin-model-versions">

177 4. 固定模型版本

178</h3>

230 179 

231<Warning>180<Warning>

232 在部署給多個使用者時固定特定的模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為最新版本,當 Anthropic 發佈更新時,該版本可能在您的 Bedrock 帳戶中尚不可用。Claude Code 在啟動時會在最新版本不可用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。181 在部署給多個使用者時固定特定的模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為最新版本,當 Anthropic 發佈更新時,該版本可能在您的 Bedrock 帳戶中尚不可用。Claude Code 在啟動時會在最新版本不可用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。


234 183 

235將這些環境變數設定為特定的 Bedrock 模型 ID。184將這些環境變數設定為特定的 Bedrock 模型 ID。

236 185 

237如果沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,Bedrock 上的 `opus` 別名會解析為 Opus 4.6。將其設定為 Opus 4.7 ID 以使用最新模型:186如果沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,Bedrock 上的 `opus` 別名會解析為 Opus 4.6。將其設定為 Opus 4.8 ID 以使用最新模型:

238 187 

239```bash theme={null}188```bash theme={null}

240export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'189export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-8'

241export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'190export ANTHROPIC_DEFAULT_SONNET_MODEL='us.anthropic.claude-sonnet-4-6'

242export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'191export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

243```192```

244 193 

245這些變數使用跨區域推論設定檔 ID(帶有 `us.` 前綴)。如果您使用不同的區域前綴或應用程式推論設定檔,請相應調整。如需目前和舊版模型 ID,請參閱[模型概觀](https://platform.claude.com/docs/en/about-claude/models/overview)。請參閱[模型設定](/zh-TW/model-config#pin-models-for-third-party-deployments)以取得完整的環境變數清單。194這些變數使用跨區域推論設定檔 ID(帶有 `us.` 前綴)。如果您使用不同的區域前綴或應用程式推論設定檔,請相應調整。如需目前和舊版模型 ID,請參閱[模型概觀](https://platform.claude.com/docs/en/about-claude/models/overview)。請參閱[模型設定](/zh-TW/model-config#pin-models-for-third-party-deployments)以取得完整的環境變數清單。

246 195 

247未設定固定變數時,Claude Code 使用這些預設模型:196Claude Code 使用這些預設模型,當未設定固定變數時

248 197 

249| 模型類型 | 預設值 |198| 模型類型 | 預設值 |

250| :------ | :--------------------------------------------- |199| :------ | :--------------------------------------------- |


270export ENABLE_PROMPT_CACHING_1H=1219export ENABLE_PROMPT_CACHING_1H=1

271```220```

272 221 

273<Note>[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 可能不適用於所有區域使用 1 小時 TTL 的快取寫入按比 5 分鐘寫入更高的費率計費。</Note>2221 小時快取 TTL 的計費費率高於 5 分鐘預設值。請參閱[快取生命週期](/zh-TW/prompt-caching#cache-lifetime)。

223 

224<Note>Prompt caching 可能不適用於所有 Bedrock 區域。如果快取權杖計數保持為零,請檢查 Bedrock 文件中的[支援的模型、區域和限制](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)。</Note>

274 225 

275#### 將每個模型版本對應至推論設定檔226<h4 id="map-each-model-version-to-an-inference-profile">

227 將每個模型版本對應至推論設定檔

228</h4>

276 229 

277`ANTHROPIC_DEFAULT_*_MODEL` 環境變數為每個模型系列設定一個推論設定檔。如果您的組織需要在 `/model` 選擇器中公開同一系列的多個版本,每個版本都路由到其自己的應用程式推論設定檔 ARN,請改用[設定檔](/zh-TW/settings#settings-files)中的 `modelOverrides` 設定。230`ANTHROPIC_DEFAULT_*_MODEL` 環境變數為每個模型系列設定一個推論設定檔。如果您的組織需要在 `/model` 選擇器中公開同一系列的多個版本,每個版本都路由到其自己的應用程式推論設定檔 ARN,請改用[設定檔](/zh-TW/settings#settings-files)中的 `modelOverrides` 設定。

278 231 


291 244 

292當使用者在 `/model` 中選取其中一個版本時,Claude Code 會使用對應的 ARN 呼叫 Bedrock。沒有覆寫的版本會回退到內建的 Bedrock 模型 ID 或在啟動時發現的任何相符推論設定檔。請參閱[覆寫每個版本的模型 ID](/zh-TW/model-config#override-model-ids-per-version),以了解覆寫如何與 `availableModels` 和其他模型設定互動的詳細資訊。245當使用者在 `/model` 中選取其中一個版本時,Claude Code 會使用對應的 ARN 呼叫 Bedrock。沒有覆寫的版本會回退到內建的 Bedrock 模型 ID 或在啟動時發現的任何相符推論設定檔。請參閱[覆寫每個版本的模型 ID](/zh-TW/model-config#override-model-ids-per-version),以了解覆寫如何與 `availableModels` 和其他模型設定互動的詳細資訊。

293 246 

294## 啟動模型檢查247<h2 id="startup-model-checks">

248 啟動模型檢查

249</h2>

295 250 

296當 Claude Code 以 Bedrock 設定啟動時,它會驗證它打算使用的模型在您的帳戶中是否可存取。此檢查需要 Claude Code v2.1.94 或更新版本。251當 Claude Code 以 Bedrock 設定啟動時,它會驗證它打算使用的模型在您的帳戶中是否可存取。此檢查需要 Claude Code v2.1.94 或更新版本。

297 252 


299 254 

300如果您尚未固定模型且目前預設值在您的帳戶中不可用,Claude Code 會在目前工作階段中回退到先前版本並顯示通知。回退不會被保留。在您的 Bedrock 帳戶中啟用較新模型或[固定版本](#4-pin-model-versions)以使選擇永久化。255如果您尚未固定模型且目前預設值在您的帳戶中不可用,Claude Code 會在目前工作階段中回退到先前版本並顯示通知。回退不會被保留。在您的 Bedrock 帳戶中啟用較新模型或[固定版本](#4-pin-model-versions)以使選擇永久化。

301 256 

302## IAM 設定257<h2 id="iam-configuration">

258 IAM 設定

259</h2>

303 260 

304建立具有 Claude Code 所需權限的 IAM 政策:261建立具有 Claude Code 所需權限的 IAM 政策:

305 262 


352 為 Claude Code 建立專用的 AWS 帳戶,以簡化成本追蹤和存取控制。309 為 Claude Code 建立專用的 AWS 帳戶,以簡化成本追蹤和存取控制。

353</Note>310</Note>

354 311 

355## 1M 權杖內容視窗312<h2 id="1m-token-context-window">

313 1M 權杖內容視窗

314</h2>

356 315 

357Claude Opus 4.7、Opus 4.6 Sonnet 4.6 在 Amazon Bedrock 上支援 [1M 權杖內容視窗](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window)。當您選取 1M 模型變體時,Claude Code 會自動啟用擴展內容視窗。316Claude Opus 4.6 及更新版本,以及 Sonnet 4.6在 Amazon Bedrock 上支援 [1M 權杖內容視窗](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window)。當您選取 1M 模型變體時,Claude Code 會自動啟用擴展內容視窗。

358 317 

359[設定精靈](#sign-in-with-bedrock)在固定模型時提供 1M 內容選項。若要為手動固定的模型啟用它,請在模型 ID 後附加 `[1m]`。請參閱[為第三方部署固定模型](/zh-TW/model-config#pin-models-for-third-party-deployments)以取得詳細資訊。318[設定精靈](#sign-in-with-bedrock)在固定模型時提供 1M 內容選項。若要為手動固定的模型啟用它,請在模型 ID 後附加 `[1m]`。請參閱[為第三方部署固定模型](/zh-TW/model-config#pin-models-for-third-party-deployments)以取得詳細資訊。

360 319 

361## 服務層級320<h2 id="service-tiers">

321 服務層級

322</h2>

362 323 

363[Amazon Bedrock 服務層級](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html)可讓您在成本和延遲之間進行權衡。將 `ANTHROPIC_BEDROCK_SERVICE_TIER` 設定為 `default`、`flex` 或 `priority`:324[Amazon Bedrock 服務層級](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html)可讓您在成本和延遲之間進行權衡。將 `ANTHROPIC_BEDROCK_SERVICE_TIER` 設定為 `default`、`flex` 或 `priority`:

364 325 


368 329 

369Claude Code 在每個請求上將此作為 `X-Amzn-Bedrock-Service-Tier` 標頭傳送。層級可用性因模型和區域而異。保留容量使用[佈建輸送量](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) ARN 作為模型 ID,而不是此設定。330Claude Code 在每個請求上將此作為 `X-Amzn-Bedrock-Service-Tier` 標頭傳送。層級可用性因模型和區域而異。保留容量使用[佈建輸送量](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) ARN 作為模型 ID,而不是此設定。

370 331 

371## AWS Guardrails332<h2 id="aws-guardrails">

333 AWS Guardrails

334</h2>

372 335 

373[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) 可讓您為 Claude Code 實施內容篩選。在 [Amazon Bedrock 主控台](https://console.aws.amazon.com/bedrock/)中建立 Guardrail,發佈版本,然後將 Guardrail 標頭新增至您的[設定檔](/zh-TW/settings)。如果您使用跨區域推論設定檔,請在 Guardrail 上啟用跨區域推論。336[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) 可讓您為 Claude Code 實施內容篩選。在 [Amazon Bedrock 主控台](https://console.aws.amazon.com/bedrock/)中建立 Guardrail,發佈版本,然後將 Guardrail 標頭新增至您的[設定檔](/zh-TW/settings)。如果您使用跨區域推論設定檔,請在 Guardrail 上啟用跨區域推論。

374 337 


382}345}

383```346```

384 347 

385## 使用 Mantle 端點348<h2 id="use-the-mantle-endpoint">

349 使用 Mantle 端點

350</h2>

386 351 

387Mantle 是一個 Amazon Bedrock 端點,透過原生 Anthropic API 形狀而不是 Bedrock Invoke API 提供 Claude 模型。它使用相同的 AWS 認證、IAM 權限和本頁面前面所述的 `awsAuthRefresh` 設定。352Mantle 是一個 Amazon Bedrock 端點,透過原生 Anthropic API 形狀而不是 Bedrock Invoke API 提供 Claude 模型。它使用相同的 AWS 認證、IAM 權限和本頁面前面所述的 `awsAuthRefresh` 設定。

388 353 


390 Mantle 需要 Claude Code v2.1.94 或更新版本。執行 `claude --version` 以檢查。355 Mantle 需要 Claude Code v2.1.94 或更新版本。執行 `claude --version` 以檢查。

391</Note>356</Note>

392 357 

393### 啟用 Mantle358<h3 id="enable-mantle">

359 啟用 Mantle

360</h3>

394 361 

395已設定 AWS 認證後,設定 `CLAUDE_CODE_USE_MANTLE` 以將請求路由到 Mantle 端點:362已設定 AWS 認證後,設定 `CLAUDE_CODE_USE_MANTLE` 以將請求路由到 Mantle 端點:

396 363 


403 370 

404在 Claude Code 內執行 `/status` 以確認。當 Mantle 處於作用中時,提供者行會顯示 `Amazon Bedrock (Mantle)`。371在 Claude Code 內執行 `/status` 以確認。當 Mantle 處於作用中時,提供者行會顯示 `Amazon Bedrock (Mantle)`。

405 372 

406### 選取 Mantle 模型373<h3 id="select-a-mantle-model">

374 選取 Mantle 模型

375</h3>

407 376 

408Mantle 使用以 `anthropic.` 為前綴且沒有版本尾碼的模型 ID,例如 `anthropic.claude-haiku-4-5`。您的帳戶可用的模型取決於您的組織已被授予的內容;其他模型 ID 列在來自 AWS 的您的上線材料中。請聯絡您的 AWS 帳戶團隊以要求存取允許清單模型。377Mantle 使用以 `anthropic.` 為前綴且沒有版本尾碼的模型 ID,例如 `anthropic.claude-haiku-4-5`。您的帳戶可用的模型取決於您的組織已被授予的內容;其他模型 ID 列在來自 AWS 的您的上線材料中。請聯絡您的 AWS 帳戶團隊以要求存取允許清單模型。

409 378 


413claude --model anthropic.claude-haiku-4-5382claude --model anthropic.claude-haiku-4-5

414```383```

415 384 

416### 與 Invoke API 並行執行 Mantle385<h3 id="run-mantle-alongside-the-invoke-api">

386 與 Invoke API 並行執行 Mantle

387</h3>

417 388 

418您在 Mantle 上可用的模型可能不包括您今天使用的每個模型。設定 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_MANTLE` 可讓 Claude Code 從同一工作階段呼叫兩個端點。符合 Mantle 格式的模型 ID 會路由到 Mantle,所有其他模型 ID 會進入 Bedrock Invoke API。389您在 Mantle 上可用的模型可能不包括您今天使用的每個模型。設定 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_MANTLE` 可讓 Claude Code 從同一工作階段呼叫兩個端點。符合 Mantle 格式的模型 ID 會路由到 Mantle,所有其他模型 ID 會進入 Bedrock Invoke API。

419 390 


434 405 

435當兩個提供者都處於作用中時,`/status` 會顯示 `Amazon Bedrock + Amazon Bedrock (Mantle)`。406當兩個提供者都處於作用中時,`/status` 會顯示 `Amazon Bedrock + Amazon Bedrock (Mantle)`。

436 407 

437### 透過閘道路由 Mantle408<h3 id="route-mantle-through-a-gateway">

409 透過閘道路由 Mantle

410</h3>

438 411 

439如果您的組織透過集中式 [LLM 閘道](/zh-TW/llm-gateway)路由模型流量,該閘道在伺服器端注入 AWS 認證,請停用用戶端驗證,以便 Claude Code 傳送沒有 SigV4 簽名或 `x-api-key` 標頭的請求:412如果您的組織透過集中式 [LLM 閘道](/zh-TW/llm-gateway)路由模型流量,該閘道在伺服器端注入 AWS 認證,請停用用戶端驗證,以便 Claude Code 傳送沒有 SigV4 簽名或 `x-api-key` 標頭的請求:

440 413 


444export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com417export ANTHROPIC_BEDROCK_MANTLE_BASE_URL=https://your-gateway.example.com

445```418```

446 419 

447### Mantle 環境變數420<h3 id="mantle-environment-variables">

421 Mantle 環境變數

422</h3>

448 423 

449這些變數特定於 Mantle 端點。請參閱[環境變數](/zh-TW/env-vars)以取得完整清單。424這些變數特定於 Mantle 端點。請參閱[環境變數](/zh-TW/env-vars)以取得完整清單。

450 425 


455| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | 跳過用戶端驗證以進行代理設定 |430| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | 跳過用戶端驗證以進行代理設定 |

456| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | 覆寫 Haiku 級模型的 AWS 區域(與 Bedrock 共用) |431| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | 覆寫 Haiku 級模型的 AWS 區域(與 Bedrock 共用) |

457 432 

458## 故障排除433<h2 id="troubleshooting">

434 故障排除

435</h2>

459 436 

460### 使用 SSO 和公司代理的驗證迴圈437<h3 id="authentication-loop-with-sso-and-corporate-proxies">

438 使用 SSO 和公司代理的驗證迴圈

439</h3>

461 440 

462如果在使用 AWS SSO 時瀏覽器標籤頻繁開啟,請從您的[設定檔](/zh-TW/settings)中移除 `awsAuthRefresh` 設定。這可能發生在公司 VPN 或 TLS 檢查代理中斷 SSO 瀏覽器流程時。Claude Code 將中斷的連線視為驗證失敗,重新執行 `awsAuthRefresh`,並無限迴圈。441如果在使用 AWS SSO 時瀏覽器標籤頻繁開啟,請從您的[設定檔](/zh-TW/settings)中移除 `awsAuthRefresh` 設定。這可能發生在公司 VPN 或 TLS 檢查代理中斷 SSO 瀏覽器流程時。Claude Code 將中斷的連線視為驗證失敗,重新執行 `awsAuthRefresh`,並無限迴圈。

463 442 

464如果您的網路環境干擾自動瀏覽器型 SSO 流程,請在啟動 Claude Code 之前手動使用 `aws sso login`,而不是依賴 `awsAuthRefresh`。443如果您的網路環境干擾自動瀏覽器型 SSO 流程,請在啟動 Claude Code 之前手動使用 `aws sso login`,而不是依賴 `awsAuthRefresh`。

465 444 

466### 區域問題445<h3 id="region-issues">

446 區域問題

447</h3>

467 448 

468如果您遇到區域問題:449如果您遇到區域問題:

469 450 


477 458 

478Claude Code 使用 Bedrock [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html),不支援 Converse API。459Claude Code 使用 Bedrock [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html),不支援 Converse API。

479 460 

480### Mantle 端點錯誤461<h3 id="mantle-endpoint-errors">

462 Mantle 端點錯誤

463</h3>

481 464 

482如果在設定 `CLAUDE_CODE_USE_MANTLE` 後 `/status` 未顯示 `Amazon Bedrock (Mantle)`,則該變數未到達程序。確認它已在您啟動 `claude` 的 shell 中匯出,或在[設定檔](/zh-TW/settings)的 `env` 區塊中設定它。465如果在設定 `CLAUDE_CODE_USE_MANTLE` 後 `/status` 未顯示 `Amazon Bedrock (Mantle)`,則該變數未到達程序。確認它已在您啟動 `claude` 的 shell 中匯出,或在[設定檔](/zh-TW/settings)的 `env` 區塊中設定它。

483 466 


485 468 

486命名模型 ID 的 `400` 表示該模型未在 Mantle 上提供。Mantle 有其自己的模型陣容,與標準 Bedrock 目錄分開,因此推論設定檔 ID(例如 `us.anthropic.claude-sonnet-4-6`)將無法運作。使用 Mantle 格式的 ID,或啟用[兩個端點](#run-mantle-alongside-the-invoke-api),以便 Claude Code 將每個請求路由到模型可用的端點。469命名模型 ID 的 `400` 表示該模型未在 Mantle 上提供。Mantle 有其自己的模型陣容,與標準 Bedrock 目錄分開,因此推論設定檔 ID(例如 `us.anthropic.claude-sonnet-4-6`)將無法運作。使用 Mantle 格式的 ID,或啟用[兩個端點](#run-mantle-alongside-the-invoke-api),以便 Claude Code 將每個請求路由到模型可用的端點。

487 470 

488## 其他資源471<h2 id="additional-resources">

472 其他資源

473</h2>

489 474 

490* [Bedrock 文件](https://docs.aws.amazon.com/bedrock/)475* [Bedrock 文件](https://docs.aws.amazon.com/bedrock/)

491* [Bedrock 定價](https://aws.amazon.com/bedrock/pricing/)476* [Bedrock 定價](https://aws.amazon.com/bedrock/pricing/)

analytics.md +71 −25

Details

9Claude Code 提供分析儀表板,幫助組織了解開發人員使用模式、追蹤貢獻指標,並衡量 Claude Code 對工程速度的影響。根據您的計劃訪問儀表板:9Claude Code 提供分析儀表板,幫助組織了解開發人員使用模式、追蹤貢獻指標,並衡量 Claude Code 對工程速度的影響。根據您的計劃訪問儀表板:

10 10 

11| 計劃 | 儀表板 URL | 包含內容 | 了解更多 |11| 計劃 | 儀表板 URL | 包含內容 | 了解更多 |

12| ----------------------------- | -------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------ |12| ----------------------------- | -------------------------------------------------------------------------- | ------------------------------ | ----------------------------------------------- |

13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | 使用指標、與 GitHub 整合的貢獻指標、排行榜、數據匯出 | [詳情](#access-analytics-for-teams-and-enterprise) |13| Claude for Teams / Enterprise | [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) | 使用指標、與 GitHub 整合的貢獻指標、排行榜、數據匯出 | [詳情](#access-analytics-for-team-and-enterprise) |

14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | 使用指標、支出追蹤、團隊洞察 | [詳情](#access-analytics-for-api-customers) |14| API (Claude Console) | [platform.claude.com/claude-code](https://platform.claude.com/claude-code) | 使用指標、支出追蹤、團隊洞察 | [詳情](#access-analytics-for-api-customers) |

15 15 

16## 訪問 Teams 和 Enterprise 的分析16<h2 id="access-analytics-for-team-and-enterprise">

17 訪問 Team 和 Enterprise 的分析

18</h2>

17 19 

18導航至 [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code)。管理員和所有者可以查看儀表板。20導航至 [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code)。管理員和所有者可以查看儀表板。

19 21 

20Teams 和 Enterprise 儀表板包括:22Team 和 Enterprise 儀表板包括:

21 23 

22* **使用指標**:已接受的代碼行數、建議接受率、每日活躍用戶和會話24* **使用指標**:已接受的代碼行數、建議接受率、每日活躍用戶和會話

23* **貢獻指標**:使用 Claude Code 協助發布的 PR 和代碼行數,具有 [GitHub 整合](#enable-contribution-metrics)25* **貢獻指標**:使用 Claude Code 協助發布的 PR 和代碼行數,具有 [GitHub 整合](#enable-contribution-metrics)

24* **排行榜**:按 Claude Code 使用情況排名的頂級貢獻者26* **排行榜**:按 Claude Code 使用情況排名的頂級貢獻者

25* **數據匯出**:將貢獻數據下載為 CSV 格式以進行自訂報告27* **數據匯出**:將貢獻數據下載為 CSV 格式以進行自訂報告

26 28 

27### 啟用貢獻指標29如需每個用戶的令牌計數和成本估計,請配置 [OpenTelemetry 匯出](/zh-TW/monitoring-usage)。

30 

31<h3 id="enable-contribution-metrics">

32 啟用貢獻指標

33</h3>

28 34 

29<Note>35<Note>

30 貢獻指標處於公開測試版,可在 Claude for Teams 和 Claude for Enterprise 計劃上使用。這些指標僅涵蓋您 claude.ai 組織內的用戶。通過 Claude Console API 或第三方整合的使用不包括在內。36 貢獻指標處於公開測試版,可在 Claude for Teams 和 Claude for Enterprise 計劃上使用。這些指標僅涵蓋您 claude.ai 組織內的用戶。通過 Claude Console API 或第三方整合的使用不包括在內。


63 69 

64貢獻指標支持 GitHub Cloud 和 GitHub Enterprise Server。70貢獻指標支持 GitHub Cloud 和 GitHub Enterprise Server。

65 71 

66### 查看摘要指標72<h3 id="review-summary-metrics">

73 查看摘要指標

74</h3>

67 75 

68<Note>76<Note>

69 這些指標故意保守,代表對 Claude Code 實際影響的低估。只有高度確信 Claude Code 參與的代碼行和 PR 才會被計算。77 這些指標故意保守,代表對 Claude Code 實際影響的低估。只有高度確信 Claude Code 參與的代碼行和 PR 才會被計算。


77* **建議接受率**:用戶接受 Claude Code 代碼編輯建議的次數百分比,包括 Edit、Write 和 NotebookEdit 工具使用85* **建議接受率**:用戶接受 Claude Code 代碼編輯建議的次數百分比,包括 Edit、Write 和 NotebookEdit 工具使用

78* **已接受的代碼行**:Claude Code 編寫且用戶在其會話中已接受的代碼行總數。這不包括被拒絕的建議,也不追蹤後續刪除。86* **已接受的代碼行**:Claude Code 編寫且用戶在其會話中已接受的代碼行總數。這不包括被拒絕的建議,也不追蹤後續刪除。

79 87 

80### 探索圖表88<h3 id="explore-the-charts">

89 探索圖表

90</h3>

81 91 

82儀表板包括多個圖表以可視化一段時間內的趨勢。92儀表板包括多個圖表以可視化一段時間內的趨勢。

83 93 

84#### 追蹤採用94<h4 id="track-adoption">

95 追蹤採用

96</h4>

85 97 

86採用圖表顯示每日使用趨勢:98採用圖表顯示每日使用趨勢:

87 99 

88* **用戶**:每日活躍用戶100* **用戶**:每日活躍用戶

89* **會話**:每天活躍 Claude Code 會話的數量101* **會話**:每天活躍 Claude Code 會話的數量

90 102 

91#### 衡量每個用戶的 PR103<h4 id="measure-prs-per-user">

104 衡量每個用戶的 PR

105</h4>

92 106 

93此圖表顯示一段時間內的個人開發人員活動:107此圖表顯示一段時間內的個人開發人員活動:

94 108 


97 111 

98使用此功能了解隨著 Claude Code 採用增加,個人生產力如何變化。112使用此功能了解隨著 Claude Code 採用增加,個人生產力如何變化。

99 113 

100#### 查看拉取請求細分114<h4 id="view-pull-requests-breakdown">

115 查看拉取請求細分

116</h4>

101 117 

102拉取請求圖表顯示已合併 PR 的每日細分:118拉取請求圖表顯示已合併 PR 的每日細分:

103 119 


106 122 

107切換至**代碼行**視圖以按代碼行而不是 PR 計數查看相同的細分。123切換至**代碼行**視圖以按代碼行而不是 PR 計數查看相同的細分。

108 124 

109#### 查找頂級貢獻者125<h4 id="find-top-contributors">

126 查找頂級貢獻者

127</h4>

110 128 

111排行榜顯示按貢獻量排名的前 10 名用戶。在以下之間切換:129排行榜顯示按貢獻量排名的前 10 名用戶。在以下之間切換:

112 130 


115 133 

116點擊**匯出所有用戶**以將所有用戶的完整貢獻數據下載為 CSV 文件。匯出包括所有用戶,而不僅僅是顯示的前 10 名。134點擊**匯出所有用戶**以將所有用戶的完整貢獻數據下載為 CSV 文件。匯出包括所有用戶,而不僅僅是顯示的前 10 名。

117 135 

118### PR 歸因136<h3 id="pr-attribution">

137 PR 歸因

138</h3>

119 139 

120啟用貢獻指標後,Claude Code 會分析已合併的拉取請求,以確定哪些代碼是使用 Claude Code 協助編寫的。這是通過將 Claude Code 會話活動與每個 PR 中的代碼進行匹配來完成的。140啟用貢獻指標後,Claude Code 會分析已合併的拉取請求,以確定哪些代碼是使用 Claude Code 協助編寫的。這是通過將 Claude Code 會話活動與每個 PR 中的代碼進行匹配來完成的。

121 141 

122#### 標記標準142<h4 id="tagging-criteria">

143 標記標準

144</h4>

123 145 

124如果 PR 包含在 Claude Code 會話期間編寫的至少一行代碼,則將其標記為「帶有 Claude Code」。系統使用保守匹配:只有高度確信 Claude Code 參與的代碼才被計為協助。146如果 PR 包含在 Claude Code 會話期間編寫的至少一行代碼,則將其標記為「帶有 Claude Code」。系統使用保守匹配:只有高度確信 Claude Code 參與的代碼才被計為協助。

125 147 

126#### 歸因過程148<h4 id="attribution-process">

149 歸因過程

150</h4>

127 151 

128當拉取請求被合併時:152當拉取請求被合併時:

129 153 


136 160 

137包含 Claude Code 協助行的已合併拉取請求在 GitHub 中被標記為 `claude-code-assisted`。161包含 Claude Code 協助行的已合併拉取請求在 GitHub 中被標記為 `claude-code-assisted`。

138 162 

139#### 時間窗口163<h4 id="time-window">

164 時間窗口

165</h4>

140 166 

141PR 合併日期前 21 天至後 2 天的會話被考慮用於歸因匹配。167PR 合併日期前 21 天至後 2 天的會話被考慮用於歸因匹配。

142 168 

143#### 排除的文件169<h4 id="excluded-files">

170 排除的文件

171</h4>

144 172 

145某些文件會自動從分析中排除,因為它們是自動生成的:173某些文件會自動從分析中排除,因為它們是自動生成的:

146 174 


150* 測試夾具:快照、盒帶、模擬數據178* 測試夾具:快照、盒帶、模擬數據

151* 超過 1,000 個字符的行,可能是縮小或生成的179* 超過 1,000 個字符的行,可能是縮小或生成的

152 180 

153#### 歸因說明181<h4 id="attribution-notes">

182 歸因說明

183</h4>

154 184 

155在解釋歸因數據時,請記住這些額外詳情:185在解釋歸因數據時,請記住這些額外詳情:

156 186 


158* 21 天窗口外的會話不被考慮188* 21 天窗口外的會話不被考慮

159* 該算法在執行歸因時不考慮 PR 源或目標分支189* 該算法在執行歸因時不考慮 PR 源或目標分支

160 190 

161### 從分析中獲得最大收益191<h3 id="get-the-most-from-analytics">

192 從分析中獲得最大收益

193</h3>

162 194 

163使用貢獻指標來展示 ROI、識別採用模式並找到可以幫助他人入門的團隊成員。195使用貢獻指標來展示 ROI、識別採用模式並找到可以幫助他人入門的團隊成員。

164 196 

165#### 監控採用197<h4 id="monitor-adoption">

198 監控採用

199</h4>

166 200 

167追蹤採用圖表和用戶計數以識別:201追蹤採用圖表和用戶計數以識別:

168 202 


170* 整個組織的整體採用趨勢204* 整個組織的整體採用趨勢

171* 可能表示摩擦或問題的使用下降205* 可能表示摩擦或問題的使用下降

172 206 

173#### 衡量 ROI207<h4 id="measure-roi">

208 衡量 ROI

209</h4>

174 210 

175貢獻指標幫助回答「這個工具值得投資嗎?」,使用來自您自己代碼庫的數據:211貢獻指標幫助回答「這個工具值得投資嗎?」,使用來自您自己代碼庫的數據:

176 212 


178* 比較使用和不使用 Claude Code 發布的 PR 和代碼行214* 比較使用和不使用 Claude Code 發布的 PR 和代碼行

179* 與 [DORA 指標](https://dora.dev/)、衝刺速度或其他工程 KPI 一起使用,以了解採用 Claude Code 帶來的變化215* 與 [DORA 指標](https://dora.dev/)、衝刺速度或其他工程 KPI 一起使用,以了解採用 Claude Code 帶來的變化

180 216 

181#### 識別超級用戶217<h4 id="identify-power-users">

218 識別超級用戶

219</h4>

182 220 

183排行榜幫助您找到具有高 Claude Code 採用率的團隊成員,他們可以:221排行榜幫助您找到具有高 Claude Code 採用率的團隊成員,他們可以:

184 222 


186* 提供有關什麼運作良好的反饋224* 提供有關什麼運作良好的反饋

187* 幫助新用戶入門225* 幫助新用戶入門

188 226 

189#### 以編程方式訪問數據227<h4 id="access-data-programmatically">

228 以編程方式訪問數據

229</h4>

190 230 

191要通過 GitHub 查詢此數據,請搜索標記為 `claude-code-assisted` 的 PR。231要通過 GitHub 查詢此數據,請搜索標記為 `claude-code-assisted` 的 PR。

192 232 

193## 訪問 API 客戶的分析233<h2 id="access-analytics-for-api-customers">

234 訪問 API 客戶的分析

235</h2>

194 236 

195使用 Claude Console 的 API 客戶可以在 [platform.claude.com/claude-code](https://platform.claude.com/claude-code) 訪問分析。您需要 UsageView 權限才能訪問儀表板,該權限授予開發人員、計費、管理員、所有者和主要所有者角色。237使用 Claude Console 的 API 客戶可以在 [platform.claude.com/claude-code](https://platform.claude.com/claude-code) 訪問分析。您需要 UsageView 權限才能訪問儀表板,該權限授予開發人員、計費、管理員、所有者和主要所有者角色。

196 238 


205* **活動**:圖表上顯示的每日活躍用戶和會話。247* **活動**:圖表上顯示的每日活躍用戶和會話。

206* **支出**:每日 API 成本(以美元計)以及用戶計數。248* **支出**:每日 API 成本(以美元計)以及用戶計數。

207 249 

208### 查看團隊洞察250<h3 id="view-team-insights">

251 查看團隊洞察

252</h3>

209 253 

210團隊洞察表顯示每個用戶的指標:254團隊洞察表顯示每個用戶的指標:

211 255 


217 Console 儀表板中的支出數字是用於分析目的的估計值。有關實際成本,請參閱您的計費頁面。261 Console 儀表板中的支出數字是用於分析目的的估計值。有關實際成本,請參閱您的計費頁面。

218</Note>262</Note>

219 263 

220## 相關資源264<h2 id="related-resources">

265 相關資源

266</h2>

221 267 

222* [使用 OpenTelemetry 進行監控](/zh-TW/monitoring-usage):將實時指標和事件匯出到您的可觀測性堆棧268* [使用 OpenTelemetry 進行監控](/zh-TW/monitoring-usage):將實時指標和事件匯出到您的可觀測性堆棧

223* [有效管理成本](/zh-TW/costs):設置支出限制並優化令牌使用269* [有效管理成本](/zh-TW/costs):設置支出限制並優化令牌使用

Details

8 8 

9Claude Code 支援多種驗證方法,具體取決於您的設定。個人使用者可以使用 Claude.ai 帳戶登入,而團隊可以使用 Claude for Teams 或 Enterprise、Claude Console 或雲端提供商(如 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry)。9Claude Code 支援多種驗證方法,具體取決於您的設定。個人使用者可以使用 Claude.ai 帳戶登入,而團隊可以使用 Claude for Teams 或 Enterprise、Claude Console 或雲端提供商(如 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry)。

10 10 

11## 登入 Claude Code11<h2 id="log-in-to-claude-code">

12 登入 Claude Code

13</h2>

12 14 

13[安裝 Claude Code](/zh-TW/setup#install-claude-code) 後,在您的終端機中執行 `claude`。首次啟動時,Claude Code 會為您開啟瀏覽器視窗以供登入。15[安裝 Claude Code](/zh-TW/setup#install-claude-code) 後,在您的終端機中執行 `claude`。首次啟動時,Claude Code 會為您開啟瀏覽器視窗以供登入。

14 16 


27 29 

28如果您在登入時遇到問題,請參閱 [驗證疑難排解](/zh-TW/troubleshoot-install#login-and-authentication)。30如果您在登入時遇到問題,請參閱 [驗證疑難排解](/zh-TW/troubleshoot-install#login-and-authentication)。

29 31 

30## 設定團隊驗證32<h2 id="set-up-team-authentication">

33 設定團隊驗證

34</h2>

31 35 

32對於團隊和組織,您可以透過以下方式之一配置 Claude Code 存取:36對於團隊和組織,您可以透過以下方式之一配置 Claude Code 存取:

33 37 


37* [Google Vertex AI](/zh-TW/google-vertex-ai)41* [Google Vertex AI](/zh-TW/google-vertex-ai)

38* [Microsoft Foundry](/zh-TW/microsoft-foundry)42* [Microsoft Foundry](/zh-TW/microsoft-foundry)

39 43 

40### Claude for Teams 或 Enterprise44<h3 id="claude-for-teams-or-enterprise">

45 Claude for Teams 或 Enterprise

46</h3>

41 47 

42[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) 和 [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) 為使用 Claude Code 的組織提供最佳體驗。團隊成員可以存取 Claude Code 和網頁版 Claude,並具有集中式帳單和團隊管理。48[Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_teams#team-&-enterprise) 和 [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=authentication_enterprise) 為使用 Claude Code 的組織提供最佳體驗。團隊成員可以存取 Claude Code 和網頁版 Claude,並具有集中式帳單和團隊管理。

43 49 


58 </Step>64 </Step>

59</Steps>65</Steps>

60 66 

61### Claude Console 驗證67<h3 id="claude-console-authentication">

68 Claude Console 驗證

69</h3>

62 70 

63對於偏好基於 API 的帳單的組織,您可以透過 Claude Console 設定存取。71對於偏好基於 API 的帳單的組織,您可以透過 Claude Console 設定存取。

64 72 


91 </Step>99 </Step>

92</Steps>100</Steps>

93 101 

94### 雲端提供商驗證102<h3 id="cloud-provider-authentication">

103 雲端提供商驗證

104</h3>

95 105 

96對於使用 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 的團隊:106對於使用 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 的團隊:

97 107 


109 </Step>119 </Step>

110</Steps>120</Steps>

111 121 

112## 認證管理122<h2 id="credential-management">

123 認證管理

124</h2>

113 125 

114Claude Code 安全地管理您的驗證認證:126Claude Code 安全地管理您的驗證認證:

115 127 


126 138 

127`apiKeyHelper`、`ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN` 僅適用於終端機 CLI 工作階段。Claude Desktop 和遠端工作階段僅使用 OAuth,不會呼叫 `apiKeyHelper` 或讀取 API 金鑰環境變數。139`apiKeyHelper`、`ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN` 僅適用於終端機 CLI 工作階段。Claude Desktop 和遠端工作階段僅使用 OAuth,不會呼叫 `apiKeyHelper` 或讀取 API 金鑰環境變數。

128 140 

129### 驗證優先順序141<h3 id="authentication-precedence">

142 驗證優先順序

143</h3>

130 144 

131當存在多個認證時,Claude Code 按此順序選擇一個:145當存在多個認證時,Claude Code 按此順序選擇一個:

132 146 


141 155 

142[網頁版 Claude Code](/zh-TW/claude-code-on-the-web) 始終使用您的訂閱認證。沙箱環境中的 `ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN` 不會覆蓋它們。156[網頁版 Claude Code](/zh-TW/claude-code-on-the-web) 始終使用您的訂閱認證。沙箱環境中的 `ANTHROPIC_API_KEY` 和 `ANTHROPIC_AUTH_TOKEN` 不會覆蓋它們。

143 157 

144### 產生長期令牌158<h3 id="generate-a-long-lived-token">

159 產生長期令牌

160</h3>

145 161 

146<Note>162<Note>

147 Starting June 15, 2026, Agent SDK and `claude -p` usage on subscription plans will draw from a new monthly Agent SDK credit, separate from your interactive usage limits. See [Use the Claude Agent SDK with your Claude plan](https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan) for details.163 Starting June 15, 2026, Agent SDK and `claude -p` usage on subscription plans will draw from a new monthly Agent SDK credit, separate from your interactive usage limits. See [Use the Claude Agent SDK with your Claude plan](https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan) for details.

Details

9[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)讓 Claude Code 無需權限提示即可執行,方法是透過分類器路由每個工具呼叫,該分類器會阻止任何不可逆、破壞性或針對您環境外部的操作。使用 `autoMode` 設定區塊告訴該分類器您的組織信任哪些儲存庫、儲存桶和網域,以便它停止阻止常規內部操作。9[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)讓 Claude Code 無需權限提示即可執行,方法是透過分類器路由每個工具呼叫,該分類器會阻止任何不可逆、破壞性或針對您環境外部的操作。使用 `autoMode` 設定區塊告訴該分類器您的組織信任哪些儲存庫、儲存桶和網域,以便它停止阻止常規內部操作。

10 10 

11<Note>11<Note>

12 自動模式可在 Max、Team、Enterprise 和 API 方案上透過 Anthropic API 使用它在 Pro 上或在 Bedrock、Vertex Foundry 上不可用。如果 Claude Code 報告您的帳戶無法使用自動模式,請檢查[完整要求](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),其中也涵蓋支援的模型和 Team 與 Enterprise 方案上的管理員啟用。12 自動模式可在 Anthropic API 上供所有使用者使用 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上,您必須先[設定 `CLAUDE_CODE_ENABLE_AUTO_MODE`](/zh-TW/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry)。如果 Claude Code 報告您的帳戶無法使用自動模式,請檢查[完整要求](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),其中也涵蓋支援的模型和 Team 與 Enterprise 方案上的管理員啟用。

13</Note>13</Note>

14 14 

15開箱即用,分類器只信任工作目錄和目前儲存庫的已設定遠端。推送到您公司的原始碼控制組織或寫入團隊雲端儲存桶等操作會被阻止,直到您將它們新增到 `autoMode.environment`。15開箱即用,分類器只信任工作目錄和目前儲存庫的已設定遠端。推送到您公司的原始碼控制組織或寫入團隊雲端儲存桶等操作會被阻止,直到您將它們新增到 `autoMode.environment`。


24* [檢查您的有效設定](#inspect-the-defaults-and-your-effective-config)使用 `claude auto-mode` 子命令24* [檢查您的有效設定](#inspect-the-defaults-and-your-effective-config)使用 `claude auto-mode` 子命令

25* [檢查拒絕](#review-denials)以便您知道接下來要新增什麼25* [檢查拒絕](#review-denials)以便您知道接下來要新增什麼

26 26 

27## 分類器讀取設定的位置27<h2 id="where-the-classifier-reads-configuration">

28 分類器讀取設定的位置

29</h2>

28 30 

29分類器讀取與 Claude 本身載入的相同 [CLAUDE.md](/zh-TW/memory) 內容,因此您專案的 CLAUDE.md 中的「永遠不要強制推送」之類的指令同時引導 Claude 和分類器。從那裡開始了解專案慣例和行為規則。31分類器讀取與 Claude 本身載入的相同 [CLAUDE.md](/zh-TW/memory) 內容,因此您專案的 CLAUDE.md 中的「永遠不要強制推送」之類的指令同時引導 Claude 和分類器。從那裡開始了解專案慣例和行為規則。

30 32 


45 分類器是在[權限系統](/zh-TW/permissions)之後執行的第二道門。對於無論使用者意圖或分類器設定如何都必須永遠不執行的操作,請在受管設定中使用 `permissions.deny`,它在諮詢分類器之前阻止操作,無法被覆蓋。47 分類器是在[權限系統](/zh-TW/permissions)之後執行的第二道門。對於無論使用者意圖或分類器設定如何都必須永遠不執行的操作,請在受管設定中使用 `permissions.deny`,它在諮詢分類器之前阻止操作,無法被覆蓋。

46</Note>48</Note>

47 49 

48## 定義受信任的基礎設施50<h2 id="define-trusted-infrastructure">

51 定義受信任的基礎設施

52</h2>

49 53 

50對於大多數組織,`autoMode.environment` 是您唯一需要設定的欄位。它告訴分類器哪些儲存庫、儲存桶和網域是受信任的:分類器使用它來決定「外部」的含義,因此任何未列出的目的地都是潛在的資料外洩目標。54對於大多數組織,`autoMode.environment` 是您唯一需要設定的欄位。它告訴分類器哪些儲存庫、儲存桶和網域是受信任的:分類器使用它來決定「外部」的含義,因此任何未列出的目的地都是潛在的資料外洩目標。

51 55 


97 101 

98您不需要一次性填入所有內容。合理的推出:從預設值開始,新增您的原始碼控制組織和關鍵內部服務,這解決了最常見的誤報,例如推送到您自己的儲存庫。接下來新增受信任的網域和雲端儲存桶。隨著阻止出現,填入其餘部分。102您不需要一次性填入所有內容。合理的推出:從預設值開始,新增您的原始碼控制組織和關鍵內部服務,這解決了最常見的誤報,例如推送到您自己的儲存庫。接下來新增受信任的網域和雲端儲存桶。隨著阻止出現,填入其餘部分。

99 103 

100## 覆蓋阻止和允許規則104<h2 id="override-the-block-and-allow-rules">

105 覆蓋阻止和允許規則

106</h2>

101 107 

102三個額外的欄位讓您取代分類器的內建規則清單:`autoMode.hard_deny` 用於無條件安全邊界,`autoMode.soft_deny` 用於使用者意圖可以清除的破壞性操作,以及 `autoMode.allow` 用於例外。每個都是散文描述的陣列,讀取為自然語言規則。對於在分類器之前執行的工具模式型硬阻止,請使用 [`permissions.deny`](/zh-TW/permissions)。108三個額外的欄位讓您取代分類器的內建規則清單:`autoMode.hard_deny` 用於無條件安全邊界,`autoMode.soft_deny` 用於使用者意圖可以清除的破壞性操作,以及 `autoMode.allow` 用於例外。每個都是散文描述的陣列,讀取為自然語言規則。對於在分類器之前執行的工具模式型硬阻止,請使用 [`permissions.deny`](/zh-TW/permissions)。

103 109 


143 149 

144每個部分獨立評估,因此單獨設定 `environment` 會保持預設 `allow`、`soft_deny` 和 `hard_deny` 清單完整。只在您打算完全掌控清單時才省略 `"$defaults"`。要安全地執行此操作,執行 `claude auto-mode defaults` 列印內建規則,將它們複製到您的設定檔案中,然後根據您自己的管道和風險容限檢查每個規則。150每個部分獨立評估,因此單獨設定 `environment` 會保持預設 `allow`、`soft_deny` 和 `hard_deny` 清單完整。只在您打算完全掌控清單時才省略 `"$defaults"`。要安全地執行此操作,執行 `claude auto-mode defaults` 列印內建規則,將它們複製到您的設定檔案中,然後根據您自己的管道和風險容限檢查每個規則。

145 151 

146## 檢查預設值和您的有效設定152<h2 id="inspect-the-defaults-and-your-effective-config">

153 檢查預設值和您的有效設定

154</h2>

147 155 

148三個 CLI 子命令幫助您檢查和驗證您的設定。156三個 CLI 子命令幫助您檢查和驗證您的設定。

149 157 


167 175 

168在儲存設定後執行 `claude auto-mode config` 以確認有效規則是您期望的,並且 `"$defaults"` 已展開到位。如果您已編寫自訂規則,`claude auto-mode critique` 會檢查它們並標記模糊、冗餘或可能導致誤報的項目。如果您需要移除或重寫內建規則而不是在其旁邊新增,請將 `claude auto-mode defaults` 的輸出儲存到檔案,編輯清單,並將結果貼到您的設定檔案中以取代 `"$defaults"`。176在儲存設定後執行 `claude auto-mode config` 以確認有效規則是您期望的,並且 `"$defaults"` 已展開到位。如果您已編寫自訂規則,`claude auto-mode critique` 會檢查它們並標記模糊、冗餘或可能導致誤報的項目。如果您需要移除或重寫內建規則而不是在其旁邊新增,請將 `claude auto-mode defaults` 的輸出儲存到檔案,編輯清單,並將結果貼到您的設定檔案中以取代 `"$defaults"`。

169 177 

170## 檢查拒絕178<h2 id="review-denials">

179 檢查拒絕

180</h2>

171 181 

172當自動模式拒絕工具呼叫時,拒絕會記錄在 `/permissions` 下的「最近拒絕」標籤中。在拒絕的操作上按 `r` 將其標記為重試:當您退出對話框時,Claude Code 會傳送一條訊息告訴模型它可能重試該工具呼叫並繼續對話。182當自動模式拒絕工具呼叫時,拒絕會記錄在 `/permissions` 下的「最近拒絕」標籤中。在拒絕的操作上按 `r` 將其標記為重試:當您退出對話框時,Claude Code 會傳送一條訊息告訴模型它可能重試該工具呼叫並繼續對話。

173 183 


175 185 

176要以程式設計方式對拒絕做出反應,請使用 [`PermissionDenied` hook](/zh-TW/hooks#permissiondenied)。186要以程式設計方式對拒絕做出反應,請使用 [`PermissionDenied` hook](/zh-TW/hooks#permissiondenied)。

177 187 

178## 另請參閱188<h2 id="see-also">

189 另請參閱

190</h2>

179 191 

180* [權限模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode):自動模式是什麼、它預設阻止什麼以及如何啟用它192* [權限模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode):自動模式是什麼、它預設阻止什麼以及如何啟用它

181* [受管設定](/zh-TW/server-managed-settings):在您的組織中部署 `autoMode` 設定193* [受管設定](/zh-TW/server-managed-settings):在您的組織中部署 `autoMode` 設定

best-practices.md +130 −37

Details

24 24 

25***25***

26 26 

27## 給 Claude 一種驗證其工作的方式27<h2 id="give-claude-a-way-to-verify-its-work">

28 給 Claude 一種驗證其工作的方式

29</h2>

28 30 

29<Tip>31<Tip>

30 包括測試、截圖或預期輸出,以便 Claude 可以檢查自己這是您可以做的最高槓桿的事情32 Claude 一個可以運行的檢查:測試、構建、截圖比較這是您可以觀看的會話和可以離開的會話之間的區別

31</Tip>33</Tip>

32 34 

33Claude 能夠驗證自己的工作時例如運行測試、比較截圖和驗證輸出,Claude 的表現會大幅提高35Claude 在工作看起來完成時停止。沒有可以運行的檢查「看起來完成」是唯一可用的信號您成為驗證循環:每個錯誤都在等待您注意到它。給 Claude 一些能產生通過或失敗的東西,循環就會自動關閉Claude 完成工作、運行檢查、讀取結果,並迭代直到檢查通過。

34 36 

35沒有明確的成功標準,它可能會產生看起來正確但實際上不起作用的東西。您成為唯一的反饋循環每個錯誤都需要您的關注37檢查是任何在對話中返回 Claude 可以讀取的信號的東西:測試套件、構建退出代碼、linter、針對固定裝置比較輸出的腳本或與設計進行比較的[瀏覽器截圖](/zh-TW/chrome)

36 38 

37| 策略 | 之前 | 之後 |39| 策略 | 之前 | 之後 |

38| ----------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |40| ----------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |


40| **以視覺方式驗證 UI 更改** | *「使儀表板看起來更好」* | *「\[粘貼截圖] 實施此設計。對結果進行截圖並與原始設計進行比較。列出差異並修復它們」* |42| **以視覺方式驗證 UI 更改** | *「使儀表板看起來更好」* | *「\[粘貼截圖] 實施此設計。對結果進行截圖並與原始設計進行比較。列出差異並修復它們」* |

41| **解決根本原因,而不是症狀** | *「構建失敗」* | *「構建失敗,出現此錯誤:\[粘貼錯誤]。修復它並驗證構建成功。解決根本原因,不要抑制錯誤」* |43| **解決根本原因,而不是症狀** | *「構建失敗」* | *「構建失敗,出現此錯誤:\[粘貼錯誤]。修復它並驗證構建成功。解決根本原因,不要抑制錯誤」* |

42 44 

43UI 更改可以使用 [Claude Chrome 擴展](/zh-TW/chrome) 進行驗證。它在您的瀏覽器中打開新標籤頁,測試 UI並迭代直到代碼工作。45檢查存在後決定它對停止的限制有多嚴格:

44 46 

45您的驗證也可以是測試套件、linter 或檢查輸出的 Bash 命令。投資使您的驗證堅如磐石47* **在一個提示中**:要求 Claude 運行檢查並在同一消息中迭代,如上表所示

48* **在整個會話中**:將檢查設置為 [`/goal` 條件](/zh-TW/goal)。單獨的評估器在每次轉換後重新檢查它,Claude 繼續工作直到它成立。

49* **作為確定性門**:[Stop hook](/zh-TW/hooks#stop) 將您的檢查作為腳本運行,並阻止轉換結束直到它通過。Claude Code 覆蓋該 hook 並在 8 次連續阻止後結束轉換。

50* **由第二意見**:[驗證子代理](/zh-TW/sub-agents)或[動態工作流](/zh-TW/workflows)檢查自己的發現,有一個新鮮的模型嘗試反駁結果,所以做工作的代理不是給它評分的那個。

51 

52每一步都用設置換取關注。提示版本適用於今天的任何任務。`/goal` 和 Stop hook 版本是讓無人值守運行正確完成而無需您的版本。

53 

54讓 Claude 展示證據而不是聲稱成功:測試輸出、它運行的命令及其返回的內容,或結果的截圖。審查證據比自己重新運行驗證要快得多,並且它適用於您沒有觀看的會話。

46 55 

47***56***

48 57 

49## 先探索,然後規劃,然後編碼58<h2 id="explore-first-then-plan-then-code">

59 先探索,然後規劃,然後編碼

60</h2>

50 61 

51<Tip>62<Tip>

52 將研究和規劃與實施分開,以避免解決錯誤的問題。63 將研究和規劃與實施分開,以避免解決錯誤的問題。


105 116 

106***117***

107 118 

108## 在提示中提供具體的上下文119<h2 id="provide-specific-context-in-your-prompts">

120 在提示中提供具體的上下文

121</h2>

109 122 

110<Tip>123<Tip>

111 您的指令越精確,您需要的更正就越少。124 您的指令越精確,您需要的更正就越少。


122 135 

123當您在探索並可以承受改正時,模糊的提示可能很有用。像 `「您會改進此文件中的什麼?」` 這樣的提示可以表面您沒有想到要詢問的內容。136當您在探索並可以承受改正時,模糊的提示可能很有用。像 `「您會改進此文件中的什麼?」` 這樣的提示可以表面您沒有想到要詢問的內容。

124 137 

125### 提供豐富的內容138<h3 id="provide-rich-content">

139 提供豐富的內容

140</h3>

126 141 

127<Tip>142<Tip>

128 使用 `@` 參考文件、粘貼截圖/圖像或直接管道數據。143 使用 `@` 參考文件、粘貼截圖/圖像或直接管道數據。


138 153 

139***154***

140 155 

141## 配置您的環境156<h2 id="configure-your-environment">

157 配置您的環境

158</h2>

142 159 

143一些設置步驟使 Claude Code 在所有會話中的效果顯著提高。有關擴展功能的完整概述和何時使用每個功能,請參閱 [擴展 Claude Code](/zh-TW/features-overview)。160一些設置步驟使 Claude Code 在所有會話中的效果顯著提高。有關擴展功能的完整概述和何時使用每個功能,請參閱 [擴展 Claude Code](/zh-TW/features-overview)。

144 161 

145### 編寫有效的 CLAUDE.md162<h3 id="write-an-effective-claude-md">

163 編寫有效的 CLAUDE.md

164</h3>

146 165 

147<Tip>166<Tip>

148 運行 `/init` 根據您當前的項目結構生成一個啟動 CLAUDE.md 文件,然後隨著時間推移進行改進。167 運行 `/init` 根據您當前的項目結構生成一個啟動 CLAUDE.md 文件,然後隨著時間推移進行改進。


200* **父目錄**:對於 monorepos 很有用,其中 `root/CLAUDE.md` 和 `root/foo/CLAUDE.md` 都會自動拉入219* **父目錄**:對於 monorepos 很有用,其中 `root/CLAUDE.md` 和 `root/foo/CLAUDE.md` 都會自動拉入

201* **子目錄**:當在這些目錄中的文件上工作時,Claude 按需拉入子 CLAUDE.md 文件220* **子目錄**:當在這些目錄中的文件上工作時,Claude 按需拉入子 CLAUDE.md 文件

202 221 

203### 配置權限222<h3 id="configure-permissions">

223 配置權限

224</h3>

204 225 

205<Tip>226<Tip>

206 使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 讓分類器處理批准,使用 `/permissions` 將特定命令列入白名單,或使用 `/sandbox` 進行操作系統級隔離。每種方式都減少了中斷,同時讓您保持控制。227 使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 讓分類器處理批准,使用 `/permissions` 將特定命令列入白名單,或使用 `/sandbox` 進行操作系統級隔離。每種方式都減少了中斷,同時讓您保持控制。


214 235 

215閱讀更多關於 [permission modes](/zh-TW/permission-modes)、[permission rules](/zh-TW/permissions) 和 [sandboxing](/zh-TW/sandboxing)。236閱讀更多關於 [permission modes](/zh-TW/permission-modes)、[permission rules](/zh-TW/permissions) 和 [sandboxing](/zh-TW/sandboxing)。

216 237 

217### 使用 CLI 工具238<h3 id="use-cli-tools">

239 使用 CLI 工具

240</h3>

218 241 

219<Tip>242<Tip>

220 告訴 Claude Code 在與外部服務交互時使用 CLI 工具,如 `gh`、`aws`、`gcloud` 和 `sentry-cli`。243 告訴 Claude Code 在與外部服務交互時使用 CLI 工具,如 `gh`、`aws`、`gcloud` 和 `sentry-cli`。


224 247 

225Claude 也很擅長學習它不知道的 CLI 工具。嘗試像 `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.` 這樣的提示。248Claude 也很擅長學習它不知道的 CLI 工具。嘗試像 `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.` 這樣的提示。

226 249 

227### 連接 MCP servers250<h3 id="connect-mcp-servers">

251 連接 MCP servers

252</h3>

228 253 

229<Tip>254<Tip>

230 運行 `claude mcp add` 以連接外部工具,如 Notion、Figma 或您的數據庫。255 運行 `claude mcp add` 以連接外部工具,如 Notion、Figma 或您的數據庫。


232 257 

233使用 [MCP servers](/zh-TW/mcp),您可以要求 Claude 從問題跟蹤器實施功能、查詢數據庫、分析監控數據、集成來自 Figma 的設計並自動化工作流。258使用 [MCP servers](/zh-TW/mcp),您可以要求 Claude 從問題跟蹤器實施功能、查詢數據庫、分析監控數據、集成來自 Figma 的設計並自動化工作流。

234 259 

235### 設置 hooks260<h3 id="set-up-hooks">

261 設置 hooks

262</h3>

236 263 

237<Tip>264<Tip>

238 使用 hooks 進行必須每次發生且沒有例外的操作。265 使用 hooks 進行必須每次發生且沒有例外的操作。


242 269 

243Claude 可以為您編寫 hooks。嘗試像 *「編寫一個在每次文件編輯後運行 eslint 的 hook」* 或 *「編寫一個阻止寫入遷移文件夾的 hook。」* 這樣的提示。編輯 `.claude/settings.json` 直接配置 hooks,並運行 `/hooks` 瀏覽已配置的內容。270Claude 可以為您編寫 hooks。嘗試像 *「編寫一個在每次文件編輯後運行 eslint 的 hook」* 或 *「編寫一個阻止寫入遷移文件夾的 hook。」* 這樣的提示。編輯 `.claude/settings.json` 直接配置 hooks,並運行 `/hooks` 瀏覽已配置的內容。

244 271 

245### 創建 skills272<h3 id="create-skills">

273 創建 skills

274</h3>

246 275 

247<Tip>276<Tip>

248 在 `.claude/skills/` 中創建 `SKILL.md` 文件,為 Claude 提供域知識和可重用工作流。277 在 `.claude/skills/` 中創建 `SKILL.md` 文件,為 Claude 提供域知識和可重用工作流。


286 315 

287運行 `/fix-issue 1234` 來調用它。對於具有您想手動觸發的副作用的工作流,使用 `disable-model-invocation: true`。316運行 `/fix-issue 1234` 來調用它。對於具有您想手動觸發的副作用的工作流,使用 `disable-model-invocation: true`。

288 317 

289### 創建自定義 subagents318<h3 id="create-custom-subagents">

319 創建自定義 subagents

320</h3>

290 321 

291<Tip>322<Tip>

292 在 `.claude/agents/` 中定義專門的助手,Claude 可以委派給它們進行隔離的任務。323 在 `.claude/agents/` 中定義專門的助手,Claude 可以委派給它們進行隔離的任務。


312 343 

313明確告訴 Claude 使用 subagents:*「使用 subagent 審查此代碼以查找安全問題。」*344明確告訴 Claude 使用 subagents:*「使用 subagent 審查此代碼以查找安全問題。」*

314 345 

315### 安裝 plugins346<h3 id="install-plugins">

347 安裝 plugins

348</h3>

316 349 

317<Tip>350<Tip>

318 運行 `/plugin` 瀏覽市場。Plugins 無需配置即可添加 skills、工具和集成。351 運行 `/plugin` 瀏覽市場。Plugins 無需配置即可添加 skills、工具和集成。


324 357 

325***358***

326 359 

327## 有效溝通360<h2 id="communicate-effectively">

361 有效溝通

362</h2>

328 363 

329您與 Claude Code 溝通的方式會顯著影響結果的質量。364您與 Claude Code 溝通的方式會顯著影響結果的質量。

330 365 

331### 詢問代碼庫問題366<h3 id="ask-codebase-questions">

367 詢問代碼庫問題

368</h3>

332 369 

333<Tip>370<Tip>

334 詢問 Claude 您會問資深工程師的問題。371 詢問 Claude 您會問資深工程師的問題。


344 381 

345以這種方式使用 Claude Code 是一個有效的入職工作流程,改進了入職時間並減少了對其他工程師的負擔。無需特殊提示:直接提出問題。382以這種方式使用 Claude Code 是一個有效的入職工作流程,改進了入職時間並減少了對其他工程師的負擔。無需特殊提示:直接提出問題。

346 383 

347### 讓 Claude 採訪您384<h3 id="let-claude-interview-you">

385 讓 Claude 採訪您

386</h3>

348 387 

349<Tip>388<Tip>

350 對於較大的功能,讓 Claude 先採訪您。從最小的提示開始,並要求 Claude 使用 `AskUserQuestion` 工具採訪您。389 對於較大的功能,讓 Claude 先採訪您。從最小的提示開始,並要求 Claude 使用 `AskUserQuestion` 工具採訪您。


362 401 

363規格完成後,開始新會話以執行它。新會話具有完全專注於實施的乾淨 context,您有一個書面規格可供參考。402規格完成後,開始新會話以執行它。新會話具有完全專注於實施的乾淨 context,您有一個書面規格可供參考。

364 403 

404最有用的規格是自包含的:它們命名涉及的文件和介面、說明什麼超出範圍,並以端到端驗證步驟結束,證明該功能有效。花費時間使規格精確的回報遠大於花費時間觀看實施的回報。

405 

365***406***

366 407 

367## 管理您的會話408<h2 id="manage-your-session">

409 管理您的會話

410</h2>

368 411 

369對話是持久的和可逆的。利用這一點!412對話是持久的和可逆的。利用這一點!

370 413 

371### 及早且經常改正方向414<h3 id="course-correct-early-and-often">

415 及早且經常改正方向

416</h3>

372 417 

373<Tip>418<Tip>

374 一旦您注意到 Claude 偏離軌道,立即改正。419 一旦您注意到 Claude 偏離軌道,立即改正。


383 428 

384如果您在一個會話中對同一問題改正了 Claude 超過兩次,context 就會被失敗的方法所污染。運行 `/clear` 並使用更具體的提示重新開始,該提示包含您學到的內容。具有更好提示的乾淨會話幾乎總是優於具有累積改正的長會話。429如果您在一個會話中對同一問題改正了 Claude 超過兩次,context 就會被失敗的方法所污染。運行 `/clear` 並使用更具體的提示重新開始,該提示包含您學到的內容。具有更好提示的乾淨會話幾乎總是優於具有累積改正的長會話。

385 430 

386### 積極管理 context431<h3 id="manage-context-aggressively">

432 積極管理 context

433</h3>

387 434 

388<Tip>435<Tip>

389 在不相關的任務之間運行 `/clear` 以重置 context。436 在不相關的任務之間運行 `/clear` 以重置 context。


400* 在 CLAUDE.md 中使用像 `「壓縮時,始終保留完整的修改文件列表和任何測試命令」` 這樣的指令自定義壓縮行為,以確保關鍵 context 在總結中存活447* 在 CLAUDE.md 中使用像 `「壓縮時,始終保留完整的修改文件列表和任何測試命令」` 這樣的指令自定義壓縮行為,以確保關鍵 context 在總結中存活

401* 對於不需要留在 context 中的快速問題,使用 [`/btw`](/zh-TW/interactive-mode#side-questions-with-%2Fbtw)。答案出現在可關閉的覆蓋層中,永遠不會進入對話歷史記錄,所以您可以檢查詳細信息而不會增加 context。448* 對於不需要留在 context 中的快速問題,使用 [`/btw`](/zh-TW/interactive-mode#side-questions-with-%2Fbtw)。答案出現在可關閉的覆蓋層中,永遠不會進入對話歷史記錄,所以您可以檢查詳細信息而不會增加 context。

402 449 

403### 使用 subagents 進行調查450<h3 id="use-subagents-for-investigation">

451 使用 subagents 進行調查

452</h3>

404 453 

405<Tip>454<Tip>

406 使用 `「使用 subagents 調查 X」` 委派研究。他們在單獨的 context 中探索,為實施保持您的主對話乾淨。455 使用 `「使用 subagents 調查 X」` 委派研究。他們在單獨的 context 中探索,為實施保持您的主對話乾淨。


421use a subagent to review this code for edge cases470use a subagent to review this code for edge cases

422```471```

423 472 

424### 使用檢查點倒帶473<h3 id="rewind-with-checkpoints">

474 使用檢查點倒帶

475</h3>

425 476 

426<Tip>477<Tip>

427 您發送的每個提示都會創建一個檢查點。您可以將對話、代碼或兩者恢復到任何之前的檢查點。478 您發送的每個提示都會創建一個檢查點。您可以將對話、代碼或兩者恢復到任何之前的檢查點。


435 檢查點僅跟蹤 Claude 進行的更改,不跟蹤外部進程。這不是 git 的替代品。486 檢查點僅跟蹤 Claude 進行的更改,不跟蹤外部進程。這不是 git 的替代品。

436</Warning>487</Warning>

437 488 

438### 恢復對話489<h3 id="resume-conversations">

490 恢復對話

491</h3>

439 492 

440<Tip>493<Tip>

441 使用 `/rename` 給會話命名,並像對待分支一樣對待它們:每個工作流都有自己的持久 context。494 使用 `/rename` 給會話命名,並像對待分支一樣對待它們:每個工作流都有自己的持久 context。


445 498 

446***499***

447 500 

448## 自動化和擴展501<h2 id="automate-and-scale">

502 自動化和擴展

503</h2>

449 504 

450一旦您對一個 Claude 有效,通過平行會話、非交互模式和扇出模式將您的輸出乘以倍數。505一旦您對一個 Claude 有效,通過平行會話、非交互模式和扇出模式將您的輸出乘以倍數。

451 506 

452到目前為止,一切都假設一個人、一個 Claude 和一個對話。但 Claude Code 水平擴展。本節中的技術展示了您如何完成更多工作。507到目前為止,一切都假設一個人、一個 Claude 和一個對話。但 Claude Code 水平擴展。本節中的技術展示了您如何完成更多工作。

453 508 

454### 運行非交互模式509<h3 id="run-non-interactive-mode">

510 運行非交互模式

511</h3>

455 512 

456<Tip>513<Tip>

457 在 CI、pre-commit hooks 或腳本中使用 `claude -p "prompt"`。添加 `--output-format stream-json` 以獲得流式 JSON 輸出。514 在 CI、pre-commit hooks 或腳本中使用 `claude -p "prompt"`。添加 `--output-format stream-json --verbose` 以獲得流式 JSON 輸出。

458</Tip>515</Tip>

459 516 

460使用 `claude -p "your prompt"`,您可以非交互地運行 Claude,不需要會話。[非交互模式](/zh-TW/headless)是您將 Claude 集成到 CI 管道、pre-commit hooks 或任何自動化工作流中的方式。輸出格式讓您以編程方式解析結果:純文本、JSON 或流式 JSON。517使用 `claude -p "your prompt"`,您可以非交互地運行 Claude,不需要會話。[非交互模式](/zh-TW/headless)是您將 Claude 集成到 CI 管道、pre-commit hooks 或任何自動化工作流中的方式。輸出格式讓您以編程方式解析結果:純文本、JSON 或流式 JSON。


467claude -p "List all API endpoints" --output-format json524claude -p "List all API endpoints" --output-format json

468 525 

469# Streaming for real-time processing526# Streaming for real-time processing

470claude -p "Analyze this log file" --output-format stream-json527claude -p "Analyze this log file" --output-format stream-json --verbose

471```528```

472 529 

473### 運行多個 Claude 會話530<h3 id="run-multiple-claude-sessions">

531 運行多個 Claude 會話

532</h3>

474 533 

475<Tip>534<Tip>

476 並行運行多個 Claude 會話以加快開發、運行隔離的實驗或啟動複雜的工作流。535 並行運行多個 Claude 會話以加快開發、運行隔離的實驗或啟動複雜的工作流。


495 554 

496您可以對測試做類似的事情:讓一個 Claude 編寫測試,然後另一個編寫代碼來通過它們。555您可以對測試做類似的事情:讓一個 Claude 編寫測試,然後另一個編寫代碼來通過它們。

497 556 

498### 跨文件扇出557<h3 id="fan-out-across-files">

558 跨文件扇出

559</h3>

499 560 

500<Tip>561<Tip>

501 循環遍歷任務,為每個任務調用 `claude -p`。使用 `--allowedTools` 為批量操作限定權限。562 循環遍歷任務,為每個任務調用 `claude -p`。使用 `--allowedTools` 為批量操作限定權限。


530 591 

531在開發期間使用 `--verbose` 進行調試,在生產中關閉它。592在開發期間使用 `--verbose` 進行調試,在生產中關閉它。

532 593 

533### 使用 auto mode 自主運行594<h3 id="run-autonomously-with-auto-mode">

595 使用 auto mode 自主運行

596</h3>

534 597 

535對於不間斷的執行和背景安全檢查,使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)。分類器模型在命令運行前審查它們,阻止範圍升級、未知基礎設施和由敵對內容驅動的操作,同時讓常規工作無提示進行。598對於不間斷的執行和背景安全檢查,使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)。分類器模型在命令運行前審查它們,阻止範圍升級、未知基礎設施和由敵對內容驅動的操作,同時讓常規工作無提示進行。

536 599 


540 603 

541對於使用 `-p` 標誌的非交互運行,如果分類器重複阻止操作,auto mode 會中止,因為沒有用戶可以回退到。請參閱 [auto mode 何時回退](/zh-TW/permission-modes#when-auto-mode-falls-back) 以了解閾值。604對於使用 `-p` 標誌的非交互運行,如果分類器重複阻止操作,auto mode 會中止,因為沒有用戶可以回退到。請參閱 [auto mode 何時回退](/zh-TW/permission-modes#when-auto-mode-falls-back) 以了解閾值。

542 605 

606<h3 id="add-an-adversarial-review-step">

607 添加對抗性審查步驟

608</h3>

609 

610<Tip>

611 在將任務視為完成之前,讓一個子代理在新鮮的 context 中審查差異並報告缺陷。

612</Tip>

613 

614Claude 無人值守工作的時間越長,在您將工作視為完成之前進行獨立檢查就越重要。在新鮮的 [subagent](/zh-TW/sub-agents) context 中運行的審查者只看到差異和您給它的標準,而不是產生更改的推理,因此它按自己的條款評估結果。

615 

616對於正確性檢查,運行捆綁的 [`/code-review` skill](/zh-TW/commands),它在新鮮的子代理中審查當前差異以查找錯誤,並將發現返回到會話。要檢查差異是否符合您的計劃,請自己編寫審查提示。命名要檢查的工作、要檢查的計劃以及什麼算作發現:

617 

618```text theme={null}

619使用子代理根據 PLAN.md 審查速率限制器差異。檢查

620每個要求都已實施、列出的邊界情況都有測試,以及

621任務範圍之外沒有任何內容更改。報告缺陷,而不是風格偏好。

622```

623 

624因為審查者作為子代理運行,實施會話直接接收缺陷,可以修復它們並重新審查,而無需您在窗口之間複製發現。對於較長的自主運行,[agent team](/zh-TW/agent-teams) 可以在許多任務中保持此循環進行,同時您對記錄的發現進行抽查。

625 

626<Callout>

627 被提示尋找缺陷的審查者通常會報告一些,即使工作是健全的,因為那是它被要求做的。追逐每個發現會導致過度工程:額外的抽象層、防禦性代碼和無法發生的情況的測試。告訴審查者只標記影響正確性或陳述要求的缺陷,並將其餘的視為可選。

628</Callout>

629 

543***630***

544 631 

545## 避免常見的失敗模式632<h2 id="avoid-common-failure-patterns">

633 避免常見的失敗模式

634</h2>

546 635 

547這些是常見的錯誤。及早識別它們可以節省時間:636這些是常見的錯誤。及早識別它們可以節省時間:

548 637 


559 648 

560***649***

561 650 

562## 培養您的直覺651<h2 id="develop-your-intuition">

652 培養您的直覺

653</h2>

563 654 

564本指南中的模式不是一成不變的。它們是通常效果很好的起點,但可能不是每種情況的最優選擇。655本指南中的模式不是一成不變的。它們是通常效果很好的起點,但可能不是每種情況的最優選擇。

565 656 


569 660 

570隨著時間的推移,您將培養沒有指南可以捕捉的直覺。您將知道何時具體以及何時開放,何時規劃以及何時探索,何時清除 context 以及何時讓它累積。661隨著時間的推移,您將培養沒有指南可以捕捉的直覺。您將知道何時具體以及何時開放,何時規劃以及何時探索,何時清除 context 以及何時讓它累積。

571 662 

572## 相關資源663<h2 id="related-resources">

664 相關資源

665</h2>

573 666 

574* [Claude Code 如何工作](/zh-TW/how-claude-code-works):代理循環、工具和 context 管理667* [Claude Code 如何工作](/zh-TW/how-claude-code-works):代理循環、工具和 context 管理

575* [擴展 Claude Code](/zh-TW/features-overview):skills、hooks、MCP、subagents 和 plugins668* [擴展 Claude Code](/zh-TW/features-overview):skills、hooks、MCP、subagents 和 plugins

champion-kit.md +48 −16

Details

10 10 

11開發者工具的採用很少是因為推出公告而發生的。它發生在團隊中有人開始很好地使用該工具、公開談論它,並使其他人容易跟進的時候。你作為倡導者所做的工作對團隊有不成比例的影響:你分享的每個例子都會縮短後來工程師的學習曲線,你在公開場合回答的每個問題都會將一個人的經驗轉變為整個團隊可以建立的東西。你是在充當團隊的乘數,而不是幫助台,本指南的結構是為了讓這個角色在這些條件下保持可持續性。11開發者工具的採用很少是因為推出公告而發生的。它發生在團隊中有人開始很好地使用該工具、公開談論它,並使其他人容易跟進的時候。你作為倡導者所做的工作對團隊有不成比例的影響:你分享的每個例子都會縮短後來工程師的學習曲線,你在公開場合回答的每個問題都會將一個人的經驗轉變為整個團隊可以建立的東西。你是在充當團隊的乘數,而不是幫助台,本指南的結構是為了讓這個角色在這些條件下保持可持續性。

12 12 

13## 倡導者角色13<h2 id="the-champion-role">

14 倡導者角色

15</h2>

14 16 

15該角色由三種相互強化的行為組成。17該角色由三種相互強化的行為組成。

16 18 


22 24 

23大多數這些自然適應你已經在做的工作。區別在於對你的發現發佈位置和你的答案如何傳播的少量額外意圖。25大多數這些自然適應你已經在做的工作。區別在於對你的發現發佈位置和你的答案如何傳播的少量額外意圖。

24 26 

25### 這應該花費你多少27<h3 id="what-this-should-cost-you">

28 這應該花費你多少

29</h3>

26 30 

27與自己和你的主管設定期望。下面的活動旨在適應正常的工作週,該角色應該保持為現有工作的乘數,而不是額外的支持責任。31與自己和你的主管設定期望。下面的活動旨在適應正常的工作週,該角色應該保持為現有工作的乘數,而不是額外的支持責任。

28 32 


33| 主持每週展示和講述線程 | 約 5 分鐘 | 你發佈開場提示;團隊提供內容。 |37| 主持每週展示和講述線程 | 約 5 分鐘 | 你發佈開場提示;團隊提供內容。 |

34| 可選配對或演練 | 0 到 30 分鐘 | 為真正被卡住的同事保留此項,並在安排時間之前提供 [Quickstart](/zh-TW/quickstart) 連結。 |38| 可選配對或演練 | 0 到 30 分鐘 | 為真正被卡住的同事保留此項,並在安排時間之前提供 [Quickstart](/zh-TW/quickstart) 連結。 |

35 39 

36## 分享你的發現40<h2 id="share-what-you-discover">

41 分享你的發現

42</h2>

37 43 

38你自己的經驗是你的同事將遇到的最有說服力的材料,因為它特定於代碼庫、工作流程和你們都共享的問題。文檔告訴人們什麼是可能的;你的帖子向他們展示在你的環境中實際上什麼是有效的。44你自己的經驗是你的同事將遇到的最有說服力的材料,因為它特定於代碼庫、工作流程和你們都共享的問題。文檔告訴人們什麼是可能的;你的帖子向他們展示在你的環境中實際上什麼是有效的。

39 45 

40### 什麼值得分享46<h3 id="what-is-worth-sharing">

47 什麼值得分享

48</h3>

41 49 

42最有用的帖子描述了同事明天可以重複使用的技術,而不是已經完成的結果。技術在團隊中傳播時會複合;狀態更新則不會。50最有用的帖子描述了同事明天可以重複使用的技術,而不是已經完成的結果。技術在團隊中傳播時會複合;狀態更新則不會。

43 51 


48* "我配置了一個 Stop hook,以便在長任務完成時收到桌面通知。配置在線程中。"56* "我配置了一個 Stop hook,以便在長任務完成時收到桌面通知。配置在線程中。"

49* "運行 `/init` 從存儲庫生成 `CLAUDE.md`,以便助手停止重新詢問我們的約定。"57* "運行 `/init` 從存儲庫生成 `CLAUDE.md`,以便助手停止重新詢問我們的約定。"

50 58 

51### 在哪裡分享59<h3 id="where-to-share-it">

60 在哪裡分享

61</h3>

52 62 

53在你的團隊已經閱讀的地方發佈。目標是將例子放在正常工作的路徑中,而不是創建一個目的地。63在你的團隊已經閱讀的地方發佈。目標是將例子放在正常工作的路徑中,而不是創建一個目的地。

54 64 


59| 站會或每週書面更新 | 使用正常化與主管和跳級經理 | 一句話描述一個具體結果 |69| 站會或每週書面更新 | 使用正常化與主管和跳級經理 | 一句話描述一個具體結果 |

60| 團隊 wiki 或內部文檔 | 持久的模式、自定義技能和 `CLAUDE.md` 例子 | 一個短頁面,從頻道主題連結,以便它保持可發現性 |70| 團隊 wiki 或內部文檔 | 持久的模式、自定義技能和 `CLAUDE.md` 例子 | 一個短頁面,從頻道主題連結,以便它保持可發現性 |

61 71 

62### 有效的格式72<h3 id="the-format-that-works">

73 有效的格式

74</h3>

63 75 

64一個截圖伴隨一行上下文,或簡短的前後描述,通常是正確的細節級別。保持每個帖子足夠短,以便滾動經過的人仍然吸收要點。長寫作往往被保存以供稍後使用並被遺忘,而帶有截圖的短帖子往往被複製和嘗試。76一個截圖伴隨一行上下文,或簡短的前後描述,通常是正確的細節級別。保持每個帖子足夠短,以便滾動經過的人仍然吸收要點。長寫作往往被保存以供稍後使用並被遺忘,而帶有截圖的短帖子往往被複製和嘗試。

65 77 


80直到你看到"plan";它在更改任何內容之前精確列出它打算觸及的文件。92直到你看到"plan";它在更改任何內容之前精確列出它打算觸及的文件。

81```93```

82 94 

83## 成為人們提問的對象95<h2 id="be-the-person-people-ask">

96 成為人們提問的對象

97</h2>

84 98 

85一旦你分享了幾個例子,問題就會隨之而來。這是倡導者角色具有最大槓桿作用的地方,因為對一個人的好答案經常會解除其他幾個正在觀看同一頻道的人的困境。99一旦你分享了幾個例子,問題就會隨之而來。這是倡導者角色具有最大槓桿作用的地方,因為對一個人的好答案經常會解除其他幾個正在觀看同一頻道的人的困境。

86 100 

87### 用提示而不是解釋來回答101<h3 id="answer-with-a-prompt-rather-than-an-explanation">

102 用提示而不是解釋來回答

103</h3>

88 104 

89當同事問你如何完成某事時,最有用的回應是你實際使用的提示。他們將通過針對自己的問題運行該提示學到更多,而不是從你可以寫的任何描述,並且它給了他們可以立即採取行動的東西。105當同事問你如何完成某事時,最有用的回應是你實際使用的提示。他們將通過針對自己的問題運行該提示學到更多,而不是從你可以寫的任何描述,並且它給了他們可以立即採取行動的東西。

90 106 


95它追蹤了調度程序中的兩個未加入的承諾。在你的測試上嘗試相同的措辭。111它追蹤了調度程序中的兩個未加入的承諾。在你的測試上嘗試相同的措辭。

96```112```

97 113 

98### 指向功能而不是文檔114<h3 id="point-at-the-feature-rather-than-the-documentation">

115 指向功能而不是文檔

116</h3>

99 117 

100"嘗試 plan mode,按 `Shift+Tab` 直到你看到它"這樣的回應在當時比文檔連結更有用。如果該人稍後需要更多深度,他們會自己找到;現在他們需要解除困境的單一事物。118"嘗試 plan mode,按 `Shift+Tab` 直到你看到它"這樣的回應在當時比文檔連結更有用。如果該人稍後需要更多深度,他們會自己找到;現在他們需要解除困境的單一事物。

101 119 

102### 你可能會聽到的問題120<h3 id="questions-you-are-likely-to-hear">

121 你可能會聽到的問題

122</h3>

103 123 

104| 問題 | 建議回應 | 後續資源 |124| 問題 | 建議回應 | 後續資源 |

105| --------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- |125| --------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- |


111| "這只是自動完成嗎?" | 提供一個簡短的演示,其中 Claude 解釋一個不熟悉的文件、跨服務追蹤錯誤或起草遷移計劃。這些任務需要在存儲庫中進行推理,而不是完成單一行。 | 一個兩分鐘的現場演示 |131| "這只是自動完成嗎?" | 提供一個簡短的演示,其中 Claude 解釋一個不熟悉的文件、跨服務追蹤錯誤或起草遷移計劃。這些任務需要在存儲庫中進行推理,而不是完成單一行。 | 一個兩分鐘的現場演示 |

112| "安全和數據處理呢?" | 將此問題轉介給你的管理員。你的組織的部署和數據處理政策已經配置,倡導者不應該即興回答此問題。 | [Security](/zh-TW/security) · [Data usage](/zh-TW/data-usage) |132| "安全和數據處理呢?" | 將此問題轉介給你的管理員。你的組織的部署和數據處理政策已經配置,倡導者不應該即興回答此問題。 | [Security](/zh-TW/security) · [Data usage](/zh-TW/data-usage) |

113 133 

114## 擴大圈子134<h2 id="grow-the-circle">

135 擴大圈子

136</h2>

115 137 

116目標不是建立一個程序或擁有推出。它是建立少量輕量級習慣,以便即使你停止主動推動它,動力也能繼續。當頻道中的問題被除你之外的人回答時,該角色已經完成了它的工作。138目標不是建立一個程序或擁有推出。它是建立少量輕量級習慣,以便即使你停止主動推動它,動力也能繼續。當頻道中的問題被除你之外的人回答時,該角色已經完成了它的工作。

117 139 

118### 傾向於有效的模式140<h3 id="patterns-that-tend-to-work">

141 傾向於有效的模式

142</h3>

119 143 

120| 模式 | 如何運行它 | 所需努力 |144| 模式 | 如何運行它 | 所需努力 |

121| ------------- | ------------------------------------------------------------------------------------------------------------- | ------------ |145| ------------- | ------------------------------------------------------------------------------------------------------------- | ------------ |


126| 配對第一個任務 | 為任何開始的人提供一個十五分鐘的配對會話。他們自己代碼上的一個成功結果比任何演示都更有說服力。 | 每人約十五分鐘 |150| 配對第一個任務 | 為任何開始的人提供一個十五分鐘的配對會話。他們自己代碼上的一個成功結果比任何演示都更有說服力。 | 每人約十五分鐘 |

127| 識別下一個倡導者 | 問你最多問題的同事通常已經準備好承擔這個角色。轉發他們這個頁面並在你之間分配頻道責任。 | 可忽略不計 |151| 識別下一個倡導者 | 問你最多問題的同事通常已經準備好承擔這個角色。轉發他們這個頁面並在你之間分配頻道責任。 | 可忽略不計 |

128 152 

129### 三十天行動手冊153<h3 id="thirty-day-playbook">

154 三十天行動手冊

155</h3>

130 156 

131如果一個寬鬆的計劃有幫助,下面的序列反映了在大多數團隊中傾向於有效的東西。自由調整以適應你的背景。157如果一個寬鬆的計劃有幫助,下面的序列反映了在大多數團隊中傾向於有效的東西。自由調整以適應你的背景。

132 158 


156 </Step>182 </Step>

157</Steps>183</Steps>

158 184 

159### 當有人想深入時185<h3 id="when-someone-wants-to-go-deeper">

186 當有人想深入時

187</h3>

160 188 

161你是溫暖的介紹而不是入職計劃。當同事從"我應該嘗試這個嗎"進入"我如何有效地使用它"時,指向他們 [Quickstart](/zh-TW/quickstart) 和 [Common workflows](/zh-TW/common-workflows) 頁面。它們包含涵蓋真正有用但難以自己發現的功能的簡短部分。189你是溫暖的介紹而不是入職計劃。當同事從"我應該嘗試這個嗎"進入"我如何有效地使用它"時,指向他們 [Quickstart](/zh-TW/quickstart) 和 [Common workflows](/zh-TW/common-workflows) 頁面。它們包含涵蓋真正有用但難以自己發現的功能的簡短部分。

162 190 

163## 回應常見疑慮191<h2 id="respond-to-common-concerns">

192 回應常見疑慮

193</h2>

164 194 

165健康的懷疑是預期的;工程師應該對觸及他們代碼的工具保持謹慎。最有效的回應很少是論證一般情況。相反,承認疑慮,提供簡短的重新框架,並在該人自己的代碼上提議一個具體的演示。大多數疑慮通過單一成功的經驗得到解決。195健康的懷疑是預期的;工程師應該對觸及他們代碼的工具保持謹慎。最有效的回應很少是論證一般情況。相反,承認疑慮,提供簡短的重新框架,並在該人自己的代碼上提議一個具體的演示。大多數疑慮通過單一成功的經驗得到解決。

166 196 


172| "我嘗試過一次,它產生了幻覺。" | 這通常是上下文問題而不是模型問題。@-提及相關文件、運行 `/init` 和提供實際錯誤輸出通常會解決它。 | 用適當的 `@` 上下文重新運行他們的原始提示。 |202| "我嘗試過一次,它產生了幻覺。" | 這通常是上下文問題而不是模型問題。@-提及相關文件、運行 `/init` 和提供實際錯誤輸出通常會解決它。 | 用適當的 `@` 上下文重新運行他們的原始提示。 |

173| "我們沒有時間學習另一個工具。" | Claude Code 是一個終端命令而不是平台。如果它在第一個會話中不返回價值,設置它是合理的。 | 兩分鐘安裝後跟一個真實錯誤。 |203| "我們沒有時間學習另一個工具。" | Claude Code 是一個終端命令而不是平台。如果它在第一個會話中不返回價值,設置它是合理的。 | 兩分鐘安裝後跟一個真實錯誤。 |

174 204 

175## 快速參考表205<h2 id="quick-reference-sheet">

206 快速參考表

207</h2>

176 208 

177下面的技術是最可靠地將某人從第一次試驗轉移到日常使用的技術。在頻道中固定此表或單獨分享它。209下面的技術是最可靠地將某人從第一次試驗轉移到日常使用的技術。在頻道中固定此表或單獨分享它。

178 210 

channels.md +42 −17

Details

7> 使用 channels 從 MCP 伺服器將訊息、警報和 webhooks 推送到您的 Claude Code 工作階段。轉發 CI 結果、聊天訊息和監控事件,讓 Claude 在您不在時做出反應。7> 使用 channels 從 MCP 伺服器將訊息、警報和 webhooks 推送到您的 Claude Code 工作階段。轉發 CI 結果、聊天訊息和監控事件,讓 Claude 在您不在時做出反應。

8 8 

9<Note>9<Note>

10 Channels 處於[研究預覽](#research-preview)階段,需要 Claude Code v2.1.80 或更新版本。它們需要 claude.ai 登入。不支援 Console API 金鑰驗證。Team 和 Enterprise 組織必須[明確啟用它們](#enterprise-controls)。10 Channels 處於[研究預覽](#research-preview)階段,需要 Claude Code v2.1.80 或更新版本。它們需要透過 claude.ai Console API 金鑰進行 Anthropic 驗證,且在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上不可用。Team 和 Enterprise 組織必須[明確啟用它們](#enterprise-controls)。

11</Note>11</Note>

12 12 

13Channel 是一個 MCP 伺服器,可將事件推送到您執行中的 Claude Code 工作階段,讓 Claude 能對您不在終端時發生的事情做出反應。Channels 可以是雙向的:Claude 讀取事件並通過同一 channel 回覆,就像聊天橋接一樣。事件只在工作階段開啟時到達,因此對於始終開啟的設定,您可以在背景程序或持久終端中執行 Claude。13Channel 是一個 MCP 伺服器,可將事件推送到您執行中的 Claude Code 工作階段,讓 Claude 能對您不在終端時發生的事情做出反應。Channels 可以是雙向的:Claude 讀取事件並通過同一 channel 回覆,就像聊天橋接一樣。事件只在工作階段開啟時到達,因此對於始終開啟的設定,您可以在背景程序或持久終端中執行 Claude。


23* [支援的 channels](#supported-channels):Telegram、Discord 和 iMessage 設定23* [支援的 channels](#supported-channels):Telegram、Discord 和 iMessage 設定

24* [安裝並執行 channel](#quickstart),使用 fakechat(本地主機演示)24* [安裝並執行 channel](#quickstart),使用 fakechat(本地主機演示)

25* [誰可以推送訊息](#security):寄件者允許清單以及您如何配對25* [誰可以推送訊息](#security):寄件者允許清單以及您如何配對

26* [為您的組織啟用 channels](#enterprise-controls)(Team Enterprise26* [為您的組織啟用 channels](#enterprise-controls)(如果您管理 Team、Enterprise Console 組織

27* [Channels 如何比較](#how-channels-compare)網路工作階段、Slack、MCP 和遠端控制27* [Channels 如何比較](#how-channels-compare)網路工作階段、Slack、MCP 和遠端控制

28 28 

29若要建立您自己的 channel,請參閱 [Channels 參考](/zh-TW/channels-reference)。29若要建立您自己的 channel,請參閱 [Channels 參考](/zh-TW/channels-reference)。

30 30 

31## 支援的 channels31<h2 id="supported-channels">

32 支援的 channels

33</h2>

32 34 

33每個支援的 channel 都是需要 [Bun](https://bun.sh) 的外掛程式。如需在連接真實平台之前親身體驗外掛程式流程的演示,請嘗試 [fakechat 快速入門](#quickstart)。35每個支援的 channel 都是需要 [Bun](https://bun.sh) 的外掛程式。如需在連接真實平台之前親身體驗外掛程式流程的演示,請嘗試 [fakechat 快速入門](#quickstart)。

34 36 


217 219 

218您也可以[建立您自己的 channel](/zh-TW/channels-reference),用於尚未有外掛程式的系統。220您也可以[建立您自己的 channel](/zh-TW/channels-reference),用於尚未有外掛程式的系統。

219 221 

220## 快速入門222<h2 id="quickstart">

223 快速入門

224</h2>

221 225 

222Fakechat 是一個官方支援的演示 channel,在 localhost 上執行聊天 UI,無需驗證,也無需設定外部服務。226Fakechat 是一個官方支援的演示 channel,在 localhost 上執行聊天 UI,無需驗證,也無需設定外部服務。

223 227 


225 229 

226若要嘗試 fakechat 演示,您需要:230若要嘗試 fakechat 演示,您需要:

227 231 

228* Claude Code [已安裝並使用 claude.ai 帳戶進行驗證](/zh-TW/quickstart#step-1-install-claude-code)232* Claude Code [已安裝並使用 claude.ai 帳戶或 Claude Console API 金鑰進行驗證](/zh-TW/quickstart#step-1-install-claude-code)

229* [Bun](https://bun.sh) 已安裝。預先建立的 channel 外掛程式是 Bun 指令碼。使用 `bun --version` 檢查;如果失敗,[安裝 Bun](https://bun.sh/docs/installation)。233* [Bun](https://bun.sh) 已安裝。預先建立的 channel 外掛程式是 Bun 指令碼。使用 `bun --version` 檢查;如果失敗,[安裝 Bun](https://bun.sh/docs/installation)。

230* **Team/Enterprise 使用者**:您的組織管理員必須在受管設定中[啟用 channels](#enterprise-controls)234* **TeamEnterprise 或受管 Console 組織**:您的管理員必須在受管設定中[啟用 channels](#enterprise-controls)

231 235 

232<Steps>236<Steps>

233 <Step title="安裝 fakechat channel 外掛程式">237 <Step title="安裝 fakechat channel 外掛程式">


267 271 

268如果 Claude 在您不在終端時遇到權限提示,工作階段會暫停,直到您回應。宣告[權限中繼功能](/zh-TW/channels-reference#relay-permission-prompts)的 Channel 伺服器可以將這些提示轉發給您,以便您可以遠端批准或拒絕。對於無人值守使用,[`--dangerously-skip-permissions`](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 完全繞過提示,但僅在您信任的環境中使用。272如果 Claude 在您不在終端時遇到權限提示,工作階段會暫停,直到您回應。宣告[權限中繼功能](/zh-TW/channels-reference#relay-permission-prompts)的 Channel 伺服器可以將這些提示轉發給您,以便您可以遠端批准或拒絕。對於無人值守使用,[`--dangerously-skip-permissions`](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 完全繞過提示,但僅在您信任的環境中使用。

269 273 

270## 安全性274當您以非互動模式使用 `-p` 執行 channels 時,需要終端輸入的工具(例如多選題和計畫模式批准)會被停用,因此工作階段永遠不會因等待輸入而停滯。

275 

276<h2 id="security">

277 安全性

278</h2>

271 279 

272每個已批准的 channel 外掛程式都維護寄件者允許清單:只有您新增的 ID 可以推送訊息,其他所有人都會被無聲地丟棄。280每個已批准的 channel 外掛程式都維護寄件者允許清單:只有您新增的 ID 可以推送訊息,其他所有人都會被無聲地丟棄。

273 281 


280 288 

281iMessage 的工作方式不同:向自己傳送訊息會自動繞過閘道,您可以使用 `/imessage:access allow` 按控制代碼新增其他聯絡人。289iMessage 的工作方式不同:向自己傳送訊息會自動繞過閘道,您可以使用 `/imessage:access allow` 按控制代碼新增其他聯絡人。

282 290 

283除此之外,您可以使用 `--channels` 控制每個工作階段啟用哪些伺服器,在 Team 和 Enterprise 計畫上,您的組織可以使用 [`channelsEnabled`](#enterprise-controls) 控制可用性291除此之外,您可以使用 `--channels` 控制每個工作階段啟用哪些伺服器,您的組織可以使用 [`channelsEnabled`](#enterprise-controls) 在 claude.ai Team 和 Enterprise 計畫以及部署受管設定的 Console 組織上控制可用性

284 292 

285在 `.mcp.json` 中還不足以推送訊息:伺服器也必須在 `--channels` 中命名。293在 `.mcp.json` 中還不足以推送訊息:伺服器也必須在 `--channels` 中命名。

286 294 

287允許清單也會閘道[權限中繼](/zh-TW/channels-reference#relay-permission-prompts)(如果 channel 宣告它)。任何可以通過 channel 回覆的人都可以批准或拒絕您工作階段中的工具使用,因此只允許清單您信任具有該權限的寄件者。295允許清單也會閘道[權限中繼](/zh-TW/channels-reference#relay-permission-prompts)(如果 channel 宣告它)。任何可以通過 channel 回覆的人都可以批准或拒絕您工作階段中的工具使用,因此只允許清單您信任具有該權限的寄件者。

288 296 

289## Enterprise 控制297<h2 id="enterprise-controls">

298 Enterprise 控制

299</h2>

300 

301管理員通過兩個[受管設定](/zh-TW/settings)控制可用性,使用者無法覆蓋。預設值取決於您如何驗證:

302 

303* **claude.ai Team 和 Enterprise**:channels 被阻止,直到管理員啟用它們。

304* **Anthropic Console 與 API 金鑰驗證**:channels 預設被允許。只有在您的組織部署受管設定時才需要此設定。

290 305 

291在 Team 和 Enterprise 計畫上channels 預設為關閉管理員通過兩個[受管設定](/zh-TW/settings)控制可用性,使用者無法覆蓋:306在所有情況下,在使用者使用 `--channels` 為工作階段選擇加入之前沒有 channel 會執行

292 307 

293| 設定 | 目的 | 未設定時 |308| 設定 | 目的 | 未設定時 |

294| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | :---------------- |309| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- |

295| `channelsEnabled` | 主開關。必須為 `true` 才能讓任何 channel 傳遞訊息。通過 [claude.ai 管理員主控台](https://claude.ai/admin-settings/claude-code)切換或直接在受管設定中設定。關閉時會阻止所有 channels,包括開發旗標。 | Channels 被阻止 |310| `channelsEnabled` | 主開關。必須為 `true` 才能讓任何 channel 傳遞訊息。通過 [claude.ai 管理員主控台](https://claude.ai/admin-settings/claude-code)切換或直接在受管設定中設定。關閉時會阻止所有 channels,包括開發旗標。 | claude.ai Team 和 Enterprise:channels 被阻止。Console:channels 被允許,除非您的組織部署受管設定,在這種情況下 channels 被阻止,直到設定此金鑰 |

296| `allowedChannelPlugins` | 啟用 channels 後可以註冊哪些外掛程式。設定時替換 Anthropic 維護的清單。僅在 `channelsEnabled` 為 `true` 時適用。 | 應用 Anthropic 預設清單 |311| `allowedChannelPlugins` | 啟用 channels 後可以註冊哪些外掛程式。設定時替換 Anthropic 維護的清單。僅在 `channelsEnabled` 為 `true` 時適用。 | 應用 Anthropic 預設清單 |

297 312 

298沒有組織的 Pro 和 Max 使用者完全跳過這些檢查:channels 可用,使用者按工作階段選擇加入 `--channels`。313沒有組織的 Pro 和 Max 使用者完全跳過這些檢查:channels 可用,使用者按工作階段選擇加入 `--channels`。

299 314 

300### 為您的組織啟用 channels315<h3 id="enable-channels-for-your-organization">

316 為您的組織啟用 channels

317</h3>

301 318 

302管理員可以從 [**claude.ai → 管理員設定 → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code) 啟用 channels,或通過在受管設定中將 `channelsEnabled` 設定為 `true`。319管理員可以從 [**claude.ai → 管理員設定 → Claude Code → Channels**](https://claude.ai/admin-settings/claude-code) 啟用 channels,或通過在受管設定中將 `channelsEnabled` 設定為 `true`。

303 320 

304啟用後,您組織中的使用者可以使用 `--channels` 將 channel 伺服器選擇加入個別工作階段。如果設定已停用或未設定,MCP 伺服器仍會連接,其工具可以工作,但 channel 訊息不會到達。啟動警告會告訴使用者讓管理員啟用該設定。321啟用後,您組織中的使用者可以使用 `--channels` 將 channel 伺服器選擇加入個別工作階段。如果設定已停用或未設定,MCP 伺服器仍會連接,其工具可以工作,但 channel 訊息不會到達。啟動警告會告訴使用者讓管理員啟用該設定。

305 322 

306### 限制可以執行哪些 channel 外掛程式323<h3 id="restrict-which-channel-plugins-can-run">

324 限制可以執行哪些 channel 外掛程式

325</h3>

307 326 

308預設情況下,Anthropic 維護的允許清單上的任何外掛程式都可以註冊為 channel。Team 和 Enterprise 計畫上的管理員可以通過在受管設定中設定 `allowedChannelPlugins` 來用自己的清單替換該允許清單。使用此功能來限制允許哪些官方外掛程式、批准來自您自己的內部市場的 channels,或兩者。每個條目命名一個外掛程式及其來自的市場:327預設情況下,Anthropic 維護的允許清單上的任何外掛程式都可以註冊為 channel。Team 和 Enterprise 計畫上的管理員可以通過在受管設定中設定 `allowedChannelPlugins` 來用自己的清單替換該允許清單。使用此功能來限制允許哪些官方外掛程式、批准來自您自己的內部市場的 channels,或兩者。每個條目命名一個外掛程式及其來自的市場:

309 328 


322 341 

323此設定需要 `channelsEnabled: true`。如果使用者傳遞一個不在您清單上的外掛程式到 `--channels`,Claude Code 會正常啟動,但 channel 不會註冊,啟動通知會解釋該外掛程式不在組織的已批准清單上。342此設定需要 `channelsEnabled: true`。如果使用者傳遞一個不在您清單上的外掛程式到 `--channels`,Claude Code 會正常啟動,但 channel 不會註冊,啟動通知會解釋該外掛程式不在組織的已批准清單上。

324 343 

325## 研究預覽344<h2 id="research-preview">

345 研究預覽

346</h2>

326 347 

327Channels 是研究預覽功能。可用性正在逐步推出,`--channels` 旗標語法和協議合約可能會根據回饋而改變。348Channels 是研究預覽功能。可用性正在逐步推出,`--channels` 旗標語法和協議合約可能會根據回饋而改變。

328 349 


332 353 

333在 [Claude Code GitHub 儲存庫](https://github.com/anthropics/claude-code/issues)上報告問題或回饋。354在 [Claude Code GitHub 儲存庫](https://github.com/anthropics/claude-code/issues)上報告問題或回饋。

334 355 

335## Channels 如何比較356<h2 id="how-channels-compare">

357 Channels 如何比較

358</h2>

336 359 

337Claude Code 的多個功能連接到終端外的系統,每個都適合不同類型的工作:360Claude Code 的多個功能連接到終端外的系統,每個都適合不同類型的工作:

338 361 


348* **聊天橋接**:通過 Telegram、Discord 或 iMessage 從您的手機詢問 Claude 一些事情,答案會在同一聊天中返回,而工作在您的機器上針對您的真實檔案執行。371* **聊天橋接**:通過 Telegram、Discord 或 iMessage 從您的手機詢問 Claude 一些事情,答案會在同一聊天中返回,而工作在您的機器上針對您的真實檔案執行。

349* **[Webhook 接收器](/zh-TW/channels-reference#example-build-a-webhook-receiver)**:來自 CI、您的錯誤追蹤器、部署管道或其他外部服務的 webhook 到達 Claude 已開啟您的檔案並記得您正在調試的地方。372* **[Webhook 接收器](/zh-TW/channels-reference#example-build-a-webhook-receiver)**:來自 CI、您的錯誤追蹤器、部署管道或其他外部服務的 webhook 到達 Claude 已開啟您的檔案並記得您正在調試的地方。

350 373 

351## 後續步驟374<h2 id="next-steps">

375 後續步驟

376</h2>

352 377 

353一旦您有 channel 執行,請探索這些相關功能:378一旦您有 channel 執行,請探索這些相關功能:

354 379 

Details

7> 建立一個 MCP 伺服器,將 webhooks、警報和聊天訊息推送到 Claude Code 工作階段。頻道合約的參考:功能聲明、通知事件、回覆工具、寄件者閘道和權限中繼。7> 建立一個 MCP 伺服器,將 webhooks、警報和聊天訊息推送到 Claude Code 工作階段。頻道合約的參考:功能聲明、通知事件、回覆工具、寄件者閘道和權限中繼。

8 8 

9<Note>9<Note>

10 Channels 處於[研究預覽](/zh-TW/channels#research-preview)階段,需要 Claude Code v2.1.80 或更新版本。它們需要 claude.ai 登入。不支援 Console 和 API 金鑰驗證。Team 和 Enterprise 組織必須[明確啟用它們](/zh-TW/channels#enterprise-controls)。10 Channels 處於[研究預覽](/zh-TW/channels#research-preview)階段,需要 Claude Code v2.1.80 或更新版本。Team 和 Enterprise 組織必須[明確啟用它們](/zh-TW/channels#enterprise-controls)。

11</Note>11</Note>

12 12 

13Channel 是一個 MCP 伺服器,將事件推送到 Claude Code 工作階段,以便 Claude 可以對終端機外發生的事情做出反應。13Channel 是一個 MCP 伺服器,將事件推送到 Claude Code 工作階段,以便 Claude 可以對終端機外發生的事情做出反應。


20* [您需要什麼](#what-you-need):要求和一般步驟20* [您需要什麼](#what-you-need):要求和一般步驟

21* [範例:建立 webhook 接收器](#example-build-a-webhook-receiver):最小單向逐步解說21* [範例:建立 webhook 接收器](#example-build-a-webhook-receiver):最小單向逐步解說

22* [伺服器選項](#server-options):建構函式欄位22* [伺服器選項](#server-options):建構函式欄位

23* [通知格式](#notification-format):事件承載23* [通知格式](#notification-format):事件承載和傳遞行為

24* [公開回覆工具](#expose-a-reply-tool):讓 Claude 傳送訊息回去24* [公開回覆工具](#expose-a-reply-tool):讓 Claude 傳送訊息回去

25* [閘道入站訊息](#gate-inbound-messages):寄件者檢查以防止提示注入25* [閘道入站訊息](#gate-inbound-messages):寄件者檢查以防止提示注入

26* [中繼權限提示](#relay-permission-prompts):將工具批准提示轉發到遠端 channels26* [中繼權限提示](#relay-permission-prompts):將工具批准提示轉發到遠端 channels

27 27 

28若要使用現有 channel 而不是建立一個,請參閱 [Channels](/zh-TW/channels)。Telegram、Discord、iMessage 和 fakechat 包含在研究預覽中。28若要使用現有 channel 而不是建立一個,請參閱 [Channels](/zh-TW/channels)。Telegram、Discord、iMessage 和 fakechat 包含在研究預覽中。

29 29 

30## 概述30<h2 id="overview">

31 概述

32</h2>

31 33 

32Channel 是在與 Claude Code 相同的機器上執行的 [MCP](https://modelcontextprotocol.io) 伺服器。Claude Code 將其作為子程序生成並透過 stdio 進行通訊。您的 channel 伺服器是外部系統和 Claude Code 工作階段之間的橋接:34Channel 是在與 Claude Code 相同的機器上執行的 [MCP](https://modelcontextprotocol.io) 伺服器。Claude Code 將其作為子程序生成並透過 stdio 進行通訊。您的 channel 伺服器是外部系統和 Claude Code 工作階段之間的橋接:

33 35 


36 38 

37<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/zh-TW/images/channel-architecture.svg" alt="架構圖,顯示外部系統連接到您的本機 channel 伺服器,該伺服器透過 stdio 與 Claude Code 通訊" />39<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/zh-TW/images/channel-architecture.svg" alt="架構圖,顯示外部系統連接到您的本機 channel 伺服器,該伺服器透過 stdio 與 Claude Code 通訊" />

38 40 

39## 您需要什麼41<h2 id="what-you-need">

42 您需要什麼

43</h2>

40 44 

41唯一的硬性要求是 [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) 套件和 Node.js 相容的執行時。[Bun](https://bun.sh)、[Node](https://nodejs.org) 和 [Deno](https://deno.com) 都可以運作。研究預覽中的預先建立外掛程式使用 Bun,但您的 channel 不一定要。45唯一的硬性要求是 [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) 套件和 Node.js 相容的執行時。[Bun](https://bun.sh)、[Node](https://nodejs.org) 和 [Deno](https://deno.com) 都可以運作。研究預覽中的預先建立外掛程式使用 Bun,但您的 channel 不一定要。

42 46 


50 54 

51在研究預覽期間,自訂 channels 不在[核准允許清單](/zh-TW/channels#supported-channels)上。使用 `--dangerously-load-development-channels` 在本機測試。請參閱[在研究預覽期間測試](#test-during-the-research-preview)以取得詳細資訊。55在研究預覽期間,自訂 channels 不在[核准允許清單](/zh-TW/channels#supported-channels)上。使用 `--dangerously-load-development-channels` 在本機測試。請參閱[在研究預覽期間測試](#test-during-the-research-preview)以取得詳細資訊。

52 56 

53## 範例:建立 webhook 接收器57<h2 id="example-build-a-webhook-receiver">

58 範例:建立 webhook 接收器

59</h2>

54 60 

55本逐步解說建立一個單一檔案伺服器,該伺服器監聽 HTTP 要求並將其轉發到您的 Claude Code 工作階段。最後,任何可以傳送 HTTP POST 的東西(如 CI 管道、監控警報或 `curl` 命令)都可以將事件推送給 Claude。61本逐步解說建立一個單一檔案伺服器,該伺服器監聽 HTTP 要求並將其轉發到您的 Claude Code 工作階段。最後,任何可以傳送 HTTP POST 的東西(如 CI 管道、監控警報或 `curl` 命令)都可以將事件推送給 Claude。

56 62 


138 144 

139 當 Claude Code 啟動時,它讀取您的 MCP 配置,將您的 `webhook.ts` 作為子程序生成,HTTP 監聽器自動在您配置的連接埠上啟動(此範例中為 8788)。您不需要自己執行伺服器。145 當 Claude Code 啟動時,它讀取您的 MCP 配置,將您的 `webhook.ts` 作為子程序生成,HTTP 監聽器自動在您配置的連接埠上啟動(此範例中為 8788)。您不需要自己執行伺服器。

140 146 

141 如果您看到'被組織政策阻止',您的 Team 或 Enterprise 管理員需要先[啟用 channels](/zh-TW/channels#enterprise-controls)。147 如果您看到'被組織政策阻止',您的組織管理員需要先[啟用 channels](/zh-TW/channels#enterprise-controls)。

142 148 

143 在單獨的終端機中,透過傳送帶有訊息的 HTTP POST 來模擬 webhook 到您的伺服器。此範例將 CI 失敗警報傳送到連接埠 8788(或您配置的任何連接埠):149 在單獨的終端機中,透過傳送帶有訊息的 HTTP POST 來模擬 webhook 到您的伺服器。此範例將 CI 失敗警報傳送到連接埠 8788(或您配置的任何連接埠):

144 150 


163 169 

164[fakechat 伺服器](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)使用網頁 UI、檔案附件和用於雙向聊天的回覆工具擴展此模式。170[fakechat 伺服器](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)使用網頁 UI、檔案附件和用於雙向聊天的回覆工具擴展此模式。

165 171 

166## 在研究預覽期間測試172<h2 id="test-during-the-research-preview">

173 在研究預覽期間測試

174</h2>

167 175 

168在研究預覽期間,每個 channel 都必須在[核准允許清單](/zh-TW/channels#research-preview)上才能註冊。開發旗標在確認提示後繞過特定項目的允許清單。此範例顯示兩種項目類型:176在研究預覽期間,每個 channel 都必須在[核准允許清單](/zh-TW/channels#research-preview)上才能註冊。開發旗標在確認提示後繞過特定項目的允許清單。此範例顯示兩種項目類型:

169 177 


181 此旗標僅跳過允許清單。`channelsEnabled` 組織政策仍然適用。不要使用它來執行來自不受信任來源的 channels。189 此旗標僅跳過允許清單。`channelsEnabled` 組織政策仍然適用。不要使用它來執行來自不受信任來源的 channels。

182</Note>190</Note>

183 191 

184## 伺服器選項192<h2 id="server-options">

193 伺服器選項

194</h2>

185 195 

186Channel 在 [`Server`](https://modelcontextprotocol.io/docs/concepts/servers) 建構函式中設定這些選項。`instructions` 和 `capabilities.tools` 欄位是[標準 MCP](https://modelcontextprotocol.io/docs/concepts/servers);`capabilities.experimental['claude/channel']` 和 `capabilities.experimental['claude/channel/permission']` 是 channel 特定的新增項目:196Channel 在 [`Server`](https://modelcontextprotocol.io/docs/concepts/servers) 建構函式中設定這些選項。`instructions` 和 `capabilities.tools` 欄位是[標準 MCP](https://modelcontextprotocol.io/docs/concepts/servers);`capabilities.experimental['claude/channel']` 和 `capabilities.experimental['claude/channel/permission']` 是 channel 特定的新增項目:

187 197 


212 222 

213若要推送事件,請使用方法 `notifications/claude/channel` 呼叫 `mcp.notification()`。參數在下一部分中。223若要推送事件,請使用方法 `notifications/claude/channel` 呼叫 `mcp.notification()`。參數在下一部分中。

214 224 

215## 通知格式225<h2 id="notification-format">

226 通知格式

227</h2>

216 228 

217您的伺服器發出 `notifications/claude/channel` 和兩個參數:229您的伺服器發出 `notifications/claude/channel` 和兩個參數:

218 230 


241</channel>253</channel>

242```254```

243 255 

244## 公開回覆工具256通知不被確認。`mcp.notification()` 上的 `await` 在訊息寫入傳輸時解決,而不是在 Claude 已處理它時。如果工作階段尚未將您的伺服器載入為 channel,或組織政策阻止它,事件會無聲地被捨棄,不會向您的伺服器返回任何錯誤。

245 257 

246如果您的 channel 是雙向的(如聊天橋接而不是警報轉發器)請公開標準 [MCP 工具](https://modelcontextprotocol.io/docs/concepts/tools),Claude 可以呼叫該工具來傳送訊息回去。工具註冊沒有任何 channel 特定的內容回覆工具有三個元件:258如果您需要傳遞確認請在您的伺服器中追蹤事件狀態,並公開一個 [reply tool](#expose-a-reply-tool),Claude 可以呼叫該工具來報告狀態回去

259 

260事件排隊進入工作階段並按順序處理。如果在 Claude 忙碌時有多個通知到達,它們會在下一個轉折時一起傳遞,Claude 會將它們作為一個群組處理。若要並行處理獨立事件流,請執行單獨的工作階段。

261 

262<h2 id="expose-a-reply-tool">

263 公開回覆工具

264</h2>

265 

266如果您的 channel 是雙向的,如聊天橋接而不是警報轉發器,請公開標準 [MCP 工具](https://modelcontextprotocol.io/docs/concepts/tools),Claude 可以呼叫該工具來傳送訊息回去。工具註冊沒有任何 channel 特定的內容。回覆工具有三個元件:

247 267 

2481. 您的 `Server` 建構函式功能中的 `tools: {}` 項目,以便 Claude Code 發現工具2681. 您的 `Server` 建構函式功能中的 `tools: {}` 項目,以便 Claude Code 發現工具

2492. 定義工具架構並實現傳送邏輯的工具處理程式2692. 定義工具架構並實現傳送邏輯的工具處理程式


403 423 

404[fakechat 伺服器](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)顯示了一個更完整的範例,具有檔案附件和訊息編輯。424[fakechat 伺服器](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/fakechat)顯示了一個更完整的範例,具有檔案附件和訊息編輯。

405 425 

406## 閘道入站訊息426<h2 id="gate-inbound-messages">

427 閘道入站訊息

428</h2>

407 429 

408未閘道的 channel 是提示注入向量。任何可以到達您的端點的人都可以在 Claude 前面放置文字。監聽聊天平台或公開端點的 channel 在發出任何內容之前需要真正的寄件者檢查。430未閘道的 channel 是提示注入向量。任何可以到達您的端點的人都可以在 Claude 前面放置文字。監聽聊天平台或公開端點的 channel 在發出任何內容之前需要真正的寄件者檢查。

409 431 


423 445 

424[Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) 和 [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) channels 以相同方式根據寄件者允許清單進行閘道。它們透過配對啟動清單:使用者傳送 DM 給機器人,機器人回覆配對代碼,使用者在其 Claude Code 工作階段中批准它,其平台 ID 被新增。請參閱任一實現以取得完整配對流程。[iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) channel 採用不同的方法:它在啟動時從 Messages 資料庫偵測使用者自己的位址並自動讓它們通過,其他寄件者按控制代碼新增。446[Telegram](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram) 和 [Discord](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/discord) channels 以相同方式根據寄件者允許清單進行閘道。它們透過配對啟動清單:使用者傳送 DM 給機器人,機器人回覆配對代碼,使用者在其 Claude Code 工作階段中批准它,其平台 ID 被新增。請參閱任一實現以取得完整配對流程。[iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) channel 採用不同的方法:它在啟動時從 Messages 資料庫偵測使用者自己的位址並自動讓它們通過,其他寄件者按控制代碼新增。

425 447 

426## 中繼權限提示448<h2 id="relay-permission-prompts">

449 中繼權限提示

450</h2>

427 451 

428<Note>452<Note>

429 權限中繼需要 Claude Code v2.1.81 或更新版本。較早版本會忽略 `claude/channel/permission` 功能。453 權限中繼需要 Claude Code v2.1.81 或更新版本。較早版本會忽略 `claude/channel/permission` 功能。


433 457 

434中繼涵蓋工具使用批准,如 Bash、Write 和 Edit。專案信任和 MCP 伺服器同意對話框不中繼;這些僅在本機終端機中出現。458中繼涵蓋工具使用批准,如 Bash、Write 和 Edit。專案信任和 MCP 伺服器同意對話框不中繼;這些僅在本機終端機中出現。

435 459 

436### 中繼如何運作460<h3 id="how-relay-works">

461 中繼如何運作

462</h3>

437 463 

438當權限提示開啟時,中繼迴圈有四個步驟:464當權限提示開啟時,中繼迴圈有四個步驟:

439 465 


446 472 

447<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/zh-TW/images/channel-permission-relay.svg" alt="序列圖:Claude Code 傳送 permission_request 通知到 channel 伺服器,伺服器格式化並傳送提示到聊天應用,人類回覆判決,伺服器將該回覆解析為權限通知回到 Claude Code" />473<img src="https://mintlify.s3.us-west-1.amazonaws.com/claude-code/zh-TW/images/channel-permission-relay.svg" alt="序列圖:Claude Code 傳送 permission_request 通知到 channel 伺服器,伺服器格式化並傳送提示到聊天應用,人類回覆判決,伺服器將該回覆解析為權限通知回到 Claude Code" />

448 474 

449### 權限要求欄位475<h3 id="permission-request-fields">

476 權限要求欄位

477</h3>

450 478 

451來自 Claude Code 的出站通知是 `notifications/claude/channel/permission_request`。像[頻道通知](#notification-format)一樣,傳輸是標準 MCP,但方法和架構是 Claude Code 擴展。`params` 物件有四個字串欄位,您的伺服器將其格式化為出站提示:479來自 Claude Code 的出站通知是 `notifications/claude/channel/permission_request`。像[頻道通知](#notification-format)一樣,傳輸是標準 MCP,但方法和架構是 Claude Code 擴展。`params` 物件有四個字串欄位,您的伺服器將其格式化為出站提示:

452 480 


459 487 

460您的伺服器傳送回的判決是 `notifications/claude/channel/permission`,有兩個欄位:`request_id` 回顯上面的 ID,`behavior` 設定為 `'allow'` 或 `'deny'`。允許讓工具呼叫繼續;拒絕會拒絕它,與在本機對話框中回答'否'相同。兩個判決都不影響未來的呼叫。488您的伺服器傳送回的判決是 `notifications/claude/channel/permission`,有兩個欄位:`request_id` 回顯上面的 ID,`behavior` 設定為 `'allow'` 或 `'deny'`。允許讓工具呼叫繼續;拒絕會拒絕它,與在本機對話框中回答'否'相同。兩個判決都不影響未來的呼叫。

461 489 

462### 將中繼新增到聊天橋接490<h3 id="add-relay-to-a-chat-bridge">

491 將中繼新增到聊天橋接

492</h3>

463 493 

464將權限中繼新增到雙向 channel 需要三個元件:494將權限中繼新增到雙向 channel 需要三個元件:

465 495 


559* **不同格式**:您的入站處理程式的正規表達式無法符合,因此 `approve it` 或 `yes` 之類的文字(沒有 ID)會作為正常訊息落入 Claude。589* **不同格式**:您的入站處理程式的正規表達式無法符合,因此 `approve it` 或 `yes` 之類的文字(沒有 ID)會作為正常訊息落入 Claude。

560* **正確格式,錯誤 ID**:您的伺服器發出判決,但 Claude Code 找不到具有該 ID 的開啟要求並無聲地捨棄它。590* **正確格式,錯誤 ID**:您的伺服器發出判決,但 Claude Code 找不到具有該 ID 的開啟要求並無聲地捨棄它。

561 591 

562### 完整範例592<h3 id="full-example">

593 完整範例

594</h3>

563 595 

564下面組裝的 `webhook.ts` 結合了本頁的所有三個擴展:回覆工具、寄件者閘道和權限中繼。如果您從這裡開始,您還需要初始逐步解說中的[專案設定和 `.mcp.json` 項目](#example-build-a-webhook-receiver)。596下面組裝的 `webhook.ts` 結合了本頁的所有三個擴展:回覆工具、寄件者閘道和權限中繼。如果您從這裡開始,您還需要初始逐步解說中的[專案設定和 `.mcp.json` 項目](#example-build-a-webhook-receiver)。

565 597 


735* **出站路徑**:`reply` 工具處理程式是 Claude 為對話回應呼叫的;`PermissionRequestSchema` 通知處理程式是 Claude Code 在權限對話框開啟時呼叫的。兩者都呼叫 `send()` 透過 `/events` 廣播,但它們由系統的不同部分觸發。767* **出站路徑**:`reply` 工具處理程式是 Claude 為對話回應呼叫的;`PermissionRequestSchema` 通知處理程式是 Claude Code 在權限對話框開啟時呼叫的。兩者都呼叫 `send()` 透過 `/events` 廣播,但它們由系統的不同部分觸發。

736* **HTTP 處理程式**:`GET /events` 保持 SSE 串流開啟,以便 curl 可以即時觀看出站;`POST` 是入站,根據 `X-Sender` 標頭進行閘道。`yes <id>` 或 `no <id>` 主體作為判決通知進入 Claude Code,永遠不會到達 Claude;其他任何內容都作為 channel 事件轉發給 Claude。768* **HTTP 處理程式**:`GET /events` 保持 SSE 串流開啟,以便 curl 可以即時觀看出站;`POST` 是入站,根據 `X-Sender` 標頭進行閘道。`yes <id>` 或 `no <id>` 主體作為判決通知進入 Claude Code,永遠不會到達 Claude;其他任何內容都作為 channel 事件轉發給 Claude。

737 769 

738## 打包為外掛程式770<h2 id="package-as-a-plugin">

771 打包為外掛程式

772</h2>

739 773 

740若要使您的 channel 可安裝和可共享,請將其包裝在[外掛程式](/zh-TW/plugins)中並將其發佈到[市場](/zh-TW/plugin-marketplaces)。使用者使用 `/plugin install` 安裝它,然後使用 `--channels plugin:<name>@<marketplace>` 按工作階段啟用它。774若要使您的 channel 可安裝和可共享,請將其包裝在[外掛程式](/zh-TW/plugins)中並將其發佈到[市場](/zh-TW/plugin-marketplaces)。使用者使用 `/plugin install` 安裝它,然後使用 `--channels plugin:<name>@<marketplace>` 按工作階段啟用它。

741 775 

742發佈到您自己的市場的 channel 仍然需要 `--dangerously-load-development-channels` 才能執行,因為它不在[核准允許清單](/zh-TW/channels#supported-channels)上。若要將其新增[將其提交到官方市場](/zh-TW/plugins#submit-your-plugin-to-the-official-marketplace)。Channel 外掛程式在被批准之前會進行安全審查。在 Team 和 Enterprise 計劃上管理員可以改為將您的外掛程式包含在組織自己的 [`allowedChannelPlugins`](/zh-TW/channels#restrict-which-channel-plugins-can-run) 清單中,該清單取代預設 Anthropic 允許清單776發佈到您自己的市場的 channel 仍然需要 `--dangerously-load-development-channels` 才能執行,因為它不在[核准允許清單](/zh-TW/channels#supported-channels)上。預設允許清單是 `claude-plugins-official` 中的 channel 外掛程式Anthropic 自行策劃。[應用內提交表單](/zh-TW/plugins#submit-your-plugin-to-the-community-marketplace)將外掛程式新增到社群市場該市場不在 channel 允許清單上

777 

778如果您正在與 Anthropic 合作夥伴聯絡,請與他們聯繫以協調官方市場列表。在 Team 和 Enterprise 計劃上,管理員可以改為將您的外掛程式包含在組織自己的 [`allowedChannelPlugins`](/zh-TW/channels#restrict-which-channel-plugins-can-run) 清單中,該清單取代預設 Anthropic 允許清單。

743 779 

744## 另請參閱780<h2 id="see-also">

781 另請參閱

782</h2>

745 783 

746* [Channels](/zh-TW/channels) 安裝並使用 Telegram、Discord、iMessage 或 fakechat 演示,以及為 Team 或 Enterprise 組織啟用 channels784* [Channels](/zh-TW/channels) 安裝並使用 Telegram、Discord、iMessage 或 fakechat 演示,以及為 Team 或 Enterprise 組織啟用 channels

747* [工作 channel 實現](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins)以取得具有配對流程、回覆工具和檔案附件的完整伺服器程式碼785* [工作 channel 實現](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins)以取得具有配對流程、回覆工具和檔案附件的完整伺服器程式碼

checkpointing.md +38 −12

Details

8 8 

9Claude Code 會自動追蹤 Claude 在您工作時所做的檔案編輯,讓您可以快速撤銷變更並回溯到先前的狀態,以防任何事情出現偏差。9Claude Code 會自動追蹤 Claude 在您工作時所做的檔案編輯,讓您可以快速撤銷變更並回溯到先前的狀態,以防任何事情出現偏差。

10 10 

11## Checkpointing 的運作方式11<h2 id="how-checkpoints-work">

12 Checkpointing 的運作方式

13</h2>

12 14 

13當您與 Claude 合作時,checkpointing 會自動捕捉每次編輯前的程式碼狀態。這個安全網讓您可以進行雄心勃勃的大規模任務,同時知道您可以隨時回到先前的程式碼狀態。15當您與 Claude 合作時,checkpointing 會自動捕捉每次編輯前的程式碼狀態。這個安全網讓您可以進行雄心勃勃的大規模任務,同時知道您可以隨時回到先前的程式碼狀態。

14 16 

15### 自動追蹤17<h3 id="automatic-tracking">

18 自動追蹤

19</h3>

16 20 

17Claude Code 追蹤由其檔案編輯工具所做的所有變更:21Claude Code 追蹤由其檔案編輯工具所做的所有變更:

18 22 


20* Checkpoints 在會話之間持續存在,因此您可以在恢復的對話中存取它們24* Checkpoints 在會話之間持續存在,因此您可以在恢復的對話中存取它們

21* 自動清理,與會話一起在 30 天後刪除(可配置)25* 自動清理,與會話一起在 30 天後刪除(可配置)

22 26 

23### 回溯和總結27<h3 id="rewind-and-summarize">

28 回溯和總結

29</h3>

24 30 

25按兩次 `Esc`(`Esc` + `Esc`)或使用 `/rewind` 命令來開啟回溯選單。可滾動的清單顯示會話中的每個提示。選擇您想要操作的點然後選擇一個動作:31執行 `/rewind`,或在提示輸入為空時按兩次 `Esc`,以開啟回溯選單。

32 

33<Note>

34 如果提示輸入包含文字,雙 `Esc` 會清除它而不是開啟選單。清除的文字會儲存到您的輸入歷史記錄中,因此在您完成回溯選單後,按 `Up` 可以召回它。

35</Note>

36 

37回溯選單列出您在會話期間傳送的每個提示。選擇您想要操作的點,然後選擇一個動作:

26 38 

27* **恢復程式碼和對話**:將程式碼和對話都回復到該點39* **恢復程式碼和對話**:將程式碼和對話都回復到該點

28* **恢復對話**:回溯到該訊息,同時保持目前程式碼40* **恢復對話**:回溯到該訊息,同時保持目前程式碼


32 44 

33恢復對話或選擇「從此處總結」後,所選訊息的原始提示會恢復到輸入欄位中,以便您可以重新傳送或編輯它。45恢復對話或選擇「從此處總結」後,所選訊息的原始提示會恢復到輸入欄位中,以便您可以重新傳送或編輯它。

34 46 

35選擇「算了」會讓您留在訊息清單不進行任何變更47選擇「算了」會讓您留在對話末尾輸入為空

36 48 

37#### 恢復與總結49<h4 id="restore-vs-summarize">

50 恢復與總結

51</h4>

38 52 

39恢復選項會回復狀態:它們撤銷程式碼變更、對話歷史或兩者。總結選項會將對話的一部分壓縮為 AI 生成的摘要,而不改變磁碟上的檔案:53恢復選項會回復狀態:它們撤銷程式碼變更、對話歷史或兩者。總結選項會將對話的一部分壓縮為 AI 生成的摘要,而不改變磁碟上的檔案:

40 54 


47 總結讓您保持在同一會話中並壓縮上下文。如果您想嘗試不同的方法,同時保持原始會話完整,請改用 [fork](/zh-TW/sessions#branch-a-session)(`claude --continue --fork-session`)。61 總結讓您保持在同一會話中並壓縮上下文。如果您想嘗試不同的方法,同時保持原始會話完整,請改用 [fork](/zh-TW/sessions#branch-a-session)(`claude --continue --fork-session`)。

48</Note>62</Note>

49 63 

50## 常見使用案例64<h2 id="common-use-cases">

65 常見使用案例

66</h2>

51 67 

52Checkpoints 在以下情況下特別有用:68Checkpoints 在以下情況下特別有用:

53 69 


56* **迭代功能**:進行變化實驗,同時知道您可以回復到工作狀態72* **迭代功能**:進行變化實驗,同時知道您可以回復到工作狀態

57* **釋放上下文空間**:從中點開始總結冗長的除錯會話,保持初始指示完整73* **釋放上下文空間**:從中點開始總結冗長的除錯會話,保持初始指示完整

58 74 

59## 限制75<h2 id="limitations">

76 限制

77</h2>

60 78 

61### Bash 命令變更未追蹤79<h3 id="bash-command-changes-not-tracked">

80 Bash 命令變更未追蹤

81</h3>

62 82 

63Checkpointing 不追蹤由 bash 命令修改的檔案。例如,如果 Claude Code 執行:83Checkpointing 不追蹤由 bash 命令修改的檔案。例如,如果 Claude Code 執行:

64 84 


70 90 

71這些檔案修改無法透過回溯撤銷。只有透過 Claude 的檔案編輯工具進行的直接檔案編輯才會被追蹤。91這些檔案修改無法透過回溯撤銷。只有透過 Claude 的檔案編輯工具進行的直接檔案編輯才會被追蹤。

72 92 

73### 外部變更未追蹤93<h3 id="external-changes-not-tracked">

94 外部變更未追蹤

95</h3>

74 96 

75Checkpointing 只追蹤在目前會話中已編輯的檔案。您在 Claude Code 外部對檔案所做的手動變更以及來自其他並行會話的編輯通常不會被捕捉,除非它們碰巧修改與目前會話相同的檔案。97Checkpointing 只追蹤在目前會話中已編輯的檔案。您在 Claude Code 外部對檔案所做的手動變更以及來自其他並行會話的編輯通常不會被捕捉,除非它們碰巧修改與目前會話相同的檔案。

76 98 

77### 不是版本控制的替代品99<h3 id="not-a-replacement-for-version-control">

100 不是版本控制的替代品

101</h3>

78 102 

79Checkpoints 設計用於快速的會話級恢復。對於永久版本歷史和協作:103Checkpoints 設計用於快速的會話級恢復。對於永久版本歷史和協作:

80 104 


82* Checkpoints 補充但不替代適當的版本控制106* Checkpoints 補充但不替代適當的版本控制

83* 將 checkpoints 視為「本地撤銷」,Git 視為「永久歷史」107* 將 checkpoints 視為「本地撤銷」,Git 視為「永久歷史」

84 108 

85## 另請參閱109<h2 id="see-also">

110 另請參閱

111</h2>

86 112 

87* [Interactive mode](/zh-TW/interactive-mode) - 快捷鍵和會話控制113* [Interactive mode](/zh-TW/interactive-mode) - 快捷鍵和會話控制

88* [Commands](/zh-TW/commands) - 使用 `/rewind` 存取 checkpoints114* [Commands](/zh-TW/commands) - 使用 `/rewind` 存取 checkpoints

chrome.md +62 −22

Details

14 Chrome 整合處於測試版,目前適用於 Google Chrome 和 Microsoft Edge。尚不支援 Brave、Arc 或其他基於 Chromium 的瀏覽器。也不支援 WSL(Windows Subsystem for Linux)。14 Chrome 整合處於測試版,目前適用於 Google Chrome 和 Microsoft Edge。尚不支援 Brave、Arc 或其他基於 Chromium 的瀏覽器。也不支援 WSL(Windows Subsystem for Linux)。

15</Note>15</Note>

16 16 

17## 功能17<h2 id="capabilities">

18 功能

19</h2>

18 20 

19連接 Chrome 後,您可以在單一工作流程中鏈接瀏覽器操作與編碼任務:21連接 Chrome 後,您可以在單一工作流程中鏈接瀏覽器操作與編碼任務:

20 22 


26* **任務自動化**:自動化重複的瀏覽器任務,如資料輸入、表單填充或多網站工作流程28* **任務自動化**:自動化重複的瀏覽器任務,如資料輸入、表單填充或多網站工作流程

27* **工作階段錄製**:將瀏覽器互動錄製為 GIF,以記錄或分享發生的情況29* **工作階段錄製**:將瀏覽器互動錄製為 GIF,以記錄或分享發生的情況

28 30 

29## 先決條件31<h2 id="prerequisites">

32 先決條件

33</h2>

30 34 

31在使用 Claude Code 與 Chrome 之前,您需要:35在使用 Claude Code 與 Chrome 之前,您需要:

32 36 


39 Chrome 整合不適用於 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 等第三方提供商。如果您只透過第三方提供商存取 Claude,則需要單獨的 claude.ai 帳戶才能使用此功能。43 Chrome 整合不適用於 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 等第三方提供商。如果您只透過第三方提供商存取 Claude,則需要單獨的 claude.ai 帳戶才能使用此功能。

40</Note>44</Note>

41 45 

42## 在 CLI 中開始46<h2 id="get-started-in-the-cli">

47 在 CLI 中開始

48</h2>

43 49 

44<Steps>50<Steps>

45 <Step title="使用 Chrome 啟動 Claude Code">51 <Step title="使用 Chrome 啟動 Claude Code">


62 </Step>68 </Step>

63</Steps>69</Steps>

64 70 

65隨時執行 `/chrome` 以檢查連接狀態、管理權限或重新連接擴充功能71隨時執行 `/chrome` 以檢查連接狀態、管理權限、重新連接擴充功能,或選擇要使用的已連接瀏覽器如果在瀏覽器操作開始時連接了多個瀏覽器,Claude 會提示您選擇一個。

66 72 

67對於 VS Code,請參閱 [VS Code 中的瀏覽器自動化](/zh-TW/vs-code#automate-browser-tasks-with-chrome)。73對於 VS Code,請參閱 [VS Code 中的瀏覽器自動化](/zh-TW/vs-code#automate-browser-tasks-with-chrome)。

68 74 

69### 預設啟用 Chrome75<h3 id="enable-chrome-by-default">

76 預設啟用 Chrome

77</h3>

70 78 

71為了避免每個工作階段都傳遞 `--chrome`,執行 `/chrome` 並選擇「預設啟用」。79為了避免每個工作階段都傳遞 `--chrome`,執行 `/chrome` 並選擇「預設啟用」。

72 80 


76 在 CLI 中預設啟用 Chrome 會增加上下文使用量,因為瀏覽器工具始終被載入。如果您注意到上下文消耗增加,請停用此設定,並僅在需要時使用 `--chrome`。84 在 CLI 中預設啟用 Chrome 會增加上下文使用量,因為瀏覽器工具始終被載入。如果您注意到上下文消耗增加,請停用此設定,並僅在需要時使用 `--chrome`。

77</Note>85</Note>

78 86 

79### 管理網站權限87<h3 id="manage-site-permissions">

88 管理網站權限

89</h3>

80 90 

81網站級權限繼承自 Chrome 擴充功能。在 Chrome 擴充功能設定中管理權限,以控制 Claude 可以瀏覽、點擊和輸入的網站。91網站級權限繼承自 Chrome 擴充功能。在 Chrome 擴充功能設定中管理權限,以控制 Claude 可以瀏覽、點擊和輸入的網站。

82 92 

83## 範例工作流程93<h2 id="example-workflows">

94 範例工作流程

95</h2>

84 96 

85這些範例展示了將瀏覽器操作與編碼任務結合的常見方式。執行 `/mcp` 並選擇 `claude-in-chrome` 以查看可用瀏覽器工具的完整清單。97這些範例展示了將瀏覽器操作與編碼任務結合的常見方式。執行 `/mcp` 並選擇 `claude-in-chrome` 以查看可用瀏覽器工具的完整清單。

86 98 

87### 測試本地網頁應用程式99<h3 id="test-a-local-web-application">

100 測試本地網頁應用程式

101</h3>

88 102 

89開發網頁應用程式時,要求 Claude 驗證您的變更是否正確運作:103開發網頁應用程式時,要求 Claude 驗證您的變更是否正確運作:

90 104 


96 110 

97Claude 導航到您的本地伺服器、與表單互動並報告其觀察結果。111Claude 導航到您的本地伺服器、與表單互動並報告其觀察結果。

98 112 

99### 使用控制台日誌進行除錯113<h3 id="debug-with-console-logs">

114 使用控制台日誌進行除錯

115</h3>

100 116 

101Claude 可以讀取控制台輸出以幫助診斷問題。告訴 Claude 要尋找的模式,而不是要求所有控制台輸出,因為日誌可能很冗長:117Claude 可以讀取控制台輸出以幫助診斷問題。告訴 Claude 要尋找的模式,而不是要求所有控制台輸出,因為日誌可能很冗長:

102 118 


107 123 

108Claude 讀取控制台訊息,可以篩選特定模式或錯誤類型。124Claude 讀取控制台訊息,可以篩選特定模式或錯誤類型。

109 125 

110### 自動填充表單126<h3 id="automate-form-filling">

127 自動填充表單

128</h3>

111 129 

112加快重複資料輸入任務的速度:130加快重複資料輸入任務的速度:

113 131 


119 137 

120Claude 讀取您的本地檔案、導航網頁介面並為每筆記錄輸入資料。138Claude 讀取您的本地檔案、導航網頁介面並為每筆記錄輸入資料。

121 139 

122### 在 Google Docs 中起草內容140<h3 id="draft-content-in-google-docs">

141 在 Google Docs 中起草內容

142</h3>

123 143 

124使用 Claude 直接在您的文件中寫入,無需 API 設定:144使用 Claude 直接在您的文件中寫入,無需 API 設定:

125 145 


130 150 

131Claude 開啟文件、點擊編輯器並輸入內容。這適用於您已登入的任何網頁應用程式:Gmail、Notion、Sheets 等。151Claude 開啟文件、點擊編輯器並輸入內容。這適用於您已登入的任何網頁應用程式:Gmail、Notion、Sheets 等。

132 152 

133### 從網頁中提取資料153<h3 id="extract-data-from-web-pages">

154 從網頁中提取資料

155</h3>

134 156 

135從網站中提取結構化資訊:157從網站中提取結構化資訊:

136 158 


141 163 

142Claude 導航到頁面、讀取內容並將資料編譯成結構化格式。164Claude 導航到頁面、讀取內容並將資料編譯成結構化格式。

143 165 

144### 執行多網站工作流程166<h3 id="run-multi-site-workflows">

167 執行多網站工作流程

168</h3>

145 169 

146協調多個網站之間的任務:170協調多個網站之間的任務:

147 171 


153 177 

154Claude 跨標籤頁工作以收集資訊並完成工作流程。178Claude 跨標籤頁工作以收集資訊並完成工作流程。

155 179 

156### 錄製演示 GIF180<h3 id="record-a-demo-gif">

181 錄製演示 GIF

182</h3>

157 183 

158建立瀏覽器互動的可共享錄製:184建立瀏覽器互動的可共享錄製:

159 185 


164 190 

165Claude 錄製互動序列並將其儲存為 GIF 檔案。191Claude 錄製互動序列並將其儲存為 GIF 檔案。

166 192 

167## 故障排除193<h2 id="troubleshooting">

194 故障排除

195</h2>

168 196 

169### 未偵測到擴充功能197<h3 id="extension-not-detected">

198 未偵測到擴充功能

199</h3>

170 200 

171如果 Claude Code 顯示「未偵測到 Chrome 擴充功能」201如果 Claude Code 的設定問題行列出 `chrome`

172 202 

1731. 驗證 Chrome 擴充功能已安裝並在 `chrome://extensions` 中啟用2031. 驗證 Chrome 擴充功能已安裝並在 `chrome://extensions` 中啟用

1742. 透過執行 `claude --version` 驗證 Claude Code 是否為最新版本2042. 透過執行 `claude --version` 驗證 Claude Code 是否為最新版本


192* **Linux**:`~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`222* **Linux**:`~/.config/microsoft-edge/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json`

193* **Windows**:在 Windows 登錄中檢查 `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\`223* **Windows**:在 Windows 登錄中檢查 `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\`

194 224 

195### 瀏覽器無回應225<h3 id="browser-not-responding">

226 瀏覽器無回應

227</h3>

196 228 

197如果 Claude 的瀏覽器命令停止工作:229如果 Claude 的瀏覽器命令停止工作:

198 230 


2002. 要求 Claude 建立新標籤頁並重試2322. 要求 Claude 建立新標籤頁並重試

2013. 透過在 `chrome://extensions` 中停用並重新啟用 Chrome 擴充功能來重新啟動它2333. 透過在 `chrome://extensions` 中停用並重新啟用 Chrome 擴充功能來重新啟動它

202 234 

203### 長工作階段期間連接中斷235<h3 id="connection-drops-during-long-sessions">

236 長工作階段期間連接中斷

237</h3>

204 238 

205Chrome 擴充功能的服務工作者可能在延長的工作階段期間進入閒置狀態,這會中斷連接。如果瀏覽器工具在一段時間不活動後停止工作,請執行 `/chrome` 並選擇「重新連接擴充功能」。239Chrome 擴充功能的服務工作者可能在延長的工作階段期間進入閒置狀態,這會中斷連接。如果瀏覽器工具在一段時間不活動後停止工作,請執行 `/chrome` 並選擇「重新連接擴充功能」。

206 240 

207### Windows 特定問題241<h3 id="windows-specific-issues">

242 Windows 特定問題

243</h3>

208 244 

209在 Windows 上,您可能會遇到:245在 Windows 上,您可能會遇到:

210 246 

211* **命名管道衝突 (EADDRINUSE)**:如果另一個程序正在使用相同的命名管道,請重新啟動 Claude Code。關閉任何可能使用 Chrome 的其他 Claude Code 工作階段。247* **命名管道衝突 (EADDRINUSE)**:如果另一個程序正在使用相同的命名管道,請重新啟動 Claude Code。關閉任何可能使用 Chrome 的其他 Claude Code 工作階段。

212* **原生訊息主機錯誤**:如果原生訊息主機在啟動時崩潰,請嘗試重新安裝 Claude Code 以重新產生主機設定。248* **原生訊息主機錯誤**:如果原生訊息主機在啟動時崩潰,請嘗試重新安裝 Claude Code 以重新產生主機設定。

213 249 

214### 常見錯誤訊息250<h3 id="common-error-messages">

251 常見錯誤訊息

252</h3>

215 253 

216以下是最常遇到的錯誤及其解決方法:254以下是最常遇到的錯誤及其解決方法:

217 255 


222| 「沒有可用的標籤頁」 | Claude 在標籤頁準備好之前嘗試操作 | 要求 Claude 建立新標籤頁並重試 |260| 「沒有可用的標籤頁」 | Claude 在標籤頁準備好之前嘗試操作 | 要求 Claude 建立新標籤頁並重試 |

223| 「接收端不存在」 | 擴充功能服務工作者進入閒置狀態 | 執行 `/chrome` 並選擇「重新連接擴充功能」 |261| 「接收端不存在」 | 擴充功能服務工作者進入閒置狀態 | 執行 `/chrome` 並選擇「重新連接擴充功能」 |

224 262 

225## 另請參閱263<h2 id="see-also">

264 另請參閱

265</h2>

226 266 

227* [電腦使用](/zh-TW/computer-use):當任務無法在瀏覽器中完成時控制原生 macOS 應用程式267* [電腦使用](/zh-TW/computer-use):當任務無法在瀏覽器中完成時控制原生 macOS 應用程式

228* [在 VS Code 中使用 Claude Code](/zh-TW/vs-code#automate-browser-tasks-with-chrome):VS Code 擴充功能中的瀏覽器自動化268* [在 VS Code 中使用 Claude Code](/zh-TW/vs-code#automate-browser-tasks-with-chrome):VS Code 擴充功能中的瀏覽器自動化

Details

28* [安全性和隔離](#security-and-isolation):工作階段如何隔離28* [安全性和隔離](#security-and-isolation):工作階段如何隔離

29* [限制](#limitations):速率限制和平台限制29* [限制](#limitations):速率限制和平台限制

30 30 

31## GitHub 驗證選項31<h2 id="github-authentication-options">

32 GitHub 驗證選項

33</h2>

32 34 

33雲端工作階段需要存取您的 GitHub 儲存庫以複製程式碼和推送分支。您可以通過兩種方式授予存取權限:35雲端工作階段需要存取您的 GitHub 儲存庫以複製程式碼和推送分支。您可以通過兩種方式授予存取權限:

34 36 


51 啟用[零資料保留](/zh-TW/zero-data-retention)的組織無法使用 `/web-setup` 或其他雲端工作階段功能。53 啟用[零資料保留](/zh-TW/zero-data-retention)的組織無法使用 `/web-setup` 或其他雲端工作階段功能。

52</Note>54</Note>

53 55 

54## 雲端環境56<h2 id="the-cloud-environment">

57 雲端環境

58</h2>

55 59 

56每個工作階段在一個新的 Anthropic 管理的 VM 中執行,其中您的儲存庫已複製。本節涵蓋工作階段啟動時可用的內容以及如何自訂它。60每個工作階段在一個新的 Anthropic 管理的 VM 中執行,其中您的儲存庫已複製。本節涵蓋工作階段啟動時可用的內容以及如何自訂它。

57 61 

58### 雲端工作階段中可用的內容62<h3 id="what-s-available-in-cloud-sessions">

63 雲端工作階段中可用的內容

64</h3>

59 65 

60雲端工作階段從您的儲存庫的新複製開始。任何提交到儲存庫的內容都可用。您只在自己的機器上安裝或配置的任何內容都不可用。66雲端工作階段從您的儲存庫的新複製開始。任何提交到儲存庫的內容都可用。您只在自己的機器上安裝或配置的任何內容都不可用。

61 67 


75 81 

76若要在雲端工作階段中提供配置,請將其提交到儲存庫。尚不可用專用的秘密存儲。環境變數和設定指令碼都存儲在環境配置中,對任何可以編輯該環境的人可見。如果您需要雲端工作階段中的秘密,請將它們新增為環境變數,並考慮該可見性。82若要在雲端工作階段中提供配置,請將其提交到儲存庫。尚不可用專用的秘密存儲。環境變數和設定指令碼都存儲在環境配置中,對任何可以編輯該環境的人可見。如果您需要雲端工作階段中的秘密,請將它們新增為環境變數,並考慮該可見性。

77 83 

78### 已安裝的工具84<h3 id="installed-tools">

85 已安裝的工具

86</h3>

79 87 

80雲端工作階段預先安裝了常見的語言執行時、建置工具和資料庫。下表按類別總結了包含的內容。88雲端工作階段預先安裝了常見的語言執行時、建置工具和資料庫。下表按類別總結了包含的內容。

81 89 


97 105 

98如需確切版本,請要求 Claude 在雲端工作階段中執行 `check-tools`。此命令僅存在於雲端工作階段中。106如需確切版本,請要求 Claude 在雲端工作階段中執行 `check-tools`。此命令僅存在於雲端工作階段中。

99 107 

100### 使用 GitHub 問題和拉取請求108<h3 id="work-with-github-issues-and-pull-requests">

109 使用 GitHub 問題和拉取請求

110</h3>

101 111 

102雲端工作階段包含內建的 GitHub 工具,讓 Claude 可以讀取問題、列出拉取請求、取得差異和發佈評論,無需任何設定。這些工具通過[GitHub 代理](#github-proxy)進行驗證,使用您在 [GitHub 驗證選項](#github-authentication-options)下配置的任何方法,因此您的令牌永遠不會進入容器。112雲端工作階段包含內建的 GitHub 工具,讓 Claude 可以讀取問題、列出拉取請求、取得差異和發佈評論,無需任何設定。這些工具通過[GitHub 代理](#github-proxy)進行驗證,使用您在 [GitHub 驗證選項](#github-authentication-options)下配置的任何方法,因此您的令牌永遠不會進入容器。

103 113 


113 </Step>123 </Step>

114</Steps>124</Steps>

115 125 

116### 將工件連結回工作階段126<h3 id="link-artifacts-back-to-the-session">

127 將工件連結回工作階段

128</h3>

117 129 

118每個雲端工作階段在 claude.ai 上都有一個成績單 URL,工作階段可以從 `CLAUDE_CODE_REMOTE_SESSION_ID` 環境變數讀取自己的 ID。使用此在 PR 正文、提交訊息、Slack 貼文或生成的報告中放置可追蹤的連結,以便審查者可以開啟產生它們的執行。130每個雲端工作階段在 claude.ai 上都有一個成績單 URL,工作階段可以從 `CLAUDE_CODE_REMOTE_SESSION_ID` 環境變數讀取自己的 ID。使用此在 PR 正文、提交訊息、Slack 貼文或生成的報告中放置可追蹤的連結,以便審查者可以開啟產生它們的執行。

119 131 


123echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"135echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"

124```136```

125 137 

126### 執行測試、啟動服務和新增套件138<h3 id="run-tests-start-services-and-add-packages">

139 執行測試、啟動服務和新增套件

140</h3>

127 141 

128Claude 執行測試作為處理任務的一部分。在您的提示中要求它,例如「修復 `tests/` 中的失敗測試」或「在每次變更後執行 pytest」。測試執行器(如 pytest、jest 和 cargo test)開箱即用,因為它們已預先安裝。142Claude 執行測試作為處理任務的一部分。在您的提示中要求它,例如「修復 `tests/` 中的失敗測試」或「在每次變更後執行 pytest」。測試執行器(如 pytest、jest 和 cargo test)開箱即用,因為它們已預先安裝。

129 143 


143 157 

144若要新增未預先安裝的套件,請使用[設定指令碼](#setup-scripts)。指令碼的輸出會被[快取](#environment-caching),因此您在那裡安裝的套件在每個工作階段開始時都可用,無需每次重新安裝。您也可以要求 Claude 在工作階段期間安裝套件,但這些安裝不會在工作階段之間保留。158若要新增未預先安裝的套件,請使用[設定指令碼](#setup-scripts)。指令碼的輸出會被[快取](#environment-caching),因此您在那裡安裝的套件在每個工作階段開始時都可用,無需每次重新安裝。您也可以要求 Claude 在工作階段期間安裝套件,但這些安裝不會在工作階段之間保留。

145 159 

146### 資源限制160<h3 id="resource-limits">

161 資源限制

162</h3>

147 163 

148雲端工作階段執行時具有可能隨時間變化的近似資源上限:164雲端工作階段執行時具有可能隨時間變化的近似資源上限:

149 165 


153 169 

154需要明顯更多記憶體的任務,例如大型建置工作或記憶體密集型測試,可能會失敗或被終止。對於超出這些限制的工作負載,請使用[遠端控制](/zh-TW/remote-control)在您自己的硬體上執行 Claude Code。170需要明顯更多記憶體的任務,例如大型建置工作或記憶體密集型測試,可能會失敗或被終止。對於超出這些限制的工作負載,請使用[遠端控制](/zh-TW/remote-control)在您自己的硬體上執行 Claude Code。

155 171 

156### 配置您的環境172<h3 id="configure-your-environment">

173 配置您的環境

174</h3>

157 175 

158環境控制[網路存取](#network-access)、環境變數和在工作階段啟動前執行的[設定指令碼](#setup-scripts)。有關不需要任何配置即可使用的內容,請參閱[已安裝的工具](#installed-tools)。您可以從網頁介面或終端管理環境:176環境控制[網路存取](#network-access)、環境變數和在工作階段啟動前執行的[設定指令碼](#setup-scripts)。有關不需要任何配置即可使用的內容,請參閱[已安裝的工具](#installed-tools)。您可以從網頁介面或終端管理環境:

159 177 


172DATABASE_URL=postgres://localhost:5432/myapp190DATABASE_URL=postgres://localhost:5432/myapp

173```191```

174 192 

175## 設定指令碼193<h2 id="setup-scripts">

194 設定指令碼

195</h2>

176 196 

177設定指令碼是一個 Bash 指令碼,在新的雲端工作階段啟動時執行,在 Claude Code 啟動之前。使用設定指令碼來安裝依賴項、配置工具或取得工作階段需要但未預先安裝的任何內容。197設定指令碼是一個 Bash 指令碼,在新的雲端工作階段啟動時執行,在 Claude Code 啟動之前。使用設定指令碼來安裝依賴項、配置工具或取得工作階段需要但未預先安裝的任何內容。

178 198 


195 安裝套件的設定指令碼需要網路存取才能到達登錄。預設**信任**網路存取允許連接到[常見套件登錄](#default-allowed-domains),包括 npm、PyPI、RubyGems 和 crates.io。如果您的環境使用**無**網路存取,指令碼將無法安裝套件。215 安裝套件的設定指令碼需要網路存取才能到達登錄。預設**信任**網路存取允許連接到[常見套件登錄](#default-allowed-domains),包括 npm、PyPI、RubyGems 和 crates.io。如果您的環境使用**無**網路存取,指令碼將無法安裝套件。

196</Note>216</Note>

197 217 

198### 環境快取218<h3 id="environment-caching">

219 環境快取

220</h3>

199 221 

200設定指令碼在您第一次在環境中啟動工作階段時執行。完成後,Anthropic 會快照檔案系統並將該快照重新用作後續工作階段的起點。新工作階段以您的依賴項、工具和 Docker 映像已在磁碟上開始,設定指令碼步驟被跳過。這即使在指令碼安裝大型工具鏈或拉取容器映像時也能保持啟動速度快。222設定指令碼在您第一次在環境中啟動工作階段時執行。完成後,Anthropic 會快照檔案系統並將該快照重新用作後續工作階段的起點。新工作階段以您的依賴項、工具和 Docker 映像已在磁碟上開始,設定指令碼步驟被跳過。這即使在指令碼安裝大型工具鏈或拉取容器映像時也能保持啟動速度快。

201 223 


205 227 

206您不需要自行啟用快取或管理快照。228您不需要自行啟用快取或管理快照。

207 229 

208### 設定指令碼與 SessionStart hooks230<h3 id="setup-scripts-vs-sessionstart-hooks">

231 設定指令碼與 SessionStart hooks

232</h3>

209 233 

210使用設定指令碼來安裝雲端需要但您的筆記型電腦已有的東西,例如語言執行時或 CLI 工具。使用 [SessionStart hook](/zh-TW/hooks#sessionstart) 進行應在任何地方執行的專案設定,雲端和本機,例如 `npm install`。234使用設定指令碼來安裝雲端需要但您的筆記型電腦已有的東西,例如語言執行時或 CLI 工具。使用 [SessionStart hook](/zh-TW/hooks#sessionstart) 進行應在任何地方執行的專案設定,雲端和本機,例如 `npm install`。

211 235 


220 244 

221SessionStart hooks 也可以在本機使用者級別 `~/.claude/settings.json` 中定義,但使用者級別設定不會轉移到雲端工作階段。在雲端中,只有提交到儲存庫的 hooks 執行。245SessionStart hooks 也可以在本機使用者級別 `~/.claude/settings.json` 中定義,但使用者級別設定不會轉移到雲端工作階段。在雲端中,只有提交到儲存庫的 hooks 執行。

222 246 

223### 使用 SessionStart hook 安裝依賴項247<h3 id="install-dependencies-with-a-sessionstart-hook">

248 使用 SessionStart hook 安裝依賴項

249</h3>

224 250 

225若要僅在雲端工作階段中安裝依賴項,請將 SessionStart hook 新增到您的儲存庫的 `.claude/settings.json`:251若要僅在雲端工作階段中安裝依賴項,請將 SessionStart hook 新增到您的儲存庫的 `.claude/settings.json`:

226 252 


267 293 

268尚不支援使用您自己的 Docker 映像替換基礎映像。使用設定指令碼在[提供的映像](#installed-tools)上安裝您需要的內容,或使用 `docker compose` 將您的映像作為容器與 Claude 一起執行。294尚不支援使用您自己的 Docker 映像替換基礎映像。使用設定指令碼在[提供的映像](#installed-tools)上安裝您需要的內容,或使用 `docker compose` 將您的映像作為容器與 Claude 一起執行。

269 295 

270## 網路存取296<h2 id="network-access">

297 網路存取

298</h2>

271 299 

272網路存取控制來自雲端環境的出站連接。每個環境指定一個存取級別,您可以使用自訂允許的域擴展它。預設值為**信任**,允許套件登錄和其他[允許清單域](#default-allowed-domains)。300網路存取控制來自雲端環境的出站連接。每個環境指定一個存取級別,您可以使用自訂允許的域擴展它。預設值為**信任**,允許套件登錄和其他[允許清單域](#default-allowed-domains)。

273 301 


277 MCP 連接器流量通過 Anthropic 的伺服器路由,因此您在工作階段或例行工作上啟用的連接器無需將其主機新增到**允許的域**即可工作。連接器按工作階段或按例行工作配置;移除您不需要的任何連接器以限制 Claude 可以到達的工具。這依賴於[安全性和隔離](#security-and-isolation)下提到的相同 Anthropic 綁定通道。305 MCP 連接器流量通過 Anthropic 的伺服器路由,因此您在工作階段或例行工作上啟用的連接器無需將其主機新增到**允許的域**即可工作。連接器按工作階段或按例行工作配置;移除您不需要的任何連接器以限制 Claude 可以到達的工具。這依賴於[安全性和隔離](#security-and-isolation)下提到的相同 Anthropic 綁定通道。

278</Note>306</Note>

279 307 

280### 存取級別308<h3 id="access-levels">

309 存取級別

310</h3>

281 311 

282在建立或編輯環境時選擇存取級別:312在建立或編輯環境時選擇存取級別:

283 313 


290 320 

291GitHub 操作使用[單獨的代理](#github-proxy),獨立於此設定。321GitHub 操作使用[單獨的代理](#github-proxy),獨立於此設定。

292 322 

293### 允許特定域323<h3 id="allow-specific-domains">

324 允許特定域

325</h3>

294 326 

295若要允許不在信任清單中的域,請在環境的網路存取設定中選擇**自訂**。出現**允許的域**欄位。每行輸入一個域:327若要允許不在信任清單中的域,請在環境的網路存取設定中選擇**自訂**。出現**允許的域**欄位。每行輸入一個域:

296 328 


302 334 

303使用 `*.` 進行萬用字元子域匹配。檢查**也包括常見套件管理器的預設清單**以將[信任域](#default-allowed-domains)與您的自訂項目一起保留,或將其取消選中以僅允許您列出的內容。335使用 `*.` 進行萬用字元子域匹配。檢查**也包括常見套件管理器的預設清單**以將[信任域](#default-allowed-domains)與您的自訂項目一起保留,或將其取消選中以僅允許您列出的內容。

304 336 

305### GitHub 代理337<h3 id="github-proxy">

338 GitHub 代理

339</h3>

306 340 

307為了安全起見,所有 GitHub 操作都通過專用代理服務進行,該服務透明地處理所有 git 互動。在沙箱內,git 用戶端使用自訂建置的限定認證進行驗證。此代理:341為了安全起見,所有 GitHub 操作都通過專用代理服務進行,該服務透明地處理所有 git 互動。在沙箱內,git 用戶端使用自訂建置的限定認證進行驗證。此代理:

308 342 


310* 限制 git push 操作到目前工作分支以確保安全344* 限制 git push 操作到目前工作分支以確保安全

311* 啟用複製、取得和 PR 操作,同時維護安全邊界345* 啟用複製、取得和 PR 操作,同時維護安全邊界

312 346 

313### 安全代理347<h3 id="security-proxy">

348 安全代理

349</h3>

314 350 

315環境在 HTTP/HTTPS 網路代理後面執行,用於安全和濫用防止目的。所有出站網際網路流量都通過此代理,該代理提供:351環境在 HTTP/HTTPS 網路代理後面執行,用於安全和濫用防止目的。所有出站網際網路流量都通過此代理,該代理提供:

316 352 


318* 速率限制和濫用防止354* 速率限制和濫用防止

319* 增強安全性的內容篩選355* 增強安全性的內容篩選

320 356 

321### 預設允許的域357<h3 id="default-allowed-domains">

358 預設允許的域

359</h3>

322 360 

323使用**信任**網路存取時,預設允許以下域。標記為 `*` 的域表示萬用字元子域匹配,因此 `*.gcr.io` 允許 `gcr.io` 的任何子域。361使用**信任**網路存取時,預設允許以下域。標記為 `*` 的域表示萬用字元子域匹配,因此 `*.gcr.io` 允許 `gcr.io` 的任何子域。

324 362 


576 </Accordion>614 </Accordion>

577</AccordionGroup>615</AccordionGroup>

578 616 

579## 在網頁和終端之間移動任務617<h2 id="move-tasks-between-web-and-terminal">

618 在網頁和終端之間移動任務

619</h2>

580 620 

581這些工作流程需要[Claude Code CLI](/zh-TW/quickstart)登入到相同的 claude.ai 帳戶。您可以從終端啟動新的雲端工作階段,或將雲端工作階段拉入終端以在本機繼續。雲端工作階段即使在您關閉筆記型電腦後仍會保留,您可以從任何地方(包括 Claude 行動應用程式)監控它們。621這些工作流程需要[Claude Code CLI](/zh-TW/quickstart)登入到相同的 claude.ai 帳戶。您可以從終端啟動新的雲端工作階段,或將雲端工作階段拉入終端以在本機繼續。雲端工作階段即使在您關閉筆記型電腦後仍會保留,您可以從任何地方(包括 Claude 行動應用程式)監控它們。

582 622 


584 從 CLI,工作階段交接是單向的:您可以使用 `--teleport` 將雲端工作階段拉入終端,但無法將現有終端工作階段推送到網頁。`--remote` 旗標為您目前的儲存庫建立新的雲端工作階段。[Desktop 應用程式](/zh-TW/desktop#continue-in-another-surface)提供可將本機工作階段發送到網頁的'在另一個表面繼續'功能表。624 從 CLI,工作階段交接是單向的:您可以使用 `--teleport` 將雲端工作階段拉入終端,但無法將現有終端工作階段推送到網頁。`--remote` 旗標為您目前的儲存庫建立新的雲端工作階段。[Desktop 應用程式](/zh-TW/desktop#continue-in-another-surface)提供可將本機工作階段發送到網頁的'在另一個表面繼續'功能表。

585</Note>625</Note>

586 626 

587### 從終端到網頁627<h3 id="from-terminal-to-web">

628 從終端到網頁

629</h3>

588 630 

589使用 `--remote` 旗標從命令列啟動雲端工作階段:631使用 `--remote` 旗標從命令列啟動雲端工作階段:

590 632 


600 642 

601在 Claude Code CLI 中使用 `/tasks` 檢查進度,或在 claude.ai 或 Claude 行動應用程式上開啟工作階段以直接互動。從那裡,您可以引導 Claude、提供反饋或回答問題,就像任何其他對話一樣。643在 Claude Code CLI 中使用 `/tasks` 檢查進度,或在 claude.ai 或 Claude 行動應用程式上開啟工作階段以直接互動。從那裡,您可以引導 Claude、提供反饋或回答問題,就像任何其他對話一樣。

602 644 

603#### 雲端任務的提示645<h4 id="tips-for-cloud-tasks">

646 雲端任務的提示

647</h4>

604 648 

605**在本機規劃,在遠端執行**:對於複雜任務,在規劃模式下啟動 Claude 以協作制定方法,然後將工作發送到雲端:649**在本機規劃,在遠端執行**:對於複雜任務,在規劃模式下啟動 Claude 以協作制定方法,然後將工作發送到雲端:

606 650 


628 672 

629使用 Claude Code CLI 中的 `/tasks` 監控所有工作階段。當工作階段完成時,您可以從網頁介面建立 PR,或[傳送](#from-web-to-terminal)工作階段到終端以繼續工作。673使用 Claude Code CLI 中的 `/tasks` 監控所有工作階段。當工作階段完成時,您可以從網頁介面建立 PR,或[傳送](#from-web-to-terminal)工作階段到終端以繼續工作。

630 674 

631#### 發送沒有 GitHub 的本機儲存庫675<h4 id="send-local-repositories-without-github">

676 發送沒有 GitHub 的本機儲存庫

677</h4>

632 678 

633當您從未連接到 GitHub 的儲存庫執行 `claude --remote` 時,Claude Code 會捆綁您的本機儲存庫並直接上傳到雲端工作階段。捆綁包括您的完整儲存庫歷史記錄,跨所有分支,加上任何未提交的對追蹤檔案的變更。679當您從未連接到 GitHub 的儲存庫執行 `claude --remote` 時,Claude Code 會捆綁您的本機儲存庫並直接上傳到雲端工作階段。捆綁包括您的完整儲存庫歷史記錄,跨所有分支,加上任何未提交的對追蹤檔案的變更。

634 680 


645* 未追蹤的檔案不包括;在您希望雲端工作階段看到的檔案上執行 `git add`691* 未追蹤的檔案不包括;在您希望雲端工作階段看到的檔案上執行 `git add`

646* 從捆綁建立的工作階段無法推送回遠端,除非您也配置了 [GitHub 驗證](#github-authentication-options)692* 從捆綁建立的工作階段無法推送回遠端,除非您也配置了 [GitHub 驗證](#github-authentication-options)

647 693 

648### 從網頁到終端694<h3 id="from-web-to-terminal">

695 從網頁到終端

696</h3>

649 697 

650使用以下任何方式將雲端工作階段拉入終端:698使用以下任何方式將雲端工作階段拉入終端:

651 699 


658 706 

659`--teleport` 與 `--resume` 不同。`--resume` 從此機器的本機歷史記錄重新開啟對話,不列出雲端工作階段;`--teleport` 拉取雲端工作階段及其分支。707`--teleport` 與 `--resume` 不同。`--resume` 從此機器的本機歷史記錄重新開啟對話,不列出雲端工作階段;`--teleport` 拉取雲端工作階段及其分支。

660 708 

661#### 傳送要求709<h4 id="teleport-requirements">

710 傳送要求

711</h4>

662 712 

663傳送在恢復工作階段之前檢查這些要求。如果任何要求未滿足,您會看到錯誤或被提示解決問題。713傳送在恢復工作階段之前檢查這些要求。如果任何要求未滿足,您會看到錯誤或被提示解決問題。

664 714 


669| 分支可用 | 雲端工作階段中的分支必須已推送到遠端。傳送會自動取得並簽出它。 |719| 分支可用 | 雲端工作階段中的分支必須已推送到遠端。傳送會自動取得並簽出它。 |

670| 相同帳戶 | 您必須驗證到雲端工作階段中使用的相同 claude.ai 帳戶。 |720| 相同帳戶 | 您必須驗證到雲端工作階段中使用的相同 claude.ai 帳戶。 |

671 721 

672#### `--teleport` 不可用722<h4 id="teleport-is-unavailable">

723 `--teleport` 不可用

724</h4>

673 725 

674傳送需要 claude.ai 訂閱驗證。如果您通過 API 金鑰、Bedrock、Vertex AI 或 Microsoft Foundry 進行驗證,請執行 `/login` 以改為使用您的 claude.ai 帳戶登入。如果您已通過 claude.ai 登入,`--teleport` 仍不可用,您的組織可能已禁用雲端工作階段。726傳送需要 claude.ai 訂閱驗證。如果您通過 API 金鑰、Bedrock、Vertex AI 或 Microsoft Foundry 進行驗證,請執行 `/login` 以改為使用您的 claude.ai 帳戶登入。如果您已通過 claude.ai 登入,`--teleport` 仍不可用,您的組織可能已禁用雲端工作階段。

675 727 

676## 使用工作階段728<h2 id="work-with-sessions">

729 使用工作階段

730</h2>

677 731 

678工作階段出現在 claude.ai/code 的側邊欄中。從那裡,您可以檢查變更、與隊友共享、封存完成的工作或永久刪除工作階段。732工作階段出現在 claude.ai/code 的側邊欄中。從那裡,您可以檢查變更、與隊友共享、封存完成的工作或永久刪除工作階段。

679 733 

680### 管理上下文734<h3 id="manage-context">

735 管理上下文

736</h3>

681 737 

682雲端工作階段支援產生文字輸出的[內建命令](/zh-TW/commands)。開啟互動式終端選擇器的命令(如 `/model` 或 `/config`)不可用。738雲端工作階段支援產生文字輸出的[內建命令](/zh-TW/commands)。開啟互動式終端選擇器的命令(如 `/model` 或 `/config`)不可用。

683 739 


693 749 

694[Subagents](/zh-TW/sub-agents) 的運作方式與本機相同。Claude 可以使用 Task 工具生成它們,以將研究或並行工作卸載到單獨的上下文視窗中,保持主對話更輕。在您的儲存庫的 `.claude/agents/` 中定義的 Subagents 會自動選擇。[Agent teams](/zh-TW/agent-teams) 預設關閉,但可以通過將 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 新增到您的[環境變數](#configure-your-environment)來啟用。750[Subagents](/zh-TW/sub-agents) 的運作方式與本機相同。Claude 可以使用 Task 工具生成它們,以將研究或並行工作卸載到單獨的上下文視窗中,保持主對話更輕。在您的儲存庫的 `.claude/agents/` 中定義的 Subagents 會自動選擇。[Agent teams](/zh-TW/agent-teams) 預設關閉,但可以通過將 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 新增到您的[環境變數](#configure-your-environment)來啟用。

695 751 

696### 檢查變更752<h3 id="review-changes">

753 檢查變更

754</h3>

697 755 

698每個工作階段顯示一個差異指示器,其中包含新增和移除的行數,例如 `+42 -18`。選擇它以開啟差異檢視,在特定行上留下內聯評論,並使用您的下一條訊息將它們發送給 Claude。有關完整逐步說明(包括 PR 建立),請參閱[檢查和迭代](/zh-TW/web-quickstart#review-and-iterate)。若要讓 Claude 自動監控 PR 以查找 CI 失敗和審查評論,請參閱[自動修復拉取請求](#auto-fix-pull-requests)。756每個工作階段顯示一個差異指示器,其中包含新增和移除的行數,例如 `+42 -18`。選擇它以開啟差異檢視,在特定行上留下內聯評論,並使用您的下一條訊息將它們發送給 Claude。有關完整逐步說明(包括 PR 建立),請參閱[檢查和迭代](/zh-TW/web-quickstart#review-and-iterate)。若要讓 Claude 自動監控 PR 以查找 CI 失敗和審查評論,請參閱[自動修復拉取請求](#auto-fix-pull-requests)。

699 757 

700### 共享工作階段758<h3 id="share-sessions">

759 共享工作階段

760</h3>

701 761 

702若要共享工作階段,請根據下面的帳戶類型切換其可見性。之後,按原樣共享工作階段連結。收件者在開啟連結時看到最新狀態,但他們的檢視不會即時更新。762若要共享工作階段,請根據下面的帳戶類型切換其可見性。之後,按原樣共享工作階段連結。收件者在開啟連結時看到最新狀態,但他們的檢視不會即時更新。

703 763 

704#### 從 Enterprise 或 Team 帳戶共享764<h4 id="share-from-an-enterprise-or-team-account">

765 從 Enterprise 或 Team 帳戶共享

766</h4>

705 767 

706對於 Enterprise 和 Team 帳戶,兩個可見性選項是**私人**和**Team**。Team 可見性使工作階段對您的 claude.ai 組織的其他成員可見。儲存庫存取驗證預設啟用,基於連接到收件者帳戶的 GitHub 帳戶。您帳戶的顯示名稱對所有有存取權限的收件者可見。[Slack 中的 Claude](/zh-TW/slack)工作階段會自動以 Team 可見性共享。768對於 Enterprise 和 Team 帳戶,兩個可見性選項是**私人**和**Team**。Team 可見性使工作階段對您的 claude.ai 組織的其他成員可見。儲存庫存取驗證預設啟用,基於連接到收件者帳戶的 GitHub 帳戶。您帳戶的顯示名稱對所有有存取權限的收件者可見。[Slack 中的 Claude](/zh-TW/slack)工作階段會自動以 Team 可見性共享。

707 769 

708#### 從 Max 或 Pro 帳戶共享770<h4 id="share-from-a-max-or-pro-account">

771 從 Max 或 Pro 帳戶共享

772</h4>

709 773 

710對於 Max 和 Pro 帳戶,兩個可見性選項是**私人**和**公開**。公開可見性使工作階段對任何登入 claude.ai 的使用者可見。774對於 Max 和 Pro 帳戶,兩個可見性選項是**私人**和**公開**。公開可見性使工作階段對任何登入 claude.ai 的使用者可見。

711 775 


713 777 

714若要要求收件者具有儲存庫存取權限,或從共享工作階段中隱藏您的名稱,請前往「設定」>「Claude Code」>「共享設定」。778若要要求收件者具有儲存庫存取權限,或從共享工作階段中隱藏您的名稱,請前往「設定」>「Claude Code」>「共享設定」。

715 779 

716### 封存工作階段780<h3 id="archive-sessions">

781 封存工作階段

782</h3>

717 783 

718您可以封存工作階段以保持工作階段清單的組織。封存的工作階段隱藏在預設工作階段清單中,但可以通過篩選封存的工作階段來檢視。784您可以封存工作階段以保持工作階段清單的組織。封存的工作階段隱藏在預設工作階段清單中,但可以通過篩選封存的工作階段來檢視。

719 785 

720若要封存工作階段,請在側邊欄中將滑鼠懸停在工作階段上,然後選擇封存圖示。786若要封存工作階段,請在側邊欄中將滑鼠懸停在工作階段上,然後選擇封存圖示。

721 787 

722### 刪除工作階段788<h3 id="delete-sessions">

789 刪除工作階段

790</h3>

723 791 

724刪除工作階段會永久移除工作階段及其資料。此操作無法撤銷。您可以通過兩種方式刪除工作階段:792刪除工作階段會永久移除工作階段及其資料。此操作無法撤銷。您可以通過兩種方式刪除工作階段:

725 793 


728 796 

729在刪除工作階段之前,系統會要求您確認。797在刪除工作階段之前,系統會要求您確認。

730 798 

731## 自動修復拉取請求799<h2 id="auto-fix-pull-requests">

800 自動修復拉取請求

801</h2>

732 802 

733Claude 可以監視拉取請求並自動回應 CI 失敗和審查評論。Claude 訂閱 PR 上的 GitHub 活動,當檢查失敗或審查者留下評論時,Claude 會調查並推送修復(如果有明確的修復)。803Claude 可以監視拉取請求並自動回應 CI 失敗和審查評論。Claude 訂閱 PR 上的 GitHub 活動,當檢查失敗或審查者留下評論時,Claude 會調查並推送修復(如果有明確的修復)。

734 804 


745 815 

746自動修復是每個 PR 的切換開關。若要停止監視,請在網頁工作階段中開啟 CI 狀態欄並清除**自動修復**切換,或告訴 Claude 停止監視 PR。816自動修復是每個 PR 的切換開關。若要停止監視,請在網頁工作階段中開啟 CI 狀態欄並清除**自動修復**切換,或告訴 Claude 停止監視 PR。

747 817 

748### Claude 如何回應 PR 活動818<h3 id="how-claude-responds-to-pr-activity">

819 Claude 如何回應 PR 活動

820</h3>

749 821 

750當自動修復處於活動狀態時,Claude 會收到 PR 的 GitHub 事件,包括新的審查評論和 CI 檢查失敗。對於每個事件,Claude 會調查並決定如何進行:822當自動修復處於活動狀態時,Claude 會收到 PR 的 GitHub 事件,包括新的審查評論和 CI 檢查失敗。對於每個事件,Claude 會調查並決定如何進行:

751 823 


753* **模糊的請求**:如果審查者的評論可以以多種方式解釋或涉及架構上重要的內容,Claude 會在採取行動前詢問您825* **模糊的請求**:如果審查者的評論可以以多種方式解釋或涉及架構上重要的內容,Claude 會在採取行動前詢問您

754* **重複或無操作事件**:如果事件是重複的或不需要變更,Claude 會在工作階段中記錄它並繼續826* **重複或無操作事件**:如果事件是重複的或不需要變更,Claude 會在工作階段中記錄它並繼續

755 827 

828GitHub 不會在基礎分支推進並建立合併衝突時發出 webhook,因此自動修復無法自行對衝突做出反應。若要解決衝突,請開啟工作階段並要求 Claude 進行變基。

829 

756Claude 可能會在 GitHub 上回覆審查評論執行緒作為解決它們的一部分。這些回覆使用您的 GitHub 帳戶發佈,因此它們會出現在您的使用者名稱下,但每個回覆都標記為來自 Claude Code,以便審查者知道它是由代理編寫的,而不是由您直接編寫的。830Claude 可能會在 GitHub 上回覆審查評論執行緒作為解決它們的一部分。這些回覆使用您的 GitHub 帳戶發佈,因此它們會出現在您的使用者名稱下,但每個回覆都標記為來自 Claude Code,以便審查者知道它是由代理編寫的,而不是由您直接編寫的。

757 831 

758<Warning>832<Warning>

759 如果您的儲存庫使用評論觸發的自動化,例如 Atlantis、Terraform Cloud 或在 `issue_comment` 事件上執行的自訂 GitHub Actions,請注意 Claude 可以代表您回覆,這可能會觸發這些工作流程。在啟用自動修復之前檢查您的儲存庫自動化,並考慮為 PR 評論可以部署基礎設施或執行特權操作的儲存庫禁用自動修復。833 如果您的儲存庫使用評論觸發的自動化,例如 Atlantis、Terraform Cloud 或在 `issue_comment` 事件上執行的自訂 GitHub Actions,請注意 Claude 可以代表您回覆,這可能會觸發這些工作流程。在啟用自動修復之前檢查您的儲存庫自動化,並考慮為 PR 評論可以部署基礎設施或執行特權操作的儲存庫禁用自動修復。

760</Warning>834</Warning>

761 835 

762## 安全性和隔離836<h2 id="security-and-isolation">

837 安全性和隔離

838</h2>

763 839 

764每個雲端工作階段通過多個層與您的機器和其他工作階段分離:840每個雲端工作階段通過多個層與您的機器和其他工作階段分離:

765 841 


768* **認證保護**:敏感認證(如 git 認證或簽署金鑰)永遠不在沙箱內與 Claude Code 一起。驗證通過使用限定認證的安全代理進行處理。844* **認證保護**:敏感認證(如 git 認證或簽署金鑰)永遠不在沙箱內與 Claude Code 一起。驗證通過使用限定認證的安全代理進行處理。

769* **安全分析**:程式碼在隔離的 VM 內進行分析和修改,然後建立 PR845* **安全分析**:程式碼在隔離的 VM 內進行分析和修改,然後建立 PR

770 846 

771## 故障排除847<h2 id="troubleshooting">

848 故障排除

849</h2>

772 850 

773對於出現在對話中的執行時 API 錯誤,例如 `API Error: 500`、`529 Overloaded`、`429` 或 `Prompt is too long`,請參閱[錯誤參考](/zh-TW/errors)。這些錯誤及其修復與 CLI 和 Desktop 應用程式共享。下面的部分涵蓋特定於雲端工作階段的問題。851對於出現在對話中的執行時 API 錯誤,例如 `API Error: 500`、`529 Overloaded`、`429` 或 `Prompt is too long`,請參閱[錯誤參考](/zh-TW/errors)。這些錯誤及其修復與 CLI 和 Desktop 應用程式共享。下面的部分涵蓋特定於雲端工作階段的問題。

774 852 

775### 工作階段建立失敗853<h3 id="session-creation-failed">

854 工作階段建立失敗

855</h3>

776 856 

777如果新工作階段無法啟動,出現 `Session creation failed` 或在佈建時停滯,Claude Code 無法分配雲端環境。857如果新工作階段無法啟動,出現 `Session creation failed` 或在佈建時停滯,Claude Code 無法分配雲端環境。

778 858 


780* 一分鐘後重試,因為容量是按需佈建的860* 一分鐘後重試,因為容量是按需佈建的

781* 確認您的儲存庫可到達。連接的 GitHub 帳戶必須能夠存取 GitHub 上的儲存庫,可以透過 Claude GitHub App 授權或透過 `/web-setup` 同步的 `gh` 令牌進行存取 — 不需要在儲存庫上安裝 App。請參閱 [GitHub 驗證選項](#github-authentication-options)。861* 確認您的儲存庫可到達。連接的 GitHub 帳戶必須能夠存取 GitHub 上的儲存庫,可以透過 Claude GitHub App 授權或透過 `/web-setup` 同步的 `gh` 令牌進行存取 — 不需要在儲存庫上安裝 App。請參閱 [GitHub 驗證選項](#github-authentication-options)。

782 862 

783### 遠端控制工作階段已過期或存取被拒絕863<h3 id="remote-control-session-expired-or-access-denied">

864 遠端控制工作階段已過期或存取被拒絕

865</h3>

784 866 

785`--teleport` 通過與雲端工作階段使用的相同遠端控制工作階段基礎設施連接,因此驗證和工作階段過期錯誤會以遠端控制措辭出現。您可能會看到 `Remote Control session expired` 或 `Access denied`。連接令牌是短期的,並限定於您的帳戶。867`--teleport` 通過與雲端工作階段使用的相同遠端控制工作階段基礎設施連接,因此驗證和工作階段過期錯誤會以遠端控制措辭出現。您可能會看到 `Remote Control session expired` 或 `Access denied`。連接令牌是短期的,並限定於您的帳戶。

786 868 


788* 確認您登入到擁有工作階段的相同帳戶870* 確認您登入到擁有工作階段的相同帳戶

789* 如果您看到 `Remote Control may not be available for this organization`,您的管理員尚未為您的計畫啟用遠端工作階段871* 如果您看到 `Remote Control may not be available for this organization`,您的管理員尚未為您的計畫啟用遠端工作階段

790 872 

791### 環境已過期873<h3 id="environment-expired">

874 環境已過期

875</h3>

792 876 

793雲端工作階段在不活動一段時間後停止,基礎環境被回收。從本機終端,這會顯示為 `Could not resume session ... its environment has expired. Creating a fresh session instead.` 在網頁上,工作階段在工作階段清單中標記為已過期。877雲端工作階段在不活動一段時間後停止,基礎環境被回收。從本機終端,這會顯示為 `Could not resume session ... its environment has expired. Creating a fresh session instead.` 在網頁上,工作階段在工作階段清單中標記為已過期。

794 878 

795從 [claude.ai/code](https://claude.ai/code) 重新開啟工作階段以佈建新環境,並恢復您的對話歷史記錄。879從 [claude.ai/code](https://claude.ai/code) 重新開啟工作階段以佈建新環境,並恢復您的對話歷史記錄。

796 880 

797## 限制881<h2 id="limitations">

882 限制

883</h2>

798 884 

799在依賴雲端工作階段進行工作流程之前,請考慮這些限制:885在依賴雲端工作階段進行工作流程之前,請考慮這些限制:

800 886 


803* **平台限制**:儲存庫複製和拉取請求建立需要 GitHub。自託管[GitHub Enterprise Server](/zh-TW/github-enterprise-server) 執行個體支援 Team 和 Enterprise 計畫。GitLab、Bitbucket 和其他非 GitHub 儲存庫可以作為[本機捆綁](#send-local-repositories-without-github)發送到雲端工作階段,但工作階段無法將結果推送回遠端889* **平台限制**:儲存庫複製和拉取請求建立需要 GitHub。自託管[GitHub Enterprise Server](/zh-TW/github-enterprise-server) 執行個體支援 Team 和 Enterprise 計畫。GitLab、Bitbucket 和其他非 GitHub 儲存庫可以作為[本機捆綁](#send-local-repositories-without-github)發送到雲端工作階段,但工作階段無法將結果推送回遠端

804* **組織 IP 允許清單**:雲端工作階段從 Anthropic 管理的基礎設施而不是您的網路呼叫 Anthropic API。如果您的組織啟用了 [IP 允許清單](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting),每個雲端工作階段都會失敗,出現驗證錯誤。這同樣適用於[程式碼審查](/zh-TW/code-review)和[例行工作](/zh-TW/routines)。聯絡 [Anthropic 支援](https://support.claude.com/)以從您的組織的 IP 允許清單中豁免 Anthropic 託管的服務。890* **組織 IP 允許清單**:雲端工作階段從 Anthropic 管理的基礎設施而不是您的網路呼叫 Anthropic API。如果您的組織啟用了 [IP 允許清單](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting),每個雲端工作階段都會失敗,出現驗證錯誤。這同樣適用於[程式碼審查](/zh-TW/code-review)和[例行工作](/zh-TW/routines)。聯絡 [Anthropic 支援](https://support.claude.com/)以從您的組織的 IP 允許清單中豁免 Anthropic 託管的服務。

805 891 

806## 相關資源892<h2 id="related-resources">

893 相關資源

894</h2>

807 895 

808* [Ultraplan](/zh-TW/ultraplan):在雲端工作階段中起草計畫並在瀏覽器中檢查它896* [Ultraplan](/zh-TW/ultraplan):在雲端工作階段中起草計畫並在瀏覽器中檢查它

809* [Ultrareview](/zh-TW/ultrareview):在雲端沙箱中執行深度多代理程式碼審查897* [Ultrareview](/zh-TW/ultrareview):在雲端沙箱中執行深度多代理程式碼審查

claude-directory.md +41 −1427

Details

4 4 

5# 探索 .claude 目錄5# 探索 .claude 目錄

6 6 

7> Claude Code 讀取 CLAUDE.md、settings.json、hooks、skills、commands、subagents、rules 和自動記憶的位置。探索您專案中的 .claude 目錄和主目錄中的 ~/.claude。7> Claude Code 讀取 CLAUDE.md、settings.json、hooks、skills、commands、subagents、workflows、rules 和自動記憶的位置。探索您專案中的 .claude 目錄和主目錄中的 ~/.claude。

8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/en/skills">skill</A> or a path-scoped <A href="/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185 

186# Testing Rules

187 

188- Use descriptive test names: "should [expected] when [condition]"

189- Mock external dependencies, not internal modules

190- Clean up side effects in afterEach`

191 }, {

192 id: 'rule-api',

193 label: 'api-design.md',

194 type: 'file',

195 icon: 'md',

196 color: '#9B7BC4',

197 badge: 'committed',

198 oneLiner: 'API conventions scoped to backend code',

199 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

200 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,

201 example: `---

202paths:

203 - "src/api/**/*.ts"

204 

205# API Design Rules

206 

207- All endpoints must validate input with Zod schemas

208- Return shape: { data: T } | { error: string }

209- Rate limit all public endpoints`

210 }]

211 }, {

212 id: 'skills',

213 label: 'skills/',

214 type: 'folder',

215 icon: 'folder',

216 color: '#D4A843',

217 oneLiner: 'Reusable prompts you or Claude invoke by name',

218 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

219 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

220 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

221 docsLink: '/en/skills',

222 children: [{

223 id: 'skill-review',

224 label: 'security-review/',

225 type: 'folder',

226 icon: 'folder',

227 color: '#D4A843',

228 oneLiner: 'A skill bundling SKILL.md with supporting files',

229 children: [{

230 id: 'skill-review-md',

231 label: 'SKILL.md',

232 type: 'file',

233 icon: 'md',

234 color: '#D4A843',

235 badge: 'committed',

236 oneLiner: 'Entrypoint: trigger, invocability, instructions',

237 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

238 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

239 example: `---

240description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

241disable-model-invocation: true

242argument-hint: <branch-or-path>

243 

244## Diff to review

245 

246!\`git diff $ARGUMENTS\`

247 

248Audit the changes above for:

249 

2501. Injection vulnerabilities (SQL, XSS, command)

2512. Authentication and authorization gaps

2523. Hardcoded secrets or credentials

253 

254Use checklist.md in this skill directory for the full review checklist.

255 

256Report findings with severity ratings and remediation steps.`

257 }, {

258 id: 'skill-checklist',

259 label: 'checklist.md',

260 type: 'file',

261 icon: 'md',

262 color: '#D4A843',

263 badge: 'committed',

264 oneLiner: 'Supporting file bundled with the skill',

265 when: 'Claude reads it on demand while running the skill',

266 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

267 example: `# Security Review Checklist

268 

269## Input Validation

270- [ ] All user input sanitized before DB queries

271- [ ] File upload MIME types validated

272- [ ] Path traversal prevented on file operations

273 

274## Authentication

275- [ ] JWT tokens expire after 24 hours

276- [ ] API keys stored in environment variables

277- [ ] Passwords hashed with bcrypt or argon2`

278 }]

279 }]

280 }, {

281 id: 'commands',

282 label: 'commands/',

283 type: 'folder',

284 icon: 'folder',

285 color: '#788C5D',

286 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

287 note: commandsNote,

288 when: <>User types <C>/command-name</C></>,

289 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

290 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

291 docsLink: '/en/skills',

292 children: [{

293 id: 'cmd-example',

294 label: 'fix-issue.md',

295 type: 'file',

296 icon: 'md',

297 color: '#788C5D',

298 badge: 'committed',

299 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

300 note: commandsNote,

301 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

302 example: `---

303argument-hint: <issue-number>

304 

305!\`gh issue view $ARGUMENTS\`

306 

307Investigate and fix the issue above.

308 

3091. Trace the bug to its root cause

3102. Implement the fix

3113. Write or update tests

3124. Summarize what you changed and why`

313 }]

314 }, {

315 id: 'output-styles',

316 label: 'output-styles/',

317 type: 'folder',

318 icon: 'folder',

319 color: '#5AA7A7',

320 oneLiner: 'Project-scoped output styles, if your team shares any',

321 when: 'Applied at session start when selected via the outputStyle setting',

322 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

323 docsLink: '/en/output-styles',

324 children: []

325 }, {

326 id: 'agents',

327 label: 'agents/',

328 type: 'folder',

329 icon: 'folder',

330 color: '#C46686',

331 oneLiner: 'Specialized subagents with their own context window',

332 when: 'Runs in its own context window when you or Claude invoke it',

333 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

334 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

335 docsLink: '/en/sub-agents',

336 children: [{

337 id: 'agent-reviewer',

338 label: 'code-reviewer.md',

339 type: 'file',

340 icon: 'md',

341 color: '#C46686',

342 badge: 'committed',

343 oneLiner: 'Subagent for isolated code review',

344 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

345 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

346 example: `---

347name: code-reviewer

348description: Reviews code for correctness, security, and maintainability

349tools: Read, Grep, Glob

350 

351You are a senior code reviewer. Review for:

352 

3531. Correctness: logic errors, edge cases, null handling

3542. Security: injection, auth bypass, data exposure

3553. Maintainability: naming, complexity, duplication

356 

357Every finding must include a concrete fix.`

358 }]

359 }, {

360 id: 'agent-memory',

361 label: 'agent-memory/',

362 type: 'folder',

363 icon: 'folder',

364 color: '#C46686',

365 badge: 'committed',

366 autogen: true,

367 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

368 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

369 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

370 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

371 docsLink: '/en/sub-agents#enable-persistent-memory',

372 children: [{

373 id: 'agent-memory-sub',

374 label: '<agent-name>/',

375 type: 'folder',

376 icon: 'folder',

377 color: '#C46686',

378 autogen: true,

379 children: [{

380 id: 'agent-memory-md',

381 label: 'MEMORY.md',

382 type: 'file',

383 icon: 'md',

384 color: '#C46686',

385 badge: 'committed',

386 autogen: true,

387 oneLiner: 'The subagent writes and maintains this file automatically',

388 when: 'Loaded into the subagent system prompt when the subagent starts',

389 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

390 example: `# code-reviewer memory

391 

392## Patterns seen

393- Project uses custom Result<T, E> type, not exceptions

394- Auth middleware expects Bearer token in Authorization header

395- Tests use factory functions in test/factories/

396 

397## Recurring issues

398- Missing null checks on API responses (src/api/*)

399- Unhandled promise rejections in background jobs`

400 }]

401 }]

402 }]

403 }]

404 },

405 global: {

406 label: '~/',

407 children: [{

408 id: 'claude-json',

409 label: '.claude.json',

410 type: 'file',

411 icon: 'json',

412 color: 'var(--ce-text-3)',

413 badge: 'local',

414 oneLiner: 'App state and UI preferences',

415 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

416 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

417 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

418 example: `{

419 "autoConnectIde": true,

420 "externalEditorContext": true,

421 "mcpServers": {

422 "my-tools": {

423 "command": "npx",

424 "args": ["-y", "@example/mcp-server"]

425 }

426 }

427}`,

428 docsLink: '/en/settings#global-config-settings'

429 }, {

430 id: 'global-dot-claude',

431 label: '.claude/',

432 type: 'folder',

433 icon: 'folder',

434 color: 'var(--ce-accent)',

435 oneLiner: 'Your personal configuration across all projects',

436 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

437 children: [{

438 id: 'global-claude-md',

439 label: 'CLAUDE.md',

440 type: 'file',

441 icon: 'md',

442 color: '#6A9BCC',

443 badge: 'local',

444 oneLiner: 'Personal preferences across every project',

445 when: 'Loaded at the start of every session, in every project',

446 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

447 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

448 example: `# Global preferences

449 

450- Keep explanations concise

451- Use conventional commit format

452- Show the terminal command to verify changes

453- Prefer composition over inheritance`,

454 docsLink: '/en/memory'

455 }, {

456 id: 'global-settings',

457 label: 'settings.json',

458 type: 'file',

459 icon: 'json',

460 color: 'var(--ce-text-3)',

461 badge: 'local',

462 oneLiner: 'Default settings for all projects',

463 when: 'Your defaults. Project and local settings.json override any keys you also set there',

464 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

465 example: `{

466 "permissions": {

467 "allow": [

468 "Bash(git log *)",

469 "Bash(git diff *)"

470 ]

471 }

472}`,

473 docsLink: '/en/settings'

474 }, {

475 id: 'keybindings',

476 label: 'keybindings.json',

477 type: 'file',

478 icon: 'json',

479 color: 'var(--ce-text-3)',

480 badge: 'local',

481 oneLiner: 'Custom keyboard shortcuts',

482 when: 'Read at session start and hot-reloaded when you edit the file',

483 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

484 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

485 example: `{

486 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

487 "$docs": "https://code.claude.com/docs/en/keybindings",

488 "bindings": [

489 {

490 "context": "Chat",

491 "bindings": {

492 "ctrl+e": "chat:externalEditor",

493 "ctrl+u": null

494 }

495 }

496 ]

497}`,

498 docsLink: '/en/keybindings'

499 }, {

500 id: 'themes',

501 label: 'themes/',

502 type: 'folder',

503 icon: 'folder',

504 color: '#5AA7A7',

505 oneLiner: 'Custom color themes',

506 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

507 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

508 example: `{

509 "name": "Dracula",

510 "base": "dark",

511 "overrides": {

512 "claude": "#bd93f9",

513 "error": "#ff5555",

514 "success": "#50fa7b"

515 }

516}`,

517 docsLink: '/en/terminal-config#create-a-custom-theme',

518 children: []

519 }, {

520 id: 'global-projects',

521 label: 'projects/',

522 type: 'folder',

523 icon: 'folder',

524 color: '#E8A45C',

525 autogen: true,

526 oneLiner: "Auto memory: Claude's notes to itself, per project",

527 when: 'MEMORY.md loaded at session start; topic files read on demand',

528 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

529 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

530 docsLink: '/en/memory#auto-memory',

531 children: [{

532 id: 'memory-dir',

533 label: '<project>/memory/',

534 type: 'folder',

535 icon: 'folder',

536 color: '#E8A45C',

537 autogen: true,

538 oneLiner: "Claude's accumulated knowledge for one project",

539 children: [{

540 id: 'memory-md',

541 label: 'MEMORY.md',

542 type: 'file',

543 icon: 'md',

544 color: '#E8A45C',

545 badge: 'local',

546 autogen: true,

547 oneLiner: 'Claude writes and maintains this file automatically',

548 when: 'First 200 lines (capped at 25KB) loaded at session start',

549 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

550 example: `# Memory Index

551 

552## Project

553- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

554- [architecture.md](architecture.md): API client singleton, refresh-token auth

555 

556## Reference

557- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

558 docsLink: '/en/memory'

559 }, {

560 id: 'memory-topic',

561 label: 'debugging.md',

562 type: 'file',

563 icon: 'md',

564 color: '#E8A45C',

565 badge: 'local',

566 autogen: true,

567 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

568 when: 'Claude reads this when a related task comes up',

569 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

570 example: `---

571name: Debugging patterns

572description: Auth token rotation and database connection troubleshooting for this project

573type: reference

574 

575## Auth Token Issues

576- Refresh token rotation: old token invalidated immediately

577- If 401 after refresh: check clock skew between client and server

578 

579## Database Connection Drops

580- Connection pool: max 10 in dev, 50 in prod

581- Always check \`docker compose ps\` first`

582 }]

583 }]

584 }, {

585 id: 'global-rules',

586 label: 'rules/',

587 type: 'folder',

588 icon: 'folder',

589 color: '#9B7BC4',

590 oneLiner: 'User-level rules that apply to every project',

591 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

592 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

593 docsLink: '/en/memory#organize-rules-with-claude/rules/',

594 children: []

595 }, {

596 id: 'global-skills',

597 label: 'skills/',

598 type: 'folder',

599 icon: 'folder',

600 color: '#D4A843',

601 oneLiner: 'Personal skills available in every project',

602 when: <>Invoked with <C>/skill-name</C> in any project</>,

603 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

604 docsLink: '/en/skills',

605 children: []

606 }, {

607 id: 'global-commands',

608 label: 'commands/',

609 type: 'folder',

610 icon: 'folder',

611 color: '#788C5D',

612 oneLiner: 'Personal single-file commands available in every project',

613 note: commandsNote,

614 when: <>User types <C>/command-name</C> in any project</>,

615 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

616 docsLink: '/en/skills',

617 children: []

618 }, {

619 id: 'global-output-styles',

620 label: 'output-styles/',

621 type: 'folder',

622 icon: 'folder',

623 color: '#5AA7A7',

624 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

625 when: 'Applied at session start when selected via the outputStyle setting',

626 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

627 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

628 docsLink: '/en/output-styles',

629 children: [{

630 id: 'output-style-example',

631 label: 'teaching.md',

632 type: 'file',

633 icon: 'md',

634 color: '#5AA7A7',

635 badge: 'local',

636 oneLiner: 'Example style that adds explanations and leaves small changes for you',

637 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

638 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

639 example: `---

640description: Explains reasoning and asks you to implement small pieces

641keep-coding-instructions: true

642 

643After completing each task, add a brief "Why this approach" note

644explaining the key design decision.

645 

646When a change is under 10 lines, ask the user to implement it

647themselves by leaving a TODO(human) marker instead of writing it.`

648 }]

649 }, {

650 id: 'global-agents',

651 label: 'agents/',

652 type: 'folder',

653 icon: 'folder',

654 color: '#C46686',

655 oneLiner: 'Personal subagents available in every project',

656 when: 'Claude delegates or you @-mention in any project',

657 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

658 docsLink: '/en/sub-agents',

659 children: []

660 }, {

661 id: 'global-agent-memory',

662 label: 'agent-memory/',

663 type: 'folder',

664 icon: 'folder',

665 color: '#C46686',

666 autogen: true,

667 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

668 when: 'Loaded into the subagent system prompt when the subagent starts',

669 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

670 docsLink: '/en/sub-agents#enable-persistent-memory',

671 children: []

672 }]

673 }]

674 }

675 }), []);

676 const BADGE_STYLES = useMemo(() => ({

677 committed: {

678 bg: 'rgba(85,138,66,0.08)',

679 color: 'var(--ce-badge-committed)',

680 border: 'rgba(85,138,66,0.15)',

681 label: 'committed'

682 },

683 gitignored: {

684 bg: 'rgba(217,119,87,0.06)',

685 color: 'var(--ce-badge-gitignored)',

686 border: 'rgba(217,119,87,0.15)',

687 label: 'gitignored'

688 },

689 local: {

690 bg: 'rgba(115,114,108,0.06)',

691 color: 'var(--ce-badge-local)',

692 border: 'rgba(115,114,108,0.12)',

693 label: 'local only'

694 },

695 autogen: {

696 bg: 'rgba(232,164,92,0.1)',

697 color: 'var(--ce-badge-autogen)',

698 border: 'rgba(232,164,92,0.2)',

699 label: 'Claude writes'

700 }

701 }), []);

702 const allNodes = useMemo(() => {

703 const flatten = (nodes, acc, path, parentId) => {

704 for (const node of nodes) {

705 const nextPath = [...path, node.label];

706 acc[node.id] = {

707 ...node,

708 path: nextPath,

709 parentId

710 };

711 if (node.children) flatten(node.children, acc, nextPath, node.id);

712 }

713 return acc;

714 };

715 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

716 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

717 for (const id in project) project[id].root = 'project';

718 for (const id in global) global[id].root = 'global';

719 return {

720 ...project,

721 ...global

722 };

723 }, [FILE_TREE]);

724 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

725 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

726 const [mounted, setMounted] = useState(false);

727 const [activeRoot, setActiveRoot] = useState('project');

728 const [selectedId, setSelectedId] = useState('claude-md');

729 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

730 const [forceMobile, setForceMobile] = useState(false);

731 const [copiedId, setCopiedId] = useState(null);

732 const [isFullscreen, setIsFullscreen] = useState(false);

733 const copyTimeoutRef = useRef(null);

734 const rootRef = useRef(null);

735 useEffect(() => {

736 setMounted(true);

737 const applyHash = scroll => {

738 const hash = window.location.hash.slice(1);

739 if (!hash.startsWith('ce-')) return;

740 const id = hash.slice(3);

741 const node = allNodes[id];

742 if (!node) return;

743 setActiveRoot(node.root);

744 setSelectedId(id);

745 setExpandedFolders(new Set(allFolderIds));

746 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

747 behavior: 'smooth',

748 block: 'start'

749 });

750 };

751 applyHash(false);

752 const onHashChange = () => applyHash(true);

753 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

754 window.addEventListener('hashchange', onHashChange);

755 document.addEventListener('fullscreenchange', onFsChange);

756 return () => {

757 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

758 window.removeEventListener('hashchange', onHashChange);

759 document.removeEventListener('fullscreenchange', onFsChange);

760 };

761 }, []);

762 useEffect(() => {

763 if (!mounted || !rootRef.current) return;

764 const hash = window.location.hash.slice(1);

765 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

766 rootRef.current.scrollIntoView({

767 behavior: 'smooth',

768 block: 'start'

769 });

770 }

771 }, [mounted]);

772 if (!mounted) return null;

773 const selected = allNodes[selectedId];

774 const tree = FILE_TREE[activeRoot];

775 const isCopied = copiedId === selected.id;

776 const toggleFolder = id => {

777 const next = new Set(expandedFolders);

778 next.has(id) ? next.delete(id) : next.add(id);

779 setExpandedFolders(next);

780 };

781 const switchRoot = root => {

782 if (root === activeRoot) return;

783 setActiveRoot(root);

784 const firstId = FILE_TREE[root].children[0].id;

785 setSelectedId(firstId);

786 try {

787 history.replaceState(null, '', '#ce-' + firstId);

788 } catch (e) {}

789 };

790 const toggleFullscreen = () => {

791 if (!rootRef.current) return;

792 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

793 };

794 const selectNode = n => {

795 setSelectedId(n.id);

796 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

797 try {

798 history.replaceState(null, '', '#ce-' + n.id);

799 } catch (e) {}

800 };

801 const iconBtn = {

802 width: 28,

803 flexShrink: 0,

804 borderRadius: '6px',

805 border: 'none',

806 cursor: 'pointer',

807 background: 'transparent',

808 color: 'var(--ce-text-4)',

809 display: 'flex',

810 alignItems: 'center',

811 justifyContent: 'center'

812 };

813 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

814 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

815 const toggleAllFolders = () => {

816 const next = new Set(expandedFolders);

817 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

818 setExpandedFolders(next);

819 };

820 const onTreeKeyDown = e => {

821 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

822 const visible = [];

823 const walk = nodes => {

824 for (const n of nodes) {

825 visible.push(n.id);

826 if (n.children && expandedFolders.has(n.id)) walk(n.children);

827 }

828 };

829 walk(tree.children);

830 const i = visible.indexOf(selectedId);

831 if (i === -1) return;

832 e.preventDefault();

833 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

834 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

835 } else if (e.key === 'ArrowLeft') {

836 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

837 }

838 };

839 const copyExample = (id, text) => {

840 const done = () => {

841 setCopiedId(id);

842 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

843 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

844 };

845 const fallback = () => {

846 const ta = document.createElement('textarea');

847 ta.value = text;

848 ta.style.position = 'fixed';

849 ta.style.opacity = '0';

850 document.body.appendChild(ta);

851 ta.select();

852 try {

853 if (document.execCommand('copy')) done();

854 } catch (e) {}

855 document.body.removeChild(ta);

856 };

857 if (navigator.clipboard) {

858 navigator.clipboard.writeText(text).then(done, fallback);

859 } else {

860 fallback();

861 }

862 };

863 const renderIcon = (icon, color, size) => {

864 const sz = size || 14;

865 if (icon === 'folder') {

866 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

867 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

868 </svg>;

869 }

870 if (icon === 'json') {

871 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

872 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

873 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

874 </svg>;

875 }

876 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

877 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

878 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

879 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

880 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

881 </svg>;

882 };

883 const renderNode = (node, depth) => {

884 const isFolder = node.type === 'folder';

885 const isExpanded = expandedFolders.has(node.id);

886 const isSelected = selectedId === node.id;

887 return <div key={node.id}>

888 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

889 display: 'flex',

890 alignItems: 'center',

891 gap: '5px',

892 width: '100%',

893 padding: `4px 8px 4px ${8 + depth * 16}px`,

894 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

895 borderTop: 'none',

896 borderRight: 'none',

897 borderBottom: 'none',

898 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

899 outline: 'none',

900 cursor: 'pointer',

901 textAlign: 'left',

902 fontFamily: 'var(--ce-mono)',

903 fontSize: '13.5px',

904 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

905 fontWeight: isSelected ? 550 : 400,

906 transition: 'all 0.1s'

907 }}>

908 {isFolder ? <span onClick={e => {

909 e.stopPropagation();

910 toggleFolder(node.id);

911 }} style={{

912 fontSize: '14px',

913 color: 'var(--ce-text-4)',

914 width: '20px',

915 height: '20px',

916 display: 'inline-flex',

917 alignItems: 'center',

918 justifyContent: 'center',

919 cursor: 'pointer',

920 borderRadius: '4px',

921 marginLeft: '-6px',

922 flexShrink: 0

923 }} onMouseEnter={e => {

924 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

925 e.currentTarget.style.color = 'var(--ce-text-2)';

926 }} onMouseLeave={e => {

927 e.currentTarget.style.background = 'transparent';

928 e.currentTarget.style.color = 'var(--ce-text-4)';

929 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

930 width: '14px',

931 flexShrink: 0

932 }} />}

933 {renderIcon(node.icon, node.color)}

934 <span style={{

935 flex: 1,

936 overflow: 'hidden',

937 textOverflow: 'ellipsis',

938 whiteSpace: 'nowrap'

939 }}>{node.label}</span>

940 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

941 width: 6,

942 height: 6,

943 borderRadius: '50%',

944 background: BADGE_STYLES[node.badge].color,

945 flexShrink: 0,

946 opacity: 0.7

947 }} />}

948 </button>

949 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

950 </div>;

951 };

952 return <>

953 <style>{`

954 .ce-root {

955 --ce-mono: var(--font-mono, ui-monospace, monospace);

956 --ce-accent: #D97757;

957 --ce-accent-bg: rgba(217,119,87,0.06);

958 --ce-accent-border: rgba(217,119,87,0.12);

959 --ce-bg: #fff;

960 --ce-surface: #FAFAF7;

961 --ce-surface-hover: #F0EEE6;

962 --ce-border: #E8E6DC;

963 --ce-border-subtle: #F0EEE6;

964 --ce-text: #141413;

965 --ce-text-2: #5E5D59;

966 --ce-text-3: #73726C;

967 --ce-text-4: #9C9A92;

968 --ce-text-5: #B8B6AE;

969 --ce-sep: #D1CFC5;

970 --ce-code-header: #F5F4ED;

971 --ce-code-bg: #1A1918;

972 --ce-arrow-hover: rgba(0,0,0,0.08);

973 --ce-badge-committed: #3d6b2e;

974 --ce-badge-gitignored: #b85c3a;

975 --ce-badge-local: #5e5d59;

976 --ce-badge-autogen: #b07520;

977 --ce-when-text: #4a7fb5;

978 }

979 .dark .ce-root {

980 --ce-bg: #1a1918;

981 --ce-surface: #232221;

982 --ce-surface-hover: #2e2d2b;

983 --ce-border: #3a3936;

984 --ce-border-subtle: #2e2d2b;

985 --ce-text: #e8e6dc;

986 --ce-text-2: #c4c2b8;

987 --ce-text-3: #9c9a92;

988 --ce-text-4: #73726c;

989 --ce-text-5: #5e5d59;

990 --ce-sep: #4a4946;

991 --ce-code-header: #2e2d2b;

992 --ce-code-bg: #0d0d0c;

993 --ce-arrow-hover: rgba(255,255,255,0.08);

994 --ce-badge-committed: #6fa85c;

995 --ce-badge-gitignored: #e08a60;

996 --ce-badge-local: #9c9a92;

997 --ce-badge-autogen: #e8a45c;

998 --ce-when-text: #8bb4e0;

999 }

1000 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1001 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1002 @media (max-width: 700px) {

1003 .ce-root:not(.ce-force) { display: none !important; }

1004 .ce-mobile-fallback { display: block; }

1005 }

1006 `}</style>

1007 {!forceMobile && <div className="ce-mobile-fallback" style={{

1008 padding: '14px 16px',

1009 borderRadius: '8px',

1010 fontSize: '14px'

1011 }}>

1012 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1013 color: '#D97757'

1014 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1015 border: 'none',

1016 background: 'none',

1017 padding: 0,

1018 color: '#D97757',

1019 textDecoration: 'underline',

1020 cursor: 'pointer',

1021 font: 'inherit'

1022 }}>show the explorer anyway</button>.

1023 </div>}

1024 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1025 borderRadius: isFullscreen ? 0 : '12px',

1026 border: '1px solid var(--ce-border)',

1027 background: 'var(--ce-bg)',

1028 display: 'flex',

1029 alignItems: 'stretch',

1030 overflow: 'hidden',

1031 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1032 ...isFullscreen && ({

1033 height: '100vh'

1034 })

1035 }}>

1036 {}

1037 <div style={{

1038 width: 'min(240px, 35%)',

1039 minWidth: '180px',

1040 flexShrink: 0,

1041 borderRight: '1px solid var(--ce-border-subtle)',

1042 background: 'var(--ce-surface)',

1043 display: 'flex',

1044 flexDirection: 'column'

1045 }}>

1046 <div style={{

1047 padding: '8px 8px 4px',

1048 borderBottom: '1px solid var(--ce-border-subtle)',

1049 display: 'flex',

1050 gap: '4px'

1051 }}>

1052 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1053 flex: 1,

1054 padding: '6px 0',

1055 borderRadius: '6px',

1056 border: 'none',

1057 cursor: 'pointer',

1058 fontFamily: 'var(--ce-mono)',

1059 fontSize: '11.5px',

1060 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1061 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1062 fontWeight: activeRoot === root ? 600 : 430

1063 }}>

1064 {root === 'project' ? 'Project' : 'Global (~/)'}

1065 </button>)}

1066 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1067 ...iconBtn,

1068 fontSize: 11

1069 }}>

1070 {allExpanded ? '⊟' : '⊞'}

1071 </button>

1072 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1073 ...iconBtn,

1074 fontSize: 13

1075 }}>

1076 {isFullscreen ? '⤡' : '⛶'}

1077 </button>

1078 </div>

1079 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1080 padding: '6px 0',

1081 overflowY: 'auto',

1082 flex: 1,

1083 outline: 'none'

1084 }}>

1085 {tree.children.map(node => renderNode(node, 0))}

1086 </div>

1087 </div>

1088 

1089 {}

1090 <div style={{

1091 flex: 1,

1092 minWidth: 0,

1093 padding: '20px 24px',

1094 minHeight: '400px',

1095 overflowY: 'auto'

1096 }}>

1097 <span aria-live="polite" style={{

1098 position: 'absolute',

1099 width: 1,

1100 height: 1,

1101 overflow: 'hidden',

1102 clip: 'rect(0 0 0 0)'

1103 }}>{selected.label} selected</span>

1104 {}

1105 <div style={{

1106 fontFamily: 'var(--ce-mono)',

1107 fontSize: '11px',

1108 color: 'var(--ce-text-4)',

1109 marginBottom: '10px',

1110 cursor: 'default'

1111 }}>

1112 {selected.path.map((seg, i) => <span key={i}>

1113 <span style={{

1114 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1115 }}>{seg.replace(/\/$/, '')}</span>

1116 {i < selected.path.length - 1 && <span style={{

1117 color: 'var(--ce-sep)'

1118 }}> / </span>}

1119 </span>)}

1120 </div>

1121 

1122 {}

1123 <div style={{

1124 display: 'flex',

1125 alignItems: 'flex-start',

1126 gap: '10px',

1127 marginBottom: '10px'

1128 }}>

1129 <span style={{

1130 flexShrink: 0,

1131 display: 'flex'

1132 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1133 <div style={{

1134 flex: 1,

1135 minWidth: 0

1136 }}>

1137 <div style={{

1138 fontSize: '22px',

1139 fontWeight: 600,

1140 color: 'var(--ce-text)',

1141 letterSpacing: '-0.3px',

1142 lineHeight: '26px'

1143 }}>{selected.label}</div>

1144 {selected.oneLiner && <div style={{

1145 fontSize: '15px',

1146 color: 'var(--ce-text-3)',

1147 marginTop: '3px'

1148 }}>{selected.oneLiner}</div>}

1149 </div>

1150 <div style={{

1151 display: 'flex',

1152 gap: '4px',

1153 flexShrink: 0

1154 }}>

1155 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1156 const s = BADGE_STYLES[k];

1157 if (!s) return null;

1158 return <span key={k} style={{

1159 fontFamily: 'var(--ce-mono)',

1160 fontSize: '10px',

1161 fontWeight: 600,

1162 textTransform: 'uppercase',

1163 letterSpacing: '0.3px',

1164 padding: '2px 6px',

1165 borderRadius: '4px',

1166 background: s.bg,

1167 color: s.color,

1168 border: `0.5px solid ${s.border}`

1169 }}>{s.label}</span>;

1170 })}

1171 </div>

1172 </div>

1173 

1174 {}

1175 {selected.note && <div style={{

1176 padding: '10px 12px',

1177 borderRadius: '8px',

1178 marginBottom: '14px',

1179 background: 'rgba(217,119,87,0.06)',

1180 border: '1px solid rgba(217,119,87,0.2)',

1181 borderLeft: '3px solid var(--ce-accent)',

1182 fontSize: '15px',

1183 color: 'var(--ce-text-2)',

1184 lineHeight: 1.6

1185 }}>

1186 {selected.note}

1187 </div>}

1188 

1189 {}

1190 {selected.when && <div style={{

1191 padding: '8px 12px',

1192 borderRadius: '6px',

1193 background: 'rgba(106,155,204,0.06)',

1194 border: '0.5px solid rgba(106,155,204,0.12)',

1195 fontSize: '15px',

1196 color: 'var(--ce-when-text)',

1197 marginBottom: '16px'

1198 }}>

1199 <div style={{

1200 fontSize: '10px',

1201 fontWeight: 700,

1202 textTransform: 'uppercase',

1203 letterSpacing: '0.4px',

1204 opacity: 0.65,

1205 marginBottom: '3px'

1206 }}>When it loads</div>

1207 <div style={{

1208 fontWeight: 500

1209 }}>{selected.when}</div>

1210 </div>}

1211 

1212 {}

1213 {selected.description && <div style={{

1214 fontSize: '16px',

1215 color: 'var(--ce-text-2)',

1216 lineHeight: 1.65,

1217 marginBottom: '16px'

1218 }}>

1219 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1220 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1221 }}>{para}</div>) : selected.description}

1222 </div>}

1223 

1224 {}

1225 {selected.contains && selected.contains.length > 0 && <div style={{

1226 marginBottom: '16px'

1227 }}>

1228 <div style={{

1229 fontSize: '11px',

1230 fontWeight: 700,

1231 color: 'var(--ce-text-4)',

1232 textTransform: 'uppercase',

1233 letterSpacing: '0.4px',

1234 marginBottom: '8px'

1235 }}>Common keys</div>

1236 {selected.contains.map((item, i) => <div key={i} style={{

1237 display: 'flex',

1238 gap: '7px',

1239 fontSize: '15px',

1240 color: 'var(--ce-text-2)',

1241 lineHeight: 1.5,

1242 marginBottom: '5px'

1243 }}>

1244 <span style={{

1245 fontSize: '7px',

1246 color: 'var(--ce-text-4)',

1247 marginTop: '6px'

1248 }}>●</span>

1249 <span>{item}</span>

1250 </div>)}

1251 </div>}

1252 

1253 {}

1254 {selected.tips && selected.tips.length > 0 && <div style={{

1255 padding: '12px 14px',

1256 borderRadius: '8px',

1257 background: 'var(--ce-surface)',

1258 border: '1px solid var(--ce-border-subtle)',

1259 marginBottom: '16px'

1260 }}>

1261 <div style={{

1262 fontSize: '11px',

1263 fontWeight: 700,

1264 color: 'var(--ce-accent)',

1265 textTransform: 'uppercase',

1266 letterSpacing: '0.4px',

1267 marginBottom: '6px'

1268 }}>Tips</div>

1269 {selected.tips.map((tip, i) => <div key={i} style={{

1270 display: 'flex',

1271 gap: '7px',

1272 fontSize: '14.5px',

1273 color: 'var(--ce-text-2)',

1274 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1275 }}>

1276 <span style={{

1277 fontSize: '7px',

1278 color: 'var(--ce-accent)',

1279 marginTop: '6px'

1280 }}>●</span>

1281 <span>{tip}</span>

1282 </div>)}

1283 </div>}

1284 

1285 {}

1286 {selected.example && <div style={{

1287 marginBottom: '16px'

1288 }}>

1289 {selected.exampleIntro && <div style={{

1290 fontSize: '15px',

1291 color: 'var(--ce-text-2)',

1292 lineHeight: 1.6,

1293 marginBottom: '10px'

1294 }}>

1295 {selected.exampleIntro}

1296 </div>}

1297 <div style={{

1298 display: 'flex',

1299 justifyContent: 'space-between',

1300 alignItems: 'center',

1301 padding: '6px 10px',

1302 background: 'var(--ce-code-header)',

1303 border: '1px solid var(--ce-border)',

1304 borderRadius: '8px 8px 0 0'

1305 }}>

1306 <span style={{

1307 fontFamily: 'var(--ce-mono)',

1308 fontSize: '11px',

1309 fontWeight: 600,

1310 color: 'var(--ce-text-3)'

1311 }}>{selected.label}</span>

1312 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1313 padding: '3px 8px',

1314 borderRadius: '4px',

1315 fontSize: '11px',

1316 fontWeight: 600,

1317 cursor: 'pointer',

1318 transition: 'all 0.15s',

1319 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1320 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1321 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1322 }}>

1323 {isCopied ? '✓ Copied' : 'Copy'}

1324 </button>

1325 </div>

1326 <pre style={{

1327 margin: 0,

1328 padding: '12px 14px',

1329 background: 'var(--ce-code-bg)',

1330 color: '#E8E6DC',

1331 fontFamily: 'var(--ce-mono)',

1332 fontSize: '13px',

1333 lineHeight: 1.65,

1334 borderRadius: '0 0 8px 8px',

1335 overflowX: 'auto',

1336 whiteSpace: 'pre'

1337 }}>{selected.example}</pre>

1338 </div>}

1339 

1340 {}

1341 {selected.docsLink && <a href={selected.docsLink} style={{

1342 display: 'inline-flex',

1343 padding: '5px 12px',

1344 borderRadius: '6px',

1345 background: 'var(--ce-accent-bg)',

1346 border: '1px solid var(--ce-accent-border)',

1347 color: 'var(--ce-accent)',

1348 fontSize: '12px',

1349 fontWeight: 600,

1350 textDecoration: 'none'

1351 }}>Full docs →</a>}

1352 

1353 {}

1354 {selected.children && selected.children.length > 0 && <div style={{

1355 marginTop: '20px'

1356 }}>

1357 <div style={{

1358 fontSize: '11px',

1359 fontWeight: 700,

1360 color: 'var(--ce-text-4)',

1361 textTransform: 'uppercase',

1362 letterSpacing: '0.4px',

1363 marginBottom: '8px'

1364 }}>Contents</div>

1365 <div style={{

1366 display: 'flex',

1367 flexDirection: 'column',

1368 gap: '4px'

1369 }}>

1370 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1371 display: 'flex',

1372 alignItems: 'center',

1373 gap: '8px',

1374 padding: '6px 8px',

1375 width: '100%',

1376 background: 'var(--ce-surface)',

1377 borderRadius: '6px',

1378 border: 'none',

1379 cursor: 'pointer',

1380 textAlign: 'left',

1381 transition: 'background 0.1s'

1382 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1383 {renderIcon(child.icon, child.color, 13)}

1384 <span style={{

1385 fontFamily: 'var(--ce-mono)',

1386 fontSize: '12px',

1387 color: 'var(--ce-text-2)'

1388 }}>{child.label}</span>

1389 {child.oneLiner && <span style={{

1390 fontSize: '11px',

1391 color: 'var(--ce-text-4)',

1392 overflow: 'hidden',

1393 textOverflow: 'ellipsis',

1394 whiteSpace: 'nowrap'

1395 }}>{child.oneLiner}</span>}

1396 </button>)}

1397 </div>

1398 </div>}

1399 </div>

1400 </div>

1401 </>;

1402};

1403 8 

1404Claude Code 從您的專案目錄和主目錄中的 `~/.claude` 讀取指令、設定、skills、subagents 和記憶。將專案檔案提交到 git 以與您的團隊共享;`~/.claude` 中的檔案是個人設定,適用於您的所有專案。9Claude Code 從您的專案目錄和主目錄中的 `~/.claude` 讀取指令、設定、skills、subagents 和記憶。將專案檔案提交到 git 以與您的團隊共享;`~/.claude` 中的檔案是個人設定,適用於您的所有專案。

1405 10 


1414 12 

1415大多數使用者只編輯 `CLAUDE.md` 和 `settings.json`。目錄的其餘部分是可選的:根據需要新增 skills、rules 或 subagents。13大多數使用者只編輯 `CLAUDE.md` 和 `settings.json`。目錄的其餘部分是可選的:根據需要新增 skills、rules 或 subagents。

1416 14 

1417## 探索目錄15<h2 id="explore-the-directory">

16 探索目錄

17</h2>

1418 18 

1419點擊樹中的檔案以查看每個檔案的功能、何時載入以及範例。19點擊樹中的檔案以查看每個檔案的功能、何時載入以及範例。

1420 20 

1421<ClaudeExplorer />21<h2 id="what-s-not-shown">

1422 22 未顯示的內容

1423## 未顯示的內容23</h2>

1424 24 

1425探索器涵蓋您編寫和編輯的檔案。一些相關檔案位於其他位置:25探索器涵蓋您編寫和編輯的檔案。一些相關檔案位於其他位置:

1426 26 


1432 32 

1433`~/.claude` 還保存 Claude Code 在您工作時寫入的資料:文字記錄、提示歷史記錄、檔案快照、快取和日誌。請參閱下方的[應用程式資料](#application-data)。33`~/.claude` 還保存 Claude Code 在您工作時寫入的資料:文字記錄、提示歷史記錄、檔案快照、快取和日誌。請參閱下方的[應用程式資料](#application-data)。

1434 34 

1435## 選擇正確的檔案35<h2 id="choose-the-right-file">

36 選擇正確的檔案

37</h2>

1436 38 

1437不同類型的自訂設定位於不同的檔案中。使用此表格找到變更應該位於何處。39不同類型的自訂設定位於不同的檔案中。使用此表格找到變更應該位於何處。

1438 40 


1445| 將個人覆蓋保留在 git 之外 | `settings.local.json` | 僅專案 | [Settings scopes](/zh-TW/settings#settings-files) |47| 將個人覆蓋保留在 git 之外 | `settings.local.json` | 僅專案 | [Settings scopes](/zh-TW/settings#settings-files) |

1446| 新增您使用 `/name` 叫用的提示或功能 | `skills/<name>/SKILL.md` | 專案或全域 | [Skills](/zh-TW/skills) |48| 新增您使用 `/name` 叫用的提示或功能 | `skills/<name>/SKILL.md` | 專案或全域 | [Skills](/zh-TW/skills) |

1447| 定義具有自己工具的專門 subagent | `agents/*.md` | 專案或全域 | [Subagents](/zh-TW/sub-agents) |49| 定義具有自己工具的專門 subagent | `agents/*.md` | 專案或全域 | [Subagents](/zh-TW/sub-agents) |

50| 透過指令碼協調許多 subagent | `workflows/*.js` | 專案或全域 | [Dynamic workflows](/zh-TW/workflows) |

1448| 透過 MCP 連接外部工具 | `.mcp.json` | 僅專案 | [MCP](/zh-TW/mcp) |51| 透過 MCP 連接外部工具 | `.mcp.json` | 僅專案 | [MCP](/zh-TW/mcp) |

1449| 變更 Claude 格式化回應的方式 | `output-styles/*.md` | 專案或全域 | [Output styles](/zh-TW/output-styles) |52| 變更 Claude 格式化回應的方式 | `output-styles/*.md` | 專案或全域 | [Output styles](/zh-TW/output-styles) |

1450 53 

1451## 檔案參考54<h2 id="file-reference">

55 檔案參考

56</h2>

1452 57 

1453此表列出探索器涵蓋的每個檔案。專案範圍的檔案位於您的儲存庫中的 `.claude/` 下(或 `CLAUDE.md`、`.mcp.json` 和 `.worktreeinclude` 的根目錄)。全域範圍的檔案位於 `~/.claude/` 中,適用於所有專案。58此表列出探索器涵蓋的每個檔案。專案範圍的檔案位於您的儲存庫中的 `.claude/` 下(或 `CLAUDE.md`、`.mcp.json` 和 `.worktreeinclude` 的根目錄)。全域範圍的檔案位於 `~/.claude/` 中,適用於所有專案。

1454 59 


1465點擊檔案名稱以在上方的探索器中開啟該節點。70點擊檔案名稱以在上方的探索器中開啟該節點。

1466 71 

1467| 檔案 | 範圍 | 提交 | 功能 | 參考 |72| 檔案 | 範圍 | 提交 | 功能 | 參考 |

1468| --------------------------------------------------- | ----- | -- | ----------------------------- | ------------------------------------------------------------------ |73| --------------------------------------------------- | ----- | -- | ----------------------------------------------------------- | ------------------------------------------------------------------ |

1469| [`CLAUDE.md`](#ce-claude-md) | 專案和全域 | ✓ | 每個工作階段載入的指令 | [Memory](/zh-TW/memory) |74| [`CLAUDE.md`](#ce-claude-md) | 專案和全域 | ✓ | 每個工作階段載入的指令 | [Memory](/zh-TW/memory) |

1470| [`rules/*.md`](#ce-rules) | 專案和全域 | ✓ | 主題範圍的指令,可選擇路徑限制 | [Rules](/zh-TW/memory#organize-rules-with-claude/rules/) |75| [`rules/*.md`](#ce-rules) | 專案和全域 | ✓ | 主題範圍的指令,可選擇路徑限制 | [Rules](/zh-TW/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | 專案和全域 | ✓ | 權限、hooks、環境變數、模型預設值 | [Settings](/zh-TW/settings) |76| [`settings.json`](#ce-settings-json) | 專案和全域 | ✓ | 權限、hooks、環境變數、模型預設值 | [Settings](/zh-TW/settings) |


1476| [`commands/*.md`](#ce-commands) | 專案和全域 | ✓ | 單檔案提示;與 skills 相同的機制 | [Skills](/zh-TW/skills) |81| [`commands/*.md`](#ce-commands) | 專案和全域 | ✓ | 單檔案提示;與 skills 相同的機制 | [Skills](/zh-TW/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | 專案和全域 | ✓ | 自訂系統提示部分 | [Output styles](/zh-TW/output-styles) |82| [`output-styles/*.md`](#ce-output-styles) | 專案和全域 | ✓ | 自訂系統提示部分 | [Output styles](/zh-TW/output-styles) |

1478| [`agents/*.md`](#ce-agents) | 專案和全域 | ✓ | Subagent 定義及其自己的提示和工具 | [Subagents](/zh-TW/sub-agents) |83| [`agents/*.md`](#ce-agents) | 專案和全域 | ✓ | Subagent 定義及其自己的提示和工具 | [Subagents](/zh-TW/sub-agents) |

84| [`workflows/*.js`](#ce-workflows) | 專案和全域 | ✓ | Claude 撰寫並從 `/workflows` 儲存的動態工作流程指令碼;每個檔案都會變成 `/<name>` 命令 | [Dynamic workflows](/zh-TW/workflows) |

1479| [`agent-memory/<name>/`](#ce-agent-memory) | 專案和全域 | ✓ | Subagents 的持久記憶 | [Persistent memory](/zh-TW/sub-agents#enable-persistent-memory) |85| [`agent-memory/<name>/`](#ce-agent-memory) | 專案和全域 | ✓ | Subagents 的持久記憶 | [Persistent memory](/zh-TW/sub-agents#enable-persistent-memory) |

1480| [`~/.claude.json`](#ce-claude-json) | 僅全域 | | 應用程式狀態、OAuth、UI 切換、個人 MCP 伺服器 | [Global config](/zh-TW/settings#global-config-settings) |86| [`~/.claude.json`](#ce-claude-json) | 僅全域 | | 應用程式狀態、OAuth、UI 切換、個人 MCP 伺服器 | [Global config](/zh-TW/settings#global-config-settings) |

1481| [`projects/<project>/memory/`](#ce-global-projects) | 僅全域 | | 自動記憶:Claude 在工作階段間對自己的筆記 | [Auto memory](/zh-TW/memory#auto-memory) |87| [`projects/<project>/memory/`](#ce-global-projects) | 僅全域 | | 自動記憶:Claude 在工作階段間對自己的筆記 | [Auto memory](/zh-TW/memory#auto-memory) |

1482| [`keybindings.json`](#ce-keybindings) | 僅全域 | | 自訂快捷鍵 | [Keybindings](/zh-TW/keybindings) |88| [`keybindings.json`](#ce-keybindings) | 僅全域 | | 自訂快捷鍵 | [Keybindings](/zh-TW/keybindings) |

1483| [`themes/*.json`](#ce-themes) | 僅全域 | | 自訂色彩主題 | [Custom themes](/zh-TW/terminal-config#create-a-custom-theme) |89| [`themes/*.json`](#ce-themes) | 僅全域 | | 自訂色彩主題 | [Custom themes](/zh-TW/terminal-config#create-a-custom-theme) |

1484 90 

1485## 檢查已載入的內容91<h2 id="troubleshoot-configuration">

1486 92 疑難排解設定

1487探索器顯示可以存在的檔案。若要查看在您目前工作階段中實際載入的內容,請使用這些命令:93</h2>

1488 

1489| 命令 | 顯示 |

1490| -------------- | ------------------------------------- |

1491| `/context` | 按類別的權杖使用情況:系統提示、記憶檔案、skills、MCP 工具和訊息 |

1492| `/memory` | 載入了哪些 CLAUDE.md 和 rules 檔案,加上自動記憶項目 |

1493| `/agents` | 已設定的 subagents 及其設定 |

1494| `/hooks` | 作用中的 hook 設定 |

1495| `/mcp` | 已連接的 MCP 伺服器及其狀態 |

1496| `/skills` | 來自專案、使用者和 plugin 來源的可用 skills |

1497| `/permissions` | 目前的允許和拒絕規則 |

1498| `/doctor` | 安裝和設定診斷 |

1499 94 

1500首先執行 `/context` 以取得概觀然後執行特定命令以調查您想要的區域95如果設定、hook 或檔案未生效請參閱[偵錯您的設定](/zh-TW/debug-your-config)以取得檢查命令和症狀優先查詢表

1501 96 

1502## 應用程式資料97<h2 id="application-data">

98 應用程式資料

99</h2>

1503 100 

1504除了您編寫的設定外,`~/.claude` 還保存 Claude Code 在工作階段期間寫入的資料。這些檔案是純文字。任何通過工具的內容都會在磁碟上的文字記錄中結束:檔案內容、命令輸出、貼上的文字。101除了您編寫的設定外,`~/.claude` 還保存 Claude Code 在工作階段期間寫入的資料。這些檔案是純文字。任何通過工具的內容都會在磁碟上的文字記錄中結束:檔案內容、命令輸出、貼上的文字。

1505 102 

1506### 自動清理103<h3 id="cleaned-up-automatically">

104 自動清理

105</h3>

1507 106 

1508下列路徑中的檔案在啟動時被刪除,一旦它們的年齡超過 [`cleanupPeriodDays`](/zh-TW/settings#available-settings)。預設值為 30 天。107下列路徑中的檔案在啟動時被刪除,一旦它們的年齡超過 [`cleanupPeriodDays`](/zh-TW/settings#available-settings)。預設值為 30 天。

1509 108 


1521| `shell-snapshots/` | Bash tool 使用的擷取 shell 環境。在正常退出時移除。掃描會清除任何在當機後遺留的檔案。 |120| `shell-snapshots/` | Bash tool 使用的擷取 shell 環境。在正常退出時移除。掃描會清除任何在當機後遺留的檔案。 |

1522| `backups/` | 在設定遷移前取得的 `~/.claude.json` 的時間戳記副本 |121| `backups/` | 在設定遷移前取得的 `~/.claude.json` 的時間戳記副本 |

1523| `feedback-bundles/` | 由 `/feedback` 在第三方提供者上寫入的已編輯文字記錄存檔,用於傳送到您的 Anthropic 帳戶團隊 |122| `feedback-bundles/` | 由 `/feedback` 在第三方提供者上寫入的已編輯文字記錄存檔,用於傳送到您的 Anthropic 帳戶團隊 |

123| `todos/`、`statsig/`、`logs/` | 舊版本的舊版目錄。不再寫入。掃描會移除其內容,然後移除空目錄。 |

1524 124 

1525### 保留直到您刪除它們125<h3 id="kept-until-you-delete-them">

126 保留直到您刪除它們

127</h3>

1526 128 

1527以下路徑不受自動清理覆蓋,並無限期保留。129以下路徑不受自動清理覆蓋,並無限期保留。

1528 130 


1531| `history.jsonl` | 您輸入的每個提示,帶有時間戳記和專案路徑。用於向上箭頭回憶。 |133| `history.jsonl` | 您輸入的每個提示,帶有時間戳記和專案路徑。用於向上箭頭回憶。 |

1532| `stats-cache.json` | 由 `/usage` 顯示的彙總權杖和成本計數 |134| `stats-cache.json` | 由 `/usage` 顯示的彙總權杖和成本計數 |

1533| `remote-settings.json` | 您組織的[伺服器管理設定](/zh-TW/server-managed-settings)的快取副本。僅在您的組織已設定時出現。在每次啟動時重新整理。 |135| `remote-settings.json` | 您組織的[伺服器管理設定](/zh-TW/server-managed-settings)的快取副本。僅在您的組織已設定時出現。在每次啟動時重新整理。 |

1534| `todos/` | 舊版每個工作階段的任務清單。不再由目前版本寫入;可安全刪除。 |

1535 136 

1536其他小型快取和鎖定檔案會根據您使用的功能而出現,可安全刪除。137其他小型快取和鎖定檔案會根據您使用的功能而出現,可安全刪除。

1537 138 

1538### 純文字儲存139<h3 id="plaintext-storage">

140 純文字儲存

141</h3>

1539 142 

1540文字記錄和歷史記錄在靜止時未加密。作業系統檔案權限是唯一的保護。如果工具讀取 `.env` 檔案或命令列印認證,該值會寫入 `projects/<project>/<session>.jsonl`。若要減少暴露:143文字記錄和歷史記錄在靜止時未加密。作業系統檔案權限是唯一的保護。如果工具讀取 `.env` 檔案或命令列印認證,該值會寫入 `projects/<project>/<session>.jsonl`。若要減少暴露:

1541 144 


1543* 設定 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars) 環境變數以跳過在任何模式中寫入文字記錄和提示歷史記錄。在非互動模式中,您可以改為在 `-p` 旁邊傳遞 `--no-session-persistence`,或在 Agent SDK 中設定 `persistSession: false`。146* 設定 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars) 環境變數以跳過在任何模式中寫入文字記錄和提示歷史記錄。在非互動模式中,您可以改為在 `-p` 旁邊傳遞 `--no-session-persistence`,或在 Agent SDK 中設定 `persistSession: false`。

1544* 使用[權限規則](/zh-TW/permissions)拒絕讀取認證檔案147* 使用[權限規則](/zh-TW/permissions)拒絕讀取認證檔案

1545 148 

1546### 清除本機資料149<h3 id="clear-local-data">

150 清除本機資料

151</h3>

1547 152 

1548執行 `claude project purge` 以刪除 Claude Code 為一個專案保存的狀態:153執行 `claude project purge` 以刪除 Claude Code 為一個專案保存的狀態。該命令需要 Claude Code v2.1.124 或更新版本。它會刪除

1549 154 

1550* `projects/` 下的文字記錄和自動記憶155* `projects/` 下的文字記錄和自動記憶

1551* 每個工作階段的 `tasks/`、`debug/` 和 `file-history/` 項目156* 每個工作階段的 `tasks/`、`debug/` 和 `file-history/` 項目


1588| `~/.claude/stats-cache.json` | 由 `/usage` 顯示的歷史總計 |193| `~/.claude/stats-cache.json` | 由 `/usage` 顯示的歷史總計 |

1589| `~/.claude/remote-settings.json` | 無。在下次啟動時重新擷取。 |194| `~/.claude/remote-settings.json` | 無。在下次啟動時重新擷取。 |

1590| `~/.claude/debug/`、`~/.claude/plans/`、`~/.claude/paste-cache/`、`~/.claude/image-cache/`、`~/.claude/session-env/`、`~/.claude/tasks/`、`~/.claude/shell-snapshots/`、`~/.claude/backups/` | 沒有面向使用者的內容 |195| `~/.claude/debug/`、`~/.claude/plans/`、`~/.claude/paste-cache/`、`~/.claude/image-cache/`、`~/.claude/session-env/`、`~/.claude/tasks/`、`~/.claude/shell-snapshots/`、`~/.claude/backups/` | 沒有面向使用者的內容 |

1591| `~/.claude/todos/` | 無。舊版目錄不由目前版本寫入。 |196| `~/.claude/todos/`、`~/.claude/statsig/`、`~/.claude/logs/` | 無。舊版目錄不由目前版本寫入。 |

1592 197 

1593不要刪除 `~/.claude.json`、`~/.claude/settings.json` 或 `~/.claude/plugins/`:這些保存您的驗證、偏好設定和已安裝的 plugins。198不要刪除 `~/.claude.json`、`~/.claude/settings.json` 或 `~/.claude/plugins/`:這些保存您的驗證、偏好設定和已安裝的 plugins。

1594 199 

1595## 相關資源200<h2 id="related-resources">

201 相關資源

202</h2>

1596 203 

1597* [管理 Claude 的記憶](/zh-TW/memory):寫入和組織 CLAUDE.md、rules 和自動記憶204* [管理 Claude 的記憶](/zh-TW/memory):寫入和組織 CLAUDE.md、rules 和自動記憶

1598* [設定設定](/zh-TW/settings):設定權限、hooks、環境變數和模型預設值205* [設定設定](/zh-TW/settings):設定權限、hooks、環境變數和模型預設值

Details

6 6 

7> 設定 Claude Code 以使用 Anthropic 營運的 Claude API,搭配 AWS 驗證、IAM 存取控制和 AWS Marketplace 計費。7> 設定 Claude Code 以使用 Anthropic 營運的 Claude API,搭配 AWS 驗證、IAM 存取控制和 AWS Marketplace 計費。

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="claude_platform_on_aws" />} />

190 

191AWS 上的 Claude Platform 是 Anthropic 營運的 Claude API,具有 AWS 驗證、IAM 存取控制和 AWS Marketplace 計費。請求直接到達 Anthropic 的 API,因此您可以獲得與 [Claude API](https://platform.claude.com/docs) 相同的模型和功能,並遵循相同的發佈時程表。您使用 AWS 認證或工作區 API 金鑰進行驗證,並透過 AWS Marketplace 付款。9AWS 上的 Claude Platform 是 Anthropic 營運的 Claude API,具有 AWS 驗證、IAM 存取控制和 AWS Marketplace 計費。請求直接到達 Anthropic 的 API,因此您可以獲得與 [Claude API](https://platform.claude.com/docs) 相同的模型和功能,並遵循相同的發佈時程表。您使用 AWS 認證或工作區 API 金鑰進行驗證,並透過 AWS Marketplace 付款。

192 10 

193使用本指南將 Claude Code 指向您已透過 AWS 上的 Claude Platform 佈建的工作區。有關在此之前的 AWS 訂閱和工作區設定,請參閱 [AWS 上的 Claude Platform 文件](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws)。11使用本指南將 Claude Code 指向您已透過 AWS 上的 Claude Platform 佈建的工作區。有關在此之前的 AWS 訂閱和工作區設定,請參閱 [AWS 上的 Claude Platform 文件](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws)。


196 透過 AWS Marketplace 訂閱會佈建一個與您的 AWS 帳戶相關聯的新 Anthropic 組織。此組織與您已有的任何 Anthropic 組織分開,認證不會在它們之間轉移。使用來自 AWS 連結組織的工作區 ID 和 API 金鑰,而不是來自預先存在的 Claude Console 帳戶。14 透過 AWS Marketplace 訂閱會佈建一個與您的 AWS 帳戶相關聯的新 Anthropic 組織。此組織與您已有的任何 Anthropic 組織分開,認證不會在它們之間轉移。使用來自 AWS 連結組織的工作區 ID 和 API 金鑰,而不是來自預先存在的 Claude Console 帳戶。

197</Note>15</Note>

198 16 

199## 先決條件17<h2 id="prerequisites">

18 先決條件

19</h2>

200 20 

201在設定 Claude Code 之前,您需要:21在設定 Claude Code 之前,您需要:

202 22 


205* 具有叫用 Anthropic 服務權限的 IAM 主體,或限定於工作區的 API 金鑰25* 具有叫用 Anthropic 服務權限的 IAM 主體,或限定於工作區的 API 金鑰

206* 您環境中的 AWS 認證、`~/.aws/credentials` 中的認證,或來自附加 IAM 角色的認證(如果您想要 SigV4 驗證)。AWS CLI 僅在 SSO 登入流程中需要。26* 您環境中的 AWS 認證、`~/.aws/credentials` 中的認證,或來自附加 IAM 角色的認證(如果您想要 SigV4 驗證)。AWS CLI 僅在 SSO 登入流程中需要。

207 27 

208## 設定28<h2 id="setup">

29 設定

30</h2>

209 31 

210### 1. 設定 AWS 認證32<h3 id="1-configure-aws-credentials">

33 1. 設定 AWS 認證

34</h3>

211 35 

212Claude Code 支援 AWS 上的 Claude Platform 的兩種驗證方法。選擇適合您的團隊如何管理存取的方法。36Claude Code 支援 AWS 上的 Claude Platform 的兩種驗證方法。選擇適合您的團隊如何管理存取的方法。

213 37 


248 `/login` 和 `/logout` 命令不會變更 AWS 上的 Claude Platform 驗證。驗證透過您的 AWS 認證或工作區 API 金鑰執行,而不是透過 Claude.ai 訂閱。72 `/login` 和 `/logout` 命令不會變更 AWS 上的 Claude Platform 驗證。驗證透過您的 AWS 認證或工作區 API 金鑰執行,而不是透過 Claude.ai 訂閱。

249</Note>73</Note>

250 74 

251### 2. 設定 Claude Code75<h3 id="2-configure-claude-code">

76 2. 設定 Claude Code

77</h3>

252 78 

253設定環境變數,將 Claude Code 路由透過 AWS 上的 Claude Platform,而不是預設的 Anthropic API。79設定環境變數,將 Claude Code 路由透過 AWS 上的 Claude Platform,而不是預設的 Anthropic API。

254 80 


262 88 

263即使您的環境中存在 AWS 認證,AWS 上的 Claude Platform 也是選擇加入的。Bedrock 和 Foundry 在提供者路由中優先,因此如果設定了 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_FOUNDRY`,請取消設定它們。89即使您的環境中存在 AWS 認證,AWS 上的 Claude Platform 也是選擇加入的。Bedrock 和 Foundry 在提供者路由中優先,因此如果設定了 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_FOUNDRY`,請取消設定它們。

264 90 

265### 3. 固定模型版本91<h3 id="3-pin-model-versions">

92 3. 固定模型版本

93</h3>

266 94 

267AWS 上的 Claude Platform 使用與直接 Claude API 相同的模型 ID。預設別名 `opus`、`sonnet` 和 `haiku` 解析為您工作區中可用的最新版本。95AWS 上的 Claude Platform 使用與直接 Claude API 相同的模型 ID。預設別名 `opus`、`sonnet` 和 `haiku` 解析為您工作區中可用的最新版本。

268 96 


276 104 

277有關模型 ID 和別名的完整清單,請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)。有關其他模型相關變數,請參閱[模型設定](/zh-TW/model-config)。105有關模型 ID 和別名的完整清單,請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)。有關其他模型相關變數,請參閱[模型設定](/zh-TW/model-config)。

278 106 

279[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 會自動啟用。1 小時快取寫入的計費率高於 5 分鐘寫入。若要要求 1 小時快取 TTL 而不是 5 分鐘預設值,請設定 `ENABLE_PROMPT_CACHING_1H=1`。107[Prompt caching](/zh-TW/prompt-caching) 會自動啟用。若要要求 1 小時快取 TTL 而不是 5 分鐘預設值,請設定 `ENABLE_PROMPT_CACHING_1H=1`。API 以更高的費率計費 1 小時快取寫入。有關費率,請參閱 [prompt caching 定價](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing)。

280 108 

281## 使用 Agent SDK109<h2 id="use-the-agent-sdk">

110 使用 Agent SDK

111</h2>

282 112 

283[Agent SDK](/zh-TW/agent-sdk/overview) 讀取與 CLI 相同的環境變數,因此任何產生 Claude Code 子程序的程式都可以透過在呼叫前匯出 `CLAUDE_CODE_USE_ANTHROPIC_AWS`、`ANTHROPIC_AWS_WORKSPACE_ID` 和 `ANTHROPIC_AWS_API_KEY` 或 AWS 認證來針對 AWS 上的 Claude Platform。113[Agent SDK](/zh-TW/agent-sdk/overview) 讀取與 CLI 相同的環境變數,因此任何產生 Claude Code 子程序的程式都可以透過在呼叫前匯出 `CLAUDE_CODE_USE_ANTHROPIC_AWS`、`ANTHROPIC_AWS_WORKSPACE_ID` 和 `ANTHROPIC_AWS_API_KEY` 或 AWS 認證來針對 AWS 上的 Claude Platform。

284 114 


296 126 

297此範例依賴環境 AWS 認證鏈進行 SigV4。若要改用工作區 API 金鑰進行驗證,請以相同方式設定 `ANTHROPIC_AWS_API_KEY`。有關更廣泛的 Agent SDK 表面,請參閱 [Agent SDK 概述](/zh-TW/agent-sdk/overview)。127此範例依賴環境 AWS 認證鏈進行 SigV4。若要改用工作區 API 金鑰進行驗證,請以相同方式設定 `ANTHROPIC_AWS_API_KEY`。有關更廣泛的 Agent SDK 表面,請參閱 [Agent SDK 概述](/zh-TW/agent-sdk/overview)。

298 128 

299## 透過公司代理路由129<h2 id="route-through-a-corporate-proxy">

130 透過公司代理路由

131</h2>

300 132 

301若要透過代理或 [LLM gateway](/zh-TW/llm-gateway) 路由流量,請將 `ANTHROPIC_AWS_BASE_URL` 設定為代理的位址。Claude Code 將請求傳送至該 URL,並使用相同的工作區和驗證標頭,因此任何轉發它們不變的閘道都有效。133若要透過代理或 [LLM gateway](/zh-TW/llm-gateway) 路由流量,請將 `ANTHROPIC_AWS_BASE_URL` 設定為代理的位址。Claude Code 將請求傳送至該 URL,並使用相同的工作區和驗證標頭,因此任何轉發它們不變的閘道都有效。

302 134 


315export ANTHROPIC_AWS_BASE_URL=https://anthropic-proxy.example.com147export ANTHROPIC_AWS_BASE_URL=https://anthropic-proxy.example.com

316```148```

317 149 

318## Troubleshooting150<h2 id="troubleshooting">

151 Troubleshooting

152</h2>

319 153 

320執行 `/status` 以查看已解析的提供者和任何明確設定的工作區 ID、區域、基礎 URL 覆寫和驗證跳過設定。這是確認 Claude Code 是否完全針對 AWS 上的 Claude Platform 的最快方式。154執行 `/status` 以查看已解析的提供者和任何明確設定的工作區 ID、區域、基礎 URL 覆寫和驗證跳過設定。這是確認 Claude Code 是否完全針對 AWS 上的 Claude Platform 的最快方式。

321 155 

322### 每個請求上都出現 `403 Forbidden` 或 `AccessDenied`156<h3 id="403-forbidden-or-accessdenied-on-every-request">

157 每個請求上都出現 `403 Forbidden` 或 `AccessDenied`

158</h3>

323 159 

324Claude Code 解析的 IAM 主體可能缺少在您的工作區中叫用 Anthropic 服務的權限。檢查附加到您的 AWS 設定檔或啟動 Claude Code 的執行器的角色,並驗證它具有 [IAM 動作參考](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions)中記錄的 `aws-external-anthropic` 動作。160Claude Code 解析的 IAM 主體可能缺少在您的工作區中叫用 Anthropic 服務的權限。檢查附加到您的 AWS 設定檔或啟動 Claude Code 的執行器的角色,並驗證它具有 [IAM 動作參考](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions)中記錄的 `aws-external-anthropic` 動作。

325 161 

326如果您設定了 `ANTHROPIC_AWS_API_KEY`,金鑰優先於 SigV4,過期的金鑰會產生相同的錯誤。在 AWS Console 中的 **Claude Platform on AWS → API keys** 下重新產生金鑰,或取消設定變數以回退到您的 AWS 認證。162如果您設定了 `ANTHROPIC_AWS_API_KEY`,金鑰優先於 SigV4,過期的金鑰會產生相同的錯誤。在 AWS Console 中的 **Claude Platform on AWS → API keys** 下重新產生金鑰,或取消設定變數以回退到您的 AWS 認證。

327 163 

328### 請求失敗,出現遺失工作區錯誤164<h3 id="requests-fail-with-a-missing-workspace-error">

165 請求失敗,出現遺失工作區錯誤

166</h3>

329 167 

330`ANTHROPIC_AWS_WORKSPACE_ID` 可能未設定或為空。每個 AWS 上的 Claude Platform 請求都必須包含工作區 ID。它不是由您的 AWS 認證隱含的。在 AWS Console 服務頁面上的 **Workspaces** 下找到 ID,並在啟動 Claude Code 之前匯出它。168`ANTHROPIC_AWS_WORKSPACE_ID` 可能未設定或為空。每個 AWS 上的 Claude Platform 請求都必須包含工作區 ID。它不是由您的 AWS 認證隱含的。在 AWS Console 服務頁面上的 **Workspaces** 下找到 ID,並在啟動 Claude Code 之前匯出它。

331 169 

332### 請求仍然轉到 `api.anthropic.com`170<h3 id="requests-still-go-to-api-anthropic-com">

171 請求仍然轉到 `api.anthropic.com`

172</h3>

333 173 

334`CLAUDE_CODE_USE_ANTHROPIC_AWS` 可能未設定或設定為不解析為真值的值。將其設定為 `1` 並執行 `/status` 以確認已解析的提供者。如果也設定了 `CLAUDE_CODE_USE_BEDROCK` 或 `CLAUDE_CODE_USE_FOUNDRY`,那些優先於 AWS 上的 Claude Platform。174`CLAUDE_CODE_USE_ANTHROPIC_AWS` 可能未設定或設定為不解析為真值的值。將其設定為 `1` 並執行 `/status` 以確認已解析的提供者。如果也設定了 `CLAUDE_CODE_USE_BEDROCK` 或 `CLAUDE_CODE_USE_FOUNDRY`,那些優先於 AWS 上的 Claude Platform。

335 175 

336## 其他資源176<h2 id="additional-resources">

177 其他資源

178</h2>

337 179 

338設定 Claude Code 之前的 AWS 上的 Claude Platform 訂閱、工作區和 IAM 設定涵蓋在平台文件中:180設定 Claude Code 之前的 AWS 上的 Claude Platform 訂閱、工作區和 IAM 設定涵蓋在平台文件中:

339 181 

cli-reference.md +27 −16

Details

6 6 

7> Claude Code 命令列介面的完整參考,包括命令和旗標。7> Claude Code 命令列介面的完整參考,包括命令和旗標。

8 8 

9## CLI 命令9<h2 id="cli-commands">

10 CLI 命令

11</h2>

10 12 

11您可以使用這些命令來啟動工作階段、管道內容、繼續對話和管理更新:13您可以使用這些命令來啟動工作階段、管道內容、繼續對話和管理更新:

12 14 

13| 命令 | 描述 | 範例 |15| 命令 | 描述 | 範例 |

14| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------- |16| :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

15| `claude` | 啟動互動式工作階段 | `claude` |17| `claude` | 啟動互動式工作階段 | `claude` |

16| `claude "query"` | 使用初始提示啟動互動式工作階段 | `claude "explain this project"` |18| `claude "query"` | 使用初始提示啟動互動式工作階段 | `claude "explain this project"` |

17| `claude -p "query"` | 透過 SDK 查詢,然後退出 | `claude -p "explain this function"` |19| `claude -p "query"` | 透過 SDK 查詢,然後退出 | `claude -p "explain this function"` |


24| `claude auth login` | 登入您的 Anthropic 帳戶。使用 `--email` 預先填入您的電子郵件地址,使用 `--sso` 強制進行 SSO 驗證,使用 `--console` 以 Anthropic Console 登入以進行 API 使用計費,而不是 Claude 訂閱 | `claude auth login --console` |26| `claude auth login` | 登入您的 Anthropic 帳戶。使用 `--email` 預先填入您的電子郵件地址,使用 `--sso` 強制進行 SSO 驗證,使用 `--console` 以 Anthropic Console 登入以進行 API 使用計費,而不是 Claude 訂閱 | `claude auth login --console` |

25| `claude auth logout` | 從您的 Anthropic 帳戶登出 | `claude auth logout` |27| `claude auth logout` | 從您的 Anthropic 帳戶登出 | `claude auth logout` |

26| `claude auth status` | 以 JSON 格式顯示驗證狀態。使用 `--text` 以人類可讀的格式輸出。如果已登入則以代碼 0 退出,如果未登入則以代碼 1 退出 | `claude auth status` |28| `claude auth status` | 以 JSON 格式顯示驗證狀態。使用 `--text` 以人類可讀的格式輸出。如果已登入則以代碼 0 退出,如果未登入則以代碼 1 退出 | `claude auth status` |

27| `claude agents` | 開啟 [agent view](/zh-TW/agent-view) 以監控和分派平行背景工作階段。使用 `--cwd <path>` 僅顯示在該目錄下啟動的工作階段。傳遞 `--permission-mode`、`--model` 或 `--effort` 以設定 [分派工作階段的預設值](/zh-TW/agent-view#permission-mode-model-and-effort)。接受 `--settings`、`--add-dir`、`--plugin-dir` 和 `--mcp-config`,如同頂層 `claude` 命令。需要互動式終端 | `claude agents --cwd ~/projects/my-app` |29| `claude agents` | 開啟 [agent view](/zh-TW/agent-view) 以監控和分派平行背景工作階段。使用 `--cwd <path>` 僅顯示在該目錄下啟動的工作階段,或使用 `--json` 將即時工作階段列印為 JSON 陣列以供指令碼使用。傳遞 `--permission-mode`、`--model`、`--effort` 或 `--agent` 以設定 [分派工作階段的預設值](/zh-TW/agent-view#permission-mode-model-and-effort)。接受 `--settings`、`--add-dir`、`--plugin-dir` 和 `--mcp-config`,如同頂層 `claude` 命令。開啟 agent view 需要互動式終端 | `claude agents --json` |

28| `claude attach <id>` | 在此終端中附加到 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell) | `claude attach 7c5dcf5d` |30| `claude attach <id>` | 在此終端中附加到 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell) | `claude attach 7c5dcf5d` |

29| `claude auto-mode defaults` | 以 JSON 格式列印內建的 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類器規則。使用 `claude auto-mode config` 查看您的有效設定及套用的設定 | `claude auto-mode defaults > rules.json` |31| `claude auto-mode defaults` | 以 JSON 格式列印內建的 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類器規則。使用 `claude auto-mode config` 查看您的有效設定及套用的設定 | `claude auto-mode defaults > rules.json` |

30| `claude daemon status` | 列印背景工作階段 [supervisor](/zh-TW/agent-view#the-supervisor-process) 的狀態、版本、socket 目錄和工作者計數以進行診斷。如果 supervisor 未執行則以代碼 1 退出 | `claude daemon status` |32| `claude daemon status` | 列印背景工作階段 [supervisor](/zh-TW/agent-view#the-supervisor-process) 的狀態、版本、socket 目錄和工作者計數以進行診斷。如果 supervisor 未執行則以代碼 1 退出 | `claude daemon status` |

33| `claude daemon stop --any` | 停止背景工作階段 [supervisor](/zh-TW/agent-view#the-supervisor-process) 及其託管的工作階段。傳遞 `--keep-workers` 以保持背景工作階段執行中,以便下一個 supervisor 重新連接到它們。`--any` 確認停止隨選 supervisor,這是預設值。使用此命令以從 [無回應的 supervisor](/zh-TW/agent-view#agent-view-says-the-background-service-did-not-respond) 復原 | `claude daemon stop --any --keep-workers` |

31| `claude logs <id>` | 從 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell) 列印最近的輸出 | `claude logs 7c5dcf5d` |34| `claude logs <id>` | 從 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell) 列印最近的輸出 | `claude logs 7c5dcf5d` |

32| `claude mcp` | 設定 Model Context Protocol (MCP) 伺服器 | 請參閱 [Claude Code MCP 文件](/zh-TW/mcp)。 |35| `claude mcp` | 設定 Model Context Protocol (MCP) 伺服器 | 請參閱 [Claude Code MCP 文件](/zh-TW/mcp)。 |

33| `claude plugin` | 管理 Claude Code [plugins](/zh-TW/plugins)。別名:`claude plugins`。請參閱 [plugin 參考](/zh-TW/plugins-reference#cli-commands-reference) 以了解子命令 | `claude plugin install code-review@claude-plugins-official` |36| `claude plugin` | 管理 Claude Code [plugins](/zh-TW/plugins)。別名:`claude plugins`。請參閱 [plugin 參考](/zh-TW/plugins-reference#cli-commands-reference) 以了解子命令 | `claude plugin install code-review@claude-plugins-official` |

34| `claude project purge [path]` | 刪除專案的所有本機 Claude Code 狀態:文字記錄、工作清單、偵錯日誌、檔案編輯歷史記錄、提示歷史記錄行和專案在 `~/.claude.json` 中的項目。省略 `[path]` 以從互動式清單中選擇。旗標:`--dry-run` 以預覽,`-y`/`--yes` 以跳過確認,`-i`/`--interactive` 以確認每個項目,`--all` 用於每個專案。請參閱 [清除本機資料](/zh-TW/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |37| `claude project purge [path]` | 刪除專案的所有本機 Claude Code 狀態:文字記錄、工作清單、偵錯日誌、檔案編輯歷史記錄、提示歷史記錄行和專案在 `~/.claude.json` 中的項目。省略 `[path]` 以從互動式清單中選擇。旗標:`--dry-run` 以預覽,`-y`/`--yes` 以跳過確認,`-i`/`--interactive` 以確認每個項目,`--all` 用於每個專案。請參閱 [清除本機資料](/zh-TW/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

35| `claude remote-control` | 啟動 [Remote Control](/zh-TW/remote-control) 伺服器以從 Claude.ai 或 Claude 應用程式控制 Claude Code。在伺服器模式下執行(無本機互動式工作階段)。請參閱 [伺服器模式旗標](/zh-TW/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |38| `claude remote-control` | 啟動 [Remote Control](/zh-TW/remote-control) 伺服器以從 Claude.ai 或 Claude 應用程式控制 Claude Code。在伺服器模式下執行(無本機互動式工作階段)。請參閱 [伺服器模式旗標](/zh-TW/remote-control#start-a-remote-control-session) | `claude remote-control --name "My Project"` |

36| `claude respawn <id>` | 重新啟動 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell)(執行中或已停止),保持其對話完整。使用 `--all` 重新啟動每個執行中的工作階段,例如以取得更新的 Claude Code 二進位檔 | `claude respawn 7c5dcf5d` |39| `claude respawn <id>` | 重新啟動 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell)(執行中或已停止),保持其對話完整。使用 `--all` 重新啟動每個執行中的工作階段,例如以取得更新的 Claude Code 二進位檔 | `claude respawn 7c5dcf5d` |

37| `claude rm <id>` | 從清單中移除 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell) | `claude rm 7c5dcf5d` |40| `claude rm <id>` | 從清單中移除 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell)。對話文字記錄保留在您的本機電腦上,可透過 `claude --resume` 取得 | `claude rm 7c5dcf5d` |

38| `claude setup-token` | 為 CI 和指令碼產生長期 OAuth 權杖。將權杖列印到終端而不儲存它。需要 Claude 訂閱。請參閱 [產生長期權杖](/zh-TW/authentication#generate-a-long-lived-token) | `claude setup-token` |41| `claude setup-token` | 為 CI 和指令碼產生長期 OAuth 權杖。將權杖列印到終端而不儲存它。需要 Claude 訂閱。請參閱 [產生長期權杖](/zh-TW/authentication#generate-a-long-lived-token) | `claude setup-token` |

39| `claude stop <id>` | 停止 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell)。也接受 `claude kill` | `claude stop 7c5dcf5d` |42| `claude stop <id>` | 停止 [background session](/zh-TW/agent-view#manage-sessions-from-the-shell)。也接受 `claude kill` | `claude stop 7c5dcf5d` |

40| `claude ultrareview [target]` | 非互動式執行 [ultrareview](/zh-TW/ultrareview#run-ultrareview-non-interactively)。將發現列印到標準輸出,成功時以代碼 0 退出,失敗時以代碼 1 退出。使用 `--json` 取得原始承載,使用 `--timeout <minutes>` 覆蓋 30 分鐘的預設值 | `claude ultrareview 1234 --json` |43| `claude ultrareview [target]` | 非互動式執行 [ultrareview](/zh-TW/ultrareview#run-ultrareview-non-interactively)。將發現列印到標準輸出,成功時以代碼 0 退出,失敗時以代碼 1 退出。使用 `--json` 取得原始承載,使用 `--timeout <minutes>` 覆蓋 30 分鐘的預設值 | `claude ultrareview 1234 --json` |

41 44 

42如果您輸入錯誤的子命令,Claude Code 會建議最接近的匹配項並退出而不啟動工作階段。例如,`claude udpate` 會列印 `Did you mean claude update?`。45如果您輸入錯誤的子命令,Claude Code 會建議最接近的匹配項並退出而不啟動工作階段。例如,`claude udpate` 會列印 `Did you mean claude update?`。

43 46 

44## CLI 旗標47<h2 id="cli-flags">

48 CLI 旗標

49</h2>

45 50 

46使用這些命令列旗標自訂 Claude Code 的行為。`claude --help` 不會列出每個旗標,因此旗標在 `--help` 中的缺失並不表示它無法使用。51使用這些命令列旗標自訂 Claude Code 的行為。`claude --help` 不會列出每個旗標,因此旗標在 `--help` 中的缺失並不表示它無法使用。

47 52 

48| 旗標 | 描述 | 範例 |53| 旗標 | 描述 | 範例 |

49| :---------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |54| :---------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |

50| `--add-dir` | 新增額外的工作目錄供 Claude 讀取和編輯檔案。授予檔案存取權;大多數 `.claude/` 設定 [未從這些目錄探索](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)。驗證每個路徑是否存在為目錄。若要在工作階段之間持久化這些目錄,請在設定中設定 [`permissions.additionalDirectories`](/zh-TW/settings#permission-settings) | `claude --add-dir ../apps ../lib` |55| `--add-dir` | 新增額外的工作目錄供 Claude 讀取和編輯檔案。授予檔案存取權;大多數 `.claude/` 設定 [未從這些目錄探索](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)。驗證每個路徑是否存在為目錄。若要在工作階段之間持久化這些目錄,請在設定中設定 [`permissions.additionalDirectories`](/zh-TW/settings#permission-settings) | `claude --add-dir ../apps ../lib` |

51| `--agent` | 為目前工作階段指定代理程式(覆蓋 `agent` 設定) | `claude --agent my-custom-agent` |56| `--agent` | 為目前工作階段指定代理程式(覆蓋 `agent` 設定) | `claude --agent my-custom-agent` |

52| `--agents` | 透過 JSON 動態定義自訂 subagents。使用與 subagent [frontmatter](/zh-TW/sub-agents#supported-frontmatter-fields) 相同的欄位名稱,加上代理程式指示的 `prompt` 欄位 | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |57| `--agents` | 透過 JSON 動態定義自訂 subagents。使用與 subagent [frontmatter](/zh-TW/sub-agents#supported-frontmatter-fields) 相同的欄位名稱,加上代理程式指示的 `prompt` 欄位 | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |


56| `--append-system-prompt-file` | 從檔案載入額外的系統提示文字並附加到預設提示 | `claude --append-system-prompt-file ./extra-rules.txt` |61| `--append-system-prompt-file` | 從檔案載入額外的系統提示文字並附加到預設提示 | `claude --append-system-prompt-file ./extra-rules.txt` |

57| `--bare` | 最小模式:跳過 hooks、skills、plugins、MCP 伺服器、自動記憶體和 CLAUDE.md 的自動探索,以便指令碼呼叫啟動更快。Claude 可以存取 Bash、檔案讀取和檔案編輯工具。設定 [`CLAUDE_CODE_SIMPLE`](/zh-TW/env-vars)。請參閱 [bare mode](/zh-TW/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |62| `--bare` | 最小模式:跳過 hooks、skills、plugins、MCP 伺服器、自動記憶體和 CLAUDE.md 的自動探索,以便指令碼呼叫啟動更快。Claude 可以存取 Bash、檔案讀取和檔案編輯工具。設定 [`CLAUDE_CODE_SIMPLE`](/zh-TW/env-vars)。請參閱 [bare mode](/zh-TW/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

58| `--betas` | 要包含在 API 請求中的 Beta 標頭(僅限 API 金鑰使用者) | `claude --betas interleaved-thinking` |63| `--betas` | 要包含在 API 請求中的 Beta 標頭(僅限 API 金鑰使用者) | `claude --betas interleaved-thinking` |

59| `--bg` | 以 [background agent](/zh-TW/agent-view) 身份啟動工作階段並立即返回。列印工作階段 ID 和管理命令。與 `--agent` 結合以執行特定 subagent | `claude --bg "investigate the flaky test"` |64| `--bg` | 以 [background agent](/zh-TW/agent-view) 身份啟動工作階段並立即返回。列印工作階段 ID 和管理命令。與 `--exec` 結合以執行 shell 命令作為背景工作而不是 Claude 工作階段,或與 `--agent` 結合以執行特定 subagent | `claude --bg "investigate the flaky test"` |

60| `--channels` | (研究預覽)MCP 伺服器,其 [channel](/zh-TW/channels) 通知 Claude 應在此工作階段中監聽。以空格分隔的 `plugin:<name>@<marketplace>` 項目清單。需要 Claude.ai 驗證 | `claude --channels plugin:my-notifier@my-marketplace` |65| `--channels` | (研究預覽)MCP 伺服器,其 [channel](/zh-TW/channels) 通知 Claude 應在此工作階段中監聽。以空格分隔的 `plugin:<name>@<marketplace>` 項目清單。需要 Claude.ai 驗證 | `claude --channels plugin:my-notifier@my-marketplace` |

61| `--chrome` | 啟用 [Chrome 瀏覽器整合](/zh-TW/chrome) 以進行網頁自動化和測試 | `claude --chrome` |66| `--chrome` | 啟用 [Chrome 瀏覽器整合](/zh-TW/chrome) 以進行網頁自動化和測試 | `claude --chrome` |

62| `--continue`, `-c` | 載入目前目錄中最近的對話。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --continue` |67| `--continue`, `-c` | 載入目前目錄中最近的對話。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --continue` |


65| `--debug` | 啟用偵錯模式,可選類別篩選(例如,`"api,hooks"` 或 `"!statsig,!file"`) | `claude --debug "api,mcp"` |70| `--debug` | 啟用偵錯模式,可選類別篩選(例如,`"api,hooks"` 或 `"!statsig,!file"`) | `claude --debug "api,mcp"` |

66| `--debug-file <path>` | 將偵錯日誌寫入特定檔案路徑。隱含啟用偵錯模式。優先於 `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |71| `--debug-file <path>` | 將偵錯日誌寫入特定檔案路徑。隱含啟用偵錯模式。優先於 `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

67| `--disable-slash-commands` | 為此工作階段停用所有 skills 和命令 | `claude --disable-slash-commands` |72| `--disable-slash-commands` | 為此工作階段停用所有 skills 和命令 | `claude --disable-slash-commands` |

68| `--disallowedTools` | 從模型的內容中移除且無法使用的工具 | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |73| `--disallowedTools` | 拒絕規則。裸工具名稱會從模型的內容中移除該工具。範圍規則(例如 `Bash(rm *)` )會保留工具可用,但只拒絕符合的呼叫 | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

69| `--effort` | 為目前工作階段設定 [effort level](/zh-TW/model-config#adjust-effort-level)。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用的層級取決於模型。覆蓋此工作階段的 [`effortLevel`](/zh-TW/settings#available-settings) 設定,且不會持久化 | `claude --effort high` |74| `--effort` | 為目前工作階段設定 [effort level](/zh-TW/model-config#adjust-effort-level)。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用的層級取決於模型。覆蓋此工作階段的 [`effortLevel`](/zh-TW/settings#available-settings) 設定,且不會持久化 | `claude --effort high` |

70| `--enable-auto-mode` | {/* max-version: 2.1.110 */}在 v2.1.111 中移除。Auto mode 現在預設在 `Shift+Tab` 循環中;使用 `--permission-mode auto` 以它開始 | `claude --permission-mode auto` |75| `--enable-auto-mode` | {/* max-version: 2.1.110 */}在 v2.1.111 中移除。Auto mode 現在預設在 `Shift+Tab` 循環中;使用 `--permission-mode auto` 以它開始 | `claude --permission-mode auto` |

71| `--exclude-dynamic-system-prompt-sections` | 將每台機器的系統提示部分(工作目錄、環境資訊、記憶體路徑、git 狀態)移至第一個使用者訊息。改善在執行相同工作的不同使用者和機器之間的提示快取重複使用。僅適用於預設系統提示;設定 `--system-prompt` 或 `--system-prompt-file` 時忽略。與 `-p` 搭配使用以進行指令碼化、多使用者工作負載 | `claude -p --exclude-dynamic-system-prompt-sections "query"` |76| `--exclude-dynamic-system-prompt-sections` | 將每台機器的系統提示部分(工作目錄、環境資訊、記憶體路徑、git 狀態旗標)移至第一個使用者訊息。改善在執行相同工作的不同使用者和機器之間的提示快取重複使用。僅適用於預設系統提示;設定 `--system-prompt` 或 `--system-prompt-file` 時忽略。與 `-p` 搭配使用以進行指令碼化、多使用者工作負載 | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

72| `--fallback-model` | 當預設模型過載時啟用自動回退到指定的模型在列印模式(`-p`)和 [background sessions](/zh-TW/agent-view) 中生效,這些工作階段以非互動方式執行;在互動式工作階段中忽略 | `claude -p --fallback-model sonnet "query"` |77| `--exec` | 執行 shell 命令作為 PTY 支援的背景工作而不是啟動 Claude 工作階段`--bg` 搭配使用以從 shell 啟動 | `claude --bg --exec 'pytest -x'` |

78| `--fallback-model` | 當預設模型過載或無法使用時啟用自動回退到指定的模型,例如已淘汰的模型。在列印模式(`-p`)和 [background sessions](/zh-TW/agent-view) 中生效,這些工作階段以非互動方式執行;在互動式工作階段中忽略 | `claude -p --fallback-model sonnet "query"` |

73| `--fork-session` | 繼續時,建立新的工作階段 ID 而不是重複使用原始 ID(與 `--resume` 或 `--continue` 搭配使用) | `claude --resume abc123 --fork-session` |79| `--fork-session` | 繼續時,建立新的工作階段 ID 而不是重複使用原始 ID(與 `--resume` 或 `--continue` 搭配使用) | `claude --resume abc123 --fork-session` |

74| `--from-pr` | 繼續連結到特定提取請求的工作階段。接受 PR 編號、GitHub 或 GitHub Enterprise PR URL、GitLab 合併請求 URL 或 Bitbucket 提取請求 URL。當 Claude 建立提取請求時,工作階段會自動連結 | `claude --from-pr 123` |80| `--from-pr` | 繼續連結到特定提取請求的工作階段。接受 PR 編號、GitHub 或 GitHub Enterprise PR URL、GitLab 合併請求 URL 或 Bitbucket 提取請求 URL。當 Claude 建立提取請求時,工作階段會自動連結 | `claude --from-pr 123` |

75| `--ide` | 如果恰好有一個有效的 IDE 可用,在啟動時自動連線到 IDE | `claude --ide` |81| `--ide` | 如果恰好有一個有效的 IDE 可用,在啟動時自動連線到 IDE | `claude --ide` |

76| `--init` | 在工作階段前執行 [Setup hooks](/zh-TW/hooks#setup),使用 `init` 匹配器(僅列印模式) | `claude -p --init "query"` |82| `--init` | 在工作階段前執行 [Setup hooks](/zh-TW/hooks#setup),使用 `init` 匹配器(僅列印模式) | `claude -p --init "query"` |

77| `--init-only` | 執行 [Setup](/zh-TW/hooks#setup) 和 `SessionStart` hooks,然後退出而不啟動對話 | `claude --init-only` |83| `--init-only` | 執行 [Setup](/zh-TW/hooks#setup) 和 `SessionStart` hooks,然後退出而不啟動對話 | `claude --init-only` |

78| `--include-hook-events` | 在輸出串流中包含所有 hook 生命週期事件。需要 `--output-format stream-json` | `claude -p --output-format stream-json --include-hook-events "query"` |84| `--include-hook-events` | 在輸出串流中包含所有 hook 生命週期事件。需要 `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-hook-events "query"` |

79| `--include-partial-messages` | 在輸出中包含部分串流事件。需要 `--print` 和 `--output-format stream-json` | `claude -p --output-format stream-json --include-partial-messages "query"` |85| `--include-partial-messages` | 在輸出中包含部分串流事件。需要 `--print` 和 `--output-format stream-json` | `claude -p --output-format stream-json --verbose --include-partial-messages "query"` |

80| `--input-format` | 為列印模式指定輸入格式(選項:`text`、`stream-json`) | `claude -p --output-format json --input-format stream-json` |86| `--input-format` | 為列印模式指定輸入格式(選項:`text`、`stream-json`) | `claude -p --output-format json --input-format stream-json` |

81| `--json-schema` | 在代理程式完成其工作流程後取得符合 JSON Schema 的驗證 JSON 輸出(僅列印模式,請參閱 [structured outputs](/zh-TW/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |87| `--json-schema` | 在代理程式完成其工作流程後取得符合 JSON Schema 的驗證 JSON 輸出(僅列印模式,請參閱 [structured outputs](/zh-TW/agent-sdk/structured-outputs)) | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

82| `--maintenance` | 在工作階段前執行 [Setup hooks](/zh-TW/hooks#setup),使用 `maintenance` 匹配器(僅列印模式) | `claude -p --maintenance "query"` |88| `--maintenance` | 在工作階段前執行 [Setup hooks](/zh-TW/hooks#setup),使用 `maintenance` 匹配器(僅列印模式) | `claude -p --maintenance "query"` |


93| `--plugin-dir` | 為此工作階段僅從目錄或 `.zip` 封存載入 plugin。每個旗標採用一個路徑。重複旗標以使用多個 plugins:`--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |99| `--plugin-dir` | 為此工作階段僅從目錄或 `.zip` 封存載入 plugin。每個旗標採用一個路徑。重複旗標以使用多個 plugins:`--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |

94| `--plugin-url` | 為此工作階段僅從 URL 擷取 plugin `.zip` 封存。重複旗標以使用多個 plugins,或在單一引用值中傳遞以空格分隔的 URL | `claude --plugin-url https://example.com/plugin.zip` |100| `--plugin-url` | 為此工作階段僅從 URL 擷取 plugin `.zip` 封存。重複旗標以使用多個 plugins,或在單一引用值中傳遞以空格分隔的 URL | `claude --plugin-url https://example.com/plugin.zip` |

95| `--print`, `-p` | 列印回應而不進入互動模式(請參閱 [Agent SDK 文件](/zh-TW/agent-sdk/overview) 以了解程式化使用詳細資訊) | `claude -p "query"` |101| `--print`, `-p` | 列印回應而不進入互動模式(請參閱 [Agent SDK 文件](/zh-TW/agent-sdk/overview) 以了解程式化使用詳細資訊) | `claude -p "query"` |

102| `--prompt-suggestions` | 在每個轉數後發出 `prompt_suggestion` 訊息,其中包含預測的下一個使用者提示。需要 `--print`、`--output-format stream-json` 和 `--verbose`。請參閱 [Prompt suggestions](/zh-TW/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |

96| `--remote` | 在 claude.ai 上建立新的 [web session](/zh-TW/claude-code-on-the-web),並提供工作描述 | `claude --remote "Fix the login bug"` |103| `--remote` | 在 claude.ai 上建立新的 [web session](/zh-TW/claude-code-on-the-web),並提供工作描述 | `claude --remote "Fix the login bug"` |

97| `--remote-control`, `--rc` | 啟動互動式工作階段,並啟用 [Remote Control](/zh-TW/remote-control#start-a-remote-control-session),以便您也可以從 claude.ai 或 Claude 應用程式控制它。可選擇傳遞工作階段的名稱 | `claude --remote-control "My Project"` |104| `--remote-control`, `--rc` | 啟動互動式工作階段,並啟用 [Remote Control](/zh-TW/remote-control#start-a-remote-control-session),以便您也可以從 claude.ai 或 Claude 應用程式控制它。可選擇傳遞工作階段的名稱 | `claude --remote-control "My Project"` |

98| `--remote-control-session-name-prefix <prefix>` | [Remote Control](/zh-TW/remote-control) 工作階段名稱的前綴,當未設定明確名稱時自動產生。預設為您的機器主機名稱,產生如 `myhost-graceful-unicorn` 的名稱。設定 `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` 以獲得相同效果 | `claude remote-control --remote-control-session-name-prefix dev-box` |105| `--remote-control-session-name-prefix <prefix>` | [Remote Control](/zh-TW/remote-control) 工作階段名稱的前綴,當未設定明確名稱時自動產生。預設為您的機器主機名稱,產生如 `myhost-graceful-unicorn` 的名稱。設定 `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` 以獲得相同效果 | `claude remote-control --remote-control-session-name-prefix dev-box` |

99| `--replay-user-messages` | 從 stdin 重新發出使用者訊息回到 stdout 以進行確認。需要 `--input-format stream-json` 和 `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --replay-user-messages` |106| `--replay-user-messages` | 從 stdin 重新發出使用者訊息回到 stdout 以進行確認。需要 `--input-format stream-json` 和 `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |

100| `--resume`, `-r` | 按 ID 或名稱繼續特定工作階段,或顯示互動式選擇器以選擇工作階段。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --resume auth-refactor` |107| `--resume`, `-r` | 按 ID 或名稱繼續特定工作階段,或顯示互動式選擇器以選擇工作階段。包括使用 `/add-dir` 新增此目錄的工作階段。自 v2.1.144 起,[background sessions](/zh-TW/agent-view) 在選擇器中出現,標記為 `bg` | `claude --resume auth-refactor` |

101| `--session-id` | 為對話使用特定的工作階段 ID(必須是有效的 UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |108| `--session-id` | 為對話使用特定的工作階段 ID(必須是有效的 UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

102| `--setting-sources` | 要載入的設定來源的逗號分隔清單(`user`、`project`、`local`) | `claude --setting-sources user,project` |109| `--setting-sources` | 要載入的設定來源的逗號分隔清單(`user`、`project`、`local`) | `claude --setting-sources user,project` |

103| `--settings` | 設定 JSON 檔案的路徑或內嵌 JSON 字串。您在此設定的值會覆蓋此工作階段中 `settings.json` 檔案中的相同金鑰。您省略的金鑰保留其檔案型值。請參閱 [settings precedence](/zh-TW/settings#settings-precedence) | `claude --settings ./settings.json` |110| `--settings` | 設定 JSON 檔案的路徑或內嵌 JSON 字串。您在此設定的值會覆蓋此工作階段中 `settings.json` 檔案中的相同金鑰。您省略的金鑰保留其檔案型值。請參閱 [settings precedence](/zh-TW/settings#settings-precedence) | `claude --settings ./settings.json` |


112| `--version`, `-v` | 輸出版本號 | `claude -v` |119| `--version`, `-v` | 輸出版本號 | `claude -v` |

113| `--worktree`, `-w` | 在隔離的 [git worktree](/zh-TW/worktrees) 中啟動 Claude,位於 `<repo>/.claude/worktrees/<name>`。如果未提供名稱,則會自動產生一個。傳遞 `#<number>` 或 GitHub 提取請求 URL 以從 `origin` 擷取該 PR 並從它分支 worktree | `claude -w feature-auth` |120| `--worktree`, `-w` | 在隔離的 [git worktree](/zh-TW/worktrees) 中啟動 Claude,位於 `<repo>/.claude/worktrees/<name>`。如果未提供名稱,則會自動產生一個。傳遞 `#<number>` 或 GitHub 提取請求 URL 以從 `origin` 擷取該 PR 並從它分支 worktree | `claude -w feature-auth` |

114 121 

115### 系統提示旗標122<h3 id="system-prompt-flags">

123 系統提示旗標

124</h3>

116 125 

117Claude Code 提供四個旗標用於自訂系統提示。所有四個都在互動和非互動模式中運作。126Claude Code 提供四個旗標用於自訂系統提示。所有四個都在互動和非互動模式中運作。

118 127 


129 138 

130這些旗標僅適用於目前的呼叫。對於您可以在專案中切換和共享的持久人物,請使用 [output styles](/zh-TW/output-styles)。對於 Claude 應始終遵循的專案慣例,請使用 [CLAUDE.md](/zh-TW/memory)。[Agent SDK 系統提示指南](/zh-TW/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) 涵蓋了更深入的相同決策。139這些旗標僅適用於目前的呼叫。對於您可以在專案中切換和共享的持久人物,請使用 [output styles](/zh-TW/output-styles)。對於 Claude 應始終遵循的專案慣例,請使用 [CLAUDE.md](/zh-TW/memory)。[Agent SDK 系統提示指南](/zh-TW/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) 涵蓋了更深入的相同決策。

131 140 

132## 另請參閱141<h2 id="see-also">

142 另請參閱

143</h2>

133 144 

134* [Chrome 擴充功能](/zh-TW/chrome) - 瀏覽器自動化和網頁測試145* [Chrome 擴充功能](/zh-TW/chrome) - 瀏覽器自動化和網頁測試

135* [互動模式](/zh-TW/interactive-mode) - 快捷鍵、輸入模式和互動功能146* [互動模式](/zh-TW/interactive-mode) - 快捷鍵、輸入模式和互動功能

code-review.md +16 −1

Details

24* [自訂審查](#customize-reviews),使用 `CLAUDE.md` 和 `REVIEW.md`24* [自訂審查](#customize-reviews),使用 `CLAUDE.md` 和 `REVIEW.md`

25* [定價](#pricing)25* [定價](#pricing)

26* [故障排除](#troubleshooting)失敗的運行和缺失的評論26* [故障排除](#troubleshooting)失敗的運行和缺失的評論

27* [在本地審查差異](#review-a-diff-locally),使用 `/code-review` 命令

28 

29<Note>

30 要在本地終端中審查差異而無需安裝 GitHub App,請在任何 Claude Code 工作階段中運行 `/code-review` 命令。請參閱[在本地審查差異](#review-a-diff-locally)。

31</Note>

27 32 

28## 審查如何運作33## 審查如何運作

29 34 


263* **Files changed annotations**:在 PR 上打開 **Files changed** 標籤。發現呈現為直接附加到差異行的註釋,與審查評論分開。268* **Files changed annotations**:在 PR 上打開 **Files changed** 標籤。發現呈現為直接附加到差異行的註釋,與審查評論分開。

264* **Review body**:如果您在審查運行時推送到 PR,某些發現可能引用當前差異中不再存在的行。這些出現在審查正文文本中的 **Additional findings** 標題下,而不是作為內聯評論。269* **Review body**:如果您在審查運行時推送到 PR,某些發現可能引用當前差異中不再存在的行。這些出現在審查正文文本中的 **Additional findings** 標題下,而不是作為內聯評論。

265 270 

271## 在本地審查差異

272 

273[`/code-review` 命令](/zh-TW/commands)在您的終端中審查差異,無需安裝 GitHub App。在任何 Claude Code 工作階段中運行它:它報告當前差異中的正確性錯誤和 {/* min-version: 2.1.151 */}重用、簡化和效率清理。傳遞 `--comment` 以將發現結果作為內聯 PR 評論發佈,或傳遞 `--fix` 以在審查後將發現結果應用到您的工作樹。

274 

275較低的[努力級別](/zh-TW/model-config#adjust-effort-level)返回較少、更高信心的發現,而 `high` 到 `max` 提供更廣泛的覆蓋範圍,可能包括不確定的發現。沒有努力參數,審查使用工作階段的當前努力。傳遞路徑或 PR 參考以審查特定目標而不是當前差異。

276 

277`/code-review ultra --fix` 在雲中運行更深入的 [ultrareview](/zh-TW/ultrareview),然後在它們到達您的工作階段時將其發現結果應用到您的工作樹。

278 

279該命令在 v2.1.147 之前被命名為 `/simplify`,當時它默認應用修復。{/* min-version: 2.1.154 */}從 v2.1.154 開始,`/simplify` 運行單獨的僅清理審查,該審查應用修復而不尋找錯誤。如果您編寫了 `/simplify` 用於尋找錯誤,請切換到 `/code-review --fix`,它保持不變。

280 

266## 相關資源281## 相關資源

267 282 

268Code Review 設計用於與 Claude Code 的其餘部分一起工作。如果您想在開啟 PR 之前在本地運行審查、需要自託管設定,或想深入了解 `CLAUDE.md` 如何在工具中塑造 Claude 的行為,這些頁面是很好的下一步:283Code Review 設計用於與 Claude Code 的其餘部分一起工作。如果您想在開啟 PR 之前在本地運行審查、需要自託管設定,或想深入了解 `CLAUDE.md` 如何在工具中塑造 Claude 的行為,這些頁面是很好的下一步:

269 284 

270* [Plugins](/zh-TW/discover-plugins):瀏覽插件市場,包括用於在推送前本地運行按需審查的 `code-review` 插件285* [Commands](/zh-TW/commands):在本地 Claude Code 工作階段中運行 `/code-review` 以在推送前檢查差異

271* [GitHub Actions](/zh-TW/github-actions):在您自己的 GitHub Actions 工作流中運行 Claude,以實現超越程式碼審查的自訂自動化286* [GitHub Actions](/zh-TW/github-actions):在您自己的 GitHub Actions 工作流中運行 Claude,以實現超越程式碼審查的自訂自動化

272* [GitLab CI/CD](/zh-TW/gitlab-ci-cd):GitLab 管道的自託管 Claude 集成287* [GitLab CI/CD](/zh-TW/gitlab-ci-cd):GitLab 管道的自託管 Claude 集成

273* [Memory](/zh-TW/memory):`CLAUDE.md` 文件如何在 Claude Code 中工作288* [Memory](/zh-TW/memory):`CLAUDE.md` 文件如何在 Claude Code 中工作

commands.md +27 −15

Details

22 22 

23**並行執行工作。** `/agents` 開啟管理員以管理 [subagents](/zh-TW/sub-agents) Claude 可以委派側邊任務,`/tasks` 列出目前工作階段背景中執行的內容。`/background` 分離整個工作階段以繼續作為 [background agent](/zh-TW/agent-view) 執行並釋放您的終端機。對於跨越程式碼庫的大型變更,`/batch` 將其分解為獨立單位,並在各自的 [worktree](/zh-TW/worktrees) 中執行每個單位。請參閱 [Run agents in parallel](/zh-TW/agents) 以了解這些方法如何相關。23**並行執行工作。** `/agents` 開啟管理員以管理 [subagents](/zh-TW/sub-agents) Claude 可以委派側邊任務,`/tasks` 列出目前工作階段背景中執行的內容。`/background` 分離整個工作階段以繼續作為 [background agent](/zh-TW/agent-view) 執行並釋放您的終端機。對於跨越程式碼庫的大型變更,`/batch` 將其分解為獨立單位,並在各自的 [worktree](/zh-TW/worktrees) 中執行每個單位。請參閱 [Run agents in parallel](/zh-TW/agents) 以了解這些方法如何相關。

24 24 

25**在您推送前。** `/diff` 顯示變更的內容,`/simplify` 審閱最近的檔案並應用品質和效率修復,`/review` 或 `/security-review` 進行更深入的唯讀檢查。25**在您推送前。** `/diff` 顯示變更的內容,`/code-review` 檢查差異以找出正確性錯誤和清理並可以使用 `--fix` 應用發現的結果,`/review` 或 `/security-review` 進行更深入的唯讀檢查。`/code-review ultra` 在雲端執行多代理審查。

26 26 

27**在工作階段之間。** `/clear` 在保持專案記憶的同時開始新工作的新鮮開始。`/resume` 和 `/branch` 讓您返回或分叉較早的對話。`/teleport` 將網頁工作階段拉入此終端機,`/remote-control` 讓您從另一個裝置繼續此本地工作階段。27**在工作階段之間。** `/clear` 在保持專案記憶的同時開始新工作的新鮮開始。`/resume` 和 `/branch` 讓您返回或分叉較早的對話。`/teleport` 將網頁工作階段拉入此終端機,`/remote-control` 讓您從另一個裝置繼續此本地工作階段。

28 28 


30 30 

31## 所有命令31## 所有命令

32 32 

33下表列出了 Claude Code 中包含的所有命令。標記為 **[Skill](/zh-TW/skills#bundled-skills)** 的項目是捆綁的 skills。它們使用與您自己編寫的 skills 相同的機制:提示交給 Claude,Claude 也可以在相關時自動調用。其他所有項目都是內建命令,其行為被編碼到 CLI 中。若要添加您自己的命令,請參閱 [skills](/zh-TW/skills)。33下表列出了 Claude Code 中包含的所有命令。大多數是內建命令,其行為被編碼到 CLI 中。有兩種項目被標記:

34 

35* **[Skill](/zh-TW/skills#bundled-skills)**:一個捆綁的 skill。它的工作方式與您自己編寫的 skills 相同:一個提示交給 Claude,Claude 也可以在相關時自動調用。

36* **[Workflow](/zh-TW/workflows#bundled-workflows)**:一個捆綁的[動態工作流](/zh-TW/workflows),在許多 subagents 之間展開工作並在背景中運行。

37 

38若要添加您自己的命令,請參閱 [skills](/zh-TW/skills)。

34 39 

35在下表中,`<arg>` 表示必需的引數,`[arg]` 表示可選的引數。40在下表中,`<arg>` 表示必需的引數,`[arg]` 表示可選的引數。

36 41 

37<Note>42<Note>

38 並非每個命令都對每個使用者顯示。可用性取決於您的平台、方案和環境。例如,`/desktop` 僅在 macOS 和 Windows 上顯示,`/upgrade` 僅在 Pro 和 Max 方案上顯示。43 並非每個命令都對每個使用者顯示。可用性取決於您的平台、方案和環境。例如,`/desktop` 僅在 macOS 和 Windows 上顯示(當使用 Claude 訂閱登入時),`/upgrade` 僅在 Pro 和 Max 方案上顯示。

39</Note>44</Note>

40 45 

41| 命令 | 用途 |46| 命令 | 用途 |

42| :---------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |47| :--------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

43| `/add-dir <path>` | 為目前工作階段期間的檔案存取添加工作目錄。大多數 `.claude/` 配置[未從添加的目錄發現](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)。您可以稍後使用 `--continue` 或 `--resume` 從添加的目錄繼續工作階段 |48| `/add-dir <path>` | 為目前工作階段期間的檔案存取添加工作目錄。大多數 `.claude/` 配置[未從添加的目錄發現](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)。您可以稍後使用 `--continue` 或 `--resume` 從添加的目錄繼續工作階段 |

44| `/agents` | 管理 [agent](/zh-TW/sub-agents) 配置 |49| `/agents` | 管理 [agent](/zh-TW/sub-agents) 配置 |

45| `/autofix-pr [prompt]` | 生成一個[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#auto-fix-pull-requests) 工作階段,監視目前分支的 PR 並在 CI 失敗或審閱者留下評論時推送修復。使用 `gh pr view` 檢測已簽出分支的開放 PR;若要監視不同的 PR,請先簽出其分支。預設情況下,遠端工作階段被告知修復每個 CI 失敗和審閱評論;傳遞提示以給予它不同的指示,例如 `/autofix-pr only fix lint and type errors`。需要 `gh` CLI 和訪問[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |50| `/autofix-pr [prompt]` | 生成一個[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#auto-fix-pull-requests) 工作階段,監視目前分支的 PR 並在 CI 失敗或審閱者留下評論時推送修復。使用 `gh pr view` 檢測已簽出分支的開放 PR;若要監視不同的 PR,請先簽出其分支。預設情況下,遠端工作階段被告知修復每個 CI 失敗和審閱評論;傳遞提示以給予它不同的指示,例如 `/autofix-pr only fix lint and type errors`。需要 `gh` CLI 和訪問[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |


50| `/chrome` | 配置 [Chrome 中的 Claude](/zh-TW/chrome) 設定 |55| `/chrome` | 配置 [Chrome 中的 Claude](/zh-TW/chrome) 設定 |

51| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/zh-TW/skills#bundled-skills).** 為您的專案語言(Python、TypeScript、Java、Go、Ruby、C#、PHP 或 cURL)和 Managed Agents 參考加載 Claude API 參考資料。涵蓋工具使用、串流、批次、結構化輸出和常見陷阱。當您的程式碼導入 `anthropic` 或 `@anthropic-ai/sdk` 時也會自動激活。執行 `/claude-api migrate` 以將現有 Claude API 程式碼升級到較新的模型:Claude 詢問要掃描哪些檔案以及要針對哪個模型,然後更新在版本之間變更的模型 ID、thinking 配置和其他參數。執行 `/claude-api managed-agents-onboard` 以進行互動式逐步解說,從頭開始建立新的 Managed Agent |56| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/zh-TW/skills#bundled-skills).** 為您的專案語言(Python、TypeScript、Java、Go、Ruby、C#、PHP 或 cURL)和 Managed Agents 參考加載 Claude API 參考資料。涵蓋工具使用、串流、批次、結構化輸出和常見陷阱。當您的程式碼導入 `anthropic` 或 `@anthropic-ai/sdk` 時也會自動激活。執行 `/claude-api migrate` 以將現有 Claude API 程式碼升級到較新的模型:Claude 詢問要掃描哪些檔案以及要針對哪個模型,然後更新在版本之間變更的模型 ID、thinking 配置和其他參數。執行 `/claude-api managed-agents-onboard` 以進行互動式逐步解說,從頭開始建立新的 Managed Agent |

52| `/clear [name]` | 使用空上下文開始新對話。上一個對話在 `/resume` 中保持可用。傳遞名稱以在 `/resume` 選擇器中標記上一個對話。若要在繼續同一對話時釋放上下文,請改用 `/compact`。別名:`/reset`、`/new` |57| `/clear [name]` | 使用空上下文開始新對話。上一個對話在 `/resume` 中保持可用。傳遞名稱以在 `/resume` 選擇器中標記上一個對話。若要在繼續同一對話時釋放上下文,請改用 `/compact`。別名:`/reset`、`/new` |

58| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [target]` | **[Skill](/zh-TW/skills#bundled-skills).** 審閱目前的差異以查找正確性錯誤並進行重用、簡化和效率清理。傳遞 `--fix` 以將發現應用到您的工作樹,傳遞 `--comment` 以將其作為內聯 GitHub PR 評論發佈,或傳遞 `ultra` 以運行深度[雲端審閱](/zh-TW/ultrareview)。{/* min-version: 2.1.154 */}從 v2.1.154 開始,`/simplify` 運行單獨的僅清理審閱,應用修復而不尋找錯誤。請參閱[本地審閱差異](/zh-TW/code-review#review-a-diff-locally)以了解努力程度和目標設定 |

53| `/color [color\|default]` | 設定目前工作階段的提示列顏色。可用顏色:`red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink`、`cyan`。使用 `default` 重設,或不帶引數執行以選擇隨機顏色。當[遠端控制](/zh-TW/remote-control)已連接時,顏色會同步到 claude.ai/code |59| `/color [color\|default]` | 設定目前工作階段的提示列顏色。可用顏色:`red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink`、`cyan`。使用 `default` 重設,或不帶引數執行以選擇隨機顏色。當[遠端控制](/zh-TW/remote-control)已連接時,顏色會同步到 claude.ai/code |

54| `/compact [instructions]` | 通過總結到目前為止的對話來釋放上下文。可選擇性地傳遞焦點指示以進行摘要。請參閱[壓縮如何處理規則、skills 和記憶體檔案](/zh-TW/context-window#what-survives-compaction) |60| `/compact [instructions]` | 通過總結到目前為止的對話來釋放上下文。可選擇性地傳遞焦點指示以進行摘要。請參閱[壓縮如何處理規則、skills 和記憶體檔案](/zh-TW/context-window#what-survives-compaction) |

55| `/config` | 開啟[設定](/zh-TW/settings)介面以調整主題、模型、[輸出樣式](/zh-TW/output-styles)和其他偏好設定。別名:`/settings` |61| `/config` | 開啟[設定](/zh-TW/settings)介面以調整主題、模型、[輸出樣式](/zh-TW/output-styles)和其他偏好設定。別名:`/settings` |


57| `/copy [N]` | 將最後一個助手回應複製到剪貼簿。傳遞數字 `N` 以複製第 N 個最新回應:`/copy 2` 複製倒數第二個。當存在程式碼區塊時,顯示互動式選擇器以選擇個別區塊或完整回應。在選擇器中按 `w` 以將選擇寫入檔案而不是剪貼簿,這在 SSH 上很有用 |63| `/copy [N]` | 將最後一個助手回應複製到剪貼簿。傳遞數字 `N` 以複製第 N 個最新回應:`/copy 2` 複製倒數第二個。當存在程式碼區塊時,顯示互動式選擇器以選擇個別區塊或完整回應。在選擇器中按 `w` 以將選擇寫入檔案而不是剪貼簿,這在 SSH 上很有用 |

58| `/cost` | `/usage` 的別名 |64| `/cost` | `/usage` 的別名 |

59| `/debug [description]` | **[Skill](/zh-TW/skills#bundled-skills).** 為目前工作階段啟用偵錯日誌記錄並通過讀取工作階段偵錯日誌來排除故障。除非您使用 `claude --debug` 啟動,否則偵錯日誌記錄預設為關閉,因此在工作階段中期運行 `/debug` 會從該時刻開始捕獲日誌。可選擇性地描述問題以集中分析 |65| `/debug [description]` | **[Skill](/zh-TW/skills#bundled-skills).** 為目前工作階段啟用偵錯日誌記錄並通過讀取工作階段偵錯日誌來排除故障。除非您使用 `claude --debug` 啟動,否則偵錯日誌記錄預設為關閉,因此在工作階段中期運行 `/debug` 會從該時刻開始捕獲日誌。可選擇性地描述問題以集中分析 |

60| `/desktop` | 在 Claude Code Desktop 應用程式中繼續目前的工作階段。僅限 macOS 和 Windows。別名:`/app` |66| `/deep-research <question>` | **[Workflow](/zh-TW/workflows#bundled-workflows).** 在問題上展開網頁搜尋、擷取並交叉檢查來源,並綜合一份引用的報告 |

67| `/desktop` | 在 Claude Code Desktop 應用程式中繼續目前的工作階段。需要 macOS 或 Windows 和 Claude 訂閱。別名:`/app` |

61| `/diff` | 開啟互動式差異檢視器,顯示未提交的變更和每個回合的差異。使用左/右箭頭在目前的 git 差異和個別 Claude 回合之間切換,使用上/下箭頭瀏覽檔案 |68| `/diff` | 開啟互動式差異檢視器,顯示未提交的變更和每個回合的差異。使用左/右箭頭在目前的 git 差異和個別 Claude 回合之間切換,使用上/下箭頭瀏覽檔案 |

62| `/doctor` | 診斷並驗證您的 Claude Code 安裝和設定。結果顯示狀態圖示。按 `f` 讓 Claude 修復任何報告的問題 |69| `/doctor` | 診斷並驗證您的 Claude Code 安裝和設定。結果顯示狀態圖示。按 `f` 讓 Claude 修復任何報告的問題 |

63| `/effort [level\|auto]` | 設定模型[努力程度](/zh-TW/model-config#adjust-effort-level)。接受 `low`、`medium`、`high`、`xhigh` 或 `max`;可用的程度取決於模型,`max` 僅限工作階段。`auto` 重設為模型預設值。不帶引數時,開啟互動式滑塊;使用左右箭頭選擇程度,按 `Enter` 應用。立即生效,無需等待目前回應完成 |70| `/effort [level\|auto]` | 設定模型[努力程度](/zh-TW/model-config#adjust-effort-level)。接受 `low`、`medium`、`high`、`xhigh`、`max` 或 `ultracode`;可用的程度取決於模型,`max` 和 `ultracode` 僅限工作階段。`ultracode` 是一個 Claude Code 設定,結合 `xhigh` 推理與自動[工作流](/zh-TW/workflows#let-claude-decide-with-ultracode)協調。`auto` 重設為模型預設值。不帶引數時,開啟互動式滑塊;使用左右箭頭選擇程度,按 `Enter` 應用。立即生效,無需等待目前回應完成 |

64| `/exit` | 結束 CLI。在附加的[背景工作階段](/zh-TW/agent-view#attach-to-a-session)中,這會分離並且工作階段繼續運行。別名:`/quit` |71| `/exit` | 結束 CLI。在附加的[背景工作階段](/zh-TW/agent-view#attach-to-a-session)中,這會分離並且工作階段繼續運行。別名:`/quit` |

65| `/export [filename]` | 將目前的對話匯出為純文字。使用檔案名稱時,直接寫入該檔案。不使用檔案名稱時,開啟對話框以複製到剪貼簿或儲存到檔案 |72| `/export [filename]` | 將目前的對話匯出為純文字。使用檔案名稱時,直接寫入該檔案。不使用檔案名稱時,開啟對話框以複製到剪貼簿或儲存到檔案 |

66| `/fast [on\|off]` | 切換[快速模式](/zh-TW/fast-mode)開啟或關閉 |73| `/fast [on\|off]` | 切換[快速模式](/zh-TW/fast-mode)開啟或關閉 |

67| `/feedback [report]` | 提交有關 Claude Code 的意見反應。別名:`/bug` |74| `/feedback [report]` | 提交意見反應、報告錯誤或分享您的對話。別名:`/bug`、`/share` |

68| `/fewer-permission-prompts` | **[Skill](/zh-TW/skills#bundled-skills).** 掃描您的記錄以查找常見的唯讀 Bash 和 MCP 工具呼叫,然後將優先允許清單添加到專案 `.claude/settings.json` 以減少權限提示 |75| `/fewer-permission-prompts` | **[Skill](/zh-TW/skills#bundled-skills).** 掃描您的記錄以查找常見的唯讀 Bash 和 MCP 工具呼叫,然後將優先允許清單添加到專案 `.claude/settings.json` 以減少權限提示 |

69| `/focus` | 切換焦點檢視,僅顯示您的最後一個提示、帶有編輯 diffstats 的單行工具呼叫摘要和最終回應。選擇在工作階段之間保持。僅在[全螢幕渲染](/zh-TW/fullscreen)中可用 |76| `/focus` | 切換焦點檢視,僅顯示您的最後一個提示、帶有編輯 diffstats 的單行工具呼叫摘要和最終回應。選擇在工作階段之間保持。僅在[全螢幕渲染](/zh-TW/fullscreen)中可用 |

70| `/goal [condition\|clear]` | 設定[目標](/zh-TW/goal):Claude 在各個回合中持續工作,直到滿足條件。不帶引數時,顯示目前或最近達成的目標。`clear`、`stop`、`off`、`reset`、`none` 或 `cancel` 會提前移除活躍的目標 |77| `/goal [condition\|clear]` | 設定[目標](/zh-TW/goal):Claude 在各個回合中持續工作,直到滿足條件。不帶引數時,顯示目前或最近達成的目標。`clear`、`stop`、`off`、`reset`、`none` 或 `cancel` 會提前移除活躍的目標 |


79| `/keybindings` | 開啟或建立您的快捷鍵配置檔案 |86| `/keybindings` | 開啟或建立您的快捷鍵配置檔案 |

80| `/login` | 登入您的 Anthropic 帳戶 |87| `/login` | 登入您的 Anthropic 帳戶 |

81| `/logout` | 登出您的 Anthropic 帳戶 |88| `/logout` | 登出您的 Anthropic 帳戶 |

82| `/loop [interval] [prompt]` | **[Skill](/zh-TW/skills#bundled-skills).** 在工作階段保持開啟時重複執行提示。省略間隔,Claude 會在迭代之間自動調整步調。省略提示,Claude 運行自主維護檢查,或 `.claude/loop.md` 中的提示(如果存在)。示例:`/loop 5m check if the deploy finished`。請參閱[按計劃運行提示](/zh-TW/scheduled-tasks)。別名:`/proactive` |89| `/loop [interval] [prompt]` | **[Skill](/zh-TW/skills#bundled-skills).** 在工作階段保持開啟時重複執行提示。省略間隔,Claude 會在迭代之間自動調整步調。省略提示,Claude 運行自主維護檢查,或 `.claude/loop.md` 中的提示([如果可用](/zh-TW/scheduled-tasks#run-the-built-in-maintenance-prompt))。示例:`/loop 5m check if the deploy finished`。請參閱[按計劃運行提示](/zh-TW/scheduled-tasks)。別名:`/proactive` |

83| `/mcp` | 管理 MCP 伺服器連線和 OAuth 驗證 |90| `/mcp` | 管理 MCP 伺服器連線和 OAuth 驗證 |

84| `/memory` | 編輯 `CLAUDE.md` 記憶體檔案、啟用或停用[自動記憶體](/zh-TW/memory#auto-memory),以及檢視自動記憶體項目 |91| `/memory` | 編輯 `CLAUDE.md` 記憶體檔案、啟用或停用[自動記憶體](/zh-TW/memory#auto-memory),以及檢視自動記憶體項目 |

85| `/mobile` | 顯示 QR 碼以下載 Claude 行動應用程式。別名:`/ios`、`/android` |92| `/mobile` | 顯示 QR 碼以下載 Claude 行動應用程式。別名:`/ios`、`/android` |

86| `/model [model]` | 選擇或變更 AI 模型。對於支援此功能的模型,使用左/右箭頭以[調整努力程度](/zh-TW/model-config#adjust-effort-level)。不帶引數時,開啟選擇器,當對話有先前輸出時要求確認,因為下一個回應會重新讀取完整歷史記錄而不使用快取上下文。確認後,變更立即應用,無需等待目前回應完成 |93| `/model [model]` | 切換 AI 模型並將其儲存為新工作階段的預設值。對於支援此功能的模型,使用左/右箭頭以[調整努力程度](/zh-TW/model-config#adjust-effort-level)。不帶引數時,開啟選擇器;在列上按 `s` 以僅為目前工作階段切換。當對話有先前輸出時選擇器會要求確認,因為下一個回應會重新讀取完整歷史記錄而不使用快取上下文。確認後,變更立即應用,無需等待目前回應完成 |

87| `/passes` | 與朋友分享免費一週的 Claude Code。僅在您的帳戶符合資格時可見 |94| `/passes` | 與朋友分享免費一週的 Claude Code。僅在您的帳戶符合資格時可見 |

88| `/permissions` | 管理工具權限的允許、詢問和拒絕規則。開啟互動式對話框,您可以按範圍檢視規則、添加或移除規則、管理工作目錄,以及檢視[最近的自動模式拒絕](/zh-TW/auto-mode-config#review-denials)。別名:`/allowed-tools` |95| `/permissions` | 管理工具權限的允許、詢問和拒絕規則。開啟互動式對話框,您可以按範圍檢視規則、添加或移除規則、管理工作目錄,以及檢視[最近的自動模式拒絕](/zh-TW/auto-mode-config#review-denials)。別名:`/allowed-tools` |

89| `/plan [description]` | 直接從提示進入 Plan Mode。傳遞可選的描述以進入 Plan Mode 並立即開始該工作,例如 `/plan fix the auth bug` |96| `/plan [description]` | 直接從提示進入 Plan Mode。傳遞可選的描述以進入 Plan Mode 並立即開始該工作,例如 `/plan fix the auth bug` |


95| `/recap` | 按需生成目前工作階段的單行摘要。請參閱[工作階段摘要](/zh-TW/interactive-mode#session-recap)以了解您離開後出現的自動摘要 |102| `/recap` | 按需生成目前工作階段的單行摘要。請參閱[工作階段摘要](/zh-TW/interactive-mode#session-recap)以了解您離開後出現的自動摘要 |

96| `/release-notes` | 在互動式版本選擇器中檢視變更日誌。選擇特定版本以查看其發行說明,或選擇顯示所有版本 |103| `/release-notes` | 在互動式版本選擇器中檢視變更日誌。選擇特定版本以查看其發行說明,或選擇顯示所有版本 |

97| `/reload-plugins` | 重新載入所有作用中的 [plugins](/zh-TW/plugins) 以套用待處理的變更,無需重新啟動。報告每個已重新載入的元件的計數,並標記任何載入錯誤 |104| `/reload-plugins` | 重新載入所有作用中的 [plugins](/zh-TW/plugins) 以套用待處理的變更,無需重新啟動。報告每個已重新載入的元件的計數,並標記任何載入錯誤 |

105| `/reload-skills` | {/* min-version: 2.1.152 */}重新掃描 [skill](/zh-TW/skills) 和命令目錄,以便在工作階段期間添加或更改的 skills 在磁碟上變得可用,無需重新啟動。報告有多少 skills 可用以及添加或移除了多少 |

98| `/remote-control` | 使此工作階段可從 claude.ai 進行[遠端控制](/zh-TW/remote-control)。別名:`/rc` |106| `/remote-control` | 使此工作階段可從 claude.ai 進行[遠端控制](/zh-TW/remote-control)。別名:`/rc` |

99| `/remote-env` | 為[使用 `--remote` 啟動的網頁工作階段](/zh-TW/claude-code-on-the-web#configure-your-environment)配置預設遠端環境 |107| `/remote-env` | 為[使用 `--remote` 啟動的網頁工作階段](/zh-TW/claude-code-on-the-web#configure-your-environment)配置預設遠端環境 |

100| `/rename [name]` | 重新命名目前的工作階段並在提示列上顯示名稱。不使用名稱時,從對話歷史記錄自動產生名稱 |108| `/rename [name]` | 重新命名目前的工作階段並在提示列上顯示名稱。不使用名稱時,從對話歷史記錄自動產生名稱 |

101| `/resume [session]` | 按 ID 或名稱繼續對話,或開啟工作階段選擇器。別名:`/continue` |109| `/resume [session]` | 按 ID 或名稱繼續對話,或開啟工作階段選擇器。自 v2.1.144 起,[背景工作階段](/zh-TW/agent-view)會在選擇器中顯示,標記為 `bg`。別名:`/continue` |

102| `/review [PR]` | 在您目前的工作階段中本地審閱 pull request。如需更深入的雲端審閱,請參閱 [`/ultrareview`](/zh-TW/ultrareview) |110| `/review [PR]` | 在您目前的工作階段中本地審閱 pull request。如需更深入的雲端審閱,請參閱 [`/code-review ultra`](/zh-TW/ultrareview) |

103| `/rewind` | 將對話和/或程式碼倒帶到上一個時刻,或從選定的訊息進行摘要。請參閱 [checkpointing](/zh-TW/checkpointing)。別名:`/checkpoint`、`/undo` |111| `/rewind` | 將對話和/或程式碼倒帶到上一個時刻,或從選定的訊息進行摘要。請參閱 [checkpointing](/zh-TW/checkpointing)。別名:`/checkpoint`、`/undo` |

112| `/run` | **[Skill](/zh-TW/skills#bundled-skills).** 啟動並驅動您的專案應用程式以查看在執行中的應用程式中工作的變更,而不僅僅是在測試中。請參閱[運行並驗證您的應用程式](/zh-TW/skills#run-and-verify-your-app)。{/* min-version: 2.1.145 */}需要 Claude Code v2.1.145 或更新版本 |

113| `/run-skill-generator` | **[Skill](/zh-TW/skills#bundled-skills).** 通過從乾淨環境編寫每個專案的 [skill](/zh-TW/skills#run-and-verify-your-app),教導 `/run` 和 `/verify` 如何構建、啟動和驅動您的專案應用程式。{/* min-version: 2.1.145 */}需要 Claude Code v2.1.145 或更新版本 |

104| `/sandbox` | 切換 [sandbox 模式](/zh-TW/sandboxing)。僅在支援的平台上可用 |114| `/sandbox` | 切換 [sandbox 模式](/zh-TW/sandboxing)。僅在支援的平台上可用 |

105| `/schedule [description]` | 建立、更新、列出或執行[例行工作](/zh-TW/routines),在 Anthropic 管理的雲端基礎設施上執行。Claude 會以對話方式引導您完成設定。別名:`/routines` |115| `/schedule [description]` | 建立、更新、列出或執行[例行工作](/zh-TW/routines),在 Anthropic 管理的雲端基礎設施上執行。Claude 會以對話方式引導您完成設定。別名:`/routines` |

106| `/scroll-speed` | 以互動方式調整滑鼠滾輪[捲動速度](/zh-TW/fullscreen#mouse-wheel-scrolling),使用尺標,您可以在對話框開啟時捲動以預覽變更。僅在[全螢幕渲染](/zh-TW/fullscreen)中可用,在 JetBrains IDE 終端機中不可用 |116| `/scroll-speed` | 以互動方式調整滑鼠滾輪[捲動速度](/zh-TW/fullscreen#mouse-wheel-scrolling),使用尺標,您可以在對話框開啟時捲動以預覽變更。僅在[全螢幕渲染](/zh-TW/fullscreen)中可用,在 JetBrains IDE 終端機中不可用 |

107| `/security-review` | 分析目前分支上的待處理變更以查找安全漏洞。檢查 git 差異並識別注入、驗證問題和資料洩露等風險 |117| `/security-review` | 分析目前分支上的待處理變更以查找安全漏洞。檢查 git 差異並識別注入、驗證問題和資料洩露等風險 |

108| `/setup-bedrock` | 通過互動式精靈配置 [Amazon Bedrock](/zh-TW/amazon-bedrock) 驗證、區域和模型釘選。僅在設定 `CLAUDE_CODE_USE_BEDROCK=1` 時可見。首次 Bedrock 使用者也可以從登入螢幕訪問此精靈 |118| `/setup-bedrock` | 通過互動式精靈配置 [Amazon Bedrock](/zh-TW/amazon-bedrock) 驗證、區域和模型釘選。僅在設定 `CLAUDE_CODE_USE_BEDROCK=1` 時可見。首次 Bedrock 使用者也可以從登入螢幕訪問此精靈 |

109| `/setup-vertex` | 通過互動式精靈配置 [Google Vertex AI](/zh-TW/google-vertex-ai) 驗證、專案、區域和模型釘選。僅在設定 `CLAUDE_CODE_USE_VERTEX=1` 時可見。首次 Vertex AI 使用者也可以從登入螢幕訪問此精靈 |119| `/setup-vertex` | 通過互動式精靈配置 [Google Vertex AI](/zh-TW/google-vertex-ai) 驗證、專案、區域和模型釘選。僅在設定 `CLAUDE_CODE_USE_VERTEX=1` 時可見。首次 Vertex AI 使用者也可以從登入螢幕訪問此精靈 |

110| `/simplify [focus]` | **[Skill](/zh-TW/skills#bundled-skills).** 審閱您最近變更的檔案以查找程式碼重用、品質和效率問題然後修復它們並行生成三個審閱 agent聚合其發現並應用修復傳遞文字以集中於特定關注點:`/simplify focus on memory efficiency` |120| `/simplify [target]` | {/* min-version: 2.1.154 */}**[Skill](/zh-TW/skills#bundled-skills).** 審閱變更的程式碼以查找清理機會並應用修復。四個審閱 [agents](/zh-TW/sub-agents) 並行運行涵蓋現有幫助程式的重用、簡化、效率和變更是否位於正確的抽象層級 v2.1.154 開始審閱不尋找正確性錯誤使用 `/code-review` 查找錯誤。在較早的版本上,`/simplify` 等同於 `/code-review --fix`。傳遞路徑或 PR 參考以審閱特定目標 |

111| `/skills` | 列出可用的 [skills](/zh-TW/skills)。按 `t` 按 token 計數排序。按 `Space` 以[從 Claude 或 `/` 選單隱藏 skill](/zh-TW/skills#override-skill-visibility-from-settings),然後按 `Enter` 以儲存 |121| `/skills` | 列出可用的 [skills](/zh-TW/skills)。按 `t` 按 token 計數排序。按 `Space` 以[從 Claude 或 `/` 選單隱藏 skill](/zh-TW/skills#override-skill-visibility-from-settings),然後按 `Enter` 以儲存 |

112| `/stats` | `/usage` 的別名。在 Stats 標籤上開啟 |122| `/stats` | `/usage` 的別名。在 Stats 標籤上開啟 |

113| `/status` | 開啟設定介面(狀態標籤),顯示版本、模型、帳戶和連線狀態。在 Claude 回應時運作,無需等待目前回應完成 |123| `/status` | 開啟設定介面(狀態標籤),顯示版本、模型、帳戶和連線狀態。在 Claude 回應時運作,無需等待目前回應完成 |


117| `/tasks` | 列出並管理背景工作。也可用作 `/bashes` |127| `/tasks` | 列出並管理背景工作。也可用作 `/bashes` |

118| `/team-onboarding` | 從您的 Claude Code 使用歷史記錄產生團隊入職指南。Claude 分析您過去 30 天的工作階段、命令和 MCP 伺服器使用情況,並產生一份 markdown 指南,團隊成員可以貼上作為第一條訊息以快速設定。對於 claude.ai 上 Pro、Max、Team 和 Enterprise 方案的訂閱者,也會返回一個分享連結,團隊成員可以直接在 Claude Code 中開啟 |128| `/team-onboarding` | 從您的 Claude Code 使用歷史記錄產生團隊入職指南。Claude 分析您過去 30 天的工作階段、命令和 MCP 伺服器使用情況,並產生一份 markdown 指南,團隊成員可以貼上作為第一條訊息以快速設定。對於 claude.ai 上 Pro、Max、Team 和 Enterprise 方案的訂閱者,也會返回一個分享連結,團隊成員可以直接在 Claude Code 中開啟 |

119| `/teleport` | 將[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#from-web-to-terminal) 工作階段拉入此終端機:開啟選擇器,然後擷取分支和對話。也可用作 `/tp`。需要 claude.ai 訂閱 |129| `/teleport` | 將[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#from-web-to-terminal) 工作階段拉入此終端機:開啟選擇器,然後擷取分支和對話。也可用作 `/tp`。需要 claude.ai 訂閱 |

120| `/terminal-setup` | 為 Shift+Enter 和其他快捷鍵配置終端機快捷鍵。僅在需要它的終端機中可見,例如 VS Code、Cursor、Windsurf、Alacritty 或 Zed |130| `/terminal-setup` | 為 Shift+Enter 和其他快捷鍵配置終端機快捷鍵。僅在需要它的終端機中可見,例如 VS Code、Cursor、Devin Desktop、Alacritty 或 Zed |

121| `/theme` | 變更色彩主題。包括跟隨您終端機深色或淺色背景的 `auto` 選項、淺色和深色變體、色盲無障礙(daltonized)主題、ANSI 主題(使用您終端機的色彩調色盤),以及來自 `~/.claude/themes/` 或 plugins 的任何[自訂主題](/zh-TW/terminal-config#create-a-custom-theme) |131| `/theme` | 變更色彩主題。包括跟隨您終端機深色或淺色背景的 `auto` 選項、淺色和深色變體、色盲無障礙(daltonized)主題、ANSI 主題(使用您終端機的色彩調色盤),以及來自 `~/.claude/themes/` 或 plugins 的任何[自訂主題](/zh-TW/terminal-config#create-a-custom-theme) |

122| `/tui [default\|fullscreen]` | 設定終端機 UI 渲染器並使用您的對話完整重新啟動到它。`fullscreen` 啟用[無閃爍 alt-screen 渲染器](/zh-TW/fullscreen)。不帶引數時,列印作用中的渲染器 |132| `/tui [default\|fullscreen]` | 設定終端機 UI 渲染器並使用您的對話完整重新啟動到它。`fullscreen` 啟用[無閃爍 alt-screen 渲染器](/zh-TW/fullscreen)。不帶引數時,列印作用中的渲染器 |

123| `/ultraplan <prompt>` | 在 [ultraplan](/zh-TW/ultraplan) 工作階段中草擬計劃,在您的瀏覽器中檢視它,然後遠端執行或將其發送回您的終端機 |133| `/ultraplan <prompt>` | 在 [ultraplan](/zh-TW/ultraplan) 工作階段中草擬計劃,在您的瀏覽器中檢視它,然後遠端執行或將其發送回您的終端機 |

124| `/ultrareview [PR]` | 在雲端沙箱中使用 [ultrareview](/zh-TW/ultrareview) 運行深度、多 agent 程式碼審閱。Pro 和 Max 上包括 3 次免費執行,然後需要[額外使用](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |134| `/ultrareview [PR]` | 在雲端沙箱中使用 [ultrareview](/zh-TW/ultrareview) 運行深度、多 agent 程式碼審閱。Pro 和 Max 上包括 3 次免費執行,然後需要[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

125| `/upgrade` | 開啟升級頁面以切換到更高的方案層級 |135| `/upgrade` | 開啟升級頁面以切換到更高的方案層級 |

126| `/usage` | 顯示工作階段成本、方案使用限制和活動統計資訊。請參閱[成本追蹤指南](/zh-TW/costs#using-the-%2Fusage-command)以了解訂閱特定的詳細資訊。`/cost` 和 `/stats` 是別名 |136| `/usage` | 顯示工作階段成本、方案使用限制和活動統計資訊。在 Pro、Max、Team 或 Enterprise 方案上,包括按 skill、subagent、plugin 和 MCP 伺服器的使用情況分解。請參閱[成本追蹤指南](/zh-TW/costs#using-the-%2Fusage-command)以了解詳細資訊。`/cost` 和 `/stats` 是別名 |

127| `/usage-credits` | 配置使用量額度以在達到限制時繼續工作。先前為 `/extra-usage` |137| `/usage-credits` | 配置使用量額度以在達到限制時繼續工作。先前為 `/extra-usage` |

138| `/verify` | **[Skill](/zh-TW/skills#bundled-skills).** 通過構建您的專案應用程式、運行它並觀察結果來確認程式碼變更是否執行了應該執行的操作,而不是依賴測試或類型檢查。請參閱[運行並驗證您的應用程式](/zh-TW/skills#run-and-verify-your-app)。{/* min-version: 2.1.145 */}需要 Claude Code v2.1.145 或更新版本 |

128| `/vim` | {/* max-version: 2.1.91 */}在 v2.1.92 中移除。若要在 Vim 和一般編輯模式之間切換,請使用 `/config` → Editor mode |139| `/vim` | {/* max-version: 2.1.91 */}在 v2.1.92 中移除。若要在 Vim 和一般編輯模式之間切換,請使用 `/config` → Editor mode |

129| `/voice [hold\|tap\|off]` | 切換[語音聽寫](/zh-TW/voice-dictation),或在特定模式下啟用它。需要 Claude.ai 帳戶 |140| `/voice [hold\|tap\|off]` | 切換[語音聽寫](/zh-TW/voice-dictation),或在特定模式下啟用它。需要 Claude.ai 帳戶 |

130| `/web-setup` | 使用您的本地 `gh` CLI 認證將您的 GitHub 帳戶連接到[網頁上的 Claude Code](/zh-TW/web-quickstart#connect-from-your-terminal)。如果 GitHub 未連接,`/schedule` 會自動提示此操作 |141| `/web-setup` | 使用您的本地 `gh` CLI 認證將您的 GitHub 帳戶連接到[網頁上的 Claude Code](/zh-TW/web-quickstart#connect-from-your-terminal)。如果 GitHub 未連接,`/schedule` 會自動提示此操作 |

142| `/workflows` | 開啟[工作流](/zh-TW/workflows#watch-the-run)進度檢視以監視、暫停、繼續或儲存執行中和已完成的工作流 |

131 143 

132## MCP prompts144## MCP prompts

133 145 

Details

17* [將研究委派給 subagents](#delegate-research-to-subagents),以保持主要背景資訊清潔17* [將研究委派給 subagents](#delegate-research-to-subagents),以保持主要背景資訊清潔

18* [將 Claude 管道輸入指令碼](#pipe-claude-into-scripts),用於 CI 和批次處理18* [將 Claude 管道輸入指令碼](#pipe-claude-into-scripts),用於 CI 和批次處理

19 19 

20## 提示食譜20<h2 id="prompt-recipes">

21 提示食譜

22</h2>

21 23 

22這些是日常任務的提示模式,例如探索陌生程式碼、除錯、重構、編寫測試和建立 PR。每個都可在任何 Claude Code 介面中工作;根據您的專案調整措辭。24這些是日常任務的提示模式,例如探索陌生程式碼、除錯、重構、編寫測試和建立 PR。每個都可在任何 Claude Code 介面中工作;根據您的專案調整措辭。

23 25 

24### 了解新的程式碼庫26<h3 id="understand-new-codebases">

27 了解新的程式碼庫

28</h3>

25 29 

26#### 快速取得程式碼庫概覽30如需在 monorepo 或大型程式碼庫中配置 Claude Code,請參閱 [Monorepos 和大型儲存庫](/zh-TW/large-codebases)。

31 

32<h4 id="get-a-quick-codebase-overview">

33 快速取得程式碼庫概覽

34</h4>

27 35 

28假設您剛加入一個新專案,需要快速了解其結構。36假設您剛加入一個新專案,需要快速了解其結構。

29 37 


69 * 要求提供專案特定術語的詞彙表77 * 要求提供專案特定術語的詞彙表

70</Tip>78</Tip>

71 79 

72#### 尋找相關程式碼80<h4 id="find-relevant-code">

81 尋找相關程式碼

82</h4>

73 83 

74假設您需要找到與特定功能或功能相關的程式碼。84假設您需要找到與特定功能或功能相關的程式碼。

75 85 


103 113 

104***114***

105 115 

106### 有效地修復錯誤116<h3 id="fix-bugs-efficiently">

117 有效地修復錯誤

118</h3>

107 119 

108假設您遇到了錯誤訊息,需要找到並修復其來源。120假設您遇到了錯誤訊息,需要找到並修復其來源。

109 121 


137 149 

138***150***

139 151 

140### 重構程式碼152<h3 id="refactor-code">

153 重構程式碼

154</h3>

141 155 

142假設您需要更新舊程式碼以使用現代模式和實踐。156假設您需要更新舊程式碼以使用現代模式和實踐。

143 157 


177 191 

178***192***

179 193 

180### 使用測試194<h3 id="work-with-tests">

195 使用測試

196</h3>

181 197 

182假設您需要為未涵蓋的程式碼新增測試。198假設您需要為未涵蓋的程式碼新增測試。

183 199 


213 229 

214***230***

215 231 

216### 建立提取請求232<h3 id="create-pull-requests">

233 建立提取請求

234</h3>

217 235 

218您可以直接要求 Claude 建立提取請求(「為我的變更建立 pr」),或逐步引導 Claude 完成:236您可以直接要求 Claude 建立提取請求(「為我的變更建立 pr」),或逐步引導 Claude 完成:

219 237 


243 在提交前檢查 Claude 產生的 PR,並要求 Claude 突出顯示潛在的風險或考慮事項。261 在提交前檢查 Claude 產生的 PR,並要求 Claude 突出顯示潛在的風險或考慮事項。

244</Tip>262</Tip>

245 263 

246### 處理文件264<h3 id="handle-documentation">

265 處理文件

266</h3>

247 267 

248假設您需要為程式碼新增或更新文件。268假設您需要為程式碼新增或更新文件。

249 269 


283 303 

284***304***

285 305 

286### 在筆記和非程式碼資料夾中工作306<h3 id="work-in-notes-and-non-code-folders">

307 在筆記和非程式碼資料夾中工作

308</h3>

287 309 

288Claude Code 可在任何目錄中工作。在筆記保管庫、文件資料夾或任何 markdown 檔案集合中執行它,以搜尋、編輯和重新組織內容,就像您處理程式碼一樣。310Claude Code 可在任何目錄中工作。在筆記保管庫、文件資料夾或任何 markdown 檔案集合中執行它,以搜尋、編輯和重新組織內容,就像您處理程式碼一樣。

289 311 


291 313 

292***314***

293 315 

294### 使用影像316<h3 id="work-with-images">

317 使用影像

318</h3>

295 319 

296假設您需要在程式碼庫中使用影像,並希望 Claude 幫助分析影像內容。320假設您需要在程式碼庫中使用影像,並希望 Claude 幫助分析影像內容。

297 321 


351 375 

352***376***

353 377 

354### 參考檔案和目錄378<h3 id="reference-files-and-directories">

379 參考檔案和目錄

380</h3>

355 381 

356使用 @ 快速包含檔案或目錄,無需等待 Claude 讀取它們。382使用 @ 快速包含檔案或目錄,無需等待 Claude 讀取它們。

357 383 


392 418 

393***419***

394 420 

395### 按排程執行 Claude421<h3 id="run-claude-on-a-schedule">

422 按排程執行 Claude

423</h3>

396 424 

397假設您想讓 Claude 自動定期處理任務,例如每天早上檢查開放 PR、每週審計依賴項或在夜間檢查 CI 失敗。425假設您想讓 Claude 自動定期處理任務,例如每天早上檢查開放 PR、每週審計依賴項或在夜間檢查 CI 失敗。

398 426 


411 439 

412***440***

413 441 

414### 詢問 Claude 其功能442<h3 id="ask-claude-about-its-capabilities">

443 詢問 Claude 其功能

444</h3>

415 445 

416Claude 內建存取其文件,可以回答有關其自身功能和限制的問題。446Claude 內建存取其文件,可以回答有關其自身功能和限制的問題。

417 447 

418#### 範例問題448<h4 id="example-questions">

449 範例問題

450</h4>

419 451 

420```text theme={null}452```text theme={null}

421can Claude Code create pull requests?453can Claude Code create pull requests?


455 487 

456***488***

457 489 

458## 繼續之前的對話490<h2 id="resume-previous-conversations">

491 繼續之前的對話

492</h2>

459 493 

460當任務跨越多個會話時,從您停止的地方繼續,而不是重新解釋背景資訊。Claude Code 在本地儲存每個對話。494當任務跨越多個會話時,從您停止的地方繼續,而不是重新解釋背景資訊。Claude Code 在本地儲存每個對話。

461 495 


465 499 

466這會繼續當前目錄中最近的會話;如果還沒有,它會列印 `No conversation found to continue` 並退出。使用 `claude --resume` 從清單中選擇,或從執行中的會話內使用 `/resume`。有關命名、分支和完整選擇器參考,請參閱[管理會話](/zh-TW/sessions)。500這會繼續當前目錄中最近的會話;如果還沒有,它會列印 `No conversation found to continue` 並退出。使用 `claude --resume` 從清單中選擇,或從執行中的會話內使用 `/resume`。有關命名、分支和完整選擇器參考,請參閱[管理會話](/zh-TW/sessions)。

467 501 

468## 使用 worktrees 執行平行會話502<h2 id="run-parallel-sessions-with-worktrees">

503 使用 worktrees 執行平行會話

504</h2>

469 505 

470在一個終端中處理功能,同時 Claude 在另一個終端中修復錯誤,而不會編輯衝突。每個 worktree 是其自己分支上的單獨簽出。506在一個終端中處理功能,同時 Claude 在另一個終端中修復錯誤,而不會編輯衝突。每個 worktree 是其自己分支上的單獨簽出。

471 507 


475 511 

476在第二個終端中使用不同的名稱執行相同的命令以啟動隔離的平行會話。有關清理、`.worktreeinclude` 和非 git VCS 支援,請參閱 [Worktrees](/zh-TW/worktrees)。要從一個螢幕而不是單獨的終端監視平行會話,請參閱[背景代理](/zh-TW/agent-view)。512在第二個終端中使用不同的名稱執行相同的命令以啟動隔離的平行會話。有關清理、`.worktreeinclude` 和非 git VCS 支援,請參閱 [Worktrees](/zh-TW/worktrees)。要從一個螢幕而不是單獨的終端監視平行會話,請參閱[背景代理](/zh-TW/agent-view)。

477 513 

478## 編輯前規劃514<h2 id="plan-before-editing">

515 編輯前規劃

516</h2>

479 517 

480對於您想在變更觸及磁碟前檢查的變更,切換到 plan mode。Claude 讀取檔案並提出計畫,但在您批准前不進行編輯。518對於您想在變更觸及磁碟前檢查的變更,切換到 plan mode。Claude 讀取檔案並提出計畫,但在您批准前不進行編輯。

481 519 


485 523 

486您也可以在會話期間按 `Shift+Tab` 切換到 plan mode。有關批准流程和在文字編輯器中編輯計畫,請參閱 [Plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)。524您也可以在會話期間按 `Shift+Tab` 切換到 plan mode。有關批准流程和在文字編輯器中編輯計畫,請參閱 [Plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)。

487 525 

488## 將研究委派給 subagents526<h2 id="delegate-research-to-subagents">

527 將研究委派給 subagents

528</h2>

489 529 

490探索大型程式碼庫會用檔案讀取填滿您的背景資訊。委派探索,以便只有發現結果返回。530探索大型程式碼庫會用檔案讀取填滿您的背景資訊。委派探索,以便只有發現結果返回。

491 531 


495 535 

496subagent 在其自己的背景資訊視窗中讀取檔案並報告摘要。有關定義具有自己工具和提示的自訂代理,請參閱 [Subagents](/zh-TW/sub-agents)。536subagent 在其自己的背景資訊視窗中讀取檔案並報告摘要。有關定義具有自己工具和提示的自訂代理,請參閱 [Subagents](/zh-TW/sub-agents)。

497 537 

498## 將 Claude 管道輸入指令碼538<h2 id="pipe-claude-into-scripts">

539 將 Claude 管道輸入指令碼

540</h2>

499 541 

500以非互動方式執行 Claude,用於 CI、提交前 hooks 或批次處理。Stdin 和 stdout 像任何 Unix 工具一樣工作。542以非互動方式執行 Claude,用於 CI、提交前 hooks 或批次處理。Stdin 和 stdout 像任何 Unix 工具一樣工作。

501 543 


505 547 

506有關輸出格式、權限標誌和扇出模式,請參閱[非互動模式](/zh-TW/headless)。548有關輸出格式、權限標誌和扇出模式,請參閱[非互動模式](/zh-TW/headless)。

507 549 

508## 後續步驟550<h2 id="next-steps">

551 後續步驟

552</h2>

509 553 

510<CardGroup cols={2}>554<CardGroup cols={2}>

511 <Card title="最佳實踐" icon="lightbulb" href="/zh-TW/best-practices">555 <Card title="最佳實踐" icon="lightbulb" href="/zh-TW/best-practices">

Details

12 將此處的所有內容視為草稿副本,而非最終副本。用您組織的語氣重寫每條訊息,用您自己程式碼庫中的實際錯誤和模組替換示例任務,並在發送前替換 `[括號中的佔位符]`。推動採用的公告是那些看起來像您公司某人寫的公告。12 將此處的所有內容視為草稿副本,而非最終副本。用您組織的語氣重寫每條訊息,用您自己程式碼庫中的實際錯誤和模組替換示例任務,並在發送前替換 `[括號中的佔位符]`。推動採用的公告是那些看起來像您公司某人寫的公告。

13</Note>13</Note>

14 14 

15## 推出通訊15<h2 id="launch-communications">

16 推出通訊

17</h2>

16 18 

17一份公告分為兩種格式,加上兩個可選變體。選擇最適合您推出的格式,然後從那裡開始重寫。19一份公告分為兩種格式,加上兩個可選變體。選擇最適合您推出的格式,然後從那裡開始重寫。

18 20 

19### 發送前21<h3 id="before-you-send">

22 發送前

23</h3>

20 24 

21在公告發出前,請完成此檢查清單。每一項都會關閉一個差距,否則會變成推出當天的支援討論串。25在公告發出前,請完成此檢查清單。每一項都會關閉一個差距,否則會變成推出當天的支援討論串。

22 26 


29| 為前 48 小時指定的頻道擁有者 | 未回答的推出當天問題會扼殺動力 |33| 為前 48 小時指定的頻道擁有者 | 未回答的推出當天問題會扼殺動力 |

30| 已安排一位 C 級主管贊助者發送或共同簽署公告 | 由高管發送的推出在第一週採用率上始終比由管理員或工具團隊發送的要高 |34| 已安排一位 C 級主管贊助者發送或共同簽署公告 | 由高管發送的推出在第一週採用率上始終比由管理員或工具團隊發送的要高 |

31 35 

32### 公告36<h3 id="the-announcement">

37 公告

38</h3>

33 39 

34將此用作您的標準組織範圍推出訊息。它涵蓋了 Claude Code 是什麼,提供了兩分鐘的安裝路徑,為讀者提供了一個具體的任務來嘗試,並在任何人必須提出問題之前回答了 "我的程式碼去哪裡了?"。40將此用作您的標準組織範圍推出訊息。它涵蓋了 Claude Code 是什麼,提供了兩分鐘的安裝路徑,為讀者提供了一個具體的任務來嘗試,並在任何人必須提出問題之前回答了 "我的程式碼去哪裡了?"。

35 41 


94 </Tab>100 </Tab>

95</Tabs>101</Tabs>

96 102 

97### 執行贊助商變體103<h3 id="executive-sponsor-variant">

104 執行贊助商變體

105</h3>

98 106 

99從您的贊助執行官(如 CTO、CIO 或 SVP 工程)發送此訊息,使用他們的名字和帳戶。由高管名義發出的推出在開啟率和第一週啟用速度上始終比來自管理員或工具團隊的相同訊息要高。它表示公司優先事項,而不是可選實驗。107從您的贊助執行官(如 CTO、CIO 或 SVP 工程)發送此訊息,使用他們的名字和帳戶。由高管名義發出的推出在開啟率和第一週啟用速度上始終比來自管理員或工具團隊的相同訊息要高。它表示公司優先事項,而不是可選實驗。

100 108 


138 </Tab>146 </Tab>

139</Tabs>147</Tabs>

140 148 

141### 試點小組變體149<h3 id="pilot-group-variant">

150 試點小組變體

151</h3>

142 152 

143用於分階段推出。僅發送給試點隊列。153用於分階段推出。僅發送給試點隊列。

144 154 


157直到您看到 "plan"。Claude 將在觸及任何檔案前準確說明它打算做什麼。這是校準您應該信任多少的最快方式。167直到您看到 "plan"。Claude 將在觸及任何檔案前準確說明它打算做什麼。這是校準您應該信任多少的最快方式。

158```168```

159 169 

160### 冠軍招募直訊170<h3 id="champion-recruitment-dm">

171 冠軍招募直訊

172</h3>

161 173 

162推出後,直訊在 `#claude-code` 中最活躍的兩三個人。174推出後,直訊在 `#claude-code` 中最活躍的兩三個人。

163 175 


168想讓這成為半官方的嗎?低投入:主要是繼續發佈您正在發佈的內容,加上新功能的首先嘗試和與 Anthropic 團隊的直接聯繫。如果您有興趣,我可以分享一個簡短的遊戲手冊。180想讓這成為半官方的嗎?低投入:主要是繼續發佈您正在發佈的內容,加上新功能的首先嘗試和與 Anthropic 團隊的直接聯繫。如果您有興趣,我可以分享一個簡短的遊戲手冊。

169```181```

170 182 

171## 提示和技巧行銷活動183<h2 id="tips-and-tricks-campaign">

184 提示和技巧行銷活動

185</h2>

172 186 

173設計用於在推出後推動功能啟用的現成 Slack 或 Teams 訊息。每個都遵循相同的模式:一個鉤子、收益、一個 "現在嘗試" 提示和一個文件連結。在 `#claude-code` 中每週滴灌一兩個,或選擇與您團隊差距相符的少數幾個。它們獨立存在,沒有必需的順序。187設計用於在推出後推動功能啟用的現成 Slack 或 Teams 訊息。每個都遵循相同的模式:一個鉤子、收益、一個 "現在嘗試" 提示和一個文件連結。在 `#claude-code` 中每週滴灌一兩個,或選擇與您團隊差距相符的少數幾個。它們獨立存在,沒有必需的順序。

174 188 

175直接從每個區塊複製訊息正文到 Slack 或 Teams。在發送前替換 `[括號中的佔位符]`。189直接從每個區塊複製訊息正文到 Slack 或 Teams。在發送前替換 `[括號中的佔位符]`。

176 190 

177### 開始使用191<h3 id="get-started">

192 開始使用

193</h3>

178 194 

179**選擇正確的模型**195**選擇正確的模型**

180 196 


215📖 快速入門 → https://code.claude.com/docs/en/quickstart231📖 快速入門 → https://code.claude.com/docs/en/quickstart

216```232```

217 233 

218### 專案記憶234<h3 id="project-memory">

235 專案記憶

236</h3>

219 237 

220**`/init` 和 CLAUDE.md**238**`/init` 和 CLAUDE.md**

221 239 


247📖 參考檔案 → https://code.claude.com/docs/en/common-workflows265📖 參考檔案 → https://code.claude.com/docs/en/common-workflows

248```266```

249 267 

250### 控制和安全268<h3 id="control-and-safety">

269 控制和安全

270</h3>

251 271 

252**許可模式**272**許可模式**

253 273 


279📖 檢查點 → https://code.claude.com/docs/en/checkpointing299📖 檢查點 → https://code.claude.com/docs/en/checkpointing

280```300```

281 301 

282### 連接您的工具302<h3 id="connect-your-tools">

303 連接您的工具

304</h3>

283 305 

284**MCP 連接器**306**MCP 連接器**

285 307 


295📖 MCP 連接器 → https://code.claude.com/docs/en/mcp317📖 MCP 連接器 → https://code.claude.com/docs/en/mcp

296```318```

297 319 

298### 自動化您的工作流程320<h3 id="automate-your-workflows">

321 自動化您的工作流程

322</h3>

299 323 

300**Skills**324**Skills**

301 325 


325📖 Hooks 指南 → https://code.claude.com/docs/en/hooks-guide349📖 Hooks 指南 → https://code.claude.com/docs/en/hooks-guide

326```350```

327 351 

328### 日常開發352<h3 id="day-to-day-development">

353 日常開發

354</h3>

329 355 

330**螢幕截圖和圖像**356**螢幕截圖和圖像**

331 357 


356📖 建立拉取請求 → https://code.claude.com/docs/en/common-workflows382📖 建立拉取請求 → https://code.claude.com/docs/en/common-workflows

357```383```

358 384 

359### 分享和擴展385<h3 id="share-and-scale">

386 分享和擴展

387</h3>

360 388 

361**Plugins**389**Plugins**

362 390 


372📖 Plugins → https://code.claude.com/docs/en/plugins400📖 Plugins → https://code.claude.com/docs/en/plugins

373```401```

374 402 

375### 安全和管理403<h3 id="security-and-admin">

404 安全和管理

405</h3>

376 406 

377**安全架構**407**安全架構**

378 408 


408📖 最佳實踐 → https://code.claude.com/docs/en/best-practices438📖 最佳實踐 → https://code.claude.com/docs/en/best-practices

409```439```

410 440 

411## 快速參考441<h2 id="quick-reference">

442 快速參考

443</h2>

412 444 

413### 常見問題解答回應445<h3 id="faq-responses">

446 常見問題解答回應

447</h3>

414 448 

415針對您最常被問到的問題的單行回覆。449針對您最常被問到的問題的單行回覆。

416 450 


423| "這與 Copilot 有什麼不同?" | Copilot 自動完成行。Claude Code 是一個讀取檔案、執行命令和進行多檔案編輯的代理。[概述 →](/zh-TW/overview) |457| "這與 Copilot 有什麼不同?" | Copilot 自動完成行。Claude Code 是一個讀取檔案、執行命令和進行多檔案編輯的代理。[概述 →](/zh-TW/overview) |

424| "我應該首先嘗試什麼?" | 您一直在推遲的錯誤,因為它很乏味。"檔案 \[file] 中的測試不穩定,找出原因。" [快速入門 →](/zh-TW/quickstart) |458| "我應該首先嘗試什麼?" | 您一直在推遲的錯誤,因為它很乏味。"檔案 \[file] 中的測試不穩定,找出原因。" [快速入門 →](/zh-TW/quickstart) |

425 459 

426### 提示範本460<h3 id="prompt-templates">

461 提示範本

462</h3>

427 463 

428與已安裝但不確定要求什麼的工程師分享這些入門提示。每一個都以它在實際會話中輸入的方式措辭;用您自己儲存庫中的檔案替換括號中的部分。464與已安裝但不確定要求什麼的工程師分享這些入門提示。每一個都以它在實際會話中輸入的方式措辭;用您自己儲存庫中的檔案替換括號中的部分。

429 465 

computer-use.md +68 −21

Details

16 16 

17本頁涵蓋 computer use 在 CLI 中的運作方式。如需 Desktop 應用程式,請參閱 [Desktop 中的 computer use](/zh-TW/desktop#let-claude-use-your-computer)。17本頁涵蓋 computer use 在 CLI 中的運作方式。如需 Desktop 應用程式,請參閱 [Desktop 中的 computer use](/zh-TW/desktop#let-claude-use-your-computer)。

18 18 

19## 您可以使用 computer use 做什麼19<h2 id="what-you-can-do-with-computer-use">

20 您可以使用 computer use 做什麼

21</h2>

20 22 

21Computer use 處理需要 GUI 的任務:任何您通常必須離開終端機並手動執行的操作。23Computer use 處理需要 GUI 的任務:任何您通常必須離開終端機並手動執行的操作。

22 24 


25* **除錯視覺和版面配置問題**:告訴 Claude「模態視窗在小視窗上被裁剪」。Claude 調整視窗大小、重現錯誤、擷取螢幕截圖、修補 CSS,並驗證修復。Claude 看到您看到的內容。27* **除錯視覺和版面配置問題**:告訴 Claude「模態視窗在小視窗上被裁剪」。Claude 調整視窗大小、重現錯誤、擷取螢幕截圖、修補 CSS,並驗證修復。Claude 看到您看到的內容。

26* **驅動僅限 GUI 的工具**:與設計工具、硬體控制面板、iOS 模擬器或沒有 CLI 或 API 的專有應用程式互動。28* **驅動僅限 GUI 的工具**:與設計工具、硬體控制面板、iOS 模擬器或沒有 CLI 或 API 的專有應用程式互動。

27 29 

28## Computer use 何時適用30<h2 id="when-computer-use-applies">

31 Computer use 何時適用

32</h2>

29 33 

30Claude 有多種方式與應用程式或服務互動。Computer use 是最廣泛和最慢的,因此 Claude 首先嘗試最精確的工具:34Claude 有多種方式與應用程式或服務互動。Computer use 是最廣泛和最慢的,因此 Claude 首先嘗試最精確的工具:

31 35 


36 40 

37螢幕控制保留用於其他工具無法到達的事物:原生應用程式、模擬器和沒有 API 的工具。41螢幕控制保留用於其他工具無法到達的事物:原生應用程式、模擬器和沒有 API 的工具。

38 42 

39## 啟用 computer use43<h2 id="enable-computer-use">

44 啟用 computer use

45</h2>

40 46 

41Computer use 可作為稱為 `computer-use` 的內建 MCP server 使用。預設情況下它是關閉的,直到您啟用它。47Computer use 可作為稱為 `computer-use` 的內建 MCP server 使用。預設情況下它是關閉的,直到您啟用它。

42 48 


72沒有任何內容崩潰。擷取您找到的任何錯誤狀態的螢幕截圖。78沒有任何內容崩潰。擷取您找到的任何錯誤狀態的螢幕截圖。

73```79```

74 80 

75## 按工作階段核准應用程式81<h2 id="approve-apps-per-session">

82 按工作階段核准應用程式

83</h2>

76 84 

77啟用 `computer-use` 伺服器不會授予 Claude 存取您機器上每個應用程式的權限。Claude 在工作階段中第一次需要特定應用程式時,您的終端機中會出現提示,顯示:85啟用 `computer-use` 伺服器不會授予 Claude 存取您機器上每個應用程式的權限。Claude 在工作階段中第一次需要特定應用程式時,您的終端機中會出現提示,顯示:

78 86 


94 102 

95Claude 的控制級別也因應用程式類別而異:瀏覽器和交易平台是僅檢視,終端機和 IDE 是僅點擊,其他所有內容都獲得完全控制。請參閱 [Desktop 中的應用程式權限](/zh-TW/desktop#app-permissions)以取得完整的層級細目。103Claude 的控制級別也因應用程式類別而異:瀏覽器和交易平台是僅檢視,終端機和 IDE 是僅點擊,其他所有內容都獲得完全控制。請參閱 [Desktop 中的應用程式權限](/zh-TW/desktop#app-permissions)以取得完整的層級細目。

96 104 

97## Claude 如何在您的螢幕上工作105<h2 id="how-claude-works-on-your-screen">

106 Claude 如何在您的螢幕上工作

107</h2>

98 108 

99了解流程有助於您預期 Claude 將執行的操作以及如何進行干預。109了解流程有助於您預期 Claude 將執行的操作以及如何進行干預。

100 110 

101### 一次一個工作階段111<h3 id="one-session-at-a-time">

112 一次一個工作階段

113</h3>

102 114 

103Computer use 在活動時持有機器範圍的鎖定。如果另一個 Claude Code 工作階段已在使用您的電腦,新的嘗試會失敗,並顯示一條訊息,告訴您哪個工作階段持有鎖定。先完成或退出該工作階段。115Computer use 在活動時持有機器範圍的鎖定。如果另一個 Claude Code 工作階段已在使用您的電腦,新的嘗試會失敗,並顯示一條訊息,告訴您哪個工作階段持有鎖定。先完成或退出該工作階段。

104 116 

105### Claude 工作時應用程式被隱藏117<h3 id="apps-are-hidden-while-claude-works">

118 Claude 工作時應用程式被隱藏

119</h3>

106 120 

107當 Claude 開始控制您的螢幕時,其他可見的應用程式會被隱藏,以便 Claude 只與已核准的應用程式互動。您的終端機視窗保持可見並從螢幕截圖中排除,因此您可以觀看工作階段,Claude 永遠看不到自己的輸出。121當 Claude 開始控制您的螢幕時,其他可見的應用程式會被隱藏,以便 Claude 只與已核准的應用程式互動。您的終端機視窗保持可見並從螢幕截圖中排除,因此您可以觀看工作階段,Claude 永遠看不到自己的輸出。

108 122 

109當 Claude 完成該輪次時,隱藏的應用程式會自動恢復。123當 Claude 完成該輪次時,隱藏的應用程式會自動恢復。

110 124 

111### 隨時停止125<h3 id="screenshots-are-downscaled-automatically">

126 螢幕截圖會自動縮小

127</h3>

128 

129Claude Code 在將每個螢幕截圖傳送到模型之前會自動縮小它。您不需要降低顯示解析度或在 Retina 或其他高解析度顯示器上調整視窗大小。16 吋 MacBook Pro 以原生 Retina 解析度擷取 3456×2234,並縮小到大約 1372×887,保持寬高比。

130 

131沒有設定可以變更目標大小。如果螢幕上的文字或控制項在縮小後對 Claude 來說太小而無法讀取,請增加應用程式中的大小,而不是變更您的顯示解析度。

132 

133<h3 id="stop-at-any-time">

134 隨時停止

135</h3>

112 136 

113當 Claude 獲得鎖定時,會出現 macOS 通知:「Claude 正在使用您的電腦 · 按 Esc 停止」。在任何地方按 `Esc` 立即中止目前操作,或在終端機中按 `Ctrl+C`。無論哪種方式,Claude 都會釋放鎖定、取消隱藏您的應用程式,並將控制權返回給您。137當 Claude 獲得鎖定時,會出現 macOS 通知:「Claude 正在使用您的電腦 · 按 Esc 停止」。在任何地方按 `Esc` 立即中止目前操作,或在終端機中按 `Ctrl+C`。無論哪種方式,Claude 都會釋放鎖定、取消隱藏您的應用程式,並將控制權返回給您。

114 138 

115Claude 完成時會出現第二個通知。139Claude 完成時會出現第二個通知。

116 140 

117## 安全性和信任邊界141<h2 id="safety-and-the-trust-boundary">

142 安全性和信任邊界

143</h2>

118 144 

119<Warning>145<Warning>

120 與 [沙箱化 Bash 工具](/zh-TW/sandboxing)不同,computer use 在您的實際桌面上執行,可以存取您核准的應用程式。Claude 檢查每個操作並標記來自螢幕上內容的潛在提示注入,但信任邊界是不同的。請參閱 [computer use 安全指南](https://support.claude.com/en/articles/14128542)以了解最佳實踐。146 與 [沙箱化 Bash 工具](/zh-TW/sandboxing)不同,computer use 在您的實際桌面上執行,可以存取您核准的應用程式。Claude 檢查每個操作並標記來自螢幕上內容的潛在提示注入,但信任邊界是不同的。請參閱 [computer use 安全指南](https://support.claude.com/en/articles/14128542)以了解最佳實踐。


128* **全域逃脫**:`Esc` 鍵可以從任何地方中止 computer use,並且按鍵被消耗,因此提示注入無法使用它來關閉對話框。154* **全域逃脫**:`Esc` 鍵可以從任何地方中止 computer use,並且按鍵被消耗,因此提示注入無法使用它來關閉對話框。

129* **鎖定檔案**:一次只有一個工作階段可以控制您的機器。155* **鎖定檔案**:一次只有一個工作階段可以控制您的機器。

130 156 

131## 範例工作流程157<h2 id="example-workflows">

158 範例工作流程

159</h2>

132 160 

133這些範例顯示將 computer use 與編碼任務結合的常見方式。161這些範例顯示將 computer use 與編碼任務結合的常見方式。

134 162 

135### 驗證原生建置163<h3 id="validate-a-native-build">

164 驗證原生建置

165</h3>

136 166 

137對 macOS 或 iOS 應用程式進行變更後,讓 Claude 在一次通過中編譯和驗證:167對 macOS 或 iOS 應用程式進行變更後,讓 Claude 在一次通過中編譯和驗證:

138 168 


143 173 

144Claude 執行 `xcodebuild`、啟動應用程式、與 UI 互動,並報告它發現的內容。174Claude 執行 `xcodebuild`、啟動應用程式、與 UI 互動,並報告它發現的內容。

145 175 

146### 重現版面配置錯誤176<h3 id="reproduce-a-layout-bug">

177 重現版面配置錯誤

178</h3>

147 179 

148當視覺錯誤僅在特定視窗大小出現時,讓 Claude 找到它:180當視覺錯誤僅在特定視窗大小出現時,讓 Claude 找到它:

149 181 


155 187 

156Claude 調整視窗大小、擷取損壞的狀態,並讀取相關的樣式表。188Claude 調整視窗大小、擷取損壞的狀態,並讀取相關的樣式表。

157 189 

158### 測試模擬器流程190<h3 id="test-a-simulator-flow">

191 測試模擬器流程

192</h3>

159 193 

160無需編寫 XCTest 即可驅動 iOS 模擬器:194無需編寫 XCTest 即可驅動 iOS 模擬器:

161 195 


166 200 

167Claude 以您使用滑鼠的方式控制模擬器。201Claude 以您使用滑鼠的方式控制模擬器。

168 202 

169## 與 Desktop 應用程式的差異203<h2 id="differences-from-the-desktop-app">

204 與 Desktop 應用程式的差異

205</h2>

170 206 

171CLI 和 Desktop 表面共享相同的 computer use 引擎。一些 Desktop 特定的控制項在 CLI 中還不可用207CLI 和 Desktop 表面共享相同的 computer use 引擎,有一些差異

172 208 

173| 功能 | Desktop | CLI |209| 功能 | Desktop | CLI |

174| :---------- | :----------------------------------- | :-------------------------- |210| :---------- | :----------------------------------- | :-------------------------- |

211| 平台 | macOS 和 Windows | 僅 macOS |

175| 啟用 | **設定 > 一般**中的切換(在 **Desktop 應用程式**下) | 在 `/mcp` 中啟用 `computer-use` |212| 啟用 | **設定 > 一般**中的切換(在 **Desktop 應用程式**下) | 在 `/mcp` 中啟用 `computer-use` |

176| 拒絕的應用程式清單 | 可在設定中設定 | 尚不可用 |213| 拒絕的應用程式清單 | 可在設定中設定 | 尚不可用 |

177| 自動取消隱藏切換 | 可選 | 始終開啟 |214| 自動取消隱藏切換 | 可選 | 始終開啟 |

178| Dispatch 整合 | Dispatch 生成的工作階段可以使用 computer use | 不適用 |215| Dispatch 整合 | Dispatch 生成的工作階段可以使用 computer use | 不適用 |

179 216 

180## 疑難排解217<h2 id="troubleshooting">

218 疑難排解

219</h2>

181 220 

182### 「Computer use 正在被另一個 Claude 工作階段使用」221<h3 id="computer-use-is-in-use-by-another-claude-session">

222 「Computer use 正在被另一個 Claude 工作階段使用」

223</h3>

183 224 

184另一個 Claude Code 工作階段持有鎖定。完成該工作階段中的任務或退出它。如果另一個工作階段崩潰,當 Claude 偵測到該程序不再執行時,鎖定會自動釋放。225另一個 Claude Code 工作階段持有鎖定。完成該工作階段中的任務或退出它。如果另一個工作階段崩潰,當 Claude 偵測到該程序不再執行時,鎖定會自動釋放。

185 226 

186### macOS 權限提示不斷重新出現227<h3 id="macos-permissions-prompt-keeps-reappearing">

228 macOS 權限提示不斷重新出現

229</h3>

187 230 

188授予螢幕錄製權限後,macOS 有時需要重新啟動請求程序。完全退出 Claude Code 並啟動新工作階段。如果提示仍然存在,開啟**系統設定 > 隱私與安全 > 螢幕錄製**並確認您的終端機應用程式已列出並啟用。231授予螢幕錄製權限後,macOS 有時需要重新啟動請求程序。完全退出 Claude Code 並啟動新工作階段。如果提示仍然存在,開啟**系統設定 > 隱私與安全 > 螢幕錄製**並確認您的終端機應用程式已列出並啟用。

189 232 

190### `computer-use` 未出現在 `/mcp` 中233<h3 id="computer-use-doesn-t-appear-in-/mcp">

234 `computer-use` 未出現在 `/mcp` 中

235</h3>

191 236 

192伺服器僅在符合條件的設定上出現。檢查:237伺服器僅在符合條件的設定上出現。檢查:

193 238 

194* 您在 macOS 上。Computer use 在 Linux 或 Windows 上不可用239* 您在 macOS 上。Computer use 在 CLI 中不適用於 Linux 或 Windows。在 Windows 上,請改用 [Desktop 中的 computer use](/zh-TW/desktop#let-claude-use-your-computer)

195* 您執行的是 Claude Code v2.1.85 或更新版本。執行 `claude --version` 以檢查。240* 您執行的是 Claude Code v2.1.85 或更新版本。執行 `claude --version` 以檢查。

196* 您在 Pro 或 Max 方案上。執行 `/status` 以確認您的訂閱。241* 您在 Pro 或 Max 方案上。執行 `/status` 以確認您的訂閱。

197* 您透過 claude.ai 進行身份驗證。Computer use 不適用於 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 等第三方提供者。如果您完全透過第三方提供者存取 Claude,您需要單獨的 claude.ai 帳戶才能使用此功能。242* 您透過 claude.ai 進行身份驗證。Computer use 不適用於 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 等第三方提供者。如果您完全透過第三方提供者存取 Claude,您需要單獨的 claude.ai 帳戶才能使用此功能。

198* 您在互動式工作階段中。Computer use 在使用 `-p` 旗標的非互動式模式中不可用。243* 您在互動式工作階段中。Computer use 在使用 `-p` 旗標的非互動式模式中不可用。

199 244 

200## 另請參閱245<h2 id="see-also">

246 另請參閱

247</h2>

201 248 

202* [Desktop 中的 Computer use](/zh-TW/desktop#let-claude-use-your-computer):具有圖形設定頁面的相同功能249* [Desktop 中的 Computer use](/zh-TW/desktop#let-claude-use-your-computer):具有圖形設定頁面的相同功能

203* [Claude in Chrome](/zh-TW/chrome):用於基於網路的任務的瀏覽器自動化250* [Claude in Chrome](/zh-TW/chrome):用於基於網路的任務的瀏覽器自動化

context-window.md +51 −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# 探索上下文視窗

6 

7> Claude Code 上下文視窗在會話期間如何填充的互動模擬。查看自動加載的內容、每個文件讀取的成本,以及規則和 hooks 何時觸發。

8 

9Claude Code 的上下文視窗包含 Claude 對您的會話所知的一切:您的指令、它讀取的文件、它自己的回應,以及從不在您的終端中出現的內容。下面的時間線介紹了加載的內容和時間。請參閱[書面分解](#what-the-timeline-shows)以獲取相同內容的列表形式。

10 

11## 時間線顯示的內容

12 

13該會話演示了一個現實流程,包含代表性的令牌計數:

14 

15* **在您輸入任何內容之前**:CLAUDE.md、自動記憶、MCP 工具名稱和技能描述都加載到上下文中。您自己的設置可能會在此處添加更多內容,例如[輸出樣式](/zh-TW/output-styles)或來自 [`--append-system-prompt`](/zh-TW/cli-reference) 的文本,兩者都以相同方式進入系統提示。

16* **當 Claude 工作時**:每個文件讀取都會添加到上下文中,[路徑範圍規則](/zh-TW/memory#path-specific-rules)會自動與匹配的文件一起加載,並且[PostToolUse hook](/zh-TW/hooks-guide)在每次編輯後觸發。

17* **後續提示**:[子代理](/zh-TW/sub-agents)在其自己的單獨上下文視窗中處理研究,因此大型文件讀取不會進入您的視窗。只有摘要和一個小的元數據預告片返回。

18* **最後**:`/compact` 用結構化摘要替換對話。大多數啟動內容會自動重新加載;下表顯示每個機制會發生什麼。

19 

20## 壓縮後的存活內容

21 

22當長會話壓縮時,Claude Code 會總結對話歷史以適應上下文視窗。您的指令會發生什麼取決於它們的加載方式:

23 

24| 機制 | 壓縮後 |

25| :-------------------------- | :------------------------------------------- |

26| 系統提示和輸出樣式 | 不變;不是消息歷史的一部分 |

27| 項目根目錄 CLAUDE.md 和無範圍規則 | 從磁盤重新注入 |

28| 自動記憶 | 從磁盤重新注入 |

29| 帶有 `paths:` frontmatter 的規則 | 丟失,直到再次讀取匹配的文件 |

30| 子目錄中的嵌套 CLAUDE.md | 丟失,直到再次讀取該子目錄中的文件 |

31| 調用的技能主體 | 重新注入,每個技能上限為 5,000 個令牌,總計 25,000 個令牌;最舊的優先刪除 |

32| Hooks | 不適用;hooks 作為代碼運行,不是上下文 |

33 

34路徑範圍規則和嵌套 CLAUDE.md 文件在讀取其觸發文件時加載到消息歷史中,因此壓縮會將它們與其他所有內容一起總結。下次 Claude 讀取匹配的文件時,它們會重新加載。如果規則必須在壓縮過程中持續存在,請刪除 `paths:` frontmatter 或將其移動到項目根目錄 CLAUDE.md。

35 

36技能主體在壓縮後重新注入,但大型技能會被截斷以適應每個技能的上限,一旦超過總預算,最舊的調用技能就會被刪除。截斷保留文件的開始部分,因此請將最重要的指令放在 `SKILL.md` 的頂部附近。

37 

38## 檢查您自己的會話

39 

40該可視化使用代表性數字。要在任何時刻查看您的實際上下文使用情況,請運行 `/context` 以獲取按類別的實時分解和優化建議。運行 `/memory` 以檢查在啟動時加載了哪些 CLAUDE.md 和自動記憶文件。

41 

42## 相關資源

43 

44有關時間線中顯示的功能的更深入覆蓋,請參閱這些頁面:

45 

46* [擴展 Claude Code](/zh-TW/features-overview):何時使用 CLAUDE.md 與技能與規則與 hooks 與 MCP

47* [存儲指令和記憶](/zh-TW/memory):CLAUDE.md 層次結構和自動記憶

48* [子代理](/zh-TW/sub-agents):將研究委託給單獨的上下文視窗

49* [最佳實踐](/zh-TW/best-practices):將上下文作為您的主要約束進行管理

50* [提示快取](/zh-TW/prompt-caching):哪些操作會使緩存的前綴失效

51* [減少令牌使用](/zh-TW/costs#reduce-token-usage):保持上下文使用低的策略

costs.md +71 −29

Details

12 12 

13本頁涵蓋如何[追蹤您的成本](#track-your-costs)、[管理團隊成本](#managing-costs-for-teams)和[減少 token 使用](#reduce-token-usage)。13本頁涵蓋如何[追蹤您的成本](#track-your-costs)、[管理團隊成本](#managing-costs-for-teams)和[減少 token 使用](#reduce-token-usage)。

14 14 

15## 追蹤您的成本15<h2 id="track-your-costs">

16 追蹤您的成本

17</h2>

16 18 

17### 使用 `/usage` 命令19<h3 id="using-the-/usage-command">

20 使用 `/usage` 命令

21</h3>

18 22 

19<Note>23<Note>

20 `/usage` 中的 Session 區塊顯示 API token 使用情況,適用於 API 使用者。Claude Max 和 Pro 訂閱者的使用情況已包含在其訂閱中,因此工作階段成本數字與計費無關。訂閱者會在同一畫面上看到計畫使用情況列和活動統計資訊24 `/usage` 中的 Session 區塊顯示 API token 使用情況,適用於 API 使用者。Claude Max 和 Pro 訂閱者的使用情況已包含在其訂閱中,因此工作階段成本數字與計費無關。訂閱者會在同一畫面上看到計畫使用情況列、活動統計資訊和使用情況明細

21</Note>25</Note>

22 26 

23`/usage` 命令為您目前的工作階段提供詳細的 token 使用統計資訊。美元數字是根據 token 計數在本地計算的估計值,可能與您的實際帳單不同。如需權威計費資訊,請參閱 [Claude Console](https://platform.claude.com/usage) 中的「使用情況」頁面。27`/usage` 頂部的 Session 區塊顯示您目前工作階段的詳細 token 使用統計資訊。美元數字是根據 token 計數在本地計算的估計值,可能與您的實際帳單不同。如需權威計費資訊,請參閱 [Claude Console](https://platform.claude.com/usage) 中的「使用情況」頁面。

24 28 

25```text theme={null}29```text theme={null}

26Total cost: $0.5530Total cost: $0.55


29Total code changes: 0 lines added, 0 lines removed33Total code changes: 0 lines added, 0 lines removed

30```34```

31 35 

32## 管理團隊成本36 Pro、Max、Team 或 Enterprise 計畫上,`/usage` 還會顯示計入您計畫限制的內容明細。它將最近的使用情況歸因於 skills、subagents、plugins 和個別 MCP servers,每個都顯示為總數的百分比。按 `d` 或 `w` 在過去 24 小時和過去 7 天之間切換。這些數字是近似值,根據此機器上的本地工作階段歷史記錄計算,因此不包括來自其他裝置或 claude.ai 的使用情況。

37 

38<h2 id="managing-costs-for-teams">

39 管理團隊成本

40</h2>

33 41 

34使用 Claude API 時,您可以在 Claude Code 工作區支出上[設定工作區支出限制](https://platform.claude.com/docs/zh-TW/build-with-claude/workspaces#workspace-limits)。管理員可以在 Console 中[檢視成本和使用情況報告](https://platform.claude.com/docs/zh-TW/build-with-claude/workspaces#usage-and-cost-tracking)。42使用 Claude API 時,您可以在 Claude Code 工作區支出上[設定工作區支出限制](https://platform.claude.com/docs/zh-TW/build-with-claude/workspaces#workspace-limits)。管理員可以在 Console 中[檢視成本和使用情況報告](https://platform.claude.com/docs/zh-TW/build-with-claude/workspaces#usage-and-cost-tracking)。

35 43 

44在 Pro 和 Max 方案上,您可以使用 `/usage-credits` 命令在使用額度上設定每月支出限制。如果您在仍有使用額度可用時達到該限制,Claude Code 會提示您提高或移除該限制,以便您可以繼續使用而無需離開 CLI。變更限制需要帳戶的計費存取權限。

45 

36<Note>46<Note>

37 當您首次使用 Claude Console 帳戶驗證 Claude Code 時,系統會自動為您建立一個名為「Claude Code」的工作區。此工作區為您的組織中所有 Claude Code 使用情況提供集中式成本追蹤和管理。您無法為此工作區建立 API 金鑰;它專門用於 Claude Code 驗證和使用。47 當您首次使用 Claude Console 帳戶驗證 Claude Code 時,系統會自動為您建立一個名為「Claude Code」的工作區。此工作區為您的組織中所有 Claude Code 使用情況提供集中式成本追蹤和管理。您無法為此工作區建立 API 金鑰;它專門用於 Claude Code 驗證和使用。

38 48 


41 51 

42在 Bedrock、Vertex 和 Foundry 上,Claude Code 不會從您的雲端傳送指標。若要取得成本指標,多家大型企業報告使用[LiteLLM](/zh-TW/llm-gateway#litellm-configuration),這是一個開源工具,可幫助公司[按金鑰追蹤支出](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend)。此專案與 Anthropic 無關,且尚未進行安全審計。52在 Bedrock、Vertex 和 Foundry 上,Claude Code 不會從您的雲端傳送指標。若要取得成本指標,多家大型企業報告使用[LiteLLM](/zh-TW/llm-gateway#litellm-configuration),這是一個開源工具,可幫助公司[按金鑰追蹤支出](https://docs.litellm.ai/docs/proxy/virtual_keys#tracking-spend)。此專案與 Anthropic 無關,且尚未進行安全審計。

43 53 

44### 速率限制建議54<h3 id="rate-limit-recommendations">

55 速率限制建議

56</h3>

45 57 

46為團隊設定 Claude Code 時,請根據您的組織規模考慮這些每位使用者的 Token Per Minute (TPM) 和 Request Per Minute (RPM) 建議:58為團隊設定 Claude Code 時,請根據您的組織規模考慮這些每位使用者的 Token Per Minute (TPM) 和 Request Per Minute (RPM) 建議:

47 59 


62 如果您預期會出現異常高的並行使用情況(例如與大型群組進行的即時培訓課程),您可能需要更高的每位使用者 TPM 配置。74 如果您預期會出現異常高的並行使用情況(例如與大型群組進行的即時培訓課程),您可能需要更高的每位使用者 TPM 配置。

63</Note>75</Note>

64 76 

65### Agent 團隊 token 成本77<h3 id="agent-team-token-costs">

78 Agent 團隊 token 成本

79</h3>

66 80 

67[Agent 團隊](/zh-TW/agent-teams)會產生多個 Claude Code 執行個體,每個都有自己的上下文視窗。Token 使用量會隨著活躍隊友數量和每個隊友執行時間的長短而擴展。81[Agent 團隊](/zh-TW/agent-teams)會產生多個 Claude Code 執行個體,每個都有自己的上下文視窗。Token 使用量會隨著活躍隊友數量和每個隊友執行時間的長短而擴展。

68 82 


74* 工作完成時清理團隊。活躍的隊友即使閒置也會繼續消耗 token。88* 工作完成時清理團隊。活躍的隊友即使閒置也會繼續消耗 token。

75* Agent 團隊預設為停用。在您的[settings.json](/zh-TW/settings)或環境中設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 以啟用它們。請參閱[啟用 agent 團隊](/zh-TW/agent-teams#enable-agent-teams)。89* Agent 團隊預設為停用。在您的[settings.json](/zh-TW/settings)或環境中設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 以啟用它們。請參閱[啟用 agent 團隊](/zh-TW/agent-teams#enable-agent-teams)。

76 90 

77## 減少 token 使用91<h2 id="reduce-token-usage">

92 減少 token 使用

93</h2>

78 94 

79Token 成本隨上下文大小而擴展:Claude 處理的上下文越多,您使用的 token 就越多。Claude Code 透過 prompt caching(減少重複內容(如系統提示)的成本)和 auto-compact(在接近上下文限制時總結對話歷史記錄)自動優化成本。95Token 成本隨上下文大小而擴展:Claude 處理的上下文越多,您使用的 token 就越多。Claude Code 透過 [prompt caching](/zh-TW/prompt-caching)(減少重複內容(如系統提示)的成本)和 auto-compact(在接近上下文限制時總結對話歷史記錄)自動優化成本。

80 96 

81以下策略可幫助您保持上下文較小並降低每條訊息的成本。97以下策略可幫助您保持上下文較小並降低每條訊息的成本。

82 98 

83### 主動管理上下文99<h3 id="manage-context-proactively">

100 主動管理上下文

101</h3>

84 102 

85使用 `/usage` 檢查您目前的 token 使用情況,或[設定您的狀態行](/zh-TW/statusline#context-window-usage)以持續顯示它。103使用 `/usage` 檢查您目前的 token 使用情況,或[設定您的狀態行](/zh-TW/statusline#context-window-usage)以持續顯示它。

86 104 


95When you are using compact, please focus on test output and code changes113When you are using compact, please focus on test output and code changes

96```114```

97 115 

98### 選擇正確的模型116<h3 id="choose-the-right-model">

117 選擇正確的模型

118</h3>

99 119 

100Sonnet 能很好地處理大多數編碼任務,成本低於 Opus。為複雜的架構決策或多步驟推理保留 Opus。使用 `/model` 在工作階段中途切換模型,或在 `/config` 中設定預設值。對於簡單的 subagent 任務,在您的[subagent 設定](/zh-TW/sub-agents#choose-a-model)中指定 `model: haiku`。120Sonnet 能很好地處理大多數編碼任務,成本低於 Opus。為複雜的架構決策或多步驟推理保留 Opus。使用 `/model` 在工作階段中途切換模型,或在 `/config` 中設定預設值。對於簡單的 subagent 任務,在您的 [subagent 設定](/zh-TW/sub-agents#choose-a-model)中指定 `model: haiku`。

101 121 

102### 減少 MCP 伺服器開銷122<h3 id="reduce-mcp-server-overhead">

123 減少 MCP 伺服器開銷

124</h3>

103 125 

104MCP 工具定義[預設為延遲](/zh-TW/mcp#scale-with-mcp-tool-search),因此只有工具名稱進入上下文,直到 Claude 使用特定工具。執行 `/context` 以查看消耗空間的內容。126MCP 工具定義[預設為延遲](/zh-TW/mcp#scale-with-mcp-tool-search),因此只有工具名稱進入上下文,直到 Claude 使用特定工具。執行 `/context` 以查看消耗空間的內容。

105 127 

106* **在可用時偏好 CLI 工具**:`gh`、`aws`、`gcloud` 和 `sentry-cli` 等工具比 MCP 伺服器更具上下文效率,因為它們不會新增任何每個工具的列表。Claude 可以直接執行 CLI 命令。128* **在可用時偏好 CLI 工具**:`gh`、`aws`、`gcloud` 和 `sentry-cli` 等工具比 MCP 伺服器更具上下文效率,因為它們不會新增任何每個工具的列表。Claude 可以直接執行 CLI 命令。

107* **停用未使用的伺服器**:執行 `/mcp` 以查看已設定的伺服器,並停用任何您未主動使用的伺服器。129* **停用未使用的伺服器**:執行 `/mcp` 以查看已設定的伺服器,並停用任何您未主動使用的伺服器。

108 130 

109### 為型別化語言安裝程式碼智慧外掛131<h3 id="install-code-intelligence-plugins-for-typed-languages">

132 為型別化語言安裝程式碼智慧外掛

133</h3>

110 134 

111[程式碼智慧外掛](/zh-TW/discover-plugins#code-intelligence)為 Claude 提供精確的符號導航,而不是基於文字的搜尋,在探索不熟悉的程式碼時減少不必要的檔案讀取。單一「前往定義」呼叫取代了可能需要的 grep 後跟讀取多個候選檔案。已安裝的語言伺服器也會在編輯後自動報告型別錯誤,因此 Claude 無需執行編譯器即可捕捉錯誤。135[程式碼智慧外掛](/zh-TW/discover-plugins#code-intelligence)為 Claude 提供精確的符號導航,而不是基於文字的搜尋,在探索不熟悉的程式碼時減少不必要的檔案讀取。單一「前往定義」呼叫取代了可能需要的 grep 後跟讀取多個候選檔案。已安裝的語言伺服器也會在編輯後自動報告型別錯誤,因此 Claude 無需執行編譯器即可捕捉錯誤。

112 136 

113### 將處理卸載到 hooksskills137<h3 id="offload-processing-to-hooks-and-skills">

138 將處理卸載到 hooks 和 skills

139</h3>

114 140 

115自訂[hooks](/zh-TW/hooks)可以在 Claude 看到資料之前對其進行預處理。Claude 不是讀取 10,000 行日誌檔案來尋找錯誤,hook 可以 grep `ERROR` 並僅返回匹配的行,將上下文從數萬個 token 減少到數百個。141自訂 [hooks](/zh-TW/hooks)可以在 Claude 看到資料之前對其進行預處理。Claude 不是讀取 10,000 行日誌檔案來尋找錯誤,hook 可以 grep `ERROR` 並僅返回匹配的行,將上下文從數萬個 token 減少到數百個。

116 142 

117[skill](/zh-TW/skills)可以為 Claude 提供領域知識,因此它不必進行探索。例如,「codebase-overview」skill 可以描述您的專案架構、關鍵目錄和命名慣例。當 Claude 呼叫該 skill 時,它會立即獲得此上下文,而不是花費 token 讀取多個檔案來理解結構。143[skill](/zh-TW/skills)可以為 Claude 提供領域知識,因此它不必進行探索。例如,「codebase-overview」skill 可以描述您的專案架構、關鍵目錄和命名慣例。當 Claude 呼叫該 skill 時,它會立即獲得此上下文,而不是花費 token 讀取多個檔案來理解結構。

118 144 


120 146 

121<Tabs>147<Tabs>

122 <Tab title="settings.json">148 <Tab title="settings.json">

123 將此新增到您的[settings.json](/zh-TW/settings#settings-files)以在每個 Bash 命令之前執行 hook:149 將此新增到您的 [settings.json](/zh-TW/settings#settings-files)以在每個 Bash 命令之前執行 hook:

124 150 

125 ```json theme={null}151 ```json theme={null}

126 {152 {


160 </Tab>186 </Tab>

161</Tabs>187</Tabs>

162 188 

163### 將指示從 CLAUDE.md 移至 skills189<h3 id="move-instructions-from-claude-md-to-skills">

190 將指示從 CLAUDE.md 移至 skills

191</h3>

164 192 

165您的[CLAUDE.md](/zh-TW/memory)檔案在工作階段開始時載入到上下文中。如果它包含特定工作流程的詳細指示(例如 PR 審查或資料庫遷移),即使您在進行不相關的工作時,這些 token 也會存在。[Skills](/zh-TW/skills)僅在呼叫時按需載入,因此將專門指示移至 skills 可以保持您的基本上下文較小。目標是透過僅包含必要內容來將 CLAUDE.md 保持在 200 行以下。193您的 [CLAUDE.md](/zh-TW/memory)檔案在工作階段開始時載入到上下文中。如果它包含特定工作流程的詳細指示(例如 PR 審查或資料庫遷移),即使您在進行不相關的工作時,這些 token 也會存在。[Skills](/zh-TW/skills)僅在呼叫時按需載入,因此將專門指示移至 skills 可以保持您的基本上下文較小。目標是透過僅包含必要內容來將 CLAUDE.md 保持在 200 行以下。

166 194 

167### 調整延伸思考195<h3 id="adjust-extended-thinking">

196 調整延伸思考

197</h3>

168 198 

169延伸思考預設為啟用,因為它可以顯著改善複雜規劃和推理任務的效能。思考 token 會作為輸出 token 計費,預設預算可能是每個請求數萬個 token,取決於模型。對於不需要深度推理的較簡單任務,您可以透過在 `/effort` 中降低[努力等級](/zh-TW/model-config#adjust-effort-level)或在 `/model` 中降低、在 `/config` 中停用思考或降低預算(例如,`MAX_THINKING_TOKENS=8000`)來降低成本。199延伸思考預設為啟用,因為它可以顯著改善複雜規劃和推理任務的效能。思考 token 會作為輸出 token 計費,預設預算可能是每個請求數萬個 token,取決於模型。對於不需要深度推理的較簡單任務,您可以透過在 `/effort` 中降低[努力等級](/zh-TW/model-config#adjust-effort-level)或在 `/model` 中降低、在 `/config` 中停用思考或降低預算(例如,`MAX_THINKING_TOKENS=8000`)來降低成本。

170 200 

171### 將詳細操作委派給 subagents201<h3 id="delegate-verbose-operations-to-subagents">

202 將詳細操作委派給 subagents

203</h3>

172 204 

173執行測試、擷取文件或處理日誌檔案可能會消耗大量上下文。將這些委派給[subagents](/zh-TW/sub-agents#isolate-high-volume-operations),以便詳細輸出保留在 subagent 的上下文中,而只有摘要返回到您的主要對話。205執行測試、擷取文件或處理日誌檔案可能會消耗大量上下文。將這些委派給 [subagents](/zh-TW/sub-agents#isolate-high-volume-operations),以便詳細輸出保留在 subagent 的上下文中,而只有摘要返回到您的主要對話。

174 206 

175### 管理 agent 團隊成本207<h3 id="manage-agent-team-costs">

208 管理 agent 團隊成本

209</h3>

176 210 

177當隊友在 plan mode 中執行時,Agent 團隊使用的 token 大約是標準工作階段的 7 倍,因為每位隊友維護自己的上下文視窗並作為單獨的 Claude 執行個體執行。保持團隊任務小且自成一體,以限制每位隊友的 token 使用。有關詳細資訊,請參閱[agent 團隊](/zh-TW/agent-teams)。211當隊友在 plan mode 中執行時,Agent 團隊使用的 token 大約是標準工作階段的 7 倍,因為每位隊友維護自己的上下文視窗並作為單獨的 Claude 執行個體執行。保持團隊任務小且自成一體,以限制每位隊友的 token 使用。有關詳細資訊,請參閱 [agent 團隊](/zh-TW/agent-teams)。

178 212 

179### 撰寫具體提示213<h3 id="write-specific-prompts">

214 撰寫具體提示

215</h3>

180 216 

181模糊的請求(例如「改進此程式碼庫」)會觸發廣泛掃描。具體的請求(例如「在 auth.ts 中的登入函式中新增輸入驗證」)讓 Claude 能夠以最少的檔案讀取高效地工作。217模糊的請求(例如「改進此程式碼庫」)會觸發廣泛掃描。具體的請求(例如「在 auth.ts 中的登入函式中新增輸入驗證」)讓 Claude 能夠以最少的檔案讀取高效地工作。

182 218 

183### 有效處理複雜任務219<h3 id="work-efficiently-on-complex-tasks">

220 有效處理複雜任務

221</h3>

184 222 

185對於較長或更複雜的工作,這些習慣有助於避免因走錯方向而浪費的 token:223對於較長或更複雜的工作,這些習慣有助於避免因走錯方向而浪費的 token:

186 224 

187* **對複雜任務使用 plan mode**:按 Shift+Tab 進入[plan mode](/zh-TW/common-workflows#use-plan-mode-for-safe-code-analysis),然後再進行實施。Claude 探索程式碼庫並提出一個方法供您批准,防止當初始方向錯誤時進行昂貴的返工。225* **對複雜任務使用 plan mode**:按 Shift+Tab 進入 [plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode),然後再進行實施。Claude 探索程式碼庫並提出一個方法供您批准,防止當初始方向錯誤時進行昂貴的返工。

188* **及早糾正方向**:如果 Claude 開始朝著錯誤的方向前進,按 Escape 立即停止。使用 `/rewind` 或雙擊 Escape 將對話和程式碼恢復到先前的 checkpoint。226* **及早糾正方向**:如果 Claude 開始朝著錯誤的方向前進,按 Escape 立即停止。使用 `/rewind` 或雙擊 Escape 將對話和程式碼恢復到先前的 checkpoint。

189* **提供驗證目標**:在您的提示中包含測試案例、貼上螢幕截圖或定義預期輸出。當 Claude 可以驗證自己的工作時,它會在您需要請求修復之前捕捉問題。227* **提供驗證目標**:在您的提示中包含測試案例、貼上螢幕截圖或定義預期輸出。當 Claude 可以驗證自己的工作時,它會在您需要請求修復之前捕捉問題。

190* **增量測試**:寫一個檔案、測試它,然後繼續。這會在問題便宜時及早捕捉問題。228* **增量測試**:寫一個檔案、測試它,然後繼續。這會在問題便宜時及早捕捉問題。

191 229 

192## 背景 token 使用230<h2 id="background-token-usage">

231 背景 token 使用

232</h2>

193 233 

194Claude Code 即使在閒置時也會為某些背景功能使用 token:234Claude Code 即使在閒置時也會為某些背景功能使用 token:

195 235 


198 238 

199這些背景程序即使沒有主動互動也會消耗少量 token(通常每個工作階段不到 \$0.04)。239這些背景程序即使沒有主動互動也會消耗少量 token(通常每個工作階段不到 \$0.04)。

200 240 

201## 瞭解 Claude Code 行為的變化241<h2 id="understanding-changes-in-claude-code-behavior">

242 瞭解 Claude Code 行為的變化

243</h2>

202 244 

203Claude Code 定期接收可能改變功能工作方式的更新,包括成本報告。執行 `claude --version` 以檢查您目前的版本。如有具體計費問題,請透過您的[Console 帳戶](https://platform.claude.com/login)聯絡 Anthropic 支援。245Claude Code 定期接收可能改變功能工作方式的更新,包括成本報告。執行 `claude --version` 以檢查您目前的版本。如有具體計費問題,請透過您的[Console 帳戶](https://platform.claude.com/login)聯絡 Anthropic 支援。

data-usage.md +36 −12

Details

6 6 

7> 了解 Anthropic 對 Claude 資料使用政策7> 了解 Anthropic 對 Claude 資料使用政策

8 8 

9## 資料政策9<h2 id="data-policies">

10 資料政策

11</h2>

10 12 

11### 資料訓練政策13<h3 id="data-training-policy">

14 資料訓練政策

15</h3>

12 16 

13**消費者使用者(免費、Pro 和 Max 方案)**:17**消費者使用者(免費、Pro 和 Max 方案)**:

14我們讓您可以選擇是否允許您的資料用於改進未來的 Claude 模型。當此設定開啟時,我們將使用來自免費、Pro 和 Max 帳戶的資料來訓練新模型(包括當您從這些帳戶使用 Claude Code 時)。18我們讓您可以選擇是否允許您的資料用於改進未來的 Claude 模型。當此設定開啟時,我們將使用來自免費、Pro 和 Max 帳戶的資料來訓練新模型(包括當您從這些帳戶使用 Claude Code 時)。

15 19 

16**商業使用者**:(Team 和 Enterprise 方案、API、第三方平台和 Claude Gov)維持現有政策:除非客戶選擇向我們提供資料以改進模型(例如,[開發者合作夥伴計畫](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)),否則 Anthropic 不會在商業條款下使用發送至 Claude Code 的程式碼或提示來訓練生成模型。20**商業使用者**:(Team 和 Enterprise 方案、API、第三方平台和 Claude Gov)維持現有政策:除非客戶選擇向我們提供資料以改進模型(例如,[開發者合作夥伴計畫](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)),否則 Anthropic 不會在商業條款下使用發送至 Claude Code 的程式碼或提示來訓練生成模型。

17 21 

18### 開發者合作夥伴計畫22<h3 id="development-partner-program">

23 開發者合作夥伴計畫

24</h3>

19 25 

20如果您明確選擇加入向我們提供訓練材料的方法,例如透過[開發者合作夥伴計畫](https://support.claude.com/en/articles/11174108-about-the-development-partner-program),我們可能會使用所提供的材料來訓練我們的模型。組織管理員可以明確選擇為其組織加入開發者合作夥伴計畫。請注意,此計畫僅適用於 Anthropic 第一方 API,不適用於 Bedrock 或 Vertex 使用者。26如果您明確選擇加入向我們提供訓練材料的方法,例如透過[開發者合作夥伴計畫](https://support.claude.com/en/articles/11174108-about-the-development-partner-program),我們可能會使用所提供的材料來訓練我們的模型。組織管理員可以明確選擇為其組織加入開發者合作夥伴計畫。請注意,此計畫僅適用於 Anthropic 第一方 API,不適用於 Bedrock 或 Vertex 使用者。

21 27 

22### 使用 `/feedback` 命令的回饋28<h3 id="feedback-using-the-/feedback-command">

29 使用 `/feedback` 命令的回饋

30</h3>

23 31 

24如果您選擇使用 `/feedback` 命令向我們發送有關 Claude Code 的回饋,我們可能會使用您的回饋來改進我們的產品和服務。透過 `/feedback` 共享的文字記錄會保留 5 年。32如果您選擇使用 `/feedback` 命令向我們發送有關 Claude Code 的回饋,我們可能會使用您的回饋來改進我們的產品和服務。透過 `/feedback` 共享的文字記錄會保留 5 年。

25 33 

26### 工作階段品質調查34<h3 id="session-quality-surveys">

35 工作階段品質調查

36</h3>

27 37 

28當您在 Claude Code 中看到「Claude 在此工作階段中表現如何?」提示時,回應此調查(包括選擇「關閉」),只會記錄您的評分。我們不會作為此評分提示本身的一部分收集或儲存任何對話文字記錄、輸入、輸出或其他工作階段資料。與豎起大拇指/向下大拇指回饋或 `/feedback` 報告不同,此工作階段品質調查是一個簡單的產品滿意度指標。38當您在 Claude Code 中看到「Claude 在此工作階段中表現如何?」提示時,回應此調查(包括選擇「關閉」),只會記錄您的評分。我們不會作為此評分提示本身的一部分收集或儲存任何對話文字記錄、輸入、輸出或其他工作階段資料。與豎起大拇指/向下大拇指回饋或 `/feedback` 報告不同,此工作階段品質調查是一個簡單的產品滿意度指標。

29 39 


37 47 

38若要停用這些調查,請設定 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`。當設定 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 時,調查也會停用。具有[零資料保留](/zh-TW/zero-data-retention)的組織,或組織政策停用產品回饋的組織,或設定了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 的組織,永遠不會看到此後續提問。阻止非必要流量但透過自己的 [OpenTelemetry 收集器](/zh-TW/monitoring-usage)捕獲調查回應的組織可以透過設定 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1` 選擇重新啟用調查。調查隨後只會將評分記錄到已設定的收集器。文字記錄共享後續提問和所有其他 Anthropic 相關的回饋流量保持停用。若要控制頻率而不是停用,請在您的設定檔中設定 [`feedbackSurveyRate`](/zh-TW/settings#available-settings) 為 `0` 到 `1` 之間的機率。48若要停用這些調查,請設定 `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`。當設定 `DISABLE_TELEMETRY`、`DO_NOT_TRACK` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 時,調查也會停用。具有[零資料保留](/zh-TW/zero-data-retention)的組織,或組織政策停用產品回饋的組織,或設定了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 的組織,永遠不會看到此後續提問。阻止非必要流量但透過自己的 [OpenTelemetry 收集器](/zh-TW/monitoring-usage)捕獲調查回應的組織可以透過設定 `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1` 選擇重新啟用調查。調查隨後只會將評分記錄到已設定的收集器。文字記錄共享後續提問和所有其他 Anthropic 相關的回饋流量保持停用。若要控制頻率而不是停用,請在您的設定檔中設定 [`feedbackSurveyRate`](/zh-TW/settings#available-settings) 為 `0` 到 `1` 之間的機率。

39 49 

40### 資料保留50<h3 id="data-retention">

51 資料保留

52</h3>

41 53 

42Anthropic 根據您的帳戶類型和偏好設定保留 Claude Code 資料。54Anthropic 根據您的帳戶類型和偏好設定保留 Claude Code 資料。

43 55 


59 71 

60如需完整詳細資訊,請查閱我們的[商業服務條款](https://www.anthropic.com/legal/commercial-terms)(適用於 Team、Enterprise 和 API 使用者)或[消費者條款](https://www.anthropic.com/legal/consumer-terms)(適用於免費、Pro 和 Max 使用者)和[隱私政策](https://www.anthropic.com/legal/privacy)。72如需完整詳細資訊,請查閱我們的[商業服務條款](https://www.anthropic.com/legal/commercial-terms)(適用於 Team、Enterprise 和 API 使用者)或[消費者條款](https://www.anthropic.com/legal/consumer-terms)(適用於免費、Pro 和 Max 使用者)和[隱私政策](https://www.anthropic.com/legal/privacy)。

61 73 

62## 資料存取74<h2 id="data-access">

75 資料存取

76</h2>

63 77 

64對於所有第一方使用者,您可以了解更多有關為[本機 Claude Code](#local-claude-code-data-flow-and-dependencies) 和[遠端 Claude Code](#cloud-execution-data-flow-and-dependencies) 記錄的資料。[遠端控制](/zh-TW/remote-control)工作階段遵循本機資料流,因為所有執行都在您的機器上進行。請注意,對於遠端 Claude Code,Claude 會存取您啟動 Claude Code 工作階段的儲存庫。Claude 不會存取您已連接但尚未在其中啟動工作階段的儲存庫。78對於所有第一方使用者,您可以了解更多有關為[本機 Claude Code](#local-claude-code-data-flow-and-dependencies) 和[遠端 Claude Code](#cloud-execution-data-flow-and-dependencies) 記錄的資料。[遠端控制](/zh-TW/remote-control)工作階段遵循本機資料流,因為所有執行都在您的機器上進行。請注意,對於遠端 Claude Code,Claude 會存取您啟動 Claude Code 工作階段的儲存庫。Claude 不會存取您已連接但尚未在其中啟動工作階段的儲存庫。

65 79 

66## 本機 Claude Code:資料流和相依性80<h2 id="local-claude-code-data-flow-and-dependencies">

81 本機 Claude Code:資料流和相依性

82</h2>

67 83 

68下圖顯示 Claude Code 在安裝和正常操作期間如何連接到外部服務。實線表示必需的連接,而虛線表示可選或使用者啟動的資料流。84下圖顯示 Claude Code 在安裝和正常操作期間如何連接到外部服務。實線表示必需的連接,而虛線表示可選或使用者啟動的資料流。

69 85 


82 98 

83Claude Code 建立在 Anthropic 的 API 上。有關 API 安全控制的詳細資訊,包括 API 記錄程序,請參閱 [Anthropic 信任中心](https://trust.anthropic.com)中的合規性文件。99Claude Code 建立在 Anthropic 的 API 上。有關 API 安全控制的詳細資訊,包括 API 記錄程序,請參閱 [Anthropic 信任中心](https://trust.anthropic.com)中的合規性文件。

84 100 

85### 雲端執行:資料流和相依性101<h3 id="cloud-execution-data-flow-and-dependencies">

102 雲端執行:資料流和相依性

103</h3>

86 104 

87使用[網路上的 Claude Code](/zh-TW/claude-code-on-the-web)時,工作階段在 Anthropic 管理的虛擬機器中執行,而不是在本機執行。在雲端環境中:105使用[網路上的 Claude Code](/zh-TW/claude-code-on-the-web)時,工作階段在 Anthropic 管理的虛擬機器中執行,而不是在本機執行。在雲端環境中:

88 106 


93 111 

94有關雲端執行的安全詳細資訊,請參閱[安全性](/zh-TW/security#cloud-execution-security)。112有關雲端執行的安全詳細資訊,請參閱[安全性](/zh-TW/security#cloud-execution-security)。

95 113 

96## 遙測服務114<h2 id="telemetry-services">

115 遙測服務

116</h2>

97 117 

98Claude Code 從使用者的機器連接到 Anthropic 以記錄延遲、可靠性和使用模式等操作指標。此記錄不包括任何程式碼或檔案路徑。資料在傳輸中和靜止時都經過加密。若要選擇退出遙測,請設定 `DISABLE_TELEMETRY` 環境變數。118Claude Code 從使用者的機器連接到 Anthropic 以記錄延遲、可靠性和使用模式等操作指標。此記錄不包括任何程式碼或檔案路徑。資料在傳輸中和靜止時都經過加密。若要選擇退出遙測,請設定 `DISABLE_TELEMETRY` 環境變數。

99 119 


103 123 

104當使用者使用第三方提供者(例如 Bedrock 或 Vertex)或未設定 Anthropic 認證時,`/feedback` 會將報告寫入 `~/.claude/feedback-bundles/` 下的本機封存,而不是將其發送到 Anthropic。已知的 API 金鑰和權杖模式在寫入封存前會被編輯。在使用者將該檔案發送給 Anthropic 帳戶代表或將其附加到支援請求之前,任何內容都不會離開使用者的機器。124當使用者使用第三方提供者(例如 Bedrock 或 Vertex)或未設定 Anthropic 認證時,`/feedback` 會將報告寫入 `~/.claude/feedback-bundles/` 下的本機封存,而不是將其發送到 Anthropic。已知的 API 金鑰和權杖模式在寫入封存前會被編輯。在使用者將該檔案發送給 Anthropic 帳戶代表或將其附加到支援請求之前,任何內容都不會離開使用者的機器。

105 125 

106## 按 API 提供者的預設行為126<h2 id="default-behaviors-by-api-provider">

127 按 API 提供者的預設行為

128</h2>

107 129 

108根據預設,當使用 Bedrock、Vertex、Foundry 或 Claude Platform on AWS 時,錯誤報告、遙測和錯誤報告會停用。工作階段品質調查和 WebFetch 網域安全檢查是例外,無論提供者為何都會執行。您可以透過設定 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 一次選擇退出所有非必要流量,包括調查。此變數不會影響 WebFetch 檢查,該檢查有其自己的選擇退出。以下是完整的預設行為:130根據預設,當使用 Bedrock、Vertex、Foundry 或 Claude Platform on AWS 時,錯誤報告、遙測和錯誤報告會停用。工作階段品質調查和 WebFetch 網域安全檢查是例外,無論提供者為何都會執行。您可以透過設定 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 一次選擇退出所有非必要流量,包括調查。此變數不會影響 WebFetch 檢查,該檢查有其自己的選擇退出。以下是完整的預設行為:

109 131 


119 141 

120自 v2.1.126 起,當主機平台設定 `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` 時,Vertex、Bedrock 和 Foundry 上的指標預設為開啟,並遵循標準 `DISABLE_TELEMETRY` 選擇退出。Sentry 錯誤報告和 `/feedback` 報告在這些提供者上仍預設為關閉。142自 v2.1.126 起,當主機平台設定 `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` 時,Vertex、Bedrock 和 Foundry 上的指標預設為開啟,並遵循標準 `DISABLE_TELEMETRY` 選擇退出。Sentry 錯誤報告和 `/feedback` 報告在這些提供者上仍預設為關閉。

121 143 

122### WebFetch 網域安全檢查144<h3 id="webfetch-domain-safety-check">

145 WebFetch 網域安全檢查

146</h3>

123 147 

124在擷取 URL 之前,WebFetch 工具會將請求的主機名稱發送到 `api.anthropic.com`,以根據 Anthropic 維護的安全封鎖清單進行檢查。只會發送主機名稱,不會發送完整 URL、路徑或頁面內容。結果按主機名稱快取五分鐘。148在擷取 URL 之前,WebFetch 工具會將請求的主機名稱發送到 `api.anthropic.com`,以根據 Anthropic 維護的安全封鎖清單進行檢查。只會發送主機名稱,不會發送完整 URL、路徑或頁面內容。結果按主機名稱快取五分鐘。

125 149 

Details

10 10 

11如需安裝、驗證和連線問題的協助,請改為參閱 [Troubleshoot installation and login](/zh-TW/troubleshoot-install)。11如需安裝、驗證和連線問題的協助,請改為參閱 [Troubleshoot installation and login](/zh-TW/troubleshoot-install)。

12 12 

13## 查看載入到 context 的內容13<h2 id="see-what-loaded-into-context">

14 查看載入到 context 的內容

15</h2>

14 16 

15`/context` 命令顯示佔用目前工作階段 context 視窗的所有內容,按類別細分:系統提示、記憶檔案、skills、MCP tools 和對話訊息。首先執行它以確認您的 `CLAUDE.md`、規則或 skill 描述是否存在。17`/context` 命令顯示佔用目前工作階段 context 視窗的所有內容,按類別細分:系統提示、記憶檔案、skills、MCP tools 和對話訊息。首先執行它以確認您的 `CLAUDE.md`、規則或 skill 描述是否存在。

16 18 


38 CLAUDE.md 和 permissions 解決不同的問題。CLAUDE.md 告訴 Claude 您的專案如何運作,以便它做出良好決策。[Permissions](/zh-TW/permissions) 和 [hooks](/zh-TW/hooks) 無論 Claude 決定什麼,都會強制執行限制。使用 CLAUDE.md 表示「我們在這裡這樣做」。使用 permissions 或 hooks 表示安全邊界和任何必須永遠不會發生的事情,其中您需要保證而不是指導。40 CLAUDE.md 和 permissions 解決不同的問題。CLAUDE.md 告訴 Claude 您的專案如何運作,以便它做出良好決策。[Permissions](/zh-TW/permissions) 和 [hooks](/zh-TW/hooks) 無論 Claude 決定什麼,都會強制執行限制。使用 CLAUDE.md 表示「我們在這裡這樣做」。使用 permissions 或 hooks 表示安全邊界和任何必須永遠不會發生的事情,其中您需要保證而不是指導。

39</Note>41</Note>

40 42 

41## 檢查已解析的設定43<h2 id="check-resolved-settings">

44 檢查已解析的設定

45</h2>

42 46 

43設定在受管、使用者、專案和本機範圍之間合併。受管設定在存在時始終優先。在其餘的設定中,較近的範圍會按本機、專案、使用者的順序覆蓋較廣的範圍。某些設定也可以由命令列旗標或 [環境變數](/zh-TW/env-vars) 設定,這些變數充當另一個覆蓋層。當設定似乎不適用時,您設定的值通常被另一個範圍或環境變數覆蓋。47設定在受管、使用者、專案和本機範圍之間合併。受管設定在存在時始終優先。在其餘的設定中,較近的範圍會按本機、專案、使用者的順序覆蓋較廣的範圍。某些設定也可以由命令列旗標或 [環境變數](/zh-TW/env-vars) 設定,這些變數充當另一個覆蓋層。當設定似乎不適用時,您設定的值通常被另一個範圍或環境變數覆蓋。

44 48 


46 50 

47執行 `/status` 以查看哪些設定來源處於作用中,包括是否啟用了受管設定。若要瞭解給定鍵的哪個範圍優先,請參閱 [範圍如何互動](/zh-TW/settings#how-scopes-interact)。51執行 `/status` 以查看哪些設定來源處於作用中,包括是否啟用了受管設定。若要瞭解給定鍵的哪個範圍優先,請參閱 [範圍如何互動](/zh-TW/settings#how-scopes-interact)。

48 52 

49## 檢查 MCP servers53<h2 id="check-mcp-servers">

54 檢查 MCP servers

55</h2>

50 56 

51執行 `/mcp` 以查看每個已設定的 server、其連線狀態,以及您是否已為目前專案核准它。server 可以定義正確但仍然不提供 tools,原因有幾個常見的:57執行 `/mcp` 以查看每個已設定的 server、其連線狀態,以及您是否已為目前專案核准它。server 可以定義正確但仍然不提供 tools,原因有幾個常見的:

52 58 


56 62 

57如需設定位置和範圍規則,請參閱 [MCP](/zh-TW/mcp)。63如需設定位置和範圍規則,請參閱 [MCP](/zh-TW/mcp)。

58 64 

59## 檢查 hooks65<h2 id="check-hooks">

66 檢查 hooks

67</h2>

60 68 

61執行 `/hooks` 以列出為目前工作階段註冊的每個 hook,按事件分組。如果您定義的 hook 沒有出現,則它未被讀取:hooks 位於設定檔案中的 `"hooks"` 鍵下,而不是在獨立檔案中。69執行 `/hooks` 以列出為目前工作階段註冊的每個 hook,按事件分組。如果您定義的 hook 沒有出現,則它未被讀取:hooks 位於設定檔案中的 `"hooks"` 鍵下,而不是在獨立檔案中。

62 70 


66 74 

67如果 `/hooks` 顯示 hook 但它仍然不觸發,下一步是即時監視 hook 評估。使用 `claude --debug hooks` 啟動工作階段並觸發 tool 呼叫。偵錯日誌記錄每個事件、檢查了哪些 matchers 以及 hook 的結束代碼和輸出。如需日誌格式,請參閱 [Debug hooks](/zh-TW/hooks#debug-hooks),如需常見失敗模式,請參閱 [hooks 疑難排解](/zh-TW/hooks-guide#limitations-and-troubleshooting)。75如果 `/hooks` 顯示 hook 但它仍然不觸發,下一步是即時監視 hook 評估。使用 `claude --debug hooks` 啟動工作階段並觸發 tool 呼叫。偵錯日誌記錄每個事件、檢查了哪些 matchers 以及 hook 的結束代碼和輸出。如需日誌格式,請參閱 [Debug hooks](/zh-TW/hooks#debug-hooks),如需常見失敗模式,請參閱 [hooks 疑難排解](/zh-TW/hooks-guide#limitations-and-troubleshooting)。

68 76 

69## 針對乾淨的設定進行測試77<h2 id="test-against-a-clean-configuration">

78 針對乾淨的設定進行測試

79</h2>

70 80 

71如果目標檢查無法隔離原因,或您的設定處於未知狀態,請與不從您常用設定載入任何內容的工作階段進行比較。將 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars) 指向空目錄以略過 `~/.claude` 下的所有內容,並從沒有 `.claude` 資料夾、`.mcp.json` 或 `CLAUDE.md` 的目錄啟動,以便也跳過專案設定。81如果目標檢查無法隔離原因,或您的設定處於未知狀態,請與不從您常用設定載入任何內容的工作階段進行比較。將 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars) 指向空目錄以略過 `~/.claude` 下的所有內容,並從沒有 `.claude` 資料夾、`.mcp.json` 或 `CLAUDE.md` 的目錄啟動,以便也跳過專案設定。

72 82 


82 92 

83如果問題在此消失,原因在於您的真實 `~/.claude` 或專案 `.claude` 檔案中的某處。一次一個地重新引入它們,方法是將檔案複製到臨時目錄或從您的專案啟動,以找到哪一個。如果它在乾淨的工作階段中持續存在,原因在於您的使用者和專案設定之外。執行 `/status` 以檢查是否啟用了受管設定,查找影響 Claude Code 的 [環境變數](/zh-TW/env-vars),然後參閱 [Troubleshooting](/zh-TW/troubleshooting)。93如果問題在此消失,原因在於您的真實 `~/.claude` 或專案 `.claude` 檔案中的某處。一次一個地重新引入它們,方法是將檔案複製到臨時目錄或從您的專案啟動,以找到哪一個。如果它在乾淨的工作階段中持續存在,原因在於您的使用者和專案設定之外。執行 `/status` 以檢查是否啟用了受管設定,查找影響 Claude Code 的 [環境變數](/zh-TW/env-vars),然後參閱 [Troubleshooting](/zh-TW/troubleshooting)。

84 94 

85## 檢查常見原因95<h2 id="check-common-causes">

96 檢查常見原因

97</h2>

86 98 

87大多數設定意外可以追溯到一小組位置和語法規則。在假設有 bug 之前檢查這些:99大多數設定意外可以追溯到一小組位置和語法規則。在假設有 bug 之前檢查這些:

88 100 


105| MCP server 啟動時沒有預期的環境變數 | 變數在 `settings.json` `env` 中,不會傳播到 MCP 子程序 | 改為在 `.mcp.json` 內設定每個 server 的 `env`。 |117| MCP server 啟動時沒有預期的環境變數 | 變數在 `settings.json` `env` 中,不會傳播到 MCP 子程序 | 改為在 `.mcp.json` 內設定每個 server 的 `env`。 |

106| `Bash(rm *)` 拒絕規則不阻止 `/bin/rm` 或 `find -delete` | 前綴規則匹配字面命令字串,而不是基礎可執行檔 | 為每個變體新增明確模式,或使用 [PreToolUse hook](/zh-TW/hooks-guide) 或 [sandbox](/zh-TW/sandboxing) 以獲得硬保證。 |118| `Bash(rm *)` 拒絕規則不阻止 `/bin/rm` 或 `find -delete` | 前綴規則匹配字面命令字串,而不是基礎可執行檔 | 為每個變體新增明確模式,或使用 [PreToolUse hook](/zh-TW/hooks-guide) 或 [sandbox](/zh-TW/sandboxing) 以獲得硬保證。 |

107 119 

108## 相關資源120<h2 id="related-resources">

121 相關資源

122</h2>

109 123 

110如需每個設定表面的完整參考,請參閱專用頁面:124如需每個設定表面的完整參考,請參閱專用頁面:

111 125 

desktop.md +210 −74

Details

34 34 

35如需[排程定期工作](/zh-TW/desktop-scheduled-tasks)、[快捷鍵](#keyboard-shortcuts)或[從您的手機傳送任務](#sessions-from-dispatch),請參閱連結的頁面和章節。如果您已經使用基於終端機的 CLI,請參閱 [CLI 比較](#coming-from-the-cli)以了解哪些內容可以轉移。35如需[排程定期工作](/zh-TW/desktop-scheduled-tasks)、[快捷鍵](#keyboard-shortcuts)或[從您的手機傳送任務](#sessions-from-dispatch),請參閱連結的頁面和章節。如果您已經使用基於終端機的 CLI,請參閱 [CLI 比較](#coming-from-the-cli)以了解哪些內容可以轉移。

36 36 

37## 開始會話37<h2 id="start-a-session">

38 開始會話

39</h2>

38 40 

39在發送第一條訊息之前,在提示區域中配置四項內容:41在發送第一條訊息之前,在提示區域中配置四項內容:

40 42 


45 47 

46輸入您的任務並按 **Enter** 開始。每個會話都會追蹤自己的上下文並獨立進行變更。48輸入您的任務並按 **Enter** 開始。每個會話都會追蹤自己的上下文並獨立進行變更。

47 49 

48## 使用程式碼50<h2 id="work-with-code">

51 使用程式碼

52</h2>

49 53 

50為 Claude 提供正確的上下文,控制它自主執行的程度,並檢查它所做的變更。54為 Claude 提供正確的上下文,控制它自主執行的程度,並檢查它所做的變更。

51 55 

52### 使用提示框56<h3 id="use-the-prompt-box">

57 使用提示框

58</h3>

53 59 

54輸入您想讓 Claude 執行的操作,然後按 **Enter** 傳送。Claude 會讀取您的專案檔案、進行變更,並根據您的[權限模式](#choose-a-permission-mode)執行命令。您可以隨時中斷 Claude:點擊停止按鈕或輸入您的更正並按 **Enter**。Claude 會停止正在執行的操作並根據您的輸入進行調整60輸入您想讓 Claude 執行的操作,然後按 **Enter** 傳送。Claude 會讀取您的專案檔案、進行變更,並根據您的[權限模式](#choose-a-permission-mode)執行命令。您可以隨時中斷 Claude:點擊停止按鈕以立即中斷,或輸入更正並按 **Enter** 傳送,而不停止正在執行的操作。Claude 會在目前操作完成後立即讀取更正,並在下一步之前進行調整

55 61 

56提示框旁的 **+** 按鈕可讓您存取檔案附件、[skills](#use-skills)、[連接器](#connect-external-tools)和[plugins](#install-plugins)。62提示框旁的 **+** 按鈕可讓您存取檔案附件、[skills](#use-skills)、[連接器](#connect-external-tools)和[plugins](#install-plugins)。

57 63 

58### 將檔案和上下文新增到提示64<h3 id="add-files-and-context-to-prompts">

65 將檔案和上下文新增到提示

66</h3>

59 67 

60提示框支援兩種方式來引入外部上下文:68提示框支援兩種方式來引入外部上下文:

61 69 

62* **@mention 檔案**:輸入 `@` 後跟檔案名稱,將檔案新增到對話上下文。Claude 隨後可以讀取和參考該檔案。@mention 在遠端會話中不可用。70* **@mention 檔案**:輸入 `@` 後跟檔案名稱,將檔案新增到對話上下文。Claude 隨後可以讀取和參考該檔案。@mention 在遠端會話中不可用。

63* **附加檔案**:使用附件按鈕將影像、PDF 和其他檔案附加到您的提示,或直接將檔案拖放到提示中。這對於分享錯誤的螢幕截圖、設計模型或參考文件很有用。71* **附加檔案**:使用附件按鈕將影像、PDF 和其他檔案附加到您的提示,或直接將檔案拖放到提示中。這對於分享錯誤的螢幕截圖、設計模型或參考文件很有用。

64 72 

65### 選擇權限模式73<h3 id="choose-a-permission-mode">

74 選擇權限模式

75</h3>

66 76 

67權限模式控制 Claude 在會話期間擁有多少自主權:它是否在編輯檔案、執行命令或兩者之前詢問。您可以隨時使用傳送按鈕旁的模式選擇器切換模式。從「詢問權限」開始,以查看 Claude 確切執行的操作,然後隨著您變得更加熟悉,移至「自動接受編輯」或 Plan Mode。77權限模式控制 Claude 在會話期間擁有多少自主權:它是否在編輯檔案、執行命令或兩者之前詢問。您可以隨時使用傳送按鈕旁的模式選擇器切換模式。從「詢問權限」開始,以查看 Claude 確切執行的操作,然後隨著您變得更加熟悉,移至「自動接受編輯」或 Plan Mode。

68 78 


78 88 

79<span id="auto-mode-availability" />89<span id="auto-mode-availability" />

80 90 

81Auto Mode 是在 Max、Team、Enterprise 和 API 計畫上提供的研究預覽版。在 Pro 計畫或第三方提供者上不可用在 Team、Enterprise 和 API 計畫上,它需要 Claude Sonnet 4.6、Opus 4.6 或 Opus 4.7 Max 計畫上它需要 Claude Opus 4.7。91Auto Mode 是在 Anthropic API 上提供給所有使用者的研究預覽版。它需要 Claude Opus 4.6 或更新版本,Sonnet 4.6在路由 Desktop 至 Google Cloud Vertex AI 的企業部署中Auto Mode 預設為關閉,直到您[設定 `CLAUDE_CODE_ENABLE_AUTO_MODE`](/zh-TW/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry),且僅支援 Claude Opus 4.7 和 Opus 4.8

82 92 

83<Tip title="最佳實踐">93<Tip title="最佳實踐">

84 在 Plan Mode 中開始複雜任務,以便 Claude 在進行變更之前規劃方法。一旦您批准計畫,切換到'自動接受編輯'或'詢問權限'以執行它。有關此工作流程的更多資訊,請參閱[先探索,然後計畫,然後編碼](/zh-TW/best-practices#explore-first-then-plan-then-code)。94 在 Plan Mode 中開始複雜任務,以便 Claude 在進行變更之前規劃方法。一旦您批准計畫,切換到'自動接受編輯'或'詢問權限'以執行它。有關此工作流程的更多資訊,請參閱[先探索,然後計畫,然後編碼](/zh-TW/best-practices#explore-first-then-plan-then-code)。


88 98 

89企業管理員可以限制哪些權限模式可用。有關詳細資訊,請參閱[企業配置](#enterprise-configuration)。99企業管理員可以限制哪些權限模式可用。有關詳細資訊,請參閱[企業配置](#enterprise-configuration)。

90 100 

91### 預覽您的應用程式101<h3 id="preview-your-app">

102 預覽您的應用程式

103</h3>

92 104 

93Claude 可以啟動開發伺服器並開啟嵌入式瀏覽器來驗證其變更。這適用於前端網路應用程式以及後端伺服器:Claude 可以測試 API 端點、檢視伺服器日誌,並對其發現的問題進行迭代。在大多數情況下,Claude 在編輯專案檔案後會自動啟動伺服器。您也可以隨時要求 Claude 進行預覽。預設情況下,Claude [自動驗證](#auto-verify-changes)每次編輯後的變更。105Claude 可以啟動開發伺服器並開啟嵌入式瀏覽器來驗證其變更。這適用於前端網路應用程式以及後端伺服器:Claude 可以測試 API 端點、檢視伺服器日誌,並對其發現的問題進行迭代。在大多數情況下,Claude 在編輯專案檔案後會自動啟動伺服器。您也可以隨時要求 Claude 進行預覽。預設情況下,Claude [自動驗證](#auto-verify-changes)每次編輯後的變更。

94 106 


106 118 

107若要清除已儲存的會話資料,請在'設定'→'Claude Code'中切換 **Persist preview sessions** 關閉。若要完全停用預覽,請在'設定'→'Claude Code'中切換 **Preview** 關閉。119若要清除已儲存的會話資料,請在'設定'→'Claude Code'中切換 **Persist preview sessions** 關閉。若要完全停用預覽,請在'設定'→'Claude Code'中切換 **Preview** 關閉。

108 120 

109### 使用差異檢查檢查變更121<h3 id="review-changes-with-diff-view">

122 使用差異檢查檢查變更

123</h3>

110 124 

111Claude 對您的程式碼進行變更後,差異檢查可讓您在建立提取請求之前逐個檔案檢查修改。125Claude 對您的程式碼進行變更後,差異檢查可讓您在建立提取請求之前逐個檔案檢查修改。

112 126 


119 133 

120Claude 會讀取您的註解並進行要求的變更,這些變更會顯示為您可以檢查的新差異。134Claude 會讀取您的註解並進行要求的變更,這些變更會顯示為您可以檢查的新差異。

121 135 

122### 檢查您的程式碼136<h3 id="review-your-code">

137 檢查您的程式碼

138</h3>

123 139 

124在差異檢查中,點擊右上角工具列中的 **Review code**,要求 Claude 在您提交之前評估變更。Claude 會檢查目前的差異,並直接在差異檢查中留下註解。您可以回應任何註解或要求 Claude 進行修訂。140在差異檢查中,點擊右上角工具列中的 **Review code**,要求 Claude 在您提交之前評估變更。Claude 會檢查目前的差異,並直接在差異檢查中留下註解。您可以回應任何註解或要求 Claude 進行修訂。

125 141 

126檢查著重於高信號問題:編譯錯誤、明確的邏輯錯誤、安全漏洞和明顯的錯誤。它不會標記樣式、格式、預先存在的問題或任何 linter 會捕捉的內容。142檢查著重於高信號問題:編譯錯誤、明確的邏輯錯誤、安全漏洞和明顯的錯誤。它不會標記樣式、格式、預先存在的問題或任何 linter 會捕捉的內容。

127 143 

128### 監控提取請求狀態144<h3 id="monitor-pull-request-status">

145 監控提取請求狀態

146</h3>

129 147 

130開啟提取請求後,CI 狀態列會出現在會話中。Claude Code 使用 GitHub CLI 來輪詢檢查結果並顯示失敗。148開啟提取請求後,CI 狀態列會出現在會話中。Claude Code 使用 GitHub CLI 來輪詢檢查結果並顯示失敗。

131 149 


138 PR 監控需要在您的機器上安裝並驗證 [GitHub CLI (`gh`)](https://cli.github.com/)。如果未安裝 `gh`,Desktop 會在您第一次嘗試建立 PR 時提示您安裝它。156 PR 監控需要在您的機器上安裝並驗證 [GitHub CLI (`gh`)](https://cli.github.com/)。如果未安裝 `gh`,Desktop 會在您第一次嘗試建立 PR 時提示您安裝它。

139</Note>157</Note>

140 158 

141## 安排您的工作區159<h2 id="arrange-your-workspace">

160 安排您的工作區

161</h2>

142 162 

143Code 標籤是圍繞您可以以任何佈局排列的窗格構建的:聊天、差異、預覽、終端機、檔案、plan、tasks 和 subagent。透過其標題拖動窗格以重新定位它,或拖動窗格邊緣以調整其大小。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 以關閉焦點窗格。從會話工具列中的 **Views** 選單開啟其他窗格。163Code 標籤是圍繞您可以以任何佈局排列的窗格構建的:聊天、差異、預覽、終端機、檔案、plan、tasks 和 subagent。透過其標題拖動窗格以重新定位它,或拖動窗格邊緣以調整其大小。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 以關閉焦點窗格。從會話工具列中的 **Views** 選單開啟其他窗格。

144 164 


146 本節中的窗格佈局、終端機、檔案編輯器和檢視模式需要 Claude Desktop v1.2581.0 或更新版本。在 macOS 上開啟 **Claude → Check for Updates** 或在 Windows 上開啟 **Help → Check for Updates** 以更新。166 本節中的窗格佈局、終端機、檔案編輯器和檢視模式需要 Claude Desktop v1.2581.0 或更新版本。在 macOS 上開啟 **Claude → Check for Updates** 或在 Windows 上開啟 **Help → Check for Updates** 以更新。

147</Note>167</Note>

148 168 

149### 在終端機中執行命令169<h3 id="run-commands-in-the-terminal">

170 在終端機中執行命令

171</h3>

150 172 

151整合終端機讓您在會話旁執行命令,而無需切換到另一個應用程式。從 **Views** 選單開啟它,或在 macOS 或 Windows 上按 **Ctrl+\`**。終端機在您會話的工作目錄中開啟,並與 Claude 共用相同的環境,因此 `npm test` 或 `git status` 等命令會看到 Claude 正在編輯的相同檔案。若要開啟第二個終端機標籤,請點擊終端機窗格標題中的 **+** 或右鍵點擊聊天中的資料夾以選擇 **Open in terminal**。終端機僅在本機會話中可用。173整合終端機讓您在會話旁執行命令,而無需切換到另一個應用程式。從 **Views** 選單開啟它,或在 macOS 或 Windows 上按 **Ctrl+\`**。終端機在您會話的工作目錄中開啟,並與 Claude 共用相同的環境,因此 `npm test` 或 `git status` 等命令會看到 Claude 正在編輯的相同檔案。若要開啟第二個終端機標籤,請點擊終端機窗格標題中的 **+** 或右鍵點擊聊天中的資料夾以選擇 **Open in terminal**。終端機僅在本機會話中可用。

152 174 

153### 開啟和編輯檔案175<h3 id="open-and-edit-files">

176 開啟和編輯檔案

177</h3>

154 178 

155點擊聊天或差異檢視器中的檔案路徑以在檔案窗格中開啟它。HTML、PDF、影像和影片路徑改為在[預覽窗格](#preview-your-app)中開啟。進行現場編輯並點擊 **Save** 以寫回。如果自您開啟檔案以來檔案在磁碟上已變更,窗格會警告您並讓您覆蓋或放棄。點擊 **Discard** 以還原您的編輯,或點擊窗格標題中的路徑以複製絕對路徑。179點擊聊天或差異檢視器中的檔案路徑以在檔案窗格中開啟它。HTML、PDF、影像和影片路徑改為在[預覽窗格](#preview-your-app)中開啟。進行現場編輯並點擊 **Save** 以寫回。如果自您開啟檔案以來檔案在磁碟上已變更,窗格會警告您並讓您覆蓋或放棄。點擊 **Discard** 以還原您的編輯,或點擊窗格標題中的路徑以複製絕對路徑。

156 180 

157檔案窗格在本機和 SSH 會話中可用。對於遠端會話,要求 Claude 進行變更。181檔案窗格在本機和 SSH 會話中可用。對於遠端會話,要求 Claude 進行變更。

158 182 

159### 在其他應用程式中開啟檔案183<h3 id="open-files-in-other-apps">

184 在其他應用程式中開啟檔案

185</h3>

160 186 

161右鍵點擊聊天、差異檢視器或檔案窗格中的任何檔案路徑以開啟上下文選單:187右鍵點擊聊天、差異檢視器或檔案窗格中的任何檔案路徑以開啟上下文選單:

162 188 


165* **Show in Finder**(在 macOS 上),**Show in Explorer**(在 Windows 上):開啟包含資料夾191* **Show in Finder**(在 macOS 上),**Show in Explorer**(在 Windows 上):開啟包含資料夾

166* **Copy path**:將絕對路徑複製到您的剪貼簿192* **Copy path**:將絕對路徑複製到您的剪貼簿

167 193 

168### 切換檢視模式194<h3 id="switch-view-modes">

195 切換檢視模式

196</h3>

169 197 

170檢視模式控制聊天記錄中顯示多少詳細資訊。從傳送按鈕旁的 **Transcript view** 下拉式選單切換模式,或在 macOS 或 Windows 上按 **Ctrl+O** 以循環瀏覽它們。198檢視模式控制聊天記錄中顯示多少詳細資訊。從傳送按鈕旁的 **Transcript view** 下拉式選單切換模式,或在 macOS 或 Windows 上按 **Ctrl+O** 以循環瀏覽它們。

171 199 


177 205 

178在調試 Claude 為什麼採取特定操作時使用 Verbose。當您執行多個會話並想要快速掃描結果時,使用 Summary。206在調試 Claude 為什麼採取特定操作時使用 Verbose。當您執行多個會話並想要快速掃描結果時,使用 Summary。

179 207 

180### 快捷鍵208<h3 id="keyboard-shortcuts">

209 快捷鍵

210</h3>

181 211 

182在 macOS 上按 **Cmd+/** 或在 Windows 上按 **Ctrl+/** 以查看 Code 標籤中可用的所有快捷鍵。在 Windows 上,對下面的快捷鍵使用 **Ctrl** 代替 **Cmd**。會話循環、終端機切換和檢視模式切換在每個平台上都使用 **Ctrl**。212在 macOS 上按 **Cmd+/** 或在 Windows 上按 **Ctrl+/** 以查看 Code 標籤中可用的所有快捷鍵。在 Windows 上,對下面的快捷鍵使用 **Ctrl** 代替 **Cmd**。會話循環、終端機切換和檢視模式切換在每個平台上都使用 **Ctrl**。

183 213 


203 233 

204這些快捷鍵僅適用於 Code 標籤。終端機型 [interactive mode 快捷鍵](/zh-TW/interactive-mode#keyboard-shortcuts)(如 `Shift+Tab` 以循環模式)不適用於 Desktop。234這些快捷鍵僅適用於 Code 標籤。終端機型 [interactive mode 快捷鍵](/zh-TW/interactive-mode#keyboard-shortcuts)(如 `Shift+Tab` 以循環模式)不適用於 Desktop。

205 235 

206### 檢查使用情況236<h3 id="check-usage">

237 檢查使用情況

238</h3>

207 239 

208點擊模型選擇器旁的使用情況環以查看您目前的上下文視窗使用情況和您計畫在該期間的使用情況。上下文使用情況是按會話的;計畫使用情況在您所有 Claude Code 介面中共用。240點擊模型選擇器旁的使用情況環以查看您目前的上下文視窗使用情況和您計畫在該期間的使用情況。上下文使用情況是按會話的;計畫使用情況在您所有 Claude Code 介面中共用。

209 241 

210## 讓 Claude 使用您的電腦242<h2 id="let-claude-use-your-computer">

243 讓 Claude 使用您的電腦

244</h2>

211 245 

212電腦使用讓 Claude 開啟您的應用程式、控制您的螢幕,並以您的方式直接在您的機器上工作。要求 Claude 在行動模擬器中測試原生應用程式、與沒有 CLI 的桌面工具互動,或自動化只能透過 GUI 運作的內容。246電腦使用讓 Claude 開啟您的應用程式、控制您的螢幕,並以您的方式直接在您的機器上工作。要求 Claude 在行動模擬器中測試原生應用程式、與沒有 CLI 的桌面工具互動,或自動化只能透過 GUI 運作的內容。

213 247 


221 與[沙箱化 Bash 工具](/zh-TW/sandboxing)不同,電腦使用在您的實際桌面上執行,可以存取您批准的任何內容。Claude 會檢查每個操作並標記螢幕上內容的潛在提示注入,但信任邊界不同。有關最佳實踐,請參閱[電腦使用安全指南](https://support.claude.com/en/articles/14128542)。255 與[沙箱化 Bash 工具](/zh-TW/sandboxing)不同,電腦使用在您的實際桌面上執行,可以存取您批准的任何內容。Claude 會檢查每個操作並標記螢幕上內容的潛在提示注入,但信任邊界不同。有關最佳實踐,請參閱[電腦使用安全指南](https://support.claude.com/en/articles/14128542)。

222</Warning>256</Warning>

223 257 

224### 何時應用電腦使用258<h3 id="when-computer-use-applies">

259 何時應用電腦使用

260</h3>

225 261 

226Claude 有多種方式與應用程式或服務互動,電腦使用是最廣泛和最慢的。它首先嘗試最精確的工具:262Claude 有多種方式與應用程式或服務互動,電腦使用是最廣泛和最慢的。它首先嘗試最精確的工具:

227 263 


232 268 

233[每個應用程式的存取層級](#app-permissions)強化了這一點:瀏覽器限制為僅檢視,終端機和 IDE 限制為僅點擊,引導 Claude 使用專用工具,即使電腦使用處於活動狀態。螢幕控制保留給其他工具無法到達的內容,例如原生應用程式、硬體控制面板、行動模擬器或沒有 API 的專有工具。269[每個應用程式的存取層級](#app-permissions)強化了這一點:瀏覽器限制為僅檢視,終端機和 IDE 限制為僅點擊,引導 Claude 使用專用工具,即使電腦使用處於活動狀態。螢幕控制保留給其他工具無法到達的內容,例如原生應用程式、硬體控制面板、行動模擬器或沒有 API 的專有工具。

234 270 

235### 啟用電腦使用271<h3 id="enable-computer-use">

272 啟用電腦使用

273</h3>

236 274 

237電腦使用預設為關閉。如果您要求 Claude 執行需要它的操作而它處於關閉狀態,Claude 會告訴您如果在'設定'中啟用電腦使用,它可以執行該任務。275電腦使用預設為關閉。如果您要求 Claude 執行需要它的操作而它處於關閉狀態,Claude 會告訴您如果在'設定'中啟用電腦使用,它可以執行該任務。

238 276 


257 </Step>295 </Step>

258</Steps>296</Steps>

259 297 

260### 應用程式權限298<h3 id="app-permissions">

299 應用程式權限

300</h3>

261 301 

262Claude 第一次需要使用應用程式時,會在您的會話中出現提示。點擊 **Allow for this session** 或 **Deny**。批准在目前會話中持續,或在 [Dispatch 產生的會話](#sessions-from-dispatch)中持續 30 分鐘。302Claude 第一次需要使用應用程式時,會在您的會話中出現提示。點擊 **Allow for this session** 或 **Deny**。批准在目前會話中持續,或在 [Dispatch 產生的會話](#sessions-from-dispatch)中持續 30 分鐘。

263 303 


276* **Denied apps**:在此處新增應用程式以拒絕它們而不提示。Claude 可能仍會透過允許應用程式中的操作間接影響被拒絕的應用程式,但它無法直接與被拒絕的應用程式互動。316* **Denied apps**:在此處新增應用程式以拒絕它們而不提示。Claude 可能仍會透過允許應用程式中的操作間接影響被拒絕的應用程式,但它無法直接與被拒絕的應用程式互動。

277* **Unhide apps when Claude finishes**:當 Claude 工作時,您的其他視窗會被隱藏,以便它僅與批准的應用程式互動。當 Claude 完成時,隱藏的視窗會被恢復,除非您關閉此設定。317* **Unhide apps when Claude finishes**:當 Claude 工作時,您的其他視窗會被隱藏,以便它僅與批准的應用程式互動。當 Claude 完成時,隱藏的視窗會被恢復,除非您關閉此設定。

278 318 

279## 管理會話319<h2 id="manage-sessions">

320 管理會話

321</h2>

280 322 

281每個會話都是一個獨立的對話,具有自己的上下文和變更。您可以並行執行多個會話、分支出側邊聊天、將工作傳送到雲端,或讓 Dispatch 從您的手機為您啟動會話。323每個會話都是一個獨立的對話,具有自己的上下文和變更。您可以並行執行多個會話、分支出側邊聊天、將工作傳送到雲端,或讓 Dispatch 從您的手機為您啟動會話。

282 324 

283### 使用會話並行工作325<h3 id="work-in-parallel-with-sessions">

326 使用會話並行工作

327</h3>

284 328 

285點擊側邊欄中的 **+ New session**,或在 macOS 上按 **Cmd+N** 或在 Windows 上按 **Ctrl+N**,以並行處理多個任務。按 **Ctrl+Tab** 和 **Ctrl+Shift+Tab** 以循環瀏覽側邊欄中的會話。對於 Git 儲存庫,每個會話都會使用 [Git worktrees](/zh-TW/worktrees) 獲得自己的隔離專案副本,因此一個會話中的變更不會影響其他會話,直到您提交它們。329點擊側邊欄中的 **+ New session**,或在 macOS 上按 **Cmd+N** 或在 Windows 上按 **Ctrl+N**,以並行處理多個任務。按 **Ctrl+Tab** 和 **Ctrl+Shift+Tab** 以循環瀏覽側邊欄中的會話。對於 Git 儲存庫,每個會話都會使用 [Git worktrees](/zh-TW/worktrees) 獲得自己的隔離專案副本,因此一個會話中的變更不會影響其他會話,直到您提交它們。

286 330 


298 342 

299桌面應用程式會在 Code 會話完成任務且您目前未檢視該會話時傳送作業系統通知。343桌面應用程式會在 Code 會話完成任務且您目前未檢視該會話時傳送作業系統通知。

300 344 

301### 在不偏離會話的情況下詢問側邊問題345<h3 id="ask-a-side-question-without-derailing-the-session">

346 在不偏離會話的情況下詢問側邊問題

347</h3>

302 348 

303側邊聊天讓您詢問 Claude 一個使用您會話上下文的問題,但不會將任何內容新增回主對話。當您想要理解一段程式碼、檢查假設或探索想法而不引導會話偏離時,請使用它。349側邊聊天讓您詢問 Claude 一個使用您會話上下文的問題,但不會將任何內容新增回主對話。當您想要理解一段程式碼、檢查假設或探索想法而不引導會話偏離時,請使用它。

304 350 

305在 macOS 上按 **Cmd+;** 或在 Windows 上按 **Ctrl+;** 以開啟側邊聊天,或在提示框中輸入 `/btw`。側邊聊天可以讀取主執行緒中到該點為止的所有內容。完成後,關閉側邊聊天並在您離開的地方繼續主會話。側邊聊天在本機和 SSH 會話中可用。351在 macOS 上按 **Cmd+;** 或在 Windows 上按 **Ctrl+;** 以開啟側邊聊天,或在提示框中輸入 `/btw`。側邊聊天可以讀取主執行緒中到該點為止的所有內容。完成後,關閉側邊聊天並在您離開的地方繼續主會話。側邊聊天在本機和 SSH 會話中可用。

306 352 

307### 觀看背景任務353<h3 id="watch-background-tasks">

354 觀看背景任務

355</h3>

308 356 

309任務窗格顯示在目前會話內執行的背景工作:子代理、背景 shell 命令和工作流程。從 **Views** 選單開啟它或將其拖入您的佈局。357任務窗格顯示在目前會話內執行的背景工作:子代理、背景 shell 命令和[動態工作流程](/zh-TW/workflows)。從 **Views** 選單開啟它或將其拖入您的佈局。

310 358 

311點擊任何項目以在子代理窗格中查看其輸出或停止它。若要查看其他會話正在執行的操作,請使用[側邊欄](#work-in-parallel-with-sessions)。359點擊任何項目以在子代理窗格中查看其輸出或停止它。若要查看其他會話正在執行的操作,請使用[側邊欄](#work-in-parallel-with-sessions)。

312 360 

313### 遠端執行長時間執行的任務361<h3 id="run-long-running-tasks-remotely">

362 遠端執行長時間執行的任務

363</h3>

314 364 

315對於大型重構、測試套件、遷移或其他長時間執行的任務,在開始會話時選擇 **Remote** 而不是 **Local**。遠端會話在 Anthropic 的雲端基礎設施上執行,即使您關閉應用程式或關閉電腦,也會繼續執行。隨時檢查以查看進度或引導 Claude 朝不同方向發展。您也可以從 [claude.ai/code](https://claude.ai/code) 或 Claude iOS 應用程式監控遠端會話。365對於大型重構、測試套件、遷移或其他長時間執行的任務,在開始會話時選擇 **Remote** 而不是 **Local**。遠端會話在 Anthropic 的雲端基礎設施上執行,即使您關閉應用程式或關閉電腦,也會繼續執行。隨時檢查以查看進度或引導 Claude 朝不同方向發展。您也可以從 [claude.ai/code](https://claude.ai/code) 或 Claude iOS 應用程式監控遠端會話。

316 366 


318 368 

319有關遠端會話如何運作的更多資訊,請參閱[網路上的 Claude Code](/zh-TW/claude-code-on-the-web)。369有關遠端會話如何運作的更多資訊,請參閱[網路上的 Claude Code](/zh-TW/claude-code-on-the-web)。

320 370 

321### 在另一個介面中繼續371<h3 id="continue-in-another-surface">

372 在另一個介面中繼續

373</h3>

322 374 

323**Continue in** 選單可從會話工具列右下角的 VS Code 圖示存取,可讓您將會話移至另一個介面:375**Continue in** 選單可從會話工具列右下角的 VS Code 圖示存取,可讓您將會話移至另一個介面:

324 376 

325* **Claude Code on the Web**:將您的本機會話傳送到遠端繼續執行。Desktop 推送您的分支、產生對話摘要,並使用完整上下文建立新的遠端會話。然後您可以選擇存檔本機會話或保留它。這需要乾淨的工作樹,不適用於 SSH 會話。377* **Claude Code on the Web**:將您的本機會話傳送到遠端繼續執行。Desktop 推送您的分支、產生對話摘要,並使用完整上下文建立新的遠端會話。然後您可以選擇存檔本機會話或保留它。這需要乾淨的工作樹,不適用於 SSH 會話。

326* **Your IDE**:在目前工作目錄的支援 IDE 中開啟您的專案。378* **Your IDE**:在目前工作目錄的支援 IDE 中開啟您的專案。

327 379 

328### 來自 Dispatch 的會話380<h3 id="sessions-from-dispatch">

381 來自 Dispatch 的會話

382</h3>

329 383 

330[Dispatch](https://support.claude.com/en/articles/13947068) 是與 Claude 的持久對話,存在於 [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use) 標籤中。您向 Dispatch 傳送任務,它決定如何處理它。384[Dispatch](https://support.claude.com/en/articles/13947068) 是與 Claude 的持久對話,存在於 [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use) 標籤中。您向 Dispatch 傳送任務,它決定如何處理它。

331 385 


339 393 

340Dispatch 是當您遠離終端機時與 Claude 合作的多種方式之一。請參閱[平台和整合](/zh-TW/platforms#work-when-you-are-away-from-your-terminal)以將其與遠端控制、頻道、Slack 和排程任務進行比較。394Dispatch 是當您遠離終端機時與 Claude 合作的多種方式之一。請參閱[平台和整合](/zh-TW/platforms#work-when-you-are-away-from-your-terminal)以將其與遠端控制、頻道、Slack 和排程任務進行比較。

341 395 

342## 擴展 Claude Code396<h2 id="extend-claude-code">

397 擴展 Claude Code

398</h2>

343 399 

344連接外部服務、新增可重複使用的工作流程、自訂 Claude 的行為,並配置預覽伺服器。若要在一個地方管理連接器、skills 和 plugins,請點擊側邊欄中的 **Customize**。400連接外部服務、新增可重複使用的工作流程、自訂 Claude 的行為,並配置預覽伺服器。若要在一個地方管理連接器、skills 和 plugins,請點擊側邊欄中的 **Customize**。

345 401 

346### 連接外部工具402<h3 id="connect-external-tools">

403 連接外部工具

404</h3>

347 405 

348對於本機和 [SSH](#ssh-sessions) 會話,點擊提示框旁的 **+** 按鈕,然後選擇 **Connectors** 以新增 Google Calendar、Slack、GitHub、Linear、Notion 等整合。您可以在會話之前或期間新增連接器。**+** 按鈕在遠端會話中不可用,但 [routines](/zh-TW/routines) 在 routine 建立時配置連接器。406對於本機和 [SSH](#ssh-sessions) 會話,點擊提示框旁的 **+** 按鈕,然後選擇 **Connectors** 以新增 Google Calendar、Slack、GitHub、Linear、Notion 等整合。您可以在會話之前或期間新增連接器。**+** 按鈕在遠端會話中不可用,但 [routines](/zh-TW/routines) 在 routine 建立時配置連接器。

349 407 


353 411 

354連接器是 [MCP servers](/zh-TW/mcp),具有圖形設定流程。使用它們可以快速與支援的服務整合。對於「Connectors」中未列出的整合,透過 [settings files](/zh-TW/mcp#installing-mcp-servers) 手動新增 MCP servers。您也可以 [create custom connectors](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp)。412連接器是 [MCP servers](/zh-TW/mcp),具有圖形設定流程。使用它們可以快速與支援的服務整合。對於「Connectors」中未列出的整合,透過 [settings files](/zh-TW/mcp#installing-mcp-servers) 手動新增 MCP servers。您也可以 [create custom connectors](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp)。

355 413 

356### 使用 skills414<h3 id="use-skills">

415 使用 skills

416</h3>

357 417 

358[Skills](/zh-TW/skills) 擴展 Claude 可以執行的操作。Claude 在相關時自動載入它們,或者您可以直接呼叫一個:在提示框中輸入 `/` 或點擊 **+** 按鈕並選擇 **Slash commands** 以瀏覽可用的內容。這包括 [built-in commands](/zh-TW/commands)、您的 [custom skills](/zh-TW/skills#create-your-first-skill)、來自您程式碼庫的專案 skills,以及來自任何 [installed plugins](/zh-TW/plugins) 的 skills。選擇一個,它會在輸入欄位中突出顯示。在其後輸入您的任務並照常傳送。418[Skills](/zh-TW/skills) 擴展 Claude 可以執行的操作。Claude 在相關時自動載入它們,或者您可以直接呼叫一個:在提示框中輸入 `/` 或點擊 **+** 按鈕並選擇 **Slash commands** 以瀏覽可用的內容。這包括 [built-in commands](/zh-TW/commands)、您的 [custom skills](/zh-TW/skills#create-your-first-skill)、來自您程式碼庫的專案 skills,以及來自任何 [installed plugins](/zh-TW/plugins) 的 skills。選擇一個,它會在輸入欄位中突出顯示。在其後輸入您的任務並照常傳送。

359 419 

360### 安裝 plugins420<h3 id="install-plugins">

421 安裝 plugins

422</h3>

361 423 

362[Plugins](/zh-TW/plugins) 是可重複使用的套件,可將 skills、agents、hooks、MCP servers 和 LSP 配置新增到 Claude Code。您可以從桌面應用程式安裝 plugins,而無需使用終端機。424[Plugins](/zh-TW/plugins) 是可重複使用的套件,可將 skills、agents、hooks、MCP servers 和 LSP 配置新增到 Claude Code。您可以從桌面應用程式安裝 plugins,而無需使用終端機。

363 425 


365 427 

366Plugins 可以限定於您的使用者帳戶、特定專案或僅本機。如果您的組織集中管理 plugins,這些 plugins 在桌面會話中的可用方式與在 CLI 中相同。遠端會話不提供 Plugins。有關完整的 plugin 參考(包括建立您自己的 plugins),請參閱 [plugins](/zh-TW/plugins)。428Plugins 可以限定於您的使用者帳戶、特定專案或僅本機。如果您的組織集中管理 plugins,這些 plugins 在桌面會話中的可用方式與在 CLI 中相同。遠端會話不提供 Plugins。有關完整的 plugin 參考(包括建立您自己的 plugins),請參閱 [plugins](/zh-TW/plugins)。

367 429 

368### 配置預覽伺服器430<h3 id="configure-preview-servers">

431 配置預覽伺服器

432</h3>

369 433 

370Claude 會自動偵測您的開發伺服器設定,並將配置儲存在您開始會話時選擇的資料夾根目錄中的 `.claude/launch.json`。Preview 使用此資料夾作為其工作目錄,因此如果您選擇了父資料夾,具有自己開發伺服器的子資料夾將不會自動偵測。若要使用子資料夾的伺服器,請直接在該資料夾中開始會話,或手動新增配置。434Claude 會自動偵測您的開發伺服器設定,並將配置儲存在您開始會話時選擇的資料夾根目錄中的 `.claude/launch.json`。Preview 使用此資料夾作為其工作目錄,因此如果您選擇了父資料夾,具有自己開發伺服器的子資料夾將不會自動偵測。若要使用子資料夾的伺服器,請直接在該資料夾中開始會話,或手動新增配置。

371 435 


387 451 

388您可以定義多個配置以從同一專案執行不同的伺服器,例如前端和 API。請參閱下面的 [examples](#examples)。452您可以定義多個配置以從同一專案執行不同的伺服器,例如前端和 API。請參閱下面的 [examples](#examples)。

389 453 

390#### 自動驗證變更454<h4 id="auto-verify-changes">

455 自動驗證變更

456</h4>

391 457 

392啟用 `autoVerify` 時,Claude 會在編輯檔案後自動驗證程式碼變更。它會擷取螢幕截圖、檢查錯誤,並在完成回應之前確認變更有效。458啟用 `autoVerify` 時,Claude 會在編輯檔案後自動驗證程式碼變更。它會擷取螢幕截圖、檢查錯誤,並在完成回應之前確認變更有效。

393 459 


403 469 

404停用後,預覽工具仍然可用,您可以隨時要求 Claude 進行驗證。自動驗證使其在每次編輯後自動進行。470停用後,預覽工具仍然可用,您可以隨時要求 Claude 進行驗證。自動驗證使其在每次編輯後自動進行。

405 471 

406#### 配置欄位472<h4 id="configuration-fields">

473 配置欄位

474</h4>

407 475 

408`configurations` 陣列中的每個項目接受以下欄位:476`configurations` 陣列中的每個項目接受以下欄位:

409 477 


419| `program` | string | 使用 `node` 執行的指令碼。請參閱 [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |487| `program` | string | 使用 `node` 執行的指令碼。請參閱 [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

420| `args` | string\[] | 傳遞給 `program` 的引數。僅在設定 `program` 時使用 |488| `args` | string\[] | 傳遞給 `program` 的引數。僅在設定 `program` 時使用 |

421 489 

422##### 何時使用 `program` 與 `runtimeExecutable`490<h5 id="when-to-use-program-vs-runtimeexecutable">

491 何時使用 `program` 與 `runtimeExecutable`

492</h5>

423 493 

424使用 `runtimeExecutable` 搭配 `runtimeArgs` 透過套件管理器啟動開發伺服器。例如,`"runtimeExecutable": "npm"` 搭配 `"runtimeArgs": ["run", "dev"]` 執行 `npm run dev`。494使用 `runtimeExecutable` 搭配 `runtimeArgs` 透過套件管理器啟動開發伺服器。例如,`"runtimeExecutable": "npm"` 搭配 `"runtimeArgs": ["run", "dev"]` 執行 `npm run dev`。

425 495 

426當您有想要直接使用 `node` 執行的獨立指令碼時,使用 `program`。例如,`"program": "server.js"` 執行 `node server.js`。使用 `args` 傳遞其他標誌。496當您有想要直接使用 `node` 執行的獨立指令碼時,使用 `program`。例如,`"program": "server.js"` 執行 `node server.js`。使用 `args` 傳遞其他標誌。

427 497 

428#### 連接埠衝突498<h4 id="port-conflicts">

499 連接埠衝突

500</h4>

429 501 

430`autoPort` 欄位控制當您偏好的連接埠已在使用時會發生什麼:502`autoPort` 欄位控制當您偏好的連接埠已在使用時會發生什麼:

431 503 


435 507 

436當 Claude 選擇不同的連接埠時,它會透過 `PORT` 環境變數將指派的連接埠傳遞給您的伺服器。508當 Claude 選擇不同的連接埠時,它會透過 `PORT` 環境變數將指派的連接埠傳遞給您的伺服器。

437 509 

438#### 範例510<h4 id="examples">

511 範例

512</h4>

439 513 

440這些配置顯示不同專案類型的常見設定:514這些配置顯示不同專案類型的常見設定:

441 515 


506 </Tab>580 </Tab>

507</Tabs>581</Tabs>

508 582 

509## 環境配置583<h2 id="environment-configuration">

584 環境配置

585</h2>

510 586 

511您在[開始會話](#start-a-session)時選擇的環境決定了 Claude 執行的位置以及您如何連接:587您在[開始會話](#start-a-session)時選擇的環境決定了 Claude 執行的位置以及您如何連接:

512 588 


514* **Remote**:在 Anthropic 的雲端基礎設施上執行。即使您關閉應用程式,會話也會繼續。590* **Remote**:在 Anthropic 的雲端基礎設施上執行。即使您關閉應用程式,會話也會繼續。

515* **SSH**:在您透過 SSH 連接的遠端機器上執行,例如您自己的伺服器、雲端虛擬機器或開發容器591* **SSH**:在您透過 SSH 連接的遠端機器上執行,例如您自己的伺服器、雲端虛擬機器或開發容器

516 592 

517### 本機會話593<h3 id="local-sessions">

594 本機會話

595</h3>

518 596 

519桌面應用程式並不總是繼承您的完整 shell 環境。在 macOS 上,當您從 Dock 或 Finder 啟動應用程式時,它會讀取您的 shell 設定檔(如 `~/.zshrc` 或 `~/.bashrc`)以提取 `PATH` 和一組固定的 Claude Code 變數,但您在那裡匯出的其他變數不會被拾取。在 Windows 上,應用程式繼承使用者和系統環境變數,但不讀取 PowerShell 設定檔。597桌面應用程式並不總是繼承您的完整 shell 環境。在 macOS 上,當您從 Dock 或 Finder 啟動應用程式時,它會讀取您的 shell 設定檔(如 `~/.zshrc` 或 `~/.bashrc`)以提取 `PATH` 和一組固定的 Claude Code 變數,但您在那裡匯出的其他變數不會被拾取。在 Windows 上,應用程式繼承使用者和系統環境變數,但不讀取 PowerShell 設定檔。

520 598 

521若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/zh-TW/env-vars)。599若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/zh-TW/env-vars)。

522 600 

523[擴展思考](/zh-TW/model-config#extended-thinking)預設啟用,這改進了複雜推理任務的效能,但使用額外的 tokens。若要完全停用思考,請在本機環境編輯器中將 `MAX_THINKING_TOKENS` 設定為 `0`。在具有[自適應推理](/zh-TW/model-config#adjust-effort-level)的模型上,任何其他 `MAX_THINKING_TOKENS` 值都會被忽略,因為自適應推理控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,將 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 設定為 `1` 以使用固定思考預算;Opus 4.7 始終使用自適應推理,沒有固定預算模式。601[Extended thinking](/zh-TW/model-config#extended-thinking) 預設啟用,這改進了複雜推理任務的效能,但使用額外的 tokens。若要完全停用思考,請在本機環境編輯器中將 `MAX_THINKING_TOKENS` 設定為 `0`。在具有[自適應推理](/zh-TW/model-config#adjust-effort-level)的模型上,任何其他 `MAX_THINKING_TOKENS` 值都會被忽略,因為自適應推理控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,將 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 設定為 `1` 以使用固定思考預算;Opus 4.7 及更新版本始終使用自適應推理,沒有固定預算模式。

524 602 

525### 遠端會話603<h3 id="remote-sessions">

604 遠端會話

605</h3>

526 606 

527遠端會話即使您關閉應用程式也會在背景繼續。使用情況計入您的[訂閱計畫限制](/zh-TW/costs),沒有單獨的計算費用。607遠端會話即使您關閉應用程式也會在背景繼續。使用情況計入您的[訂閱計畫限制](/zh-TW/costs),沒有單獨的計算費用。

528 608 

529您可以建立具有不同網路存取級別和環境變數的自訂雲端環境。在開始遠端會話時選擇環境下拉式選單,然後選擇 **Add environment**。有關配置網路存取和環境變數的詳細資訊,請參閱[雲端環境](/zh-TW/claude-code-on-the-web#the-cloud-environment)。609您可以建立具有不同網路存取級別和環境變數的自訂雲端環境。在開始遠端會話時選擇環境下拉式選單,然後選擇 **Add environment**。有關配置網路存取和環境變數的詳細資訊,請參閱[雲端環境](/zh-TW/claude-code-on-the-web#the-cloud-environment)。

530 610 

531### SSH 會話611<h3 id="ssh-sessions">

612 SSH 會話

613</h3>

532 614 

533SSH 會話可讓您在遠端機器上執行 Claude Code,同時使用桌面應用程式作為您的介面。這對於使用存在於雲端虛擬機器、開發容器或具有特定硬體或相依性的伺服器上的程式碼庫很有用。615SSH 會話可讓您在遠端機器上執行 Claude Code,同時使用桌面應用程式作為您的介面。這對於使用存在於雲端虛擬機器、開發容器或具有特定硬體或相依性的伺服器上的程式碼庫很有用。

534 616 


543 625 

544遠端機器必須執行 Linux 或 macOS。桌面應用程式會在您第一次連接時自動在遠端機器上安裝 Claude Code。連接後,SSH 會話支援權限模式、連接器、plugins 和 MCP servers。626遠端機器必須執行 Linux 或 macOS。桌面應用程式會在您第一次連接時自動在遠端機器上安裝 Claude Code。連接後,SSH 會話支援權限模式、連接器、plugins 和 MCP servers。

545 627 

546#### 為您的團隊預先配置 SSH 連線628<h4 id="pre-configure-ssh-connections-for-your-team">

629 為您的團隊預先配置 SSH 連線

630</h4>

547 631 

548管理員可以透過將 `sshConfigs` 新增到[受管設定](/zh-TW/settings#settings-precedence)檔案來將 SSH 連線分發給團隊成員。以這種方式定義的連線會自動出現在每個使用者的環境下拉式選單中,並顯示為受管,因此使用者可以選擇它們,但無法在應用程式中編輯或刪除它們。632管理員可以透過將 `sshConfigs` 新增到[受管設定](/zh-TW/settings#settings-precedence)檔案來將 SSH 連線分發給團隊成員。以這種方式定義的連線會自動出現在每個使用者的環境下拉式選單中,並顯示為受管,因此使用者可以選擇它們,但無法在應用程式中編輯或刪除它們。

549 633 


566 650 

567每個項目都需要 `id`、`name` 和 `sshHost`。`sshPort`、`sshIdentityFile` 和 `startDirectory` 欄位是選用的。使用者也可以將 `sshConfigs` 新增到他們自己的 `~/.claude/settings.json`,這是透過對話框新增的連線的儲存位置。651每個項目都需要 `id`、`name` 和 `sshHost`。`sshPort`、`sshIdentityFile` 和 `startDirectory` 欄位是選用的。使用者也可以將 `sshConfigs` 新增到他們自己的 `~/.claude/settings.json`,這是透過對話框新增的連線的儲存位置。

568 652 

569#### 限制使用者可以連接的 SSH 主機653<h4 id="restrict-which-ssh-hosts-users-can-connect-to">

654 限制使用者可以連接的 SSH 主機

655</h4>

570 656 

571管理員可以透過將 `sshHostAllowlist` 新增到[受管設定](/zh-TW/settings#settings-precedence)檔案來限制 Desktop 的 SSH 會話到已核准的主機集合。設定後,使用者只能連接到其解析的主機名稱與其中一個模式相符的主機。將其設定為空陣列以完全停用 SSH 會話。657管理員可以透過將 `sshHostAllowlist` 新增到[受管設定](/zh-TW/settings#settings-precedence)檔案來限制 Desktop 的 SSH 會話到已核准的主機集合。設定後,使用者只能連接到其解析的主機名稱與其中一個模式相符的主機。將其設定為空陣列以完全停用 SSH 會話。

572 658 


582 668 

583`sshHostAllowlist` 僅從受管設定讀取;使用者或專案設定中的值會被忽略。只有 Claude Desktop 應用程式遵守此設定;Claude Code CLI 和 IDE 擴充功能不讀取它,它也不限制透過 Bash 工具執行的 `ssh` 命令。它控制 Desktop 應用程式連接的主機,而不是網路出口,因此如果您需要硬邊界,請將其與您組織的網路或零信任控制配對。669`sshHostAllowlist` 僅從受管設定讀取;使用者或專案設定中的值會被忽略。只有 Claude Desktop 應用程式遵守此設定;Claude Code CLI 和 IDE 擴充功能不讀取它,它也不限制透過 Bash 工具執行的 `ssh` 命令。它控制 Desktop 應用程式連接的主機,而不是網路出口,因此如果您需要硬邊界,請將其與您組織的網路或零信任控制配對。

584 670 

585## 企業配置671<h2 id="enterprise-configuration">

672 企業配置

673</h2>

586 674 

587Teams 或 Enterprise 計畫上的組織可以透過管理員主控台控制、受管設定檔案和裝置管理原則來管理桌面應用程式行為。675Teams 或 Enterprise 計畫上的組織可以透過管理員主控台控制、受管設定檔案和裝置管理原則來管理桌面應用程式行為。

588 676 

589### 管理員主控台控制677<h3 id="admin-console-controls">

678 管理員主控台控制

679</h3>

590 680 

591這些設定透過[管理員設定主控台](https://claude.ai/admin-settings/claude-code)配置:681這些設定透過[管理員設定主控台](https://claude.ai/admin-settings/claude-code)配置:

592 682 


595* **遠端控制**:為您的組織啟用或停用[遠端控制](/zh-TW/remote-control)685* **遠端控制**:為您的組織啟用或停用[遠端控制](/zh-TW/remote-control)

596* **停用略過權限模式**:防止您組織中的使用者啟用略過權限模式686* **停用略過權限模式**:防止您組織中的使用者啟用略過權限模式

597 687 

598### 受管設定688<h3 id="managed-settings">

689 受管設定

690</h3>

599 691 

600受管設定會覆蓋專案和使用者設定,並在 Desktop 產生 CLI 會話時套用。您可以在您組織的[受管設定](/zh-TW/settings#settings-precedence)檔案中設定這些金鑰,或透過管理員主控台遠端推送它們。692受管設定會覆蓋專案和使用者設定,並在 Desktop 產生 CLI 會話時套用。您可以在您組織的[受管設定](/zh-TW/settings#settings-precedence)檔案中設定這些金鑰,或透過管理員主控台遠端推送它們。

601 693 


612 704 

613`permissions.disableBypassPermissionsMode` 和 `disableAutoMode` 也在使用者和專案設定中運作,但將它們放在受管設定中可防止使用者覆蓋它們。`autoMode` 從使用者設定、`.claude/settings.local.json` 和受管設定讀取,但不從簽入的 `.claude/settings.json` 讀取:複製的儲存庫無法注入自己的分類器規則。有關受管專用設定(包括 `allowManagedPermissionRulesOnly` 和 `allowManagedHooksOnly`)的完整清單,請參閱[受管專用設定](/zh-TW/permissions#managed-only-settings)。705`permissions.disableBypassPermissionsMode` 和 `disableAutoMode` 也在使用者和專案設定中運作,但將它們放在受管設定中可防止使用者覆蓋它們。`autoMode` 從使用者設定、`.claude/settings.local.json` 和受管設定讀取,但不從簽入的 `.claude/settings.json` 讀取:複製的儲存庫無法注入自己的分類器規則。有關受管專用設定(包括 `allowManagedPermissionRulesOnly` 和 `allowManagedHooksOnly`)的完整清單,請參閱[受管專用設定](/zh-TW/permissions#managed-only-settings)。

614 706 

615### 裝置管理原則707<h3 id="device-management-policies">

708 裝置管理原則

709</h3>

616 710 

617IT 團隊可以透過 macOS 上的 MDM 或 Windows 上的群組原則來管理桌面應用程式。可用的原則包括啟用或停用 Claude Code 功能、控制自動更新和設定自訂部署 URL。711IT 團隊可以透過 macOS 上的 MDM 或 Windows 上的群組原則來管理桌面應用程式。可用的原則包括啟用或停用 Claude Code 功能、控制自動更新和設定自訂部署 URL。

618 712 

619* **macOS**:使用 Jamf 或 Kandji 等工具透過 `com.anthropic.Claude` 偏好設定網域配置713* **macOS**:使用 Jamf 或 Kandji 等工具透過 `com.anthropic.Claude` 偏好設定網域配置

620* **Windows**:透過 `SOFTWARE\Policies\Claude` 的登錄配置714* **Windows**:透過 `SOFTWARE\Policies\Claude` 的登錄配置

621 715 

622### 驗證和 SSO716<h3 id="authentication-and-sso">

717 驗證和 SSO

718</h3>

623 719 

624企業組織可以要求所有使用者進行 SSO。有關計畫級別的詳細資訊,請參閱[驗證](/zh-TW/authentication),有關 SAML 和 OIDC 配置,請參閱[設定 SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)。720企業組織可以要求所有使用者進行 SSO。有關計畫級別的詳細資訊,請參閱[驗證](/zh-TW/authentication),有關 SAML 和 OIDC 配置,請參閱[設定 SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)。

625 721 

626### 資料處理722<h3 id="data-handling">

723 資料處理

724</h3>

627 725 

628Claude Code 在本機會話中本機處理您的程式碼,或在遠端會話中在 Anthropic 的雲端基礎設施上處理。對話和程式碼上下文會傳送到 Anthropic 的 API 進行處理。有關資料保留、隱私和合規性的詳細資訊,請參閱[資料處理](/zh-TW/data-usage)。726Claude Code 在本機會話中本機處理您的程式碼,或在遠端會話中在 Anthropic 的雲端基礎設施上處理。對話和程式碼上下文會傳送到 Anthropic 的 API 進行處理。有關資料保留、隱私和合規性的詳細資訊,請參閱[資料處理](/zh-TW/data-usage)。

629 727 

630### 部署728<h3 id="deployment">

729 部署

730</h3>

631 731 

632Desktop 可以透過企業部署工具分發:732Desktop 可以透過企業部署工具分發:

633 733 


638 738 

639有關完整的企業配置參考,請參閱[企業配置指南](https://support.claude.com/en/articles/12622667-enterprise-configuration)。739有關完整的企業配置參考,請參閱[企業配置指南](https://support.claude.com/en/articles/12622667-enterprise-configuration)。

640 740 

641## 來自 CLI?741<h2 id="coming-from-the-cli">

742 來自 CLI?

743</h2>

642 744 

643如果您已經使用 Claude Code CLI,Desktop 執行相同的基礎引擎,具有圖形介面。您可以在同一機器上同時執行兩者,甚至在同一專案上執行。每個都維護單獨的會話歷史記錄,但它們透過 CLAUDE.md 檔案共用配置和專案記憶。745如果您已經使用 Claude Code CLI,Desktop 執行相同的基礎引擎,具有圖形介面。您可以在同一機器上同時執行兩者,甚至在同一專案上執行。每個都維護單獨的會話歷史記錄,但它們透過 CLAUDE.md 檔案共用配置和專案記憶。

644 746 

645若要將 CLI 會話移至 Desktop,請在終端機中執行 `/desktop`。Claude 儲存您的會話並在桌面應用程式中開啟它,然後退出 CLI。此命令僅在 macOS 和 Windows 上可用。747若要將 CLI 會話移至 Desktop,請在終端機中執行 `/desktop`。Claude 儲存您的會話並在桌面應用程式中開啟它,然後退出 CLI。此命令在 macOS 和 Windows 上可用,當您使用 Claude 訂閱登入時它不適用於 API 金鑰驗證或 Bedrock、Vertex 或 Foundry。

646 748 

647<Tip>749<Tip>

648 何時使用 Desktop 與 CLI:當您想要在一個視窗中管理並行會話、並排排列窗格或視覺化檢查變更時,使用 Desktop。當您需要指令碼、自動化或偏好終端機工作流程時,使用 CLI。750 何時使用 Desktop 與 CLI:當您想要在一個視窗中管理並行會話、並排排列窗格或視覺化檢查變更時,使用 Desktop。當您需要指令碼、自動化或偏好終端機工作流程時,使用 CLI。

649</Tip>751</Tip>

650 752 

651### CLI 標誌等效項753<h3 id="cli-flag-equivalents">

754 CLI 標誌等效項

755</h3>

652 756 

653此表顯示常見 CLI 標誌的桌面應用程式等效項。未列出的標誌沒有桌面等效項,因為它們是為指令碼或自動化設計的。757此表顯示常見 CLI 標誌的桌面應用程式等效項。未列出的標誌沒有桌面等效項,因為它們是為指令碼或自動化設計的。

654 758 


665| `ANTHROPIC_MODEL` 環境變數 | 傳送按鈕旁的模型下拉式選單 |769| `ANTHROPIC_MODEL` 環境變數 | 傳送按鈕旁的模型下拉式選單 |

666| `MAX_THINKING_TOKENS` 環境變數 | 在本機環境編輯器中設定。請參閱[環境配置](#environment-configuration)。 |770| `MAX_THINKING_TOKENS` 環境變數 | 在本機環境編輯器中設定。請參閱[環境配置](#environment-configuration)。 |

667 771 

668### 共用配置772<h3 id="shared-configuration">

773 共用配置

774</h3>

669 775 

670Desktop 和 CLI 讀取相同的配置檔案,因此您的設定會轉移:776Desktop 和 CLI 讀取相同的配置檔案,因此您的設定會轉移:

671 777 


676* **Models**:Sonnet、Opus 和 Haiku 在兩者中都可用。在 Desktop 中,從傳送按鈕旁的下拉式選單中選擇模型。您可以在會話期間從相同的下拉式選單變更模型。782* **Models**:Sonnet、Opus 和 Haiku 在兩者中都可用。在 Desktop 中,從傳送按鈕旁的下拉式選單中選擇模型。您可以在會話期間從相同的下拉式選單變更模型。

677 783 

678<Note>784<Note>

679 **MCP servers:桌面聊天應用程式與 Claude Code**: `claude_desktop_config.json` 中為 Claude Desktop 聊天應用程式配置的 MCP servers 與 Claude Code 分開,不會出現在 Code 標籤中。若要在 Claude Code 中使用 MCP servers請在 `~/.claude.json` 或您的專案的 `.mcp.json` 檔案中配置它們有關詳細資訊,請參閱 [MCP 配置](/zh-TW/mcp#installing-mcp-servers)785 **來自 Claude Desktop 聊天應用程式的 MCP servers**:Desktop 應用程式從 `claude_desktop_config.json` MCP servers 載入到 Code 標籤會話中以及來自 `~/.claude.json` `.mcp.json` 的伺服器 `claude_desktop_config.json` 中定義的伺服器在 Desktop 聊天表面和 Code 標籤中都可用

786 

787 獨立 CLI 不讀取 `claude_desktop_config.json`。在 macOS 和 WSL 上,執行 `claude mcp add-from-claude-desktop` 將這些伺服器複製到 `~/.claude.json`。請參閱[從 Claude Desktop 匯入 MCP servers](/zh-TW/mcp#import-mcp-servers-from-claude-desktop)以了解匯入流程和範圍選項。

680</Note>788</Note>

681 789 

682### 功能比較790<h3 id="feature-comparison">

791 功能比較

792</h3>

683 793 

684此表比較 CLI 和 Desktop 之間的核心功能。有關 CLI 標誌的完整清單,請參閱 [CLI 參考](/zh-TW/cli-reference)。794此表比較 CLI 和 Desktop 之間的核心功能。有關 CLI 標誌的完整清單,請參閱 [CLI 參考](/zh-TW/cli-reference)。

685 795 


699| Dispatch 整合 | 不可用 | [Dispatch 會話](#sessions-from-dispatch)在側邊欄中 |809| Dispatch 整合 | 不可用 | [Dispatch 會話](#sessions-from-dispatch)在側邊欄中 |

700| 指令碼和自動化 | [`--print`](/zh-TW/cli-reference)、[Agent SDK](/zh-TW/headless) | 不可用 |810| 指令碼和自動化 | [`--print`](/zh-TW/cli-reference)、[Agent SDK](/zh-TW/headless) | 不可用 |

701 811 

702### Desktop 中不可用的內容812<h3 id="what-s-not-available-in-desktop">

813 Desktop 中不可用的內容

814</h3>

703 815 

704以下功能僅在 CLI 或 VS Code 擴充功能中可用:816以下功能僅在 CLI 或 VS Code 擴充功能中可用:

705 817 

706* **第三方提供者**:Desktop 預設連接到 Anthropic 的 API。企業部署可以配置 Vertex AI 和閘道提供者,透過[受管設定](https://support.claude.com/en/articles/12622667-enterprise-configuration)。對於 Bedrock 或 Foundry,請使用 [CLI](/zh-TW/quickstart)。818* **第三方提供者**:Desktop 預設連接到 Anthropic 的 API。企業部署可以配置 Vertex AI 和閘道提供者,透過[受管設定](https://support.claude.com/en/articles/12622667-enterprise-configuration)。對於 Bedrock 或 Foundry,請使用 [CLI](/zh-TW/quickstart)。

707* **Linux**:桌面應用程式僅在 macOS 和 Windows 上可用。在 Linux 上,請使用 [CLI](/zh-TW/quickstart)。819* **Linux**:桌面應用程式僅在 macOS 和 Windows 上可用。在 Linux 上,請使用 [CLI](/zh-TW/quickstart)。

708* **內嵌程式碼建議**:Desktop 不提供自動完成樣式的建議。它透過對話提示和明確的程式碼變更進行工作。820* **內嵌程式碼建議**:Desktop 不提供自動完成樣式的建議。它透過對話提示和明確的程式碼變更進行工作。

709* **Agent teams**:多代理協調可透過 [CLI](/zh-TW/agent-teams) [Agent SDK](/zh-TW/headless) 使用不在 Desktop 821* **Agent teams**:平行 Claude Code 會話相互傳遞訊息,可在 [CLI](/zh-TW/agent-teams) 中使用,不在 Desktop 中。若要在一個會話內進行多代理工作,請使用 [dynamic workflows](/zh-TW/workflows),它們在 Desktop 中執行

710* **Terminal-dialog 命令**:在終端機中開啟互動式面板的內建命令,例如 `/permissions`、`/config`、`/agents` 和 `/doctor`,在 Code 標籤中不可用,並回覆 `isn't available in this environment`。直接編輯[設定檔案](/zh-TW/settings)以管理權限規則和配置,或從獨立 CLI 執行命令。822* **Terminal-dialog 命令**:在終端機中開啟互動式面板的內建命令,例如 `/permissions`、`/config`、`/agents` 和 `/doctor`,在 Code 標籤中不可用,並回覆 `isn't available in this environment`。直接編輯[設定檔案](/zh-TW/settings)以管理權限規則和配置,或從獨立 CLI 執行命令。

711 823 

712## 疑難排解824<h2 id="troubleshooting">

825 疑難排解

826</h2>

713 827 

714下面的部分涵蓋桌面應用程式特定的問題。對於出現在聊天中的執行時 API 錯誤,例如 `API Error: 500`、`529 Overloaded`、`429` 或 `Prompt is too long`,請參閱[錯誤參考](/zh-TW/errors)。這些錯誤及其修復在 CLI、Desktop 和網路中是相同的。828下面的部分涵蓋桌面應用程式特定的問題。對於出現在聊天中的執行時 API 錯誤,例如 `API Error: 500`、`529 Overloaded`、`429` 或 `Prompt is too long`,請參閱[錯誤參考](/zh-TW/errors)。這些錯誤及其修復在 CLI、Desktop 和網路中是相同的。

715 829 

716### 檢查您的版本830<h3 id="check-your-version">

831 檢查您的版本

832</h3>

717 833 

718若要查看您執行的桌面應用程式版本:834若要查看您執行的桌面應用程式版本:

719 835 


722 838 

723點擊版本號以將其複製到您的剪貼簿。839點擊版本號以將其複製到您的剪貼簿。

724 840 

725### Code 標籤中的 403 或驗證錯誤841<h3 id="403-or-authentication-errors-in-the-code-tab">

842 Code 標籤中的 403 或驗證錯誤

843</h3>

726 844 

727如果在使用 Code 標籤時看到 `Error 403: Forbidden` 或其他驗證失敗:845如果在使用 Code 標籤時看到 `Error 403: Forbidden` 或其他驗證失敗:

728 846 


7313. 如果 CLI 有效但 Desktop 無效,完全退出桌面應用程式(不只是關閉視窗),然後重新開啟並登入。8493. 如果 CLI 有效但 Desktop 無效,完全退出桌面應用程式(不只是關閉視窗),然後重新開啟並登入。

7324. 檢查您的網際網路連線和代理設定。8504. 檢查您的網際網路連線和代理設定。

733 851 

734### 啟動時螢幕空白或卡住852<h3 id="blank-or-stuck-screen-on-launch">

853 啟動時螢幕空白或卡住

854</h3>

735 855 

736如果應用程式開啟但顯示空白或無反應的螢幕:856如果應用程式開啟但顯示空白或無反應的螢幕:

737 857 


7392. 檢查待處理的更新。應用程式在啟動時自動更新。8592. 檢查待處理的更新。應用程式在啟動時自動更新。

7403. 在 Windows 上,檢查「事件檢視器」中的 **Windows 日誌 → 應用程式** 下的當機日誌。8603. 在 Windows 上,檢查「事件檢視器」中的 **Windows 日誌 → 應用程式** 下的當機日誌。

741 861 

742### 「無法載入會話」862<h3 id="failed-to-load-session">

863 「無法載入會話」

864</h3>

743 865 

744如果您看到 `Failed to load session`,選定的資料夾可能不再存在、Git 儲存庫可能需要未安裝的 Git LFS,或檔案權限可能阻止存取。嘗試選擇不同的資料夾或重新啟動應用程式。866如果您看到 `Failed to load session`,選定的資料夾可能不再存在、Git 儲存庫可能需要未安裝的 Git LFS,或檔案權限可能阻止存取。嘗試選擇不同的資料夾或重新啟動應用程式。

745 867 

746### 會話找不到已安裝的工具868<h3 id="session-not-finding-installed-tools">

869 會話找不到已安裝的工具

870</h3>

747 871 

748如果 Claude 找不到 `npm`、`node` 或其他 CLI 命令等工具,請驗證工具在您的常規終端機中有效、檢查您的 shell 設定檔是否正確設定 PATH,並重新啟動桌面應用程式以重新載入環境變數。872如果 Claude 找不到 `npm`、`node` 或其他 CLI 命令等工具,請驗證工具在您的常規終端機中有效、檢查您的 shell 設定檔是否正確設定 PATH,並重新啟動桌面應用程式以重新載入環境變數。

749 873 

750### Git 和 Git LFS 錯誤874<h3 id="git-and-git-lfs-errors">

875 Git 和 Git LFS 錯誤

876</h3>

751 877 

752在 Windows 上,Git 是啟動本機會話的 Code 標籤所需的。如果您看到「Git is required」,請安裝 [Git for Windows](https://git-scm.com/downloads/win) 並重新啟動應用程式。878在 Windows 上,Git 是啟動本機會話的 Code 標籤所需的。如果您看到「Git is required」,請安裝 [Git for Windows](https://git-scm.com/downloads/win) 並重新啟動應用程式。

753 879 

754如果您看到「Git LFS is required by this repository but is not installed」,請從 [git-lfs.com](https://git-lfs.com/) 安裝 Git LFS,執行 `git lfs install`,然後重新啟動應用程式。880如果您看到「Git LFS is required by this repository but is not installed」,請從 [git-lfs.com](https://git-lfs.com/) 安裝 Git LFS,執行 `git lfs install`,然後重新啟動應用程式。

755 881 

756### Windows 上的 MCP servers 無法運作882<h3 id="mcp-servers-not-working-on-windows">

883 Windows 上的 MCP servers 無法運作

884</h3>

757 885 

758如果 MCP server 切換沒有回應或伺服器在 Windows 上無法連接,請檢查伺服器是否在您的設定中正確配置、重新啟動應用程式、驗證伺服器程序在工作管理員中執行,並檢查伺服器日誌以查看連線錯誤。886如果 MCP server 切換沒有回應或伺服器在 Windows 上無法連接,請檢查伺服器是否在您的設定中正確配置、重新啟動應用程式、驗證伺服器程序在工作管理員中執行,並檢查伺服器日誌以查看連線錯誤。

759 887 

760### 應用程式無法退出888<h3 id="app-won-t-quit">

889 應用程式無法退出

890</h3>

761 891 

762* **macOS**:按 Cmd+Q。如果應用程式沒有回應,使用 Cmd+Option+Esc 強制退出,選擇 Claude,然後點擊「強制退出」。892* **macOS**:按 Cmd+Q。如果應用程式沒有回應,使用 Cmd+Option+Esc 強制退出,選擇 Claude,然後點擊「強制退出」。

763* **Windows**:使用 Ctrl+Shift+Esc 的工作管理員來結束 Claude 程序。893* **Windows**:使用 Ctrl+Shift+Esc 的工作管理員來結束 Claude 程序。

764 894 

765### Windows 特定問題895<h3 id="windows-specific-issues">

896 Windows 特定問題

897</h3>

766 898 

767* **安裝後 PATH 未更新**:開啟新的終端機視窗。PATH 更新僅適用於新的終端機會話。899* **安裝後 PATH 未更新**:開啟新的終端機視窗。PATH 更新僅適用於新的終端機會話。

768* **並行安裝錯誤**:如果您看到有關另一個安裝進行中的錯誤,但實際上沒有,請嘗試以管理員身份執行安裝程式。900* **並行安裝錯誤**:如果您看到有關另一個安裝進行中的錯誤,但實際上沒有,請嘗試以管理員身份執行安裝程式。

769 901 

770### 在 CLI 中開啟時「分支尚不存在」902<h3 id="branch-doesn-t-exist-yet-when-opening-in-cli">

903 在 CLI 中開啟時「分支尚不存在」

904</h3>

771 905 

772遠端會話可以建立在您的本機機器上不存在的分支。點擊會話工具列中的分支名稱以複製它,然後在本機提取它:906遠端會話可以建立在您的本機機器上不存在的分支。點擊會話工具列中的分支名稱以複製它,然後在本機提取它:

773 907 


776git checkout <branch-name>910git checkout <branch-name>

777```911```

778 912 

779### 仍然卡住?913<h3 id="still-stuck">

914 仍然卡住?

915</h3>

780 916 

781* 在 [GitHub Issues](https://github.com/anthropics/claude-code/issues) 上搜尋或提交錯誤917* 在 [GitHub Issues](https://github.com/anthropics/claude-code/issues) 上搜尋或提交錯誤

782* 造訪 [Claude 支援中心](https://support.claude.com/)918* 造訪 [Claude 支援中心](https://support.claude.com/)

Details

34 34 

35Chat 和 Cowork 涵蓋在 [Claude Desktop 支援文章](https://support.claude.com/en/collections/16163169-claude-desktop) 中。本頁面重點關注 **Code** 標籤。35Chat 和 Cowork 涵蓋在 [Claude Desktop 支援文章](https://support.claude.com/en/collections/16163169-claude-desktop) 中。本頁面重點關注 **Code** 標籤。

36 36 

37## 安裝37<h2 id="install">

38 安裝

39</h2>

38 40 

39<Steps>41<Steps>

40 <Step title="安裝並登入">42 <Step title="安裝並登入">


48 50 

49桌面應用程式包含 Claude Code。您無需單獨安裝 Node.js 或 CLI。若要從終端機使用 `claude`,請單獨安裝 CLI。請參閱 [開始使用 CLI](/zh-TW/quickstart)。51桌面應用程式包含 Claude Code。您無需單獨安裝 Node.js 或 CLI。若要從終端機使用 `claude`,請單獨安裝 CLI。請參閱 [開始使用 CLI](/zh-TW/quickstart)。

50 52 

51## 開始您的第一個會話53<h2 id="start-your-first-session">

54 開始您的第一個會話

55</h2>

52 56 

53開啟 Code 標籤後,選擇一個專案並給 Claude 一些工作。57開啟 Code 標籤後,選擇一個專案並給 Claude 一些工作。

54 58 


63 您也可以選擇:67 您也可以選擇:

64 68 

65 * **Remote**:在 Anthropic 的雲端基礎設施上執行會話,即使您關閉應用程式也會繼續。遠端會話使用與 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 相同的基礎設施。69 * **Remote**:在 Anthropic 的雲端基礎設施上執行會話,即使您關閉應用程式也會繼續。遠端會話使用與 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 相同的基礎設施。

66 * **SSH**:透過 SSH 連接到遠端機器(您自己的伺服器、雲端 VM 或開發容器。Claude Code 必須安裝在遠端機器上70 * **SSH**:透過 SSH 連接到遠端機器,例如您自己的伺服器、雲端 VM 或開發容器。Desktop 在您第一次連接時會自動在遠端機器上安裝 Claude Code。

67 </Step>71 </Step>

68 72 

69 <Step title="選擇模型">73 <Step title="選擇模型">


91 </Step>95 </Step>

92</Steps>96</Steps>

93 97 

94## 接下來呢?98<h2 id="now-what">

99 接下來呢?

100</h2>

95 101 

96您已進行了第一次編輯。如需 Desktop 可執行的所有操作的完整參考,請參閱 [使用 Claude Code Desktop](/zh-TW/desktop)。以下是一些接下來要嘗試的事項。102您已進行了第一次編輯。如需 Desktop 可執行的所有操作的完整參考,請參閱 [使用 Claude Code Desktop](/zh-TW/desktop)。以下是一些接下來要嘗試的事項。

97 103 

98**中斷並引導。** 您可以隨時中斷 Claude。如果它走錯了方向點擊停止按鈕或輸入您的更正並按 **Enter**。Claude 停止正在進行的操作並根據您的輸入進行調整您無需等待它完成或重新開始104**中斷並引導。** 您可以隨時中斷 Claude。點擊停止按鈕立即中斷或輸入更正並按 **Enter** 以在不停止執行中操作的情況下發送無論哪種方式,您都無需等待它完成或重新開始

99 105 

100**給 Claude 更多上下文。** 在提示框中輸入 `@filename` 以將特定檔案拉入對話,使用附件按鈕附加影像和 PDF,或直接將檔案拖放到提示中。Claude 擁有的上下文越多,結果越好。請參閱 [新增檔案和上下文](/zh-TW/desktop#add-files-and-context-to-prompts)。106**給 Claude 更多上下文。** 在提示框中輸入 `@filename` 以將特定檔案拉入對話,使用附件按鈕附加影像和 PDF,或直接將檔案拖放到提示中。Claude 擁有的上下文越多,結果越好。請參閱 [新增檔案和上下文](/zh-TW/desktop#add-files-and-context-to-prompts)。

101 107 


117 123 

118**準備好時擴展。** 從側邊欄開啟 [並行會話](/zh-TW/desktop#work-in-parallel-with-sessions) 以同時處理多個任務,每個任務都在自己的 Git worktree 中,並開啟 [任務窗格](/zh-TW/desktop#watch-background-tasks) 以監看會話正在執行的子代理和背景命令。開啟 [側邊聊天](/zh-TW/desktop#ask-a-side-question-without-derailing-the-session) 以提出問題而不會偏離主線。將 [長期執行的工作發送到雲端](/zh-TW/desktop#run-long-running-tasks-remotely),以便即使您關閉應用程式也會繼續,或 [在網路或 IDE 中繼續會話](/zh-TW/desktop#continue-in-another-surface)(如果任務花費的時間比預期長)。[連接外部工具](/zh-TW/desktop#extend-claude-code),例如 GitHub、Slack 和 Linear,以整合您的工作流程。124**準備好時擴展。** 從側邊欄開啟 [並行會話](/zh-TW/desktop#work-in-parallel-with-sessions) 以同時處理多個任務,每個任務都在自己的 Git worktree 中,並開啟 [任務窗格](/zh-TW/desktop#watch-background-tasks) 以監看會話正在執行的子代理和背景命令。開啟 [側邊聊天](/zh-TW/desktop#ask-a-side-question-without-derailing-the-session) 以提出問題而不會偏離主線。將 [長期執行的工作發送到雲端](/zh-TW/desktop#run-long-running-tasks-remotely),以便即使您關閉應用程式也會繼續,或 [在網路或 IDE 中繼續會話](/zh-TW/desktop#continue-in-another-surface)(如果任務花費的時間比預期長)。[連接外部工具](/zh-TW/desktop#extend-claude-code),例如 GitHub、Slack 和 Linear,以整合您的工作流程。

119 125 

120## 來自 CLI?126<h2 id="coming-from-the-cli">

127 來自 CLI?

128</h2>

121 129 

122Desktop 使用與 CLI 相同的引擎,但具有圖形介面。您可以在同一專案上同時執行兩者,它們共享配置(CLAUDE.md 檔案、MCP servers、hooks、skills 和設定)。如需功能、標誌等效項和 Desktop 中不可用的內容的完整比較,請參閱 [CLI 比較](/zh-TW/desktop#coming-from-the-cli)。130Desktop 使用與 CLI 相同的引擎,但具有圖形介面。您可以在同一專案上同時執行兩者,它們共享配置(CLAUDE.md 檔案、MCP servers、hooks、skills 和設定)。如需功能、標誌等效項和 Desktop 中不可用的內容的完整比較,請參閱 [CLI 比較](/zh-TW/desktop#coming-from-the-cli)。

123 131 

124## 接下來132<h2 id="what-s-next">

133 接下來

134</h2>

125 135 

126* [使用 Claude Code Desktop](/zh-TW/desktop):權限模式、並行會話、差異檢視、連接器和企業配置136* [使用 Claude Code Desktop](/zh-TW/desktop):權限模式、並行會話、差異檢視、連接器和企業配置

127* [疑難排解](/zh-TW/desktop#troubleshooting):常見錯誤和設定問題的解決方案137* [疑難排解](/zh-TW/desktop#troubleshooting):常見錯誤和設定問題的解決方案

Details

10 10 

11Desktop 應用程式的 **Routines** 頁面可讓您建立本機排程任務和遠端 [routines](/zh-TW/routines)。本機任務在您的機器上執行,可直接存取您的檔案和工具,但只有在應用程式開啟且您的電腦處於喚醒狀態時才會觸發。遠端 routine 在 Anthropic 管理的雲端基礎設施上執行,即使您的電腦關閉也能執行,並且也可以透過 API 呼叫或 GitHub 事件觸發。本頁涵蓋本機排程任務;如需遠端 routine 及其觸發選項,請參閱 [Routines](/zh-TW/routines)。11Desktop 應用程式的 **Routines** 頁面可讓您建立本機排程任務和遠端 [routines](/zh-TW/routines)。本機任務在您的機器上執行,可直接存取您的檔案和工具,但只有在應用程式開啟且您的電腦處於喚醒狀態時才會觸發。遠端 routine 在 Anthropic 管理的雲端基礎設施上執行,即使您的電腦關閉也能執行,並且也可以透過 API 呼叫或 GitHub 事件觸發。本頁涵蓋本機排程任務;如需遠端 routine 及其觸發選項,請參閱 [Routines](/zh-TW/routines)。

12 12 

13## 比較排程選項13<h2 id="compare-scheduling-options">

14 比較排程選項

15</h2>

14 16 

15Claude Code offers three ways to schedule recurring or one-off work:17Claude Code offers three ways to schedule recurring or one-off work:

16 18 


34 根據預設,排程任務會針對您的工作目錄的任何狀態執行,包括未提交的變更。在建立任務時啟用 worktree 切換,為每次執行提供其自己的隔離 Git worktree,與 [parallel sessions](/zh-TW/desktop#work-in-parallel-with-sessions) 的工作方式相同。36 根據預設,排程任務會針對您的工作目錄的任何狀態執行,包括未提交的變更。在建立任務時啟用 worktree 切換,為每次執行提供其自己的隔離 Git worktree,與 [parallel sessions](/zh-TW/desktop#work-in-parallel-with-sessions) 的工作方式相同。

35</Note>37</Note>

36 38 

37## 建立排程任務39<h2 id="create-a-scheduled-task">

40 建立排程任務

41</h2>

38 42 

39按一下側邊欄中的 **Routines**,然後按一下 **New routine** 並選擇 **Local**。設定這些欄位:43按一下側邊欄中的 **Routines**,然後按一下 **New routine** 並選擇 **Local**。設定這些欄位:

40 44 


49 53 

50您也可以透過在任何工作階段中描述您想要的內容來建立任務。例如,「設定每天早上 9 點執行的每日程式碼審查」會建立定期任務,而「提醒我明天下午 3 點檢查部署」會建立一次性任務,在觸發後會自動停用。54您也可以透過在任何工作階段中描述您想要的內容來建立任務。例如,「設定每天早上 9 點執行的每日程式碼審查」會建立定期任務,而「提醒我明天下午 3 點檢查部署」會建立一次性任務,在觸發後會自動停用。

51 55 

52## 排程選項56<h2 id="schedule-options">

57 排程選項

58</h2>

53 59 

54從 Schedule 控制項中選擇預設值:60從 Schedule 控制項中選擇預設值:

55 61 


61 67 

62對於選擇器不提供的間隔,例如每 15 分鐘、每月的第一天或在特定未來時間的單次執行,請在任何 Desktop 工作階段中詢問 Claude 以設定排程。使用純文字;例如,「排程任務每 6 小時執行一次所有測試」。68對於選擇器不提供的間隔,例如每 15 分鐘、每月的第一天或在特定未來時間的單次執行,請在任何 Desktop 工作階段中詢問 Claude 以設定排程。使用純文字;例如,「排程任務每 6 小時執行一次所有測試」。

63 69 

64## 排程任務如何執行70<h2 id="how-scheduled-tasks-run">

71 排程任務如何執行

72</h2>

65 73 

66排程任務在您的機器上執行。Desktop 在應用程式開啟時每分鐘檢查一次排程,並在任務到期時啟動新的工作階段,獨立於您開啟的任何手動工作階段。每個任務在排程時間後會有幾分鐘的小延遲,以錯開 API 流量。延遲是確定性的:同一任務始終在相同的偏移量處啟動。74排程任務在您的機器上執行。Desktop 在應用程式開啟時每分鐘檢查一次排程,並在任務到期時啟動新的工作階段,獨立於您開啟的任何手動工作階段。每個任務在排程時間後會有幾分鐘的小延遲,以錯開 API 流量。延遲是確定性的:同一任務始終在相同的偏移量處啟動。

67 75 


69 77 

70任務只有在 desktop 應用程式執行且您的電腦處於喚醒狀態時才會執行。如果您的電腦在排程時間內進入睡眠狀態,該執行會被跳過。若要防止閒置睡眠,請在 Settings 中的 **Desktop app → General** 下啟用 **Keep computer awake**。關閉筆記型電腦蓋仍會使其進入睡眠狀態。對於需要在電腦關閉時執行或應該透過 API 呼叫或 GitHub 事件觸發的任務,請改為建立遠端 [routine](/zh-TW/routines)。78任務只有在 desktop 應用程式執行且您的電腦處於喚醒狀態時才會執行。如果您的電腦在排程時間內進入睡眠狀態,該執行會被跳過。若要防止閒置睡眠,請在 Settings 中的 **Desktop app → General** 下啟用 **Keep computer awake**。關閉筆記型電腦蓋仍會使其進入睡眠狀態。對於需要在電腦關閉時執行或應該透過 API 呼叫或 GitHub 事件觸發的任務,請改為建立遠端 [routine](/zh-TW/routines)。

71 79 

72## 錯過的執行80<h2 id="missed-runs">

81 錯過的執行

82</h2>

73 83 

74當應用程式啟動或您的電腦喚醒時,Desktop 會檢查每個任務是否在過去七天內錯過了任何執行。如果有,Desktop 會為最近錯過的時間啟動恰好一次的追趕執行,並丟棄任何較舊的執行。錯過六天的每日任務在喚醒時執行一次。Desktop 會在追趕執行啟動時顯示通知。84當應用程式啟動或您的電腦喚醒時,Desktop 會檢查每個任務是否在過去七天內錯過了任何執行。如果有,Desktop 會為最近錯過的時間啟動恰好一次的追趕執行,並丟棄任何較舊的執行。錯過六天的每日任務在喚醒時執行一次。Desktop 會在追趕執行啟動時顯示通知。

75 85 

76在撰寫提示時請記住這一點。排程在上午 9 點的任務可能在晚上 11 點執行,如果您的電腦整天都在睡眠狀態。如果時間很重要,請在提示本身中新增護欄,例如:「只審查今天的提交。如果已經過下午 5 點,請跳過審查,只發佈錯過內容的摘要。」86在撰寫提示時請記住這一點。排程在上午 9 點的任務可能在晚上 11 點執行,如果您的電腦整天都在睡眠狀態。如果時間很重要,請在提示本身中新增護欄,例如:「只審查今天的提交。如果已經過下午 5 點,請跳過審查,只發佈錯過內容的摘要。」

77 87 

78## 排程任務的權限88<h2 id="permissions-for-scheduled-tasks">

89 排程任務的權限

90</h2>

79 91 

80每個任務都有其自己的權限模式,您在建立或編輯任務時設定。來自 `~/.claude/settings.json` 的允許規則也適用於排程任務工作階段。如果任務在 Ask 模式下執行,並且需要執行它沒有權限的工具,執行會停滯,直到您批准它。工作階段保持在側邊欄中開啟,以便您稍後可以回答。92每個任務都有其自己的權限模式,您在建立或編輯任務時設定。來自 `~/.claude/settings.json` 的允許規則也適用於排程任務工作階段。如果任務在 Ask 模式下執行,並且需要執行它沒有權限的工具,執行會停滯,直到您批准它。工作階段保持在側邊欄中開啟,以便您稍後可以回答。

81 93 

82為了避免停滯,在建立任務後按一下 **Run now**,監視權限提示,並為每個提示選擇「always allow」。該任務的未來執行會自動批准相同的工具,無需提示。您可以從任務的詳細資料頁面審查和撤銷這些批准。94為了避免停滯,在建立任務後按一下 **Run now**,監視權限提示,並為每個提示選擇「always allow」。該任務的未來執行會自動批准相同的工具,無需提示。您可以從任務的詳細資料頁面審查和撤銷這些批准。

83 95 

84## 管理排程任務96<h2 id="manage-scheduled-tasks">

97 管理排程任務

98</h2>

85 99 

86按一下 **Routines** 清單中的任務以開啟其詳細資料頁面。從這裡您可以:100按一下 **Routines** 清單中的任務以開啟其詳細資料頁面。從這裡您可以:

87 101 


98 112 

99若要在磁碟上編輯任務的提示,請開啟 `~/.claude/scheduled-tasks/<task-name>/SKILL.md`(如果設定了 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),則在其下)。該檔案使用 YAML frontmatter 作為 `name` 和 `description`,提示作為主體。變更在下一次執行時生效。Schedule、資料夾、模型和啟用狀態不在此檔案中:透過 Edit 表單變更它們或詢問 Claude。113若要在磁碟上編輯任務的提示,請開啟 `~/.claude/scheduled-tasks/<task-name>/SKILL.md`(如果設定了 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),則在其下)。該檔案使用 YAML frontmatter 作為 `name` 和 `description`,提示作為主體。變更在下一次執行時生效。Schedule、資料夾、模型和啟用狀態不在此檔案中:透過 Edit 表單變更它們或詢問 Claude。

100 114 

101## 相關資源115<h2 id="related-resources">

116 相關資源

117</h2>

102 118 

103* [Routines](/zh-TW/routines):在 Anthropic 管理的基礎設施上按排程、透過 API 呼叫或回應 GitHub 事件執行任務,即使您的電腦關閉也能執行119* [Routines](/zh-TW/routines):在 Anthropic 管理的基礎設施上按排程、透過 API 呼叫或回應 GitHub 事件執行任務,即使您的電腦關閉也能執行

104* [Run prompts on a schedule](/zh-TW/scheduled-tasks):在 CLI 中使用 `/loop` 的工作階段範圍排程120* [Run prompts on a schedule](/zh-TW/scheduled-tasks):在 CLI 中使用 `/loop` 的工作階段範圍排程

devcontainer.md +23 −8

Details

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

33</Accordion>33</Accordion>

34 34 

35## 在開發容器中新增 Claude Code35<h2 id="add-claude-code-to-your-dev-container">

36 在開發容器中新增 Claude Code

37</h2>

36 38 

37Claude Code 透過 [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code) 安裝到任何開發容器中。39Claude Code 透過 [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code) 安裝到任何開發容器中。

38 40 


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

89</Note>91</Note>

90 92 

91## 在重新構建時保持身份驗證和設定93<h2 id="persist-authentication-and-settings-across-rebuilds">

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

95</h2>

92 96 

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

94 98 


106 110 

107在 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 會自動將祕密作為環境變數提供給容器內。111在 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 會自動將祕密作為環境變數提供給容器內。

108 112 

109## 強制執行組織政策113<h2 id="enforce-organization-policy">

114 強制執行組織政策

115</h2>

110 116 

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

112 118 


134 140 

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

136 142 

137## 限制網路出站流量143<h2 id="restrict-network-egress">

144 限制網路出站流量

145</h2>

138 146 

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

140 148 

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

142 150 

143## 無需權限提示即可執行151<h2 id="run-without-permission-prompts">

152 無需權限提示即可執行

153</h2>

144 154 

145因為容器以非 root 使用者身份執行 Claude Code 並將命令執行限制在容器內,您可以傳遞 `--dangerously-skip-permissions` 以進行無人值守操作。當以 root 身份啟動時,CLI 會拒絕此標誌,因此請確認 `remoteUser` 設定為非 root 帳戶。155因為容器以非 root 使用者身份執行 Claude Code 並將命令執行限制在容器內,您可以傳遞 `--dangerously-skip-permissions` 以進行無人值守操作。當以 root 身份啟動時,CLI 會拒絕此標誌,因此請確認 `remoteUser` 設定為非 root 帳戶。

146 156 


148 158 

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

150 160 

151## 試用參考容器161<h2 id="try-the-reference-container">

162 試用參考容器

163</h2>

152 164 

153[`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) 儲存庫包含一個示例開發容器,該容器結合了 CLI、出站防火牆、持久磁碟區和基於 Zsh 的 shell。它作為工作示例而不是維護的基礎映像提供;在將它們應用到您自己的配置之前,使用它來查看這些部分如何組合在一起。165[`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) 儲存庫包含一個示例開發容器,該容器結合了 CLI、出站防火牆、持久磁碟區和基於 Zsh 的 shell。它作為工作示例而不是維護的基礎映像提供;在將它們應用到您自己的配置之前,使用它來查看這些部分如何組合在一起。

154 166 


180| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | 基礎映像、開發工具和 Claude Code 安裝 |192| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile) | 基礎映像、開發工具和 Claude Code 安裝 |

181| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | 阻止除允許的網域外的所有出站網路流量 |193| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) | 阻止除允許的網域外的所有出站網路流量 |

182 194 

183## 後續步驟195<h2 id="next-steps">

196 後續步驟

197</h2>

184 198 

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

186 200 


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

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

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

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

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

194* [權限模式](/zh-TW/permission-modes):從計劃模式到自動模式到繞過的完整範圍,以及何時使用每種模式209* [Permission modes](/zh-TW/permission-modes):從 Plan Mode 到 auto mode 到 bypass 的完整範圍,以及何時使用每種模式

Details

39如果 Claude Code 報告在任何市場中找不到外掛程式,您的市場可能遺失或已過期。執行 `/plugin marketplace update claude-plugins-official` 以重新整理它,或如果您之前未新增過,執行 `/plugin marketplace add anthropics/claude-plugins-official`。然後重試安裝。39如果 Claude Code 報告在任何市場中找不到外掛程式,您的市場可能遺失或已過期。執行 `/plugin marketplace update claude-plugins-official` 以重新整理它,或如果您之前未新增過,執行 `/plugin marketplace add anthropics/claude-plugins-official`。然後重試安裝。

40 40 

41<Note>41<Note>

42 官方市場由 Anthropic 維護。若要將外掛程式提交到官方市場請使用其中一個應用內提交表單:42 官方市場由 Anthropic 維護,包含由 Anthropic 自行決定應用內提交表單會將外掛程式新增到[社群市場](#community-marketplace)而不是官方市場。若要獨立分發外掛程式,請[建立您自己的市場](/zh-TW/plugin-marketplaces)並與使用者共享。

43 

44 * **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

45 * **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

46 

47 若要獨立分發外掛程式,請[建立您自己的市場](/zh-TW/plugin-marketplaces)並與使用者共享。

48</Note>43</Note>

49 44 

50官方市場包括多個外掛程式類別:45官方市場包括多個外掛程式類別:


95* **通訊**:`slack`90* **通訊**:`slack`

96* **監控**:`sentry`91* **監控**:`sentry`

97 92 

93### 自動安全審查

94 

95`security-guidance` 外掛程式審查 Claude 進行的每項變更是否存在常見漏洞,並指示 Claude 在同一工作階段中修復發現的問題。請參閱[在 Claude 編寫程式碼時捕捉安全問題](/zh-TW/security-guidance)以了解它檢查的內容以及如何新增專案特定的規則。

96 

98### 開發工作流程97### 開發工作流程

99 98 

100為常見開發任務新增技能和代理的外掛程式:99為常見開發任務新增技能和代理的外掛程式:


111* **explanatory-output-style**:關於實現選擇的教育見解110* **explanatory-output-style**:關於實現選擇的教育見解

112* **learning-output-style**:用於技能建立的互動式學習模式111* **learning-output-style**:用於技能建立的互動式學習模式

113 112 

113## 社群市場

114 

115位於 [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) 的社群市場託管已通過 Anthropic 自動驗證和安全篩選的第三方外掛程式。每個外掛程式都固定到目錄中的特定提交 SHA。與官方市場不同,您需要手動新增它:

116 

117```shell theme={null}

118/plugin marketplace add anthropics/claude-plugins-community

119```

120 

121然後使用 `claude-community` 市場名稱從中安裝外掛程式:

122 

123```shell theme={null}

124/plugin install <plugin-name>@claude-community

125```

126 

127若要將您自己的外掛程式提交到社群市場,請參閱建立外掛程式指南中的[將您的外掛程式提交到社群市場](/zh-TW/plugins#submit-your-plugin-to-the-community-marketplace)。

128 

114## 試試看:新增演示市場129## 試試看:新增演示市場

115 130 

116Anthropic 也維護一個[演示外掛程式市場](https://github.com/anthropics/claude-code/tree/main/plugins)(`claude-code-plugins`),其中包含展示外掛程式系統可能性的範例外掛程式。與官方市場不同,您需要手動新增此市場。131Anthropic 也維護一個[演示外掛程式市場](https://github.com/anthropics/claude-code/tree/main/plugins)(`claude-code-plugins`),其中包含展示外掛程式系統可能性的範例外掛程式。與官方市場不同,您需要手動新增此市場。


134 * **Marketplaces**:新增、移除或更新已新增的市場149 * **Marketplaces**:新增、移除或更新已新增的市場

135 * **Errors**:檢視任何外掛程式載入錯誤150 * **Errors**:檢視任何外掛程式載入錯誤

136 151 

137 前往 **Discover** 標籤以查看您剛新增的市場中的外掛程式。152 前往 **Discover** 標籤以查看您剛新增的市場中的外掛程式。{/* min-version: 2.1.154 */}標記為與您目前工作目錄相關的外掛程式會釘在頂部,並帶有 **suggested for this directory** 標籤。

138 </Step>153 </Step>

139 154 

140 <Step title="安裝外掛程式">155 <Step title="安裝外掛程式">

141 選擇外掛程式以檢視其詳細資訊。{/* min-version: 2.1.143 */}在 Claude Code v2.1.143 及更新版本上,詳細資訊窗格包含 **Context cost** 估計,讓您可以在安裝外掛程式之前查看它每回合會為您的[內容視窗](/zh-TW/features-overview#understand-context-costs)新增多少個 token。156 選擇外掛程式以檢視其詳細資訊。詳細資訊窗格會顯示外掛程式包含的內容及其成本:

157 

158 * {/* min-version: 2.1.143 */}**Context cost** 估計,讓您可以查看外掛程式每回合會為您的[內容視窗](/zh-TW/features-overview#understand-context-costs)新增多少個 token(Claude Code v2.1.143 及更新版本)

159 * {/* min-version: 2.1.144 */}外掛程式的 **Last updated** 日期(v2.1.144 及更新版本)

160 * {/* min-version: 2.1.145 */}**Will install** 區段,列出外掛程式的命令、代理程式、skills、hooks 和 MCP 及 LSP 伺服器,讓您可以在安裝前檢視它新增的確切內容(v2.1.145 及更新版本)

142 161 

143 選擇安裝範圍:162 選擇安裝範圍:

144 163 


146 * **Project scope**:為此儲存庫上的所有協作者安裝165 * **Project scope**:為此儲存庫上的所有協作者安裝

147 * **Local scope**:僅在此儲存庫中為自己安裝166 * **Local scope**:僅在此儲存庫中為自己安裝

148 167 

149 例如,選擇 **commit-commands**(新增 git 工作流程技能的外掛程式)並將其安裝到您的使用者範圍。168 例如,選擇 **commit-commands**(新增 git 工作流程 skills 的外掛程式)並將其安裝到您的使用者範圍。

150 169 

151 您也可以直接從命令列安裝:170 您也可以直接從命令列安裝:

152 171 

153 ```shell theme={null}172 ```shell theme={null}

154 /plugin install commit-commands@anthropics-claude-code173 /plugin install commit-commands@claude-code-plugins

155 ```174 ```

156 175 

157 請參閱[配置範圍](/zh-TW/settings#configuration-scopes)以深入瞭解範圍。176 請參閱[配置範圍](/zh-TW/settings#configuration-scopes)以深入瞭解範圍。

158 </Step>177 </Step>

159 178 

160 <Step title="使用您的新外掛程式">179 <Step title="使用您的新外掛程式">

161 安裝後,執行 `/reload-plugins` 以啟動外掛程式。外掛程式技能由外掛程式名稱命名空間,因此 **commit-commands** 提供 `/commit-commands:commit` 之類的技能180 安裝後,執行 `/reload-plugins` 以啟動外掛程式。外掛程式 skills 由外掛程式名稱命名空間,因此 **commit-commands** 提供 `/commit-commands:commit` 之類的 skills

162 181 

163 透過對檔案進行變更並執行以下命令來試試看:182 透過對檔案進行變更並執行以下命令來試試看:

164 183 


168 187 

169 這會暫存您的變更、產生提交訊息並建立提交。188 這會暫存您的變更、產生提交訊息並建立提交。

170 189 

171 每個外掛程式的工作方式不同。檢查 **Discover** 標籤中的外掛程式描述或其首頁以瞭解它提供的技能和功能190 每個外掛程式的工作方式不同。檢查 **Discover** 標籤中的外掛程式詳細資訊以查看它提供的命令和 skills或造訪其首頁以取得使用指導

172 </Step>191 </Step>

173</Steps>192</Steps>

174 193 


314 333 

315Claude Code 重新載入所有活動外掛程式,並顯示外掛程式、技能、代理、hooks、外掛程式 MCP servers 和外掛程式 LSP servers 的計數。334Claude Code 重新載入所有活動外掛程式,並顯示外掛程式、技能、代理、hooks、外掛程式 MCP servers 和外掛程式 LSP servers 的計數。

316 335 

336重新載入在下一個請求時會產生令牌成本:新載入的元件會在附加到對話的內容中宣佈自己,而現有歷史記錄仍然從提示快取讀取。提供 MCP servers 的外掛程式在其工具未被 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 延遲時成本更高:該變更會使快取失效,下一個請求會重新讀取整個對話。如需詳細資訊,請參閱 [啟用或停用外掛程式](/zh-TW/prompt-caching#enabling-or-disabling-a-plugin)。

337 

317## 管理市場338## 管理市場

318 339 

319您可以透過互動式 `/plugin` 介面或使用 CLI 命令管理市場。340您可以透過互動式 `/plugin` 介面或使用 CLI 命令管理市場。

env-vars.md +114 −17

Details

6 6 

7> 控制 Claude Code 行為的環境變數完整參考。7> 控制 Claude Code 行為的環境變數完整參考。

8 8 

9Claude Code 支援以下環境變數來控制其行為。在啟動 `claude` 之前在您的 shell 中設定它們或在 [`settings.json`](/zh-TW/settings#available-settings) 中的 `env` 鍵下配置它們,以將其應用於每個工作階段或在您的團隊中推出9環境變數可以控制 Claude Code 的行為例如模型選擇、驗證、請求路由和功能切換。許多相同的行為也可以透過 [settings 檔案](/zh-TW/settings) 欄位、[CLI 旗標](/zh-TW/cli-reference) 或工作階段內命令(如 `/model`)進行配置

10 

11本頁涵蓋如何:

12 

13* [在您的 shell 或 settings 檔案中設定環境變數](#set-environment-variables)

14* [當行為可以透過多種方式設定時,檢查哪個值適用](#precedence)

15* [查詢 Claude Code 讀取的變數](#variables)

16 

17<h2 id="set-environment-variables">

18 設定環境變數

19</h2>

20 

21您在 shell 中設定的變數會持續該終端工作階段,而 settings 檔案中的變數在每次 `claude` 執行時都會套用。

22 

23<h3 id="in-your-shell">

24 在您的 shell 中

25</h3>

26 

27在啟動 `claude` 之前設定變數:

28 

29<Tabs>

30 <Tab title="macOS, Linux, WSL">

31 ```bash theme={null}

32 export API_TIMEOUT_MS="1200000"

33 claude

34 ```

35 

36 若要為每個工作階段設定,請將 `export` 行新增到 `~/.bashrc`、`~/.zshrc` 或您的 shell 設定檔。

37 </Tab>

38 

39 <Tab title="Windows PowerShell">

40 ```powershell theme={null}

41 $env:API_TIMEOUT_MS = "1200000"

42 claude

43 ```

44 

45 若要為每個工作階段設定,請執行 `[Environment]::SetEnvironmentVariable("API_TIMEOUT_MS", "1200000", "User")` 並開啟新的終端。

46 </Tab>

47 

48 <Tab title="Windows CMD">

49 ```batch theme={null}

50 set API_TIMEOUT_MS=1200000

51 claude

52 ```

53 

54 若要為每個工作階段設定,請執行 `setx API_TIMEOUT_MS "1200000"` 並開啟新的終端。

55 </Tab>

56</Tabs>

57 

58<h3 id="in-settings-files">

59 在 settings 檔案中

60</h3>

61 

62在 `settings.json` 檔案的 `env` 鍵下新增變數。Claude Code 在啟動時直接從檔案讀取它們,因此無論如何啟動 `claude`,它們都會生效。

63 

64```json ~/.claude/settings.json theme={null}

65{

66 "env": {

67 "API_TIMEOUT_MS": "1200000",

68 "BASH_DEFAULT_TIMEOUT_MS": "300000"

69 }

70}

71```

72 

73您選擇的檔案控制變數適用於誰:

74 

75| 檔案 | 適用於 |

76| :---------------------------- | :----------------- |

77| `~/.claude/settings.json` | 您,在每個專案中 |

78| `.claude/settings.json` | 在專案中工作的每個人,簽入原始碼控制 |

79| `.claude/settings.local.json` | 您,僅在此專案中,未簽入 |

80| 受管 settings | 您組織中的每個人,由管理員部署 |

81 

82請參閱 [Settings 檔案](/zh-TW/settings#settings-files) 以了解每個檔案的位置,以及 [Settings 優先順序](/zh-TW/settings#settings-precedence) 以了解當多個檔案設定相同變數時它們如何結合。

83 

84<h2 id="precedence">

85 優先順序

86</h2>

87 

88當相同的行為同時具有環境變數和 settings 欄位時,環境變數優先。例如,`ANTHROPIC_MODEL` 覆蓋 `model` 設定,`CLAUDE_CODE_AUTO_CONNECT_IDE` 覆蓋 `autoConnectIde`。當環境變數未設定時,settings 欄位適用。

89 

90環境變數與 CLI 旗標和工作階段內命令的互動因功能而異:`--model` 和 `/model` 覆蓋 `ANTHROPIC_MODEL`,而 `CLAUDE_CODE_EFFORT_LEVEL` 覆蓋 `/effort`。當變數與另一個配置來源互動時,其在 [變數](#variables) 清單中的列會說明優先順序或連結到記錄它的頁面。

91 

92Claude Code 在啟動時讀取環境變數,因此變更會在您下次啟動 `claude` 時生效。

93 

94<h2 id="variables">

95 變數

96</h2>

10 97 

11| 變數 | 用途 |98| 變數 | 用途 |

12| :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |99| :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| `ANTHROPIC_API_KEY` | API 金鑰作為 `X-Api-Key` 標頭發送。設定時,即使您已登入,此金鑰也會用於代替您的 Claude Pro、Max、Team 或 Enterprise 訂閱。在非互動式模式(`-p`)中,金鑰存在時始終使用。在互動式模式中,系統會提示您在金鑰覆蓋您的訂閱之前批准一次。若要改用您的訂閱,請執行 `unset ANTHROPIC_API_KEY` |100| `ANTHROPIC_API_KEY` | 作為 `X-Api-Key` 標頭發送的 API 金鑰。設定時,即使您已登入,此金鑰也會用於代替您的 Claude Pro、Max、Team 或 Enterprise 訂閱。在非互動式模式(`-p`)中,金鑰存在時始終使用。在互動式模式中,系統會提示您在金鑰覆蓋您的訂閱之前批准一次。若要改用您的訂閱,請執行 `unset ANTHROPIC_API_KEY` |

14| `ANTHROPIC_AUTH_TOKEN` | `Authorization` 標頭的自訂值(您在此設定的值將以 `Bearer ` 為前綴) |101| `ANTHROPIC_AUTH_TOKEN` | `Authorization` 標頭的自訂值(您在此設定的值將以 `Bearer ` 為前綴) |

15| `ANTHROPIC_AWS_API_KEY` | [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 的工作區 API 金鑰,在 AWS 主控台中產生。作為 `x-api-key` 發送,優先於 AWS SigV4 |102| `ANTHROPIC_AWS_API_KEY` | [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 的工作區 API 金鑰,在 AWS 主控台中產生。作為 `x-api-key` 發送,優先於 AWS SigV4 |

16| `ANTHROPIC_AWS_BASE_URL` | 覆蓋 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 端點 URL。用於自訂區域或透過 [LLM gateway](/zh-TW/llm-gateway) 路由。預設為 `https://aws-external-anthropic.{AWS_REGION}.api.aws` |103| `ANTHROPIC_AWS_BASE_URL` | 覆蓋 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 端點 URL。用於自訂區域或透過 [LLM gateway](/zh-TW/llm-gateway) 路由。預設為 `https://aws-external-anthropic.{AWS_REGION}.api.aws` |


52| `BASH_MAX_OUTPUT_LENGTH` | bash 輸出中的最大字元數,超過此數量後完整輸出會儲存到檔案,Claude 會收到路徑加上簡短預覽。請參閱 [Bash tool behavior](/zh-TW/tools-reference#bash-tool-behavior) |139| `BASH_MAX_OUTPUT_LENGTH` | bash 輸出中的最大字元數,超過此數量後完整輸出會儲存到檔案,Claude 會收到路徑加上簡短預覽。請參閱 [Bash tool behavior](/zh-TW/tools-reference#bash-tool-behavior) |

53| `BASH_MAX_TIMEOUT_MS` | 模型可以為長時間執行的 bash 命令設定的最大逾時(預設值:600000,或 10 分鐘) |140| `BASH_MAX_TIMEOUT_MS` | 模型可以為長時間執行的 bash 命令設定的最大逾時(預設值:600000,或 10 分鐘) |

54| `CCR_FORCE_BUNDLE` | 設定為 `1` 以強制 [`claude --remote`](/zh-TW/claude-code-on-the-web#send-local-repositories-without-github) 在 GitHub 存取可用時也要捆綁並上傳您的本機儲存庫 |141| `CCR_FORCE_BUNDLE` | 設定為 `1` 以強制 [`claude --remote`](/zh-TW/claude-code-on-the-web#send-local-repositories-without-github) 在 GitHub 存取可用時也要捆綁並上傳您的本機儲存庫 |

55| `CLAUDECODE` | 在 Claude Code 生成的 shell 環境中設定為 `1`(Bash 工具、tmux 工作階段)。未在 [hooks](/zh-TW/hooks) [status line](/zh-TW/statusline) 命令中設定。用於偵測指令碼何時在 Claude Code 生成的 shell 內執行 |142| `CLAUDECODE` | 在 Claude Code 生成的子程序中設定為 `1`(Bash 和 PowerShell 工具、tmux 工作階段[hook](/zh-TW/hooks) 命令、[status line](/zh-TW/statusline) 命令、stdio [MCP server](/zh-TW/mcp) 子程序)。用於偵測指令碼何時在 Claude Code 生成的子程序內執行 |

56| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 設定為 `1` 以停用所有內建 [subagent](/zh-TW/sub-agents) 類型,例如 Explore 和 Plan。僅適用於非互動式模式(`-p` 旗標)。對於想要空白狀態的 SDK 使用者很有用 |143| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 設定為 `1` 以停用所有內建 [subagent](/zh-TW/sub-agents) 類型,例如 Explore 和 Plan。僅適用於非互動式模式(`-p` 旗標)。對於想要空白狀態的 SDK 使用者很有用 |

57| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 設定為 `1` 以跳過來自 SDK 建立的 MCP 伺服器的工具名稱上的 `mcp__<server>__` 前綴。工具使用其原始名稱。僅限 SDK 使用 |144| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 設定為 `1` 以跳過來自 SDK 建立的 MCP 伺服器的工具名稱上的 `mcp__<server>__` 前綴。工具使用其原始名稱。僅限 SDK 使用 |

58| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 背景 subagents 的停滯逾時(以毫秒為單位)。預設 `600000`(10 分鐘)。計時器在每個串流進度事件時重設;如果在視窗內沒有進度到達,subagent 會被中止,任務會標記為失敗,將任何部分結果呈現給父級 |145| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 背景 subagents 的停滯逾時(以毫秒為單位)。預設 `600000`(10 分鐘)。計時器在每個串流進度事件時重設;如果在視窗內沒有進度到達,subagent 會被中止,任務會標記為失敗,將任何部分結果呈現給父級 |


61| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | 在主工作階段中每個 Bash 或 PowerShell 命令後返回原始工作目錄 |148| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | 在主工作階段中每個 Bash 或 PowerShell 命令後返回原始工作目錄 |

62| `CLAUDE_CODE_ACCESSIBILITY` | 設定為 `1` 以保持原生終端游標可見並停用反轉文字游標指示器。允許 macOS Zoom 等螢幕放大鏡追蹤游標位置 |149| `CLAUDE_CODE_ACCESSIBILITY` | 設定為 `1` 以保持原生終端游標可見並停用反轉文字游標指示器。允許 macOS Zoom 等螢幕放大鏡追蹤游標位置 |

63| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | 設定為 `1` 以從使用 `--add-dir` 指定的目錄載入記憶體檔案。載入 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。預設情況下,其他目錄不載入記憶體檔案 |150| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | 設定為 `1` 以從使用 `--add-dir` 指定的目錄載入記憶體檔案。載入 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。預設情況下,其他目錄不載入記憶體檔案 |

151| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | 設定為 `1` 以在 [fullscreen rendering](/zh-TW/fullscreen) 中的每一幀上重新繪製整個螢幕,而不是發送增量更新。如果全螢幕模式顯示過時或錯位的文字片段,請使用此選項。Claude Code 在 Windows 上的背景工作階段和 [agent view](/zh-TW/agent-view) 中自動啟用此功能 |

64| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | 應刷新認證的間隔(以毫秒為單位)(使用 [`apiKeyHelper`](/zh-TW/settings#available-settings) 時) |152| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | 應刷新認證的間隔(以毫秒為單位)(使用 [`apiKeyHelper`](/zh-TW/settings#available-settings) 時) |

65| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 設定為 `0` 以省略系統提示開始處的歸屬區塊(用戶端版本和提示指紋)。停用它會改善透過 [LLM gateway](/zh-TW/llm-gateway) 路由時的提示快取命中率。Anthropic API 快取不受影響 |153| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 設定為 `0` 以省略系統提示開始處的歸屬區塊(用戶端版本和提示指紋)。停用它會改善透過 [LLM gateway](/zh-TW/llm-gateway) 路由時的提示快取命中率。Anthropic API 快取不受影響 |

66| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 設定用於自動壓縮計算的上下文容量(以 token 為單位)。預設為模型的上下文視窗:標準模型為 200K 或 [extended context](/zh-TW/model-config#extended-context) 模型為 1M。在 1M 模型上使用較低的值(如 `500000`)以將視窗視為 500K 用於壓縮目的。該值上限為模型的實際上下文視窗。`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 作為此值的百分比應用。設定此變數會將壓縮閾值與狀態行的 `used_percentage` 解耦,後者始終使用模型的完整上下文視窗 |154| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 設定用於自動壓縮計算的上下文容量(以 token 為單位)。預設為模型的上下文視窗:標準模型為 200K 或 [extended context](/zh-TW/model-config#extended-context) 模型為 1M。在 1M 模型上使用較低的值(如 `500000`)以將視窗視為 500K 用於壓縮目的。該值上限為模型的實際上下文視窗。`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 作為此值的百分比應用。設定此變數會將壓縮閾值與狀態行的 `used_percentage` 解耦,後者始終使用模型的完整上下文視窗 |


72| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆蓋偵錯日誌檔案路徑。儘管名稱如此,這是檔案路徑,而不是目錄。需要透過 `--debug`、`/debug` 或 `DEBUG` 環境變數單獨啟用偵錯模式:僅設定此變數不會啟用日誌記錄。[`--debug-file`](/zh-TW/cli-reference#cli-flags) 旗標同時執行兩者。預設為 `~/.claude/debug/<session-id>.txt` |160| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆蓋偵錯日誌檔案路徑。儘管名稱如此,這是檔案路徑,而不是目錄。需要透過 `--debug`、`/debug` 或 `DEBUG` 環境變數單獨啟用偵錯模式:僅設定此變數不會啟用日誌記錄。[`--debug-file`](/zh-TW/cli-reference#cli-flags) 旗標同時執行兩者。預設為 `~/.claude/debug/<session-id>.txt` |

73| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 寫入偵錯日誌檔案的最小日誌級別。值:`verbose`、`debug`(預設)、`info`、`warn`、`error`。設定為 `verbose` 以包含高容量診斷,例如完整狀態行命令輸出,或提高到 `error` 以減少雜訊 |161| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 寫入偵錯日誌檔案的最小日誌級別。值:`verbose`、`debug`(預設)、`info`、`warn`、`error`。設定為 `verbose` 以包含高容量診斷,例如完整狀態行命令輸出,或提高到 `error` 以減少雜訊 |

74| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 設定為 `1` 以停用 [1M context window](/zh-TW/model-config#extended-context) 支援。設定時,1M 模型變體在模型選擇器中不可用。對於具有合規性要求的企業環境很有用 |162| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 設定為 `1` 以停用 [1M context window](/zh-TW/model-config#extended-context) 支援。設定時,1M 模型變體在模型選擇器中不可用。對於具有合規性要求的企業環境很有用 |

75| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | 設定為 `1` 以停用 Opus 4.6 和 Sonnet 4.6 的 [adaptive reasoning](/zh-TW/model-config#adjust-effort-level),並回退到由 `MAX_THINKING_TOKENS` 控制的固定思考預算。{/* min-version: 2.1.111 */}對 Opus 4.7 無效,其始終使用自適應推理 |163| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | 設定為 `1` 以停用 Opus 4.6 和 Sonnet 4.6 的 [adaptive reasoning](/zh-TW/model-config#adjust-effort-level),並回退到由 `MAX_THINKING_TOKENS` 控制的固定思考預算。{/* min-version: 2.1.111 */}對 Opus 4.7 及更新版本無效,其始終使用自適應推理 |

76| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | 設定為 `1` 以關閉 [background agents and agent view](/zh-TW/agent-view):`claude agents`、`--bg`、`/background` 和隨選主管。相當於 [`disableAgentView`](/zh-TW/settings#available-settings) 設定 |164| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | 設定為 `1` 以關閉 [background agents and agent view](/zh-TW/agent-view):`claude agents`、`--bg`、`/background` 和隨選主管。相當於 [`disableAgentView`](/zh-TW/settings#available-settings) 設定 |

77| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | 設定為 `1` 以停用 [fullscreen rendering](/zh-TW/fullscreen) 並使用經典主螢幕渲染器。對話保留在您終端的原生捲動回溯中,因此 `Cmd+f` 和 tmux 複製模式可以正常工作。優先於 `CLAUDE_CODE_NO_FLICKER` 和 [`tui`](/zh-TW/settings#available-settings) 設定。您也可以使用 `/tui default` 切換 |165| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | 設定為 `1` 以停用 [fullscreen rendering](/zh-TW/fullscreen) 並使用經典主螢幕渲染器。對話保留在您終端的原生捲動回溯中,因此 `Cmd+f` 和 tmux 複製模式可以正常工作。優先於 `CLAUDE_CODE_NO_FLICKER` 和 [`tui`](/zh-TW/settings#available-settings) 設定。您也可以使用 `/tui default` 切換 |

78| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 設定為 `1` 以停用附件處理。使用 `@` 語法的檔案提及會作為純文字發送,而不是擴展為檔案內容 |166| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 設定為 `1` 以停用附件處理。使用 `@` 語法的檔案提及會作為純文字發送,而不是擴展為檔案內容 |


91| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | 設定為 `1` 以停用串流請求在中途失敗時的非串流回退。串流錯誤會傳播到重試層。當代理或閘道導致回退產生重複的工具執行時很有用 |179| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | 設定為 `1` 以停用串流請求在中途失敗時的非串流回退。串流錯誤會傳播到重試層。當代理或閘道導致回退產生重複的工具執行時很有用 |

92| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | 設定為 `1` 以跳過首次執行時官方外掛程式市場的自動新增 |180| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | 設定為 `1` 以跳過首次執行時官方外掛程式市場的自動新增 |

93| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 設定為 `1` 以跳過從系統範圍的受管 skills 目錄載入 skills。對於不應載入操作員佈建的 skills 的容器或 CI 工作階段很有用 |181| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 設定為 `1` 以跳過從系統範圍的受管 skills 目錄載入 skills。對於不應載入操作員佈建的 skills 的容器或 CI 工作階段很有用 |

94| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 設定為 `1` 以停用基於對話上下文的自動終端標題更新 |182| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 設定為 `1` 以停用基於對話上下文的自動終端標題更新。在 Agent SDK 和 `claude -p` 工作階段中,這也會跳過產生工作階段標題的背景 Haiku 請求 |

95| `CLAUDE_CODE_DISABLE_THINKING` | 設定為 `1` 以強制停用 [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),無論模型支援或其他設定如何。比 `MAX_THINKING_TOKENS=0` 更直接 |183| `CLAUDE_CODE_DISABLE_THINKING` | 設定為 `1` 以強制停用 [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),無論模型支援或其他設定如何。比 `MAX_THINKING_TOKENS=0` 更直接 |

96| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 設定為 `1` 以停用 [fullscreen rendering](/zh-TW/fullscreen) 中的虛擬捲動,並呈現文字記錄中的每條訊息。如果全螢幕模式中的捲動顯示應該出現訊息的空白區域,請使用此選項 |184| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 設定為 `1` 以停用 [fullscreen rendering](/zh-TW/fullscreen) 中的虛擬捲動,並呈現文字記錄中的每條訊息。如果全螢幕模式中的捲動顯示應該出現訊息的空白區域,請使用此選項 |

185| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 設定為 `1` 以停用 [workflows](/zh-TW/workflows#turn-workflows-off)。相當於 [`disableWorkflows`](/zh-TW/settings#available-settings) 設定 |

97| `CLAUDE_CODE_EFFORT_LEVEL` | 為支援的模型設定努力級別。值:`low`、`medium`、`high`、`xhigh`、`max` 或 `auto` 以使用模型預設值。可用級別取決於模型。優先於 `/effort` 和 `effortLevel` 設定。請參閱 [Adjust effort level](/zh-TW/model-config#adjust-effort-level) |186| `CLAUDE_CODE_EFFORT_LEVEL` | 為支援的模型設定努力級別。值:`low`、`medium`、`high`、`xhigh`、`max` 或 `auto` 以使用模型預設值。可用級別取決於模型。優先於 `/effort` 和 `effortLevel` 設定。請參閱 [Adjust effort level](/zh-TW/model-config#adjust-effort-level) |

187| `CLAUDE_CODE_ENABLE_AUTO_MODE` | {/* min-version: 2.1.158 */}設定為 `1` 以在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上啟用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)。需要 Claude Code v2.1.158 或更新版本。對 Anthropic API 無效,其中 auto mode 預設可用。請參閱 [在 Bedrock、Vertex AI 或 Foundry 上啟用自動模式](/zh-TW/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry) |

98| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | 覆蓋 [session recap](/zh-TW/interactive-mode#session-recap) 可用性。設定為 `0` 以強制關閉摘要,無論 `/config` 切換如何。設定為 `1` 以在 [`awaySummaryEnabled`](/zh-TW/settings#available-settings) 為 `false` 時強制啟用摘要。優先於設定和 `/config` 切換 |188| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | 覆蓋 [session recap](/zh-TW/interactive-mode#session-recap) 可用性。設定為 `0` 以強制關閉摘要,無論 `/config` 切換如何。設定為 `1` 以在 [`awaySummaryEnabled`](/zh-TW/settings#available-settings) 為 `false` 時強制啟用摘要。優先於設定和 `/config` 切換 |

99| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | 設定為 `1` 以在 [non-interactive mode](/zh-TW/headless) 中背景安裝完成後在回合邊界處刷新外掛程式狀態。預設關閉,因為刷新會在工作階段中途更改系統提示,這會使該回合的 [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 失效 |189| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | 設定為 `1` 以在 [non-interactive mode](/zh-TW/headless) 中背景安裝完成後在回合邊界處刷新外掛程式狀態。預設關閉,因為刷新會在工作階段中途更改系統提示,這會使該回合的 [prompt caching](/zh-TW/prompt-caching) 失效 |

100| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | 設定為 `1` 以在 Anthropic 綁定的非必要流量被阻止時將「Claude 表現如何?」工作階段品質調查路由到您自己的 [OpenTelemetry collector](/zh-TW/monitoring-usage)。調查評分僅作為 OTEL 事件發出到您配置的收集器。在此模式下,沒有調查資料發送到 Anthropic。在設定 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`、`DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 時適用,否則無效。`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` 和組織產品反饋政策優先 |190| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | 設定為 `1` 以在 Anthropic 綁定的非必要流量被阻止時將「Claude 表現如何?」工作階段品質調查路由到您自己的 [OpenTelemetry collector](/zh-TW/monitoring-usage)。調查評分僅作為 OTEL 事件發出到您配置的收集器。在此模式下,沒有調查資料發送到 Anthropic。在設定 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`、`DISABLE_TELEMETRY` 或 `DO_NOT_TRACK` 時適用,否則無效。`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` 和組織產品反饋政策優先 |

101| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具呼叫輸入是否在 Claude 生成時從 API 串流。關閉此選項時,大型工具輸入(例如長檔案寫入)僅在 Claude 完成生成後才到達,這可能看起來像是掛起。在 Anthropic API 上預設啟用。在 Bedrock 和 Vertex 上,按模型啟用,其中已部署的容器支援它。設定為 `0` 以選擇退出。設定為 `1` 以在透過 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 路由時強制啟用。在 Foundry 和 [gateway](/zh-TW/llm-gateway) 連線上預設關閉 |191| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具呼叫輸入是否在 Claude 生成時從 API 串流。關閉此選項時,大型工具輸入(例如長檔案寫入)僅在 Claude 完成生成後才到達,這可能看起來像是掛起。在 Anthropic API 上預設啟用。在 Bedrock 和 Vertex 上,按模型啟用,其中已部署的容器支援它。設定為 `0` 以選擇退出。設定為 `1` 以在透過 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 路由時強制啟用。在 Foundry 和 [gateway](/zh-TW/llm-gateway) 連線上預設關閉 |

102| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 設定為 `1` 以在 `ANTHROPIC_BASE_URL` 指向 Anthropic 相容閘道(例如 LiteLLM、Kong 或內部代理)時從您的閘道的 `/v1/models` 端點填充 `/model` 選擇器。預設關閉,因為由共享 API 金鑰支援的閘道會以其他方式向每個使用者顯示該金鑰可以存取的每個模型。探索的模型仍由 [`availableModels`](/zh-TW/settings#available-settings) 允許清單篩選 |192| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 設定為 `1` 以在 `ANTHROPIC_BASE_URL` 指向 Anthropic 相容閘道(例如 LiteLLM、Kong 或內部代理)時從您的閘道的 `/v1/models` 端點填充 `/model` 選擇器。預設關閉,因為由共享 API 金鑰支援的閘道會以其他方式向每個使用者顯示該金鑰可以存取的每個模型。探索的模型仍由 [`availableModels`](/zh-TW/settings#available-settings) 允許清單篩選 |

103| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | {/* max-version: 2.1.141 */}在 v2.1.142 中移除[Fast mode](/zh-TW/fast-mode) 預設為 Opus 4.7。設定 `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1` 以改為保持 Opus 4.6 |193| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | {/* max-version: 2.1.141 */}在 v2.1.142 中移除,當 [fast mode](/zh-TW/fast-mode) 預設從 Opus 4.6 移至 Opus 4.7 時 |

104| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 設定為 `false` 以停用提示建議(`/config` 中的「提示建議」切換)。這些是在 Claude 回應後出現在您的提示輸入中的灰顯預測。請參閱 [Prompt suggestions](/zh-TW/interactive-mode#prompt-suggestions) |194| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 設定為 `false` 以停用提示建議(`/config` 中的「提示建議」切換)。這些是在 Claude 回應後出現在您的提示輸入中的灰顯預測。請參閱 [Prompt suggestions](/zh-TW/interactive-mode#prompt-suggestions) |

105| `CLAUDE_CODE_ENABLE_TASKS` | 控制工作階段是否使用結構化 Task 工具(`TaskCreate`、`TaskUpdate`、`TaskGet`、`TaskList`)或舊版 `TodoWrite` 工具。{/* min-version: 2.1.142 */}自 Claude Code v2.1.142 起,Task 工具是所有模式中的預設值。設定為 `0` 以還原為 `TodoWrite`。請參閱 [Task list](/zh-TW/interactive-mode#task-list) 和 [Migrate to Task tools](/zh-TW/agent-sdk/todo-tracking#migrate-to-task-tools) |195| `CLAUDE_CODE_ENABLE_TASKS` | 控制工作階段是否使用結構化 Task 工具(`TaskCreate`、`TaskUpdate`、`TaskGet`、`TaskList`)或舊版 `TodoWrite` 工具。{/* min-version: 2.1.142 */}自 Claude Code v2.1.142 起,Task 工具是所有模式中的預設值。設定為 `0` 以還原為 `TodoWrite`。請參閱 [Task list](/zh-TW/interactive-mode#task-list) 和 [Migrate to Task tools](/zh-TW/agent-sdk/todo-tracking#migrate-to-task-tools) |

106| `CLAUDE_CODE_ENABLE_TELEMETRY` | 設定為 `1` 以啟用 OpenTelemetry 資料收集以進行指標和日誌記錄。在配置 OTel 匯出器之前需要。請參閱 [Monitoring](/zh-TW/monitoring-usage) |196| `CLAUDE_CODE_ENABLE_TELEMETRY` | 設定為 `1` 以啟用 OpenTelemetry 資料收集以進行指標和日誌記錄。在配置 OTel 匯出器之前需要。請參閱 [Monitoring](/zh-TW/monitoring-usage) |


109| `CLAUDE_CODE_EXTRA_BODY` | JSON 物件以合併到每個 API 請求主體的頂層。對於傳遞 Claude Code 不直接公開的提供者特定參數很有用 |199| `CLAUDE_CODE_EXTRA_BODY` | JSON 物件以合併到每個 API 請求主體的頂層。對於傳遞 Claude Code 不直接公開的提供者特定參數很有用 |

110| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆蓋檔案讀取的預設 token 限制。當您需要完整讀取較大的檔案時很有用 |200| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆蓋檔案讀取的預設 token 限制。當您需要完整讀取較大的檔案時很有用 |

111| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 設定為 `1` 以強制啟用 DEC 私有模式 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)(當您的終端支援但未自動偵測時)。對於實現 BSU/ESU 但不回覆功能探測的模擬器(例如 Emacs `eat`)很有用。在 tmux 下無效 |201| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 設定為 `1` 以強制啟用 DEC 私有模式 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)(當您的終端支援但未自動偵測時)。對於實現 BSU/ESU 但不回覆功能探測的模擬器(例如 Emacs `eat`)很有用。在 tmux 下無效 |

112| `CLAUDE_CODE_FORK_SUBAGENT` | 設定為 `1` 以啟用 [forked subagents](/zh-TW/sub-agents#fork-the-current-conversation)。分叉的 subagent 從主工作階段繼承完整的對話上下文,而不是從頭開始。啟用時,`/fork` 會生成分叉的 subagent,而不是充當 [`/branch`](/zh-TW/commands) 的別名,所有 subagent 生成都在背景中執行。在互動式模式和透過 SDK 或 `claude -p` 中工作 |202| `CLAUDE_CODE_FORK_SUBAGENT` | 設定為 `1` 以啟用 [forked subagents](/zh-TW/sub-agents#fork-the-current-conversation) 作為模型的預設值:Claude 生成一個分叉(一個繼承完整對話上下文而不是從頭開始的 subagent),而不是使用通用 subagent,所有 subagent 生成都在背景中執行。明確的 [`/fork`](/zh-TW/commands) 命令無需此變數即可工作。在互動式模式和透過 SDK 或 `claude -p` 中工作 |

113| `CLAUDE_CODE_GIT_BASH_PATH` | 僅限 Windows:Git Bash 可執行檔(`bash.exe`)的路徑。在 Git Bash 已安裝但不在您的 PATH 中時使用。請參閱 [Windows setup](/zh-TW/setup#set-up-on-windows) |203| `CLAUDE_CODE_GIT_BASH_PATH` | 僅限 Windows:Git Bash 可執行檔(`bash.exe`)的路徑。在 Git Bash 已安裝但不在您的 PATH 中時使用。請參閱 [Windows setup](/zh-TW/setup#set-up-on-windows) |

114| `CLAUDE_CODE_GLOB_HIDDEN` | 設定為 `false` 以在 Claude 呼叫 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 時從結果中排除隱藏檔案。預設包含。不影響 `@` 檔案自動完成、`ls`、Grep 或 Read |204| `CLAUDE_CODE_GLOB_HIDDEN` | 設定為 `false` 以在 Claude 呼叫 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 時從結果中排除隱藏檔案。預設包含。不影響 `@` 檔案自動完成、`ls`、Grep 或 Read |

115| `CLAUDE_CODE_GLOB_NO_IGNORE` | 設定為 `false` 以使 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 尊重 `.gitignore` 模式。預設情況下,Glob 返回所有符合的檔案,包括 gitignored 的檔案。不影響 `@` 檔案自動完成,其具有自己的 [`respectGitignore` 設定](/zh-TW/settings#available-settings) |205| `CLAUDE_CODE_GLOB_NO_IGNORE` | 設定為 `false` 以使 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 尊重 `.gitignore` 模式。預設情況下,Glob 返回所有符合的檔案,包括 gitignored 的檔案。不影響 `@` 檔案自動完成,其具有自己的 [`respectGitignore` 設定](/zh-TW/settings#available-settings) |


130| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Claude.ai 驗證的 OAuth 重新整理權杖。設定時,`claude auth login` 會直接交換此權杖,而不是開啟瀏覽器。需要 `CLAUDE_CODE_OAUTH_SCOPES`。對於在自動化環境中佈建驗證很有用 |220| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Claude.ai 驗證的 OAuth 重新整理權杖。設定時,`claude auth login` 會直接交換此權杖,而不是開啟瀏覽器。需要 `CLAUDE_CODE_OAUTH_SCOPES`。對於在自動化環境中佈建驗證很有用 |

131| `CLAUDE_CODE_OAUTH_SCOPES` | 重新整理權杖發出時所使用的空格分隔 OAuth 範圍,例如 `"user:profile user:inference user:sessions:claude_code"`。設定 `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` 時為必需 |221| `CLAUDE_CODE_OAUTH_SCOPES` | 重新整理權杖發出時所使用的空格分隔 OAuth 範圍,例如 `"user:profile user:inference user:sessions:claude_code"`。設定 `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` 時為必需 |

132| `CLAUDE_CODE_OAUTH_TOKEN` | Claude.ai 驗證的 OAuth 存取權杖。`/login` 對於 SDK 和自動化環境的替代方案。優先於鑰匙圈儲存的認證。使用 [`claude setup-token`](/zh-TW/authentication#generate-a-long-lived-token) 產生一個 |222| `CLAUDE_CODE_OAUTH_TOKEN` | Claude.ai 驗證的 OAuth 存取權杖。`/login` 對於 SDK 和自動化環境的替代方案。優先於鑰匙圈儲存的認證。使用 [`claude setup-token`](/zh-TW/authentication#generate-a-long-lived-token) 產生一個 |

133| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | 設定為 `1` 以保持 [fast mode](/zh-TW/fast-mode) Claude Opus 4.6 上。優先於 `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE`因此如果您需要固定 Opus 4.6,無論預設如何變化請設定此項 |223| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | {/* max-version: 2.1.159 */}在 v2.1.160 中移除,現在是無操作。先前將 [fast mode](/zh-TW/fast-mode) 固定到 Claude Opus 4.6,而不是目前的預設值。若要在 Opus 4.6 停用之前在其上執行快速模式請先使用 `/model` 選擇模型然後 `/fast on` |

134| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 刷新待處理 OpenTelemetry spans 的逾時(以毫秒為單位)(預設值:5000)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |224| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | 刷新待處理 OpenTelemetry spans 的逾時(以毫秒為單位)(預設值:5000)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

135| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新動態 OpenTelemetry 標頭的間隔(以毫秒為單位)(預設值:1740000 / 29 分鐘)。請參閱 [Dynamic headers](/zh-TW/monitoring-usage#dynamic-headers) |225| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新動態 OpenTelemetry 標頭的間隔(以毫秒為單位)(預設值:1740000 / 29 分鐘)。請參閱 [Dynamic headers](/zh-TW/monitoring-usage#dynamic-headers) |

136| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 匯出器在關閉時完成的逾時(以毫秒為單位)(預設值:2000)。如果指標在退出時被丟棄,請增加此值。請參閱 [Monitoring](/zh-TW/monitoring-usage) |226| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | OpenTelemetry 匯出器在關閉時完成的逾時(以毫秒為單位)(預設值:2000)。如果指標在退出時被丟棄,請增加此值。請參閱 [Monitoring](/zh-TW/monitoring-usage) |


142| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | 設定為 `1` 以透過 HTTPS 而不是 SSH 複製 GitHub `owner/repo` 外掛程式來源。在 CI 執行器、容器或任何沒有為 `github.com` 配置 SSH 金鑰的環境中很有用 |232| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | 設定為 `1` 以透過 HTTPS 而不是 SSH 複製 GitHub `owner/repo` 外掛程式來源。在 CI 執行器、容器或任何沒有為 `github.com` 配置 SSH 金鑰的環境中很有用 |

143| `CLAUDE_CODE_PLUGIN_SEED_DIR` | 一個或多個唯讀外掛程式種子目錄的路徑,在 Unix 上以 `:` 分隔,在 Windows 上以 `;` 分隔。使用此選項可將預先填充的外掛程式目錄捆綁到容器映像中。Claude Code 在啟動時從這些目錄註冊市場,並使用預先快取的外掛程式而無需重新複製。請參閱 [Pre-populate plugins for containers](/zh-TW/plugin-marketplaces#pre-populate-plugins-for-containers) |233| `CLAUDE_CODE_PLUGIN_SEED_DIR` | 一個或多個唯讀外掛程式種子目錄的路徑,在 Unix 上以 `:` 分隔,在 Windows 上以 `;` 分隔。使用此選項可將預先填充的外掛程式目錄捆綁到容器映像中。Claude Code 在啟動時從這些目錄註冊市場,並使用預先快取的外掛程式而無需重新複製。請參閱 [Pre-populate plugins for containers](/zh-TW/plugin-marketplaces#pre-populate-plugins-for-containers) |

144| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | 設定為 `1` 以停止 Claude Code 在生成 PowerShell 以進行工具呼叫、hooks 和狀態行命令時傳遞 `-ExecutionPolicy Bypass`,並改為尊重機器的有效執行政策。預設情況下,Claude Code 在程序範圍內繞過執行政策,以便 `.ps1` 指令碼和模組匯入在預設受限的 Windows 安裝上工作。無論此設定如何,程序範圍繞過永遠不會覆蓋群組原則 `MachinePolicy` 或 `UserPolicy` |234| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | 設定為 `1` 以停止 Claude Code 在生成 PowerShell 以進行工具呼叫、hooks 和狀態行命令時傳遞 `-ExecutionPolicy Bypass`,並改為尊重機器的有效執行政策。預設情況下,Claude Code 在程序範圍內繞過執行政策,以便 `.ps1` 指令碼和模組匯入在預設受限的 Windows 安裝上工作。無論此設定如何,程序範圍繞過永遠不會覆蓋群組原則 `MachinePolicy` 或 `UserPolicy` |

235| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | {/* min-version: 2.1.152 */}設定為 `1` 以在 `ANTHROPIC_BASE_URL` 指向自訂代理時傳播 W3C 追蹤上下文。傳播涵蓋模型和 HTTP MCP 請求上的 `traceparent` 標頭以及 Bash、PowerShell 和 hook 子程序的 `TRACEPARENT` 環境變數。預設情況下,傳播僅在直接連線到 Anthropic API 時啟用。在 v2.1.152 中新增。請參閱 [Traces (beta)](/zh-TW/monitoring-usage#traces-beta) |

145| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | 由嵌入 Claude Code 並代表其管理模型提供者路由的主機平台設定。設定時,提供者選擇、端點和驗證變數(例如 `CLAUDE_CODE_USE_BEDROCK`、`ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY`)在設定檔案中被忽略,以便使用者設定無法覆蓋主機的路由。Bedrock、Vertex 和 Foundry 的自動遙測選擇退出也會被跳過,因此遙測遵循標準 `DISABLE_TELEMETRY` 選擇退出。請參閱 [Default behaviors by API provider](/zh-TW/data-usage#default-behaviors-by-api-provider) |236| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | 由嵌入 Claude Code 並代表其管理模型提供者路由的主機平台設定。設定時,提供者選擇、端點和驗證變數(例如 `CLAUDE_CODE_USE_BEDROCK`、`ANTHROPIC_BASE_URL` 和 `ANTHROPIC_API_KEY`)在設定檔案中被忽略,以便使用者設定無法覆蓋主機的路由。Bedrock、Vertex 和 Foundry 的自動遙測選擇退出也會被跳過,因此遙測遵循標準 `DISABLE_TELEMETRY` 選擇退出。請參閱 [Default behaviors by API provider](/zh-TW/data-usage#default-behaviors-by-api-provider) |

146| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | 設定為 `1` 以允許代理執行 DNS 解析而不是呼叫者。對於代理應處理主機名稱解析的環境選擇加入 |237| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | 設定為 `1` 以允許代理執行 DNS 解析而不是呼叫者。對於代理應處理主機名稱解析的環境選擇加入 |

147| `CLAUDE_CODE_REMOTE` | 當 Claude Code 作為 [cloud session](/zh-TW/claude-code-on-the-web) 執行時自動設定為 `true`。從 hook 或設定指令碼讀取此項以偵測您是否在雲端環境中 |238| `CLAUDE_CODE_REMOTE` | 當 Claude Code 作為 [cloud session](/zh-TW/claude-code-on-the-web) 執行時自動設定為 `true`。從 hook 或設定指令碼讀取此項以偵測您是否在雲端環境中 |


167| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | 設定為 `1` 以從子程序環境中移除 Anthropic 和雲端提供者認證(Bash 工具、hooks、MCP stdio 伺服器)。父 Claude 程序保留這些認證以進行 API 呼叫,但子程序無法讀取它們,減少了嘗試透過 shell 擴展來竊取機密的提示注入攻擊的暴露。在 Linux 上,這也會在隔離的 PID 命名空間中執行 Bash 子程序,以便它們無法透過 `/proc` 讀取主機程序環境;作為副作用,`ps`、`pgrep` 和 `kill` 無法看到或發信號給主機程序。配置 `allowed_non_write_users` 時,`claude-code-action` 會自動設定此項 |258| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | 設定為 `1` 以從子程序環境中移除 Anthropic 和雲端提供者認證(Bash 工具、hooks、MCP stdio 伺服器)。父 Claude 程序保留這些認證以進行 API 呼叫,但子程序無法讀取它們,減少了嘗試透過 shell 擴展來竊取機密的提示注入攻擊的暴露。在 Linux 上,這也會在隔離的 PID 命名空間中執行 Bash 子程序,以便它們無法透過 `/proc` 讀取主機程序環境;作為副作用,`ps`、`pgrep` 和 `kill` 無法看到或發信號給主機程序。配置 `allowed_non_write_users` 時,`claude-code-action` 會自動設定此項 |

168| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非互動式模式(`-p` 旗標)中設定為 `1` 以等待外掛程式安裝完成,然後再進行第一個查詢。沒有此選項,外掛程式會在背景中安裝,可能在第一個回合時不可用。與 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 結合以限制等待時間 |259| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非互動式模式(`-p` 旗標)中設定為 `1` 以等待外掛程式安裝完成,然後再進行第一個查詢。沒有此選項,外掛程式會在背景中安裝,可能在第一個回合時不可用。與 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 結合以限制等待時間 |

169| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步外掛程式安裝的逾時(以毫秒為單位)。超過時,Claude Code 會在沒有外掛程式的情況下繼續並記錄錯誤。無預設值:沒有此變數,同步安裝會等待直到完成 |260| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步外掛程式安裝的逾時(以毫秒為單位)。超過時,Claude Code 會在沒有外掛程式的情況下繼續並記錄錯誤。無預設值:沒有此變數,同步安裝會等待直到完成 |

261| `CLAUDE_CODE_SYNC_SKILLS` | 設定為 `1` 以在第一個查詢之前將您啟用的 claude.ai skills 下載到 `~/.claude/skills/`,並每 10 分鐘重新同步一次。僅適用於非互動式模式,使用 `-p` 旗標。在 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 工作階段中自動設定。需要 claude.ai 驗證 |

262| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 當設定 `CLAUDE_CODE_SYNC_SKILLS` 時,第一個查詢等待初始 skills 同步的逾時(以毫秒為單位)(預設值:5000)。超過時,查詢會繼續進行,其餘 skill 下載會在背景中繼續 |

170| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 設定為 `false` 以停用 diff 輸出中的語法醒目提示。當顏色干擾您的終端設定時很有用。若要也停用程式碼區塊和檔案預覽中的醒目提示,請使用 [`syntaxHighlightingDisabled`](/zh-TW/settings) 設定 |263| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 設定為 `false` 以停用 diff 輸出中的語法醒目提示。當顏色干擾您的終端設定時很有用。若要也停用程式碼區塊和檔案預覽中的醒目提示,請使用 [`syntaxHighlightingDisabled`](/zh-TW/settings) 設定 |

171| `CLAUDE_CODE_TASK_LIST_ID` | 跨工作階段共享任務清單。在多個 Claude Code 實例中設定相同的 ID 以協調共享任務清單。請參閱 [Task list](/zh-TW/interactive-mode#task-list) |264| `CLAUDE_CODE_TASK_LIST_ID` | 跨工作階段共享任務清單。在多個 Claude Code 實例中設定相同的 ID 以協調共享任務清單。請參閱 [Task list](/zh-TW/interactive-mode#task-list) |

172| `CLAUDE_CODE_TEAM_NAME` | 此隊友所屬的 agent team 名稱。在 [agent team](/zh-TW/agent-teams) 成員上自動設定 |265| `CLAUDE_CODE_TEAM_NAME` | 此隊友所屬的 agent team 名稱。在 [agent team](/zh-TW/agent-teams) 成員上自動設定 |

173| `CLAUDE_CODE_TMPDIR` | 覆蓋用於內部臨時檔案的臨時目錄。Claude Code 將 `/claude-{uid}/`(Unix)或 `/claude/`(Windows)附加到此路徑。預設值:macOS 上的 `/tmp`、Linux/Windows 上的 `os.tmpdir()` |266| `CLAUDE_CODE_TMPDIR` | 覆蓋用於內部臨時檔案的臨時目錄。Claude Code 將 `/claude-{uid}/`(Unix)或 `/claude/`(Windows)附加到此路徑。預設值:macOS 上的 `/tmp`、Linux/Windows 上的 `os.tmpdir()`。{/* min-version: 2.1.161 */}自 v2.1.161 起,在 macOS 和 Linux 上,當您的覆蓋是長路徑時,Bash 子程序會在系統預設下收到簡短的回退 `$TMPDIR`,因為某些工具在臨時路徑變得太長時會失敗。Claude Code 自己的臨時檔案始終使用您的覆蓋 |

174| `CLAUDE_CODE_TMUX_TRUECOLOR` | 設定為 `1` 以允許 tmux 內的 24 位真彩色輸出。預設情況下,當設定 `$TMUX` 時,Claude Code 會限制為 256 色,因為 tmux 不會通過真彩色逃逸序列,除非配置為這樣做。在將 `set -ga terminal-overrides ',*:Tc'` 新增到您的 `~/.tmux.conf` 後設定此項。請參閱 [Terminal configuration](/zh-TW/terminal-config) 以取得其他 tmux 設定 |267| `CLAUDE_CODE_TMUX_TRUECOLOR` | 設定為 `1` 以允許 tmux 內的 24 位真彩色輸出。預設情況下,當設定 `$TMUX` 時,Claude Code 會限制為 256 色,因為 tmux 不會通過真彩色逃逸序列,除非配置為這樣做。在將 `set -ga terminal-overrides ',*:Tc'` 新增到您的 `~/.tmux.conf` 後設定此項。請參閱 [Terminal configuration](/zh-TW/terminal-config) 以取得其他 tmux 設定 |

175| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | 使用 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) |268| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | 使用 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) |

176| `CLAUDE_CODE_USE_BEDROCK` | 使用 [Bedrock](/zh-TW/amazon-bedrock) |269| `CLAUDE_CODE_USE_BEDROCK` | 使用 [Bedrock](/zh-TW/amazon-bedrock) |


180| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | 控制 PowerShell 工具。在沒有 Git Bash 的 Windows 上,工具會自動啟用;設定為 `0` 以停用它。在安裝了 Git Bash 的 Windows 上,工具正在逐步推出:設定為 `1` 以選擇加入或 `0` 以選擇退出。在 Linux、macOS 和 WSL 上,設定為 `1` 以啟用它,這需要您的 `PATH` 上有 `pwsh`。在 Windows 上啟用時,Claude 可以原生執行 PowerShell 命令,而不是透過 Git Bash 路由。請參閱 [PowerShell tool](/zh-TW/tools-reference#powershell-tool) |273| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | 控制 PowerShell 工具。在沒有 Git Bash 的 Windows 上,工具會自動啟用;設定為 `0` 以停用它。在安裝了 Git Bash 的 Windows 上,工具正在逐步推出:設定為 `1` 以選擇加入或 `0` 以選擇退出。在 Linux、macOS 和 WSL 上,設定為 `1` 以啟用它,這需要您的 `PATH` 上有 `pwsh`。在 Windows 上啟用時,Claude 可以原生執行 PowerShell 命令,而不是透過 Git Bash 路由。請參閱 [PowerShell tool](/zh-TW/tools-reference#powershell-tool) |

181| `CLAUDE_CODE_USE_VERTEX` | 使用 [Vertex](/zh-TW/google-vertex-ai) |274| `CLAUDE_CODE_USE_VERTEX` | 使用 [Vertex](/zh-TW/google-vertex-ai) |

182| `CLAUDE_CONFIG_DIR` | 覆蓋配置目錄(預設值:`~/.claude`)。所有設定、認證、工作階段歷史記錄和外掛程式都儲存在此路徑下。對於並排執行多個帳戶很有用:例如,`alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |275| `CLAUDE_CONFIG_DIR` | 覆蓋配置目錄(預設值:`~/.claude`)。所有設定、認證、工作階段歷史記錄和外掛程式都儲存在此路徑下。對於並排執行多個帳戶很有用:例如,`alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

183| `CLAUDE_EFFORT` | 在 Bash 工具子程序和 hook 命令中自動設定為該回合的作用中 [effort level](/zh-TW/model-config#adjust-effort-level):`low`、`medium`、`high`、`xhigh` 或 `max`。符合傳遞給 [hooks](/zh-TW/hooks) 的 `effort.level` 欄位。僅在目前模型支援努力參數時設定 |276| `CLAUDE_EFFORT` | 在 Bash 工具子程序和 hook 命令中自動設定為該回合的作用中 [effort level](/zh-TW/model-config#adjust-effort-level):`low`、`medium`、`high`、`xhigh` 或 `max`。Ultracode 不是一個不同的級別,報告為 `xhigh`。符合傳遞給 [hooks](/zh-TW/hooks) 的 `effort.level` 欄位。僅在目前模型支援努力參數時設定 |

184| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 設定為 `1` 以強制啟用位元級串流閒置監視程式,或設定為 `0` 以強制停用它。未設定時,監視程式預設對 Anthropic API 連線啟用。位元監視程式會在 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定的持續時間內沒有位元到達線路時中止連線,最少 5 分鐘,獨立於事件級監視程式 |277| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 設定為 `1` 以強制啟用位元級串流閒置監視程式,或設定為 `0` 以強制停用它。未設定時,監視程式預設對 Anthropic API 連線啟用。位元監視程式會在 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定的持續時間內沒有位元到達線路時中止連線,最少 5 分鐘,獨立於事件級監視程式 |

185| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 設定為 `1` 以在 Amazon Bedrock `vnd.amazon.eventstream` 回應上啟用位元級串流閒置監視程式。預設關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |278| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 設定為 `1` 以在 Amazon Bedrock `vnd.amazon.eventstream` 回應上啟用位元級串流閒置監視程式。預設關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |

186| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 設定為 `1` 以啟用事件級串流閒置監視程式。預設關閉。對於 Bedrock、Vertex 和 Foundry,這是唯一可用的閒置監視程式。在 Bedrock 上,您也可以使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` 啟用獨立的位元級監視程式;當兩者都設定時,它們一起執行。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |279| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 設定為 `1` 以啟用事件級串流閒置監視程式。預設關閉。對於 Bedrock、Vertex 和 Foundry,這是唯一可用的閒置監視程式。在 Bedrock 上,您也可以使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` 啟用獨立的位元級監視程式;當兩者都設定時,它們一起執行。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |


206| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以停用 Haiku 模型的提示快取 |299| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以停用 Haiku 模型的提示快取 |

207| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以停用 Opus 模型的提示快取 |300| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以停用 Opus 模型的提示快取 |

208| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以停用 Sonnet 模型的提示快取 |301| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以停用 Sonnet 模型的提示快取 |

209| `DISABLE_TELEMETRY` | 設定為 `1` 以選擇退出遙測。遙測事件不包括使用者資料,如程式碼、檔案路徑或 bash 命令。也停用功能旗標因此仍在推出的某些功能可能無法使用 |302| `DISABLE_TELEMETRY` | 設定為 `1` 以選擇退出遙測。遙測事件不包括使用者資料,如程式碼、檔案路徑或 bash 命令。也停用功能旗標擷取效果與 `DISABLE_GROWTHBOOK` 相同,因此某些標記的功能可能無法使用 |

210| `DISABLE_UPDATES` | 設定為 `1` 以阻止所有更新,包括手動 `claude update` 和 `claude install`。比 `DISABLE_AUTOUPDATER` 更嚴格。在透過您自己的管道分發 Claude Code 且使用者不應自行更新時使用 |303| `DISABLE_UPDATES` | 設定為 `1` 以阻止所有更新,包括手動 `claude update` 和 `claude install`。比 `DISABLE_AUTOUPDATER` 更嚴格。在透過您自己的管道分發 Claude Code 且使用者不應自行更新時使用 |

211| `DISABLE_UPGRADE_COMMAND` | 設定為 `1` 以隱藏 `/upgrade` 命令 |304| `DISABLE_UPGRADE_COMMAND` | 設定為 `1` 以隱藏 `/upgrade` 命令 |

212| `DO_NOT_TRACK` | 設定為 `1` 以選擇退出遙測。相當於設定 `DISABLE_TELEMETRY`。尊重 [standard cross-tool convention](https://consoledonottrack.com/) |305| `DO_NOT_TRACK` | 設定為 `1` 以選擇退出遙測。相當於設定 `DISABLE_TELEMETRY`。Claude Code 尊重此作為許多開發者 CLI 認可的跨工具慣例 |

213| `ENABLE_CLAUDEAI_MCP_SERVERS` | 設定為 `false` 以停用 Claude Code 中的 [claude.ai MCP servers](/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對於已登入的使用者預設啟用 |306| `ENABLE_CLAUDEAI_MCP_SERVERS` | 設定為 `false` 以停用 Claude Code 中的 [claude.ai MCP servers](/zh-TW/mcp#use-mcp-servers-from-claude-ai)。對於已登入的使用者預設啟用 |

214| `ENABLE_PROMPT_CACHING_1H` | 設定為 `1` 以要求 1 小時的提示快取 TTL,而不是預設的 5 分鐘。適用於 API 金鑰、[Bedrock](/zh-TW/amazon-bedrock)、[Vertex](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry) 和 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 使用者。訂閱使用者自動接收 1 小時 TTL。1 小時快取寫入以更高的速率計費 |307| `ENABLE_PROMPT_CACHING_1H` | 設定為 `1` 以要求 1 小時的提示快取 TTL,而不是預設的 5 分鐘。適用於 API 金鑰、[Bedrock](/zh-TW/amazon-bedrock)、[Vertex](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry) 和 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 使用者。訂閱使用者自動接收 1 小時 TTL。1 小時快取寫入以更高的速率計費 |

215| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已棄用。改用 `ENABLE_PROMPT_CACHING_1H` |308| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已棄用。改用 `ENABLE_PROMPT_CACHING_1H` |


230| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的遠端 MCP 伺服器(HTTP/SSE)的最大數量(預設值:20) |323| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的遠端 MCP 伺服器(HTTP/SSE)的最大數量(預設值:20) |

231| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的本機 MCP 伺服器(stdio)的最大數量(預設值:3) |324| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的本機 MCP 伺服器(stdio)的最大數量(預設值:3) |

232| `MCP_TIMEOUT` | MCP 伺服器啟動的逾時(以毫秒為單位)(預設值:30000,或 30 秒) |325| `MCP_TIMEOUT` | MCP 伺服器啟動的逾時(以毫秒為單位)(預設值:30000,或 30 秒) |

233| `MCP_TOOL_TIMEOUT` | MCP 工具執行的逾時(以毫秒為單位)(預設值:100000000,約 28 小時) |326| `MCP_TOOL_TIMEOUT` | MCP 工具執行的逾時(以毫秒為單位)(預設值:100000000,約 28 小時)。`.mcp.json` 中的每個伺服器 `timeout` 欄位會覆蓋該伺服器的此值。低於 1000 的值會下限為 1 秒 |

234| `NO_PROXY` | 要直接發出請求的網域和 IP 清單,繞過代理 |327| `NO_PROXY` | 要直接發出請求的網域和 IP 清單,繞過代理 |

235| `OTEL_LOG_RAW_API_BODIES` | 設定為 `1` 以將完整的 Anthropic Messages API 請求和回應 JSON 作為 `api_request_body` / `api_response_body` 日誌事件發出,或 `file:<dir>` 以將未截斷的主體寫入磁碟並發出 `body_ref` 路徑。預設停用;主體包括整個對話歷史記錄。請參閱 [Monitoring](/zh-TW/monitoring-usage#api-request-body-event) |328| `OTEL_LOG_RAW_API_BODIES` | 設定為 `1` 以將完整的 Anthropic Messages API 請求和回應 JSON 作為 `api_request_body` / `api_response_body` 日誌事件發出,或 `file:<dir>` 以將未截斷的主體寫入磁碟並發出 `body_ref` 路徑。預設停用;主體包括整個對話歷史記錄。請參閱 [Monitoring](/zh-TW/monitoring-usage#api-request-body-event) |

236| `OTEL_LOG_TOOL_CONTENT` | 設定為 `1` 以在 OpenTelemetry span 事件中包含工具輸入和輸出內容。預設停用以保護敏感資料。請參閱 [Monitoring](/zh-TW/monitoring-usage) |329| `OTEL_LOG_TOOL_CONTENT` | 設定為 `1` 以在 OpenTelemetry span 事件中包含工具輸入和輸出內容。預設停用以保護敏感資料。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

237| `OTEL_LOG_TOOL_DETAILS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含工具輸入引數、MCP 伺服器名稱、工具失敗時的原始錯誤字串和其他工具詳細資訊。預設停用以保護個人識別資訊。請參閱 [Monitoring](/zh-TW/monitoring-usage) |330| `OTEL_LOG_TOOL_DETAILS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含工具輸入引數、MCP 伺服器名稱、工具失敗時的原始錯誤字串和其他工具詳細資訊。預設停用以保護個人識別資訊。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

238| `OTEL_LOG_USER_PROMPTS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含使用者提示文字。預設停用(提示被編輯)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |331| `OTEL_LOG_USER_PROMPTS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含使用者提示文字。預設停用(提示被編輯)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

239| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 設定為 `false` 以從指標屬性中排除帳戶 UUID(預設值:包含)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |332| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 設定為 `false` 以從指標屬性中排除帳戶 UUID(預設值:包含)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

333| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | {/* min-version: 2.1.152 */}設定為 `true` 以在指標屬性中包含工作階段進入點(預設值:排除)。在 v2.1.152 中新增。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

334| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | {/* min-version: 2.1.161 */}自 v2.1.161 起,Claude Code 將 `OTEL_RESOURCE_ATTRIBUTES` 金鑰附加到指標資料點標籤。設定為 `false` 以排除它們(預設值:包含)。請參閱 [Monitoring](/zh-TW/monitoring-usage#multi-team-organization-support) |

240| `OTEL_METRICS_INCLUDE_SESSION_ID` | 設定為 `false` 以從指標屬性中排除工作階段 ID(預設值:包含)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |335| `OTEL_METRICS_INCLUDE_SESSION_ID` | 設定為 `false` 以從指標屬性中排除工作階段 ID(預設值:包含)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

241| `OTEL_METRICS_INCLUDE_VERSION` | 設定為 `true` 以在指標屬性中包含 Claude Code 版本(預設值:排除)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |336| `OTEL_METRICS_INCLUDE_VERSION` | 設定為 `true` 以在指標屬性中包含 Claude Code 版本(預設值:排除)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

242| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | 覆蓋顯示給 [Skill tool](/zh-TW/skills#control-who-invokes-a-skill) 的 skill 中繼資料的字元預算。預算在上下文視窗的 1% 處動態縮放,回退為 8,000 個字元。為了向後相容性保留舊名稱 |337| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | 覆蓋顯示給 [Skill tool](/zh-TW/skills#control-who-invokes-a-skill) 的 skill 中繼資料的字元預算。預算在上下文視窗的 1% 處動態縮放,回退為 8,000 個字元。為了向後相容性保留舊名稱 |


252| `VERTEX_REGION_CLAUDE_4_5_SONNET` | 使用 Vertex AI 時覆蓋 Claude Sonnet 4.5 的區域 |347| `VERTEX_REGION_CLAUDE_4_5_SONNET` | 使用 Vertex AI 時覆蓋 Claude Sonnet 4.5 的區域 |

253| `VERTEX_REGION_CLAUDE_4_6_OPUS` | 使用 Vertex AI 時覆蓋 Claude Opus 4.6 的區域 |348| `VERTEX_REGION_CLAUDE_4_6_OPUS` | 使用 Vertex AI 時覆蓋 Claude Opus 4.6 的區域 |

254| `VERTEX_REGION_CLAUDE_4_6_SONNET` | 使用 Vertex AI 時覆蓋 Claude Sonnet 4.6 的區域 |349| `VERTEX_REGION_CLAUDE_4_6_SONNET` | 使用 Vertex AI 時覆蓋 Claude Sonnet 4.6 的區域 |

255| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}使用 Vertex AI 時覆蓋 Claude Opus 4.7 的區域 |350| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}使用 Vertex AI 時覆蓋 Claude Opus 4.7 的區域。在 v2.1.111 中新增 |

256| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | 使用 Vertex AI 時覆蓋 Claude Haiku 4.5 的區域 |351| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | 使用 Vertex AI 時覆蓋 Claude Haiku 4.5 的區域 |

257 352 

258標準 OpenTelemetry 匯出器變數(`OTEL_METRICS_EXPORTER`、`OTEL_LOGS_EXPORTER`、`OTEL_EXPORTER_OTLP_ENDPOINT`、`OTEL_EXPORTER_OTLP_PROTOCOL`、`OTEL_EXPORTER_OTLP_HEADERS`、`OTEL_METRIC_EXPORT_INTERVAL`、`OTEL_RESOURCE_ATTRIBUTES` 和信號特定變體)也受支援。請參閱 [Monitoring](/zh-TW/monitoring-usage) 以取得配置詳細資訊。353標準 OpenTelemetry 匯出器變數(`OTEL_METRICS_EXPORTER`、`OTEL_LOGS_EXPORTER`、`OTEL_EXPORTER_OTLP_ENDPOINT`、`OTEL_EXPORTER_OTLP_PROTOCOL`、`OTEL_EXPORTER_OTLP_HEADERS`、`OTEL_METRIC_EXPORT_INTERVAL`、`OTEL_RESOURCE_ATTRIBUTES` 和信號特定變體)也受支援。請參閱 [Monitoring](/zh-TW/monitoring-usage) 以取得配置詳細資訊。

259 354 

260## 另請參閱355<h2 id="see-also">

356 另請參閱

357</h2>

261 358 

262* [Settings](/zh-TW/settings): `settings.json` 中配置環境變數使其適用於每個工作階段359* [Settings](/zh-TW/settings):所有 `settings.json` 配置包括 `env` 鍵

263* [CLI reference](/zh-TW/cli-reference):啟動時旗標360* [CLI reference](/zh-TW/cli-reference):啟動時旗標

264* [Network configuration](/zh-TW/network-config):代理和 TLS 設定361* [Network configuration](/zh-TW/network-config):代理和 TLS 設定

265* [Monitoring](/zh-TW/monitoring-usage):OpenTelemetry 配置362* [Monitoring](/zh-TW/monitoring-usage):OpenTelemetry 配置

errors.md +41 −16

Details

20 20 

21| 訊息 | 部分 |21| 訊息 | 部分 |

22| :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------ |22| :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------ |

23| `API Error: 500 ... Internal server error` | [Server errors](#api-error-500-internal-server-error) |23| `API Error: 500 Internal server error` | [Server errors](#api-error-500-internal-server-error) |

24| `API Error: Repeated 529 Overloaded errors` | [Server errors](#api-error-repeated-529-overloaded-errors) |24| `API Error: Repeated 529 Overloaded errors` | [Server errors](#api-error-repeated-529-overloaded-errors) |

25| `Request timed out` | [Server errors](#request-timed-out),或如果訊息提及您的網際網路連線,則為 [Network](#unable-to-connect-to-api) |25| `Request timed out` | [Server errors](#request-timed-out),或如果訊息提及您的網際網路連線,則為 [Network](#unable-to-connect-to-api) |

26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |


33| `Not logged in · Please run /login` | [Authentication](#not-logged-in) |33| `Not logged in · Please run /login` | [Authentication](#not-logged-in) |

34| `Invalid API key` | [Authentication](#invalid-api-key) |34| `Invalid API key` | [Authentication](#invalid-api-key) |

35| `This organization has been disabled` | [Authentication](#this-organization-has-been-disabled) |35| `This organization has been disabled` | [Authentication](#this-organization-has-been-disabled) |

36| `Your organization has disabled Claude subscription access` | [Authentication](#your-organization-has-disabled-claude-subscription-access) |

36| `Routines are disabled by your organization's policy` | [Authentication](#routines-are-disabled-by-your-organizations-policy) |37| `Routines are disabled by your organization's policy` | [Authentication](#routines-are-disabled-by-your-organizations-policy) |

37| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |38| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |

38| `does not meet scope requirement user:profile` | [Authentication](#oauth-scope-requirement) |39| `does not meet scope requirement user:profile` | [Authentication](#oauth-scope-requirement) |


43| `Error during compaction: Conversation too long` | [Request errors](#error-during-compaction-conversation-too-long) |44| `Error during compaction: Conversation too long` | [Request errors](#error-during-compaction-conversation-too-long) |

44| `Request too large` | [Request errors](#request-too-large) |45| `Request too large` | [Request errors](#request-too-large) |

45| `Image was too large` | [Request errors](#image-was-too-large) |46| `Image was too large` | [Request errors](#image-was-too-large) |

47| `Unable to resize image` | [Request errors](#unable-to-resize-image) |

46| `PDF too large` / `PDF is password protected` | [Request errors](#pdf-errors) |48| `PDF too large` / `PDF is password protected` | [Request errors](#pdf-errors) |

47| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |49| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |

48| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |50| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |


66 68 

67## 伺服器錯誤69## 伺服器錯誤

68 70 

69這些錯誤來自 Anthropic 基礎設施,而不是您的帳戶或請求71這些錯誤來自推論提供者,而不是您的帳戶或請求。在 Anthropic API 上,這表示 Anthropic 基礎設施。在 Bedrock、Vertex AI、Foundry 或自訂閘道上這表示該提供者的基礎設施

70 72 

71### API Error: 500 Internal server error73### API Error: 500 Internal server error

72 74 

73Claude Code 為任何 5xx 狀態顯示原始 API 回應主體。下面的範例顯示 500 回應:75Claude Code 為任何 5xx 回應顯示狀態碼和 API 的錯誤訊息。下面的範例顯示 Anthropic API 上的 500 回應:

74 76 

75```text theme={null}77```text theme={null}

76API Error: 500 {"type":"error","error":{"type":"api_error","message":"Internal server error"}} · check status.claude.com78API Error: 500 Internal server error. This is a server-side issue, usually temporary — try again in a moment. If it persists, check https://status.claude.com.

77```79```

78 80 

81尾部句子命名檢查服務健康狀況的位置,並因提供者而異。Bedrock、Vertex AI 和 Foundry 配置命名該提供者的服務狀態。自訂 `ANTHROPIC_BASE_URL` 命名閘道主機。

82 

79這表示 API 內部發生意外失敗。它不是由您的提示、設定或帳戶引起的。83這表示 API 內部發生意外失敗。它不是由您的提示、設定或帳戶引起的。

80 84 

81**要做什麼:**85**要做什麼:**

82 86 

83* 檢查 [status.claude.com](https://status.claude.com) 以了解活躍的事件87* 檢查 [status.claude.com](https://status.claude.com) 或訊息中命名的提供者狀態頁面,以了解活躍的事件

84* 等待一分鐘,然後再次傳送您的訊息。您的原始訊息仍在對話中,因此對於長提示,您可以輸入 `try again` 而不是貼上整個內容。88* 等待一分鐘,然後再次傳送您的訊息。您的原始訊息仍在對話中,因此對於長提示,您可以輸入 `try again` 而不是貼上整個內容。

85* 如果錯誤持續存在且沒有發佈的事件,請執行 `/feedback` 以便 Anthropic 可以使用您的請求詳細資訊進行調查。如果您的環境中 `/feedback` 不可用,請參閱 [回報錯誤](#report-an-error)。89* 如果錯誤持續存在且沒有發佈的事件,請執行 `/feedback` 以便 Anthropic 可以使用您的請求詳細資訊進行調查。如果您的環境中 `/feedback` 不可用,請參閱 [回報錯誤](#report-an-error)。

86 90 


89API 在所有使用者中暫時達到容量。Claude Code 在顯示此訊息之前已經重試了多次:93API 在所有使用者中暫時達到容量。Claude Code 在顯示此訊息之前已經重試了多次:

90 94 

91```text theme={null}95```text theme={null}

92API Error: Repeated 529 Overloaded errors · check status.claude.com96API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.

93```97```

94 98 

95529 不是您的使用限制,也不會計入您的配額。99尾部句子因提供者而異,方式與上面的 500 錯誤相同。529 不是您的使用限制,也不會計入您的配額。

96 100 

97**要做什麼:**101**要做什麼:**

98 102 

99* 檢查 [status.claude.com](https://status.claude.com) 以了解容量通知103* 檢查 [status.claude.com](https://status.claude.com) 或訊息中命名的提供者狀態頁面,以了解容量通知

100* 幾分鐘後再試一次104* 幾分鐘後再試一次

101* 執行 `/model` 並切換到不同的模型以繼續工作,因為容量是按模型追蹤的。當一個模型負載特別高時,Claude Code 會提示您執行此操作,例如 `Opus is experiencing high load, please use /model to switch to Sonnet`。105* 執行 `/model` 並切換到不同的模型以繼續工作,因為容量是按模型追蹤的。當一個模型負載特別高時,Claude Code 會提示您執行此操作,例如 `Opus is experiencing high load, please use /model to switch to Sonnet`。

102 106 


204您已達到為您的 API 金鑰、Amazon Bedrock 專案或 Google Vertex AI 專案配置的速率限制。208您已達到為您的 API 金鑰、Amazon Bedrock 專案或 Google Vertex AI 專案配置的速率限制。

205 209 

206```text theme={null}210```text theme={null}

207API Error: Request rejected (429) · this may be a temporary capacity issue. If it persists, check status.claude.com.211API Error: Request rejected (429) · this may be a temporary capacity issue. If it persists, check https://status.claude.com.

208```212```

209 213 

210尾部句子命名了檢查服務健康狀況的位置,並因提供者而異。BedrockVertex AI 配置會命名該提供者的服務狀態,而不是 Anthropic 狀態頁面。214尾部句子命名了檢查服務健康狀況的位置,並因提供者而異。BedrockVertex AI 和 Foundry 配置會命名該提供者的服務狀態,而不是 Anthropic 狀態頁面。自訂 `ANTHROPIC_BASE_URL` 會命名閘道主機。

211 215 

212**要做什麼:**216**要做什麼:**

213 217 


484* 在貼上之前調整影像大小。API 接受單個影像最長邊最多 8000 像素的影像,或當許多影像在上下文中時為 2000 像素。488* 在貼上之前調整影像大小。API 接受單個影像最長邊最多 8000 像素的影像,或當許多影像在上下文中時為 2000 像素。

485* 拍攝相關區域的更緊密螢幕截圖,而不是整個螢幕489* 拍攝相關區域的更緊密螢幕截圖,而不是整個螢幕

486 490 

491### Unable to resize image

492 

493Claude Code 無法在將附加影像傳送到 API 之前將其縮小。

494 

495```text theme={null}

496Unable to resize image — image processing is unavailable and dimensions could not be read from the file header. Please convert the image to PNG, JPEG, GIF, or WebP.

497Unable to resize image — dimensions exceed the 2000x2000px limit and image processing failed. Please resize the image to reduce its pixel dimensions.

498Unable to resize image (… raw, … base64). The image exceeds the … API limit and compression failed. Please resize the image manually or use a smaller image.

499Unable to resize image — could not verify image dimensions are within the 2000x2000px API limit.

500```

501 

502Claude Code 通常會自動調整大型影像的大小。這些錯誤表示原生影像處理器無法載入或傳回錯誤,因此影像無法調整大小以符合 API 限制。

503 

504**要做什麼:**

505 

506* 如果訊息要求您轉換影像,請將其轉換為 PNG、JPEG、GIF 或 WebP,然後再次附加。Claude Code 可以驗證這些格式的尺寸,而無需影像處理器。

507* 如果訊息報告尺寸或大小限制,請在附加之前將影像調整大小或重新壓縮到該限制以下。

508 

487### PDF errors509### PDF errors

488 510 

489您附加的 PDF 無法處理。511您附加的 PDF 無法處理。


518 540 

519### There's an issue with the selected model541### There's an issue with the selected model

520 542 

521配置的模型名稱未被識別,或您的帳戶缺乏對其的存取權。543配置的模型名稱未被識別,或您的帳戶缺乏對其的存取權。自 v2.1.160 起,尾部提示(如此處以其互動形式所示)因表面而異。

522 544 

523```text theme={null}545```text theme={null}

524There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to select a different one.546There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.

525```547```

526 548 

527**要做什麼:**549**要做什麼:**

528 550 

529* 執行 `/model` 以從您帳戶可用的模型中選擇551* **互動式 CLI**:執行 `/model` 以從您帳戶可用的模型中選擇

552* **非互動式模式(`-p`)**:使用有效的別名或 ID 傳遞 `--model`,或設定 [`ANTHROPIC_MODEL`](/zh-TW/env-vars)。錯誤文字在此表面上顯示 `Run --model`。

553* **Agent SDK**:錯誤文字省略提示,因為模型是以程式設計方式設定的。在 TypeScript 中的 [`Options`](/zh-TW/agent-sdk/typescript#options) 上設定 [`model`](/zh-TW/agent-sdk/typescript#options),或在 Python 中設定 [`ClaudeAgentOptions(model=...)`](/zh-TW/agent-sdk/python#claudeagentoptions),並處理結構化的 `model_not_found` 錯誤以呈現您自己的重試或模型選擇器。

530* 使用別名(例如 `sonnet` 或 `opus`)而不是完整的版本化 ID。別名追蹤最新版本,因此它們不會過時。請參閱 [Model configuration](/zh-TW/model-config)。554* 使用別名(例如 `sonnet` 或 `opus`)而不是完整的版本化 ID。別名追蹤最新版本,因此它們不會過時。請參閱 [Model configuration](/zh-TW/model-config)。

531* 如果錯誤的模型一直出現,則某處設定了過時的 ID。按 [優先順序](/zh-TW/model-config#setting-your-model) 檢查:`--model` 旗標、`ANTHROPIC_MODEL` 環境變數,然後是 `.claude/settings.local.json` 中的 `model` 欄位、您專案的 `.claude/settings.json` 和 `~/.claude/settings.json`。移除過時的值,Claude Code 會回退到您的帳戶預設值。555* 如果錯誤的模型一直出現在 CLI 中,則某處設定了過時的 ID。按 [優先順序](/zh-TW/model-config#setting-your-model) 檢查:`--model` 旗標、`ANTHROPIC_MODEL` 環境變數,然後是 `.claude/settings.local.json` 中的 `model` 欄位、您專案的 `.claude/settings.json` 和 `~/.claude/settings.json`。移除過時的值,Claude Code 會回退到您的帳戶預設值。

532* 對於 Vertex AI 部署,請參閱 [Vertex AI troubleshooting](/zh-TW/google-vertex-ai#troubleshooting)。556* 對於 Vertex AI 部署,請參閱 [Vertex AI troubleshooting](/zh-TW/google-vertex-ai#troubleshooting)。

533 557 

534### Claude Opus is not available with the Claude Pro plan558### Claude Opus is not available with the Claude Pro plan


547 571 

548### thinking.type.enabled is not supported for this model572### thinking.type.enabled is not supported for this model

549 573 

550您的 Claude Code 版本早於 Opus 4.7 的最低版本。CLI 傳送了模型不再接受的思考配置。574您的 Claude Code 版本早於 Opus 4.7 或 Opus 4.8 的最低版本。CLI 傳送了模型不再接受的思考配置。

551 575 

552```text theme={null}576```text theme={null}

553API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.577API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.


555 579 

556**要做什麼:**580**要做什麼:**

557 581 

558* 執行 `claude update` 以升級到 v2.1.111 或更新版本,然後重新啟動 Claude Code582* 執行 `claude update` 並重新啟動 Claude Code。Opus 4.7 需要 v2.1.111 或更新版本。Opus 4.8 需要 v2.1.154 或更新版本

559* 如果您無法升級,請執行 `/model` 並選擇 Opus 4.6 或 Sonnet583* 如果您無法升級,請執行 `/model` 並選擇 Opus 4.6 或 Sonnet

560* 如果您在 Agent SDK 中遇到這個,請參閱 [SDK troubleshooting](/zh-TW/agent-sdk/quickstart#troubleshooting)584* 如果您在 Agent SDK 中遇到這個,請參閱 [SDK troubleshooting](/zh-TW/agent-sdk/quickstart#troubleshooting)

561 585 


588 612 

589**要做什麼:**613**要做什麼:**

590 614 

615* {/* max-version: 2.1.155 */}如果您使用的是 Opus 4.7 或 Opus 4.8,請先執行 `claude update`。v2.1.156 之前的版本可能在正常工具使用期間觸發此錯誤,而 `/rewind` 無法清除它。

591* 執行 `/rewind`,或按 Esc 兩次,以回退到損壞轉向之前的檢查點並從那裡繼續。請參閱 [Checkpointing](/zh-TW/checkpointing) 以了解如何建立和恢復檢查點。616* 執行 `/rewind`,或按 Esc 兩次,以回退到損壞轉向之前的檢查點並從那裡繼續。請參閱 [Checkpointing](/zh-TW/checkpointing) 以了解如何建立和恢復檢查點。

592 617 

593### Usage Policy refusal618### Usage Policy refusal

fast-mode.md +50 −25

Details

10 快速模式處於[研究預覽](#research-preview)階段。該功能、定價和可用性可能會根據反饋而改變。10 快速模式處於[研究預覽](#research-preview)階段。該功能、定價和可用性可能會根據反饋而改變。

11</Note>11</Note>

12 12 

13快速模式是 Claude Opus 的高速配置,使模型速度提升 2.5 倍,但每個 token 的成本更高。當您需要速度進行互動式工作(如快速迭代或實時調試)時,使用 `/fast` 切換開啟,當成本比延遲更重要時,切換關閉。13快速模式是 Claude Opus 的高速配置,使模型速度提升最高 2.5 倍,但每個 token 的成本更高。當您需要速度進行互動式工作(如快速迭代或實時調試)時,使用 `/fast` 切換開啟,當成本比延遲更重要時,切換關閉。

14 14 

15快速模式不是不同的模型。它使用 Claude Opus 搭配不同的 API 配置,優先考慮速度而非成本效率。您獲得相同的品質和功能,只是回應速度更快。快速模式在 Opus 4.7 和 Opus 4.6 上受支援。它在 Sonnet、Haiku 或其他模型上不可用。15快速模式不是不同的模型。它使用 Claude Opus 搭配不同的 API 配置,優先考慮速度而非成本效率。您獲得相同的品質和功能,只是回應速度更快。快速模式在 Opus 4.8、Opus 4.7 和 Opus 4.6 上受支援。它在 Sonnet、Haiku 或其他模型上不可用。

16 

17<Warning>

18 Opus 4.6 的快速模式已棄用,將在 Opus 4.8 推出後約 30 天內移除。移除後,Opus 4.6 上的快速模式將回退至標準速度和標準定價。遷移至 Opus 4.8 或 Opus 4.7 以保持加速。

19</Warning>

16 20 

17<Note>21<Note>

18 快速模式需要 Claude Code v2.1.36 或更新版本。使用 `claude --version` 檢查您的版本。22 快速模式需要 Claude Code v2.1.36 或更新版本。使用 `claude --version` 檢查您的版本。


20 24 

21需要了解的事項:25需要了解的事項:

22 26 

23* 使用 `/fast` 在 Claude Code CLI 中切換快速模式。也可在 Claude Code VS Code 擴充功能中透過 `/fast` 使用27* 使用 `/fast` 在 Claude Code CLI 中切換快速模式。VS Code 擴充功能不支援快速模式

24* 快速模式定價在 Opus 4.7 和 Opus 4.6 上都是 $30/$150 MTok。28* 快速模式定價在 Opus 4.8 上為 $10/$50 MTok,在 Opus 4.7 和 Opus 4.6 上為 $30/$150 MTok。

25* 適用於訂閱方案(Pro/Max/Team/Enterprise)上的所有 Claude Code 使用者和 Claude Console。29* 適用於訂閱方案(Pro/Max/Team/Enterprise)上的所有 Claude Code 使用者和 Claude Console。

26* 對於訂閱方案(Pro/Max/Team/Enterprise)上的 Claude Code 使用者,快速模式僅透過使用額度提供,不包含在訂閱速率限制中。30* 對於訂閱方案(Pro/Max/Team/Enterprise)上的 Claude Code 使用者,快速模式僅透過使用額度提供,不包含在訂閱速率限制中。

27 31 

28本頁涵蓋如何[切換快速模式](#toggle-fast-mode)、其[成本權衡](#understand-the-cost-tradeoff)、[何時使用](#decide-when-to-use-fast-mode)、[要求](#requirements)、[每個工作階段選擇加入](#require-per-session-opt-in)和[速率限制行為](#handle-rate-limits)。32本頁涵蓋如何[切換快速模式](#toggle-fast-mode)、其[成本權衡](#understand-the-cost-tradeoff)、[何時使用](#decide-when-to-use-fast-mode)、[要求](#requirements)、[每個工作階段選擇加入](#require-per-session-opt-in)和[速率限制行為](#handle-rate-limits)。

29 33 

30## 切換快速模式34<h2 id="toggle-fast-mode">

35 切換快速模式

36</h2>

31 37 

32透過以下任一方式切換快速模式:38透過以下任一方式切換快速模式:

33 39 

34* 輸入 `/fast` 並按 Tab 鍵切換開啟或關閉40* 輸入 `/fast` 並按 Tab 鍵切換開啟或關閉

35* 在您的[使用者設定檔案](/zh-TW/settings)中設定 `"fastMode": true`41* 在您的[使用者設定檔案](/zh-TW/settings)中設定 `"fastMode": true`

36 42 

37預設情況下,快速模式在工作階段之間保持。管理員可以配置快速模式在每個工作階段重設。詳見[要求每個工作階段選擇加入](#require-per-session-opt-in)。43預設情況下,快速模式在工作階段之間保持。管理員可以配置快速模式在每個工作階段重設。詳見[要求每個工作階段選擇加入](#require-per-session-opt-in)以了解詳情

38 44 

39為了獲得最佳成本效率,在工作階段開始時啟用快速模式,而不是在對話中途切換。詳見[了解成本權衡](#understand-the-cost-tradeoff)。45為了獲得最佳成本效率,在工作階段開始時啟用快速模式,而不是在對話中途切換。詳見[了解成本權衡](#understand-the-cost-tradeoff)以了解詳情

40 46 

41當您啟用快速模式時:47當您啟用快速模式時:

42 48 


47 53 

48當您再次使用 `/fast` 關閉快速模式時,您仍保持在 Opus 上。模型不會還原到您之前的模型。要切換到不同的模型,請使用 `/model`。54當您再次使用 `/fast` 關閉快速模式時,您仍保持在 Opus 上。模型不會還原到您之前的模型。要切換到不同的模型,請使用 `/model`。

49 55 

50Opus 4.7 是 Claude Code v2.1.142 及更新版本中的快速模式預設值。要改為將快速模式固定到 Opus 4.6請設定 `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1`56Opus 4.8 是 Claude Code v2.1.154 及更新版本中的快速模式預設值。 v2.1.142 至 v2.1.153 版本上快速模式預設為 Opus 4.7

51 57 

52## 了解成本權衡58<h2 id="understand-the-cost-tradeoff">

59 了解成本權衡

60</h2>

53 61 

54快速模式的每個 token 定價高於標準 Opus:62快速模式的每個 token 定價高於標準 Opus,乘數因模型而異

55 63 

56| 模式 | 輸入 (MTok) | 輸出 (MTok) |64| 模型 | 輸入 (MTok) | 輸出 (MTok) |

57| ---- | --------- | --------- |65| ------------------- | --------- | --------- |

58| 快速模式 | \$30 | \$150 |66| Opus 4.8 | \$10 | \$50 |

67| Opus 4.7 和 Opus 4.6 | \$30 | \$150 |

59 68 

60快速模式定價在整個 1M token 上下文視窗中是固定的。69快速模式定價在整個 1M token 上下文視窗中是固定的。如需與標準 Opus 費率進行比較,請參閱 [Claude 定價參考](https://platform.claude.com/docs/zh-TW/about-claude/pricing)。

61 70 

62當您在對話中途切換到快速模式時,您需要為整個對話上下文支付完整的快速模式未快取輸入 token 價格。這比從一開始就啟用快速模式的成本更高71當您在對話中首次啟用快速模式時,您需要為整個對話上下文支付完整的快速模式未快取輸入 token 價格。對話進行得越深入,成本就越高,因此從一開始就啟用快速模式會更便宜成本每個對話只適用一次,因此稍後關閉並再次開啟快速模式不會重複計費。如需了解機制,請參閱[快速模式如何與 prompt cache 互動](/zh-TW/prompt-caching#turning-on-fast-mode)。

63 72 

64## 決定何時使用快速模式73<h2 id="decide-when-to-use-fast-mode">

74 決定何時使用快速模式

75</h2>

65 76 

66快速模式最適合用於回應延遲比成本更重要的互動式工作:77快速模式最適合用於回應延遲比成本更重要的互動式工作:

67 78 


75* 批次處理或 CI/CD 管道86* 批次處理或 CI/CD 管道

76* 成本敏感的工作負載87* 成本敏感的工作負載

77 88 

78### 快速模式與努力等級89<h3 id="fast-mode-vs-effort-level">

90 快速模式與努力等級

91</h3>

79 92 

80快速模式和努力等級都會影響回應速度,但方式不同:93快速模式和努力等級都會影響回應速度,但方式不同:

81 94 


86 99 

87您可以結合兩者:在直接任務上使用快速模式搭配較低的[努力等級](/zh-TW/model-config#adjust-effort-level)以獲得最大速度。100您可以結合兩者:在直接任務上使用快速模式搭配較低的[努力等級](/zh-TW/model-config#adjust-effort-level)以獲得最大速度。

88 101 

89## 要求102<h2 id="requirements">

103 要求

104</h2>

90 105 

91快速模式需要以下所有條件:106快速模式需要以下所有條件:

92 107 

93* **第三方雲端提供商上不可用**:快速模式在 Amazon Bedrock、Google Vertex AIMicrosoft Azure Foundry 上不可用。快速模式可透過 Anthropic Console API 和使用額度的 Claude 訂閱方案取得108* **僅限 Anthropic API 或訂閱**:快速模式可透過 Anthropic Console API 和使用額度的 Claude 訂閱方案取得。它在 Amazon Bedrock、Google Vertex AIMicrosoft Azure Foundry AWS 上的 Claude Platform 上不可用

94* **啟用使用額度**:您的帳戶必須啟用使用額度,這允許超出您方案包含使用量的計費。對於個人帳戶,在您的 [Console 計費設定](https://platform.claude.com/settings/organization/billing)中啟用此功能。對於 Team 和 Enterprise,管理員必須為組織啟用使用額度。109* **啟用使用額度**:您的帳戶必須啟用使用額度,這允許超出您方案包含使用量的計費。對於個人帳戶,在您的 [Console 計費設定](https://platform.claude.com/settings/organization/billing)中啟用此功能。對於 Team 和 Enterprise,管理員必須為組織啟用使用額度。

95 110 

96<Note>111<Note>


103 如果您的管理員尚未為您的組織啟用快速模式,`/fast` 命令將顯示「Fast mode has been disabled by your organization.」118 如果您的管理員尚未為您的組織啟用快速模式,`/fast` 命令將顯示「Fast mode has been disabled by your organization.」

104</Note>119</Note>

105 120 

106### 為您的組織啟用快速模式121<h3 id="enable-fast-mode-for-your-organization">

122 為您的組織啟用快速模式

123</h3>

107 124 

108管理員可以在以下位置啟用快速模式:125管理員可以在以下位置啟用快速模式:

109 126 


112 129 

113另一個完全禁用快速模式的選項是設定 `CLAUDE_CODE_DISABLE_FAST_MODE=1`。詳見[環境變數](/zh-TW/env-vars)。130另一個完全禁用快速模式的選項是設定 `CLAUDE_CODE_DISABLE_FAST_MODE=1`。詳見[環境變數](/zh-TW/env-vars)。

114 131 

115### 要求每個工作階段選擇加入132<h3 id="require-per-session-opt-in">

133 要求每個工作階段選擇加入

134</h3>

116 135 

117預設情況下,快速模式在工作階段之間保持:如果使用者啟用快速模式,它在未來工作階段中保持開啟。[Team](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) 或 [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) 方案上的管理員可以透過在[受管設定](/zh-TW/settings#settings-files)或[伺服器受管設定](/zh-TW/server-managed-settings)中將 `fastModePerSessionOptIn` 設定為 `true` 來防止這種情況。這會導致每個工作階段以快速模式關閉開始,要求使用者使用 `/fast` 明確啟用它。136預設情況下,快速模式在工作階段之間保持:如果使用者啟用快速模式,它在未來工作階段中保持開啟。[Team](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) 或 [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) 方案上的管理員可以透過在[受管設定](/zh-TW/settings#settings-files)或[伺服器受管設定](/zh-TW/server-managed-settings)中將 `fastModePerSessionOptIn` 設定為 `true` 來防止這種情況。這會導致每個工作階段以快速模式關閉開始,要求使用者使用 `/fast` 明確啟用它。

118 137 


124 143 

125這對於控制執行多個並行工作階段的使用者的組織成本很有用。使用者在需要速度時仍可以使用 `/fast` 啟用快速模式,但它在每個新工作階段開始時重設。使用者的快速模式偏好設定仍會保存,因此移除此設定會還原預設的持久行為。144這對於控制執行多個並行工作階段的使用者的組織成本很有用。使用者在需要速度時仍可以使用 `/fast` 啟用快速模式,但它在每個新工作階段開始時重設。使用者的快速模式偏好設定仍會保存,因此移除此設定會還原預設的持久行為。

126 145 

127## 處理速率限制146<h2 id="handle-rate-limits">

147 處理速率限制

148</h2>

128 149 

129快速模式與標準 Opus 有不同的速率限制。Opus 4.7 和 Opus 4.6 的快速模式共享相同的速率限制池:任一模型上的使用都會從相同的限制中扣除。當您達到快速模式速率限制或用完使用額度時:150快速模式與標準 Opus 有不同的速率限制。Opus 4.8、Opus 4.7 和 Opus 4.6 的快速模式共享相同的速率限制池:任一模型上的使用都會從相同的限制中扣除。當您達到快速模式速率限制或用完使用額度時:

130 151 

1311. 快速模式自動回退到標準速度1521. 快速模式自動回退到標準速度

1322. `↯` 圖示變灰以指示冷卻1532. `↯` 圖示變灰以指示冷卻


135 156 

136要手動禁用快速模式而不是等待冷卻,請再次執行 `/fast`。157要手動禁用快速模式而不是等待冷卻,請再次執行 `/fast`。

137 158 

138## 研究預覽159<h2 id="research-preview">

160 研究預覽

161</h2>

139 162 

140快速模式是研究預覽功能。這意味著:163快速模式是研究預覽功能。這意味著:

141 164 


145 168 

146透過您通常的 Anthropic 支援管道報告問題或反饋。169透過您通常的 Anthropic 支援管道報告問題或反饋。

147 170 

148## 另請參閱171<h2 id="see-also">

172 另請參閱

173</h2>

149 174 

150* [模型配置](/zh-TW/model-config):切換模型和調整努力等級175* [模型配置](/zh-TW/model-config):切換模型和調整努力等級

151* [有效管理成本](/zh-TW/costs):追蹤 token 使用量並降低成本176* [有效管理成本](/zh-TW/costs):追蹤 token 使用量並降低成本

Details

14 14 

15**初次使用 Claude Code?** 從[CLAUDE.md](/zh-TW/memory)開始了解專案約定,然後根據特定觸發器添加其他擴展。15**初次使用 Claude Code?** 從[CLAUDE.md](/zh-TW/memory)開始了解專案約定,然後根據特定觸發器添加其他擴展。

16 16 

17## 概述17<h2 id="overview">

18 概述

19</h2>

18 20 

19擴展插入代理迴圈的不同部分:21擴展插入代理迴圈的不同部分:

20 22 

21* **[CLAUDE.md](/zh-TW/memory)** 添加 Claude 在每個會話中看到的持久上下文23* **[CLAUDE.md](/zh-TW/memory)** 添加 Claude 在每個會話中看到的持久上下文

22* **[Skills](/zh-TW/skills)** 添加可重複使用的知識和可調用的工作流程24* **[Skills](/zh-TW/skills)** 添加可重複使用的知識和可調用的工作流程

25* **[Code intelligence](/zh-TW/tools-reference#lsp-tool-behavior)** 將 Claude 連接到語言伺服器以進行符號級導航和即時類型錯誤

23* **[MCP](/zh-TW/mcp)** 將 Claude 連接到外部服務和工具26* **[MCP](/zh-TW/mcp)** 將 Claude 連接到外部服務和工具

24* **[Subagents](/zh-TW/sub-agents)** 在隔離的上下文中運行自己的迴圈,返回摘要27* **[Subagents](/zh-TW/sub-agents)** 在隔離的上下文中運行自己的迴圈,返回摘要

25* **[Agent teams](/zh-TW/agent-teams)** 協調多個獨立會話,具有共享任務和點對點訊息傳遞28* **[Agent teams](/zh-TW/agent-teams)** 協調多個獨立會話,具有共享任務和點對點訊息傳遞

26* **[Hooks](/zh-TW/hooks-guide)** 在生命週期事件上觸發,可以運行指令碼、HTTP 請求、提示或 subagent29* **[Hooks](/zh-TW/hooks-guide)** 在生命週期事件上觸發,可以運行指令碼、HTTP 請求、提示或 subagent

27* **[Plugins](/zh-TW/plugins)** 和 **[marketplaces](/zh-TW/plugin-marketplaces)** 打包和分發這些功能30* **[Plugins](/zh-TW/plugins)** 和 **[marketplaces](/zh-TW/plugin-marketplaces)** 打包和分發這些功能

28 31 

29[Skills](/zh-TW/skills)是最靈活的擴展。Skill 是一個包含知識、工作流程或指令的 markdown 檔案。您可以使用像 `/deploy` 這樣的命令調用 skills,或者 Claude 可以在相關時自動載入它們。Skills 可以在您目前的對話中運行,或通過 subagents 在隔離的上下文中運行。32[Skills](/zh-TW/skills) 是最靈活的擴展。Skill 是一個包含知識、工作流程或指令的 markdown 檔案。您可以使用像 `/deploy` 這樣的命令調用 skills,或者 Claude 可以在相關時自動載入它們。Skills 可以在您目前的對話中運行,或通過 subagents 在隔離的上下文中運行。

30 33 

31## 將功能與您的目標相匹配34<h2 id="match-features-to-your-goal">

35 將功能與您的目標相匹配

36</h2>

32 37 

33功能範圍從 Claude 在每個會話中看到的始終開啟的上下文,到您或 Claude 可以調用的按需功能,再到在特定事件上運行的背景自動化。下表顯示了可用的功能以及何時使用每一個。38功能範圍從 Claude 在每個會話中看到的始終開啟的上下文,到您或 Claude 可以調用的按需功能,再到在特定事件上運行的背景自動化。下表顯示了可用的功能以及何時使用每一個。

34 39 

35| 功能 | 它的作用 | 何時使用 | 範例 |40| 功能 | 它的作用 | 何時使用 | 範例 |

36| ------------------------------------- | ------------------------------ | --------------------- | ----------------------------------------- |41| ----------------------------------------------------------------- | ------------------------------ | ---------------------------- | ----------------------------------------- |

37| **CLAUDE.md** | 每次對話載入的持久上下文 | 專案約定、「始終執行 X」規則 | 「使用 pnpm,而不是 npm。在提交前運行測試。」 |42| **CLAUDE.md** | 每次對話載入的持久上下文 | 專案約定、「始終執行 X」規則 | 「使用 pnpm,而不是 npm。在提交前運行測試。」 |

38| **Skill** | Claude 可以使用的指令、知識和工作流程 | 可重複使用的內容、參考文件、可重複的任務 | `/deploy` 運行您的部署檢查清單;包含端點模式的 API 文件 skill |43| **Skill** | Claude 可以使用的指令、知識和工作流程 | 可重複使用的內容、參考文件、可重複的任務 | `/deploy` 運行您的部署檢查清單;包含端點模式的 API 文件 skill |

39| **Subagent** | 返回摘要結果的隔離執行上下文 | 上下文隔離、並行任務、專門的工作者 | 讀取許多檔案但僅返回關鍵發現的研究任務 |44| **Subagent** | 返回摘要結果的隔離執行上下文 | 上下文隔離、並行任務、專門的工作者 | 讀取許多檔案但僅返回關鍵發現的研究任務 |

40| **[Agent teams](/zh-TW/agent-teams)** | 協調多個獨立的 Claude Code 會話 | 並行研究、新功能開發、使用競爭假設進行除錯 | 生成審查者以同時檢查安全性、效能和測試 |45| **[Agent teams](/zh-TW/agent-teams)** | 協調多個獨立的 Claude Code 會話 | 並行研究、新功能開發、使用競爭假設進行除錯 | 生成審查者以同時檢查安全性、效能和測試 |

46| **[Code intelligence](/zh-TW/tools-reference#lsp-tool-behavior)** | 語言伺服器導航和診斷 | 類型化語言、大型程式碼庫,其中 grep 速度慢或不精確 | 跳轉到符號的定義,而不是讀取整個檔案 |

41| **MCP** | 連接到外部服務 | 外部資料或操作 | 查詢您的資料庫、發佈到 Slack、控制瀏覽器 |47| **MCP** | 連接到外部服務 | 外部資料或操作 | 查詢您的資料庫、發佈到 Slack、控制瀏覽器 |

42| **Hook** | 由事件觸發的指令碼、HTTP 請求、提示或 subagent | 必須在每個匹配事件上運行的自動化 | 在每次檔案編輯後運行 ESLint |48| **Hook** | 由事件觸發的指令碼、HTTP 請求、提示或 subagent | 必須在每個匹配事件上運行的自動化 | 在每次檔案編輯後運行 ESLint |

43 49 

44**[Plugins](/zh-TW/plugins)** 是打包層。Plugin 將 skills、hooks、subagents 和 MCP servers 捆綁到單個可安裝單元中。Plugin skills 是命名空間的(如 `/my-plugin:review`),因此多個 plugins 可以共存。當您想在多個儲存庫中重複使用相同的設置或通過 **[marketplace](/zh-TW/plugin-marketplaces)** 分發給他人時,使用 plugins。50**[Plugins](/zh-TW/plugins)** 是打包層。Plugin 將 skills、hooks、subagents 和 MCP servers 捆綁到單個可安裝單元中。Plugin skills 是命名空間的(如 `/my-plugin:review`),因此多個 plugins 可以共存。當您想在多個儲存庫中重複使用相同的設置或通過 **[marketplace](/zh-TW/plugin-marketplaces)** 分發給他人時,使用 plugins。

45 51 

46### 隨著時間推移構建您的設置52<h3 id="build-your-setup-over-time">

53 隨著時間推移構建您的設置

54</h3>

47 55 

48您不需要預先配置所有內容。每個功能都有一個可識別的觸發器,大多數團隊大致按以下順序添加它們:56您不需要預先配置所有內容。每個功能都有一個可識別的觸發器,大多數團隊大致按以下順序添加它們:

49 57 

50| 觸發器 | 添加 |58| 觸發器 | 添加 |

51| :--------------------------- | :----------------------------------- |59| :--------------------------- | :---------------------------------------------------------------------------- |

52| Claude 兩次出錯的約定或命令 | 將其添加到 [CLAUDE.md](/zh-TW/memory) |60| Claude 兩次出錯的約定或命令 | 將其添加到 [CLAUDE.md](/zh-TW/memory) |

53| 您一直在輸入相同的提示來啟動任務 | 將其保存為使用者可調用的 [skill](/zh-TW/skills) |61| 您一直在輸入相同的提示來啟動任務 | 將其保存為使用者可調用的 [skill](/zh-TW/skills) |

54| 您第三次將相同的劇本或多步驟程序粘貼到聊天中 | 將其捕獲為 [skill](/zh-TW/skills) |62| 您第三次將相同的劇本或多步驟程序粘貼到聊天中 | 將其捕獲為 [skill](/zh-TW/skills) |

55| 您一直在從 Claude 無法看到的瀏覽器選項卡複製資料 | 將該系統連接為 [MCP server](/zh-TW/mcp) |63| 您一直在從 Claude 無法看到的瀏覽器選項卡複製資料 | 將該系統連接為 [MCP server](/zh-TW/mcp) |

64| Claude 讀取許多檔案以找到符號的定義或使用位置 | 為您的語言安裝 [code intelligence plugin](/zh-TW/discover-plugins#code-intelligence) |

56| 一個附帶任務用您不會再次參考的輸出淹沒您的對話 | 通過 [subagent](/zh-TW/sub-agents) 路由它 |65| 一個附帶任務用您不會再次參考的輸出淹沒您的對話 | 通過 [subagent](/zh-TW/sub-agents) 路由它 |

57| 您希望每次都發生某事而無需詢問 | 編寫 [hook](/zh-TW/hooks-guide) |66| 您希望每次都發生某事而無需詢問 | 編寫 [hook](/zh-TW/hooks-guide) |

58| 第二個儲存庫需要相同的設置 | 將其打包為 [plugin](/zh-TW/plugins) |67| 第二個儲存庫需要相同的設置 | 將其打包為 [plugin](/zh-TW/plugins) |

59 68 

60相同的觸發器告訴您何時更新您已經擁有的內容。重複的錯誤或反覆出現的審查評論是 CLAUDE.md 編輯,而不是聊天中的一次性更正。您一直手動調整的工作流程是需要另一次修訂的 skill。69相同的觸發器告訴您何時更新您已經擁有的內容。重複的錯誤或反覆出現的審查評論是 CLAUDE.md 編輯,而不是聊天中的一次性更正。您一直手動調整的工作流程是需要另一次修訂的 skill。

61 70 

62### 比較相似的功能71<h3 id="compare-similar-features">

72 比較相似的功能

73</h3>

63 74 

64某些功能可能看起來相似。以下是如何區分它們。75某些功能可能看起來相似。以下是如何區分它們。

65 76 


181 </Tab>192 </Tab>

182</Tabs>193</Tabs>

183 194 

184### 了解功能如何分層195<h3 id="understand-how-features-layer">

196 了解功能如何分層

197</h3>

185 198 

186功能可以在多個級別定義:使用者範圍、每個專案、通過 plugins,或通過受管理的策略。您也可以在子目錄中嵌套 CLAUDE.md 檔案,或在 monorepo 的特定套件中放置 skills。當相同的功能存在於多個級別時,以下是它們的分層方式:199功能可以在多個級別定義:使用者範圍、每個專案、通過 plugins,或通過受管理的策略。您也可以在子目錄中嵌套 CLAUDE.md 檔案,或在 monorepo 的特定套件中放置 skills。當相同的功能存在於多個級別時,以下是它們的分層方式:

187 200 


190* **MCP 伺服器** 按名稱覆蓋:本地 > 專案 > 使用者。請參閱 [MCP 範圍](/zh-TW/mcp#scope-hierarchy-and-precedence)。203* **MCP 伺服器** 按名稱覆蓋:本地 > 專案 > 使用者。請參閱 [MCP 範圍](/zh-TW/mcp#scope-hierarchy-and-precedence)。

191* **Hooks** 合併:所有註冊的 hooks 為其匹配事件觸發,無論來源如何。請參閱 [hooks](/zh-TW/hooks-guide)。204* **Hooks** 合併:所有註冊的 hooks 為其匹配事件觸發,無論來源如何。請參閱 [hooks](/zh-TW/hooks-guide)。

192 205 

193### 結合功能206<h3 id="combine-features">

207 結合功能

208</h3>

194 209 

195每個擴展解決不同的問題:CLAUDE.md 處理始終開啟的上下文,skills 處理按需知識和工作流程,MCP 處理外部連接,subagents 處理隔離,hooks 處理自動化。真實的設置根據您的工作流程結合它們。210每個擴展解決不同的問題:CLAUDE.md 處理始終開啟的上下文,skills 處理按需知識和工作流程,MCP 處理外部連接,subagents 處理隔離,hooks 處理自動化。真實的設置根據您的工作流程結合它們。

196 211 


203| **CLAUDE.md + Skills** | CLAUDE.md 保持始終開啟的規則;skills 保持按需載入的參考資料 | CLAUDE.md 說「遵循我們的 API 約定」,skill 包含完整的 API 風格指南 |218| **CLAUDE.md + Skills** | CLAUDE.md 保持始終開啟的規則;skills 保持按需載入的參考資料 | CLAUDE.md 說「遵循我們的 API 約定」,skill 包含完整的 API 風格指南 |

204| **Hook + MCP** | Hook 通過 MCP 觸發外部操作 | 編輯後 hook 在 Claude 修改關鍵檔案時發送 Slack 通知 |219| **Hook + MCP** | Hook 通過 MCP 觸發外部操作 | 編輯後 hook 在 Claude 修改關鍵檔案時發送 Slack 通知 |

205 220 

206## 了解上下文成本221<h2 id="understand-context-costs">

222 了解上下文成本

223</h2>

207 224 

208您添加的每個功能都消耗 Claude 的一些上下文。太多可能會填滿您的上下文視窗,但它也可能添加噪聲,使 Claude 效率降低;skills 可能無法正確觸發,或 Claude 可能會失去對您的約定的追蹤。了解這些權衡有助於您構建有效的設置。有關這些功能如何在運行會話中結合的互動式視圖,請參閱[探索上下文視窗](/zh-TW/context-window)。225您添加的每個功能都消耗 Claude 的一些上下文。太多可能會填滿您的上下文視窗,但它也可能添加噪聲,使 Claude 效率降低;skills 可能無法正確觸發,或 Claude 可能會失去對您的約定的追蹤。了解這些權衡有助於您構建有效的設置。有關這些功能如何在運行會話中結合的互動式視圖,請參閱[探索上下文視窗](/zh-TW/context-window)。

209 226 

210### 按功能的上下文成本227<h3 id="context-cost-by-feature">

228 按功能的上下文成本

229</h3>

211 230 

212每個功能都有不同的載入策略和上下文成本:231每個功能都有不同的載入策略和上下文成本:

213 232 

214| 功能 | 何時載入 | 什麼載入 | 上下文成本 |233| 功能 | 何時載入 | 什麼載入 | 上下文成本 |

215| ------------- | ---------- | ------------------ | ----------------- |234| --------------------- | ---------- | ------------------ | ----------------- |

216| **CLAUDE.md** | 會話開始 | 完整內容 | 每個請求 |235| **CLAUDE.md** | 會話開始 | 完整內容 | 每個請求 |

217| **Skills** | 會話開始 + 使用時 | 啟動時的描述,使用時的完整內容 | 低(每個請求的描述)\* |236| **Skills** | 會話開始 + 使用時 | 啟動時的描述,使用時的完整內容 | 低(每個請求的描述)\* |

218| **MCP 伺服器** | 會話開始 | 工具名稱;完整架構按需 | 低,直到使用工具 |237| **MCP 伺服器** | 會話開始 | 工具名稱;完整架構按需 | 低,直到使用工具 |

238| **Code intelligence** | 檔案編輯後和按需 | 編輯後的診斷;查詢時的符號位置 | 低;減少其他地方的檔案讀取 |

219| **Subagents** | 生成時 | 具有指定 skills 的新鮮上下文 | 與主會話隔離 |239| **Subagents** | 生成時 | 具有指定 skills 的新鮮上下文 | 與主會話隔離 |

220| **Hooks** | 觸發時 | 無(外部運行) | 零,除非 hook 返回額外上下文 |240| **Hooks** | 觸發時 | 無(外部運行) | 零,除非 hook 返回額外上下文 |

221 241 

222\*預設情況下,skill 描述在會話開始時載入,以便 Claude 決定何時使用它們。在 skill 的 frontmatter 中設置 `disable-model-invocation: true` 以將其完全隱藏在 Claude 中,直到您手動調用它。這將 skills 的上下文成本降低到零,您只需自己觸發這些 skills。對於您未編寫的 skill,在設置中設置 [`skillOverrides`](/zh-TW/skills#override-skill-visibility-from-settings) 以執行相同操作,而無需編輯其檔案。242\*預設情況下,skill 描述在會話開始時載入,以便 Claude 決定何時使用它們。在 skill 的 frontmatter 中設置 `disable-model-invocation: true` 以將其完全隱藏在 Claude 中,直到您手動調用它。這將 skills 的上下文成本降低到零,您只需自己觸發這些 skills。對於您未編寫的 skill,在設置中設置 [`skillOverrides`](/zh-TW/skills#override-skill-visibility-from-settings) 以執行相同操作,而無需編輯其檔案。

223 243 

224### 了解功能如何載入244<h3 id="understand-how-features-load">

245 了解功能如何載入

246</h3>

225 247 

226每個功能在您的會話中的不同點載入。下面的選項卡說明每個功能何時載入以及什麼進入上下文。248每個功能在您的會話中的不同點載入。下面的選項卡說明每個功能何時載入以及什麼進入上下文。

227 249 


239 </Tab>261 </Tab>

240 262 

241 <Tab title="Skills">263 <Tab title="Skills">

242 Skills 是 Claude 工具包中的額外功能。它們可以是參考資料(如 API 風格指南)或可調用的工作流程,您可以使用 `/<name>` 觸發(如 `/deploy`)。Claude Code 附帶[捆綁的 skills](/zh-TW/commands),如 `/simplify`、`/batch` 和 `/debug`,開箱即用。您也可以創建自己的。Claude 在適當時使用 skills,或者您可以直接調用一個。264 Skills 是 Claude 工具包中的額外功能。它們可以是參考資料(如 API 風格指南)或可調用的工作流程,您可以使用 `/<name>` 觸發(如 `/deploy`)。Claude Code 附帶[捆綁的 skills](/zh-TW/commands),如 `/code-review`、`/batch` 和 `/debug`,開箱即用。您也可以創建自己的。Claude 在適當時使用 skills,或者您可以直接調用一個。

243 265 

244 **何時:** 取決於 skill 的配置。預設情況下,描述在會話開始時載入,完整內容在使用時載入。對於僅使用者 skills(`disable-model-invocation: true`),在您調用它們之前不會載入任何內容。266 **何時:** 取決於 skill 的配置。預設情況下,描述在會話開始時載入,完整內容在使用時載入。對於僅使用者 skills(`disable-model-invocation: true`),在您調用它們之前不會載入任何內容。

245 267 


261 283 

262 **上下文成本:** [工具搜尋](/zh-TW/mcp#scale-with-mcp-tool-search)預設啟用,因此閒置 MCP 工具消耗最少上下文。284 **上下文成本:** [工具搜尋](/zh-TW/mcp#scale-with-mcp-tool-search)預設啟用,因此閒置 MCP 工具消耗最少上下文。

263 285 

264 **可靠性注意:** MCP 連接可能在會話中途無聲地失敗。如果伺服器斷開連接,其工具會無警告地消失。Claude 可能嘗試使用不再存在的工具如果您注意到 Claude 無法使用它之前可以存取的 MCP 工具,請使用 `/mcp` 檢查連接286 <Tip>運行 `/mcp` 以查看連接狀態和每個伺服器的令牌成本。Claude Code [自動重新連接到遠程伺服器](/zh-TW/mcp#automatic-reconnection)(如果它們斷開連接),您可以斷開您未主動使用的伺服器</Tip>

287 </Tab>

288 

289 <Tab title="Code intelligence">

290 **何時:** 檔案編輯後,以及當 Claude 導航程式碼時按需。

291 

292 **什麼載入:** 每次檔案編輯後的類型錯誤和警告。當 Claude 查詢符號時的定義、參考和類型資訊。

293 

294 **上下文成本:** 低。符號查詢通常會取代廣泛的檔案讀取,因此淨上下文使用可能會下降。

265 295 

266 <Tip>運行 `/mcp` 以查看每個伺服器的令牌成本。斷開您未主動使用的伺服器。</Tip>296 <Tip>LSP 工具在您為您的語言安裝[程式碼智能 plugin](/zh-TW/discover-plugins#code-intelligence)之前處於非活動狀態。</Tip>

267 </Tab>297 </Tab>

268 298 

269 <Tab title="Subagents">299 <Tab title="Subagents">


292 </Tab>322 </Tab>

293</Tabs>323</Tabs>

294 324 

295## 了解更多325<h2 id="learn-more">

326 了解更多

327</h2>

296 328 

297每個功能都有自己的指南,包含設置指令、範例和配置選項。329每個功能都有自己的指南,包含設置指令、範例和配置選項。

298 330 

fullscreen.md +39 −12

Details

18 全螢幕一詞描述的是 Claude Code 如何接管終端的繪製表面,就像 `vim` 一樣。它與最大化終端視窗無關,並且在任何視窗大小下都能運作。18 全螢幕一詞描述的是 Claude Code 如何接管終端的繪製表面,就像 `vim` 一樣。它與最大化終端視窗無關,並且在任何視窗大小下都能運作。

19</Note>19</Note>

20 20 

21## 啟用全螢幕渲染21<h2 id="enable-fullscreen-rendering">

22 啟用全螢幕渲染

23</h2>

22 24 

23在任何 Claude Code 對話中執行 `/tui fullscreen`。CLI 會儲存 [`tui` 設定](/zh-TW/settings#available-settings)並重新啟動進入全螢幕模式,您的對話保持完整,因此您可以在工作階段中途切換而不會失去上下文。執行 `/tui` 不帶任何引數以列印哪個渲染器處於活動狀態。25在任何 Claude Code 對話中執行 `/tui fullscreen`。CLI 會儲存 [`tui` 設定](/zh-TW/settings#available-settings)並重新啟動進入全螢幕模式,您的對話保持完整,因此您可以在工作階段中途切換而不會失去上下文。執行 `/tui` 不帶任何引數以列印哪個渲染器處於活動狀態。

24 26 


30 32 

31`tui` 設定和環境變數是等效的。`/tui` 命令會從重新啟動的程序中清除 `CLAUDE_CODE_NO_FLICKER`,以便它寫入的設定生效。33`tui` 設定和環境變數是等效的。`/tui` 命令會從重新啟動的程序中清除 `CLAUDE_CODE_NO_FLICKER`,以便它寫入的設定生效。

32 34 

33## 變更內容35<h2 id="what-changes">

36 變更內容

37</h2>

34 38 

35全螢幕渲染改變了 CLI 如何繪製到您的終端。輸入框保持固定在螢幕底部,而不是在輸出串流進來時移動。如果輸入在 Claude 工作時保持不動,則全螢幕渲染處於活動狀態。只有可見的訊息保留在渲染樹中,因此無論對話長度如何,記憶體都保持恆定。39全螢幕渲染改變了 CLI 如何繪製到您的終端。輸入框保持固定在螢幕底部,而不是在輸出串流進來時移動。如果輸入在 Claude 工作時保持不動,則全螢幕渲染處於活動狀態。只有可見的訊息保留在渲染樹中,因此無論對話長度如何,記憶體都保持恆定。

36 40 


44 48 

45如果滑鼠捕捉干擾您的工作流程,您可以[關閉它](#keep-native-text-selection),同時保持無閃爍渲染。49如果滑鼠捕捉干擾您的工作流程,您可以[關閉它](#keep-native-text-selection),同時保持無閃爍渲染。

46 50 

47## 使用滑鼠51<h2 id="use-the-mouse">

52 使用滑鼠

53</h2>

48 54 

49全螢幕渲染捕捉滑鼠事件並在 Claude Code 內處理它們:55全螢幕渲染捕捉滑鼠事件並在 Claude Code 內處理它們:

50 56 

51* **在提示輸入中點擊**以在您輸入的文字中的任何位置定位游標。57* **在提示輸入中點擊**以在您輸入的文字中的任何位置定位游標。

58* **點擊 `/` 命令或 `@` 檔案清單中的建議**以接受它。懸停會突顯游標下的列。

52* **點擊摺疊的工具結果**以展開它並查看完整輸出。再次點擊以摺疊。工具呼叫及其結果一起展開。只有有更多內容要顯示的訊息才可點擊。59* **點擊摺疊的工具結果**以展開它並查看完整輸出。再次點擊以摺疊。工具呼叫及其結果一起展開。只有有更多內容要顯示的訊息才可點擊。

53* **點擊 URL 或檔案路徑**以開啟它。工具輸出中的檔案路徑(例如在 Edit 或 Write 後列印的路徑)在您的預設應用程式中開啟。純 `http://` 和 `https://` URL 在您的瀏覽器中開啟。在大多數終端中,這會取代原生 `Cmd` 點擊或 `Ctrl` 點擊,滑鼠捕捉會攔截這些。在 VS Code 整合終端和類似的基於 xterm.js 的終端中,繼續使用 `Cmd` 點擊。Claude Code 在那裡遵從終端自己的連結處理程式,以避免連結開啟兩次。60* **點擊 URL 或檔案路徑**以開啟它。工具輸出中的檔案路徑(例如在 Edit 或 Write 後列印的路徑)在您的預設應用程式中開啟。純 `http://` 和 `https://` URL 在您的瀏覽器中開啟。在大多數終端中,這會取代原生 `Cmd` 點擊或 `Ctrl` 點擊,滑鼠捕捉會攔截這些。在 VS Code 整合終端和類似的基於 xterm.js 的終端中,繼續使用 `Cmd` 點擊。Claude Code 在那裡遵從終端自己的連結處理程式,以避免連結開啟兩次。

54* **點擊並拖曳**以在對話中的任何位置選擇文字。雙擊選擇一個單詞,符合 iTerm2 的單詞邊界,因此檔案路徑選擇為一個單位。三擊選擇該行。61* **點擊並拖曳**以在對話中的任何位置選擇文字。雙擊選擇一個單詞,符合 iTerm2 的單詞邊界,因此檔案路徑選擇為一個單位。三擊選擇該行。


58 65 

59有活動選擇時,按住 `Shift` 並按方向鍵以從鍵盤延伸它。`Shift+↑` 和 `Shift+↓` 在選擇到達頂部或底部邊緣時捲動檢視區。`Shift+Home` 和 `Shift+End` 延伸到目前行的開始或結束。66有活動選擇時,按住 `Shift` 並按方向鍵以從鍵盤延伸它。`Shift+↑` 和 `Shift+↓` 在選擇到達頂部或底部邊緣時捲動檢視區。`Shift+Home` 和 `Shift+End` 延伸到目前行的開始或結束。

60 67 

61## 捲動對話68<h2 id="scroll-the-conversation">

69 捲動對話

70</h2>

62 71 

63全螢幕渲染在應用程式內處理捲動。使用這些快捷鍵來導航:72全螢幕渲染在應用程式內處理捲動。使用這些快捷鍵來導航:

64 73 


73 82 

74這些動作是可重新繫結的。請參閱[捲動動作](/zh-TW/keybindings#scroll-actions)以取得完整的動作名稱清單,包括沒有預設繫結的半頁和整頁變體。83這些動作是可重新繫結的。請參閱[捲動動作](/zh-TW/keybindings#scroll-actions)以取得完整的動作名稱清單,包括沒有預設繫結的半頁和整頁變體。

75 84 

76### 自動跟隨85<h3 id="auto-follow">

86 自動跟隨

87</h3>

77 88 

78向上捲動會暫停自動跟隨,以便新輸出不會將您拉回底部。按 `Ctrl+End` 或捲動到底部以恢復跟隨。89向上捲動會暫停自動跟隨,以便新輸出不會將您拉回底部。按 `Ctrl+End` 或捲動到底部以恢復跟隨。

79 90 

80若要完全關閉自動跟隨,使檢視保持在您留下的位置,請開啟 `/config` 並將「自動捲動」設定為關閉。禁用自動捲動後,檢視永遠不會自動跳到底部。需要回應的權限提示和其他對話框無論此設定如何都仍會捲動到檢視中。91若要完全關閉自動跟隨,使檢視保持在您留下的位置,請開啟 `/config` 並將「自動捲動」設定為關閉。禁用自動捲動後,檢視永遠不會自動跳到底部。需要回應的權限提示和其他對話框無論此設定如何都仍會捲動到檢視中。

81 92 

82### 滑鼠滾輪捲動93<h3 id="mouse-wheel-scrolling">

94 滑鼠滾輪捲動

95</h3>

83 96 

84滑鼠滾輪捲動需要您的終端將滑鼠事件轉發給 Claude Code。大多數終端在應用程式要求時都會執行此操作。iTerm2 將其設為每個設定檔的設定:如果滾輪無法執行任何操作,但 `PgUp` 和 `PgDn` 運作,請開啟「設定」→「設定檔」→「終端」並開啟「啟用滑鼠報告」。點擊展開和文字選擇也需要相同的設定。97滑鼠滾輪捲動需要您的終端將滑鼠事件轉發給 Claude Code。大多數終端在應用程式要求時都會執行此操作。iTerm2 將其設為每個設定檔的設定:如果滾輪無法執行任何操作,但 `PgUp` 和 `PgDn` 運作,請開啟「設定」→「設定檔」→「終端」並開啟「啟用滑鼠報告」。點擊展開和文字選擇也需要相同的設定。

85 98 


95 108 

96若要以互動方式調整捲動速度,請執行 `/scroll-speed`。對話框顯示一個尺標,您可以在其開啟時捲動,以便您可以立即感受到變化。按 `←` 和 `→` 以調整,按 `r` 以重設為自動偵測的預設值,按 `Enter` 以儲存。該命令寫入與 `CLAUDE_CODE_SCROLL_SPEED` 環境變數設定相同的值,持久化到 `~/.claude/settings.json`。該命令在 JetBrains IDE 終端中不可用。109若要以互動方式調整捲動速度,請執行 `/scroll-speed`。對話框顯示一個尺標,您可以在其開啟時捲動,以便您可以立即感受到變化。按 `←` 和 `→` 以調整,按 `r` 以重設為自動偵測的預設值,按 `Enter` 以儲存。該命令寫入與 `CLAUDE_CODE_SCROLL_SPEED` 環境變數設定相同的值,持久化到 `~/.claude/settings.json`。該命令在 JetBrains IDE 終端中不可用。

97 110 

98### JetBrains IDE 終端中的捲動111<h3 id="scroll-in-the-jetbrains-ide-terminal">

112 JetBrains IDE 終端中的捲動

113</h3>

99 114 

100在 JetBrains IDE 終端中,Claude Code 應用其自己的捲動處理並忽略 `CLAUDE_CODE_SCROLL_SPEED`。終端以比其他模擬器高得多的速率傳送捲動事件,因此在其他地方調整的乘數會在此處超出。115在 JetBrains IDE 終端中,Claude Code 應用其自己的捲動處理並忽略 `CLAUDE_CODE_SCROLL_SPEED`。終端以比其他模擬器高得多的速率傳送捲動事件,因此在其他地方調整的乘數會在此處超出。

101 116 

102在 2025.2 中,終端也有捲動滾輪錯誤,會產生虛假的方向鍵和錯誤方向的事件。Claude Code 在執行時偵測這些錯誤並自動減輕它們,因此觸控板和滑鼠滾輪捲動無需設定即可運作。為了獲得最佳捲動體驗,請升級到 2025.3 或更新版本。如果 Claude Code 偵測到該錯誤,它會在您第一次捲動時顯示提示。117在 2025.2 中,終端也有捲動滾輪錯誤,會產生虛假的方向鍵和錯誤方向的事件。Claude Code 在執行時偵測這些錯誤並自動減輕它們,因此觸控板和滑鼠滾輪捲動無需設定即可運作。為了獲得最佳捲動體驗,請升級到 2025.3 或更新版本。如果 Claude Code 偵測到該錯誤,它會在您第一次捲動時顯示提示。

103 118 

104## 搜尋和檢閱對話119<h2 id="search-and-review-the-conversation">

120 搜尋和檢閱對話

121</h2>

105 122 

106`Ctrl+o` 在正常提示和文字記錄模式之間切換。若要取得更安靜的檢視,只顯示您的最後一個提示、工具呼叫的單行摘要(含編輯 diffstats)和最終回應,請執行 `/focus`。該設定在工作階段之間保持。再次執行 `/focus` 以關閉它。123`Ctrl+o` 在正常提示和文字記錄模式之間切換。若要取得更安靜的檢視,只顯示您的最後一個提示、工具呼叫的單行摘要(含編輯 diffstats)和最終回應,請執行 `/focus`。該設定在工作階段之間保持。再次執行 `/focus` 以關閉它。

107 124 


124 141 

125按 `Esc` 或 `q` 返回提示。142按 `Esc` 或 `q` 返回提示。

126 143 

127## 清除對話144<h2 id="clear-the-conversation">

145 清除對話

146</h2>

128 147 

129在兩秒內按 `Ctrl+L` 兩次以執行 `/clear` 並開始新對話。第一次按下會重新繪製螢幕並顯示提示;第二次按下會清除對話。在 macOS 上,雙擊 `Cmd+K` 也會執行 `/clear`。148在兩秒內按 `Ctrl+L` 兩次以執行 `/clear` 並開始新對話。第一次按下會重新繪製螢幕並顯示提示;第二次按下會清除對話。在 macOS 上,雙擊 `Cmd+K` 也會執行 `/clear`。

130 149 

131## 與 tmux 搭配使用150<h2 id="use-with-tmux">

151 與 tmux 搭配使用

152</h2>

132 153 

133全螢幕渲染在 tmux 內運作,有三個注意事項。154全螢幕渲染在 tmux 內運作,有三個注意事項。

134 155 


144 165 

145tmux 不支援同步輸出,因此在重繪期間您可能會看到比直接在終端中執行 Claude Code 時更多的閃爍。如果閃爍明顯,特別是在 SSH 上,請在 tmux 外的自己的終端標籤中執行 Claude Code。166tmux 不支援同步輸出,因此在重繪期間您可能會看到比直接在終端中執行 Claude Code 時更多的閃爍。如果閃爍明顯,特別是在 SSH 上,請在 tmux 外的自己的終端標籤中執行 Claude Code。

146 167 

147## 保持原生文字選擇168<h2 id="keep-native-text-selection">

169 保持原生文字選擇

170</h2>

148 171 

149滑鼠捕捉是最常見的摩擦點,特別是在 SSH 上或 tmux 內。當 Claude Code 捕捉滑鼠事件時,您的終端的原生選擇時複製停止運作。您使用點擊並拖曳進行的選擇存在於 Claude Code 內,而不是在您的終端的選擇緩衝區中,因此 tmux 複製模式、Kitty 提示和類似工具看不到它。172滑鼠捕捉是最常見的摩擦點,特別是在 SSH 上或 tmux 內。當 Claude Code 捕捉滑鼠事件時,您的終端的原生選擇時複製停止運作。您使用點擊並拖曳進行的選擇存在於 Claude Code 內,而不是在您的終端的選擇緩衝區中,因此 tmux 複製模式、Kitty 提示和類似工具看不到它。

150 173 


160 183 

161禁用滑鼠捕捉後,使用 `PgUp`、`PgDn`、`Ctrl+Home` 和 `Ctrl+End` 的鍵盤捲動仍然運作,您的終端原生處理選擇。您會失去點擊定位游標、點擊展開工具輸出、URL 點擊和 Claude Code 內的滾輪捲動。184禁用滑鼠捕捉後,使用 `PgUp`、`PgDn`、`Ctrl+Home` 和 `Ctrl+End` 的鍵盤捲動仍然運作,您的終端原生處理選擇。您會失去點擊定位游標、點擊展開工具輸出、URL 點擊和 Claude Code 內的滾輪捲動。

162 185 

163## 研究預覽186<h2 id="research-preview">

187 研究預覽

188</h2>

164 189 

165全螢幕渲染是一個研究預覽功能。它已在常見終端模擬器上進行測試,但您可能會在不太常見的終端或不尋常的設定上遇到渲染問題。190全螢幕渲染是一個研究預覽功能。它已在常見終端模擬器上進行測試,但您可能會在不太常見的終端或不尋常的設定上遇到渲染問題。

166 191 

167如果您遇到問題,請在 Claude Code 內執行 `/feedback` 以報告它,或在 [claude-code GitHub 儲存庫](https://github.com/anthropics/claude-code/issues)上開啟問題。包括您的終端模擬器名稱和版本。192如果您遇到問題,請在 Claude Code 內執行 `/feedback` 以報告它,或在 [claude-code GitHub 儲存庫](https://github.com/anthropics/claude-code/issues)上開啟問題。包括您的終端模擬器名稱和版本。

168 193 

169若要關閉全螢幕渲染,請執行 `/tui default`,或如果您以該方式啟用它,請取消設定 `CLAUDE_CODE_NO_FLICKER`。若要不論已儲存的 `tui` 設定為何都強制使用經典渲染器,請設定 `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1`。經典渲染器將對話保留在您終端的原生捲軸中,因此 `Cmd+f` 和 tmux 複製模式可以照常運作。194若要關閉全螢幕渲染,請執行 `/tui default`,或如果您以該方式啟用它,請取消設定 `CLAUDE_CODE_NO_FLICKER`。若要不論已儲存的 `tui` 設定為何都強制使用經典渲染器,請設定 `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1`。經典渲染器將對話保留在您終端的原生捲軸中,因此 `Cmd+f` 和 tmux 複製模式可以照常運作。

195 

196從 [agent view](/zh-TW/agent-view) 或 `claude attach` 開啟的背景工作階段始終使用全螢幕渲染。附加終端進入替代螢幕緩衝區以顯示工作階段,經典渲染器在那裡沒有捲軸或滑鼠處理,因此 `tui` 設定和 `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` 不適用於它們。

Details

13</Note>13</Note>

14 14 

15<Info>15<Info>

16 **Claude Opus 4.7 現已推出。** Claude Code GitHub Actions 預設使用 Sonnet。若要使用 Opus 4.7,請設定 [model 參數](#breaking-changes-reference)以使用 `claude-opus-4-7`。16 **Claude Opus 4.8 現已推出。** Claude Code GitHub Actions 預設使用 Sonnet。若要使用 Opus 4.8,請設定 [model 參數](#breaking-changes-reference)以使用 `claude-opus-4-8`。

17</Info>17</Info>

18 18 

19## 為什麼使用 Claude Code GitHub Actions?19## 為什麼使用 Claude Code GitHub Actions?

github-enterprise-server.md +221 −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 與 GitHub Enterprise Server

6 

7> 將 Claude Code 連接到您自託管的 GitHub Enterprise Server 實例,以進行網頁會話、代碼審查和插件市場。

8 

9<Note>

10 GitHub Enterprise Server 支持適用於 Team 和 Enterprise 計劃。

11</Note>

12 

13GitHub Enterprise Server (GHES) 支持讓您的組織使用 Claude Code 與託管在自管理 GitHub 實例上的存儲庫,而不是 github.com。一旦管理員連接您的 GHES 實例,開發人員可以運行網頁會話、獲得自動化代碼審查,並從內部市場安裝插件,無需任何按存儲庫的配置。

14 

15對於 github.com 上的存儲庫,請參閱 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 和 [Code Review](/zh-TW/code-review)。要在您自己的 CI 基礎設施中運行 Claude,請參閱 [GitHub Actions](/zh-TW/github-actions)。

16 

17<h2 id="what-works-with-github-enterprise-server">

18 GitHub Enterprise Server 支持的功能

19</h2>

20 

21下表顯示了 Claude Code 的哪些功能支持 GHES,以及與 github.com 行為的任何差異。

22 

23| 功能 | GHES 支持 | 備註 |

24| :--------------------- | :------ | :--------------------------------------------------------------------------------------- |

25| Claude Code on the web | ✅ 支持 | 管理員連接 GHES 實例一次;開發人員像往常一樣使用 `claude --remote` 或 [claude.ai/code](https://claude.ai/code) |

26| Code Review | ✅ 支持 | 與 github.com 相同的自動化 PR 審查 |

27| Claude Security | ✅ 支持 | 在 Enterprise 計劃的公開測試版中提供,位於 [claude.ai/security](https://claude.ai/security) |

28| Teleport sessions | ✅ 支持 | 使用 `--teleport` 在網頁和終端之間移動會話 |

29| Plugin marketplaces | ✅ 支持 | 使用完整的 git URL 而不是 `owner/repo` 簡寫 |

30| Contribution metrics | ✅ 支持 | 通過 webhooks 傳遞到 [analytics dashboard](/zh-TW/analytics) |

31| GitHub Actions | ✅ 支持 | 需要手動工作流設置;`/install-github-app` 僅適用於 github.com |

32| GitHub MCP server | ❌ 不支持 | GitHub MCP server 不適用於 GHES 實例 |

33 

34<h2 id="admin-setup">

35 管理員設置

36</h2>

37 

38管理員將您的 GHES 實例連接到 Claude Code 一次。之後,您組織中的開發人員可以使用 GHES 存儲庫,無需任何額外配置。您需要對 Claude 組織具有管理員訪問權限,以及在 GHES 實例上創建 GitHub Apps 的權限。

39 

40引導式設置生成 GitHub App 清單,並將您重定向到 GHES 實例以一鍵創建應用。如果您的環境阻止重定向流,可以使用 [替代手動設置](#manual-setup)。

41 

42<Steps>

43 <Step title="打開 Claude Code 管理員設置">

44 轉到 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 並找到 GitHub Enterprise Server 部分。

45 </Step>

46 

47 <Step title="開始引導式設置">

48 點擊 **Connect**。輸入連接的顯示名稱和您的 GHES 主機名,例如 `github.example.com`。如果您的 GHES 實例使用自簽名或私有證書頒發機構,請將 CA 證書粘貼到可選字段中。

49 </Step>

50 

51 <Step title="創建 GitHub App">

52 點擊 **Continue to GitHub Enterprise**。您的瀏覽器重定向到您的 GHES 實例,並預填充應用清單。檢查配置並點擊 **Create GitHub App**。GHES 將您重定向回 Claude,應用憑據自動存儲。

53 </Step>

54 

55 <Step title="在您的存儲庫上安裝應用">

56 從 GHES 實例上的 GitHub App 頁面,在您希望 Claude 訪問的存儲庫或組織上安裝應用。您可以從一個子集開始,稍後添加更多。

57 </Step>

58 

59 <Step title="啟用功能">

60 返回 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 並為您的 GHES 存儲庫啟用 [Code Review](/zh-TW/code-review#set-up-code-review)、Claude Security 和 [contribution metrics](/zh-TW/analytics#enable-contribution-metrics),使用與 github.com 相同的配置。

61 </Step>

62</Steps>

63 

64<h3 id="github-app-permissions">

65 GitHub App 權限

66</h3>

67 

68清單使用 Claude 在網頁會話、Code Review、Claude Security 和 contribution metrics 中需要的權限和 webhook 事件配置 GitHub App:

69 

70| 權限 | 訪問 | 用途 |

71| :--------------- | :- | :--------------------------------- |

72| Contents | 讀寫 | 克隆存儲庫和推送分支 |

73| Pull requests | 讀寫 | 創建 PR 和發佈審查評論 |

74| Issues | 讀寫 | 響應問題提及 |

75| Checks | 讀寫 | 發佈 Code Review 檢查運行 |

76| Actions | 讀 | 讀取 CI 狀態以進行自動修復 |

77| Repository hooks | 讀寫 | 接收 contribution metrics 的 webhooks |

78| Metadata | 讀 | GitHub 對所有應用都需要 |

79 

80應用訂閱 `pull_request`、`issue_comment`、`pull_request_review_comment`、`pull_request_review` 和 `check_run` 事件。

81 

82<h3 id="manual-setup">

83 手動設置

84</h3>

85 

86如果引導式重定向流被您的網絡配置阻止,請點擊 **Add manually** 而不是 Connect。在您的 GHES 實例上使用 [上述權限和事件](#github-app-permissions) 創建 GitHub App,然後在表單中輸入應用憑據:主機名、OAuth 客戶端 ID 和密鑰、GitHub App ID、客戶端 ID、客戶端密鑰、webhook 密鑰和私鑰。

87 

88<h3 id="network-requirements">

89 網絡要求

90</h3>

91 

92您的 GHES 實例必須可從 Anthropic 基礎設施訪問,以便 Claude 可以克隆存儲庫並發佈審查評論。如果您的 GHES 實例在防火牆後面,請將 [Anthropic API IP 地址](https://platform.claude.com/docs/en/api/ip-addresses) 列入白名單。

93 

94<h2 id="developer-workflow">

95 開發人員工作流

96</h2>

97 

98一旦您的管理員連接了 GHES 實例,就不需要開發人員端的配置。Claude Code 從您工作目錄中的 git 遠程自動檢測您的 GHES 主機名。

99 

100像往常一樣從您的 GHES 實例克隆存儲庫:

101 

102```bash theme={null}

103git clone git@github.example.com:platform/api-service.git

104cd api-service

105```

106 

107然後開始網頁會話。Claude 從您的 git 遠程檢測 GHES 主機,並通過您組織的配置實例路由會話:

108 

109```bash theme={null}

110claude --remote "Add retry logic to the payment webhook handler"

111```

112 

113會話在 Anthropic 基礎設施上運行,從 GHES 克隆您的存儲庫,並將更改推送回分支。使用 `/tasks` 或在 [claude.ai/code](https://claude.ai/code) 監控進度。有關完整的遠程會話工作流(包括 diff 審查、自動修復和例程),請參閱 [Claude Code on the web](/zh-TW/claude-code-on-the-web)。

114 

115<h3 id="teleport-sessions-to-your-terminal">

116 Teleport 會話到您的終端

117</h3>

118 

119使用 `claude --teleport` 將網頁會話拉入您的本地終端。Teleport 在獲取分支和加載會話歷史之前驗證您在同一 GHES 存儲庫的簽出中。有關詳細信息,請參閱 [teleport 要求](/zh-TW/claude-code-on-the-web#teleport-requirements)。

120 

121<h2 id="plugin-marketplaces-on-ghes">

122 GHES 上的插件市場

123</h2>

124 

125在您的 GHES 實例上託管插件市場,以在您的組織中分發內部工具。市場結構與 github.com 託管的市場相同;唯一的區別是您如何引用它們。

126 

127<h3 id="add-a-ghes-marketplace">

128 添加 GHES 市場

129</h3>

130 

131`owner/repo` 簡寫始終解析為 github.com。對於 GHES 託管的市場,使用完整的 git URL:

132 

133```bash theme={null}

134/plugin marketplace add git@github.example.com:platform/claude-plugins.git

135```

136 

137HTTPS URL 也可以工作:

138 

139```bash theme={null}

140/plugin marketplace add https://github.example.com/platform/claude-plugins.git

141```

142 

143有關構建市場的完整指南,請參閱 [Create and distribute a plugin marketplace](/zh-TW/plugin-marketplaces)。

144 

145<h3 id="allowlist-ghes-marketplaces-in-managed-settings">

146 在託管設置中將 GHES 市場列入白名單

147</h3>

148 

149如果您的組織使用 [託管設置](/zh-TW/settings) 來限制開發人員可以添加的市場,請使用 `hostPattern` 源類型來允許來自您的 GHES 實例的所有市場,而無需列舉每個存儲庫:

150 

151```json theme={null}

152{

153 "strictKnownMarketplaces": [

154 {

155 "source": "hostPattern",

156 "hostPattern": "^github\\.example\\.com$"

157 }

158 ]

159}

160```

161 

162您也可以為開發人員預先註冊市場,以便它們無需手動設置即可顯示。此示例使內部工具市場在整個組織中可用:

163 

164```json theme={null}

165{

166 "extraKnownMarketplaces": {

167 "internal-tools": {

168 "source": {

169 "source": "git",

170 "url": "git@github.example.com:platform/claude-plugins.git"

171 }

172 }

173 }

174}

175```

176 

177有關完整的架構,請參閱 [strictKnownMarketplaces](/zh-TW/settings#strictknownmarketplaces) 和 [extraKnownMarketplaces](/zh-TW/settings#extraknownmarketplaces) 設置參考。

178 

179<h2 id="limitations">

180 限制

181</h2>

182 

183一些功能在 GHES 上的行為與 github.com 上不同。[功能表](#what-works-with-github-enterprise-server) 總結了支持;本部分涵蓋了解決方案。

184 

185* **`/install-github-app` 命令**:改為遵循 claude.ai 上的 [管理員設置](#admin-setup) 流程。如果您還想在 GHES 上使用 GitHub Actions 工作流,請手動調整 [示例工作流](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml)。

186* **GitHub MCP server**:改為使用為您的 GHES 主機配置的 `gh` CLI。運行 `gh auth login --hostname github.example.com` 進行身份驗證,然後 Claude 可以在會話中使用 `gh` 命令。

187 

188<h2 id="troubleshooting">

189 故障排除

190</h2>

191 

192<h3 id="web-session-fails-to-clone-repository">

193 網頁會話無法克隆存儲庫

194</h3>

195 

196如果 `claude --remote` 因克隆錯誤而失敗,請驗證您的管理員已完成 GHES 實例的設置,並且 GitHub App 已安裝在您正在使用的存儲庫上。與您的管理員確認在 Claude 設置中註冊的實例主機名與您的 git 遠程中的主機名匹配。

197 

198<h3 id="marketplace-add-fails-with-a-policy-error">

199 市場添加因策略錯誤而失敗

200</h3>

201 

202如果 `/plugin marketplace add` 因您的 GHES URL 而被阻止,您的組織已限制市場源。要求您的管理員在 [託管設置](#allowlist-ghes-marketplaces-in-managed-settings) 中為您的 GHES 主機名添加 `hostPattern` 條目。

203 

204<h3 id="ghes-instance-not-reachable">

205 GHES 實例無法訪問

206</h3>

207 

208如果審查或網頁會話超時,您的 GHES 實例可能無法從 Anthropic 基礎設施訪問。確認您的防火牆允許來自 [Anthropic API IP 地址](https://platform.claude.com/docs/en/api/ip-addresses) 的入站連接。

209 

210<h2 id="related-resources">

211 相關資源

212</h2>

213 

214這些頁面更深入地涵蓋了本指南中引用的功能:

215 

216* [Claude Code on the web](/zh-TW/claude-code-on-the-web):在雲基礎設施上運行 Claude Code 會話

217* [Code Review](/zh-TW/code-review):自動化 PR 審查

218* [Plugin marketplaces](/zh-TW/plugin-marketplaces):構建和分發插件目錄

219* [Analytics](/zh-TW/analytics):跟踪使用情況和貢獻指標

220* [Managed settings](/zh-TW/settings):組織範圍的策略配置

221* [Network configuration](/zh-TW/network-config):防火牆和 IP 白名單要求

glossary.md +193 −67

Details

6 6 

7> Claude Code 術語定義。了解 agentic loop、compaction、CLAUDE.md、hooks、subagents、MCP 和其他核心概念的含義。7> Claude Code 術語定義。了解 agentic loop、compaction、CLAUDE.md、hooks、subagents、MCP 和其他核心概念的含義。

8 8 

9本詞彙表定義 Claude Code 術語。每個條目都連結到深入涵蓋該概念的頁面。對於 tokens、temperature 和 RAG 等模型級概念,請參閱[平台詞彙表](https://platform.claude.com/docs/en/about-claude/glossary)。9本詞彙表定義 Claude Code 術語。每個條目都連結到深入涵蓋該概念的頁面。對於 tokens、temperature 和 RAG 等模型級概念,請參閱[平台詞彙表](https://platform.claude.com/docs/zh-TW/about-claude/glossary)。

10 10 

11## A11<h2 id="a">

12 A

13</h2>

12 14 

13### Agent teams15<h3 id="agent-teams">

16 Agent teams

17</h3>

14 18 

15由團隊主導協調的多個獨立 Claude Code 會話,具有共享的任務列表和點對點訊息傳遞。與在單個會話內運行且僅向父級報告的 [subagents](#subagent) 不同,隊友各自擁有自己的上下文視窗,您可以直接與任何隊友互動。Agent teams 是實驗性的,必須通過設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 來啟用。19由團隊主導協調的多個獨立 Claude Code 會話,具有共享的任務列表和點對點訊息傳遞。與在單個會話內運行且僅向父級報告的 [subagents](#subagent) 不同,隊友各自擁有自己的上下文視窗,您可以直接與任何隊友互動。Agent teams 是實驗性的,必須通過設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 來啟用。

16 20 

17了解更多:[Run agent teams](/zh-TW/agent-teams)21了解更多:[Run agent teams](/zh-TW/agent-teams)

18 22 

19### Agentic coding23<h3 id="agentic-coding">

24 Agentic coding

25</h3>

20 26 

21一種工作流程,其中 AI 可以自主地讀取檔案、執行命令和進行更改,而您可以觀看、重定向或離開,與只能用文字回應的聊天助手相反,您必須自己應用這些文字。Claude Code 是 agentic 的,因為它具有讓它採取行動的 [tools](#tool),而不僅僅是提供建議。27一種工作流程,其中 AI 可以自主地讀取檔案、執行命令和進行更改,而您可以觀看、重定向或離開,與只能用文字回應的聊天助手相反,您必須自己應用這些文字。Claude Code 是 agentic 的,因為它具有讓它採取行動的 [tools](#tool),而不僅僅是提供建議。

22 28 

23了解更多:[How Claude Code works](/zh-TW/how-claude-code-works)29了解更多:[How Claude Code works](/zh-TW/how-claude-code-works)

24 30 

25### Agentic harness31<h3 id="agentic-harness">

32 Agentic harness

33</h3>

26 34 

27將語言模型轉變為能力強大的編碼代理的工具、上下文管理和執行環境。Claude Code 是 harness;Claude 是其中的模型。Harness 提供檔案存取、shell 執行、權限控制、記憶體載入以及將動作鏈接在一起的迴圈。35將語言模型轉變為能力強大的編碼代理的工具、上下文管理和執行環境。Claude Code 是 harness;Claude 是其中的模型。Harness 提供檔案存取、shell 執行、權限控制、記憶體載入以及將動作鏈接在一起的迴圈。

28 36 

29了解更多:[How Claude Code works](/zh-TW/how-claude-code-works)37了解更多:[How Claude Code works](/zh-TW/how-claude-code-works)

30 38 

31### Agentic loop39<h3 id="agentic-loop">

40 Agentic loop

41</h3>

32 42 

33Claude 為每項任務執行的循環:收集上下文、採取行動、驗證結果並重複直到完成。每個工具使用都會返回資訊,為下一步提供資訊。您可以隨時中斷迴圈進行重定向。大多數擴展點,包括 [hooks](#hook)、[skills](#skill) 和 [MCP](#mcp-model-context-protocol),都插入到此迴圈的特定階段。43Claude 為每項任務執行的循環:收集上下文、採取行動、驗證結果並重複直到完成。每個工具使用都會返回資訊,為下一步提供資訊。您可以隨時中斷迴圈進行重定向。大多數擴展點,包括 [hooks](#hook)、[skills](#skill) 和 [MCP](#mcp-model-context-protocol),都插入到此迴圈的特定階段。

34 44 

35了解更多:[How Claude Code works](/zh-TW/how-claude-code-works#the-agentic-loop)45了解更多:[How Claude Code works](/zh-TW/how-claude-code-works#the-agentic-loop)

36 46 

37### Auto memory47<h3 id="auto-memory">

48 Auto memory

49</h3>

38 50 

39Claude 根據您的更正和偏好為自己編寫的筆記,按 git 儲存庫存儲在 `~/.claude/projects/` 下。同一儲存庫的所有 worktrees 共享一個 auto memory 目錄。`MEMORY.md` 索引的前 200 行或 25 KB 在每個會話開始時載入。Auto memory 是 Claude 編寫的對應物,與您編寫的 [CLAUDE.md](#claude-md) 相對。51Claude 根據您的更正和偏好為自己編寫的筆記,按 git 儲存庫存儲在 `~/.claude/projects/` 下。同一儲存庫的所有 worktrees 共享一個 auto memory 目錄。`MEMORY.md` 索引的前 200 行或 25 KB 在每個會話開始時載入。Auto memory 是 Claude 編寫的對應物,與您編寫的 [CLAUDE.md](#claude-md) 相對。

40 52 

41了解更多:[Auto memory](/zh-TW/memory#auto-memory)53了解更多:[Auto memory](/zh-TW/memory#auto-memory)

42 54 

43### Auto mode55<h3 id="auto-mode">

56 Auto mode

57</h3>

44 58 

45一種 [permission mode](#permission-mode),其中單獨的分類器模型在後台審查每個動作,而不是向您顯示批准提示。分類器會阻止範圍升級、不受信任的基礎設施和 [prompt injection](#prompt-injection)。它永遠看不到工具結果,因此注入的指令無法影響其決定。Auto mode 是在 Max、Team、Enterprise 和 API 計畫上提供的研究預覽59一種 [permission mode](#permission-mode),其中單獨的分類器模型在後台審查每個動作,而不是向您顯示批准提示。分類器會阻止範圍升級、不受信任的基礎設施和 [prompt injection](#prompt-injection)。它永遠看不到工具結果,因此注入的指令無法影響其決定。Auto mode 是研究預覽

46 60 

47了解更多:[Eliminate prompts with auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)61了解更多:[Eliminate prompts with auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)

48 62 

49## B63<h2 id="b">

64 B

65</h2>

50 66 

51### Bare mode67<h3 id="bare-mode">

68 Bare mode

69</h3>

52 70 

53一個啟動標誌 `--bare`,它跳過 hooks、skills、plugins、MCP servers、auto memory 和 CLAUDE.md 的自動發現。只有您明確傳遞的標誌才會生效。建議用於 CI 和指令碼呼叫,其中您需要在不同機器上的相同行為,無論本地配置如何。71一個啟動標誌 `--bare`,它跳過 hooks、skills、plugins、MCP servers、auto memory 和 CLAUDE.md 的自動發現。只有您明確傳遞的標誌才會生效。建議用於 CI 和指令碼呼叫,其中您需要在不同機器上的相同行為,無論本地配置如何。

54 72 

55了解更多:[Start faster with bare mode](/zh-TW/headless#start-faster-with-bare-mode)73了解更多:[使用 bare mode 更快啟動](/zh-TW/headless#start-faster-with-bare-mode)

56 74 

57### Bundled skills75<h3 id="bundled-skills">

76 Bundled skills

77</h3>

58 78 

59Claude Code 附帶的基於提示的劇本,例如 `/batch`、`/simplify`、`/debug` 和 `/loop`。與執行固定邏輯的內建命令不同,bundled skills 為 Claude 提供詳細的提示並讓它協調工作,因此它們可以生成代理、讀取檔案並適應您的程式碼庫。79Claude Code 附帶的基於提示的劇本,例如 `/batch`、`/code-review`、`/debug` 和 `/loop`。與執行固定邏輯的內建命令不同,bundled skills 為 Claude 提供詳細的提示並讓它協調工作,因此它們可以生成代理、讀取檔案並適應您的程式碼庫。

60 80 

61了解更多:[Bundled skills](/zh-TW/skills#bundled-skills)81了解更多:[Bundled skills](/zh-TW/skills#bundled-skills)

62 82 

63## C83<h2 id="c">

84 C

85</h2>

64 86 

65### Channel87<h3 id="channel">

88 Channel

89</h3>

66 90 

67一個 [MCP server](#mcp-model-context-protocol),它將事件推送到您正在運行的會話中,以便 Claude 可以對您離開終端時發生的事情做出反應。Channels 可以是雙向的:Claude 讀取入站事件並通過同一 channel 回覆。Telegram、Discord 和 iMessage 包含在研究預覽中。91一個 [MCP server](#mcp-model-context-protocol),它將事件推送到您正在運行的會話中,以便 Claude 可以對您離開終端時發生的事情做出反應。Channels 可以是雙向的:Claude 讀取入站事件並通過同一 channel 回覆。Telegram、Discord 和 iMessage 包含在研究預覽中。

68 92 

69了解更多:[Channels](/zh-TW/channels)93了解更多:[Channels](/zh-TW/channels)

70 94 

71### Checkpoint95<h3 id="checkpoint">

96 Checkpoint

97</h3>

72 98 

73在每個您發送的提示處建立的還原點。Claude Code 在每次編輯之前對檔案進行快照,以便 checkpoint 可以還原它們。按 `Esc` 兩次或執行 `/rewind` 以將程式碼、對話或兩者還原到較早的時間點,或從選定的訊息摘要對話的一部分。Checkpoints 是會話本地的,與 git 分開,不追蹤通過 Bash 工具進行的更改。99在每個您發送的提示處建立的還原點。Claude Code 在每次編輯之前對檔案進行快照,以便 checkpoint 可以還原它們。按 `Esc` 兩次或執行 `/rewind` 以將程式碼、對話或兩者還原到較早的時間點,或從選定的訊息摘要對話的一部分。Checkpoints 是會話本地的,與 git 分開,不追蹤通過 Bash 工具進行的更改。

74 100 

75了解更多:[Checkpointing](/zh-TW/checkpointing)101了解更多:[Checkpointing](/zh-TW/checkpointing)

76 102 

77### `.claude` directory103<h3 id="claude-directory">

104 `.claude` directory

105</h3>

78 106 

79Claude Code 讀取專案範圍配置的目錄:設定、hooks、skills、subagents、rules 和 auto memory。專案在其根目錄有 `.claude/`;您的使用者級預設值在 `~/.claude/`。107Claude Code 讀取專案範圍配置的目錄:設定、hooks、skills、subagents、rules 和 auto memory。專案在其根目錄有 `.claude/`;您的使用者級預設值在 `~/.claude/`。

80 108 

81了解更多:[The `.claude` directory](/zh-TW/claude-directory)109了解更多:[The `.claude` directory](/zh-TW/claude-directory)

82 110 

83### CLAUDE.md111<h3 id="claude-md">

112 CLAUDE.md

113</h3>

84 114 

85您為 Claude 編寫的持久指令的 markdown 檔案,在每個會話開始時作為系統提示後的使用者訊息載入。將專案約定、架構筆記和「始終執行 X」規則放在這裡。CLAUDE.md 在 [compaction](#compaction) 期間倖存,之後會從磁碟重新讀取。115您為 Claude 編寫的持久指令的 markdown 檔案,在每個會話開始時作為系統提示後的使用者訊息載入。將專案約定、架構筆記和「始終執行 X」規則放在這裡。專案根目錄 CLAUDE.md 在 [compaction](#compaction) 期間倖存,之後會從磁碟重新讀取。

86 116 

87您可以在專案範圍內的 `./CLAUDE.md` 或 `./.claude/CLAUDE.md`、使用者範圍內的 `~/.claude/CLAUDE.md` 或作為組織的 [managed policy](#managed-settings) 放置 CLAUDE.md。更具體的位置優先117您可以在專案範圍內的 `./CLAUDE.md` 或 `./.claude/CLAUDE.md`、使用者範圍內的 `~/.claude/CLAUDE.md` 或作為組織的 [managed policy](#managed-settings) 放置 CLAUDE.md。所有發現的檔案都會連接到上下文中,而不是相互覆蓋,順序從最廣泛的範圍到最具體的範圍

88 118 

89了解更多:[CLAUDE.md files](/zh-TW/memory#claude-md-files)119了解更多:[CLAUDE.md files](/zh-TW/memory#claude-md-files)

90 120 

91### Command121<h3 id="command">

122 Command

123</h3>

92 124 

93一個可重複使用的指令,您可以通過在提示中輸入 `/name` 來調用。內建命令(如 `/clear`、`/model` 和 `/compact`)控制會話。您可以在 `.claude/commands/` 中將自己的命令定義為檔案,或從 [plugin](#plugin) 安裝它們。[Skills](#skill) 是打包多步驟命令的推薦方式。125一個可重複使用的指令,您可以通過在提示中輸入 `/name` 來調用。內建命令(如 `/clear`、`/model` 和 `/compact`)控制會話。您可以在 `.claude/commands/` 中將自己的命令定義為檔案,或從 [plugin](#plugin) 安裝它們。[Skills](#skill) 是打包多步驟命令的推薦方式。

94 126 

95了解更多:[Commands](/zh-TW/commands) · [Skills](/zh-TW/skills)127了解更多:[Commands](/zh-TW/commands) · [Skills](/zh-TW/skills)

96 128 

97### Compaction129<h3 id="compaction">

130 Compaction

131</h3>

98 132 

99當 [context window](#context-window) 接近其限制時,自動摘要您的對話。首先清除較舊的工具輸出,然後摘要對話。專案根目錄 CLAUDE.md 和 auto memory 在 compaction 期間倖存並從磁碟重新載入;僅在對話中給出的指令可能會丟失。執行 `/compact` 手動觸發,可選擇使用焦點,如 `/compact focus on the API changes`。133當 [context window](#context-window) 接近其限制時,自動摘要您的對話。首先清除較舊的工具輸出,然後摘要對話。專案根目錄 CLAUDE.md 和 auto memory 在 compaction 期間倖存並從磁碟重新載入;僅在對話中給出的指令可能會丟失。執行 `/compact` 手動觸發,可選擇使用焦點,如 `/compact focus on the API changes`。

100 134 

101了解更多:[What survives compaction](/zh-TW/context-window#what-survives-compaction) · [When context fills up](/zh-TW/how-claude-code-works#when-context-fills-up)135了解更多:[What survives compaction](/zh-TW/context-window#what-survives-compaction) · [When context fills up](/zh-TW/how-claude-code-works#when-context-fills-up)

102 136 

103### Context window137<h3 id="context-window">

138 Context window

139</h3>

104 140 

105會話的工作記憶,保存對話歷史、檔案內容、命令輸出、CLAUDE.md、auto memory、載入的 skills 和系統指令。當您工作時,上下文會填滿直到 [compaction](#compaction) 摘要它。執行 `/context` 查看什麼在使用空間。對於基礎模型概念,請參閱[平台詞彙表](https://platform.claude.com/docs/en/about-claude/glossary#context-window)。141會話的工作記憶,保存對話歷史、檔案內容、命令輸出、CLAUDE.md、auto memory、載入的 skills 和系統指令。當您工作時,上下文會填滿直到 [compaction](#compaction) 摘要它。執行 `/context` 查看什麼在使用空間。對於基礎模型概念,請參閱[平台詞彙表](https://platform.claude.com/docs/zh-TW/about-claude/glossary#context-window)。

106 142 

107了解更多:[Explore the context window](/zh-TW/context-window)143了解更多:[Explore the context window](/zh-TW/context-window)

108 144 

109## D145<h2 id="d">

146 D

147</h2>

110 148 

111### Dispatch149<h3 id="dispatch">

150 Dispatch

151</h3>

112 152 

113一個電話啟動的任務路由器,當您從 Claude 行動應用程式發送編碼任務時,它會在 Desktop 應用程式中生成 Claude Code 會話。您的提示會自動路由到正確的工具。在 Pro 和 Max 計畫上可用。153一個電話啟動的任務路由器,當您從 Claude 行動應用程式發送編碼任務時,它會在 Desktop 應用程式中生成 Claude Code 會話。您的提示會自動路由到正確的工具。在 Pro 和 Max 計畫上可用。

114 154 

115了解更多:[Sessions from Dispatch](/zh-TW/desktop#sessions-from-dispatch)155了解更多:[Sessions from Dispatch](/zh-TW/desktop#sessions-from-dispatch)

116 156 

117## E157<h2 id="e">

158 E

159</h2>

118 160 

119### Effort level161<h3 id="effort-level">

162 Effort level

163</h3>

120 164 

121一個設定,控制 Claude 在每個回合上使用多少自適應推理思考預算。更高的努力意味著更多的思考 tokens 和更深入的推理;更低的努力更快且更便宜。Effort 在 Opus 4.7、Opus 4.6 Sonnet 4.6 上受支援。165一個設定,控制 Claude 在每個回合上使用多少自適應推理思考預算。更高的努力意味著更多的思考 tokens 和更深入的推理;更低的努力更快且更便宜。Effort 在 Opus 4.6 及更新版本和 Sonnet 4.6 上受支援。

122 166 

123了解更多:[Adjust effort level](/zh-TW/model-config#adjust-effort-level)167了解更多:[Adjust effort level](/zh-TW/model-config#adjust-effort-level)

124 168 

125### Extended thinking169<h3 id="extended-thinking">

170 Extended thinking

171</h3>

126 172 

127模型在回應前執行的可見逐步推理。您可以使用 `MAX_THINKING_TOKENS` 限制思考 tokens 或調整 [effort level](#effort-level)。思考在終端中以灰色斜體文字顯示。173模型在回應前執行的可見逐步推理。您可以使用 `MAX_THINKING_TOKENS` 限制思考 tokens 或調整 [effort level](#effort-level)。思考在終端中以灰色斜體文字顯示。

128 174 

129了解更多:[Use extended thinking](/zh-TW/model-config#extended-thinking)175了解更多:[Use extended thinking](/zh-TW/model-config#extended-thinking)

130 176 

131## H177<h2 id="h">

178 H

179</h2>

132 180 

133### Hook181<h3 id="hook">

182 Hook

183</h3>

134 184 

135一個使用者定義的處理程式,在 Claude Code 生命週期中的特定點自動執行,例如在工具執行前、檔案編輯後或會話開始時。處理程式可以是 shell 命令、HTTP 端點、MCP 工具、LLM 提示或 subagent。Hooks 是確定性的:它們在固定的生命週期點觸發,而不是由模型自行決定。185一個使用者定義的處理程式,在 Claude Code 生命週期中的特定點自動執行,例如在工具執行前、檔案編輯後或會話開始時。處理程式可以是 shell 命令、HTTP 端點、MCP 工具、LLM 提示或 subagent。Hooks 是確定性的:它們在固定的生命週期點觸發,而不是由模型自行決定。

136 186 


142 192 

143了解更多:[Get started with hooks](/zh-TW/hooks-guide) · [Hooks reference](/zh-TW/hooks)193了解更多:[Get started with hooks](/zh-TW/hooks-guide) · [Hooks reference](/zh-TW/hooks)

144 194 

145## M195<h2 id="m">

196 M

197</h2>

146 198 

147### Managed settings199<h3 id="managed-settings">

200 Managed settings

201</h3>

148 202 

149由 IT 或 DevOps 在組織範圍內強制執行的設定檔案,放置在 `~/.claude` 外的 OS 級路徑。使用者無法覆蓋或排除受管設定。使用此功能可實現安全策略、合規要求或整個機隊的標準化工具。203由 IT 或 DevOps 在組織範圍內強制執行的設定檔案,放置在 `~/.claude` 外的 OS 級路徑。使用者無法覆蓋或排除受管設定。使用此功能可實現安全策略、合規要求或整個機隊的標準化工具。

150 204 

151了解更多:[Server-managed settings](/zh-TW/server-managed-settings)205了解更多:[Server-managed settings](/zh-TW/server-managed-settings)

152 206 

153### MCP (Model Context Protocol)207<h3 id="mcp-model-context-protocol">

208 MCP (Model Context Protocol)

209</h3>

154 210 

155一個開放標準,用於將 AI 工具連接到外部資料來源和服務。MCP servers 為 Claude 提供 Slack、Jira、資料庫、瀏覽器和數百個其他整合的新工具。您可以通過 `/mcp` 連接 servers 或將它們添加到 `.mcp.json`。有關協議本身,請參閱[平台詞彙表](https://platform.claude.com/docs/en/about-claude/glossary#mcp-model-context-protocol)。211一個開放標準,用於將 AI 工具連接到外部資料來源和服務。MCP servers 為 Claude 提供 Slack、Jira、資料庫、瀏覽器和數百個其他整合的新工具。您可以通過 `/mcp` 連接 servers 或將它們添加到 `.mcp.json`。有關協議本身,請參閱[平台詞彙表](https://platform.claude.com/docs/zh-TW/about-claude/glossary#mcp-model-context-protocol)。

156 212 

157了解更多:[Model Context Protocol](/zh-TW/mcp)213了解更多:[Model Context Protocol](/zh-TW/mcp)

158 214 

159### MCP Tool Search215<h3 id="mcp-tool-search">

216 MCP Tool Search

217</h3>

160 218 

161一個上下文節省機制,它延遲 MCP 工具架構直到需要時。只有工具名稱在啟動時載入;Claude 在決定使用特定工具時按需獲取完整架構。這可以防止閒置的 MCP servers 消耗太多上下文。219一個上下文節省機制,它延遲 MCP 工具架構直到需要時。只有工具名稱在啟動時載入;Claude 在決定使用特定工具時按需獲取完整架構。這可以防止閒置的 MCP servers 消耗太多上下文。

162 220 

163了解更多:[Scale with MCP Tool Search](/zh-TW/mcp#scale-with-mcp-tool-search)221了解更多:[Scale with MCP Tool Search](/zh-TW/mcp#scale-with-mcp-tool-search)

164 222 

165## N223<h2 id="n">

224 N

225</h2>

166 226 

167### Non-interactive mode227<h3 id="non-interactive-mode">

228 Non-interactive mode

229</h3>

168 230 

169一種執行單個提示並退出而不進行對話會話的模式,使用 `-p` 或 `--print` 調用。用於 CI、指令碼和管道。[Agent SDK](/zh-TW/agent-sdk/overview) 是 Python 和 TypeScript 的等效項。以前稱為 headless mode。231一種執行單個提示並退出而不進行對話會話的模式,使用 `-p` 或 `--print` 調用。用於 CI、指令碼和管道。[Agent SDK](/zh-TW/agent-sdk/overview) 是 Python 和 TypeScript 的等效項。以前稱為 headless mode。

170 232 

171了解更多:[Run Claude Code programmatically](/zh-TW/headless)233了解更多:[Run Claude Code programmatically](/zh-TW/headless)

172 234 

173## O235<h2 id="o">

236 O

237</h2>

174 238 

175### Output style239<h3 id="output-style">

240 Output style

241</h3>

176 242 

177一個配置,修改 Claude 的系統提示以改變回應行為、語氣或格式。Output styles 關閉預設系統提示的軟體工程特定部分,與 [CLAUDE.md](#claude-md) 不同,後者作為系統提示後的使用者訊息傳遞。內建樣式包括 Default、Proactive、Explanatory 和 Learning。243一個配置,修改 Claude 的系統提示以改變回應行為、語氣或格式。Output styles 關閉預設系統提示的軟體工程特定部分,與 [CLAUDE.md](#claude-md) 不同,後者作為系統提示後的使用者訊息傳遞。內建樣式包括 Default、Proactive、Explanatory 和 Learning。

178 244 

179了解更多:[Output styles](/zh-TW/output-styles)245了解更多:[Output styles](/zh-TW/output-styles)

180 246 

181## P247<h2 id="p">

248 P

249</h2>

182 250 

183### Permission mode251<h3 id="permission-mode">

252 Permission mode

253</h3>

184 254 

185會話的基線批准行為。在 CLI 中使用 `Shift+Tab` 循環或在 VS Code、Desktop 和 claude.ai 中使用模式選擇器。可用的模式是 `default`、`acceptEdits`、`plan`、`auto`、`dontAsk` 和 `bypassPermissions`。255會話的基線批准行為。在 CLI 中使用 `Shift+Tab` 循環或在 VS Code、Desktop 和 claude.ai 中使用模式選擇器。可用的模式是 `default`、`acceptEdits`、`plan`、`auto`、`dontAsk` 和 `bypassPermissions`。

186 256 

187了解更多:[選擇權限模式](/zh-TW/permission-modes)257了解更多:[選擇權限模式](/zh-TW/permission-modes)

188 258 

189### Permission rule259<h3 id="permission-rule">

260 Permission rule

261</h3>

190 262 

191一個設定條目,根據工具名稱和引數模式允許、詢問或拒絕工具調用。規則按 deny→ask→allow 順序評估,首先匹配獲勝。Permission rules 是分層在更廣泛的 [permission mode](#permission-mode) 之上的細粒度控制。263一個設定條目,根據工具名稱和引數模式允許、詢問或拒絕工具調用。規則按 deny→ask→allow 順序評估,首先匹配獲勝。Permission rules 是分層在更廣泛的 [permission mode](#permission-mode) 之上的細粒度控制。

192 264 

193了解更多:[配置權限](/zh-TW/permissions)265了解更多:[配置權限](/zh-TW/permissions)

194 266 

195### Plan mode267<h3 id="plan-mode">

268 Plan mode

269</h3>

196 270 

197一種 [permission mode](#permission-mode),其中 Claude 研究並提議更改而不編輯您的原始檔案。它可以讀取、搜索和執行探索命令,然後在觸及任何內容之前提出批准計畫。使用 `/plan` 或按 `Shift+Tab` 進入 plan mode。271一種 [permission mode](#permission-mode),其中 Claude 研究並提議更改而不編輯您的原始檔案。它可以讀取、搜索和執行探索命令,然後在觸及任何內容之前提出批准計畫。使用 `/plan` 或按 `Shift+Tab` 進入 plan mode。

198 272 

199了解更多:[使用 plan mode 進行分析後再編輯](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)273了解更多:[使用 plan mode 進行分析後再編輯](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)

200 274 

201### Plugin275<h3 id="plugin">

276 Plugin

277</h3>

202 278 

203一個 skills、hooks、subagents 和 MCP servers 的捆綁包,打包為單個可安裝單元。Plugin skills 命名為 `plugin-name:skill-name`,以便多個 plugins 共存。通過 [marketplace](/zh-TW/plugin-marketplaces) 在團隊間分發 plugins。279一個 skills、hooks、subagents 和 MCP servers 的捆綁包,打包為單個可安裝單元。Plugin skills 命名為 `plugin-name:skill-name`,以便多個 plugins 共存。通過 [marketplace](/zh-TW/plugin-marketplaces) 在團隊間分發 plugins。

204 280 

205了解更多:[Plugins](/zh-TW/plugins)281了解更多:[Plugins](/zh-TW/plugins)

206 282 

207### Project trust283<h3 id="project-trust">

284 Project trust

285</h3>

208 286 

209一個對話框,在 Claude Code 載入其配置之前接受目錄。接受情況按專案目錄保存,除了您的主目錄,其中信任僅在目前工作階段內保持,並在每次啟動時重新出現提示。信任控制 marketplace plugins 的自動安裝和專案定義的 hooks 的執行。信任目錄意味著其 `.claude/settings.json`、`.mcp.json` 和其他配置檔案生效。287一個對話框,在 Claude Code 載入其配置之前接受目錄。接受情況按專案目錄保存,除了您的主目錄,其中信任僅在目前工作階段內保持,並在每次啟動時重新出現提示。信任控制 marketplace plugins 的自動安裝和專案定義的 hooks 的執行。信任目錄意味著其 `.claude/settings.json`、`.mcp.json` 和其他配置檔案生效。

210 288 

211了解更多:[`.claude` 目錄](/zh-TW/claude-directory)289了解更多:[The `.claude` directory](/zh-TW/claude-directory)

212 290 

213### Prompt injection291<h3 id="prompt-injection">

292 Prompt injection

293</h3>

214 294 

215嵌入在檔案、網頁或工具結果中的敵對指令,試圖將 Claude 重定向到您從未要求的動作。Claude Code 的防禦包括權限系統、命令黑名單和信任驗證。[Auto mode](#auto-mode) 添加了一個伺服器端探針,掃描工具結果中的可疑內容,以及一個永遠看不到工具結果的分類器,因此注入的文字無法影響其批准決定。295嵌入在檔案、網頁或工具結果中的敵對指令,試圖將 Claude 重定向到您從未要求的動作。Claude Code 的防禦包括權限系統、命令黑名單和信任驗證。[Auto mode](#auto-mode) 添加了一個伺服器端探針,掃描工具結果中的可疑內容,以及一個永遠看不到工具結果的分類器,因此注入的文字無法影響其批准決定。

216 296 

217了解更多:[防止 prompt injection](/zh-TW/security#protect-against-prompt-injection)297了解更多:[防止 prompt injection](/zh-TW/security#protect-against-prompt-injection)

218 298 

219## R299<h2 id="r">

300 R

301</h2>

220 302 

221### Remote Control303<h3 id="remote-control">

304 Remote Control

305</h3>

222 306 

223一種通過 claude.ai 從您的電話或瀏覽器繼續本地 Claude Code 會話的方式。您的程式碼保留在您的機器上;只有 UI 是遠端的。與在 web 上運行的 Claude Code 不同,後者在雲沙箱中運行。307一種通過 claude.ai 從您的電話或瀏覽器繼續本地 Claude Code 會話的方式。您的程式碼保留在您的機器上;只有 UI 是遠端的。與在 web 上運行的 Claude Code 不同,後者在雲沙箱中運行。

224 308 

225了解更多:[Remote Control](/zh-TW/remote-control)309了解更多:[Remote Control](/zh-TW/remote-control)

226 310 

227### Rules311<h3 id="rules">

312 Rules

313</h3>

228 314 

229`.claude/rules/` 中的模組化指令檔案,與 CLAUDE.md 一起載入。規則可以使用 YAML `paths:` frontmatter 進行路徑範圍設定,因此它只在 Claude 讀取匹配檔案時載入,保持上下文精簡直到相關。315`.claude/rules/` 中的模組化指令檔案,與 CLAUDE.md 一起載入。規則可以使用 YAML `paths:` frontmatter 進行路徑範圍設定,因此它只在 Claude 讀取匹配檔案時載入,保持上下文精簡直到相關。

230 316 

231了解更多:[Organize rules with `.claude/rules/`](/zh-TW/memory#organize-rules-with-claude/rules/)317了解更多:[Organize rules with `.claude/rules/`](/zh-TW/memory#organize-rules-with-claude/rules/)

232 318 

233## S319<h2 id="s">

320 S

321</h2>

234 322 

235### Sandboxing323<h3 id="sandboxing">

324 Sandboxing

325</h3>

236 326 

237Bash 工具的 OS 級檔案系統和網路隔離。命令在您預先定義的邊界內執行,因此 Claude 可以在其中自由工作,無需每個命令的批准提示。Sandboxing 是與 [permission rules](#permission-rule) 分開的一層。327Bash 工具的 OS 級檔案系統和網路隔離。命令在您預先定義的邊界內執行,因此 Claude 可以在其中自由工作,無需每個命令的批准提示。Sandboxing 是與 [permission rules](#permission-rule) 分開的一層。

238 328 

239了解更多:[Sandboxing](/zh-TW/sandboxing)329了解更多:[Sandboxing](/zh-TW/sandboxing)

240 330 

241### Session331<h3 id="session">

332 Session

333</h3>

242 334 

243與您當前目錄相關的對話,具有自己的獨立 [context window](#context-window)。會話可以使用 `claude -c` 恢復、使用 `--fork-session` 分叉以在新會話 ID 下保留歷史記錄,或在終端間並行執行。執行 `/clear` 啟動新會話;前一個會話保持存儲並可通過 `/resume` 獲得。每個會話的記錄存儲在 `~/.claude/projects/` 下。335與您當前目錄相關的對話,具有自己的獨立 [context window](#context-window)。會話可以使用 `claude -c` 恢復、使用 `--fork-session` 分叉以在新會話 ID 下保留歷史記錄,或在終端間並行執行。執行 `/clear` 啟動新會話;前一個會話保持存儲並可通過 `/resume` 獲得。每個會話的記錄存儲在 `~/.claude/projects/` 下。

244 336 

245了解更多:[Work with sessions](/zh-TW/how-claude-code-works#work-with-sessions)337了解更多:[Work with sessions](/zh-TW/how-claude-code-works#work-with-sessions)

246 338 

247### Settings layers339<h3 id="settings-layers">

340 Settings layers

341</h3>

248 342 

249Claude Code 讀取配置的層級結構,按優先順序從最高到最低:[managed policy](#managed-settings)、命令行引數、`.claude/settings.local.json` 的本地設定、`.claude/settings.json` 的專案設定,然後是 `~/.claude/settings.json` 的使用者設定。陣列跨層級合併;較高層級的標量覆蓋較低層級的。343Claude Code 讀取配置的層級結構,按優先順序從最高到最低:[managed policy](#managed-settings)、命令行引數、`.claude/settings.local.json` 的本地設定、`.claude/settings.json` 的專案設定,然後是 `~/.claude/settings.json` 的使用者設定。陣列跨層級合併;較高層級的標量覆蓋較低層級的。

250 344 

251了解更多:[Settings files](/zh-TW/settings#settings-files)345了解更多:[Settings files](/zh-TW/settings#settings-files)

252 346 

253### Skill347<h3 id="skill">

348 Skill

349</h3>

254 350 

255一個 `SKILL.md` 檔案,包含 Claude 添加到其工具包中的指令、知識或工作流程。Claude 在相關時自動載入 skill,或您可以使用 `/skill-name` 直接調用它。Skills 遵循 Agent Skills 開放標準;Claude Code 使用調用控制和 subagent 執行擴展它。351一個 `SKILL.md` 檔案,包含 Claude 添加到其工具包中的指令、知識或工作流程。Claude 在相關時自動載入 skill,或您可以使用 `/skill-name` 直接調用它。Skills 遵循 Agent Skills 開放標準;Claude Code 使用調用控制和 subagent 執行擴展它。

256 352 


258 354 

259了解更多:[Extend Claude with skills](/zh-TW/skills)355了解更多:[Extend Claude with skills](/zh-TW/skills)

260 356 

261### Subagent357<h3 id="subagent">

358 Subagent

359</h3>

262 360 

263一個專門的 AI 助手,在自己的上下文視窗中運行,具有自訂系統提示、特定工具存取和獨立權限。它處理委派的任務並向主對話返回摘要。使用 subagents 將大型探索保留在主上下文之外或執行並行研究。與 [agent teams](#agent-teams) 不同,其中每個代理都是您可以直接交談的完整獨立會話。361一個專門的 AI 助手,在自己的上下文視窗中運行,具有自訂系統提示、特定工具存取和獨立權限。它處理委派的任務並向主對話返回摘要。使用 subagents 將大型探索保留在主上下文之外或執行並行研究。與 [agent teams](#agent-teams) 不同,其中每個代理都是您可以直接交談的完整獨立會話。

264 362 


266 364 

267了解更多:[Create custom subagents](/zh-TW/sub-agents)365了解更多:[Create custom subagents](/zh-TW/sub-agents)

268 366 

269### Surface367<h3 id="surface">

368 Surface

369</h3>

270 370 

271您存取 Claude Code 的任何地方:CLI、VS Code、JetBrains、Desktop 或 claude.ai。所有 surfaces 共享相同的引擎,因此您的 CLAUDE.md、設定和 skills 在它們之間以相同方式工作。Slack 和 Chrome 擴展是連接到 surface 的整合,而不是 surfaces 本身。371您存取 Claude Code 的任何地方:CLI、VS Code、JetBrains、Desktop 或 claude.ai。所有 surfaces 共享相同的引擎,因此您的 CLAUDE.md、設定和 skills 在它們之間以相同方式工作。Slack 和 Chrome 擴展是連接到 surface 的整合,而不是 surfaces 本身。

272 372 

273了解更多:[Platforms and integrations](/zh-TW/platforms)373了解更多:[Platforms and integrations](/zh-TW/platforms)

274 374 

275## T375<h2 id="t">

376 T

377</h2>

276 378 

277### Teleport379<h3 id="teleport">

380 Teleport

381</h3>

278 382 

279一個命令 `/teleport`,它將雲 Claude Code 會話拉入您的本地終端。Claude 獲取分支、載入對話歷史並從 web 會話的最後狀態恢復。反向方向是 `--remote`,它將本地任務發送到 web 上執行。383一個命令 `/teleport`,它將雲 Claude Code 會話拉入您的本地終端。Claude 獲取分支、載入對話歷史並從 web 會話的最後狀態恢復。反向方向是 `--remote`,它將本地任務發送到 web 上執行。

280 384 

281了解更多:[From web to terminal](/zh-TW/claude-code-on-the-web#from-web-to-terminal)385了解更多:[From web to terminal](/zh-TW/claude-code-on-the-web#from-web-to-terminal)

282 386 

283### Tool387<h3 id="tool">

388 Tool

389</h3>

284 390 

285Claude 可以採取的動作:讀取檔案、編輯程式碼、執行 shell 命令、搜索 web、生成 subagent。Tools 是使 Claude Code 成為 agentic 的原因。沒有它們,Claude 只能用文字回應。每個工具使用都會返回一個結果,為 [agentic loop](#agentic-loop) 中 Claude 的下一個決定提供資訊。391Claude 可以採取的動作:讀取檔案、編輯程式碼、執行 shell 命令、搜索 web、生成 subagent。Tools 是使 Claude Code 成為 agentic 的原因。沒有它們,Claude 只能用文字回應。每個工具使用都會返回一個結果,為 [agentic loop](#agentic-loop) 中 Claude 的下一個決定提供資訊。

286 392 

287了解更多:[Tools available to Claude](/zh-TW/tools-reference)393了解更多:[Tools available to Claude](/zh-TW/tools-reference)

288 394 

289### Turn395<h3 id="turn">

396 Turn

397</h3>

290 398 

291Claude 在一個 [session](#session) 內的一個完整回應。一個 turn 開始於您發送訊息,結束於 Claude 完成回應,中間可能有任意數量的 [tool](#tool) 呼叫。[Stop hooks](#hook) 在每個 turn 結束時觸發。一個 session 由許多 turn 組成,[agentic loop](#agentic-loop) 描述了在一個 turn 內發生的情況。399Claude 在一個 [session](#session) 內的一個完整回應。一個 turn 開始於您發送訊息,結束於 Claude 完成回應,中間可能有任意數量的 [tool](#tool) 呼叫。[Stop hooks](#hook) 在每個 turn 結束時觸發。一個 session 由許多 turn 組成,[agentic loop](#agentic-loop) 描述了在一個 turn 內發生的情況。

292 400 

293了解更多:[How Claude Code works](/zh-TW/how-claude-code-works#the-agentic-loop)401了解更多:[How Claude Code works](/zh-TW/how-claude-code-works#the-agentic-loop)

294 402 

295## W403<h2 id="v">

404 V

405</h2>

406 

407<h3 id="verification-loop">

408 Verification loop

409</h3>

410 

411一個會話知道工作實際完成而不僅僅是看起來合理的方式。您給 Claude 一個它可以執行的檢查,例如測試套件、構建或螢幕截圖比較,Claude 迭代直到檢查通過,而不是在一次嘗試後停止。驗證迴圈是 [`/goal`](/zh-TW/goal)、無人值守執行和 [dynamic workflows](/zh-TW/workflows) 的先決條件:沒有它,唯一決定代理完成的事情就是代理本身。

412 

413了解更多:[Give Claude a way to verify its work](/zh-TW/best-practices#give-claude-a-way-to-verify-its-work)

414 

415<h2 id="w">

416 W

417</h2>

296 418 

297### Worktree isolation419<h3 id="worktree-isolation">

420 Worktree isolation

421</h3>

298 422 

299一個隔離模式,在 `.claude/worktrees/` 下的單獨 git worktree 中執行 Claude,使用 `-w` 標誌或 subagent 配置中的 `isolation: worktree` 啟用。更改保留在單獨分支的單獨目錄中,因此並行代理不會覆蓋彼此的檔案。423一個隔離模式,在 `.claude/worktrees/` 下的單獨 git worktree 中執行 Claude,使用 `-w` 標誌或 subagent 配置中的 `isolation: worktree` 啟用。更改保留在單獨分支的單獨目錄中,因此並行代理不會覆蓋彼此的檔案。

300 424 


302 426 

303***427***

304 428 

305## 已棄用和重新命名的術語429<h2 id="deprecated-and-renamed-terms">

430 已棄用和重新命名的術語

431</h2>

306 432 

307這些術語出現在較舊的文件、部落格文章和社群內容中。搜索本網站時使用當前名稱。433這些術語出現在較舊的文件、部落格文章和社群內容中。搜索本網站時使用當前名稱。

308 434 

goal.md +34 −12

Details

21 21 

22本頁涵蓋以下內容:22本頁涵蓋以下內容:

23 23 

24* [比較自主工作流方法](#compare-to-other-autonomous-workflows):`/loop`、Stop hooks 和自動模式24* [比較自主工作流方法](#compare-ways-to-keep-a-session-running):`/loop`、Stop hooks 和自動模式

25* [設定目標](#set-a-goal)和[編寫有效條件](#write-an-effective-condition)25* [設定目標](#set-a-goal)和[編寫有效條件](#write-an-effective-condition)

26* [檢查狀態](#check-status)、[提前清除](#clear-a-goal)和[非互動式執行](#run-non-interactively)26* [檢查狀態](#check-status)、[提前清除](#clear-a-goal)和[非互動式執行](#run-non-interactively)

27* 查看[評估如何運作](#how-evaluation-works)和[要求](#requirements)27* 查看[評估如何運作](#how-evaluation-works)和[要求](#requirements)

28 28 

29## 比較其他自主工作流29<h2 id="compare-ways-to-keep-a-session-running">

30 比較保持工作階段執行的方式

31</h2>

30 32 

31三種方法在提示之間保持目前工作階段執行。根據應該開始下一個回合的內容進行選擇:33三種方法在提示之間保持目前工作階段執行。根據應該開始下一個回合的內容進行選擇:

32 34 


44 上述方法保持目前工作階段執行。你也可以排程獨立於任何開啟工作階段的工作,例如夜間測試或早晨分類。有關雲端例程和桌面排程任務,請參閱[排程選項](/zh-TW/scheduled-tasks#compare-scheduling-options)。46 上述方法保持目前工作階段執行。你也可以排程獨立於任何開啟工作階段的工作,例如夜間測試或早晨分類。有關雲端例程和桌面排程任務,請參閱[排程選項](/zh-TW/scheduled-tasks#compare-scheduling-options)。

45</Tip>47</Tip>

46 48 

47## 使用 `/goal`49<h2 id="use-/goal">

50 使用 `/goal`

51</h2>

48 52 

49每個工作階段可以有一個活躍的目標。相同的命令根據引數設定、檢查和清除它。53每個工作階段可以有一個活躍的目標。相同的命令根據引數設定、檢查和清除它。

50 54 

51### 設定目標55<h3 id="set-a-goal">

56 設定目標

57</h3>

52 58 

53執行 `/goal` 後跟你想要滿足的條件。如果已有活躍的目標,新目標會替換它。59執行 `/goal` 後跟你想要滿足的條件。如果已有活躍的目標,新目標會替換它。

54 60 


64 目標會持續執行,直到條件滿足或你執行 `/goal clear`。執行不帶引數的 `/goal` 以查看迄今為止花費的回合和令牌。70 目標會持續執行,直到條件滿足或你執行 `/goal clear`。執行不帶引數的 `/goal` 以查看迄今為止花費的回合和令牌。

65</Note>71</Note>

66 72 

67### 編寫有效條件73<h3 id="write-an-effective-condition">

74 編寫有效條件

75</h3>

68 76 

69[評估器](#how-evaluation-works)根據 Claude 在對話中呈現的內容判斷你的條件。它不會獨立執行命令或讀取檔案,因此將條件編寫為 Claude 自己的輸出可以演示的內容。「`test/auth` 中的所有測試都通過」有效,因為 Claude 執行測試,結果出現在文字記錄中供評估器讀取。77[評估器](#how-evaluation-works)根據 Claude 在對話中呈現的內容判斷你的條件。它不會獨立執行命令或讀取檔案,因此將條件編寫為 Claude 自己的輸出可以演示的內容。「`test/auth` 中的所有測試都通過」有效,因為 Claude 執行測試,結果出現在文字記錄中供評估器讀取。

70 78 


78 86 

79要限制目標執行的時間,在條件中包含回合或時間子句,例如 `or stop after 20 turns`。Claude 每個回合都報告針對該子句的進度,評估器從對話中判斷它。87要限制目標執行的時間,在條件中包含回合或時間子句,例如 `or stop after 20 turns`。Claude 每個回合都報告針對該子句的進度,評估器從對話中判斷它。

80 88 

81### 檢查狀態89<h3 id="check-status">

90 檢查狀態

91</h3>

82 92 

83執行不帶引數的 `/goal` 以查看目前狀態。93執行不帶引數的 `/goal` 以查看目前狀態。

84 94 


96 106 

97如果沒有活躍的目標,但在工作階段中較早時已達成一個目標,狀態會顯示已達成的條件及其持續時間、回合計數和令牌支出。107如果沒有活躍的目標,但在工作階段中較早時已達成一個目標,狀態會顯示已達成的條件及其持續時間、回合計數和令牌支出。

98 108 

99### 清除目標109<h3 id="clear-a-goal">

110 清除目標

111</h3>

100 112 

101執行 `/goal clear` 以在條件滿足前移除活躍的目標。113執行 `/goal clear` 以在條件滿足前移除活躍的目標。

102 114 


106 118 

107`stop`、`off`、`reset`、`none` 和 `cancel` 被接受為 `clear` 的別名。執行 `/clear` 以開始新對話也會移除任何活躍的目標。119`stop`、`off`、`reset`、`none` 和 `cancel` 被接受為 `clear` 的別名。執行 `/clear` 以開始新對話也會移除任何活躍的目標。

108 120 

109### 使用活躍目標繼續121<h3 id="resume-with-an-active-goal">

122 使用活躍目標繼續

123</h3>

110 124 

111當工作階段結束時仍然活躍的目標會在你使用 `--resume` 或 `--continue` 繼續該工作階段時恢復。條件會保留,但回合計數、計時器和令牌支出基線在繼續時都會重置。已達成或已清除的目標不會恢復。125當工作階段結束時仍然活躍的目標會在你使用 `--resume` 或 `--continue` 繼續該工作階段時恢復。條件會保留,但回合計數、計時器和令牌支出基線在繼續時都會重置。已達成或已清除的目標不會恢復。

112 126 

113### 非互動式執行127<h3 id="run-non-interactively">

128 非互動式執行

129</h3>

114 130 

115`/goal` 在[非互動式模式](/zh-TW/headless)、[桌面應用程式](/zh-TW/desktop)中工作,並透過[遠端控制](/zh-TW/remote-control)工作。使用 `-p` 設定目標會在單個呼叫中執行迴圈至完成:131`/goal` 在[非互動式模式](/zh-TW/headless)、[桌面應用程式](/zh-TW/desktop)中工作,並透過[遠端控制](/zh-TW/remote-control)工作。使用 `-p` 設定目標會在單個呼叫中執行迴圈至完成:

116 132 


120 136 

121使用 Ctrl+C 中斷程序以在條件滿足前停止非互動式目標。137使用 Ctrl+C 中斷程序以在條件滿足前停止非互動式目標。

122 138 

123## 評估如何運作139<h2 id="how-evaluation-works">

140 評估如何運作

141</h2>

124 142 

125`/goal` 是工作階段範圍[基於提示的 Stop hook](/zh-TW/hooks#prompt-based-hooks)的包裝器。每次 Claude 完成回合時,條件和迄今為止的對話都會發送到你配置的[小型快速模型](/zh-TW/model-config),預設為 Haiku。模型返回是或否決定和簡短原因。「否」告訴 Claude 繼續工作,並將原因作為下一個回合的指導。「是」清除目標並在文字記錄中記錄已達成的條目。143`/goal` 是工作階段範圍[基於提示的 Stop hook](/zh-TW/hooks#prompt-based-hooks)的包裝器。每次 Claude 完成回合時,條件和迄今為止的對話都會發送到你配置的[小型快速模型](/zh-TW/model-config),預設為 Haiku。模型返回是或否決定和簡短原因。「否」告訴 Claude 繼續工作,並將原因作為下一個回合的指導。「是」清除目標並在文字記錄中記錄已達成的條目。

126 144 


130 評估令牌在為你的提供者配置的小型快速模型上計費,與主要回合支出相比通常可以忽略不計。148 評估令牌在為你的提供者配置的小型快速模型上計費,與主要回合支出相比通常可以忽略不計。

131</Note>149</Note>

132 150 

133## 要求151<h2 id="requirements">

152 要求

153</h2>

134 154 

135`/goal` 僅在你已接受信任對話框的工作區中執行,因為評估器是 hooks 系統的一部分。當在任何設定層級設定了 [`disableAllHooks`](/zh-TW/hooks#disable-or-remove-hooks) 時,或當在受管設定中設定了 [`allowManagedHooksOnly`](/zh-TW/settings#hook-configuration) 時,`/goal` 也不可用。在每種情況下,命令會告訴你原因,而不是默默地什麼都不做。155`/goal` 僅在你已接受信任對話框的工作區中執行,因為評估器是 hooks 系統的一部分。當在任何設定層級設定了 [`disableAllHooks`](/zh-TW/hooks#disable-or-remove-hooks) 時,或當在受管設定中設定了 [`allowManagedHooksOnly`](/zh-TW/settings#hook-configuration) 時,`/goal` 也不可用。在每種情況下,命令會告訴你原因,而不是默默地什麼都不做。

136 156 

137## 另請參閱157<h2 id="see-also">

158 另請參閱

159</h2>

138 160 

139* [使用 `/loop` 重複執行提示](/zh-TW/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop):按時間間隔重新執行,而不是直到條件滿足161* [使用 `/loop` 重複執行提示](/zh-TW/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop):按時間間隔重新執行,而不是直到條件滿足

140* [基於提示的 hooks](/zh-TW/hooks-guide#prompt-based-hooks):當你需要自訂評估邏輯時編寫你自己的 Stop hook162* [基於提示的 hooks](/zh-TW/hooks-guide#prompt-based-hooks):當你需要自訂評估邏輯時編寫你自己的 Stop hook

Details

6 6 

7> 了解如何透過 Google Vertex AI 設定 Claude Code,包括設定、IAM 設定和故障排除。7> 了解如何透過 Google Vertex AI 設定 Claude Code,包括設定、IAM 設定和故障排除。

8 8 

9export const ContactSalesCard = ({surface}) => {9<h2 id="prerequisites">

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;10 先決條件

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">11</h2>

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79<ContactSalesCard surface="vertex" />

80 

81## 先決條件

82 12 

83在使用 Vertex AI 設定 Claude Code 之前,請確保您具有:13在使用 Vertex AI 設定 Claude Code 之前,請確保您具有:

84 14 


90 20 

91若要使用您自己的 Vertex AI 認證登入,請遵循下方的[使用 Vertex AI 登入](#sign-in-with-vertex-ai)。若要在整個團隊中部署 Claude Code,請使用[手動設定](#set-up-manually)步驟並在推出前[固定您的模型版本](#5-pin-model-versions)。21若要使用您自己的 Vertex AI 認證登入,請遵循下方的[使用 Vertex AI 登入](#sign-in-with-vertex-ai)。若要在整個團隊中部署 Claude Code,請使用[手動設定](#set-up-manually)步驟並在推出前[固定您的模型版本](#5-pin-model-versions)。

92 22 

93## 使用 Vertex AI 登入23<h2 id="sign-in-with-vertex-ai">

24 使用 Vertex AI 登入

25</h2>

94 26 

95如果您有 Google Cloud 認證並想開始透過 Vertex AI 使用 Claude Code,登入精靈會引導您完成整個過程。您只需在每個專案中完成一次 GCP 端的先決條件;精靈會處理 Claude Code 端的設定。27如果您有 Google Cloud 認證並想開始透過 Vertex AI 使用 Claude Code,登入精靈會引導您完成整個過程。您只需在每個專案中完成一次 GCP 端的先決條件;精靈會處理 Claude Code 端的設定。

96 28 


114 46 

115登入後,您可以隨時執行 `/setup-vertex` 以重新開啟精靈並變更您的認證、專案、區域或模型固定。47登入後,您可以隨時執行 `/setup-vertex` 以重新開啟精靈並變更您的認證、專案、區域或模型固定。

116 48 

117## 區域設定49<h2 id="region-configuration">

50 區域設定

51</h2>

118 52 

119Claude Code 支援 Vertex AI [全球](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai)、多區域和區域端點。將 `CLOUD_ML_REGION` 設定為 `global`、多區域位置(例如 `eu` 或 `us`)或特定區域(例如 `us-east5`)。Claude Code 為每種形式選擇正確的 Vertex AI 主機名稱,包括多區域位置的 `aiplatform.eu.rep.googleapis.com` 和 `aiplatform.us.rep.googleapis.com` 主機。53Claude Code 支援 Vertex AI [全球](https://cloud.google.com/blog/products/ai-machine-learning/global-endpoint-for-claude-models-generally-available-on-vertex-ai)、多區域和區域端點。將 `CLOUD_ML_REGION` 設定為 `global`、多區域位置(例如 `eu` 或 `us`)或特定區域(例如 `us-east5`)。Claude Code 為每種形式選擇正確的 Vertex AI 主機名稱,包括多區域位置的 `aiplatform.eu.rep.googleapis.com` 和 `aiplatform.us.rep.googleapis.com` 主機。

120 54 


122 Vertex AI 可能不支援每個端點類型上的 Claude Code 預設模型。模型可用性在[特定區域](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models)、多區域位置和[全球端點](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models)之間有所不同。您可能需要切換到支援的位置或指定支援的模型。56 Vertex AI 可能不支援每個端點類型上的 Claude Code 預設模型。模型可用性在[特定區域](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations#genai-partner-models)、多區域位置和[全球端點](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#supported_models)之間有所不同。您可能需要切換到支援的位置或指定支援的模型。

123</Note>57</Note>

124 58 

125## 手動設定59<h2 id="set-up-manually">

60 手動設定

61</h2>

126 62 

127若要透過環境變數而不是精靈來設定 Vertex AI,例如在 CI 或指令碼化企業推出中,請遵循下列步驟。63若要透過環境變數而不是精靈來設定 Vertex AI,例如在 CI 或指令碼化企業推出中,請遵循下列步驟。

128 64 

129### 1. 啟用 Vertex AI API65<h3 id="1-enable-vertex-ai-api">

66 1. 啟用 Vertex AI API

67</h3>

130 68 

131在您的 GCP 專案中啟用 Vertex AI API:69在您的 GCP 專案中啟用 Vertex AI API:

132 70 


138gcloud services enable aiplatform.googleapis.com76gcloud services enable aiplatform.googleapis.com

139```77```

140 78 

141### 2. 要求模型存取79<h3 id="2-request-model-access">

80 2. 要求模型存取

81</h3>

142 82 

143在 Vertex AI 中要求存取 Claude 模型:83在 Vertex AI 中要求存取 Claude 模型:

144 84 


1473. 要求存取所需的 Claude 模型(例如 Claude Sonnet 4.6)873. 要求存取所需的 Claude 模型(例如 Claude Sonnet 4.6)

1484. 等待核准(可能需要 24-48 小時)884. 等待核准(可能需要 24-48 小時)

149 89 

150### 3. 設定 GCP 認證90<h3 id="3-configure-gcp-credentials">

91 3) 設定 GCP 認證

92</h3>

151 93 

152Claude Code 使用標準的 Google Cloud 驗證。94Claude Code 使用標準的 Google Cloud 驗證。

153 95 


159 Claude Code 使用 `ANTHROPIC_VERTEX_PROJECT_ID` 作為 Vertex AI 要求的專案 ID。`GCLOUD_PROJECT` 和 `GOOGLE_CLOUD_PROJECT` 環境變數以及 `GOOGLE_APPLICATION_CREDENTIALS` 參考的認證檔案優先於它。如果這些都未設定,專案 ID 會從您的 `gcloud` 設定或附加的服務帳戶解析。101 Claude Code 使用 `ANTHROPIC_VERTEX_PROJECT_ID` 作為 Vertex AI 要求的專案 ID。`GCLOUD_PROJECT` 和 `GOOGLE_CLOUD_PROJECT` 環境變數以及 `GOOGLE_APPLICATION_CREDENTIALS` 參考的認證檔案優先於它。如果這些都未設定,專案 ID 會從您的 `gcloud` 設定或附加的服務帳戶解析。

160</Note>102</Note>

161 103 

162#### 進階認證設定104<h4 id="advanced-credential-configuration">

105 進階認證設定

106</h4>

163 107 

164Claude Code 透過 `gcpAuthRefresh` 設定支援 GCP 的自動認證重新整理。當 Claude Code 偵測到您的 GCP 認證已過期或無法載入時,它會執行設定的命令以在重試要求之前取得新認證。108Claude Code 透過 `gcpAuthRefresh` 設定支援 GCP 的自動認證重新整理。當 Claude Code 偵測到您的 GCP 認證已過期或無法載入時,它會執行設定的命令以在重試要求之前取得新認證。

165 109 


174 118 

175命令的輸出會顯示給使用者,但不支援互動式輸入。這適用於瀏覽器型驗證流程,其中 CLI 顯示 URL,您在瀏覽器中完成驗證。如果驗證未在三分鐘內完成,重新整理命令會逾時。如果您在專案設定(例如 `.claude/settings.json`)中設定 `gcpAuthRefresh`,命令只會在您接受工作區信任提示後執行。119命令的輸出會顯示給使用者,但不支援互動式輸入。這適用於瀏覽器型驗證流程,其中 CLI 顯示 URL,您在瀏覽器中完成驗證。如果驗證未在三分鐘內完成,重新整理命令會逾時。如果您在專案設定(例如 `.claude/settings.json`)中設定 `gcpAuthRefresh`,命令只會在您接受工作區信任提示後執行。

176 120 

177### 4. 設定 Claude Code121<h3 id="4-configure-claude-code">

122 4. 設定 Claude Code

123</h3>

178 124 

179設定下列環境變數:125設定下列環境變數:

180 126 


200 146 

201大多數模型版本都有對應的 `VERTEX_REGION_CLAUDE_*` 變數。如需完整清單,請參閱[環境變數參考](/zh-TW/env-vars)。檢查 [Vertex Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 以確定哪些模型支援全球端點與僅限區域端點。147大多數模型版本都有對應的 `VERTEX_REGION_CLAUDE_*` 變數。如需完整清單,請參閱[環境變數參考](/zh-TW/env-vars)。檢查 [Vertex Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 以確定哪些模型支援全球端點與僅限區域端點。

202 148 

203[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 會自動啟用。若要停用它,請設定 `DISABLE_PROMPT_CACHING=1`。若要要求 1 小時 cache TTL 而不是 5 分鐘預設值,請設定 `ENABLE_PROMPT_CACHING_1H=1`;具有 1 小時 TTL 的 cache 寫入會以更高費率計費。如需提高速率限制,請聯絡 Google Cloud 支援。使用 Vertex AI 時,`/login` 和 `/logout` 命令會被停用,因為驗證是透過 Google Cloud 認證處理的。149[Prompt caching](/zh-TW/prompt-caching) 會自動啟用。若要停用它,請設定 `DISABLE_PROMPT_CACHING=1`。若要要求 1 小時 cache TTL 而不是 5 分鐘預設值,請設定 `ENABLE_PROMPT_CACHING_1H=1`;具有 1 小時 TTL 的 cache 寫入會以更高費率計費。如需提高速率限制,請聯絡 Google Cloud 支援。使用 Vertex AI 時,`/logout` 命令會被停用,因為驗證是透過 Google Cloud 認證處理的。

204 150 

205Claude Code 在 Vertex AI 上預設停用 [MCP tool search](/zh-TW/mcp#scale-with-mcp-tool-search),因此 MCP 工具定義會預先載入。Vertex AI 支援 Claude Sonnet 4.5 及更新版本以及 Claude Opus 4.5 及更新版本的工具搜尋。設定 `ENABLE_TOOL_SEARCH=true` 以在這些模型上啟用它。Vertex AI 上的較早模型不接受所需的 beta 標頭,如果您使用它們啟用工具搜尋,要求會失敗。151Claude Code 在 Vertex AI 上預設停用 [MCP tool search](/zh-TW/mcp#scale-with-mcp-tool-search),因此 MCP 工具定義會預先載入。Vertex AI 支援 Claude Sonnet 4.5 及更新版本以及 Claude Opus 4.5 及更新版本的工具搜尋。設定 `ENABLE_TOOL_SEARCH=true` 以在這些模型上啟用它。Vertex AI 上的較早模型不接受所需的 beta 標頭,如果您使用它們啟用工具搜尋,要求會失敗。

206 152 

207### 5. 固定模型版本153<h3 id="5-pin-model-versions">

154 5. 固定模型版本

155</h3>

208 156 

209<Warning>157<Warning>

210 在部署到多個使用者時固定特定模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為最新版本,當 Anthropic 發佈更新時,該版本可能尚未在您的 Vertex AI 專案中啟用。Claude Code 在啟動時會在最新版本無法使用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。158 在部署到多個使用者時固定特定模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為最新版本,當 Anthropic 發佈更新時,該版本可能尚未在您的 Vertex AI 專案中啟用。Claude Code 在啟動時會在最新版本無法使用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。


212 160 

213將這些環境變數設定為特定的 Vertex AI 模型 ID。161將這些環境變數設定為特定的 Vertex AI 模型 ID。

214 162 

215如果沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,Vertex 上的 `opus` 別名會解析為 Opus 4.6。將其設定為 Opus 4.7 ID 以使用最新模型:163如果沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,Vertex 上的 `opus` 別名會解析為 Opus 4.6。將其設定為 Opus 4.8 ID 以使用最新模型:

216 164 

217```bash theme={null}165```bash theme={null}

218export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'166export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'

219export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'167export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

220export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'168export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

221```169```


234若要進一步自訂模型:182若要進一步自訂模型:

235 183 

236```bash theme={null}184```bash theme={null}

237export ANTHROPIC_MODEL='claude-opus-4-7'185export ANTHROPIC_MODEL='claude-opus-4-8'

238export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'186export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

239```187```

240 188 

241## 啟動模型檢查189<h2 id="startup-model-checks">

190 啟動模型檢查

191</h2>

242 192 

243當 Claude Code 以設定的 Vertex AI 啟動時,它會驗證它打算使用的模型在您的專案中是否可存取。此檢查需要 Claude Code v2.1.98 或更新版本。193當 Claude Code 以設定的 Vertex AI 啟動時,它會驗證它打算使用的模型在您的專案中是否可存取。此檢查需要 Claude Code v2.1.98 或更新版本。

244 194 


246 196 

247如果您尚未固定模型,且目前預設值在您的專案中無法使用,Claude Code 會在目前工作階段中回退到先前版本並顯示通知。回退不會被保留。在 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 中啟用較新模型或[固定版本](#5-pin-model-versions)以使選擇永久化。197如果您尚未固定模型,且目前預設值在您的專案中無法使用,Claude Code 會在目前工作階段中回退到先前版本並顯示通知。回退不會被保留。在 [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) 中啟用較新模型或[固定版本](#5-pin-model-versions)以使選擇永久化。

248 198 

249## IAM 設定199<h2 id="iam-configuration">

200 IAM 設定

201</h2>

250 202 

251指派所需的 IAM 權限:203指派所需的 IAM 權限:

252 204 


262 為 Claude Code 建立專用的 GCP 專案,以簡化成本追蹤和存取控制。214 為 Claude Code 建立專用的 GCP 專案,以簡化成本追蹤和存取控制。

263</Note>215</Note>

264 216 

265## 1M token context window217<h2 id="1m-token-context-window">

218 1M token context window

219</h2>

266 220 

267Claude Opus 4.7、Opus 4.6 Sonnet 4.6 在 Vertex AI 上支援 [1M token context window](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window)。當您選擇 1M 模型變體時,Claude Code 會自動啟用擴展 context window。221Claude Opus 4.6 及更新版本,以及 Sonnet 4.6在 Vertex AI 上支援 [1M token context window](https://platform.claude.com/docs/zh-TW/build-with-claude/context-windows#1m-token-context-window)。當您選擇 1M 模型變體時,Claude Code 會自動啟用擴展 context window。

268 222 

269[設定精靈](#sign-in-with-vertex-ai)在固定模型時提供 1M context 選項。若要為手動固定的模型啟用它,請在模型 ID 後附加 `[1m]`。如需詳細資訊,請參閱[為第三方部署固定模型](/zh-TW/model-config#pin-models-for-third-party-deployments)。223[設定精靈](#sign-in-with-vertex-ai)在固定模型時提供 1M context 選項。若要為手動固定的模型啟用它,請在模型 ID 後附加 `[1m]`。如需詳細資訊,請參閱[為第三方部署固定模型](/zh-TW/model-config#pin-models-for-third-party-deployments)。

270 224 

271## 故障排除225<h2 id="troubleshooting">

226 故障排除

227</h2>

272 228 

273如果您遇到「無法載入預設認證」錯誤:229如果您遇到「無法載入預設認證」錯誤:

274 230 


293* 對於區域端點,請確保主要模型和小型/快速模型在您選擇的區域中受支援249* 對於區域端點,請確保主要模型和小型/快速模型在您選擇的區域中受支援

294* 考慮切換到 `CLOUD_ML_REGION=global` 以獲得更好的可用性250* 考慮切換到 `CLOUD_ML_REGION=global` 以獲得更好的可用性

295 251 

296## 其他資源252<h2 id="additional-resources">

253 其他資源

254</h2>

297 255 

298* [Vertex AI 文件](https://cloud.google.com/vertex-ai/docs)256* [Vertex AI 文件](https://cloud.google.com/vertex-ai/docs)

299* [Vertex AI 定價](https://cloud.google.com/vertex-ai/pricing)257* [Vertex AI 定價](https://cloud.google.com/vertex-ai/pricing)

headless.md +39 −15

Details

20 20 

21本頁涵蓋透過 CLI (`claude -p`) 使用 Agent SDK。如需具有結構化輸出、工具核准回呼和原生訊息物件的 Python 和 TypeScript SDK 套件,請參閱 [完整 Agent SDK 文件](/zh-TW/agent-sdk/overview)。21本頁涵蓋透過 CLI (`claude -p`) 使用 Agent SDK。如需具有結構化輸出、工具核准回呼和原生訊息物件的 Python 和 TypeScript SDK 套件,請參閱 [完整 Agent SDK 文件](/zh-TW/agent-sdk/overview)。

22 22 

23## 基本用法23<h2 id="basic-usage">

24 基本用法

25</h2>

24 26 

25將 `-p`(或 `--print`)旗標新增至任何 `claude` 命令以非互動方式執行它。所有 [CLI 選項](/zh-TW/cli-reference) 都適用於 `-p`,包括:27將 `-p`(或 `--print`)旗標新增至任何 `claude` 命令以非互動方式執行它。所有 [CLI 選項](/zh-TW/cli-reference) 都適用於 `-p`,包括:

26 28 


34claude -p "What does the auth module do?"36claude -p "What does the auth module do?"

35```37```

36 38 

37### 使用裸機模式加快速度39<h3 id="start-faster-with-bare-mode">

40 使用裸機模式加快速度

41</h3>

38 42 

39新增 `--bare` 以跳過 hooks、skills、plugins、MCP 伺服器、自動記憶體和 CLAUDE.md 的自動探索來減少啟動時間。沒有它,`claude -p` 會載入互動式工作階段會載入的相同 [上下文](/zh-TW/how-claude-code-works#the-context-window),包括在工作目錄或 `~/.claude` 中設定的任何內容。43新增 `--bare` 以跳過 hooks、skills、plugins、MCP 伺服器、自動記憶體和 CLAUDE.md 的自動探索來減少啟動時間。沒有它,`claude -p` 會載入互動式工作階段會載入的相同 [上下文](/zh-TW/how-claude-code-works#the-context-window),包括在工作目錄或 `~/.claude` 中設定的任何內容。

40 44 


62 `--bare` 是指令碼和 SDK 呼叫的建議模式,將在未來版本中成為 `-p` 的預設值。66 `--bare` 是指令碼和 SDK 呼叫的建議模式,將在未來版本中成為 `-p` 的預設值。

63</Note>67</Note>

64 68 

65## 範例69<h2 id="examples">

70 範例

71</h2>

66 72 

67這些範例突出顯示常見的 CLI 模式。對於 CI 和其他指令碼呼叫,新增 [`--bare`](#start-faster-with-bare-mode) 以便它們不會選擇本地設定的任何內容。73這些範例突出顯示常見的 CLI 模式。對於 CI 和其他指令碼呼叫,新增 [`--bare`](#start-faster-with-bare-mode) 以便它們不會選擇本地設定的任何內容。

68 74 

69### 透過 Claude 管道傳送資料75<h3 id="pipe-data-through-claude">

76 透過 Claude 管道傳送資料

77</h3>

70 78 

71非互動模式讀取 stdin,因此您可以像任何其他命令列工具一樣管道傳送資料並重新導向回應。79非互動模式讀取 stdin,因此您可以像任何其他命令列工具一樣管道傳送資料並重新導向回應。

72 80 


82 自 Claude Code v2.1.128 起,管道傳送的 stdin 上限為 10MB。如果超過上限,Claude Code 會以清晰的錯誤和非零狀態代碼退出。若要處理更大的輸入,請將內容寫入檔案,並在提示中參考檔案路徑,而不是管道傳送它。90 自 Claude Code v2.1.128 起,管道傳送的 stdin 上限為 10MB。如果超過上限,Claude Code 會以清晰的錯誤和非零狀態代碼退出。若要處理更大的輸入,請將內容寫入檔案,並在提示中參考檔案路徑,而不是管道傳送它。

83</Note>91</Note>

84 92 

85### 將 Claude 新增至建置指令碼93<h3 id="add-claude-to-a-build-script">

94 將 Claude 新增至建置指令碼

95</h3>

86 96 

87您可以在指令碼中包裝非互動呼叫,以將 Claude 用作專案特定的 linter 或審查者。97您可以在指令碼中包裝非互動呼叫,以將 Claude 用作專案特定的 linter 或審查者。

88 98 


96}106}

97```107```

98 108 

99### 取得結構化輸出109<h3 id="get-structured-output">

110 取得結構化輸出

111</h3>

100 112 

101使用 `--output-format` 控制回應的傳回方式:113使用 `--output-format` 控制回應的傳回方式:

102 114 


135 ```147 ```

136</Tip>148</Tip>

137 149 

138### 串流回應150<h3 id="stream-responses">

151 串流回應

152</h3>

139 153 

140使用 `--output-format stream-json` 搭配 `--verbose` 和 `--include-partial-messages` 以在產生令牌時接收它們。每一行都是代表事件的 JSON 物件:154使用 `--output-format stream-json` 搭配 `--verbose` 和 `--include-partial-messages` 以在產生令牌時接收它們。每一行都是代表事件的 JSON 物件:

141 155 


153當 API 請求因可重試錯誤而失敗時,Claude Code 會在重試前發出 `system/api_retry` 事件。您可以使用此來顯示重試進度或實施自訂退避邏輯。167當 API 請求因可重試錯誤而失敗時,Claude Code 會在重試前發出 `system/api_retry` 事件。您可以使用此來顯示重試進度或實施自訂退避邏輯。

154 168 

155| 欄位 | 類型 | 描述 |169| 欄位 | 類型 | 描述 |

156| ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |170| ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

157| `type` | `"system"` | 訊息類型 |171| `type` | `"system"` | 訊息類型 |

158| `subtype` | `"api_retry"` | 將此識別為重試事件 |172| `subtype` | `"api_retry"` | 將此識別為重試事件 |

159| `attempt` | 整數 | 目前嘗試次數,從 1 開始 |173| `attempt` | 整數 | 目前嘗試次數,從 1 開始 |

160| `max_retries` | 整數 | 允許的總重試次數 |174| `max_retries` | 整數 | 允許的總重試次數 |

161| `retry_delay_ms` | 整數 | 毫秒直到下一次嘗試 |175| `retry_delay_ms` | 整數 | 毫秒直到下一次嘗試 |

162| `error_status` | 整數或 null | HTTP 狀態碼,或 `null` 表示沒有 HTTP 回應的連線錯誤 |176| `error_status` | 整數或 null | HTTP 狀態碼,或 `null` 表示沒有 HTTP 回應的連線錯誤 |

163| `error` | 字串 | 錯誤類別:`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`rate_limit`、`invalid_request`、`server_error`、`max_output_tokens` 或 `unknown` |177| `error` | 字串 | 錯誤類別:`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`rate_limit`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens` 或 `unknown` |

164| `uuid` | 字串 | 唯一事件識別碼 |178| `uuid` | 字串 | 唯一事件識別碼 |

165| `session_id` | 字串 | 事件所屬的工作階段 |179| `session_id` | 字串 | 事件所屬的工作階段 |

166 180 


185 199 

186如需具有回呼和訊息物件的程式化串流,請參閱 Agent SDK 文件中的 [即時串流回應](/zh-TW/agent-sdk/streaming-output)。200如需具有回呼和訊息物件的程式化串流,請參閱 Agent SDK 文件中的 [即時串流回應](/zh-TW/agent-sdk/streaming-output)。

187 201 

188### 自動核准工具202<h3 id="auto-approve-tools">

203 自動核准工具

204</h3>

189 205 

190使用 `--allowedTools` 讓 Claude 使用某些工具而無需提示。此範例執行測試套件並修復失敗,允許 Claude 執行 Bash 命令和讀取/編輯檔案而無需請求許可:206使用 `--allowedTools` 讓 Claude 使用某些工具而無需提示。此範例執行測試套件並修復失敗,允許 Claude 執行 Bash 命令和讀取/編輯檔案而無需請求許可:

191 207 


200claude -p "Apply the lint fixes" --permission-mode acceptEdits216claude -p "Apply the lint fixes" --permission-mode acceptEdits

201```217```

202 218 

203### 建立提交219<h3 id="create-a-commit">

220 建立提交

221</h3>

204 222 

205此範例檢查暫存的變更並建立具有適當訊息的提交:223此範例檢查暫存的變更並建立具有適當訊息的提交:

206 224 


212`--allowedTools` 旗標使用 [權限規則語法](/zh-TW/settings#permission-rule-syntax)。尾部的 ` *` 啟用前綴匹配,因此 `Bash(git diff *)` 允許任何以 `git diff` 開頭的命令。空格在 `*` 之前很重要:沒有它,`Bash(git diff*)` 也會符合 `git diff-index`。230`--allowedTools` 旗標使用 [權限規則語法](/zh-TW/settings#permission-rule-syntax)。尾部的 ` *` 啟用前綴匹配,因此 `Bash(git diff *)` 允許任何以 `git diff` 開頭的命令。空格在 `*` 之前很重要:沒有它,`Bash(git diff*)` 也會符合 `git diff-index`。

213 231 

214<Note>232<Note>

215 使用者叫用的 [skills](/zh-TW/skills) 如 `/commit` 和 [內建命令](/zh-TW/commands) 僅在互動模式中可用。在 `-p` 模式中,改為描述您想要完成的任務。233 使用者叫用的 [skills](/zh-TW/skills) 如 `/code-review` 和 [內建命令](/zh-TW/commands) 僅在互動模式中可用。在 `-p` 模式中,改為描述您想要完成的任務。

216</Note>234</Note>

217 235 

218### 自訂系統提示236<h3 id="customize-the-system-prompt">

237 自訂系統提示

238</h3>

219 239 

220使用 `--append-system-prompt` 新增指示同時保持 Claude Code 的預設行為。此範例將 PR 差異管道傳送至 Claude 並指示它檢查安全漏洞:240使用 `--append-system-prompt` 新增指示同時保持 Claude Code 的預設行為。此範例將 PR 差異管道傳送至 Claude 並指示它檢查安全漏洞:

221 241 


227 247 

228請參閱 [系統提示旗標](/zh-TW/cli-reference#system-prompt-flags) 以取得更多選項,包括 `--system-prompt` 以完全取代預設提示。248請參閱 [系統提示旗標](/zh-TW/cli-reference#system-prompt-flags) 以取得更多選項,包括 `--system-prompt` 以完全取代預設提示。

229 249 

230### 繼續對話250<h3 id="continue-conversations">

251 繼續對話

252</h3>

231 253 

232使用 `--continue` 繼續最近的對話,或使用 `--resume` 搭配工作階段 ID 以繼續特定對話。此範例執行檢查,然後傳送後續提示:254使用 `--continue` 繼續最近的對話,或使用 `--resume` 搭配工作階段 ID 以繼續特定對話。此範例執行檢查,然後傳送後續提示:

233 255 


247claude -p "Continue that review" --resume "$session_id"269claude -p "Continue that review" --resume "$session_id"

248```270```

249 271 

250## 後續步驟272<h2 id="next-steps">

273 後續步驟

274</h2>

251 275 

252* [Agent SDK 快速入門](/zh-TW/agent-sdk/quickstart):使用 Python 或 TypeScript 建立您的第一個 agent276* [Agent SDK 快速入門](/zh-TW/agent-sdk/quickstart):使用 Python 或 TypeScript 建立您的第一個 agent

253* [CLI 參考](/zh-TW/cli-reference):所有 CLI 旗標和選項277* [CLI 參考](/zh-TW/cli-reference):所有 CLI 旗標和選項

hooks.md +653 −166

Details

12 12 

13Hooks 是使用者定義的 shell 命令、HTTP 端點或 LLM 提示,在 Claude Code 生命週期的特定時間點自動執行。使用此參考來查詢事件架構、配置選項、JSON 輸入/輸出格式,以及非同步 hooks、HTTP hooks 和 MCP 工具 hooks 等進階功能。如果您是第一次設定 hooks,請改為從 [指南](/zh-TW/hooks-guide) 開始。13Hooks 是使用者定義的 shell 命令、HTTP 端點或 LLM 提示,在 Claude Code 生命週期的特定時間點自動執行。使用此參考來查詢事件架構、配置選項、JSON 輸入/輸出格式,以及非同步 hooks、HTTP hooks 和 MCP 工具 hooks 等進階功能。如果您是第一次設定 hooks,請改為從 [指南](/zh-TW/hooks-guide) 開始。

14 14 

15## Hook 生命週期15<h2 id="hook-lifecycle">

16 Hook 生命週期

17</h2>

16 18 

17Hooks 在 Claude Code 工作階段期間的特定時間點觸發。當事件觸發且匹配器匹配時,Claude Code 會將有關該事件的 JSON 上下文傳遞給您的 hook 處理程式。對於命令 hooks,輸入會到達 stdin。對於 HTTP hooks,它會作為 POST 請求正文到達。您的處理程式可以檢查輸入、採取行動,並可選擇性地返回決定。事件分為三種節奏:每個工作階段一次(`SessionStart`、`SessionEnd`)、每個轉向一次(`UserPromptSubmit`、`Stop`、`StopFailure`),以及代理迴圈內每個工具呼叫(`PreToolUse`、`PostToolUse`):19Hooks 在 Claude Code 工作階段期間的特定時間點觸發。當事件觸發且匹配器匹配時,Claude Code 會將有關該事件的 JSON 上下文傳遞給您的 hook 處理程式。對於命令 hooks,輸入會到達 stdin。對於 HTTP hooks,它會作為 POST 請求正文到達。您的處理程式可以檢查輸入、採取行動,並可選擇性地返回決定。事件分為三種節奏:每個工作階段一次(`SessionStart`、`SessionEnd`)、每個轉向一次(`UserPromptSubmit`、`Stop`、`StopFailure`),以及代理迴圈內每個工具呼叫(`PreToolUse`、`PostToolUse`):

18 20 

19<div style={{maxWidth: "500px", margin: "0 auto"}}>21<div style={{maxWidth: "500px", margin: "0 auto"}}>

20 <Frame>22 <Frame>

21 <img src="https://mintcdn.com/claude-code/ZIW26Z9pnpsXLhbS/images/hooks-lifecycle.svg?fit=max&auto=format&n=ZIW26Z9pnpsXLhbS&q=85&s=ee23691324deb6501df09bfdae560b64" alt="Hook 生命週期圖表,顯示可選的 Setup 進入 SessionStart,然後是每個轉向的迴圈,包含 UserPromptSubmit、用於 slash commands 的 UserPromptExpansion、嵌套的代理迴圈(PreToolUse、PermissionRequest、PostToolUse、PostToolUseFailure、PostToolBatch、SubagentStart/Stop、TaskCreated、TaskCompleted)和 Stop 或 StopFailure,接著是 TeammateIdle、PreCompact、PostCompact 和 SessionEnd,Elicitation 和 ElicitationResult 嵌套在 MCP 工具執行內,PermissionDenied 作為 PermissionRequest 的側分支用於自動模式拒絕,WorktreeCreate、WorktreeRemove、Notification、ConfigChange、InstructionsLoaded、CwdChanged 和 FileChanged 作為獨立非同步事件" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />23 <img src="https://mintcdn.com/claude-code/uLsR38F1U_5zPppm/images/hooks-lifecycle.svg?fit=max&auto=format&n=uLsR38F1U_5zPppm&q=85&s=fbdbd78ad9f474da7d344879341341f0" alt="Hook 生命週期圖表,顯示可選的 Setup 進入 SessionStart,然後是每個轉向的迴圈,包含 UserPromptSubmit、用於 slash commands 的 UserPromptExpansion、嵌套的代理迴圈(PreToolUse、PermissionRequest、PostToolUse、PostToolUseFailure、PostToolBatch、SubagentStart/Stop、TaskCreated、TaskCompleted)和 Stop 或 StopFailure,接著是 TeammateIdle、PreCompact、PostCompact 和 SessionEnd,Elicitation 和 ElicitationResult 嵌套在 MCP 工具執行內,PermissionDenied 作為 PermissionRequest 的側分支用於自動模式拒絕,WorktreeCreate、WorktreeRemove、Notification、ConfigChange、InstructionsLoaded、CwdChanged 和 FileChanged 作為獨立非同步事件,以及 MessageDisplay 作為顯示專用事件,在助手訊息文字串流時執行" width="520" height="1228" data-path="images/hooks-lifecycle.svg" />

22 </Frame>24 </Frame>

23</div>25</div>

24 26 

25下表總結了每個事件何時觸發。[Hook 事件](#hook-events) 部分記錄了每個事件的完整輸入架構和決定控制選項。27下表總結了每個事件何時觸發。[Hook 事件](#hook-events)部分記錄了每個事件的完整輸入架構和決定控制選項。

26 28 

27| Event | When it fires |29| Event | When it fires |

28| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |30| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |


37| `PostToolUseFailure` | After a tool call fails |39| `PostToolUseFailure` | After a tool call fails |

38| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |40| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

39| `Notification` | When Claude Code sends a notification |41| `Notification` | When Claude Code sends a notification |

42| `MessageDisplay` | While assistant message text is displayed |

40| `SubagentStart` | When a subagent is spawned |43| `SubagentStart` | When a subagent is spawned |

41| `SubagentStop` | When a subagent finishes |44| `SubagentStop` | When a subagent finishes |

42| `TaskCreated` | When a task is being created via `TaskCreate` |45| `TaskCreated` | When a task is being created via `TaskCreate` |


56| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |59| `ElicitationResult` | After a user responds to an MCP elicitation, before the response is sent back to the server |

57| `SessionEnd` | When a session terminates |60| `SessionEnd` | When a session terminates |

58 61 

59### Hook 如何解析62<h3 id="how-a-hook-resolves">

63 Hook 如何解析

64</h3>

60 65 

61為了了解這些部分如何組合在一起,請考慮此 `PreToolUse` hook,它會阻止破壞性 shell 命令。`matcher` 縮小到 Bash 工具呼叫,`if` 條件進一步縮小到符合 `rm *` 的 Bash 子命令,因此 `block-rm.sh` 僅在兩個篩選器都匹配時才生成:66為了了解這些部分如何組合在一起,請考慮此 `PreToolUse` hook,它會阻止破壞性 shell 命令。`matcher` 縮小到 Bash 工具呼叫,`if` 條件進一步縮小到符合 `rm *` 的 Bash 子命令,因此 `block-rm.sh` 僅在兩個篩選器都匹配時才生成:

62 67 


96 }101 }

97 }'102 }'

98else103else

99 exit 0 # allow the command104 exit 0 # no decision; normal permission flow applies

100fi105fi

101```106```

102 107 


136 }141 }

137 ```142 ```

138 143 

139 如果命令是更安全的 `rm` 變體,如 `rm file.txt`,指令碼會改為執行 `exit 0`,這告訴 Claude Code 允許工具呼叫而無需進一步操作144 如果命令是更安全的 `rm` 變體,如 `rm file.txt`,指令碼會改為執行 `exit 0`。Exit code 0 且沒有輸出表示 hook 沒有決定要報告,因此工具呼叫會繼續通過正常的[權限流程](/zh-TW/permissions)Hook 可以拒絕呼叫,但保持沉默不會批准它。

140 </Step>145 </Step>

141 146 

142 <Step title="Claude Code 根據結果採取行動">147 <Step title="Claude Code 根據結果採取行動">


144 </Step>149 </Step>

145</Steps>150</Steps>

146 151 

147下面的 [配置](#configuration) 部分記錄了完整架構,每個 [hook 事件](#hook-events) 部分記錄了您的命令接收的輸入以及它可以返回的輸出。152下面的[配置](#configuration)部分記錄了完整架構,每個 [hook 事件](#hook-events)部分記錄了您的命令接收的輸入以及它可以返回的輸出。

148 153 

149## 配置154<h2 id="configuration">

155 配置

156</h2>

150 157 

151Hooks 在 JSON 設定檔中定義。配置有三個嵌套層級:158Hooks 在 JSON 設定檔中定義。配置有三個嵌套層級:

152 159 


160 此頁面為每個層級使用特定術語:**hook 事件**表示生命週期點,**匹配器群組**表示篩選器,**hook 處理程式**表示執行的 shell 命令、HTTP 端點、MCP 工具、提示或代理。'Hook'本身指的是一般功能。167 此頁面為每個層級使用特定術語:**hook 事件**表示生命週期點,**匹配器群組**表示篩選器,**hook 處理程式**表示執行的 shell 命令、HTTP 端點、MCP 工具、提示或代理。'Hook'本身指的是一般功能。

161</Note>168</Note>

162 169 

163### Hook 位置170<h3 id="hook-locations">

171 Hook 位置

172</h3>

164 173 

165您定義 hook 的位置決定了其範圍:174您定義 hook 的位置決定了其範圍:

166 175 


175 184 

176有關設定檔解析的詳細資訊,請參閱 [settings](/zh-TW/settings)。企業管理員可以使用 `allowManagedHooksOnly` 來阻止使用者、專案和外掛程式 hooks。在受管理的設定 `enabledPlugins` 中強制啟用的外掛程式的 Hooks 是例外,因此管理員可以通過組織市場分發經過驗證的 hooks。請參閱 [Hook 配置](/zh-TW/settings#hook-configuration)。185有關設定檔解析的詳細資訊,請參閱 [settings](/zh-TW/settings)。企業管理員可以使用 `allowManagedHooksOnly` 來阻止使用者、專案和外掛程式 hooks。在受管理的設定 `enabledPlugins` 中強制啟用的外掛程式的 Hooks 是例外,因此管理員可以通過組織市場分發經過驗證的 hooks。請參閱 [Hook 配置](/zh-TW/settings#hook-configuration)。

177 186 

178### 匹配器模式187<h3 id="matcher-patterns">

188 匹配器模式

189</h3>

179 190 

180`matcher` 欄位篩選 hooks 何時觸發。匹配器的評估方式取決於它包含的字元:191`matcher` 欄位篩選 hooks 何時觸發。匹配器的評估方式取決於它包含的字元:

181 192 


190每個事件類型在不同的欄位上匹配:201每個事件類型在不同的欄位上匹配:

191 202 

192| 事件 | 匹配器篩選的內容 | 範例匹配器值 |203| 事件 | 匹配器篩選的內容 | 範例匹配器值 |

193| :----------------------------------------------------------------------------------------------------------------------- | :---------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |204| :---------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

194| `PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest`、`PermissionDenied` | 工具名稱 | `Bash`、`Edit\|Write`、`mcp__.*` |205| `PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest`、`PermissionDenied` | 工具名稱 | `Bash`、`Edit\|Write`、`mcp__.*` |

195| `SessionStart` | 工作階段如何開始 | `startup`、`resume`、`clear`、`compact` |206| `SessionStart` | 工作階段如何開始 | `startup`、`resume`、`clear`、`compact` |

196| `Setup` | 哪個 CLI 旗標觸發設定 | `init`、`maintenance` |207| `Setup` | 哪個 CLI 旗標觸發設定 | `init`、`maintenance` |


202| `ConfigChange` | 配置來源 | `user_settings`、`project_settings`、`local_settings`、`policy_settings`、`skills` |213| `ConfigChange` | 配置來源 | `user_settings`、`project_settings`、`local_settings`、`policy_settings`、`skills` |

203| `CwdChanged` | 不支援匹配器 | 總是在每次目錄變更時觸發 |214| `CwdChanged` | 不支援匹配器 | 總是在每次目錄變更時觸發 |

204| `FileChanged` | 要監視的檔案名稱(請參閱 [FileChanged](#filechanged)) | `.envrc\|.env` |215| `FileChanged` | 要監視的檔案名稱(請參閱 [FileChanged](#filechanged)) | `.envrc\|.env` |

205| `StopFailure` | 錯誤類型 | `rate_limit`、`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`invalid_request`、`server_error`、`max_output_tokens`、`unknown` |216| `StopFailure` | 錯誤類型 | `rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`unknown` |

206| `InstructionsLoaded` | 載入原因 | `session_start`、`nested_traversal`、`path_glob_match`、`include`、`compact` |217| `InstructionsLoaded` | 載入原因 | `session_start`、`nested_traversal`、`path_glob_match`、`include`、`compact` |

207| `UserPromptExpansion` | 命令名稱 | 您的 skill 或命令名稱 |218| `UserPromptExpansion` | 命令名稱 | 您的 skill 或命令名稱 |

208| `Elicitation` | MCP 伺服器名稱 | 您配置的 MCP 伺服器名稱 |219| `Elicitation` | MCP 伺服器名稱 | 您配置的 MCP 伺服器名稱 |

209| `ElicitationResult` | MCP 伺服器名稱 | 與 `Elicitation` 相同的值 |220| `ElicitationResult` | MCP 伺服器名稱 | 與 `Elicitation` 相同的值 |

210| `UserPromptSubmit`、`PostToolBatch`、`Stop`、`TeammateIdle`、`TaskCreated`、`TaskCompleted`、`WorktreeCreate`、`WorktreeRemove` | 不支援匹配器 | 總是在每次出現時觸發 |221| `UserPromptSubmit`、`PostToolBatch`、`Stop`、`TeammateIdle`、`TaskCreated`、`TaskCompleted`、`WorktreeCreate`、`WorktreeRemove`、`MessageDisplay` | 不支援匹配器 | 總是在每次出現時觸發 |

211 222 

212匹配器針對 Claude Code 在 stdin 上發送給您的 hook 的 [JSON 輸入](#hook-input-and-output) 中的欄位執行。對於工具事件,該欄位是 `tool_name`。每個 [hook 事件](#hook-events) 部分列出了該事件的完整匹配器值集和輸入架構。223匹配器針對 Claude Code 在 stdin 上發送給您的 hook 的 [JSON 輸入](#hook-input-and-output) 中的欄位執行。對於工具事件,該欄位是 `tool_name`。每個 [hook 事件](#hook-events) 部分列出了該事件的完整匹配器值集和輸入架構。

213 224 


235 246 

236對於工具事件,您可以通過在個別 hook 處理程式上設定 [`if` 欄位](#common-fields) 來更狹隘地篩選。`if` 使用 [權限規則語法](/zh-TW/permissions) 來匹配工具名稱和參數,因此 `"Bash(git *)"` 僅在任何 Bash 輸入的子命令匹配 `git *` 時執行,`"Edit(*.ts)"` 僅針對 TypeScript 檔案執行。247對於工具事件,您可以通過在個別 hook 處理程式上設定 [`if` 欄位](#common-fields) 來更狹隘地篩選。`if` 使用 [權限規則語法](/zh-TW/permissions) 來匹配工具名稱和參數,因此 `"Bash(git *)"` 僅在任何 Bash 輸入的子命令匹配 `git *` 時執行,`"Edit(*.ts)"` 僅針對 TypeScript 檔案執行。

237 248 

238#### 匹配 MCP 工具249<h4 id="match-mcp-tools">

250 匹配 MCP 工具

251</h4>

239 252 

240[MCP](/zh-TW/mcp) 伺服器工具在工具事件中顯示為常規工具(`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest`、`PermissionDenied`),因此您可以像匹配任何其他工具名稱一樣匹配它們。253[MCP](/zh-TW/mcp) 伺服器工具在工具事件中顯示為常規工具(`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest`、`PermissionDenied`),因此您可以像匹配任何其他工具名稱一樣匹配它們。

241 254 


279}292}

280```293```

281 294 

282### Hook 處理程式欄位295<h3 id="hook-handler-fields">

296 Hook 處理程式欄位

297</h3>

283 298 

284內部 `hooks` 陣列中的每個物件都是一個 hook 處理程式:當匹配器匹配時執行的 shell 命令、HTTP 端點、MCP 工具、LLM 提示或代理。有五種類型:299內部 `hooks` 陣列中的每個物件都是一個 hook 處理程式:當匹配器匹配時執行的 shell 命令、HTTP 端點、MCP 工具、LLM 提示或代理。有五種類型:

285 300 


289* **[提示 hooks](#prompt-and-agent-hook-fields)**(`type: "prompt"`):將提示發送到 Claude 模型進行單輪評估。模型以 JSON 形式返回是/否決定。請參閱 [基於提示的 hooks](#prompt-based-hooks)。304* **[提示 hooks](#prompt-and-agent-hook-fields)**(`type: "prompt"`):將提示發送到 Claude 模型進行單輪評估。模型以 JSON 形式返回是/否決定。請參閱 [基於提示的 hooks](#prompt-based-hooks)。

290* **[代理 hooks](#prompt-and-agent-hook-fields)**(`type: "agent"`):生成一個可以使用 Read、Grep 和 Glob 等工具來驗證條件的 subagent,然後返回決定。代理 hooks 是實驗性的,可能會變更。請參閱 [基於代理的 hooks](#agent-based-hooks)。305* **[代理 hooks](#prompt-and-agent-hook-fields)**(`type: "agent"`):生成一個可以使用 Read、Grep 和 Glob 等工具來驗證條件的 subagent,然後返回決定。代理 hooks 是實驗性的,可能會變更。請參閱 [基於代理的 hooks](#agent-based-hooks)。

291 306 

292#### 通用欄位307<h4 id="common-fields">

308 通用欄位

309</h4>

293 310 

294這些欄位適用於所有 hook 類型:311這些欄位適用於所有 hook 類型:

295 312 


297| :-------------- | :- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |314| :-------------- | :- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

298| `type` | 是 | `"command"`、`"http"`、`"mcp_tool"`、`"prompt"` 或 `"agent"` |315| `type` | 是 | `"command"`、`"http"`、`"mcp_tool"`、`"prompt"` 或 `"agent"` |

299| `if` | 否 | 權限規則語法以篩選此 hook 何時執行,例如 `"Bash(git *)"` 或 `"Edit(*.ts)"`。Hook 僅在工具呼叫匹配模式時生成,或當 Bash 命令太複雜而無法解析時。僅在工具事件上評估:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。在其他事件上,設定 `if` 的 hook 永遠不會執行。使用與 [權限規則](/zh-TW/permissions) 相同的語法 |316| `if` | 否 | 權限規則語法以篩選此 hook 何時執行,例如 `"Bash(git *)"` 或 `"Edit(*.ts)"`。Hook 僅在工具呼叫匹配模式時生成,或當 Bash 命令太複雜而無法解析時。僅在工具事件上評估:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。在其他事件上,設定 `if` 的 hook 永遠不會執行。使用與 [權限規則](/zh-TW/permissions) 相同的語法 |

300| `timeout` | 否 | 取消前的秒數。預設值:`command`、`http` 和 `mcp_tool` 為 600;`prompt` 為 30;`agent` 為 60。[`UserPromptSubmit`](#userpromptsubmit) 將 `command`、`http` 和 `mcp_tool` 的預設值降低到 30 |317| `timeout` | 否 | 取消前的秒數。預設值:`command`、`http` 和 `mcp_tool` 為 600;`prompt` 為 30;`agent` 為 60。[`UserPromptSubmit`](#userpromptsubmit) 將 `command`、`http` 和 `mcp_tool` 的預設值降低到 30,[`MessageDisplay`](#messagedisplay) 將其降低到 10 |

301| `statusMessage` | 否 | hook 執行時顯示的自訂微調訊息 |318| `statusMessage` | 否 | hook 執行時顯示的自訂微調訊息 |

302| `once` | 否 | 如果為 `true`,每個工作階段只執行一次,然後被移除。僅在 [skill frontmatter](#hooks-in-skills-and-agents) 中受尊重;在設定檔和代理 frontmatter 中被忽略 |319| `once` | 否 | 如果為 `true`,每個工作階段只執行一次,然後被移除。僅在 [skill frontmatter](#hooks-in-skills-and-agents) 中受尊重;在設定檔和代理 frontmatter 中被忽略 |

303 320 

304`if` 欄位恰好包含一個權限規則。沒有 `&&`、`||` 或清單語法來組合規則;要應用多個條件,請為每個條件定義一個單獨的 hook 處理程式。對於 Bash,規則會針對工具輸入的每個子命令進行匹配,在去除前導 `VAR=value` 指派後,因此 `if: "Bash(git push *)"` 同時匹配 `FOO=bar git push` 和 `npm test && git push`。如果任何子命令匹配,hook 會執行,並且當命令太複雜而無法解析時總是執行。321`if` 欄位恰好包含一個權限規則。沒有 `&&`、`||` 或清單語法來組合規則;要應用多個條件,請為每個條件定義一個單獨的 hook 處理程式。對於 Bash,規則會針對工具輸入的每個子命令進行匹配,在去除前導 `VAR=value` 指派後,因此 `if: "Bash(git push *)"` 同時匹配 `FOO=bar git push` 和 `npm test && git push`。如果任何子命令匹配,hook 會執行,並且當命令太複雜而無法解析時總是執行。

305 322 

306#### 命令 hook 欄位323<h4 id="command-hook-fields">

324 命令 hook 欄位

325</h4>

307 326 

308除了 [通用欄位](#common-fields) 外,命令 hooks 還接受這些欄位:327除了 [通用欄位](#common-fields) 外,命令 hooks 還接受這些欄位:

309 328 


317 336 

318<a id="exec-form-and-shell-form" />337<a id="exec-form-and-shell-form" />

319 338 

320##### Exec 形式和 shell 形式339<h5 id="exec-form-and-shell-form">

340 Exec 形式和 shell 形式

341</h5>

321 342 

322當設定 `args` 時,命令 hook 以 exec 形式執行,當省略 `args` 時以 shell 形式執行。每當 hook 參考 [路徑佔位符](#reference-scripts-by-path) 時設定 `args`,因為每個元素作為一個參數傳遞,不進行引用。當您需要 shell 功能(如管道或 `&&`)時,或當兩個問題都不適用時,省略 `args`。343當設定 `args` 時,命令 hook 以 exec 形式執行,當省略 `args` 時以 shell 形式執行。每當 hook 參考 [路徑佔位符](#reference-scripts-by-path) 時設定 `args`,因為每個元素作為一個參數傳遞,不進行引用。當您需要 shell 功能(如管道或 `&&`)時,或當兩個問題都不適用時,省略 `args`。

323 344 


354 在 exec 形式中,`command` 僅是可執行檔名稱或路徑。如果 `command` 是沒有路徑分隔符的裸名稱,並且與 `args` 一起包含空格,Claude Code 會記錄警告,因為生成將失敗:沒有名為 `node script.js` 的可執行檔。將額外的令牌移到 `args` 中。包含空格的絕對路徑,如 `C:\Program Files\nodejs\node.exe`,是單個有效的可執行檔,不會觸發警告。375 在 exec 形式中,`command` 僅是可執行檔名稱或路徑。如果 `command` 是沒有路徑分隔符的裸名稱,並且與 `args` 一起包含空格,Claude Code 會記錄警告,因為生成將失敗:沒有名為 `node script.js` 的可執行檔。將額外的令牌移到 `args` 中。包含空格的絕對路徑,如 `C:\Program Files\nodejs\node.exe`,是單個有效的可執行檔,不會觸發警告。

355</Note>376</Note>

356 377 

357#### HTTP hook 欄位378<h4 id="http-hook-fields">

379 HTTP hook 欄位

380</h4>

358 381 

359除了 [通用欄位](#common-fields) 外,HTTP hooks 還接受這些欄位:382除了 [通用欄位](#common-fields) 外,HTTP hooks 還接受這些欄位:

360 383 


393}416}

394```417```

395 418 

396#### MCP 工具 hook 欄位419<h4 id="mcp-tool-hook-fields">

420 MCP 工具 hook 欄位

421</h4>

397 422 

398除了 [通用欄位](#common-fields) 外,MCP 工具 hooks 還接受這些欄位:423除了 [通用欄位](#common-fields) 外,MCP 工具 hooks 還接受這些欄位:

399 424 


429}454}

430```455```

431 456 

432#### 提示和代理 hook 欄位457<h4 id="prompt-and-agent-hook-fields">

458 提示和代理 hook 欄位

459</h4>

433 460 

434除了 [通用欄位](#common-fields) 外,提示和代理 hooks 還接受這些欄位:461除了 [通用欄位](#common-fields) 外,提示和代理 hooks 還接受這些欄位:

435 462 


440 467 

441所有匹配的 hooks 並行執行,相同的處理程式會自動去重。命令 hooks 按命令字串和 `args` 去重,HTTP hooks 按 URL 去重。處理程式在目前目錄中執行,使用 Claude Code 的環境。在遠端網路環境中,`$CLAUDE_CODE_REMOTE` 環境變數設定為 `"true"`,在本機 CLI 中未設定。468所有匹配的 hooks 並行執行,相同的處理程式會自動去重。命令 hooks 按命令字串和 `args` 去重,HTTP hooks 按 URL 去重。處理程式在目前目錄中執行,使用 Claude Code 的環境。在遠端網路環境中,`$CLAUDE_CODE_REMOTE` 環境變數設定為 `"true"`,在本機 CLI 中未設定。

442 469 

443### 按路徑參考指令碼470<h3 id="reference-scripts-by-path">

471 按路徑參考指令碼

472</h3>

444 473 

445使用這些佔位符按相對於專案或外掛程式根目錄的路徑參考 hook 指令碼,無論 hook 執行時的工作目錄如何:474使用這些佔位符按相對於專案或外掛程式根目錄的路徑參考 hook 指令碼,無論 hook 執行時的工作目錄如何:

446 475 

447* `${CLAUDE_PROJECT_DIR}`:專案根目錄。476* `${CLAUDE_PROJECT_DIR}`:專案根目錄。Claude Code 也在 [stdio MCP 伺服器](/zh-TW/mcp#option-3-add-a-local-stdio-server) 和外掛程式 LSP 伺服器的環境中設定此變數。

448* `${CLAUDE_PLUGIN_ROOT}`:外掛程式的安裝目錄,用於與 [plugin](/zh-TW/plugins) 一起打包的指令碼。在每次外掛程式更新時變更。477* `${CLAUDE_PLUGIN_ROOT}`:外掛程式的安裝目錄,用於與 [plugin](/zh-TW/plugins) 一起打包的指令碼。在每次外掛程式更新時變更。

449* `${CLAUDE_PLUGIN_DATA}`:外掛程式的 [持久資料目錄](/zh-TW/plugins-reference#persistent-data-directory),用於應該在外掛程式更新後保留的依賴項和狀態。478* `${CLAUDE_PLUGIN_DATA}`:外掛程式的 [持久資料目錄](/zh-TW/plugins-reference#persistent-data-directory),用於應該在外掛程式更新後保留的依賴項和狀態。

450 479 


504 </Tab>533 </Tab>

505</Tabs>534</Tabs>

506 535 

507### Skills 和代理中的 Hooks536<h3 id="hooks-in-skills-and-agents">

537 Skills 和代理中的 Hooks

538</h3>

508 539 

509除了設定檔和外掛程式外,hooks 還可以使用 frontmatter 直接在 [skills](/zh-TW/skills) 和 [subagents](/zh-TW/sub-agents) 中定義。這些 hooks 的範圍限於元件的生命週期,只有在該元件處於活動狀態時才執行。540除了設定檔和外掛程式外,hooks 還可以使用 frontmatter 直接在 [skills](/zh-TW/skills) 和 [subagents](/zh-TW/sub-agents) 中定義。這些 hooks 的範圍限於元件的生命週期,只有在該元件處於活動狀態時才執行。

510 541 


529 560 

530代理在其 YAML frontmatter 中使用相同的格式。561代理在其 YAML frontmatter 中使用相同的格式。

531 562 

532### `/hooks` 選單563<h3 id="the-/hooks-menu">

564 `/hooks` 選單

565</h3>

533 566 

534在 Claude Code 中輸入 `/hooks` 以開啟唯讀瀏覽器來查看您配置的 hooks。選單顯示每個 hook 事件及其配置的 hooks 計數,讓您深入查看匹配器,並顯示每個 hook 處理程式的完整詳細資訊。使用它來驗證配置、檢查 hook 來自哪個設定檔,或檢查 hook 的命令、提示或 URL。567在 Claude Code 中輸入 `/hooks` 以開啟唯讀瀏覽器來查看您配置的 hooks。選單顯示每個 hook 事件及其配置的 hooks 計數,讓您深入查看匹配器,並顯示每個 hook 處理程式的完整詳細資訊。使用它來驗證配置、檢查 hook 來自哪個設定檔,或檢查 hook 的命令、提示或 URL。

535 568 


544 577 

545選擇 hook 會開啟詳細檢視,顯示其事件、匹配器、類型、來源檔案和完整命令、提示或 URL。選單是唯讀的:要新增、修改或移除 hooks,請直接編輯設定 JSON 或要求 Claude 進行變更。578選擇 hook 會開啟詳細檢視,顯示其事件、匹配器、類型、來源檔案和完整命令、提示或 URL。選單是唯讀的:要新增、修改或移除 hooks,請直接編輯設定 JSON 或要求 Claude 進行變更。

546 579 

547### 停用或移除 hooks580<h3 id="disable-or-remove-hooks">

581 停用或移除 hooks

582</h3>

548 583 

549要移除 hook,請從設定 JSON 檔案中刪除其項目。584要移除 hook,請從設定 JSON 檔案中刪除其項目。

550 585 


554 589 

555對設定檔中 hooks 的直接編輯通常由檔案監視程式自動拾取。590對設定檔中 hooks 的直接編輯通常由檔案監視程式自動拾取。

556 591 

557## Hook 輸入和輸出592<h2 id="hook-input-and-output">

593 Hook 輸入和輸出

594</h2>

558 595 

559命令 hooks 通過 stdin 接收 JSON 資料,並通過退出代碼、stdout 和 stderr 傳回結果。HTTP hooks 接收相同的 JSON 作為 POST 請求正文,並通過 HTTP 回應正文傳回結果。本部分涵蓋所有事件通用的欄位和行為。每個事件在 [Hook 事件](#hook-events) 下的部分包括其特定的輸入架構和決定控制選項。596命令 hooks 通過 stdin 接收 JSON 資料,並通過退出代碼、stdout 和 stderr 傳回結果。HTTP hooks 接收相同的 JSON 作為 POST 請求正文,並通過 HTTP 回應正文傳回結果。本部分涵蓋所有事件通用的欄位和行為。每個事件在 [Hook 事件](#hook-events) 下的部分包括其特定的輸入架構和決定控制選項。

560 597 

561在 macOS 和 Linux 上,自 v2.1.139 起,命令 hooks 在沒有控制終端的自己的工作階段中執行。Hook 程序和任何子程序無法開啟 `/dev/tty` 或直接向 Claude Code 介面發送逃逸序列。Windows 沒有 `/dev/tty`。要在任何平台上向使用者顯示訊息,請在 JSON 輸出中返回 [`systemMessage`](#json-output)。要觸發桌面通知、設定視窗標題或響鈴,請改為返回 [`terminalSequence`](#emit-terminal-notifications)。598在 macOS 和 Linux 上,自 v2.1.139 起,命令 hooks 在沒有控制終端的自己的工作階段中執行。Hook 程序和任何子程序無法開啟 `/dev/tty` 或直接向 Claude Code 介面發送逃逸序列。Windows 沒有 `/dev/tty`。要在任何平台上向使用者顯示訊息,請在 JSON 輸出中返回 [`systemMessage`](#json-output)。要觸發桌面通知、設定視窗標題或響鈴,請改為返回 [`terminalSequence`](#emit-terminal-notifications)。

562 599 

563### 通用輸入欄位600<h3 id="common-input-fields">

601 通用輸入欄位

602</h3>

564 603 

565Hook 事件接收這些欄位作為 JSON,除了每個 [hook 事件](#hook-events) 部分中記錄的事件特定欄位。對於命令 hooks,此 JSON 通過 stdin 到達。對於 HTTP hooks,它作為 POST 請求正文到達。604Hook 事件接收這些欄位作為 JSON,除了每個 [hook 事件](#hook-events) 部分中記錄的事件特定欄位。對於命令 hooks,此 JSON 通過 stdin 到達。對於 HTTP hooks,它作為 POST 請求正文到達。

566 605 

567| 欄位 | 描述 |606| 欄位 | 描述 |

568| :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |607| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

569| `session_id` | 目前工作階段識別碼 |608| `session_id` | 目前工作階段識別碼 |

570| `transcript_path` | 對話 JSON 的路徑 |609| `transcript_path` | 對話 JSON 的路徑 |

571| `cwd` | 叫用 hook 時的目前工作目錄 |610| `cwd` | 叫用 hook 時的目前工作目錄 |

572| `permission_mode` | 目前 [權限模式](/zh-TW/permissions#permission-modes):`"default"`、`"plan"`、`"acceptEdits"`、`"auto"`、`"dontAsk"` 或 `"bypassPermissions"`。並非所有事件都接收此欄位:請參閱下面每個事件的 JSON 範例以檢查 |611| `permission_mode` | 目前 [權限模式](/zh-TW/permissions#permission-modes):`"default"`、`"plan"`、`"acceptEdits"`、`"auto"`、`"dontAsk"` 或 `"bypassPermissions"`。並非所有事件都接收此欄位:請參閱下面每個事件的 JSON 範例以檢查 |

573| `effort` | 物件,其 `level` 欄位保存該回合的活躍 [努力等級](/zh-TW/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。如果請求的努力等級超過目前模型支援的等級,這是模型實際使用的降級等級,而不是您請求的等級。該物件與 [狀態行](/zh-TW/statusline#available-data) `effort` 欄位相符。存在於在工具使用上下文中觸發的事件,例如 `PreToolUse`、`PostToolUse`、`Stop` 和 `SubagentStop`,當目前模型支援努力參數時。該等級也可作為 `$CLAUDE_EFFORT` 環境變數提供給 hook 命令和 Bash 工具。 |612| `effort` | 物件,其 `level` 欄位保存該回合的活躍 [努力等級](/zh-TW/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。如果請求的模型努力等級超過目前模型支援的等級,這是模型實際使用的降級等級。Ultracode 不是一個不同的等級報告為 `"xhigh"`。該物件與 [狀態行](/zh-TW/statusline#available-data) `effort` 欄位相符。存在於在工具使用上下文中觸發的事件,例如 `PreToolUse`、`PostToolUse`、`Stop` 和 `SubagentStop`,當目前模型支援努力參數時。該等級也可作為 `$CLAUDE_EFFORT` 環境變數提供給 hook 命令和 Bash 工具。 |

574| `hook_event_name` | 觸發的事件名稱 |613| `hook_event_name` | 觸發的事件名稱 |

575 614 

576使用 `--agent` 執行或在 subagent 內執行時,包括兩個額外欄位:615使用 `--agent` 執行或在 subagent 內執行時,包括兩個額外欄位:


600 639 

601`tool_name` 和 `tool_input` 欄位是事件特定的。每個 [hook 事件](#hook-events) 部分記錄了該事件的額外欄位。640`tool_name` 和 `tool_input` 欄位是事件特定的。每個 [hook 事件](#hook-events) 部分記錄了該事件的額外欄位。

602 641 

603### 退出代碼輸出642<h3 id="exit-code-output">

643 退出代碼輸出

644</h3>

604 645 

605來自您的 hook 命令的退出代碼告訴 Claude Code 該操作是應該進行、被阻止還是被忽略。646來自您的 hook 命令的退出代碼告訴 Claude Code 該操作是應該進行、被阻止還是被忽略。

606 647 


622 exit 2 # 阻止性錯誤:工具呼叫被阻止663 exit 2 # 阻止性錯誤:工具呼叫被阻止

623fi664fi

624 665 

625exit 0 # 成功工具呼叫進行666exit 0 # 無決定正常權限流程適用

626```667```

627 668 

628<Warning>669<Warning>

629 對於大多數 hook 事件,只有退出代碼 2 會阻止操作。Claude Code 將退出代碼 1 視為非阻止性錯誤並繼續操作,儘管 1 是傳統的 Unix 失敗代碼。如果您的 hook 旨在強制執行原則,請使用 `exit 2`。例外是 `WorktreeCreate`,其中任何非零退出代碼都會中止 worktree 建立。670 對於大多數 hook 事件,只有退出代碼 2 會阻止操作。Claude Code 將退出代碼 1 視為非阻止性錯誤並繼續操作,儘管 1 是傳統的 Unix 失敗代碼。如果您的 hook 旨在強制執行原則,請使用 `exit 2`。例外是 `WorktreeCreate`,其中任何非零退出代碼都會中止 worktree 建立。

630</Warning>671</Warning>

631 672 

632#### 每個事件的退出代碼 2 行為673<h4 id="exit-code-2-behavior-per-event">

674 每個事件的退出代碼 2 行為

675</h4>

633 676 

634退出代碼 2 是 hook 發出「停止,不要這樣做」的方式。效果取決於事件,因為某些事件代表可以被阻止的操作(例如尚未發生的工具呼叫),而其他事件代表已經發生或無法防止的事情。677退出代碼 2 是 hook 發出「停止,不要這樣做」的方式。效果取決於事件,因為某些事件代表可以被阻止的操作(例如尚未發生的工具呼叫),而其他事件代表已經發生或無法防止的事情。

635 678 


664| `WorktreeCreate` | 是 | 任何非零退出代碼都會導致 worktree 建立失敗 |707| `WorktreeCreate` | 是 | 任何非零退出代碼都會導致 worktree 建立失敗 |

665| `WorktreeRemove` | 否 | 失敗僅在偵錯模式中記錄 |708| `WorktreeRemove` | 否 | 失敗僅在偵錯模式中記錄 |

666| `InstructionsLoaded` | 否 | 退出代碼被忽略 |709| `InstructionsLoaded` | 否 | 退出代碼被忽略 |

710| `MessageDisplay` | 否 | 原始文字被顯示 |

667 711 

668### HTTP 回應處理712<h3 id="http-response-handling">

713 HTTP 回應處理

714</h3>

669 715 

670HTTP hooks 使用 HTTP 狀態代碼和回應正文,而不是退出代碼和 stdout:716HTTP hooks 使用 HTTP 狀態代碼和回應正文,而不是退出代碼和 stdout:

671 717 


677 723 

678與命令 hooks 不同,HTTP hooks 無法僅通過狀態代碼發出阻止性錯誤信號。要阻止工具呼叫或拒絕權限,請返回 2xx 回應,其 JSON 正文包含適當的決定欄位。724與命令 hooks 不同,HTTP hooks 無法僅通過狀態代碼發出阻止性錯誤信號。要阻止工具呼叫或拒絕權限,請返回 2xx 回應,其 JSON 正文包含適當的決定欄位。

679 725 

680### JSON 輸出726<h3 id="json-output">

727 JSON 輸出

728</h3>

681 729 

682退出代碼讓您允許或阻止,但 JSON 輸出提供更細粒度的控制。與其以代碼 2 退出來阻止,不如以 0 退出並將 JSON 物件列印到 stdout。Claude Code 從該 JSON 讀取特定欄位以控制行為,包括 [決定控制](#decision-control) 以阻止、允許或升級給使用者。730退出代碼讓您允許或阻止,但 JSON 輸出提供更細粒度的控制。與其以代碼 2 退出來阻止,不如以 0 退出並將 JSON 物件列印到 stdout。Claude Code 從該 JSON 讀取特定欄位以控制行為,包括 [決定控制](#decision-control) 以阻止、允許或升級給使用者。

683 731 


699| :----------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------ |747| :----------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------ |

700| `continue` | `true` | 如果為 `false`,Claude 在 hook 執行後完全停止處理。優先於任何事件特定的決定欄位 |748| `continue` | `true` | 如果為 `false`,Claude 在 hook 執行後完全停止處理。優先於任何事件特定的決定欄位 |

701| `stopReason` | 無 | 當 `continue` 為 `false` 時向使用者顯示的訊息。不向 Claude 顯示 |749| `stopReason` | 無 | 當 `continue` 為 `false` 時向使用者顯示的訊息。不向 Claude 顯示 |

702| `suppressOutput` | `false` | 如果為 `true`,隱藏詳細日誌中的 stdout |750| `suppressOutput` | `false` | 如果為 `true`,隱藏詳細日誌中的 hook stdout |

703| `systemMessage` | 無 | 向使用者顯示的警告訊息 |751| `systemMessage` | 無 | 向使用者顯示的警告訊息 |

704| `terminalSequence` | 無 | Claude Code 代表您發出的終端逃逸序列,例如桌面通知、視窗標題或響鈴。限制為 OSC `0`/`1`/`2`/`9`/`99`/`777` 和 BEL。如果值包含允許清單外的任何內容,該欄位將被忽略。使用此項而不是寫入 `/dev/tty`,後者對 hooks 不可用 |752| `terminalSequence` | 無 | Claude Code 代表您發出的終端逃逸序列,例如桌面通知、視窗標題或響鈴。限制為 OSC `0`/`1`/`2`/`9`/`99`/`777` 和 BEL。如果值包含允許清單外的任何內容,該欄位將被忽略。使用此項而不是寫入 `/dev/tty`,後者對 hooks 不可用 |

705 753 


709{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }757{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

710```758```

711 759 

712#### 發出終端通知760<h4 id="emit-terminal-notifications">

761 發出終端通知

762</h4>

713 763 

714`terminalSequence` 欄位需要 Claude Code v2.1.141 或更新版本。764`terminalSequence` 欄位需要 Claude Code v2.1.141 或更新版本。

715 765 


743 `terminalSequence` 是之前直接寫入逃逸序列到 `/dev/tty` 的 hooks 的支援替代品。允許清單限制為無法移動游標或改變顏色的序列,因此 hook 永遠無法損壞螢幕上的提示。793 `terminalSequence` 是之前直接寫入逃逸序列到 `/dev/tty` 的 hooks 的支援替代品。允許清單限制為無法移動游標或改變顏色的序列,因此 hook 永遠無法損壞螢幕上的提示。

744</Note>794</Note>

745 795 

746#### 為 Claude 新增上下文796<h4 id="add-context-for-claude">

797 為 Claude 新增上下文

798</h4>

747 799 

748`additionalContext` 欄位將字串從您的 hook 傳遞到 Claude 的上下文視窗。Claude Code 將字串包裝在系統提醒中,並將其插入到 hook 觸發的對話點。Claude 在下一個模型請求時讀取提醒,但它不會在介面中顯示為聊天訊息。800`additionalContext` 欄位將字串從您的 hook 傳遞到 Claude 的上下文視窗。Claude Code 將字串包裝在系統提醒中,並將其插入到 hook 觸發的對話點。Claude 在下一個模型請求時讀取提醒,但它不會在介面中顯示為聊天訊息。

749 801 


778 830 

779注入後,文字會儲存在工作階段成績單中。對於 `PostToolUse` 或 `UserPromptSubmit` 等中期事件,使用 `--continue` 或 `--resume` 繼續會重播儲存的文字,而不是為過去的回合重新執行 hook,因此時間戳或提交 SHA 等值在繼續時變得陳舊。`SessionStart` hooks 在使用 `source` 設定為 `"resume"` 的 `--resume` 時再次執行,因此它們可以刷新其上下文。831注入後,文字會儲存在工作階段成績單中。對於 `PostToolUse` 或 `UserPromptSubmit` 等中期事件,使用 `--continue` 或 `--resume` 繼續會重播儲存的文字,而不是為過去的回合重新執行 hook,因此時間戳或提交 SHA 等值在繼續時變得陳舊。`SessionStart` hooks 在使用 `source` 設定為 `"resume"` 的 `--resume` 時再次執行,因此它們可以刷新其上下文。

780 832 

781#### 決定控制833<h4 id="decision-control">

834 決定控制

835</h4>

782 836 

783並非每個事件都支援阻止或通過 JSON 控制行為。支援的事件各自使用不同的欄位集來表達該決定。在編寫 hook 之前,使用此表作為快速參考:837並非每個事件都支援阻止或通過 JSON 控制行為。支援的事件各自使用不同的欄位集來表達該決定。在編寫 hook 之前,使用此表作為快速參考:

784 838 

785| 事件 | 決定模式 | 關鍵欄位 |839| 事件 | 決定模式 | 關鍵欄位 |

786| :-------------------------------------------------------------------------------------------------------------------------- | :---------------------- | :------------------------------------------------------------------------------------------------- |840| :-------------------------------------------------------------------------------------------------------------------------- | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

787| UserPromptSubmit、UserPromptExpansion、PostToolUse、PostToolUseFailure、PostToolBatch、Stop、SubagentStop、ConfigChange、PreCompact | 頂層 `decision` | `decision: "block"`、`reason` |841| UserPromptSubmit、UserPromptExpansion、PostToolUse、PostToolUseFailure、PostToolBatch、Stop、SubagentStop、ConfigChange、PreCompact | 頂層 `decision` | `decision: "block"`、`reason` |

788| TeammateIdle、TaskCreated、TaskCompleted | 退出代碼或 `continue: false` | 退出代碼 2 使用 stderr 反饋阻止操作。JSON `{"continue": false, "stopReason": "..."}` 也會完全停止隊友,匹配 `Stop` hook 行為 |842| TeammateIdle、TaskCreated、TaskCompleted | 退出代碼或 `continue: false` | 退出代碼 2 使用 stderr 反饋阻止操作。JSON `{"continue": false, "stopReason": "..."}` 也會完全停止隊友,匹配 `Stop` hook 行為 |

789| PreToolUse | `hookSpecificOutput` | `permissionDecision`(allow/deny/ask/defer)、`permissionDecisionReason` |843| PreToolUse | `hookSpecificOutput` | `permissionDecision`(allow/deny/ask/defer)、`permissionDecisionReason` |


792| WorktreeCreate | 路徑返回 | 命令 hook 在 stdout 上列印路徑;HTTP hook 通過 `hookSpecificOutput.worktreePath` 返回。Hook 失敗或缺少路徑會導致建立失敗 |846| WorktreeCreate | 路徑返回 | 命令 hook 在 stdout 上列印路徑;HTTP hook 通過 `hookSpecificOutput.worktreePath` 返回。Hook 失敗或缺少路徑會導致建立失敗 |

793| Elicitation | `hookSpecificOutput` | `action`(accept/decline/cancel)、`content`(accept 的表單欄位值) |847| Elicitation | `hookSpecificOutput` | `action`(accept/decline/cancel)、`content`(accept 的表單欄位值) |

794| ElicitationResult | `hookSpecificOutput` | `action`(accept/decline/cancel)、`content`(覆蓋表單欄位值) |848| ElicitationResult | `hookSpecificOutput` | `action`(accept/decline/cancel)、`content`(覆蓋表單欄位值) |

849| MessageDisplay | `hookSpecificOutput` | `displayContent` 替換螢幕上顯示的文字。僅顯示:成績單和 Claude 看到的內容保持原始 |

850| SessionStart、Setup、SubagentStart | 僅上下文 | `hookSpecificOutput.additionalContext` 為 Claude 新增上下文。SessionStart 也接受 [`initialUserMessage`、`watchPaths`、`sessionTitle` 和 `reloadSkills`](#sessionstart-decision-control)。無阻止或決定控制 |

795| WorktreeRemove、Notification、SessionEnd、PostCompact、InstructionsLoaded、StopFailure、CwdChanged、FileChanged | 無 | 無決定控制。用於副作用,如記錄或清理 |851| WorktreeRemove、Notification、SessionEnd、PostCompact、InstructionsLoaded、StopFailure、CwdChanged、FileChanged | 無 | 無決定控制。用於副作用,如記錄或清理 |

796 852 

797以下是每種模式的實際範例:853以下是每種模式的實際範例:


843 899 

844有關擴展範例,包括 Bash 命令驗證、提示篩選和自動批准指令碼,請參閱指南中的 [您可以自動化的內容](/zh-TW/hooks-guide#what-you-can-automate) 和 [Bash 命令驗證器參考實現](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py)。900有關擴展範例,包括 Bash 命令驗證、提示篩選和自動批准指令碼,請參閱指南中的 [您可以自動化的內容](/zh-TW/hooks-guide#what-you-can-automate) 和 [Bash 命令驗證器參考實現](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py)。

845 901 

846## Hook 事件902<h2 id="hook-events">

903 Hook 事件

904</h2>

847 905 

848每個事件對應於 Claude Code 生命週期中 hooks 可以執行的一個點。下面的部分按順序排列以匹配生命週期:從工作階段設定通過代理迴圈到工作階段結束。每個部分描述事件何時觸發、它支援什麼匹配器、它接收的 JSON 輸入,以及如何通過輸出控制行為。906每個事件對應於 Claude Code 生命週期中 hooks 可以執行的一個點。下面的部分按順序排列以匹配生命週期:從工作階段設定通過代理迴圈到工作階段結束。每個部分描述事件何時觸發、它支援什麼匹配器、它接收的 JSON 輸入,以及如何通過輸出控制行為。

849 907 

850### SessionStart908<h3 id="sessionstart">

909 SessionStart

910</h3>

851 911 

852在 Claude Code 啟動新工作階段或恢復現有工作階段時執行。適用於載入開發上下文,例如現有問題或程式碼庫的最近變更,或設定環境變數。對於不需要指令碼的靜態上下文,請改用 [CLAUDE.md](/zh-TW/memory)。912在 Claude Code 啟動新工作階段或恢復現有工作階段時執行。適用於載入開發上下文,例如現有問題或程式碼庫的最近變更,或設定環境變數。對於不需要指令碼的靜態上下文,請改用 [CLAUDE.md](/zh-TW/memory)。

853 913 


862| `clear` | `/clear` |922| `clear` | `/clear` |

863| `compact` | 自動或手動壓縮 |923| `compact` | 自動或手動壓縮 |

864 924 

865#### SessionStart 輸入925<h4 id="sessionstart-input">

926 SessionStart 輸入

927</h4>

866 928 

867除了 [通用輸入欄位](#common-input-fields) 外,SessionStart hooks 還接收 `source`、`model` 和可選的 `agent_type`。`source` 欄位指示工作階段如何啟動:新工作階段為 `"startup"`,恢復的工作階段為 `"resume"`,`/clear` 後為 `"clear"`,或壓縮後為 `"compact"`。`model` 欄位包含模型識別碼。如果您使用 `claude --agent <name>` 啟動 Claude Code,`agent_type` 欄位包含代理名稱。929除了 [通用輸入欄位](#common-input-fields) 外,SessionStart hooks 還接收 `source`、`model` 和可選的 `agent_type` 和 `session_title`。`source` 欄位指示工作階段如何啟動:新工作階段為 `"startup"`,恢復的工作階段為 `"resume"`,`/clear` 後為 `"clear"`,或壓縮後為 `"compact"`。`model` 欄位包含模型識別碼。如果您使用 `claude --agent <name>` 啟動 Claude Code,`agent_type` 欄位包含代理名稱。`session_title` 欄位攜帶目前工作階段標題(如果已設定),例如通過 `--name` 或 `/rename`。發出 `sessionTitle` 的 hook 可以先檢查 `session_title` 以避免覆寫使用者明確設定的標題。

868 930 

869```json theme={null}931```json theme={null}

870{932{


877}939}

878```940```

879 941 

880#### SessionStart 決定控制942<h4 id="sessionstart-decision-control">

943 SessionStart 決定控制

944</h4>

881 945 

882您的 hook 指令碼列印到 stdout 的任何文字都被新增為 Claude 的上下文。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您還可以返回這些事件特定欄位:946您的 hook 指令碼列印到 stdout 的任何文字都被新增為 Claude 的上下文。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您還可以返回這些事件特定欄位:

883 947 

884| 欄位 | 描述 |948| 欄位 | 描述 |

885| :------------------ | :---------------------------------------------------------------------------------------------- |949| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- |

886| `additionalContext` | 新增到 Claude 上下文開始處的字串,在第一個提示之前。請參閱 [為 Claude 新增上下文](#add-context-for-claude) 以了解文字如何傳遞以及要放入其中的內容 |950| `additionalContext` | 新增到 Claude 上下文開始處的字串,在第一個提示之前。請參閱 [為 Claude 新增上下文](#add-context-for-claude) 以了解文字如何傳遞以及要放入其中的內容 |

951| `initialUserMessage` | 用作工作階段第一個使用者訊息的字串。適用於 [非互動模式](/zh-TW/headless)(`-p`),其中即使未提供提示,它也成為第一個轉向。如果提供了提示,它作為下一個轉向跟隨。與 `additionalContext` 不同,後者附加到現有轉向,這會建立轉向 |

952| `sessionTitle` | 設定工作階段標題,與 `/rename` 的效果相同。使用此項根據啟動資料夾、git 分支或 worktree 名稱自動命名工作階段。僅在 `source` 為 `"startup"` 或 `"resume"` 時適用;在 `"clear"` 和 `"compact"` 上被忽略 |

953| `watchPaths` | 絕對路徑的陣列,用於在此工作階段期間監視 [FileChanged](#filechanged) 事件 |

954| `reloadSkills` | 布林值。當為 `true` 時,Claude Code 在 SessionStart hooks 完成後重新掃描 [skill](/zh-TW/skills) 和命令目錄,因此 hook 安裝的 skills 在同一工作階段中可用,從第一個提示開始 |

887 955 

888```json theme={null}956```json theme={null}

889{957{

890 "hookSpecificOutput": {958 "hookSpecificOutput": {

891 "hookEventName": "SessionStart",959 "hookEventName": "SessionStart",

892 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2"960 "additionalContext": "Current branch: feat/auth-refactor\nUncommitted changes: src/auth.ts, src/login.tsx\nActive issue: #4211 Migrate to OAuth2",

961 "sessionTitle": "auth-refactor"

893 }962 }

894}963}

895```964```

896 965 

897由於純 stdout 已經到達 Claude 用於此事件,只載入上下文的 hook 可以直接列印到 stdout 而無需建立 JSON。當您需要將上下文與其他欄位(例如 `suppressOutput`)結合時,請使用 JSON 形式。966由於純 stdout 已經到達 Claude 用於此事件,只載入上下文的 hook 可以直接列印到 stdout 而無需建立 JSON。當您需要將上下文與其他欄位(例如 `suppressOutput` 或 `sessionTitle`)結合時,請使用 JSON 形式。

898 967 

899#### 持久化環境變數968 SessionStart hook 安裝或更新 skills 時,使用 `reloadSkills`。Skill 發現通常在 SessionStart hooks 完成之前執行,因此 hook 寫入 `~/.claude/skills/` 或 `.claude/skills/` 的檔案否則只會在下一個工作階段中出現。此範例同步共享 skills 儲存庫並請求重新掃描:

969 

970```bash theme={null}

971#!/bin/bash

972 

973git -C ~/.claude/skills/team-skills pull --quiet 2>/dev/null || \

974 git clone --quiet https://git.example.com/your-org/team-skills.git ~/.claude/skills/team-skills

975 

976echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

977```

978 

979<h4 id="persist-environment-variables">

980 持久化環境變數

981</h4>

900 982 

901SessionStart hooks 可以存取 `CLAUDE_ENV_FILE` 環境變數,該變數提供一個檔案路徑,您可以在其中為後續 Bash 命令持久化環境變數。983SessionStart hooks 可以存取 `CLAUDE_ENV_FILE` 環境變數,該變數提供一個檔案路徑,您可以在其中為後續 Bash 命令持久化環境變數。

902 984 


939 `CLAUDE_ENV_FILE` 可用於 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 和 [FileChanged](#filechanged) hooks。其他 hook 類型無法存取此變數。1021 `CLAUDE_ENV_FILE` 可用於 SessionStart、[Setup](#setup)、[CwdChanged](#cwdchanged) 和 [FileChanged](#filechanged) hooks。其他 hook 類型無法存取此變數。

940</Note>1022</Note>

941 1023 

942### Setup1024<h3 id="setup">

1025 Setup

1026</h3>

943 1027 

944僅當您使用 `--init-only` 啟動 Claude Code,或在列印模式(`-p`)中使用 `--init` 或 `--maintenance` 時觸發。它在正常啟動時不觸發。使用它進行一次性依賴項安裝或您從 CI 或指令碼明確觸發的計劃清理,與正常工作階段啟動分開。對於每個工作階段的初始化,請改用 [SessionStart](#sessionstart)。1028僅當您使用 `--init-only` 啟動 Claude Code,或在列印模式(`-p`)中使用 `--init` 或 `--maintenance` 時觸發。它在正常啟動時不觸發。使用它進行一次性依賴項安裝或您從 CI 或指令碼明確觸發的計劃清理,與正常工作階段啟動分開。對於每個工作階段的初始化,請改用 [SessionStart](#sessionstart)。

945 1029 


954 1038 

955因為 Setup 不在每次啟動時觸發,需要安裝依賴項的外掛程式無法僅依賴 Setup。實際的模式是在首次使用時檢查依賴項,如果缺失則安裝,例如測試 `${CLAUDE_PLUGIN_DATA}/node_modules` 的 hook 或 skill,如果不存在則執行 `npm install`。請參閱 [持久資料目錄](/zh-TW/plugins-reference#persistent-data-directory) 以了解在何處儲存已安裝的依賴項。1039因為 Setup 不在每次啟動時觸發,需要安裝依賴項的外掛程式無法僅依賴 Setup。實際的模式是在首次使用時檢查依賴項,如果缺失則安裝,例如測試 `${CLAUDE_PLUGIN_DATA}/node_modules` 的 hook 或 skill,如果不存在則執行 `npm install`。請參閱 [持久資料目錄](/zh-TW/plugins-reference#persistent-data-directory) 以了解在何處儲存已安裝的依賴項。

956 1040 

957#### Setup 輸入1041<h4 id="setup-input">

1042 Setup 輸入

1043</h4>

958 1044 

959除了 [通用輸入欄位](#common-input-fields) 外,Setup hooks 還接收設定為 `"init"` 或 `"maintenance"` 的 `trigger` 欄位:1045除了 [通用輸入欄位](#common-input-fields) 外,Setup hooks 還接收設定為 `"init"` 或 `"maintenance"` 的 `trigger` 欄位:

960 1046 


968}1054}

969```1055```

970 1056 

971#### Setup 決定控制1057<h4 id="setup-decision-control">

1058 Setup 決定控制

1059</h4>

972 1060 

973Setup hooks 無法阻止。在退出代碼 2 時,stderr 向使用者顯示;在任何其他非零退出代碼時,stderr 僅在您使用 `--verbose` 啟動時出現。在兩種情況下,執行都會繼續。要將資訊傳遞到 Claude 的上下文中,請在 JSON 輸出中返回 `additionalContext`;純 stdout 僅寫入偵錯日誌。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您還可以返回這些事件特定欄位:1061Setup hooks 無法阻止。在退出代碼 2 時,stderr 向使用者顯示;在任何其他非零退出代碼時,stderr 僅在您使用 `--verbose` 啟動時出現。在兩種情況下,執行都會繼續。要將資訊傳遞到 Claude 的上下文中,請在 JSON 輸出中返回 `additionalContext`;純 stdout 僅寫入偵錯日誌。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您還可以返回這些事件特定欄位:

974 1062 


987 1075 

988Setup hooks 可以存取 `CLAUDE_ENV_FILE`。寫入該檔案的變數會持久化到工作階段的後續 Bash 命令中,就像在 [SessionStart hooks](#persist-environment-variables) 中一樣。僅支援 `type: "command"` 和 `type: "mcp_tool"` hooks。1076Setup hooks 可以存取 `CLAUDE_ENV_FILE`。寫入該檔案的變數會持久化到工作階段的後續 Bash 命令中,就像在 [SessionStart hooks](#persist-environment-variables) 中一樣。僅支援 `type: "command"` 和 `type: "mcp_tool"` hooks。

989 1077 

990### InstructionsLoaded1078<h3 id="instructionsloaded">

1079 InstructionsLoaded

1080</h3>

991 1081 

992當 `CLAUDE.md` 或 `.claude/rules/*.md` 檔案被載入到上下文中時觸發。此事件在工作階段開始時針對急切載入的檔案觸發,稍後當檔案被延遲載入時再次觸發,例如當 Claude 存取包含嵌套 `CLAUDE.md` 的子目錄時,或當具有 `paths:` frontmatter 的條件規則匹配時。該 hook 不支援阻止或決定控制。它以非同步方式執行以用於可觀測性目的。1082當 `CLAUDE.md` 或 `.claude/rules/*.md` 檔案被載入到上下文中時觸發。此事件在工作階段開始時針對急切載入的檔案觸發,稍後當檔案被延遲載入時再次觸發,例如當 Claude 存取包含嵌套 `CLAUDE.md` 的子目錄時,或當具有 `paths:` frontmatter 的條件規則匹配時。該 hook 不支援阻止或決定控制。它以非同步方式執行以用於可觀測性目的。

993 1083 

994匹配器針對 `load_reason` 執行。例如,使用 `"matcher": "session_start"` 僅針對在工作階段開始時載入的檔案觸發,或使用 `"matcher": "path_glob_match|nested_traversal"` 僅針對延遲載入觸發。1084匹配器針對 `load_reason` 執行。例如,使用 `"matcher": "session_start"` 僅針對在工作階段開始時載入的檔案觸發,或使用 `"matcher": "path_glob_match|nested_traversal"` 僅針對延遲載入觸發。

995 1085 

996#### InstructionsLoaded 輸入1086<h4 id="instructionsloaded-input">

1087 InstructionsLoaded 輸入

1088</h4>

997 1089 

998除了 [通用輸入欄位](#common-input-fields) 外,InstructionsLoaded hooks 還接收這些欄位:1090除了 [通用輸入欄位](#common-input-fields) 外,InstructionsLoaded hooks 還接收這些欄位:

999 1091 


1018}1110}

1019```1111```

1020 1112 

1021#### InstructionsLoaded 決定控制1113<h4 id="instructionsloaded-decision-control">

1114 InstructionsLoaded 決定控制

1115</h4>

1022 1116 

1023InstructionsLoaded hooks 沒有決定控制。它們無法阻止或修改指令載入。使用此事件進行稽核記錄、合規性追蹤或可觀測性。1117InstructionsLoaded hooks 沒有決定控制。它們無法阻止或修改指令載入。使用此事件進行稽核記錄、合規性追蹤或可觀測性。

1024 1118 

1025### UserPromptSubmit1119<h3 id="userpromptsubmit">

1120 UserPromptSubmit

1121</h3>

1026 1122 

1027在使用者提交提示時執行,在 Claude 處理之前。這允許您根據提示/對話新增額外上下文、驗證提示或阻止某些類型的提示。1123在使用者提交提示時執行,在 Claude 處理之前。這允許您根據提示/對話新增額外上下文、驗證提示或阻止某些類型的提示。

1028 1124 

1029`UserPromptSubmit` hooks 對於 `command`、`http` 和 `mcp_tool` 類型的預設逾時為 30 秒,比其他事件上這些類型的 600 秒預設值更短。因為此 hook 在每個提示之前執行並阻止模型處理直到完成,卡住的 hook 會停滯工作階段。如果您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。1125`UserPromptSubmit` hooks 對於 `command`、`http` 和 `mcp_tool` 類型的預設逾時為 30 秒,比其他事件上這些類型的 600 秒預設值更短。因為此 hook 在每個提示之前執行並阻止模型處理直到完成,卡住的 hook 會停滯工作階段。如果您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。

1030 1126 

1031#### UserPromptSubmit 輸入1127<h4 id="userpromptsubmit-input">

1128 UserPromptSubmit 輸入

1129</h4>

1032 1130 

1033除了 [通用輸入欄位](#common-input-fields) 外,UserPromptSubmit hooks 還接收包含使用者提交的文字的 `prompt` 欄位。1131除了 [通用輸入欄位](#common-input-fields) 外,UserPromptSubmit hooks 還接收包含使用者提交的文字的 `prompt` 欄位。

1034 1132 


1043}1141}

1044```1142```

1045 1143 

1046#### UserPromptSubmit 決定控制1144<h4 id="userpromptsubmit-decision-control">

1145 UserPromptSubmit 決定控制

1146</h4>

1047 1147 

1048`UserPromptSubmit` hooks 可以控制使用者提示是否被處理並新增上下文。所有 [JSON 輸出欄位](#json-output) 都可用。1148`UserPromptSubmit` hooks 可以控制使用者提示是否被處理並新增上下文。所有 [JSON 輸出欄位](#json-output) 都可用。

1049 1149 


1057要阻止提示,請返回一個 JSON 物件,其中 `decision` 設定為 `"block"`:1157要阻止提示,請返回一個 JSON 物件,其中 `decision` 設定為 `"block"`:

1058 1158 

1059| 欄位 | 描述 |1159| 欄位 | 描述 |

1060| :------------------ | :----------------------------------------------------------------------- |1160| :----------------------- | :----------------------------------------------------------------------- |

1061| `decision` | `"block"` 防止提示被處理並從上下文中清除它。省略以允許提示進行 |1161| `decision` | `"block"` 防止提示被處理並從上下文中清除它。省略以允許提示進行 |

1062| `reason` | 當 `decision` 為 `"block"` 時向使用者顯示。不新增到上下文 |1162| `reason` | 當 `decision` 為 `"block"` 時向使用者顯示。不新增到上下文 |

1063| `additionalContext` | 新增到 Claude 上下文的字串,與提交的提示一起。請參閱 [為 Claude 新增上下文](#add-context-for-claude) |1163| `additionalContext` | 新增到 Claude 上下文的字串,與提交的提示一起。請參閱 [為 Claude 新增上下文](#add-context-for-claude) |

1064| `sessionTitle` | 設定工作階段標題。使用此項根據提示內容自動命名工作階段 |1164| `sessionTitle` | 設定工作階段標題。使用此項根據提示內容自動命名工作階段 |

1165| `suppressOriginalPrompt` | 如果在 `decision` 為 `"block"` 時為 `true`,則從向使用者顯示的阻止訊息中省略原始提示文字 |

1065 1166 

1066```json theme={null}1167```json theme={null}

1067{1168{


1079 JSON 格式對於簡單用例不是必需的。要新增上下文,您可以使用退出代碼 0 將純文字列印到 stdout。當您需要阻止提示或想要更結構化的控制時,請使用 JSON。1180 JSON 格式對於簡單用例不是必需的。要新增上下文,您可以使用退出代碼 0 將純文字列印到 stdout。當您需要阻止提示或想要更結構化的控制時,請使用 JSON。

1080</Note>1181</Note>

1081 1182 

1082### UserPromptExpansion1183<h3 id="userpromptexpansion">

1184 UserPromptExpansion

1185</h3>

1083 1186 

1084當使用者輸入的斜杠命令在到達 Claude 之前展開為提示時執行。使用此項來阻止特定命令的直接呼叫、為特定 skill 注入上下文,或記錄使用者呼叫哪些命令。例如,匹配 `deploy` 的 hook 可以在不存在批准檔案時阻止 `/deploy`,或匹配審查 skill 的 hook 可以將團隊的審查檢查清單附加為 `additionalContext`。1187當使用者輸入的斜杠命令在到達 Claude 之前展開為提示時執行。使用此項來阻止特定命令的直接呼叫、為特定 skill 注入上下文,或記錄使用者呼叫哪些命令。例如,匹配 `deploy` 的 hook 可以在不存在批准檔案時阻止 `/deploy`,或匹配審查 skill 的 hook 可以將團隊的審查檢查清單附加為 `additionalContext`。

1085 1188 


1087 1190 

1088匹配 `command_name`。留空匹配器以針對每個提示類型斜杠命令觸發。1191匹配 `command_name`。留空匹配器以針對每個提示類型斜杠命令觸發。

1089 1192 

1090#### UserPromptExpansion 輸入1193<h4 id="userpromptexpansion-input">

1194 UserPromptExpansion 輸入

1195</h4>

1091 1196 

1092除了 [通用輸入欄位](#common-input-fields) 外,UserPromptExpansion hooks 還接收 `expansion_type`、`command_name`、`command_args`、`command_source` 和原始 `prompt` 字串。`expansion_type` 欄位對於 skill 和自訂命令為 `slash_command`,或對於 MCP 伺服器提示為 `mcp_prompt`。1197除了 [通用輸入欄位](#common-input-fields) 外,UserPromptExpansion hooks 還接收 `expansion_type`、`command_name`、`command_args`、`command_source` 和原始 `prompt` 字串。`expansion_type` 欄位對於 skill 和自訂命令為 `slash_command`,或對於 MCP 伺服器提示為 `mcp_prompt`。

1093 1198 


1106}1211}

1107```1212```

1108 1213 

1109#### UserPromptExpansion 決定控制1214<h4 id="userpromptexpansion-decision-control">

1215 UserPromptExpansion 決定控制

1216</h4>

1110 1217 

1111`UserPromptExpansion` hooks 可以阻止展開或新增上下文。所有 [JSON 輸出欄位](#json-output) 都可用。1218`UserPromptExpansion` hooks 可以阻止展開或新增上下文。所有 [JSON 輸出欄位](#json-output) 都可用。

1112 1219 


1127}1234}

1128```1235```

1129 1236 

1130### PreToolUse1237<h3 id="messagedisplay">

1238 MessageDisplay

1239</h3>

1240 

1241在助手訊息流向螢幕時執行。Claude Code 分批顯示訊息:每次一批新完成的行準備好呈現時,hook 執行一次,這些行,Claude Code 在其位置呈現 hook 的替換文字。長訊息產生多個呼叫;短訊息可能只產生一個。

1242 

1243使用 MessageDisplay 來:

1244 

1245* 去除 markdown 以獲得最小顯示

1246* 轉換 Agent SDK 應用程式向其使用者顯示的文字

1247* 從 Claude 的回應中編輯 API 金鑰或內部主機名稱

1248 

1249Claude Code 保持每批直到您的 hook 返回,因此請保持 hook 快速。如果 hook 失敗或逾時,Claude Code 顯示原始文字。此事件的預設逾時為 10 秒;如果您的 hook 需要更多時間,請在 hook 項目中設定 `timeout` 欄位。

1250 

1251MessageDisplay 僅用於顯示:替換文字僅改變螢幕上呈現的內容。成績單和 Claude 看到的內容保持原始文字,因此 Claude 永遠看不到替換,詳細模式顯示原始文字。Hook 接收助手訊息文字,因此工具結果和您輸入的文字呈現不變。

1252 

1253MessageDisplay 不支援匹配器,針對每個流向文字的助手訊息觸發;沒有文字的訊息(例如僅工具呼叫回應)不觸發它。

1254 

1255在非互動執行中,包括 Agent SDK 查詢和 `claude -p`,MessageDisplay 每個助手訊息執行一次,而不是每批行執行一次。單一呼叫在訊息完成後到達,並攜帶完整訊息文字:`index` 為 `0`,`final` 為 `true`,`delta` 保存整個訊息。為每個訊息收集 `delta` 文字的 hook 在兩種模式中接收相同的總文字。

1256 

1257<h4 id="messagedisplay-input">

1258 MessageDisplay 輸入

1259</h4>

1260 

1261除了 [通用輸入欄位](#common-input-fields) 外,MessageDisplay hooks 還接收轉向和訊息的識別碼、此呼叫在訊息中的位置,以及 `delta` 中的新文字。批次邊界取決於文字如何流動,因此使用 `index` 和 `final` 來追蹤通過訊息的進度,而不是期望行以特定方式分組。

1262 

1263| 欄位 | 描述 |

1264| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

1265| `turn_id` | 目前轉向的 UUID |

1266| `message_id` | 被顯示的助手訊息的 UUID。在同一訊息的每批中穩定。這不是 API `msg_…` id,因此無法與成績單訊息 ids 相關聯 |

1267| `index` | 此批次在訊息中的零基索引 |

1268| `final` | 在訊息的最後一批上為 `true`。每個訊息恰好有一個最終批次 |

1269| `delta` | 自上一批以來新完成的行,包括終止換行符。始終是完整行,除了最終批次可能在行中結束。在互動執行中,當訊息以換行符結束時,最終批次的 delta 為空,因此將 `final` 而不是非空 delta 視為訊息結束信號。在 Agent SDK 和 `claude -p` 執行中,單一呼叫攜帶整個訊息 |

1270 

1271```json theme={null}

1272{

1273 "session_id": "abc123",

1274 "transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",

1275 "cwd": "/Users/my-project",

1276 "hook_event_name": "MessageDisplay",

1277 "turn_id": "0c9e6a2f-7d41-4f4e-9a15-3f4f7c2b8d10",

1278 "message_id": "5b2a9c8e-1f63-4d8a-b7c4-9e0d2a6f1c3b",

1279 "index": 0,

1280 "final": false,

1281 "delta": "Here is the plan:\n"

1282}

1283```

1284 

1285<h4 id="messagedisplay-output">

1286 MessageDisplay 輸出

1287</h4>

1288 

1289除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,MessageDisplay hooks 可以返回 `displayContent` 來替換螢幕上的 delta:

1290 

1291| 欄位 | 描述 |

1292| :--------------- | :------------------------ |

1293| `displayContent` | 顯示以代替 delta 的文字。省略以顯示原始文字 |

1294 

1295MessageDisplay hooks 沒有決定控制。它們無法阻止訊息或改變成績單中儲存或發送給 Claude 的內容。

1296 

1297此範例去除 Claude 回應中的 markdown 格式以獲得純文字顯示。指令碼從 stdin 讀取每批,從 `delta` 移除粗體標記和內聯代碼反引號,並將結果作為 `displayContent` 返回。

1298 

1299<Tabs>

1300 <Tab title="macOS/Linux">

1301 在您的設定檔中為事件註冊命令 hook:

1302 

1303 ```json theme={null}

1304 {

1305 "hooks": {

1306 "MessageDisplay": [

1307 {

1308 "hooks": [

1309 {

1310 "type": "command",

1311 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/plain-display.sh",

1312 "args": []

1313 }

1314 ]

1315 }

1316 ]

1317 }

1318 }

1319 ```

1320 

1321 將此指令碼儲存到您專案中的 `.claude/hooks/plain-display.sh` 並使用 `chmod +x` 使其可執行:

1322 

1323 ```bash theme={null}

1324 #!/bin/bash

1325 jq '{hookSpecificOutput: {hookEventName: "MessageDisplay", displayContent: (.delta | gsub("\\*\\*"; "") | gsub("`"; ""))}}'

1326 ```

1327 

1328 指令碼需要 `jq` 在您的 `PATH` 上。

1329 </Tab>

1330 

1331 <Tab title="Windows (PowerShell)">

1332 註冊一個命令 hook,通過 PowerShell 執行指令碼:

1333 

1334 ```json theme={null}

1335 {

1336 "hooks": {

1337 "MessageDisplay": [

1338 {

1339 "hooks": [

1340 {

1341 "type": "command",

1342 "command": "powershell.exe",

1343 "args": [

1344 "-NoProfile",

1345 "-ExecutionPolicy",

1346 "Bypass",

1347 "-File",

1348 "${CLAUDE_PROJECT_DIR}/.claude/hooks/plain-display.ps1"

1349 ]

1350 }

1351 ]

1352 }

1353 ]

1354 }

1355 }

1356 ```

1357 

1358 `-NoProfile` 標誌跳過載入您的 PowerShell 設定檔,以便 hook 快速啟動,`-ExecutionPolicy Bypass` 讓 PowerShell 執行本機指令碼檔案。

1359 

1360 將此指令碼儲存到您專案中的 `.claude/hooks/plain-display.ps1`:

1361 

1362 ```powershell theme={null}

1363 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json

1364 $text = $batch.delta -replace '\*\*', '' -replace '`', ''

1365 @{

1366 hookSpecificOutput = @{

1367 hookEventName = "MessageDisplay"

1368 displayContent = $text

1369 }

1370 } | ConvertTo-Json

1371 ```

1372 </Tab>

1373</Tabs>

1374 

1375沒有 markdown 的批次通過不變。如果指令碼失敗,例如因為 `jq` 遺失,Claude Code 顯示原始文字,並僅在 [偵錯輸出](#debug-hooks) 中注意失敗,而不是在工作階段中。

1376 

1377<h3 id="pretooluse">

1378 PreToolUse

1379</h3>

1131 1380 

1132在 Claude 建立工具參數後和處理工具呼叫之前執行。匹配工具名稱:`Bash`、`Edit`、`Write`、`Read`、`Glob`、`Grep`、`Agent`、`WebFetch`、`WebSearch`、`AskUserQuestion`、`ExitPlanMode` 和任何 [MCP 工具名稱](#match-mcp-tools)。1381在 Claude 建立工具參數後和處理工具呼叫之前執行。匹配工具名稱:`Bash`、`Edit`、`Write`、`Read`、`Glob`、`Grep`、`Agent`、`WebFetch`、`WebSearch`、`AskUserQuestion`、`ExitPlanMode` 和任何 [MCP 工具名稱](#match-mcp-tools)。

1133 1382 

1134使用 [PreToolUse 決定控制](#pretooluse-decision-control) 來允許、拒絕、詢問或延遲工具呼叫。1383使用 [PreToolUse 決定控制](#pretooluse-decision-control) 來允許、拒絕、詢問或延遲工具呼叫。

1135 1384 

1136#### PreToolUse 輸入1385<h4 id="pretooluse-input">

1386 PreToolUse 輸入

1387</h4>

1137 1388 

1138除了 [通用輸入欄位](#common-input-fields) 外,PreToolUse hooks 還接收 `tool_name`、`tool_input` 和 `tool_use_id`。`tool_input` 欄位取決於工具:1389除了 [通用輸入欄位](#common-input-fields) 外,PreToolUse hooks 還接收 `tool_name`、`tool_input` 和 `tool_use_id`。`tool_input` 欄位取決於工具:

1139 1390 

1140##### Bash1391<h5 id="bash">

1392 Bash

1393</h5>

1141 1394 

1142執行 shell 命令。1395執行 shell 命令。

1143 1396 


1148| `timeout` | 數字 | `120000` | 可選逾時(毫秒) |1401| `timeout` | 數字 | `120000` | 可選逾時(毫秒) |

1149| `run_in_background` | 布林值 | `false` | 是否在背景執行命令 |1402| `run_in_background` | 布林值 | `false` | 是否在背景執行命令 |

1150 1403 

1151##### Write1404<h5 id="write">

1405 Write

1406</h5>

1152 1407 

1153建立或覆寫檔案。1408建立或覆寫檔案。

1154 1409 


1157| `file_path` | 字串 | `"/path/to/file.txt"` | 要寫入的檔案的絕對路徑 |1412| `file_path` | 字串 | `"/path/to/file.txt"` | 要寫入的檔案的絕對路徑 |

1158| `content` | 字串 | `"file content"` | 要寫入檔案的內容 |1413| `content` | 字串 | `"file content"` | 要寫入檔案的內容 |

1159 1414 

1160##### Edit1415<h5 id="edit">

1416 Edit

1417</h5>

1161 1418 

1162替換現有檔案中的字串。1419替換現有檔案中的字串。

1163 1420 


1168| `new_string` | 字串 | `"replacement text"` | 替換文字 |1425| `new_string` | 字串 | `"replacement text"` | 替換文字 |

1169| `replace_all` | 布林值 | `false` | 是否替換所有出現次數 |1426| `replace_all` | 布林值 | `false` | 是否替換所有出現次數 |

1170 1427 

1171##### Read1428<h5 id="read">

1429 Read

1430</h5>

1172 1431 

1173讀取檔案內容。1432讀取檔案內容。

1174 1433 


1178| `offset` | 數字 | `10` | 可選的開始讀取的行號 |1437| `offset` | 數字 | `10` | 可選的開始讀取的行號 |

1179| `limit` | 數字 | `50` | 可選的要讀取的行數 |1438| `limit` | 數字 | `50` | 可選的要讀取的行數 |

1180 1439 

1181##### Glob1440<h5 id="glob">

1441 Glob

1442</h5>

1182 1443 

1183尋找與 glob 模式匹配的檔案。1444尋找與 glob 模式匹配的檔案。

1184 1445 


1187| `pattern` | 字串 | `"**/*.ts"` | 要匹配檔案的 glob 模式 |1448| `pattern` | 字串 | `"**/*.ts"` | 要匹配檔案的 glob 模式 |

1188| `path` | 字串 | `"/path/to/dir"` | 可選的搜尋目錄。預設為目前工作目錄 |1449| `path` | 字串 | `"/path/to/dir"` | 可選的搜尋目錄。預設為目前工作目錄 |

1189 1450 

1190##### Grep1451<h5 id="grep">

1452 Grep

1453</h5>

1191 1454 

1192使用正規表達式搜尋檔案內容。1455使用正規表達式搜尋檔案內容。

1193 1456 


1200| `-i` | 布林值 | `true` | 不區分大小寫的搜尋 |1463| `-i` | 布林值 | `true` | 不區分大小寫的搜尋 |

1201| `multiline` | 布林值 | `false` | 啟用多行匹配 |1464| `multiline` | 布林值 | `false` | 啟用多行匹配 |

1202 1465 

1203##### WebFetch1466<h5 id="webfetch">

1467 WebFetch

1468</h5>

1204 1469 

1205擷取和處理網路內容。1470擷取和處理網路內容。

1206 1471 


1209| `url` | 字串 | `"https://example.com/api"` | 要擷取內容的 URL |1474| `url` | 字串 | `"https://example.com/api"` | 要擷取內容的 URL |

1210| `prompt` | 字串 | `"Extract the API endpoints"` | 在擷取的內容上執行的提示 |1475| `prompt` | 字串 | `"Extract the API endpoints"` | 在擷取的內容上執行的提示 |

1211 1476 

1212##### WebSearch1477<h5 id="websearch">

1478 WebSearch

1479</h5>

1213 1480 

1214搜尋網路。1481搜尋網路。

1215 1482 


1219| `allowed_domains` | 陣列 | `["docs.example.com"]` | 可選:僅包含來自這些網域的結果 |1486| `allowed_domains` | 陣列 | `["docs.example.com"]` | 可選:僅包含來自這些網域的結果 |

1220| `blocked_domains` | 陣列 | `["spam.example.com"]` | 可選:排除來自這些網域的結果 |1487| `blocked_domains` | 陣列 | `["spam.example.com"]` | 可選:排除來自這些網域的結果 |

1221 1488 

1222##### Agent1489<h5 id="agent">

1490 Agent

1491</h5>

1223 1492 

1224生成一個 [subagent](/zh-TW/sub-agents)。1493生成一個 [subagent](/zh-TW/sub-agents)。

1225 1494 


1244 1513 

1245對於 `run_in_background: true` 呼叫,工具在啟動 subagent 後立即返回,因此 `tool_response` 不攜帶使用量欄位。它具有 `status: "async_launched"`、`agentId`、`description`、`prompt` 和 `outputFile`。1514對於 `run_in_background: true` 呼叫,工具在啟動 subagent 後立即返回,因此 `tool_response` 不攜帶使用量欄位。它具有 `status: "async_launched"`、`agentId`、`description`、`prompt` 和 `outputFile`。

1246 1515 

1247##### AskUserQuestion1516<h5 id="askuserquestion">

1517 AskUserQuestion

1518</h5>

1248 1519 

1249詢問使用者一到四個多選題。1520詢問使用者一到四個多選題。

1250 1521 


1253| `questions` | 陣列 | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | 要呈現的問題,每個都有 `question` 字串、簡短 `header`、`options` 陣列和可選的 `multiSelect` 標誌 |1524| `questions` | 陣列 | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | 要呈現的問題,每個都有 `question` 字串、簡短 `header`、`options` 陣列和可選的 `multiSelect` 標誌 |

1254| `answers` | 物件 | `{"Which framework?": "React"}` | 可選。將問題文字對應到選定的選項標籤。多選答案用逗號連接標籤。Claude 不設定此欄位;通過 `updatedInput` 提供它以以程式方式回答 |1525| `answers` | 物件 | `{"Which framework?": "React"}` | 可選。將問題文字對應到選定的選項標籤。多選答案用逗號連接標籤。Claude 不設定此欄位;通過 `updatedInput` 提供它以以程式方式回答 |

1255 1526 

1256##### ExitPlanMode1527<h5 id="exitplanmode">

1528 ExitPlanMode

1529</h5>

1257 1530 

1258呈現一個計劃並要求使用者在 Claude 離開 [plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 之前批准它。Claude 在呼叫工具之前將計劃寫入磁碟上的檔案,因此模型的字面 `tool_input` 僅攜帶 `allowedPrompts`。Claude Code 在將輸入傳遞給 hooks 之前注入計劃內容和檔案路徑。1531呈現一個計劃並要求使用者在 Claude 離開 [plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 之前批准它。Claude 在呼叫工具之前將計劃寫入磁碟上的檔案,因此模型的字面 `tool_input` 僅攜帶 `allowedPrompts`。Claude Code 在將輸入傳遞給 hooks 之前注入計劃內容和檔案路徑。

1259 1532 


1265 1538 

1266在 `PostToolUse` 中,`tool_response` 是一個物件,其中包含 `plan` 和 `filePath` 欄位,保存批准的計劃,加上內部狀態標誌。讀取 `tool_response.plan` 以獲取計劃內容,而不是從磁碟重新讀取檔案。1539在 `PostToolUse` 中,`tool_response` 是一個物件,其中包含 `plan` 和 `filePath` 欄位,保存批准的計劃,加上內部狀態標誌。讀取 `tool_response.plan` 以獲取計劃內容,而不是從磁碟重新讀取檔案。

1267 1540 

1268#### PreToolUse 決定控制1541<h4 id="pretooluse-decision-control">

1542 PreToolUse 決定控制

1543</h4>

1269 1544 

1270`PreToolUse` hooks 可以控制工具呼叫是否進行。與使用頂層 `decision` 欄位的其他 hooks 不同,PreToolUse 在 `hookSpecificOutput` 物件內返回其決定。這提供了更豐富的控制:四個結果(允許、拒絕、詢問或延遲)加上在執行前修改工具輸入的能力。1545`PreToolUse` hooks 可以控制工具呼叫是否進行。與使用頂層 `decision` 欄位的其他 hooks 不同,PreToolUse 在 `hookSpecificOutput` 物件內返回其決定。這提供了更豐富的控制:四個結果(允許、拒絕、詢問或延遲)加上在執行前修改工具輸入的能力。

1271 1546 


1300 PreToolUse 之前使用頂層 `decision` 和 `reason` 欄位,但這些對此事件已棄用。改用 `hookSpecificOutput.permissionDecision` 和 `hookSpecificOutput.permissionDecisionReason`。棄用的值 `"approve"` 和 `"block"` 對應於 `"allow"` 和 `"deny"`。PostToolUse 和 Stop 等其他事件繼續使用頂層 `decision` 和 `reason` 作為其目前格式。1575 PreToolUse 之前使用頂層 `decision` 和 `reason` 欄位,但這些對此事件已棄用。改用 `hookSpecificOutput.permissionDecision` 和 `hookSpecificOutput.permissionDecisionReason`。棄用的值 `"approve"` 和 `"block"` 對應於 `"allow"` 和 `"deny"`。PostToolUse 和 Stop 等其他事件繼續使用頂層 `decision` 和 `reason` 作為其目前格式。

1301</Note>1576</Note>

1302 1577 

1303#### 延遲工具呼叫以供稍後使用1578<h4 id="defer-a-tool-call-for-later">

1579 延遲工具呼叫以供稍後使用

1580</h4>

1304 1581 

1305`"defer"` 用於執行 `claude -p` 作為子程序並讀取其 JSON 輸出的整合,例如 Agent SDK 應用程式或建立在 Claude Code 之上的自訂 UI。它讓該呼叫程序在工具呼叫處暫停 Claude,通過其自己的介面收集輸入,並從中斷處恢復。Claude Code 僅在 [非互動模式](/zh-TW/headless) 中使用 `-p` 標誌時遵守此值。在互動式工作階段中,它記錄警告並忽略 hook 結果。1582`"defer"` 用於執行 `claude -p` 作為子程序並讀取其 JSON 輸出的整合,例如 Agent SDK 應用程式或建立在 Claude Code 之上的自訂 UI。它讓該呼叫程序在工具呼叫處暫停 Claude,通過其自己的介面收集輸入,並從中斷處恢復。Claude Code 僅在 [非互動模式](/zh-TW/headless) 中使用 `-p` 標誌時遵守此值。在互動式工作階段中,它記錄警告並忽略 hook 結果。

1306 1583 


1342 `--resume` 恢復工具被延遲時活動的權限模式,因此您不需要再次傳遞 `--permission-mode`。例外是 `plan` 和 `bypassPermissions`,它們永遠不會被帶過。在恢復時明確傳遞 `--permission-mode` 會覆蓋恢復的值。1619 `--resume` 恢復工具被延遲時活動的權限模式,因此您不需要再次傳遞 `--permission-mode`。例外是 `plan` 和 `bypassPermissions`,它們永遠不會被帶過。在恢復時明確傳遞 `--permission-mode` 會覆蓋恢復的值。

1343</Note>1620</Note>

1344 1621 

1345### PermissionRequest1622<h3 id="permissionrequest">

1623 PermissionRequest

1624</h3>

1346 1625 

1347在向使用者顯示權限對話框時執行。使用 [PermissionRequest 決定控制](#permissionrequest-decision-control) 代表使用者允許或拒絕。1626在向使用者顯示權限對話框時執行。使用 [PermissionRequest 決定控制](#permissionrequest-decision-control) 代表使用者允許或拒絕。

1348 1627 

1349匹配工具名稱,與 PreToolUse 相同的值。1628匹配工具名稱,與 PreToolUse 相同的值。

1350 1629 

1351#### PermissionRequest 輸入1630<h4 id="permissionrequest-input">

1631 PermissionRequest 輸入

1632</h4>

1352 1633 

1353PermissionRequest hooks 接收 `tool_name` 和 `tool_input` 欄位,如 PreToolUse hooks,但沒有 `tool_use_id`。可選的 `permission_suggestions` 陣列包含使用者通常在權限對話框中看到的「總是允許」選項。區別在於 hook 何時觸發:PermissionRequest hooks 在權限對話框即將向使用者顯示時執行,而 PreToolUse hooks 在工具執行前執行,無論權限狀態如何。1634PermissionRequest hooks 接收 `tool_name` 和 `tool_input` 欄位,如 PreToolUse hooks,但沒有 `tool_use_id`。可選的 `permission_suggestions` 陣列包含使用者通常在權限對話框中看到的「總是允許」選項。區別在於 hook 何時觸發:PermissionRequest hooks 在權限對話框即將向使用者顯示時執行,而 PreToolUse hooks 在工具執行前執行,無論權限狀態如何。

1354 1635 


1375}1656}

1376```1657```

1377 1658 

1378#### PermissionRequest 決定控制1659<h4 id="permissionrequest-decision-control">

1660 PermissionRequest 決定控制

1661</h4>

1379 1662 

1380`PermissionRequest` hooks 可以允許或拒絕權限請求。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回一個 `decision` 物件,其中包含這些事件特定欄位:1663`PermissionRequest` hooks 可以允許或拒絕權限請求。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回一個 `decision` 物件,其中包含這些事件特定欄位:

1381 1664 


1401}1684}

1402```1685```

1403 1686 

1404#### 權限更新項目1687<h4 id="permission-update-entries">

1688 權限更新項目

1689</h4>

1405 1690 

1406`updatedPermissions` 輸出欄位和 [`permission_suggestions` 輸入欄位](#permissionrequest-input) 都使用相同的項目物件陣列。每個項目都有一個 `type` 決定其他欄位,以及一個 `destination` 控制變更寫入位置。1691`updatedPermissions` 輸出欄位和 [`permission_suggestions` 輸入欄位](#permissionrequest-input) 都使用相同的項目物件陣列。每個項目都有一個 `type` 決定其他欄位,以及一個 `destination` 控制變更寫入位置。

1407 1692 


1410| `addRules` | `rules`、`behavior`、`destination` | 新增權限規則。`rules` 是 `{toolName, ruleContent?}` 物件的陣列。省略 `ruleContent` 以匹配整個工具。`behavior` 是 `"allow"`、`"deny"` 或 `"ask"` |1695| `addRules` | `rules`、`behavior`、`destination` | 新增權限規則。`rules` 是 `{toolName, ruleContent?}` 物件的陣列。省略 `ruleContent` 以匹配整個工具。`behavior` 是 `"allow"`、`"deny"` 或 `"ask"` |

1411| `replaceRules` | `rules`、`behavior`、`destination` | 用提供的 `rules` 替換 `destination` 處給定 `behavior` 的所有規則 |1696| `replaceRules` | `rules`、`behavior`、`destination` | 用提供的 `rules` 替換 `destination` 處給定 `behavior` 的所有規則 |

1412| `removeRules` | `rules`、`behavior`、`destination` | 移除匹配的給定 `behavior` 的規則 |1697| `removeRules` | `rules`、`behavior`、`destination` | 移除匹配的給定 `behavior` 的規則 |

1413| `setMode` | `mode`、`destination` | 變更權限模式。有效模式為 `default`、`acceptEdits`、`dontAsk`、`bypassPermissions` 和 `plan` |1698| `setMode` | `mode`、`destination` | 變更權限模式。有效模式為 `default`、`auto`、`acceptEdits`、`dontAsk`、`bypassPermissions` 和 `plan` |

1414| `addDirectories` | `directories`、`destination` | 新增工作目錄。`directories` 是路徑字串的陣列 |1699| `addDirectories` | `directories`、`destination` | 新增工作目錄。`directories` 是路徑字串的陣列 |

1415| `removeDirectories` | `directories`、`destination` | 移除工作目錄 |1700| `removeDirectories` | `directories`、`destination` | 移除工作目錄 |

1416 1701 


1429 1714 

1430Hook 可以回顯它接收的 `permission_suggestions` 之一作為其自己的 `updatedPermissions` 輸出,這等同於使用者在對話框中選擇該「總是允許」選項。1715Hook 可以回顯它接收的 `permission_suggestions` 之一作為其自己的 `updatedPermissions` 輸出,這等同於使用者在對話框中選擇該「總是允許」選項。

1431 1716 

1432### PostToolUse1717<h3 id="posttooluse">

1718 PostToolUse

1719</h3>

1433 1720 

1434在工具成功完成後立即執行。1721在工具成功完成後立即執行。

1435 1722 

1436匹配工具名稱,與 PreToolUse 相同的值。1723匹配工具名稱,與 PreToolUse 相同的值。

1437 1724 

1438#### PostToolUse 輸入1725<h4 id="posttooluse-input">

1726 PostToolUse 輸入

1727</h4>

1439 1728 

1440`PostToolUse` hooks 在工具已經成功執行後觸發。輸入包括 `tool_input`(發送給工具的參數)和 `tool_response`(它返回的結果)。兩者的確切架構取決於工具。1729`PostToolUse` hooks 在工具已經成功執行後觸發。輸入包括 `tool_input`(發送給工具的參數)和 `tool_response`(它返回的結果)。兩者的確切架構取決於工具。

1441 1730 


1464| :------------ | :--------------------------------------------- |1753| :------------ | :--------------------------------------------- |

1465| `duration_ms` | 可選。工具執行時間(毫秒)。不包括權限提示和 PreToolUse hooks 中花費的時間 |1754| `duration_ms` | 可選。工具執行時間(毫秒)。不包括權限提示和 PreToolUse hooks 中花費的時間 |

1466 1755 

1467#### PostToolUse 決定控制1756<h4 id="posttooluse-decision-control">

1757 PostToolUse 決定控制

1758</h4>

1468 1759 

1469`PostToolUse` hooks 可以在工具執行後向 Claude 提供反饋。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:1760`PostToolUse` hooks 可以在工具執行後向 Claude 提供反饋。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:

1470 1761 


1499 替換值必須符合工具的輸出形狀。內建工具返回結構化物件而不是純字串。例如,`Bash` 返回一個具有 `stdout`、`stderr`、`interrupted` 和 `isImage` 欄位的物件。對於內建工具,不符合工具輸出架構的值會被忽略,並使用原始輸出。MCP 工具輸出通過而不進行架構驗證。去除 Claude 需要的錯誤詳細資訊可能會導致它在錯誤的假設下進行。1790 替換值必須符合工具的輸出形狀。內建工具返回結構化物件而不是純字串。例如,`Bash` 返回一個具有 `stdout`、`stderr`、`interrupted` 和 `isImage` 欄位的物件。對於內建工具,不符合工具輸出架構的值會被忽略,並使用原始輸出。MCP 工具輸出通過而不進行架構驗證。去除 Claude 需要的錯誤詳細資訊可能會導致它在錯誤的假設下進行。

1500</Warning>1791</Warning>

1501 1792 

1502### PostToolUseFailure1793<h3 id="posttoolusefailure">

1794 PostToolUseFailure

1795</h3>

1503 1796 

1504當工具執行失敗時執行。此事件針對拋出錯誤或返回失敗結果的工具呼叫觸發。使用此項來記錄失敗、發送警報或向 Claude 提供更正反饋。1797當工具執行失敗時執行。此事件針對拋出錯誤或返回失敗結果的工具呼叫觸發。使用此項來記錄失敗、發送警報或向 Claude 提供更正反饋。

1505 1798 

1506匹配工具名稱,與 PreToolUse 相同的值。1799匹配工具名稱,與 PreToolUse 相同的值。

1507 1800 

1508#### PostToolUseFailure 輸入1801<h4 id="posttoolusefailure-input">

1802 PostToolUseFailure 輸入

1803</h4>

1509 1804 

1510PostToolUseFailure hooks 接收與 PostToolUse 相同的 `tool_name` 和 `tool_input` 欄位,以及作為頂層欄位的錯誤資訊:1805PostToolUseFailure hooks 接收與 PostToolUse 相同的 `tool_name` 和 `tool_input` 欄位,以及作為頂層欄位的錯誤資訊:

1511 1806 


1534| `is_interrupt` | 可選的布林值,指示失敗是否由使用者中斷引起 |1829| `is_interrupt` | 可選的布林值,指示失敗是否由使用者中斷引起 |

1535| `duration_ms` | 可選。工具執行時間(毫秒)。不包括權限提示和 PreToolUse hooks 中花費的時間 |1830| `duration_ms` | 可選。工具執行時間(毫秒)。不包括權限提示和 PreToolUse hooks 中花費的時間 |

1536 1831 

1537#### PostToolUseFailure 決定控制1832<h4 id="posttoolusefailure-decision-control">

1833 PostToolUseFailure 決定控制

1834</h4>

1538 1835 

1539`PostToolUseFailure` hooks 可以在工具失敗後向 Claude 提供上下文。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:1836`PostToolUseFailure` hooks 可以在工具失敗後向 Claude 提供上下文。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:

1540 1837 


1551}1848}

1552```1849```

1553 1850 

1554### PostToolBatch1851<h3 id="posttoolbatch">

1852 PostToolBatch

1853</h3>

1555 1854 

1556在批次中的每個工具呼叫都已解決後執行一次,在 Claude Code 向模型發送下一個請求之前。`PostToolUse` 每個工具執行一次,這意味著當 Claude 進行平行工具呼叫時它並發執行。`PostToolBatch` 恰好執行一次,包含完整批次,因此它是注入取決於執行的工具集而不是任何單一工具的上下文的正確位置。此事件沒有匹配器。1855在批次中的每個工具呼叫都已解決後執行一次,在 Claude Code 向模型發送下一個請求之前。`PostToolUse` 每個工具執行一次,這意味著當 Claude 進行平行工具呼叫時它並發執行。`PostToolBatch` 恰好執行一次,包含完整批次,因此它是注入取決於執行的工具集而不是任何單一工具的上下文的正確位置。此事件沒有匹配器。

1557 1856 

1558#### PostToolBatch 輸入1857<h4 id="posttoolbatch-input">

1858 PostToolBatch 輸入

1859</h4>

1559 1860 

1560除了 [通用輸入欄位](#common-input-fields) 外,PostToolBatch hooks 還接收 `tool_calls`,一個描述批次中每個工具呼叫的陣列:1861除了 [通用輸入欄位](#common-input-fields) 外,PostToolBatch hooks 還接收 `tool_calls`,一個描述批次中每個工具呼叫的陣列:

1561 1862 


1589 `tool_response` 形狀與 `PostToolUse` 的不同。`PostToolUse` 傳遞工具的結構化 `Output` 物件,例如 `Write` 的 `{filePath: "...", success: true}`;`PostToolBatch` 傳遞序列化的 `tool_result` 內容模型看到的。1890 `tool_response` 形狀與 `PostToolUse` 的不同。`PostToolUse` 傳遞工具的結構化 `Output` 物件,例如 `Write` 的 `{filePath: "...", success: true}`;`PostToolBatch` 傳遞序列化的 `tool_result` 內容模型看到的。

1590</Note>1891</Note>

1591 1892 

1592#### PostToolBatch 決定控制1893<h4 id="posttoolbatch-decision-control">

1894 PostToolBatch 決定控制

1895</h4>

1593 1896 

1594`PostToolBatch` hooks 可以為 Claude 注入上下文。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:1897`PostToolBatch` hooks 可以為 Claude 注入上下文。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:

1595 1898 


1612 1915 

1613返回 `decision: "block"` 或 `continue: false` 在下一個模型呼叫之前停止代理迴圈。1916返回 `decision: "block"` 或 `continue: false` 在下一個模型呼叫之前停止代理迴圈。

1614 1917 

1615### PermissionDenied1918<h3 id="permissiondenied">

1919 PermissionDenied

1920</h3>

1616 1921 

1617當 [自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類器拒絕工具呼叫時執行。此 hook 僅在自動模式中觸發:當您手動拒絕權限對話框、當 `PreToolUse` hook 阻止呼叫或當 `deny` 規則匹配時,它不執行。使用它來記錄分類器拒絕、調整配置或告訴模型它可能重試工具呼叫。1922當 [自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類器拒絕工具呼叫時執行。此 hook 僅在自動模式中觸發:當您手動拒絕權限對話框、當 `PreToolUse` hook 阻止呼叫或當 `deny` 規則匹配時,它不執行。使用它來記錄分類器拒絕、調整配置或告訴模型它可能重試工具呼叫。

1618 1923 

1619匹配工具名稱,與 PreToolUse 相同的值。1924匹配工具名稱,與 PreToolUse 相同的值。

1620 1925 

1621#### PermissionDenied 輸入1926<h4 id="permissiondenied-input">

1927 PermissionDenied 輸入

1928</h4>

1622 1929 

1623除了 [通用輸入欄位](#common-input-fields) 外,PermissionDenied hooks 還接收 `tool_name`、`tool_input`、`tool_use_id` 和 `reason`。1930除了 [通用輸入欄位](#common-input-fields) 外,PermissionDenied hooks 還接收 `tool_name`、`tool_input`、`tool_use_id` 和 `reason`。

1624 1931 


1643| :------- | :-------------- |1950| :------- | :-------------- |

1644| `reason` | 分類器拒絕工具呼叫的原因的解釋 |1951| `reason` | 分類器拒絕工具呼叫的原因的解釋 |

1645 1952 

1646#### PermissionDenied 決定控制1953<h4 id="permissiondenied-decision-control">

1954 PermissionDenied 決定控制

1955</h4>

1647 1956 

1648PermissionDenied hooks 可以告訴模型它可能重試被拒絕的工具呼叫。返回一個 JSON 物件,其中 `hookSpecificOutput.retry` 設定為 `true`:1957PermissionDenied hooks 可以告訴模型它可能重試被拒絕的工具呼叫。返回一個 JSON 物件,其中 `hookSpecificOutput.retry` 設定為 `true`:

1649 1958 


1658 1967 

1659當 `retry` 為 `true` 時,Claude Code 向對話新增一條訊息,告訴模型它可能重試工具呼叫。拒絕本身不被反轉。如果您的 hook 不返回 JSON,或返回 `retry: false`,拒絕成立,模型接收原始拒絕訊息。1968當 `retry` 為 `true` 時,Claude Code 向對話新增一條訊息,告訴模型它可能重試工具呼叫。拒絕本身不被反轉。如果您的 hook 不返回 JSON,或返回 `retry: false`,拒絕成立,模型接收原始拒絕訊息。

1660 1969 

1661### Notification1970<h3 id="notification">

1971 Notification

1972</h3>

1662 1973 

1663當 Claude Code 發送通知時執行。匹配通知類型:`permission_prompt`、`idle_prompt`、`auth_success`、`elicitation_dialog`、`elicitation_complete`、`elicitation_response`。省略匹配器以針對所有通知類型執行 hooks。1974當 Claude Code 發送通知時執行。匹配通知類型:`permission_prompt`、`idle_prompt`、`auth_success`、`elicitation_dialog`、`elicitation_complete`、`elicitation_response`。省略匹配器以針對所有通知類型執行 hooks。

1664 1975 


1691}2002}

1692```2003```

1693 2004 

1694#### Notification 輸入2005<h4 id="notification-input">

2006 Notification 輸入

2007</h4>

1695 2008 

1696除了 [通用輸入欄位](#common-input-fields) 外,Notification hooks 還接收包含通知文字的 `message`、可選的 `title` 和指示哪個類型觸發的 `notification_type`。2009除了 [通用輸入欄位](#common-input-fields) 外,Notification hooks 還接收包含通知文字的 `message`、可選的 `title` 和指示哪個類型觸發的 `notification_type`。

1697 2010 


1709 2022 

1710Notification hooks 無法阻止或修改通知。它們用於副作用,例如將通知轉發到外部服務。[通用 JSON 輸出欄位](#json-output)(例如 `systemMessage`)適用。2023Notification hooks 無法阻止或修改通知。它們用於副作用,例如將通知轉發到外部服務。[通用 JSON 輸出欄位](#json-output)(例如 `systemMessage`)適用。

1711 2024 

1712### SubagentStart2025<h3 id="subagentstart">

2026 SubagentStart

2027</h3>

1713 2028 

1714當通過 Agent 工具生成 Claude Code subagent 時執行。支援匹配器以按代理類型名稱篩選。對於內建代理,這是代理名稱,如 `general-purpose`、`Explore` 或 `Plan`。對於 [自訂 subagents](/zh-TW/sub-agents),這是代理 frontmatter 中的 `name` 欄位,而不是檔案名稱。2029當通過 Agent 工具生成 Claude Code subagent 時執行。支援匹配器以按代理類型名稱篩選。對於內建代理,這是代理名稱,如 `general-purpose`、`Explore` 或 `Plan`。對於 [自訂 subagents](/zh-TW/sub-agents),這是代理 frontmatter 中的 `name` 欄位,而不是檔案名稱。

1715 2030 

1716#### SubagentStart 輸入2031<h4 id="subagentstart-input">

2032 SubagentStart 輸入

2033</h4>

1717 2034 

1718除了 [通用輸入欄位](#common-input-fields) 外,SubagentStart hooks 還接收 `agent_id`(subagent 的唯一識別碼)和 `agent_type`(代理名稱,內建代理,如 `"general-purpose"`、`"Explore"`、`"Plan"` 或自訂代理名稱)。2035除了 [通用輸入欄位](#common-input-fields) 外,SubagentStart hooks 還接收 `agent_id`(subagent 的唯一識別碼)和 `agent_type`(代理名稱,內建代理,如 `"general-purpose"`、`"Explore"`、`"Plan"` 或自訂代理名稱)。

1719 2036 


1743}2060}

1744```2061```

1745 2062 

1746### SubagentStop2063<h3 id="subagentstop">

2064 SubagentStop

2065</h3>

1747 2066 

1748當 Claude Code subagent 完成回應時執行。匹配代理類型,與 SubagentStart 相同的值。2067當 Claude Code subagent 完成回應時執行。匹配代理類型,與 SubagentStart 相同的值。

1749 2068 

1750#### SubagentStop 輸入2069<h4 id="subagentstop-input">

2070 SubagentStop 輸入

2071</h4>

1751 2072 

1752除了 [通用輸入欄位](#common-input-fields) 外,SubagentStop hooks 還接收 `stop_hook_active`、`agent_id`、`agent_type`、`agent_transcript_path` 和 `last_assistant_message`。`agent_type` 欄位是用於匹配器篩選的值。`transcript_path` 是主工作階段的成績單,而 `agent_transcript_path` 是 subagent 自己的成績單,存儲在嵌套的 `subagents/` 資料夾中。`last_assistant_message` 欄位包含 subagent 最終回應的文字內容,因此 hooks 可以存取它而無需解析成績單檔案。2073除了 [通用輸入欄位](#common-input-fields) 外,SubagentStop hooks 還接收 `stop_hook_active`、`agent_id`、`agent_type`、`agent_transcript_path` 和 `last_assistant_message`。`agent_type` 欄位是用於匹配器篩選的值。`transcript_path` 是主工作階段的成績單,而 `agent_transcript_path` 是 subagent 自己的成績單,存儲在嵌套的 `subagents/` 資料夾中。`last_assistant_message` 欄位包含 subagent 最終回應的文字內容,因此 hooks 可以存取它而無需解析成績單檔案。

1753 2074 

2075SubagentStop hooks 也接收 [Stop 輸入](#stop-input) 中描述的 `background_tasks` 和 `session_crons` 陣列,在 Claude Code v2.1.145 或更高版本中可用。兩個陣列都限定於父工作階段,而不是 subagent。

2076 

1754```json theme={null}2077```json theme={null}

1755{2078{

1756 "session_id": "abc123",2079 "session_id": "abc123",


1762 "agent_id": "def456",2085 "agent_id": "def456",

1763 "agent_type": "Explore",2086 "agent_type": "Explore",

1764 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",2087 "agent_transcript_path": "~/.claude/projects/.../abc123/subagents/agent-def456.jsonl",

1765 "last_assistant_message": "Analysis complete. Found 3 potential issues..."2088 "last_assistant_message": "Analysis complete. Found 3 potential issues...",

2089 "background_tasks": [],

2090 "session_crons": []

1766}2091}

1767```2092```

1768 2093 

1769SubagentStop hooks 使用與 [Stop hooks](#stop-decision-control) 相同的決定控制格式。它們不支援 `additionalContext`。返回 `decision: "block"` 與 `reason` 會保持 subagent 執行並將 `reason` 作為其下一個指令傳遞給 subagent。要在 subagent 返回後將上下文注入到父工作階段,請改用 `Agent` 工具上的 [`PostToolUse`](#posttooluse) hook。2094SubagentStop hooks 使用與 [Stop hooks](#stop-decision-control) 相同的決定控制格式。它們不支援 `additionalContext`。返回 `decision: "block"` 與 `reason` 會保持 subagent 執行並將 `reason` 作為其下一個指令傳遞給 subagent。要在 subagent 返回後將上下文注入到父工作階段,請改用 `Agent` 工具上的 [`PostToolUse`](#posttooluse) hook。

1770 2095 

1771### TaskCreated2096<h3 id="taskcreated">

2097 TaskCreated

2098</h3>

1772 2099 

1773當任務通過 `TaskCreate` 工具被建立時執行。使用此項來強制執行命名慣例、要求任務描述或防止某些任務被建立。2100當任務通過 `TaskCreate` 工具被建立時執行。使用此項來強制執行命名慣例、要求任務描述或防止某些任務被建立。

1774 2101 

1775當 `TaskCreated` hook 以代碼 2 退出時,任務不被建立,stderr 訊息被反饋給模型作為反饋。要完全停止隊友而不是重新執行它,請返回 JSON,其中 `{"continue": false, "stopReason": "..."}`。TaskCreated hooks 不支援匹配器,在每次出現時觸發。2102當 `TaskCreated` hook 以代碼 2 退出時,任務不被建立,stderr 訊息被反饋給模型作為反饋。要完全停止隊友而不是重新執行它,請返回 JSON,其中 `{"continue": false, "stopReason": "..."}`。TaskCreated hooks 不支援匹配器,在每次出現時觸發。

1776 2103 

1777#### TaskCreated 輸入2104<h4 id="taskcreated-input">

2105 TaskCreated 輸入

2106</h4>

1778 2107 

1779除了 [通用輸入欄位](#common-input-fields) 外,TaskCreated hooks 還接收 `task_id`、`task_subject` 和可選的 `task_description`、`teammate_name` 和 `team_name`。2108除了 [通用輸入欄位](#common-input-fields) 外,TaskCreated hooks 還接收 `task_id`、`task_subject` 和可選的 `task_description`、`teammate_name` 和 `team_name`。

1780 2109 


1801| `teammate_name` | 建立任務的隊友的名稱。可能不存在 |2130| `teammate_name` | 建立任務的隊友的名稱。可能不存在 |

1802| `team_name` | 團隊的名稱。可能不存在 |2131| `team_name` | 團隊的名稱。可能不存在 |

1803 2132 

1804#### TaskCreated 決定控制2133<h4 id="taskcreated-decision-control">

2134 TaskCreated 決定控制

2135</h4>

1805 2136 

1806TaskCreated hooks 支援兩種方式來控制任務建立:2137TaskCreated hooks 支援兩種方式來控制任務建立:

1807 2138 


1823exit 02154exit 0

1824```2155```

1825 2156 

1826### TaskCompleted2157<h3 id="taskcompleted">

2158 TaskCompleted

2159</h3>

1827 2160 

1828當任務被標記為已完成時執行。這在兩種情況下觸發:當任何代理通過 TaskUpdate 工具明確標記任務為已完成時,或當 [agent team](/zh-TW/agent-teams) 隊友完成其輪次並有進行中的任務時。使用此項來強制執行完成條件,例如通過測試或 lint 檢查,然後任務才能關閉。2161當任務被標記為已完成時執行。這在兩種情況下觸發:當任何代理通過 TaskUpdate 工具明確標記任務為已完成時,或當 [agent team](/zh-TW/agent-teams) 隊友完成其輪次並有進行中的任務時。使用此項來強制執行完成條件,例如通過測試或 lint 檢查,然後任務才能關閉。

1829 2162 

1830當 `TaskCompleted` hook 以代碼 2 退出時,任務不被標記為已完成,stderr 訊息被反饋給模型作為反饋。要完全停止隊友而不是重新執行它,請返回 JSON,其中 `{"continue": false, "stopReason": "..."}`。TaskCompleted hooks 不支援匹配器,在每次出現時觸發。2163當 `TaskCompleted` hook 以代碼 2 退出時,任務不被標記為已完成,stderr 訊息被反饋給模型作為反饋。要完全停止隊友而不是重新執行它,請返回 JSON,其中 `{"continue": false, "stopReason": "..."}`。TaskCompleted hooks 不支援匹配器,在每次出現時觸發。

1831 2164 

1832#### TaskCompleted 輸入2165<h4 id="taskcompleted-input">

2166 TaskCompleted 輸入

2167</h4>

1833 2168 

1834除了 [通用輸入欄位](#common-input-fields) 外,TaskCompleted hooks 還接收 `task_id`、`task_subject` 和可選的 `task_description`、`teammate_name` 和 `team_name`。2169除了 [通用輸入欄位](#common-input-fields) 外,TaskCompleted hooks 還接收 `task_id`、`task_subject` 和可選的 `task_description`、`teammate_name` 和 `team_name`。

1835 2170 


1856| `teammate_name` | 完成任務的隊友的名稱。可能不存在 |2191| `teammate_name` | 完成任務的隊友的名稱。可能不存在 |

1857| `team_name` | 團隊的名稱。可能不存在 |2192| `team_name` | 團隊的名稱。可能不存在 |

1858 2193 

1859#### TaskCompleted 決定控制2194<h4 id="taskcompleted-decision-control">

2195 TaskCompleted 決定控制

2196</h4>

1860 2197 

1861TaskCompleted hooks 支援兩種方式來控制任務完成:2198TaskCompleted hooks 支援兩種方式來控制任務完成:

1862 2199 


1879exit 02216exit 0

1880```2217```

1881 2218 

1882### Stop2219<h3 id="stop">

2220 Stop

2221</h3>

1883 2222 

1884當主 Claude Code 代理完成回應時執行。如果停止是由於使用者中斷,則不執行。API 錯誤會觸發 [StopFailure](#stopfailure)。2223當主 Claude Code 代理完成回應時執行。如果停止是由於使用者中斷,則不執行。API 錯誤會觸發 [StopFailure](#stopfailure)。

1885 2224 


1887 [`/goal`](/zh-TW/goal) 命令是工作階段範圍提示型 Stop hook 的內建快捷方式。當您想要 Claude 繼續工作直到條件成立而不編寫 hook 配置時,請使用它。2226 [`/goal`](/zh-TW/goal) 命令是工作階段範圍提示型 Stop hook 的內建快捷方式。當您想要 Claude 繼續工作直到條件成立而不編寫 hook 配置時,請使用它。

1888</Tip>2227</Tip>

1889 2228 

1890#### Stop 輸入2229<h4 id="stop-input">

2230 Stop 輸入

2231</h4>

2232 

2233除了 [通用輸入欄位](#common-input-fields) 外,Stop hooks 還接收 `stop_hook_active`、`last_assistant_message`、`background_tasks` 和 `session_crons`。`stop_hook_active` 欄位在 Claude Code 已經作為 stop hook 的結果繼續時為 `true`。檢查此值或處理成績單以防止 Claude Code 無限執行。`last_assistant_message` 欄位包含 Claude 最終回應的文字內容,因此 hooks 可以存取它而無需解析成績單檔案。

2234 

2235`background_tasks` 和 `session_crons` 陣列在 Claude Code v2.1.145 或更高版本中可用,讓 hooks 區分「工作階段完成」和「工作階段暫停等待背景工作喚醒它」。當任務登錄表可達時,兩個陣列都存在,當沒有任何內容在進行中或計劃時為空。

2236 

2237`background_tasks` 中的每個項目描述一個進行中的任務,並使用這些欄位:

1891 2238 

1892除了 [通用輸入欄位](#common-input-fields) 外,Stop hooks 還接收 `stop_hook_active` 和 `last_assistant_message`。`stop_hook_active` 欄位在 Claude Code 已經作為 stop hook 的結果繼續時為 `true`。檢查此值或處理成績單以防止 Claude Code 無限執行。`last_assistant_message` 欄位包含 Claude 最終回應的文字內容,因此 hooks 可以存取它而無需解析成績單檔案。2239| 欄位 | 描述 |

2240| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------- |

2241| `id` | 任務識別碼 |

2242| `type` | 友好的任務類型標籤,例如 `shell`、`subagent`、`monitor`、`workflow`、`teammate`、`cloud session` 或 `MCP task`。每個標籤識別哪個 Claude Code 功能建立了任務。對於無法識別的類型,回退到原始判別式 |

2243| `status` | 目前任務狀態 |

2244| `description` | 自由文字描述,上限為 1000 個字元,當被剪裁時在字串中有 `… [+N chars]` 標記 |

2245| `command` | Shell 命令行,上限為 1000 個字元。僅針對 `shell` 任務出現 |

2246| `agent_type` | Subagent 類型名稱。僅針對 `subagent` 任務出現 |

2247| `server` | MCP 伺服器名稱。僅針對 `monitor` 和 `MCP task` 任務出現 |

2248| `tool` | MCP 工具名稱。僅針對 `monitor` 和 `MCP task` 任務出現 |

2249| `name` | 工作流名稱。僅針對 `workflow` 任務出現 |

2250 

2251`session_crons` 中的每個項目描述一個工作階段範圍的計劃喚醒,來自 `CronCreate`、`ScheduleWakeup` 和 `/loop`:

2252 

2253| 欄位 | 描述 |

2254| :---------- | :--------------------------------------------------- |

2255| `id` | Cron 任務識別碼 |

2256| `schedule` | Cron 表達式,例如 `0 9 * * 1-5` |

2257| `recurring` | `false` 用於一次性喚醒,其計劃編碼單一觸發時間,`true` 用於在每次匹配時重新觸發的任務 |

2258| `prompt` | 當 cron 觸發時提交的提示,上限為 1000 個字元,具有相同的 `… [+N chars]` 標記 |

2259 

2260此範例顯示一個 Stop 輸入,其中有一個進行中的 shell 任務和一個循環 cron:

1893 2261 

1894```json theme={null}2262```json theme={null}

1895{2263{


1899 "permission_mode": "default",2267 "permission_mode": "default",

1900 "hook_event_name": "Stop",2268 "hook_event_name": "Stop",

1901 "stop_hook_active": true,2269 "stop_hook_active": true,

1902 "last_assistant_message": "I've completed the refactoring. Here's a summary..."2270 "last_assistant_message": "I've completed the refactoring. Here's a summary...",

2271 "background_tasks": [

2272 {

2273 "id": "task-001",

2274 "type": "shell",

2275 "status": "running",

2276 "description": "tail logs",

2277 "command": "tail -f /var/log/syslog"

2278 }

2279 ],

2280 "session_crons": [

2281 {

2282 "id": "cron-001",

2283 "schedule": "0 9 * * 1-5",

2284 "recurring": true,

2285 "prompt": "check the build"

2286 }

2287 ]

1903}2288}

1904```2289```

1905 2290 

1906#### Stop 決定控制2291<h4 id="stop-decision-control">

2292 Stop 決定控制

2293</h4>

1907 2294 

1908`Stop` 和 `SubagentStop` hooks 可以控制 Claude 是否繼續。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:2295`Stop` 和 `SubagentStop` hooks 可以控制 Claude 是否繼續。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:

1909 2296 


1919}2306}

1920```2307```

1921 2308 

1922### StopFailure2309<h3 id="stopfailure">

2310 StopFailure

2311</h3>

1923 2312 

1924當轉向因 API 錯誤而結束時執行,而不是 [Stop](#stop)。輸出和退出代碼被忽略。使用此項來記錄失敗、發送警報或在 Claude 因速率限制、驗證問題或其他 API 錯誤而無法完成回應時採取恢復操作。2313當轉向因 API 錯誤而結束時執行,而不是 [Stop](#stop)。輸出和退出代碼被忽略。使用此項來記錄失敗、發送警報或在 Claude 因速率限制、驗證問題或其他 API 錯誤而無法完成回應時採取恢復操作。

1925 2314 

1926#### StopFailure 輸入2315<h4 id="stopfailure-input">

2316 StopFailure 輸入

2317</h4>

1927 2318 

1928除了 [通用輸入欄位](#common-input-fields) 外,StopFailure hooks 還接收 `error`、可選的 `error_details` 和可選的 `last_assistant_message`。`error` 欄位識別錯誤類型,用於匹配器篩選。2319除了 [通用輸入欄位](#common-input-fields) 外,StopFailure hooks 還接收 `error`、可選的 `error_details` 和可選的 `last_assistant_message`。`error` 欄位識別錯誤類型,用於匹配器篩選。

1929 2320 

1930| 欄位 | 描述 |2321| 欄位 | 描述 |

1931| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |2322| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1932| `error` | 錯誤類型:`rate_limit`、`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`invalid_request`、`server_error`、`max_output_tokens` 或 `unknown` |2323| `error` | 錯誤類型:`rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens` 或 `unknown` |

1933| `error_details` | 有關錯誤的其他詳細資訊(如果可用) |2324| `error_details` | 有關錯誤的其他詳細資訊(如果可用) |

1934| `last_assistant_message` | 在對話中顯示的呈現錯誤文字。與 `Stop` 和 `SubagentStop` 不同,其中此欄位包含 Claude 的對話輸出,對於 `StopFailure`,它包含 API 錯誤字串本身,例如 `"API Error: Rate limit reached"` |2325| `last_assistant_message` | 在對話中顯示的呈現錯誤文字。與 `Stop` 和 `SubagentStop` 不同,其中此欄位包含 Claude 的對話輸出,對於 `StopFailure`,它包含 API 錯誤字串本身,例如 `"API Error: Rate limit reached"` |

1935 2326 


1947 2338 

1948StopFailure hooks 沒有決定控制。它們僅用於通知和記錄目的執行。2339StopFailure hooks 沒有決定控制。它們僅用於通知和記錄目的執行。

1949 2340 

1950### TeammateIdle2341<h3 id="teammateidle">

2342 TeammateIdle

2343</h3>

1951 2344 

1952當 [agent team](/zh-TW/agent-teams) 隊友在完成其輪次後即將閒置時執行。使用此項來在隊友停止工作之前強制執行品質閘道,例如要求通過 lint 檢查或驗證輸出檔案存在。2345當 [agent team](/zh-TW/agent-teams) 隊友在完成其輪次後即將閒置時執行。使用此項來在隊友停止工作之前強制執行品質閘道,例如要求通過 lint 檢查或驗證輸出檔案存在。

1953 2346 

1954當 `TeammateIdle` hook 以代碼 2 退出時,隊友會收到 stderr 訊息作為反饋,並繼續工作而不是閒置。要完全停止隊友而不是重新執行它,請返回 JSON,其中 `{"continue": false, "stopReason": "..."}`。TeammateIdle hooks 不支援匹配器,在每次出現時觸發。2347當 `TeammateIdle` hook 以代碼 2 退出時,隊友會收到 stderr 訊息作為反饋,並繼續工作而不是閒置。要完全停止隊友而不是重新執行它,請返回 JSON,其中 `{"continue": false, "stopReason": "..."}`。TeammateIdle hooks 不支援匹配器,在每次出現時觸發。

1955 2348 

1956#### TeammateIdle 輸入2349<h4 id="teammateidle-input">

2350 TeammateIdle 輸入

2351</h4>

1957 2352 

1958除了 [通用輸入欄位](#common-input-fields) 外,TeammateIdle hooks 還接收 `teammate_name` 和 `team_name`。2353除了 [通用輸入欄位](#common-input-fields) 外,TeammateIdle hooks 還接收 `teammate_name` 和 `team_name`。

1959 2354 


1974| `teammate_name` | 即將閒置的隊友的名稱 |2369| `teammate_name` | 即將閒置的隊友的名稱 |

1975| `team_name` | 團隊的名稱 |2370| `team_name` | 團隊的名稱 |

1976 2371 

1977#### TeammateIdle 決定控制2372<h4 id="teammateidle-decision-control">

2373 TeammateIdle 決定控制

2374</h4>

1978 2375 

1979TeammateIdle hooks 支援兩種方式來控制隊友行為:2376TeammateIdle hooks 支援兩種方式來控制隊友行為:

1980 2377 


1994exit 02391exit 0

1995```2392```

1996 2393 

1997### ConfigChange2394<h3 id="configchange">

2395 ConfigChange

2396</h3>

1998 2397 

1999當配置檔案在工作階段期間變更時執行。使用此項來稽核設定變更、強制執行安全原則或阻止對配置檔案的未授權修改。2398當配置檔案在工作階段期間變更時執行。使用此項來稽核設定變更、強制執行安全原則或阻止對配置檔案的未授權修改。

2000 2399 


2030}2429}

2031```2430```

2032 2431 

2033#### ConfigChange 輸入2432<h4 id="configchange-input">

2433 ConfigChange 輸入

2434</h4>

2034 2435 

2035除了 [通用輸入欄位](#common-input-fields) 外,ConfigChange hooks 還接收 `source` 和可選的 `file_path`。`source` 欄位指示哪種配置類型變更,`file_path` 提供被修改的特定檔案的路徑。2436除了 [通用輸入欄位](#common-input-fields) 外,ConfigChange hooks 還接收 `source` 和可選的 `file_path`。`source` 欄位指示哪種配置類型變更,`file_path` 提供被修改的特定檔案的路徑。

2036 2437 


2045}2446}

2046```2447```

2047 2448 

2048#### ConfigChange 決定控制2449<h4 id="configchange-decision-control">

2450 ConfigChange 決定控制

2451</h4>

2049 2452 

2050ConfigChange hooks 可以阻止配置變更生效。使用退出代碼 2 或 JSON `decision` 來防止變更。被阻止時,新設定不會應用於執行中的工作階段。2453ConfigChange hooks 可以阻止配置變更生效。使用退出代碼 2 或 JSON `decision` 來防止變更。被阻止時,新設定不會應用於執行中的工作階段。

2051 2454 


2063 2466 

2064`policy_settings` 變更無法被阻止。Hooks 仍然針對 `policy_settings` 來源觸發,因此您可以使用它們進行稽核記錄,但任何阻止決定都會被忽略。這確保企業管理的設定始終生效。2467`policy_settings` 變更無法被阻止。Hooks 仍然針對 `policy_settings` 來源觸發,因此您可以使用它們進行稽核記錄,但任何阻止決定都會被忽略。這確保企業管理的設定始終生效。

2065 2468 

2066### CwdChanged2469<h3 id="cwdchanged">

2470 CwdChanged

2471</h3>

2067 2472 

2068當工作目錄在工作階段期間變更時執行,例如當 Claude 執行 `cd` 命令時。使用此項來對目錄變更做出反應:重新載入環境變數、啟動專案特定的工具鏈或自動執行設定指令碼。與 [FileChanged](#filechanged) 配對,用於 [direnv](https://direnv.net/) 等管理每個目錄環境的工具。2473當工作目錄在工作階段期間變更時執行,例如當 Claude 執行 `cd` 命令時。使用此項來對目錄變更做出反應:重新載入環境變數、啟動專案特定的工具鏈或自動執行設定指令碼。與 [FileChanged](#filechanged) 配對,用於 [direnv](https://direnv.net/) 等管理每個目錄環境的工具。

2069 2474 


2071 2476 

2072CwdChanged 不支援匹配器,在每次目錄變更時觸發。2477CwdChanged 不支援匹配器,在每次目錄變更時觸發。

2073 2478 

2074#### CwdChanged 輸入2479<h4 id="cwdchanged-input">

2480 CwdChanged 輸入

2481</h4>

2075 2482 

2076除了 [通用輸入欄位](#common-input-fields) 外,CwdChanged hooks 還接收 `old_cwd` 和 `new_cwd`。2483除了 [通用輸入欄位](#common-input-fields) 外,CwdChanged hooks 還接收 `old_cwd` 和 `new_cwd`。

2077 2484 


2086}2493}

2087```2494```

2088 2495 

2089#### CwdChanged 輸出2496<h4 id="cwdchanged-output">

2497 CwdChanged 輸出

2498</h4>

2090 2499 

2091除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,CwdChanged hooks 還可以返回 `watchPaths` 來動態設定 [FileChanged](#filechanged) 監視的檔案路徑:2500除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,CwdChanged hooks 還可以返回 `watchPaths` 來動態設定 [FileChanged](#filechanged) 監視的檔案路徑:

2092 2501 


2096 2505 

2097CwdChanged hooks 沒有決定控制。它們無法阻止目錄變更。2506CwdChanged hooks 沒有決定控制。它們無法阻止目錄變更。

2098 2507 

2099### FileChanged2508<h3 id="filechanged">

2509 FileChanged

2510</h3>

2100 2511 

2101當監視的檔案在磁碟上變更時執行。適用於在專案配置檔案被修改時重新載入環境變數。2512當監視的檔案在磁碟上變更時執行。適用於在專案配置檔案被修改時重新載入環境變數。

2102 2513 


2107 2518 

2108FileChanged hooks 可以存取 `CLAUDE_ENV_FILE`。寫入該檔案的變數會持久化到工作階段的後續 Bash 命令中,就像在 [SessionStart hooks](#persist-environment-variables) 中一樣。2519FileChanged hooks 可以存取 `CLAUDE_ENV_FILE`。寫入該檔案的變數會持久化到工作階段的後續 Bash 命令中,就像在 [SessionStart hooks](#persist-environment-variables) 中一樣。

2109 2520 

2110#### FileChanged 輸入2521<h4 id="filechanged-input">

2522 FileChanged 輸入

2523</h4>

2111 2524 

2112除了 [通用輸入欄位](#common-input-fields) 外,FileChanged hooks 還接收 `file_path` 和 `event`。2525除了 [通用輸入欄位](#common-input-fields) 外,FileChanged hooks 還接收 `file_path` 和 `event`。

2113 2526 


2127}2540}

2128```2541```

2129 2542 

2130#### FileChanged 輸出2543<h4 id="filechanged-output">

2544 FileChanged 輸出

2545</h4>

2131 2546 

2132除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,FileChanged hooks 還可以返回 `watchPaths` 來動態更新監視的檔案路徑:2547除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,FileChanged hooks 還可以返回 `watchPaths` 來動態更新監視的檔案路徑:

2133 2548 


2137 2552 

2138FileChanged hooks 沒有決定控制。它們無法阻止檔案變更的發生。2553FileChanged hooks 沒有決定控制。它們無法阻止檔案變更的發生。

2139 2554 

2140### WorktreeCreate2555<h3 id="worktreecreate">

2556 WorktreeCreate

2557</h3>

2141 2558 

2142當您執行 `claude --worktree` 或 [subagent 使用 `isolation: "worktree"`](/zh-TW/sub-agents#choose-the-subagent-scope) 時,Claude Code 使用 `git worktree` 建立隔離的工作副本。如果您配置 WorktreeCreate hook,它會替換預設的 git 行為,讓您使用不同的版本控制系統,如 SVN、Perforce 或 Mercurial。2559當您執行 `claude --worktree` 或 [subagent 使用 `isolation: "worktree"`](/zh-TW/sub-agents#choose-the-subagent-scope) 時,Claude Code 使用 `git worktree` 建立隔離的工作副本。如果您配置 WorktreeCreate hook,它會替換預設的 git 行為,讓您使用不同的版本控制系統,如 SVN、Perforce 或 Mercurial。

2143 2560 


2166 2583 

2167Hook 從 stdin 上的 JSON 輸入讀取 worktree `name`,將新副本簽出到新目錄,並列印目錄路徑。最後一行的 `echo` 是 Claude Code 讀取的 worktree 路徑。將任何其他輸出重定向到 stderr,以免干擾路徑。2584Hook 從 stdin 上的 JSON 輸入讀取 worktree `name`,將新副本簽出到新目錄,並列印目錄路徑。最後一行的 `echo` 是 Claude Code 讀取的 worktree 路徑。將任何其他輸出重定向到 stderr,以免干擾路徑。

2168 2585 

2169#### WorktreeCreate 輸入2586<h4 id="worktreecreate-input">

2587 WorktreeCreate 輸入

2588</h4>

2170 2589 

2171除了 [通用輸入欄位](#common-input-fields) 外,WorktreeCreate hooks 還接收 `name` 欄位。這是新 worktree 的 slug 識別碼,由使用者指定或自動生成(例如 `bold-oak-a3f2`)。2590除了 [通用輸入欄位](#common-input-fields) 外,WorktreeCreate hooks 還接收 `name` 欄位。這是新 worktree 的 slug 識別碼,由使用者指定或自動生成(例如 `bold-oak-a3f2`)。

2172 2591 


2180}2599}

2181```2600```

2182 2601 

2183#### WorktreeCreate 輸出2602<h4 id="worktreecreate-output">

2603 WorktreeCreate 輸出

2604</h4>

2184 2605 

2185WorktreeCreate hooks 不使用標準的允許/阻止決定模型。相反,hook 的成功或失敗決定結果。Hook 必須返回建立的 worktree 目錄的絕對路徑:2606WorktreeCreate hooks 不使用標準的允許/阻止決定模型。相反,hook 的成功或失敗決定結果。Hook 必須返回建立的 worktree 目錄的絕對路徑:

2186 2607 


2189 2610 

2190如果 hook 失敗或不產生路徑,worktree 建立失敗並出現錯誤。2611如果 hook 失敗或不產生路徑,worktree 建立失敗並出現錯誤。

2191 2612 

2192### WorktreeRemove2613<h3 id="worktreeremove">

2614 WorktreeRemove

2615</h3>

2193 2616 

2194[WorktreeCreate](#worktreecreate) 的清理對應項。此 hook 在 worktree 被移除時觸發,要麼當您退出 `--worktree` 工作階段並選擇移除它時,要麼當具有 `isolation: "worktree"` 的 subagent 完成時。對於基於 git 的 worktrees,Claude 使用 `git worktree remove` 自動處理清理。如果您為非 git 版本控制系統配置了 WorktreeCreate hook,請將其與 WorktreeRemove hook 配對以處理清理。沒有它,worktree 目錄會留在磁碟上。2617[WorktreeCreate](#worktreecreate) 的清理對應項。此 hook 在 worktree 被移除時觸發,要麼當您退出 `--worktree` 工作階段並選擇移除它時,要麼當具有 `isolation: "worktree"` 的 subagent 完成時。對於基於 git 的 worktrees,Claude 使用 `git worktree remove` 自動處理清理。如果您為非 git 版本控制系統配置了 WorktreeCreate hook,請將其與 WorktreeRemove hook 配對以處理清理。沒有它,worktree 目錄會留在磁碟上。

2195 2618 


2212}2635}

2213```2636```

2214 2637 

2215#### WorktreeRemove 輸入2638<h4 id="worktreeremove-input">

2639 WorktreeRemove 輸入

2640</h4>

2216 2641 

2217除了 [通用輸入欄位](#common-input-fields) 外,WorktreeRemove hooks 還接收 `worktree_path` 欄位,這是被移除的 worktree 的絕對路徑。2642除了 [通用輸入欄位](#common-input-fields) 外,WorktreeRemove hooks 還接收 `worktree_path` 欄位,這是被移除的 worktree 的絕對路徑。

2218 2643 


2228 2653 

2229WorktreeRemove hooks 沒有決定控制。它們無法阻止 worktree 移除,但可以執行清理任務,如移除版本控制狀態或存檔變更。Hook 失敗僅在偵錯模式中記錄。2654WorktreeRemove hooks 沒有決定控制。它們無法阻止 worktree 移除,但可以執行清理任務,如移除版本控制狀態或存檔變更。Hook 失敗僅在偵錯模式中記錄。

2230 2655 

2231### PreCompact2656<h3 id="precompact">

2657 PreCompact

2658</h3>

2232 2659 

2233在 Claude Code 即將執行壓縮操作之前執行。2660在 Claude Code 即將執行壓縮操作之前執行。

2234 2661 


2243 2670 

2244阻止自動壓縮有不同的效果,取決於何時觸發。如果壓縮在上下文限制之前主動觸發,Claude Code 會跳過它,對話繼續未壓縮。如果壓縮被觸發以從已由 API 返回的上下文限制錯誤恢復,基礎錯誤會浮出並且目前請求失敗。2671阻止自動壓縮有不同的效果,取決於何時觸發。如果壓縮在上下文限制之前主動觸發,Claude Code 會跳過它,對話繼續未壓縮。如果壓縮被觸發以從已由 API 返回的上下文限制錯誤恢復,基礎錯誤會浮出並且目前請求失敗。

2245 2672 

2246#### PreCompact 輸入2673<h4 id="precompact-input">

2674 PreCompact 輸入

2675</h4>

2247 2676 

2248除了 [通用輸入欄位](#common-input-fields) 外,PreCompact hooks 還接收 `trigger` 和 `custom_instructions`。對於 `manual`,`custom_instructions` 包含使用者傳遞到 `/compact` 的內容。對於 `auto`,`custom_instructions` 為空。2677除了 [通用輸入欄位](#common-input-fields) 外,PreCompact hooks 還接收 `trigger` 和 `custom_instructions`。對於 `manual`,`custom_instructions` 包含使用者傳遞到 `/compact` 的內容。對於 `auto`,`custom_instructions` 為空。

2249 2678 


2258}2687}

2259```2688```

2260 2689 

2261### PostCompact2690<h3 id="postcompact">

2691 PostCompact

2692</h3>

2262 2693 

2263在 Claude Code 完成壓縮操作後執行。使用此事件來對新的壓縮狀態做出反應,例如記錄生成的摘要或更新外部狀態。2694在 Claude Code 完成壓縮操作後執行。使用此事件來對新的壓縮狀態做出反應,例如記錄生成的摘要或更新外部狀態。

2264 2695 


2269| `manual` | 在 `/compact` 後 |2700| `manual` | 在 `/compact` 後 |

2270| `auto` | 在上下文視窗滿時自動壓縮後 |2701| `auto` | 在上下文視窗滿時自動壓縮後 |

2271 2702 

2272#### PostCompact 輸入2703<h4 id="postcompact-input">

2704 PostCompact 輸入

2705</h4>

2273 2706 

2274除了 [通用輸入欄位](#common-input-fields) 外,PostCompact hooks 還接收 `trigger` 和 `compact_summary`。`compact_summary` 欄位包含壓縮操作生成的對話摘要。2707除了 [通用輸入欄位](#common-input-fields) 外,PostCompact hooks 還接收 `trigger` 和 `compact_summary`。`compact_summary` 欄位包含壓縮操作生成的對話摘要。

2275 2708 


2286 2719 

2287PostCompact hooks 沒有決定控制。它們無法影響壓縮結果,但可以執行後續任務。2720PostCompact hooks 沒有決定控制。它們無法影響壓縮結果,但可以執行後續任務。

2288 2721 

2289### SessionEnd2722<h3 id="sessionend">

2723 SessionEnd

2724</h3>

2290 2725 

2291當 Claude Code 工作階段結束時執行。適用於清理任務、記錄工作階段統計資訊或儲存工作階段狀態。支援匹配器以按退出原因篩選。2726當 Claude Code 工作階段結束時執行。適用於清理任務、記錄工作階段統計資訊或儲存工作階段狀態。支援匹配器以按退出原因篩選。

2292 2727 


2301| `bypass_permissions_disabled` | 繞過權限模式被停用 |2736| `bypass_permissions_disabled` | 繞過權限模式被停用 |

2302| `other` | 其他退出原因 |2737| `other` | 其他退出原因 |

2303 2738 

2304#### SessionEnd 輸入2739<h4 id="sessionend-input">

2740 SessionEnd 輸入

2741</h4>

2305 2742 

2306除了 [通用輸入欄位](#common-input-fields) 外,SessionEnd hooks 還接收指示工作階段為何結束的 `reason` 欄位。有關所有值,請參閱上面的 [原因表](#sessionend)。2743除了 [通用輸入欄位](#common-input-fields) 外,SessionEnd hooks 還接收指示工作階段為何結束的 `reason` 欄位。有關所有值,請參閱上面的 [原因表](#sessionend)。

2307 2744 


2323CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude2760CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

2324```2761```

2325 2762 

2326### Elicitation2763<h3 id="elicitation">

2764 Elicitation

2765</h3>

2327 2766 

2328當 MCP 伺服器在任務中途請求使用者輸入時執行。預設情況下,Claude Code 顯示互動式對話框供使用者回應。Hooks 可以攔截此請求並以程式方式回應,完全跳過對話框。2767當 MCP 伺服器在任務中途請求使用者輸入時執行。預設情況下,Claude Code 顯示互動式對話框供使用者回應。Hooks 可以攔截此請求並以程式方式回應,完全跳過對話框。

2329 2768 

2330匹配器欄位與 MCP 伺服器名稱匹配。2769匹配器欄位與 MCP 伺服器名稱匹配。

2331 2770 

2332#### Elicitation 輸入2771<h4 id="elicitation-input">

2772 Elicitation 輸入

2773</h4>

2333 2774 

2334除了 [通用輸入欄位](#common-input-fields) 外,Elicitation hooks 還接收 `mcp_server_name`、`message` 和可選的 `mode`、`url`、`elicitation_id` 和 `requested_schema` 欄位。2775除了 [通用輸入欄位](#common-input-fields) 外,Elicitation hooks 還接收 `mcp_server_name`、`message` 和可選的 `mode`、`url`、`elicitation_id` 和 `requested_schema` 欄位。

2335 2776 


2370}2811}

2371```2812```

2372 2813 

2373#### Elicitation 輸出2814<h4 id="elicitation-output">

2815 Elicitation 輸出

2816</h4>

2374 2817 

2375要以程式方式回應而不顯示對話框,請返回帶有 `hookSpecificOutput` 的 JSON 物件:2818要以程式方式回應而不顯示對話框,請返回帶有 `hookSpecificOutput` 的 JSON 物件:

2376 2819 


2393 2836 

2394退出代碼 2 拒絕徵詢並向使用者顯示 stderr。2837退出代碼 2 拒絕徵詢並向使用者顯示 stderr。

2395 2838 

2396### ElicitationResult2839<h3 id="elicitationresult">

2840 ElicitationResult

2841</h3>

2397 2842 

2398在使用者回應 MCP 徵詢後執行。Hooks 可以觀察、修改或阻止回應,然後將其發送回 MCP 伺服器。2843在使用者回應 MCP 徵詢後執行。Hooks 可以觀察、修改或阻止回應,然後將其發送回 MCP 伺服器。

2399 2844 

2400匹配器欄位與 MCP 伺服器名稱匹配。2845匹配器欄位與 MCP 伺服器名稱匹配。

2401 2846 

2402#### ElicitationResult 輸入2847<h4 id="elicitationresult-input">

2848 Elicitation Result 輸入

2849</h4>

2403 2850 

2404除了 [通用輸入欄位](#common-input-fields) 外,ElicitationResult hooks 還接收 `mcp_server_name`、`action` 和可選的 `mode`、`elicitation_id` 和 `content` 欄位。2851除了 [通用輸入欄位](#common-input-fields) 外,ElicitationResult hooks 還接收 `mcp_server_name`、`action` 和可選的 `mode`、`elicitation_id` 和 `content` 欄位。

2405 2852 


2418}2865}

2419```2866```

2420 2867 

2421#### ElicitationResult 輸出2868<h4 id="elicitationresult-output">

2869 ElicitationResult 輸出

2870</h4>

2422 2871 

2423要覆蓋使用者的回應,請返回帶有 `hookSpecificOutput` 的 JSON 物件:2872要覆蓋使用者的回應,請返回帶有 `hookSpecificOutput` 的 JSON 物件:

2424 2873 


2439 2888 

2440退出代碼 2 阻止回應,將有效操作變更為 `decline`。2889退出代碼 2 阻止回應,將有效操作變更為 `decline`。

2441 2890 

2442## 基於提示的 hooks2891<h2 id="prompt-based-hooks">

2892 基於提示的 hooks

2893</h2>

2443 2894 

2444除了命令、HTTP 和 MCP tool hooks 外,Claude Code 還支援基於提示的 hooks(`type: "prompt"`),使用 LLM 評估是否允許或阻止操作,以及代理 hooks(`type: "agent"`),生成具有工具存取權限的代理驗證器。並非所有事件都支援每種 hook 類型。2895除了命令、HTTP 和 MCP tool hooks 外,Claude Code 還支援基於提示的 hooks(`type: "prompt"`),使用 LLM 評估是否允許或阻止操作,以及代理 hooks(`type: "agent"`),生成具有工具存取權限的代理驗證器。並非所有事件都支援每種 hook 類型。

2445 2896 

2446支援所有五種 hook 類型(`command`、`http`、`mcp_tool`、`prompt` 和 `agent`)的事件:2897支援所有五種 hook 類型(`command`、`http`、`mcp_tool`、`prompt` 和 `agent`)的事件:

2447 2898 

2899* `PermissionDenied`

2448* `PermissionRequest`2900* `PermissionRequest`

2449* `PostToolBatch`2901* `PostToolBatch`

2450* `PostToolUse`2902* `PostToolUse`


2454* `SubagentStop`2906* `SubagentStop`

2455* `TaskCompleted`2907* `TaskCompleted`

2456* `TaskCreated`2908* `TaskCreated`

2909* `TeammateIdle`

2457* `UserPromptExpansion`2910* `UserPromptExpansion`

2458* `UserPromptSubmit`2911* `UserPromptSubmit`

2459 2912 


2466* `FileChanged`2919* `FileChanged`

2467* `InstructionsLoaded`2920* `InstructionsLoaded`

2468* `Notification`2921* `Notification`

2469* `PermissionDenied`

2470* `PostCompact`2922* `PostCompact`

2471* `PreCompact`2923* `PreCompact`

2472* `SessionEnd`2924* `SessionEnd`

2473* `StopFailure`2925* `StopFailure`

2474* `SubagentStart`2926* `SubagentStart`

2475* `TeammateIdle`

2476* `WorktreeCreate`2927* `WorktreeCreate`

2477* `WorktreeRemove`2928* `WorktreeRemove`

2478 2929 

2479`SessionStart` 和 `Setup` 支援 `command` 和 `mcp_tool` hooks。它們不支援 `http`、`prompt` 或 `agent` hooks。2930`SessionStart` 和 `Setup` 支援 `command` 和 `mcp_tool` hooks。它們不支援 `http`、`prompt` 或 `agent` hooks。

2480 2931 

2481### 基於提示的 hooks 如何工作2932<h3 id="how-prompt-based-hooks-work">

2933 基於提示的 hooks 如何工作

2934</h3>

2482 2935 

2483基於提示的 hooks 不執行 Bash 命令,而是:2936基於提示的 hooks 不執行 Bash 命令,而是:

2484 2937 


24862. LLM 以包含決定的結構化 JSON 回應29392. LLM 以包含決定的結構化 JSON 回應

24873. Claude Code 自動處理決定29403. Claude Code 自動處理決定

2488 2941 

2489### 提示 hook 配置2942<h3 id="prompt-hook-configuration">

2943 提示 hook 配置

2944</h3>

2490 2945 

2491將 `type` 設定為 `"prompt"` 並提供 `prompt` 字串而不是 `command`。使用 `$ARGUMENTS` 佔位符將 hook 的 JSON 輸入資料注入到您的提示文字中。Claude Code 將組合的提示和輸入發送到快速 Claude 模型,該模型返回 JSON 決定。2946將 `type` 設定為 `"prompt"` 並提供 `prompt` 字串而不是 `command`。使用 `$ARGUMENTS` 佔位符將 hook 的 JSON 輸入資料注入到您的提示文字中。Claude Code 將組合的提示和輸入發送到快速 Claude 模型,該模型返回 JSON 決定。

2492 2947 


2517| `timeout` | 否 | 逾時(秒)。預設值:30 |2972| `timeout` | 否 | 逾時(秒)。預設值:30 |

2518| `continueOnBlock` | 否 | 當提示返回 `ok: false` 時,將原因反饋給 Claude 並繼續轉換而不是停止。預設值:`false`。在結果 `decision: "block"` 上實現為 `continue: true`。請參閱[回應架構](#response-schema)以了解每個事件的行為 |2973| `continueOnBlock` | 否 | 當提示返回 `ok: false` 時,將原因反饋給 Claude 並繼續轉換而不是停止。預設值:`false`。在結果 `decision: "block"` 上實現為 `continue: true`。請參閱[回應架構](#response-schema)以了解每個事件的行為 |

2519 2974 

2520### 回應架構2975<h3 id="response-schema">

2976 回應架構

2977</h3>

2521 2978 

2522LLM 必須以包含以下內容的 JSON 回應:2979LLM 必須以包含以下內容的 JSON 回應:

2523 2980 


2540* `PostToolUse`:預設情況下轉換結束,原因在聊天中顯示為警告行。設定 `continueOnBlock: true` 以將原因反饋給 Claude 並繼續轉換2997* `PostToolUse`:預設情況下轉換結束,原因在聊天中顯示為警告行。設定 `continueOnBlock: true` 以將原因反饋給 Claude 並繼續轉換

2541* `PostToolBatch`、`UserPromptSubmit` 和 `UserPromptExpansion`:轉換結束,原因顯示為警告行。這些事件在 `decision: "block"` 上結束轉換,無論 `continue` 如何2998* `PostToolBatch`、`UserPromptSubmit` 和 `UserPromptExpansion`:轉換結束,原因顯示為警告行。這些事件在 `decision: "block"` 上結束轉換,無論 `continue` 如何

2542* `PostToolUseFailure`、`TaskCreated` 和 `TaskCompleted`:原因作為工具錯誤返回給 Claude,類似於 `PreToolUse`2999* `PostToolUseFailure`、`TaskCreated` 和 `TaskCompleted`:原因作為工具錯誤返回給 Claude,類似於 `PreToolUse`

3000* `TeammateIdle`:預設情況下隊友停止,原因顯示為警告行。設定 `continueOnBlock: true` 以將原因反饋給隊友並保持其工作狀態

2543* `PermissionRequest`:`ok: false` 沒有效果。要從 hook 拒絕批准,請使用[命令 hook](#command-hook-fields)返回 `hookSpecificOutput.decision.behavior: "deny"`3001* `PermissionRequest`:`ok: false` 沒有效果。要從 hook 拒絕批准,請使用[命令 hook](#command-hook-fields)返回 `hookSpecificOutput.decision.behavior: "deny"`

3002* `PermissionDenied`:`ok: false` 沒有效果,因為拒絕已經發生。此事件讀取的唯一輸出是 `hookSpecificOutput.retry`,提示和代理 hooks 無法設定 — 它們在此事件上執行,但其輸出被丟棄。使用[命令 hook](#command-hook-fields)返回 `retry`

2544 3003 

2545如果您需要對任何事件進行更精細的控制,請使用[命令 hook](#command-hook-fields),其中包含[決定控制](#decision-control)中描述的每個事件欄位。3004如果您需要對任何事件進行更精細的控制,請使用[命令 hook](#command-hook-fields),其中包含[決定控制](#decision-control)中描述的每個事件欄位。

2546 3005 

2547### 範例:多條件 Stop hook3006<h3 id="example-multi-criteria-stop-hook">

3007 範例:多條件 Stop hook

3008</h3>

2548 3009 

2549此 `Stop` hook 使用詳細提示在允許 Claude 停止之前檢查三個條件。如果 `"ok"` 為 `false`,Claude 繼續工作,提供的原因作為其下一個指令。`SubagentStop` hooks 使用相同的格式來評估 [subagent](/zh-TW/sub-agents) 是否應該停止:3010此 `Stop` hook 使用詳細提示在允許 Claude 停止之前檢查三個條件。如果 `"ok"` 為 `false`,Claude 繼續工作,提供的原因作為其下一個指令。`SubagentStop` hooks 使用相同的格式來評估 [subagent](/zh-TW/sub-agents) 是否應該停止:

2550 3011 


2566}3027}

2567```3028```

2568 3029 

2569## 基於代理的 hooks3030<h2 id="agent-based-hooks">

3031 基於代理的 hooks

3032</h2>

2570 3033 

2571<Warning>3034<Warning>

2572 代理 hooks 是實驗性的。行為和配置可能在未來版本中變更。對於生產工作流程,建議使用[命令 hooks](#command-hook-fields)。3035 代理 hooks 是實驗性的。行為和配置可能在未來版本中變更。對於生產工作流程,建議使用[命令 hooks](#command-hook-fields)。


2574 3037 

2575基於代理的 hooks(`type: "agent"`)類似於基於提示的 hooks,但具有多輪工具存取。代理 hook 不是單一 LLM 呼叫,而是生成一個可以讀取檔案、搜尋程式碼和檢查程式碼庫以驗證條件的 subagent。代理 hooks 支援與基於提示的 hooks 相同的事件。3038基於代理的 hooks(`type: "agent"`)類似於基於提示的 hooks,但具有多輪工具存取。代理 hook 不是單一 LLM 呼叫,而是生成一個可以讀取檔案、搜尋程式碼和檢查程式碼庫以驗證條件的 subagent。代理 hooks 支援與基於提示的 hooks 相同的事件。

2576 3039 

2577### 代理 hooks 如何工作3040<h3 id="how-agent-hooks-work">

3041 代理 hooks 如何工作

3042</h3>

2578 3043 

2579當代理 hook 觸發時:3044當代理 hook 觸發時:

2580 3045 


2585 3050 

2586代理 hooks 在驗證需要檢查實際檔案或測試輸出時很有用,而不僅僅是評估 hook 輸入資料。3051代理 hooks 在驗證需要檢查實際檔案或測試輸出時很有用,而不僅僅是評估 hook 輸入資料。

2587 3052 

2588### 代理 hook 配置3053<h3 id="agent-hook-configuration">

3054 代理 hook 配置

3055</h3>

2589 3056 

2590將 `type` 設定為 `"agent"` 並提供 `prompt` 字串。配置欄位與[提示 hooks](#prompt-hook-configuration) 相同,但逾時更長:3057將 `type` 設定為 `"agent"` 並提供 `prompt` 字串。配置欄位與[提示 hooks](#prompt-hook-configuration) 相同,但逾時更長:

2591 3058 


2618}3085}

2619```3086```

2620 3087 

2621## 在背景執行 hooks3088<h2 id="run-hooks-in-the-background">

3089 在背景執行 hooks

3090</h2>

2622 3091 

2623預設情況下,hooks 會阻止 Claude 的執行,直到它們完成。對於長時間執行的任務,如部署、測試套件或外部 API 呼叫,設定 `"async": true` 以在背景執行 hook,同時 Claude 繼續工作。非同步 hooks 無法阻止或控制 Claude 的行為:回應欄位,如 `decision`、`permissionDecision` 和 `continue` 沒有效果,因為它們會控制的操作已經完成。3092預設情況下,hooks 會阻止 Claude 的執行,直到它們完成。對於長時間執行的任務,如部署、測試套件或外部 API 呼叫,設定 `"async": true` 以在背景執行 hook,同時 Claude 繼續工作。非同步 hooks 無法阻止或控制 Claude 的行為:回應欄位,如 `decision`、`permissionDecision` 和 `continue` 沒有效果,因為它們會控制的操作已經完成。

2624 3093 

2625### 配置非同步 hook3094<h3 id="configure-an-async-hook">

3095 配置非同步 hook

3096</h3>

2626 3097 

2627將 `"async": true` 新增到命令 hook 的配置以在背景執行它而不阻止 Claude。此欄位僅在 `type: "command"` hooks 上可用。3098將 `"async": true` 新增到命令 hook 的配置以在背景執行它而不阻止 Claude。此欄位僅在 `type: "command"` hooks 上可用。

2628 3099 


2650 3121 

2651`timeout` 欄位設定背景程序的最大時間(秒)。如果未指定,非同步 hooks 使用與同步 hooks 相同的 10 分鐘預設值。3122`timeout` 欄位設定背景程序的最大時間(秒)。如果未指定,非同步 hooks 使用與同步 hooks 相同的 10 分鐘預設值。

2652 3123 

2653### 非同步 hooks 如何執行3124<h3 id="how-async-hooks-execute">

3125 非同步 hooks 如何執行

3126</h3>

2654 3127 

2655當非同步 hook 觸發時,Claude Code 啟動 hook 程序並立即繼續,而不等待它完成。Hook 在 stdin 上接收與同步 hook 相同的 JSON 輸入。3128當非同步 hook 觸發時,Claude Code 啟動 hook 程序並立即繼續,而不等待它完成。Hook 在 stdin 上接收與同步 hook 相同的 JSON 輸入。

2656 3129 


2658 3131 

2659非同步 hook 完成通知預設被抑制。要查看它們,請使用 `Ctrl+O` 啟用詳細模式或使用 `--verbose` 啟動 Claude Code。3132非同步 hook 完成通知預設被抑制。要查看它們,請使用 `Ctrl+O` 啟用詳細模式或使用 `--verbose` 啟動 Claude Code。

2660 3133 

2661### 範例:檔案變更後執行測試3134<h3 id="example-run-tests-after-file-changes">

3135 範例:檔案變更後執行測試

3136</h3>

2662 3137 

2663此 hook 在 Claude 寫入檔案時在背景啟動測試套件,然後在測試完成時將結果報告回 Claude。將此指令碼儲存到專案中的 `.claude/hooks/run-tests-async.sh` 並使用 `chmod +x` 使其可執行:3138此 hook 在 Claude 寫入檔案時在背景啟動測試套件,然後在測試完成時將結果報告回 Claude。將此指令碼儲存到專案中的 `.claude/hooks/run-tests-async.sh` 並使用 `chmod +x` 使其可執行:

2664 3139 


2710}3185}

2711```3186```

2712 3187 

2713### 限制3188<h3 id="limitations">

3189 限制

3190</h3>

2714 3191 

2715非同步 hooks 與同步 hooks 相比有幾個限制:3192非同步 hooks 與同步 hooks 相比有幾個限制:

2716 3193 


2719* Hook 輸出在下一個對話輪次上傳遞。如果工作階段閒置,回應會等待直到下一個使用者互動。例外:`asyncRewake` hook 在退出代碼 2 時喚醒 Claude,即使工作階段閒置。3196* Hook 輸出在下一個對話輪次上傳遞。如果工作階段閒置,回應會等待直到下一個使用者互動。例外:`asyncRewake` hook 在退出代碼 2 時喚醒 Claude,即使工作階段閒置。

2720* 每次執行都會建立一個單獨的背景程序。同一非同步 hook 的多次觸發之間沒有去重。3197* 每次執行都會建立一個單獨的背景程序。同一非同步 hook 的多次觸發之間沒有去重。

2721 3198 

2722## 安全考慮3199<h2 id="security-considerations">

3200 安全考慮

3201</h2>

2723 3202 

2724### 免責聲明3203<h3 id="disclaimer">

3204 免責聲明

3205</h3>

2725 3206 

2726命令 hooks 以您的系統使用者的完整權限執行。3207命令 hooks 以您的系統使用者的完整權限執行。

2727 3208 


2729 命令 hooks 以您的完整使用者權限執行 shell 命令。它們可以修改、刪除或存取您的使用者帳戶可以存取的任何檔案。在將任何 hook 命令新增到您的配置之前,請審查並測試它們。3210 命令 hooks 以您的完整使用者權限執行 shell 命令。它們可以修改、刪除或存取您的使用者帳戶可以存取的任何檔案。在將任何 hook 命令新增到您的配置之前,請審查並測試它們。

2730</Warning>3211</Warning>

2731 3212 

2732### 安全最佳實踐3213<h3 id="security-best-practices">

3214 安全最佳實踐

3215</h3>

2733 3216 

2734編寫 hooks 時,請記住這些實踐:3217編寫 hooks 時,請記住這些實踐:

2735 3218 


2739* **使用絕對路徑**:為指令碼指定完整路徑。在 exec 形式中,使用 `${CLAUDE_PROJECT_DIR}` 且路徑不需要引用。在 shell 形式中,將其包裝在雙引號中3222* **使用絕對路徑**:為指令碼指定完整路徑。在 exec 形式中,使用 `${CLAUDE_PROJECT_DIR}` 且路徑不需要引用。在 shell 形式中,將其包裝在雙引號中

2740* **跳過敏感檔案**:避免 `.env`、`.git/`、金鑰等3223* **跳過敏感檔案**:避免 `.env`、`.git/`、金鑰等

2741 3224 

2742## Windows PowerShell 工具3225<h2 id="windows-powershell-tool">

3226 Windows PowerShell 工具

3227</h2>

2743 3228 

2744在 Windows 上,您可以通過在命令 hook 上設定 `"shell": "powershell"` 在 PowerShell 中執行個別 hooks。Hooks 直接生成 PowerShell,因此無論是否設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 都有效。Claude Code 自動偵測 `pwsh.exe`(PowerShell 7+),回退到 `powershell.exe`(5.1)。3229在 Windows 上,您可以通過在命令 hook 上設定 `"shell": "powershell"` 在 PowerShell 中執行個別 hooks。Hooks 直接生成 PowerShell,因此無論是否設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 都有效。Claude Code 自動偵測 `pwsh.exe`(PowerShell 7+),回退到 `powershell.exe`(5.1)。

2745 3230 


2762}3247}

2763```3248```

2764 3249 

2765## 偵錯 hooks3250<h2 id="debug-hooks">

3251 偵錯 hooks

3252</h2>

2766 3253 

2767Hook 執行詳細資訊,包括哪些 hooks 匹配、它們的退出代碼和完整 stdout 和 stderr,被寫入詳細日誌檔案。使用 `claude --debug-file <path>` 啟動 Claude Code 以將日誌寫入已知位置,或執行 `claude --debug` 並在 `~/.claude/debug/<session-id>.txt` 讀取日誌。`--debug` 標誌不列印到終端。3254Hook 執行詳細資訊,包括哪些 hooks 匹配、它們的退出代碼和完整 stdout 和 stderr,被寫入詳細日誌檔案。使用 `claude --debug-file <path>` 啟動 Claude Code 以將日誌寫入已知位置,或執行 `claude --debug` 並在 `~/.claude/debug/<session-id>.txt` 讀取日誌。`--debug` 標誌不列印到終端。

2768 3255 

hooks-guide.md +103 −38

Details

16 本指南涵蓋常見用例和入門方式。有關完整的事件架構、JSON 輸入/輸出格式和非同步 hooks 和 MCP 工具 hooks 等進階功能,請參閱 [Hooks 參考](/zh-TW/hooks)。16 本指南涵蓋常見用例和入門方式。有關完整的事件架構、JSON 輸入/輸出格式和非同步 hooks 和 MCP 工具 hooks 等進階功能,請參閱 [Hooks 參考](/zh-TW/hooks)。

17</Tip>17</Tip>

18 18 

19## 設定您的第一個 hook19<h2 id="set-up-your-first-hook">

20 設定您的第一個 hook

21</h2>

20 22 

21若要建立 hook,請將 `hooks` 區塊新增到[設定檔](#configure-hook-location)。本逐步解說建立一個桌面通知 hook,因此每當 Claude 等待您的輸入而不是監視終端時,您都會收到警報。23若要建立 hook,請將 `hooks` 區塊新增到[設定檔](#configure-hook-location)。本逐步解說建立一個桌面通知 hook,因此每當 Claude 等待您的輸入而不是監視終端時,您都會收到警報。

22 24 


79 `/hooks` 選單是唯讀的。若要新增、修改或移除 hooks,請直接編輯您的設定 JSON 或要求 Claude 進行變更。81 `/hooks` 選單是唯讀的。若要新增、修改或移除 hooks,請直接編輯您的設定 JSON 或要求 Claude 進行變更。

80</Tip>82</Tip>

81 83 

82## 您可以自動化的內容84<h2 id="what-you-can-automate">

85 您可以自動化的內容

86</h2>

83 87 

84Hooks 讓您在 Claude Code 生命週期的關鍵點執行程式碼:編輯後格式化檔案、在執行前阻止命令、當 Claude 需要輸入時發送通知、在工作階段開始時注入上下文等。有關 hook 事件的完整列表,請參閱 [Hooks 參考](/zh-TW/hooks#hook-lifecycle)。88Hooks 讓您在 Claude Code 生命週期的關鍵點執行程式碼:編輯後格式化檔案、在執行前阻止命令、當 Claude 需要輸入時發送通知、在工作階段開始時注入上下文等。有關 hook 事件的完整列表,請參閱 [Hooks 參考](/zh-TW/hooks#hook-lifecycle)。

85 89 


93* [當目錄或檔案變更時重新載入環境](#reload-environment-when-directory-or-files-change)97* [當目錄或檔案變更時重新載入環境](#reload-environment-when-directory-or-files-change)

94* [自動批准特定權限提示](#auto-approve-specific-permission-prompts)98* [自動批准特定權限提示](#auto-approve-specific-permission-prompts)

95 99 

96### Claude 需要輸入時收到通知100有關 hooks 執行單獨模型審查並將發現結果反饋到工作階段中的生產範例,請參閱 [`security-guidance` plugin 如何與 Claude Code 整合](/zh-TW/security-guidance#how-the-plugin-integrates-with-claude-code)。

101 

102<h3 id="get-notified-when-claude-needs-input">

103 當 Claude 需要輸入時收到通知

104</h3>

97 105 

98每當 Claude 完成工作並需要您的輸入時收到桌面通知,這樣您可以切換到其他任務而無需檢查終端。106每當 Claude 完成工作並需要您的輸入時收到桌面通知,這樣您可以切換到其他任務而無需檢查終端。

99 107 


184 192 

185輸入 `/hooks` 並選擇 `Notification` 以確認 hook 已註冊。有關完整的事件架構,請參閱 [Notification 參考](/zh-TW/hooks#notification)。193輸入 `/hooks` 並選擇 `Notification` 以確認 hook 已註冊。有關完整的事件架構,請參閱 [Notification 參考](/zh-TW/hooks#notification)。

186 194 

187### 編輯後自動格式化程式碼195<h3 id="auto-format-code-after-edits">

196 編輯後自動格式化程式碼

197</h3>

188 198 

189在 Claude 編輯的每個檔案上自動執行 [Prettier](https://prettier.io/),以便格式保持一致而無需手動干預。199在 Claude 編輯的每個檔案上自動執行 [Prettier](https://prettier.io/),以便格式保持一致而無需手動干預。

190 200 


212 本頁上的 Bash 範例使用 `jq` 進行 JSON 解析。使用 `brew install jq`(macOS)、`apt-get install jq`(Debian/Ubuntu)安裝它,或參閱 [`jq` 下載](https://jqlang.github.io/jq/download/)。222 本頁上的 Bash 範例使用 `jq` 進行 JSON 解析。使用 `brew install jq`(macOS)、`apt-get install jq`(Debian/Ubuntu)安裝它,或參閱 [`jq` 下載](https://jqlang.github.io/jq/download/)。

213</Note>223</Note>

214 224 

215### 阻止編輯受保護的檔案225<h3 id="block-edits-to-protected-files">

226 阻止編輯受保護的檔案

227</h3>

216 228 

217防止 Claude 修改敏感檔案,如 `.env`、`package-lock.json` 或 `.git/` 中的任何內容。Claude 會收到解釋編輯被阻止原因的回饋,因此它可以調整其方法。229防止 Claude 修改敏感檔案,如 `.env`、`package-lock.json` 或 `.git/` 中的任何內容。Claude 會收到解釋編輯被阻止原因的回饋,因此它可以調整其方法。

218 230 


273 </Step>285 </Step>

274</Steps>286</Steps>

275 287 

276### 壓縮後重新注入上下文288<h3 id="re-inject-context-after-compaction">

289 壓縮後重新注入上下文

290</h3>

277 291 

278當 Claude 的上下文視窗填滿時,壓縮會總結對話以釋放空間。這可能會遺失重要細節。使用帶有 `compact` 匹配器的 `SessionStart` hook 在每次壓縮後重新注入關鍵上下文。292當 Claude 的上下文視窗填滿時,壓縮會總結對話以釋放空間。這可能會遺失重要細節。使用帶有 `compact` 匹配器的 `SessionStart` hook 在每次壓縮後重新注入關鍵上下文。

279 293 


299 313 

300您可以將 `echo` 替換為任何產生動態輸出的命令,如 `git log --oneline -5` 以顯示最近的提交。有關在每個工作階段開始時注入上下文,請考慮改用 [CLAUDE.md](/zh-TW/memory)。有關環境變數,請參閱參考中的 [`CLAUDE_ENV_FILE`](/zh-TW/hooks#persist-environment-variables)。314您可以將 `echo` 替換為任何產生動態輸出的命令,如 `git log --oneline -5` 以顯示最近的提交。有關在每個工作階段開始時注入上下文,請考慮改用 [CLAUDE.md](/zh-TW/memory)。有關環境變數,請參閱參考中的 [`CLAUDE_ENV_FILE`](/zh-TW/hooks#persist-environment-variables)。

301 315 

302### 審計配置變更316<h3 id="audit-configuration-changes">

317 審計配置變更

318</h3>

303 319 

304追蹤工作階段期間設定或 skills 檔案何時變更。`ConfigChange` 事件在外部程序或編輯器修改配置檔案時觸發,因此您可以記錄變更以進行合規性檢查或阻止未授權的修改。320追蹤工作階段期間設定或 skills 檔案何時變更。`ConfigChange` 事件在外部程序或編輯器修改配置檔案時觸發,因此您可以記錄變更以進行合規性檢查或阻止未授權的修改。

305 321 


325 341 

326匹配器按配置類型篩選:`user_settings`、`project_settings`、`local_settings`、`policy_settings` 或 `skills`。要阻止變更生效,以代碼 2 退出或傳回 `{"decision": "block"}`。有關完整的輸入架構,請參閱 [ConfigChange 參考](/zh-TW/hooks#configchange)。342匹配器按配置類型篩選:`user_settings`、`project_settings`、`local_settings`、`policy_settings` 或 `skills`。要阻止變更生效,以代碼 2 退出或傳回 `{"decision": "block"}`。有關完整的輸入架構,請參閱 [ConfigChange 參考](/zh-TW/hooks#configchange)。

327 343 

328### 當目錄或檔案變更時重新載入環境344<h3 id="reload-environment-when-directory-or-files-change">

345 當目錄或檔案變更時重新載入環境

346</h3>

329 347 

330某些專案根據您所在的目錄設定不同的環境變數。[direnv](https://direnv.net/) 之類的工具在您的 shell 中自動執行此操作,但 Claude 的 Bash 工具不會自行選取這些變更。348某些專案根據您所在的目錄設定不同的環境變數。[direnv](https://direnv.net/) 之類的工具在您的 shell 中自動執行此操作,但 Claude 的 Bash 工具不會自行選取這些變更。

331 349 


382 400 

383有關輸入架構、`watchPaths` 輸出和 `CLAUDE_ENV_FILE` 詳細資訊,請參閱 [CwdChanged](/zh-TW/hooks#cwdchanged) 和 [FileChanged](/zh-TW/hooks#filechanged) 參考項目。401有關輸入架構、`watchPaths` 輸出和 `CLAUDE_ENV_FILE` 詳細資訊,請參閱 [CwdChanged](/zh-TW/hooks#cwdchanged) 和 [FileChanged](/zh-TW/hooks#filechanged) 參考項目。

384 402 

385### 自動批准特定權限提示403<h3 id="auto-approve-specific-permission-prompts">

404 自動批准特定權限提示

405</h3>

386 406 

387跳過您始終允許的工具呼叫的批准對話。此範例自動批准 `ExitPlanMode`,這是 Claude 在完成呈現計畫並要求繼續時呼叫的工具,因此您不會在每次計畫準備好時被提示。407跳過您始終允許的工具呼叫的批准對話。此範例自動批准 `ExitPlanMode`,這是 Claude 在完成呈現計畫並要求繼續時呼叫的工具,因此您不會在每次計畫準備好時被提示。

388 408 


434 454 

435保持匹配器盡可能狹窄。在 `.*` 上進行匹配或留空匹配器會自動批准每個權限提示,包括檔案寫入和 shell 命令。有關決策欄位的完整集合,請參閱 [PermissionRequest 參考](/zh-TW/hooks#permissionrequest-decision-control)。455保持匹配器盡可能狹窄。在 `.*` 上進行匹配或留空匹配器會自動批准每個權限提示,包括檔案寫入和 shell 命令。有關決策欄位的完整集合,請參閱 [PermissionRequest 參考](/zh-TW/hooks#permissionrequest-decision-control)。

436 456 

437## Hooks 如何工作457<h2 id="how-hooks-work">

458 Hooks 如何工作

459</h2>

438 460 

439Hook 事件在 Claude Code 的特定生命週期點觸發。當事件觸發時,所有匹配的 hooks 並行執行,相同的 hook 命令會自動去重。下表顯示每個事件及其觸發時間:461Hook 事件在 Claude Code 的特定生命週期點觸發。當事件觸發時,所有匹配的 hooks 並行執行,相同的 hook 命令會自動去重。下表顯示每個事件及其觸發時間:

440 462 


451| `PostToolUseFailure` | After a tool call fails |473| `PostToolUseFailure` | After a tool call fails |

452| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |474| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

453| `Notification` | When Claude Code sends a notification |475| `Notification` | When Claude Code sends a notification |

476| `MessageDisplay` | While assistant message text is displayed |

454| `SubagentStart` | When a subagent is spawned |477| `SubagentStart` | When a subagent is spawned |

455| `SubagentStop` | When a subagent finishes |478| `SubagentStop` | When a subagent finishes |

456| `TaskCreated` | When a task is being created via `TaskCreate` |479| `TaskCreated` | When a task is being created via `TaskCreate` |


477* `"type": "prompt"`:單輪 LLM 評估。請參閱[基於提示的 hooks](#prompt-based-hooks)。500* `"type": "prompt"`:單輪 LLM 評估。請參閱[基於提示的 hooks](#prompt-based-hooks)。

478* `"type": "agent"`:具有工具存取的多輪驗證。Agent hooks 是實驗性的,可能會改變。請參閱[基於 Agent 的 hooks](#agent-based-hooks)。501* `"type": "agent"`:具有工具存取的多輪驗證。Agent hooks 是實驗性的,可能會改變。請參閱[基於 Agent 的 hooks](#agent-based-hooks)。

479 502 

480### 合併來自多個 hooks 的結果503<h3 id="combine-results-from-multiple-hooks">

504 合併來自多個 hooks 的結果

505</h3>

481 506 

482當多個 hooks 相符同一事件時,每個 hook 的命令都會執行到完成,然後 Claude Code 合併結果。一個 hook 傳回 `deny` 不會阻止同級 hooks 執行。不要依賴一個 hook 的 `deny` 來抑制另一個 hook 中的副作用。507當多個 hooks 相符同一事件時,每個 hook 的命令都會執行到完成,然後 Claude Code 合併結果。一個 hook 傳回 `deny` 不會阻止同級 hooks 執行。不要依賴一個 hook 的 `deny` 來抑制另一個 hook 中的副作用。

483 508 


509 534 

510當 Claude 嘗試執行 `rm -rf /tmp/build` 時,兩個 hooks 並行執行。日誌記錄 hook 將命令寫入 `~/.claude/bash.log` 並退出 0,這表示沒有決策。防護欄 hook 退出 2,這拒絕了工具呼叫。拒絕獲勝,所以 Claude Code 阻止命令並向 Claude 顯示防護欄的 stderr。日誌項仍然被寫入,因為日誌記錄 hook 已經執行。535當 Claude 嘗試執行 `rm -rf /tmp/build` 時,兩個 hooks 並行執行。日誌記錄 hook 將命令寫入 `~/.claude/bash.log` 並退出 0,這表示沒有決策。防護欄 hook 退出 2,這拒絕了工具呼叫。拒絕獲勝,所以 Claude Code 阻止命令並向 Claude 顯示防護欄的 stderr。日誌項仍然被寫入,因為日誌記錄 hook 已經執行。

511 536 

512### 讀取輸入並傳回輸出537<h3 id="read-input-and-return-output">

538 讀取輸入並傳回輸出

539</h3>

513 540 

514Hooks 透過 stdin、stdout、stderr 和退出代碼與 Claude Code 通訊。當事件觸發時,Claude Code 將事件特定的資料作為 JSON 傳遞到您的指令的 stdin。您的指令讀取該資料、執行其工作,並透過退出代碼告訴 Claude Code 接下來要做什麼。541Hooks 透過 stdin、stdout、stderr 和退出代碼與 Claude Code 通訊。當事件觸發時,Claude Code 將事件特定的資料作為 JSON 傳遞到您的指令的 stdin。您的指令讀取該資料、執行其工作,並透過退出代碼告訴 Claude Code 接下來要做什麼。

515 542 

516#### Hook 輸入543<h4 id="hook-input">

544 Hook 輸入

545</h4>

517 546 

518每個事件都包含常見欄位,如 `session_id` 和 `cwd`,但每個事件類型都新增不同的資料。例如,當 Claude 執行 Bash 命令時,`PreToolUse` hook 在 stdin 上接收類似以下內容:547每個事件都包含常見欄位,如 `session_id` 和 `cwd`,但每個事件類型都新增不同的資料。例如,當 Claude 執行 Bash 命令時,`PreToolUse` hook 在 stdin 上接收類似以下內容:

519 548 


531 560 

532您的指令可以解析該 JSON 並對任何這些欄位採取行動。`UserPromptSubmit` hooks 改為取得 `prompt` 文字,`SessionStart` hooks 取得 `source`(startup、resume、clear、compact),等等。有關共享欄位,請參閱參考中的[常見輸入欄位](/zh-TW/hooks#common-input-fields),以及每個事件的部分以了解事件特定的架構。561您的指令可以解析該 JSON 並對任何這些欄位採取行動。`UserPromptSubmit` hooks 改為取得 `prompt` 文字,`SessionStart` hooks 取得 `source`(startup、resume、clear、compact),等等。有關共享欄位,請參閱參考中的[常見輸入欄位](/zh-TW/hooks#common-input-fields),以及每個事件的部分以了解事件特定的架構。

533 562 

534#### Hook 輸出563<h4 id="hook-output">

564 Hook 輸出

565</h4>

535 566 

536您的指令透過寫入 stdout 或 stderr 並以特定代碼退出來告訴 Claude Code 接下來要做什麼。例如,想要阻止命令的 `PreToolUse` hook:567您的指令透過寫入 stdout 或 stderr 並以特定代碼退出來告訴 Claude Code 接下來要做什麼。例如,想要阻止命令的 `PreToolUse` hook:

537 568 


545 exit 2 # exit 2 = 阻止操作576 exit 2 # exit 2 = 阻止操作

546fi577fi

547 578 

548exit 0 # exit 0 = 讓它繼續579exit 0 # exit 0 = 沒有決策;正常的權限流程適用

549```580```

550 581 

551退出代碼決定接下來會發生什麼:582退出代碼決定接下來會發生什麼:

552 583 

553* **Exit 0**:操作繼續。對於 `UserPromptSubmit`、`UserPromptExpansion` 和 `SessionStart` hooks,您寫入 stdout 的任何內容都會新增到 Claude 的上下文中。584* **Exit 0**:hook 報告沒有異議,操作正常進行。對於 `PreToolUse` hook,這不會批准工具呼叫:正常的[權限流程](/zh-TW/permissions)仍然適用。對於 `UserPromptSubmit`、`UserPromptExpansion` 和 `SessionStart` hooks,您寫入 stdout 的任何內容都會新增到 Claude 的上下文中。

554* **Exit 2**:操作被阻止。寫入原因到 stderr,Claude 會收到它作為回饋,以便它可以調整。某些事件無法被阻止:對於 `SessionStart`、`Setup`、`Notification` 和其他事件,exit 2 會向使用者顯示 stderr,執行繼續。有關完整清單,請參閱[每個事件的 exit code 2 行為](/zh-TW/hooks#exit-code-2-behavior-per-event)。585* **Exit 2**:操作被阻止。寫入原因到 stderr,Claude 會收到它作為回饋,以便它可以調整。某些事件無法被阻止:對於 `SessionStart`、`Setup`、`Notification` 和其他事件,exit 2 會向使用者顯示 stderr,執行繼續。有關完整清單,請參閱[每個事件的 exit code 2 行為](/zh-TW/hooks#exit-code-2-behavior-per-event)。

555* **任何其他退出代碼**:操作繼續。文字記錄顯示 `<hook name> hook error` 通知,後面跟著 stderr 的第一行;完整的 stderr 進入[除錯日誌](/zh-TW/hooks#debug-hooks)。586* **任何其他退出代碼**:操作繼續。文字記錄顯示 `<hook name> hook error` 通知,後面跟著 stderr 的第一行;完整的 stderr 進入[除錯日誌](/zh-TW/hooks#debug-hooks)。

556 587 

557#### 結構化 JSON 輸出588<h4 id="structured-json-output">

589 結構化 JSON 輸出

590</h4>

558 591 

559退出代碼給您兩個選項:允許或阻止。為了獲得更多控制,退出 0 並改為將 JSON 物件列印到 stdout。592退出代碼只讓您阻止或保持沉默。為了獲得更多控制,退出 0 並改為將 JSON 物件列印到 stdout。

560 593 

561<Note>594<Note>

562 使用 exit 2 以 stderr 訊息阻止,或使用 exit 0 和 JSON 進行結構化控制。不要混合它們:Claude Code 在您退出 2 時忽略 JSON。595 使用 exit 2 以 stderr 訊息阻止,或使用 exit 0 和 JSON 進行結構化控制。不要混合它們:Claude Code 在您退出 2 時忽略 JSON。


588 621 

589對於 `UserPromptSubmit` hooks,改用 `additionalContext` 將文字注入到 Claude 的上下文中。基於提示的 hooks(`type: "prompt"`)以不同方式處理輸出:請參閱[基於提示的 hooks](#prompt-based-hooks)。622對於 `UserPromptSubmit` hooks,改用 `additionalContext` 將文字注入到 Claude 的上下文中。基於提示的 hooks(`type: "prompt"`)以不同方式處理輸出:請參閱[基於提示的 hooks](#prompt-based-hooks)。

590 623 

591### 使用匹配器篩選 hooks624<h3 id="filter-hooks-with-matchers">

625 使用匹配器篩選 hooks

626</h3>

592 627 

593沒有匹配器,hook 會在其事件的每次出現時觸發。匹配器讓您縮小範圍。例如,如果您只想在檔案編輯後執行格式化程式(而不是在每次工具呼叫後),請將匹配器新增到您的 `PostToolUse` hook:628沒有匹配器,hook 會在其事件的每次出現時觸發。匹配器讓您縮小範圍。例如,如果您只想在檔案編輯後執行格式化程式(而不是在每次工具呼叫後),請將匹配器新增到您的 `PostToolUse` hook:

594 629 


616每個事件類型都在特定欄位上進行匹配:651每個事件類型都在特定欄位上進行匹配:

617 652 

618| 事件 | 匹配器篩選的內容 | 範例匹配器值 |653| 事件 | 匹配器篩選的內容 | 範例匹配器值 |

619| :------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |654| :----------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

620| `PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest`、`PermissionDenied` | 工具名稱 | `Bash`、`Edit\|Write`、`mcp__.*` |655| `PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest`、`PermissionDenied` | 工具名稱 | `Bash`、`Edit\|Write`、`mcp__.*` |

621| `SessionStart` | 工作階段如何開始 | `startup`、`resume`、`clear`、`compact` |656| `SessionStart` | 工作階段如何開始 | `startup`、`resume`、`clear`、`compact` |

622| `Setup` | 哪個 CLI 旗標觸發了設定 | `init`、`maintenance` |657| `Setup` | 哪個 CLI 旗標觸發了設定 | `init`、`maintenance` |


626| `PreCompact`、`PostCompact` | 什麼觸發了壓縮 | `manual`、`auto` |661| `PreCompact`、`PostCompact` | 什麼觸發了壓縮 | `manual`、`auto` |

627| `SubagentStop` | Agent 類型 | 與 `SubagentStart` 相同的值 |662| `SubagentStop` | Agent 類型 | 與 `SubagentStart` 相同的值 |

628| `ConfigChange` | 配置來源 | `user_settings`、`project_settings`、`local_settings`、`policy_settings`、`skills` |663| `ConfigChange` | 配置來源 | `user_settings`、`project_settings`、`local_settings`、`policy_settings`、`skills` |

629| `StopFailure` | 錯誤類型 | `rate_limit`、`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`invalid_request`、`server_error`、`max_output_tokens`、`unknown` |664| `StopFailure` | 錯誤類型 | `rate_limit`、`overloaded`、`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`unknown` |

630| `InstructionsLoaded` | 載入原因 | `session_start`、`nested_traversal`、`path_glob_match`、`include`、`compact` |665| `InstructionsLoaded` | 載入原因 | `session_start`、`nested_traversal`、`path_glob_match`、`include`、`compact` |

631| `Elicitation` | MCP 伺服器名稱 | 您配置的 MCP 伺服器名稱 |666| `Elicitation` | MCP 伺服器名稱 | 您配置的 MCP 伺服器名稱 |

632| `ElicitationResult` | MCP 伺服器名稱 | 與 `Elicitation` 相同的值 |667| `ElicitationResult` | MCP 伺服器名稱 | 與 `Elicitation` 相同的值 |

633| `FileChanged` | 字面檔案名稱以監視(請參閱 [FileChanged](/zh-TW/hooks#filechanged)) | `.envrc\|.env` |668| `FileChanged` | 字面檔案名稱以監視(請參閱 [FileChanged](/zh-TW/hooks#filechanged)) | `.envrc\|.env` |

634| `UserPromptExpansion` | 命令名稱 | 您的 skill 或命令名稱 |669| `UserPromptExpansion` | 命令名稱 | 您的 skill 或命令名稱 |

635| `UserPromptSubmit`、`PostToolBatch`、`Stop`、`TeammateIdle`、`TaskCreated`、`TaskCompleted`、`WorktreeCreate`、`WorktreeRemove`、`CwdChanged` | 不支援匹配器 | 始終在每次出現時觸發 |670| `UserPromptSubmit`、`PostToolBatch`、`Stop`、`TeammateIdle`、`TaskCreated`、`TaskCompleted`、`WorktreeCreate`、`WorktreeRemove`、`CwdChanged`、`MessageDisplay` | 不支援匹配器 | 始終在每次出現時觸發 |

636 671 

637顯示不同事件類型上匹配器的更多範例:672顯示不同事件類型上匹配器的更多範例:

638 673 


708 743 

709有關完整的匹配器語法,請參閱 [Hooks 參考](/zh-TW/hooks#configuration)。744有關完整的匹配器語法,請參閱 [Hooks 參考](/zh-TW/hooks#configuration)。

710 745 

711#### 使用 `if` 欄位按工具名稱和引數篩選746<h4 id="filter-by-tool-name-and-arguments-with-the-if-field">

747 使用 `if` 欄位按工具名稱和引數篩選

748</h4>

712 749 

713<Note>750<Note>

714 `if` 欄位需要 Claude Code v2.1.85 或更新版本。較早的版本會忽略它並在每次匹配的呼叫上執行 hook。751 `if` 欄位需要 Claude Code v2.1.85 或更新版本。較早的版本會忽略它並在每次匹配的呼叫上執行 hook。


741 778 

742`if` 只適用於工具事件:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。將其新增到任何其他事件會防止 hook 執行。779`if` 只適用於工具事件:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。將其新增到任何其他事件會防止 hook 執行。

743 780 

744### 配置 hook 位置781<h3 id="configure-hook-location">

782 配置 hook 位置

783</h3>

745 784 

746您新增 hook 的位置決定了其範圍:785您新增 hook 的位置決定了其範圍:

747 786 


758 797 

759如果您在 Claude Code 執行時直接編輯設定檔,檔案監視程式通常會自動選取 hook 變更。798如果您在 Claude Code 執行時直接編輯設定檔,檔案監視程式通常會自動選取 hook 變更。

760 799 

761## 基於提示的 hooks800<h2 id="prompt-based-hooks">

801 基於提示的 hooks

802</h2>

762 803 

763對於需要判斷而不是確定性規則的決策,使用 `type: "prompt"` hooks。Claude Code 不執行 shell 命令,而是將您的提示和 hook 的輸入資料傳送到 Claude 模型(預設為 Haiku)以做出決策。如果您需要更多功能,可以使用 `model` 欄位指定不同的模型。804對於需要判斷而不是確定性規則的決策,使用 `type: "prompt"` hooks。Claude Code 不執行 shell 命令,而是將您的提示和 hook 的輸入資料傳送到 Claude 模型(預設為 Haiku)以做出決策。如果您需要更多功能,可以使用 `model` 欄位指定不同的模型。

764 805 


791 832 

792有關完整的配置選項,請參閱參考中的[基於提示的 hooks](/zh-TW/hooks#prompt-based-hooks)。833有關完整的配置選項,請參閱參考中的[基於提示的 hooks](/zh-TW/hooks#prompt-based-hooks)。

793 834 

794## 基於代理的 hooks835<h2 id="agent-based-hooks">

836 基於代理的 hooks

837</h2>

795 838 

796<Warning>839<Warning>

797 Agent hooks 是實驗性的。行為和配置可能在未來版本中改變。對於生產工作流程,優先使用[命令 hooks](/zh-TW/hooks#command-hook-fields)。840 Agent hooks 是實驗性的。行為和配置可能在未來版本中改變。對於生產工作流程,優先使用[命令 hooks](/zh-TW/hooks#command-hook-fields)。


825 868 

826有關完整的配置選項,請參閱參考中的[基於代理的 hooks](/zh-TW/hooks#agent-based-hooks)。869有關完整的配置選項,請參閱參考中的[基於代理的 hooks](/zh-TW/hooks#agent-based-hooks)。

827 870 

828## HTTP hooks871<h2 id="http-hooks">

872 HTTP hooks

873</h2>

829 874 

830使用 `type: "http"` hooks 將事件資料 POST 到 HTTP 端點,而不是執行 shell 命令。端點接收命令 hook 在 stdin 上接收的相同 JSON,並使用相同的 JSON 格式透過 HTTP 回應主體傳回結果。875使用 `type: "http"` hooks 將事件資料 POST 到 HTTP 端點,而不是執行 shell 命令。端點接收命令 hook 在 stdin 上接收的相同 JSON,並使用相同的 JSON 格式透過 HTTP 回應主體傳回結果。

831 876 


860 905 

861有關完整的配置選項和回應處理,請參閱參考中的 [HTTP hooks](/zh-TW/hooks#http-hook-fields)。906有關完整的配置選項和回應處理,請參閱參考中的 [HTTP hooks](/zh-TW/hooks#http-hook-fields)。

862 907 

863## 限制和故障排除908<h2 id="limitations-and-troubleshooting">

909 限制和故障排除

910</h2>

864 911 

865### 限制912<h3 id="limitations">

913 限制

914</h3>

866 915 

867* 命令 hooks 只透過 stdout、stderr 和退出代碼通訊。它們無法觸發 `/` 命令或工具呼叫。透過 `additionalContext` 傳回的文字會作為系統提醒注入,Claude 將其讀取為純文字。HTTP hooks 改為透過回應主體通訊。916* 命令 hooks 只透過 stdout、stderr 和退出代碼通訊。它們無法觸發 `/` 命令或工具呼叫。透過 `additionalContext` 傳回的文字會作為系統提醒注入,Claude 將其讀取為純文字。HTTP hooks 改為透過回應主體通訊。

868* Hook 超時因類型而異。透過 `timeout` 欄位(以秒為單位)按 hook 覆寫。917* Hook 超時因類型而異。透過 `timeout` 欄位(以秒為單位)按 hook 覆寫。

869 * `command`、`http`、`mcp_tool`:10 分鐘。`UserPromptSubmit` 將這些降低至 30 秒。918 * `command`、`http`、`mcp_tool`:10 分鐘。`UserPromptSubmit` 將這些降低至 30 秒,`MessageDisplay` 將這些降低至 10 秒

870 * `prompt`:30 秒。919 * `prompt`:30 秒。

871 * `agent`:60 秒。920 * `agent`:60 秒。

872* `PostToolUse` hooks 無法撤銷操作,因為工具已經執行。921* `PostToolUse` hooks 無法撤銷操作,因為工具已經執行。


874* `Stop` hooks 在 Claude 完成回應時觸發,而不僅在任務完成時。它們在使用者中斷時不觸發。API 錯誤觸發 [StopFailure](/zh-TW/hooks#stopfailure) 代替。923* `Stop` hooks 在 Claude 完成回應時觸發,而不僅在任務完成時。它們在使用者中斷時不觸發。API 錯誤觸發 [StopFailure](/zh-TW/hooks#stopfailure) 代替。

875* 當多個 PreToolUse hooks 傳回 [`updatedInput`](/zh-TW/hooks#pretooluse) 以重寫工具的引數時,最後完成的會獲勝。由於 hooks 並行執行,順序是非確定性的。避免有多個 hook 修改同一工具的輸入。924* 當多個 PreToolUse hooks 傳回 [`updatedInput`](/zh-TW/hooks#pretooluse) 以重寫工具的引數時,最後完成的會獲勝。由於 hooks 並行執行,順序是非確定性的。避免有多個 hook 修改同一工具的輸入。

876 925 

877### Hooks 和權限模式926<h3 id="hooks-and-permission-modes">

927 Hooks 和權限模式

928</h3>

878 929 

879PreToolUse hooks 在任何權限模式檢查之前觸發。傳回 `permissionDecision: "deny"` 的 hook 會阻止工具,即使在 `bypassPermissions` 模式或使用 `--dangerously-skip-permissions`。這讓您強制執行使用者無法透過變更其權限模式來繞過的原則。930PreToolUse hooks 在任何權限模式檢查之前觸發。傳回 `permissionDecision: "deny"` 的 hook 會阻止工具,即使在 `bypassPermissions` 模式或使用 `--dangerously-skip-permissions`。這讓您強制執行使用者無法透過變更其權限模式來繞過的原則。

880 931 

881反面不成立:傳回 `"allow"` 的 hook 不會繞過來自設定的拒絕規則。Hooks 可以加強限制,但不能放寬超過權限規則允許的限制。932反面不成立:傳回 `"allow"` 的 hook 不會繞過來自設定的拒絕規則。Hooks 可以加強限制,但不能放寬超過權限規則允許的限制。

882 933 

883### Hook 未觸發934<h3 id="hook-not-firing">

935 Hook 未觸發

936</h3>

884 937 

885Hook 已配置但從不執行。938Hook 已配置但從不執行。

886 939 


889* 驗證您觸發的是正確的事件類型(例如,`PreToolUse` 在工具執行前觸發,`PostToolUse` 在之後觸發)942* 驗證您觸發的是正確的事件類型(例如,`PreToolUse` 在工具執行前觸發,`PostToolUse` 在之後觸發)

890* 如果在非互動模式(`-p`)中使用 `PermissionRequest` hooks,改用 `PreToolUse`943* 如果在非互動模式(`-p`)中使用 `PermissionRequest` hooks,改用 `PreToolUse`

891 944 

892### Hook 輸出中的錯誤945<h3 id="hook-error-in-output">

946 Hook 輸出中的錯誤

947</h3>

893 948 

894您在文字記錄中看到類似「PreToolUse hook error: ...」的訊息。949您在文字記錄中看到類似「PreToolUse hook error: ...」的訊息。

895 950 


902* 如果您看到「jq: command not found」,安裝 `jq` 或使用 Python/Node.js 進行 JSON 解析957* 如果您看到「jq: command not found」,安裝 `jq` 或使用 Python/Node.js 進行 JSON 解析

903* 如果指令根本沒有執行,使其可執行:`chmod +x ./my-hook.sh`958* 如果指令根本沒有執行,使其可執行:`chmod +x ./my-hook.sh`

904 959 

905### `/hooks` 顯示未配置任何 hooks960<h3 id="/hooks-shows-no-hooks-configured">

961 `/hooks` 顯示未配置任何 hooks

962</h3>

906 963 

907您編輯了設定檔但 hooks 未出現在選單中。964您編輯了設定檔但 hooks 未出現在選單中。

908 965 


910* 驗證您的 JSON 有效(不允許尾隨逗號和註解)967* 驗證您的 JSON 有效(不允許尾隨逗號和註解)

911* 確認設定檔在正確的位置:`.claude/settings.json` 用於專案 hooks,`~/.claude/settings.json` 用於全域 hooks968* 確認設定檔在正確的位置:`.claude/settings.json` 用於專案 hooks,`~/.claude/settings.json` 用於全域 hooks

912 969 

913### Stop hook 觸發區塊上限970<h3 id="stop-hook-hits-the-block-cap">

971 Stop hook 觸發區塊上限

972</h3>

914 973 

915Claude 繼續工作而不是停止,然後以警告結束回合,表示 Stop hook 連續阻止了太多次。974Claude 繼續工作而不是停止,然後以警告結束回合,表示 Stop hook 連續阻止了太多次。

916 975 


927 986 

928如果您的 hook 合理地需要超過八次迭代才能收斂,使用 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/zh-TW/env-vars) 提高上限。987如果您的 hook 合理地需要超過八次迭代才能收斂,使用 [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/zh-TW/env-vars) 提高上限。

929 988 

930### JSON 驗證失敗989<h3 id="json-validation-failed">

990 JSON 驗證失敗

991</h3>

931 992 

932Claude Code 顯示 JSON 解析錯誤,即使您的 hook 指令輸出有效的 JSON。993Claude Code 顯示 JSON 解析錯誤,即使您的 hook 指令輸出有效的 JSON。

933 994 


949 1010 

950`$-` 變數包含 shell 旗標,`i` 表示互動式。Hooks 在非互動式 shell 中執行,因此 echo 被跳過。1011`$-` 變數包含 shell 旗標,`i` 表示互動式。Hooks 在非互動式 shell 中執行,因此 echo 被跳過。

951 1012 

952### 除錯技術1013<h3 id="debug-techniques">

1014 除錯技術

1015</h3>

953 1016 

954文字記錄檢視(使用 `Ctrl+O` 切換)為每個觸發的 hook 顯示一行摘要:成功是無聲的,阻止錯誤顯示 stderr,非阻止錯誤顯示 `<hook name> hook error` 通知,後面跟著 stderr 的第一行。1017文字記錄檢視(使用 `Ctrl+O` 切換)為每個觸發的 hook 顯示一行摘要:成功是無聲的,阻止錯誤顯示 stderr,非阻止錯誤顯示 `<hook name> hook error` 通知,後面跟著 stderr 的第一行。

955 1018 

956有關完整的執行詳細資訊,包括哪些 hooks 相符、它們的退出代碼、stdout 和 stderr,請閱讀除錯日誌。使用 `claude --debug-file /tmp/claude.log` 啟動 Claude Code 以寫入已知路徑,然後在另一個終端中執行 `tail -f /tmp/claude.log`。如果您啟動時沒有該旗標,在工作階段中執行 `/debug` 以啟用記錄並找到日誌路徑。1019有關完整的執行詳細資訊,包括哪些 hooks 相符、它們的退出代碼、stdout 和 stderr,請閱讀除錯日誌。使用 `claude --debug-file /tmp/claude.log` 啟動 Claude Code 以寫入已知路徑,然後在另一個終端中執行 `tail -f /tmp/claude.log`。如果您啟動時沒有該旗標,在工作階段中執行 `/debug` 以啟用記錄並找到日誌路徑。

957 1020 

958## 深入瞭解1021<h2 id="learn-more">

1022 深入瞭解

1023</h2>

959 1024 

960* [Hooks 參考](/zh-TW/hooks):完整的事件架構、JSON 輸出格式、非同步 hooks 和 MCP 工具 hooks1025* [Hooks 參考](/zh-TW/hooks):完整的事件架構、JSON 輸出格式、非同步 hooks 和 MCP 工具 hooks

961* [安全考量](/zh-TW/hooks#security-considerations):在共享或生產環境中部署 hooks 之前進行檢查1026* [安全考量](/zh-TW/hooks#security-considerations):在共享或生產環境中部署 hooks 之前進行檢查

Details

10 10 

11本指南涵蓋核心架構、內建功能,以及[有效使用 Claude Code 的提示](#work-effectively-with-claude-code)。如需逐步說明,請參閱[常見工作流程](/zh-TW/common-workflows)。如需擴展功能(如 skills、MCP 和 hooks),請參閱[擴展 Claude Code](/zh-TW/features-overview)。11本指南涵蓋核心架構、內建功能,以及[有效使用 Claude Code 的提示](#work-effectively-with-claude-code)。如需逐步說明,請參閱[常見工作流程](/zh-TW/common-workflows)。如需擴展功能(如 skills、MCP 和 hooks),請參閱[擴展 Claude Code](/zh-TW/features-overview)。

12 12 

13## 代理迴圈13<h2 id="the-agentic-loop">

14 代理迴圈

15</h2>

14 16 

15當您給 Claude 一項任務時,它會經歷三個階段:**收集上下文**、**採取行動**和**驗證結果**。這些階段相互融合。Claude 始終使用工具,無論是搜尋檔案以了解您的程式碼、編輯以進行變更,還是執行測試以檢查其工作。17當您給 Claude 一項任務時,它會經歷三個階段:**收集上下文**、**採取行動**和**驗證結果**。這些階段相互融合。Claude 始終使用工具,無論是搜尋檔案以了解您的程式碼、編輯以進行變更,還是執行測試以檢查其工作。

16 18 


22 24 

23代理迴圈由兩個元件提供動力:[模型](#models)進行推理,[工具](#tools)採取行動。Claude Code 充當 Claude 周圍的**代理工具**:它提供工具、上下文管理和執行環境,將語言模型轉變為能力強大的編碼代理。25代理迴圈由兩個元件提供動力:[模型](#models)進行推理,[工具](#tools)採取行動。Claude Code 充當 Claude 周圍的**代理工具**:它提供工具、上下文管理和執行環境,將語言模型轉變為能力強大的編碼代理。

24 26 

25### 模型27<h3 id="models">

28 模型

29</h3>

26 30 

27Claude Code 使用 Claude 模型來理解您的程式碼並推理任務。Claude 可以讀取任何語言的程式碼、理解元件如何連接,以及找出需要改變什麼來完成您的目標。對於複雜任務,它將工作分解為步驟、執行它們,並根據學到的內容進行調整。31Claude Code 使用 Claude 模型來理解您的程式碼並推理任務。Claude 可以讀取任何語言的程式碼、理解元件如何連接,以及找出需要改變什麼來完成您的目標。對於複雜任務,它將工作分解為步驟、執行它們,並根據學到的內容進行調整。

28 32 


30 34 

31當本指南說「Claude 選擇」或「Claude 決定」時,是模型在進行推理。35當本指南說「Claude 選擇」或「Claude 決定」時,是模型在進行推理。

32 36 

33### 工具37<h3 id="tools">

38 工具

39</h3>

34 40 

35工具是使 Claude Code 成為代理的原因。沒有工具,Claude 只能用文字回應。有了工具,Claude 可以採取行動:讀取您的程式碼、編輯檔案、執行命令、搜尋網路,以及與外部服務互動。每個工具使用都會返回資訊,反饋到迴圈中,告知 Claude 的下一個決定。41工具是使 Claude Code 成為代理的原因。沒有工具,Claude 只能用文字回應。有了工具,Claude 可以採取行動:讀取您的程式碼、編輯檔案、執行命令、搜尋網路,以及與外部服務互動。每個工具使用都會返回資訊,反饋到迴圈中,告知 Claude 的下一個決定。

36 42 


59 65 

60**擴展基本功能:** 內建工具是基礎。您可以使用 [skills](/zh-TW/skills) 擴展 Claude 知道的內容、使用 [MCP](/zh-TW/mcp) 連接到外部服務、使用 [hooks](/zh-TW/hooks) 自動化工作流程,以及將任務卸載給 [subagents](/zh-TW/sub-agents)。這些擴展形成了核心代理迴圈之上的一層。請參閱[擴展 Claude Code](/zh-TW/features-overview) 以獲得有關為您的需求選擇正確擴展的指導。66**擴展基本功能:** 內建工具是基礎。您可以使用 [skills](/zh-TW/skills) 擴展 Claude 知道的內容、使用 [MCP](/zh-TW/mcp) 連接到外部服務、使用 [hooks](/zh-TW/hooks) 自動化工作流程,以及將任務卸載給 [subagents](/zh-TW/sub-agents)。這些擴展形成了核心代理迴圈之上的一層。請參閱[擴展 Claude Code](/zh-TW/features-overview) 以獲得有關為您的需求選擇正確擴展的指導。

61 67 

62## Claude 可以存取什麼68<h2 id="what-claude-can-access">

69 Claude 可以存取什麼

70</h2>

63 71 

64本指南重點介紹終端機。Claude Code 也在 [VS Code](/zh-TW/vs-code)、[JetBrains IDE](/zh-TW/jetbrains) 和其他環境中執行。72本指南重點介紹終端機。Claude Code 也在 [VS Code](/zh-TW/vs-code)、[JetBrains IDE](/zh-TW/jetbrains) 和其他環境中執行。

65 73 


74 82 

75因為 Claude 看到您的整個專案,它可以跨越它工作。當您要求 Claude「修復身份驗證錯誤」時,它會搜尋相關檔案、讀取多個檔案以理解上下文、跨它們進行協調編輯、執行測試以驗證修復,以及在您要求時提交變更。這與只看到目前檔案的內聯程式碼助手不同。83因為 Claude 看到您的整個專案,它可以跨越它工作。當您要求 Claude「修復身份驗證錯誤」時,它會搜尋相關檔案、讀取多個檔案以理解上下文、跨它們進行協調編輯、執行測試以驗證修復,以及在您要求時提交變更。這與只看到目前檔案的內聯程式碼助手不同。

76 84 

77## 環境和介面85<h2 id="environments-and-interfaces">

86 環境和介面

87</h2>

78 88 

79上述代理迴圈、工具和功能在您使用 Claude Code 的任何地方都是相同的。改變的是程式碼執行的位置以及您與它互動的方式。89上述代理迴圈、工具和功能在您使用 Claude Code 的任何地方都是相同的。改變的是程式碼執行的位置以及您與它互動的方式。

80 90 

81### 執行環境91<h3 id="execution-environments">

92 執行環境

93</h3>

82 94 

83Claude Code 在三個環境中執行,每個環境對程式碼執行位置有不同的權衡。95Claude Code 在三個環境中執行,每個環境對程式碼執行位置有不同的權衡。

84 96 


88| **雲端** | Anthropic 管理的 VM | 卸載任務、處理您本機沒有的儲存庫 |100| **雲端** | Anthropic 管理的 VM | 卸載任務、處理您本機沒有的儲存庫 |

89| **遠端控制** | 您的機器,從瀏覽器控制 | 使用網路 UI,同時保持一切本機 |101| **遠端控制** | 您的機器,從瀏覽器控制 | 使用網路 UI,同時保持一切本機 |

90 102 

91### 介面103<h3 id="interfaces">

104 介面

105</h3>

92 106 

93您可以透過終端機、[桌面應用程式](/zh-TW/desktop)、[IDE 擴展](/zh-TW/vs-code)、[claude.ai/code](https://claude.ai/code)、[遠端控制](/zh-TW/remote-control)、[Slack](/zh-TW/slack) 和 [CI/CD 管道](/zh-TW/github-actions)存取 Claude Code。介面決定了您如何看到和與 Claude 互動,但底層代理迴圈是相同的。請參閱[在任何地方使用 Claude Code](/zh-TW/overview#use-claude-code-everywhere) 以取得完整清單。107您可以透過終端機、[桌面應用程式](/zh-TW/desktop)、[IDE 擴展](/zh-TW/vs-code)、[claude.ai/code](https://claude.ai/code)、[遠端控制](/zh-TW/remote-control)、[Slack](/zh-TW/slack) 和 [CI/CD 管道](/zh-TW/github-actions)存取 Claude Code。介面決定了您如何看到和與 Claude 互動,但底層代理迴圈是相同的。請參閱[在任何地方使用 Claude Code](/zh-TW/overview#use-claude-code-everywhere) 以取得完整清單。

94 108 

95## 使用會話109<h2 id="work-with-sessions">

110 使用會話

111</h2>

96 112 

97Claude Code 在您工作時將您的對話儲存在本機為純文字 JSONL 檔案,位於 `~/.claude/projects/` 下,這使得[重新開始](#undo-changes-with-checkpoints)、[恢復和分叉](#resume-or-fork-sessions)會話成為可能。在 Claude 進行程式碼變更之前,它還會快照受影響的檔案,以便您在需要時可以還原。如需路徑、保留期和如何清除此資料,請參閱[`~/.claude` 中的應用程式資料](/zh-TW/claude-directory#application-data)。113Claude Code 在您工作時將您的對話儲存在本機為純文字 JSONL 檔案,位於 `~/.claude/projects/` 下,這使得[重新開始](#undo-changes-with-checkpoints)、[恢復和分叉](#resume-or-fork-sessions)會話成為可能。在 Claude 進行程式碼變更之前,它還會快照受影響的檔案,以便您在需要時可以還原。如需路徑、保留期和如何清除此資料,請參閱[`~/.claude` 中的應用程式資料](/zh-TW/claude-directory#application-data)。

98 114 

99**會話是獨立的。** 每個新會話都以新的上下文視窗開始,沒有來自先前會話的對話歷史。Claude 可以使用[自動記憶](/zh-TW/memory#auto-memory)跨會話保留學習內容,您可以在 [CLAUDE.md](/zh-TW/memory) 中新增自己的持久指示。115**會話是獨立的。** 每個新會話都以新的上下文視窗開始,沒有來自先前會話的對話歷史。Claude 可以使用[自動記憶](/zh-TW/memory#auto-memory)跨會話保留學習內容,您可以在 [CLAUDE.md](/zh-TW/memory) 中新增自己的持久指示。

100 116 

101### 跨分支工作117<h3 id="work-across-branches">

118 跨分支工作

119</h3>

102 120 

103每個 Claude Code 對話都是綁定到您目前目錄的會話。`/resume` 選擇器預設顯示目前 worktree 中的會話,並具有鍵盤快捷鍵以擴展清單到其他 worktrees 或專案。請參閱[管理會話](/zh-TW/sessions#use-the-session-picker)以取得完整的選擇器快捷鍵清單以及名稱解析的工作方式。121每個 Claude Code 對話都是綁定到您目前目錄的會話。`/resume` 選擇器預設顯示目前 worktree 中的會話,並具有鍵盤快捷鍵以擴展清單到其他 worktrees 或專案。請參閱[管理會話](/zh-TW/sessions#use-the-session-picker)以取得完整的選擇器快捷鍵清單以及名稱解析的工作方式。

104 122 


106 124 

107由於會話綁定到目錄,您可以使用 [git worktrees](/zh-TW/worktrees) 執行平行 Claude 會話,這會為個別分支建立單獨的目錄。125由於會話綁定到目錄,您可以使用 [git worktrees](/zh-TW/worktrees) 執行平行 Claude 會話,這會為個別分支建立單獨的目錄。

108 126 

109### 恢復或分叉會話127<h3 id="resume-or-fork-sessions">

128 恢復或分叉會話

129</h3>

110 130 

111使用 `claude --continue` 或 `claude --resume` 恢復會話會在相同的會話 ID 下重新開啟它,並將新訊息附加到現有對話。使用 `--fork-session` 或 `/branch` 分叉會將歷史複製到新的會話 ID 中,保持原始不變。131使用 `claude --continue` 或 `claude --resume` 恢復會話會在相同的會話 ID 下重新開啟它,並將新訊息附加到現有對話。使用 `--fork-session` 或 `/branch` 分叉會將歷史複製到新的會話 ID 中,保持原始不變。

112 132 


114 134 

115如需恢復旗標、`/resume` 選擇器、命名,以及當相同會話在兩個終端機中開啟時會發生什麼,請參閱[管理會話](/zh-TW/sessions)。135如需恢復旗標、`/resume` 選擇器、命名,以及當相同會話在兩個終端機中開啟時會發生什麼,請參閱[管理會話](/zh-TW/sessions)。

116 136 

117### 上下文視窗137<h3 id="the-context-window">

138 上下文視窗

139</h3>

118 140 

119Claude 的上下文視窗保存您的對話歷史、檔案內容、命令輸出、[CLAUDE.md](/zh-TW/memory)、[自動記憶](/zh-TW/memory#auto-memory)、載入的 skills 和系統指示。當您工作時,上下文會填滿。Claude 會自動壓縮,但對話早期的指示可能會丟失。將持久規則放在 CLAUDE.md 中,並執行 `/context` 以查看什麼在使用空間。141Claude 的上下文視窗保存您的對話歷史、檔案內容、命令輸出、[CLAUDE.md](/zh-TW/memory)、[自動記憶](/zh-TW/memory#auto-memory)、載入的 skills 和系統指示。當您工作時,上下文會填滿。Claude 會自動壓縮,但對話早期的指示可能會丟失。將持久規則放在 CLAUDE.md 中,並執行 `/context` 以查看什麼在使用空間。

120 142 

121如需互動式逐步說明,請參閱[探索上下文視窗](/zh-TW/context-window)。143如需互動式逐步說明,請參閱[探索上下文視窗](/zh-TW/context-window)。

122 144 

123#### 當上下文填滿時145<h4 id="when-context-fills-up">

146 當上下文填滿時

147</h4>

124 148 

125Claude Code 在您接近限制時自動管理上下文。它首先清除較舊的工具輸出,然後在需要時總結對話。您的請求和關鍵程式碼片段被保留;對話早期的詳細指示可能會丟失。將持久規則放在 CLAUDE.md 中,而不是依賴對話歷史。149Claude Code 在您接近限制時自動管理上下文。它首先清除較舊的工具輸出,然後在需要時總結對話。您的請求和關鍵程式碼片段被保留;對話早期的詳細指示可能會丟失。將持久規則放在 CLAUDE.md 中,而不是依賴對話歷史。

126 150 


130 154 

131執行 `/context` 以查看什麼在使用空間。MCP 工具定義預設會延遲,並透過[工具搜尋](/zh-TW/mcp#scale-with-mcp-tool-search)按需載入,因此只有工具名稱會消耗上下文,直到 Claude 使用特定工具。執行 `/mcp` 以檢查每個伺服器的成本。155執行 `/context` 以查看什麼在使用空間。MCP 工具定義預設會延遲,並透過[工具搜尋](/zh-TW/mcp#scale-with-mcp-tool-search)按需載入,因此只有工具名稱會消耗上下文,直到 Claude 使用特定工具。執行 `/mcp` 以檢查每個伺服器的成本。

132 156 

133#### 使用 skillssubagents 管理上下文157<h4 id="manage-context-with-skills-and-subagents">

158 使用 skills 和 subagents 管理上下文

159</h4>

134 160 

135除了壓縮,您可以使用其他功能來控制什麼載入到上下文中。161除了壓縮,您可以使用其他功能來控制什麼載入到上下文中。

136 162 


140 166 

141請參閱[上下文成本](/zh-TW/features-overview#understand-context-costs)以了解每個功能的成本,以及[減少令牌使用](/zh-TW/costs#reduce-token-usage)以獲得管理上下文的提示。167請參閱[上下文成本](/zh-TW/features-overview#understand-context-costs)以了解每個功能的成本,以及[減少令牌使用](/zh-TW/costs#reduce-token-usage)以獲得管理上下文的提示。

142 168 

143## 使用檢查點和許可保持安全169<h2 id="stay-safe-with-checkpoints-and-permissions">

170 使用檢查點和許可保持安全

171</h2>

144 172 

145Claude 有兩個安全機制:檢查點讓您撤銷檔案變更,許可控制 Claude 可以在不詢問的情況下執行的操作。173Claude 有兩個安全機制:檢查點讓您撤銷檔案變更,許可控制 Claude 可以在不詢問的情況下執行的操作。

146 174 

147### 使用檢查點撤銷變更175<h3 id="undo-changes-with-checkpoints">

176 使用檢查點撤銷變更

177</h3>

148 178 

149**每個檔案編輯都是可逆的。** 在 Claude 編輯任何檔案之前,它會快照目前內容。如果出現問題,按 `Esc` 兩次以重新開始到先前狀態,或要求 Claude 撤銷。179**每個檔案編輯都是可逆的。** 在 Claude 編輯任何檔案之前,它會快照目前內容。如果出現問題,按 `Esc` 兩次以重新開始到先前狀態,或要求 Claude 撤銷。

150 180 

151檢查點是會話本機的,與 git 分開。它們只涵蓋檔案變更。影響遠端系統的操作(資料庫、API、部署)無法檢查點,這就是為什麼 Claude 在執行具有外部副作用的命令之前詢問。181檢查點是會話本機的,與 git 分開。它們只涵蓋檔案變更。影響遠端系統的操作(資料庫、API、部署)無法檢查點,這就是為什麼 Claude 在執行具有外部副作用的命令之前詢問。

152 182 

153### 控制 Claude 可以做什麼183<h3 id="control-what-claude-can-do">

184 控制 Claude 可以做什麼

185</h3>

154 186 

155按 `Shift+Tab` 循環通過許可模式:187按 `Shift+Tab` 循環通過許可模式:

156 188 


163 195 

164***196***

165 197 

166## 有效使用 Claude Code198<h2 id="work-effectively-with-claude-code">

199 有效使用 Claude Code

200</h2>

167 201 

168這些提示可幫助您從 Claude Code 獲得更好的結果。202這些提示可幫助您從 Claude Code 獲得更好的結果。

169 203 

170### 向 Claude Code 尋求幫助204<h3 id="ask-claude-code-for-help">

205 向 Claude Code 尋求幫助

206</h3>

171 207 

172Claude Code 可以教您如何使用它。提出問題,例如「我如何設定 hooks?」或「構建我的 CLAUDE.md 的最佳方式是什麼?」,Claude 會解釋。208Claude Code 可以教您如何使用它。提出問題,例如「我如何設定 hooks?」或「構建我的 CLAUDE.md 的最佳方式是什麼?」,Claude 會解釋。

173 209 


177* `/agents` 幫助您設定自訂 subagents213* `/agents` 幫助您設定自訂 subagents

178* `/doctor` 診斷您的安裝的常見問題214* `/doctor` 診斷您的安裝的常見問題

179 215 

180### 這是一個對話216<h3 id="it-s-a-conversation">

217 這是一個對話

218</h3>

181 219 

182Claude Code 是對話式的。您不需要完美的提示。從您想要的開始,然後細化:220Claude Code 是對話式的。您不需要完美的提示。從您想要的開始,然後細化:

183 221 


195 233 

196當第一次嘗試不正確時,您不會重新開始。您進行迭代。234當第一次嘗試不正確時,您不會重新開始。您進行迭代。

197 235 

198#### 中斷和引導236<h4 id="interrupt-and-steer">

237 中斷和引導

238</h4>

199 239 

200您可以在任何時刻中斷 Claude。如果它走錯了路,只需輸入您的更正並按 Enter。Claude 將停止正在執行的操作並根據您的輸入調整其方法。您不必等待它完成或重新開始。240您可以在任何時刻重新導向 Claude,無需等待該輪次完成或重新開始:

201 241 

202### 預先具體242* **按 `Esc`** 立即停止 Claude。正在執行的工具呼叫被取消,Claude 等待您的下一個指令。

243* **輸入更正並按 `Enter`** 以在不停止正在執行的工具的情況下發送。Claude 在目前操作完成後立即讀取它,並在決定下一步之前進行調整。

244 

245<h3 id="be-specific-upfront">

246 預先具體

247</h3>

203 248 

204您的初始提示越精確,您需要的更正就越少。參考特定檔案、提及約束,並指出範例模式。249您的初始提示越精確,您需要的更正就越少。參考特定檔案、提及約束,並指出範例模式。

205 250 


211 256 

212模糊的提示有效,但您會花更多時間引導。像上面這樣的具體提示通常在第一次嘗試時成功。257模糊的提示有效,但您會花更多時間引導。像上面這樣的具體提示通常在第一次嘗試時成功。

213 258 

214### 給 Claude 一些東西來驗證259<h3 id="give-claude-something-to-verify-against">

260 給 Claude 一些東西來驗證

261</h3>

215 262 

216Claude 在能夠檢查自己的工作時表現更好。包括測試案例、貼上預期 UI 的螢幕截圖,或定義您想要的輸出。263Claude 在能夠檢查自己的工作時表現更好。包括測試案例、貼上預期 UI 的螢幕截圖,或定義您想要的輸出。

217 264 


222 269 

223對於視覺工作,貼上設計的螢幕截圖,並要求 Claude 將其實現與其進行比較。270對於視覺工作,貼上設計的螢幕截圖,並要求 Claude 將其實現與其進行比較。

224 271 

225### 在實現之前探索272<h3 id="explore-before-implementing">

273 在實現之前探索

274</h3>

226 275 

227對於複雜的問題,將研究與編碼分開。使用計畫模式(按 `Shift+Tab` 兩次)首先分析程式碼庫:276對於複雜的問題,將研究與編碼分開。使用 plan mode(按 `Shift+Tab` 兩次)首先分析程式碼庫:

228 277 

229```text theme={null}278```text theme={null}

230讀取 src/auth/ 並理解我們如何處理會話。279讀取 src/auth/ 並理解我們如何處理會話。


233 282 

234檢查計畫,透過對話細化它,然後讓 Claude 實現。這種兩階段方法比直接跳到程式碼產生更好的結果。283檢查計畫,透過對話細化它,然後讓 Claude 實現。這種兩階段方法比直接跳到程式碼產生更好的結果。

235 284 

236### 委派,不要指示285<h3 id="delegate-don-t-dictate">

286 委派,不要指示

287</h3>

237 288 

238想像委派給一位能力強大的同事。提供上下文和方向,然後相信 Claude 會找出詳細資訊:289想像委派給一位能力強大的同事。提供上下文和方向,然後相信 Claude 會找出詳細資訊:

239 290 


244 295 

245您不需要指定要讀取哪些檔案或執行哪些命令。Claude 會找出來。296您不需要指定要讀取哪些檔案或執行哪些命令。Claude 會找出來。

246 297 

247## 接下來298<h2 id="what-s-next">

299 接下來

300</h2>

248 301 

249<CardGroup cols={2}>302<CardGroup cols={2}>

250 <Card title="使用功能擴展" icon="puzzle-piece" href="/zh-TW/features-overview">303 <Card title="使用功能擴展" icon="puzzle-piece" href="/zh-TW/features-overview">

Details

6 6 

7> Claude Code 會話中鍵盤快捷鍵、輸入模式和互動功能的完整參考。7> Claude Code 會話中鍵盤快捷鍵、輸入模式和互動功能的完整參考。

8 8 

9## 鍵盤快捷鍵9<h2 id="keyboard-shortcuts">

10 鍵盤快捷鍵

11</h2>

10 12 

11<Note>13<Note>

12 鍵盤快捷鍵可能因平台和終端而異。在[全螢幕渲染](/zh-TW/fullscreen)中,在文字記錄檢視器中按 `?` 以查看可用的快捷鍵。14 鍵盤快捷鍵可能因平台和終端而異。在[全螢幕渲染](/zh-TW/fullscreen)中,在文字記錄檢視器中按 `?` 以查看可用的快捷鍵。


20 詳見[終端配置](/zh-TW/terminal-config)。22 詳見[終端配置](/zh-TW/terminal-config)。

21</Note>23</Note>

22 24 

23### 一般控制25<h3 id="general-controls">

26 一般控制

27</h3>

24 28 

25| 快捷鍵 | 說明 | 上下文 |29| 快捷鍵 | 說明 | 上下文 |

26| :------------------------------------------- | :-------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |30| :------------------------------------------------- | :-------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

27| `Ctrl+C` | 取消目前輸入或生成 | 標準中斷 |31| `Ctrl+C` | 中斷,或清除輸入 | 中斷執行中的操作。如果沒有任何操作執行中,第一次按下會清除提示輸入,第二次按下會退出 Claude Code |

28| `Ctrl+X Ctrl+K` | 終止此會話中所有執行中的[背景子代理](/zh-TW/sub-agents#run-subagents-in-foreground-or-background)。在 3 秒內按兩次以確認 | 子代理控制 |32| `Ctrl+X Ctrl+K` | 終止此會話中所有執行中的[背景子代理](/zh-TW/sub-agents#run-subagents-in-foreground-or-background)。在 3 秒內按兩次以確認 | 子代理控制 |

29| `Ctrl+D` | 退出 Claude Code 會話 | EOF 信號 |33| `Ctrl+D` | 退出 Claude Code 會話 | EOF 信號 |

30| `Ctrl+G` 或 `Ctrl+X Ctrl+E` | 在預設文字編輯器中開啟 | 在預設文字編輯器中編輯您的提示或自訂回應。`Ctrl+X Ctrl+E` 是 readline 原生繫結。在 `/config` 中開啟「在外部編輯器中顯示最後回應」,以在您的提示上方將 Claude 的先前回覆作為 `#` 註解上下文預先加入;當您儲存時,註解區塊會被移除 |34| `Ctrl+G` 或 `Ctrl+X Ctrl+E` | 在預設文字編輯器中開啟 | 在預設文字編輯器中編輯您的提示或自訂回應。`Ctrl+X Ctrl+E` 是 readline 原生繫結。在 `/config` 中開啟「在外部編輯器中顯示最後回應」,以在您的提示上方將 Claude 的先前回覆作為 `#` 註解上下文預先加入;當您儲存時,註解區塊會被移除 |

31| `Ctrl+L` | 重繪螢幕 | 強制完整終端重繪。輸入和對話歷史會保留。如果顯示變得混亂或部分空白,請使用此選項恢復 |35| `Ctrl+L` | 重繪螢幕 | 強制完整終端重繪。輸入和對話歷史會保留。如果顯示變得混亂或部分空白,請使用此選項恢復 |

32| `Ctrl+O` | 切換文字記錄檢視器 | 顯示詳細的工具使用和執行情況。也會展開 MCP 呼叫,預設情況下會摺疊為單行,例如「Called slack 3 times」 |36| `Ctrl+O` | 切換文字記錄檢視器 | 顯示詳細的工具使用和執行情況。也會展開 MCP 呼叫,預設情況下會摺疊為單行,例如「Called slack 3 times」 |

33| `Ctrl+R` | 反向搜尋命令歷史 | 以互動方式搜尋先前的命令 |37| `Ctrl+R` | 反向搜尋命令歷史 | 以互動方式搜尋先前的命令 |

34| `Ctrl+V` 或 `Cmd+V`(iTerm2)或 `Alt+V`(Windows) | 從剪貼簿貼上影像 | 在游標處插入 `[Image #N]` 晶片,以便您可以在提示中按位置參考它 |38| `Ctrl+V` 或 `Cmd+V`(iTerm2)或 `Alt+V`(Windows 和 WSL) | 從剪貼簿貼上影像 | 在游標處插入 `[Image #N]` 晶片,以便您可以在提示中按位置參考它。在 WSL 上,`Ctrl+V` 和 `Alt+V` 都已繫結;如果您的終端攔截 `Ctrl+V`,請使用 `Alt+V` |

35| `Ctrl+B` | 背景執行工作 | 將 bash 命令和代理放在背景執行。Tmux 使用者按兩次 |39| `Ctrl+B` | 背景執行工作 | 將 bash 命令和代理放在背景執行。Tmux 使用者按兩次 |

36| `Ctrl+T` | 切換工作清單 | 在終端狀態區域中顯示或隱藏[工作清單](#task-list) |40| `Ctrl+T` | 切換工作清單 | 在終端狀態區域中顯示或隱藏[工作清單](#task-list) |

37| `Left/Right arrows` | 在對話框標籤之間循環 | 在權限對話框和選單中的標籤之間導航 |41| `Left/Right arrows` | 在對話框標籤之間循環 | 在權限對話框和選單中的標籤之間導航 |

38| `Up/Down arrows` 或 `Ctrl+P`/`Ctrl+N` | 移動游標或導航命令歷史 | 在多行輸入中,首先在提示內移動游標。一旦游標已在頂部或底部邊緣,再次按下會導航命令歷史 |42| `Up/Down arrows` 或 `Ctrl+P`/`Ctrl+N` | 移動游標或導航命令歷史 | 在多行輸入中,首先在提示內移動游標。一旦游標已在頂部或底部邊緣,再次按下會導航命令歷史 |

39| `Esc` | 中斷 Claude | 停止目前回應或工具呼叫中途,以便您可以重新導向。Claude 會保留迄今為止完成的工作 |43| `Esc` | 中斷 Claude | 停止目前回應或工具呼叫中途,以便您可以重新導向。Claude 會保留迄今為止完成的工作 |

40| `Esc` + `Esc` | 回溯或摘要 | 將程式碼和/或對話恢復到先前的點或從選定的訊息進行摘要 |44| `Esc` + `Esc` | 清除輸入草稿,或回溯 | 當提示輸入包含文字時雙 `Esc` 會清除它並將草稿儲存到歷史,以便 `Up` 可以回憶它。當輸入為空時,雙 `Esc` 會開啟[回溯選單](/zh-TW/checkpointing)以從先前的點還原或摘要程式碼和對話 |

41| `Shift+Tab` 或 `Alt+M`(某些配置) | 循環權限模式 | 在 `default`、`acceptEdits`、`plan` 和您啟用的任何模式(例如 `auto` 或 `bypassPermissions`)之間循環。詳見[權限模式](/zh-TW/permission-modes)。 |45| `Shift+Tab` 或 `Alt+M`(某些配置) | 循環權限模式 | 在 `default`、`acceptEdits`、`plan` 和您啟用的任何模式(例如 `auto` 或 `bypassPermissions`)之間循環。詳見[權限模式](/zh-TW/permission-modes)。 |

42| `Option+P`(macOS)或 `Alt+P`(Windows/Linux) | 切換模型 | 在不清除提示的情況下切換模型 |46| `Option+P`(macOS)或 `Alt+P`(Windows/Linux) | 切換模型 | 在不清除提示的情況下切換模型 |

43| `Option+T`(macOS)或 `Alt+T`(Windows/Linux) | 切換擴展思考 | 啟用或停用擴展思考模式。{/* min-version: 2.1.132 */}自 v2.1.132 起,此快捷鍵在 macOS 上無需配置 Option 為 Meta 即可運作 |47| `Option+T`(macOS)或 `Alt+T`(Windows/Linux) | 切換擴展思考 | 啟用或停用擴展思考模式。{/* min-version: 2.1.132 */}自 v2.1.132 起,此快捷鍵在 macOS 上無需配置 Option 為 Meta 即可運作 |

44| `Option+O`(macOS)或 `Alt+O`(Windows/Linux) | 切換快速模式 | 啟用或停用[快速模式](/zh-TW/fast-mode) |48| `Option+O`(macOS)或 `Alt+O`(Windows/Linux) | 切換快速模式 | 啟用或停用[快速模式](/zh-TW/fast-mode) |

45 49 

46### 文字編輯50<h3 id="text-editing">

51 文字編輯

52</h3>

47 53 

48| 快捷鍵 | 說明 | 上下文 |54| 快捷鍵 | 說明 | 上下文 |

49| :--------------------- | :---------- | :------------------------------------------------------------------------------------------- |55| :--------------------- | :---------- | :------------------------------------------------------------------------------------------- |


57| `Alt+B` | 將游標向後移動一個單字 | 單字導航。在 macOS 上需要[將 Option 設定為 Meta](#keyboard-shortcuts) |63| `Alt+B` | 將游標向後移動一個單字 | 單字導航。在 macOS 上需要[將 Option 設定為 Meta](#keyboard-shortcuts) |

58| `Alt+F` | 將游標向前移動一個單字 | 單字導航。在 macOS 上需要[將 Option 設定為 Meta](#keyboard-shortcuts) |64| `Alt+F` | 將游標向前移動一個單字 | 單字導航。在 macOS 上需要[將 Option 設定為 Meta](#keyboard-shortcuts) |

59 65 

60### 主題和顯示66<h3 id="theme-and-display">

67 主題和顯示

68</h3>

61 69 

62| 快捷鍵 | 說明 | 上下文 |70| 快捷鍵 | 說明 | 上下文 |

63| :------- | :------------- | :--------------------------------------------- |71| :------- | :------------- | :--------------------------------------------- |

64| `Ctrl+T` | 切換程式碼區塊的語法醒目提示 | 僅在 `/theme` 選擇器選單內有效。控制 Claude 回應中的程式碼是否使用語法著色 |72| `Ctrl+T` | 切換程式碼區塊的語法醒目提示 | 僅在 `/theme` 選擇器選單內有效。控制 Claude 回應中的程式碼是否使用語法著色 |

65 73 

66### 多行輸入74<h3 id="multiline-input">

75 多行輸入

76</h3>

67 77 

68| 方法 | 快捷鍵 | 上下文 |78| 方法 | 快捷鍵 | 上下文 |

69| :---------- | :------------- | :------------------------------------------------------------------------------------------- |79| :---------- | :------------- | :------------------------------------------------------------------------------------------- |


74| 貼上模式 | 直接貼上 | 適用於程式碼區塊、日誌 |84| 貼上模式 | 直接貼上 | 適用於程式碼區塊、日誌 |

75 85 

76<Tip>86<Tip>

77 Shift+Enter 在 iTerm2、WezTerm、Ghostty、Kitty、Warp、Apple Terminal 和 Windows Terminal 中無需配置即可使用。對於 VS Code、Cursor、Windsurf、Alacritty 和 Zed,執行 `/terminal-setup` 以安裝繫結。87 Shift+Enter 在 iTerm2、WezTerm、Ghostty、Kitty、Warp、Apple Terminal 和 Windows Terminal 中無需配置即可使用。對於 VS Code、Cursor、Devin Desktop、Alacritty 和 Zed,執行 `/terminal-setup` 以安裝繫結。

78</Tip>88</Tip>

79 89 

80### 快速命令90<h3 id="quick-commands">

91 快速命令

92</h3>

81 93 

82| 快捷鍵 | 說明 | 備註 |94| 快捷鍵 | 說明 | 備註 |

83| :------ | :-------- | :----------------------------------------- |95| :------ | :-------- | :----------------------------------------- |


85| `!` 在開始 | Bash 模式 | 直接執行命令並將執行輸出新增到會話 |97| `!` 在開始 | Bash 模式 | 直接執行命令並將執行輸出新增到會話 |

86| `@` | 檔案路徑提及 | 觸發檔案路徑自動完成 |98| `@` | 檔案路徑提及 | 觸發檔案路徑自動完成 |

87 99 

88### 文字記錄檢視器100<h3 id="transcript-viewer">

101 文字記錄檢視器

102</h3>

89 103 

90當文字記錄檢視器開啟時(使用 `Ctrl+O` 切換),這些快捷鍵可用。在[全螢幕渲染](/zh-TW/fullscreen)中,按 `?` 以在檢視器內顯示完整的快捷鍵參考面板。`Ctrl+E` 可以透過 [`transcript:toggleShowAll`](/zh-TW/keybindings) 重新繫結。104當文字記錄檢視器開啟時(使用 `Ctrl+O` 切換),這些快捷鍵可用。在[全螢幕渲染](/zh-TW/fullscreen)中,按 `?` 以在檢視器內顯示完整的快捷鍵參考面板。`Ctrl+E` 可以透過 [`transcript:toggleShowAll`](/zh-TW/keybindings) 重新繫結。

91 105 


98| `v` | 將對話寫入臨時檔案並在 `$VISUAL` 或 `$EDITOR` 中開啟它。需要[全螢幕渲染](/zh-TW/fullscreen) |112| `v` | 將對話寫入臨時檔案並在 `$VISUAL` 或 `$EDITOR` 中開啟它。需要[全螢幕渲染](/zh-TW/fullscreen) |

99| `q`、`Ctrl+C`、`Esc` | 退出文字記錄檢視。所有三個都可以透過 [`transcript:exit`](/zh-TW/keybindings) 重新繫結 |113| `q`、`Ctrl+C`、`Esc` | 退出文字記錄檢視。所有三個都可以透過 [`transcript:exit`](/zh-TW/keybindings) 重新繫結 |

100 114 

101### 語音輸入115<h3 id="voice-input">

116 語音輸入

117</h3>

102 118 

103| 快捷鍵 | 說明 | 備註 |119| 快捷鍵 | 說明 | 備註 |

104| :------------ | :--- | :------------------------------------------------------------------------------------------------------------------------- |120| :------------ | :--- | :------------------------------------------------------------------------------------------------------------------------- |

105| 按住或點擊 `Space` | 語音聽寫 | 需要啟用[語音聽寫](/zh-TW/voice-dictation)。按住以錄製,或執行 `/voice tap` 以進行點擊切換。[可重新繫結](/zh-TW/voice-dictation#rebind-the-dictation-key) |121| 按住或點擊 `Space` | 語音聽寫 | 需要啟用[語音聽寫](/zh-TW/voice-dictation)。按住以錄製,或執行 `/voice tap` 以進行點擊切換。[可重新繫結](/zh-TW/voice-dictation#rebind-the-dictation-key) |

106 122 

107## 命令123<h2 id="commands">

124 命令

125</h2>

108 126 

109在 Claude Code 中輸入 `/` 以查看所有可用命令,或輸入 `/` 後跟任何字母以篩選。`/` 選單顯示您可以呼叫的所有內容:內建命令、捆綁和使用者撰寫的 [skills](/zh-TW/skills),以及由 [plugins](/zh-TW/plugins) 和 [MCP servers](/zh-TW/mcp#use-mcp-prompts-as-commands) 貢獻的命令。並非所有內建命令對每個使用者都可見,因為某些命令取決於您的平台或計畫。127在 Claude Code 中輸入 `/` 以查看所有可用命令,或輸入 `/` 後跟任何字母以篩選。`/` 選單顯示您可以呼叫的所有內容:內建命令、捆綁和使用者撰寫的 [skills](/zh-TW/skills),以及由 [plugins](/zh-TW/plugins) 和 [MCP servers](/zh-TW/mcp#use-mcp-prompts-as-commands) 貢獻的命令。並非所有內建命令對每個使用者都可見,因為某些命令取決於您的平台或計畫。

110 128 

111詳見[命令參考](/zh-TW/commands)以取得 Claude Code 中包含的命令的完整清單。129詳見[命令參考](/zh-TW/commands)以取得 Claude Code 中包含的命令的完整清單。

112 130 

113## Vim 編輯器模式131<h2 id="vim-editor-mode">

132 Vim 編輯器模式

133</h2>

114 134 

115透過 `/config` → Editor mode 啟用 vim 風格編輯。135透過 `/config` → Editor mode 啟用 vim 風格編輯。

116 136 

117### 模式切換137<h3 id="mode-switching">

138 模式切換

139</h3>

118 140 

119| 命令 | 動作 | 來自模式 |141| 命令 | 動作 | 來自模式 |

120| :---- | :----------- | :------------ |142| :---- | :----------- | :------------ |


128| `v` | 開始字元式視覺選擇 | NORMAL |150| `v` | 開始字元式視覺選擇 | NORMAL |

129| `V` | 開始行式視覺選擇 | NORMAL |151| `V` | 開始行式視覺選擇 | NORMAL |

130 152 

131### 導航(NORMAL 模式)153<h3 id="navigation-normal-mode">

154 導航(NORMAL 模式)

155</h3>

132 156 

133| 命令 | 動作 |157| 命令 | 動作 |

134| :-------------- | :----------------- |158| :-------------- | :--------------------- |

135| `h`/`j`/`k`/`l` | 向左/向下/向上/向右移動 |159| `h`/`j`/`k`/`l` | 向左/向下/向上/向右移動 |

136| `Space` | 向右移動 |160| `Space` | 向右移動 |

137| `w` | 下一個單字 |161| `w` | 下一個單字 |


148| `T{char}` | 跳到上一個字元出現位置之後 |172| `T{char}` | 跳到上一個字元出現位置之後 |

149| `;` | 重複上一個 f/F/t/T 動作 |173| `;` | 重複上一個 f/F/t/T 動作 |

150| `,` | 反向重複上一個 f/F/t/T 動作 |174| `,` | 反向重複上一個 f/F/t/T 動作 |

175| `/` | 開啟反向歷史搜尋,與 `Ctrl+R` 相同 |

151 176 

152<Note>177<Note>

153 在 vim 正常模式中,如果游標位於輸入的開始或結尾且無法進一步移動,`j`/`k` 和箭頭鍵將導航命令歷史。178 在 vim 正常模式中,如果游標位於輸入的開始或結尾且無法進一步移動,`j`/`k` 和箭頭鍵將導航命令歷史。

154</Note>179</Note>

155 180 

156### 編輯(NORMAL 模式)181<h3 id="editing-normal-mode">

182 編輯(NORMAL 模式)

183</h3>

157 184 

158| 命令 | 動作 |185| 命令 | 動作 |

159| :------------- | :---------- |186| :------------- | :---------- |


174| `u` | 復原 |201| `u` | 復原 |

175| `.` | 重複上一個變更 |202| `.` | 重複上一個變更 |

176 203 

177### 文字物件(NORMAL 模式)204<h3 id="text-objects-normal-mode">

205 文字物件(NORMAL 模式)

206</h3>

178 207 

179文字物件與運算子(如 `d`、`c` 和 `y`)搭配使用:208文字物件與運算子(如 `d`、`c` 和 `y`)搭配使用:

180 209 


188| `i[`/`a[` | 內部/周圍方括號 |217| `i[`/`a[` | 內部/周圍方括號 |

189| `i{`/`a{` | 內部/周圍大括號 |218| `i{`/`a{` | 內部/周圍大括號 |

190 219 

191### 視覺模式220<h3 id="visual-mode">

221 視覺模式

222</h3>

192 223 

193按 `v` 進行字元式選擇或按 `V` 進行行式選擇。動作會擴展選擇,運算子直接作用於選擇。224按 `v` 進行字元式選擇或按 `V` 進行行式選擇。動作會擴展選擇,運算子直接作用於選擇。

194 225 


208 239 

209不支援使用 `Ctrl+V` 的區塊式視覺模式。240不支援使用 `Ctrl+V` 的區塊式視覺模式。

210 241 

211## 命令歷史242<h2 id="command-history">

243 命令歷史

244</h2>

212 245 

213Claude Code 維護目前會話的命令歷史:246Claude Code 維護目前會話的命令歷史:

214 247 

215* 輸入歷史按工作目錄儲存248* 輸入歷史按工作目錄儲存

216* 當您執行 `/clear` 以開始新會話時,輸入歷史會重設。先前會話的對話會被保留,可以繼續進行。249* 當您執行 `/clear` 以開始新會話時,輸入歷史會重設。先前會話的對話會被保留,可以繼續進行。

250* 連續提交相同的提示兩次會記錄一個歷史項目,因此按向上鍵會跳到先前的不同提示

217* 使用向上/向下箭頭導航(請參閱上面的快捷鍵)251* 使用向上/向下箭頭導航(請參閱上面的快捷鍵)

218* **注意**:歷史擴展(`!`)預設停用252* **注意**:歷史擴展(`!`)預設停用

219 253 

220### 使用 Ctrl+R 進行反向搜尋254<h3 id="reverse-search-with-ctrl-r">

255 使用 Ctrl+R 進行反向搜尋

256</h3>

221 257 

222按 `Ctrl+R` 以互動方式搜尋您的命令歷史:258按 `Ctrl+R` 以互動方式搜尋您的命令歷史:

223 259 


234 270 

235搜尋顯示匹配的命令,搜尋詞醒目提示,因此您可以找到並重複使用先前的輸入。271搜尋顯示匹配的命令,搜尋詞醒目提示,因此您可以找到並重複使用先前的輸入。

236 272 

237## 背景 bash 命令273<h2 id="background-bash-commands">

274 背景 bash 命令

275</h2>

238 276 

239Claude Code 支援在背景執行 bash 命令,允許您在長時間執行的程序執行時繼續工作。277Claude Code 支援在背景執行 bash 命令,允許您在長時間執行的程序執行時繼續工作。

240 278 

241### 背景執行的工作原理279<h3 id="how-backgrounding-works">

280 背景執行的工作原理

281</h3>

242 282 

243當 Claude Code 在背景執行命令時,它會非同步執行命令並立即傳回背景工作 ID。Claude Code 可以在命令在背景繼續執行時回應新提示。283當 Claude Code 在背景執行命令時,它會非同步執行命令並立即傳回背景工作 ID。Claude Code 可以在命令在背景繼續執行時回應新提示。

244 284 


264* 開發伺服器304* 開發伺服器

265* 長時間執行的程序(docker、terraform)305* 長時間執行的程序(docker、terraform)

266 306 

267### 使用 `!` 前綴的 Bash 模式307<h3 id="shell-mode-with-prefix">

308 使用 `!` 前綴的 Bash 模式

309</h3>

268 310 

269透過在輸入前加上 `!` 直接執行 bash 命令,無需透過 Claude:311透過在輸入前加上 `!` 直接執行 bash 命令,無需透過 Claude:

270 312 


286 328 

287這對於快速 shell 操作同時維護對話上下文很有用。329這對於快速 shell 操作同時維護對話上下文很有用。

288 330 

289## 提示建議331<h2 id="prompt-suggestions">

332 提示建議

333</h2>

290 334 

291當您首次開啟會話時,提示輸入中會出現灰色的範例命令以幫助您開始。Claude Code 從您的專案的 git 歷史中選擇此項,因此它反映您最近一直在處理的檔案。335當您首次開啟會話時,提示輸入中會出現灰色的範例命令以幫助您開始。Claude Code 從您的專案的 git 歷史中選擇此項,因此它反映您最近一直在處理的檔案。

292 336 


297 341 

298建議作為背景請求執行,該請求重複使用父對話的提示快取,因此額外成本最少。當快取冷時,Claude Code 會跳過建議生成以避免不必要的成本。342建議作為背景請求執行,該請求重複使用父對話的提示快取,因此額外成本最少。當快取冷時,Claude Code 會跳過建議生成以避免不必要的成本。

299 343 

300在對話的第一輪之後、在非互動模式中以及在 Plan Mode 中,建議會自動跳過。344在對話的第一輪之後以及在 Plan Mode 中,建議會自動跳過。在列印模式中,預設情況下它們是關閉的。傳遞 [`--prompt-suggestions`](/zh-TW/cli-reference#cli-flags) 搭配 `--output-format stream-json --verbose` 以在每一輪之後改為發出 `prompt_suggestion` 訊息。

301 345 

302若要完全停用提示建議,請設定環境變數或在 `/config` 中切換設定:346若要完全停用提示建議,請設定環境變數或在 `/config` 中切換設定:

303 347 


305export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false349export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

306```350```

307 351 

308## 使用 /btw 的側面問題352<h2 id="side-questions-with-/btw">

353 使用 /btw 的側面問題

354</h2>

309 355 

310使用 `/btw` 詢問有關您目前工作的快速問題,而不將其新增到對話歷史。當您想要快速答案但不想雜亂主要上下文或使 Claude 偏離長時間執行的工作時,這很有用。356使用 `/btw` 詢問有關您目前工作的快速問題,而不將其新增到對話歷史。當您想要快速答案但不想雜亂主要上下文或使 Claude 偏離長時間執行的工作時,這很有用。

311 357 


317 363 

318* **Claude 工作時可用**:即使 Claude 正在處理回應時,您也可以執行 `/btw`。側面問題獨立執行,不會中斷主要輪次。364* **Claude 工作時可用**:即使 Claude 正在處理回應時,您也可以執行 `/btw`。側面問題獨立執行,不會中斷主要輪次。

319* **無工具存取**:側面問題僅從已在上下文中的內容回答。Claude 在回答側面問題時無法讀取檔案、執行命令或搜尋。365* **無工具存取**:側面問題僅從已在上下文中的內容回答。Claude 在回答側面問題時無法讀取檔案、執行命令或搜尋。

320* **單一回應**:沒有後續輪次如果您需要來回往返請改用正常提示366* **單一回應**:覆蓋層中沒有後續輪次若要繼續執行緒請使用 `f` 將其分支到自己的會話中

321* **低成本**:側面問題重複使用父對話的提示快取,因此額外成本最少。367* **低成本**:側面問題重複使用父對話的提示快取,因此額外成本最少。

322 368 

323按 **Space**、**Enter** 或 **Escape** 以關閉答案並返回提示369答案出現後,覆蓋層接受這些按鍵來自同一會話的較早側面問題會顯示為目前答案上方的淡色列表;它們保持在對話歷史之外,但在覆蓋層中保持可見,直到您清除它們。

370 

371| 按鍵 | 動作 |

372| :----------------------- | :------------------------------------------------------------------------------------------------ |

373| `Space`、`Enter`、`Escape` | 關閉答案並返回提示 |

374| `Up` / `Down` | 捲動答案 |

375| `f` | 分支到新會話。分支繼承父對話加上此問題和答案作為真實文字記錄輪次,因此您可以繼續進行完整工具存取。原始會話保留在 [`/resume`](/zh-TW/commands) 下。僅在本機會話中可用 |

376| `x` | 清除目前答案上方顯示的較早 `/btw` 交換列表 |

324 377 

325`/btw` 是 [subagent](/zh-TW/sub-agents) 的反面:它看到您的完整對話但沒有工具,而 subagent 有完整工具但以空上下文開始。使用 `/btw` 詢問 Claude 從此會話已知的內容;使用 subagent 去發現新的東西。378`/btw` 是 [subagent](/zh-TW/sub-agents) 的反面:它看到您的完整對話但沒有工具,而 subagent 有完整工具但以空上下文開始。使用 `/btw` 詢問 Claude 從此會話已知的內容;使用 subagent 去發現新的東西。

326 379 

327## 工作清單380<h2 id="task-list">

381 工作清單

382</h2>

328 383 

329在處理複雜的多步驟工作時,Claude 會建立工作清單以追蹤進度。工作出現在終端的狀態區域中,指示器顯示待處理、進行中或完成的內容。384在處理複雜的多步驟工作時,Claude 會建立工作清單以追蹤進度。工作出現在終端的狀態區域中,指示器顯示待處理、進行中或完成的內容。

330 385 


333* 工作在上下文壓縮中持續存在,幫助 Claude 在較大的專案上保持組織388* 工作在上下文壓縮中持續存在,幫助 Claude 在較大的專案上保持組織

334* 若要在會話之間共享工作清單,請設定 `CLAUDE_CODE_TASK_LIST_ID` 以使用 `~/.claude/tasks/` 中的命名目錄:`CLAUDE_CODE_TASK_LIST_ID=my-project claude`389* 若要在會話之間共享工作清單,請設定 `CLAUDE_CODE_TASK_LIST_ID` 以使用 `~/.claude/tasks/` 中的命名目錄:`CLAUDE_CODE_TASK_LIST_ID=my-project claude`

335 390 

336## 會話摘要391<h2 id="session-recap">

392 會話摘要

393</h2>

337 394 

338當您在離開終端後返回時,Claude Code 會顯示到目前為止會話中發生的情況的單行摘要。摘要在背景中生成,一旦自上次完成的輪次以來至少已過三分鐘且終端未聚焦,就會準備好。摘要僅在會話至少有三個輪次後出現,且永遠不會連續出現兩次。395當您在離開終端後返回時,Claude Code 會顯示到目前為止會話中發生的情況的單行摘要。摘要在背景中生成,一旦自上次完成的輪次以來至少已過三分鐘且終端未聚焦,就會準備好。摘要僅在會話至少有三個輪次後出現,且永遠不會連續出現兩次。

339 396 


341 398 

342會話摘要在每個計畫和提供者上預設開啟。摘要在非互動模式中始終被跳過。399會話摘要在每個計畫和提供者上預設開啟。摘要在非互動模式中始終被跳過。

343 400 

344## PR 審查狀態401<h2 id="pr-review-status">

402 PR 審查狀態

403</h2>

345 404 

346在處理具有開啟拉取請求的分支時,Claude Code 在頁尾顯示可點擊的 PR 連結(例如「PR #446」)。連結有一個彩色底線,指示審查狀態:405在處理具有開啟拉取請求的分支時,Claude Code 在頁尾顯示可點擊的 PR 連結(例如「PR #446」)。連結有一個彩色底線,指示審查狀態:

347 406 


349* 黃色:待審查408* 黃色:待審查

350* 紅色:要求變更409* 紅色:要求變更

351* 灰色:草稿410* 灰色:草稿

352* 紫色:已合併

353 411 

354`Cmd+click`(Mac)或 `Ctrl+click`(Windows/Linux)連結以在瀏覽器中開啟拉取請求。狀態每 60 秒自動更新。412拉取請求合併或關閉後,徽章會消失。`Cmd+click`(Mac)或 `Ctrl+click`(Windows/Linux)連結以在瀏覽器中開啟拉取請求。狀態每 60 秒自動更新,並在工作階段中執行 `gh pr` 或 `git push` 命令後立即更新

355 413 

356<Note>414<Note>

357 PR 狀態需要安裝並驗證 `gh` CLI(`gh auth login`)。415 PR 狀態需要安裝並驗證 `gh` CLI(`gh auth login`)。

358</Note>416</Note>

359 417 

360## 另請參閱418<h2 id="see-also">

419 另請參閱

420</h2>

361 421 

362* [Skills](/zh-TW/skills) - 自訂提示和工作流程422* [Skills](/zh-TW/skills) - 自訂提示和工作流程

363* [Checkpointing](/zh-TW/checkpointing) - 回溯 Claude 的編輯並恢復先前的狀態423* [Checkpointing](/zh-TW/checkpointing) - 回溯 Claude 的編輯並恢復先前的狀態

jetbrains.md +1 −1

Details

23 23 

24* **快速啟動**:使用 `Cmd+Esc`(Mac)或 `Ctrl+Esc`(Windows/Linux)直接從編輯器開啟 Claude Code,或點擊 UI 中的 Claude Code 按鈕24* **快速啟動**:使用 `Cmd+Esc`(Mac)或 `Ctrl+Esc`(Windows/Linux)直接從編輯器開啟 Claude Code,或點擊 UI 中的 Claude Code 按鈕

25* **差異檢視**:程式碼變更可直接在 IDE 差異檢視器中顯示,而不是在終端機中25* **差異檢視**:程式碼變更可直接在 IDE 差異檢視器中顯示,而不是在終端機中

26* **選擇內容共享**:IDE 中的目前選擇或分頁會自動與 Claude Code 共享26* **選擇內容共享**:IDE 中的目前選擇或分頁會自動與 Claude Code 共享。[`Read` 拒絕規則](/zh-TW/permissions#read-and-edit)會阻止此共享以符合檔案

27* **檔案參考快捷方式**:使用 `Cmd+Option+K`(Mac)或 `Alt+Ctrl+K`(Linux/Windows)插入檔案參考,例如 `@src/auth.ts#L1-99`27* **檔案參考快捷方式**:使用 `Cmd+Option+K`(Mac)或 `Alt+Ctrl+K`(Linux/Windows)插入檔案參考,例如 `@src/auth.ts#L1-99`

28* **診斷共享**:IDE 中的診斷錯誤(例如 lint 和語法錯誤)會在您工作時自動與 Claude 共享28* **診斷共享**:IDE 中的診斷錯誤(例如 lint 和語法錯誤)會在您工作時自動與 Claude 共享

29 29 

keybindings.md +129 −44

Details

12 12 

13Claude Code 支援可自訂的鍵盤快捷鍵。執行 `/keybindings` 以在 `~/.claude/keybindings.json` 建立或開啟您的配置檔案。13Claude Code 支援可自訂的鍵盤快捷鍵。執行 `/keybindings` 以在 `~/.claude/keybindings.json` 建立或開啟您的配置檔案。

14 14 

15## 配置檔案15<h2 id="configuration-file">

16 配置檔案

17</h2>

16 18 

17快捷鍵配置檔案是一個包含 `bindings` 陣列的物件。每個區塊指定一個上下文和一個按鍵組合到動作的對應。19快捷鍵配置檔案是一個包含 `bindings` 陣列的物件。每個區塊指定一個上下文和一個按鍵組合到動作的對應。

18 20 


42}44}

43```45```

44 46 

45## 上下文47<h2 id="contexts">

48 上下文

49</h2>

46 50 

47每個繫結區塊指定一個**上下文**,其中快捷鍵適用:51每個繫結區塊指定一個**上下文**,其中快捷鍵適用:

48 52 


69| `Scroll` | 對話滾動和全螢幕模式中的文字選擇 |73| `Scroll` | 對話滾動和全螢幕模式中的文字選擇 |

70| `Doctor` | `/doctor` 診斷螢幕 |74| `Doctor` | `/doctor` 診斷螢幕 |

71 75 

72## 可用動作76<h2 id="available-actions">

77 可用動作

78</h2>

73 79 

74動作遵循 `namespace:action` 格式,例如 `chat:submit` 用於傳送訊息,或 `app:toggleTodos` 用於顯示工作清單。每個上下文都有特定的可用動作。80動作遵循 `namespace:action` 格式,例如 `chat:submit` 用於傳送訊息,或 `app:toggleTodos` 用於顯示工作清單。每個上下文都有特定的可用動作。

75 81 

76### 應用程式動作82<h3 id="app-actions">

83 應用程式動作

84</h3>

77 85 

78在 `Global` 上下文中可用的動作:86在 `Global` 上下文中可用的動作:

79 87 


85| `app:toggleTodos` | Ctrl+T | 切換工作清單可見性 |93| `app:toggleTodos` | Ctrl+T | 切換工作清單可見性 |

86| `app:toggleTranscript` | Ctrl+O | 切換詳細文字記錄 |94| `app:toggleTranscript` | Ctrl+O | 切換詳細文字記錄 |

87 95 

88### 歷史記錄動作96<h3 id="history-actions">

97 歷史記錄動作

98</h3>

89 99 

90用於導覽命令歷史記錄的動作:100用於導覽命令歷史記錄的動作:

91 101 


95| `history:previous` | Up | 上一個歷史記錄項目 |105| `history:previous` | Up | 上一個歷史記錄項目 |

96| `history:next` | Down | 下一個歷史記錄項目 |106| `history:next` | Down | 下一個歷史記錄項目 |

97 107 

98### 聊天動作108<h3 id="chat-actions">

109 聊天動作

110</h3>

99 111 

100在 `Chat` 上下文中可用的動作:112在 `Chat` 上下文中可用的動作:

101 113 

102| 動作 | 預設值 | 說明 |114| 動作 | 預設值 | 說明 |

103| :-------------------- | :------------------------ | :---------------------------------------------------------------------------------------- |115| :-------------------- | :------------------------------ | :---------------------------------------------------------------------------------------- |

104| `chat:cancel` | Escape | 取消目前輸入 |116| `chat:cancel` | Escape | 取消目前輸入 |

105| `chat:clearInput` | Ctrl+L | 強制進行完整螢幕重新繪製,保留輸入。在[全螢幕渲染](/zh-TW/fullscreen#clear-the-conversation)中,在兩秒內按兩次以執行 `/clear` |117| `chat:clearInput` | Ctrl+L | 強制進行完整螢幕重新繪製,保留輸入。在[全螢幕渲染](/zh-TW/fullscreen#clear-the-conversation)中,在兩秒內按兩次以執行 `/clear` |

106| `chat:clearScreen` | Cmd+K | 在[全螢幕渲染](/zh-TW/fullscreen#clear-the-conversation)中,在兩秒內按兩次以執行 `/clear` |118| `chat:clearScreen` | Cmd+K | 在[全螢幕渲染](/zh-TW/fullscreen#clear-the-conversation)中,在兩秒內按兩次以執行 `/clear` |


114| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | 復原上一個動作 |126| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | 復原上一個動作 |

115| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | 在外部編輯器中開啟 |127| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | 在外部編輯器中開啟 |

116| `chat:stash` | Ctrl+S | 暫存目前提示 |128| `chat:stash` | Ctrl+S | 暫存目前提示 |

117| `chat:imagePaste` | Ctrl+V (Windows 上為 Alt+V) | 貼上影像 |129| `chat:imagePaste` | Ctrl+V (Windows 和 WSL 上為 Alt+V) | 從剪貼簿貼上影像。在 WSL 上,預設會繫結兩個快捷鍵 |

118 130 

119\*在沒有 VT 模式的 Windows 上(Node \<24.2.0/\<22.17.0、Bun \<1.2.23),預設為 Meta+M。131\*在沒有 VT 模式的 Windows 上(Node \<24.2.0/\<22.17.0、Bun \<1.2.23),預設為 Meta+M。

120 132 

121### 自動完成動作133<h3 id="autocomplete-actions">

134 自動完成動作

135</h3>

122 136 

123在 `Autocomplete` 上下文中可用的動作:137在 `Autocomplete` 上下文中可用的動作:

124 138 


129| `autocomplete:previous` | Up | 上一個建議 |143| `autocomplete:previous` | Up | 上一個建議 |

130| `autocomplete:next` | Down | 下一個建議 |144| `autocomplete:next` | Down | 下一個建議 |

131 145 

132### 確認動作146<h3 id="confirmation-actions">

147 確認動作

148</h3>

133 149 

134在 `Confirmation` 上下文中可用的動作:150在 `Confirmation` 上下文中可用的動作:

135 151 


145| `confirm:cycleMode` | Shift+Tab | 循環權限模式 |161| `confirm:cycleMode` | Shift+Tab | 循環權限模式 |

146| `confirm:toggleExplanation` | Ctrl+E | 切換權限說明 |162| `confirm:toggleExplanation` | Ctrl+E | 切換權限說明 |

147 163 

148### 權限動作164<h3 id="permission-actions">

165 權限動作

166</h3>

149 167 

150在 `Confirmation` 上下文中可用於權限對話框的動作:168在 `Confirmation` 上下文中可用於權限對話框的動作:

151 169 

152| 動作 | 預設值 | 說明 |170| 動作 | 預設值 | 說明 |

153| :----------------------- | :----- | :------- |171| :----------------------- | :---- | :------------------------------------------------------ |

154| `permission:toggleDebug` | Ctrl+D | 切換權限偵錯資訊 |172| `permission:toggleDebug` | (未繫結) | 切換權限偵錯資訊。v2.1.146 中移除了先前的 Ctrl+D 預設值,因為它與 `app:exit` 衝突 |

155 173 

156### 文字記錄動作174<h3 id="transcript-actions">

175 文字記錄動作

176</h3>

157 177 

158在 `Transcript` 上下文中可用的動作:178在 `Transcript` 上下文中可用的動作:

159 179 


162| `transcript:toggleShowAll` | Ctrl+E | 切換顯示所有內容 |182| `transcript:toggleShowAll` | Ctrl+E | 切換顯示所有內容 |

163| `transcript:exit` | q, Ctrl+C, Escape | 結束文字記錄檢視 |183| `transcript:exit` | q, Ctrl+C, Escape | 結束文字記錄檢視 |

164 184 

165### 歷史記錄搜尋動作185<h3 id="history-search-actions">

186 歷史記錄搜尋動作

187</h3>

166 188 

167在 `HistorySearch` 上下文中可用的動作:189在 `HistorySearch` 上下文中可用的動作:

168 190 


174| `historySearch:execute` | Enter | 執行選定的命令 |196| `historySearch:execute` | Enter | 執行選定的命令 |

175| `historySearch:cycleScope` | Ctrl+S | 循環範圍:工作階段、專案、任何地方 |197| `historySearch:cycleScope` | Ctrl+S | 循環範圍:工作階段、專案、任何地方 |

176 198 

177### 工作動作199<h3 id="task-actions">

200 工作動作

201</h3>

178 202 

179在 `Task` 上下文中可用的動作:203在 `Task` 上下文中可用的動作:

180 204 


182| :---------------- | :----- | :------- |206| :---------------- | :----- | :------- |

183| `task:background` | Ctrl+B | 背景執行目前工作 |207| `task:background` | Ctrl+B | 背景執行目前工作 |

184 208 

185### 主題動作209<h3 id="theme-actions">

210 主題動作

211</h3>

186 212 

187在 `ThemePicker` 上下文中可用的動作:213在 `ThemePicker` 上下文中可用的動作:

188 214 


190| :------------------------------- | :----- | :------- |216| :------------------------------- | :----- | :------- |

191| `theme:toggleSyntaxHighlighting` | Ctrl+T | 切換語法醒目提示 |217| `theme:toggleSyntaxHighlighting` | Ctrl+T | 切換語法醒目提示 |

192 218 

193### 說明動作219<h3 id="help-actions">

220 說明動作

221</h3>

194 222 

195在 `Help` 上下文中可用的動作:223在 `Help` 上下文中可用的動作:

196 224 


198| :------------- | :----- | :----- |226| :------------- | :----- | :----- |

199| `help:dismiss` | Escape | 關閉說明選單 |227| `help:dismiss` | Escape | 關閉說明選單 |

200 228 

201### Tabs 動作229<h3 id="tabs-actions">

230 Tabs 動作

231</h3>

202 232 

203在 `Tabs` 上下文中可用的動作:233在 `Tabs` 上下文中可用的動作:

204 234 


207| `tabs:next` | Tab, Right | 下一個標籤 |237| `tabs:next` | Tab, Right | 下一個標籤 |

208| `tabs:previous` | Shift+Tab, Left | 上一個標籤 |238| `tabs:previous` | Shift+Tab, Left | 上一個標籤 |

209 239 

210### 附件動作240<h3 id="attachments-actions">

241 附件動作

242</h3>

211 243 

212在 `Attachments` 上下文中可用的動作:244在 `Attachments` 上下文中可用的動作:

213 245 


218| `attachments:remove` | Backspace, Delete | 移除選定的附件 |250| `attachments:remove` | Backspace, Delete | 移除選定的附件 |

219| `attachments:exit` | Down, Escape | 結束附件導覽 |251| `attachments:exit` | Down, Escape | 結束附件導覽 |

220 252 

221### 頁尾動作253<h3 id="footer-actions">

254 頁尾動作

255</h3>

222 256 

223在 `Footer` 上下文中可用的動作:257在 `Footer` 上下文中可用的動作:

224 258 


231| `footer:openSelected` | Enter | 開啟選定的頁尾項目 |265| `footer:openSelected` | Enter | 開啟選定的頁尾項目 |

232| `footer:clearSelection` | Escape | 清除頁尾選擇 |266| `footer:clearSelection` | Escape | 清除頁尾選擇 |

233 267 

234### 訊息選擇器動作268<h3 id="message-selector-actions">

269 訊息選擇器動作

270</h3>

235 271 

236在 `MessageSelector` 上下文中可用的動作:272在 `MessageSelector` 上下文中可用的動作:

237 273 


243| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | 跳至底部 |279| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | 跳至底部 |

244| `messageSelector:select` | Enter | 選擇訊息 |280| `messageSelector:select` | Enter | 選擇訊息 |

245 281 

246### Diff 動作282<h3 id="diff-actions">

283 Diff 動作

284</h3>

247 285 

248在 `DiffDialog` 上下文中可用的動作:286在 `DiffDialog` 上下文中可用的動作:

249 287 

250| 動作 | 預設值 | 說明 |288| 動作 | 預設值 | 說明 |

251| :-------------------- | :------- | :-------- |289| :-------------------- | :------- | :------------------------- |

252| `diff:dismiss` | Escape | 關閉差異檢視器 |290| `diff:dismiss` | Escape | 關閉差異檢視器 |

253| `diff:previousSource` | Left | 上一個差異來源 |291| `diff:previousSource` | Left | 上一個差異來源 |

254| `diff:nextSource` | Right | 下一個差異來源 |292| `diff:nextSource` | Right | 下一個差異來源 |

255| `diff:previousFile` | Up | 差異中的上一個檔案 |293| `diff:previousFile` | Up, K | 檔案清單中的上一個檔案;在詳細資訊檢視中向上滾動一行 |

256| `diff:nextFile` | Down | 差異中的下一個檔案 |294| `diff:nextFile` | Down, J | 檔案清單中的下一個檔案;在詳細資訊檢視中向下滾動一行 |

257| `diff:viewDetails` | Enter | 檢視差異詳細資訊 |295| `diff:viewDetails` | Enter | 檢視差異詳細資訊 |

258| `diff:back` | (特定於上下文) | 在差異檢視器中返回 |296| `diff:back` | (特定於上下文) | 在差異檢視器中返回 |

259 297 

260### 模型選擇器動作298差異詳細資訊檢視也會將分頁器風格的按鍵繫結到標準[滾動動作](#scroll-actions)。這些繫結是 `DiffDialog` 上下文的一部分,僅適用於詳細資訊檢視;[滾動動作](#scroll-actions)下列出的 `Scroll` 上下文預設值保持不變。

299 

300| 動作 | 預設值 | 說明 |

301| :-------------------- | :------------- | :---------- |

302| `scroll:pageUp` | PageUp | 向上滾動視窗高度的一半 |

303| `scroll:pageDown` | PageDown | 向下滾動視窗高度的一半 |

304| `scroll:fullPageUp` | Shift+Space, B | 向上滾動完整視窗高度 |

305| `scroll:fullPageDown` | Space | 向下滾動完整視窗高度 |

306| `scroll:top` | G, Home | 跳至頂部 |

307| `scroll:bottom` | Shift+G, End | 跳至底部 |

308 

309<h3 id="model-picker-actions">

310 模型選擇器動作

311</h3>

261 312 

262在 `ModelPicker` 上下文中可用的動作:313在 `ModelPicker` 上下文中可用的動作:

263 314 

264| 動作 | 預設值 | 說明 |315| 動作 | 預設值 | 說明 |

265| :--------------------------- | :---- | :----- |316| :---------------------------- | :---- | :--------------- |

266| `modelPicker:decreaseEffort` | Left | 降低努力程度 |317| `modelPicker:decreaseEffort` | Left | 降低努力程度 |

267| `modelPicker:increaseEffort` | Right | 提高努力程度 |318| `modelPicker:increaseEffort` | Right | 提高努力程度 |

319| `modelPicker:thisSessionOnly` | s | 將醒目提示的模型套用至此工作階段 |

268 320 

269### 選擇動作321<h3 id="select-actions">

322 選擇動作

323</h3>

270 324 

271在 `Select` 上下文中可用的動作:325在 `Select` 上下文中可用的動作:

272 326 


277| `select:accept` | Enter | 接受選擇 |331| `select:accept` | Enter | 接受選擇 |

278| `select:cancel` | Escape | 取消選擇 |332| `select:cancel` | Escape | 取消選擇 |

279 333 

280### Plugin 動作334<h3 id="plugin-actions">

335 Plugin 動作

336</h3>

281 337 

282在 `Plugin` 上下文中可用的動作:338在 `Plugin` 上下文中可用的動作:

283 339 


287| `plugin:install` | I | 安裝選定的 plugins |343| `plugin:install` | I | 安裝選定的 plugins |

288| `plugin:favorite` | F | 將選定的 plugin 標記為最愛,使其在「已安裝」標籤頂部附近排序 |344| `plugin:favorite` | F | 將選定的 plugin 標記為最愛,使其在「已安裝」標籤頂部附近排序 |

289 345 

290### 設定動作346<h3 id="settings-actions">

347 設定動作

348</h3>

291 349 

292在 `Settings` 上下文中可用的動作:350在 `Settings` 上下文中可用的動作:

293 351 


297| `settings:retry` | R | 重試載入使用量資料(發生錯誤時) |355| `settings:retry` | R | 重試載入使用量資料(發生錯誤時) |

298| `settings:close` | Enter | 儲存變更並關閉配置面板。Escape 會捨棄變更並關閉 |356| `settings:close` | Enter | 儲存變更並關閉配置面板。Escape 會捨棄變更並關閉 |

299 357 

300### Doctor 動作358<h3 id="doctor-actions">

359 Doctor 動作

360</h3>

301 361 

302在 `Doctor` 上下文中可用的動作:362在 `Doctor` 上下文中可用的動作:

303 363 


305| :----------- | :-- | :--------------------------------- |365| :----------- | :-- | :--------------------------------- |

306| `doctor:fix` | F | 將診斷報告傳送給 Claude 以修復報告的問題。僅在發現問題時有效 |366| `doctor:fix` | F | 將診斷報告傳送給 Claude 以修復報告的問題。僅在發現問題時有效 |

307 367 

308### 語音動作368<h3 id="voice-actions">

369 語音動作

370</h3>

309 371 

310在啟用[語音聽寫](/zh-TW/voice-dictation)時,在 `Chat` 上下文中可用的動作:372在啟用[語音聽寫](/zh-TW/voice-dictation)時,在 `Chat` 上下文中可用的動作:

311 373 


313| :----------------- | :---- | :----------------------- |375| :----------------- | :---- | :----------------------- |

314| `voice:pushToTalk` | Space | 聽寫提示。根據 `/voice` 模式按住或點選 |376| `voice:pushToTalk` | Space | 聽寫提示。根據 `/voice` 模式按住或點選 |

315 377 

316### 滾動動作378<h3 id="scroll-actions">

379 滾動動作

380</h3>

317 381 

318在啟用[全螢幕渲染](/zh-TW/fullscreen)時,在 `Scroll` 上下文中可用的動作:382在啟用[全螢幕渲染](/zh-TW/fullscreen)時,在 `Scroll` 上下文中可用的動作:

319 383 


338| `selection:extendLineStart` | Shift+Home | 將有效選擇延伸到行的開始 |402| `selection:extendLineStart` | Shift+Home | 將有效選擇延伸到行的開始 |

339| `selection:extendLineEnd` | Shift+End | 將有效選擇延伸到行的結尾 |403| `selection:extendLineEnd` | Shift+End | 將有效選擇延伸到行的結尾 |

340 404 

341## 按鍵組合語法405<h2 id="keystroke-syntax">

406 按鍵組合語法

407</h2>

342 408 

343### 修飾鍵409<h3 id="modifiers">

410 修飾鍵

411</h3>

344 412 

345使用 `+` 分隔符搭配修飾鍵:413使用 `+` 分隔符搭配修飾鍵:

346 414 


360ctrl+shift+c 多個修飾鍵428ctrl+shift+c 多個修飾鍵

361```429```

362 430 

363### 大寫字母431<h3 id="uppercase-letters">

432 大寫字母

433</h3>

364 434 

365獨立的大寫字母表示 Shift。例如,`K` 等同於 `shift+k`。這對於 vim 風格的繫結很有用,其中大寫和小寫鍵有不同的含義。435獨立的大寫字母表示 Shift。例如,`K` 等同於 `shift+k`。這對於 vim 風格的繫結很有用,其中大寫和小寫鍵有不同的含義。

366 436 

367搭配修飾鍵的大寫字母(例如 `ctrl+K`)被視為風格上的,**不**表示 Shift:`ctrl+K` 與 `ctrl+k` 相同。437搭配修飾鍵的大寫字母(例如 `ctrl+K`)被視為風格上的,**不**表示 Shift:`ctrl+K` 與 `ctrl+k` 相同。

368 438 

369### 和弦439<h3 id="chords">

440 和弦

441</h3>

370 442 

371和弦是由空格分隔的按鍵組合序列:443和弦是由空格分隔的按鍵組合序列:

372 444 


374ctrl+k ctrl+s 按 Ctrl+K,放開,然後按 Ctrl+S446ctrl+k ctrl+s 按 Ctrl+K,放開,然後按 Ctrl+S

375```447```

376 448 

377### 特殊鍵449<h3 id="special-keys">

450 特殊鍵

451</h3>

378 452 

379* `escape` 或 `esc` - Escape 鍵453* `escape` 或 `esc` - Escape 鍵

380* `enter` 或 `return` - Enter 鍵454* `enter` 或 `return` - Enter 鍵


383* `up`、`down`、`left`、`right` - 方向鍵457* `up`、`down`、`left`、`right` - 方向鍵

384* `backspace`、`delete` - 刪除鍵458* `backspace`、`delete` - 刪除鍵

385 459 

386## 取消繫結預設快捷鍵460<h2 id="unbind-default-shortcuts">

461 取消繫結預設快捷鍵

462</h2>

387 463 

388將動作設定為 `null` 以取消繫結預設快捷鍵:464將動作設定為 `null` 以取消繫結預設快捷鍵:

389 465 


419 495 

420如果您取消繫結前綴上的某些但不是全部和弦,按下前綴仍會進入和弦等待模式以進行剩餘的繫結。496如果您取消繫結前綴上的某些但不是全部和弦,按下前綴仍會進入和弦等待模式以進行剩餘的繫結。

421 497 

422## 保留的快捷鍵498<h2 id="reserved-shortcuts">

499 保留的快捷鍵

500</h2>

423 501 

424這些快捷鍵無法重新繫結:502這些快捷鍵無法重新繫結:

425 503 


430| Ctrl+M | 與終端機中的 Enter 相同(兩者都傳送 CR) |508| Ctrl+M | 與終端機中的 Enter 相同(兩者都傳送 CR) |

431| Caps Lock | 未傳遞至終端機應用程式 |509| Caps Lock | 未傳遞至終端機應用程式 |

432 510 

433## 終端機衝突511<h2 id="terminal-conflicts">

512 終端機衝突

513</h2>

434 514 

435某些快捷鍵可能與終端機多工器衝突:515某些快捷鍵可能與終端機多工器衝突:

436 516 


440| Ctrl+A | GNU screen 前綴 |520| Ctrl+A | GNU screen 前綴 |

441| Ctrl+Z | Unix 程序暫停 (SIGTSTP) |521| Ctrl+Z | Unix 程序暫停 (SIGTSTP) |

442 522 

443## Vim 模式互動523<h2 id="vim-mode-interaction">

524 Vim 模式互動

525</h2>

444 526 

445啟用 vim 模式時(透過 `/config` → 編輯器模式),快捷鍵和 vim 模式獨立運作:527啟用 vim 模式時(透過 `/config` → 編輯器模式),快捷鍵和 vim 模式獨立運作:

446 528 


449* vim 模式中的 Escape 鍵從 INSERT 切換到 NORMAL 模式;它不會觸發 `chat:cancel`531* vim 模式中的 Escape 鍵從 INSERT 切換到 NORMAL 模式;它不會觸發 `chat:cancel`

450* 大多數 Ctrl+鍵快捷鍵通過 vim 模式傳遞到快捷鍵系統532* 大多數 Ctrl+鍵快捷鍵通過 vim 模式傳遞到快捷鍵系統

451* 在 vim NORMAL 模式中,`?` 顯示說明選單(vim 行為)533* 在 vim NORMAL 模式中,`?` 顯示說明選單(vim 行為)

534* 在 vim NORMAL 模式中,`/` 開啟歷史搜尋,與標準模式中的 Ctrl+R 相同

452 535 

453## 驗證536<h2 id="validation">

537 驗證

538</h2>

454 539 

455Claude Code 驗證您的快捷鍵並顯示以下警告:540Claude Code 驗證您的快捷鍵並顯示以下警告:

456 541 

large-codebases.md +511 −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# 在 monorepo 或大型程式碼庫中設定 Claude Code

6 

7> 使用巢狀 CLAUDE.md 檔案、稀疏 worktrees、程式碼智能和按套件技能為 monorepos 和大型單樹程式碼庫設定 Claude Code,讓 Claude 專注於您正在處理的程式碼。

8 

9大型程式碼庫可以是擁有數百萬行程式碼的單一儲存庫,也可以是擁有許多套件的 monorepo。Claude Code 可在任何規模下運作,但隨著程式碼庫的增長,針對較小專案調整的預設設定可能會用與任務無關的指令和檔案讀取填滿上下文視窗,浪費 tokens 並降低 Claude 的效能。

10 

11本指南向個別開發人員和工程團隊展示如何將 Claude 的範圍限制在任務涉及的程式碼庫部分。每個部分都會說明設定是個人設定還是提交到儲存庫。

12 

13<h2 id="what-this-guide-covers">

14 本指南涵蓋的內容

15</h2>

16 

17下方的[表格](#settings-on-this-page)列出每個設定及其用途。其後的[檔案樹](#the-example-monorepo)是本頁面每個程式碼範例所參考的範例 monorepo。

18 

19<h3 id="settings-on-this-page">

20 本頁面的設定

21</h3>

22 

23下方的每個設定都是獨立的。它們是分層的,而不是相互替代的,因此請應用適合您的儲存庫的任何設定。[選擇在何處啟動 Claude](#choose-where-to-start-claude) 決定了您的設定檔案的位置,因此請先閱讀它。[將其整合在一起](#put-it-together)顯示了所有設定的組合。

24 

25| 我想要 | 使用 |

26| :-------------------------------- | :------------------------------------------------------------------------------------- |

27| 只載入您接觸的程式碼的約定,而不是一個根檔案涵蓋每個子系統 | 按目錄的[CLAUDE.md 檔案](#layer-claude-md-files-by-directory) |

28| 排除您從不使用的套件的 CLAUDE.md 檔案 | [`claudeMdExcludes`](#exclude-irrelevant-claude-md-files) |

29| 阻止 Claude 開啟建置輸出、生成的程式碼和供應商依賴項 | `permissions.deny` 中的 [`Read` 拒絕規則](#block-reads-of-generated-and-vendored-code) |

30| 透過語言伺服器而不是掃描檔案來尋找符號的定義或呼叫者 | [程式碼智能外掛](#reduce-file-reads-with-code-intelligence) |

31| 當 Claude 建立 worktree 時,只簽出任務需要的目錄 | [`worktree.sparsePaths`](#check-out-only-the-directories-you-need) |

32| 從同一工作階段讀取和編輯同級套件或另一個儲存庫 | [`--add-dir`](#grant-access-across-packages-or-repositories) 或 `additionalDirectories` |

33| 給 Claude 特定於一個區域的程序,只在相關時載入 | 按目錄的[技能](#add-per-directory-skills) |

34| 用一組每個人都安裝的約定替換許多按目錄的 CLAUDE.md 檔案 | 內部市場中的[外掛](#centralize-conventions-when-layering-stops-scaling) |

35 

36<Tip>

37 有關在任何儲存庫中保持上下文較小的工作流程技術,例如[在子代理中執行探索](/zh-TW/best-practices#use-subagents-for-investigation)以使檔案讀取保持在主對話之外,請參閱 [Claude Code 的最佳實踐](/zh-TW/best-practices)。若要向組織中的每個開發人員推出基線設定,請參閱[為您的組織設定 Claude Code](/zh-TW/admin-setup)。

38</Tip>

39 

40<h3 id="the-example-monorepo">

41 範例 monorepo

42</h3>

43 

44本頁面的範例參考了一個具有三個套件的 monorepo。相同的模式適用於大型單樹程式碼庫:其中範例使用 `packages/api/`,請替換為您自己的子系統目錄,例如 `src/backend/` 或 `lib/core/`。

45 

46```text theme={null}

47monorepo/

48 CLAUDE.md # 根指令

49 packages/

50 api/

51 CLAUDE.md # API 特定指令

52 .claude/skills/

53 src/

54 web/

55 CLAUDE.md # 前端特定指令

56 .claude/skills/

57 src/

58 shared/

59 CLAUDE.md # 共享庫指令

60 src/

61```

62 

63<h2 id="choose-where-to-start-claude">

64 選擇在何處啟動 Claude

65</h2>

66 

67您啟動 `claude` 的位置決定了 Claude 可以讀取和編輯哪些檔案而無需額外的權限授予、在啟動時載入哪些 CLAUDE.md 檔案,以及哪些專案設定適用。

68 

69| 啟動位置 | 檔案存取 | 啟動時載入的 CLAUDE.md | 使用時機 |

70| :----- | :------------- | :----------------------------- | :------------- |

71| 儲存庫根目錄 | 每個檔案 | 僅根檔案;當 Claude 在該處讀取時,子目錄檔案按需載入 | 任務跨越多個套件或子系統 |

72| 子目錄 | 僅該子樹,直到您授予更多權限 | 該目錄的加上每個祖先的 | 工作範圍限於一個套件或子系統 |

73 

74`.claude/settings.json` 中的專案設定只從您的啟動目錄載入,不像 CLAUDE.md 檔案那樣從父目錄繼承:儲存庫根目錄的 `.claude/settings.json` 僅在您從根目錄啟動時適用。

75 

76下方的每個部分都說明其設定檔案應位於儲存庫根目錄還是您啟動的子目錄中,以及它是提交還是保持本地。

77 

78<h2 id="layer-claude-md-files-by-directory">

79 按目錄分層 CLAUDE.md 檔案

80</h2>

81 

82在大型程式碼庫中,儲存庫根目錄的單個 CLAUDE.md 往往要麼增長到涵蓋每個子系統的約定,在與當前任務無關的指令上浪費上下文,要麼保持太通用而無用。將指令分散到按目錄的檔案中意味著 Claude 載入儲存庫範圍的規則加上僅適用於您正在處理的程式碼的約定。

83 

84Claude Code 在啟動時從您的工作目錄和每個父目錄載入每個 [CLAUDE.md](/zh-TW/memory) 檔案,然後當它在該處讀取檔案時按需載入每個子目錄的檔案。根檔案設定儲存庫範圍的規則,每個子目錄添加其自己的規則。

85 

86常見的分割是兩個級別:

87 

88* **根 `CLAUDE.md`**:適用於任何地方的指令,例如編碼標準、提交約定和儲存庫佈局

89* **按子目錄 `CLAUDE.md`**:特定於該區域堆疊的約定。在 monorepo 中,這是每個套件一個。在大型單樹中,它是每個子系統一個,例如 `src/db/` 或 `src/api/`

90 

91將這些檔案提交到儲存庫,以便隊友繼承它們。每個目錄的所有者通常維護其檔案。

92 

93根 `CLAUDE.md` 將 Claude 定向到儲存庫結構:

94 

95```markdown CLAUDE.md theme={null}

96這是一個 monorepo,在 packages/ 下有三個套件:

97 

98- packages/api:使用 Express、TypeScript 和 PostgreSQL 的 Node.js REST API

99- packages/web:使用 Vite、TypeScript 和 TailwindCSS 的 React 前端

100- packages/shared:由 api 和 web 都使用的共享 TypeScript 實用程式

101 

102從套件目錄而不是 monorepo 根目錄執行命令。

103每個套件都有自己的 tsconfig.json、package.json 和測試套件。

104```

105 

106每個子目錄的 `CLAUDE.md`,這裡是 `packages/api/CLAUDE.md`,添加特定於該區域堆疊的上下文:

107 

108```markdown packages/api/CLAUDE.md theme={null}

109此套件是 REST API 伺服器。

110 

111- 執行測試:`npm test`(使用 Vitest)

112- 執行開發伺服器:`npm run dev`(埠 3001)

113- 資料庫遷移:`npm run migrate`

114- 環境變數:將 `.env.example` 複製到 `.env`

115 

116API 路由在 src/routes/ 中。每個路由檔案匯出一個 Express 路由器。

117資料庫查詢在 src/db/ 中使用 Knex。永遠不要在路由處理程式中寫入原始 SQL 字串。

118```

119 

120當您從 `packages/api/` 啟動 Claude 時,它會載入 `packages/api/CLAUDE.md` 和根 `CLAUDE.md`。Claude 看到本地指令以及儲存庫範圍的規則,上下文中沒有來自 `packages/web/` 的指令。非 monorepo 樹中的任何子目錄也是如此。

121 

122保持檔案在程式碼庫和模型變化時最新的幾種方法:

123 

124* **在拉取請求中審查**:將 CLAUDE.md 編輯視為任何其他文件變更,以便約定跟蹤程式碼

125* **在主要模型發佈後重新訪問**:適用於舊模型限制的指令在較新模型自行處理該情況後可能會變成開銷。例如,強制單檔案重構的規則在限制消除後可以刪除

126* **添加一個 Stop hook 來提議更新**:[`Stop` hook](/zh-TW/hooks#stop) 在 Claude 完成回應時接收工作階段記錄的路徑,因此指令碼可以審查工作階段並在暴露的差距仍然新鮮時提議 CLAUDE.md 更新

127 

128有關 CLAUDE.md 檔案如何載入和互動的更多資訊,請參閱[記憶和專案指令](/zh-TW/memory)。

129 

130<h3 id="choose-between-per-directory-claude-md-and-path-scoped-rules">

131 在按目錄 CLAUDE.md 和路徑範圍規則之間選擇

132</h3>

133 

134按目錄的 `CLAUDE.md` 檔案和 `.claude/rules/` 下的[路徑範圍規則](/zh-TW/memory#path-specific-rules)都允許您將指令定向到樹的一部分。它們在檔案位置和載入時間上有所不同。

135 

136| 方法 | 檔案位置 | 載入時機 | 使用時機 |

137| :------------------------ | :------------------- | :----------------------------------- | :----------------------------- |

138| 按目錄 `CLAUDE.md` | 在目錄內,與其程式碼一起 | 從該目錄啟動時在啟動時,或當 Claude 在該處讀取檔案時按需 | 目錄所有者維護自己的約定;指令與程式碼一起版本化 |

139| `.claude/rules/` 中的路徑範圍規則 | 儲存庫根目錄的中央 `.claude/` | 當 Claude 使用與規則的 `paths:` glob 匹配的檔案時 | 您希望所有約定都在一個地方,或相同的規則適用於許多分散的路徑 |

140 

141有關也涵蓋技能的比較,請參閱[比較相似功能](/zh-TW/features-overview#compare-similar-features)。

142 

143<h3 id="exclude-irrelevant-claude-md-files">

144 排除無關的 CLAUDE.md 檔案

145</h3>

146 

147當您從儲存庫根目錄啟動 Claude 時,每個子目錄的 CLAUDE.md 在 Claude 讀取該目錄中的檔案時立即載入。`claudeMdExcludes` 設定按路徑或 glob 模式跳過特定檔案,以便它們永遠不會載入。

148 

149將此用於您從不使用的目錄,例如其他團隊的套件、舊程式碼或供應商子樹。排除清單是靜態的,不是按任務的開關。若要今天專注於一個套件,明天專注於另一個套件,請[從該套件的目錄啟動 Claude](#choose-where-to-start-claude),而不是編輯排除項。

150 

151如果您只想為自己進行這些排除,請將設定放在 `.claude/settings.local.json` 中,該檔案被 gitignored 且未提交。模式使用針對絕對檔案路徑匹配的 glob 語法,因此以 `**/` 開始相對樣式的模式以在樹中的任何地方匹配。下面的範例排除由其他團隊擁有的套件:

152 

153```json .claude/settings.local.json theme={null}

154{

155 "claudeMdExcludes": [

156 "**/packages/admin-dashboard/**",

157 "**/packages/legacy-*/**"

158 ]

159}

160```

161 

162這會跳過這些套件下的每個 CLAUDE.md 和規則檔案。根 CLAUDE.md 和您確實使用的套件仍然正常載入。

163 

164這些模式涵蓋其他常見情況:

165 

166* `"**/packages/*/CLAUDE.md"`:排除每個套件的 CLAUDE.md,同時保留根目錄

167* `"**/packages/web/**"`:排除 web 套件下的所有內容,包括規則

168* `"/home/user/monorepo/legacy/CLAUDE.md"`:按絕對路徑排除一個特定檔案

169 

170受管理的原則 CLAUDE.md 檔案無法排除,因此組織範圍的指令始終適用。您可以在任何[設定範圍](/zh-TW/settings#configuration-scopes)設定 `claudeMdExcludes`:使用者、專案、本地或受管理。陣列在範圍內合併,因此團隊可以設定專案級別的預設值,而個人添加本地覆蓋。

171 

172有關完整的排除文件,請參閱[排除特定 CLAUDE.md 檔案](/zh-TW/memory#exclude-specific-claude-md-files)。

173 

174<h2 id="reduce-what-claude-reads">

175 減少 Claude 讀取的內容

176</h2>

177 

178指令只是最終進入 Claude 上下文的一部分。檔案讀取是另一個隨著程式碼庫增長而增加的成本。下方的設定阻止讀取無關的路徑,並用語言伺服器查詢替換詳盡的檔案掃描。

179 

180<h3 id="block-reads-of-generated-and-vendored-code">

181 阻止讀取生成的和供應商程式碼

182</h3>

183 

184Claude 的內容搜尋預設尊重 `.gitignore`,因此已列在其中的路徑(例如 `node_modules/`、`dist/` 和 `build/`)無需額外設定即可保持在搜尋結果之外。

185 

186對於已簽入的路徑,例如供應商 SDK 或提交的生成程式碼,在 `permissions.deny` 中添加 `Read` 拒絕規則以阻止 Claude 開啟這些檔案,即使搜尋列出它們。

187 

188若要為在儲存庫中工作的每個人應用這些排除,請將它們提交到 `.claude/settings.json`。若要保持個人,請改用 `.claude/settings.local.json`。與本頁面上的其他專案設定一樣,這些檔案只從您的啟動目錄載入。如果您從根目錄啟動 Claude,請將它們放在儲存庫根目錄,或如果您從子目錄啟動,請放在每個套件的 `.claude/` 中。若要在無論啟動目錄如何的每個工作階段中強制執行相同的拒絕規則,請在[受管理設定](/zh-TW/settings#settings-files)中設定它們,使用者和專案設定無法覆蓋。

189 

190下面的範例阻止建置工件和供應商 SDK:

191 

192```json .claude/settings.json theme={null}

193{

194 "permissions": {

195 "deny": [

196 "Read(./**/dist/**)",

197 "Read(./**/build/**)",

198 "Read(./**/*.generated.*)",

199 "Read(./vendor/**)"

200 ]

201 }

202}

203```

204 

205拒絕規則涵蓋 Claude 的內建檔案工具和公認的 Bash 檔案命令,包括 `cat`、`head`、`grep` 和 `find`,當拒絕的路徑作為引數傳遞時。它們不會從遞迴搜尋的輸出中篩選出拒絕的路徑,也不涵蓋自己開啟檔案的任意子程序。有關完整的模式語法,請參閱[讀取和編輯權限規則](/zh-TW/permissions#read-and-edit)。

206 

207<h3 id="reduce-file-reads-with-code-intelligence">

208 使用程式碼智能減少檔案讀取

209</h3>

210 

211在大型程式碼庫中,尋找符號的定義或使用位置可能會花費許多檔案讀取和 grep 呼叫。[程式碼智能外掛](/zh-TW/discover-plugins#code-intelligence)將 Claude 連接到語言伺服器,以便它可以跳轉到定義、尋找參考和直接顯示類型錯誤,而不是掃描樹。

212 

213官方市場有 TypeScript、Python、Go、Rust 和其他常見語言的外掛。下面的範例安裝 TypeScript 外掛:

214 

215```shell theme={null}

216/plugin install typescript-lsp@claude-plugins-official

217```

218 

219若要為儲存庫中的每個人啟用外掛而不是自己安裝,請將其添加到 [`enabledPlugins` 專案設定](/zh-TW/settings#plugin-settings)。

220 

221程式碼智能外掛需要每個開發人員機器上的語言的語言伺服器二進位檔案。請參閱[每種語言需要哪個二進位檔案](/zh-TW/discover-plugins#code-intelligence)。從官方市場安裝需要網路存取 GitHub,市場在那裡託管。在受限網路上,[改為從內部 Git 主機或本地路徑添加市場](/zh-TW/discover-plugins#add-from-other-git-hosts)。

222 

223這與上面的 `claudeMdExcludes` 和 `Read` 拒絕規則配對良好。這些將無關的內容保持在上下文之外,程式碼智能防止 Claude 通過讀取剩餘內容來定位定義。

224 

225<h2 id="scope-worktrees-and-file-access">

226 範圍 worktrees 和檔案存取

227</h2>

228 

229這些設定控制 worktrees 中磁碟上的內容以及 Claude 可以讀取和寫入的超出啟動點的目錄。

230 

231<h3 id="check-out-only-the-directories-you-need">

232 只簽出您需要的目錄

233</h3>

234 

235`--worktree` 旗標在新的 git worktree 中啟動工作階段,以便變更與您的主簽出隔離。預設情況下,它簽出整個儲存庫。在大型儲存庫中,`worktree.sparsePaths` 設定使用 git sparse-checkout 只將列出的目錄加上根級檔案寫入磁碟,以便 worktrees 啟動更快並使用更少空間。

236 

237如果在此目錄中工作的每個人都需要相同的路徑,請將設定提交到 `.claude/settings.json`。若要為自己添加路徑,請使用 `.claude/settings.local.json`:列表在範圍內合併,因此本地檔案可以添加到提交的清單中但不能刪除它們。下面的範例顯示提交的檔案:

238 

239```json .claude/settings.json theme={null}

240{

241 "worktree": {

242 "sparsePaths": [

243 ".claude",

244 "packages/api",

245 "packages/shared"

246 ]

247 }

248}

249```

250 

251當 Claude 建立 worktree 時,它只簽出 `.claude/`、`packages/api/` 和 `packages/shared/`,而不是完整樹。`sparsePaths` 中的路徑相對於儲存庫根目錄,無論您從哪個子目錄啟動 Claude。任何目錄路徑都可以在這裡工作,不僅僅是套件根目錄。

252 

253這對於[子代理 worktree 隔離](/zh-TW/worktrees#isolate-subagents-with-worktrees)特別有用。子代理是為子任務生成的平行 Claude 實例,每個在 worktree 中執行的都會獲得輕量級簽出而不是完整樹。工作階段中的所有 worktrees 共享相同的 `sparsePaths`,因此如果一個子代理需要 `packages/api/` 而另一個需要 `packages/web/`,請列出兩者。

254 

255在 `sparsePaths` 中列出目錄,而不是個別檔案。根級檔案(如 `package.json`、`tsconfig.base.json` 和鎖定檔案)始終與您列出的目錄一起簽出。根級目錄不是,因此如果您想要儲存庫根目錄的 `.claude/settings.json`、`.claude/rules/` 或 `.claude/skills/` 在 worktree 內可用,請在清單中包含 `.claude`。

256 

257若要避免在 worktrees 中複製 `node_modules` 等大型目錄,請在同一 `.claude/settings.json` 中將 `sparsePaths` 與 `symlinkDirectories` 配對:

258 

259```json .claude/settings.json theme={null}

260{

261 "worktree": {

262 "sparsePaths": [

263 ".claude",

264 "packages/api",

265 "packages/shared"

266 ],

267 "symlinkDirectories": [

268 "node_modules"

269 ]

270 }

271}

272```

273 

274這會建立從每個 worktree 的 `node_modules/` 回到主儲存庫副本的符號連結,而不是在磁碟上複製它。

275 

276<Note>

277 `sparsePaths` 和 `symlinkDirectories` 設定在建立 worktree 之前從您的啟動目錄讀取。建立後,工作階段的工作目錄是 worktree 根目錄,而不是您啟動的子目錄。因此,worktree 內的專案設定從 worktree 根目錄的 `.claude/settings.json`(儲存庫根目錄檔案的簽出副本)載入。將您在 worktrees 內需要的任何其他設定(例如權限規則或 hooks)放在儲存庫根目錄的 `.claude/settings.json` 中。

278</Note>

279 

280有關完整的 worktree 設定參考,請參閱 [Worktree 設定](/zh-TW/settings#worktree-settings)。

281 

282<h3 id="grant-access-across-packages-or-repositories">

283 授予跨套件或儲存庫的存取權限

284</h3>

285 

286本部分適用於您從子目錄啟動 Claude 或任務跨越多個簽出時。如果您在單個大型樹中從儲存庫根目錄啟動,Claude 已經可以存取每個檔案,您可以跳過此部分。

287 

288當您從 `packages/api/` 啟動 Claude 時,它可以讀取和寫入該目錄內的檔案。如果任務需要跨套件進行變更,例如更新 `api` 和 `web` 都匯入的共享類型,您需要授予對同級目錄的存取權限。相同的機制授予對單獨簽出的儲存庫的存取權限。

289 

290`.claude/settings.json` 中的 `additionalDirectories` 設定給予 Claude 對工作目錄外目錄的存取權限。下面的範例授予對兩個同級套件的存取權限:

291 

292```json .claude/settings.json theme={null}

293{

294 "permissions": {

295 "additionalDirectories": [

296 "../shared",

297 "../web"

298 ]

299 }

300}

301```

302 

303相對路徑相對於您啟動 Claude 的目錄解析。使用此設定,Claude 可以在從 `packages/api/` 工作時讀取和編輯 `packages/shared/` 和 `packages/web/` 中的檔案。

304 

305您也可以在執行時不編輯設定而授予存取權限,方法是在啟動 Claude 時傳遞 `--add-dir`:

306 

307```bash theme={null}

308claude --add-dir ../shared

309```

310 

311無論您如何添加目錄,Claude 都可以讀取和編輯其中的檔案。該目錄的 CLAUDE.md、`.claude/rules/` 檔案和技能是否也載入取決於您如何添加它:

312 

313| 添加方式 | 載入 CLAUDE.md 和規則 | 載入技能 |

314| :---------------------------- | :--------------- | :--- |

315| `additionalDirectories` 設定 | 永不 | 永不 |

316| `--add-dir` 旗標或 `/add-dir` 命令 | 僅使用下面的環境變數 | 是 |

317 

318若要從使用 `--add-dir` 或 `/add-dir` 添加的目錄載入 CLAUDE.md 和規則檔案,請設定 `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` 環境變數:

319 

320```bash theme={null}

321CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared

322```

323 

324環境變數對 `additionalDirectories` 設定中列出的目錄無效。有關詳細資訊,請參閱[從其他目錄載入](/zh-TW/memory#load-from-additional-directories)。

325 

326對於此區域中的每個人都需要的同級目錄,請將 `additionalDirectories` 提交到 `.claude/settings.json`。對於個人選擇或一次性存取,請使用 `.claude/settings.local.json` 或在啟動時傳遞 `--add-dir`。

327 

328<h2 id="add-per-directory-skills">

329 添加按目錄技能

330</h2>

331 

332任何子目錄都可以定義[技能](/zh-TW/skills)範圍限於其自己的堆疊。技能在 Claude 確定其相關時按需載入,因此 API 特定的工具在前端工作期間不會消耗上下文。

333 

334技能位於目錄內的 `.claude/skills/` 下。將它們與該區域的程式碼一起提交,以便克隆儲存庫的任何人都能獲得它們。在 monorepo 中,這可以是每個套件一組技能。在大型單樹程式碼庫中,它是每個子系統一組,例如 `src/db/.claude/skills/`。

335 

336在子目錄內建立技能目錄:

337 

338```bash theme={null}

339mkdir -p packages/api/.claude/skills/api-testing

340```

341 

342然後在該目錄內寫入 `SKILL.md`,這裡是 `packages/api/.claude/skills/api-testing/SKILL.md`。此範例教導 Claude API 套件的測試模式:

343 

344```markdown packages/api/.claude/skills/api-testing/SKILL.md theme={null}

345---

346name: api-testing

347description: API 套件的測試模式。在 packages/api/ 中編寫或修改測試時使用。

348---

349 

350## 測試結構

351 

352測試在 `src/__tests__/` 中,鏡像 `src/` 目錄結構。

353每個路由檔案都有對應的 `.test.ts` 檔案。

354 

355## 執行測試

356 

357- 所有測試:`npm test`

358- 單個檔案:`npm test -- src/__tests__/routes/users.test.ts`

359- 監視模式:`npm test -- --watch`

360 

361## 測試實用程式

362 

363- `src/__tests__/helpers/db.ts`:提供 `setupTestDb()` 和 `teardownTestDb()` 用於資料庫測試

364- `src/__tests__/helpers/auth.ts`:提供 `createTestUser()` 和 `getAuthToken()` 用於已驗證的端點

365 

366## 模式

367 

368- 使用 `supertest` 進行 HTTP 斷言,而不是原始 fetch

369- 始終將資料庫測試包裝在回滾的交易中

370- 在 `src/__tests__/mocks/` 中模擬外部服務

371```

372 

373不同的子目錄以相同的方式保存不同的技能:`packages/web/.claude/skills/component-patterns/` 描述前端的元件約定,而不是測試。當 Claude 在 `packages/api/` 中的檔案上工作時,它載入 api-testing 技能。當它在 `packages/web/` 中工作時,它載入 component-patterns 代替。在另一個的任務期間,兩個目錄的技能都不會載入。

374 

375您也可以按檔案模式而不是按位置範圍技能。[`paths` frontmatter 欄位](/zh-TW/skills#frontmatter-reference)採用 glob 模式,Claude 僅在使用匹配檔案時自動載入技能。將此用於位於儲存庫根目錄的 `.claude/skills/` 中但僅適用於某些檔案(無論它們出現在何處)的技能,例如範圍限於 `**/migrations/**` 的資料庫遷移技能。

376 

377有關建立和組織技能的更多資訊,請參閱[技能](/zh-TW/skills)。

378 

379<h3 id="keep-skills-discoverable">

380 保持技能可發現

381</h3>

382 

383隨著技能分散在許多目錄中,Claude 選擇的清單可能會增長很大。Claude 通過讀取每個發現的技能的名稱和描述來選擇技能,只有選定技能的完整內容載入上下文。本部分涵蓋如何保持該清單較小並編寫在縮短時倖存的描述。

384 

385哪些技能在範圍內取決於您從何處啟動 Claude:

386 

387* **從子目錄(如 `packages/api/`)**:來自該目錄、每個父目錄直到儲存庫根目錄以及使用者和企業級別的技能

388* **從儲存庫根目錄**:來自 Claude 在工作階段期間接觸的每個子目錄的技能,可能累積到數百個

389* **在使用 [`--add-dir`](#grant-access-across-packages-or-repositories) 添加同級後**:該同級的技能也會載入。`additionalDirectories` 設定僅授予檔案存取權限,不載入技能

390 

391名稱始終載入,但[當有許多時描述會被縮短](/zh-TW/skills#skill-descriptions-are-cut-short),這可能會剝離 Claude 用來決定技能是否適用的關鍵字。保持描述簡短並以請求會包含的詞語開頭,例如「在 `packages/api/` 中編寫或修改測試」。

392 

393對於許多目錄共享的技能,例如 PR 約定或部署檢查清單,請將它們放在儲存庫根目錄的 `.claude/skills/` 中,以便從任何啟動目錄載入。當共享技能需要自己的版本歷史或必須跨儲存庫工作時,請改為將它們打包為[外掛](/zh-TW/plugins)。外掛技能使用 `plugin-name:skill-name` 命名空間,因此它們永遠不會與按目錄的技能衝突。平台團隊可以在一個地方對其進行版本化和更新。

394 

395若要找到哪些技能未被使用,請啟用 OpenTelemetry [日誌匯出器](/zh-TW/monitoring-usage)並設定 `OTEL_LOG_TOOL_DETAILS=1`,以便技能名稱逐字記錄而不是編輯。[`skill_activated` 事件](/zh-TW/monitoring-usage#skill-activated-event)在其 `skill.name` 屬性中記錄每次呼叫,`invocation_trigger` 記錄命令、Claude 或巢狀技能是否呼叫它,這告訴您要整合或停用什麼。

396 

397<h2 id="centralize-conventions-when-layering-stops-scaling">

398 當分層停止擴展時集中約定

399</h2>

400 

401隨著程式碼庫的增長,按目錄的 CLAUDE.md 檔案可能變得難以管理。約定漂移、檔案變得陳舊,沒有人擁有根目錄。解決這個問題通常落在維護儲存庫 Claude Code 設定的團隊身上,而不是在自己的區域中工作的每個開發人員。

402 

403將約定和參考內容從始終載入的 CLAUDE.md 移出到按需載入的機制中:

404 

405* [技能](/zh-TW/skills):Claude 僅在與任務相關時載入的參考資料

406* [外掛](/zh-TW/plugins):平台團隊集中擁有的技能、hooks 和命令的版本化捆綁

407* [MCP 伺服器](/zh-TW/mcp):如果您的組織已經在儲存庫上執行程式碼搜尋或 RAG 索引,請將其公開為 MCP 工具,以便 Claude 查詢它而不是直接讀取檔案

408 

409有關平台團隊如何集中強制執行這些的資訊,請參閱[伺服器管理或端點管理設定](/zh-TW/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings)。

410 

411<h3 id="recommend-the-right-plugin-at-session-start">

412 在工作階段啟動時推薦正確的外掛

413</h3>

414 

415一旦約定位於外掛中,在樹的陌生部分啟動 Claude 的隊友就沒有信號表明該區域的所有者維護哪個外掛。[`SessionStart` hook](/zh-TW/hooks#sessionstart) 可以彌補這一差距,因為 hook 列印到 stdout 的任何內容都會在第一個提示之前添加到 Claude 的上下文中。

416 

417例如,您可以編寫一個指令碼,從[hook 輸入](/zh-TW/hooks#common-input-fields)讀取啟動目錄,在提交到儲存庫的路徑到外掛對應中查詢它,並列印建議供 Claude 在其第一個回覆中中繼。請參閱[使用 hooks 自動化操作](/zh-TW/hooks-guide)來編寫和註冊 hook。

418 

419<h2 id="put-it-together">

420 將其整合在一起

421</h2>

422 

423下面的組合設定使用 monorepo 佈局。相同的檔案適用於大型單樹中的任何子目錄。專案設定只從您啟動 Claude 的目錄載入,因此每個子目錄的 `.claude/settings.json` 必須是自包含的,而不是分層在根檔案上。

424 

425該範例在 `.claude/settings.json` 中提交 `worktree`、`additionalDirectories` 和 `Read` 拒絕規則,以便 `packages/api/` 中的每個開發人員都獲得相同的同級存取、稀疏路徑和排除。下面的檔案是 `packages/api/` 的提交按區域設定:

426 

427```json packages/api/.claude/settings.json theme={null}

428{

429 "worktree": {

430 "sparsePaths": [

431 ".claude",

432 "packages/api",

433 "packages/shared"

434 ],

435 "symlinkDirectories": [

436 "node_modules"

437 ]

438 },

439 "permissions": {

440 "additionalDirectories": [

441 "../shared"

442 ],

443 "deny": [

444 "Read(./**/dist/**)",

445 "Read(./**/build/**)"

446 ]

447 }

448}

449```

450 

451因為此工作階段從 `packages/api/` 啟動,同級套件的 CLAUDE.md 檔案已經超出範圍,因此此處不需要 `claudeMdExcludes`。如果您也從根目錄啟動工作階段,請改為將其添加到儲存庫根目錄的 `.claude/settings.local.json`。

452 

453`additionalDirectories` 項目在您直接從 `packages/api/` 啟動 Claude 時適用。在從此工作階段建立的 worktree 內,工作目錄是 worktree 根目錄,因此此設定檔案不會載入。同級套件已經在 worktree 內可達,無需它,但拒絕規則需要在儲存庫根目錄的 `.claude/settings.json` 中複製一份,以便 worktree 工作階段選擇它們,如[worktree 設定注意](#check-out-only-the-directories-you-need)所述:

454 

455```json .claude/settings.json theme={null}

456{

457 "permissions": {

458 "deny": [

459 "Read(./**/dist/**)",

460 "Read(./**/build/**)"

461 ]

462 }

463}

464```

465 

466設定後,儲存庫具有此佈局:

467 

468```text theme={null}

469monorepo/

470 CLAUDE.md

471 .claude/settings.json # worktree 工作階段的拒絕規則

472 packages/

473 api/

474 CLAUDE.md

475 .claude/settings.json # worktree、additionalDirectories、拒絕規則

476 .claude/skills/api-testing/SKILL.md

477 web/

478 CLAUDE.md

479 .claude/skills/component-patterns/SKILL.md

480 shared/

481 CLAUDE.md

482```

483 

484使用此設定,從 `packages/api/` 啟動 Claude:

485 

486* 載入根 CLAUDE.md 和 `packages/api/CLAUDE.md`,跳過 `packages/web/CLAUDE.md`

487* 可以讀取和編輯 `packages/api/` 和 `packages/shared/` 中的檔案

488* 跳過 `packages/api/` 中 `dist/` 和 `build/` 下的建置輸出讀取

489* 有 api-testing 技能可按需使用

490* 建立包含 `.claude/`、`packages/api/`、`packages/shared/` 和根級檔案的 worktrees,並從根設定檔案在 worktree 中應用拒絕規則

491 

492<h2 id="scope-and-plan-changes-that-span-packages">

493 範圍和計劃跨套件的變更

494</h2>

495 

496上面的設定控制 Claude 看到的內容。當單個變更涉及多個套件時,例如更新共享類型以及使用它的每個呼叫位置,您如何範圍和排序任務也會影響結果。

497 

498兩種技術有助於保持跨套件變更的一致性:

499 

500* **在一個工作階段中給 Claude 整個變更**:將共享編輯及其呼叫位置一起交付可以保持每個編輯背後的決策一致,而不是按套件重新推導它們

501* **在編輯前將計劃保存到檔案**:[先計劃](/zh-TW/best-practices#explore-first-then-plan-then-code)並要求 Claude 將計劃寫入儲存庫中的 markdown 檔案。長跨套件工作階段在進行中[壓縮其上下文](/zh-TW/context-window#what-survives-compaction),保存的計劃在對話歷史可能不會的地方倖存

502 

503<h2 id="next-steps">

504 後續步驟

505</h2>

506 

507一旦此設定就位,您可以對其進行細化:

508 

509* 使用 [hooks](/zh-TW/hooks-guide) 在 Claude 編輯檔案後執行按目錄的 linters 或類型檢查器

510* 審查[有效管理成本](/zh-TW/costs)以瞭解程式碼庫大小如何影響 token 使用以及如何在更廣泛推出前設定支出限制

511* 在 Claude 部落格上閱讀[Claude Code 如何在大型程式碼庫中工作](https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start),瞭解組織推出模式和所有權模型,這些模型位於本頁面上的按儲存庫設定之上

llm-gateway.md +48 −16

Details

14* **審計日誌** - 追蹤所有模型交互以進行合規性檢查14* **審計日誌** - 追蹤所有模型交互以進行合規性檢查

15* **模型路由** - 無需更改代碼即可在提供商之間切換15* **模型路由** - 無需更改代碼即可在提供商之間切換

16 16 

17## Gateway 要求17<h2 id="gateway-requirements">

18 Gateway 要求

19</h2>

18 20 

19為了讓 LLM gateway 與 Claude Code 配合使用,它必須滿足以下要求:21為了讓 LLM gateway 與 Claude Code 配合使用,它必須滿足以下要求:

20 22 


51 53 

52Claude Code 還在系統提示前面添加了一個簡短的歸屬塊,其中包含客戶端版本和從對話派生的指紋。Anthropic API 在處理前會刪除此塊,因此不會影響第一方提示快取。如果您的 gateway 實現了自己的提示快取,其密鑰基於完整請求正文,請設置 [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/zh-TW/env-vars) 以省略它。54Claude Code 還在系統提示前面添加了一個簡短的歸屬塊,其中包含客戶端版本和從對話派生的指紋。Anthropic API 在處理前會刪除此塊,因此不會影響第一方提示快取。如果您的 gateway 實現了自己的提示快取,其密鑰基於完整請求正文,請設置 [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/zh-TW/env-vars) 以省略它。

53 55 

54## 配置56<h2 id="configuration">

57 配置

58</h2>

55 59 

56### 模型選擇60<h3 id="model-selection">

61 模型選擇

62</h3>

57 63 

58默認情況下,Claude Code 使用所選 API 格式的標準模型名稱。64默認情況下,Claude Code 使用所選 API 格式的標準模型名稱。

59 65 


65 71 

66如果您的 gateway 使用與發現篩選器不匹配的模型名稱,請使用 [模型配置](/zh-TW/model-config) 中記錄的環境變數手動添加它們。72如果您的 gateway 使用與發現篩選器不匹配的模型名稱,請使用 [模型配置](/zh-TW/model-config) 中記錄的環境變數手動添加它們。

67 73 

68## LiteLLM 配置74<h2 id="litellm-configuration">

75 LiteLLM 配置

76</h2>

69 77 

70<Warning>78<Warning>

71 LiteLLM PyPI 版本 1.82.7 和 1.82.8 被盜竊憑證的惡意軟體破壞。請勿安裝這些版本。如果您已經安裝了它們:79 LiteLLM PyPI 版本 1.82.7 和 1.82.8 被盜竊憑證的惡意軟體破壞。請勿安裝這些版本。如果您已經安裝了它們:


77 LiteLLM 是第三方代理服務。Anthropic 不認可、維護或審計 LiteLLM 的安全性或功能。本指南僅供參考,可能會過時。請自行決定是否使用。85 LiteLLM 是第三方代理服務。Anthropic 不認可、維護或審計 LiteLLM 的安全性或功能。本指南僅供參考,可能會過時。請自行決定是否使用。

78</Warning>86</Warning>

79 87 

80### 先決條件88<h3 id="prerequisites">

89 先決條件

90</h3>

81 91 

82* Claude Code 已更新至最新版本92* Claude Code 已更新至最新版本

83* LiteLLM Proxy Server 已部署且可訪問93* LiteLLM Proxy Server 已部署且可訪問

84* 通過您選擇的提供商訪問 Claude 模型94* 通過您選擇的提供商訪問 Claude 模型

85 95 

86### 基本 LiteLLM 設置96<h3 id="basic-litellm-setup">

97 基本 LiteLLM 設置

98</h3>

87 99 

88**配置 Claude Code**:100**配置 Claude Code**:

89 101 

90#### 身份驗證方法102<h4 id="authentication-methods">

103 身份驗證方法

104</h4>

91 105 

92##### 靜態 API 密鑰106<h5 id="static-api-key">

107 靜態 API 密鑰

108</h5>

93 109 

94使用固定 API 密鑰的最簡單方法:110使用固定 API 密鑰的最簡單方法:

95 111 


107 123 

108此值將作為 `Authorization` 標頭發送。124此值將作為 `Authorization` 標頭發送。

109 125 

110##### 使用幫助程序的動態 API 密鑰126<h5 id="dynamic-api-key-with-helper">

127 使用幫助程序的動態 API 密鑰

128</h5>

111 129 

112用於輪換密鑰或按用戶身份驗證:130用於輪換密鑰或按用戶身份驗證:

113 131 


144 162 

145此值將作為 `Authorization` 和 `X-Api-Key` 標頭發送。`apiKeyHelper` 的優先級低於 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY`。163此值將作為 `Authorization` 和 `X-Api-Key` 標頭發送。`apiKeyHelper` 的優先級低於 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY`。

146 164 

147#### 統一端點(推薦)165<h4 id="unified-endpoint-recommended">

166 統一端點(推薦)

167</h4>

148 168 

149使用 LiteLLM 的 [Anthropic 格式端點](https://docs.litellm.ai/docs/anthropic_unified):169使用 LiteLLM 的 [Anthropic 格式端點](https://docs.litellm.ai/docs/anthropic_unified):

150 170 


158* 故障轉移178* 故障轉移

159* 對成本追蹤和最終用戶追蹤的一致支持179* 對成本追蹤和最終用戶追蹤的一致支持

160 180 

161#### 提供商特定的傳遞端點(替代方案)181<h4 id="provider-specific-pass-through-endpoints-alternative">

182 提供商特定的傳遞端點(替代方案)

183</h4>

162 184 

163##### 通過 LiteLLM 的 Claude API185<h5 id="claude-api-through-litellm">

186 通過 LiteLLM 的 Claude API

187</h5>

164 188 

165使用 [傳遞端點](https://docs.litellm.ai/docs/pass_through/anthropic_completion):189使用 [傳遞端點](https://docs.litellm.ai/docs/pass_through/anthropic_completion):

166 190 


168export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic192export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

169```193```

170 194 

171##### 通過 LiteLLM 的 Amazon Bedrock195<h5 id="amazon-bedrock-through-litellm">

196 通過 LiteLLM 的 Amazon Bedrock

197</h5>

172 198 

173使用 [傳遞端點](https://docs.litellm.ai/docs/pass_through/bedrock):199使用 [傳遞端點](https://docs.litellm.ai/docs/pass_through/bedrock):

174 200 


178export CLAUDE_CODE_USE_BEDROCK=1204export CLAUDE_CODE_USE_BEDROCK=1

179```205```

180 206 

181##### 通過 LiteLLM 的 Google Vertex AI207<h5 id="google-vertex-ai-through-litellm">

208 通過 LiteLLM 的 Google Vertex AI

209</h5>

182 210 

183使用 [傳遞端點](https://docs.litellm.ai/docs/pass_through/vertex_ai):211使用 [傳遞端點](https://docs.litellm.ai/docs/pass_through/vertex_ai):

184 212 


190export CLOUD_ML_REGION=us-east5218export CLOUD_ML_REGION=us-east5

191```219```

192 220 

193##### 通過網關的 AWS 上的 Claude Platform221<h5 id="claude-platform-on-aws-through-a-gateway">

222 通過網關的 AWS 上的 Claude Platform

223</h5>

194 224 

195路由到轉發至 [AWS 上的 Claude Platform](/zh-TW/claude-platform-on-aws) 端點的網關:225路由到轉發至 [AWS 上的 Claude Platform](/zh-TW/claude-platform-on-aws) 端點的網關:

196 226 


203 233 

204如需更詳細的信息,請參閱 [LiteLLM 文檔](https://docs.litellm.ai/)。234如需更詳細的信息,請參閱 [LiteLLM 文檔](https://docs.litellm.ai/)。

205 235 

206## 其他資源236<h2 id="additional-resources">

237 其他資源

238</h2>

207 239 

208* [LiteLLM 文檔](https://docs.litellm.ai/)240* [LiteLLM 文檔](https://docs.litellm.ai/)

209* [Claude Code 設置](/zh-TW/settings)241* [Claude Code 設置](/zh-TW/settings)

managed-mcp.md +379 −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# 控制組織的 MCP 伺服器存取

6 

7> 使用受管配置檔案、允許清單和拒絕清單限制使用者可以新增或連接的 MCP 伺服器。

8 

9根據預設,任何執行 Claude Code 的人都可以連接他們選擇的任何 [MCP 伺服器](/zh-TW/mcp)。Anthropic 在將連接器新增到 [Anthropic Directory](https://claude.ai/directory) 之前會根據其 [列表標準](https://claude.com/docs/connectors/building/review-criteria) 審查連接器,但不會對任何 MCP 伺服器進行安全審計或管理。作為管理員,您可以限制在組織中執行的伺服器,從部署固定的已批准集合到完全停用 MCP。

10 

11本頁涵蓋如何:

12 

13* [選擇符合您需要的控制級別的模式](#choose-a-pattern)

14* [使用 `managed-mcp.json` 部署固定伺服器集合](#exclusive-control-with-managed-mcp-json),包括如何 [完全停用 MCP](#disable-mcp-entirely)

15* [使用允許清單和拒絕清單控制伺服器](#policy-based-control-with-allowlists-and-denylists)

16* [告訴使用者當限制阻止伺服器時會發生什麼](#how-restrictions-appear-to-users)

17* [監控您的組織實際使用的伺服器](#monitor-mcp-usage)

18 

19<Note>

20 [安全](/zh-TW/security) 頁面涵蓋 MCP 威脅模型以及如何在批准伺服器之前評估它。[決定要強制執行的內容](/zh-TW/admin-setup#decide-what-to-enforce) 涵蓋 MCP 限制以及其他管理控制。

21</Note>

22 

23<h2 id="choose-a-pattern">

24 選擇模式

25</h2>

26 

27Claude Code 支援一系列限制級別。每個模式使用以下機制中的一個或兩個:`managed-mcp.json` 用於部署固定集合,`allowedMcpServers`/`deniedMcpServers` 用於篩選使用者配置的內容。

28 

29| 模式 | 功能 | 配置 |

30| :----------- | :------------------------------------ | :-------------------------------------------------------------------------------------------- |

31| **停用 MCP** | 任何地方都不載入伺服器 | `managed-mcp.json` 包含空伺服器對應 |

32| **固定部署** | 每個使用者獲得相同的伺服器,無法新增其他伺服器 | `managed-mcp.json` 包含您想要的伺服器 |

33| **已批准目錄** | 發佈已批准伺服器的清單;使用者新增他們想要的伺服器,其他所有伺服器都被阻止 | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |

34| **僅外掛程式伺服器** | 伺服器只能來自外掛程式;使用者無法新增自己的伺服器 | [`strictPluginOnlyCustomization`](/zh-TW/settings#strictpluginonlycustomization) 包含清單中的 `mcp` |

35| **軟允許清單** | 強制執行允許清單,使用者可以在自己的設定中擴展 | `allowedMcpServers` 不含 `allowManagedMcpServersOnly` |

36| **僅拒絕清單** | 阻止已知的不良伺服器,允許其他所有伺服器 | `deniedMcpServers` |

37| **無限制** | 使用者新增任何內容 | 不部署任何受管 MCP 配置 |

38 

39<Note>

40 Claude Code 沒有內建的 MCP 伺服器登錄表,使用者可以從中瀏覽和安裝。對於已批准目錄模式,在使用者會找到的地方(例如內部 wiki)共享已批准清單及其 `claude mcp add` 命令,或通過 [受管外掛程式市場](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) 將伺服器作為外掛程式分發,以便使用者可以從 `/plugin` 瀏覽和安裝它們。

41</Note>

42 

43<h2 id="exclusive-control-with-managed-mcp-json">

44 使用 managed-mcp.json 進行獨佔控制

45</h2>

46 

47如果您部署 `managed-mcp.json` 檔案,Claude Code 只會載入該檔案定義的伺服器。使用者無法新增、修改或使用任何其他 MCP 伺服器,包括外掛程式提供的伺服器。該檔案也會抑制 claude.ai 連接器,除非您 [允許它們與受管集合並存](#allow-claude-ai-connectors-alongside-the-managed-set)。

48 

49另外兩個設定可以進一步篩選受管集合:

50 

51* `allowedMcpServers` 和 `deniedMcpServers` 也適用於受管伺服器,因此不符合它們的受管伺服器將不會載入。

52* 使用者自己的 `deniedMcpServers` 從他們的設定中合併,因此使用者可以為自己阻止受管伺服器。

53 

54有關檢查的完整順序,請參閱 [伺服器如何被評估](#how-a-server-is-evaluated)。

55 

56`managed-mcp.json` 是一個獨立檔案,因此無法通過 [伺服器受管設定](/zh-TW/server-managed-settings) 傳遞。任何可以寫入具有管理員權限的系統路徑的程序都可以部署它。在大規模部署中,通常通過裝置管理工具進行,例如 macOS 上的 Jamf 或配置檔案、Windows 上的群組原則或 Intune,或 Linux 上您選擇的艦隊管理。Claude Code 在以下路徑之一查找該檔案:

57 

58| 平台 | 路徑 |

59| :---------- | :--------------------------------------------------------- |

60| macOS | `/Library/Application Support/ClaudeCode/managed-mcp.json` |

61| Linux 和 WSL | `/etc/claude-code/managed-mcp.json` |

62| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |

63 

64該檔案使用與專案 [`.mcp.json`](/zh-TW/mcp#project-scope) 檔案相同的格式:

65 

66```json theme={null}

67{

68 "mcpServers": {

69 "github": {

70 "type": "http",

71 "url": "https://api.githubcopilot.com/mcp/"

72 },

73 "sentry": {

74 "type": "http",

75 "url": "https://mcp.sentry.dev/mcp"

76 },

77 "company-internal": {

78 "type": "stdio",

79 "command": "/usr/local/bin/company-mcp-server",

80 "args": ["--config", "/etc/company/mcp-config.json"],

81 "env": {

82 "COMPANY_API_URL": "https://internal.example.com"

83 }

84 }

85 }

86}

87```

88 

89<h3 id="authenticate-with-per-user-credentials">

90 使用每個使用者的認證進行身份驗證

91</h3>

92 

93機器上的任何使用者都可以讀取此檔案,因此不要在 `env` 區塊中儲存 API 金鑰或其他認證。改用以下其中一種方式傳遞每個使用者的認證:

94 

95* [`${VAR}` 擴展](/zh-TW/mcp#environment-variable-expansion-in-mcp-json) 從每個使用者的環境中讀取機密。

96* [OAuth 或每個使用者的標頭](/zh-TW/mcp#authenticate-with-remote-mcp-servers) 以便每個使用者以自己的身份進行身份驗證。

97* [`headersHelper`](/zh-TW/mcp#use-dynamic-headers-for-custom-authentication) 在連接時生成認證。

98 

99<h3 id="validate-the-configuration">

100 驗證配置

101</h3>

102 

103要確認檔案有效,請在受管機器上執行兩項檢查:

104 

1051. `claude mcp list` 只顯示 `managed-mcp.json` 中的伺服器。如果使用者自己的伺服器仍然出現,則檔案未被讀取;檢查路徑和權限。

1062. `claude mcp add --transport http test https://example.com/mcp` 失敗,並顯示 `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers`。URL 不需要是真實伺服器,因為原則檢查在聯繫任何內容之前拒絕該命令。

107 

108<h3 id="disable-mcp-entirely">

109 完全停用 MCP

110</h3>

111 

112部署包含空伺服器對應的 `managed-mcp.json` 以阻止每個 MCP 伺服器:

113 

114```json theme={null}

115{

116 "mcpServers": {}

117}

118```

119 

120使用者在 `/mcp` 中看不到任何 MCP 伺服器,`claude mcp add` 失敗,並顯示上述企業原則錯誤。使用者之前配置的伺服器在下次啟動會話時停止載入,沒有警告說明原則是原因。

121 

122<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">

123 允許 claude.ai 連接器與受管集合並存

124</h3>

125 

126部署 `managed-mcp.json` 預設會抑制 [claude.ai 連接器](/zh-TW/mcp#use-mcp-servers-from-claude-ai),包括管理員在 claude.ai 管理控制台中為組織配置的連接器。要將這些連接器與 `managed-mcp.json` 中的伺服器一起載入,請在 [受管設定來源](/zh-TW/admin-setup#decide-how-settings-reach-devices) 中設定 `"allowAllClaudeAiMcps": true`。需要 Claude Code v2.1.149 或更新版本。

127 

128啟用此設定後,Claude Code 會載入與未部署 `managed-mcp.json` 時相同的 claude.ai 連接器。[允許清單和拒絕清單](#policy-based-control-with-allowlists-and-denylists) 仍然適用於這些連接器,因此您可以使用 `deniedMcpServers` 阻止特定連接器。此設定僅影響 claude.ai 連接器;外掛程式提供的伺服器保持被抑制。

129 

130Claude Code 只從管理員控制的原則層級讀取此設定:伺服器受管設定、MDM 部署的 plist 或 HKLM 登錄機碼,或系統 `managed-settings.json` 檔案。將其放在使用者或專案設定中無效,因此使用者無法重新啟用獨佔控制所抑制的連接器。

131 

132<h2 id="policy-based-control-with-allowlists-and-denylists">

133 使用允許清單和拒絕清單進行基於原則的控制

134</h2>

135 

136允許清單和拒絕清單篩選允許載入的已配置伺服器。它們不是登錄表:伺服器仍然必須由使用者、外掛程式或 `managed-mcp.json` 新增,然後允許清單或拒絕清單才會應用於它。要將伺服器部署給使用者,請使用 [`managed-mcp.json`](#exclusive-control-with-managed-mcp-json)。

137 

138要使允許清單具有權威性,請在 [受管設定來源](/zh-TW/admin-setup#decide-how-settings-reach-devices)(例如伺服器受管設定或已部署的 `managed-settings.json` 檔案)中一起設定 `allowedMcpServers` 和 `allowManagedMcpServersOnly: true`。[將允許清單限制為僅受管設定](#restrict-the-allowlist-to-managed-settings-only) 顯示配置。沒有 `allowManagedMcpServersOnly`,來自每個設定來源的允許清單會合併,包括使用者自己的 `~/.claude/settings.json`,因此使用者可以擴展您的允許清單允許的內容。拒絕清單無論如何都會從每個來源合併。

139 

140<Note>

141 `allowManagedMcpServersOnly` 與 `allowManagedPermissionRulesOnly` 分開,後者鎖定 [權限規則](/zh-TW/permissions#managed-settings) 只。設定該標誌不會強制執行 MCP 允許清單。

142</Note>

143 

144<h3 id="match-servers-by-url-command-or-name">

145 按 URL、命令或名稱匹配伺服器

146</h3>

147 

148`allowedMcpServers` 和 `deniedMcpServers` 是條目清單。每個條目是一個物件,具有單一鍵,用於按 URL、命令或名稱識別伺服器:

149 

150| 鍵 | 匹配 | 用於 |

151| :-------------- | :----------------------- | :------------- |

152| `serverUrl` | 遠端伺服器 URL,精確或帶有 `*` 萬用字元 | HTTP 和 SSE 伺服器 |

153| `serverCommand` | 啟動 stdio 伺服器的確切命令和引數 | Stdio 伺服器 |

154| `serverName` | 使用者指派的標籤。僅精確匹配;萬用字元不展開 | 任一類型,但請參閱下面的警告 |

155 

156不設定 `allowedMcpServers` 與將其設定為空陣列不同:

157 

158| 設定 | 未設定(預設) | 空陣列 `[]` | 已填入 |

159| :------------------ | :------- | :------- | :-------- |

160| `allowedMcpServers` | 允許所有伺服器 | 不允許任何伺服器 | 僅允許匹配的伺服器 |

161| `deniedMcpServers` | 不阻止任何伺服器 | 不阻止任何伺服器 | 阻止匹配的伺服器 |

162 

163<Warning>

164 僅使用 `serverName` 條目的允許清單不是安全控制。名稱是使用者在執行 `claude mcp add` 或編輯配置檔案時指派的標籤,而不是基礎伺服器,因此使用者可以呼叫任何伺服器 `github`。要強制執行實際執行的伺服器,請新增 `serverCommand` 或 `serverUrl` 條目。

165</Warning>

166 

167<h3 id="how-a-server-is-evaluated">

168 伺服器如何被評估

169</h3>

170 

171在載入伺服器之前,包括來自 `managed-mcp.json` 的伺服器,Claude Code 按順序執行三項檢查:

172 

1731. **合併清單。** 來自每個設定來源的允許清單和拒絕清單條目合併為一個允許清單和一個拒絕清單。當 `allowManagedMcpServersOnly` 為 `true` 時,僅保留受管允許清單;拒絕清單始終從每個來源合併。

1742. **檢查拒絕清單。** 與任何拒絕清單條目匹配的伺服器(按 URL、命令或名稱)被阻止。沒有任何內容會覆蓋拒絕清單匹配。

1753. **檢查允許清單。** 如果 `allowedMcpServers` 未在任何地方設定,通過拒絕清單的每個伺服器都會載入。如果已設定,伺服器必須匹配的內容取決於其類型,如下表所示。

176 

177| 伺服器類型 | 在匹配時允許 |

178| :------------- | :------------------------------------------------------------------- |

179| 遠端(HTTP 或 SSE) | 一個 `serverUrl` 條目。`serverName` 匹配僅在允許清單不包含 `serverUrl` 條目時計數 |

180| Stdio | 一個 `serverCommand` 條目。`serverName` 匹配僅在允許清單不包含 `serverCommand` 條目時計數 |

181 

182這些檢查中適用兩個匹配規則:

183 

184* **命令精確匹配。** 每個引數,按順序。`["npx", "-y", "server"]` 不匹配 `["npx", "server"]` 或 `["npx", "-y", "server", "--flag"]`。

185* **URL 支援 `*` 萬用字元** 在模式中的任何地方,包括方案。主機名匹配不區分大小寫,忽略尾部 FQDN 點,因此 `https://Mcp.Example.com/*` 匹配 `https://mcp.example.com/api`。路徑保持區分大小寫。

186 

187| 模式 | 允許 |

188| :-------------------------- | :------------------------- |

189| `https://mcp.example.com/*` | 特定網域上的所有路徑 |

190| `https://mcp.example.com` | 也允許該網域上的所有路徑。沒有路徑的模式匹配任何路徑 |

191| `https://*.example.com/*` | `example.com` 的任何子網域 |

192| `http://localhost:*/*` | localhost 上的任何連接埠 |

193| `*://mcp.example.com/*` | 任何方案到特定網域 |

194 

195<h3 id="example-configuration">

196 範例配置

197</h3>

198 

199以下配置設定了硬允許清單和拒絕清單。突出顯示的行改變了清單其餘部分的評估方式,區塊後的標註解釋了每一行:

200 

201```json {3,5,11} theme={null}

202{

203 "allowedMcpServers": [

204 { "serverUrl": "https://api.githubcopilot.com/*" },

205 { "serverUrl": "https://mcp.sentry.dev/*" },

206 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "."] },

207 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

208 { "serverUrl": "https://mcp.example.com/*" },

209 { "serverUrl": "https://*.internal.example.com/*" }

210 ],

211 "deniedMcpServers": [

212 { "serverName": "dangerous-server" },

213 { "serverCommand": ["npx", "-y", "unapproved-package"] },

214 { "serverUrl": "https://*.untrusted.example.com/*" }

215 ]

216}

217```

218 

219* **第 3 行**:第一個 `serverUrl` 條目。一旦存在,每個遠端伺服器必須匹配 URL 模式,因此使用者無法通過給它一個允許的名稱來獲得未列出的遠端伺服器。

220* **第 5 行**:第一個 `serverCommand` 條目。對 stdio 伺服器有相同的效果,因此每個本地伺服器必須精確匹配列出的命令。

221* **第 11 行**:拒絕清單中的 `serverName` 條目。拒絕清單條目始終適用,因此任何名為 `dangerous-server` 的伺服器都被阻止,無論其 URL 或命令如何。

222 

223此允許清單中的 `serverName` 條目永遠不會匹配任何內容,因為兩種傳輸類型都已有更嚴格的條目。

224 

225下面的手風琴演示了伺服器如何針對其他允許清單和拒絕清單組合進行評估。

226 

227<Accordion title="僅 URL 允許清單">

228 ```json theme={null}

229 {

230 "allowedMcpServers": [

231 { "serverUrl": "https://mcp.example.com/*" },

232 { "serverUrl": "https://*.internal.example.com/*" }

233 ]

234 }

235 ```

236 

237 | 伺服器 | 結果 |

238 | :------------------------------------------------- | :-------------- |

239 | `https://mcp.example.com/api` 上的 HTTP 伺服器 | 允許:匹配 URL 模式 |

240 | `https://api.internal.example.com/mcp` 上的 HTTP 伺服器 | 允許:匹配萬用字元子網域 |

241 | `https://external.example.com/mcp` 上的 HTTP 伺服器 | 阻止:不匹配任何 URL 模式 |

242 | 具有任何命令的 Stdio 伺服器 | 阻止:沒有名稱或命令條目可匹配 |

243</Accordion>

244 

245<Accordion title="僅命令允許清單">

246 ```json theme={null}

247 {

248 "allowedMcpServers": [

249 { "serverCommand": ["npx", "-y", "approved-package"] }

250 ]

251 }

252 ```

253 

254 | 伺服器 | 結果 |

255 | :------------------------------------------------- | :----------- |

256 | 具有 `["npx", "-y", "approved-package"]` 的 Stdio 伺服器 | 允許:匹配命令 |

257 | 具有 `["node", "server.js"]` 的 Stdio 伺服器 | 阻止:不匹配命令 |

258 | 名為 `my-api` 的 HTTP 伺服器 | 阻止:沒有名稱條目可匹配 |

259</Accordion>

260 

261<Accordion title="混合名稱和命令允許清單">

262 ```json theme={null}

263 {

264 "allowedMcpServers": [

265 { "serverName": "github" },

266 { "serverCommand": ["npx", "-y", "approved-package"] }

267 ]

268 }

269 ```

270 

271 | 伺服器 | 結果 |

272 | :------------------------------------------------------------------ | :------------------------- |

273 | 名為 `local-tool` 且具有 `["npx", "-y", "approved-package"]` 的 Stdio 伺服器 | 允許:匹配命令 |

274 | 名為 `local-tool` 且具有 `["node", "server.js"]` 的 Stdio 伺服器 | 阻止:命令條目存在但不匹配 |

275 | 名為 `github` 且具有 `["node", "server.js"]` 的 Stdio 伺服器 | 阻止:stdio 伺服器在命令條目存在時必須匹配命令 |

276 | 名為 `github` 的 HTTP 伺服器 | 允許:匹配名稱 |

277 | 名為 `other-api` 的 HTTP 伺服器 | 阻止:名稱不匹配 |

278</Accordion>

279 

280<Accordion title="僅名稱允許清單">

281 ```json theme={null}

282 {

283 "allowedMcpServers": [

284 { "serverName": "github" },

285 { "serverName": "internal-tool" }

286 ]

287 }

288 ```

289 

290 | 伺服器 | 結果 |

291 | :------------------------------------ | :-------- |

292 | 名為 `github` 且具有任何命令的 Stdio 伺服器 | 允許:沒有命令限制 |

293 | 名為 `internal-tool` 且具有任何命令的 Stdio 伺服器 | 允許:沒有命令限制 |

294 | 名為 `github` 的 HTTP 伺服器 | 允許:匹配名稱 |

295 | 任何名為 `other` 的伺服器 | 阻止:名稱不匹配 |

296</Accordion>

297 

298<Accordion title="具有拒絕清單覆蓋的允許清單">

299 ```json theme={null}

300 {

301 "allowedMcpServers": [

302 { "serverUrl": "https://*.example.com/*" }

303 ],

304 "deniedMcpServers": [

305 { "serverUrl": "https://staging.example.com/*" }

306 ]

307 }

308 ```

309 

310 | 伺服器 | 結果 |

311 | :-------------------------------------------- | :----------------------- |

312 | `https://mcp.example.com/api` 上的 HTTP 伺服器 | 允許:匹配允許清單 URL 模式,無拒絕清單匹配 |

313 | `https://staging.example.com/api` 上的 HTTP 伺服器 | 阻止:匹配兩者,但拒絕清單優先 |

314 | `https://other.com/mcp` 上的 HTTP 伺服器 | 阻止:不匹配允許清單 |

315</Accordion>

316 

317<h3 id="restrict-the-allowlist-to-managed-settings-only">

318 將允許清單限制為僅受管設定

319</h3>

320 

321要使受管允許清單成為唯一適用的清單,請在受管設定檔案中設定 `allowManagedMcpServersOnly`:

322 

323```json theme={null}

324{

325 "allowManagedMcpServersOnly": true,

326 "allowedMcpServers": [

327 { "serverUrl": "https://api.githubcopilot.com/*" },

328 { "serverUrl": "https://*.internal.example.com/*" }

329 ]

330}

331```

332 

333當 `allowManagedMcpServersOnly` 為 `true` 時,來自使用者、專案和本地設定的允許清單被忽略。拒絕清單仍然從所有來源合併,因此使用者始終可以為自己阻止伺服器。

334 

335<h2 id="how-restrictions-appear-to-users">

336 限制如何向使用者顯示

337</h2>

338 

339當限制阻止伺服器時,使用者要麼看到來自 `claude mcp add` 的錯誤,要麼伺服器無聲地停止載入。使用此表格識別這些報告,並在推出變更之前告訴使用者會發生什麼:

340 

341| 限制 | 使用者看到的內容 |

342| :------------------------------------------- | :--------------------------------------------------------------------------------------------------------- |

343| `managed-mcp.json` 存在且使用者執行 `claude mcp add` | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |

344| 伺服器在拒絕清單上且使用者執行 `claude mcp add` | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |

345| 伺服器不在允許清單上且使用者執行 `claude mcp add` | `Cannot add MCP server "<name>": not allowed by enterprise policy` |

346| 之前配置的伺服器現在被原則阻止 | 伺服器無聲地從 `/mcp` 和 `claude mcp list` 消失,沒有警告 |

347 

348在最後一種情況下,使用者沒有收到原則是其伺服器消失原因的信號,因此在推出新限制時告訴受影響的使用者哪些伺服器被阻止。

349 

350<h2 id="monitor-mcp-usage">

351 監控 MCP 使用

352</h2>

353 

354當 [OpenTelemetry 匯出](/zh-TW/monitoring-usage) 配置時,Claude Code 可以記錄使用者呼叫的 MCP 伺服器和工具。設定 `OTEL_LOG_TOOL_DETAILS=1` 以在工具事件中包含 MCP 伺服器和工具名稱,然後在您的收集器中聚合它們以查看您的使用者實際連接到的伺服器。請參閱 [監控](/zh-TW/monitoring-usage) 以設定匯出器和完整事件架構。

355 

356<h2 id="configuration-summary">

357 配置摘要

358</h2>

359 

360本頁涵蓋的每個檔案和設定、它控制的內容以及如何傳遞它:

361 

362| 表面 | 控制的內容 | 位置 | 傳遞方式 |

363| :--------------------------- | :---------------------------------------------- | :--------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |

364| `managed-mcp.json` | 固定伺服器集合、獨佔控制 | 系統路徑:`/Library/Application Support/ClaudeCode/`、`/etc/claude-code/` 或 `C:\Program Files\ClaudeCode\` | MDM、GPO、艦隊管理或任何具有管理員權限的程序。無法通過伺服器受管設定設定 |

365| `allowedMcpServers` | 允許的伺服器允許清單 | 任何 [設定檔案](/zh-TW/settings#settings-files);來自每個來源的條目合併,除非設定了 `allowManagedMcpServersOnly` | 為了強制執行,[受管設定來源](/zh-TW/admin-setup#decide-how-settings-reach-devices):伺服器受管設定、`managed-settings.json`、MDM 設定檔或登錄 |

366| `deniedMcpServers` | 被阻止的伺服器拒絕清單 | 任何設定檔案;來自每個來源的條目合併 | 與 `allowedMcpServers` 相同 |

367| `allowManagedMcpServersOnly` | 將允許清單鎖定為僅受管來源 | 僅受管設定來源;該設定在其他地方無效 | 與 `allowedMcpServers` 相同 |

368| `allowAllClaudeAiMcps` | 在 `managed-mcp.json` 旁邊載入 claude.ai 連接器,而不是抑制它們 | 僅受管設定來源;該設定在其他地方無效 | 與 `allowedMcpServers` 相同 |

369 

370<h2 id="related-resources">

371 相關資源

372</h2>

373 

374* [決定要強制執行的內容](/zh-TW/admin-setup#decide-what-to-enforce):MCP 限制以及權限規則、沙箱和其他管理控制

375* [通過 MCP 將 Claude Code 連接到工具](/zh-TW/mcp):完整的 MCP 參考,包括傳輸、範圍和身份驗證

376* [設定](/zh-TW/settings):設定層次結構以及受管設定如何優先

377* [伺服器受管設定](/zh-TW/server-managed-settings):從 Claude.ai 管理控制台傳遞 `allowedMcpServers` 和 `deniedMcpServers`

378* [安全](/zh-TW/security):這些控制防禦的威脅模型

379* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide):SSO、SCIM、座位管理和推出劇本

mcp.md +33 −233

Details

10 10 

11當您發現自己從另一個工具(例如問題追蹤器或監控儀表板)複製資料到聊天中時,請連接一個 server。連接後,Claude 可以直接讀取和操作該系統,而不是根據您貼上的內容進行工作。11當您發現自己從另一個工具(例如問題追蹤器或監控儀表板)複製資料到聊天中時,請連接一個 server。連接後,Claude 可以直接讀取和操作該系統,而不是根據您貼上的內容進行工作。

12 12 

13如果您是第一次連接 server,請從 [MCP 快速入門](/zh-TW/mcp-quickstart) 開始,以取得逐步說明。本頁面是完整參考。

14 

13## 使用 MCP 可以做什麼15## 使用 MCP 可以做什麼

14 16 

15連接 MCP servers 後,您可以要求 Claude Code:17連接 MCP servers 後,您可以要求 Claude Code:


41 /plugin install mcp-server-dev@claude-plugins-official43 /plugin install mcp-server-dev@claude-plugins-official

42 ```44 ```

43 45 

44 然後執行 `/reload-plugins` 以在目前工作階段中啟用它。46 如果 Claude Code 報告找不到 marketplace,請先執行 `/plugin marketplace add anthropics/claude-plugins-official`,然後重試安裝。安裝完成後,執行 `/reload-plugins` 以在目前工作階段中啟用它。

45 </Step>47 </Step>

46 48 

47 <Step title="執行建立 skill">49 <Step title="執行建立 skill">


55 57 

56## 安裝 MCP servers58## 安裝 MCP servers

57 59 

58MCP servers 可以根據您的需求以三種不同的方式進行配置60MCP servers 可以根據您的需求以多種方式進行配置

59 61 

60### 選項 1:新增遠端 HTTP server62### 選項 1:新增遠端 HTTP server

61 63 


123 這可以防止 Claude 的旗標與 server 旗標之間的衝突。125 這可以防止 Claude 的旗標與 server 旗標之間的衝突。

124</Note>126</Note>

125 127 

128### 選項 4:新增遠端 WebSocket server

129 

130WebSocket servers 保持持久的雙向連接,適合遠端 MCP servers 主動向 Claude 推送事件。當您的 server 只回應請求時,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 都不支援。

131 

132在 `.mcp.json` 中或使用 `claude mcp add-json` 配置 WebSocket servers:

133 

134```bash theme={null}

135claude mcp add-json events-server \

136 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

137```

138 

139`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。驗證僅限標頭,因此在 `headers` 中傳遞靜態 token,或在連接時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 生成一個。`claude mcp add --transport` 旗標不接受 `ws`。

140 

126### 管理您的 servers141### 管理您的 servers

127 142 

128配置後,您可以使用這些命令管理您的 MCP servers:143配置後,您可以使用這些命令管理您的 MCP servers:


141/mcp156/mcp

142```157```

143 158 

159來自 `.mcp.json` 的專案範圍 servers 等待您的批准時,會在 `claude mcp list` 中顯示為 `⏸ Pending approval`。執行 `claude` 互動式命令以檢查和批准它們。`claude mcp get <name>` 將待處理的 servers 顯示為 `⏸ Pending approval`,將被拒絕的 servers 顯示為 `✗ Rejected`。

160 

144`/mcp` 面板會在每個已連接的 server 旁邊顯示工具計數,並標記宣告工具功能但未公開任何工具的 servers。161`/mcp` 面板會在每個已連接的 server 旁邊顯示工具計數,並標記宣告工具功能但未公開任何工具的 servers。

145 162 

146如果您的請求需要來自仍在背景連接的 server 的工具,Claude 會在繼續之前等待該 server。啟用 [tool search](#scale-with-mcp-tool-search)(預設啟用)後,等待會在 `ToolSearch` 呼叫內進行。在沒有工具搜尋的配置中,例如 Vertex AI、自訂 `ANTHROPIC_BASE_URL` 或 `ENABLE_TOOL_SEARCH=false`,Claude 會改用 `WaitForMcpServers` 工具。163如果您的請求需要來自仍在背景連接的 server 的工具,Claude 會在繼續之前等待該 server。啟用 [tool search](#scale-with-mcp-tool-search)(預設啟用)後,等待會在 `ToolSearch` 呼叫內進行。在沒有工具搜尋的配置中,例如 Vertex AI、自訂 `ANTHROPIC_BASE_URL` 或 `ENABLE_TOOL_SEARCH=false`,Claude 會改用 `WaitForMcpServers` 工具。


170 * `user`:在所有專案中對您可用 (在較舊版本中稱為 `global`)187 * `user`:在所有專案中對您可用 (在較舊版本中稱為 `global`)

171 * 使用 `--env` 旗標設定環境變數 (例如,`--env KEY=value`)188 * 使用 `--env` 旗標設定環境變數 (例如,`--env KEY=value`)

172 * 使用 MCP\_TIMEOUT 環境變數配置 MCP server 啟動逾時 (例如,`MCP_TIMEOUT=10000 claude` 設定 10 秒逾時)189 * 使用 MCP\_TIMEOUT 環境變數配置 MCP server 啟動逾時 (例如,`MCP_TIMEOUT=10000 claude` 設定 10 秒逾時)

190 * 透過在該 server 的 `.mcp.json` 項目中新增 `timeout` 欄位(以毫秒為單位)來設定每個 server 的工具執行逾時,例如 `"timeout": 600000` 表示十分鐘。這只會覆寫該 server 的 `MCP_TOOL_TIMEOUT` 環境變數

173 * 當 MCP 工具輸出超過 10,000 個 tokens 時,Claude Code 會顯示警告。若要增加此限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數 (例如,`MAX_MCP_OUTPUT_TOKENS=50000`)191 * 當 MCP 工具輸出超過 10,000 個 tokens 時,Claude Code 會顯示警告。若要增加此限制,請設定 `MAX_MCP_OUTPUT_TOKENS` 環境變數 (例如,`MAX_MCP_OUTPUT_TOKENS=50000`)

174 * 使用 `/mcp` 向需要 OAuth 2.0 驗證的遠端 servers 進行驗證192 * 使用 `/mcp` 向需要 OAuth 2.0 驗證的遠端 servers 進行驗證

175</Tip>193</Tip>

176 194 

195每個 server 的 `timeout` 是每個工具呼叫的硬牆鐘限制,來自 server 的進度通知不會延長它。低於 1000 的值會被調整為一秒。對於 HTTP 和 SSE servers,每個請求的 fetch 首位元組預算無論此值如何都有 60 秒的最小值,因此只有工具呼叫看門狗會遵守較小的值。

196 

177### Plugin 提供的 MCP servers197### Plugin 提供的 MCP servers

178 198 

179[Plugins](/zh-TW/plugins) 可以捆綁 MCP servers,在啟用 plugin 時自動提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。199[Plugins](/zh-TW/plugins) 可以捆綁 MCP servers,在啟用 plugin 時自動提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。


220**Plugin MCP 功能**:240**Plugin MCP 功能**:

221 241 

222* **自動生命週期**:在 session 啟動時,已啟用 plugins 的 servers 會自動連接。如果您在 session 期間啟用或停用 plugin,請執行 `/reload-plugins` 以連接或斷開其 MCP servers242* **自動生命週期**:在 session 啟動時,已啟用 plugins 的 servers 會自動連接。如果您在 session 期間啟用或停用 plugin,請執行 `/reload-plugins` 以連接或斷開其 MCP servers

223* **環境變數**:使用 `${CLAUDE_PLUGIN_ROOT}` 表示 plugin 根目錄中的捆綁 plugin 檔案,以及 `${CLAUDE_PLUGIN_DATA}` 表示 [persistent state](/zh-TW/plugins-reference#persistent-data-directory) 在 plugin 更新後仍然存在,以及 `${CLAUDE_PROJECT_DIR}` 表示穩定的專案根目錄243* **環境變數**:使用 `${CLAUDE_PLUGIN_ROOT}` 表示 plugin 根目錄中的捆綁 plugin 檔案,`${CLAUDE_PLUGIN_DATA}` 表示 [persistent state](/zh-TW/plugins-reference#persistent-data-directory) 在 plugin 更新後仍然存在,以及 `${CLAUDE_PROJECT_DIR}` 表示穩定的專案根目錄

224* **使用者環境存取**:存取與手動配置的 servers 相同的環境變數244* **使用者環境存取**:存取與手動配置的 servers 相同的環境變數

225* **多種傳輸類型**:支援 stdio、SSE 和 HTTP 傳輸 (傳輸支援可能因 server 而異)245* **多種傳輸類型**:支援 stdio、SSE、HTTPWebSocket 傳輸 (傳輸支援可能因 server 而異)

226 246 

227**檢視 plugin MCP servers**:247**檢視 plugin MCP servers**:

228 248 


320 340 

321### Scope 階層和優先順序341### Scope 階層和優先順序

322 342 

323當相同的 server 在多個位置定義時,Claude Code 連接到它一次,使用來自最高優先順序來源的定義343當相同的 server 在多個位置定義時,Claude Code 連接到它一次,使用來自最高優先順序來源的定義。整個 server 項目來自該來源;欄位不會跨範圍合併。

324 344 

3251. Local scope3451. Local scope

3262. Project scope3462. Project scope


462 482 

463Claude Code 會在 server 以 `401 Unauthorized` 或 `403 Forbidden` 回應時,將遠端 server 標記為需要驗證。任一狀態碼都會在 `/mcp` 中標記 server,以便您可以完成 OAuth 流程。傳回指向其授權 server 的 `WWW-Authenticate` 標頭的自訂 server 會獲得與任何其他遠端 server 相同的自動探索。483Claude Code 會在 server 以 `401 Unauthorized` 或 `403 Forbidden` 回應時,將遠端 server 標記為需要驗證。任一狀態碼都會在 `/mcp` 中標記 server,以便您可以完成 OAuth 流程。傳回指向其授權 server 的 `WWW-Authenticate` 標頭的自訂 server 會獲得與任何其他遠端 server 相同的自動探索。

464 484 

485如果您為 server 配置了 `headers.Authorization`,而 server 拒絕該標頭,Claude Code 會將連接報告為失敗,而不是回退到 OAuth。檢查 token 對 MCP 端點是否有效,或移除標頭以使用 OAuth 流程。

486 

465<Steps>487<Steps>

466 <Step title="新增需要驗證的 server">488 <Step title="新增需要驗證的 server">

467 例如:489 例如:


766 </Step>788 </Step>

767</Steps>789</Steps>

768 790 

791從 v2.1.161 開始,您從未登入過的 connectors 會在 claude.ai 部分末尾的 `Show unused connectors` 列後面摺疊,因此組織佈建的列表不會填滿面板。選擇該列以展開它們。您之前登入過的 connector 即使目前需要重新驗證,也會保持可見。

792 

793Claude.ai connectors 只有在您的活躍[驗證方法](/zh-TW/authentication#authentication-precedence)是您的 Claude.ai 訂閱時才會被取得。當 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN`、`apiKeyHelper` 或第三方提供者(例如 Bedrock 或 Vertex)處於活躍狀態時,它們不會被載入,即使您之前執行過 `/login`。如果 `/mcp` 沒有列出您新增的 connector,請執行 `/status` 以確認哪個驗證方法處於活躍狀態,取消設定該環境變數或移除 `apiKeyHelper` 設定,然後執行 `/login` 以選擇您的 Claude.ai 帳戶。

794 

769您在 Claude Code 中新增的 server 優先於指向相同 URL 的 claude.ai connector。發生這種情況時,`/mcp` 會將 connector 列為隱藏,並顯示如何移除重複項(如果您寧願使用 connector)。795您在 Claude Code 中新增的 server 優先於指向相同 URL 的 claude.ai connector。發生這種情況時,`/mcp` 會將 connector 列為隱藏,並顯示如何移除重複項(如果您寧願使用 connector)。

770 796 

771若要在 Claude Code 中停用 claude.ai MCP servers,請將 `ENABLE_CLAUDEAI_MCP_SERVERS` 環境變數設定為 `false`:797若要在 Claude Code 中停用 claude.ai MCP servers,請將 `ENABLE_CLAUDEAI_MCP_SERVERS` 環境變數設定為 `false`:


933 959 

934## 使用 MCP Tool Search 進行擴展960## 使用 MCP Tool Search 進行擴展

935 961 

936Tool search 透過延遲工具定義直到 Claude 需要它們來保持 MCP 內容使用低。只有工具名稱在 session 啟動時載入,因此新增更多 MCP servers 對您的內容視窗的影響最小。962Tool search 透過延遲工具定義直到 Claude 需要它們來保持 MCP 內容使用低。只有工具名稱和伺服器指示在 session 啟動時載入,因此新增更多 MCP servers 對您的內容視窗的影響最小。

937 963 

938### 工作原理964### 工作原理

939 965 


1052 1078 

1053## 受管理的 MCP 配置1079## 受管理的 MCP 配置

1054 1080 

1055對於需要對 MCP servers 進行集中控制的組織,Claude Code 支援兩個配置選項:1081對於需要對使用者可以連接的 MCP servers 進行集中控制的組織,請參閱 [受管理的 MCP 配置](/zh-TW/managed-mcp)。它涵蓋使用 `managed-mcp.json` 部署固定的 server 集合、使用 `allowedMcpServers` 和 `deniedMcpServers` 限制 servers,以及當 server 被阻止時使用者看到的內容。

1056 

10571. **使用 `managed-mcp.json` 的獨佔控制**:部署一組固定的 MCP servers,使用者無法修改或擴展

10582. **使用允許清單/拒絕清單的基於原則的控制**:允許使用者新增自己的 servers,但限制允許的 servers

1059 

1060這些選項允許 IT 管理員:

1061 

1062* **控制員工可以存取的 MCP servers**:在整個組織中部署一組標準化的已批准 MCP servers

1063* **防止未授權的 MCP servers**:限制使用者新增未批准的 MCP servers

1064* **完全停用 MCP**:如果需要,完全移除 MCP 功能

1065 

1066### 選項 1:使用 managed-mcp.json 的獨佔控制

1067 

1068當您部署 `managed-mcp.json` 檔案時,它對所有 MCP servers 進行**獨佔控制**。使用者無法新增、修改或使用此檔案中定義的 MCP servers 以外的任何 MCP servers。這是希望完全控制的組織的最簡單方法。

1069 

1070系統管理員將配置檔案部署到系統範圍的目錄:

1071 

1072* macOS:`/Library/Application Support/ClaudeCode/managed-mcp.json`

1073* Linux 和 WSL:`/etc/claude-code/managed-mcp.json`

1074* Windows:`C:\Program Files\ClaudeCode\managed-mcp.json`

1075 

1076<Note>

1077 這些是系統範圍的路徑 (不是像 `~/Library/...` 這樣的使用者主目錄),需要管理員權限。它們設計為由 IT 管理員部署。

1078</Note>

1079 

1080`managed-mcp.json` 檔案使用與標準 `.mcp.json` 檔案相同的格式:

1081 

1082```json theme={null}

1083{

1084 "mcpServers": {

1085 "github": {

1086 "type": "http",

1087 "url": "https://api.githubcopilot.com/mcp/"

1088 },

1089 "sentry": {

1090 "type": "http",

1091 "url": "https://mcp.sentry.dev/mcp"

1092 },

1093 "company-internal": {

1094 "type": "stdio",

1095 "command": "/usr/local/bin/company-mcp-server",

1096 "args": ["--config", "/etc/company/mcp-config.json"],

1097 "env": {

1098 "COMPANY_API_URL": "https://internal.company.com"

1099 }

1100 }

1101 }

1102}

1103```

1104 

1105### 選項 2:使用允許清單和拒絕清單的基於原則的控制

1106 

1107管理員可以允許使用者配置自己的 MCP servers,同時對允許的 servers 強制執行限制,而不是進行獨佔控制。此方法在 [受管理設定檔案](/zh-TW/settings#settings-files) 中使用 `allowedMcpServers` 和 `deniedMcpServers`。

1108 

1109<Note>

1110 **在選項之間選擇**:當您想要部署一組固定的 servers 而不進行使用者自訂時,使用選項 1 (`managed-mcp.json`)。當您想要允許使用者在原則約束內新增自己的 servers 時,使用選項 2 (允許清單/拒絕清單)。

1111</Note>

1112 

1113#### 限制選項

1114 

1115允許清單或拒絕清單中的每個項目可以透過三種方式限制 servers:

1116 

11171. **按 server 名稱** (`serverName`):符合 server 的已配置名稱

11182. **按命令** (`serverCommand`):符合用於啟動 stdio servers 的確切命令和引數

11193. **按 URL 模式** (`serverUrl`):符合遠端 server URLs,支援萬用字元

1120 

1121**重要**:每個項目必須恰好有 `serverName`、`serverCommand` 或 `serverUrl` 之一。

1122 

1123#### 配置範例

1124 

1125```json theme={null}

1126{

1127 "allowedMcpServers": [

1128 // 按 server 名稱允許

1129 { "serverName": "github" },

1130 { "serverName": "sentry" },

1131 

1132 // 按確切命令允許 (對於 stdio servers)

1133 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },

1134 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

1135 

1136 // 按 URL 模式允許 (對於遠端 servers)

1137 { "serverUrl": "https://mcp.company.com/*" },

1138 { "serverUrl": "https://*.internal.corp/*" }

1139 ],

1140 "deniedMcpServers": [

1141 // 按 server 名稱阻止

1142 { "serverName": "dangerous-server" },

1143 

1144 // 按確切命令阻止 (對於 stdio servers)

1145 { "serverCommand": ["npx", "-y", "unapproved-package"] },

1146 

1147 // 按 URL 模式阻止 (對於遠端 servers)

1148 { "serverUrl": "https://*.untrusted.com/*" }

1149 ]

1150}

1151```

1152 

1153#### 基於命令的限制如何工作

1154 

1155**確切符合**:

1156 

1157* 命令陣列必須**確切**符合 - 命令和所有引數的順序正確

1158* 範例:`["npx", "-y", "server"]` 將**不**符合 `["npx", "server"]` 或 `["npx", "-y", "server", "--flag"]`

1159 

1160**Stdio server 行為**:

1161 

1162* 當允許清單包含**任何** `serverCommand` 項目時,stdio servers **必須**符合其中一個命令

1163* Stdio servers 在存在命令限制時無法單獨按名稱通過

1164* 這確保管理員可以強制執行允許執行的命令

1165 

1166**非 stdio server 行為**:

1167 

1168* 遠端 servers (HTTP、SSE、WebSocket) 在允許清單中存在 `serverUrl` 項目時使用基於 URL 的符合

1169* 如果不存在 URL 項目,遠端 servers 會回退到基於名稱的符合

1170* 命令限制不適用於遠端 servers

1171 

1172#### 基於 URL 的限制如何工作

1173 

1174URL 模式使用 `*` 支援萬用字元以符合任何字元序列。這對於允許整個網域或子網域很有用。

1175 

1176**萬用字元範例**:

1177 

1178* `https://mcp.company.com/*` - 允許特定網域上的所有路徑

1179* `https://*.example.com/*` - 允許 example.com 的任何子網域

1180* `http://localhost:*/*` - 允許 localhost 上的任何連接埠

1181 

1182主機名稱符合不區分大小寫,並忽略尾部 FQDN 點,符合 DNS 語義。像 `*://Mcp.Example.com/*` 這樣的模式符合 `https://mcp.example.com/api`,而 `https://mcp.example.com.` 的處理方式與 `https://mcp.example.com` 相同。配置和路徑保持區分大小寫。

1183 

1184**遠端 server 行為**:

1185 

1186* 當允許清單包含**任何** `serverUrl` 項目時,遠端 servers **必須**符合其中一個 URL 模式

1187* 遠端 servers 在存在 URL 限制時無法單獨按名稱通過

1188* 這確保管理員可以強制執行允許的遠端端點

1189 

1190<Accordion title="範例:僅 URL 允許清單">

1191 ```json theme={null}

1192 {

1193 "allowedMcpServers": [

1194 { "serverUrl": "https://mcp.company.com/*" },

1195 { "serverUrl": "https://*.internal.corp/*" }

1196 ]

1197 }

1198 ```

1199 

1200 **結果**:

1201 

1202 * `https://mcp.company.com/api` 上的 HTTP server:✅ 允許 (符合 URL 模式)

1203 * `https://api.internal.corp/mcp` 上的 HTTP server:✅ 允許 (符合萬用字元子網域)

1204 * `https://external.com/mcp` 上的 HTTP server:❌ 阻止 (不符合任何 URL 模式)

1205 * 任何命令的 Stdio server:❌ 阻止 (沒有名稱或命令項目可符合)

1206</Accordion>

1207 

1208<Accordion title="範例:僅命令允許清單">

1209 ```json theme={null}

1210 {

1211 "allowedMcpServers": [

1212 { "serverCommand": ["npx", "-y", "approved-package"] }

1213 ]

1214 }

1215 ```

1216 

1217 **結果**:

1218 

1219 * 使用 `["npx", "-y", "approved-package"]` 的 Stdio server:✅ 允許 (符合命令)

1220 * 使用 `["node", "server.js"]` 的 Stdio server:❌ 阻止 (不符合命令)

1221 * 名為「my-api」的 HTTP server:❌ 阻止 (沒有名稱項目可符合)

1222</Accordion>

1223 

1224<Accordion title="範例:混合名稱和命令允許清單">

1225 ```json theme={null}

1226 {

1227 "allowedMcpServers": [

1228 { "serverName": "github" },

1229 { "serverCommand": ["npx", "-y", "approved-package"] }

1230 ]

1231 }

1232 ```

1233 

1234 **結果**:

1235 

1236 * 名為「local-tool」、使用 `["npx", "-y", "approved-package"]` 的 Stdio server:✅ 允許 (符合命令)

1237 * 名為「local-tool」、使用 `["node", "server.js"]` 的 Stdio server:❌ 阻止 (存在命令項目但不符合)

1238 * 名為「github」、使用 `["node", "server.js"]` 的 Stdio server:❌ 阻止 (存在命令限制時 stdio servers 必須符合命令)

1239 * 名為「github」的 HTTP server:✅ 允許 (符合名稱)

1240 * 名為「other-api」的 HTTP server:❌ 阻止 (名稱不符合)

1241</Accordion>

1242 

1243<Accordion title="範例:僅名稱允許清單">

1244 ```json theme={null}

1245 {

1246 "allowedMcpServers": [

1247 { "serverName": "github" },

1248 { "serverName": "internal-tool" }

1249 ]

1250 }

1251 ```

1252 

1253 **結果**:

1254 

1255 * 名為「github」、任何命令的 Stdio server:✅ 允許 (沒有命令限制)

1256 * 名為「internal-tool」、任何命令的 Stdio server:✅ 允許 (沒有命令限制)

1257 * 名為「github」的 HTTP server:✅ 允許 (符合名稱)

1258 * 任何名為「other」的 server:❌ 阻止 (名稱不符合)

1259</Accordion>

1260 

1261#### 允許清單行為 (`allowedMcpServers`)

1262 

1263* `undefined` (預設):無限制 - 使用者可以配置任何 MCP server

1264* 空陣列 `[]`:完全鎖定 - 使用者無法配置任何 MCP servers

1265* 項目清單:使用者只能配置符合名稱、命令或 URL 模式的 servers

1266 

1267#### 拒絕清單行為 (`deniedMcpServers`)

1268 

1269* `undefined` (預設):沒有 servers 被阻止

1270* 空陣列 `[]`:沒有 servers 被阻止

1271* 項目清單:指定的 servers 在所有範圍中被明確阻止

1272 

1273#### 重要注意事項

1274 

1275* **選項 1 和選項 2 可以結合**:如果 `managed-mcp.json` 存在,它具有獨佔控制,使用者無法新增 servers。允許清單/拒絕清單仍然適用於受管理的 servers 本身。

1276* **拒絕清單具有絕對優先順序**:如果 server 符合拒絕清單項目 (按名稱、命令或 URL),即使它在允許清單上也會被阻止

1277* 基於名稱、基於命令和基於 URL 的限制一起工作:如果 server 符合**任何**名稱項目、命令項目或 URL 模式,它就會通過 (除非被拒絕清單阻止)

1278 

1279<Note>

1280 **使用 `managed-mcp.json` 時**:使用者無法透過 `claude mcp add` 或配置檔案新增 MCP servers。`allowedMcpServers` 和 `deniedMcpServers` 設定仍然適用於篩選實際載入的受管理 servers。

1281</Note>

mcp-quickstart.md +407 −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# 連接到 MCP 伺服器

6 

7> 將 MCP 伺服器新增至 Claude Code、驗證連接,並在磁碟上找到設定。

8 

9[Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) 讓 Claude Code 使用超越其內建工具集的工具,例如搜尋問題追蹤器、查詢資料庫或控制網頁瀏覽器。這些工具來自 MCP 伺服器,可在您的機器上執行或作為託管服務運行。

10 

11本指南將逐步引導您透過 Claude Code CLI 端對端連接一個 MCP 伺服器。完成後,您將擁有一個已連接且正在回應的伺服器、知道其設定在磁碟上的位置,以及知道如何修復最常見的連接錯誤。

12 

13<Note>

14 您也可以從其他介面新增 MCP 伺服器,包括桌面應用程式、VS Code 和網頁版。請參閱[從其他介面連接](#connect-from-other-surfaces)。

15</Note>

16 

17如需在 Claude Code 中連接和設定 MCP 伺服器的所有方式,請參閱 [MCP 參考](/zh-TW/mcp)。

18 

19<h2 id="before-you-begin">

20 開始之前

21</h2>

22 

23確保您擁有:

24 

25* [已安裝](/zh-TW/quickstart)並驗證 Claude Code

26* 在專案目錄中開啟的終端機。任何目錄都可以,包括空目錄。

27 

28<h2 id="add-and-verify-a-server">

29 新增並驗證伺服器

30</h2>

31 

32下面的範例連接到 [Claude Code 文件 MCP 伺服器](https://code.claude.com/docs/mcp),這是一個託管伺服器,具有對 Claude Code 文件的全文搜尋功能。它不需要驗證或任何特殊設定,因此它非常適合作為測試設定流程的第一個伺服器。

33 

34步驟對任何伺服器都相同:新增它、檢查連接狀態,然後在工作階段中使用它,最後可選擇清理步驟。某些伺服器會新增一個步驟,例如瀏覽器登入,如 [其他 MCP 伺服器範例](#additional-mcp-server-examples) 所示。如需更多伺服器連接,請瀏覽 [Anthropic 目錄](/zh-TW/mcp#find-and-build-mcp-servers)。

35 

36<Steps>

37 <Step title="新增 MCP 伺服器">

38 向 Claude Code 註冊伺服器。在您的終端機中執行此命令,而不是在 `claude` 工作階段內:您在啟動對話之前設定伺服器。

39 

40 ```bash theme={null}

41 claude mcp add --transport http claude-code-docs https://code.claude.com/docs/mcp

42 ```

43 

44 命令的各部分:

45 

46 * `claude mcp add`:向 Claude Code 註冊伺服器。

47 * `--transport http`:伺服器託管在 URL 上,而不是作為本機程序執行。

48 * `claude-code-docs`:您自己建立的名稱。將同一伺服器稱為 `docs` 會完全相同。Claude Code 使用您選擇的任何名稱在 Claude 的輸出中標記伺服器的工具,並在 `claude mcp remove` 等命令中引用伺服器。

49 * `https://code.claude.com/docs/mcp`:伺服器託管的 URL。

50 

51 該命令列印確認訊息,如 `Added HTTP MCP server claude-code-docs with URL: https://code.claude.com/docs/mcp to local config`。`local config` 部分表示伺服器已向您註冊,在此專案中:如果您在不同的專案中啟動 Claude Code,此伺服器在那裡不活躍。若要為所有專案註冊一次伺服器,請在使用者範圍新增它,詳見[變更伺服器範圍](#change-server-scope)。

52 </Step>

53 

54 <Step title="檢查連接狀態">

55 確認伺服器出現在您的伺服器清單中並檢查其狀態:

56 

57 ```bash theme={null}

58 claude mcp list

59 ```

60 

61 伺服器出現時帶有狀態指示器:

62 

63 | 狀態 | 含義 |

64 | :----------------------- | :------------------------------------------------------------------------------------------- |

65 | `✓ Connected` | 準備就緒。這是您應該為 `claude-code-docs` 看到的 |

66 | `! Needs authentication` | 伺服器可到達但需要瀏覽器登入,或使用 `--header` 傳遞的令牌。請參閱[連接需要登入的伺服器](#connect-a-server-that-requires-sign-in) |

67 | `✗ Failed to connect` | 伺服器未回應。請參閱[疑難排解](#troubleshooting) |

68 | `✗ Connection error` | 連接嘗試拋出錯誤。請參閱[疑難排解](#troubleshooting) |

69 | `⏸ Pending approval` | 您尚未批准的專案範圍伺服器。請參閱[直接編輯 .mcp.json](#edit-mcp-json-directly) |

70 </Step>

71 

72 <Step title="使用伺服器">

73 啟動工作階段並要求 Claude 按名稱使用新伺服器:

74 

75 ```bash theme={null}

76 claude

77 ```

78 

79 ```text theme={null}

80 Use the claude-code-docs server to look up what MCP_TIMEOUT does

81 ```

82 

83 <Info>

84 您通常不需要在提示中命名伺服器,因為 Claude 會自動選擇相關工具。在此命名它可保證演示透過新伺服器而不是另一個工具(例如網頁擷取)進行,該工具可能回答相同問題。

85 </Info>

86 

87 Claude 第一次呼叫伺服器時,它會要求使用新工具的許可。批准它以繼續。Claude 輸出中的工具呼叫會標記伺服器名稱,這是您確認答案來自 MCP 伺服器而不是 Claude 內建知識的方式。

88 </Step>

89 

90 <Step title="移除伺服器">

91 此步驟是可選的。當您完成實驗時,您可以移除伺服器:

92 

93 ```bash theme={null}

94 claude mcp remove claude-code-docs

95 ```

96 

97 <Note>

98 每個已連接的伺服器在 [Claude 的內容視窗](/zh-TW/how-claude-code-works#the-context-window)中佔用一些空間,因為其工具名稱和伺服器指令會載入到每個工作階段中。移除您不再使用的伺服器可保持該空間空閒。

99 </Note>

100 </Step>

101</Steps>

102 

103<h2 id="where-servers-are-saved">

104 伺服器的儲存位置

105</h2>

106 

107`claude mcp add` 命令將伺服器的詳細資訊寫入設定檔。預設情況下,它在 `local` 範圍註冊伺服器:僅限您私人使用,僅在目前專案中活躍。傳遞 `--scope user` 以為所有專案註冊一次,或傳遞 `--scope project` 以與隊友共享。[變更伺服器範圍](#change-server-scope)會逐步說明兩者。

108 

109<Note>

110 `claude mcp add` 在每個 shell 中的工作方式相同,包括 PowerShell 和命令提示字元。在 `claude` 工作階段內,使用 `/mcp` 命令檢查和管理您已新增的伺服器。

111</Note>

112 

113還有其他方式新增伺服器,每種都在本頁稍後涵蓋:

114 

115* [新增本機伺服器](#add-a-local-server):在您的機器上執行程式,而不是連接到 URL。

116* [直接編輯 `.mcp.json`](#edit-mcp-json-directly):自己寫入 JSON 項目,而不是使用命令。

117* [連接需要登入的伺服器](#connect-a-server-that-requires-sign-in):新增需要瀏覽器登入才能使其工具工作的託管伺服器。

118 

119<h3 id="find-your-configuration-on-disk">

120 在磁碟上找到您的設定

121</h3>

122 

123[範圍表](#find-your-configuration-on-disk)中的每個檔案對伺服器項目使用相同的 JSON 格式。根據 `--scope` 旗標,跨兩個檔案儲存三個範圍之一。您不需要直接編輯這些檔案,但知道它們的位置有助於除錯和版本控制。

124 

125| 範圍 | 檔案 | 可用於 |

126| :-------- | :----------------------------------- | :------------ |

127| `local` | `~/.claude.json`,在此專案的項目下 | 僅限您,僅限此專案。預設值 |

128| `project` | 您的專案根目錄中的 `.mcp.json` | 複製專案的所有人 |

129| `user` | `~/.claude.json`,在頂層 `mcpServers` 鍵下 | 僅限您,所有專案 |

130 

131在 Windows 上,`~/.claude.json` 解析為 `%USERPROFILE%\.claude.json`,通常為 `C:\Users\YourName\.claude.json`。如果您已設定 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),Claude Code 會改為從該目錄內讀取 `.claude.json`。

132 

133執行 `claude mcp get claude-code-docs` 以查看哪個範圍保存伺服器的定義。如需當同一伺服器在多個範圍中定義時範圍如何互動,請參閱 [MCP 安裝範圍](/zh-TW/mcp#mcp-installation-scopes)。

134 

135<h2 id="change-server-scope">

136 變更伺服器範圍

137</h2>

138 

139伺服器的範圍在您新增時是固定的,因此變更範圍意味著移除項目並在新範圍重新新增。下面兩種情況都從移除第一個逐步說明中的本機項目開始,因此伺服器只有一個定義。如果您已在該逐步說明結束時移除它,請跳過此命令:

140 

141```bash theme={null}

142claude mcp remove claude-code-docs --scope local

143```

144 

145<h3 id="use-a-server-in-all-your-projects">

146 在所有專案中使用伺服器

147</h3>

148 

149在 `user` 範圍重新新增伺服器,使其在您開啟的每個專案中活躍,仍然僅限您私人使用:

150 

151```bash theme={null}

152claude mcp add --scope user --transport http claude-code-docs https://code.claude.com/docs/mcp

153```

154 

155<h3 id="share-a-server-with-your-team">

156 與您的團隊共享伺服器

157</h3>

158 

159在 `project` 範圍重新新增伺服器,它寫入專案根目錄中的 `.mcp.json`:

160 

161```bash theme={null}

162claude mcp add --scope project --transport http claude-code-docs https://code.claude.com/docs/mcp

163```

164 

165將 `.mcp.json` 提交到版本控制。複製儲存庫並啟動 Claude Code 的隊友會看到批准伺服器的提示,然後它也會為他們連接。

166 

167<h2 id="additional-mcp-server-examples">

168 其他 MCP 伺服器範例

169</h2>

170 

171第一個逐步說明使用了無需任何登入即可連接的託管伺服器。下面的範例涵蓋其他兩種常見形式,具有相同的新增、檢查、使用流程。

172 

173<h3 id="add-a-local-server">

174 新增本機伺服器

175</h3>

176 

177本機 stdio 伺服器是 Claude Code 在您的機器上作為子程序啟動的程式,而不是它透過 URL 到達的服務。將其用於需要存取本機資源(例如瀏覽器、您的檔案系統或資料庫通訊端)的工具。

178 

179[Playwright MCP 伺服器](https://github.com/microsoft/playwright-mcp)是一個很好的嘗試:它為 Claude 提供可以導航、點擊和讀取的瀏覽器,並且不需要帳戶。它透過 `npx` 執行,因此需要 [Node.js](https://nodejs.org/en/download) 18 或更高版本。

180 

181<Steps>

182 <Step title="新增 Playwright 伺服器">

183 向伺服器註冊 Claude Code 應執行以啟動它的命令:

184 

185 ```bash theme={null}

186 claude mcp add playwright -- npx -y @playwright/mcp@latest

187 ```

188 

189 此命令與託管範例在三個方面不同:

190 

191 * 沒有 `--transport` 旗標,因為本機伺服器使用預設 `stdio` 傳輸。

192 * `--` 分隔符之後的所有內容都是 Claude Code 執行以啟動伺服器的命令。

193 * `-y` 告訴 `npx` 安裝套件而不提示。

194 

195 Playwright 驅動您機器上已安裝的任何 Chrome。若要使用不同的瀏覽器,請在 `@playwright/mcp@latest` 之後附加 `--browser` 和瀏覽器名稱,例如 `--browser firefox`。

196 </Step>

197 

198 <Step title="檢查連接">

199 `Added` 確認表示項目已儲存,而不是命令執行。檢查連接:

200 

201 ```bash theme={null}

202 claude mcp list

203 ```

204 

205 第一次檢查可能在 `npx` 下載套件時顯示 `✗ Failed to connect`,因此請稍候片刻並再次執行。

206 </Step>

207 

208 <Step title="使用瀏覽器">

209 給 Claude 一個需要瀏覽器的任務:

210 

211 ```text theme={null}

212 Use playwright to open https://example.com and tell me the page title

213 ```

214 

215 瀏覽器視窗開啟,以便您可以觀看它工作,Claude 輸出中的工具呼叫會標記伺服器名稱和動作,例如 `browser_navigate`。

216 

217 嘗試將其指向您的本機開發伺服器,以檢查頁面在變更後是否仍呈現,或讓它逐步完成錯誤報告。

218 </Step>

219</Steps>

220 

221<h3 id="connect-a-server-that-requires-sign-in">

222 連接需要登入的伺服器

223</h3>

224 

225Sentry、Linear 和 Notion 等託管服務在 OAuth 後面執行其 MCP 伺服器:您新增伺服器的 URL,然後透過瀏覽器登入。

226 

227下面的步驟使用 Sentry 作為範例。若要連接不同的服務,請替換其 URL,您可以在 [Anthropic 目錄](/zh-TW/mcp#find-and-build-mcp-servers)或服務的文件中找到。

228 

229<Steps>

230 <Step title="新增伺服器">

231 `add` 命令與文件伺服器相同,使用 Sentry 的 URL:

232 

233 ```bash theme={null}

234 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

235 ```

236 

237 新增後,`claude mcp list` 顯示伺服器為 `! Needs authentication`。這是預期的:下一步完成登入。

238 </Step>

239 

240 <Step title="在瀏覽器中驗證">

241 啟動 Claude Code 工作階段並開啟 MCP 面板:

242 

243 ```text theme={null}

244 /mcp

245 ```

246 

247 從清單中選擇 `sentry`,按 Enter,然後選擇 `Authenticate`。您的瀏覽器開啟到 Sentry 的登入頁面。在那裡批准連接。

248 

249 回到 Claude Code,伺服器的狀態變為已連接。如果登入失敗或瀏覽器未開啟,請參閱[疑難排解](#troubleshooting)。

250 </Step>

251 

252 <Step title="使用伺服器">

253 詢問 Claude 需要該服務的內容,例如 `What Sentry projects do I have access to?`,並在其輸出中尋找標記為 `sentry` 伺服器名稱的工具呼叫。

254 </Step>

255</Steps>

256 

257使用靜態令牌而不是 OAuth 進行驗證的伺服器在新增時使用 `--header "Authorization: Bearer <token>"` 取得令牌。請參閱 [GitHub 範例](/zh-TW/mcp#example-connect-to-github-for-code-reviews)以取得已完成的版本。

258 

259<h2 id="edit-mcp-json-directly">

260 直接編輯 .mcp.json

261</h2>

262 

263[範圍表](#find-your-configuration-on-disk)中的每個檔案對伺服器項目使用相同的 JSON 格式。本節編輯 `.mcp.json`,即專案範圍檔案。它最值得手寫,因為它被簽入儲存庫,在那裡它也充當您團隊的設定即程式碼。

264 

265在您的專案根目錄中建立 `.mcp.json`。下面的範例定義本指南中的兩個伺服器,透過 HTTP 到達的託管文件伺服器和作為本機 `stdio` 程序的 Playwright 伺服器:

266 

267```json theme={null}

268{

269 "mcpServers": {

270 "claude-code-docs": {

271 "type": "http",

272 "url": "https://code.claude.com/docs/mcp"

273 },

274 "playwright": {

275 "type": "stdio",

276 "command": "npx",

277 "args": ["-y", "@playwright/mcp@latest"]

278 }

279 }

280}

281```

282 

283欄位因伺服器類型而異:

284 

285* 對於 HTTP 伺服器,`url` 是 Claude Code 連接到的端點。

286* 對於 stdio 伺服器,`command` 和 `args` 是它執行的程式。

287 

288儲存檔案後,在專案中啟動新的 Claude Code 工作階段。Claude Code 在啟動時讀取 `.mcp.json`。

289 

290Claude Code 第一次看到專案範圍伺服器時,它會要求您批准它。提示存在是為了讓您複製的儲存庫無法在您同意的情況下在您的機器上啟動程序。批准提示,或如果您錯過了,執行 `/mcp` 稍後批准。

291 

292批准後,執行 `/mcp` 並檢查伺服器是否顯示為已連接。如果其中一個顯示錯誤,請參閱[疑難排解](#troubleshooting)。

293 

294<h2 id="connect-from-other-surfaces">

295 從其他介面連接

296</h2>

297 

298本指南使用 `claude mcp` CLI 命令,但每個 Claude Code 介面都可以連接到 MCP 伺服器:

299 

300* **Claude Code 桌面應用程式**:透過[連接器 UI](/zh-TW/desktop#connect-external-tools) 新增伺服器。

301* **Claude Desktop 聊天應用程式**:與 Claude Code 不同的應用程式。若要將其 `claude_desktop_config.json` 中的伺服器複製到 CLI,請在 macOS 或 WSL 上執行 `claude mcp add-from-claude-desktop`。

302* **VS Code**:請參閱[使用 MCP 連接到外部工具](/zh-TW/vs-code#connect-to-external-tools-with-mcp)。

303* **網頁上的 Claude Code**:從您的儲存庫讀取 `.mcp.json`。請參閱[直接編輯 .mcp.json](#edit-mcp-json-directly)。

304* **Claude.ai**:您在 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) 新增的連接器在您使用該帳戶登入時自動載入 CLI。請參閱[從 Claude.ai 使用 MCP 伺服器](/zh-TW/mcp#use-mcp-servers-from-claude-ai)。

305 

306<h2 id="troubleshooting">

307 疑難排解

308</h2>

309 

310如果伺服器未連接,請在工作階段內使用 `/mcp` 或從您的 shell 使用 `claude mcp list` 檢查其狀態,然後匹配下面的症狀。`/mcp` 面板也讓您無需離開工作階段即可重新連接或驗證。

311 

312<AccordionGroup>

313 <Accordion title="/mcp 顯示 No MCP servers configured">

314 Claude Code 未找到目前目錄的任何伺服器。最常見的原因:

315 

316 * 您從不同的專案執行了 `claude mcp add`。本機範圍伺服器與您新增它們的專案相關聯:儲存庫根目錄,或如果您不在 git 儲存庫中,則為確切目錄。從您現在所在的專案重新新增伺服器,或使用 `--scope user` 新增它,使其不與專案相關聯。

317 * 您在錯誤的路徑編輯了設定檔。正確的檔案是 `~/.claude.json` 和 `<project>/.mcp.json`。Claude Code 不讀取 `~/.claude/config/mcp.json`、`~/.claude/mcp.json` 或 `%APPDATA%\Claude\mcp.json` 等路徑。

318 </Accordion>

319 

320 <Accordion title="狀態顯示 Failed to connect 或 Connection error">

321 兩種狀態都表示伺服器未啟動或 URL 未回應。它們也可能出現在期望令牌而不是[連接需要登入的伺服器](#connect-a-server-that-requires-sign-in)中涵蓋的瀏覽器登入的 HTTP 伺服器。

322 

323 對於 HTTP 伺服器,確認 URL 可從您的機器到達:

324 

325 ```bash theme={null}

326 curl -I https://mcp.sentry.dev/mcp

327 ```

328 

329 在 PowerShell 中,使用 `curl.exe` 而不是 `curl`,以便請求進入真實 curl 二進位檔而不是 `Invoke-WebRequest` 別名。

330 

331 回應告訴您您有哪種問題:

332 

333 * `404` 或 `405`:伺服器已啟動。許多 MCP 端點僅回答 POST 請求,因此這仍然確認 URL 可從您的機器到達。

334 * `401` 或 `403`:伺服器已啟動,您需要驗證。使用[連接需要登入的伺服器](#connect-a-server-that-requires-sign-in)中的瀏覽器登入,或對於接受令牌的伺服器(例如 GitHub 的),使用 `claude mcp add` 命令上的 `--header "Authorization: Bearer <token>"` 傳遞它。

335 * 完全沒有回應:檢查 URL 和您的網路。

336 

337 對於 stdio 伺服器,直接在您的終端機中執行配置的命令以查看基礎錯誤。對於本指南中的 Playwright 伺服器,執行:

338 

339 ```bash theme={null}

340 npx -y @playwright/mcp@latest

341 ```

342 

343 接下來發生的情況告訴您問題在哪裡:

344 

345 * 命令啟動並等待輸入:伺服器本身有效。執行 `claude mcp get <name>` 並確認那裡顯示的命令與您剛執行的相符。如果顯示的命令與您輸入的不同,您可能省略了伺服器命令前的 `--` 分隔符。移除伺服器並使用 `--` 重新新增。如果您手寫了 `.mcp.json`,檢查其語法和位置。

346 * 命令錯誤:訊息命名缺少的內容,例如 Node.js 或瀏覽器。

347 </Accordion>

348 

349 <Accordion title="連接在啟動時逾時">

350 伺服器花費的時間超過預設 30 秒啟動逾時。stdio 伺服器的第一次執行在 `npx` 下載套件時可能很慢。使用 [`MCP_TIMEOUT`](/zh-TW/env-vars) 環境變數(以毫秒為單位)增加限制:

351 

352 ```bash theme={null}

353 MCP_TIMEOUT=60000 claude

354 ```

355 

356 在 PowerShell 中,在同一行上的命令前設定變數:

357 

358 ```powershell theme={null}

359 $env:MCP_TIMEOUT = "60000"; claude

360 ```

361 </Accordion>

362 

363 <Accordion title="伺服器已存在">

364 您已在同一範圍新增了具有該名稱的伺服器。要麼先移除現有項目,要麼選擇不同的名稱:

365 

366 ```bash theme={null}

367 claude mcp remove claude-code-docs

368 ```

369 

370 如果名稱存在於多個範圍,`remove` 報告 `exists in multiple scopes`。傳遞 `--scope` 以選擇要刪除的副本,例如 `claude mcp remove claude-code-docs --scope local`。

371 </Accordion>

372 

373 <Accordion title="伺服器連接但沒有工具出現">

374 在工作階段內執行 `/mcp` 並選擇伺服器以查看其工具清單。如果清單為空,伺服器已啟動但未註冊任何工具,這通常意味著它缺少必需的環境變數,例如 API 金鑰。

375 

376 使用 `claude mcp add` 上的 `--env KEY=value` 傳遞變數,或在伺服器的 `.mcp.json` 項目的 `env` 欄位中傳遞。伺服器的文件列出它需要的變數。

377 </Accordion>

378 

379 <Accordion title=".mcp.json 的變更不生效">

380 Claude Code 在工作階段啟動時讀取 `.mcp.json`。編輯檔案後退出並重新啟動工作階段。

381 

382 如果您的伺服器仍未出現,執行 `/mcp` 並尋找解析警告。Claude Code 跳過格式不正確的項目並在那裡顯示有問題的欄位。

383 

384 如果您之前在提示時拒絕了伺服器,重設專案批准:

385 

386 ```bash theme={null}

387 claude mcp reset-project-choices

388 ```

389 </Accordion>

390 

391 <Accordion title="OAuth 登入失敗或瀏覽器未開啟">

392 執行 `/mcp`,選擇伺服器,然後再次選擇 `Authenticate`。如果瀏覽器未自動開啟,複製終端機中顯示的 URL 並手動開啟。請參閱[使用遠端 MCP 伺服器驗證](/zh-TW/mcp#authenticate-with-remote-mcp-servers)以取得固定回呼連接埠和預先配置的認證。

393 </Accordion>

394</AccordionGroup>

395 

396<h2 id="next-steps">

397 後續步驟

398</h2>

399 

400連接一個伺服器後,探索 MCP 啟用的其餘功能:

401 

402* [尋找更多 MCP 伺服器](/zh-TW/mcp#find-and-build-mcp-servers)在 Anthropic 目錄中

403* [與您的團隊共享伺服器](/zh-TW/mcp#mcp-installation-scopes)使用安裝範圍

404* [為組織管理 MCP 存取](/zh-TW/managed-mcp)使用受管設定和原則控制

405* [在提示中參考 MCP 資源](/zh-TW/mcp#use-mcp-resources)使用 @ 提及

406* [從 `/` 功能表執行 MCP 提示作為命令](/zh-TW/mcp#use-mcp-prompts-as-commands)

407* [使用 MCP SDK 建立您自己的伺服器](https://modelcontextprotocol.io/quickstart/server)

memory.md +6 −6

Details

20 20 

21## CLAUDE.md 與自動記憶21## CLAUDE.md 與自動記憶

22 22 

23Claude Code 有兩個互補的記憶系統。兩者都在每次對話開始時載入。Claude 將它們視為上下文,而不是強制配置。您的指令越具體和簡潔,Claude 遵循它們的一致性就越高。23Claude Code 有兩個互補的記憶系統。兩者都在每次對話開始時載入。Claude 將它們視為上下文,而不是強制配置。若要阻止某個動作(無論 Claude 決定什麼),請改用 [PreToolUse hook](/zh-TW/hooks-guide)。您的指令越具體和簡潔,Claude 遵循它們的一致性就越高。

24 24 

25| | CLAUDE.md 檔案 | 自動記憶 |25| | CLAUDE.md 檔案 | 自動記憶 |

26| :------- | :------------- | :--------------------- |26| :------- | :------------- | :--------------------- |

27| **誰編寫** | 您 | Claude |27| **誰編寫** | 您 | Claude |

28| **包含內容** | 指令和規則 | 學習和模式 |28| **包含內容** | 指令和規則 | 學習和模式 |

29| **範圍** | 專案、使用者或組織 | 每個工作樹 |29| **範圍** | 專案、使用者或組織 | 每個工作樹,跨 worktrees 共享 |

30| **載入到** | 每個工作階段 | 每個工作階段(前 200 行或 25KB) |30| **載入到** | 每個工作階段 | 每個工作階段(前 200 行或 25KB) |

31| **用於** | 編碼標準、工作流程、專案架構 | 建置命令、除錯見解、Claude 發現的偏好 |31| **用於** | 編碼標準、工作流程、專案架構 | 建置命令、除錯見解、Claude 發現的偏好 |

32 32 


94 94 

95CLAUDE.md 檔案可以使用 `@path/to/import` 語法匯入其他檔案。匯入的檔案會展開並在啟動時與參考它們的 CLAUDE.md 一起載入到上下文中。95CLAUDE.md 檔案可以使用 `@path/to/import` 語法匯入其他檔案。匯入的檔案會展開並在啟動時與參考它們的 CLAUDE.md 一起載入到上下文中。

96 96 

97允許相對和絕對路徑。相對路徑相對於包含匯入的檔案解析,而不是工作目錄。匯入的檔案可以遞迴匯入其他檔案,最大深度為五跳97允許相對和絕對路徑。相對路徑相對於包含匯入的檔案解析,而不是工作目錄。匯入的檔案可以遞迴匯入其他檔案,最大深度為四跳

98 98 

99要引入 README、package.json 和工作流程指南,請在 CLAUDE.md 中的任何位置使用 `@` 語法參考它們:99要引入 README、package.json 和工作流程指南,請在 CLAUDE.md 中的任何位置使用 `@` 語法參考它們:

100 100 


150 150 

151Claude 也會在您目前工作目錄下的子目錄中發現 `CLAUDE.md` 和 `CLAUDE.local.md` 檔案。它們不是在啟動時載入,而是在 Claude 讀取這些子目錄中的檔案時包含。151Claude 也會在您目前工作目錄下的子目錄中發現 `CLAUDE.md` 和 `CLAUDE.local.md` 檔案。它們不是在啟動時載入,而是在 Claude 讀取這些子目錄中的檔案時包含。

152 152 

153如果您在大型 monorepo 中工作,其中其他團隊的 CLAUDE.md 檔案被拾取,請使用 [`claudeMdExcludes`](#exclude-specific-claude-md-files) 跳過它們。153如果您在大型 monorepo 中工作,其中其他團隊的 CLAUDE.md 檔案被拾取,請使用 [`claudeMdExcludes`](#exclude-specific-claude-md-files) 跳過它們。對於根目錄和每個目錄 CLAUDE.md 檔案和規則的完整佈局,請參閱 [Monorepos 和大型儲存庫](/zh-TW/large-codebases)。

154 154 

155CLAUDE.md 檔案中的區塊級 HTML 註解(`<!-- maintainer notes -->`)在內容被注入到 Claude 的上下文之前會被移除。使用它們為人類維護者留下筆記,而不會在令牌上花費上下文。程式碼區塊內的註解會被保留。當您直接使用 Read 工具開啟 CLAUDE.md 檔案時,註解保持可見。155CLAUDE.md 檔案中的區塊級 HTML 註解(`<!-- maintainer notes -->`)在內容被注入到 Claude 的上下文之前會被移除。使用它們為人類維護者留下筆記,而不會在令牌上花費上下文。程式碼區塊內的註解會被保留。當您直接使用 Read 工具開啟 CLAUDE.md 檔案時,註解保持可見。

156 156 


345 345 

346每個專案在 `~/.claude/projects/<project>/memory/` 獲得自己的記憶目錄。`<project>` 路徑源自 git 儲存庫,因此同一儲存庫內的所有 worktrees 和子目錄共享一個自動記憶目錄。在 git 儲存庫外,改用專案根目錄。346每個專案在 `~/.claude/projects/<project>/memory/` 獲得自己的記憶目錄。`<project>` 路徑源自 git 儲存庫,因此同一儲存庫內的所有 worktrees 和子目錄共享一個自動記憶目錄。在 git 儲存庫外,改用專案根目錄。

347 347 

348要將自動記憶儲存在不同位置,請在您的使用者設定中設定 `autoMemoryDirectory`,位置在 `~/.claude/settings.json`348要將自動記憶儲存在不同位置,請在您的 `settings.json` 中設定 `autoMemoryDirectory`。它從任何[設定範圍](/zh-TW/settings#settings-precedence)讀取使用者、專案、本地、原則或 `--settings`。

349 349 

350```json theme={null}350```json theme={null}

351{351{


353}353}

354```354```

355 355 

356此值必須是絕對路徑或以 `~/` 開頭。此設定從原則和使用者設定接受,以及從 `--settings` 旗標接受。它不從專案或本地設定接受因為兩個檔案都位於專案目錄內複製的儲存庫可能提供任一個以將自動記憶寫入重定向到敏感位置356此值必須是絕對路徑或以 `~/` 開頭。當在專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中設定時此值僅在您接受該資料夾的工作區信任對話後才會被接受這與管理 hooks 的閘道相同

357 357 

358目錄包含 `MEMORY.md` 進入點和可選的主題檔案:358目錄包含 `MEMORY.md` 進入點和可選的主題檔案:

359 359 

Details

6 6 

7> 了解如何透過 Microsoft Foundry 配置 Claude Code,包括設定、配置和故障排除。7> 了解如何透過 Microsoft Foundry 配置 Claude Code,包括設定、配置和故障排除。

8 8 

9export const ContactSalesCard = ({surface}) => {9<h2 id="prerequisites">

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;10 先決條件

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">11</h2>

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79<ContactSalesCard surface="foundry" />

80 

81## 先決條件

82 12 

83在使用 Microsoft Foundry 配置 Claude Code 之前,請確保您具有:13在使用 Microsoft Foundry 配置 Claude Code 之前,請確保您具有:

84 14 


90 如果您要將 Claude Code 部署給多個使用者,請[固定您的模型版本](#4-pin-model-versions)以防止在 Anthropic 發佈新模型時發生中斷。20 如果您要將 Claude Code 部署給多個使用者,請[固定您的模型版本](#4-pin-model-versions)以防止在 Anthropic 發佈新模型時發生中斷。

91</Note>21</Note>

92 22 

93## 設定23<h2 id="setup">

24 設定

25</h2>

94 26 

95### 1. 佈建 Microsoft Foundry 資源27<h3 id="1-provision-microsoft-foundry-resource">

28 1. 佈建 Microsoft Foundry 資源

29</h3>

96 30 

97首先,在 Azure 中建立 Claude 資源:31首先,在 Azure 中建立 Claude 資源:

98 32 


103 * Claude Sonnet37 * Claude Sonnet

104 * Claude Haiku38 * Claude Haiku

105 39 

106### 2. 配置 Azure 認證40<h3 id="2-configure-azure-credentials">

41 2) 配置 Azure 認證

42</h3>

107 43 

108Claude Code 支援 Microsoft Foundry 的兩種驗證方法。選擇最適合您安全性要求的方法。44Claude Code 支援 Microsoft Foundry 的兩種驗證方法。選擇最適合您安全性要求的方法。

109 45 


130```66```

131 67 

132<Note>68<Note>

133 使用 Microsoft Foundry 時,`/login` 和 `/logout` 命令已停用,因為驗證是透過 Azure 認證處理的。69 使用 Microsoft Foundry 時,`/logout` 命令無法使用,因為驗證是透過 Azure 認證處理的。

134</Note>70</Note>

135 71 

136### 3. 配置 Claude Code72<h3 id="3-configure-claude-code">

73 3. 配置 Claude Code

74</h3>

137 75 

138設定下列環境變數以啟用 Microsoft Foundry:76設定下列環境變數以啟用 Microsoft Foundry:

139 77 


147# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic85# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic

148```86```

149 87 

150### 4. 固定模型版本88<h3 id="4-pin-model-versions">

89 4. 固定模型版本

90</h3>

151 91 

152<Warning>92<Warning>

153 為每個部署固定特定的模型版本。如果您使用模型別名(`sonnet`、`opus`、`haiku`)而不固定版本,Claude Code 可能會嘗試使用您的 Foundry 帳戶中不可用的較新模型版本,在 Anthropic 發佈更新時破壞現有使用者。建立 Azure 部署時,請選擇特定的模型版本,而不是「自動更新至最新版本」。93 為每個部署固定特定的模型版本。如果您使用模型別名(`sonnet`、`opus`、`haiku`)而不固定版本,Claude Code 可能會嘗試使用您的 Foundry 帳戶中不可用的較新模型版本,在 Anthropic 發佈更新時破壞現有使用者。建立 Azure 部署時,請選擇特定的模型版本,而不是「自動更新至最新版本」。


155 95 

156設定模型變數以符合您在步驟 1 中建立的部署名稱。96設定模型變數以符合您在步驟 1 中建立的部署名稱。

157 97 

158如果沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,Foundry 上的 `opus` 別名會解析為 Opus 4.6。將其設定為 Opus 4.7 ID 以使用最新模型:98如果沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,Foundry 上的 `opus` 別名會解析為 Opus 4.6。將其設定為 Opus 4.8 ID 以使用最新模型:

159 99 

160```bash theme={null}100```bash theme={null}

161export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'101export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'

162export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'102export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'

163export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'103export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

164```104```


167 107 

168如需目前和舊版模型 ID,請參閱[模型概覽](https://platform.claude.com/docs/en/about-claude/models/overview)。如需完整的環境變數清單,請參閱[模型配置](/zh-TW/model-config#pin-models-for-third-party-deployments)。108如需目前和舊版模型 ID,請參閱[模型概覽](https://platform.claude.com/docs/en/about-claude/models/overview)。如需完整的環境變數清單,請參閱[模型配置](/zh-TW/model-config#pin-models-for-third-party-deployments)。

169 109 

170[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 會自動啟用。若要要求 1 小時的快取 TTL 而不是 5 分鐘的預設值,請設定下列變數;具有 1 小時 TTL 的快取寫入會以更高的費率計費:110[Prompt caching](/zh-TW/prompt-caching) 會自動啟用。若要要求 1 小時的快取 TTL 而不是 5 分鐘的預設值,請設定下列變數;具有 1 小時 TTL 的快取寫入會以更高的費率計費:

171 111 

172```bash theme={null}112```bash theme={null}

173export ENABLE_PROMPT_CACHING_1H=1113export ENABLE_PROMPT_CACHING_1H=1

174```114```

175 115 

176### 5. 執行 Claude Code116<h3 id="5-run-claude-code">

117 5. 執行 Claude Code

118</h3>

177 119 

178設定環境變數後,從您的專案目錄啟動 Claude Code:120設定環境變數後,從您的專案目錄啟動 Claude Code:

179 121 


183 125 

184Claude Code 從環境中讀取 `CLAUDE_CODE_USE_FOUNDRY` 和其他 Foundry 變數,並在第一個提示時連接到您的 Azure 資源。與 Bedrock 和 Vertex AI 不同,Foundry 沒有互動式設定精靈,因此步驟 3 和 4 中的環境變數是唯一的配置路徑。126Claude Code 從環境中讀取 `CLAUDE_CODE_USE_FOUNDRY` 和其他 Foundry 變數,並在第一個提示時連接到您的 Azure 資源。與 Bedrock 和 Vertex AI 不同,Foundry 沒有互動式設定精靈,因此步驟 3 和 4 中的環境變數是唯一的配置路徑。

185 127 

186## Azure RBAC 配置128<h2 id="azure-rbac-configuration">

129 Azure RBAC 配置

130</h2>

187 131 

188`Azure AI User` 和 `Cognitive Services User` 預設角色包含叫用 Claude 模型所需的所有權限。132`Azure AI User` 和 `Cognitive Services User` 預設角色包含叫用 Claude 模型所需的所有權限。

189 133 


203 147 

204如需詳細資訊,請參閱 [Microsoft Foundry RBAC 文件](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry)。148如需詳細資訊,請參閱 [Microsoft Foundry RBAC 文件](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry)。

205 149 

206## 故障排除150<h2 id="troubleshooting">

151 故障排除

152</h2>

207 153 

208如果您收到錯誤「Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed」:154如果您收到錯誤「Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed」:

209 155 

210* 在環境中配置 Entra ID,或設定 `ANTHROPIC_FOUNDRY_API_KEY`。156* 在環境中配置 Entra ID,或設定 `ANTHROPIC_FOUNDRY_API_KEY`。

211 157 

212## 其他資源158<h2 id="additional-resources">

159 其他資源

160</h2>

213 161 

214* [Microsoft Foundry 文件](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)162* [Microsoft Foundry 文件](https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry)

215* [Microsoft Foundry 模型](https://ai.azure.com/explore/models)163* [Microsoft Foundry 模型](https://ai.azure.com/explore/models)

model-config.md +129 −62

Details

6 6 

7> 了解 Claude Code 模型配置,包括模型別名如 `opusplan`7> 了解 Claude Code 模型配置,包括模型別名如 `opusplan`

8 8 

9## 可用模型9<h2 id="available-models">

10 可用模型

11</h2>

10 12 

11對於 Claude Code 中的 `model` 設定,您可以配置以下任一項:13對於 Claude Code 中的 `model` 設定,您可以配置以下任一項:

12 14 


21 `ANTHROPIC_BASE_URL` 改變請求的發送位置,而不是哪個模型回答它們。若要透過 LLM 閘道路由 Claude,請參閱 [LLM 閘道配置](/zh-TW/llm-gateway)。23 `ANTHROPIC_BASE_URL` 改變請求的發送位置,而不是哪個模型回答它們。若要透過 LLM 閘道路由 Claude,請參閱 [LLM 閘道配置](/zh-TW/llm-gateway)。

22</Note>24</Note>

23 25 

24### 模型別名26<h3 id="model-aliases">

27 模型別名

28</h3>

25 29 

26模型別名提供了一種便捷的方式來選擇模型設定,無需記住確切的版本號:30模型別名提供了一種便捷的方式來選擇模型設定,無需記住確切的版本號:

27 31 


36| **`opus[1m]`** | 使用 Opus 搭配[100 萬個 token 的 context window](https://platform.claude.com/docs/zh-TW/build-with-claude/context-windows#1m-token-context-window)進行長時間會話 |40| **`opus[1m]`** | 使用 Opus 搭配[100 萬個 token 的 context window](https://platform.claude.com/docs/zh-TW/build-with-claude/context-windows#1m-token-context-window)進行長時間會話 |

37| **`opusplan`** | 特殊模式,在 Plan Mode 期間使用 `opus`,然後在執行時切換到 `sonnet` |41| **`opusplan`** | 特殊模式,在 Plan Mode 期間使用 `opus`,然後在執行時切換到 `sonnet` |

38 42 

39在 Anthropic API [AWS 上的 Claude Platform](/zh-TW/claude-platform-on-aws) 上,`opus` 解析為 Opus 4.7,`sonnet` 解析為 Sonnet 4.6。在 Bedrock、Vertex 和 Foundry 上,`opus` 解析為 Opus 4.6,`sonnet` 解析為 Sonnet 4.5;透過明確選擇完整模型名稱或設定 `ANTHROPIC_DEFAULT_OPUS_MODEL` 或 `ANTHROPIC_DEFAULT_SONNET_MODEL`,這些提供者上可以使用更新的模型。43在 Anthropic API 上,`opus` 解析為 Opus 4.8,`sonnet` 解析為 Sonnet 4.6。在 [AWS 上的 Claude Platform](/zh-TW/claude-platform-on-aws) 上,`opus` 解析為 Opus 4.7,`sonnet` 解析為 Sonnet 4.6。在 Bedrock、Vertex 和 Foundry 上,`opus` 解析為 Opus 4.6,`sonnet` 解析為 Sonnet 4.5;透過明確選擇完整模型名稱或設定 `ANTHROPIC_DEFAULT_OPUS_MODEL` 或 `ANTHROPIC_DEFAULT_SONNET_MODEL`,這些提供者上可以使用更新的模型。

40 44 

41別名指向您提供者的推薦版本,並隨著時間推移而更新。若要固定到特定版本,請使用完整模型名稱(例如 `claude-opus-4-7`)或設定相應的環境變數,如 `ANTHROPIC_DEFAULT_OPUS_MODEL`。45別名指向您提供者的推薦版本,並隨著時間推移而更新。若要固定到特定版本,請使用完整模型名稱(例如 `claude-opus-4-8`)或設定相應的環境變數,如 `ANTHROPIC_DEFAULT_OPUS_MODEL`。

42 46 

43<Note>47<Note>

44 Opus 4.7 需要 Claude Code v2.1.111 或更新版本。執行 `claude update` 以升級。48 Opus 4.8 需要 Claude Code v2.1.154 或更新版本。執行 `claude update` 以升級。

45</Note>49</Note>

46 50 

47### 設定您的模型51<h3 id="setting-your-model">

52 設定您的模型

53</h3>

48 54 

49您可以透過多種方式配置模型,按優先順序列出:55您可以透過多種方式配置模型,按優先順序列出:

50 56 


533. **環境變數** - 設定 `ANTHROPIC_MODEL=<alias|name>`593. **環境變數** - 設定 `ANTHROPIC_MODEL=<alias|name>`

544. **設定** - 在設定檔中使用 `model` 欄位永久配置。604. **設定** - 在設定檔中使用 `model` 欄位永久配置。

55 61 

56您的 `/model` 選擇會儲存到使用者設定並在重新啟動後保持。自 v2.1.117 起,如果專案的 `.claude/settings.json` 固定了不同的模型,Claude Code 也會將您的選擇寫入 `.claude/settings.local.json`,以便在重新啟動後在該專案中繼續應用。受管設定優先級最高並在下次啟動時重新應用62自 v2.1.153 起,`/model` 會透過在您的使用者設定中寫入 `model` 欄位將您的選擇儲存為新會話的預設值在選擇器中:

57 63 

58當啟動時的活動模型來自專案或受管設定而非您自己的選擇時,啟動標題會顯示哪個設定檔設定了它。執行 `/model` 以覆蓋目前會話。64* `Enter`:切換模型並儲存為您的預設值

65* `s`:僅針對此會話切換模型

66 

67直接輸入 `/model <name>` 的行為類似於 `Enter`。專案和受管設定仍然優先,並在下次啟動時重新應用。

68 

69在 v2.1.144 至 v2.1.152 中,`/model` 僅適用於目前會話,選擇器中的 `d` 儲存預設值。

70 

71`--model` 旗標和 `ANTHROPIC_MODEL` 環境變數僅適用於您啟動它們的會話。若要同時在不同終端中執行不同的模型,請使用各自的 `--model` 旗標啟動每個終端,而不是使用 `/model` 切換。

72 

73使用 `claude --resume`、`--continue` 或 `/resume` 選擇器啟動的已恢復會話會保持它們在儲存文字記錄時使用的模型,無論目前的 `model` 設定如何。如果該模型已被淘汰,會話會回到正常的優先順序。這可防止另一個會話的 `/model` 選擇在恢復時改變模型。

74 

75當啟動時的活動模型來自專案或受管設定而非您自己的選擇時,啟動標題會顯示哪個設定檔設定了它。執行 `/model` 以覆蓋;專案或受管設定會在下次啟動時重新應用。

59 76 

60使用範例:77使用範例:

61 78 


78}95}

79```96```

80 97 

81## 限制模型選擇98<h2 id="restrict-model-selection">

99 限制模型選擇

100</h2>

82 101 

83企業管理員可以在[受管理或政策設定](/zh-TW/settings#settings-files)中使用 `availableModels` 來限制使用者可以選擇的模型。102企業管理員可以在[受管理或政策設定](/zh-TW/settings#settings-files)中使用 `availableModels` 來限制使用者可以選擇的模型。

84 103 


90}109}

91```110```

92 111 

93### 預設模型行為112<h3 id="default-model-behavior">

113 預設模型行為

114</h3>

94 115 

95模型選擇器中的「預設」選項不受 `availableModels` 影響。它始終保持可用,並代表系統的執行時預設值[基於使用者的訂閱層級](#default-model-setting)。116模型選擇器中的「預設」選項不受 `availableModels` 影響。它始終保持可用,並代表系統的執行時預設值[基於使用者的訂閱層級](#default-model-setting)。

96 117 

97即使使用 `availableModels: []`,使用者仍然可以使用其層級的預設模型來使用 Claude Code。118即使使用 `availableModels: []`,使用者仍然可以使用其層級的預設模型來使用 Claude Code。

98 119 

99### 控制使用者執行的模型120<h3 id="control-the-model-users-run-on">

121 控制使用者執行的模型

122</h3>

100 123 

101`model` 設定是初始選擇,而非強制執行。它設定會話啟動時哪個模型處於活動狀態,但使用者仍然可以開啟 `/model` 並選擇「預設」,這會解析為其層級的系統預設值,無論 `model` 設定為何。124`model` 設定是初始選擇,而非強制執行。它設定會話啟動時哪個模型處於活動狀態,但使用者仍然可以開啟 `/model` 並選擇「預設」,這會解析為其層級的系統預設值,無論 `model` 設定為何。

102 125 


120 143 

121沒有 `env` 區塊,在選擇器中選擇「預設」的使用者會獲得最新的 Sonnet 版本,繞過 `model` 和 `availableModels` 中的版本固定。144沒有 `env` 區塊,在選擇器中選擇「預設」的使用者會獲得最新的 Sonnet 版本,繞過 `model` 和 `availableModels` 中的版本固定。

122 145 

123### 合併行為146<h3 id="merge-behavior">

147 合併行為

148</h3>

124 149 

125當 `availableModels` 在多個層級設定時,例如使用者設定和專案設定,陣列會被合併並去重。若要強制執行嚴格的允許清單,請在受管理或政策設定中設定 `availableModels`,這具有最高優先順序。150當 `availableModels` 在多個層級設定時,例如使用者設定和專案設定,陣列會被合併並去重。若要強制執行嚴格的允許清單,請在受管理或政策設定中設定 `availableModels`,這具有最高優先順序。

126 151 

127### Mantle 模型 ID152<h3 id="mantle-model-ids">

153 Mantle 模型 ID

154</h3>

128 155 

129當[Bedrock Mantle 端點](/zh-TW/amazon-bedrock#use-the-mantle-endpoint)啟用時,`availableModels` 中以 `anthropic.` 開頭的項目會作為自訂選項新增到 `/model` 選擇器,並路由到 Mantle 端點。這是對[為第三方部署固定模型](#pin-models-for-third-party-deployments)中描述的僅別名匹配的例外。該設定仍然將選擇器限制為列出的項目,因此請在任何 Mantle ID 旁邊包含標準別名。156當[Bedrock Mantle 端點](/zh-TW/amazon-bedrock#use-the-mantle-endpoint)啟用時,`availableModels` 中以 `anthropic.` 開頭的項目會作為自訂選項新增到 `/model` 選擇器,並路由到 Mantle 端點。這是對[為第三方部署固定模型](#pin-models-for-third-party-deployments)中描述的僅別名匹配的例外。該設定仍然將選擇器限制為列出的項目,因此請在任何 Mantle ID 旁邊包含標準別名。

130 157 

131## 特殊模型行為158<h2 id="special-model-behavior">

159 特殊模型行為

160</h2>

132 161 

133### `default` 模型設定162<h3 id="default-model-setting">

163 `default` 模型設定

164</h3>

134 165 

135`default` 的行為取決於您的帳戶類型:166`default` 的行為取決於您的帳戶類型:

136 167 

137* **MaxTeam Premium**:預設為 Opus 4.7168* **MaxTeam Premium、Enterprise 隨用隨付和 Anthropic API**:預設為 Opus 4.8

138* **Pro、Team Standard、Enterprise Anthropic API**:預設為 Sonnet 4.6169* **AWS 上的 Claude Platform**:預設為 Opus 4.7

170* **Pro、Team Standard 和 Enterprise 訂閱席位**:預設為 Sonnet 4.6

139* **Bedrock、Vertex 和 Foundry**:預設為 Sonnet 4.5171* **Bedrock、Vertex 和 Foundry**:預設為 Sonnet 4.5

140 172 

141如果您達到 Opus 的使用閾值,Claude Code 可能會自動回退到 Sonnet173Enterprise 隨用隨付是指按使用量計費而非按訂閱席位計費的 Enterprise 組織

142 174 

143<Note>175Claude Code 可能會在您達到 Opus 的使用閾值時自動回退到 Sonnet。

144 2026 年 4 月 23 日,Enterprise 隨用隨付和 Anthropic API 使用者的預設模型將變更為 Opus 4.7。若要保持不同的預設值,請設定 `ANTHROPIC_MODEL` 或[伺服器管理設定](/zh-TW/server-managed-settings)中的 `model` 欄位。

145</Note>

146 176 

147### `opusplan` 模型設定177<h3 id="opusplan-model-setting">

178 `opusplan` 模型設定

179</h3>

148 180 

149`opusplan` 模型別名提供了一種自動化的混合方法:181`opusplan` 模型別名提供了一種自動化的混合方法:

150 182 


155 187 

156Plan Mode Opus 階段使用標準 200K context window 執行。[擴展 context](#extended-context) 中描述的自動 1M 升級適用於 `opus` 模型設定,不適用於 `opusplan`。188Plan Mode Opus 階段使用標準 200K context window 執行。[擴展 context](#extended-context) 中描述的自動 1M 升級適用於 `opus` 模型設定,不適用於 `opusplan`。

157 189 

158### 調整努力等級190<h3 id="adjust-effort-level">

191 調整努力等級

192</h3>

159 193 

160[努力等級](https://platform.claude.com/docs/en/build-with-claude/effort)控制自適應推理,讓模型根據任務複雜性決定是否以及在每一步上思考多少。較低的努力對於直接的任務更快且更便宜,而較高的努力為複雜問題提供更深入的推理。194[努力等級](https://platform.claude.com/docs/en/build-with-claude/effort)控制自適應推理,讓模型根據任務複雜性決定是否以及在每一步上思考多少。較低的努力對於直接的任務更快且更便宜,而較高的努力為複雜問題提供更深入的推理。

161 195 

162努力在 Opus 4.7、Opus 4.6 和 Sonnet 4.6 上受支援可用的等級取決於模型196可用的努力等級取決於模型此處未列出的模型不支援努力

163 197 

164| 模型 | 等級 |198| 模型 | 等級 |

165| :-------------------- | :---------------------------------- |199| :-------------------- | :---------------------------------- |

166| Opus 4.7 | `low`、`medium`、`high`、`xhigh`、`max` |200| Opus 4.8 和 Opus 4.7 | `low`、`medium`、`high`、`xhigh`、`max` |

167| Opus 4.6 和 Sonnet 4.6 | `low`、`medium`、`high`、`max` |201| Opus 4.6 和 Sonnet 4.6 | `low`、`medium`、`high`、`max` |

168 202 

169如果您設定活動模型不支援的等級,Claude Code 會回退到您設定的等級處或以下的最高支援等級。例如,`xhigh` 在 Opus 4.6 上執行為 `high`。203如果您設定活動模型不支援的等級,Claude Code 會回退到您設定的等級處或以下的最高支援等級。例如,`xhigh` 在 Opus 4.6 上執行為 `high`。

170 204 

171自 v2.1.117 起,Opus 4.7 上的預設努力為 `xhigh`,Opus 4.6 和 Sonnet 4.6 上的預設努力為 `high`。205Opus 4.8、Opus 4.6 和 Sonnet 4.6 上的預設努力為 `high`,Opus 4.7 上的預設努力為 `xhigh`

172 206 

173當您首次執行 Opus 4.7 時,Claude Code 會應用 `xhigh`即使您之前為 Opus 4.6 Sonnet 4.6 設定了不同的努力等級。執行 `/effort` 以在切換後選擇不同的等級。207當您首次執行 Opus 4.8 或 Opus 4.7 時,Claude Code 會應用該模型的預設努力即使您之前為另一個模型設定了不同的等級:Opus 4.8 上的 `high` 和 Opus 4.7 上的 `xhigh`。執行 `/effort` 以在切換後選擇不同的等級。

174 208 

175`low`、`medium`、`high` 和 `xhigh` 在會話間持續存在。`max` 提供最深入的推理,對 token 支出沒有限制,並且僅適用於目前會話,除非透過 `CLAUDE_CODE_EFFORT_LEVEL` 環境變數設定。209`low`、`medium`、`high` 和 `xhigh` 在會話間持續存在。`max` 提供最深入的推理,對 token 支出沒有限制,並且僅適用於目前會話,除非透過 `CLAUDE_CODE_EFFORT_LEVEL` 環境變數設定。

176 210 

177#### 選擇努力等級211`/effort` 選單也提供 `ultracode`。Ultracode 是 Claude Code 設定而非模型努力等級:它向模型發送 `xhigh`,並額外讓 Claude 為實質性任務協調[動態工作流程](/zh-TW/workflows)。它僅適用於目前會話。透過 `/effort` 設定,或透過 `--settings` 或 Agent SDK 控制請求傳遞 `"ultracode": true`。它不是 `effortLevel` 設定、`--effort` 旗標或 `CLAUDE_CODE_EFFORT_LEVEL` 的一部分。

212 

213<h4 id="choose-an-effort-level">

214 選擇努力等級

215</h4>

178 216 

179每個等級都在 token 支出和能力之間進行權衡。預設值適合大多數編碼任務;當您想要不同的平衡時進行調整。217每個等級都在 token 支出和能力之間進行權衡。預設值適合大多數編碼任務;當您想要不同的平衡時進行調整。

180 218 

181| 等級 | 何時使用 |219| 等級 | 何時使用 |

182| :------- | :---------------------------------------------------- |220| :---------- | :---------------------------------------------------------------------------- |

183| `low` | 保留用於短期、範圍有限、延遲敏感且不是智能敏感的任務 |221| `low` | 保留用於短期、範圍有限、延遲敏感且不是智能敏感的任務 |

184| `medium` | 減少成本敏感工作的 token 使用,可以權衡一些智能 |222| `medium` | 減少成本敏感工作的 token 使用,可以權衡一些智能 |

185| `high` | 平衡 token 使用和智能。用作智能敏感工作的最低要求,或相對於 `xhigh` 減少 token 支出 |223| `high` | 平衡 token 使用和智能。Opus 4.8、Opus 4.6 Sonnet 4.6 上的預設值 |

186| `xhigh` | 大多數編碼和代理任務的最佳結果。Opus 4.7 上的推薦預設值 |224| `xhigh` | 更深入的推理,token 支出更高。Opus 4.7 上的預設值 |

187| `max` | 可以改善困難任務的效能,但可能顯示遞減回報,容易過度思考。在廣泛採用前進行測試 |225| `max` | 可以改善困難任務的效能,但可能顯示遞減回報,容易過度思考。在廣泛採用前進行測試 |

226| `ultracode` | 一個 Claude Code 設定,為每個實質性任務規劃[動態工作流程](/zh-TW/workflows),每條訊息進行 `xhigh` 推理。僅限會話 |

188 227 

189努力量表按模型進行校準,因此相同的等級名稱在模型之間不代表相同的基礎值。228努力量表按模型進行校準,因此相同的等級名稱在模型之間不代表相同的基礎值。

190 229 

191#### 使用 ultrathink 進行一次性深入推理230<h4 id="use-ultrathink-for-one-off-deep-reasoning">

231 使用 ultrathink 進行一次性深入推理

232</h4>

192 233 

193在您的提示中的任何地方包含 `ultrathink` 以請求在該輪上進行更深入的推理,而不改變您的會話努力設定。Claude Code 識別該關鍵字並新增一個上下文指令。發送到 API 的努力等級保持不變。其他短語如「think」、「think hard」和「think more」會作為普通提示文本傳遞,不被識別為關鍵字。234在您的提示中的任何地方包含 `ultrathink` 以請求在該輪上進行更深入的推理,而不改變您的會話努力設定。Claude Code 識別該關鍵字並新增一個上下文指令。發送到 API 的努力等級保持不變。其他短語如「think」、「think hard」和「think more」會作為普通提示文本傳遞,不被識別為關鍵字。

194 235 

195#### 設定努力等級236<h4 id="set-the-effort-level">

237 設定努力等級

238</h4>

196 239 

197您可以透過以下任何方式改變努力:240您可以透過以下任何方式改變努力:

198 241 


200* **在 `/model` 中**:選擇模型時使用左/右箭頭鍵調整努力滑塊243* **在 `/model` 中**:選擇模型時使用左/右箭頭鍵調整努力滑塊

201* **`--effort` 旗標**:在啟動 Claude Code 時傳遞等級名稱以為單一會話設定244* **`--effort` 旗標**:在啟動 Claude Code 時傳遞等級名稱以為單一會話設定

202* **環境變數**:設定 `CLAUDE_CODE_EFFORT_LEVEL` 為等級名稱或 `auto`245* **環境變數**:設定 `CLAUDE_CODE_EFFORT_LEVEL` 為等級名稱或 `auto`

203* **設定**:在設定檔中設定 `effortLevel` 為 `low`、`medium`、`high` 或 `xhigh`。`max` 是[僅限會話](#adjust-effort-level),此處不接受246* **設定**:在設定檔中設定 `effortLevel` 為 `low`、`medium`、`high` 或 `xhigh`。`max` 和 `ultracode` 是[僅限會話](#adjust-effort-level),此處不接受

204* **Skill 和 subagent frontmatter**:在 [skill](/zh-TW/skills#frontmatter-reference) 或 [subagent](/zh-TW/sub-agents#supported-frontmatter-fields) markdown 檔案中設定 `effort` 以在該 skill 或 subagent 執行時覆蓋努力等級247* **Skill 和 subagent frontmatter**:在 [skill](/zh-TW/skills#frontmatter-reference) 或 [subagent](/zh-TW/sub-agents#supported-frontmatter-fields) markdown 檔案中設定 `effort` 以在該 skill 或 subagent 執行時覆蓋努力等級

205 248 

206環境變數優先於所有其他方法,然後是您配置的等級,然後是模型預設值。Frontmatter 努力在該 skill 或 subagent 活動時適用,覆蓋會話等級但不覆蓋環境變數。249環境變數優先於所有其他方法,然後是您配置的等級,然後是模型預設值。Frontmatter 努力在該 skill 或 subagent 活動時適用,覆蓋會話等級但不覆蓋環境變數。

207 250 

208當選擇支援的模型時,努力滑塊會出現在 `/model` 中。目前的努力等級也會顯示在標誌和微調器旁邊,例如「with low effort」,因此您可以確認哪個設定處於活動狀態,而無需開啟 `/model`。251當選擇支援的模型時,努力滑塊會出現在 `/model` 中。目前的努力等級也會顯示在標誌和微調器旁邊,例如「with low effort」,因此您可以確認哪個設定處於活動狀態,而無需開啟 `/model`。

209 252 

210#### 自適應推理和固定思考預算253<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">

254 自適應推理和固定思考預算

255</h4>

211 256 

212自適應推理使思考在每一步上都是可選的,因此 Claude 可以更快地回應常規提示,並為受益於思考的步驟保留更深入的思考。如果您想要 Claude 比目前等級產生的更頻繁或更少地思考,您可以直接在您的提示或 `CLAUDE.md` 中說明;模型在其努力設定範圍內回應該指導。257自適應推理使思考在每一步上都是可選的,因此 Claude 可以更快地回應常規提示,並為受益於思考的步驟保留更深入的思考。如果您想要 Claude 比目前等級產生的更頻繁或更少地思考,您可以直接在您的提示或 `CLAUDE.md` 中說明;模型在其努力設定範圍內回應該指導。

213 258 

214Opus 4.7 始終使用自適應推理。固定思考預算模式和 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 不適用於它。259Opus 4.7 及更新版本始終使用自適應推理。固定思考預算模式和 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 不適用於它。

215 260 

216在 Opus 4.6 和 Sonnet 4.6 上,您可以設定 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` 以恢復到由 `MAX_THINKING_TOKENS` 控制的先前固定思考預算。請參閱[環境變數](/zh-TW/env-vars)。261在 Opus 4.6 和 Sonnet 4.6 上,您可以設定 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` 以恢復到由 `MAX_THINKING_TOKENS` 控制的先前固定思考預算。請參閱[環境變數](/zh-TW/env-vars)。

217 262 

218### 擴展思考263<h3 id="extended-thinking">

264 擴展思考

265</h3>

219 266 

220擴展思考是 Claude 在回應前發出的推理。在支援[自適應推理](#adjust-effort-level)的模型上,努力等級是控制發生多少思考的主要控制項;下面的設定會開啟或關閉思考,並控制其顯示方式。267擴展思考是 Claude 在回應前發出的推理。在支援[自適應推理](#adjust-effort-level)的模型上,努力等級是控制發生多少思考的主要控制項;下面的設定會開啟或關閉思考,並控制其顯示方式。

221 268 


227 274 

228思考輸出預設為摺疊。按 `Ctrl+O` 以切換詳細模式並將推理視為灰色斜體文本。Anthropic API 上的互動式會話預設會收到編輯的思考區塊,因此如果您想要在展開時可用的完整摘要,請在[設定](/zh-TW/settings)中設定 `showThinkingSummaries: true`。您需要為所有生成的思考 token 付費,即使它們被摺疊或編輯。275思考輸出預設為摺疊。按 `Ctrl+O` 以切換詳細模式並將推理視為灰色斜體文本。Anthropic API 上的互動式會話預設會收到編輯的思考區塊,因此如果您想要在展開時可用的完整摘要,請在[設定](/zh-TW/settings)中設定 `showThinkingSummaries: true`。您需要為所有生成的思考 token 付費,即使它們被摺疊或編輯。

229 276 

230### 擴展 context277<h3 id="extended-context">

278 擴展 context

279</h3>

231 280 

232Opus 4.7、Opus 4.6 Sonnet 4.6 支援[100 萬個 token 的 context window](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window),用於具有大型程式碼庫的長時間會話。281Opus 4.6 及更新版本和 Sonnet 4.6 支援[100 萬個 token 的 context window](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window),用於具有大型程式碼庫的長時間會話。

233 282 

234可用性因模型和計畫而異。在 Max、Team 和 Enterprise 計畫上,Opus 會自動升級到 1M context,無需額外配置。這適用於 Team Standard 和 Team Premium 席位。Sonnet 搭配 1M context 不是自動升級的一部分,需要在每個訂閱計畫上進行[額外使用](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans),包括 Max。283可用性因模型和計畫而異。在 Max、Team 和 Enterprise 計畫上,Opus 會自動升級到 1M context,無需額外配置。這適用於 Team Standard 和 Team Premium 席位。Sonnet 搭配 1M context 不是自動升級的一部分,需要在每個訂閱計畫上進行[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans),包括 Max。

235 284 

236| 計畫 | Opus 搭配 1M context | Sonnet 搭配 1M context |285| 計畫 | Opus 搭配 1M context | Sonnet 搭配 1M context |

237| --------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |286| --------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |

238| Max、Team 和 Enterprise | 包含在訂閱中 | 需要[額外使用](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |287| Max、Team 和 Enterprise | 包含在訂閱中 | 需要[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

239| Pro | 需要[額外使用](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | 需要[額外使用](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |288| Pro | 需要[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | 需要[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

240| API 和隨用隨付 | 完全存取 | 完全存取 |289| API 和隨用隨付 | 完全存取 | 完全存取 |

241 290 

242若要完全禁用 1M context,請設定 `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`。這會從模型選擇器中移除 1M 模型變體。請參閱[環境變數](/zh-TW/env-vars)。291若要完全禁用 1M context,請設定 `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`。這會從模型選擇器中移除 1M 模型變體。請參閱[環境變數](/zh-TW/env-vars)。

243 292 

2441M context window 使用標準模型定價,超過 200K 的 token 無需額外費用。對於訂閱中包含擴展 context 的計畫,使用量仍由您的訂閱涵蓋。對於透過額外使用存取擴展 context 的計畫,token 會計入額外使用2931M context window 使用標準模型定價,超過 200K 的 token 無需額外費用。對於訂閱中包含擴展 context 的計畫,使用量仍由您的訂閱涵蓋。對於透過使用額度存取擴展 context 的計畫,token 會計入使用額度

245 294 

246如果您的帳戶支援 1M context,該選項會出現在最新版本 Claude Code 的模型選擇器(`/model`)中。如果您看不到它,請嘗試重新啟動您的會話。295如果您的帳戶支援 1M context,該選項會出現在最新版本 Claude Code 的模型選擇器(`/model`)中。如果您看不到它,請嘗試重新啟動您的會話。

247 296 


253/model sonnet[1m]302/model sonnet[1m]

254 303 

255# 或將 [1m] 附加到完整模型名稱304# 或將 [1m] 附加到完整模型名稱

256/model claude-opus-4-7[1m]305/model claude-opus-4-8[1m]

257```306```

258 307 

259## 檢查您目前的模型308<h2 id="checking-your-current-model">

309 檢查您目前的模型

310</h2>

260 311 

261您可以透過多種方式查看您目前使用的模型:312您可以透過多種方式查看您目前使用的模型:

262 313 

2631. 在[狀態行](/zh-TW/statusline)中(如果已配置)3141. 在[狀態行](/zh-TW/statusline)中(如果已配置)

2642. 在 `/status` 中,它也會顯示您的帳戶資訊。3152. 在 `/status` 中,它也會顯示您的帳戶資訊。

265 316 

266## 新增自訂模型選項317<h2 id="add-a-custom-model-option">

318 新增自訂模型選項

319</h2>

267 320 

268使用 `ANTHROPIC_CUSTOM_MODEL_OPTION` 將單一自訂項目新增到 `/model` 選擇器,而無需取代內建別名。這對於測試 Claude Code 預設不列出的模型 ID 很有用。對於 LLM 閘道部署,當設定 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` 時,Claude Code 可以從閘道的 `/v1/models` 端點填入選擇器,因此只有在探索被停用或未傳回您想要的模型時,才需要此變數。請參閱 [LLM 閘道模型選擇](/zh-TW/llm-gateway#model-selection)。321使用 `ANTHROPIC_CUSTOM_MODEL_OPTION` 將單一自訂項目新增到 `/model` 選擇器,而無需取代內建別名。這對於測試 Claude Code 預設不列出的模型 ID 很有用。對於 LLM 閘道部署,當設定 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` 時,Claude Code 可以從閘道的 `/v1/models` 端點填入選擇器,因此只有在探索被停用或未傳回您想要的模型時,才需要此變數。請參閱 [LLM 閘道模型選擇](/zh-TW/llm-gateway#model-selection)。

269 322 


279 332 

280Claude Code 會跳過在 `ANTHROPIC_CUSTOM_MODEL_OPTION` 中設定的模型 ID 的驗證,因此您可以使用您的 API 端點接受的任何字串。333Claude Code 會跳過在 `ANTHROPIC_CUSTOM_MODEL_OPTION` 中設定的模型 ID 的驗證,因此您可以使用您的 API 端點接受的任何字串。

281 334 

282## 環境變數335<h2 id="environment-variables">

336 環境變數

337</h2>

283 338 

284您可以使用以下環境變數,這些變數必須是完整的**模型名稱**(或您的 API 提供者的等效項),以控制別名對應到的模型名稱。339您可以使用以下環境變數,這些變數必須是完整的**模型名稱**(或您的 API 提供者的等效項),以控制別名對應到的模型名稱。

285 340 

286| 環境變數 | 描述 |341| 環境變數 | 描述 |

287| -------------------------------- | ----------------------------------------------------------------------------------------------------------- |342| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

288| `ANTHROPIC_DEFAULT_OPUS_MODEL` | 用於 `opus` 的模型,或在 Plan Mode 活動時用於 `opusplan` 的模型。 |343| `ANTHROPIC_DEFAULT_OPUS_MODEL` | 用於 `opus` 的模型,或在 Plan Mode 活動時用於 `opusplan` 的模型。 |

289| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 用於 `sonnet` 的模型,或在 Plan Mode 未活動時用於 `opusplan` 的模型。 |344| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 用於 `sonnet` 的模型,或在 Plan Mode 未活動時用於 `opusplan` 的模型。 |

290| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 用於 `haiku` 的模型,或[背景功能](/zh-TW/costs#background-token-usage) |345| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 用於 `haiku` 的模型,或[背景功能](/zh-TW/costs#background-token-usage) |

291| `CLAUDE_CODE_SUBAGENT_MODEL` | 用於所有 [subagents](/zh-TW/sub-agents#choose-a-model) 的模型。覆蓋每次調用的 `model` 參數和 subagent 定義的 `model` frontmatter |346| `CLAUDE_CODE_SUBAGENT_MODEL` | 用於所有 [subagents](/zh-TW/sub-agents#choose-a-model) 和 [agent teams](/zh-TW/agent-teams) 的模型。覆蓋每次調用的 `model` 參數和 subagent 定義的 `model` frontmatter。設定為 `inherit` 以改用一般模型解析 |

292 347 

293注意:`ANTHROPIC_SMALL_FAST_MODEL` 已棄用,改用 `ANTHROPIC_DEFAULT_HAIKU_MODEL`。348注意:`ANTHROPIC_SMALL_FAST_MODEL` 已棄用,改用 `ANTHROPIC_DEFAULT_HAIKU_MODEL`。

294 349 

295### 為第三方部署固定模型350<h3 id="pin-models-for-third-party-deployments">

351 為第三方部署固定模型

352</h3>

296 353 

297透過 [Bedrock](/zh-TW/amazon-bedrock)、[Vertex AI](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry) 或 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 部署 Claude Code 時,在向使用者推出前固定模型版本。354透過 [Bedrock](/zh-TW/amazon-bedrock)、[Vertex AI](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry) 或 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 部署 Claude Code 時,在向使用者推出前固定模型版本。

298 355 


306 363 

307| 提供者 | 範例 |364| 提供者 | 範例 |

308| :-------- | :------------------------------------------------------------------- |365| :-------- | :------------------------------------------------------------------- |

309| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-7'` |366| Bedrock | `export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-8'` |

310| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |367| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |

311| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'` |368| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |

312 369 

313對 `ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 應用相同的模式。有關所有提供者的目前和舊版模型 ID,請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)。若要將使用者升級到新模型版本,請更新這些環境變數並重新部署。370對 `ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 應用相同的模式。有關所有提供者的目前和舊版模型 ID,請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)。若要將使用者升級到新模型版本,請更新這些環境變數並重新部署。

314 371 

315若要為固定模型啟用[擴展 context](#extended-context),請將 `[1m]` 附加到 `ANTHROPIC_DEFAULT_OPUS_MODEL` 或 `ANTHROPIC_DEFAULT_SONNET_MODEL` 中的模型 ID:372若要為固定模型啟用[擴展 context](#extended-context),請將 `[1m]` 附加到 `ANTHROPIC_DEFAULT_OPUS_MODEL` 或 `ANTHROPIC_DEFAULT_SONNET_MODEL` 中的模型 ID:

316 373 

317```bash theme={null}374```bash theme={null}

318export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7[1m]'375export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'

319```376```

320 377 

321`[1m]` 後綴將 1M context window 應用於該別名的所有使用,包括 `opusplan`。Claude Code 在將模型 ID 發送到您的提供者之前會移除該後綴只有當基礎模型支援 1M context(例如 Opus 4.7 Sonnet 4.6)時才附加 `[1m]`378`[1m]` 後綴將 1M context window 應用於 `opus` `sonnet` 別名的所有使用它不會擴展 `opusplan` plan-mode Opus 階段該階段[仍然上限為 200K](#opusplan-model-setting)

379 

380* Claude Code 在將模型 ID 發送到您的提供者之前會移除該後綴。

381* 只有當基礎模型[支援 1M context](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) 時,才附加 `[1m]`。

382* 後綴是按變數讀取的,而不是按模型讀取的。在 Bedrock、Vertex 和 Foundry 上,一個變數中沒有 `[1m]` 的模型 ID 會使用 200K context,即使另一個變數設定相同的模型並帶有後綴。

322 383 

323<Note>384<Note>

324 使用第三方提供者時,`settings.availableModels` 允許清單仍然適用。篩選會根據模型別名(`opus`、`sonnet`、`haiku`)進行匹配,而不是提供者特定的模型 ID。385 使用第三方提供者時,`settings.availableModels` 允許清單仍然適用。篩選會根據模型別名(`opus`、`sonnet`、`haiku`)進行匹配,而不是提供者特定的模型 ID。

325</Note>386</Note>

326 387 

327### 為第三方部署自訂固定模型顯示和能力388<h3 id="customize-pinned-model-display-and-capabilities">

389 自訂固定模型顯示和能力

390</h3>

328 391 

329當您在第三方提供者上固定模型時,提供者特定的 ID 會按原樣出現在 `/model` 選擇器中,Claude Code 可能無法識別模型支援的功能。您可以使用每個固定模型的伴隨環境變數覆蓋顯示名稱並宣告能力。392當您在第三方提供者上固定模型時,提供者特定的 ID 會按原樣出現在 `/model` 選擇器中,Claude Code 可能無法識別模型支援的功能。您可以使用每個固定模型的伴隨環境變數覆蓋顯示名稱並宣告能力。

330 393 


360export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'423export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES='effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking'

361```424```

362 425 

363### 按版本覆蓋模型 ID426<h3 id="override-model-ids-per-version">

427 按版本覆蓋模型 ID

428</h3>

364 429 

365上述家族級環境變數為每個家族別名配置一個模型 ID。如果您需要將同一家族內的多個版本對應到不同的提供者 ID,請改用 `modelOverrides` 設定。430上述家族級環境變數為每個家族別名配置一個模型 ID。如果您需要將同一家族內的多個版本對應到不同的提供者 ID,請改用 `modelOverrides` 設定。

366 431 


386 451 

387`modelOverrides` 與 `availableModels` 一起運作。允許清單會根據 Anthropic 模型 ID 進行評估,而不是覆蓋值,因此 `availableModels` 中的項目(如 `"opus"`)即使 Opus 版本對應到 ARN 時仍會繼續匹配。452`modelOverrides` 與 `availableModels` 一起運作。允許清單會根據 Anthropic 模型 ID 進行評估,而不是覆蓋值,因此 `availableModels` 中的項目(如 `"opus"`)即使 Opus 版本對應到 ARN 時仍會繼續匹配。

388 453 

389### Prompt caching 配置454<h3 id="prompt-caching-configuration">

455 Prompt caching 配置

456</h3>

390 457 

391Claude Code 自動使用 [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) 來優化效能並降低成本。您可以全域禁用 prompt caching 或針對特定模型層級禁用:458Claude Code 自動使用 [prompt caching](/zh-TW/prompt-caching) 來優化效能並降低成本。您可以全域禁用 prompt caching 或針對特定模型層級禁用:

392 459 

393| 環境變數 | 描述 |460| 環境變數 | 描述 |

394| ------------------------------- | ------------------------------------------- |461| ------------------------------- | ------------------------------------------ |

395| `DISABLE_PROMPT_CACHING` | 設定為 `1` 以禁用所有模型的 prompt caching優先於每個模型的設定 |462| `DISABLE_PROMPT_CACHING` | 設定為 `1` 以禁用所有模型的 prompt caching優先於每個模型的設定 |

396| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以僅禁用 Haiku 模型的 prompt caching |463| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以僅禁用 Haiku 模型的 prompt caching |

397| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以僅禁用 Sonnet 模型的 prompt caching |464| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以僅禁用 Sonnet 模型的 prompt caching |

398| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以僅禁用 Opus 模型的 prompt caching |465| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以僅禁用 Opus 模型的 prompt caching |

399 466 

400這些環境變數為您提供對 prompt caching 行為的細粒度控制。全域 `DISABLE_PROMPT_CACHING` 設定優先於模型特定的設定,讓您可以在需要時快速禁用所有快取。每個模型的設定對於選擇性控制很有用,例如在偵錯特定模型或使用可能具有不同快取實現的雲端提供者時467若要變更快取 TTL 或瞭解什麼會觸發快取未命中,請參閱 [Claude Code 如何使用 prompt caching](/zh-TW/prompt-caching)

monitoring-usage.md +286 −88

Details

8 8 

9透過 OpenTelemetry (OTel) 匯出遙測資料,追蹤 Claude Code 在整個組織中的使用情況、成本和工具活動。Claude Code 透過標準指標協議匯出指標作為時間序列資料、透過日誌/事件協議匯出事件,以及可選地透過[追蹤協議](#traces-beta)匯出分散式追蹤。配置您的指標、日誌和追蹤後端以符合您的監控需求。9透過 OpenTelemetry (OTel) 匯出遙測資料,追蹤 Claude Code 在整個組織中的使用情況、成本和工具活動。Claude Code 透過標準指標協議匯出指標作為時間序列資料、透過日誌/事件協議匯出事件,以及可選地透過[追蹤協議](#traces-beta)匯出分散式追蹤。配置您的指標、日誌和追蹤後端以符合您的監控需求。

10 10 

11## 快速開始11<h2 id="quick-start">

12 快速開始

13</h2>

12 14 

13使用環境變數配置 OpenTelemetry:15使用環境變數配置 OpenTelemetry:

14 16 


41 43 

42如需完整配置選項,請參閱 [OpenTelemetry 規範](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options)。44如需完整配置選項,請參閱 [OpenTelemetry 規範](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options)。

43 45 

44## 管理員配置46<h2 id="administrator-configuration">

47 管理員配置

48</h2>

45 49 

46管理員可以透過[受管設定檔](/zh-TW/settings#settings-files)為所有使用者配置 OpenTelemetry 設定。這允許在整個組織中集中控制遙測設定。請參閱[設定優先順序](/zh-TW/settings#settings-precedence)以了解有關如何應用設定的更多資訊。50管理員可以透過[受管設定檔](/zh-TW/settings#settings-files)為所有使用者配置 OpenTelemetry 設定。這允許在整個組織中集中控制遙測設定。請參閱[設定優先順序](/zh-TW/settings#settings-precedence)以了解有關如何應用設定的更多資訊。

47 51 


66 70 

67Claude Code 不會將 `OTEL_*` 環境變數傳遞給它產生的子程序,包括 Bash 工具、hooks、MCP 伺服器和語言伺服器。透過 Bash 工具執行的 OpenTelemetry 檢測應用程式不會繼承 Claude Code 的匯出器端點或標頭,因此如果該應用程式需要匯出自己的遙測,請直接在命令中設定這些變數。71Claude Code 不會將 `OTEL_*` 環境變數傳遞給它產生的子程序,包括 Bash 工具、hooks、MCP 伺服器和語言伺服器。透過 Bash 工具執行的 OpenTelemetry 檢測應用程式不會繼承 Claude Code 的匯出器端點或標頭,因此如果該應用程式需要匯出自己的遙測,請直接在命令中設定這些變數。

68 72 

69## 配置詳情73<h2 id="configuration-details">

74 配置詳情

75</h2>

70 76 

71### 常見配置變數77<h3 id="common-configuration-variables">

78 常見配置變數

79</h3>

72 80 

73| 環境變數 | 描述 | 範例值 |81| 環境變數 | 描述 | 範例值 |

74| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |82| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |


85| `OTEL_METRIC_EXPORT_INTERVAL` | 匯出間隔(毫秒)(預設:60000) | `5000`、`60000` |93| `OTEL_METRIC_EXPORT_INTERVAL` | 匯出間隔(毫秒)(預設:60000) | `5000`、`60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | 日誌匯出間隔(毫秒)(預設:5000) | `1000`、`10000` |94| `OTEL_LOGS_EXPORT_INTERVAL` | 日誌匯出間隔(毫秒)(預設:5000) | `1000`、`10000` |

87| `OTEL_LOG_USER_PROMPTS` | 啟用使用者提示內容的日誌記錄(預設:停用) | `1` 以啟用 |95| `OTEL_LOG_USER_PROMPTS` | 啟用使用者提示內容的日誌記錄(預設:停用) | `1` 以啟用 |

88| `OTEL_LOG_TOOL_DETAILS` | 啟用在工具事件和追蹤跨度屬性中記錄工具參數和輸入引數的日誌:Bash 命令、MCP 伺服器和工具名稱、技能名稱和工具輸入。也在 `user_prompt` 事件上啟用自訂、plugin 和 MCP 命令名稱(預設:停用) | `1` 以啟用 |96| `OTEL_LOG_TOOL_DETAILS` | 啟用在工具事件和追蹤跨度屬性中記錄工具參數和輸入引數的日誌:Bash 命令、MCP 伺服器和工具名稱、Skill 名稱和工具輸入。也在 `user_prompt` 事件上啟用自訂、plugin 和 MCP 命令名稱(預設:停用) | `1` 以啟用 |

89| `OTEL_LOG_TOOL_CONTENT` | 啟用在跨度事件中記錄工具輸入和輸出內容的日誌(預設:停用)。需要[追蹤](#traces-beta)。內容在 60 KB 處截斷 | `1` 以啟用 |97| `OTEL_LOG_TOOL_CONTENT` | 啟用在跨度事件中記錄工具輸入和輸出內容的日誌(預設:停用)。需要[追蹤](#traces-beta)。內容在 60 KB 處截斷 | `1` 以啟用 |

90| `OTEL_LOG_RAW_API_BODIES` | 將完整的 Anthropic Messages API 請求和回應 JSON 作為 `api_request_body` / `api_response_body` 日誌事件發出(預設:停用)。主體包括整個對話歷史記錄。啟用此選項意味著同意 `OTEL_LOG_USER_PROMPTS`、`OTEL_LOG_TOOL_DETAILS` 和 `OTEL_LOG_TOOL_CONTENT` 會揭露的所有內容 | `1` 用於在 60 KB 處截斷的內聯主體,或 `file:<dir>` 用於磁碟上未截斷的主體,事件中有 `body_ref` 指標 |98| `OTEL_LOG_RAW_API_BODIES` | 將完整的 Anthropic Messages API 請求和回應 JSON 作為 `api_request_body` / `api_response_body` 日誌事件發出(預設:停用)。主體包括整個對話歷史記錄。啟用此選項意味著同意 `OTEL_LOG_USER_PROMPTS`、`OTEL_LOG_TOOL_DETAILS` 和 `OTEL_LOG_TOOL_CONTENT` 會揭露的所有內容 | `1` 用於在 60 KB 處截斷的內聯主體,或 `file:<dir>` 用於磁碟上未截斷的主體,事件中有 `body_ref` 指標 |

91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | 指標時間性偏好(預設:`delta`)。如果您的後端期望累積時間性,請設定為 `cumulative` | `delta`、`cumulative` |99| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | 指標時間性偏好(預設:`delta`)。如果您的後端期望累積時間性,請設定為 `cumulative` | `delta`、`cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 重新整理動態標頭的間隔(預設:1740000ms / 29 分鐘) | `900000` |100| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 重新整理動態標頭的間隔(預設:1740000ms / 29 分鐘) | `900000` |

93 101 

94### mTLS 身份驗證102<h3 id="mtls-authentication">

103 mTLS 身份驗證

104</h3>

95 105 

96您為 OTLP 匯出器配置用戶端憑證的方式取決於該訊號使用的 OTLP 協議,透過 `OTEL_EXPORTER_OTLP_PROTOCOL` 或每個訊號的覆蓋設定。相同的配置適用於指標、日誌和追蹤。106您為 OTLP 匯出器配置用戶端憑證的方式取決於該訊號使用的 OTLP 協議,透過 `OTEL_EXPORTER_OTLP_PROTOCOL` 或每個訊號的覆蓋設定。相同的配置適用於指標、日誌和追蹤。

97 107 


102 112 

103對於 `grpc`,OpenTelemetry SDK 直接讀取標準 OTLP 變數,因此設定每個訊號指標變數的現有配置會繼續運作。113對於 `grpc`,OpenTelemetry SDK 直接讀取標準 OTLP 變數,因此設定每個訊號指標變數的現有配置會繼續運作。

104 114 

105### 指標基數控制115<h3 id="metrics-cardinality-control">

116 指標基數控制

117</h3>

106 118 

107以下環境變數控制指標中包含哪些屬性以管理基數:119以下環境變數控制指標中包含哪些屬性以管理基數:

108 120 

109| 環境變數 | 描述 | 預設值 | 停用範例 |121| 環境變數 | 描述 | 預設值 | 停用範例 |

110| ----------------------------------- | ----------------------------------------------- | ------- | ------- |122| ------------------------------------------ | ----------------------------------------------- | ------- | ------- |

111| `OTEL_METRICS_INCLUDE_SESSION_ID` | 在指標中包含 session.id 屬性 | `true` | `false` |123| `OTEL_METRICS_INCLUDE_SESSION_ID` | 在指標中包含 session.id 屬性 | `true` | `false` |

112| `OTEL_METRICS_INCLUDE_VERSION` | 在指標中包含 app.version 屬性 | `false` | `true` |124| `OTEL_METRICS_INCLUDE_VERSION` | 在指標中包含 app.version 屬性 | `false` | `true` |

113| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 在指標中包含 user.account\_uuid 和 user.account\_id 屬性 | `true` | `false` |125| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | 在指標中包含 user.account\_uuid 和 user.account\_id 屬性 | `true` | `false` |

126| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | 在指標中包含 app.entrypoint 屬性 | `false` | `true` |

127| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | 將 `OTEL_RESOURCE_ATTRIBUTES` 中的鍵作為屬性包含在指標資料點上 | `true` | `false` |

114 128 

115這些變數有助於控制指標的基數,這會影響指標後端中的儲存需求和查詢效能。較低的基數通常意味著更好的效能和更低的儲存成本,但分析的資料粒度較低。129這些變數有助於控制指標的基數,這會影響指標後端中的儲存需求和查詢效能。較低的基數通常意味著更好的效能和更低的儲存成本,但分析的資料粒度較低。

116 130 

117### Traces (beta)131<h3 id="traces-beta">

132 Traces (beta)

133</h3>

118 134 

119分散式追蹤匯出跨度,將每個使用者提示連結到它觸發的 API 請求和工具執行,因此您可以在追蹤後端中將完整請求檢視為單個追蹤。135分散式追蹤匯出跨度,將每個使用者提示連結到它觸發的 API 請求和工具執行,因此您可以在追蹤後端中將完整請求檢視為單個追蹤。

120 136 


132 148 

133當追蹤處於活動狀態時,Bash 和 PowerShell 子程序會自動繼承包含活動工具執行跨度的 W3C 追蹤上下文的 `TRACEPARENT` 環境變數。這讓任何讀取 `TRACEPARENT` 的子程序都可以在同一追蹤下將其自己的跨度作為父項,透過 Claude 執行的指令碼和命令啟用端到端分散式追蹤。149當追蹤處於活動狀態時,Bash 和 PowerShell 子程序會自動繼承包含活動工具執行跨度的 W3C 追蹤上下文的 `TRACEPARENT` 環境變數。這讓任何讀取 `TRACEPARENT` 的子程序都可以在同一追蹤下將其自己的跨度作為父項,透過 Claude 執行的指令碼和命令啟用端到端分散式追蹤。

134 150 

151當追蹤處於活動狀態且 Claude Code 直接連接到 Anthropic API 時,每個模型請求都會攜帶設定為 `claude_code.llm_request` 跨度上下文的 W3C `traceparent` 標頭,並且 API 的 `traceresponse` 標頭被記錄為跨度連結。這些一起透過任何相容的中介將 Claude Code 的用戶端跨度連接到伺服器端追蹤。標頭不會傳送給第三方提供者。

152 

153預設情況下,模型和 HTTP MCP 請求上的 `traceparent` 標頭僅在 `ANTHROPIC_BASE_URL` 未設定或指向 Anthropic API 時傳送,因為某些代理會拒絕無法識別的標頭。子程序 `TRACEPARENT` 變數由相同的開關控制以保持一致性。如果您透過自訂 `ANTHROPIC_BASE_URL` 代理執行 Claude Code 並想要傳播追蹤上下文,請設定 `CLAUDE_CODE_PROPAGATE_TRACEPARENT=1`。

154 

135在 Agent SDK 和以 `-p` 啟動的非互動式工作階段中,Claude Code 也會在啟動每個互動跨度時從其自己的環境中讀取 `TRACEPARENT` 和 `TRACESTATE`。這讓嵌入程序將其活動 W3C 追蹤上下文傳遞到子程序中,以便 Claude Code 的跨度顯示為呼叫者分散式追蹤的子項。互動式工作階段會忽略入站 `TRACEPARENT` 以避免意外繼承來自 CI 或容器環境的環境值。155在 Agent SDK 和以 `-p` 啟動的非互動式工作階段中,Claude Code 也會在啟動每個互動跨度時從其自己的環境中讀取 `TRACEPARENT` 和 `TRACESTATE`。這讓嵌入程序將其活動 W3C 追蹤上下文傳遞到子程序中,以便 Claude Code 的跨度顯示為呼叫者分散式追蹤的子項。互動式工作階段會忽略入站 `TRACEPARENT` 以避免意外繼承來自 CI 或容器環境的環境值。

136 156 

137#### 跨度階層157<h4 id="span-hierarchy">

158 跨度階層

159</h4>

138 160 

139每個使用者提示啟動一個 `claude_code.interaction` 根跨度。API 呼叫、工具呼叫和 hook 執行被記錄為其子項。工具跨度有兩個自己的子跨度:一個用於等待權限決定所花費的時間,一個用於執行本身。當 Task 工具產生子代理時,子代理的 API 和工具跨度會嵌套在父項的 `claude_code.tool` 跨度下。161每個使用者提示啟動一個 `claude_code.interaction` 根跨度。API 呼叫、工具呼叫和 hook 執行被記錄為其子項。工具跨度有兩個自己的子跨度:一個用於等待權限決定所花費的時間,一個用於執行本身。當 Agent 工具或舊版 Task 工具產生子代理時,子代理的 API 和工具跨度會嵌套在父項的 `claude_code.tool` 跨度下。

140 162 

141```text theme={null}163```text theme={null}

142claude_code.interaction164claude_code.interaction


145└── claude_code.tool167└── claude_code.tool

146 ├── claude_code.tool.blocked_on_user168 ├── claude_code.tool.blocked_on_user

147 ├── claude_code.tool.execution169 ├── claude_code.tool.execution

148 └── (Task tool) subagent claude_code.llm_request / claude_code.tool spans170 └── (Agent tool) subagent claude_code.llm_request / claude_code.tool spans

149```171```

150 172 

151在 Agent SDK 和 `claude -p` 工作階段中,當環境中設定 `TRACEPARENT` 時,`claude_code.interaction` 本身會成為呼叫者跨度的子項。173在 Agent SDK 和 `claude -p` 工作階段中,當環境中設定 `TRACEPARENT` 時,`claude_code.interaction` 本身會成為呼叫者跨度的子項。

152 174 

153#### 跨度屬性175<h4 id="span-attributes">

176 跨度屬性

177</h4>

154 178 

155每個跨度都帶有[標準屬性](#standard-attributes)加上與其名稱相符的 `span.type` 屬性。下表列出在每個跨度上設定的其他屬性。`llm_request`、`tool.execution` 和 `hook` 跨度在記錄失敗時設定 OpenTelemetry 狀態 `ERROR`;其他跨度始終以狀態 `UNSET` 結束。179每個跨度都帶有[標準屬性](#standard-attributes)加上與其名稱相符的 `span.type` 屬性。下表列出在每個跨度上設定的其他屬性。`llm_request`、`tool.execution` 和 `hook` 跨度在記錄失敗時設定 OpenTelemetry 狀態 `ERROR`;其他跨度始終以狀態 `UNSET` 結束。

156 180 


197**`claude_code.tool`**221**`claude_code.tool`**

198 222 

199| 屬性 | 描述 | 由以下控制 |223| 屬性 | 描述 | 由以下控制 |

200| --------------- | --------------------------- | ----------------------- |224| ----------------- | --------------------------------- | ----------------------- |

201| `tool_name` | 工具名稱 | |225| `tool_name` | 工具名稱 | |

202| `duration_ms` | 包括權限等待和執行的牆上時間持續時間 | |226| `duration_ms` | 包括權限等待和執行的牆上時間持續時間 | |

203| `result_tokens` | 工具結果的近似權杖大小 | |227| `result_tokens` | 工具結果的近似權杖大小 | |

228| `agent_id` | 發出請求的子代理或隊友的識別碼。在主工作階段上不存在 | |

229| `parent_agent_id` | 產生此代理的代理的識別碼。對於主工作階段和直接從其產生的代理不存在 | |

204| `file_path` | Read、Edit 和 Write 工具的目標檔案路徑 | `OTEL_LOG_TOOL_DETAILS` |230| `file_path` | Read、Edit 和 Write 工具的目標檔案路徑 | `OTEL_LOG_TOOL_DETAILS` |

205| `full_command` | Bash 工具的命令字串 | `OTEL_LOG_TOOL_DETAILS` |231| `full_command` | Bash 工具的命令字串 | `OTEL_LOG_TOOL_DETAILS` |

206| `skill_name` | Skill 工具的技能名稱 | `OTEL_LOG_TOOL_DETAILS` |232| `skill_name` | Skill 工具的技能名稱 | `OTEL_LOG_TOOL_DETAILS` |

207| `subagent_type` | Task 工具的子代理類型 | `OTEL_LOG_TOOL_DETAILS` |233| `subagent_type` | Agent 工具或舊版 Task 工具的子代理類型 | `OTEL_LOG_TOOL_DETAILS` |

208 234 

209當 `OTEL_LOG_TOOL_CONTENT=1` 時,此跨度也會記錄一個 `tool.output` 跨度事件,其屬性包含工具的輸入和輸出主體,在每個屬性處截斷 60 KB。235當 `OTEL_LOG_TOOL_CONTENT=1` 時,此跨度也會記錄一個 `tool.output` 跨度事件,其屬性包含工具的輸入和輸出主體,在每個屬性處截斷 60 KB。

210 236 


244 其他內容承載屬性,例如 `new_context`、`system_prompt_preview`、`user_system_prompt`、`tool_input` 和 `response.model_output`,僅在詳細 beta 追蹤處於活動狀態時發出。它們不是穩定跨度架構的一部分。`user_system_prompt` 另外需要 `OTEL_LOG_USER_PROMPTS=1`。它僅包含您透過 `systemPrompt` SDK 選項或 `--system-prompt` 和 `--append-system-prompt` 旗標提供的系統提示文字,在 60 KB 處截斷,並且每個工作階段發出一次而不是每個請求發出一次。270 其他內容承載屬性,例如 `new_context`、`system_prompt_preview`、`user_system_prompt`、`tool_input` 和 `response.model_output`,僅在詳細 beta 追蹤處於活動狀態時發出。它們不是穩定跨度架構的一部分。`user_system_prompt` 另外需要 `OTEL_LOG_USER_PROMPTS=1`。它僅包含您透過 `systemPrompt` SDK 選項或 `--system-prompt` 和 `--append-system-prompt` 旗標提供的系統提示文字,在 60 KB 處截斷,並且每個工作階段發出一次而不是每個請求發出一次。

245</Note>271</Note>

246 272 

247### 動態標頭273<h3 id="dynamic-headers">

274 動態標頭

275</h3>

248 276 

249對於需要動態身份驗證的企業環境,您可以配置指令碼來動態產生標頭。動態標頭僅適用於 `http/protobuf` 和 `http/json` 協議。`grpc` 匯出器僅使用靜態 `OTEL_EXPORTER_OTLP_HEADERS` 值。277對於需要動態身份驗證的企業環境,您可以配置指令碼來動態產生標頭。動態標頭僅適用於 `http/protobuf` 和 `http/json` 協議。`grpc` 匯出器僅使用靜態 `OTEL_EXPORTER_OTLP_HEADERS` 值。

250 278 

251#### 設定配置279<h4 id="settings-configuration">

280 設定配置

281</h4>

252 282 

253新增至您的 `.claude/settings.json`:283新增至您的 `.claude/settings.json`:

254 284 


258}288}

259```289```

260 290 

261#### 指令碼需求291該值可以是可執行檔的路徑,包括包含空格的路徑,或帶有引數的 shell 命令行。在 Windows 上,該值始終透過 shell 執行,因此在 JSON 值內引用包含空格的路徑。

292 

293<h4 id="script-requirements">

294 指令碼需求

295</h4>

262 296 

263指令碼必須輸出有效的 JSON,其中包含代表 HTTP 標頭的字串鍵值對:297指令碼必須輸出有效的 JSON,其中包含代表 HTTP 標頭的字串鍵值對:

264 298 


268echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"302echo "{\"Authorization\": \"Bearer $(get-token.sh)\", \"X-API-Key\": \"$(get-api-key.sh)\"}"

269```303```

270 304 

271#### 重新整理行為305如果協助程式失敗或列印不符合這些要求的輸出,Claude Code 會在以下位置報告錯誤:

306 

307* `/doctor` 輸出

308* 使用 [`--debug`](/zh-TW/cli-reference#cli-flags) 執行或在工作階段中執行 `/debug` 後的除錯日誌

309* stderr,在以 `-p` 啟動的非互動式工作階段中

310 

311<h4 id="refresh-behavior">

312 重新整理行為

313</h4>

272 314 

273標頭協助程式指令碼在啟動時執行,之後定期執行以支援權杖重新整理。預設情況下,指令碼每 29 分鐘執行一次。使用 `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` 環境變數自訂間隔。315標頭協助程式指令碼在啟動時執行,之後定期執行以支援權杖重新整理。預設情況下,指令碼每 29 分鐘執行一次。使用 `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` 環境變數自訂間隔。

274 316 

275### 多團隊組織支援317<h3 id="multi-team-organization-support">

318 多團隊組織支援

319</h3>

276 320 

277具有多個團隊或部門的組織可以使用 `OTEL_RESOURCE_ATTRIBUTES` 環境變數新增自訂屬性以區分不同的群組:321具有多個團隊或部門的組織可以使用 `OTEL_RESOURCE_ATTRIBUTES` 環境變數新增自訂屬性以區分不同的群組:

278 322 


288* 建立團隊特定的儀表板332* 建立團隊特定的儀表板

289* 為特定團隊設定警報333* 為特定團隊設定警報

290 334 

335Claude Code 將這些值作為屬性附加到每個指標資料點和事件記錄上,除了在 OTLP 資源區塊中傳送它們之外。因為大多數指標後端將資料點屬性公開為可查詢的標籤,您可以直接按自訂鍵分組和篩選指標。自訂鍵永遠不會覆蓋[標準屬性](#standard-attributes),例如 `user.id` 或 `session.id`:當鍵衝突時,Claude Code 保留內建值。

336 

337每個自訂鍵都會成為每個指標序列上的標籤,因此高基數值會增加指標後端中的儲存成本。若要僅在資源區塊中傳送自訂屬性並從資料點標籤中省略它們,請設定 `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`。請參閱[指標基數控制](#metrics-cardinality-control)。

338 

291<Warning>339<Warning>

292 **OTEL\_RESOURCE\_ATTRIBUTES 的重要格式要求:**340 **OTEL\_RESOURCE\_ATTRIBUTES 的重要格式要求:**

293 341 


315 注意:將值用引號括起來不會逃逸空格。例如,`org.name="My Company"` 會產生字面值 `"My Company"`(包括引號),而不是 `My Company`。363 注意:將值用引號括起來不會逃逸空格。例如,`org.name="My Company"` 會產生字面值 `"My Company"`(包括引號),而不是 `My Company`。

316</Warning>364</Warning>

317 365 

318### 配置範例366<h3 id="example-configurations">

367 配置範例

368</h3>

319 369 

320在執行 `claude` 之前設定這些環境變數。每個區塊顯示不同匯出器或部署情境的完整配置:370在執行 `claude` 之前設定這些環境變數。每個區塊顯示不同匯出器或部署情境的完整配置:

321 371 


362export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317412export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

363```413```

364 414 

365## 可用的指標和事件415<h2 id="available-metrics-and-events">

416 可用的指標和事件

417</h2>

366 418 

367### 標準屬性419<h3 id="standard-attributes">

420 標準屬性

421</h3>

368 422 

369所有指標和事件共享這些標準屬性:423所有指標和事件共享這些標準屬性:

370 424 

371| 屬性 | 描述 | 控制者 |425| 屬性 | 描述 | 控制者 |

372| ------------------- | -------------------------------------------------------------- | -------------------------------------------- |426| ------------------------------------ | ---------------------------------------------------------------------------------- | --------------------------------------------------- |

373| `session.id` | 唯一的工作階段識別碼 | `OTEL_METRICS_INCLUDE_SESSION_ID`(預設:true) |427| `session.id` | 唯一的工作階段識別碼 | `OTEL_METRICS_INCLUDE_SESSION_ID`(預設:true) |

374| `app.version` | 目前的 Claude Code 版本 | `OTEL_METRICS_INCLUDE_VERSION`(預設:false) |428| `app.version` | 目前的 Claude Code 版本 | `OTEL_METRICS_INCLUDE_VERSION`(預設:false) |

429| `app.entrypoint` | 工作階段的啟動方式,例如 `cli`、`sdk-cli`、`sdk-ts`、`sdk-py` 或 `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT`(預設:false) |

375| `organization.id` | 組織 UUID(已驗證時) | 可用時始終包含 |430| `organization.id` | 組織 UUID(已驗證時) | 可用時始終包含 |

376| `user.account_uuid` | 帳戶 UUID(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |431| `user.account_uuid` | 帳戶 UUID(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |

377| `user.account_id` | 帳戶 ID(採用標籤格式,符合 Anthropic 管理 API),例如 `user_01BWBeN28...`(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |432| `user.account_id` | 帳戶 ID(採用標籤格式,符合 Anthropic 管理 API),例如 `user_01BWBeN28...`(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |

378| `user.id` | 匿名裝置/安裝識別碼,每個 Claude Code 安裝產生一次 | 始終包含 |433| `user.id` | 匿名裝置/安裝識別碼,每個 Claude Code 安裝產生一次 | 始終包含 |

379| `user.email` | 使用者電子郵件地址(透過 OAuth 驗證時) | 可用時始終包含 |434| `user.email` | 使用者電子郵件地址(透過 OAuth 驗證時) | 可用時始終包含 |

380| `terminal.type` | 終端機類型,例如 `iTerm.app`、`vscode`、`cursor` 或 `tmux` | 偵測到時始終包含 |435| `terminal.type` | 終端機類型,例如 `iTerm.app`、`vscode`、`cursor` 或 `tmux` | 偵測到時始終包含 |

436| Keys from `OTEL_RESOURCE_ATTRIBUTES` | 您設定的自訂屬性,例如 `department` 或 `team.id`。詳見[多團隊組織支援](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES`(預設:true) |

381 437 

382事件另外包含以下屬性。這些永遠不會附加到指標,因為它們會導致無限制的基數:438事件另外包含以下屬性。這些永遠不會附加到指標,因為它們會導致無限制的基數:

383 439 

384* `prompt.id`:UUID 將使用者提示與所有後續事件關聯到下一個提示。請參閱[事件關聯屬性](#event-correlation-attributes)。440* `prompt.id`:UUID 將使用者提示與所有後續事件關聯到下一個提示。請參閱[事件關聯屬性](#event-correlation-attributes)。

385* `workspace.host_paths`:在桌面應用程式中選擇的主機工作區目錄,作為字串陣列441* `workspace.host_paths`:在桌面應用程式中選擇的主機工作區目錄,作為字串陣列

386 442 

387### 指標443<h3 id="metrics">

444 指標

445</h3>

388 446 

389Claude Code 匯出以下指標:447Claude Code 匯出以下指標:

390 448 


399| `claude_code.code_edit_tool.decision` | 程式碼編輯工具權限決定的計數 | count |457| `claude_code.code_edit_tool.decision` | 程式碼編輯工具權限決定的計數 | count |

400| `claude_code.active_time.total` | 總活躍時間(秒) | s |458| `claude_code.active_time.total` | 總活躍時間(秒) | s |

401 459 

402### 指標詳情460<h3 id="metric-details">

461 指標詳情

462</h3>

403 463 

404每個指標都包含上面列出的標準屬性。具有額外內容特定屬性的指標如下所述。464每個指標都包含上面列出的標準屬性。具有額外內容特定屬性的指標如下所述。

405 465 

406#### 工作階段計數器466<h4 id="session-counter">

467 工作階段計數器

468</h4>

407 469 

408在每個工作階段開始時遞增。470在每個工作階段開始時遞增。

409 471 


412* 所有[標準屬性](#standard-attributes)474* 所有[標準屬性](#standard-attributes)

413* `start_type`:工作階段的啟動方式。`"fresh"`、`"resume"` 或 `"continue"` 之一475* `start_type`:工作階段的啟動方式。`"fresh"`、`"resume"` 或 `"continue"` 之一

414 476 

415#### 程式碼行計數器477<h4 id="lines-of-code-counter">

478 程式碼行計數器

479</h4>

416 480 

417在新增或移除程式碼時遞增。481在新增或移除程式碼時遞增。

418 482 


421* 所有[標準屬性](#standard-attributes)485* 所有[標準屬性](#standard-attributes)

422* `type`:(`"added"`、`"removed"`)486* `type`:(`"added"`、`"removed"`)

423 487 

424#### 提取請求計數器488<h4 id="pull-request-counter">

489 提取請求計數器

490</h4>

425 491 

426透過 Claude Code 建立提取請求或合併請求時遞增。492透過 Claude Code 建立提取請求或合併請求時遞增。

427 493 


429 495 

430* 所有[標準屬性](#standard-attributes)496* 所有[標準屬性](#standard-attributes)

431 497 

432#### 提交計數器498<h4 id="commit-counter">

499 提交計數器

500</h4>

433 501 

434透過 Claude Code 建立 git 提交時遞增。502透過 Claude Code 建立 git 提交時遞增。

435 503 


437 505 

438* 所有[標準屬性](#standard-attributes)506* 所有[標準屬性](#standard-attributes)

439 507 

440#### 成本計數器508<h4 id="cost-counter">

509 成本計數器

510</h4>

441 511 

442在每個 API 請求後遞增。512在每個 API 請求後遞增。

443 513 


452* `skill.name`:對請求有效的 Skill,由 Skill 工具、`/` 命令設定或由衍生的子代理繼承。內建、捆綁、使用者定義和官方市場 plugin skill 名稱按原樣出現。第三方 plugin skill 名稱被替換為 `"third-party"`。當沒有 skill 有效時不存在。522* `skill.name`:對請求有效的 Skill,由 Skill 工具、`/` 命令設定或由衍生的子代理繼承。內建、捆綁、使用者定義和官方市場 plugin skill 名稱按原樣出現。第三方 plugin skill 名稱被替換為 `"third-party"`。當沒有 skill 有效時不存在。

453* `plugin.name`:當活躍 skill 或子代理由 plugin 提供時的擁有 plugin。官方市場 plugin 名稱按原樣出現。第三方 plugin 名稱被替換為 `"third-party"`。當 skill 和子代理都沒有擁有 plugin 時不存在。523* `plugin.name`:當活躍 skill 或子代理由 plugin 提供時的擁有 plugin。官方市場 plugin 名稱按原樣出現。第三方 plugin 名稱被替換為 `"third-party"`。當 skill 和子代理都沒有擁有 plugin 時不存在。

454* `marketplace.name`:擁有 plugin 的安裝市場。僅針對官方市場 plugin 發出。否則不存在。524* `marketplace.name`:擁有 plugin 的安裝市場。僅針對官方市場 plugin 發出。否則不存在。

525* `mcp_server.name`:MCP 伺服器,其工具在產生此請求的轉換中執行。內建、claude.ai 代理和官方登錄伺服器名稱按原樣出現。使用者配置的伺服器名稱被替換為 `"custom"`。當沒有 MCP 工具執行時不存在。

526* `mcp_tool.name`:在產生此請求的轉換中執行的 MCP 工具,與 `mcp_server.name` 具有相同的編輯。當沒有 MCP 工具執行時不存在。

455 527 

456#### 權杖計數器528<h4 id="token-counter">

529 權杖計數器

530</h4>

457 531 

458在每個 API 請求後遞增。532在每個 API 請求後遞增。

459 533 


465* `query_source`:發出請求的子系統的類別。`"main"`、`"subagent"` 或 `"auxiliary"` 之一539* `query_source`:發出請求的子系統的類別。`"main"`、`"subagent"` 或 `"auxiliary"` 之一

466* `speed`:當請求使用快速模式時為 `"fast"`。否則不存在540* `speed`:當請求使用快速模式時為 `"fast"`。否則不存在

467* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。詳見[成本計數器](#cost-counter)。541* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。詳見[成本計數器](#cost-counter)。

468* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`:請求的 Skill、plugin 和代理歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。542* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`、`mcp_server.name`、`mcp_tool.name`:請求的 Skill、plugin 和代理歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。

469 543 

470#### 程式碼編輯工具決定計數器544<h4 id="code-edit-tool-decision-counter">

545 程式碼編輯工具決定計數器

546</h4>

471 547 

472當使用者接受或拒絕 Edit、Write 或 NotebookEdit 工具使用時遞增。548當使用者接受或拒絕 Edit、Write 或 NotebookEdit 工具使用時遞增。

473 549 


479* `source`:決定來源。`"config"`、`"hook"`、`"user_permanent"`、`"user_temporary"`、`"user_abort"` 或 `"user_reject"` 之一。詳見[工具決定事件](#tool-decision-event)以了解每個值的含義。555* `source`:決定來源。`"config"`、`"hook"`、`"user_permanent"`、`"user_temporary"`、`"user_abort"` 或 `"user_reject"` 之一。詳見[工具決定事件](#tool-decision-event)以了解每個值的含義。

480* `language`:編輯檔案的程式設計語言,例如 `"TypeScript"`、`"Python"`、`"JavaScript"` 或 `"Markdown"`。對於無法識別的副檔名,傳回 `"unknown"`。556* `language`:編輯檔案的程式設計語言,例如 `"TypeScript"`、`"Python"`、`"JavaScript"` 或 `"Markdown"`。對於無法識別的副檔名,傳回 `"unknown"`。

481 557 

482#### 活躍時間計數器558<h4 id="active-time-counter">

559 活躍時間計數器

560</h4>

483 561 

484追蹤實際花費在主動使用 Claude Code 上的時間,不包括閒置時間。此指標在使用者互動期間遞增(輸入、讀取回應)以及在 CLI 處理期間遞增(工具執行、AI 回應產生)。562追蹤實際花費在主動使用 Claude Code 上的時間,不包括閒置時間。此指標在使用者互動期間遞增(輸入、讀取回應)以及在 CLI 處理期間遞增(工具執行、AI 回應產生)。

485 563 


488* 所有[標準屬性](#standard-attributes)566* 所有[標準屬性](#standard-attributes)

489* `type`:`"user"` 用於鍵盤互動,`"cli"` 用於工具執行和 AI 回應567* `type`:`"user"` 用於鍵盤互動,`"cli"` 用於工具執行和 AI 回應

490 568 

491### 事件569<h3 id="events">

570 事件

571</h3>

492 572 

493Claude Code 透過 OpenTelemetry 日誌/事件匯出以下事件(當配置 `OTEL_LOGS_EXPORTER` 時):573Claude Code 透過 OpenTelemetry 日誌/事件匯出以下事件(當配置 `OTEL_LOGS_EXPORTER` 時):

494 574 

495#### 事件關聯屬性575<h4 id="event-correlation-attributes">

576 事件關聯屬性

577</h4>

496 578 

497當使用者提交提示時,Claude Code 可能會進行多個 API 呼叫並執行多個工具。`prompt.id` 屬性可讓您將所有這些事件與觸發它們的單個提示相關聯。579當使用者提交提示時,Claude Code 可能會進行多個 API 呼叫並執行多個工具。`prompt.id` 屬性可讓您將所有這些事件與觸發它們的單個提示相關聯。

498 580 


506 `prompt.id` 有意從指標中排除,因為每個提示都會產生唯一的 ID,這會建立不斷增長的時間序列數量。僅將其用於事件級分析和稽核追蹤。588 `prompt.id` 有意從指標中排除,因為每個提示都會產生唯一的 ID,這會建立不斷增長的時間序列數量。僅將其用於事件級分析和稽核追蹤。

507</Note>589</Note>

508 590 

509#### 使用者提示事件591<h4 id="user-prompt-event">

592 使用者提示事件

593</h4>

510 594 

511當使用者提交提示時記錄。595當使用者提交提示時記錄。

512 596 


523* `command_name`:當提示叫用命令時的命令名稱。內建和捆綁的命令名稱(例如 `compact` 或 `debug`)按原樣發出;別名(例如 `reset`)按輸入方式發出而不是規範名稱。自訂、plugin 和 MCP 命令名稱除非設定 `OTEL_LOG_TOOL_DETAILS=1`,否則會摺疊為 `custom` 或 `mcp`607* `command_name`:當提示叫用命令時的命令名稱。內建和捆綁的命令名稱(例如 `compact` 或 `debug`)按原樣發出;別名(例如 `reset`)按輸入方式發出而不是規範名稱。自訂、plugin 和 MCP 命令名稱除非設定 `OTEL_LOG_TOOL_DETAILS=1`,否則會摺疊為 `custom` 或 `mcp`

524* `command_source`:命令的來源(如果存在):`builtin`、`custom` 或 `mcp`。Plugin 提供的命令報告為 `custom`608* `command_source`:命令的來源(如果存在):`builtin`、`custom` 或 `mcp`。Plugin 提供的命令報告為 `custom`

525 609 

526#### 工具結果事件610<h4 id="tool-result-event">

611 工具結果事件

612</h4>

527 613 

528當工具完成執行時記錄。614當工具完成執行時記錄。不會在工具呼叫被拒絕時發出;詳見[工具決定事件](#tool-decision-event)以了解拒絕。

529 615 

530**事件名稱**:`claude_code.tool_result`616**事件名稱**:`claude_code.tool_result`

531 617 


541* `duration_ms`:執行時間(毫秒)627* `duration_ms`:執行時間(毫秒)

542* `error_type`:工具失敗時的錯誤類別字串,例如 `"Error:ENOENT"` 或 `"ShellError"`628* `error_type`:工具失敗時的錯誤類別字串,例如 `"Error:ENOENT"` 或 `"ShellError"`

543* `error`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):工具失敗時的完整錯誤訊息629* `error`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):工具失敗時的完整錯誤訊息

544* `decision_type`:`"accept"` 或 `"reject"`630* `decision_type`:始終為 `"accept"`,因為此事件僅在工具執行後發出(拒絕的呼叫不會產生工具結果)

545* `decision_source`:決定來源。`"config"`、`"hook"`、`"user_permanent"`、`"user_temporary"`、`"user_abort"` 或 `"user_reject"` 之一。詳見[工具決定事件](#tool-decision-event)以了解每個值的含義。631* `decision_source`:決定來源。`"config"`、`"hook"`、`"user_permanent"` 或 `"user_temporary"` 之一。詳見[工具決定事件](#tool-decision-event)以了解每個值的含義。拒絕專用來源 `"user_abort"` 和 `"user_reject"` 永遠不會出現在此事件上。

546* `tool_input_size_bytes`:JSON 序列化工具輸入的大小(位元組)632* `tool_input_size_bytes`:JSON 序列化工具輸入的大小(位元組)

547* `tool_result_size_bytes`:工具結果的大小(位元組)633* `tool_result_size_bytes`:工具結果的大小(位元組)

548* `mcp_server_scope`:MCP 伺服器範圍識別碼(用於 MCP 工具)634* `mcp_server_scope`:MCP 伺服器範圍識別碼(用於 MCP 工具)

549* `tool_parameters`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):包含工具特定參數的 JSON 字串:635* `tool_parameters`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):包含工具特定參數的 JSON 字串:

550 * 對於 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description`、`dangerouslyDisableSandbox` 和 `git_commit_id`(git commit 命令成功時的提交 SHA)636 * 對於 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description`、`dangerouslyDisableSandbox` 和 `git_commit_id`(git commit 命令成功時的提交 SHA)

637 * 對於 WorkspaceBash 工具:包括 `bash_command`、`full_command`、`timeout`

551 * 對於 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`638 * 對於 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`

552 * 對於 Skill 工具:包括 `skill_name`639 * 對於 Skill 工具:包括 `skill_name`

553 * 對於 Task 工具:包括 `subagent_type`640 * 對於 Agent 工具或舊版 Task 工具:包括 `subagent_type`

554* `tool_input`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):JSON 序列化的工具引數。超過 512 個字元的個別值會被截斷,整個承載的上限約為 4 K 字元。適用於所有工具,包括 MCP 工具。641* `tool_input`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):JSON 序列化的工具引數。超過 512 個字元的個別值會被截斷,整個承載的上限約為 4 K 字元。適用於所有工具,包括 MCP 工具。

555 642 

556#### API 請求事件643<h4 id="api-request-event">

644 API 請求事件

645</h4>

557 646 

558為每個 API 請求記錄到 Claude。647為每個 API 請求記錄到 Claude。

559 648 


576* `speed`:`"fast"` 或 `"normal"`,指示是否啟用了快速模式665* `speed`:`"fast"` 或 `"normal"`,指示是否啟用了快速模式

577* `query_source`:發出請求的子系統,例如 `"repl_main_thread"`、`"compact"` 或子代理名稱666* `query_source`:發出請求的子系統,例如 `"repl_main_thread"`、`"compact"` 或子代理名稱

578* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。當模型不支援努力時不存在。667* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。當模型不支援努力時不存在。

668* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`、`mcp_server.name`、`mcp_tool.name`:請求的 Skill、plugin、代理和 MCP 歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。

579 669 

580#### API 錯誤事件670<h4 id="api-error-event">

671 API 錯誤事件

672</h4>

581 673 

582當 API 請求到 Claude 失敗時記錄。674當 API 請求到 Claude 失敗時記錄。

583 675 


598* `speed`:`"fast"` 或 `"normal"`,指示是否啟用了快速模式690* `speed`:`"fast"` 或 `"normal"`,指示是否啟用了快速模式

599* `query_source`:發出請求的子系統,例如 `"repl_main_thread"`、`"compact"` 或子代理名稱691* `query_source`:發出請求的子系統,例如 `"repl_main_thread"`、`"compact"` 或子代理名稱

600* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。當模型不支援努力時不存在。692* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。當模型不支援努力時不存在。

693* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`、`mcp_server.name`、`mcp_tool.name`:請求的 Skill、plugin、代理和 MCP 歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。

601 694 

602#### API 請求主體事件695<h4 id="api-request-body-event">

696 API 請求主體事件

697</h4>

603 698 

604當設定 `OTEL_LOG_RAW_API_BODIES` 時,為每個 API 請求嘗試記錄。每次嘗試發出一個事件,因此使用調整參數的重試各自產生自己的事件。699當設定 `OTEL_LOG_RAW_API_BODIES` 時,為每個 API 請求嘗試記錄。每次嘗試發出一個事件,因此使用調整參數的重試各自產生自己的事件。

605 700 


618* `model`:來自請求參數的模型識別碼713* `model`:來自請求參數的模型識別碼

619* `query_source`:發出請求的子系統(例如,`"compact"`)714* `query_source`:發出請求的子系統(例如,`"compact"`)

620 715 

621#### API 回應主體事件716<h4 id="api-response-body-event">

717 API 回應主體事件

718</h4>

622 719 

623當設定 `OTEL_LOG_RAW_API_BODIES` 時,為每個成功的 API 回應記錄。720當設定 `OTEL_LOG_RAW_API_BODIES` 時,為每個成功的 API 回應記錄。

624 721 


638* `query_source`:發出請求的子系統735* `query_source`:發出請求的子系統

639* `request_id`:來自回應的 `request-id` 標頭的 Anthropic API 請求 ID,例如 `"req_011..."`。僅當 API 傳回時才存在。736* `request_id`:來自回應的 `request-id` 標頭的 Anthropic API 請求 ID,例如 `"req_011..."`。僅當 API 傳回時才存在。

640 737 

641#### 工具決定事件738<h4 id="tool-decision-event">

739 工具決定事件

740</h4>

642 741 

643當做出工具權限決定(接受/拒絕)時記錄。742當做出工具權限決定(接受/拒絕)時記錄。

644 743 


659 * `"user_permanent"`:當使用者在權限提示時選擇「是,且不再詢問...」時發出,將允許規則儲存到其個人設定。在互動 CLI 中,僅針對該選擇本身發出;稍後符合儲存規則的呼叫發出 `"config"` 代替。在 Agent SDK 或非互動 `-p` 工作階段中,初始選擇和稍後的規則相符都發出 `"user_permanent"`。視為接受。758 * `"user_permanent"`:當使用者在權限提示時選擇「是,且不再詢問...」時發出,將允許規則儲存到其個人設定。在互動 CLI 中,僅針對該選擇本身發出;稍後符合儲存規則的呼叫發出 `"config"` 代替。在 Agent SDK 或非互動 `-p` 工作階段中,初始選擇和稍後的規則相符都發出 `"user_permanent"`。視為接受。

660 * `"user_temporary"`:當使用者在權限提示時選擇「是」或在檔案編輯或讀取提示時選擇「...在此工作階段期間」選項之一時發出。在互動 CLI 中,僅針對選擇本身發出;稍後由該工作階段範圍授予允許的呼叫發出 `"config"` 代替。在 Agent SDK 或非互動 `-p` 工作階段中,選擇和稍後的相符都發出 `"user_temporary"`。視為接受。759 * `"user_temporary"`:當使用者在權限提示時選擇「是」或在檔案編輯或讀取提示時選擇「...在此工作階段期間」選項之一時發出。在互動 CLI 中,僅針對選擇本身發出;稍後由該工作階段範圍授予允許的呼叫發出 `"config"` 代替。在 Agent SDK 或非互動 `-p` 工作階段中,選擇和稍後的相符都發出 `"user_temporary"`。視為接受。

661 * `"user_abort"`:當使用者關閉權限提示而不回答時發出。視為拒絕。760 * `"user_abort"`:當使用者關閉權限提示而不回答時發出。視為拒絕。

662 * `"user_reject"`:當使用者選擇「否」時發出,或呼叫符合其個人設定中的拒絕規則。視為拒絕。761 * `"user_reject"`:當使用者選擇「否」時發出。在互動 CLI 中僅針對該選擇本身發出;符合使用者個人設定中拒絕規則的呼叫發出 `"config"` 代替在 Agent SDK 或非互動 `-p` 工作階段中,符合個人設定中拒絕規則的呼叫發出 `"user_reject"`。視為拒絕。

762* `tool_parameters`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):包含工具特定參數的 JSON 字串。形狀與[工具結果事件](#tool-result-event)相同,除了執行後欄位(例如 `git_commit_id`)。如果權限決定透過 `updatedInput` 重寫工具輸入,值可能與接受呼叫的 `tool_result` 不同。使用此屬性查看當 `decision` 為 `"reject"` 時拒絕了哪個命令。

763 * 對於 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description`、`dangerouslyDisableSandbox`

764 * 對於 WorkspaceBash 工具:包括 `bash_command`、`full_command`、`timeout`

765 * 對於 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`

766 * 對於 Skill 工具:包括 `skill_name`

767 * 對於 Agent 工具或舊版 Task 工具:包括 `subagent_type`

663 768 

664#### 權限模式變更事件769<h4 id="permission-mode-changed-event">

770 權限模式變更事件

771</h4>

665 772 

666當權限模式變更時記錄,例如從 `Shift+Tab` 循環、退出計畫模式或自動模式閘道檢查。773當權限模式變更時記錄,例如從 `Shift+Tab` 循環、退出計畫模式或自動模式閘道檢查。

667 774 


677* `to_mode`:新的權限模式784* `to_mode`:新的權限模式

678* `trigger`:導致變更的原因。`"shift_tab"`、`"exit_plan_mode"`、`"auto_gate_denied"` 或 `"auto_opt_in"` 之一。當轉換來自 SDK 或橋接時不存在。785* `trigger`:導致變更的原因。`"shift_tab"`、`"exit_plan_mode"`、`"auto_gate_denied"` 或 `"auto_opt_in"` 之一。當轉換來自 SDK 或橋接時不存在。

679 786 

680#### 身份驗證事件787<h4 id="auth-event">

788 身份驗證事件

789</h4>

681 790 

682當 `/login` 或 `/logout` 完成時記錄。791當 `/login` 或 `/logout` 完成時記錄。

683 792 


695* `error_category`:操作失敗時的分類錯誤類型。永遠不包括原始錯誤訊息804* `error_category`:操作失敗時的分類錯誤類型。永遠不包括原始錯誤訊息

696* `status_code`:操作因 HTTP 錯誤而失敗時的 HTTP 狀態碼(字串形式)805* `status_code`:操作因 HTTP 錯誤而失敗時的 HTTP 狀態碼(字串形式)

697 806 

698#### MCP 伺服器連線事件807<h4 id="mcp-server-connection-event">

808 MCP 伺服器連線事件

809</h4>

699 810 

700當 MCP 伺服器連線、斷開連線或無法連線時記錄。811當 MCP 伺服器連線、斷開連線或無法連線時記錄。

701 812 


715* `server_name`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):配置的伺服器名稱826* `server_name`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):配置的伺服器名稱

716* `error`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):連線失敗時的完整錯誤訊息827* `error`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):連線失敗時的完整錯誤訊息

717 828 

718#### 內部錯誤事件829<h4 id="internal-error-event">

830 內部錯誤事件

831</h4>

719 832 

720當 Claude Code 捕捉到意外的內部錯誤時記錄。僅記錄錯誤類別名稱和 errno 樣式碼。永遠不包括錯誤訊息和堆疊追蹤。當針對 Bedrock、Vertex 或 Foundry 執行或設定 `DISABLE_ERROR_REPORTING` 時,不會發出此事件。833當 Claude Code 捕捉到意外的內部錯誤時記錄。僅記錄錯誤類別名稱和 errno 樣式碼。永遠不包括錯誤訊息和堆疊追蹤。當針對 Bedrock、Vertex 或 Foundry 執行或設定 `DISABLE_ERROR_REPORTING` 時,不會發出此事件。

721 834 


730* `error_name`:錯誤類別名稱,例如 `"TypeError"` 或 `"SyntaxError"`843* `error_name`:錯誤類別名稱,例如 `"TypeError"` 或 `"SyntaxError"`

731* `error_code`:Node.js errno 碼,例如 `"ENOENT"`(如果存在於錯誤上)844* `error_code`:Node.js errno 碼,例如 `"ENOENT"`(如果存在於錯誤上)

732 845 

733#### Plugin 已安裝事件846<h4 id="plugin-installed-event">

847 Plugin 已安裝事件

848</h4>

734 849 

735當 plugin 完成安裝時記錄,來自 `claude plugin install` CLI 命令和互動式 `/plugin` UI。850當 plugin 完成安裝時記錄,來自 `claude plugin install` CLI 命令和互動式 `/plugin` UI。

736 851 


748* `plugin.version`:Plugin 版本(如果在市場條目中宣告)。對於第三方市場,僅當 `OTEL_LOG_TOOL_DETAILS=1` 時才包含863* `plugin.version`:Plugin 版本(如果在市場條目中宣告)。對於第三方市場,僅當 `OTEL_LOG_TOOL_DETAILS=1` 時才包含

749* `marketplace.name`:安裝 plugin 的市場。對於第三方市場,僅當 `OTEL_LOG_TOOL_DETAILS=1` 時才包含864* `marketplace.name`:安裝 plugin 的市場。對於第三方市場,僅當 `OTEL_LOG_TOOL_DETAILS=1` 時才包含

750 865 

751#### Plugin 已載入事件866<h4 id="plugin-loaded-event">

867 Plugin 已載入事件

868</h4>

752 869 

753在工作階段開始時為每個啟用的 plugin 記錄一次。使用此事件來清點您的整個環境中哪些 plugin 是活躍的,作為記錄安裝動作本身的 `plugin_installed` 的補充。870在工作階段開始時為每個啟用的 plugin 記錄一次。使用此事件來清點您的整個環境中哪些 plugin 是活躍的,作為記錄安裝動作本身的 `plugin_installed` 的補充。

754 871 


772* `command_path_count`:plugin 宣告的命令目錄數889* `command_path_count`:plugin 宣告的命令目錄數

773* `agent_path_count`:plugin 宣告的代理目錄數890* `agent_path_count`:plugin 宣告的代理目錄數

774 891 

775#### Skill 已啟動事件892<h4 id="skill-activated-event">

893 Skill 已啟動事件

894</h4>

776 895 

777當叫用 skill 時記錄,無論 Claude 是透過 Skill 工具呼叫它,還是您將其作為 `/` 命令執行。896當叫用 skill 時記錄,無論 Claude 是透過 Skill 工具呼叫它,還是您將其作為 `/` 命令執行。

778 897 


790* `plugin.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時的擁有 plugin 名稱909* `plugin.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時的擁有 plugin 名稱

791* `marketplace.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時,擁有 plugin 的安裝市場910* `marketplace.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時,擁有 plugin 的安裝市場

792 911 

793#### @ 提及事件912<h4 id="at-mention-event">

913 @ 提及事件

914</h4>

794 915 

795當 Claude Code 解析提示中的 `@` 提及時記錄。並非每個提及都會發出事件:早期退出路徑(例如權限拒絕、超大檔案、PDF 參考附件和目錄列表失敗)會在不記錄的情況下返回。916當 Claude Code 解析提示中的 `@` 提及時記錄。並非每個提及都會發出事件:早期退出路徑(例如權限拒絕、超大檔案、PDF 參考附件和目錄列表失敗)會在不記錄的情況下返回。

796 917 


805* `mention_type`:提及的類型(`"file"`、`"directory"`、`"agent"`、`"mcp_resource"`)926* `mention_type`:提及的類型(`"file"`、`"directory"`、`"agent"`、`"mcp_resource"`)

806* `success`:提及是否成功解析(`"true"` 或 `"false"`)927* `success`:提及是否成功解析(`"true"` 或 `"false"`)

807 928 

808#### API 重試已耗盡事件929<h4 id="api-retries-exhausted-event">

930 API 重試已耗盡事件

931</h4>

809 932 

810當 API 請求在多次嘗試後失敗時記錄一次。與最終 `api_error` 事件一起發出。933當 API 請求在多次嘗試後失敗時記錄一次。與最終 `api_error` 事件一起發出。

811 934 


824* `total_retry_duration_ms`:所有嘗試的總牆上時間947* `total_retry_duration_ms`:所有嘗試的總牆上時間

825* `speed`:`"fast"` 或 `"normal"`948* `speed`:`"fast"` 或 `"normal"`

826 949 

827#### Hook 已註冊事件950<h4 id="hook-registered-event">

951 Hook 已註冊事件

952</h4>

828 953 

829在工作階段開始時為每個配置的 hook 記錄一次。使用此事件來清點您的整個環境中哪些 hook 是活躍的,作為每次執行 `hook_execution_start` 和 `hook_execution_complete` 事件的補充。954在工作階段開始時為每個配置的 hook 記錄一次。使用此事件來清點您的整個環境中哪些 hook 是活躍的,作為每次執行 `hook_execution_start` 和 `hook_execution_complete` 事件的補充。

830 955 


843* `plugin.name`(當 `hook_source` 是 `"pluginHook"` 時):貢獻 plugin 的名稱。對於官方市場和內建捆綁之外的 plugin,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則值為 `"third-party"`968* `plugin.name`(當 `hook_source` 是 `"pluginHook"` 時):貢獻 plugin 的名稱。對於官方市場和內建捆綁之外的 plugin,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則值為 `"third-party"`

844* `plugin_id_hash`(當 `hook_source` 是 `"pluginHook"` 時):plugin 名稱和市場的確定性雜湊,僅傳送到您配置的匯出器。讓您計算不同的貢獻 plugin,而無需記錄其名稱969* `plugin_id_hash`(當 `hook_source` 是 `"pluginHook"` 時):plugin 名稱和市場的確定性雜湊,僅傳送到您配置的匯出器。讓您計算不同的貢獻 plugin,而無需記錄其名稱

845 970 

846#### Hook 執行開始事件971<h4 id="hook-execution-start-event">

972 Hook 執行開始事件

973</h4>

847 974 

848當一個或多個 hook 開始為 hook 事件執行時記錄。975當一個或多個 hook 開始為 hook 事件執行時記錄。

849 976 


862* `hook_source`:`"policySettings"` 或 `"merged"`989* `hook_source`:`"policySettings"` 或 `"merged"`

863* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含990* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含

864 991 

865#### Hook 執行完成事件992<h4 id="hook-execution-complete-event">

993 Hook 執行完成事件

994</h4>

866 995 

867當 hook 事件的所有 hook 完成時記錄。996當 hook 事件的所有 hook 完成時記錄。

868 997 


886* `hook_source`:`"policySettings"` 或 `"merged"`1015* `hook_source`:`"policySettings"` 或 `"merged"`

887* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含1016* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含

888 1017 

889#### 壓縮事件1018<h4 id="hook-plugin-metrics-event">

1019 Hook plugin 指標事件

1020</h4>

1021 

1022當官方市場 plugin hook 發出每次叫用指標時記錄。僅從官方 Anthropic 市場安裝的 plugin 可以發出這些。第三方市場 plugin 和使用者配置的 hook 不會發出到此事件。使用此事件從您自己的可觀測性堆疊監控 plugin 行為,例如尋找速率、成本和持續時間。

1023 

1024**事件名稱**:`claude_code.hook_plugin_metrics`

1025 

1026**屬性**:

1027 

1028* 所有[標準屬性](#standard-attributes)

1029* `event.name`:`"hook_plugin_metrics"`

1030* `event.timestamp`:ISO 8601 時間戳

1031* `event.sequence`:單調遞增計數器,用於排序工作階段內的事件

1032* `plugin_id`:plugin 識別碼,格式為 `<name>@<marketplace>`

1033* `hook_event`:發出指標的 hook 事件類型

1034* 最多 20 個 plugin 發出的指標鍵。名稱符合 `^[a-z][a-z0-9_]{0,39}$`。值為布林值或數字。

1035 

1036<h4 id="compaction-event">

1037 壓縮事件

1038</h4>

890 1039 

891當對話壓縮完成時記錄。1040當對話壓縮完成時記錄。

892 1041 


904* `pre_tokens`:壓縮前的近似權杖計數1053* `pre_tokens`:壓縮前的近似權杖計數

905* `post_tokens`:壓縮後的近似權杖計數1054* `post_tokens`:壓縮後的近似權杖計數

906* `error`:壓縮失敗時的錯誤訊息1055* `error`:壓縮失敗時的錯誤訊息

1056* `precompute_reuse`:僅在 `trigger` 為 `"manual"` 時設定。自動壓縮可以在內容視窗填滿之前在背景中準備摘要,此屬性記錄 `/compact` 是否重複使用該準備的摘要。`"hit"` 表示它被重複使用;`"miss_custom_instructions"`、`"miss_hook"` 和 `"miss_not_ready"` 給出改為計算新摘要的原因。{/* min-version: 2.1.153 */}需要 Claude Code v2.1.153 或更新版本

907 1057 

908#### 回饋調查事件1058<h4 id="feedback-survey-event">

1059 回饋調查事件

1060</h4>

909 1061 

910當顯示或回答工作階段品質調查時記錄。詳見[工作階段品質調查](/zh-TW/data-usage#session-quality-surveys)以了解調查收集的內容以及如何控制它們。1062當顯示或回答工作階段品質調查時記錄。詳見[工作階段品質調查](/zh-TW/data-usage#session-quality-surveys)以了解調查收集的內容以及如何控制它們。

911 1063 


923* `response`:使用者在 `responded` 事件上的選擇1075* `response`:使用者在 `responded` 事件上的選擇

924* `enabled_via_override`:當設定 [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/zh-TW/env-vars) 時為 `true`。作為布林值而非字串發出。存在於 `session` 調查事件上。篩選此屬性以確認覆蓋在整個環境中應用1076* `enabled_via_override`:當設定 [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/zh-TW/env-vars) 時為 `true`。作為布林值而非字串發出。存在於 `session` 調查事件上。篩選此屬性以確認覆蓋在整個環境中應用

925 1077 

926## 解釋指標和事件資料1078<h2 id="interpret-metrics-and-events-data">

1079 解釋指標和事件資料

1080</h2>

927 1081 

928匯出的指標和事件支援一系列分析:1082匯出的指標和事件支援一系列分析:

929 1083 

930### 使用情況監控1084<h3 id="usage-monitoring">

1085 使用情況監控

1086</h3>

931 1087 

932| 指標 | 分析機會 |1088| 指標 | 分析機會 |

933| ------------------------------------------------------------- | ------------------------------------------------------------------------ |1089| ------------------------------------------------------------- | ------------------------------------------------------------------------ |


936| `claude_code.lines_of_code.count` | 透過追蹤程式碼新增/移除來衡量生產力 |1092| `claude_code.lines_of_code.count` | 透過追蹤程式碼新增/移除來衡量生產力 |

937| `claude_code.commit.count` & `claude_code.pull_request.count` | 了解對開發工作流程的影響 |1093| `claude_code.commit.count` & `claude_code.pull_request.count` | 了解對開發工作流程的影響 |

938 1094 

939### 成本監控1095<h3 id="cost-monitoring">

1096 成本監控

1097</h3>

940 1098 

941`claude_code.cost.usage` 指標有助於:1099`claude_code.cost.usage` 指標有助於:

942 1100 


948 成本指標是近似值。如需官方帳單資料,請參閱您的 API 提供者(Claude Console、Amazon Bedrock 或 Google Cloud Vertex)。1106 成本指標是近似值。如需官方帳單資料,請參閱您的 API 提供者(Claude Console、Amazon Bedrock 或 Google Cloud Vertex)。

949</Note>1107</Note>

950 1108 

951### 警報和分段1109<h3 id="alerting-and-segmentation">

1110 警報和分段

1111</h3>

952 1112 

953要考慮的常見警報:1113要考慮的常見警報:

954 1114 


958 1118 

959所有指標都可以按 `user.account_uuid`、`user.account_id`、`organization.id`、`session.id`、`model` 和 `app.version` 進行分段。1119所有指標都可以按 `user.account_uuid`、`user.account_id`、`organization.id`、`session.id`、`model` 和 `app.version` 進行分段。

960 1120 

961### 偵測重試耗盡1121<h3 id="detect-retry-exhaustion">

1122 偵測重試耗盡

1123</h3>

962 1124 

963Claude Code 在內部重試失敗的 API 請求,並僅在放棄後才發出單個 `claude_code.api_error` 事件,因此事件本身是該請求的終端訊號。中間重試嘗試不會作為單獨的事件記錄。1125Claude Code 在內部重試失敗的 API 請求,並僅在放棄後才發出單個 `claude_code.api_error` 事件,因此事件本身是該請求的終端訊號。中間重試嘗試不會作為單獨的事件記錄。

964 1126 


966 1128 

967若要區分從一個恢復的工作階段與停滯的工作階段,請按 `session.id` 分組事件,並檢查錯誤後是否存在更晚的 `api_request` 事件。1129若要區分從一個恢復的工作階段與停滯的工作階段,請按 `session.id` 分組事件,並檢查錯誤後是否存在更晚的 `api_request` 事件。

968 1130 

969### 事件分析1131<h3 id="event-analysis">

1132 事件分析

1133</h3>

970 1134 

971事件資料提供了對 Claude Code 互動的詳細見解:1135事件資料提供了對 Claude Code 互動的詳細見解:

972 1136 


979 1143 

980**效能監控**:追蹤 API 請求持續時間和工具執行時間以識別效能瓶頸。1144**效能監控**:追蹤 API 請求持續時間和工具執行時間以識別效能瓶頸。

981 1145 

982## 稽核安全事件1146<h2 id="audit-security-events">

1147 稽核安全事件

1148</h2>

983 1149 

984OpenTelemetry 事件是 Claude Code 活動的稽核資料來源。每個事件都帶有身份屬性,將工具呼叫、MCP 活動和權限決定與觸發它們的使用者相關聯,OTLP 日誌匯出器可以將這些事件傳遞到任何具有 OTLP 接收器的安全資訊和事件管理 (SIEM) 平台或轉發到您的 SIEM 的 OpenTelemetry Collector。1150OpenTelemetry 事件是 Claude Code 活動的稽核資料來源。每個事件都帶有身份屬性,將工具呼叫、MCP 活動和權限決定與觸發它們的使用者相關聯,OTLP 日誌匯出器可以將這些事件傳遞到任何具有 OTLP 接收器的安全資訊和事件管理 (SIEM) 平台或轉發到您的 SIEM 的 OpenTelemetry Collector。

985 1151 

986### 將屬性操作歸因於使用者1152<h3 id="attribute-actions-to-users">

1153 將屬性操作歸因於使用者

1154</h3>

987 1155 

988每個事件上的[標準屬性](#standard-attributes)包括已驗證使用者的身份:使用 Claude 帳戶登入時的 `user.email`、`user.account_uuid`、`user.account_id` 和 `organization.id`,加上安裝範圍的 `user.id` 和每個工作階段的 `session.id`。1156每個事件上的[標準屬性](#standard-attributes)包括已驗證使用者的身份:使用 Claude 帳戶登入時的 `user.email`、`user.account_uuid`、`user.account_id` 和 `organization.id`,加上安裝範圍的 `user.id` 和每個工作階段的 `session.id`。

989 1157 


995export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."1163export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."

996```1164```

997 1165 

998### 稽核 MCP 活動1166<h3 id="audit-mcp-activity">

1167 稽核 MCP 活動

1168</h3>

999 1169 

1000若要使用完整呼叫詳情捕捉 MCP 伺服器活動,請啟用日誌匯出器並設定 `OTEL_LOG_TOOL_DETAILS=1`。每個 MCP 操作然後產生結構化事件,其中包含伺服器名稱、工具名稱和呼叫引數以及標準身份屬性:1170若要使用完整呼叫詳情捕捉 MCP 伺服器活動,請啟用日誌匯出器並設定 `OTEL_LOG_TOOL_DETAILS=1`。每個 MCP 操作然後產生結構化事件,其中包含伺服器名稱、工具名稱和呼叫引數以及標準身份屬性:

1001 1171 


1003| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |1173| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |

1004| `mcp_server_connection` | 伺服器連線、斷開連線和連線失敗,包含 `server_name`、`transport_type`、`server_scope` 和錯誤詳情 |1174| `mcp_server_connection` | 伺服器連線、斷開連線和連線失敗,包含 `server_name`、`transport_type`、`server_scope` 和錯誤詳情 |

1005| `tool_result` | 每個 MCP 工具呼叫,包含 `tool_name` 和 `mcp_server_scope`、包含 `mcp_server_name` 和 `mcp_tool_name` 的 `tool_parameters` 承載,以及包含呼叫引數的 `tool_input` 承載 |1175| `tool_result` | 每個 MCP 工具呼叫,包含 `tool_name` 和 `mcp_server_scope`、包含 `mcp_server_name` 和 `mcp_tool_name` 的 `tool_parameters` 承載,以及包含呼叫引數的 `tool_input` 承載 |

1006| `tool_decision` | 呼叫是否被允許或拒絕,以及決定是來自配置、hook 還是使用者 |1176| `tool_decision` | 呼叫是否被允許或拒絕,以及決定是來自配置、hook 還是使用者,以及包含 `mcp_server_name` 和 `mcp_tool_name` 的 `tool_parameters` 承載 |

1177 

1178沒有 `OTEL_LOG_TOOL_DETAILS`,這些事件會捨棄識別詳情:

1007 1179 

1008沒有 `OTEL_LOG_TOOL_DETAILS`,`tool_result` 事件仍然帶有 `tool_name` 和 `mcp_server_scope` 但省略 `mcp_server_name`/`mcp_tool_name` 細分和引數,`mcp_server_connection` 事件省略 `server_name` 和錯誤訊息。1180* `tool_result`:保留 `tool_name` 和 `mcp_server_scope`,省略 `mcp_server_name``mcp_tool_name` 和引數

1181* `tool_decision`:保留 `tool_name`,省略 `tool_parameters`

1182* `mcp_server_connection`:省略 `server_name` 和錯誤訊息

1009 1183 

1010### 將安全問題對應到事件1184<h3 id="map-security-questions-to-events">

1185 將安全問題對應到事件

1186</h3>

1011 1187 

1012建立偵測規則時,查詢您想要監控的訊號並查詢您的後端以取得相應的事件和屬性:1188建立偵測規則時,查詢您想要監控的訊號並查詢您的後端以取得相應的事件和屬性:

1013 1189 

1014| 訊號 | 事件 | 關鍵屬性 |1190| 訊號 | 事件 | 關鍵屬性 |

1015| ---------------- | -------------------------------------------- | ---------------------------------------------------------- |1191| ---------------- | -------------------------------------------------------------------- | ---------------------------------------------------------- |

1016| 工具呼叫被允許或拒絕,以及由什麼 | `tool_decision` | `decision`、`source`、`tool_name` |1192| 工具呼叫被允許或拒絕,以及由什麼 | `tool_decision` | `decision`、`source`、`tool_name`、`tool_parameters` |

1017| 權限模式升級 | `permission_mode_changed` | `from_mode`、`to_mode`、`trigger` |1193| 權限模式升級 | `permission_mode_changed` | `from_mode`、`to_mode`、`trigger` |

1018| 原則 hook 阻止了操作 | `hook_execution_complete` | `hook_event`、`num_blocking` |1194| 原則 hook 阻止了操作 | `hook_execution_complete` | `hook_event`、`num_blocking` |

1019| 登入、登出和身份驗證失敗 | `auth` | `action`、`success`、`error_category` |1195| 登入、登出和身份驗證失敗 | `auth` | `action`、`success`、`error_category` |

1020| MCP 伺服器連線或失敗 | `mcp_server_connection` | `status`、`server_name`、`error_code` |1196| MCP 伺服器連線或失敗 | `mcp_server_connection` | `status`、`server_name`、`error_code` |

1021| Plugin 已安裝及其來源 | `plugin_installed` | `plugin.name`、`marketplace.name`、`marketplace.is_official` |1197| Plugin 已安裝及其來源 | `plugin_installed` | `plugin.name`、`marketplace.name`、`marketplace.is_official` |

1022| 執行的命令和觸及的檔案 | `tool_result` with `OTEL_LOG_TOOL_DETAILS=1` | `tool_parameters``tool_input` |1198| 執行的命令和觸及的檔案 | `tool_result`(已執行)或 `tool_decision`(已拒絕)搭配 `OTEL_LOG_TOOL_DETAILS=1` | `tool_parameters``tool_input`(僅限 `tool_result`) |

1023 1199 

1024Claude Code 僅發出原始事件流。異常偵測、基線設定、跨工作階段關聯和警報是您的 SIEM 或可觀測性後端的責任。1200Claude Code 僅發出原始事件流。異常偵測、基線設定、跨工作階段關聯和警報是您的 SIEM 或可觀測性後端的責任。

1025 1201 

1026### 將事件傳送到 SIEM1202<h3 id="send-events-to-a-siem">

1203 將事件傳送到 SIEM

1204</h3>

1027 1205 

1028將 `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` 指向您的 SIEM 的 OTLP 接收器,或指向轉發到您的 SIEM 的原生擷取 API 的 OpenTelemetry Collector。以下受管設定範例僅匯出事件,並啟用完整工具詳情以進行 MCP 和 Bash 稽核:1206將 `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` 指向您的 SIEM 的 OTLP 接收器,或指向轉發到您的 SIEM 的原生擷取 API 的 OpenTelemetry Collector。以下受管設定範例僅匯出事件,並啟用完整工具詳情以進行 MCP 和 Bash 稽核:

1029 1207 


1040}1218}

1041```1219```

1042 1220 

1043## 後端考量1221<h2 id="backend-considerations">

1222 後端考量

1223</h2>

1044 1224 

1045您選擇的指標、日誌和追蹤後端決定了您可以執行的分析類型:1225您選擇的指標、日誌和追蹤後端決定了您可以執行的分析類型:

1046 1226 

1047### 對於指標1227<h3 id="for-metrics">

1228 對於指標

1229</h3>

1048 1230 

1049* **時間序列資料庫(例如,Prometheus)**:速率計算、聚合指標1231* **時間序列資料庫(例如,Prometheus)**:速率計算、聚合指標

1050* **欄式存儲(例如,ClickHouse)**:複雜查詢、唯一使用者分析1232* **欄式存儲(例如,ClickHouse)**:複雜查詢、唯一使用者分析

1051* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:進階查詢、視覺化、警報1233* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:進階查詢、視覺化、警報

1052 1234 

1053### 對於事件/日誌1235<h3 id="for-events/logs">

1236 對於事件/日誌

1237</h3>

1054 1238 

1055* **日誌聚合系統(例如,Elasticsearch、Loki)**:全文搜尋、日誌分析1239* **日誌聚合系統(例如,Elasticsearch、Loki)**:全文搜尋、日誌分析

1056* **欄式存儲(例如,ClickHouse)**:結構化事件分析1240* **欄式存儲(例如,ClickHouse)**:結構化事件分析

1057* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:指標和事件之間的關聯1241* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:指標和事件之間的關聯

1058 1242 

1059### 對於追蹤1243<h3 id="for-traces">

1244 對於追蹤

1245</h3>

1060 1246 

1061選擇支援分散式追蹤儲存和跨度關聯的後端:1247選擇支援分散式追蹤儲存和跨度關聯的後端:

1062 1248 


1065 1251 

1066對於需要日活躍使用者/週活躍使用者/月活躍使用者 (DAU/WAU/MAU) 指標的組織,請考慮支援高效唯一值查詢的後端。1252對於需要日活躍使用者/週活躍使用者/月活躍使用者 (DAU/WAU/MAU) 指標的組織,請考慮支援高效唯一值查詢的後端。

1067 1253 

1068## 服務資訊1254<h2 id="service-information">

1255 服務資訊

1256</h2>

1069 1257 

1070所有指標和事件都使用以下資源屬性匯出:1258所有指標和事件都使用以下資源屬性匯出:

1071 1259 


1077* `wsl.version`:WSL 版本號(僅在 Windows Subsystem for Linux 上執行時出現)1265* `wsl.version`:WSL 版本號(僅在 Windows Subsystem for Linux 上執行時出現)

1078* 計量器名稱:`com.anthropic.claude_code`1266* 計量器名稱:`com.anthropic.claude_code`

1079 1267 

1080## ROI 測量資源1268<h2 id="roi-measurement-resources">

1269 ROI 測量資源

1270</h2>

1081 1271 

1082如需有關測量 Claude Code 投資回報率的綜合指南,包括遙測設定、成本分析、生產力指標和自動化報告,請參閱 [Claude Code ROI 測量指南](https://github.com/anthropics/claude-code-monitoring-guide)。此儲存庫提供現成可用的 Docker Compose 配置、Prometheus 和 OpenTelemetry 設定,以及用於產生與 Linear 等工具整合的生產力報告的範本。1272如需有關測量 Claude Code 投資回報率的綜合指南,包括遙測設定、成本分析、生產力指標和自動化報告,請參閱 [Claude Code ROI 測量指南](https://github.com/anthropics/claude-code-monitoring-guide)。此儲存庫提供現成可用的 Docker Compose 配置、Prometheus 和 OpenTelemetry 設定,以及用於產生與 Linear 等工具整合的生產力報告的範本。

1083 1273 

1084## 安全性和隱私1274<h2 id="security-and-privacy">

1275 安全性和隱私

1276</h2>

1085 1277 

1086* OpenTelemetry 匯出到您的後端是選擇加入的,需要明確配置。如需了解 Anthropic 的獨立營運遙測以及如何停用它,請參閱[資料使用](/zh-TW/data-usage#telemetry-services)1278* OpenTelemetry 匯出到您的後端是選擇加入的,需要明確配置。如需了解 Anthropic 的獨立營運遙測以及如何停用它,請參閱[資料使用](/zh-TW/data-usage#telemetry-services)

1087* 原始檔案內容和程式碼片段不包含在指標或事件中。追蹤跨度是單獨的資料路徑:請參閱下面的 `OTEL_LOG_TOOL_CONTENT` 項目1279* 原始檔案內容和程式碼片段不包含在指標或事件中。追蹤跨度是單獨的資料路徑:請參閱下面的 `OTEL_LOG_TOOL_CONTENT` 項目

1088* 透過 OAuth 驗證時,`user.email` 包含在遙測屬性中。如果這對您的組織是個問題,請與您的遙測後端合作以篩選或編輯此欄位1280* 透過 OAuth 驗證時,`user.email` 包含在遙測屬性中。如果這對您的組織是個問題,請與您的遙測後端合作以篩選或編輯此欄位

1089* 預設不收集使用者提示內容。僅記錄提示長度。若要包含提示內容,請設定 `OTEL_LOG_USER_PROMPTS=1`1281* 預設不收集使用者提示內容。僅記錄提示長度。若要包含提示內容,請設定 `OTEL_LOG_USER_PROMPTS=1`

1090* 工具輸入引數和參數預設不記錄。若要包含它們,請設定 `OTEL_LOG_TOOL_DETAILS=1`。啟用時,`tool_result` 事件包含 `tool_parameters` 屬性,其中包含 Bash 命令、MCP 伺服器和工具名稱以及技能名稱,以及包含檔案路徑、URL、搜尋模式和其他引數的 `tool_input` 屬性。`user_prompt` 事件包含自訂、plugin 和 MCP 命令的逐字 `command_name`。追蹤跨度包含相同的 `tool_input` 屬性和輸入衍生屬性例如 `file_path`超過 512 個字元的個別值會被截斷,總計上限約為 4 K 字元但引數仍可能包含敏感值根據需要配置您的遙測後端以篩選或編輯這些屬性1282* 工具輸入引數和參數預設不記錄。若要包含它們,請設定 `OTEL_LOG_TOOL_DETAILS=1`。此資料僅傳送到您配置的 OTEL 端點絕不會傳送到 Anthropic引數仍可能包含敏感值因此請根據需要配置您的遙測後端以篩選或編輯這些屬性啟用時:

1283 * `tool_result` 和 `tool_decision` 事件包含 `tool_parameters` 屬性,其中包含 Bash 命令、MCP 伺服器和工具名稱以及技能名稱。`full_command` 等欄位未截斷地發出

1284 * `tool_result` 事件另外包含 `tool_input` 屬性,其中包含檔案路徑、URL、搜尋模式和其他引數。超過 512 個字元的個別值會被截斷,總計上限約為 4 K 字元

1285 * `user_prompt` 事件包含自訂、plugin 和 MCP 命令的逐字 `command_name`

1286 * 追蹤跨度包含相同的 `tool_input` 屬性和輸入衍生屬性,例如 `file_path`,截斷方式與 `tool_input` 相同

1091* 工具輸入和輸出內容預設不在追蹤跨度中記錄。若要包含它,請設定 `OTEL_LOG_TOOL_CONTENT=1`。啟用時,跨度事件包含完整工具輸入和輸出內容,在每個跨度處截斷 60 KB。這可以包含來自 Read 工具結果的原始檔案內容和 Bash 命令輸出。根據需要配置您的遙測後端以篩選或編輯這些屬性1287* 工具輸入和輸出內容預設不在追蹤跨度中記錄。若要包含它,請設定 `OTEL_LOG_TOOL_CONTENT=1`。啟用時,跨度事件包含完整工具輸入和輸出內容,在每個跨度處截斷 60 KB。這可以包含來自 Read 工具結果的原始檔案內容和 Bash 命令輸出。根據需要配置您的遙測後端以篩選或編輯這些屬性

1092* 原始 Anthropic Messages API 請求和回應主體預設不記錄。若要包含它們,請設定 `OTEL_LOG_RAW_API_BODIES`。使用 `=1` 時,每個 API 呼叫發出 `api_request_body` 和 `api_response_body` 日誌事件,其 `body` 屬性是 JSON 序列化的承載,在 60 KB 處截斷。使用 `=file:<dir>` 時,未截斷的主體寫入該目錄下的 `.request.json` 和 `.response.json` 檔案,事件帶有 `body_ref` 路徑而不是內聯主體。使用日誌收集器或邊車傳送目錄,而不是透過遙測流。在兩種模式中,主體包含完整的對話歷史記錄(系統提示、每個先前的使用者和助手輪次、工具結果),因此啟用此選項意味著同意其他 `OTEL_LOG_*` 內容旗標會揭露的所有內容。Claude 的擴展思考內容始終從這些主體中編輯,無論其他設定如何1288* 原始 Anthropic Messages API 請求和回應主體預設不記錄。若要包含它們,請設定 `OTEL_LOG_RAW_API_BODIES`。使用 `=1` 時,每個 API 呼叫發出 `api_request_body` 和 `api_response_body` 日誌事件,其 `body` 屬性是 JSON 序列化的承載,在 60 KB 處截斷。使用 `=file:<dir>` 時,未截斷的主體寫入該目錄下的 `.request.json` 和 `.response.json` 檔案,事件帶有 `body_ref` 路徑而不是內聯主體。使用日誌收集器或邊車傳送目錄,而不是透過遙測流。在兩種模式中,主體包含完整的對話歷史記錄(系統提示、每個先前的使用者和助手輪次、工具結果),因此啟用此選項意味著同意其他 `OTEL_LOG_*` 內容旗標會揭露的所有內容。Claude 的擴展思考內容始終從這些主體中編輯,無論其他設定如何

1093 1289 

1094## 在 Amazon Bedrock 上監控 Claude Code1290<h2 id="monitor-claude-code-on-amazon-bedrock">

1291 在 Amazon Bedrock 上監控 Claude Code

1292</h2>

1095 1293 

1096如需 Amazon Bedrock 上 Claude Code 使用情況監控的詳細指南,請參閱 [Claude Code 監控實作 (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)。1294如需 Amazon Bedrock 上 Claude Code 使用情況監控的詳細指南,請參閱 [Claude Code 監控實作 (Bedrock)](https://github.com/aws-solutions-library-samples/guidance-for-claude-code-with-amazon-bedrock/blob/main/assets/docs/MONITORING.md)。

network-config.md +26 −13

Details

12 本頁面顯示的所有環境變數也可以在 [`settings.json`](/zh-TW/settings) 中設定。12 本頁面顯示的所有環境變數也可以在 [`settings.json`](/zh-TW/settings) 中設定。

13</Note>13</Note>

14 14 

15## 代理設定15<h2 id="proxy-configuration">

16 代理設定

17</h2>

16 18 

17### 環境變數19<h3 id="environment-variables">

20 環境變數

21</h3>

18 22 

19Claude Code 遵守標準代理環境變數:23Claude Code 遵守標準代理環境變數:

20 24 


37 Claude Code 不支援 SOCKS 代理。41 Claude Code 不支援 SOCKS 代理。

38</Note>42</Note>

39 43 

40### 基本驗證44<h3 id="basic-authentication">

45 基本驗證

46</h3>

41 47 

42如果您的代理需要基本驗證,請在代理 URL 中包含認證資訊:48如果您的代理需要基本驗證,請在代理 URL 中包含認證資訊:

43 49 


53 對於需要進階驗證(NTLM、Kerberos 等)的代理,請考慮使用支援您驗證方法的 LLM Gateway 服務。59 對於需要進階驗證(NTLM、Kerberos 等)的代理,請考慮使用支援您驗證方法的 LLM Gateway 服務。

54</Tip>60</Tip>

55 61 

56## CA 憑證存放區62<h2 id="ca-certificate-store">

63 CA 憑證存放區

64</h2>

57 65 

58根據預設,Claude Code 信任其捆綁的 Mozilla CA 憑證和您作業系統的憑證存放區。企業 TLS 檢查代理(例如 CrowdStrike Falcon 和 Zscaler)在其根憑證安裝在作業系統信任存放區中時無需額外設定即可運作。66根據預設,Claude Code 信任其捆綁的 Mozilla CA 憑證和您作業系統的憑證存放區。企業 TLS 檢查代理(例如 CrowdStrike Falcon 和 Zscaler)在其根憑證安裝在作業系統信任存放區中時無需額外設定即可運作。

59 67 

60<Note>

61 系統 CA 存放區整合需要原生 Claude Code 二進位分發。在 Node.js 執行時上執行時,系統 CA 存放區不會自動合併。在這種情況下,設定 `NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem` 以信任企業根 CA。

62</Note>

63 

64`CLAUDE_CODE_CERT_STORE` 接受以逗號分隔的來源清單。認可的值為 `bundled`(Claude Code 隨附的 Mozilla CA 集合)和 `system`(作業系統信任存放區)。預設值為 `bundled,system`。68`CLAUDE_CODE_CERT_STORE` 接受以逗號分隔的來源清單。認可的值為 `bundled`(Claude Code 隨附的 Mozilla CA 集合)和 `system`(作業系統信任存放區)。預設值為 `bundled,system`。

65 69 

66若只信任捆綁的 Mozilla CA 集合:70若只信任捆綁的 Mozilla CA 集合:


79 `CLAUDE_CODE_CERT_STORE` 在 `settings.json` 中沒有專用的架構金鑰。透過 `~/.claude/settings.json` 中的 `env` 區塊或直接在程序環境中設定。83 `CLAUDE_CODE_CERT_STORE` 在 `settings.json` 中沒有專用的架構金鑰。透過 `~/.claude/settings.json` 中的 `env` 區塊或直接在程序環境中設定。

80</Note>84</Note>

81 85 

82## 自訂 CA 憑證86<h2 id="custom-ca-certificates">

87 自訂 CA 憑證

88</h2>

83 89 

84如果您的企業環境使用自訂 CA,請設定 Claude Code 以直接信任它:90如果您的企業環境使用自訂 CA,請設定 Claude Code 以直接信任它:

85 91 


87export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem93export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem

88```94```

89 95 

90## mTLS 驗證96<h2 id="mtls-authentication">

97 mTLS 驗證

98</h2>

91 99 

92對於需要用戶端憑證驗證的企業環境:100對於需要用戶端憑證驗證的企業環境:

93 101 


102export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"110export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"

103```111```

104 112 

105## 網路存取需求113<h2 id="network-access-requirements">

114 網路存取需求

115</h2>

106 116 

107Claude Code 需要存取以下 URL。請在您的代理設定和防火牆規則中將這些 URL 列入允許清單,特別是在容器化或受限網路環境中。117Claude Code 需要存取以下 URL。請在您的代理設定和防火牆規則中將這些 URL 列入允許清單,特別是在容器化或受限網路環境中。

108 118 

109| URL | 用途 |119| URL | 用途 |

110| ------------------------------ | -------------------------------------------------------- |120| ------------------------------ | ----------------------------------------------------------------- |

111| `api.anthropic.com` | Claude API 請求 |121| `api.anthropic.com` | Claude API 請求 |

112| `claude.ai` | claude.ai 帳戶驗證 |122| `claude.ai` | claude.ai 帳戶驗證 |

113| `platform.claude.com` | Anthropic Console 帳戶驗證 |123| `platform.claude.com` | Anthropic Console 帳戶驗證 |

114| `downloads.claude.ai` | 外掛程式可執行檔下載;原生安裝程式和原生自動更新程式 |124| `downloads.claude.ai` | 外掛程式可執行檔下載;原生安裝程式和原生自動更新程式 |

115| `storage.googleapis.com` | {/* max-version: 2.1.115 */}2.1.116 版本之前的原生安裝程式和原生自動更新程式 |125| `storage.googleapis.com` | {/* max-version: 2.1.115 */}2.1.116 版本之前的原生安裝程式和原生自動更新程式 |

116| `bridge.claudeusercontent.com` | [Chrome 中的 Claude](/zh-TW/chrome) 擴充功能 WebSocket 橋接器 |126| `bridge.claudeusercontent.com` | [Chrome 中的 Claude](/zh-TW/chrome) 擴充功能 WebSocket 橋接器 |

127| `raw.githubusercontent.com` | [`/release-notes`](/zh-TW/commands) 的變更日誌摘要和更新後顯示的版本資訊;外掛程式市集安裝計數 |

117 128 

118如果您透過 npm 安裝 Claude Code 或管理自己的二進位分發,終端使用者可能不需要存取 `downloads.claude.ai` 或 `storage.googleapis.com`。129如果您透過 npm 安裝 Claude Code 或管理自己的二進位分發,終端使用者可能不需要存取 `downloads.claude.ai` 或 `storage.googleapis.com`。

119 130 


125 136 

126對於防火牆後的自託管 [GitHub Enterprise Server](/zh-TW/github-enterprise-server) 執行個體,請將相同的 [Anthropic API IP 位址](https://platform.claude.com/docs/en/api/ip-addresses) 列入允許清單,以便 Anthropic 基礎設施可以連線到您的 GHES 主機以複製儲存庫並發佈審查評論。137對於防火牆後的自託管 [GitHub Enterprise Server](/zh-TW/github-enterprise-server) 執行個體,請將相同的 [Anthropic API IP 位址](https://platform.claude.com/docs/en/api/ip-addresses) 列入允許清單,以便 Anthropic 基礎設施可以連線到您的 GHES 主機以複製儲存庫並發佈審查評論。

127 138 

128## 其他資源139<h2 id="additional-resources">

140 其他資源

141</h2>

129 142 

130* [Claude Code 設定](/zh-TW/settings)143* [Claude Code 設定](/zh-TW/settings)

131* [環境變數參考](/zh-TW/env-vars)144* [環境變數參考](/zh-TW/env-vars)

output-styles.md +27 −11

Details

12 12 

13有關您的專案、慣例或程式碼庫的說明,請改用 [CLAUDE.md](/zh-TW/memory)。13有關您的專案、慣例或程式碼庫的說明,請改用 [CLAUDE.md](/zh-TW/memory)。

14 14 

15## 內建輸出樣式15<h2 id="built-in-output-styles">

16 內建輸出樣式

17</h2>

16 18 

17Claude Code 的**預設**輸出樣式是現有的系統提示,旨在幫助您有效地完成軟體工程任務。19Claude Code 的**預設**輸出樣式是現有的系統提示,旨在幫助您有效地完成軟體工程任務。

18 20 

19還有三種額外的內建輸出樣式:21還有三種額外的內建輸出樣式:

20 22 

21* **Proactive**:Claude 立即執行,做出合理的假設而不是暫停進行例行決策,並偏好行動而非規劃。這應用與[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)相同的指導而不改變您的權限模式,因此您在工具運行前仍會看到權限提示。23* **Proactive**:Claude 立即執行,做出合理的假設而不是暫停進行例行決策,並偏好行動而非規劃。這比[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)提供更強的自主執行指導且無需改變您的權限模式,因此您在工具運行前仍會看到權限提示。

22 24 

23* **Explanatory**:在幫助您完成軟體工程任務的同時提供教育性的「Insights」。幫助您理解實現選擇和程式碼庫模式。25* **Explanatory**:在幫助您完成軟體工程任務的同時提供教育性的「Insights」。幫助您理解實現選擇和程式碼庫模式。

24 26 

25* **Learning**:協作式的邊做邊學模式,Claude 不僅會在編碼時分享「Insights」,還會要求您自己貢獻小的、策略性的程式碼片段。Claude Code 將在您的程式碼中添加 `TODO(human)` 標記供您實現。27* **Learning**:協作式的邊做邊學模式,Claude 不僅會在編碼時分享「Insights」,還會要求您自己貢獻小的、策略性的程式碼片段。Claude Code 將在您的程式碼中添加 `TODO(human)` 標記供您實現。

26 28 

27## 變更您的輸出樣式29<h2 id="change-your-output-style">

30 變更您的輸出樣式

31</h2>

28 32 

29執行 `/config` 並選擇**輸出樣式**以從選單中選擇樣式。您的選擇會儲存到[本地專案層級](/zh-TW/settings)的 `.claude/settings.local.json`。33執行 `/config` 並選擇**輸出樣式**以從選單中選擇樣式。您的選擇會儲存到[本地專案層級](/zh-TW/settings)的 `.claude/settings.local.json`。

30 34 

35<Note>{/* max-version: 2.1.90 */}獨立的 `/output-style` 命令已在 v2.1.73 中棄用,並在 v2.1.91 中移除。請使用 `/config` 或直接編輯 `outputStyle` 設定。</Note>

36 

31若要在不使用選單的情況下設定樣式,請直接編輯設定檔中的 `outputStyle` 欄位:37若要在不使用選單的情況下設定樣式,請直接編輯設定檔中的 `outputStyle` 欄位:

32 38 

33```json theme={null}39```json theme={null}


36}42}

37```43```

38 44 

39由於輸出樣式是在工作階段開始時在系統提示中設定的變更將在您下次啟動新工作階段時生效這使系統提示在整個對話中保持穩定,以便 prompt caching 可以降低延遲和成本45輸出樣式是系統提示的一部分Claude Code 在工作階段開始時會讀取一次變更會在執行 `/clear` 或新工作階段後生效。請參閱[Claude Code 如何使用 prompt caching](/zh-TW/prompt-caching#changing-output-style)以了解輸出樣式變更對快取的影響

40 46 

41## 建立自訂輸出樣式47<h2 id="create-a-custom-output-style">

48 建立自訂輸出樣式

49</h2>

42 50 

43自訂輸出樣式是一個 Markdown 檔案:frontmatter 用於中繼資料,然後是要添加到系統提示的指令。51自訂輸出樣式是一個 Markdown 檔案:frontmatter 用於中繼資料,然後是要添加到系統提示的指令。

44 52 


72 </Step>80 </Step>

73 81 

74 <Step title="切換到您的樣式">82 <Step title="切換到您的樣式">

75 執行 `/config` 並在**輸出樣式**下選擇您的樣式。它將在您下次啟動工作階段時生效83 執行 `/config` 並在**輸出樣式**下選擇您的樣式。它將在 `/clear` 之後或下次啟動工作階段時生效

76 </Step>84 </Step>

77</Steps>85</Steps>

78 86 

79[Plugins](/zh-TW/plugins-reference) 也可以在 `output-styles/` 目錄中提供輸出樣式。87[Plugins](/zh-TW/plugins-reference) 也可以在 `output-styles/` 目錄中提供輸出樣式。

80 88 

81### Frontmatter89<h3 id="frontmatter">

90 Frontmatter

91</h3>

82 92 

83輸出樣式檔案支援這些 frontmatter 欄位:93輸出樣式檔案支援這些 frontmatter 欄位:

84 94 


89| `keep-coding-instructions` | 保留 Claude Code 的內建軟體工程指令 | `false` |99| `keep-coding-instructions` | 保留 Claude Code 的內建軟體工程指令 | `false` |

90| `force-for-plugin` | 僅限 Plugin 輸出樣式:在啟用 plugin 時自動應用此樣式,無需要求使用者選擇它。覆蓋使用者的 `outputStyle` 設定。如果多個啟用的 plugin 設定此項,Claude Code 使用第一個載入的。 | `false` |100| `force-for-plugin` | 僅限 Plugin 輸出樣式:在啟用 plugin 時自動應用此樣式,無需要求使用者選擇它。覆蓋使用者的 `outputStyle` 設定。如果多個啟用的 plugin 設定此項,Claude Code 使用第一個載入的。 | `false` |

91 101 

92## 輸出樣式的工作原理102<h2 id="how-output-styles-work">

103 輸出樣式的工作原理

104</h2>

93 105 

94輸出樣式直接修改 Claude Code 的系統提示。106輸出樣式直接修改 Claude Code 的系統提示。

95 107 


99 111 

100Token 使用量取決於樣式。將指令添加到系統提示會增加輸入 token,儘管 prompt caching 在工作階段中的第一個請求之後會降低此成本。內建的 Explanatory 和 Learning 樣式按設計會產生比預設更長的回應,這會增加輸出 token。對於自訂樣式,輸出 token 使用量取決於您的指令告訴 Claude 要產生什麼。112Token 使用量取決於樣式。將指令添加到系統提示會增加輸入 token,儘管 prompt caching 在工作階段中的第一個請求之後會降低此成本。內建的 Explanatory 和 Learning 樣式按設計會產生比預設更長的回應,這會增加輸出 token。對於自訂樣式,輸出 token 使用量取決於您的指令告訴 Claude 要產生什麼。

101 113 

102## 與相關功能的比較114<h2 id="comparisons-to-related-features">

115 與相關功能的比較

116</h2>

103 117 

104多個功能自訂 Claude Code 的行為方式。輸出樣式直接修改系統提示並應用於每個回應。其他功能添加指令而不改變預設系統提示,或將其限定於特定任務。118多個功能自訂 Claude Code 的行為方式。輸出樣式直接修改系統提示並應用於每個回應。其他功能添加指令而不改變預設系統提示,或將其限定於特定任務。

105 119 


111| [Agents](/zh-TW/sub-agents) | 使用自己的系統提示、模型和工具運行子代理 | 您希望為專注任務提供單獨作用域的幫助程式 |125| [Agents](/zh-TW/sub-agents) | 使用自己的系統提示、模型和工具運行子代理 | 您希望為專注任務提供單獨作用域的幫助程式 |

112| [Skills](/zh-TW/skills) | 在呼叫或相關時載入特定於任務的指令 | 您有可重複使用的工作流程 |126| [Skills](/zh-TW/skills) | 在呼叫或相關時載入特定於任務的指令 | 您有可重複使用的工作流程 |

113 127 

114## 相關資源128<h2 id="related-resources">

129 相關資源

130</h2>

115 131 

116* [Settings](/zh-TW/settings):`outputStyle` 欄位所在位置以及設定優先順序的工作原理132* [Settings](/zh-TW/settings):`outputStyle` 欄位所在位置以及設定優先順序的工作原理

117* [Permission modes](/zh-TW/permission-modes):Proactive 樣式鏡像自動模式而不改變您的權限模式133* [Permission modes](/zh-TW/permission-modes):Proactive 樣式與自動模式的比較方式

118* [Plugins](/zh-TW/plugins):與 skills、hooks 和 agents 一起打包和分發輸出樣式134* [Plugins](/zh-TW/plugins):與 skills、hooks 和 agents 一起打包和分發輸出樣式

119* [Debug your configuration](/zh-TW/debug-your-config):診斷為什麼輸出樣式沒有生效135* [Debug your configuration](/zh-TW/debug-your-config):診斷為什麼輸出樣式沒有生效

overview.md +13 −5

Details

8 8 

9Claude Code 是一個由 AI 驅動的編碼助手,可幫助您建立功能、修復錯誤和自動化開發任務。它理解您的整個程式碼庫,並可以跨多個檔案和工具工作以完成任務。9Claude Code 是一個由 AI 驅動的編碼助手,可幫助您建立功能、修復錯誤和自動化開發任務。它理解您的整個程式碼庫,並可以跨多個檔案和工具工作以完成任務。

10 10 

11## 開始使用11<h2 id="get-started">

12 開始使用

13</h2>

12 14 

13選擇您的環境以開始使用。大多數介面需要 [Claude 訂閱](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing)或 [Anthropic Console](https://console.anthropic.com/) 帳戶。終端機 CLI 和 VS Code 也支援[第三方提供商](/zh-TW/third-party-integrations)。15選擇您的環境以開始使用。大多數介面需要 [Claude 訂閱](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=overview_pricing)或 [Anthropic Console](https://console.anthropic.com/) 帳戶。終端機 CLI 和 VS Code 也支援[第三方提供商](/zh-TW/third-party-integrations)。

14 16 


128 </Tab>130 </Tab>

129</Tabs>131</Tabs>

130 132 

131## 您可以做什麼133<h2 id="what-you-can-do">

134 您可以做什麼

135</h2>

132 136 

133以下是您可以使用 Claude Code 的一些方式:137以下是您可以使用 Claude Code 的一些方式:

134 138 


158 </Accordion>162 </Accordion>

159 163 

160 <Accordion title="使用 MCP 連接您的工具" icon="plug">164 <Accordion title="使用 MCP 連接您的工具" icon="plug">

161 [Model Context Protocol (MCP)](/zh-TW/mcp) 是一個開放標準,用於將 AI 工具連接到外部資料來源。使用 MCP,Claude Code 可以讀取 Google Drive 中的設計文件、更新 Jira 中的票證、從 Slack 提取資料,或使用您自己的自訂工具。165 [Model Context Protocol (MCP)](/zh-TW/mcp) 是一個開放標準,用於將 AI 工具連接到外部資料來源。使用 MCP,Claude Code 可以讀取 Google Drive 中的設計文件、更新 Jira 中的票證、從 Slack 提取資料,或使用您自己的自訂工具。[MCP 快速入門](/zh-TW/mcp-quickstart)端到端連接您的第一個伺服器。

162 </Accordion>166 </Accordion>

163 167 

164 <Accordion title="使用說明、skills 和 hooks 進行自訂" icon="sliders">168 <Accordion title="使用說明、skills 和 hooks 進行自訂" icon="sliders">


211 </Accordion>215 </Accordion>

212</AccordionGroup>216</AccordionGroup>

213 217 

214## 在任何地方使用 Claude Code218<h2 id="use-claude-code-everywhere">

219 在任何地方使用 Claude Code

220</h2>

215 221 

216每個介面都連接到相同的基礎 Claude Code 引擎,因此您的 CLAUDE.md 檔案、設定和 MCP servers 可在所有介面中工作。222每個介面都連接到相同的基礎 Claude Code 引擎,因此您的 CLAUDE.md 檔案、設定和 MCP servers 可在所有介面中工作。

217 223 


229| 除錯即時網頁應用程式 | [Chrome](/zh-TW/chrome) |235| 除錯即時網頁應用程式 | [Chrome](/zh-TW/chrome) |

230| 為您自己的工作流程建立自訂代理 | [Agent SDK](/zh-TW/agent-sdk/overview) |236| 為您自己的工作流程建立自訂代理 | [Agent SDK](/zh-TW/agent-sdk/overview) |

231 237 

232## 後續步驟238<h2 id="next-steps">

239 後續步驟

240</h2>

233 241 

234安裝 Claude Code 後,這些指南可幫助您深入了解。242安裝 Claude Code 後,這些指南可幫助您深入了解。

235 243 

Details

8 8 

9當 Claude 想要編輯檔案、執行 shell 命令或進行網路請求時,它會暫停並要求您批准該操作。權限模式控制該暫停發生的頻率。您選擇的模式塑造了會話的流程:預設模式讓您在操作進行時審查每個操作,而較寬鬆的模式讓 Claude 在較長的不間斷時間內工作並在完成時報告。對敏感工作選擇更多監督,或在您信任方向時選擇較少中斷。9當 Claude 想要編輯檔案、執行 shell 命令或進行網路請求時,它會暫停並要求您批准該操作。權限模式控制該暫停發生的頻率。您選擇的模式塑造了會話的流程:預設模式讓您在操作進行時審查每個操作,而較寬鬆的模式讓 Claude 在較長的不間斷時間內工作並在完成時報告。對敏感工作選擇更多監督,或在您信任方向時選擇較少中斷。

10 10 

11## 可用模式11<h2 id="available-modes">

12 可用模式

13</h2>

12 14 

13每種模式在便利性和監督之間進行不同的權衡。下表顯示在每種模式中 Claude 無需權限提示即可執行的操作。15每種模式在便利性和監督之間進行不同的權衡。下表顯示在每種模式中 Claude 無需權限提示即可執行的操作。

14 16 


25 27 

26模式設定基線。在頂部分層[權限規則](/zh-TW/permissions#manage-permissions)以在除 `bypassPermissions` 外的任何模式中預先批准或阻止特定工具,`bypassPermissions` 完全跳過權限層。28模式設定基線。在頂部分層[權限規則](/zh-TW/permissions#manage-permissions)以在除 `bypassPermissions` 外的任何模式中預先批准或阻止特定工具,`bypassPermissions` 完全跳過權限層。

27 29 

28## 切換權限模式30<h2 id="switch-permission-modes">

31 切換權限模式

32</h2>

29 33 

30您可以在會話期間、啟動時或作為持久預設值切換模式。模式通過這些控制設定,而不是通過在聊天中詢問 Claude。選擇下面的您的介面以查看如何變更它。34您可以在會話期間、啟動時或作為持久預設值切換模式。模式通過這些控制設定,而不是通過在聊天中詢問 Claude。選擇下面的您的介面以查看如何變更它。

31 35 


73 | Auto mode | `auto` |77 | Auto mode | `auto` |

74 | 繞過權限 | `bypassPermissions` |78 | 繞過權限 | `bypassPermissions` |

75 79 

76 Auto mode 在您在擴充設定中啟用**允許危險跳過權限**後出現在模式指示器中,但它保持不可用,直到您的帳戶符合 [auto 模式部分](#eliminate-prompts-with-auto-mode)中列出的每項要求。`claudeCode.initialPermissionMode` 設定不接受 `auto`要預設啟動 auto mode,請改為在您的[使用者設定](/zh-TW/settings#settings-files)中設定 `defaultMode`。Claude Code 忽略專案和本機設定中的 `defaultMode: "auto"`。80 Auto mode 在您的帳戶符合 [auto 模式部分](#eliminate-prompts-with-auto-mode)中列出的每項要求時出現在模式指示器中。`claudeCode.initialPermissionMode` 設定不接受 `auto`要預設啟動 auto mode,請改為在您的[使用者設定](/zh-TW/settings#settings-files)中設定 `defaultMode`。Claude Code 忽略專案和本機設定中的 `defaultMode: "auto"`。

77 81 

78 繞過權限也需要**允許危險跳過權限**切換,然後才會在模式指示器中出現。82 繞過權限需要擴充設定中的**允許危險跳過權限**切換,然後才會在模式指示器中出現。

79 83 

80 有關擴充特定詳細資訊,請參閱 [VS Code 指南](/zh-TW/vs-code)。84 有關擴充特定詳細資訊,請參閱 [VS Code 指南](/zh-TW/vs-code)。

81 </Tab>85 </Tab>


102 </Tab>106 </Tab>

103</Tabs>107</Tabs>

104 108 

105## 使用 acceptEdits 模式自動批准檔案編輯109<h2 id="auto-approve-file-edits-with-acceptedits-mode">

110 使用 acceptEdits 模式自動批准檔案編輯

111</h2>

106 112 

107`acceptEdits` 模式讓 Claude 在您的工作目錄中建立和編輯檔案而不提示。狀態欄顯示 `⏵⏵ accept edits on` 當此模式處於活動狀態時。113`acceptEdits` 模式讓 Claude 在您的工作目錄中建立和編輯檔案而不提示。狀態欄顯示 `⏵⏵ accept edits on` 當此模式處於活動狀態時。

108 114 


116claude --permission-mode acceptEdits122claude --permission-mode acceptEdits

117```123```

118 124 

119## 使用 plan mode 在編輯前分析125<h2 id="analyze-before-you-edit-with-plan-mode">

126 使用 plan mode 在編輯前分析

127</h2>

120 128 

121Plan mode 告訴 Claude 研究和提議變更而不進行變更。Claude 讀取檔案、執行 shell 命令進行探索,並寫入計劃,但不編輯您的原始程式碼。權限提示的應用方式與預設模式相同。129Plan mode 告訴 Claude 研究和提議變更而不進行變更。Claude 讀取檔案、執行 shell 命令進行探索,並寫入計劃,但不編輯您的原始程式碼。權限提示的應用方式與預設模式相同。

122 130 


128 136 

129再次按 `Shift+Tab` 離開 plan mode 而不批准計劃。137再次按 `Shift+Tab` 離開 plan mode 而不批准計劃。

130 138 

131### 審查並批准計劃139<h3 id="review-and-approve-a-plan">

140 審查並批准計劃

141</h3>

132 142 

133當計劃準備好時,Claude 呈現它並詢問如何進行。從該提示您可以:143當計劃準備好時,Claude 呈現它並詢問如何進行。從該提示您可以:

134 144 


144 154 

145接受計劃也會根據計劃內容自動命名工作階段,除非您已經使用 `--name` 或 `/rename` 設定了名稱。155接受計劃也會根據計劃內容自動命名工作階段,除非您已經使用 `--name` 或 `/rename` 設定了名稱。

146 156 

147### 將 plan mode 設定為預設值157<h3 id="set-plan-mode-as-the-default">

158 將 plan mode 設定為預設值

159</h3>

148 160 

149若要將 plan mode 設定為專案的預設值,請在 `.claude/settings.json` 中設定 `defaultMode`:161若要將 plan mode 設定為專案的預設值,請在 `.claude/settings.json` 中設定 `defaultMode`:

150 162 


156}168}

157```169```

158 170 

159## 使用 auto mode 消除提示171<h2 id="eliminate-prompts-with-auto-mode">

172 使用 auto mode 消除提示

173</h2>

160 174 

161<Note>175<Note>

162 Auto mode 需要 Claude Code v2.1.83 或更新版本。176 Auto mode 需要 Claude Code v2.1.83 或更新版本。


164 178 

165Auto mode 讓 Claude 執行而不顯示權限提示。單獨的分類器模型在執行前審查操作,阻止任何超出您要求的操作、針對無法識別的基礎設施的操作,或似乎由 Claude 讀到的敵對內容驅動的操作。179Auto mode 讓 Claude 執行而不顯示權限提示。單獨的分類器模型在執行前審查操作,阻止任何超出您要求的操作、針對無法識別的基礎設施的操作,或似乎由 Claude 讀到的敵對內容驅動的操作。

166 180 

167Auto mode 也指示 Claude 立即執行並最小化澄清問題若要在保持權限提示的情況下獲得該行為,請改為設定[主動輸出風格](/zh-TW/output-styles)。181Auto mode 也指示 Claude 繼續工作而不停止以提出澄清問題,儘管當您的提示或技能明確依賴它時,Claude 仍然會提問若要在保持權限提示的情況下獲得更強的自主行為,請改為設定[主動輸出風格](/zh-TW/output-styles)。

168 182 

169<Warning>183<Warning>

170 Auto mode 是研究預覽。它減少提示但不保證安全。將其用於您信任一般方向的任務,而不是作為敏感操作審查的替代品。184 Auto mode 是研究預覽。它減少提示但不保證安全。將其用於您信任一般方向的任務,而不是作為敏感操作審查的替代品。


172 186 

173Auto mode 僅在您的帳戶符合所有這些要求時可用:187Auto mode 僅在您的帳戶符合所有這些要求時可用:

174 188 

175* **計劃**:Max、Team、Enterprise 或 API。Pro 上不可用189* **計劃**:所有計劃

176* **管理員**:在 Team 和 Enterprise 上,管理員必須在 [Claude Code 管理設定](https://claude.ai/admin-settings/claude-code)中啟用它,使用者才能打開它。管理員也可以通過在[受管設定](/zh-TW/permissions#managed-settings)中將 `permissions.disableAutoMode` 設定為 `"disable"` 來鎖定它。190* **管理員**:在 Team 和 Enterprise 上,管理員必須在 [Claude Code 管理設定](https://claude.ai/admin-settings/claude-code)中啟用它,使用者才能打開它。管理員也可以通過在[受管設定](/zh-TW/permissions#managed-settings)中將 `permissions.disableAutoMode` 設定為 `"disable"` 來鎖定它。

177* **模型**:Team、Enterprise API 計劃上的 Claude Sonnet 4.6、Opus 4.6 Opus 4.7;Max 計劃上僅 Claude Opus 4.7不支援其他模型,包括 Haiku 和 claude-3 模型。191* **模型**: Anthropic API 上,Claude Opus 4.6 或更新版本,或 Sonnet 4.6。在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上,僅支援 Claude Opus 4.7 Opus 4.8不支援較舊的模型,包括 Sonnet 4.5、Opus 4.5、Haiku 和 claude-3 模型,在任何提供商上都不支援

178* **提供商**: Anthropic API。在 Bedrock、Vertex Foundry 上不可用192* **提供商**: Anthropic API 上預設可用。在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上,auto mode 關閉,直到您[設定 `CLAUDE_CODE_ENABLE_AUTO_MODE`](#enable-auto-mode-on-bedrock-vertex-ai-or-foundry)

179 193 

180如果 Claude Code 報告 auto mode 不可用,其中一項要求未滿足;這不是暫時性中斷。單獨的訊息命名模型並說 auto mode「無法確定」操作的安全性是暫時性分類器中斷;請參閱[錯誤參考](/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action)。194如果 Claude Code 報告 auto mode 不可用,其中一項要求未滿足;這不是暫時性中斷。單獨的訊息命名模型並說 auto mode「無法確定」操作的安全性是暫時性分類器中斷;請參閱[錯誤參考](/zh-TW/errors#auto-mode-cannot-determine-the-safety-of-an-action)。

181 195 

182如果您在[設定](/zh-TW/settings#available-settings)中設定 `defaultMode: "auto"` 並且會話以 `default` 模式啟動且沒有錯誤,該設定可能在 `.claude/settings.json` 或 `.claude/settings.local.json` 中。Claude Code 忽略來自這些檔案的 `auto`,因此倉庫無法授予自己 auto mode。將其移至 `~/.claude/settings.json`。196如果您在[設定](/zh-TW/settings#available-settings)中設定 `defaultMode: "auto"` 並且會話以 `default` 模式啟動且沒有錯誤,該設定可能在 `.claude/settings.json` 或 `.claude/settings.local.json` 中。Claude Code 忽略來自這些檔案的 `auto`,因此倉庫無法授予自己 auto mode。將其移至 `~/.claude/settings.json`。

183 197 

184### 分類器預設阻止的內容198<h3 id="enable-auto-mode-on-bedrock-vertex-ai-or-foundry">

199 在 Bedrock、Vertex AI 或 Foundry 上啟用 auto mode

200</h3>

201 

202在 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Cloud Vertex AI](/zh-TW/google-vertex-ai) 和 [Microsoft Foundry](/zh-TW/microsoft-foundry) 上,auto mode 不會出現在 `Shift+Tab` 循環中,直到 `CLAUDE_CODE_ENABLE_AUTO_MODE` 設定為 `1`。這些提供商上僅支援 Claude Opus 4.7 和 Opus 4.8。

203 

204若要為一個開發人員啟用它,請將變數添加到 `~/.claude/settings.json` 中的 `env` 區塊:

205 

206```json theme={null}

207{

208 "env": {

209 "CLAUDE_CODE_ENABLE_AUTO_MODE": "1"

210 }

211}

212```

213 

214若要為您的組織啟用它,請將相同的 `env` 區塊添加到[受管設定](/zh-TW/settings#settings-files)。

215 

216設定變數後,auto mode 會出現在每個會話的 `Shift+Tab` 循環中。若要使其成為預設啟動模式,也請在使用者或受管設定中設定 `"permissions": {"defaultMode": "auto"}`。在這些提供商上,Claude Code 忽略 `defaultMode: "auto"`,除非也設定了 `CLAUDE_CODE_ENABLE_AUTO_MODE`。

217 

218若要防止開發人員啟用 auto mode,請在受管設定中將 `disableAutoMode` 設定為 `"disable"`。這會覆蓋啟用變數。

219 

220如果您通過配置了 `ANTHROPIC_BASE_URL` 的 [LLM gateway](/zh-TW/llm-gateway) 連接,auto mode 可能已經可以在沒有啟用變數的情況下到達,因為網關通過 Anthropic API 路由請求。`disableAutoMode` 設定在該配置中以相同方式應用。

221 

222<h3 id="what-the-classifier-blocks-by-default">

223 分類器預設阻止的內容

224</h3>

185 225 

186分類器信任您的工作目錄和您的倉庫配置的遠端。其他所有內容都被視為外部,直到您[配置受信任的基礎設施](/zh-TW/auto-mode-config)。226分類器信任您的工作目錄和您的倉庫配置的遠端。其他所有內容都被視為外部,直到您[配置受信任的基礎設施](/zh-TW/auto-mode-config)。

187 227 


206 246 

207沙箱網路存取請求通過分類器路由,而不是預設允許。執行 `claude auto-mode defaults` 以查看完整規則列表。如果例行操作被阻止,管理員可以通過 `autoMode.environment` 設定添加受信任的倉庫、儲存桶和服務:請參閱[配置 auto mode](/zh-TW/auto-mode-config)。247沙箱網路存取請求通過分類器路由,而不是預設允許。執行 `claude auto-mode defaults` 以查看完整規則列表。如果例行操作被阻止,管理員可以通過 `autoMode.environment` 設定添加受信任的倉庫、儲存桶和服務:請參閱[配置 auto mode](/zh-TW/auto-mode-config)。

208 248 

209### 您在對話中陳述的邊界249<h3 id="boundaries-you-state-in-conversation">

250 您在對話中陳述的邊界

251</h3>

210 252 

211分類器將您在對話中陳述的邊界視為阻止信號。如果您告訴 Claude「不要推送」或「在我審查前等待再部署」,分類器阻止匹配的操作,即使預設規則會允許它們。邊界保持有效,直到您在稍後的訊息中解除它。Claude 自己的判斷條件已滿足不會解除它。253分類器將您在對話中陳述的邊界視為阻止信號。如果您告訴 Claude「不要推送」或「在我審查前等待再部署」,分類器阻止匹配的操作,即使預設規則會允許它們。邊界保持有效,直到您在稍後的訊息中解除它。Claude 自己的判斷條件已滿足不會解除它。

212 254 

213邊界不作為規則儲存。分類器在每次檢查時從記錄中重新讀取它們,因此如果[上下文壓縮](/zh-TW/costs#reduce-token-usage)移除陳述邊界的訊息,邊界可能會丟失。為了硬保證,請改為添加[拒絕規則](/zh-TW/permissions#permission-rule-syntax)。255邊界不作為規則儲存。分類器在每次檢查時從記錄中重新讀取它們,因此如果[上下文壓縮](/zh-TW/costs#reduce-token-usage)移除陳述邊界的訊息,邊界可能會丟失。為了硬保證,請改為添加[拒絕規則](/zh-TW/permissions#permission-rule-syntax)。

214 256 

215### 當 auto mode 回退時257<h3 id="when-auto-mode-falls-back">

258 當 auto mode 回退時

259</h3>

216 260 

217每個被拒絕的操作顯示通知並出現在 `/permissions` 下的「最近拒絕」標籤中,您可以按 `r` 使用手動批准重試它。261每個被拒絕的操作顯示通知並出現在 `/permissions` 下的「最近拒絕」標籤中,您可以按 `r` 使用手動批准重試它。

218 262 


226 <Accordion title="分類器如何評估操作">270 <Accordion title="分類器如何評估操作">

227 每個操作都經過固定的決策順序。第一個匹配的步驟獲勝:271 每個操作都經過固定的決策順序。第一個匹配的步驟獲勝:

228 272 

229 1. 與您的[允許或拒絕規則](/zh-TW/permissions#manage-permissions)相符的操作立即解決273 1. 與您的[允許或拒絕規則](/zh-TW/permissions#manage-permissions)相符的操作立即解決,除了寫入[受保護路徑](#protected-paths),即使允許規則相符也會路由到分類器

230 2. 唯讀操作和工作目錄中的檔案編輯自動批准,除了寫入[受保護路徑](#protected-paths)274 2. 唯讀操作和工作目錄中的檔案編輯自動批准,除了寫入[受保護路徑](#protected-paths)

231 3. 其他所有內容都發送到分類器275 3. 其他所有內容都發送到分類器

232 4. 如果分類器阻止,Claude 接收原因並嘗試替代方法276 4. 如果分類器阻止,Claude 接收原因並嘗試替代方法

233 277 

234 進入 auto mode 時,授予任意程式碼執行的廣泛允許規則被刪除:278 進入 auto mode 時,授予任意程式碼執行的廣泛允許規則被刪除:

235 279 

236 * 全面 `Bash(*)`280 * 全面 `Bash(*)` 或 `PowerShell(*)`

237 * 通配符解釋器,如 `Bash(python*)`281 * 通配符解釋器,如 `Bash(python*)`

238 * 套件管理器執行命令282 * 套件管理器執行命令

239 * `Agent` 允許規則283 * `Agent` 允許規則


256 </Accordion>300 </Accordion>

257</AccordionGroup>301</AccordionGroup>

258 302 

259## 使用 dontAsk 模式僅允許預先批准的工具303<h2 id="allow-only-pre-approved-tools-with-dontask-mode">

304 使用 dontAsk 模式僅允許預先批准的工具

305</h2>

260 306 

261`dontAsk` 模式自動拒絕每個否則會提示的工具呼叫。僅與您的 `permissions.allow` 規則和[唯讀 Bash 命令](/zh-TW/permissions#read-only-commands)相符的操作可以執行;明確的 `ask` 規則被拒絕而不是提示。這使模式完全非互動式,適合 CI 管道或受限環境,您可以在其中預先定義 Claude 可能執行的操作。307`dontAsk` 模式自動拒絕每個否則會提示的工具呼叫。僅與您的 `permissions.allow` 規則和[唯讀 Bash 命令](/zh-TW/permissions#read-only-commands)相符的操作可以執行;明確的 `ask` 規則被拒絕而不是提示。這使模式完全非互動式,適合 CI 管道或受限環境,您可以在其中預先定義 Claude 可能執行的操作。

262 308 


266claude --permission-mode dontAsk312claude --permission-mode dontAsk

267```313```

268 314 

269## 使用 bypassPermissions 模式跳過所有檢查315<h2 id="skip-all-checks-with-bypasspermissions-mode">

316 使用 bypassPermissions 模式跳過所有檢查

317</h2>

270 318 

271`bypassPermissions` 模式禁用權限提示和安全檢查,因此工具呼叫立即執行。自 v2.1.126 起,這包括寫入[受保護路徑](#protected-paths),較早版本仍會提示。針對檔案系統根目錄或主目錄的移除操作,例如 `rm -rf /` 和 `rm -rf ~`,仍會作為針對模型錯誤的斷路器而提示。僅在隔離環境(如容器、VM 或 dev container)中使用此模式,沒有網際網路存取,其中 Claude Code 無法損害您的主機系統。319`bypassPermissions` 模式禁用權限提示和安全檢查,因此工具呼叫立即執行。自 v2.1.126 起,這包括寫入[受保護路徑](#protected-paths),較早版本仍會提示。針對檔案系統根目錄或主目錄的移除操作,例如 `rm -rf /` 和 `rm -rf ~`,仍會作為針對模型錯誤的斷路器而提示。僅在隔離環境(如容器、VM 或 dev container)中使用此模式,沒有網際網路存取,其中 Claude Code 無法損害您的主機系統。

272 320 


290 `bypassPermissions` 不提供針對提示注入或意外操作的保護。對於沒有提示的背景安全檢查,請改為使用 [auto mode](#eliminate-prompts-with-auto-mode)。管理員可以通過在[受管設定](/zh-TW/permissions#managed-settings)中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來阻止此模式。338 `bypassPermissions` 不提供針對提示注入或意外操作的保護。對於沒有提示的背景安全檢查,請改為使用 [auto mode](#eliminate-prompts-with-auto-mode)。管理員可以通過在[受管設定](/zh-TW/permissions#managed-settings)中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來阻止此模式。

291</Warning>339</Warning>

292 340 

293## 受保護的路徑341<h2 id="protected-paths">

342 受保護的路徑

343</h2>

344 

345寫入一小組路徑永遠不會自動批准,在除了 `bypassPermissions` 之外的每種模式中。這防止了倉庫狀態和 Claude 自己的配置的意外損壞。

294 346 

295寫入一小組路徑永遠不會自動批准,在除了 `bypassPermissions` 之外的每種模式中。這防止了倉庫狀態和 Claude 自己的配置的意外損壞。在 `default`、`acceptEdits` 和 `plan` 中,這些寫入會提示;在 `auto` 中它們會路由到分類器;在 `dontAsk` 中它們被拒絕;在 `bypassPermissions` 中它們被允許。347| 模式 | 受保護路徑寫入 |

348| :----------------------------- | :------ |

349| `default`、`acceptEdits`、`plan` | 提示 |

350| `auto` | 路由到分類器 |

351| `dontAsk` | 拒絕 |

352| `bypassPermissions` | 允許 |

296 353 

297受保護的目錄:354受保護的目錄:

298 355 

299* `.git`356* `.git`

357* `.config/git`

300* `.vscode`358* `.vscode`

301* `.idea`359* `.idea`

302* `.husky`360* `.husky`

361* `.cargo`

362* `.devcontainer`

363* `.yarn`

364* `.mvn`

303* `.claude`,除了 `.claude/commands`、`.claude/agents`、`.claude/skills` 和 `.claude/worktrees`,其中 Claude 例行建立內容365* `.claude`,除了 `.claude/commands`、`.claude/agents`、`.claude/skills` 和 `.claude/worktrees`,其中 Claude 例行建立內容

304 366 

305受保護的檔案:367受保護的檔案:

306 368 

307* `.gitconfig`、`.gitmodules`369* `.gitconfig`、`.gitmodules`

308* `.bashrc`、`.bash_profile`、`.zshrc`、`.zprofile`、`.profile`370* `.bashrc`、`.bash_profile`、`.bash_login`、`.bash_aliases`、`.bash_logout`、`.zshrc`、`.zprofile`、`.zshenv`、`.zlogin`、`.zlogout`、`.profile`、`.envrc`

309* `.ripgreprc`371* `.npmrc`、`.yarnrc`、`.yarnrc.yml`、`.pnp.cjs`、`.pnp.loader.mjs`、`.pnpmfile.cjs`、`bunfig.toml`、`.bunfig.toml`

372* `.bazelrc`、`.bazelversion`、`.bazeliskrc`

373* `.pre-commit-config.yaml`、`lefthook.yml`、`lefthook.yaml`、`.lefthook.yml`、`.lefthook.yaml`

374* `gradle-wrapper.properties`、`maven-wrapper.properties`

375* `.devcontainer.json`

376* `.ripgreprc`、`pyrightconfig.json`

310* `.mcp.json`、`.claude.json`377* `.mcp.json`、`.claude.json`

311 378 

312## 另請參閱379<h2 id="see-also">

380 另請參閱

381</h2>

313 382 

314* [Permissions](/zh-TW/permissions):允許、詢問和拒絕規則;受管策略383* [Permissions](/zh-TW/permissions):允許、詢問和拒絕規則;受管策略

315* [Configure auto mode](/zh-TW/auto-mode-config):告訴分類器您的組織信任哪些基礎設施384* [Configure auto mode](/zh-TW/auto-mode-config):告訴分類器您的組織信任哪些基礎設施

permissions.md +92 −34

Details

8 8 

9Claude Code 支援細粒度權限,讓您可以精確指定代理允許執行和不允許執行的操作。權限設定可以簽入版本控制並分發給組織中的所有開發人員,也可以由個別開發人員自訂。9Claude Code 支援細粒度權限,讓您可以精確指定代理允許執行和不允許執行的操作。權限設定可以簽入版本控制並分發給組織中的所有開發人員,也可以由個別開發人員自訂。

10 10 

11## 權限系統11<h2 id="permission-system">

12 權限系統

13</h2>

12 14 

13Claude Code 使用分層權限系統來平衡功能和安全性:15Claude Code 使用分層權限系統來平衡功能和安全性:

14 16 


18| Bash 命令 | Shell 執行 | 是 | 每個專案目錄和命令永久有效 |20| Bash 命令 | Shell 執行 | 是 | 每個專案目錄和命令永久有效 |

19| 檔案修改 | Edit/Write 檔案 | 是 | 直到工作階段結束 |21| 檔案修改 | Edit/Write 檔案 | 是 | 直到工作階段結束 |

20 22 

21## 管理權限23<h2 id="manage-permissions">

24 管理權限

25</h2>

22 26 

23您可以使用 `/permissions` 檢視和管理 Claude Code 的工具權限。此 UI 列出所有權限規則及其來源的 settings.json 檔案。27您可以使用 `/permissions` 檢視和管理 Claude Code 的工具權限。此 UI 列出所有權限規則及其來源的 settings.json 檔案。

24 28 


28 32 

29規則按順序評估:**deny -> ask -> allow**。第一個符合的規則獲勝,因此 deny 規則始終優先。33規則按順序評估:**deny -> ask -> allow**。第一個符合的規則獲勝,因此 deny 規則始終優先。

30 34 

35Deny 規則的行為取決於它們是否命名工具或在工具內限定模式。像 `Bash` 這樣的裸工具名稱會將工具從 Claude 的上下文中完全移除,因此 Claude 永遠看不到它。像 `Bash(rm *)` 這樣的限定規則會保留工具可用性,並在 Claude 嘗試時阻止符合的呼叫。

36 

31<Note>37<Note>

32 權限規則由 Claude Code 強制執行,而不是由模型強制執行。您的提示或 `CLAUDE.md` 中的指令會影響 Claude 嘗試執行的操作,但不會改變 Claude Code 允許的操作。若要授予或撤銷存取權限,請使用 `/permissions`、此處描述的規則、[permission mode](/zh-TW/permission-modes) 或 [PreToolUse hook](#extend-permissions-with-hooks)。38 權限規則由 Claude Code 強制執行,而不是由模型強制執行。您的提示或 `CLAUDE.md` 中的指令會影響 Claude 嘗試執行的操作,但不會改變 Claude Code 允許的操作。若要授予或撤銷存取權限,請使用 `/permissions`、此處描述的規則、[permission mode](/zh-TW/permission-modes) 或 [PreToolUse hook](#extend-permissions-with-hooks)。

33</Note>39</Note>

34 40 

35## 權限模式41<h2 id="permission-modes">

42 權限模式

43</h2>

36 44 

37Claude Code 支援多種權限模式來控制工具的批准方式。請參閱 [Permission modes](/zh-TW/permission-modes) 以了解何時使用每一種。在您的 [settings files](/zh-TW/settings#settings-files) 中設定 `defaultMode`:45Claude Code 支援多種權限模式來控制工具的批准方式。請參閱 [Permission modes](/zh-TW/permission-modes) 以了解何時使用每一種。在您的 [settings files](/zh-TW/settings#settings-files) 中設定 `defaultMode`:

38 46 


46| `bypassPermissions` | 跳過所有權限提示。根目錄和主目錄移除(例如 `rm -rf /`)仍會作為斷路器提示 |54| `bypassPermissions` | 跳過所有權限提示。根目錄和主目錄移除(例如 `rm -rf /`)仍會作為斷路器提示 |

47 55 

48<Warning>56<Warning>

49 `bypassPermissions` 模式會跳過所有權限提示,包括對 `.git`、`.claude`、`.vscode`、`.idea` 和 `.husky` 的寫入。針對檔案系統根目錄或主目錄的移除,例如 `rm -rf /` 和 `rm -rf ~`,仍會作為斷路器提示以防止模型錯誤。僅在隔離環境(如容器或虛擬機)中使用此模式,其中 Claude Code 無法造成損害。管理員可以透過在 [managed settings](#managed-settings) 中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來防止此模式。57 `bypassPermissions` 模式會跳過所有權限提示,包括對 `.git`、`.config/git`、`.claude`、`.vscode`、`.idea`、`.husky`、`.cargo`、`.devcontainer`、`.yarn` 和 `.mvn` 的寫入。針對檔案系統根目錄或主目錄的移除,例如 `rm -rf /` 和 `rm -rf ~`,仍會作為斷路器提示以防止模型錯誤。僅在隔離環境(如容器或虛擬機)中使用此模式,其中 Claude Code 無法造成損害。管理員可以透過在 [managed settings](#managed-settings) 中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來防止此模式。

50</Warning>58</Warning>

51 59 

52若要防止 `bypassPermissions` 或 `auto` 模式被使用,請在任何 [settings files](/zh-TW/settings#settings-files) 中將 `permissions.disableBypassPermissionsMode` 或 `permissions.disableAutoMode` 設定為 `"disable"`。這些在 [managed settings](#managed-settings) 中最有用,因為它們無法被覆蓋。60若要防止 `bypassPermissions` 或 `auto` 模式被使用,請在任何 [settings files](/zh-TW/settings#settings-files) 中將 `permissions.disableBypassPermissionsMode` 或 `permissions.disableAutoMode` 設定為 `"disable"`。這些在 [managed settings](#managed-settings) 中最有用,因為它們無法被覆蓋。

53 61 

54## 權限規則語法62<h2 id="permission-rule-syntax">

63 權限規則語法

64</h2>

55 65 

56權限規則遵循格式 `Tool` 或 `Tool(specifier)`。66權限規則遵循格式 `Tool` 或 `Tool(specifier)`。

57 67 

58### 符合工具的所有使用68<h3 id="match-all-uses-of-a-tool">

69 符合工具的所有使用

70</h3>

59 71 

60若要符合工具的所有使用,請使用不帶括號的工具名稱:72若要符合工具的所有使用,請使用不帶括號的工具名稱:

61 73 


65| `WebFetch` | 符合所有網頁擷取請求 |77| `WebFetch` | 符合所有網頁擷取請求 |

66| `Read` | 符合所有檔案讀取 |78| `Read` | 符合所有檔案讀取 |

67 79 

68`Bash(*)` 等同於 `Bash` 並符合所有 Bash 命令。80`Bash(*)` 等同於 `Bash` 並符合所有 Bash 命令。作為拒絕規則,兩種形式都會從 Claude 的上下文中移除該工具。

69 81 

70### 使用指定符進行細粒度控制82<h3 id="use-specifiers-for-fine-grained-control">

83 使用指定符進行細粒度控制

84</h3>

71 85 

72在括號中新增指定符以符合特定工具使用:86在括號中新增指定符以符合特定工具使用:

73 87 


77| `Read(./.env)` | 符合讀取目前目錄中的 `.env` 檔案 |91| `Read(./.env)` | 符合讀取目前目錄中的 `.env` 檔案 |

78| `WebFetch(domain:example.com)` | 符合對 example.com 的擷取請求 |92| `WebFetch(domain:example.com)` | 符合對 example.com 的擷取請求 |

79 93 

80### 萬用字元模式94<h3 id="wildcard-patterns">

95 萬用字元模式

96</h3>

81 97 

82Bash 規則支援使用 `*` 的 glob 模式。萬用字元可以出現在命令中的任何位置。此設定允許 npm 和 git commit 命令,同時阻止 git push:98Bash 規則支援使用 `*` 的 glob 模式。萬用字元可以出現在命令中的任何位置。此設定允許 npm 和 git commit 命令,同時阻止 git push:

83 99 


100 116 

101`*` 前的空格很重要:`Bash(ls *)` 符合 `ls -la` 但不符合 `lsof`,而 `Bash(ls*)` 兩者都符合。`:*` 後綴是寫入尾部萬用字元的等效方式,所以 `Bash(ls:*)` 符合與 `Bash(ls *)` 相同的命令。117`*` 前的空格很重要:`Bash(ls *)` 符合 `ls -la` 但不符合 `lsof`,而 `Bash(ls*)` 兩者都符合。`:*` 後綴是寫入尾部萬用字元的等效方式,所以 `Bash(ls:*)` 符合與 `Bash(ls *)` 相同的命令。

102 118 

103當您為命令前綴選擇"是,不要再問"時,權限對話框會寫入空格分隔的形式。`:*` 形式僅在模式末尾被識別。在像 `Bash(git:* push)` 這樣的模式中,冒號被視為字面字元,不會符合 git 命令。119當您為命令前綴選擇是,不要再問時,權限對話框會寫入空格分隔的形式。`:*` 形式僅在模式末尾被識別。在像 `Bash(git:* push)` 這樣的模式中,冒號被視為字面字元,不會符合 git 命令。

104 120 

105## 工具特定的權限規則121<h2 id="tool-specific-permission-rules">

122 工具特定的權限規則

123</h2>

106 124 

107### Bash125<h3 id="bash">

126 Bash

127</h3>

108 128 

109Bash 權限規則支援使用 `*` 的萬用字元符合。萬用字元可以出現在命令中的任何位置,包括開頭、中間或結尾:129Bash 權限規則支援使用 `*` 的萬用字元符合。萬用字元可以出現在命令中的任何位置,包括開頭、中間或結尾:

110 130 


118 138 

119當 `*` 出現在末尾且前面有空格時(如 `Bash(ls *)`),它會強制執行字邊界,要求前綴後面跟著空格或字串結尾。例如,`Bash(ls *)` 符合 `ls -la` 但不符合 `lsof`。相比之下,`Bash(ls*)` 沒有空格會同時符合 `ls -la` 和 `lsof`,因為沒有字邊界限制。139當 `*` 出現在末尾且前面有空格時(如 `Bash(ls *)`),它會強制執行字邊界,要求前綴後面跟著空格或字串結尾。例如,`Bash(ls *)` 符合 `ls -la` 但不符合 `lsof`。相比之下,`Bash(ls*)` 沒有空格會同時符合 `ls -la` 和 `lsof`,因為沒有字邊界限制。

120 140 

121#### 複合命令141<h4 id="compound-commands">

142 複合命令

143</h4>

122 144 

123<Tip>145<Tip>

124 Claude Code 知道 shell 運算子,所以前綴符合規則如 `Bash(safe-cmd *)` 不會給它執行命令 `safe-cmd && other-cmd` 的權限。已識別的命令分隔符是 `&&`、`||`、`;`、`|`、`|&`、`&` 和換行符。規則必須獨立符合每個子命令。146 Claude Code 知道 shell 運算子,所以前綴符合規則如 `Bash(safe-cmd *)` 不會給它執行命令 `safe-cmd && other-cmd` 的權限。已識別的命令分隔符是 `&&`、`||`、`;`、`|`、`|&`、`&` 和換行符。規則必須獨立符合每個子命令。


126 148 

127當您使用「是,不要再問」批准複合命令時,Claude Code 會為每個需要批准的子命令儲存一個單獨的規則,而不是為完整複合字串儲存單一規則。例如,批准 `git status && npm test` 會為 `npm test` 儲存一個規則,因此未來的 `npm test` 呼叫會被識別,無論 `&&` 前面是什麼。子命令如 `cd` 進入子目錄會為該路徑產生自己的 Read 規則。單一複合命令最多可能儲存 5 個規則。149當您使用「是,不要再問」批准複合命令時,Claude Code 會為每個需要批准的子命令儲存一個單獨的規則,而不是為完整複合字串儲存單一規則。例如,批准 `git status && npm test` 會為 `npm test` 儲存一個規則,因此未來的 `npm test` 呼叫會被識別,無論 `&&` 前面是什麼。子命令如 `cd` 進入子目錄會為該路徑產生自己的 Read 規則。單一複合命令最多可能儲存 5 個規則。

128 150 

129#### 程序包裝器151<h4 id="process-wrappers">

152 程序包裝器

153</h4>

130 154 

131在符合 Bash 規則之前,Claude Code 會移除一組固定的程序包裝器,所以像 `Bash(npm test *)` 這樣的規則也符合 `timeout 30 npm test`。已識別的包裝器是 `timeout`、`time`、`nice`、`nohup` 和 `stdbuf`。155在符合 Bash 規則之前,Claude Code 會移除一組固定的程序包裝器,所以像 `Bash(npm test *)` 這樣的規則也符合 `timeout 30 npm test`。已識別的包裝器是 `timeout`、`time`、`nice`、`nohup` 和 `stdbuf`。

132 156 


136 160 

137Exec 包裝器如 `watch`、`setsid`、`ionice` 和 `flock` 始終提示,無法透過像 `Bash(watch *)` 這樣的前綴規則自動批准。同樣適用於帶有 `-exec` 或 `-delete` 的 `find`:`Bash(find *)` 規則不涵蓋這些形式。若要批准特定呼叫,請為完整命令字串編寫精確符合規則。161Exec 包裝器如 `watch`、`setsid`、`ionice` 和 `flock` 始終提示,無法透過像 `Bash(watch *)` 這樣的前綴規則自動批准。同樣適用於帶有 `-exec` 或 `-delete` 的 `find`:`Bash(find *)` 規則不涵蓋這些形式。若要批准特定呼叫,請為完整命令字串編寫精確符合規則。

138 162 

139#### 唯讀命令163<h4 id="read-only-commands">

164 唯讀命令

165</h4>

140 166 

141Claude Code 將一組內建的 Bash 命令識別為唯讀,並在每種模式中無需權限提示即可執行它們。這些包括 `ls`、`cat`、`echo`、`pwd`、`head`、`tail`、`grep`、`find`、`wc`、`which`、`diff`、`stat`、`du`、`cd` 和 `git` 的唯讀形式。該集合不可設定;若要要求其中一個命令的提示,請為其新增 `ask` 或 `deny` 規則。167Claude Code 將一組內建的 Bash 命令識別為唯讀,並在每種模式中無需權限提示即可執行它們。這些包括 `ls`、`cat`、`echo`、`pwd`、`head`、`tail`、`grep`、`find`、`wc`、`which`、`diff`、`stat`、`du`、`cd` 和 `git` 的唯讀形式。該集合不可設定;若要要求其中一個命令的提示,請為其新增 `ask` 或 `deny` 規則。

142 168 


162 請注意,單獨使用 WebFetch 不會防止網路存取。如果允許 Bash,Claude 仍然可以使用 `curl`、`wget` 或其他工具來存取任何 URL。188 請注意,單獨使用 WebFetch 不會防止網路存取。如果允許 Bash,Claude 仍然可以使用 `curl`、`wget` 或其他工具來存取任何 URL。

163</Warning>189</Warning>

164 190 

165### PowerShell191<h3 id="powershell">

192 PowerShell

193</h3>

166 194 

167PowerShell 權限規則使用與 Bash 規則相同的形式。使用 `*` 的萬用字元在任何位置符合,`:*` 後綴等同於尾部 ` *`,而裸 `PowerShell` 或 `PowerShell(*)` 符合每個命令。此設定允許 `Get-ChildItem` 和 `git commit` 命令,同時阻止 `Remove-Item`:195PowerShell 權限規則使用與 Bash 規則相同的形式。使用 `*` 的萬用字元在任何位置符合,`:*` 後綴等同於尾部 ` *`,而裸 `PowerShell` 或 `PowerShell(*)` 符合每個命令。此設定允許 `Get-ChildItem` 和 `git commit` 命令,同時阻止 `Remove-Item`:

168 196 


184 212 

185Claude Code 解析 PowerShell AST 並獨立檢查複合命令中的每個命令。管道運算子 `|`、陳述式分隔符 `;` 和在 PowerShell 7+ 上的鏈運算子 `&&` 和 `||` 將複合命令分割為子命令。規則必須符合每個子命令才能允許複合命令。213Claude Code 解析 PowerShell AST 並獨立檢查複合命令中的每個命令。管道運算子 `|`、陳述式分隔符 `;` 和在 PowerShell 7+ 上的鏈運算子 `&&` 和 `||` 將複合命令分割為子命令。規則必須符合每個子命令才能允許複合命令。

186 214 

187### Read 和 Edit215<h3 id="read-and-edit">

216 Read 和 Edit

217</h3>

188 218 

189`Edit` 規則適用於所有編輯檔案的內建工具。Claude 會盡力嘗試將 `Read` 規則應用於所有讀取檔案的內建工具,如 Grep 和 Glob。219`Edit` 規則適用於所有編輯檔案的內建工具。Claude 會盡力嘗試將 `Read` 規則應用於所有讀取檔案的內建工具,如 Grep 和 Glob,以及您提示中的 `@file` 提及,以及連接的 [IDE](/zh-TW/vs-code#the-built-in-ide-mcp-server) 與 Claude 共享的選擇和開啟檔案內容

190 220 

191<Warning>221<Warning>

192 Read 和 Edit deny 規則適用於 Claude 的內建檔案工具和 Claude Code 在 Bash 中識別的檔案命令,如 `cat`、`head`、`tail` 和 `sed`。它們不適用於間接讀取或寫入檔案的任意子程序,如自行開啟檔案的 Python 或 Node 指令碼。為了進行作業系統級別的強制執行,以阻止所有程序存取路徑,請 [enable the sandbox](/zh-TW/sandboxing)。222 Read 和 Edit deny 規則適用於 Claude 的內建檔案工具和 Claude Code 在 Bash 中識別的檔案命令,如 `cat`、`head`、`tail` 和 `sed`。它們不適用於間接讀取或寫入檔案的任意子程序,如自行開啟檔案的 Python 或 Node 指令碼。為了進行作業系統級別的強制執行,以阻止所有程序存取路徑,請 [enable the sandbox](/zh-TW/sandboxing)。


232 262 

233例如,使用 `Read(./project/**)` 允許和 `Read(~/.ssh/**)` 拒絕,位於 `./project/key` 指向 `~/.ssh/id_rsa` 的符號連結被阻止:目標未通過 allow 規則且符合 deny 規則。263例如,使用 `Read(./project/**)` 允許和 `Read(~/.ssh/**)` 拒絕,位於 `./project/key` 指向 `~/.ssh/id_rsa` 的符號連結被阻止:目標未通過 allow 規則且符合 deny 規則。

234 264 

235### WebFetch265<h3 id="webfetch">

266 WebFetch

267</h3>

236 268 

237* `WebFetch(domain:example.com)` 符合對 example.com 的擷取請求269* `WebFetch(domain:example.com)` 符合對 example.com 的擷取請求

238 270 

239### MCP271<h3 id="mcp">

272 MCP

273</h3>

240 274 

241* `mcp__puppeteer` 符合由 `puppeteer` 伺服器提供的任何工具(在 Claude Code 中設定的名稱)275* `mcp__puppeteer` 符合由 `puppeteer` 伺服器提供的任何工具(在 Claude Code 中設定的名稱)

242* `mcp__puppeteer__*` 萬用字元語法,也符合來自 `puppeteer` 伺服器的所有工具276* `mcp__puppeteer__*` 萬用字元語法,也符合來自 `puppeteer` 伺服器的所有工具

243* `mcp__puppeteer__puppeteer_navigate` 符合由 `puppeteer` 伺服器提供的 `puppeteer_navigate` 工具277* `mcp__puppeteer__puppeteer_navigate` 符合由 `puppeteer` 伺服器提供的 `puppeteer_navigate` 工具

244 278 

245### Agent(subagents279<h3 id="agent-subagents">

280 Agent(subagents)

281</h3>

246 282 

247使用 `Agent(AgentName)` 規則來控制 Claude 可以使用哪些 [subagents](/zh-TW/sub-agents):283使用 `Agent(AgentName)` 規則來控制 Claude 可以使用哪些 [subagents](/zh-TW/sub-agents):

248 284 


260}296}

261```297```

262 298 

263## 使用 hooks 擴展權限299<h2 id="extend-permissions-with-hooks">

300 使用 hooks 擴展權限

301</h2>

264 302 

265[Claude Code hooks](/zh-TW/hooks-guide) 提供了一種方式來註冊自訂 shell 命令,以在執行時執行權限評估。當 Claude Code 進行工具呼叫時,PreToolUse hooks 在權限提示之前執行。hook 輸出可以拒絕工具呼叫、強制提示或跳過提示以讓呼叫繼續進行。303[Claude Code hooks](/zh-TW/hooks-guide) 提供了一種方式來註冊自訂 shell 命令,以在執行時執行權限評估。當 Claude Code 進行工具呼叫時,PreToolUse hooks 在權限提示之前執行。hook 輸出可以拒絕工具呼叫、強制提示或跳過提示以讓呼叫繼續進行。

266 304 


268 306 

269阻止 hook 也優先於 allow 規則。以代碼 2 退出的 hook 會在評估權限規則之前停止工具呼叫,因此即使 allow 規則會允許呼叫,該阻止也會適用。若要執行所有 Bash 命令而無需提示,除了您想要阻止的少數幾個,請將 `"Bash"` 新增到您的 allow 清單,並註冊一個 PreToolUse hook 來拒絕那些特定命令。請參閱 [Block edits to protected files](/zh-TW/hooks-guide#block-edits-to-protected-files) 以取得您可以調整的 hook 指令碼。307阻止 hook 也優先於 allow 規則。以代碼 2 退出的 hook 會在評估權限規則之前停止工具呼叫,因此即使 allow 規則會允許呼叫,該阻止也會適用。若要執行所有 Bash 命令而無需提示,除了您想要阻止的少數幾個,請將 `"Bash"` 新增到您的 allow 清單,並註冊一個 PreToolUse hook 來拒絕那些特定命令。請參閱 [Block edits to protected files](/zh-TW/hooks-guide#block-edits-to-protected-files) 以取得您可以調整的 hook 指令碼。

270 308 

271## 工作目錄309<h2 id="working-directories">

310 工作目錄

311</h2>

272 312 

273根據預設,Claude 可以存取啟動它的目錄中的檔案。您可以擴展此存取:313根據預設,Claude 可以存取啟動它的目錄中的檔案。您可以擴展此存取:

274 314 


278 318 

279其他目錄中的檔案遵循與原始工作目錄相同的權限規則:它們變成可讀的而無需提示,檔案編輯權限遵循目前的權限模式。319其他目錄中的檔案遵循與原始工作目錄相同的權限規則:它們變成可讀的而無需提示,檔案編輯權限遵循目前的權限模式。

280 320 

281### 其他目錄授予檔案存取權,而非設定321<h3 id="additional-directories-grant-file-access-not-configuration">

322 其他目錄授予檔案存取權,而非設定

323</h3>

282 324 

283新增目錄會擴展 Claude 可以讀取和編輯檔案的位置。它不會使該目錄成為完整的設定根目錄:大多數 `.claude/` 設定不會從其他目錄發現,儘管有幾種類型作為例外被載入。325新增目錄會擴展 Claude 可以讀取和編輯檔案的位置。它不會使該目錄成為完整的設定根目錄:大多數 `.claude/` 設定不會從其他目錄發現,儘管有幾種類型作為例外被載入。

284 326 

327這些例外僅適用於使用 `--add-dir` 旗標或 `/add-dir` 命令新增的目錄。在設定檔中的 `permissions.additionalDirectories` 中列出的目錄僅授予檔案存取權,不會載入以下任何設定。

328 

285以下設定類型從 `--add-dir` 目錄載入:329以下設定類型從 `--add-dir` 目錄載入:

286 330 

287| 設定 | 從 `--add-dir` 載入 |331| 設定 | 從 `--add-dir` 載入 |


296* **外掛**:將設定打包並分發為 [plugin](/zh-TW/plugins),供團隊安裝340* **外掛**:將設定打包並分發為 [plugin](/zh-TW/plugins),供團隊安裝

297* **從設定目錄啟動**:從包含您想要的 `.claude/` 設定的目錄執行 Claude Code341* **從設定目錄啟動**:從包含您想要的 `.claude/` 設定的目錄執行 Claude Code

298 342 

299## 權限如何與沙箱互動343<h2 id="how-permissions-interact-with-sandboxing">

344 權限如何與沙箱互動

345</h2>

300 346 

301權限和 [sandboxing](/zh-TW/sandboxing) 是互補的安全層:347權限和 [sandboxing](/zh-TW/sandboxing) 是互補的安全層:

302 348 


312 358 

313當沙箱啟用 `autoAllowBashIfSandboxed: true`(預設值)時,沙箱化 Bash 命令無需提示即可執行,即使您的權限包括 `ask: Bash(*)`。沙箱邊界替代每個命令提示。明確的 deny 規則仍然適用,以及針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發提示。請參閱 [sandbox modes](/zh-TW/sandboxing#sandbox-modes) 以變更此行為。359當沙箱啟用 `autoAllowBashIfSandboxed: true`(預設值)時,沙箱化 Bash 命令無需提示即可執行,即使您的權限包括 `ask: Bash(*)`。沙箱邊界替代每個命令提示。明確的 deny 規則仍然適用,以及針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發提示。請參閱 [sandbox modes](/zh-TW/sandboxing#sandbox-modes) 以變更此行為。

314 360 

315## 受管理設定361<h2 id="managed-settings">

362 受管理設定

363</h2>

316 364 

317對於需要集中控制 Claude Code 設定的組織,管理員可以部署無法被使用者或專案設定覆蓋的受管理設定。這些原則設定遵循與一般設定檔案相同的格式,可以透過 MDM/OS 級別原則、受管理設定檔案或 [server-managed settings](/zh-TW/server-managed-settings) 傳遞。請參閱 [settings files](/zh-TW/settings#settings-files) 以了解傳遞機制和檔案位置。365對於需要集中控制 Claude Code 設定的組織,管理員可以部署無法被使用者或專案設定覆蓋的受管理設定。這些原則設定遵循與一般設定檔案相同的格式,可以透過 MDM/OS 級別原則、受管理設定檔案或 [server-managed settings](/zh-TW/server-managed-settings) 傳遞。請參閱 [settings files](/zh-TW/settings#settings-files) 以了解傳遞機制和檔案位置。

318 366 

319### 僅受管理的設定367<h3 id="managed-only-settings">

368 僅受管理的設定

369</h3>

320 370 

321以下設定僅在受管理設定中有效。將它們放在使用者或專案設定檔案中沒有效果。371以下設定僅在受管理設定中有效。將它們放在使用者或專案設定檔案中沒有效果。

322 372 

323| 設定 | 描述 |373| 設定 | 描述 |

324| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |374| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

375| `allowAllClaudeAiMcps` | 當為 `true` 時,claude.ai 連接器會與已部署的 `managed-mcp.json` 一起載入,而不是被其獨佔控制所抑制。請參閱 [Managed MCP configuration](/zh-TW/managed-mcp) |

325| `allowedChannelPlugins` | 可能推送訊息的頻道外掛的允許清單。設定時替換預設 Anthropic 允許清單。需要 `channelsEnabled: true`。請參閱 [Restrict which channel plugins can run](/zh-TW/channels#restrict-which-channel-plugins-can-run) |376| `allowedChannelPlugins` | 可能推送訊息的頻道外掛的允許清單。設定時替換預設 Anthropic 允許清單。需要 `channelsEnabled: true`。請參閱 [Restrict which channel plugins can run](/zh-TW/channels#restrict-which-channel-plugins-can-run) |

326| `allowManagedHooksOnly` | 當為 `true` 時,僅載入受管理 hooks、SDK hooks 和在受管理設定 `enabledPlugins` 中強制啟用的外掛中的 hooks。使用者、專案和所有其他外掛 hooks 被阻止 |377| `allowManagedHooksOnly` | 當為 `true` 時,僅載入受管理 hooks、SDK hooks 和在受管理設定 `enabledPlugins` 中強制啟用的外掛中的 hooks。使用者、專案和所有其他外掛 hooks 被阻止 |

327| `allowManagedMcpServersOnly` | 當為 `true` 時,僅尊重受管理設定中的 `allowedMcpServers`。`deniedMcpServers` 仍然從所有來源合併。請參閱 [Managed MCP configuration](/zh-TW/mcp#managed-mcp-configuration) |378| `allowManagedMcpServersOnly` | 當為 `true` 時,僅尊重受管理設定中的 `allowedMcpServers`。`deniedMcpServers` 仍然從所有來源合併。請參閱 [Managed MCP configuration](/zh-TW/managed-mcp) |

328| `allowManagedPermissionRulesOnly` | 當為 `true` 時,防止使用者和專案設定定義 `allow`、`ask` 或 `deny` 權限規則。僅套用受管理設定中的規則 |379| `allowManagedPermissionRulesOnly` | 當為 `true` 時,防止使用者和專案設定定義 `allow`、`ask` 或 `deny` 權限規則。僅套用受管理設定中的規則。不影響 MCP 伺服器允許清單;如需設定,請設定 `allowManagedMcpServersOnly` |

329| `blockedMarketplaces` | 市場來源的封鎖清單。在下載前檢查被封鎖的來源,因此它們永遠不會接觸檔案系統。請參閱 [managed marketplace restrictions](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) |380| `blockedMarketplaces` | 市場來源的封鎖清單。在下載前檢查被封鎖的來源,因此它們永遠不會接觸檔案系統。請參閱 [managed marketplace restrictions](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) |

330| `channelsEnabled` | 允許組織使用 [channels](/zh-TW/channels)。請參閱 [enterprise controls](/zh-TW/channels#enterprise-controls) 以了解每個方案的預設值 |381| `channelsEnabled` | 允許組織使用 [channels](/zh-TW/channels)。請參閱 [enterprise controls](/zh-TW/channels#enterprise-controls) 以了解每個方案的預設值 |

331| `forceRemoteSettingsRefresh` | 當為 `true` 時,阻止 CLI 啟動直到遠端受管理設定被新鮮擷取,如果擷取失敗則退出。請參閱 [fail-closed enforcement](/zh-TW/server-managed-settings#enforce-fail-closed-startup) |382| `forceRemoteSettingsRefresh` | 當為 `true` 時,阻止 CLI 啟動直到遠端受管理設定被新鮮擷取,如果擷取失敗則退出。請參閱 [fail-closed enforcement](/zh-TW/server-managed-settings#enforce-fail-closed-startup) |


333| `sandbox.filesystem.allowManagedReadPathsOnly` | 當為 `true` 時,僅尊重受管理設定中的 `filesystem.allowRead` 路徑。`denyRead` 仍然從所有來源合併 |384| `sandbox.filesystem.allowManagedReadPathsOnly` | 當為 `true` 時,僅尊重受管理設定中的 `filesystem.allowRead` 路徑。`denyRead` 仍然從所有來源合併 |

334| `sandbox.network.allowManagedDomainsOnly` | 當為 `true` 時,僅尊重來自受管理設定的 `allowedDomains` 和 `WebFetch(domain:...)` allow 規則。非允許的網域會自動被阻止,無需提示使用者。被拒絕的網域仍然從所有來源合併 |385| `sandbox.network.allowManagedDomainsOnly` | 當為 `true` 時,僅尊重來自受管理設定的 `allowedDomains` 和 `WebFetch(domain:...)` allow 規則。非允許的網域會自動被阻止,無需提示使用者。被拒絕的網域仍然從所有來源合併 |

335| `strictKnownMarketplaces` | 控制使用者可以新增和安裝外掛的外掛市場來源。請參閱 [managed marketplace restrictions](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) |386| `strictKnownMarketplaces` | 控制使用者可以新增和安裝外掛的外掛市場來源。請參閱 [managed marketplace restrictions](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) |

387| `strictPluginOnlyCustomization` | 阻止 skills、agents、hooks 和 MCP servers 來自使用者和專案來源,因此它們只能來自外掛或受管理設定。`true` 鎖定所有四個表面;像 `["skills", "hooks"]` 這樣的陣列僅鎖定命名的表面。請參閱 [`strictPluginOnlyCustomization`](/zh-TW/settings#strictpluginonlycustomization) |

336| `wslInheritsWindowsSettings` | 當在 Windows HKLM 登錄機碼或 `C:\Program Files\ClaudeCode\managed-settings.json` 中為 `true` 時,WSL 從 Windows 原則鏈以及 `/etc/claude-code` 讀取受管理設定。請參閱 [Settings files](/zh-TW/settings#settings-files) |388| `wslInheritsWindowsSettings` | 當在 Windows HKLM 登錄機碼或 `C:\Program Files\ClaudeCode\managed-settings.json` 中為 `true` 時,WSL 從 Windows 原則鏈以及 `/etc/claude-code` 讀取受管理設定。請參閱 [Settings files](/zh-TW/settings#settings-files) |

337 389 

338`disableBypassPermissionsMode` 通常放在受管理設定中以強制執行組織原則,但它可以從任何範圍工作。使用者可以在自己的設定中設定它以鎖定自己的繞過模式。390`disableBypassPermissionsMode` 通常放在受管理設定中以強制執行組織原則,但它可以從任何範圍工作。使用者可以在自己的設定中設定它以鎖定自己的繞過模式。

339 391 

340<Note>392<Note>

341 在 Team 和 Enterprise 方案上,管理員在 [Claude Code admin settings](https://claude.ai/admin-settings/claude-code) 中啟用或停用 [Remote Control](/zh-TW/remote-control) 和 [web sessions](/zh-TW/claude-code-on-the-web)。Remote Control 可以另外透過 [`disableRemoteControl`](/zh-TW/settings#available-settings) 受管理設定按裝置停用。Web sessions 沒有按裝置受管理設定金鑰。393 在 Team 和 Enterprise 方案上,管理員在 [Claude Code admin settings](https://claude.ai/admin-settings/claude-code) 中啟用或停用 [Remote Control](/zh-TW/remote-control) 和 [web sessions](/zh-TW/claude-code-on-the-web) 組織範圍內。Remote Control 可以另外透過 [`disableRemoteControl`](/zh-TW/settings#available-settings) 受管理設定按裝置停用。Web sessions 沒有按裝置受管理設定金鑰。

342</Note>394</Note>

343 395 

344## 設定優先順序396<h2 id="settings-precedence">

397 設定優先順序

398</h2>

345 399 

346權限規則遵循與所有其他 Claude Code 設定相同的 [settings precedence](/zh-TW/settings#settings-precedence):400權限規則遵循與所有其他 Claude Code 設定相同的 [settings precedence](/zh-TW/settings#settings-precedence):

347 401 


357 411 

358例如,如果使用者設定允許某項權限而專案設定拒絕它,deny 規則會阻止它。反之亦然:使用者級別的 deny 會阻止專案級別的 allow,因為來自任何範圍的 deny 規則會在 allow 規則之前進行評估。412例如,如果使用者設定允許某項權限而專案設定拒絕它,deny 規則會阻止它。反之亦然:使用者級別的 deny 會阻止專案級別的 allow,因為來自任何範圍的 deny 規則會在 allow 規則之前進行評估。

359 413 

360## 範例設定414<h2 id="example-configurations">

415 範例設定

416</h2>

361 417 

362此 [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) 包含常見部署情境的入門設定設定。使用這些作為起點並根據您的需求進行調整。418此 [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) 包含常見部署情境的入門設定設定。使用這些作為起點並根據您的需求進行調整。

363 419 

364## 另請參閱420<h2 id="see-also">

421 另請參閱

422</h2>

365 423 

366* [Settings](/zh-TW/settings):完整設定參考,包括權限設定表424* [Settings](/zh-TW/settings):完整設定參考,包括權限設定表

367* [Configure auto mode](/zh-TW/auto-mode-config):告訴 auto mode 分類器您的組織信任哪些基礎設施425* [Configure auto mode](/zh-TW/auto-mode-config):告訴 auto mode 分類器您的組織信任哪些基礎設施

platforms.md +21 −7

Details

8 8 

9Claude Code 在各處執行相同的底層引擎,但每個介面都針對不同的工作方式進行了調整。此頁面幫助您為工作流程選擇合適的平台,並連接您已經使用的工具。9Claude Code 在各處執行相同的底層引擎,但每個介面都針對不同的工作方式進行了調整。此頁面幫助您為工作流程選擇合適的平台,並連接您已經使用的工具。

10 10 

11## 在何處執行 Claude Code11<h2 id="where-to-run-claude-code">

12 在何處執行 Claude Code

13</h2>

12 14 

13根據您喜歡的工作方式和專案所在位置選擇平台。15根據您喜歡的工作方式和專案所在位置選擇平台。

14 16 


25 27 

26您可以在同一專案上混合使用介面。配置、專案記憶體和 MCP 伺服器在本地介面之間共享。28您可以在同一專案上混合使用介面。配置、專案記憶體和 MCP 伺服器在本地介面之間共享。

27 29 

28## 連接您的工具30<h2 id="connect-your-tools">

31 連接您的工具

32</h2>

29 33 

30整合讓 Claude 與程式碼庫外的服務協作。34整合讓 Claude 與程式碼庫外的服務協作。

31 35 


39 43 

40對於此處未列出的整合,[MCP servers](/zh-TW/mcp) 和[連接器](/zh-TW/desktop#connect-external-tools)讓您連接幾乎任何東西:Linear、Notion、Google Drive 或您自己的內部 API。44對於此處未列出的整合,[MCP servers](/zh-TW/mcp) 和[連接器](/zh-TW/desktop#connect-external-tools)讓您連接幾乎任何東西:Linear、Notion、Google Drive 或您自己的內部 API。

41 45 

42## 當您遠離終端時工作46<h2 id="work-when-you-are-away-from-your-terminal">

47 當您遠離終端時工作

48</h2>

43 49 

44Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.50Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

45 51 


53 59 

54如果您不確定從何處開始,[安裝 CLI](/zh-TW/quickstart) 並在專案目錄中執行它。如果您不想使用終端,[Desktop](/zh-TW/desktop-quickstart) 為您提供相同的引擎和圖形介面。60如果您不確定從何處開始,[安裝 CLI](/zh-TW/quickstart) 並在專案目錄中執行它。如果您不想使用終端,[Desktop](/zh-TW/desktop-quickstart) 為您提供相同的引擎和圖形介面。

55 61 

56## 相關資源62<h2 id="related-resources">

63 相關資源

64</h2>

57 65 

58### 平台66<h3 id="platforms">

67 平台

68</h3>

59 69 

60* [CLI 快速入門](/zh-TW/quickstart):在終端中安裝並執行您的第一個命令70* [CLI 快速入門](/zh-TW/quickstart):在終端中安裝並執行您的第一個命令

61* [Desktop](/zh-TW/desktop):視覺 diff 審查、並行會話、電腦使用和 Dispatch71* [Desktop](/zh-TW/desktop):視覺 diff 審查、並行會話、電腦使用和 Dispatch


64* [Web 上的 Claude Code](/zh-TW/claude-code-on-the-web):在您斷開連接時繼續執行的雲端會話74* [Web 上的 Claude Code](/zh-TW/claude-code-on-the-web):在您斷開連接時繼續執行的雲端會話

65* Mobile:用於在遠離電腦時啟動和監控任務的 [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) 和 [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) 版 Claude 應用程式75* Mobile:用於在遠離電腦時啟動和監控任務的 [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) 和 [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) 版 Claude 應用程式

66 76 

67### 整合77<h3 id="integrations">

78 整合

79</h3>

68 80 

69* [Chrome](/zh-TW/chrome):使用您已登入的會話自動化瀏覽器任務81* [Chrome](/zh-TW/chrome):使用您已登入的會話自動化瀏覽器任務

70* [Computer use](/zh-TW/computer-use):讓 Claude 在 macOS 上開啟應用程式並控制您的螢幕82* [Computer use](/zh-TW/computer-use):讓 Claude 在 macOS 上開啟應用程式並控制您的螢幕


73* [Code Review](/zh-TW/code-review):每個拉取請求上的自動審查85* [Code Review](/zh-TW/code-review):每個拉取請求上的自動審查

74* [Slack](/zh-TW/slack):從團隊聊天發送任務,取回 PR86* [Slack](/zh-TW/slack):從團隊聊天發送任務,取回 PR

75 87 

76### 遠端存取88<h3 id="remote-access">

89 遠端存取

90</h3>

77 91 

78* [Dispatch](/zh-TW/desktop#sessions-from-dispatch):從您的手機傳送任務,它可以生成 Desktop 會話92* [Dispatch](/zh-TW/desktop#sessions-from-dispatch):從您的手機傳送任務,它可以生成 Desktop 會話

79* [Remote Control](/zh-TW/remote-control):從您的手機或瀏覽器驅動執行中的會話93* [Remote Control](/zh-TW/remote-control):從您的手機或瀏覽器驅動執行中的會話

Details

16 依賴版本約束需要 Claude Code v2.1.110 或更新版本。16 依賴版本約束需要 Claude Code v2.1.110 或更新版本。

17</Note>17</Note>

18 18 

19## 為什麼要限制依賴版本19<h2 id="why-constrain-dependency-versions">

20 為什麼要限制依賴版本

21</h2>

20 22 

21考慮一個內部 marketplace,其中兩個團隊發佈 plugin。平台團隊維護 `secrets-vault`,這是一個包裝 secrets 後端的 MCP 伺服器。部署團隊維護 `deploy-kit`,它在部署期間調用 `secrets-vault` 來獲取認證。23考慮一個內部 marketplace,其中兩個團隊發佈 plugin。平台團隊維護 `secrets-vault`,這是一個包裝 secrets 後端的 MCP 伺服器。部署團隊維護 `deploy-kit`,它在部署期間調用 `secrets-vault` 來獲取認證。

22 24 


24 26 

25使用版本約束,`deploy-kit` 聲明它需要 `~2.1.0` 範圍內的 `secrets-vault`。安裝了 `deploy-kit` 的工程師會保持在最高匹配的 `2.1.x` 修補程式版本。部署團隊通過發佈具有更寬鬆約束的新 `deploy-kit` 版本,按照自己的時間表進行升級。27使用版本約束,`deploy-kit` 聲明它需要 `~2.1.0` 範圍內的 `secrets-vault`。安裝了 `deploy-kit` 的工程師會保持在最高匹配的 `2.1.x` 修補程式版本。部署團隊通過發佈具有更寬鬆約束的新 `deploy-kit` 版本,按照自己的時間表進行升級。

26 28 

27## 聲明具有版本約束的依賴29<h2 id="declare-a-dependency-with-a-version-constraint">

30 聲明具有版本約束的依賴

31</h2>

28 32 

29在 plugin 的 `.claude-plugin/plugin.json` 的 `dependencies` 陣列中列出依賴。每個條目要麼是 plugin 名稱,要麼是具有版本約束的物件。33在 plugin 的 `.claude-plugin/plugin.json` 的 `dependencies` 陣列中列出依賴。每個條目要麼是 plugin 名稱,要麼是具有版本約束的物件。

30 34 


51 55 

52`version` 欄位接受 Node 的 `semver` 套件支援的任何表達式,包括 caret、tilde、hyphen 和 comparator 範圍。預發佈版本(如 `2.0.0-beta.1`)被排除,除非您的範圍使用預發佈後綴(如 `^2.0.0-0`)選擇加入。56`version` 欄位接受 Node 的 `semver` 套件支援的任何表達式,包括 caret、tilde、hyphen 和 comparator 範圍。預發佈版本(如 `2.0.0-beta.1`)被排除,除非您的範圍使用預發佈後綴(如 `^2.0.0-0`)選擇加入。

53 57 

54## 依賴來自另一個 marketplace 的 plugin58<h2 id="depend-on-a-plugin-from-another-marketplace">

59 依賴來自另一個 marketplace 的 plugin

60</h2>

55 61 

56預設情況下,Claude Code 拒絕自動安裝位於與聲明它的 plugin 不同的 marketplace 中的依賴。這可防止一個 marketplace 無聲地從您未審查的來源拉入 plugin。62預設情況下,Claude Code 拒絕自動安裝位於與聲明它的 plugin 不同的 marketplace 中的依賴。這可防止一個 marketplace 無聲地從您未審查的來源拉入 plugin。

57 63 


78 84 

79如果欄位缺失或不包含目標 marketplace,安裝將失敗,並出現 `cross-marketplace` 錯誤,命名要設置的欄位。用戶仍然可以先手動安裝依賴,這會滿足約束而無需更改允許清單。85如果欄位缺失或不包含目標 marketplace,安裝將失敗,並出現 `cross-marketplace` 錯誤,命名要設置的欄位。用戶仍然可以先手動安裝依賴,這會滿足約束而無需更改允許清單。

80 86 

81## 標記 plugin 版本發佈以進行版本解析87<h2 id="tag-plugin-releases-for-version-resolution">

88 標記 plugin 版本發佈以進行版本解析

89</h2>

82 90 

83版本約束針對 marketplace 儲存庫上的 git 標籤進行解析。為了讓 Claude Code 找到依賴的可用版本,上游 plugin 的版本發佈必須使用特定的命名約定進行標記。91版本約束針對 marketplace 儲存庫上的 git 標籤進行解析。為了讓 Claude Code 找到依賴的可用版本,上游 plugin 的版本發佈必須使用特定的命名約定進行標記。

84 92 


100 對於 `npm` marketplace 來源,約束不控制獲取的版本,因為基於標籤的解析僅適用於 git 支援的來源。約束仍在載入時檢查,如果已安裝的版本不滿足它,依賴 plugin 將被禁用,並出現 `dependency-version-unsatisfied` 錯誤。108 對於 `npm` marketplace 來源,約束不控制獲取的版本,因為基於標籤的解析僅適用於 git 支援的來源。約束仍在載入時檢查,如果已安裝的版本不滿足它,依賴 plugin 將被禁用,並出現 `dependency-version-unsatisfied` 錯誤。

101</Note>109</Note>

102 110 

103## 約束如何相互作用111<h2 id="how-constraints-interact">

112 約束如何相互作用

113</h2>

104 114 

105當多個已安裝的 plugins 限制同一依賴時,Claude Code 會交集它們的範圍,並將依賴解析為滿足所有範圍的最高版本。下表顯示常見組合如何解析。115當多個已安裝的 plugins 限制同一依賴時,Claude Code 會交集它們的範圍,並將依賴解析為滿足所有範圍的最高版本。下表顯示常見組合如何解析。

106 116 


114 124 

115當您卸載最後一個限制依賴的 plugin 時,依賴不再被保持,並在下次更新時恢復追蹤其 marketplace 條目。125當您卸載最後一個限制依賴的 plugin 時,依賴不再被保持,並在下次更新時恢復追蹤其 marketplace 條目。

116 126 

117## 啟用或禁用具有依賴的 plugin127<h2 id="enable-or-disable-a-plugin-with-dependencies">

128 啟用或禁用具有依賴的 plugin

129</h2>

118 130 

119啟用 plugin 也會啟用它所依賴的 plugins,禁用 plugin 如果另一個已啟用的 plugin 仍然需要它則會被阻止。這兩種行為都需要 Claude Code v2.1.143 或更新版本。較早的版本只會啟用或禁用命名的 plugin,並在下次載入時出現 `dependency-unsatisfied` 錯誤。131啟用 plugin 也會啟用它所依賴的 plugins,禁用 plugin 如果另一個已啟用的 plugin 仍然需要它則會被阻止。這兩種行為都需要 Claude Code v2.1.143 或更新版本。較早的版本只會啟用或禁用命名的 plugin,並在下次載入時出現 `dependency-unsatisfied` 錯誤。

120 132 


127| 依賴在優先級高於目標範圍的範圍內設置為 `false` | 啟用失敗。在該範圍內啟用依賴,或傳遞 `--scope` 以在那裡寫入。 |139| 依賴在優先級高於目標範圍的範圍內設置為 `false` | 啟用失敗。在該範圍內啟用依賴,或傳遞 `--scope` 以在那裡寫入。 |

128| 所有依賴都已安裝且被允許 | 啟用成功並為 plugin 和每個在目標範圍內尚未啟用的依賴寫入 `true`。 |140| 所有依賴都已安裝且被允許 | 啟用成功並為 plugin 和每個在目標範圍內尚未啟用的依賴寫入 `true`。 |

129 141 

142這甚至在依賴在其 manifest 中設置 [`defaultEnabled: false`](/zh-TW/plugins-reference#default-enablement) 時也成立,因為 Claude Code 為其寫入明確的 `true`。同樣的情況也適用於安裝:為滿足活躍 plugin 而引入的依賴會安裝 `true`,無論其自己的預設值如何。

143 

130當您禁用 plugin 時,Claude Code 拒絕如果另一個已啟用的 plugin 仍然依賴它。錯誤命名依賴它的 plugins 並給您一個鏈接命令,以正確的順序禁用它們,以您要求的那個結尾。144當您禁用 plugin 時,Claude Code 拒絕如果另一個已啟用的 plugin 仍然依賴它。錯誤命名依賴它的 plugins 並給您一個鏈接命令,以正確的順序禁用它們,以您要求的那個結尾。

131 145 

132例如,如果 `deploy-kit` 依賴 `secrets-vault`,單獨禁用 `secrets-vault` 失敗,輸出類似於以下內容:146例如,如果 `deploy-kit` 依賴 `secrets-vault`,單獨禁用 `secrets-vault` 失敗,輸出類似於以下內容:


138 152 

139從錯誤複製鏈接命令以在一個步驟中禁用完整集合。153從錯誤複製鏈接命令以在一個步驟中禁用完整集合。

140 154 

141## 移除孤立的自動安裝依賴155<h2 id="remove-orphaned-auto-installed-dependencies">

156 移除孤立的自動安裝依賴

157</h2>

142 158 

143自動安裝的依賴在安裝它們的 plugins 被卸載後仍會保留在磁碟上,以防您重新安裝依賴 plugin 或想要直接繼續使用依賴。若要清理它們,請執行 `claude plugin prune` 以列出不再有任何已安裝 plugin 需要的自動安裝依賴,並在確認提示後移除它們。這需要 Claude Code v2.1.121 或更新版本。159自動安裝的依賴在安裝它們的 plugins 被卸載後仍會保留在磁碟上,以防您重新安裝依賴 plugin 或想要直接繼續使用依賴。若要清理它們,請執行 `claude plugin prune` 以列出不再有任何已安裝 plugin 需要的自動安裝依賴,並在確認提示後移除它們。這需要 Claude Code v2.1.121 或更新版本。

144 160 


156claude plugin uninstall deploy-kit --prune172claude plugin uninstall deploy-kit --prune

157```173```

158 174 

159## 解析依賴錯誤175<h2 id="resolve-dependency-errors">

176 解析依賴錯誤

177</h2>

160 178 

161依賴問題會在 `claude plugin list`、`/plugin` 介面和 `/doctor` 中出現。受影響的 plugin 將被禁用,直到您解析錯誤。最常見的錯誤及其修復方法列在下表中。179依賴問題會在 `claude plugin list`、`/plugin` 介面和 `/doctor` 中出現。受影響的 plugin 將被禁用,直到您解析錯誤。最常見的錯誤及其修復方法列在下表中。

162 180 


169 187 

170若要以程式設計方式檢查這些錯誤,請執行 `claude plugin list --json` 並讀取每個 plugin 上的 `errors` 欄位。188若要以程式設計方式檢查這些錯誤,請執行 `claude plugin list --json` 並讀取每個 plugin 上的 `errors` 欄位。

171 189 

172## 另請參閱190<h2 id="see-also">

191 另請參閱

192</h2>

173 193 

174* [建立 plugins](/zh-TW/plugins):使用 skills、agents 和 hooks 建立 plugins194* [建立 plugins](/zh-TW/plugins):使用 skills、agents 和 hooks 建立 plugins

175* [建立並分發 plugin marketplace](/zh-TW/plugin-marketplaces):為您的團隊託管 plugins195* [建立並分發 plugin marketplace](/zh-TW/plugin-marketplaces):為您的團隊託管 plugins

plugin-hints.md +164 −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# 從您的 CLI 推薦您的外掛程式

6 

7> 從您的 CLI 發出單行標記,以便 Claude Code 提示使用者安裝您的官方外掛程式。

8 

9如果您維護 CLI 或 SDK,並在官方 Anthropic 市場中有外掛程式,您的工具可以提示 Claude Code 使用者安裝該外掛程式。當您的 CLI 偵測到它在 Claude Code 內執行時,會向 stderr 寫入單行標記。Claude Code 讀取該標記,將其從輸出中移除,並向使用者顯示一次性安裝提示。

10 

11Claude Code 在將命令輸出發送給模型之前會從中移除提示行,因此標記永遠不會出現在對話中,也不會計入代幣使用量。該協議不需要額外命令,也不會改變您的 CLI 為 Claude Code 外部使用者列印的內容。

12 

13本頁面適用於 CLI 和 SDK 維護者。如果您正在尋找安裝外掛程式,請參閱[探索和安裝外掛程式](/zh-TW/discover-plugins)。

14 

15<h2 id="how-it-works">

16 運作方式

17</h2>

18 

19Claude Code 為透過 Bash 和 PowerShell 工具執行的每個命令,以及 [hook](/zh-TW/hooks) 命令設定 [`CLAUDECODE`](/zh-TW/env-vars) 環境變數為 `1`。當您的 CLI 看到該變數時,它會向 stderr 寫入自閉合的 `<claude-code-hint />` 標籤。在 hook 命令中,提示標籤會被移除並忽略。只有 Bash 和 PowerShell 工具輸出會觸發安裝提示。

20 

21當 Claude Code 接收到命令輸出時,它會:

22 

231. 掃描提示行並在輸出到達模型之前將其移除

242. 檢查提示是否指向官方 Anthropic 市場中的外掛程式

253. 檢查外掛程式是否尚未安裝且之前未提示過

264. 向使用者顯示安裝提示,其中包含發出提示的命令名稱

27 

28Claude Code 永遠不會自動安裝外掛程式。使用者始終需要確認。

29 

30<h2 id="emit-the-hint">

31 發出提示

32</h2>

33 

34在 `CLAUDECODE` 環境變數上設定發出條件,以便標記永遠不會出現在人類使用者的終端中。然後將標籤寫入 stderr 的單獨一行。

35 

36以下範例為官方市場中名為 `example-cli` 的外掛程式發出提示:

37 

38<CodeGroup>

39 ```javascript Node.js theme={null}

40 if (process.env.CLAUDECODE) {

41 process.stderr.write(

42 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

43 )

44 }

45 ```

46 

47 ```python Python theme={null}

48 import os, sys

49 

50 if os.environ.get("CLAUDECODE"):

51 print(

52 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

53 file=sys.stderr,

54 )

55 ```

56 

57 ```go Go theme={null}

58 if os.Getenv("CLAUDECODE") != "" {

59 fmt.Fprintln(os.Stderr,

60 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

61 }

62 ```

63 

64 ```shell Shell theme={null}

65 [ -n "$CLAUDECODE" ] &&

66 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

67 ```

68</CodeGroup>

69 

70將 `example-cli` 替換為您在官方市場中的外掛程式名稱。

71 

72<h2 id="choose-where-to-emit">

73 選擇發出位置

74</h2>

75 

76您可以控制哪些程式碼路徑發出提示。Claude Code 按外掛程式進行重複資料刪除,因此在每次呼叫時發出沒有缺點。運作良好的接觸點包括:

77 

78| 位置 | 為什麼有效 |

79| :---------- | :------------------------- |

80| `--help` 輸出 | Claude 在探索不熟悉的 CLI 時經常執行幫助 |

81| 未知子命令錯誤 | 到達 Claude 對您的介面感到困惑的時刻 |

82| 登入或驗證成功 | 使用者已經處於設定心態 |

83| 首次執行歡迎訊息 | 自然的入門時刻 |

84 

85<h2 id="what-the-user-sees">

86 使用者看到的內容

87</h2>

88 

89當提示通過所有檢查時,Claude Code 會顯示如下提示:

90 

91```text theme={null}

92─────────────────────────────────────────────────────────────

93 外掛程式推薦

94 

95 example-cli 命令建議安裝外掛程式。

96 

97 外掛程式:example-cli

98 市場:claude-plugins-official

99 example-cli 部署的官方整合

100 

101 您想要安裝它嗎?

102 ❯ 1. 是的,安裝 example-cli

103 2. 否

104 3. 否,不再顯示外掛程式安裝提示

105 

106─────────────────────────────────────────────────────────────

107```

108 

109提示會命名產生提示的命令,以便使用者可以發現工具與其推薦的外掛程式之間的不匹配。如果使用者在 30 秒內未回應,提示會關閉為**否**。

110 

111提示頻率受限:

112 

113* **每個外掛程式一次**:顯示提示後,Claude Code 會記錄該外掛程式,無論使用者的答案如何,都不會再次提示。

114* **每個工作階段一次**:在機器上的所有 CLI 中,每個 Claude Code 工作階段最多出現一個提示。

115 

116選擇**是的,安裝 example-cli** 會將外掛程式安裝到使用者範圍。選擇**否,不再顯示外掛程式安裝提示**會為使用者停用所有未來的提示。

117 

118<h2 id="hint-format">

119 提示格式

120</h2>

121 

122提示是具有三個必需屬性的自閉合標籤。

123 

124```text theme={null}

125<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />

126```

127 

128| 屬性 | 必需 | 描述 |

129| :------ | :- | :---------------------------- |

130| `v` | 是 | 協議版本。`1` 是唯一支援的值 |

131| `type` | 是 | 提示類型。`plugin` 是唯一支援的值 |

132| `value` | 是 | `name@marketplace` 形式的外掛程式識別碼 |

133 

134屬性值可以用雙引號引用或不引用。未引用的值不能包含空格。不支援逸出序列。

135 

136<h2 id="requirements">

137 要求

138</h2>

139 

140Claude Code 在對提示進行操作之前強制執行兩個條件。未通過任一檢查的提示會被丟棄:

141 

142* **自己的行**:標籤必須佔據自己的行。嵌入在行中間的標籤,例如在日誌陳述式內,會被忽略。允許行上的前導和尾隨空格。

143* **官方市場**:`value` 必須參考 Anthropic 控制的市場中的外掛程式,例如 `claude-plugins-official`。指向其他市場的提示會被無聲地丟棄。

144 

145提示行始終會在到達模型之前從輸出中移除,即使版本或類型無法識別,因此標記永遠不會計入代幣使用量。

146 

147其餘指導是建議的,但不是強制的。Claude Code 無法觀察您的 CLI 是否遵循它:

148 

149* **寫入 stderr**:stderr 將標籤保留在 shell 管道之外,例如 `example-cli deploy | jq`。Claude Code 掃描兩個流,因此 stdout 也有效。

150* **在 `CLAUDECODE` 上設定條件**:僅在設定 `CLAUDECODE` 環境變數時發出。這可防止標記出現在直接執行您的 CLI 的使用者。

151 

152<h2 id="get-your-plugin-into-the-official-marketplace">

153 將您的外掛程式納入官方市場

154</h2>

155 

156提示協議僅對列在官方 Anthropic 市場 `claude-plugins-official` 中的外掛程式生效。Anthropic 自行決定策劃該市場,應用程式內提交表單會將外掛程式新增到[社群市場](/zh-TW/plugins#submit-your-plugin-to-the-community-marketplace),提示協議不會檢查該市場。如果您正在與 Anthropic 合作夥伴聯絡人合作,請與他們聯繫以協調官方市場列表。

157 

158<h2 id="see-also">

159 另請參閱

160</h2>

161 

162* [建立外掛程式](/zh-TW/plugins):建立您的 CLI 推薦的外掛程式

163* [建立和發佈外掛程式市場](/zh-TW/plugin-marketplaces):在官方市場外託管外掛程式

164* [環境變數](/zh-TW/env-vars):`CLAUDECODE` 和相關變數的完整參考

Details

10 10 

11想要從現有 marketplace 安裝 plugin?請參閱[探索並安裝預先建立的 plugin](/zh-TW/discover-plugins)。11想要從現有 marketplace 安裝 plugin?請參閱[探索並安裝預先建立的 plugin](/zh-TW/discover-plugins)。

12 12 

13## 概述13<h2 id="overview">

14 概述

15</h2>

14 16 

15建立並分發 marketplace 涉及:17建立並分發 marketplace 涉及:

16 18 


21 23 

22一旦您的 marketplace 上線,您可以透過推送變更到您的儲存庫來更新它。使用者使用 `/plugin marketplace update` 重新整理其本機副本。24一旦您的 marketplace 上線,您可以透過推送變更到您的儲存庫來更新它。使用者使用 `/plugin marketplace update` 重新整理其本機副本。

23 25 

24## 逐步解說:建立本機 marketplace26<h2 id="walkthrough-create-a-local-marketplace">

27 逐步解說:建立本機 marketplace

28</h2>

25 29 

26此範例建立一個包含一個 plugin 的 marketplace:用於程式碼審查的 `quality-review` skill。您將建立目錄結構、新增 skill、建立 plugin manifest 和 marketplace 目錄,然後安裝並測試它。30此範例建立一個包含一個 plugin 的 marketplace:用於程式碼審查的 `quality-review` skill。您將建立目錄結構、新增 skill、建立 plugin manifest 和 marketplace 目錄,然後安裝並測試它。

27 31 


115 如果您需要在 plugin 之間共享檔案,請使用符號連結。有關詳細資訊,請參閱 [Plugin caching and file resolution](/zh-TW/plugins-reference#plugin-caching-and-file-resolution)。119 如果您需要在 plugin 之間共享檔案,請使用符號連結。有關詳細資訊,請參閱 [Plugin caching and file resolution](/zh-TW/plugins-reference#plugin-caching-and-file-resolution)。

116</Note>120</Note>

117 121 

118## 建立 marketplace 檔案122<h2 id="create-the-marketplace-file">

123 建立 marketplace 檔案

124</h2>

119 125 

120在您的儲存庫根目錄中建立 `.claude-plugin/marketplace.json`。此檔案定義您的 marketplace 名稱、擁有者資訊以及包含其來源的 plugin 清單。126在您的儲存庫根目錄中建立 `.claude-plugin/marketplace.json`。此檔案定義您的 marketplace 名稱、擁有者資訊以及包含其來源的 plugin 清單。

121 127 


150}156}

151```157```

152 158 

153## Marketplace 架構159<h2 id="marketplace-schema">

160 Marketplace 架構

161</h2>

154 162 

155### 必需欄位163<h3 id="required-fields">

164 必需欄位

165</h3>

156 166 

157| 欄位 | 類型 | 描述 | 範例 |167| 欄位 | 類型 | 描述 | 範例 |

158| :-------- | :----- | :-------------------------------------------------------------------------------------------------------- | :------------- |168| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

159| `name` | string | Marketplace 識別碼(kebab-case,無空格)。這是公開的:使用者在安裝 plugin 時會看到它(例如,`/plugin install my-tool@your-marketplace`)。 | `"acme-tools"` |169| `name` | string | Marketplace 識別碼(kebab-case,無空格)。這是公開的:使用者在安裝 plugin 時會看到它(例如,`/plugin install my-tool@your-marketplace`)。每個使用者只能為每個名稱註冊一個 marketplace:新增第二個同名 marketplace 會取代第一個。若要在一個 marketplace 名稱下發佈多個 plugin,請在[單一 `marketplace.json`](#create-the-marketplace-file) 中列出它們全部。 | `"acme-tools"` |

160| `owner` | object | Marketplace 維護者資訊([請參閱下面的欄位](#owner-fields)) | |170| `owner` | object | Marketplace 維護者資訊([請參閱下面的欄位](#owner-fields)) | |

161| `plugins` | array | 可用 plugin 的清單 | 請參閱下面 |171| `plugins` | array | 可用 plugin 的清單 | 請參閱下面 |

162 172 

163<Note>173<Note>

164 **保留名稱**:以下 marketplace 名稱保留供 Anthropic 官方使用,第三方 marketplace 無法使用:`claude-code-marketplace`、`claude-code-plugins`、`claude-plugins-official`、`anthropic-marketplace`、`anthropic-plugins`、`agent-skills`、`anthropic-agent-skills`、`knowledge-work-plugins`、`life-sciences`。模仿官方 marketplace 的名稱(如 `official-claude-plugins` 或 `anthropic-tools-v2`)也被阻止。174 **保留名稱**:以下 marketplace 名稱保留供 Anthropic 官方使用,第三方 marketplace 無法使用:`claude-code-marketplace`、`claude-code-plugins`、`claude-plugins-official`、`anthropic-marketplace`、`anthropic-plugins`、`agent-skills`、`anthropic-agent-skills`、`knowledge-work-plugins`、`life-sciences`、`claude-for-legal`、`claude-for-financial-services`、`financial-services-plugins`。模仿官方 marketplace 的名稱(如 `official-claude-plugins` 或 `anthropic-tools-v2`)也被阻止。

165</Note>175</Note>

166 176 

167### 擁有者欄位177<h3 id="owner-fields">

178 擁有者欄位

179</h3>

168 180 

169| 欄位 | 類型 | 必需 | 描述 |181| 欄位 | 類型 | 必需 | 描述 |

170| :------ | :----- | :- | :--------- |182| :------ | :----- | :- | :--------- |

171| `name` | string | 是 | 維護者或團隊的名稱 |183| `name` | string | 是 | 維護者或團隊的名稱 |

172| `email` | string | 否 | 維護者的聯絡電子郵件 |184| `email` | string | 否 | 維護者的聯絡電子郵件 |

173 185 

174### 選用欄位186<h3 id="optional-fields">

187 選用欄位

188</h3>

175 189 

176| 欄位 | 類型 | 描述 |190| 欄位 | 類型 | 描述 |

177| :------------------------------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |191| :------------------------------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


183 197 

184`description` 和 `version` 也可在 `metadata` 下接受,以保持向後相容性。198`description` 和 `version` 也可在 `metadata` 下接受,以保持向後相容性。

185 199 

186## Plugin 項目200<h2 id="plugin-entries">

201 Plugin 項目

202</h2>

187 203 

188`plugins` 陣列中的每個 plugin 項目描述一個 plugin 及其位置。您可以包含 [plugin manifest 架構](/zh-TW/plugins-reference#plugin-manifest-schema)中的任何欄位(如 `description`、`version`、`author`、`commands`、`hooks` 等),加上這些 marketplace 特定欄位:`source`、`category`、`tags` 和 `strict`。204`plugins` 陣列中的每個 plugin 項目描述一個 plugin 及其位置。您可以包含 [plugin manifest 架構](/zh-TW/plugins-reference#plugin-manifest-schema)中的任何欄位(如 `description`、`version`、`author`、`commands`、`hooks` 等),加上這些 marketplace 特定欄位:`source`、`category`、`tags` 和 `strict`。

189 205 

190### 必需欄位206<h3 id="required-fields">

207 必需欄位

208</h3>

191 209 

192| 欄位 | 類型 | 描述 |210| 欄位 | 類型 | 描述 |

193| :------- | :------------- | :---------------------------------------------------------------------------------------- |211| :------- | :------------- | :---------------------------------------------------------------------------------------- |

194| `name` | string | Plugin 識別碼(kebab-case,無空格)。這是公開的:使用者在安裝時會看到它(例如,`/plugin install my-plugin@marketplace`)。 |212| `name` | string | Plugin 識別碼(kebab-case,無空格)。這是公開的:使用者在安裝時會看到它(例如,`/plugin install my-plugin@marketplace`)。 |

195| `source` | string\|object | 從何處取得 plugin(請參閱下面的 [Plugin 來源](#plugin-sources)) |213| `source` | string\|object | 從何處取得 plugin(請參閱下面的 [Plugin 來源](#plugin-sources)) |

196 214 

197### 選用 plugin 欄位215<h3 id="optional-plugin-fields">

216 選用 plugin 欄位

217</h3>

198 218 

199**標準中繼資料欄位:**219**標準中繼資料欄位:**

200 220 

201| 欄位 | 類型 | 描述 |221| 欄位 | 類型 | 描述 |

202| :------------ | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |222| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

203| `displayName` | string | {/* min-version: 2.1.143 */}在 UI 介面中顯示的人類可讀名稱。當省略時回退到 `name`。可以包含空格和任何大小寫。不用於命名空間或查詢。需要 Claude Code v2.1.143 或更新版本。 |223| `displayName` | string | {/* min-version: 2.1.143 */}在 UI 介面中顯示的人類可讀名稱。當省略時回退到 `name`。可以包含空格和任何大小寫。不用於命名空間或查詢。需要 Claude Code v2.1.143 或更新版本。 |

204| `description` | string | 簡短的 plugin 描述 |224| `description` | string | 簡短的 plugin 描述 |

205| `version` | string | Plugin 版本。如果設定(在此處或在 `plugin.json` 中),plugin 會固定到此字串,使用者只有在版本變更時才會收到更新。省略以回退到 git commit SHA。請參閱 [版本解析](#version-resolution-and-release-channels)。 |225| `version` | string | Plugin 版本。如果設定(在此處或在 `plugin.json` 中),plugin 會固定到此字串,使用者只有在版本變更時才會收到更新。省略以回退到 git commit SHA。請參閱 [版本解析](#version-resolution-and-release-channels)。 |


211| `category` | string | Plugin 類別以供組織 |231| `category` | string | Plugin 類別以供組織 |

212| `tags` | array | 用於可搜尋性的標籤 |232| `tags` | array | 用於可搜尋性的標籤 |

213| `strict` | boolean | 控制 `plugin.json` 是否為元件定義的權威(預設值:true)。請參閱下面的 [Strict mode](#strict-mode)。 |233| `strict` | boolean | 控制 `plugin.json` 是否為元件定義的權威(預設值:true)。請參閱下面的 [Strict mode](#strict-mode)。 |

234| `defaultEnabled` | boolean | {/* min-version: 2.1.154 */}安裝後 plugin 是否啟用(預設值:true)。設定為 `false` 以安裝已停用的 plugin,直到使用者選擇加入。優先於 plugin 的 `plugin.json` 中的相同欄位。請參閱 [預設啟用](/zh-TW/plugins-reference#default-enablement)。需要 Claude Code v2.1.154 或更新版本。 |

214 235 

215**元件配置欄位:**236**元件配置欄位:**

216 237 


223| `mcpServers` | string\|object | MCP server 配置或 MCP 配置的路徑 |244| `mcpServers` | string\|object | MCP server 配置或 MCP 配置的路徑 |

224| `lspServers` | string\|object | LSP server 配置或 LSP 配置的路徑 |245| `lspServers` | string\|object | LSP server 配置或 LSP 配置的路徑 |

225 246 

226## Plugin 來源247<h2 id="plugin-sources">

248 Plugin 來源

249</h2>

227 250 

228Plugin 來源告訴 Claude Code 在您的 marketplace 中列出的每個個別 plugin 從何處取得。這些在 `marketplace.json` 中每個 plugin 項目的 `source` 欄位中設定。251Plugin 來源告訴 Claude Code 在您的 marketplace 中列出的每個個別 plugin 從何處取得。這些在 `marketplace.json` 中每個 plugin 項目的 `source` 欄位中設定。

229 252 


246 例如,託管在 `acme-corp/plugin-catalog`(marketplace 來源)的 marketplace 可以列出從 `acme-corp/code-formatter`(plugin 來源)取得的 plugin。marketplace 來源和 plugin 來源指向不同的儲存庫,並獨立固定。269 例如,託管在 `acme-corp/plugin-catalog`(marketplace 來源)的 marketplace 可以列出從 `acme-corp/code-formatter`(plugin 來源)取得的 plugin。marketplace 來源和 plugin 來源指向不同的儲存庫,並獨立固定。

247</Note>270</Note>

248 271 

249### 相對路徑272<h3 id="relative-paths">

273 相對路徑

274</h3>

250 275 

251對於同一儲存庫中的 plugin,使用以 `./` 開頭的路徑:276對於同一儲存庫中的 plugin,使用以 `./` 開頭的路徑:

252 277 


263 相對路徑僅在使用者透過 Git(GitHub、GitLab 或 git URL)新增您的 marketplace 時有效。如果使用者透過直接 URL 新增您的 marketplace 到 `marketplace.json` 檔案,相對路徑將無法正確解析。對於基於 URL 的分發,請改用 GitHub、npm 或 git URL 來源。有關詳細資訊,請參閱[疑難排解](#plugins-with-relative-paths-fail-in-url-based-marketplaces)。288 相對路徑僅在使用者透過 Git(GitHub、GitLab 或 git URL)新增您的 marketplace 時有效。如果使用者透過直接 URL 新增您的 marketplace 到 `marketplace.json` 檔案,相對路徑將無法正確解析。對於基於 URL 的分發,請改用 GitHub、npm 或 git URL 來源。有關詳細資訊,請參閱[疑難排解](#plugins-with-relative-paths-fail-in-url-based-marketplaces)。

264</Note>289</Note>

265 290 

266### GitHub 儲存庫291<h3 id="github-repositories">

292 GitHub 儲存庫

293</h3>

267 294 

268```json theme={null}295```json theme={null}

269{296{


295| `ref` | string | 選用。Git 分支或標籤(預設為儲存庫預設分支) |322| `ref` | string | 選用。Git 分支或標籤(預設為儲存庫預設分支) |

296| `sha` | string | 選用。完整的 40 字元 git 提交 SHA 以固定到確切版本 |323| `sha` | string | 選用。完整的 40 字元 git 提交 SHA 以固定到確切版本 |

297 324 

298### Git 儲存庫325<h3 id="git-repositories">

326 Git 儲存庫

327</h3>

299 328 

300```json theme={null}329```json theme={null}

301{330{


327| `ref` | string | 選用。Git 分支或標籤(預設為儲存庫預設分支) |356| `ref` | string | 選用。Git 分支或標籤(預設為儲存庫預設分支) |

328| `sha` | string | 選用。完整的 40 字元 git 提交 SHA 以固定到確切版本 |357| `sha` | string | 選用。完整的 40 字元 git 提交 SHA 以固定到確切版本 |

329 358 

330### Git 子目錄359<h3 id="git-subdirectories">

360 Git 子目錄

361</h3>

331 362 

332使用 `git-subdir` 指向位於 git 儲存庫子目錄內的 plugin。Claude Code 使用稀疏、部分複製來僅取得子目錄,最小化大型 monorepo 的頻寬。363使用 `git-subdir` 指向位於 git 儲存庫子目錄內的 plugin。Claude Code 使用稀疏、部分複製來僅取得子目錄,最小化大型 monorepo 的頻寬。

333 364 


366| `ref` | string | 選用。Git 分支或標籤(預設為儲存庫預設分支) |397| `ref` | string | 選用。Git 分支或標籤(預設為儲存庫預設分支) |

367| `sha` | string | 選用。完整的 40 字元 git 提交 SHA 以固定到確切版本 |398| `sha` | string | 選用。完整的 40 字元 git 提交 SHA 以固定到確切版本 |

368 399 

369### npm 套件400<h3 id="npm-packages">

401 npm 套件

402</h3>

370 403 

371作為 npm 套件分發的 plugin 使用 `npm install` 安裝。這適用於公開 npm 登錄表或您的團隊託管的任何私人登錄表上的任何套件。404作為 npm 套件分發的 plugin 使用 `npm install` 安裝。這適用於公開 npm 登錄表或您的團隊託管的任何私人登錄表上的任何套件。

372 405 


413| `version` | string | 選用。版本或版本範圍(例如,`2.1.0`、`^2.0.0`、`~1.5.0`) |446| `version` | string | 選用。版本或版本範圍(例如,`2.1.0`、`^2.0.0`、`~1.5.0`) |

414| `registry` | string | 選用。自訂 npm 登錄表 URL。預設為系統 npm 登錄表(通常為 npmjs.org) |447| `registry` | string | 選用。自訂 npm 登錄表 URL。預設為系統 npm 登錄表(通常為 npmjs.org) |

415 448 

416### 進階 plugin 項目449<h3 id="advanced-plugin-entries">

450 進階 plugin 項目

451</h3>

417 452 

418此範例顯示使用許多選用欄位的 plugin 項目,包括 commands、agents、hooks 和 MCP servers 的自訂路徑:453此範例顯示使用許多選用欄位的 plugin 項目,包括 commands、agents、hooks 和 MCP servers 的自訂路徑:

419 454 


470* **`${CLAUDE_PLUGIN_ROOT}`**:在 hooks 和 MCP server 配置中使用此變數來參考 plugin 安裝目錄內的檔案。這是必要的,因為 plugin 在安裝時被複製到快取位置。對於應在 plugin 更新後保留的相依性或狀態,請改用 [`${CLAUDE_PLUGIN_DATA}`](/zh-TW/plugins-reference#persistent-data-directory)。505* **`${CLAUDE_PLUGIN_ROOT}`**:在 hooks 和 MCP server 配置中使用此變數來參考 plugin 安裝目錄內的檔案。這是必要的,因為 plugin 在安裝時被複製到快取位置。對於應在 plugin 更新後保留的相依性或狀態,請改用 [`${CLAUDE_PLUGIN_DATA}`](/zh-TW/plugins-reference#persistent-data-directory)。

471* **`strict: false`**:由於此設定為 false,plugin 不需要自己的 `plugin.json`。marketplace 項目定義所有內容。請參閱下面的 [Strict mode](#strict-mode)。506* **`strict: false`**:由於此設定為 false,plugin 不需要自己的 `plugin.json`。marketplace 項目定義所有內容。請參閱下面的 [Strict mode](#strict-mode)。

472 507 

473### Strict mode508<h3 id="strict-mode">

509 Strict mode

510</h3>

474 511 

475`strict` 欄位控制 `plugin.json` 是否為元件定義(skills、agents、hooks、MCP servers、輸出樣式)的權威。512`strict` 欄位控制 `plugin.json` 是否為元件定義(skills、agents、hooks、MCP servers、輸出樣式)的權威。

476 513 


484* **`strict: true`**:plugin 有自己的 `plugin.json` 並管理自己的元件。marketplace 項目可以在頂部新增額外的 skills 或 hooks。這是預設值,適用於大多數 plugin。521* **`strict: true`**:plugin 有自己的 `plugin.json` 並管理自己的元件。marketplace 項目可以在頂部新增額外的 skills 或 hooks。這是預設值,適用於大多數 plugin。

485* **`strict: false`**:marketplace 運營商想要完全控制。plugin 儲存庫提供原始檔案,marketplace 項目定義這些檔案中的哪些被公開為 skills、agents、hooks 等。當 marketplace 以不同於 plugin 作者預期的方式重組或策劃 plugin 的元件時很有用。522* **`strict: false`**:marketplace 運營商想要完全控制。plugin 儲存庫提供原始檔案,marketplace 項目定義這些檔案中的哪些被公開為 skills、agents、hooks 等。當 marketplace 以不同於 plugin 作者預期的方式重組或策劃 plugin 的元件時很有用。

486 523 

487## 託管並分發 marketplace524<h2 id="host-and-distribute-marketplaces">

525 託管並分發 marketplace

526</h2>

488 527 

489### 在 GitHub 上託管(推薦)528<h3 id="host-on-github-recommended">

529 在 GitHub 上託管(推薦)

530</h3>

490 531 

491GitHub 提供最簡單的分發方法:532GitHub 提供最簡單的分發方法:

492 533 


496 537 

497**優點**:內建版本控制、問題追蹤和團隊協作功能。538**優點**:內建版本控制、問題追蹤和團隊協作功能。

498 539 

499### 在其他 git 服務上託管540<h3 id="host-on-other-git-services">

541 在其他 git 服務上託管

542</h3>

500 543 

501任何 git 託管服務都可以使用,例如 GitLab、Bitbucket 和自託管伺服器。使用者使用完整儲存庫 URL 新增:544任何 git 託管服務都可以使用,例如 GitLab、Bitbucket 和自託管伺服器。使用者使用完整儲存庫 URL 新增:

502 545 


504/plugin marketplace add https://gitlab.com/company/plugins.git547/plugin marketplace add https://gitlab.com/company/plugins.git

505```548```

506 549 

507### 私人儲存庫550<h3 id="private-repositories">

551 私人儲存庫

552</h3>

508 553 

509Claude Code 支援從私人儲存庫安裝 plugin。對於手動安裝和更新,Claude Code 使用您現有的 git 認證助手,因此 HTTPS 存取透過 `gh auth login`、macOS Keychain 或 `git-credential-store` 的方式與在您的終端中相同。只要主機已在您的 `known_hosts` 檔案中且金鑰已載入 `ssh-agent`,SSH 存取就可以運作,因為 Claude Code 會抑制主機指紋和金鑰密碼的互動式 SSH 提示。554Claude Code 支援從私人儲存庫安裝 plugin。對於手動安裝和更新,Claude Code 使用您現有的 git 認證助手,因此 HTTPS 存取透過 `gh auth login`、macOS Keychain 或 `git-credential-store` 的方式與在您的終端中相同。只要主機已在您的 `known_hosts` 檔案中且金鑰已載入 `ssh-agent`,SSH 存取就可以運作,因為 Claude Code 會抑制主機指紋和金鑰密碼的互動式 SSH 提示。

510 555 


526 對於 CI/CD 環境,將令牌配置為秘密環境變數。GitHub Actions 自動為同一組織中的儲存庫提供 `GITHUB_TOKEN`。571 對於 CI/CD 環境,將令牌配置為秘密環境變數。GitHub Actions 自動為同一組織中的儲存庫提供 `GITHUB_TOKEN`。

527</Note>572</Note>

528 573 

529### 在分發前在本機測試574<h3 id="test-locally-before-distribution">

575 在分發前在本機測試

576</h3>

530 577 

531在分享前在本機測試您的 marketplace:578在分享前在本機測試您的 marketplace:

532 579 


537 584 

538有關完整的新增命令範圍(GitHub、Git URL、本機路徑、遠端 URL),請參閱[新增 marketplace](/zh-TW/discover-plugins#add-marketplaces)。585有關完整的新增命令範圍(GitHub、Git URL、本機路徑、遠端 URL),請參閱[新增 marketplace](/zh-TW/discover-plugins#add-marketplaces)。

539 586 

540### 為您的團隊要求 marketplace587<h3 id="require-marketplaces-for-your-team">

588 為您的團隊要求 marketplace

589</h3>

541 590 

542您可以配置您的儲存庫,以便當團隊成員信任專案資料夾時,他們會自動被提示安裝您的 marketplace。將您的 marketplace 新增到 `.claude/settings.json`:591您可以配置您的儲存庫,以便當團隊成員信任專案資料夾時,他們會自動被提示安裝您的 marketplace。將您的 marketplace 新增到 `.claude/settings.json`:

543 592 


571 如果您使用具有相對路徑的本機 `directory` 或 `file` 來源,路徑會針對您的儲存庫的主要簽出進行解析。當您從 git worktree 執行 Claude Code 時,路徑仍然指向主要簽出,因此所有 worktrees 共享相同的 marketplace 位置。Marketplace 狀態每個使用者儲存一次在 `~/.claude/plugins/known_marketplaces.json` 中,而不是每個專案。620 如果您使用具有相對路徑的本機 `directory` 或 `file` 來源,路徑會針對您的儲存庫的主要簽出進行解析。當您從 git worktree 執行 Claude Code 時,路徑仍然指向主要簽出,因此所有 worktrees 共享相同的 marketplace 位置。Marketplace 狀態每個使用者儲存一次在 `~/.claude/plugins/known_marketplaces.json` 中,而不是每個專案。

572</Note>621</Note>

573 622 

574### 為容器預先填充 plugin623<h3 id="pre-populate-plugins-for-containers">

624 為容器預先填充 plugin

625</h3>

575 626 

576對於容器映像和 CI 環境,您可以在建置時預先填充 plugin 目錄,以便 Claude Code 啟動時已有 marketplace 和 plugin 可用,無需在執行時複製任何內容。設定 `CLAUDE_CODE_PLUGIN_SEED_DIR` 環境變數以指向此目錄。627對於容器映像和 CI 環境,您可以在建置時預先填充 plugin 目錄,以便 Claude Code 啟動時已有 marketplace 和 plugin 可用,無需在執行時複製任何內容。設定 `CLAUDE_CODE_PLUGIN_SEED_DIR` 環境變數以指向此目錄。

577 628 


607* **變更被阻止**:針對種子管理的 marketplace 執行 `/plugin marketplace remove` 或 `/plugin marketplace update` 會失敗,並提示您要求管理員更新種子映像。658* **變更被阻止**:針對種子管理的 marketplace 執行 `/plugin marketplace remove` 或 `/plugin marketplace update` 會失敗,並提示您要求管理員更新種子映像。

608* **與設定組合**:如果 `extraKnownMarketplaces` 或 `enabledPlugins` 宣告已存在於種子中的 marketplace,Claude Code 使用種子副本而不是複製。659* **與設定組合**:如果 `extraKnownMarketplaces` 或 `enabledPlugins` 宣告已存在於種子中的 marketplace,Claude Code 使用種子副本而不是複製。

609 660 

610### 受管 marketplace 限制661<h3 id="managed-marketplace-restrictions">

662 受管 marketplace 限制

663</h3>

611 664 

612對於需要對 plugin 來源進行嚴格控制的組織,管理員可以使用受管設定中的 [`strictKnownMarketplaces`](/zh-TW/settings#strictknownmarketplaces) 設定限制使用者允許新增的 plugin marketplace。665對於需要對 plugin 來源進行嚴格控制的組織,管理員可以使用受管設定中的 [`strictKnownMarketplaces`](/zh-TW/settings#strictknownmarketplaces) 設定限制使用者允許新增的 plugin marketplace。

613 666 


619| 空陣列 `[]` | 完全鎖定。使用者無法新增任何新 marketplace |672| 空陣列 `[]` | 完全鎖定。使用者無法新增任何新 marketplace |

620| 來源清單 | 使用者只能新增與允許清單完全相符的 marketplace |673| 來源清單 | 使用者只能新增與允許清單完全相符的 marketplace |

621 674 

622#### 常見配置675<h4 id="common-configurations">

676 常見配置

677</h4>

623 678 

624停用所有 marketplace 新增:679停用所有 marketplace 新增:

625 680 


683 `strictKnownMarketplaces` 限制使用者可以新增的內容,但不會自行註冊 marketplace。若要在不需要使用者執行 `/plugin marketplace add` 的情況下自動提供允許的 marketplace,請將其與同一 `managed-settings.json` 中的 [`extraKnownMarketplaces`](/zh-TW/settings#extraknownmarketplaces) 配對。請參閱[同時使用兩者](/zh-TW/settings#strictknownmarketplaces)。738 `strictKnownMarketplaces` 限制使用者可以新增的內容,但不會自行註冊 marketplace。若要在不需要使用者執行 `/plugin marketplace add` 的情況下自動提供允許的 marketplace,請將其與同一 `managed-settings.json` 中的 [`extraKnownMarketplaces`](/zh-TW/settings#extraknownmarketplaces) 配對。請參閱[同時使用兩者](/zh-TW/settings#strictknownmarketplaces)。

684</Note>739</Note>

685 740 

686#### 限制如何運作741<h4 id="how-restrictions-work">

742 限制如何運作

743</h4>

687 744 

688限制在任何網路或檔案系統操作之前進行檢查。檢查在 marketplace 新增以及 plugin 安裝、更新、重新整理和自動更新時執行。如果 marketplace 在配置原則之前被新增,且其來源不再符合允許清單,Claude Code 會拒絕從中安裝或更新 plugin。相同的強制執行也適用於 `blockedMarketplaces`。745限制在任何網路或檔案系統操作之前進行檢查。檢查在 marketplace 新增以及 plugin 安裝、更新、重新整理和自動更新時執行。如果 marketplace 在配置原則之前被新增,且其來源不再符合允許清單,Claude Code 會拒絕從中安裝或更新 plugin。相同的強制執行也適用於 `blockedMarketplaces`。

689 746 


700 757 

701有關完整的配置詳細資訊,包括所有支援的來源類型和與 `extraKnownMarketplaces` 的比較,請參閱 [strictKnownMarketplaces 參考](/zh-TW/settings#strictknownmarketplaces)。758有關完整的配置詳細資訊,包括所有支援的來源類型和與 `extraKnownMarketplaces` 的比較,請參閱 [strictKnownMarketplaces 參考](/zh-TW/settings#strictknownmarketplaces)。

702 759 

703### 版本解析和發行通道760<h3 id="version-resolution-and-release-channels">

761 版本解析和發行通道

762</h3>

704 763 

705Plugin 版本決定快取路徑和更新偵測:如果解析的版本與使用者已有的版本相符,`/plugin update` 和自動更新會跳過 plugin。764Plugin 版本決定快取路徑和更新偵測:如果解析的版本與使用者已有的版本相符,`/plugin update` 和自動更新會跳過 plugin。

706 765 


718 避免在 `plugin.json` 和 marketplace 項目中同時設定 `version`。`plugin.json` 值總是無聲地獲勝,因此過時的 manifest 版本可能會掩蓋您在 `marketplace.json` 中設定的版本。777 避免在 `plugin.json` 和 marketplace 項目中同時設定 `version`。`plugin.json` 值總是無聲地獲勝,因此過時的 manifest 版本可能會掩蓋您在 `marketplace.json` 中設定的版本。

719</Warning>778</Warning>

720 779 

721#### 設定發行通道780<h4 id="set-up-release-channels">

781 設定發行通道

782</h4>

722 783 

723若要為您的 plugin 支援「穩定」和「最新」發行通道,您可以設定兩個指向同一儲存庫的不同 ref 或 SHA 的 marketplace。然後,您可以透過[受管設定](/zh-TW/settings#settings-files)將兩個 marketplace 指派給不同的使用者群組。784若要為您的 plugin 支援「穩定」和「最新」發行通道,您可以設定兩個指向同一儲存庫的不同 ref 或 SHA 的 marketplace。然後,您可以透過[受管設定](/zh-TW/settings#settings-files)將兩個 marketplace 指派給不同的使用者群組。

724 785 


726 每個通道必須解析為不同的版本。如果您使用明確版本,`plugin.json` 必須在每個固定的 ref 處宣告不同的 `version`。如果您省略 `version`,不同的提交 SHA 已經區分通道。如果兩個 ref 解析為相同的版本字串,Claude Code 會將它們視為相同並跳過更新。787 每個通道必須解析為不同的版本。如果您使用明確版本,`plugin.json` 必須在每個固定的 ref 處宣告不同的 `version`。如果您省略 `version`,不同的提交 SHA 已經區分通道。如果兩個 ref 解析為相同的版本字串,Claude Code 會將它們視為相同並跳過更新。

727</Warning>788</Warning>

728 789 

729##### 範例790<h5 id="example">

791 範例

792</h5>

730 793 

731```json theme={null}794```json theme={null}

732{795{


760}823}

761```824```

762 825 

763##### 將通道指派給使用者群組826<h5 id="assign-channels-to-user-groups">

827 將通道指派給使用者群組

828</h5>

764 829 

765透過受管設定將每個 marketplace 指派給適當的使用者群組。例如,穩定群組接收:830透過受管設定將每個 marketplace 指派給適當的使用者群組。例如,穩定群組接收:

766 831 


792}857}

793```858```

794 859 

795#### 固定依賴版本860<h4 id="pin-dependency-versions">

861 固定依賴版本

862</h4>

796 863 

797Plugin 可以將其依賴限制在 semver 範圍內,以便依賴的更新不會破壞依賴 plugin。請參閱[限制 plugin 依賴版本](/zh-TW/plugin-dependencies)以了解 `{plugin-name}--v{version}` git 標籤慣例、範圍語法,以及如何組合對同一依賴的多個限制。864Plugin 可以將其依賴限制在 semver 範圍內,以便依賴的更新不會破壞依賴 plugin。請參閱[限制 plugin 依賴版本](/zh-TW/plugin-dependencies)以了解 `{plugin-name}--v{version}` git 標籤慣例、範圍語法,以及如何組合對同一依賴的多個限制。

798 865 

799## 驗證和測試866<h2 id="validation-and-testing">

867 驗證和測試

868</h2>

800 869 

801在分享前測試您的 marketplace。870在分享前測試您的 marketplace。

802 871 


826 895 

827有關完整的 plugin 測試工作流程,請參閱[在本機測試您的 plugin](/zh-TW/plugins#test-your-plugins-locally)。有關技術疑難排解,請參閱 [Plugins reference](/zh-TW/plugins-reference)。896有關完整的 plugin 測試工作流程,請參閱[在本機測試您的 plugin](/zh-TW/plugins#test-your-plugins-locally)。有關技術疑難排解,請參閱 [Plugins reference](/zh-TW/plugins-reference)。

828 897 

829## 從 CLI 管理 marketplace898<h2 id="manage-marketplaces-from-the-cli">

899 從 CLI 管理 marketplace

900</h2>

830 901 

831Claude Code 提供非互動式 `claude plugin marketplace` 子命令用於指令碼和自動化。這些等同於互動式工作階段內可用的 `/plugin marketplace` 命令。902Claude Code 提供非互動式 `claude plugin marketplace` 子命令用於指令碼和自動化。這些等同於互動式工作階段內可用的 `/plugin marketplace` 命令。

832 903 

833### Plugin marketplace add904<h3 id="plugin-marketplace-add">

905 Plugin marketplace add

906</h3>

834 907 

835從 GitHub 儲存庫、git URL、遠端 URL 或本機路徑新增 marketplace。908從 GitHub 儲存庫、git URL、遠端 URL 或本機路徑新增 marketplace。

836 909 


891claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins964claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

892```965```

893 966 

894### Plugin marketplace list967<h3 id="plugin-marketplace-list">

968 Plugin marketplace list

969</h3>

895 970 

896列出所有已配置的 marketplace。971列出所有已配置的 marketplace。

897 972 


905| :------- | :------- |980| :------- | :------- |

906| `--json` | 輸出為 JSON |981| `--json` | 輸出為 JSON |

907 982 

908### Plugin marketplace remove983使用 `--json` 時,每個項目包括 `name`、`source` 和來源特定的欄位:GitHub 來源的 `repo`、git 和 URL 來源的 `url`,以及本機來源的 `path`。當 marketplace 使用固定的分支或標籤新增時,GitHub 和 git 來源也包括 `ref` 欄位。

984 

985<h3 id="plugin-marketplace-remove">

986 Plugin marketplace remove

987</h3>

909 988 

910移除已配置的 marketplace。別名 `rm` 也被接受。989移除已配置的 marketplace。別名 `rm` 也被接受。

911 990 

912```bash theme={null}991```bash theme={null}

913claude plugin marketplace remove <name>992claude plugin marketplace remove <name> [options]

914```993```

915 994 

916**引數:**995**引數:**

917 996 

918* `<name>`:marketplace 名稱以移除,如 `claude plugin marketplace list` 所示。這是 `marketplace.json` 中的 `name`,而不是您傳遞給 `add` 的來源997* `<name>`:marketplace 名稱以移除,如 `claude plugin marketplace list` 所示。這是 `marketplace.json` 中的 `name`,而不是您傳遞給 `add` 的來源

919 998 

999**選項:**

1000 

1001| 選項 | 描述 | 預設 |

1002| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- |

1003| `--scope <scope>` | 限制移除到單一設定範圍:`user`、`project` 或 `local`。請參閱 [Plugin installation scopes](/zh-TW/plugins-reference#plugin-installation-scopes)。省略時,宣告會從每個可編輯的範圍中移除。指定時,只會移除該範圍的宣告;當 marketplace 仍在另一個範圍中宣告時,共享狀態、快取和已安裝的 plugin 資料會被保留 | (所有範圍) |

1004 

920<Warning>1005<Warning>

921 移除 marketplace 也會卸載您從中安裝的任何 plugin。若要重新整理 marketplace 而不失去已安裝的 plugin,請改用 `claude plugin marketplace update`。1006 從其最後剩餘的範圍移除 marketplace 也會卸載您從中安裝的任何 plugin。若要重新整理 marketplace 而不失去已安裝的 plugin,請改用 `claude plugin marketplace update`。

922</Warning>1007</Warning>

923 1008 

924### Plugin marketplace update1009<h3 id="plugin-marketplace-update">

1010 Plugin marketplace update

1011</h3>

925 1012 

926從其來源重新整理 marketplace 以檢索新 plugin 和版本變更。1013從其來源重新整理 marketplace 以檢索新 plugin 和版本變更。

927 1014 


935 1022 

936`remove` 和 `update` 在針對種子管理的 marketplace 執行時都會失敗,該 marketplace 是唯讀的。更新所有 marketplace 時,種子管理的項目被跳過,其他 marketplace 仍然更新。若要變更種子提供的 plugin,請要求您的管理員更新種子映像。請參閱[為容器預先填充 plugin](#pre-populate-plugins-for-containers)。1023`remove` 和 `update` 在針對種子管理的 marketplace 執行時都會失敗,該 marketplace 是唯讀的。更新所有 marketplace 時,種子管理的項目被跳過,其他 marketplace 仍然更新。若要變更種子提供的 plugin,請要求您的管理員更新種子映像。請參閱[為容器預先填充 plugin](#pre-populate-plugins-for-containers)。

937 1024 

938## 疑難排解1025<h2 id="troubleshooting">

1026 疑難排解

1027</h2>

939 1028 

940### Marketplace 未載入1029<h3 id="marketplace-not-loading">

1030 Marketplace 未載入

1031</h3>

941 1032 

942**症狀**:無法新增 marketplace 或看不到其中的 plugin1033**症狀**:無法新增 marketplace 或看不到其中的 plugin

943 1034 


945 1036 

946* 驗證 marketplace URL 可存取1037* 驗證 marketplace URL 可存取

947* 檢查 `.claude-plugin/marketplace.json` 是否存在於指定路徑1038* 檢查 `.claude-plugin/marketplace.json` 是否存在於指定路徑

948* 使用 `claude plugin validate` 或 `/plugin validate` 確保 JSON 語法有效且 frontmatter 格式正確1039* 使用 `claude plugin validate` 或 `/plugin validate` 確保 JSON 語法有效。若要檢查 skill、agent 和 command frontmatter,請針對每個 plugin 目錄執行該命令

949* 對於私人儲存庫,確認您有存取權限1040* 對於私人儲存庫,確認您有存取權限

950 1041 

951### Marketplace 驗證錯誤1042<h3 id="marketplace-validation-errors">

1043 Marketplace 驗證錯誤

1044</h3>

1045 

1046從您的 marketplace 目錄執行 `claude plugin validate .` 或 `/plugin validate .` 以檢查問題。當指向 marketplace 目錄時,驗證器僅檢查 `marketplace.json`:架構、重複的 plugin 名稱、來源路徑遍歷和版本不匹配(針對每個參考的 `plugin.json`)。

952 1047 

953從您的 marketplace 目錄執行 `claude plugin validate .` `/plugin validate .` 以檢查問題。驗證器檢查 `plugin.json`、skill/agent/command frontmatter `hooks/hooks.json` 是否有語法和架構錯誤。常見錯誤:1048若要驗證個別 plugin `plugin.json` 及其 skill、agent、command hook 檔案,請針對 plugin 目錄本身執行該命令,例如 `claude plugin validate ./plugins/my-plugin`。常見錯誤:

954 1049 

955| 錯誤 | 原因 | 解決方案 |1050| 錯誤 | 原因 | 解決方案 |

956| :------------------------------------------------ | :--------------------------------- | :---------------------------------------------------------- |1051| :------------------------------------------------ | :--------------------------------- | :--------------------------------------------------------------------- |

957| `File not found: .claude-plugin/marketplace.json` | 缺少 manifest | 使用必需欄位建立 `.claude-plugin/marketplace.json` |1052| `File not found: .claude-plugin/marketplace.json` | 缺少 manifest | 使用必需欄位建立 `.claude-plugin/marketplace.json` |

958| `Invalid JSON syntax: Unexpected token...` | JSON 語法錯誤 | 檢查缺少的逗號、多餘的逗號或未引用的字串 |1053| `Invalid JSON syntax: Unexpected token...` | JSON 語法錯誤在 marketplace.json 中 | 檢查缺少的逗號、多餘的逗號或未引用的字串 |

959| `Duplicate plugin name "x" found in marketplace` | 兩個 plugin 共享相同名稱 | 為每個 plugin 指定唯一的 `name` 值 |1054| `Duplicate plugin name "x" found in marketplace` | 兩個 plugin 共享相同名稱 | 為每個 plugin 指定唯一的 `name` 值 |

960| `plugins[0].source: Path contains ".."` | 來源路徑包含 `..` | 使用相對於 marketplace 根目錄的路徑,不含 `..`。請參閱[相對路徑](#relative-paths) |1055| `plugins[0].source: Path contains ".."` | 來源路徑包含 `..` | 使用相對於 marketplace 根目錄的路徑,不含 `..`。請參閱[相對路徑](#relative-paths) |

961| `YAML frontmatter failed to parse: ...` | skill、agent 或 command 檔案中的 YAML 無效 | 修正 frontmatter 區塊中的 YAML 語法。在執行時,此檔案載入時不含中繼資料。 |1056| `YAML frontmatter failed to parse: ...` | skill、agent 或 command 檔案中的 YAML 無效 | 修正 frontmatter 區塊中的 YAML 語法。在執行時,此檔案載入時不含中繼資料。僅在驗證 plugin 目錄時報告 |

962| `Invalid JSON syntax: ...`(hooks.json) | 格式不正確的 `hooks/hooks.json` | 修正 JSON 語法。格式不正確的 `hooks/hooks.json` 會防止整個 plugin 載入。 |1057| `Invalid JSON syntax: ...`(hooks.json) | 格式不正確的 `hooks/hooks.json` | 修正 JSON 語法。格式不正確的 `hooks/hooks.json` 會防止整個 plugin 載入。僅在驗證 plugin 目錄時報告 |

963 1058 

964**警告**(非阻止性):1059**警告**(非阻止性):

965 1060 


967* `No marketplace description provided`:新增頂層 `description` 以幫助使用者瞭解您的 marketplace1062* `No marketplace description provided`:新增頂層 `description` 以幫助使用者瞭解您的 marketplace

968* `Plugin name "x" is not kebab-case`:plugin 名稱包含大寫字母、空格或特殊字元。重新命名為僅包含小寫字母、數字和連字號(例如,`my-plugin`)。Claude Code 接受其他形式,但 Claude.ai marketplace 同步會拒絕它們。1063* `Plugin name "x" is not kebab-case`:plugin 名稱包含大寫字母、空格或特殊字元。重新命名為僅包含小寫字母、數字和連字號(例如,`my-plugin`)。Claude Code 接受其他形式,但 Claude.ai marketplace 同步會拒絕它們。

969 1064 

970### Plugin 安裝失敗1065<h3 id="plugin-installation-failures">

1066 Plugin 安裝失敗

1067</h3>

971 1068 

972**症狀**:Marketplace 出現但 plugin 安裝失敗1069**症狀**:Marketplace 出現但 plugin 安裝失敗

973 1070 


978* 對於 GitHub 來源,確保儲存庫是公開的或您有存取權1075* 對於 GitHub 來源,確保儲存庫是公開的或您有存取權

979* 透過手動複製/下載測試 plugin 來源1076* 透過手動複製/下載測試 plugin 來源

980 1077 

981### 私人儲存庫驗證失敗1078<h3 id="private-repository-authentication-fails">

1079 私人儲存庫驗證失敗

1080</h3>

982 1081 

983**症狀**:從私人儲存庫安裝 plugin 時出現驗證錯誤1082**症狀**:從私人儲存庫安裝 plugin 時出現驗證錯誤

984 1083 


998* 對於 GitLab,確保令牌至少具有 `read_repository` 範圍1097* 對於 GitLab,確保令牌至少具有 `read_repository` 範圍

999* 驗證令牌未過期1098* 驗證令牌未過期

1000 1099 

1001### Marketplace 更新在離線環境中失敗1100<h3 id="marketplace-updates-fail-in-offline-environments">

1101 Marketplace 更新在離線環境中失敗

1102</h3>

1002 1103 

1003**症狀**:Marketplace `git pull` 失敗,Claude Code 清除現有快取,導致 plugin 變得不可用。1104**症狀**:Marketplace `git pull` 失敗,Claude Code 清除現有快取,導致 plugin 變得不可用。

1004 1105 


1012 1113 

1013設定此變數後,Claude Code 在 `git pull` 失敗時保留過時的 marketplace 複製,並繼續使用最後已知的良好狀態。對於儲存庫永遠無法到達的完全離線部署,請改用 [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) 在建置時預先填充 plugin 目錄。1114設定此變數後,Claude Code 在 `git pull` 失敗時保留過時的 marketplace 複製,並繼續使用最後已知的良好狀態。對於儲存庫永遠無法到達的完全離線部署,請改用 [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) 在建置時預先填充 plugin 目錄。

1014 1115 

1015### Git 操作逾時1116<h3 id="git-operations-time-out">

1117 Git 操作逾時

1118</h3>

1016 1119 

1017**症狀**:Plugin 安裝或 marketplace 更新失敗,出現逾時錯誤,例如「Git clone timed out after 120s」或「Git pull timed out after 120s」。1120**症狀**:Plugin 安裝或 marketplace 更新失敗,出現逾時錯誤,例如「Git clone timed out after 120s」或「Git pull timed out after 120s」。

1018 1121 


1024export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 分鐘1127export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 分鐘

1025```1128```

1026 1129 

1027### 相對路徑 plugin 在基於 URL 的 marketplace 中失敗1130<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

1131 相對路徑 plugin 在基於 URL 的 marketplace 中失敗

1132</h3>

1028 1133 

1029**症狀**:透過 URL(例如 `https://example.com/marketplace.json`)新增 marketplace,但具有相對路徑來源(如 `"./plugins/my-plugin"`)的 plugin 無法安裝,出現「path not found」錯誤。1134**症狀**:透過 URL(例如 `https://example.com/marketplace.json`)新增 marketplace,但具有相對路徑來源(如 `"./plugins/my-plugin"`)的 plugin 無法安裝,出現「path not found」錯誤。

1030 1135 


1038 ```1143 ```

1039* **使用基於 Git 的 marketplace**:在 Git 儲存庫中託管您的 marketplace 並使用 git URL 新增它。基於 Git 的 marketplace 複製整個儲存庫,使相對路徑正常運作。1144* **使用基於 Git 的 marketplace**:在 Git 儲存庫中託管您的 marketplace 並使用 git URL 新增它。基於 Git 的 marketplace 複製整個儲存庫,使相對路徑正常運作。

1040 1145 

1041### 安裝後找不到檔案1146<h3 id="files-not-found-after-installation">

1147 安裝後找不到檔案

1148</h3>

1042 1149 

1043**症狀**:Plugin 安裝但對檔案的參考失敗,特別是 plugin 目錄外的檔案1150**症狀**:Plugin 安裝但對檔案的參考失敗,特別是 plugin 目錄外的檔案

1044 1151 


1048 1155 

1049有關其他偵錯工具和常見問題,請參閱 [Debugging and development tools](/zh-TW/plugins-reference#debugging-and-development-tools)。1156有關其他偵錯工具和常見問題,請參閱 [Debugging and development tools](/zh-TW/plugins-reference#debugging-and-development-tools)。

1050 1157 

1051## 另請參閱1158<h2 id="see-also">

1159 另請參閱

1160</h2>

1052 1161 

1053* [探索並安裝預先建立的 plugin](/zh-TW/discover-plugins) - 從現有 marketplace 安裝 plugin1162* [探索並安裝預先建立的 plugin](/zh-TW/discover-plugins) - 從現有 marketplace 安裝 plugin

1054* [Plugins](/zh-TW/plugins) - 建立您自己的 plugin1163* [Plugins](/zh-TW/plugins) - 建立您自己的 plugin

plugins.md +93 −26

Details

10 10 

11想要安裝現有的 plugins?請參閱[探索和安裝 plugins](/zh-TW/discover-plugins)。如需完整的技術規格,請參閱 [Plugins 參考](/zh-TW/plugins-reference)。11想要安裝現有的 plugins?請參閱[探索和安裝 plugins](/zh-TW/discover-plugins)。如需完整的技術規格,請參閱 [Plugins 參考](/zh-TW/plugins-reference)。

12 12 

13## 何時使用 plugins 與獨立配置13<h2 id="when-to-use-plugins-vs-standalone-configuration">

14 何時使用 plugins 與獨立配置

15</h2>

14 16 

15Claude Code 支援兩種方式來新增自訂 skills、agents 和 hooks:17Claude Code 支援兩種方式來新增自訂 skills、agents 和 hooks:

16 18 

17| 方法 | Skill 名稱 | 最適合 |19| 方法 | Skill 名稱 | 最適合 |

18| :----------------------------------------------- | :------------------- | :------------------------ |20| :---------------------------------------------------------------------------- | :------------------- | :------------------------ |

19| **獨立**(`.claude/` 目錄) | `/hello` | 個人工作流程、專案特定的自訂、快速實驗 |21| **獨立**(`.claude/` 目錄) | `/hello` | 個人工作流程、專案特定的自訂、快速實驗 |

20| **Plugins**(包含 `.claude-plugin/plugin.json` 的目錄) | `/plugin-name:hello` | 與隊友共享、分發到社群、版本化發佈、跨專案重複使用 |22| **Plugins**(包含 skills、agents、hooks 或 `.claude-plugin/plugin.json` 資訊清單的自包含目錄) | `/plugin-name:hello` | 與隊友共享、分發到社群、版本化發佈、跨專案重複使用 |

21 23 

22**在以下情況下使用獨立配置**:24**在以下情況下使用獨立配置**:

23 25 


38 在 `.claude/` 中從獨立配置開始進行快速迭代,然後在準備好共享時[轉換為 plugin](#convert-existing-configurations-to-plugins)。40 在 `.claude/` 中從獨立配置開始進行快速迭代,然後在準備好共享時[轉換為 plugin](#convert-existing-configurations-to-plugins)。

39</Tip>41</Tip>

40 42 

41## 快速入門43<h2 id="quickstart">

44 快速入門

45</h2>

42 46 

43本快速入門將引導您建立具有自訂 skill 的 plugin。您將建立一個清單(定義您的 plugin 的配置檔案)、新增一個 skill,並使用 `--plugin-dir` 旗標在本地進行測試。47本快速入門將引導您建立具有自訂 skill 的 plugin。您將建立一個清單(定義您的 plugin 的配置檔案)、新增一個 skill,並使用 `--plugin-dir` 旗標在本地進行測試。

44 48 

45### 先決條件49<h3 id="prerequisites">

50 先決條件

51</h3>

46 52 

47* Claude Code [已安裝並驗證](/zh-TW/quickstart#step-1-install-claude-code)53* Claude Code [已安裝並驗證](/zh-TW/quickstart#step-1-install-claude-code)

48 54 


50 如果您沒有看到 `/plugin` 命令,請將 Claude Code 更新到最新版本。如需升級說明,請參閱 [Troubleshooting](/zh-TW/troubleshooting)。56 如果您沒有看到 `/plugin` 命令,請將 Claude Code 更新到最新版本。如需升級說明,請參閱 [Troubleshooting](/zh-TW/troubleshooting)。

51</Note>57</Note>

52 58 

53### 建立您的第一個 plugin59<h3 id="create-your-first-plugin">

60 建立您的第一個 plugin

61</h3>

54 62 

55<Steps>63<Steps>

56 <Step title="建立 plugin 目錄">64 <Step title="建立 plugin 目錄">

57 每個 plugin 都位於其自己的目錄中,包含一個清單和您的 skills、agents 或 hooks。現在建立一個:65 每個 plugin 都位於其自己的目錄中,包含您的 skills、agents 或 hooks,可選地與 `.claude-plugin/plugin.json` 清單並存。現在建立一個:

58 66 

59 ```bash theme={null}67 ```bash theme={null}

60 mkdir my-first-plugin68 mkdir my-first-plugin


171 `--plugin-dir` 旗標對於開發和測試很有用。當您準備好與他人共享您的 plugin 時,請參閱[建立和分發 plugin 市場](/zh-TW/plugin-marketplaces)。179 `--plugin-dir` 旗標對於開發和測試很有用。當您準備好與他人共享您的 plugin 時,請參閱[建立和分發 plugin 市場](/zh-TW/plugin-marketplaces)。

172</Tip>180</Tip>

173 181 

174## Plugin 結構概述182<h2 id="develop-a-plugin-in-your-skills-directory">

183 在您的 skills 目錄中開發 plugin

184</h2>

185 

186與其在每次啟動時傳遞 `--plugin-dir`,您可以在您的 skills 目錄中保留一個 plugin,並讓 Claude Code 自動載入它。`claude plugin init` 會為您建立一個:

187 

188```bash theme={null}

189claude plugin init my-tool

190```

191 

192這會建立 `~/.claude/skills/my-tool/`,其中包含 `.claude-plugin/plugin.json` 清單和一個入門 `SKILL.md`。在下一個工作階段中,它會以 `my-tool@skills-dir` 的形式載入,無需市場或安裝步驟。

193 

194如需自動載入規則、個人與專案範圍、工作區信任要求,以及如何更新或移除一個,請參閱 [Skills-directory plugins](/zh-TW/plugins-reference#skills-directory-plugins)。

195 

196<h2 id="plugin-structure-overview">

197 Plugin 結構概述

198</h2>

175 199 

176您已建立了具有 skill 的 plugin,但 plugins 可以包含更多內容:自訂 agents、hooks、MCP servers、LSP servers 和背景監視器。200您已建立了具有 skill 的 plugin,但 plugins 可以包含更多內容:自訂 agents、hooks、MCP servers、LSP servers 和背景監視器。

177 201 


196 **後續步驟**:準備好新增更多功能?跳至[開發更複雜的 plugins](#develop-more-complex-plugins) 以新增 agents、hooks、MCP servers 和 LSP servers。如需所有 plugin 元件的完整技術規格,請參閱 [Plugins 參考](/zh-TW/plugins-reference)。220 **後續步驟**:準備好新增更多功能?跳至[開發更複雜的 plugins](#develop-more-complex-plugins) 以新增 agents、hooks、MCP servers 和 LSP servers。如需所有 plugin 元件的完整技術規格,請參閱 [Plugins 參考](/zh-TW/plugins-reference)。

197</Note>221</Note>

198 222 

199## 開發更複雜的 plugins223<h2 id="develop-more-complex-plugins">

224 開發更複雜的 plugins

225</h2>

200 226 

201一旦您熟悉了基本 plugins,您就可以建立更複雜的擴展。227一旦您熟悉了基本 plugins,您就可以建立更複雜的擴展。

202 228 

203### 將 Skills 新增到您的 plugin229<h3 id="add-skills-to-your-plugin">

230 將 Skills 新增到您的 plugin

231</h3>

204 232 

205Plugins 可以包含 [Agent Skills](/zh-TW/skills) 以擴展 Claude 的功能。Skills 是模型調用的:Claude 根據任務上下文自動使用它們。233Plugins 可以包含 [Agent Skills](/zh-TW/skills) 以擴展 Claude 的功能。Skills 是模型調用的:Claude 根據任務上下文自動使用它們。

206 234 


231 259 

232安裝 plugin 後,執行 `/reload-plugins` 以載入 Skills。如需完整的 Skill 編寫指南,包括漸進式揭露和工具限制,請參閱 [Agent Skills](/zh-TW/skills)。260安裝 plugin 後,執行 `/reload-plugins` 以載入 Skills。如需完整的 Skill 編寫指南,包括漸進式揭露和工具限制,請參閱 [Agent Skills](/zh-TW/skills)。

233 261 

234### 將 LSP servers 新增到您的 plugin262<h3 id="add-lsp-servers-to-your-plugin">

263 將 LSP servers 新增到您的 plugin

264</h3>

235 265 

236<Tip>266<Tip>

237 對於 TypeScript、Python 和 Rust 等常見語言,請從官方市場安裝預先建立的 LSP plugins。只有在您需要支援尚未涵蓋的語言時,才建立自訂 LSP plugins。267 對於 TypeScript、Python 和 Rust 等常見語言,請從官方市場安裝預先建立的 LSP plugins。只有在您需要支援尚未涵蓋的語言時,才建立自訂 LSP plugins。


255 285 

256如需完整的 LSP 配置選項,請參閱 [LSP servers](/zh-TW/plugins-reference#lsp-servers)。286如需完整的 LSP 配置選項,請參閱 [LSP servers](/zh-TW/plugins-reference#lsp-servers)。

257 287 

258### 將背景監視器新增到您的 plugin288<h3 id="add-background-monitors-to-your-plugin">

289 將背景監視器新增到您的 plugin

290</h3>

259 291 

260背景監視器讓您的 plugin 在背景中監視日誌、檔案或外部狀態,並在事件到達時通知 Claude。Claude Code 在 plugin 啟用時自動啟動每個監視器,因此您不需要指示 Claude 啟動監視。292背景監視器讓您的 plugin 在背景中監視日誌、檔案或外部狀態,並在事件到達時通知 Claude。Claude Code 在 plugin 啟用時自動啟動每個監視器,因此您不需要指示 Claude 啟動監視。

261 293 


273 305 

274來自 `command` 的每個 stdout 行都會在工作階段期間作為通知傳遞給 Claude。如需完整的架構,包括 `when` 觸發器和變數替換,請參閱 [Monitors](/zh-TW/plugins-reference#monitors)。306來自 `command` 的每個 stdout 行都會在工作階段期間作為通知傳遞給 Claude。如需完整的架構,包括 `when` 觸發器和變數替換,請參閱 [Monitors](/zh-TW/plugins-reference#monitors)。

275 307 

276### 使用您的 plugin 提供預設設定308<h3 id="ship-default-settings-with-your-plugin">

309 使用您的 plugin 提供預設設定

310</h3>

277 311 

278Plugins 可以在 plugin 根目錄中包含 `settings.json` 檔案,以在啟用 plugin 時應用預設配置。目前,只支援 `agent` 和 `subagentStatusLine` 金鑰。312Plugins 可以在 plugin 根目錄中包含 `settings.json` 檔案,以在啟用 plugin 時應用預設配置。目前,只支援 `agent` 和 `subagentStatusLine` 金鑰。

279 313 


287 321 

288此範例啟動在 plugin 的 `agents/` 目錄中定義的 `security-reviewer` agent。來自 `settings.json` 的設定優先於在 `plugin.json` 中宣告的 `settings`。未知的金鑰會被無聲地忽略。322此範例啟動在 plugin 的 `agents/` 目錄中定義的 `security-reviewer` agent。來自 `settings.json` 的設定優先於在 `plugin.json` 中宣告的 `settings`。未知的金鑰會被無聲地忽略。

289 323 

290### 組織複雜的 plugins324<h3 id="organize-complex-plugins">

325 組織複雜的 plugins

326</h3>

291 327 

292對於具有許多元件的 plugins,請按功能組織您的目錄結構。如需完整的目錄配置和組織模式,請參閱 [Plugin 目錄結構](/zh-TW/plugins-reference#plugin-directory-structure)。328對於具有許多元件的 plugins,請按功能組織您的目錄結構。如需完整的目錄配置和組織模式,請參閱 [Plugin 目錄結構](/zh-TW/plugins-reference#plugin-directory-structure)。

293 329 

294### 在本地測試您的 plugins330<h3 id="test-your-plugins-locally">

331 在本地測試您的 plugins

332</h3>

295 333 

296使用 `--plugin-dir` 旗標在開發期間測試 plugins。這會直接載入您的 plugin,無需安裝。334使用 `--plugin-dir` 旗標在開發期間測試 plugins。這會直接載入您的 plugin,無需安裝。

297 335 


335claude --plugin-url "https://example.com/my-plugin.zip https://example.com/other.zip"373claude --plugin-url "https://example.com/my-plugin.zip https://example.com/other.zip"

336```374```

337 375 

338### 偵錯 plugin 問題376<h3 id="debug-plugin-issues">

377 偵錯 plugin 問題

378</h3>

339 379 

340如果您的 plugin 未按預期工作:380如果您的 plugin 未按預期工作:

341 381 


3432. **個別測試元件**:分別檢查每個 skill、agent 和 hook3832. **個別測試元件**:分別檢查每個 skill、agent 和 hook

3443. **使用驗證和偵錯工具**:如需 CLI 命令和故障排除技術,請參閱 [Debugging and development tools](/zh-TW/plugins-reference#debugging-and-development-tools)3843. **使用驗證和偵錯工具**:如需 CLI 命令和故障排除技術,請參閱 [Debugging and development tools](/zh-TW/plugins-reference#debugging-and-development-tools)

345 385 

346### 共享您的 plugins386<h3 id="share-your-plugins">

387 共享您的 plugins

388</h3>

347 389 

348當您的 plugin 準備好共享時:390當您的 plugin 準備好共享時:

349 391 


354 396 

355一旦您的 plugin 在市場中,其他人可以使用 [Discover and install plugins](/zh-TW/discover-plugins) 中的說明進行安裝。若要將 plugin 保持在您的團隊內部,請在 [private repository](/zh-TW/plugin-marketplaces#private-repositories) 中託管市場。397一旦您的 plugin 在市場中,其他人可以使用 [Discover and install plugins](/zh-TW/discover-plugins) 中的說明進行安裝。若要將 plugin 保持在您的團隊內部,請在 [private repository](/zh-TW/plugin-marketplaces#private-repositories) 中託管市場。

356 398 

357### 將您的 plugin 提交到官方市場399<h3 id="submit-your-plugin-to-the-community-marketplace">

400 將您的 plugin 提交到官方市場

401</h3>

402 

403Anthropic 為 Claude Code plugins 維護兩個公開市場:

404 

405* **`claude-plugins-official`**:由 Anthropic 維護的精選 plugins 集合。在每個 Claude Code 安裝中自動可用。

406* **`claude-community`**:公開社群市場,第三方提交在審查後會進入此市場。使用者使用 `/plugin marketplace add anthropics/claude-plugins-community` 新增它,並將其作為 `@claude-community` 進行安裝。

358 407 

359若要將 plugin 提交到官方 Anthropic 市場,請使用其中一個應用內提交表單:408若要提交您的 plugin 以進行官方市場審查,請使用其中一個應用內提交表單:

360 409 

361* **Claude.ai**:[claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)410* **Claude.ai**:[claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)

362* **Console**:[platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)411* **Console**:[platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

363 412 

364一旦您的 plugin 被列出,您可以讓您自己的 CLI 提示 Claude Code 使用者安裝它。請參閱 [Recommend your plugin from your CLI](/zh-TW/plugin-hints)413在提交前在本地執行 `claude plugin validate`審查管道在每個提交上執行相同的檢查,以及自動安全篩選。

414 

415已批准的 plugins 會固定到 [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) 目錄中的特定 commit SHA,當您將新 commits 推送到您的儲存庫時,CI 會自動更新該固定。公開目錄每晚從審查管道同步,因此批准和您的 plugin 出現在 `marketplace.json` 之間可能會有延遲。若要檢查您的 plugin 是否已可安裝,請在[官方目錄](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json)中搜尋其名稱。

416 

417官方市場 `claude-plugins-official` 是單獨策劃的。Anthropic 根據其自行決定決定要包含哪些 plugins。沒有應用程序流程,提交表單不會將 plugins 新增到官方市場。

418 

419如果 Anthropic 在官方市場中列出您的 plugin,您的 CLI 可以提示 Claude Code 使用者進行安裝。請參閱 [Recommend your plugin from your CLI](/zh-TW/plugin-hints)。

365 420 

366<Note>421<Note>

367 如需完整的技術規格、偵錯技術和分發策略,請參閱 [Plugins reference](/zh-TW/plugins-reference)。422 如需完整的技術規格、偵錯技術和分發策略,請參閱 [Plugins reference](/zh-TW/plugins-reference)。

368</Note>423</Note>

369 424 

370## 將現有配置轉換為 plugins425<h2 id="convert-existing-configurations-to-plugins">

426 將現有配置轉換為 plugins

427</h2>

371 428 

372如果您已經在 `.claude/` 目錄中有 skills 或 hooks,您可以將它們轉換為 plugin,以便更輕鬆地共享和分發。429如果您已經在 `.claude/` 目錄中有 skills 或 hooks,您可以將它們轉換為 plugin,以便更輕鬆地共享和分發。

373 430 

374### 遷移步驟431<h3 id="migration-steps">

432 遷移步驟

433</h3>

375 434 

376<Steps>435<Steps>

377 <Step title="建立 plugin 結構">436 <Step title="建立 plugin 結構">


441 </Step>500 </Step>

442</Steps>501</Steps>

443 502 

444### 遷移時的變更503<h3 id="what-changes-when-migrating">

504 遷移時的變更

505</h3>

445 506 

446| 獨立(`.claude/`) | Plugin |507| 獨立(`.claude/`) | Plugin |

447| :----------------------- | :--------------------------- |508| :----------------------- | :--------------------------- |


454 遷移後,您可以從 `.claude/` 中移除原始檔案以避免重複。載入時,plugin 版本將優先。515 遷移後,您可以從 `.claude/` 中移除原始檔案以避免重複。載入時,plugin 版本將優先。

455</Note>516</Note>

456 517 

457## 後續步驟518<h2 id="next-steps">

519 後續步驟

520</h2>

458 521 

459現在您已了解 Claude Code 的 plugin 系統,以下是針對不同目標的建議路徑:522現在您已了解 Claude Code 的 plugin 系統,以下是針對不同目標的建議路徑:

460 523 

461### 對於 plugin 使用者524<h3 id="for-plugin-users">

525 對於 plugin 使用者

526</h3>

462 527 

463* [探索和安裝 plugins](/zh-TW/discover-plugins):瀏覽市場並安裝 plugins528* [探索和安裝 plugins](/zh-TW/discover-plugins):瀏覽市場並安裝 plugins

464* [配置團隊市場](/zh-TW/discover-plugins#configure-team-marketplaces):為您的團隊設定儲存庫級別的 plugins529* [配置團隊市場](/zh-TW/discover-plugins#configure-team-marketplaces):為您的團隊設定儲存庫級別的 plugins

465 530 

466### 對於 plugin 開發人員531<h3 id="for-plugin-developers">

532 對於 plugin 開發人員

533</h3>

467 534 

468* [建立和分發市場](/zh-TW/plugin-marketplaces):打包和共享您的 plugins535* [建立和分發市場](/zh-TW/plugin-marketplaces):打包和共享您的 plugins

469* [Plugins 參考](/zh-TW/plugins-reference):完整的技術規格536* [Plugins 參考](/zh-TW/plugins-reference):完整的技術規格

Details

20 20 

21Plugins 將 skills 新增至 Claude Code,建立可由您或 Claude 叫用的 `/name` 快捷方式。21Plugins 將 skills 新增至 Claude Code,建立可由您或 Claude 叫用的 `/name` 快捷方式。

22 22 

23**位置**:plugin 根目錄中的 `skills/` 或 `commands/` 目錄23**位置**:plugin 根目錄中的 `skills/` 或 `commands/` 目錄,或 plugin 根目錄中的單一 `SKILL.md` 檔案

24 24 

25**檔案格式**:Skills 是包含 `SKILL.md` 的目錄;commands 是簡單的 markdown 檔案25**檔案格式**:Skills 是包含 `SKILL.md` 的目錄;commands 是簡單的 markdown 檔案

26 26 


121| `PostToolUseFailure` | After a tool call fails |121| `PostToolUseFailure` | After a tool call fails |

122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |122| `PostToolBatch` | After a full batch of parallel tool calls resolves, before the next model call |

123| `Notification` | When Claude Code sends a notification |123| `Notification` | When Claude Code sends a notification |

124| `MessageDisplay` | While assistant message text is displayed |

124| `SubagentStart` | When a subagent is spawned |125| `SubagentStart` | When a subagent is spawned |

125| `SubagentStop` | When a subagent finishes |126| `SubagentStop` | When a subagent finishes |

126| `TaskCreated` | When a task is being created via `TaskCreate` |127| `TaskCreated` | When a task is being created via `TaskCreate` |


251| `settings` | 透過 `workspace/didChangeConfiguration` 傳遞的設定 |252| `settings` | 透過 `workspace/didChangeConfiguration` 傳遞的設定 |

252| `workspaceFolder` | server 的工作區資料夾路徑 |253| `workspaceFolder` | server 的工作區資料夾路徑 |

253| `startupTimeout` | 等待 server 啟動的最長時間(毫秒) |254| `startupTimeout` | 等待 server 啟動的最長時間(毫秒) |

254| `shutdownTimeout` | 等待正常關閉的最長時間(毫秒) |

255| `restartOnCrash` | 如果 server 當機,是否自動重新啟動 |

256| `maxRestarts` | 放棄前的最大重新啟動嘗試次數 |255| `maxRestarts` | 放棄前的最大重新啟動嘗試次數 |

257 256 

258<Warning>257<Warning>


356 355 

357***356***

358 357 

358## Skills 目錄 plugins

359 

360任何 skills 目錄下包含 `.claude-plugin/plugin.json` manifest 的資料夾都會在下一個工作階段中作為名為 `<name>@skills-dir` 的 plugin 載入,無需 marketplace 和無需安裝步驟。使用 [`plugin init`](#plugin-init) 進行搭建。與 marketplace 安裝不同,plugin 是在原地發現的,而不是複製到 plugin 快取中。

361 

362Skills 目錄樹支援三個不同的東西:

363 

364| 您擁有的內容 | 它是什麼 |

365| :-------------------------------------------- | :------------------------------------------------------- |

366| `<skills-dir>/foo/SKILL.md`,沒有 manifest | 一個名為 `foo` 的純 [skill](/zh-TW/skills) |

367| `<skills-dir>/foo/.claude-plugin/plugin.json` | 一個 plugin `foo@skills-dir`,可以捆綁自己的 skills、agents、hooks 等 |

368| `<plugin>/skills/bar/SKILL.md` | 一個 skill `bar`,打包在 plugin 內 |

369 

370### 選擇 plugin 載入的位置

371 

372| Skills 目錄 | 範圍 | 載入 |

373| :---------------------- | :------- | :----------------------------------------------- |

374| `~/.claude/skills/` | personal | 在每個專案中,因為位置只屬於您 |

375| `<cwd>/.claude/skills/` | project | 只有在您接受該資料夾的工作區 [trust dialog](/zh-TW/settings) 後 |

376 

377專案範圍的 plugin 被簽入存放庫,並到達克隆它的每個協作者。因為該內容來自存放庫而不是來自您,它只在與 `.claude/settings.json` 相同的信任閘道後載入,並且執行程式碼的元件受到進一步限制:

378 

379* 它宣告的 MCP servers 會經過與專案 `.mcp.json` 相同的 [per-server approval](/zh-TW/mcp)

380* LSP servers 只有在您信任工作區後才會啟動

381* [Background monitors](#monitors) 不會載入

382 

383個人範圍的 plugins 沒有這些限制。

384 

385<Warning>

386 專案範圍的 `@skills-dir` plugins 只從您啟動 Claude Code 的目錄的 `.claude/skills/` 載入。它們不會像純 skills 和 commands 那樣 [walk up to the repository root](/zh-TW/skills#automatic-discovery-from-parent-and-nested-directories),所以從子目錄啟動會錯過位於存放庫根目錄的 plugin。從存放庫根目錄啟動,或在變更目錄後執行 `/reload-plugins`。

387</Warning>

388 

389### 編輯、重新載入和停用 skills 目錄 plugin

390 

391您對 skill 的 `SKILL.md` 所做的變更會立即在目前工作階段中生效。對 plugin 的其他元件(例如 `hooks/`、`.mcp.json`、`agents/` 和 `output-styles/`)的變更則不會。執行 `/reload-plugins` 或重新啟動 Claude Code 以取得這些變更。請參閱 [Live change detection](/zh-TW/skills#live-change-detection)。

392 

393若要停止載入 skills 目錄 plugin,請刪除其資料夾或按名稱停用它。沒有 `uninstall` 步驟,因為沒有從 marketplace 安裝任何內容。

394 

395```bash theme={null}

396claude plugin disable my-tool@skills-dir

397```

398 

399***

400 

359## Plugin manifest 架構401## Plugin manifest 架構

360 402 

361`.claude-plugin/plugin.json` 檔案定義您的 plugin 的中繼資料和設定。本節記錄所有支援的欄位和選項。403`.claude-plugin/plugin.json` 檔案定義您的 plugin 的中繼資料和設定。本節記錄所有支援的欄位和選項。


407 449 

408此名稱用於命名空間元件。例如,在 UI 中,名稱為 `plugin-dev` 的 plugin 的 agent `agent-creator` 將顯示為 `plugin-dev:agent-creator`。450此名稱用於命名空間元件。例如,在 UI 中,名稱為 `plugin-dev` 的 plugin 的 agent `agent-creator` 將顯示為 `plugin-dev:agent-creator`。

409 451 

452### 無法識別的欄位

453 

454Claude Code 會忽略它無法識別的頂層欄位。您可以在 `plugin.json` 中保留來自另一個生態系統的中繼資料,plugin 仍會載入。這使得維護一個 manifest 作為 VS Code 或 Cursor 擴充功能 manifest、npm `package.json` 或 MCPB/DXT bundle manifest 變得實用。

455 

456`claude plugin validate` 將無法識別的欄位報告為警告,而不是錯誤。如果欄位與已識別的欄位相差一或兩個字元,警告會建議可能的預期名稱。只有無法識別欄位警告的 plugin 仍會通過驗證並在執行時載入。

457 

458類型錯誤的欄位仍會失敗。例如,`keywords` 值是字串而不是陣列是載入錯誤,`claude plugin validate` 會將其報告為錯誤。

459 

460傳遞 `--strict` 以將警告視為錯誤。在 CI 中使用它來捕捉拼寫錯誤的欄位名稱或來自另一個工具的 manifest 中遺留的欄位,然後再發佈,即使 plugin 會在執行時載入。

461 

462```bash theme={null}

463claude plugin validate ./my-plugin --strict

464```

465 

410### 中繼資料欄位466### 中繼資料欄位

411 467 

412| 欄位 | 類型 | 描述 | 範例 |468| 欄位 | 類型 | 描述 | 範例 |

413| :------------ | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |469| :--------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

414| `$schema` | string | JSON Schema URL,用於編輯器自動完成和驗證。Claude Code 在載入時忽略此欄位。 | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |470| `$schema` | string | JSON Schema URL,用於編輯器自動完成和驗證。Claude Code 在載入時忽略此欄位。 | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

415| `displayName` | string | {/* min-version: 2.1.143 */}在 `/plugin` 選擇器和其他 UI 介面中顯示的人類可讀名稱。當省略時回退到 `name`。與 `name` 不同,可能包含空格和任何大小寫。不用於命名空間或查詢。需要 Claude Code v2.1.143 或更新版本。 | `"Deployment Tools"` |471| `displayName` | string | {/* min-version: 2.1.143 */}在 `/plugin` 選擇器和其他 UI 介面中顯示的人類可讀名稱。當省略時回退到 `name`。與 `name` 不同,可能包含空格和任何大小寫。不用於命名空間或查詢。需要 Claude Code v2.1.143 或更新版本。 | `"Deployment Tools"` |

416| `version` | string | 選用。語義版本。設定此項會將 plugin 固定到該版本字串,因此使用者只會在您提升版本時收到更新。如果省略,Claude Code 會回退到 git commit SHA,因此每個 commit 都被視為新版本。如果也在 marketplace 項目中設定,`plugin.json` 優先。請參閱[Version management](#version-management)。 | `"2.1.0"` |472| `version` | string | 選用。語義版本。設定此項會將 plugin 固定到該版本字串,因此使用者只會在您提升版本時收到更新。如果省略,Claude Code 會回退到 git commit SHA,因此每個 commit 都被視為新版本。如果也在 marketplace 項目中設定,`plugin.json` 優先。請參閱[Version management](#version-management)。 | `"2.1.0"` |


420| `repository` | string | 原始程式碼 URL | `"https://github.com/user/plugin"` |476| `repository` | string | 原始程式碼 URL | `"https://github.com/user/plugin"` |

421| `license` | string | 授權識別碼 | `"MIT"`、`"Apache-2.0"` |477| `license` | string | 授權識別碼 | `"MIT"`、`"Apache-2.0"` |

422| `keywords` | array | 探索標籤 | `["deployment", "ci-cd"]` |478| `keywords` | array | 探索標籤 | `["deployment", "ci-cd"]` |

479| `defaultEnabled` | boolean | {/* min-version: 2.1.154 */}當使用者未設定時,plugin 是否以啟用狀態啟動。預設為 `true`。請參閱 [Default enablement](#default-enablement)。需要 Claude Code v2.1.154 或更新版本。 | `false` |

480 

481### 預設啟用

482 

483在 `plugin.json` 中設定 `defaultEnabled: false` 以提供安裝時停用的 plugin。使用者使用 `claude plugin enable <plugin>` 或 `/plugin` 介面將其開啟。對於新增成本或使用者應選擇加入的範圍的 plugins 使用此方法,例如連接到外部服務的 plugin。這需要 Claude Code v2.1.154 或更新版本。較早的版本會忽略該欄位並在安裝時啟用 plugin。

484 

485`defaultEnabled` 是當沒有其他因素決定 plugin 狀態時的後備。有兩件事優先於它:

486 

487* **使用者的設定**:在任何設定範圍的 `enabledPlugins` 中為 plugin 的項目。一旦寫入,它會在 plugin 更新和重新安裝中保留,因此在後續版本中變更 `defaultEnabled` 不會翻轉現有使用者。

488* **相依性要求**:當 plugin 被另一個啟用的 plugin 所需時,Claude Code 會在安裝或啟用時為其寫入 `true`。這給了它一個明確的設定,所以它自己的預設不再適用。請參閱 [Enable or disable a plugin with dependencies](/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies)。

489 

490相同的欄位可以出現在 plugin 的 marketplace 項目中,其優先於 `plugin.json` 中的值。請參閱 [Optional plugin fields](/zh-TW/plugin-marketplaces#optional-plugin-fields)。

423 491 

424### 元件路徑欄位492### 元件路徑欄位

425 493 


731 799 

732Claude Code 提供 CLI 命令用於非互動式 plugin 管理,適用於指令碼和自動化。800Claude Code 提供 CLI 命令用於非互動式 plugin 管理,適用於指令碼和自動化。

733 801 

802### plugin init

803 

804在 `~/.claude/skills/<name>/` 搭建新 plugin。在下一個 Claude Code 工作階段中,它會自動作為 `<name>@skills-dir` 載入,並出現在 `/plugin` 和 `claude plugin list` 中,無需安裝步驟。

805 

806請參閱 [Skills-directory plugins](#skills-directory-plugins) 以了解範圍和信任要求。

807 

808```bash theme={null}

809claude plugin init <name> [options]

810```

811 

812**引數:**

813 

814* `<name>`:Plugin 名稱。成為 skill 命名空間和 `~/.claude/skills/` 下的目錄名稱,因此不能包含空格或路徑分隔符。

815 

816**選項:**

817 

818| 選項 | 描述 | 預設 |

819| :----------------------- | :--------------------------------------------------------------------------- | :---------------------- |

820| `--description <text>` | Manifest 描述 | |

821| `--author <name>` | 作者名稱 | `git config user.name` |

822| `--author-email <email>` | 作者電子郵件 | `git config user.email` |

823| `--with <components...>` | 同時搭建元件資料夾。有效值:`skills`、`agents`、`hooks`、`mcp`、`lsp`、`output-style`、`channel` | |

824| `-f, --force` | 覆寫目標的現有 `.claude-plugin/` | |

825| `-h, --help` | 顯示命令說明 | |

826 

827**別名:** `new`

828 

829每個 `--with` 值都會為該元件新增一個入門檔案,準備好編輯:

830 

831| 元件 | 它搭建什麼 |

832| :------------- | :--------------------------------------------------------------------------------------------------- |

833| `skills` | 一個額外的命名空間 `<name>:example` skill,與預設 skill 一起 |

834| `agents` | 一個 `agents/` subagent 定義 |

835| `hooks` | 一個 `hooks/hooks.json`,包含範例事件處理程式 |

836| `mcp` | 一個 `.mcp.json`,包含 HTTP 和 stdio server 範例 |

837| `lsp` | 一個 `.lsp.json` 語言伺服器範例 |

838| `output-style` | 一個 `output-styles/<name>.md`,在 plugin 啟用時自動套用 |

839| `channel` | 一個基於 MCP 的 [channel](/zh-TW/channels):一個 stdio server (`server.ts`)、其 `.mcp.json` 和一個 `package.json` |

840 

841搭建的 plugin 使用 `@skills-dir` 來源而不是 marketplace。管理員可以使用 `strictKnownMarketplaces` 或透過在 [managed settings](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) 中新增 `{"source": "skills-dir"}` 到 `blockedMarketplaces` 來阻止此來源。當被阻止時,`plugin init` 在寫入前失敗。

842 

843**範例:**

844 

845```bash theme={null}

846# Scaffold a minimal plugin

847claude plugin init my-helper

848 

849# Scaffold with skill and hook folders

850claude plugin init my-helper --with skills hooks

851 

852# Overwrite an existing scaffold

853claude plugin init my-helper --force

854```

855 

734### plugin install856### plugin install

735 857 

736從可用的 marketplaces 安裝 plugin。858從可用的 marketplaces 安裝 plugin。


784| `-s, --scope <scope>` | 從範圍卸載:`user`、`project` 或 `local` | `user` |906| `-s, --scope <scope>` | 從範圍卸載:`user`、`project` 或 `local` | `user` |

785| `--keep-data` | 保留 plugin 的 [persistent data directory](#persistent-data-directory) | |907| `--keep-data` | 保留 plugin 的 [persistent data directory](#persistent-data-directory) | |

786| `--prune` | 同時移除其他 plugin 不需要的自動安裝相依性。請參閱 [plugin prune](#plugin-prune) | |908| `--prune` | 同時移除其他 plugin 不需要的自動安裝相依性。請參閱 [plugin prune](#plugin-prune) | |

787| `-y, --yes` | 跳過 `--prune` 確認提示。當 stdin 不是 TTY 時為必需 | |909| `-y, --yes` | 跳過 `--prune` 確認提示。當 stdin 或 stdout 不是 TTY 時為必需 | |

788| `-h, --help` | 顯示命令說明 | |910| `-h, --help` | 顯示命令說明 | |

789 911 

790**別名:** `remove`、`rm`912**別名:** `remove`、`rm`


802**選項:**924**選項:**

803 925 

804| 選項 | 描述 | 預設 |926| 選項 | 描述 | 預設 |

805| :-------------------- | :--------------------------------- | :----- |927| :-------------------- | :---------------------------------- | :----- |

806| `-s, --scope <scope>` | 在範圍進行修剪:`user`、`project` 或 `local` | `user` |928| `-s, --scope <scope>` | 在範圍進行修剪:`user`、`project` 或 `local` | `user` |

807| `--dry-run` | 列出將被移除的內容而不實際移除 | |929| `--dry-run` | 列出將被移除的內容而不實際移除 | |

808| `-y, --yes` | 跳過確認提示。當 stdin 不是 TTY 時為必需 | |930| `-y, --yes` | 跳過確認提示。當 stdin 或 stdout 不是 TTY 時為必需 | |

809| `-h, --help` | 顯示命令說明 | |931| `-h, --help` | 顯示命令說明 | |

810 932 

811**別名:** `autoremove`933**別名:** `autoremove`


917此範例顯示具有兩個技能的 plugin 的輸出外觀:1039此範例顯示具有兩個技能的 plugin 的輸出外觀:

918 1040 

919```1041```

920security-guidance 1.2.01042dependency-guard 1.2.0

921 Real-time security analysis for Claude Code sessions1043 Dependency analysis for Claude Code sessions

922 Source: security-guidance@claude-code-marketplace1044 Source: dependency-guard@example-marketplace

923 1045 

924Component inventory1046Component inventory

925 Skills (2) scan-dependencies, review-changes1047 Skills (2) scan-dependencies, review-changes


1005 1127 

10061. 檢查指令碼是否可執行:`chmod +x ./scripts/your-script.sh`11281. 檢查指令碼是否可執行:`chmod +x ./scripts/your-script.sh`

10072. 驗證 shebang 行:第一行應為 `#!/bin/bash` 或 `#!/usr/bin/env bash`11292. 驗證 shebang 行:第一行應為 `#!/bin/bash` 或 `#!/usr/bin/env bash`

10083. 檢查路徑是否使用 `${CLAUDE_PLUGIN_ROOT}`:`"command": "${CLAUDE_PLUGIN_ROOT}/scripts/your-script.sh"`11303. 檢查路徑是否使用 `${CLAUDE_PLUGIN_ROOT}`:`"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh"`

10094. 手動測試指令碼:`./scripts/your-script.sh`11314. 手動測試指令碼:`./scripts/your-script.sh`

1010 1132 

1011**Hook 未在預期事件上觸發**:1133**Hook 未在預期事件上觸發**:

prompt-caching.md +304 −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 如何使用 prompt caching

6 

7> Claude Code 自動管理 prompt caching。了解為什麼模型切換會觸發緩慢的未快取轉換、`/compact` 的成本、為什麼 CLAUDE.md 編輯在會話中期不適用,以及如何檢查快取命中率。

8 

9Prompt caching 使 Claude Code 更快速且更具成本效益。沒有快取的情況下,API 會在每次轉換時重新處理您的完整歷史記錄。有了快取,它會重複使用已經處理過的內容,只對變更的部分進行新工作。

10 

11Claude Code 會為您處理 prompt caching,除非您[禁用它](#disable-prompt-caching)。了解 prompt caching 的工作原理仍然很有用,因為某些操作會使快取失效,使下一個回應變得更慢且更昂貴,同時它重新建立快取。本頁涵蓋哪些操作會這樣做、為什麼某些設定需要等待重新啟動才能應用,以及當使用量看起來很高時如何檢查快取效能。

12 

13<h2 id="how-the-cache-is-organized">

14 快取的組織方式

15</h2>

16 

17每次您在 Claude Code 中發送訊息時,它都會發出新的 API 請求。模型在請求之間不記得任何內容,因此 Claude Code 會重新發送完整的上下文:系統提示、您的專案上下文、每個先前的訊息和工具結果,以及您的新訊息。新內容會附加在末尾,這意味著每個請求的大部分內容與前一個請求相同。Prompt caching 是 API 避免重新處理未變更部分的方式。

18 

19API 通過將每個請求的開始部分(稱為前綴)與最近處理過的內容進行匹配來進行快取。在正常轉換中,前綴是整個先前的請求,只有最新的交換是新的。匹配是精確的,因此前綴中任何地方的變更都會重新計算其後的所有內容。沒有按檔案或按段的快取。請參閱 API 參考中的[prompt caching 如何工作](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching#how-prompt-caching-works)以了解基礎機制。

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" />

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" />

24 

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

26 

27| 層 | 內容 | 變更時機 |

28| ----- | -------------------- | -------------------------------- |

29| 系統提示 | 核心指令、工具定義、輸出風格 | 載入的工具定義集合變更,或 Claude Code 升級 |

30| 專案上下文 | CLAUDE.md、自動記憶、無範圍規則 | 會話開始,或在 `/clear` 或 `/compact` 之後 |

31| 對話 | 您的訊息、Claude 的回應、工具結果 | 每次轉換 |

32 

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

34 

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

36 

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

38 

39* **Model**:每個模型都有自己的快取。切換模型會重新計算整個請求,即使內容相同。請參閱下面的[切換模型](#switching-models)。

40* **Effort level**:同一模型的每個努力級別都有自己的快取。在會話中期變更它會重新計算整個請求,Claude Code 會要求您在應用變更前確認。請參閱下面的[變更努力級別](#changing-effort-level)。

41 

42<Tip>

43 在會話開始時選擇您的模型和努力級別,然後在任務之間的自然中斷處保存 `/compact`。您在任務中期進行的變更越少,快取命中率就越高。

44</Tip>

45 

46<h3 id="where-the-cache-lives">

47 快取位置

48</h3>

49 

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

51 

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

53* **Bedrock 或 Vertex AI**:快取位於您的雲端提供商的服務基礎設施中

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

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

56 

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

58 

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

60 使快取失效的操作

61</h2>

62 

63這些操作會導致下一個請求錯過部分或全部快取。您會看到一次較慢、更昂貴的轉換,之後新的前綴會被快取。一旦您知道它們有成本,大多數都可以在任務中期避免。模型切換可能看起來是免費的,直到您注意到隨後的較慢轉換。

64 

65* [切換模型](#switching-models)

66* [變更努力程度](#changing-effort-level)

67* [開啟快速模式](#turning-on-fast-mode)

68* [連接或斷開 MCP 伺服器](#connecting-or-disconnecting-an-mcp-server)

69* [啟用或停用外掛程式](#enabling-or-disabling-a-plugin)

70* [拒絕整個工具](#denying-an-entire-tool)

71* [壓縮對話](#compacting-the-conversation)

72* [升級 Claude Code](#upgrading-claude-code)

73 

74<h3 id="switching-models">

75 切換模型

76</h3>

77 

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

79 

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

81 

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

83 變更努力程度

84</h3>

85 

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

87 

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

89 開啟快速模式

90</h3>

91 

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

93 

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

95 

96<Note>

97 在切換時保持標頭需要 Claude Code v2.1.86 或更新版本。在較早的版本上,每次快速模式切換和速率限制回退都會使快取失效。

98</Note>

99 

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

101 連接或斷開 MCP 伺服器

102</h3>

103 

104工具定義位於系統提示層中,因此當請求之間的工具定義集合變更時,快取會失效。[MCP 伺服器](/zh-TW/mcp)變更是否執行此操作取決於其工具是否由[工具搜尋](/zh-TW/mcp#scale-with-mcp-tool-search)延遲或載入到前綴中:

105 

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

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

108 

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

110 

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

112 

113<h3 id="enabling-or-disabling-a-plugin">

114 啟用或停用外掛程式

115</h3>

116 

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

118 

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

120 

121外掛程式變更在您運行 [`/reload-plugins`](/zh-TW/discover-plugins#apply-plugin-changes-without-restarting) 或啟動新會話時應用。成本(無論是附加公告還是完整重新讀取)會在重新載入後的第一個轉換時顯示,而不是在您運行 `/plugin install`、`/plugin enable` 或 `/plugin disable` 時。

122 

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

124 

125<h3 id="denying-an-entire-tool">

126 拒絕整個工具

127</h3>

128 

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

130 

131只有裸工具名稱或等效的 `Bash(*)` 形式才有此效果。作用域拒絕規則(如 `Bash(rm *)`)以及所有允許和詢問規則都不會改變 Claude 看到的工具。Claude Code 在 Claude 嘗試呼叫時檢查它們,保持前綴完整。

132 

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

134 壓縮對話

135</h3>

136 

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

138 

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

140 

141<Tip>

142 當您丟棄的上下文是您不再需要的內容時,壓縮對您有利。為了選擇其開銷何時發生,在工作中的自然中斷處(例如任務之間)運行 `/compact`,而不是等待自動壓縮在任務中期觸發。如果您走上了一條想要完全放棄的路徑,請改為[`/rewind`](#rewinding-the-conversation)到較早的轉換。重新開始會截斷回到已經快取的前綴,而不是像壓縮那樣建立新的。

143</Tip>

144 

145<h3 id="upgrading-claude-code">

146 升級 Claude Code

147</h3>

148 

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

150 

151<Note>

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

153</Note>

154 

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

156 保留快取的操作

157</h2>

158 

159這些操作要麼附加到對話的末尾,要麼根本不觸及請求。其中一些,例如編輯 CLAUDE.md 或變更輸出風格,也是為什麼設定變更需要等待重新啟動才能應用的原因。

160 

161* [編輯您的儲存庫中的檔案](#editing-files-in-your-repository)

162* [在會話中期編輯 CLAUDE.md](#editing-claude-md-mid-session)

163* [變更輸出風格](#changing-output-style)

164* [變更權限模式](#changing-permission-mode)

165* [調用技能和命令](#invoking-skills-and-commands)

166* [運行 `/recap`](#running-%2Frecap)

167* [重新開始對話](#rewinding-the-conversation)

168* [生成子代理](#subagents-and-the-cache)

169 

170<h3 id="editing-files-in-your-repository">

171 編輯您的儲存庫中的檔案

172</h3>

173 

174檔案內容只有在 Claude 讀取它們時才進入上下文,讀取會附加到對話。編輯 Claude 之前讀過的檔案不會追溯變更歷史記錄中的較早讀取。相反,Claude Code 附加一個 `<system-reminder>` 注意到檔案已變更,如果需要,Claude 會重新讀取它。

175 

176<h3 id="editing-claude-md-mid-session">

177 在會話中期編輯 CLAUDE.md

178</h3>

179 

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

181 

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

183 

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

185 變更輸出風格

186</h3>

187 

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

189 

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

191 變更權限模式

192</h3>

193 

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

195 

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

197 調用技能和命令

198</h3>

199 

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

201 

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

203 運行 `/recap`

204</h3>

205 

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

207 

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

209 重新開始對話

210</h3>

211 

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

213 

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

215 

216<h2 id="cache-lifetime">

217 快取生命週期

218</h2>

219 

220快取的前綴在一段時間不活動後過期。每個命中快取的請求都會重置計時器,因此只要您繼續工作,快取就會保持溫暖。在足夠長的間隙之後,下一個請求會重新計算完整輸入並重新建立快取,這就是為什麼在步開後回來的第一個轉換可能會明顯變慢。

221 

222生存時間 (TTL) 控制快取存活的間隙有多長。API 提供兩個:五分鐘 TTL 和[一小時 TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration),它通過更長的中斷保持快取溫暖,但[以更高的速率計費快取寫入](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing)。Claude Code 根據您如何進行身份驗證為您選擇 TTL,您可以使用環境變數覆蓋它。

223 

224<h3 id="on-a-claude-subscription">

225 在 Claude 訂閱上

226</h3>

227 

228在 Claude 訂閱上,Claude Code 自動請求一小時 TTL。使用量包含在您的計畫中,而不是按令牌計費,因此更長的 TTL 對您沒有額外成本,只會影響快取保持溫暖的時間。

229 

230如果您已超過計畫的使用量限制,Claude Code 正在使用[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans),您將被計費該使用量,因此 Claude Code 會自動將 TTL 降低到五分鐘。

231 

232<h3 id="on-an-api-key-or-third-party-provider">

233 在 API 金鑰或第三方提供商上

234</h3>

235 

236在 API 金鑰、Bedrock、Vertex、Foundry 或 Claude Platform on AWS 上,您支付按令牌費率,因此 TTL 預設保持在更便宜的五分鐘。要選擇加入[一小時 TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration),設定 `ENABLE_PROMPT_CACHING_1H=1`。

237 

238在 Bedrock 上,prompt caching 支援、最小可快取前綴長度和一小時 TTL 可用性都因模型而異。如果快取令牌計數保持為零,請檢查 Bedrock 文件中的[支援的模型、區域和限制](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)。

239 

240<h3 id="override-the-ttl">

241 覆蓋 TTL

242</h3>

243 

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

245 

246<h2 id="cache-scope">

247 快取範圍

248</h2>

249 

250在 Claude Code 中,快取有效地限定在一台機器和目錄。系統提示嵌入工作目錄、平台、shell、OS 版本和自動記憶路徑,因此在不同目錄中的兩個會話建立不同的前綴並錯過彼此的快取。這包括同一儲存庫的 worktrees,因為每個 worktree 都有自己的工作目錄。

251 

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

253 

254基礎 API 快取更廣泛。快取在組織之間隔離,在某些提供商上,[在組織內的工作區之間隔離](https://platform.claude.com/docs/en/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)以抑制系統提示的按機器部分並跨機器共享快取。

255 

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

257 檢查快取效能

258</h2>

259 

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

261 

262| 欄位 | 含義 |

263| ----------------------------- | ------------------------------- |

264| `cache_creation_input_tokens` | 在此轉換上寫入快取的令牌,按快取寫入速率計費 |

265| `cache_read_input_tokens` | 在此轉換上從快取提供的令牌,按標準輸入速率的大約 10% 計費 |

266 

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

268 

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

270 

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

272 子代理和快取

273</h2>

274 

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

276 

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

278 

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

280 

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

282 禁用 prompt caching

283</h2>

284 

285禁用快取在使用特定模型或提供商調試快取行為時偶爾很有用。要關閉它,請將以下環境變數之一設定為 `1`:

286 

287| 變數 | 效果 |

288| ------------------------------- | ------------ |

289| `DISABLE_PROMPT_CACHING` | 為所有模型禁用 |

290| `DISABLE_PROMPT_CACHING_HAIKU` | 僅為 Haiku 禁用 |

291| `DISABLE_PROMPT_CACHING_SONNET` | 僅為 Sonnet 禁用 |

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

293 

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

295 

296<h2 id="related-resources">

297 相關資源

298</h2>

299 

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

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

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

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

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

prompt-library.md +76 −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# 提示詞庫

6 

7> 複製貼上提示詞供 Claude Code 使用,按任務和角色標記。

8 

9這是一個提示詞庫,可複製貼上到 Claude Code 中。使用它來探索您未曾嘗試過的工作方式,或當您不確定從何開始時使用。

10 

11這些提示詞來自各種 Anthropic 指南,包括[常見工作流程](/zh-TW/common-workflows)、[最佳實踐](/zh-TW/best-practices)和[Anthropic 團隊如何使用 Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code)。它們是起點而非腳本。在任何提示詞下打開**為什麼這有效**以查看其背後的模式,這樣您可以編寫自己的提示詞。

12 

13<h2 id="what-makes-these-prompts-work">

14 這些提示詞有效的原因

15</h2>

16 

17上述提示詞共享一些模式。識別它們有助於您將此處的任何提示詞調整為您自己的任務。

18 

19**描述結果,而不是步驟。** 說出您想要的內容,讓 Claude 找到檔案。下面的提示詞無需命名單個檔案路徑即可運作。

20 

21```text theme={null}

22add rate limiting to the public API and make sure existing tests still pass

23```

24 

25**給它一種檢查自己工作的方式。** 在同一提示詞中要求執行、測試、比較或驗證,以便 Claude 進行迭代,而不是在一次嘗試後停止。

26 

27```text theme={null}

28write the migration, run it against the dev database, and confirm the schema matches

29```

30 

31**指向參考。** 命名現有檔案、測試或模式以符合,以便新程式碼與您已有的內容一致。

32 

33```text theme={null}

34add a settings page that follows the same layout as the profile page

35```

36 

37**說明可測量的目標。** 當目標是效能或涵蓋範圍時,提供指標和閾值,以便完成是明確的。

38 

39```text theme={null}

40get the bundle size under 200KB and show me what you removed

41```

42 

43**給它工件。** 直接在提示詞中貼上錯誤、日誌、螢幕截圖和計畫輸出,或輸入 `@` 以參考檔案。Claude 讀取來源而不是您對它的描述。

44 

45```text theme={null}

46why is the build failing? @build.log

47```

48 

49**說出您想要答案的方式。** 命名格式、長度或受眾,以便解釋適合您使用它的方式。若要為每個回應設定預設格式,請設定 [輸出樣式](/zh-TW/output-styles)。

50 

51```text theme={null}

52explain how the payment retry logic works as an HTML page with a diagram, then open it in my browser

53```

54 

55如需每個模式的詳細資訊,請參閱[最佳實踐](/zh-TW/best-practices)。

56 

57<h2 id="where-these-come-from">

58 這些來自何處

59</h2>

60 

61這些提示詞基於已發佈的 Anthropic 資源中的模式。每張卡片都連結到其來源:

62 

63* [常見工作流程](/zh-TW/common-workflows):核心任務的逐步指南

64* [最佳實踐](/zh-TW/best-practices):提示詞模式和專案設定

65* [Anthropic 團隊如何使用 Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code):來自工程、產品、設計和資料團隊的真實工作流程,深入探討[法律](https://claude.com/blog/how-anthropic-uses-claude-legal)、[行銷](https://claude.com/blog/how-anthropic-uses-claude-marketing)和[網路安全](https://claude.com/blog/how-anthropic-uses-claude-cybersecurity)

66* [擴展代理編碼指南](https://resources.anthropic.com/hubfs/Scaling%20agentic%20coding%20across%20your%20organization.pdf):企業採用指南

67 

68如需這些模式的影片演練,請參閱 Anthropic Academy 上的免費 [Claude Code in Action](https://anthropic.skilljar.com/claude-code-in-action) 課程。

69 

70<h2 id="related-resources">

71 相關資源

72</h2>

73 

74此頁面上的提示詞是起點。一旦一個對您的專案有效,下一步是使其可重複:將其儲存為 [技能](/zh-TW/skills),以便您的團隊中的任何人都可以將其作為 `/command` 執行,並在 [CLAUDE.md](/zh-TW/memory) 中記錄 Claude 學到的慣例,以便每個工作階段都以該背景開始,而不是 Claude 重新學習它。對於更大或更危險的變更,[計畫模式](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode)在任何編輯發生前顯示檔案清單。

75 

76如果您在整個團隊中引入 Claude Code,請參閱[管理](/zh-TW/admin-setup)以了解受管設定和政策,以及[成本和使用](/zh-TW/costs)以了解此工作在您的計畫上如何計費。

quickstart.md +44 −18

Details

8 8 

9本快速入門指南將在幾分鐘內讓您使用 AI 驅動的編碼協助。完成後,您將了解如何使用 Claude Code 進行常見的開發任務。9本快速入門指南將在幾分鐘內讓您使用 AI 驅動的編碼協助。完成後,您將了解如何使用 Claude Code 進行常見的開發任務。

10 10 

11## 開始前11<h2 id="before-you-begin">

12 開始前

13</h2>

12 14 

13確保您擁有:15確保您擁有:

14 16 


21 本指南涵蓋終端 CLI。Claude Code 也可在[網頁](https://claude.ai/code)、[桌面應用程式](/zh-TW/desktop)、[VS Code](/zh-TW/vs-code) 和 [JetBrains IDE](/zh-TW/jetbrains)、[Slack](/zh-TW/slack) 中使用,以及透過 [GitHub Actions](/zh-TW/github-actions) 和 [GitLab](/zh-TW/gitlab-ci-cd) 進行 CI/CD。請參閱[所有介面](/zh-TW/overview#use-claude-code-everywhere)。23 本指南涵蓋終端 CLI。Claude Code 也可在[網頁](https://claude.ai/code)、[桌面應用程式](/zh-TW/desktop)、[VS Code](/zh-TW/vs-code) 和 [JetBrains IDE](/zh-TW/jetbrains)、[Slack](/zh-TW/slack) 中使用,以及透過 [GitHub Actions](/zh-TW/github-actions) 和 [GitLab](/zh-TW/gitlab-ci-cd) 進行 CI/CD。請參閱[所有介面](/zh-TW/overview#use-claude-code-everywhere)。

22</Note>24</Note>

23 25 

24## 步驟 1:安裝 Claude Code26<h2 id="step-1-install-claude-code">

27 步驟 1:安裝 Claude Code

28</h2>

25 29 

26To install Claude Code, use one of the following methods:30To install Claude Code, use one of the following methods:

27 31 


79 83 

80You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.84You can also install with [apt, dnf, or apk](/en/setup#install-with-linux-package-managers) on Debian, Fedora, RHEL, and Alpine.

81 85 

82## 步驟 2:登入您的帳戶86<h2 id="step-2-log-in-to-your-account">

87 步驟 2:登入您的帳戶

88</h2>

83 89 

84Claude Code 需要帳戶才能使用。當您使用 `claude` 命令啟動互動式工作階段時您需要登入90Claude Code 需要帳戶才能使用。使用 `claude` 命令啟動互動式工作階段首次使用時系統會提示您登入

85 91 

86```bash theme={null}92```bash theme={null}

87claude93claude

88# 首次使用時系統會提示您登入

89```94```

90 95 

91```bash theme={null}96對於 Claude 訂閱或 Console 帳戶,請按照提示在瀏覽器中完成驗證。若要稍後切換帳戶或重新驗證,請在執行中的工作階段內輸入 `/login`

97 

98```text theme={null}

92/login99/login

93# 按照提示使用您的帳戶登入

94```100```

95 101 

96您可以使用以下任何帳戶類型登入:102您可以使用以下任何帳戶類型登入:


99* [Claude Console](https://console.anthropic.com/)(具有預付額度的 API 存取)。首次登入時,Console 中會自動建立「Claude Code」工作區以進行集中成本追蹤。105* [Claude Console](https://console.anthropic.com/)(具有預付額度的 API 存取)。首次登入時,Console 中會自動建立「Claude Code」工作區以進行集中成本追蹤。

100* [Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry](/zh-TW/third-party-integrations)(企業雲端提供商)106* [Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry](/zh-TW/third-party-integrations)(企業雲端提供商)

101 107 

102登入後,您的認證將被儲存,您無需再次登入。若要稍後切換帳戶,請使用 `/login` 命令。108登入後,您的認證將被儲存,您無需再次登入。

103 109 

104## 步驟 3:啟動您的第一個工作階段110<h2 id="step-3-start-your-first-session">

111 步驟 3:啟動您的第一個工作階段

112</h2>

105 113 

106在任何專案目錄中開啟您的終端並啟動 Claude Code:114在任何專案目錄中開啟您的終端並啟動 Claude Code:

107 115 


116 登入後(步驟 2),您的認證將儲存在您的系統上。在[認證管理](/zh-TW/authentication#credential-management)中了解更多。124 登入後(步驟 2),您的認證將儲存在您的系統上。在[認證管理](/zh-TW/authentication#credential-management)中了解更多。

117</Tip>125</Tip>

118 126 

119## 步驟 4:提出您的第一個問題127<h2 id="step-4-ask-your-first-question">

128 步驟 4:提出您的第一個問題

129</h2>

120 130 

121讓我們從了解您的程式碼庫開始。嘗試以下命令之一:131讓我們從了解您的程式碼庫開始。嘗試以下命令之一:

122 132 


156 Claude Code 會根據需要讀取您的專案檔案。您無需手動新增內容。166 Claude Code 會根據需要讀取您的專案檔案。您無需手動新增內容。

157</Note>167</Note>

158 168 

159## 步驟 5:進行您的第一次程式碼變更169<h2 id="step-5-make-your-first-code-change">

170 步驟 5:進行您的第一次程式碼變更

171</h2>

160 172 

161現在讓我們讓 Claude Code 進行一些實際的編碼。嘗試一個簡單的任務:173現在讓我們讓 Claude Code 進行一些實際的編碼。嘗試一個簡單的任務:

162 174 


175 Claude Code 在修改檔案前始終要求許可。您可以批准個別變更或為工作階段啟用「全部接受」模式。187 Claude Code 在修改檔案前始終要求許可。您可以批准個別變更或為工作階段啟用「全部接受」模式。

176</Note>188</Note>

177 189 

178## 步驟 6:使用 Git 與 Claude Code190<h2 id="step-6-use-git-with-claude-code">

191 步驟 6:使用 Git 與 Claude Code

192</h2>

179 193 

180Claude Code 使 Git 操作變得對話式:194Claude Code 使 Git 操作變得對話式:

181 195 


201help me resolve merge conflicts215help me resolve merge conflicts

202```216```

203 217 

204## 步驟 7:修復錯誤或新增功能218<h2 id="step-7-fix-a-bug-or-add-a-feature">

219 步驟 7:修復錯誤或新增功能

220</h2>

205 221 

206Claude 擅長除錯和功能實現。222Claude 擅長除錯和功能實現。

207 223 


224* 實現解決方案240* 實現解決方案

225* 如果可用,執行測試241* 如果可用,執行測試

226 242 

227## 步驟 8:測試其他常見工作流程243<h2 id="step-8-test-out-other-common-workflows">

244 步驟 8:測試其他常見工作流程

245</h2>

228 246 

229有許多方式可以與 Claude 合作:247有許多方式可以與 Claude 合作:

230 248 


256 像與有幫助的同事交談一樣與 Claude 交談。描述您想要達成的目標,它將幫助您實現。274 像與有幫助的同事交談一樣與 Claude 交談。描述您想要達成的目標,它將幫助您實現。

257</Tip>275</Tip>

258 276 

259## 基本命令277<h2 id="essential-commands">

278 基本命令

279</h2>

260 280 

261以下是日常使用中最重要的命令:281以下是日常使用中最重要的命令:

262 282 


273 293 

274請參閱 [CLI 參考](/zh-TW/cli-reference)以取得完整的命令清單。294請參閱 [CLI 參考](/zh-TW/cli-reference)以取得完整的命令清單。

275 295 

276## 初學者的專業提示296<h2 id="pro-tips-for-beginners">

297 初學者的專業提示

298</h2>

277 299 

278如需更多資訊,請參閱[最佳實踐](/zh-TW/best-practices)和[常見工作流程](/zh-TW/common-workflows)。300如需更多資訊,請參閱[最佳實踐](/zh-TW/best-practices)和[常見工作流程](/zh-TW/common-workflows)。

279 301 


314 </Accordion>336 </Accordion>

315</AccordionGroup>337</AccordionGroup>

316 338 

317## 接下來呢?339<h2 id="what-s-next">

340 接下來呢?

341</h2>

318 342 

319現在您已經學習了基礎知識,請探索更多進階功能:343現在您已經學習了基礎知識,請探索更多進階功能:

320 344 


336 </Card>360 </Card>

337</CardGroup>361</CardGroup>

338 362 

339## 獲取幫助363<h2 id="getting-help">

364 獲取幫助

365</h2>

340 366 

341* **在 Claude Code 中**:輸入 `/help` 或詢問「how do I...」367* **在 Claude Code 中**:輸入 `/help` 或詢問「how do I...」

342* **文件**:您在這裡!瀏覽其他指南368* **文件**:您在這裡!瀏覽其他指南

remote-control.md +52 −18

Details

26 26 

27本頁涵蓋設定、如何啟動和連接到會話,以及 Remote Control 與網頁版 Claude Code 的比較。27本頁涵蓋設定、如何啟動和連接到會話,以及 Remote Control 與網頁版 Claude Code 的比較。

28 28 

29## 需求29<h2 id="requirements">

30 需求

31</h2>

30 32 

31在使用 Remote Control 之前,請確認您的環境符合以下條件:33在使用 Remote Control 之前,請確認您的環境符合以下條件:

32 34 


34* **驗證**:執行 `claude` 並使用 `/login` 透過 claude.ai 登入(如果您還沒有登入)。36* **驗證**:執行 `claude` 並使用 `/login` 透過 claude.ai 登入(如果您還沒有登入)。

35* **工作區信任**:在您的專案目錄中至少執行一次 `claude` 以接受工作區信任對話框。37* **工作區信任**:在您的專案目錄中至少執行一次 `claude` 以接受工作區信任對話框。

36 38 

37## 啟動 Remote Control 會話39<h2 id="start-a-remote-control-session">

40 啟動 Remote Control 會話

41</h2>

38 42 

39您可以從 CLI 或 VS Code 擴充功能啟動 Remote Control 會話。CLI 提供三種調用模式;VS Code 使用 `/remote-control` 命令。43您可以從 CLI 或 VS Code 擴充功能啟動 Remote Control 會話。CLI 提供三種調用模式;VS Code 使用 `/remote-control` 命令。

40 44 


107 </Tab>111 </Tab>

108</Tabs>112</Tabs>

109 113 

110### 從另一個裝置連接114<h3 id="connect-from-another-device">

115 從另一個裝置連接

116</h3>

111 117 

112一旦 Remote Control 會話處於活動狀態,您有幾種方式從另一個裝置連接:118一旦 Remote Control 會話處於活動狀態,您有幾種方式從另一個裝置連接:

113 119 


1223. 現有對話歷史記錄中最後一條有意義的訊息1283. 現有對話歷史記錄中最後一條有意義的訊息

1234. 類似 `myhost-graceful-unicorn` 的自動生成名稱,其中 `myhost` 是您機器的主機名稱或您使用 `--remote-control-session-name-prefix` 設定的前綴1294. 類似 `myhost-graceful-unicorn` 的自動生成名稱,其中 `myhost` 是您機器的主機名稱或您使用 `--remote-control-session-name-prefix` 設定的前綴

124 130 

125如果您沒有設定明確名稱,標題會在您發送提示後更新以反映您的提示。131如果您沒有設定明確名稱,標題會在您發送提示後更新以反映您的提示。從 claude.ai 或 Claude 應用程式重新命名會話也會更新在 `claude --resume` 中顯示的本地標題。

126 132 

127如果環境已經有一個活動會話,您將被詢問是否繼續它或啟動一個新會話。133如果環境已經有一個活動會話,您將被詢問是否繼續它或啟動一個新會話。

128 134 

129如果您還沒有 Claude 應用程式,請在 Claude Code 內使用 `/mobile` 命令顯示 [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) 或 [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) 的下載 QR 碼。135如果您還沒有 Claude 應用程式,請在 Claude Code 內使用 `/mobile` 命令顯示 [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) 或 [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude) 的下載 QR 碼。

130 136 

131### 為所有會話啟用 Remote Control137<h3 id="enable-remote-control-for-all-sessions">

138 為所有會話啟用 Remote Control

139</h3>

132 140 

133預設情況下,Remote Control 只在您明確執行 `claude remote-control`、`claude --remote-control` 或 `/remote-control` 時啟動。要為每個互動式會話自動啟用它,請在 Claude Code 內執行 `/config` 並將**為所有會話啟用 Remote Control** 設定為 `true`。將其設定回 `false` 以停用。在桌面應用程式中,您也可以從**設定 → Claude Code → 預設啟用遠端控制**切換此選項。141預設情況下,Remote Control 只在您明確執行 `claude remote-control`、`claude --remote-control` 或 `/remote-control` 時啟動。要為每個互動式會話自動啟用它,請在 Claude Code 內執行 `/config` 並將**為所有會話啟用 Remote Control** 設定為 `true`。將其設定回 `false` 以停用。在桌面應用程式中,您也可以從**設定 → Claude Code → 預設啟用遠端控制**切換此選項。

134 142 

135啟用此設定後,每個互動式 Claude Code 程序會註冊一個遠端會話。如果您執行多個實例,每個實例都會獲得自己的環境和會話。要從單個程序執行多個並行會話,請改用[伺服器模式](#start-a-remote-control-session)。143啟用此設定後,每個互動式 Claude Code 程序會註冊一個遠端會話。如果您執行多個實例,每個實例都會獲得自己的環境和會話。要從單個程序執行多個並行會話,請改用[伺服器模式](#start-a-remote-control-session)。

136 144 

137## 連接和安全性145<h2 id="connection-and-security">

146 連接和安全性

147</h2>

138 148 

139您的本地 Claude Code 會話僅發出出站 HTTPS 請求,永遠不會在您的機器上開啟入站連接埠。當您啟動 Remote Control 時,它會向 Anthropic API 註冊並輪詢工作。當您從另一個裝置連接時,伺服器會透過串流連接在網頁或行動用戶端與您的本地會話之間路由訊息。149您的本地 Claude Code 會話僅發出出站 HTTPS 請求,永遠不會在您的機器上開啟入站連接埠。當您啟動 Remote Control 時,它會向 Anthropic API 註冊並輪詢工作。當您從另一個裝置連接時,伺服器會透過串流連接在網頁或行動用戶端與您的本地會話之間路由訊息。

140 150 

141所有流量都透過 TLS 上的 Anthropic API 傳輸,與任何 Claude Code 會話相同的傳輸安全性。連接使用多個短期認證,每個認證的範圍限定為單一目的並獨立過期。151所有流量都透過 TLS 上的 Anthropic API 傳輸,與任何 Claude Code 會話相同的傳輸安全性。連接使用多個短期認證,每個認證的範圍限定為單一目的並獨立過期。

142 152 

143## Remote Control 與網頁版 Claude Code 的比較153<h2 id="remote-control-vs-claude-code-on-the-web">

154 Remote Control 與網頁版 Claude Code 的比較

155</h2>

144 156 

145Remote Control 和[網頁版 Claude Code](/zh-TW/claude-code-on-the-web)都使用 claude.ai/code 介面。關鍵區別在於會話執行的位置:Remote Control 在您的機器上執行,因此您的本地 MCP servers、工具和專案配置保持可用。網頁版 Claude Code 在 Anthropic 管理的雲端基礎設施中執行。157Remote Control 和[網頁版 Claude Code](/zh-TW/claude-code-on-the-web)都使用 claude.ai/code 介面。關鍵區別在於會話執行的位置:Remote Control 在您的機器上執行,因此您的本地 MCP servers、工具和專案配置保持可用。網頁版 Claude Code 在 Anthropic 管理的雲端基礎設施中執行。

146 158 

147當您在本地工作中途並想從另一個裝置繼續時,請使用 Remote Control。當您想在沒有任何本地設定的情況下啟動任務、處理您沒有複製的儲存庫或並行執行多個任務時,請使用網頁版 Claude Code。159當您在本地工作中途並想從另一個裝置繼續時,請使用 Remote Control。當您想在沒有任何本地設定的情況下啟動任務、處理您沒有複製的儲存庫或並行執行多個任務時,請使用網頁版 Claude Code。

148 160 

149## 行動推播通知161<h2 id="mobile-push-notifications">

162 行動推播通知

163</h2>

150 164 

151當 Remote Control 處於活動狀態時,Claude 可以向您的手機發送推播通知。165當 Remote Control 處於活動狀態時,Claude 可以向您的手機發送推播通知。

152 166 


182* 在 iOS 上,焦點模式和通知摘要可能會抑制或延遲推播。檢查設定 → 通知 → Claude。196* 在 iOS 上,焦點模式和通知摘要可能會抑制或延遲推播。檢查設定 → 通知 → Claude。

183* 在 Android 上,激進的電池優化可能會延遲傳遞。在系統設定中將 Claude 應用程式豁免於電池優化。197* 在 Android 上,激進的電池優化可能會延遲傳遞。在系統設定中將 Claude 應用程式豁免於電池優化。

184 198 

185## 限制199<h2 id="limitations">

200 限制

201</h2>

186 202 

187* **每個互動式程序一個遠端會話**:在伺服器模式之外,每個 Claude Code 實例一次支援一個遠端會話。使用[伺服器模式](#start-a-remote-control-session)從單個程序執行多個並行會話。203* **每個互動式程序一個遠端會話**:在伺服器模式之外,每個 Claude Code 實例一次支援一個遠端會話。使用[伺服器模式](#start-a-remote-control-session)從單個程序執行多個並行會話。

188* **本地程序必須保持執行**:Remote Control 作為本地程序執行。如果您關閉終端機、退出 VS Code 或以其他方式停止 `claude` 程序,會話結束。204* **本地程序必須保持執行**:Remote Control 作為本地程序執行。如果您關閉終端機、退出 VS Code 或以其他方式停止 `claude` 程序,會話結束。


190* **Ultraplan 斷開 Remote Control**:啟動 [ultraplan](/zh-TW/ultraplan) 會話會斷開任何活動的 Remote Control 會話,因為兩個功能都佔據 claude.ai/code 介面,一次只能連接一個。206* **Ultraplan 斷開 Remote Control**:啟動 [ultraplan](/zh-TW/ultraplan) 會話會斷開任何活動的 Remote Control 會話,因為兩個功能都佔據 claude.ai/code 介面,一次只能連接一個。

191* **某些命令僅限本地**:在終端機中開啟互動式選擇器的命令,例如 `/mcp`、`/plugin` 或 `/resume`,只能從本地 CLI 使用。產生文字輸出的命令,包括 `/compact`、`/clear`、`/context`、`/usage`、`/exit`、`/usage-credits`、`/recap` 和 `/reload-plugins`,可從行動和網頁使用。207* **某些命令僅限本地**:在終端機中開啟互動式選擇器的命令,例如 `/mcp`、`/plugin` 或 `/resume`,只能從本地 CLI 使用。產生文字輸出的命令,包括 `/compact`、`/clear`、`/context`、`/usage`、`/exit`、`/usage-credits`、`/recap` 和 `/reload-plugins`,可從行動和網頁使用。

192 208 

193## 疑難排解209<h2 id="troubleshooting">

210 疑難排解

211</h2>

194 212 

195### 「Remote Control 需要 claude.ai 訂閱」213<h3 id="remote-control-requires-a-claude-ai-subscription">

214 「Remote Control 需要 claude.ai 訂閱」

215</h3>

196 216 

197您未使用 claude.ai 帳戶進行驗證。執行 `claude auth login` 並選擇 claude.ai 選項。如果在您的環境中設定了 `ANTHROPIC_API_KEY`,請先取消設定它。217您未使用 claude.ai 帳戶進行驗證。執行 `claude auth login` 並選擇 claude.ai 選項。如果在您的環境中設定了 `ANTHROPIC_API_KEY`,請先取消設定它。

198 218 

199### 「Remote Control 需要完整範圍登入令牌」219<h3 id="remote-control-requires-a-full-scope-login-token">

220 「Remote Control 需要完整範圍登入令牌」

221</h3>

200 222 

201您使用來自 `claude setup-token` 或 `CLAUDE_CODE_OAUTH_TOKEN` 環境變數的長期令牌進行驗證。這些令牌僅限於推論,無法建立 Remote Control 會話。執行 `claude auth login` 以改用完整範圍會話令牌進行驗證。223您使用來自 `claude setup-token` 或 `CLAUDE_CODE_OAUTH_TOKEN` 環境變數的長期令牌進行驗證。這些令牌僅限於推論,無法建立 Remote Control 會話。執行 `claude auth login` 以改用完整範圍會話令牌進行驗證。

202 224 

203### 「無法確定您的組織以進行 Remote Control 資格檢查」225<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">

226 「無法確定您的組織以進行 Remote Control 資格檢查」

227</h3>

204 228 

205您的快取帳戶資訊已過期或不完整。執行 `claude auth login` 以重新整理它。229您的快取帳戶資訊已過期或不完整。執行 `claude auth login` 以重新整理它。

206 230 

207### 「Remote Control 尚未為您的帳戶啟用」231<h3 id="remote-control-is-not-yet-enabled-for-your-account">

232 「Remote Control 尚未為您的帳戶啟用」

233</h3>

208 234 

209在存在某些環境變數的情況下,資格檢查可能會失敗:235在存在某些環境變數的情況下,資格檢查可能會失敗:

210 236 


213 239 

214如果這些都沒有設定,請執行 `/logout` 然後 `/login` 以重新整理。240如果這些都沒有設定,請執行 `/logout` 然後 `/login` 以重新整理。

215 241 

216### 「Remote Control 已被您的組織政策停用」242<h3 id="remote-control-is-disabled-by-your-organization-s-policy">

243 「Remote Control 已被您的組織政策停用」

244</h3>

217 245 

218此錯誤有四個不同的原因。首先執行 `/status` 以查看您使用的登入方法和訂閱。246此錯誤有四個不同的原因。首先執行 `/status` 以查看您使用的登入方法和訂閱。

219 247 


222* **管理員切換呈灰色**:您的組織具有與 Remote Control 不相容的資料保留或合規配置。這無法從管理面板更改。請聯絡 Anthropic 支援以討論選項。250* **管理員切換呈灰色**:您的組織具有與 Remote Control 不相容的資料保留或合規配置。這無法從管理面板更改。請聯絡 Anthropic 支援以討論選項。

223* **錯誤提及 `disableRemoteControl`**:您的 IT 管理員已透過[受管設定](/zh-TW/settings#settings-files)在此裝置上停用 Remote Control,獨立於組織範圍的切換。251* **錯誤提及 `disableRemoteControl`**:您的 IT 管理員已透過[受管設定](/zh-TW/settings#settings-files)在此裝置上停用 Remote Control,獨立於組織範圍的切換。

224 252 

225### 「Remote credentials fetch failed253<h3 id="remote-credentials-fetch-failed">

254 「Remote credentials fetch failed」

255</h3>

226 256 

227Claude Code 無法從 Anthropic API 獲取短期認證以建立連接。使用 `--verbose` 重新執行以查看完整錯誤:257Claude Code 無法從 Anthropic API 獲取短期認證以建立連接。使用 `--verbose` 重新執行以查看完整錯誤:

228 258 


236* 網路或代理問題:防火牆或代理可能阻止出站 HTTPS 請求。Remote Control 需要存取埠 443 上的 Anthropic API。266* 網路或代理問題:防火牆或代理可能阻止出站 HTTPS 請求。Remote Control 需要存取埠 443 上的 Anthropic API。

237* 會話建立失敗:如果您也看到 `Session creation failed — see debug log`,失敗發生在設定的早期。檢查您的訂閱是否有效。267* 會話建立失敗:如果您也看到 `Session creation failed — see debug log`,失敗發生在設定的早期。檢查您的訂閱是否有效。

238 268 

239## 選擇正確的方法269<h2 id="choose-the-right-approach">

270 選擇正確的方法

271</h2>

240 272 

241Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.273Claude Code offers several ways to work when you're not at your terminal. They differ in what triggers the work, where Claude runs, and how much you need to set up.

242 274 


248| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |280| [Slack](/en/slack) | Mention `@Claude` in a team channel | Anthropic cloud | [Install the Slack app](/en/slack#setting-up-claude-code-in-slack) with [Claude Code on the web](/en/claude-code-on-the-web) enabled | PRs and reviews from team chat |

249| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |281| [Scheduled tasks](/en/scheduled-tasks) | Set a schedule | [CLI](/en/scheduled-tasks), [Desktop](/en/desktop-scheduled-tasks), or [cloud](/en/routines) | Pick a frequency | Recurring automation like daily reviews |

250 282 

251## 相關資源283<h2 id="related-resources">

284 相關資源

285</h2>

252 286 

253* [網頁版 Claude Code](/zh-TW/claude-code-on-the-web):在 Anthropic 管理的雲端環境中執行會話,而不是在您的機器上287* [網頁版 Claude Code](/zh-TW/claude-code-on-the-web):在 Anthropic 管理的雲端環境中執行會話,而不是在您的機器上

254* [Ultraplan](/zh-TW/ultraplan):從您的終端機啟動雲端規劃會話,並在瀏覽器中檢查計畫288* [Ultraplan](/zh-TW/ultraplan):從您的終端機啟動雲端規劃會話,並在瀏覽器中檢查計畫

routines.md +85 −24

Details

26 26 

27本頁涵蓋創建例行程序、配置每種觸發器類型、管理運行以及使用限制如何應用。27本頁涵蓋創建例行程序、配置每種觸發器類型、管理運行以及使用限制如何應用。

28 28 

29## 示例用例29<h2 id="example-use-cases">

30 示例用例

31</h2>

30 32 

31每個示例將觸發器類型與例行程序適合的工作類型配對:無人值守、可重複且與明確結果相關。33每個示例將觸發器類型與例行程序適合的工作類型配對:無人值守、可重複且與明確結果相關。

32 34 


44 46 

45下面的部分將逐步介紹創建例行程序和配置每種觸發器類型。47下面的部分將逐步介紹創建例行程序和配置每種觸發器類型。

46 48 

47## 創建例行程序49<h2 id="create-a-routine">

50 創建例行程序

51</h2>

48 52 

49從 Web 的 [claude.ai/code/routines](https://claude.ai/code/routines)、Desktop 應用或 CLI 創建例行程序。所有三個界面都寫入同一個雲帳戶,因此您在其中一個創建的例行程序會立即顯示在其他界面中。在 Desktop 應用中,點擊側邊欄中的 **Routines**,然後點擊 **New routine**,並選擇 **Remote**;選擇 **Local** 會創建一個 [Desktop scheduled task](/zh-TW/desktop-scheduled-tasks),它在您的機器上運行,而不是在雲中運行。53從 Web 的 [claude.ai/code/routines](https://claude.ai/code/routines)、Desktop 應用或 CLI 創建例行程序。所有三個界面都寫入同一個雲帳戶,因此您在其中一個創建的例行程序會立即顯示在其他界面中。在 Desktop 應用中,點擊側邊欄中的 **Routines**,然後點擊 **New routine**,並選擇 **Remote**;選擇 **Local** 會創建一個 [Desktop scheduled task](/zh-TW/desktop-scheduled-tasks),它在您的機器上運行,而不是在雲中運行。

50 54 


54 58 

55例行程序屬於您的個人 claude.ai 帳戶。它們不與隊友共享,並且計入您帳戶的每日運行配額。例行程序通過您連接的 GitHub 身份或 connectors 執行的任何操作都顯示為您:提交和拉取請求帶有您的 GitHub 用戶,Slack 消息、Linear 票證或其他 connector 操作使用您為這些服務鏈接的帳戶。59例行程序屬於您的個人 claude.ai 帳戶。它們不與隊友共享,並且計入您帳戶的每日運行配額。例行程序通過您連接的 GitHub 身份或 connectors 執行的任何操作都顯示為您:提交和拉取請求帶有您的 GitHub 用戶,Slack 消息、Linear 票證或其他 connector 操作使用您為這些服務鏈接的帳戶。

56 60 

57### 從 Web 創建61<h3 id="create-from-the-web">

62 從 Web 創建

63</h3>

58 64 

59<Steps>65<Steps>

60 <Step title="打開創建表單">66 <Step title="打開創建表單">


114 </Step>120 </Step>

115</Steps>121</Steps>

116 122 

117### 從 CLI 創建123<h3 id="create-from-the-cli">

124 從 CLI 創建

125</h3>

118 126 

119在任何會話中運行 `/schedule` 以對話方式創建排程例行程序。您也可以直接傳遞描述,例如定期例行程序如 `/schedule daily PR review at 9am` 或一次性例行程序如 `/schedule clean up feature flag in one week`。Claude 會逐步介紹 Web 表單收集的相同信息,然後將例行程序保存到您的帳戶。127在任何會話中運行 `/schedule` 以對話方式創建排程例行程序。您也可以直接傳遞描述,例如定期例行程序如 `/schedule daily PR review at 9am` 或一次性例行程序如 `/schedule clean up feature flag in one week`。Claude 會逐步介紹 Web 表單收集的相同信息,然後將例行程序保存到您的帳戶。

120 128 


122 130 

123CLI 還支持管理現有例行程序。運行 `/schedule list` 查看所有例行程序,`/schedule update` 更改一個,或 `/schedule run` 立即觸發它。131CLI 還支持管理現有例行程序。運行 `/schedule list` 查看所有例行程序,`/schedule update` 更改一個,或 `/schedule run` 立即觸發它。

124 132 

125## 配置觸發器133<h2 id="configure-triggers">

134 配置觸發器

135</h2>

126 136 

127當其觸發器之一匹配時,例行程序啟動。您可以將排程、API 和 GitHub 觸發器的任何組合附加到同一例行程序,並可以隨時從例行程序編輯表單的 **Select a trigger** 部分添加或移除它們。137當其觸發器之一匹配時,例行程序啟動。您可以將排程、API 和 GitHub 觸發器的任何組合附加到同一例行程序,並可以隨時從例行程序編輯表單的 **Select a trigger** 部分添加或移除它們。

128 138 

129### 添加排程觸發器139<h3 id="add-a-schedule-trigger">

140 添加排程觸發器

141</h3>

130 142 

131排程觸發器按定期節奏運行例行程序,或在特定的未來時間運行一次。在 **Select a trigger** 部分中選擇預設頻率:每小時、每天、工作日或每週。時間以您的本地時區輸入並自動轉換,因此例行程序在該掛鐘時間運行,無論雲端基礎設施位於何處。143排程觸發器按定期節奏運行例行程序,或在特定的未來時間運行一次。在 **Select a trigger** 部分中選擇預設頻率:每小時、每天、工作日或每週。時間以您的本地時區輸入並自動轉換,因此例行程序在該掛鐘時間運行,無論雲端基礎設施位於何處。

132 144 


134 146 

135對於自定義間隔,例如每兩小時或每月的第一天,在表單中選擇最接近的預設,然後在 CLI 中運行 `/schedule update` 以設置特定的 cron 表達式。最小間隔是一小時;運行頻率更高的表達式會被拒絕。147對於自定義間隔,例如每兩小時或每月的第一天,在表單中選擇最接近的預設,然後在 CLI 中運行 `/schedule update` 以設置特定的 cron 表達式。最小間隔是一小時;運行頻率更高的表達式會被拒絕。

136 148 

137#### 排程一次性運行149<h4 id="schedule-a-one-off-run">

150 排程一次性運行

151</h4>

138 152 

139一次性排程在特定時間戳處觸發例行程序一次。使用它來提醒自己本週稍後、在推出完成後打開清理 PR,或在上游更改到達時啟動後續任務。例行程序觸發後,它會自動禁用,Web UI 將其標記為 **Ran**。要再次運行它,編輯例行程序並設置新的一次性時間。153一次性排程在特定時間戳處觸發例行程序一次。使用它來提醒自己本週稍後、在推出完成後打開清理 PR,或在上游更改到達時啟動後續任務。例行程序觸發後,它會自動禁用,Web UI 將其標記為 **Ran**。要再次運行它,編輯例行程序並設置新的一次性時間。

140 154 


152 166 

153一次性運行不計入每日例行程序運行上限。它們像任何其他會話一樣消耗您計劃的常規訂閱使用量。有關詳細信息,請參閱 [Usage and limits](#usage-and-limits)。167一次性運行不計入每日例行程序運行上限。它們像任何其他會話一樣消耗您計劃的常規訂閱使用量。有關詳細信息,請參閱 [Usage and limits](#usage-and-limits)。

154 168 

155### 添加 API 觸發器169<h3 id="add-an-api-trigger">

170 添加 API 觸發器

171</h3>

156 172 

157API 觸發器為例行程序提供專用的 HTTP 端點。使用例行程序的持有人令牌 POST 到端點會啟動新會話並返回會話 URL。使用此功能將 Claude Code 連接到警報系統、部署管道、內部工具或任何可以進行身份驗證 HTTP 請求的地方。173API 觸發器為例行程序提供專用的 HTTP 端點。使用例行程序的持有人令牌 POST 到端點會啟動新會話並返回會話 URL。使用此功能將 Claude Code 連接到警報系統、部署管道、內部工具或任何可以進行身份驗證 HTTP 請求的地方。

158 174 


178 194 

179每個例行程序都有自己的令牌,範圍限於僅觸發該例行程序。要輪換或撤銷它,返回同一模態框並點擊 **Regenerate** 或 **Revoke**。195每個例行程序都有自己的令牌,範圍限於僅觸發該例行程序。要輪換或撤銷它,返回同一模態框並點擊 **Regenerate** 或 **Revoke**。

180 196 

181#### 觸發例行程序197<h4 id="trigger-a-routine">

198 觸發例行程序

199</h4>

182 200 

183向 `/fire` 端點發送 POST 請求,在 `Authorization` 標頭中包含持有人令牌。請求正文接受可選的 `text` 字段,用於運行特定的上下文,例如警報正文或失敗的日誌,與其保存的提示一起傳遞給例行程序。該值是自由格式文本,不被解析:如果您發送 JSON 或其他結構化有效負載,例行程序會將其作為文字字符串接收。201向 `/fire` 端點發送 POST 請求,在 `Authorization` 標頭中包含持有人令牌。請求正文接受可選的 `text` 字段,用於運行特定的上下文,例如警報正文或失敗的日誌,與其保存的提示一起傳遞給例行程序。該值是自由格式文本,不被解析:如果您發送 JSON 或其他結構化有效負載,例行程序會將其作為文字字符串接收。

184 202 


209 `/fire` 端點在 `experimental-cc-routine-2026-04-01` beta 標頭下發佈。請求和響應形狀、速率限制和令牌語義可能在功能處於研究預覽階段時變更。破壞性更改在新的日期 beta 標頭版本後發佈,最近的兩個先前標頭版本繼續工作,以便調用者有時間遷移。227 `/fire` 端點在 `experimental-cc-routine-2026-04-01` beta 標頭下發佈。請求和響應形狀、速率限制和令牌語義可能在功能處於研究預覽階段時變更。破壞性更改在新的日期 beta 標頭版本後發佈,最近的兩個先前標頭版本繼續工作,以便調用者有時間遷移。

210</Warning>228</Warning>

211 229 

212#### API 參考230<h4 id="api-reference">

231 API 參考

232</h4>

213 233 

214有關完整的 API 參考,包括所有錯誤響應、驗證規則和字段限制,請參閱 Claude Platform 文檔中的 [Trigger a routine via API](https://platform.claude.com/docs/zh-TW/api/claude-code/routines-fire)。234有關完整的 API 參考,包括所有錯誤響應、驗證規則和字段限制,請參閱 Claude Platform 文檔中的 [Trigger a routine via API](https://platform.claude.com/docs/zh-TW/api/claude-code/routines-fire)。

215 235 

216`/fire` 端點僅對 claude.ai 用戶可用,不是 Claude Platform API 表面的一部分。236`/fire` 端點僅對 claude.ai 用戶可用,不是 Claude Platform API 表面的一部分。

217 237 

218### 添加 GitHub 觸發器238<h3 id="add-a-github-trigger">

239 添加 GitHub 觸發器

240</h3>

219 241 

220GitHub 觸發器在連接的存儲庫上發生匹配事件時自動啟動新會話。每個匹配事件啟動自己的會話。242GitHub 觸發器在連接的存儲庫上發生匹配事件時自動啟動新會話。每個匹配事件啟動自己的會話。

221 243 


247 </Step>269 </Step>

248</Steps>270</Steps>

249 271 

250#### 支持的事件272<h4 id="supported-events">

273 支持的事件

274</h4>

251 275 

252GitHub 觸發器可以訂閱以下事件類別之一。在每個類別中,您可以選擇特定操作,例如 `pull_request.opened`,或對類別中的所有操作做出反應。276GitHub 觸發器可以訂閱以下事件類別之一。在每個類別中,您可以選擇特定操作,例如 `pull_request.opened`,或對類別中的所有操作做出反應。

253 277 


256| Pull request | PR 被打開、關閉、分配、標記、同步或以其他方式更新 |280| Pull request | PR 被打開、關閉、分配、標記、同步或以其他方式更新 |

257| Release | 發佈被創建、發佈、編輯或刪除 |281| Release | 發佈被創建、發佈、編輯或刪除 |

258 282 

259#### 篩選拉取請求283<h4 id="filter-pull-requests">

284 篩選拉取請求

285</h4>

260 286 

261使用篩選器縮小哪些拉取請求啟動新會話。所有篩選條件必須匹配才能觸發例行程序。可用的篩選字段是:287使用篩選器縮小哪些拉取請求啟動新會話。所有篩選條件必須匹配才能觸發例行程序。可用的篩選字段是:

262 288 


281* **Ready-for-review only**:is draft 是 `false`。跳過草稿,以便例行程序僅在 PR 準備好審查時運行。307* **Ready-for-review only**:is draft 是 `false`。跳過草稿,以便例行程序僅在 PR 準備好審查時運行。

282* **Label-gated backport**:labels 包括 `needs-backport`。僅當維護者標記 PR 時才觸發移植到另一分支的例行程序。308* **Label-gated backport**:labels 包括 `needs-backport`。僅當維護者標記 PR 時才觸發移植到另一分支的例行程序。

283 309 

284#### 會話如何映射到事件310<h4 id="how-sessions-map-to-events">

311 會話如何映射到事件

312</h4>

285 313 

286每個匹配的 GitHub 事件啟動新會話。GitHub 觸發的例行程序不提供跨事件的會話重用,因此兩個 PR 更新會產生兩個獨立會話。314每個匹配的 GitHub 事件啟動新會話。GitHub 觸發的例行程序不提供跨事件的會話重用,因此兩個 PR 更新會產生兩個獨立會話。

287 315 

288## 管理例行程序316<h2 id="manage-routines">

317 管理例行程序

318</h2>

289 319 

290點擊列表中的例行程序以打開其詳細信息頁面。詳細信息頁面顯示例行程序的存儲庫、connectors、提示、排程、API 令牌、GitHub 觸發器和過去運行的列表。320點擊列表中的例行程序以打開其詳細信息頁面。詳細信息頁面顯示例行程序的存儲庫、connectors、提示、排程、API 令牌、GitHub 觸發器和過去運行的列表。

291 321 

292### 查看和交互運行322<h3 id="view-and-interact-with-runs">

323 查看和交互運行

324</h3>

293 325 

294點擊任何運行以將其作為完整會話打開。從那裡您可以看到 Claude 做了什麼、審查更改、創建拉取請求或繼續對話。每個運行會話的工作方式與任何其他會話相同:使用會話標題旁邊的下拉菜單重命名、存檔或刪除它。326點擊任何運行以將其作為完整會話打開。從那裡您可以看到 Claude 做了什麼、審查更改、創建拉取請求或繼續對話。每個運行會話的工作方式與任何其他會話相同:使用會話標題旁邊的下拉菜單重命名、存檔或刪除它。

295 327 


297 運行列表中的綠色狀態表示會話已啟動並退出,沒有基礎設施錯誤。這並不意味著您提示中的任務成功。打開運行以讀取記錄並確認 Claude 實際上做了什麼。被阻止的網絡請求、缺失的 connector 工具和任務級別的失敗都會在那裡顯示,而不是在狀態指示器中。329 運行列表中的綠色狀態表示會話已啟動並退出,沒有基礎設施錯誤。這並不意味著您提示中的任務成功。打開運行以讀取記錄並確認 Claude 實際上做了什麼。被阻止的網絡請求、缺失的 connector 工具和任務級別的失敗都會在那裡顯示,而不是在狀態指示器中。

298</Note>330</Note>

299 331 

300### 編輯和控制例行程序332<h3 id="edit-and-control-routines">

333 編輯和控制例行程序

334</h3>

301 335 

302從例行程序詳細信息頁面,您可以:336從例行程序詳細信息頁面,您可以:

303 337 


306* 點擊鉛筆圖標打開 **Edit routine** 並更改名稱、提示、存儲庫、環境、connectors 或例行程序的任何觸發器。**Select a trigger** 部分是您添加或移除排程、API 令牌和 GitHub 事件觸發器的地方。340* 點擊鉛筆圖標打開 **Edit routine** 並更改名稱、提示、存儲庫、環境、connectors 或例行程序的任何觸發器。**Select a trigger** 部分是您添加或移除排程、API 令牌和 GitHub 事件觸發器的地方。

307* 點擊刪除圖標移除例行程序。由例行程序創建的過去會話保留在您的會話列表中。341* 點擊刪除圖標移除例行程序。由例行程序創建的過去會話保留在您的會話列表中。

308 342 

309### 存儲庫和分支權限343<h3 id="repositories-and-branch-permissions">

344 存儲庫和分支權限

345</h3>

310 346 

311例行程序需要 GitHub 訪問權限來克隆存儲庫。當您使用 `/schedule` 從 CLI 創建例行程序時,Claude 檢查您的帳戶是否連接了 GitHub,如果沒有則提示您運行 `/web-setup`。有關授予訪問權限的兩種方式,請參閱 [GitHub authentication options](/zh-TW/claude-code-on-the-web#github-authentication-options)。347例行程序需要 GitHub 訪問權限來克隆存儲庫。當您使用 `/schedule` 從 CLI 創建例行程序時,Claude 檢查您的帳戶是否連接了 GitHub,如果沒有則提示您運行 `/web-setup`。有關授予訪問權限的兩種方式,請參閱 [GitHub authentication options](/zh-TW/claude-code-on-the-web#github-authentication-options)。

312 348 


314 350 

315默認情況下,Claude 只能推送到以 `claude/` 為前綴的分支。這可以防止例行程序意外修改受保護或長期分支。要移除特定存儲庫的此限制,請在創建或編輯例行程序時為該存儲庫啟用 **Allow unrestricted branch pushes**。351默認情況下,Claude 只能推送到以 `claude/` 為前綴的分支。這可以防止例行程序意外修改受保護或長期分支。要移除特定存儲庫的此限制,請在創建或編輯例行程序時為該存儲庫啟用 **Allow unrestricted branch pushes**。

316 352 

317### Connectors353<h3 id="connectors">

354 Connectors

355</h3>

318 356 

319例行程序可以使用您連接的 MCP connectors 在每次運行期間讀取和寫入外部服務。例如,分類支持請求的例行程序可能從 Slack 頻道讀取並在 Linear 中創建問題。357例行程序可以使用您連接的 MCP connectors 在每次運行期間讀取和寫入外部服務。例如,分類支持請求的例行程序可能從 Slack 頻道讀取並在 Linear 中創建問題。

320 358 


324 362 

325要在例行程序表單外管理或添加 connectors,請訪問 claude.ai 上的 **Settings > Connectors** 或在 CLI 中使用 `/schedule update`。363要在例行程序表單外管理或添加 connectors,請訪問 claude.ai 上的 **Settings > Connectors** 或在 CLI 中使用 `/schedule update`。

326 364 

327### 環境和網絡訪問365<h3 id="environments-and-network-access">

366 環境和網絡訪問

367</h3>

328 368 

329每個例行程序在 [cloud environment](/zh-TW/claude-code-on-the-web#the-cloud-environment) 中運行,該環境控制網絡訪問、環境變量和設置腳本。例行程序在每次運行時繼承環境的網絡策略。369每個例行程序在 [cloud environment](/zh-TW/claude-code-on-the-web#the-cloud-environment) 中運行,該環境控制網絡訪問、環境變量和設置腳本。例行程序在每次運行時繼承環境的網絡策略。

330 370 


356 396 

357有關訪問級別和默認允許列表的詳細信息,請參閱 [Network access](/zh-TW/claude-code-on-the-web#network-access)。397有關訪問級別和默認允許列表的詳細信息,請參閱 [Network access](/zh-TW/claude-code-on-the-web#network-access)。

358 398 

359## 使用和限制399<h2 id="usage-and-limits">

400 使用和限制

401</h2>

360 402 

361例行程序以與互動式會話相同的方式消耗訂閱使用量。除了標準訂閱限制外,例行程序還有每個帳戶每天可以啟動多少次運行的每日上限。在 [claude.ai/code/routines](https://claude.ai/code/routines) 或 [claude.ai/settings/usage](https://claude.ai/settings/usage) 查看您目前的消耗和剩餘的每日例行程序運行。403例行程序以與互動式會話相同的方式消耗訂閱使用量。除了標準訂閱限制外,例行程序還有每個帳戶每天可以啟動多少次運行的每日上限。在 [claude.ai/code/routines](https://claude.ai/code/routines) 或 [claude.ai/settings/usage](https://claude.ai/settings/usage) 查看您目前的消耗和剩餘的每日例行程序運行。

362 404 


364 406 

365一次性運行不計入每日例行程序運行上限。它們像任何其他會話一樣消耗您的常規訂閱使用量,但它們不受每個帳戶每日例行程序運行額度的限制。407一次性運行不計入每日例行程序運行上限。它們像任何其他會話一樣消耗您的常規訂閱使用量,但它們不受每個帳戶每日例行程序運行額度的限制。

366 408 

367## 故障排除409<h2 id="troubleshooting">

410 故障排除

411</h2>

368 412 

369### "例行程序已被您的組織政策禁用"413<h3 id="/schedule-returns-unknown-command">

414 `/schedule` 返回"Unknown command"

415</h3>

416 

417當不滿足其中一項要求時,CLI 會隱藏 `/schedule`。原因通常是以下之一:

418 

419* 您使用 Console API 金鑰或雲端提供商(例如 Bedrock、Vertex 或 Foundry)進行身份驗證。`/schedule` 需要 claude.ai 訂閱登入。如果在您的 shell 中設定了 `ANTHROPIC_API_KEY` 或 `ANTHROPIC_AUTH_TOKEN`,或在 `settings.json` 中設定了 `apiKeyHelper`,請先移除它,因為這些設定優先於 claude.ai 登入

420* `DISABLE_TELEMETRY`、`DO_NOT_TRACK`、`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 或 `DISABLE_GROWTHBOOK` 在您的 shell 環境或 [`settings.json` 檔案](/zh-TW/settings#available-settings)的 `env` 區塊中設定。這些會停用功能旗標擷取,而 `/schedule` 依賴於此功能

421* 您在 Claude Code 網頁工作階段中。改為從 [web UI](https://claude.ai/code/routines) 管理例行程序

422* {/* min-version: 2.1.81 */}您的 CLI 版本早於 v2.1.81。執行 `claude update`

423 

424無論 CLI 如何配置,您始終可以在 [claude.ai/code/routines](https://claude.ai/code/routines) 建立和管理例行程序。

425 

426<h3 id="routines-are-disabled-by-your-organization-s-policy">

427 "例行程序已被您的組織政策禁用"

428</h3>

370 429 

371您的 Team 或 Enterprise 管理員可能已在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 關閉了 **Routines** 切換。這是一個服務器端組織設置,因此無法從您的本地配置中覆蓋。聯繫您的管理員請求為您的組織啟用例行程序。430您的 Team 或 Enterprise 管理員可能已在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 關閉了 **Routines** 切換。這是一個服務器端組織設置,因此無法從您的本地配置中覆蓋。聯繫您的管理員請求為您的組織啟用例行程序。

372 431 

373## 相關資源432<h2 id="related-resources">

433 相關資源

434</h2>

374 435 

375* [`/loop` 和會話內排程](/zh-TW/scheduled-tasks):在打開的 CLI 會話中排程本地任務436* [`/loop` 和會話內排程](/zh-TW/scheduled-tasks):在打開的 CLI 會話中排程本地任務

376* [Desktop scheduled tasks](/zh-TW/desktop-scheduled-tasks):在您的機器上運行的本地排程任務,可以訪問本地文件437* [Desktop scheduled tasks](/zh-TW/desktop-scheduled-tasks):在您的機器上運行的本地排程任務,可以訪問本地文件

sandbox-environments.md +163 −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# 選擇沙箱環境

6 

7> 比較 Claude Code 沙箱選項:內建的沙箱化 Bash 工具、sandbox runtime、dev containers、Docker 和虛擬機。為您的威脅模型選擇適當的隔離。

8 

9隔離 Claude Code 會限制一個會話可以讀取、寫入和在網路上存取的內容。當您讓 Claude 在較少的權限提示下工作、無人值守地執行它,或將其指向您不完全信任的程式碼時,這一點最為重要。

10 

11Claude Code 可以在多種隔離環境中執行,範圍從輕量級的每個命令沙箱到完全獨立的虛擬機。本頁涵蓋如何:

12 

13* [比較](#compare-sandboxing-approaches)可用的隔離方法,包括它們隔離的內容、所需的條件以及涉及的設定工作量

14* [選擇](#choose-an-approach)適合您的目標和威脅模型的方法

15* [開始使用](#sandboxed-bash-tool)您選擇的方法,從內建的 Bash 沙箱到專用虛擬機

16* [在整個組織中強制執行](#enforce-isolation-across-an-organization)隔離

17 

18<Info>

19 有關更廣泛的安全模型,請參閱 [Security](/zh-TW/security)。有關 Agent SDK 部署,請參閱 [Secure deployment](/zh-TW/agent-sdk/secure-deployment)。

20</Info>

21 

22<h2 id="compare-sandboxing-approaches">

23 比較沙箱方法

24</h2>

25 

26下表中的前兩種方法在主機作業系統上執行,不使用容器。其餘的方法將 Claude Code 放在容器或虛擬機內。

27 

28| 方法 | 隔離的內容 | 需要 Docker | 設定工作量 |

29| :------------------------------------------------ | :-------------------------------------- | :-------- | :------------------------- |

30| [Sandboxed Bash tool](#sandboxed-bash-tool) | Bash 命令及其子進程 | 否 | macOS 上最少;Linux 和 WSL2 上較少 |

31| [Sandbox runtime](#sandbox-runtime) | 整個 Claude Code 進程,包括檔案工具、MCP 伺服器和 hooks | 否 | 較少 |

32| [Dev container](#dev-containers) | 完整開發環境 | 是 | 中等 |

33| [Custom container](#custom-container) | 完整開發環境 | 是 | 中等到高 |

34| [Virtual machine](#virtual-machine) | 完整作業系統 | 否 | 高 |

35| [Claude Code on the web](#claude-code-on-the-web) | 完整作業系統,由 Anthropic 託管 | 否 | 無;需要 Claude 訂閱和 GitHub |

36 

37[Sandboxed Bash tool](/zh-TW/sandboxing) 內建於 Claude Code 中,僅限制 Bash 命令。內建檔案工具、MCP 伺服器和 hooks 仍直接在您的主機上執行。表中的所有其他方法都將整個 Claude Code 進程放在隔離邊界內,因此檔案工具、MCP 伺服器和 hooks 也受到限制。

38 

39<Warning>

40 沙箱隔離可減少違規的影響,但不能消除風險。任何允許網路出站的方法仍然可能洩露代理可以讀取的資料,任何以可寫方式掛載您的專案目錄的方法仍然可以修改該程式碼。在依賴沙箱作為硬控制之前,請查看 [security limitations](/zh-TW/sandboxing#security-limitations)。

41 

42 隔離也不會改變發送到模型的內容。您的提示和 Claude 讀取的檔案無論是否使用沙箱,都會傳輸到 Anthropic API 或您配置的提供者。有關 Claude Code 發送的內容以及如何減少它,請參閱 [Data usage](/zh-TW/data-usage)。

43</Warning>

44 

45<h2 id="choose-an-approach">

46 選擇一種方法

47</h2>

48 

49將您的目標與下面的一行相匹配,然後閱讀隨後的詳細部分。

50 

51| 您想要 | 開始使用 |

52| :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------- |

53| 在您自己的機器上減少日常工作中的權限提示 | [Sandboxed Bash tool](/zh-TW/sandboxing),使用 `/sandbox` 啟用 |

54| 讓 Claude 使用 `--dangerously-skip-permissions` 或自動模式無人值守地工作 | 預配置的 [dev container](/zh-TW/devcontainer)、任何容器或虛擬機,或 [sandbox runtime](#sandbox-runtime) |

55| 隔離 MCP 伺服器和 hooks 以及 Bash,不使用 Docker | Sandbox runtime |

56| 在不受信任的儲存庫上工作 | 專用虛擬機,或如果您有 Claude 訂閱和連接的 GitHub 帳戶,則使用 [Claude Code on the web](/zh-TW/claude-code-on-the-web) |

57| 在整個團隊中標準化沙箱環境 | 預配置的 [dev container](/zh-TW/devcontainer),複製到您的儲存庫中 |

58| 從沒有本地設定的設備使用 Claude Code | [Claude Code on the web](/zh-TW/claude-code-on-the-web),需要 Claude 訂閱和連接的 GitHub 帳戶 |

59| 要求為組織中的每個開發人員強制執行隔離 | [在整個組織中強制執行隔離](#enforce-isolation-across-an-organization) |

60| 在原生 Windows 主機上工作 | 容器或虛擬機,或在 WSL2 內執行 Bash 沙箱 |

61 

62<h3 id="how-isolation-relates-to-permission-modes">

63 隔離與權限模式的關係

64</h3>

65 

66[Permission modes](/zh-TW/permission-modes) 決定工具呼叫是否執行以及是否首先提示您。隔離限制命令執行後可以存取的內容。兩者協同工作:當權限模式允許操作在不詢問您的情況下執行時,隔離邊界限制這些操作可以到達的內容。

67 

68`--dangerously-skip-permissions` 完全移除每個操作的審查,因此隔離邊界是唯一限制 Claude 可以執行的操作的東西。始終在容器、虛擬機或 [sandbox runtime](#sandbox-runtime) 內執行它,以便檔案工具、MCP 伺服器和 hooks 也在邊界內。

69 

70[Auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 用分類器替換提示,該分類器審查操作並阻止超出請求範圍、針對無法識別的基礎設施或似乎由 Claude 讀取的敵對內容驅動的操作。分類器是每個操作的控制,而不是隔離邊界,因此隔離邊界仍然為無人值守的執行添加深度防禦,並且不像 `--dangerously-skip-permissions` 那樣是必需的。

71 

72[Sandboxed Bash tool](#sandboxed-bash-tool) 本身只限制 Bash,因此對於任一模式中的完全無人值守執行都不夠。您可以分層方法:在容器或虛擬機內執行沙箱化 Bash 工具可在外部環境邊界之上為您提供作業系統級命令限制。有關 Bash 沙箱本身如何與權限規則和模式交互的信息,請參閱 [How sandboxing relates to permissions and permission modes](/zh-TW/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes)。

73 

74<h2 id="sandboxed-bash-tool">

75 Sandboxed Bash tool

76</h2>

77 

78<Note>

79 此選項不支援原生 Windows。在 Windows 主機上,使用 WSL2 或下面的容器或虛擬機方法之一。

80</Note>

81 

82Sandboxed Bash tool 內建於 Claude Code 中。它使用作業系統原語來限制 Claude 執行的每個 Bash 命令的檔案系統和網路存取:Seatbelt(內建的 macOS 沙箱)和 Linux 和 WSL2 上的 [bubblewrap](https://github.com/containers/bubblewrap)。預設情況下,它允許寫入工作目錄,並在命令首次需要新網路域時提示。

83 

84使用 `/sandbox` 命令啟用它。[Sandboxing](/zh-TW/sandboxing) 指南涵蓋批准模式、預設邊界以及如何擴大或縮小它。

85 

86每個命令沙箱不涵蓋在會話中執行的所有內容:

87 

88* 其他 [built-in tools](/zh-TW/tools-reference)(如 Read、Edit 和 WebFetch)在 Claude Code 進程內執行,不會生成任意程式碼。[Permission rules](/zh-TW/permissions) 用於路徑或域來控制它們。

89* [MCP](/zh-TW/mcp) 伺服器和 hooks 是在主機上無約束執行的獨立進程。

90 

91要將內建工具、MCP 伺服器和 hooks 全部放在一個作業系統邊界後面,請在 [sandbox runtime](#sandbox-runtime)、[dev container](#dev-containers) 或 [custom container](#custom-container) 內執行整個 Claude Code 進程。

92 

93<h2 id="sandbox-runtime">

94 Sandbox runtime

95</h2>

96 

97[`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) 套件將整個進程包裝在內建 Bash 沙箱使用的相同 Seatbelt 或 bubblewrap 隔離中。通過它執行 Claude Code 會限制會話中的每個工具、hook 和 MCP 伺服器,而不僅僅是 Bash。該 runtime 是測試版研究預覽,其配置格式可能會隨著套件的發展而改變。

98 

99該 runtime 預設拒絕所有寫入和網路存取,因此在通過它啟動 Claude Code 之前配置它。在 `~/.srt-settings.json` 中,或您使用 `--settings` 傳遞的檔案中,至少允許寫入您的專案目錄和 Claude Code 的配置路徑 `~/.claude` 和 `~/.claude.json`。允許您的會話需要的網路域,包括 `api.anthropic.com` 或您配置的提供者的端點。有關完整的配置架構,請參閱套件 [README](https://github.com/anthropic-experimental/sandbox-runtime)。

100 

101設定檔就位後,使用 `npx` 啟動 Claude Code 並傳遞 `claude` 作為要包裝的命令:

102 

103```bash theme={null}

104npx @anthropic-ai/sandbox-runtime claude

105```

106 

107Claude Code 在沙箱內啟動,具有您配置的檔案系統和網路邊界。相同的命令適用於沙箱化獨立 MCP 伺服器或其他輔助進程。

108 

109<h2 id="dev-containers">

110 Dev containers

111</h2>

112 

113Dev container 在 VS Code 或相容編輯器管理的 Docker 容器內執行 Claude Code,您的專案掛載在其中。您可以在您的儲存庫中使用 `.devcontainer/` 目錄定義您自己的。

114 

115claude-code 儲存庫發佈了一個 [example dev container](/zh-TW/devcontainer),其中包含預設拒絕 iptables 防火牆作為起點。將其複製到您的儲存庫中,並調整防火牆允許清單、基礎映像和固定的 Claude Code 版本以適應您的環境。因為防火牆阻止未批准的出站流量,像這樣的配置支援使用 `--dangerously-skip-permissions` 執行 Claude Code 進行無人值守工作。

116 

117<h2 id="custom-container">

118 Custom container

119</h2>

120 

121您可以在任何 Docker 或 OCI 容器映像中執行 Claude Code,具有您自己的網路策略、掛載的卷和 seccomp 設定檔。這是具有現有容器基礎設施或 CI 執行器的組織最常見的路徑。

122 

123多個託管沙箱和遠端執行服務可以為您託管容器。與您操作的任何容器相同的檢查清單適用:審查掛載為可寫的內容、容器內可到達的認證和令牌,以及網路出站策略允許的內容。

124 

125您可以在容器內分層內建 Bash 沙箱以進行每個命令的限制。無特權容器需要 [Sandboxing troubleshooting](/zh-TW/sandboxing#troubleshooting) 中描述的嵌套沙箱設定。

126 

127<h2 id="virtual-machine">

128 Virtual machine

129</h2>

130 

131專用虛擬機提供最強的分離,具有自己的核心,在雲或 microVM 部署中,具有自己的虛擬化硬體。選項包括雲實例、本地虛擬機管理程式和 microVM(如 Firecracker)。

132 

133當您評估不受信任的程式碼、當您的安全策略要求代理和主機之間的核心級分離,或當沒有主機級方法滿足您的合規要求時,使用此方法。Docker Desktop 的 [sandboxes feature](https://docs.docker.com/ai/sandboxes/) 提供了一個具有自己的 Docker daemon 和工作區同步的 microVM,可以在已經有 Docker Desktop 的主機上執行 Claude Code。

134 

135<h2 id="claude-code-on-the-web">

136 Claude Code on the web

137</h2>

138 

139[Claude Code on the web](/zh-TW/claude-code-on-the-web) 在隔離的、由 Anthropic 管理的虛擬機中執行每個會話。網路代理強制執行預設允許清單,單獨的代理在沙箱外保持您的 GitHub 令牌,同時在其內部為儲存庫存取發出範圍限定的認證。

140 

141當您想要完整的虛擬機隔離而無需自己配置基礎設施,或當您從沒有本地開發環境的設備委派任務時,使用此方法。它需要 Claude 訂閱和連接的 GitHub 帳戶,會話從 GitHub 複製您的儲存庫。有關計劃可用性和 GitHub 身份驗證選項,請參閱 [Claude Code on the web](/zh-TW/claude-code-on-the-web)。

142 

143<h2 id="enforce-isolation-across-an-organization">

144 在整個組織中強制執行隔離

145</h2>

146 

147個別開發人員可以選擇上述任何方法。組織可以強制執行的內容以及使用哪些工具取決於方法:

148 

149* **Built-in Bash sandbox**:唯一 Claude Code 本身強制執行的方法。通過 [managed settings](/zh-TW/settings#settings-files) 傳遞 `sandbox` 設定金鑰,可以是由您的 MDM 管理的檔案,也可以通過 Claude.ai 上的 [server-managed settings](/zh-TW/server-managed-settings)。有關要部署的金鑰以及如何防止開發人員擴大策略,請參閱 [Enforce sandboxing with managed settings](/zh-TW/sandboxing#enforce-sandboxing-with-managed-settings)。

150* **Dev containers**:將 [example dev container](/zh-TW/devcontainer) 提交到您的儲存庫以標準化整個團隊的環境。這是一個約定而不是強制邊界,因為 Claude Code 不需要容器。如果開發人員不應該能夠在其外部執行 Claude Code,請使用您組織的設備管理或軟體允許清單工具強制執行。

151* **Custom containers and VMs**:通過批准的映像分發 Claude Code,並使用您組織的設備管理或軟體允許清單工具防止在其外部安裝。

152 

153<h2 id="see-also">

154 另請參閱

155</h2>

156 

157這些頁面涵蓋上述方法的配置和策略詳細資訊。

158 

159* [Sandboxing](/zh-TW/sandboxing):配置內建沙箱化 Bash 工具

160* [Dev container](/zh-TW/devcontainer):預配置的 Docker 開發容器

161* [Security](/zh-TW/security):完整的 Claude Code 安全模型

162* [Secure deployment](/zh-TW/agent-sdk/secure-deployment):Agent SDK 應用程式的隔離指南

163* [Settings](/zh-TW/settings#sandbox-settings):所有沙箱配置金鑰,包括託管設定傳遞

sandboxing.md +263 −162

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> 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.3> Use this file to discover all available pages before exploring further.

4 4 

5# Sandboxing5# 設定沙箱化 Bash 工具

6 6 

7> 了解 Claude Code 的沙箱化 bash 工具如何提供檔案系統和網路隔離,以實現更安全、更自主的代理執行。7> 了解 Claude Code 的沙箱化 Bash 工具如何提供檔案系統和網路隔離,以實現更安全、更自主的代理執行。

8 8 

9## 概述9Bash 沙箱讓 Claude 執行大多數 shell 命令,而無需停下來請求權限。與其批准每個命令,您可以定義命令可以接觸哪些檔案和網路域,作業系統會為每個 Bash 命令及其子流程強制執行該邊界。

10 10 

11Claude Code 具有原生沙箱化功能,為代理執行提供更安全的環境,同時減少對持續權限提示的需求。沙箱化不是要求每個 bash 命令的權限,而是預先建立定義的邊界,讓 Claude Code 能夠以降低風險的方式更自由地工作。11本頁涵蓋如何:

12 12 

13沙箱化 bash 工具使用作業系統級別的原語來強制執行檔案系統和網路隔離。13* [啟用沙箱](#get-started)並選擇沙箱化命令的批准方式

14* [設定](#configure-sandboxing)命令可以到達的路徑和網路域

15* [將沙箱化與權限規則和權限模式結合](#how-sandboxing-relates-to-permissions-and-permission-modes)

16* [在整個組織中強制執行沙箱化](#configure-the-sandbox-for-your-organization),使用受管設定

14 17 

15## 為什麼沙箱化很重要18<Note>

16 19 若要比較其他隔離方法,例如開發容器、自訂容器和虛擬機,請參閱 [Sandbox environments](/zh-TW/sandbox-environments)。若要減少 Bash 以外工具的權限提示,請參閱 [permission modes](/zh-TW/permission-modes)。

17傳統的基於權限的安全性需要對 bash 命令進行持續的使用者批准。雖然這提供了控制,但可能導致:20</Note>

18 

19* **批准疲勞**:重複點擊「批准」可能導致使用者對他們批准的內容關注度降低

20* **生產力降低**:持續的中斷會減慢開發工作流程

21* **自主性受限**:當等待批准時,Claude Code 無法高效工作

22 

23沙箱化通過以下方式解決這些挑戰:

24 

251. **定義清晰的邊界**:精確指定 Claude Code 可以存取的目錄和網路主機

262. **減少權限提示**:沙箱內的安全命令不需要批准

273. **維持安全性**:嘗試存取沙箱外的資源會觸發立即通知

284. **啟用自主性**:Claude Code 可以在定義的限制內更獨立地運行

29 21 

30<Warning>22<h2 id="get-started">

31 有效的沙箱化需要**同時**進行檔案系統和網路隔離。沒有網路隔離,受損的代理可能會洩露敏感檔案,如 SSH 金鑰。沒有檔案系統隔離,受損的代理可能會後門系統資源以獲得網路存取。配置沙箱化時,重要的是確保您配置的設定不會在這些系統中建立繞過。23 開始使用

32</Warning>24</h2>

33 25 

34## 它如何運作26沙箱內建於 Claude Code 中,在 macOS、Linux 和 WSL2 上執行。不支援原生 Windows。在 Windows 上,在 WSL2 發行版內執行 Claude Code。

35 27 

36### 檔案系統隔離28在 macOS 上,無需安裝任何內容:沙箱化使用內建的 Seatbelt 框架。在 Linux 和 WSL2 上,沙箱依賴於兩個套件,詳見 [Set up Linux and WSL2](#set-up-linux-and-wsl2)。即使您還沒有安裝它們,您也可以從 `/sandbox` 開始,因為其面板會顯示是否缺少任何內容。

37 29 

38沙箱化 bash 工具將檔案系統存取限制在特定目錄:30<Steps>

31 <Step title="執行 /sandbox">

32 啟動 Claude Code 工作階段並執行 `/sandbox` 命令:

39 33 

40* **預設寫入行為**:對目前工作目錄及其子目錄的讀取和寫入存取34 ```text theme={null}

41* **預設讀取行為**:對整個電腦的讀取存取,除了某些被拒絕的目錄35 /sandbox

42* **被阻止的存取**:無法在沒有明確權限的情況下修改目前工作目錄外的檔案36 ```

43* **可配置**:通過設定定義自訂允許和拒絕的路徑

44 37 

45您可以使用設定中的 `sandbox.filesystem.allowWrite` 授予對其他路徑的寫入存取。這些限制在作業系統級別強制執行(macOS 上的 Seatbelt,Linux 上的 bubblewrap),因此它們適用於所有子流程命令,包括 `kubectl`、`terraform` 和 `npm` 等工具而不僅僅是 Claude 的檔案工具。38 這會開啟沙箱面板有三個標籤:

46 39 

47### 網路隔離40 * **Mode**:選擇沙箱化命令的批准方式,詳見下一步

41 * **Overrides**:選擇在沙箱下失敗的命令是否可以回退到執行未沙箱化。這是 [`allowUnsandboxedCommands`](/zh-TW/settings#sandbox-settings) 設定

42 * **Config**:檢視已解析的沙箱設定

48 43 

49網路存取通過在沙箱外運行的代理伺服器進行控制:44 如果面板只顯示 Dependencies 標籤,則缺少必需的套件。按照 [Set up Linux and WSL2](#set-up-linux-and-wsl2) 中的說明安裝它,重新啟動 Claude Code,然後再次執行 `/sandbox`。

45 </Step>

50 46 

51* **域名限制**:只能存取已批准的域名47 <Step title="選擇一個模式">

52* **使用者確認**:新的域名請求會觸發權限提示(除非啟用了 [`allowManagedDomainsOnly`](/zh-TW/settings#sandbox-settings),它會自動阻止非允許的域名)48 Mode 標籤上,選擇自動允許或常規權限。自動允許在不提示的情況下執行沙箱化命令,常規權限即使命令沙箱化也保持常規權限提示。請參閱 [Sandbox modes](#sandbox-modes) 了解在自動允許模式中仍然提示的命令。

53* **自訂代理支援**:進階使用者可以在出站流量上實施自訂規則49 </Step>

54* **全面覆蓋**:限制適用於所有指令碼、程式和由命令產生的子流程

55 50 

56### 作業系統級別的強制執行51 <Step title="執行 Bash 命令">

52 要求 Claude 執行命令,例如構建或測試套件。預設情況下,沙箱內的命令只能寫入工作目錄。命令首次需要新的網路域時,Claude Code 會提示批准。

57 53 

58沙箱化 bash 工具利用作業系統安全原語:54 無法沙箱化執行的命令會回退到常規權限流程。若要擴大或縮小這些邊界,請參閱 [Configure sandboxing](#configure-sandboxing)。

55 </Step>

56</Steps>

59 57 

60* **macOS**:使用 Seatbelt 進行沙箱強制執行58在面板中選擇模式會寫入您專案的本地設定,位於 `.claude/settings.local.json`,這適用於目前專案,不會簽入 git。若要在所有專案中啟用沙箱,請在 `~/.claude/settings.json` 的使用者設定中將 [`sandbox.enabled`](/zh-TW/settings#sandbox-settings) 設定為 `true`。若要為組織中的每個開發人員強制執行沙箱化,請使用 [managed settings](#enforce-sandboxing-with-managed-settings)。

61* **Linux**:使用 [bubblewrap](https://github.com/containers/bubblewrap) 進行隔離

62* **WSL2**:使用 bubblewrap,與 Linux 相同

63 

64不支援 WSL1,因為 bubblewrap 需要僅在 WSL2 中可用的核心功能。

65 59 

66這些作業系統級別的限制確保由 Claude Code 命令產生的所有子流程都繼承相同的安全邊界。60<Warning>

61 預設情況下,如果沙箱因缺少依賴項或不支援的平台而無法啟動,Claude Code 會顯示警告並在沒有沙箱化的情況下執行命令。若要改為將其設為硬失敗,請將 [`sandbox.failIfUnavailable`](/zh-TW/settings#sandbox-settings) 設定為 `true`。這適用於需要沙箱化作為安全閘道的受管部署。

62</Warning>

67 63 

68## 入門64<h3 id="set-up-linux-and-wsl2">

65 設定 Linux 和 WSL2

66</h3>

69 67 

70### 先決條件68 Linux 和 WSL2 上,沙箱依賴於兩個套件:

71 69 

72**macOS** 沙箱化使用內建的 Seatbelt 框架開箱即用。70* [`bubblewrap`](https://github.com/containers/bubblewrap):無特權沙箱化工具強制執行檔案系統隔離

71* [`socat`](http://www.dest-unreach.org/socat/):用於通過沙箱代理路由網路流量的中繼

73 72 

74在 **Linux 和 WSL2** 上,首先安裝所需的套件73使用您發行版的套件管理器安裝它們

75 74 

76<Tabs>75<Tabs>

77 <Tab title="Ubuntu/Debian">76 <Tab title="Ubuntu/Debian">


87 </Tab>86 </Tab>

88</Tabs>87</Tabs>

89 88 

90WSL1 不支援沙箱化因為它缺少所需的 Linux 命名空間原語。如果您看到 `Sandboxing requires WSL2`,請將您的發行版升級到 WSL2 或在沒有沙箱化的情況下執行 Claude Code。89安裝後`/sandbox` 中的 Dependencies 標籤會顯示 `ripgrep`、`bubblewrap`、`socat` seccomp 過濾器是否在您的平台上可用。Ripgrep 與原生 Claude Code 二進位檔案一起打包seccomp 過濾器是可選的,增加 Unix 域套接字阻止。如果缺少,請使用 `npm install -g @anthropic-ai/sandbox-runtime` 安裝它。

91 90 

92在 WSL2 上沙箱化命令無法啟動 Windows 二進位檔案例如 `cmd.exe`、`powershell.exe` 或 `/mnt/c/` 下的任何內容WSL 通過 Unix socket 將這些交給 Windows 主機沙箱會阻止此操作。如果命令需要呼叫 Windows 二進位檔案請將其新增到 [`excludedCommands`](/zh-TW/settings#sandbox-settings),以便它在沙箱外執行91當缺少必需的依賴項時Dependencies 標籤是唯一顯示的標籤直到您安裝它依賴項檢查在啟動時執行因此在安裝套件後重新啟動 Claude Code以便 `/sandbox` 檢測到它們

93 92 

94### 啟用沙箱化93<AccordionGroup>

94 <Accordion title="Ubuntu 24.04 及更新版本:允許 bubblewrap 建立使用者命名空間">

95 在 Ubuntu 24.04 及更新版本上,預設 AppArmor 策略防止 bubblewrap 建立隔離所需的使用者命名空間。

95 96 

96您可以通過執行 `/sandbox` 命令來啟用沙箱化97 若要檢查您的環境(包括 WSL2 內)是否強制執行此限制,請執行 `sysctl kernel.apparmor_restrict_unprivileged_userns`。如果金鑰不存在或傳回 `0`,請跳過此步驟。如果傳回 `1`,請新增授予 `bwrap` 此功能的 AppArmor 設定檔

97 98 

98```text theme={null}99 ```bash theme={null}

99/sandbox100 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'

100```101 abi <abi/4.0>,

102 include <tunables/global>

103 

104 profile bwrap /usr/bin/bwrap flags=(unconfined) {

105 userns,

106 include if exists <local/bwrap>

107 }

108 EOF

109 ```

101 110 

102這會開啟一個選單,您可以在其中選擇沙箱模式。如果缺少所需的依賴項(例如 Linux 上的 `bubblewrap` 或 `socat`)選單會顯示您平台的安裝說明111 該設定檔僅適用於 `bwrap` 本身不適用於在沙箱內執行的命令重新載入 AppArmor 以應用它:

103 112 

104預設情況下,如果沙箱無法啟動(缺少依賴項或不支援的平台),Claude Code 會顯示警告並在沒有沙箱化的情況下運行命令。要改為將其設為硬失敗,請將 [`sandbox.failIfUnavailable`](/zh-TW/settings#sandbox-settings) 設定為 `true`。這適用於需要沙箱化作為安全閘道的受管部署。113 ```bash theme={null}

114 sudo systemctl reload apparmor

115 ```

116 </Accordion>

117 

118 <Accordion title="WSL2 注意事項">

119 使用 PowerShell 中的 `wsl -l -v` 檢查您的 WSL 版本。如果您看到 `Sandboxing requires WSL2`,您的發行版執行的是 WSL1。將其升級到 WSL2 或在沒有沙箱化的情況下執行 Claude Code。

105 120 

106### 沙箱模式121 WSL2 上,沙箱化命令無法啟動 Windows 二進位檔案,例如 `cmd.exe`、`powershell.exe` 或 `/mnt/c/` 下的任何內容。WSL 通過 Unix 套接字將這些交給 Windows 主機,沙箱會阻止此操作。如果命令需要呼叫 Windows 二進位檔案,請將其新增到 [`excludedCommands`](/zh-TW/settings#sandbox-settings),以便它在沙箱外執行。

122 </Accordion>

123</AccordionGroup>

124 

125<h3 id="sandbox-modes">

126 沙箱模式

127</h3>

107 128 

108Claude Code 提供兩種沙箱模式:129Claude Code 提供兩種沙箱模式:

109 130 

110**自動允許模式**:Bash 命令將嘗試在沙箱內運行,並自動允許而無需權限。無法沙箱化的命令(例如需要存取非允許主機的網路存取的命令)會回退到常規權限流程。明確拒絕規則始終被尊重而且針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` `rmdir` 命令仍然會觸發權限提示。詢問規則僅適用於回退到常規權限流程的命令131**自動允許模式**:Bash 命令將嘗試在沙箱內執行,並自動允許而無需權限。無法沙箱化的命令(例如需要存取非允許主機的網路存取的命令)會回退到常規權限流程,其中 Claude Code 檢查您的 [permission rules](/zh-TW/permissions) 並提示您進行這些規則不允許的任何命令

132 

133即使在自動允許模式中,以下仍然適用:

111 134 

112**常規權限模式**:所有 bash 命令都通過標準權限流程進行,即使沙箱化也是如此。這提供了更多控制,但需要更多批准。135* 明確的 [deny rules](/zh-TW/permissions) 始終被尊重

136* 針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發權限提示

137* [Ask rules](/zh-TW/permissions) 適用於回退到常規權限流程的命令

138 

139**常規權限模式**:所有 Bash 命令都通過常規權限流程進行,即使沙箱化也是如此。這提供了更多控制,但需要更多批准。

113 140 

114在兩種模式中,沙箱強制執行相同的檔案系統和網路限制。區別僅在於沙箱化命令是自動批准還是需要明確權限。141在兩種模式中,沙箱強制執行相同的檔案系統和網路限制。區別僅在於沙箱化命令是自動批准還是需要明確權限。

115 142 

143某些命令根本無法在沙箱內執行,例如與其不相容的工具或需要您未允許的主機的工具。與其讓任務失敗或要求您關閉沙箱化,Claude Code 包含一個逃生艙:當命令因沙箱限制而失敗時,Claude 分析失敗,可能使用 `dangerouslyDisableSandbox` 參數重試命令。重試的命令在沙箱外執行,因此它通過常規權限流程進行,需要您的批准。

144 

145您可以通過在 [sandbox settings](/zh-TW/settings#sandbox-settings) 中設定 `"allowUnsandboxedCommands": false` 來禁用此逃生艙。禁用時,`/sandbox` Overrides 標籤顯示為 **Strict sandbox mode**,`dangerouslyDisableSandbox` 參數被完全忽略,所有命令必須沙箱化執行或在 `excludedCommands` 中明確列出。

146 

116<Info>147<Info>

117 自動允許模式獨立於您的權限模式設定工作。即使您不在「接受編輯」模式中,當啟用自動允許時,沙箱化 bash 命令也會自動運行。這意味著在沙箱邊界內修改檔案的 bash 命令將執行而不提示,即使檔案編輯工具通常需要批准。148 自動允許模式獨立於您的權限模式設定工作。即使您不在「接受編輯」模式中,當啟用自動允許時,沙箱化 Bash 命令也會自動執行。這意味著在沙箱邊界內修改檔案的 Bash 命令將執行而不提示,即使檔案編輯工具通常需要批准。

118</Info>149</Info>

119 150 

120### 配置沙箱化151<h2 id="configure-sandboxing">

152 設定沙箱化

153</h2>

121 154 

122通過您的 `settings.json` 檔案自訂沙箱行為。有關完整配置參考,請參閱 [Settings](/zh-TW/settings#sandbox-settings)。155通過您的 `settings.json` 檔案自訂沙箱行為。請參閱 [Settings](/zh-TW/settings#sandbox-settings) 以了解完整的配置參考

123 

124#### 授予子流程對特定路徑的寫入存取

125 156 

126預設情況下,沙箱化命令只能寫入目前工作目錄。如果子流程命令(如 `kubectl`、`terraform` 或 `npm`)需要寫入專案目錄外,請使用 `sandbox.filesystem.allowWrite` 授予對特定路徑的存取:157預設情況下,沙箱化命令只能寫入目前工作目錄。如果子流程命令(如 `kubectl`、`terraform` 或 `npm`)需要寫入專案目錄外,請使用 `sandbox.filesystem.allowWrite` 授予對特定路徑的存取:

127 158 


136}167}

137```168```

138 169 

139這些路徑在作業系統級別強制執行,因此在沙箱內運行的所有命令(包括其子流程)都尊重它們。當工具需要對特定位置的寫入存取時,這是推薦的方法,而不是使用 `excludedCommands` 將工具排除在沙箱外。170這些路徑在作業系統級別強制執行,因此在沙箱內執行的所有命令(包括其子流程)都尊重它們。當工具需要對特定位置的寫入存取時,這是推薦的方法,而不是使用 `excludedCommands` 將工具排除在沙箱外。

140 171 

141當在多個 [settings scopes](/zh-TW/settings#settings-precedence) 中定義 `allowWrite`(或 `denyWrite`/`denyRead`/`allowRead`)時,陣列被**合併**這意味著來自每個範圍的路徑被組合,而不是被替換。例如,如果受管設定允許寫入 `/opt/company-tools`,而使用者在其個人設定中新增 `~/.kube`,則兩個路徑都包含在最終沙箱配置中。這意味著使用者和專案可以擴展清單而無需複製或覆蓋由更高優先級範圍設定的路徑。172當在多個 [settings scopes](/zh-TW/settings#settings-precedence) 中定義相同的檔案系統陣列時陣列被合併:來自每個範圍的路徑被組合,而不是被替換。

142 173 

143路徑前綴控制路徑的解析方式:174路徑前綴控制路徑的解析方式:

144 175 


148| `~/` | 相對於主目錄 | `~/.kube` 變成 `$HOME/.kube` |179| `~/` | 相對於主目錄 | `~/.kube` 變成 `$HOME/.kube` |

149| `./` 或無前綴 | 相對於專案設定的專案根目錄,或相對於 `~/.claude` 的使用者設定 | `.claude/settings.json` 中的 `./output` 解析為 `<project-root>/output` |180| `./` 或無前綴 | 相對於專案設定的專案根目錄,或相對於 `~/.claude` 的使用者設定 | `.claude/settings.json` 中的 `./output` 解析為 `<project-root>/output` |

150 181 

151較舊的 `//path` 前綴用於絕對路徑仍然有效。如果您之前使用單斜線 `/path` 期望專案相對解析,請切換到 `./path`。此語法與 [Read and Edit](/zh-TW/permissions#read-and-edit) 權限規則不同,後者使用 `//path` 表示絕對路徑,`/path` 表示專案相對路徑。沙箱檔案系統路徑使用標準慣例:`/tmp/build` 是絕對路徑。182此語法與 [Read and Edit permission rules](/zh-TW/permissions#read-and-edit) 不同,後者使用 `//path` 表示絕對路徑,`/path` 表示專案相對路徑。沙箱檔案系統路徑使用標準慣例:`/tmp/build` 是絕對路徑。

152 183 

153您也可以使用 `sandbox.filesystem.denyWrite` 和 `sandbox.filesystem.denyRead` 拒絕寫入或讀取存取。這些與來自 `Edit(...)` 和 `Read(...)` 權限規則的任何路徑合併。要重新允許讀取 `denyRead` 區域內的特定路徑請使用 `sandbox.filesystem.allowRead`,它優先於 `denyRead`。當在受管設定中啟用 `allowManagedReadPathsOnly` 時,只有受管 `allowRead` 項目被尊重;使用者、專案和本地 `allowRead` 項目被忽略。`denyRead` 仍然從所有來源合併184您也可以使用 `sandbox.filesystem.denyWrite` 和 `sandbox.filesystem.denyRead` 拒絕寫入或讀取存取,並使用 `sandbox.filesystem.allowRead` 重新允許讀取 `denyRead` 區域內的特定路徑

154 185 

155例如,要阻止從整個主目錄讀取,同時仍允許從目前專案讀取,請將此新增到您的專案的 `.claude/settings.json`:186下面的範例阻止從整個主目錄讀取,同時仍允許從目前專案讀取。將其放在您的專案的 `.claude/settings.json` 中,因為相對路徑 `.` 僅在配置位於專案設定中時才解析為專案根目錄

156 187 

157```json theme={null}188```json theme={null}

158{189{


168 199 

169`allowRead` 中的 `.` 解析為專案根目錄,因為此配置位於專案設定中。如果您將相同的配置放在 `~/.claude/settings.json` 中,`.` 將解析為 `~/.claude`,專案檔案將保持被 `denyRead` 規則阻止。200`allowRead` 中的 `.` 解析為專案根目錄,因為此配置位於專案設定中。如果您將相同的配置放在 `~/.claude/settings.json` 中,`.` 將解析為 `~/.claude`,專案檔案將保持被 `denyRead` 規則阻止。

170 201 

171<Tip>202<h2 id="how-sandboxing-works">

172 並非所有命令都與沙箱化開箱即用相容。一些可能幫助您充分利用沙箱的注意事項:203 沙箱化如何運作

204</h2>

173 205 

174 * 許多 CLI 工具需要存取某些主機。當您使用這些工具時,它們將請求權限以存取某些主機。授予權限將允許它們現在和將來存取這些主機,使它們能夠在沙箱內安全執行。206<h3 id="filesystem-isolation">

175 * `watchman` 與在沙箱中運行不相容。如果您正在執行 `jest`,請考慮使用 `jest --no-watchman`207 檔案系統隔離

176 * `docker` 與在沙箱中運行不相容。考慮在 `excludedCommands` 中指定 `docker *` 以強制其在沙箱外運行。208</h3>

177</Tip>

178 209 

179<Note>210沙箱化 Bash 工具將檔案系統存取限制在特定目錄:

180 Claude Code 包含一個有意的逃生艙機制,允許命令在必要時在沙箱外運行。當命令因沙箱限制而失敗時(例如網路連接問題或不相容的工具),Claude 會被提示分析失敗,並可能使用 `dangerouslyDisableSandbox` 參數重試命令。使用此參數的命令通過需要使用者權限執行的常規 Claude Code 權限流程進行。這允許 Claude Code 處理某些工具或網路操作無法在沙箱約束內運作的邊界情況。211 

212* **預設寫入行為**:對目前工作目錄及其子目錄的讀取和寫入存取

213* **預設讀取行為**:對整個電腦的讀取存取,除了某些被拒絕的目錄。請注意,此預設仍允許讀取認證檔案,例如 `~/.aws/credentials` 和 `~/.ssh/`。將它們新增到 `denyRead` 以阻止它們。

214* **被阻止的存取**:無法在沒有明確權限的情況下修改目前工作目錄外的檔案,包括 shell 配置檔案(例如 `~/.bashrc`)和 `/bin/` 中的系統二進位檔案

215* **Git worktrees**:當工作目錄是[連結的 git worktree](/zh-TW/worktrees) 時,沙箱也允許寫入主儲存庫的共享 `.git` 目錄,以便 `git commit` 等命令可以更新 refs 和索引。對該目錄內的 `hooks/` 和 `config` 的寫入仍然被拒絕。

216* **可配置**:通過設定定義自訂允許和拒絕的路徑

217 

218您可以使用設定中的 `sandbox.filesystem.allowWrite` 授予對其他路徑的寫入存取。這些限制在作業系統級別強制執行,因此它們適用於所有子流程命令,包括 `kubectl`、`terraform` 和 `npm` 等工具,而不僅僅是 Claude 的檔案工具。

181 219 

182 您可以通過在 [sandbox settings](/zh-TW/settings#sandbox-settings) 中設定 `"allowUnsandboxedCommands": false` 來禁用此逃生艙。禁用時,`dangerouslyDisableSandbox` 參數被完全忽略,所有命令必須沙箱化運行或在 `excludedCommands` 中明確列出。220<h3 id="network-isolation">

221 網路隔離

222</h3>

223 

224網路存取通過在沙箱外執行的代理伺服器進行控制:

225 

226* **域名限制**:沒有預先允許的域名。命令首次需要新的域名時,Claude Code 會提示批准。使用 [`allowedDomains`](/zh-TW/settings#sandbox-settings) 預先允許域名以避免提示。

227* **受管鎖定**:如果在受管設定中設定了 [`allowManagedDomainsOnly`](/zh-TW/settings#sandbox-settings),非允許的域名會自動被阻止而不是提示,只有來自受管設定的 `allowedDomains` 被尊重。

228* **自訂代理支援**:進階使用者可以在出站流量上實施自訂規則

229* **全面覆蓋**:限制適用於所有指令碼、程式和由命令產生的子流程

230 

231<Note>

232 內建代理根據請求的主機名強制執行允許清單,不終止或檢查 TLS 流量。請參閱 [Security limitations](#security-limitations) 了解此設計的含義,以及 [Custom proxy configuration](#custom-proxy-configuration) 如果您的威脅模型需要 TLS 檢查。

183</Note>233</Note>

184 234 

185## 安全優勢235<h3 id="os-level-enforcement">

236 作業系統級別的強制執行

237</h3>

186 238 

187### 防止提示注入239沙箱化 Bash 工具利用作業系統安全原語:

188 240 

189即使攻擊者通過提示注入成功操縱 Claude Code 的行為,沙箱也確保您的系統保持安全:241* **macOS**:使用 Seatbelt 進行沙箱強制執行

242* **Linux**:使用 [bubblewrap](https://github.com/containers/bubblewrap) 進行隔離

243* **WSL2**:使用 bubblewrap,與 Linux 相同

190 244 

191**檔案系統保護:**245不支援 WSL1,因為 bubblewrap 需要僅在 WSL2 中可用的核心功能。這些作業系統級別的限制確保由 Claude Code 命令產生的所有子流程都繼承相同的安全邊界。

192 246 

193* 無法修改關鍵配置檔案,如 `~/.bashrc`247這些相同的原語可作為獨立的 [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) 套件使用,[Sandbox environments](/zh-TW/sandbox-environments#sandbox-runtime) 頁面涵蓋作為包裝整個 Claude Code 流程的單獨方法。

194* 無法修改 `/bin/` 中的系統級檔案

195* 無法讀取在您的 [Claude 權限設定](/zh-TW/permissions#manage-permissions) 中被拒絕的檔案

196 248 

197**網路保護:**249<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">

250 沙箱化與權限和權限模式的關係

251</h2>

198 252 

199* 無法將資料洩露到攻擊者控制的伺服器253沙箱化、[permission rules](/zh-TW/permissions) 和 [permission modes](/zh-TW/permission-modes) 是互補的層。下面的部分涵蓋沙箱如何與每個互動。

200* 無法從未授權的域名下載惡意指令碼

201* 無法對未批准的服務進行意外的 API 呼叫

202* 無法聯繫任何未明確允許的域名

203 254 

204**監控和控制:**255<h3 id="permission-rules">

256 權限規則

257</h3>

205 258 

206* 所有在沙箱外的存取嘗試都在作業系統級別被阻止259權限規則和沙箱化控制不同的事物:

207* 當邊界被測試時,您會收到立即通知

208* 您可以選擇拒絕、允許一次或永久更新您的配置

209 260 

210### 減少攻擊面261* **權限規則**控制 Claude Code 可以使用哪些工具,並在任何工具執行之前進行評估。它們適用於所有工具:Bash、Read、Edit、WebFetch、MCP 和其他工具。

262* **沙箱化**提供作業系統級別的強制執行,限制 Bash 命令在檔案系統和網路級別可以存取的內容。它僅適用於 Bash 命令及其子流程。

211 263 

212沙箱化限制了以下可能造成的損害:264這兩層在強制執行方式上也有所不同。Claude Code 在命令執行之前根據命令字串評估權限決定,在自動模式中,還根據單獨分類器對命令是否安全的判斷。作業系統在執行流程上強制執行沙箱邊界,因此無論模型選擇執行什麼,它都成立,即使允許的命令執行的操作超出其名稱所示。

213 265 

214* **惡意依賴項**具有有害程式碼的 NPM 套件或其他依賴項266檔案系統和網路限制通過沙箱設定和權限規則進行配置

215* **受損指令碼**:具有安全漏洞的構建指令碼或工具

216* **社交工程**:欺騙使用者執行危險命令的攻擊

217* **提示注入**:欺騙 Claude 執行危險命令的攻擊

218 267 

219### 透明操作268| 設定或規則 | 它的作用 |

269| :------------------------------------------------------------- | :------------------------------------------------ |

270| `sandbox.filesystem.allowWrite` | 授予子流程對工作目錄外路徑的寫入存取 |

271| `sandbox.filesystem.denyWrite` 和 `sandbox.filesystem.denyRead` | 阻止子流程對特定路徑的存取 |

272| `sandbox.filesystem.allowRead` | 重新允許讀取 `denyRead` 區域內的特定路徑 |

273| `Edit` 允許規則 | 授予對特定路徑的寫入存取,與 `sandbox.filesystem.allowWrite` 相同 |

274| `Read` 和 `Edit` 拒絕規則 | 阻止對特定檔案或目錄的存取 |

275| `WebFetch` 允許和拒絕規則 | 控制域名存取 |

276| 沙箱 `allowedDomains` | 控制 Bash 命令可以到達的域名 |

277| 沙箱 `deniedDomains` | 阻止特定域名,即使更廣泛的 `allowedDomains` 萬用字元會允許它們 |

220 278 

221當 Claude Code 嘗試存取沙箱外的網路資源時:279來自 `sandbox.filesystem` 設定和權限規則的路徑被合併到最終沙箱配置中。

222 280 

2231. 操作在作業系統級別被阻止281[claude-code repository 的 examples 目錄](https://github.com/anthropics/claude-code/tree/main/examples/settings)包含常見部署場景的入門設定配置,包括沙箱特定的範例。使用這些作為起點,並根據您的需求進行調整。

2242. 您會收到立即通知

2253. 您可以選擇:

226 * 拒絕請求

227 * 允許一次

228 * 更新您的沙箱配置以永久允許它

229 282 

230## 安全限制283<h3 id="permission-modes">

284 權限模式

285</h3>

231 286 

232* 網路沙箱化限制:網路過濾系統通過限制流程允許連接的域名來運作它不會以其他方式檢查通過代理的流量使用者負責確保他們在其策略中只允許受信任的域名287`/sandbox` 不是 [permission mode](/zh-TW/permission-modes)權限模式決定工具呼叫是否執行以及您是否首先被提示而沙箱限制 Bash 命令執行後可以存取的內容它們在控制的內容和替換每個操作提示的內容上有所不同:

233 288 

234<Warning>289| | 它控制什麼 | 替換提示的內容 |

235 使用者應該意識到允許廣泛域名(如 `github.com`)可能帶來的潛在風險,這可能允許資料洩露。此外,在某些情況下,可能可以通過 [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) 繞過網路過濾。290| :-------------------------------------------------------------------- | :---------------- | :------------------------------------------------------------------------------------- |

236</Warning>291| `/sandbox` | Bash 命令執行後可以存取的內容 | 沙箱邊界本身,在 [auto-allow mode](#sandbox-modes) 中 |

292| [Auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) | 每個工具呼叫是否執行 | 檢查操作的分類器 |

293| `--dangerously-skip-permissions` | 每個工具呼叫是否執行 | 無。[Protected path](/zh-TW/permission-modes#protected-paths) 檢查也被跳過;只有移除 `/` 或您的主目錄仍然提示 |

237 294 

238* Unix 套接字特權提升:`allowUnixSockets` 配置可能會無意中授予對強大系統服務的存取,這可能導致沙箱繞過。例如,如果它用於允許存取 `/var/run/docker.sock`,這將有效地通過利用 docker 套接字授予對主機系統的存取鼓勵使用者仔細考慮他們通過沙箱允許的任何 unix 套接字295沙箱的 [auto-allow mode](#sandbox-modes) [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分開:自動允許批准 Bash 命令,因為沙箱邊界包含它們,而自動模式使用分類器檢查操作這兩個獨立工作,可以結合。若要為無人值守執行選擇隔離邊界,請參閱 [Sandbox environments](/zh-TW/sandbox-environments#how-isolation-relates-to-permission-modes)

239* 檔案系統權限提升:過於寬泛的檔案系統寫入權限可能導致特權提升攻擊。允許寫入包含 `$PATH` 中可執行檔案的目錄、系統配置目錄或使用者 shell 配置檔案(`.bashrc`、`.zshrc`)可能導致當其他使用者或系統流程存取這些檔案時在不同安全上下文中執行程式碼。

240* Linux 沙箱強度:Linux 實現提供強大的檔案系統和網路隔離,但包含一個 `enableWeakerNestedSandbox` 模式,使其能夠在 Docker 環境中工作而無需特權命名空間。此選項大大削弱了安全性,應僅在其他隔離被強制執行的情況下使用。

241 296 

242## 沙箱化與權限的關係297<h2 id="configure-the-sandbox-for-your-organization">

298 為您的組織設定沙箱

299</h2>

243 300 

244沙箱化和 [permissions](/zh-TW/permissions) 是協同工作的互補安全層:301管理員可以為每個使用者要求沙箱化,防止開發人員擴大策略,並通過公司代理路由沙箱流量。

245 302 

246* **權限**控制 Claude Code 可以使用哪些工具,並在任何工具運行之前進行評估。它們適用於所有工具:Bash、Read、Edit、WebFetch、MCP 和其他工具。303<h3 id="enforce-sandboxing-with-managed-settings">

247* **沙箱化**提供作業系統級別的強制執行,限制 Bash 命令在檔案系統和網路級別可以存取的內容。它僅適用於 Bash 命令及其子流程。304 使用受管設定強制執行沙箱化

305</h3>

248 306 

249檔案系統和網路限制通過沙箱設定和權限規則進行配置:307若要為每個開發人員要求沙箱,通過 [managed settings](/zh-TW/settings#settings-files) 傳遞 `sandbox` 金鑰,可以是由您的 MDM 管理的檔案,也可以是通過 Claude.ai 上的 [server-managed settings](/zh-TW/server-managed-settings)。

250 308 

251* 使用 `sandbox.filesystem.allowWrite` 授予子流程對工作目錄外路徑的寫入存取309以下受管設定配置啟用沙箱,如果沙箱無法初始化則拒絕啟動 Claude Code,並防止模型在沙箱外重試命令:

252* 使用 `sandbox.filesystem.denyWrite` 和 `sandbox.filesystem.denyRead` 阻止子流程對特定路徑的存取

253* 使用 `sandbox.filesystem.allowRead` 重新允許讀取 `denyRead` 區域內的特定路徑

254* 使用 `Read` 和 `Edit` 拒絕規則阻止對特定檔案或目錄的存取

255* 使用 `WebFetch` 允許/拒絕規則控制域名存取

256* 使用沙箱 `allowedDomains` 控制 Bash 命令可以到達的域名

257* 使用沙箱 `deniedDomains` 阻止特定域名,即使更廣泛的 `allowedDomains` 萬用字元會允許它們

258 310 

259來自 `sandbox.filesystem` 設定和權限規則的路徑被合併到最終沙箱配置中。311```json theme={null}

312{

313 "sandbox": {

314 "enabled": true,

315 "failIfUnavailable": true,

316 "allowUnsandboxedCommands": false

317 }

318}

319```

320 

321超過 `enabled` 的兩個金鑰控制沙箱無法執行命令時會發生什麼:

322 

323* **`failIfUnavailable`**:缺少的依賴項(例如 Linux 上的 bubblewrap)會阻止 Claude Code 啟動,而不是顯示警告並回退到未沙箱化執行

324* **`allowUnsandboxedCommands: false`**:`dangerouslyDisableSandbox` 逃生艙被忽略,因此在沙箱下失敗的命令無法在其外重試

325 

326值得考慮與它們一起的兩個補充。為任何必須在沒有隔離的情況下執行的組織批准的工具新增 `excludedCommands`。為認證目錄(例如 `~/.aws` 和 `~/.ssh`)新增 [`denyRead`](#filesystem-isolation) 項目,預設讀取策略仍允許這些。

327 

328沙箱不在原生 Windows 上執行,因此如果您的機隊包括 Windows 主機,請將此配置限制在 macOS 和 Linux,或讓這些使用者在 WSL2 或容器內執行 Claude Code。

260 329 

261 [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) 包含常見部署場景的入門設定配置,包括沙箱特定的範例。使用這些作為起點,並根據您的需求進行調整。330<h3 id="keep-developers-from-widening-the-policy">

331 防止開發人員擴大策略

332</h3>

262 333 

263## 進階用法334對於布林金鑰(例如 `enabled` 和 `failIfUnavailable`),Claude Code 使用受管值並忽略開發人員在本地設定的任何內容。對於陣列金鑰(例如 `excludedCommands` 和 `allowRead`),Claude Code 合併來自每個範圍的項目,因此開發人員可以附加擴大策略的項目。

264 335 

265### 自訂代理配置336在受管設定中將 `allowManagedReadPathsOnly` 設定為 `true`,以便只有來自受管設定的 `allowRead` 項目被尊重。使用者、專案和本地 `allowRead` 項目被忽略。這防止開發人員擴大讀取存取超過組織批准的路徑。若要以相同方式將網路域鎖定到受管值,請設定 [`allowManagedDomainsOnly`](/zh-TW/settings#sandbox-settings)。

337 

338`excludedCommands` 沒有等效的受管專用鎖定,因此開發人員總是可以附加在沙箱外執行其他命令的項目。保持受管清單狹窄。

339 

340<h3 id="custom-proxy-configuration">

341 自訂代理配置

342</h3>

266 343 

267對於需要進階網路安全的組織,您可以實施自訂代理以:344對於需要進階網路安全的組織,您可以實施自訂代理以:

268 345 


271* 記錄所有網路請求348* 記錄所有網路請求

272* 與現有安全基礎設施整合349* 與現有安全基礎設施整合

273 350 

351若要將 Claude Code 指向您的代理,請在 [sandbox settings](/zh-TW/settings#sandbox-settings) 中設定代理連接埠:

352 

274```json theme={null}353```json theme={null}

275{354{

276 "sandbox": {355 "sandbox": {


282}361}

283```362```

284 363 

285### 與現有安全工具的整合364<h2 id="troubleshooting">

365 故障排除

366</h2>

286 367 

287沙箱化 bash 工具與以下工具配合使用:368某些命令在沙箱內失敗,即使它們在沙箱外工作。下面的修復涵蓋最常見的情況。

288 369 

289* **權限規則**:與 [permission settings](/zh-TW/permissions) 結合以實現深度防禦370* **命令因主機不允許錯誤而失敗**:許多 CLI 工具需要到達特定主機。在提示時授予權限會將主機新增到您的允許清單,以便工具在將來在沙箱內執行。

290* **開發容器**: [dev containers](/zh-TW/devcontainer) 一起使用以獲得額外隔離371* **`jest` 掛起或失敗**:`watchman` 與沙箱不相容。改為執行 `jest --no-watchman`。

291* **企業策略**:通過 [managed settings](/zh-TW/settings#settings-precedence) 強制執行沙箱配置372* **Go 型 CLI 在 macOS 上 TLS 驗證失敗**:`gh`、`gcloud` `terraform` 等工具在 Seatbelt 下可能無法進行 TLS 驗證。在 `excludedCommands` 中列出這些工具以在沙箱外執行它們。如果您使用 `httpProxyPort` 與 MITM 代理和自訂 CA,請改為將 [`enableWeakerNetworkIsolation`](/zh-TW/settings#sandbox-settings) 設定為 `true`。

373* **`docker` 命令失敗**:`docker` 與沙箱不相容。將 `docker *` 新增到 `excludedCommands` 以在沙箱外執行它。

374* **Bubblewrap 在容器內啟動失敗**:在無特權容器中,bubblewrap 無法掛載新的 `/proc` 檔案系統。將 [`enableWeakerNestedSandbox`](/zh-TW/settings#sandbox-settings) 設定為 `true`,以便內部沙箱綁定掛載容器的現有 `/proc`。僅在外部容器已提供您需要的隔離邊界時使用此設定,因為它向沙箱化命令公開流程資訊,新的 `/proc` 掛載會隱藏。

375* **Linux 上的 Seccomp 過濾器**:seccomp 過濾器是阻止 Unix 域套接字所必需的。`/sandbox` 中的 Dependencies 標籤顯示它是否可用。如果缺少,請執行 `npm install -g @anthropic-ai/sandbox-runtime` 安裝幫助程式。

376* **`--dangerously-skip-permissions` 以 root 身份失敗**:在 Linux 和 macOS 上以 root 身份或通過 sudo 執行時,此旗標被阻止,因為 root 存取加上沒有權限提示可以修改系統上的任何檔案或服務。檢查在識別的沙箱內自動跳過。若要在容器中自主執行,請使用 [dev container](/zh-TW/devcontainer) 配置,它以非 root 使用者身份執行 Claude Code。

292 377 

293## 最佳實踐378<h2 id="limitations">

379 限制

380</h2>

294 381 

2951. **從限制性開始**:從最小權限開始根據需要擴展382沙箱化減少風險但不是完整的隔離邊界。在依賴它作為硬安全控制之前,請檢查下面的限制。

2962. **監控日誌**:檢查沙箱違規嘗試以了解 Claude Code 的需求

2973. **使用環境特定配置**:開發與生產環境的不同沙箱規則

2984. **與權限結合**:將沙箱化與 IAM 策略一起使用以實現全面安全

2995. **測試配置**:驗證您的沙箱設定不會阻止合法工作流程

300 383 

301## 開源384<h3 id="security-limitations">

385 安全限制

386</h3>

302 387 

303沙箱執行時可作為開源 npm 套件供您在自己的代理專案中使用這使更廣泛的 AI 代理社群能夠構建更安全、更安全的自主系統這也可以用於沙箱化您可能希望運行的其他程式例如,要沙箱化 MCP 伺服器,您可以執行:388* **網路過濾**:網路過濾系統通過限制流程允許連接的域名來運作內建代理不終止或對出站流量執行 TLS 檢查,因此加密連接的內容不被檢查您負責確保只有受信任的域名在您的策略中被允許

304 389 

305```bash theme={null}390<Warning>

306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>391 允許廣泛域名(例如 `github.com`)可能會為資料洩露建立路徑。因為代理根據用戶端提供的主機名進行允許決定而不檢查 TLS,在沙箱內執行的程式碼可能可以使用 [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) 或類似技術到達允許清單外的主機。如果您的威脅模型需要更強的保證,請配置 [custom proxy](#custom-proxy-configuration),它終止 TLS 並檢查流量,並在沙箱內安裝其 CA 憑證。更強的 TLS 感知網路隔離是一個活躍的開發領域。

307```392</Warning>

308 393 

309有關實現詳情和原始程式碼,請訪問 [GitHub repository](https://github.com/anthropic-experimental/sandbox-runtime)394* **通過 Unix 套接字的特權提升**:`allowUnixSockets` 配置可能會無意中授予對強大系統服務的存取,這可能導致沙箱繞過。例如,允許存取 `/var/run/docker.sock` 有效地通過 Docker 套接字授予對主機系統的存取仔細考慮您通過沙箱允許的任何 Unix 套接字。

395* **檔案系統權限提升**:過於寬泛的檔案系統寫入權限可能導致特權提升攻擊。允許寫入包含 `$PATH` 中可執行檔案的目錄、系統配置目錄或使用者 shell 配置檔案(例如 `.bashrc` 或 `.zshrc`)可能導致當其他使用者或系統流程存取這些檔案時在不同安全上下文中執行程式碼。

396* **Linux 沙箱強度**:Linux 實現提供強大的檔案系統和網路隔離,但包含一個 `enableWeakerNestedSandbox` 模式,使其能夠在 Docker 環境中工作而無需特權命名空間,或在 Linux 主機上禁用無特權使用者命名空間的情況下。此選項大大削弱了安全性,應僅在其他隔離被強制執行時使用。

397* **設定檔案受保護**:沙箱自動拒絕對 Claude Code 的 `settings.json` 檔案在每個範圍和受管設定目錄的寫入存取,因此沙箱化命令無法修改其自己的策略。

310 398 

311## 限制399<h3 id="platform-and-tool-compatibility">

400 平台和工具相容性

401</h3>

312 402 

313* **效能開銷**:最小,但某些檔案系統操作可能稍慢403* **平台支援**:支援 macOS、Linux 和 WSL2。不支援 WSL1 和原生 Windows。

314* **相容性**:某些需要特定系統存取模式的工具可能需要配置調整或甚至可能需要在沙箱外運行404* **效能開銷**:最小但某些檔案系統操作可能稍慢。

315* **平台支援**:支援 macOS、Linux 和 WSL2。不支援 WSL1。計劃提供原生 Windows 支援405* **工具相容性**:某些需要特定系統存取模式的工具可能需要配置調整,或可能需要在沙箱外執行

316 406 

317## 沙箱化不涵蓋的內容407<h3 id="scope">

408 範圍

409</h3>

318 410 

319沙箱隔離 Bash 子流程。其他工具在不同的邊界下運作:411沙箱隔離 Bash 子流程。其他工具在不同的邊界下運作:

320 412 

321* **內建檔案工具**:Read、Edit 和 Write 直接使用權限系統,而不是通過沙箱運行。請參閱 [permissions](/zh-TW/permissions)。413* **內建檔案工具**:Read、Edit 和 Write 直接使用權限系統,而不是通過沙箱執行。請參閱 [permissions](/zh-TW/permissions)。

322* **電腦使用**:當 Claude 打開應用程式並控制您的螢幕時,它在您的實際桌面上運行,而不是在隔離環境中。每個應用程式的權限提示控制每個應用程式。請參閱 [CLI 中的電腦使用](/zh-TW/computer-use) 或 [Desktop 中的電腦使用](/zh-TW/desktop#let-claude-use-your-computer)。414* **電腦使用**:當 Claude 打開應用程式並控制您的螢幕時,它在您的實際桌面上執行,而不是在隔離環境中。每個應用程式的權限提示控制每個應用程式。請參閱 [CLI 中的電腦使用](/zh-TW/computer-use) 或 [Desktop 中的電腦使用](/zh-TW/desktop#let-claude-use-your-computer)。

415* **環境變數**:沙箱化 Bash 命令預設繼承父流程環境,包括在那裡設定的任何認證。若要從子流程中去除 Anthropic 和雲端提供商認證,請設定 [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/zh-TW/env-vars)。

416* **子代理**:[subagents](/zh-TW/sub-agents) 在與父工作階段相同的流程中執行,並使用相同的沙箱配置。當在父工作階段中啟用沙箱化時,子代理內的 Bash 命令被沙箱化。

417 

418<Warning>

419 有效的沙箱化需要**同時**進行檔案系統和網路隔離。沒有網路隔離,受損的代理可能會洩露敏感檔案,如 SSH 金鑰。沒有檔案系統隔離,受損的代理可能會後門系統資源以獲得網路存取。當您擴大預設值時,檢查 `allowWrite` 路徑、廣泛的 `allowedDomains` 項目或 `excludedCommands` 例外是否不會撤銷另一側的限制。

420</Warning>

323 421 

324## 另請參閱422<h2 id="see-also">

423 另請參閱

424</h2>

325 425 

326* [Security](/zh-TW/security) - 全面的安全功能和最佳實踐426* [Sandbox environments](/zh-TW/sandbox-environments):比較內建沙箱與開發容器、容器和虛擬機

327* [Permissions](/zh-TW/permissions) - 權限配置和存取控制427* [Security](/zh-TW/security):全面的安全功能和最佳實踐

328* [Settings](/zh-TW/settings) - 完整配置參考428* [Permissions](/zh-TW/permissions):權限配置和存取控制

329* [CLI reference](/zh-TW/cli-reference) - 命令列選項429* [Settings](/zh-TW/settings):完整配置參考

430* [CLI reference](/zh-TW/cli-reference):命令列選項

scheduled-tasks.md +52 −18

Details

14 14 

15任務的範圍限於工作階段:它們存在於目前的對話中,當您啟動新的對話時就會停止。使用 `--resume` 或 `--continue` 繼續會恢復任何尚未[過期](#seven-day-expiry)的任務:在過去 7 天內建立的重複執行任務,或排程時間尚未到達的一次性任務。對於獨立於任何工作階段而存在的排程,請使用 [Routines](/zh-TW/routines) 在 Anthropic 管理的基礎設施上建立例行程序、設定 [Desktop 排程任務](/zh-TW/desktop-scheduled-tasks),或使用 [GitHub Actions](/zh-TW/github-actions)。15任務的範圍限於工作階段:它們存在於目前的對話中,當您啟動新的對話時就會停止。使用 `--resume` 或 `--continue` 繼續會恢復任何尚未[過期](#seven-day-expiry)的任務:在過去 7 天內建立的重複執行任務,或排程時間尚未到達的一次性任務。對於獨立於任何工作階段而存在的排程,請使用 [Routines](/zh-TW/routines) 在 Anthropic 管理的基礎設施上建立例行程序、設定 [Desktop 排程任務](/zh-TW/desktop-scheduled-tasks),或使用 [GitHub Actions](/zh-TW/github-actions)。

16 16 

17## 比較排程選項17<h2 id="compare-scheduling-options">

18 比較排程選項

19</h2>

18 20 

19Claude Code offers three ways to schedule recurring or one-off work:21Claude Code offers three ways to schedule recurring or one-off work:

20 22 


34 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.36 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

35</Tip>37</Tip>

36 38 

37## 使用 /loop 重複執行提示39<h2 id="run-a-prompt-repeatedly-with-/loop">

40 使用 /loop 重複執行提示

41</h2>

38 42 

39`/loop` [bundled skill](/zh-TW/commands) 是排程重複執行提示的最快方式,同時工作階段保持開啟。間隔和提示都是選用的,您提供的內容決定了迴圈的行為方式。43`/loop` [bundled skill](/zh-TW/commands) 是在工作階段保持開啟的情況下重複執行提示的最快方式。間隔和提示都是選用的,您提供的內容決定了迴圈的行為方式。

40 44 

41| 您提供的內容 | 範例 | 發生的情況 |45| 您提供的內容 | 範例 | 發生的情況 |

42| :----- | :-------------------------- | :------------------------------------------------------------------- |46| :----- | :-------------------------- | :------------------------------------------------------------------- |


44| 僅提示 | `/loop check the deploy` | 您的提示在 [Claude 選擇的間隔](#let-claude-choose-the-interval)上執行,每次迭代 |48| 僅提示 | `/loop check the deploy` | 您的提示在 [Claude 選擇的間隔](#let-claude-choose-the-interval)上執行,每次迭代 |

45| 僅間隔或無 | `/loop` | [內建維護提示](#run-the-built-in-maintenance-prompt)執行,或您的 `loop.md`(如果存在) |49| 僅間隔或無 | `/loop` | [內建維護提示](#run-the-built-in-maintenance-prompt)執行,或您的 `loop.md`(如果存在) |

46 50 

47您也可以傳遞另一個命令作為提示,例如 `/loop 20m /review-pr 1234`,以在每次迭代時重新執行打包的工作流程51您也可以傳遞另一個命令作為提示,例如 `/loop 20m /review-pr 1234`,以在每次迭代時重新執行已保存的工作流程或命令

48 52 

49### 在固定間隔上執行53<h3 id="run-on-a-fixed-interval">

54 在固定間隔上執行

55</h3>

50 56 

51當您提供間隔時,Claude 會將其轉換為 cron 表達式、排程工作,並確認頻率和工作 ID。57當您提供間隔時,Claude 會將其轉換為 cron 表達式、排程工作,並確認頻率和工作 ID。

52 58 


58 64 

59秒數會四捨五入到最近的分鐘,因為 cron 的粒度為一分鐘。不能均勻分割其單位的間隔(例如 `7m` 或 `90m`)會四捨五入到最近的整潔間隔,Claude 會告訴您它選擇了什麼。65秒數會四捨五入到最近的分鐘,因為 cron 的粒度為一分鐘。不能均勻分割其單位的間隔(例如 `7m` 或 `90m`)會四捨五入到最近的整潔間隔,Claude 會告訴您它選擇了什麼。

60 66 

61### 讓 Claude 選擇間隔67<h3 id="let-claude-choose-the-interval">

68 讓 Claude 選擇間隔

69</h3>

62 70 

63當您省略間隔時,Claude 會動態選擇一個,而不是在固定的 cron 排程上執行。在每次迭代後,它會根據觀察到的情況選擇一個介於一分鐘到一小時之間的延遲:在建置完成或 PR 活躍時短暫等待,當沒有待處理項目時較長等待。選擇的延遲和原因會在每次迭代結束時列印。71當您省略間隔時,Claude 會動態選擇一個,而不是在固定的 cron 排程上執行。在每次迭代後,它會根據觀察到的情況選擇一個介於一分鐘到一小時之間的延遲:在建置完成或 PR 活躍時短暫等待,當沒有待處理項目時較長等待。選擇的延遲和原因會在每次迭代結束時列印。

64 72 


76 在 Bedrock、Vertex AI 和 Microsoft Foundry 上,沒有間隔的提示會改為在固定的 10 分鐘排程上執行。84 在 Bedrock、Vertex AI 和 Microsoft Foundry 上,沒有間隔的提示會改為在固定的 10 分鐘排程上執行。

77</Note>85</Note>

78 86 

79### 執行內建維護提示87<h3 id="run-the-built-in-maintenance-prompt">

88 執行內建維護提示

89</h3>

80 90 

81當您省略提示時,Claude 會使用內建維護提示而不是您提供的提示。在每次迭代上,它會按順序進行以下操作:91當您省略提示時,Claude 會使用內建維護提示而不是您提供的提示。在每次迭代上,它會按順序進行以下操作:

82 92 


93裸 `/loop` 在[動態選擇的間隔](#let-claude-choose-the-interval)上執行此提示。新增間隔(例如 `/loop 15m`)以改為在固定排程上執行它。若要用您自己的預設值替換內建提示,請參閱[使用 loop.md 自訂預設提示](#customize-the-default-prompt-with-loop-md)。103裸 `/loop` 在[動態選擇的間隔](#let-claude-choose-the-interval)上執行此提示。新增間隔(例如 `/loop 15m`)以改為在固定排程上執行它。若要用您自己的預設值替換內建提示,請參閱[使用 loop.md 自訂預設提示](#customize-the-default-prompt-with-loop-md)。

94 104 

95<Note>105<Note>

96 在 Bedrock、Vertex AI 和 Microsoft Foundry 上,沒有提示的 `/loop` 會列印使用訊息,而不是啟動維護迴圈106 在 Bedrock、Vertex AI 和 Microsoft Foundry 上,沒有提示的 `/loop` 會列印使用訊息而不是執行維護提示

97</Note>107</Note>

98 108 

99### 使用 loop.md 自訂預設提示109<h3 id="customize-the-default-prompt-with-loop-md">

110 使用 loop.md 自訂預設提示

111</h3>

100 112 

101`loop.md` 檔案用您自己的指示替換內建維護提示。它為裸 `/loop` 定義單一預設提示,而不是單獨排程任務的清單,並且每當您在命令行上提供提示時都會被忽略。若要在其旁邊排程其他提示,請使用 `/loop <prompt>` 或[直接要求 Claude](#manage-scheduled-tasks)。113`loop.md` 檔案用您自己的指示替換內建維護提示。它為裸 `/loop` 定義單一預設提示,而不是單獨排程任務的清單,並且每當您在命令行上提供提示時都會被忽略。若要在其旁邊排程其他提示,請使用 `/loop <prompt>` 或[直接要求 Claude](#manage-scheduled-tasks)。

102 114 


118 130 

119對 `loop.md` 的編輯在下次迭代時生效,因此您可以在迴圈執行時精煉指示。當任一位置都不存在 `loop.md` 時,迴圈會回退到內建維護提示。保持檔案簡潔:超過 25,000 位元組的內容會被截斷。131對 `loop.md` 的編輯在下次迭代時生效,因此您可以在迴圈執行時精煉指示。當任一位置都不存在 `loop.md` 時,迴圈會回退到內建維護提示。保持檔案簡潔:超過 25,000 位元組的內容會被截斷。

120 132 

121### 停止迴圈133<Note>

134 在 Bedrock、Vertex AI 和 Microsoft Foundry 上,`loop.md` 不會被讀取,沒有提示的 `/loop` 會列印使用訊息。

135</Note>

136 

137<h3 id="stop-a-loop">

138 停止迴圈

139</h3>

122 140 

123若要在 `/loop` 等待下一次迭代時停止它,請按 `Esc`。這會清除待處理的喚醒,使迴圈不會再次執行。您透過[直接要求 Claude](#manage-scheduled-tasks) 排程的任務不受 `Esc` 影響,會保留在原位,直到您刪除它們。141若要在 `/loop` 等待下一次迭代時停止它,請按 `Esc`。這會清除待處理的喚醒,使迴圈不會再次執行。您透過[直接要求 Claude](#manage-scheduled-tasks) 排程的任務不受 `Esc` 影響,會保留在原位,直到您刪除它們。

124 142 

125在[自我調整模式](#let-claude-choose-the-interval)中,Claude 也可以在任務可證明完成後不排程下一次喚醒來自行結束迴圈。固定間隔上的迴圈會持續執行,直到您停止它們或[七天過去](#seven-day-expiry)。143在[自我調整模式](#let-claude-choose-the-interval)中,Claude 也可以在任務可證明完成後不排程下一次喚醒來自行結束迴圈。固定間隔上的迴圈會持續執行,直到您停止它們或[七天過去](#seven-day-expiry)。

126 144 

127## 設定一次性提醒145<h2 id="set-a-one-time-reminder">

146 設定一次性提醒

147</h2>

128 148 

129對於一次性提醒,請用自然語言描述您想要的內容,而不是使用 `/loop`。Claude 會排程一個執行後自動刪除的單次執行任務。149對於一次性提醒,請用自然語言描述您想要的內容,而不是使用 `/loop`。Claude 會排程一個執行後自動刪除的單次執行任務。

130 150 


138 158 

139Claude 會使用 cron 表達式將執行時間固定到特定的分鐘和小時,並確認何時執行。159Claude 會使用 cron 表達式將執行時間固定到特定的分鐘和小時,並確認何時執行。

140 160 

141## 管理排程任務161<h2 id="manage-scheduled-tasks">

162 管理排程任務

163</h2>

142 164 

143用自然語言要求 Claude 列出或取消任務,或直接參考基礎工具。165用自然語言要求 Claude 列出或取消任務,或直接參考基礎工具。

144 166 


160 182 

161每個排程任務都有一個 8 字元的 ID,您可以傳遞給 `CronDelete`。一個工作階段最多可以同時保存 50 個排程任務。183每個排程任務都有一個 8 字元的 ID,您可以傳遞給 `CronDelete`。一個工作階段最多可以同時保存 50 個排程任務。

162 184 

163## 排程任務如何執行185<h2 id="how-scheduled-tasks-run">

186 排程任務如何執行

187</h2>

164 188 

165排程器每秒檢查一次到期的任務,並以低優先級將其加入佇列。排程的提示在您的回合之間執行,而不是在 Claude 正在回應時執行。如果 Claude 在任務到期時忙碌,提示會等到目前回合結束。189排程器每秒檢查一次到期的任務,並以低優先級將其加入佇列。排程的提示在您的回合之間執行,而不是在 Claude 正在回應時執行。如果 Claude 在任務到期時忙碌,提示會等到目前回合結束。

166 190 

167所有時間都以您的本地時區解釋。cron 表達式(例如 `0 9 * * *`)表示您執行 Claude Code 的任何地方的上午 9 點,而不是 UTC。191所有時間都以您的本地時區解釋。cron 表達式(例如 `0 9 * * *`)表示您執行 Claude Code 的任何地方的上午 9 點,而不是 UTC。

168 192 

169### 抖動193<h3 id="jitter">

194 抖動

195</h3>

170 196 

171為了避免每個工作階段在同一牆上時刻點擊 API,排程器會為執行時間添加一個確定性偏移:197為了避免每個工作階段在同一牆上時刻點擊 API,排程器會為執行時間添加一個確定性偏移:

172 198 


175 201 

176偏移是從任務 ID 衍生的,所以相同的任務總是獲得相同的偏移。如果精確計時很重要,請選擇不是 `:00` 或 `:30` 的分鐘,例如 `3 9 * * *` 而不是 `0 9 * * *`,一次性抖動將不適用。202偏移是從任務 ID 衍生的,所以相同的任務總是獲得相同的偏移。如果精確計時很重要,請選擇不是 `:00` 或 `:30` 的分鐘,例如 `3 9 * * *` 而不是 `0 9 * * *`,一次性抖動將不適用。

177 203 

178### 七天過期204<h3 id="seven-day-expiry">

205 七天過期

206</h3>

179 207 

180重複執行的任務在建立後 7 天自動過期。任務最後執行一次,然後刪除自己。這限制了被遺忘的迴圈可以執行多長時間。如果您需要重複執行的任務持續更長時間,請在過期前取消並重新建立它,或使用 [Routines](/zh-TW/routines) 或 [Desktop 排程任務](/zh-TW/desktop-scheduled-tasks) 進行持久排程。208重複執行的任務在建立後 7 天自動過期。任務最後執行一次,然後刪除自己。這限制了被遺忘的迴圈可以執行多長時間。如果您需要重複執行的任務持續更長時間,請在過期前取消並重新建立它,或使用 [Routines](/zh-TW/routines) 或 [Desktop 排程任務](/zh-TW/desktop-scheduled-tasks) 進行持久排程。

181 209 

182## Cron 表達式參考210<h2 id="cron-expression-reference">

211 Cron 表達式參考

212</h2>

183 213 

184`CronCreate` 接受標準 5 欄位 cron 表達式:`minute hour day-of-month month day-of-week`。所有欄位都支援萬用字元 (`*`)、單一值 (`5`)、步驟 (`*/15`)、範圍 (`1-5`) 和逗號分隔的清單 (`1,15,30`)。214`CronCreate` 接受標準 5 欄位 cron 表達式:`minute hour day-of-month month day-of-week`。所有欄位都支援萬用字元 (`*`)、單一值 (`5`)、步驟 (`*/15`)、範圍 (`1-5`) 和逗號分隔的清單 (`1,15,30`)。

185 215 


196 226 

197當月份日期和星期幾都受到限制時,如果任一欄位匹配,日期就匹配。這遵循標準 vixie-cron 語義。227當月份日期和星期幾都受到限制時,如果任一欄位匹配,日期就匹配。這遵循標準 vixie-cron 語義。

198 228 

199## 停用排程任務229<h2 id="disable-scheduled-tasks">

230 停用排程任務

231</h2>

200 232 

201在您的環境中設定 `CLAUDE_CODE_DISABLE_CRON=1` 以完全停用排程器。cron 工具和 `/loop` 變得不可用,任何已排程的任務都停止執行。請參閱 [環境變數](/zh-TW/env-vars) 以取得完整的停用標誌清單。233在您的環境中設定 `CLAUDE_CODE_DISABLE_CRON=1` 以完全停用排程器。cron 工具和 `/loop` 變得不可用,任何已排程的任務都停止執行。請參閱 [環境變數](/zh-TW/env-vars) 以取得完整的停用標誌清單。

202 234 

203## 限制235<h2 id="limitations">

236 限制

237</h2>

204 238 

205工作階段範圍的排程有固有的限制:239工作階段範圍的排程有固有的限制:

206 240 

security.md +59 −23

Details

6 6 

7> 了解 Claude Code 的安全防護措施和安全使用的最佳實踐。7> 了解 Claude Code 的安全防護措施和安全使用的最佳實踐。

8 8 

9## 我們如何處理安全性9<h2 id="how-we-approach-security">

10 我們如何處理安全性

11</h2>

10 12 

11### 安全基礎13<h3 id="security-foundation">

14 安全基礎

15</h3>

12 16 

13您的程式碼安全至關重要。Claude Code 以安全為核心進行構建,按照 Anthropic 的全面安全計畫開發。在 [Anthropic Trust Center](https://trust.anthropic.com) 了解更多資訊並存取資源(SOC 2 Type 2 報告、ISO 27001 證書等)。17您的程式碼安全至關重要。Claude Code 以安全為核心進行構建,按照 Anthropic 的全面安全計畫開發。在 [Anthropic Trust Center](https://trust.anthropic.com) 了解更多資訊並存取資源(SOC 2 Type 2 報告、ISO 27001 證書等)。

14 18 

15### 基於權限的架構19<h3 id="permission-based-architecture">

20 基於權限的架構

21</h3>

16 22 

17Claude Code 預設使用嚴格的唯讀權限。當需要額外操作時(編輯檔案、執行測試、執行命令),Claude Code 會請求明確的權限。使用者可以控制是否批准一次性操作或自動允許操作。23Claude Code 預設使用嚴格的唯讀權限。當需要額外操作時(編輯檔案、執行測試、執行命令),Claude Code 會請求明確的權限。使用者可以控制是否批准一次性操作或自動允許操作。

18 24 


20 26 

21有關詳細的權限配置,請參閱 [Permissions](/zh-TW/permissions)。27有關詳細的權限配置,請參閱 [Permissions](/zh-TW/permissions)。

22 28 

23### 內建保護29<h3 id="built-in-protections">

30 內建保護

31</h3>

24 32 

25為了降低代理系統中的風險:33為了降低代理系統中的風險:

26 34 


29* **提示疲勞緩解**:支援按使用者、按程式碼庫或按組織允許列表常用的安全命令37* **提示疲勞緩解**:支援按使用者、按程式碼庫或按組織允許列表常用的安全命令

30* **Accept Edits 模式**:自動批准檔案編輯和一組固定的檔案系統 Bash 命令,如 `mkdir`、`touch`、`rm`、`mv`、`cp` 和 `sed`,適用於工作目錄中的路徑。其他 Bash 命令和超出範圍的路徑仍會提示38* **Accept Edits 模式**:自動批准檔案編輯和一組固定的檔案系統 Bash 命令,如 `mkdir`、`touch`、`rm`、`mv`、`cp` 和 `sed`,適用於工作目錄中的路徑。其他 Bash 命令和超出範圍的路徑仍會提示

31 39 

32### 使用者責任40<h3 id="user-responsibility">

41 使用者責任

42</h3>

33 43 

34Claude Code 只擁有您授予它的權限。您負責在批准前審查建議的程式碼和命令的安全性。44Claude Code 只擁有您授予它的權限。您負責在批准前審查建議的程式碼和命令的安全性。

35 45 

36## 防止提示注入46<h2 id="protect-against-prompt-injection">

47 防止提示注入

48</h2>

37 49 

38提示注入是一種技術,攻擊者試圖通過插入惡意文本來覆蓋或操縱 AI 助手的指令。Claude Code 包括針對這些攻擊的多項防護措施:50提示注入是一種技術,攻擊者試圖通過插入惡意文本來覆蓋或操縱 AI 助手的指令。Claude Code 包括針對這些攻擊的多項防護措施:

39 51 

40### 核心保護52<h3 id="core-protections">

53 核心保護

54</h3>

41 55 

42* **權限系統**:敏感操作需要明確批准56* **權限系統**:敏感操作需要明確批准

43* **上下文感知分析**:通過分析完整請求來檢測潛在有害的指令57* **上下文感知分析**:通過分析完整請求來檢測潛在有害的指令

44* **輸入淨化**:通過處理使用者輸入來防止命令注入58* **輸入淨化**:通過處理使用者輸入來防止命令注入

45* **命令黑名單**:預設阻止從網路獲取任意內容的風險命令,如 `curl` 和 `wget`。明確允許時,請注意 [permission pattern limitations](/zh-TW/permissions#tool-specific-permission-rules)59* **命令黑名單**:預設阻止從網路獲取任意內容的風險命令,如 `curl` 和 `wget`。明確允許時,請注意 [permission pattern limitations](/zh-TW/permissions#tool-specific-permission-rules)

46 60 

47### 隱私保護61<h3 id="privacy-safeguards">

62 隱私保護

63</h3>

48 64 

49我們實施了多項保護措施來保護您的資料,包括:65我們實施了多項保護措施來保護您的資料,包括:

50 66 


54 70 

55有關完整詳情,請查閱我們的 [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms)(適用於 Team、Enterprise 和 API 使用者)或 [Consumer Terms](https://www.anthropic.com/legal/consumer-terms)(適用於 Free、Pro 和 Max 使用者)以及 [Privacy Policy](https://www.anthropic.com/legal/privacy)。71有關完整詳情,請查閱我們的 [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms)(適用於 Team、Enterprise 和 API 使用者)或 [Consumer Terms](https://www.anthropic.com/legal/consumer-terms)(適用於 Free、Pro 和 Max 使用者)以及 [Privacy Policy](https://www.anthropic.com/legal/privacy)。

56 72 

57### 額外保護措施73<h3 id="additional-safeguards">

74 額外保護措施

75</h3>

58 76 

59* **網路請求批准**:進行網路請求的工具預設需要使用者批准77* **網路請求批准**:進行網路請求的工具預設需要使用者批准

60* **隔離的上下文視窗**:Web fetch 使用單獨的上下文視窗以避免注入潛在的惡意提示78* **隔離的上下文視窗**:Web fetch 使用單獨的上下文視窗以避免注入潛在的惡意提示


82 雖然這些保護措施大大降低了風險,但沒有任何系統完全免疫所有攻擊。在使用任何 AI 工具時,始終保持良好的安全實踐。100 雖然這些保護措施大大降低了風險,但沒有任何系統完全免疫所有攻擊。在使用任何 AI 工具時,始終保持良好的安全實踐。

83</Warning>101</Warning>

84 102 

85## MCP 安全性103<h2 id="mcp-security">

104 MCP 安全性

105</h2>

86 106 

87Claude Code 允許使用者配置 Model Context Protocol (MCP) servers。允許的 MCP servers 列表在您的原始程式碼中配置,作為 Claude Code 設定的一部分,工程師將其簽入原始碼控制。107Claude Code 允許使用者配置 Model Context Protocol (MCP) servers。允許的 MCP servers 列表在您的原始程式碼中配置,作為 Claude Code 設定的一部分,工程師將其簽入原始碼控制。

88 108 

89我們鼓勵編寫您自己的 MCP servers 或使用來自您信任的提供者的 MCP servers。您能夠為 MCP servers 配置 Claude Code 權限。Anthropic 在將連接器新增至 [Anthropic Directory](https://claude.ai/directory) 之前,會根據其 [列表標準](https://claude.com/docs/connectors/building/review-criteria) 審查連接器,但不會對任何 MCP server 進行安全審計或管理。109我們鼓勵編寫您自己的 MCP servers 或使用來自您信任的提供者的 MCP servers。您能夠為 MCP servers 配置 Claude Code 權限。Anthropic 在將連接器新增至 [Anthropic Directory](https://claude.ai/directory) 之前,會根據其 [列表標準](https://claude.com/docs/connectors/building/review-criteria) 審查連接器,但不會對任何 MCP server 進行安全審計或管理。

90 110 

91## IDE 安全性111<h2 id="ide-security">

112 IDE 安全性

113</h2>

92 114 

93有關在 IDE 中執行 Claude Code 的更多資訊,請參閱 [VS Code security and privacy](/zh-TW/vs-code#security-and-privacy)。115有關在 IDE 中執行 Claude Code 的更多資訊,請參閱 [VS Code security and privacy](/zh-TW/vs-code#security-and-privacy)。

94 116 

95## 雲端執行安全性117<h2 id="cloud-execution-security">

118 雲端執行安全性

119</h2>

96 120 

97使用 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 時,會實施額外的安全控制:121使用 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 時,會實施額外的安全控制:

98 122 


107 131 

108[Remote Control](/zh-TW/remote-control) 會話的工作方式不同:網路介面連接到在您本地機器上執行的 Claude Code 程序。所有程式碼執行和檔案存取保持本地,任何本地 Claude Code 會話期間流動的相同資料通過 TLS 上的 Anthropic API 傳輸。不涉及雲端 VM 或沙箱化。連接使用多個短期、範圍狹窄的認證,每個認證限制於特定目的並獨立過期,以限制任何單一洩露認證的影響範圍。132[Remote Control](/zh-TW/remote-control) 會話的工作方式不同:網路介面連接到在您本地機器上執行的 Claude Code 程序。所有程式碼執行和檔案存取保持本地,任何本地 Claude Code 會話期間流動的相同資料通過 TLS 上的 Anthropic API 傳輸。不涉及雲端 VM 或沙箱化。連接使用多個短期、範圍狹窄的認證,每個認證限制於特定目的並獨立過期,以限制任何單一洩露認證的影響範圍。

109 133 

110## 安全最佳實踐134<h2 id="security-best-practices">

135 安全最佳實踐

136</h2>

111 137 

112### 使用敏感程式碼138<h3 id="working-with-sensitive-code">

139 使用敏感程式碼

140</h3>

113 141 

114* 在批准前審查所有建議的更改142* 在批准前審查所有建議的更改

115* 為敏感儲存庫使用專案特定的權限設定143* 為敏感儲存庫使用專案特定的權限設定

116* 考慮使用 [dev containers](/zh-TW/devcontainer) 以獲得額外隔離144* 考慮使用 [dev containers](/zh-TW/devcontainer) 以獲得額外隔離

117* 使用 `/permissions` 定期審計您的權限設定145* 使用 `/permissions` 定期審計您的權限設定

118 146 

119### 團隊安全性147<h3 id="team-security">

148 團隊安全性

149</h3>

120 150 

121* 使用 [managed settings](/zh-TW/settings#settings-files) 強制執行組織標準151* 使用 [managed settings](/zh-TW/settings#settings-files) 強制執行組織標準

122* 通過版本控制共享已批准的權限配置152* 通過版本控制共享已批准的權限配置


124* 通過 [OpenTelemetry metrics](/zh-TW/monitoring-usage) 監控 Claude Code 使用情況154* 通過 [OpenTelemetry metrics](/zh-TW/monitoring-usage) 監控 Claude Code 使用情況

125* 使用 [`ConfigChange` hooks](/zh-TW/hooks#configchange) 審計或阻止會話期間的設定更改155* 使用 [`ConfigChange` hooks](/zh-TW/hooks#configchange) 審計或阻止會話期間的設定更改

126 156 

127### 報告安全問題157<h3 id="reporting-security-issues">

158 報告安全問題

159</h3>

128 160 

129如果您在 Claude Code 中發現安全漏洞:161如果您在 Claude Code 中發現安全漏洞:

130 162 


1333. 包括詳細的重現步驟1653. 包括詳細的重現步驟

1344. 在公開披露前留出時間讓我們解決問題1664. 在公開披露前留出時間讓我們解決問題

135 167 

136## 相關資源168<h2 id="related-resources">

137 169 相關資源

138* [Sandboxing](/zh-TW/sandboxing) - bash 命令的檔案系統和網路隔離170</h2>

139* [Permissions](/zh-TW/permissions) - 配置權限和存取控制171 

140* [Monitoring usage](/zh-TW/monitoring-usage) - 追蹤和審計 Claude Code 活動172* [Security guidance plugin](/zh-TW/security-guidance):讓 Claude 在會話期間審查並修復其自身程式碼變更中的漏洞

141* [Development containers](/zh-TW/devcontainer) - 安全、隔離的環境173* [Sandbox environments](/zh-TW/sandbox-environments):比較隔離方法並為您的威脅模型選擇一個

142* [Anthropic Trust Center](https://trust.anthropic.com) - 安全認證和合規性174* [Sandboxing](/zh-TW/sandboxing):Bash 命令的檔案系統和網路隔離

175* [Permissions](/zh-TW/permissions):配置權限和存取控制

176* [Monitoring usage](/zh-TW/monitoring-usage):追蹤和審計 Claude Code 活動

177* [Development containers](/zh-TW/devcontainer):安全、隔離的環境

178* [Anthropic Trust Center](https://trust.anthropic.com):安全認證和合規性

security-guidance.md +239 −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 編寫程式碼時捕捉安全問題

6 

7> 安裝 security-guidance 外掛程式,讓 Claude 檢查自己的程式碼變更是否存在漏洞,並在同一個工作階段中修復它們。

8 

9security-guidance 外掛程式讓 Claude 在工作時檢查自己的程式碼變更是否存在常見漏洞,並在同一個工作階段中修復發現的問題。該外掛程式可以捕捉注入、不安全的反序列化和不安全的 DOM API 等問題,防止程式碼進入拉取請求,減少人工審查人員的安全審查負擔。

10 

11安裝後,外掛程式會自動執行。無需調用任何內容,也無需記住任何單獨的命令。

12 

13該外掛程式是 [Code Review](/zh-TW/code-review) 的工作階段內伴侶,Code Review 在拉取請求上執行。此外掛程式減少了進入 PR 的內容。Code Review 捕捉遺漏的內容。有關外掛程式如何與按需審查和 CI 掃描分層的信息,請參閱 [此功能如何與其他安全工具配合](#此功能如何與其他安全工具配合)。

14 

15## 先決條件

16 

17* Claude Code CLI 版本 2.1.144 或更高版本

18* Python 3.8 或更高版本在您的 `PATH` 上。該外掛程式會依次嘗試 `python3`、`python` 和 `py -3`

19* 您工作目錄的 git 儲存庫。端回合和提交審查會針對 git 狀態進行 diff,並在儲存庫外無聲跳過。每個編輯的模式檢查在任何地方都有效

20 

21首次執行時,外掛程式會在 `~/.claude/security/` 下建立虛擬環境,並將 Claude Agent SDK 安裝到其中,這需要 `pip` 和網路存取。如果該安裝失敗,提交審查會回退到單次審查而不是代理審查。在 Windows 上,虛擬環境步驟會被跳過,因此代理提交審查僅在 `claude-agent-sdk` 已經可導入時執行,否則以相同方式回退。

22 

23## 安裝外掛程式

24 

25在 Claude Code 工作階段中,從 [官方 Anthropic 市場](/zh-TW/discover-plugins#official-anthropic-marketplace) 安裝:

26 

27```text theme={null}

28/plugin install security-guidance@claude-plugins-official

29```

30 

31安裝會提示您選擇範圍。選擇使用者範圍以將外掛程式寫入您的使用者設定,這樣它會在您在此機器上啟動的每個新本地工作階段中載入。如果 Claude Code 報告找不到市場,請先執行 `/plugin marketplace add anthropics/claude-plugins-official`,然後重試安裝。

32 

33然後在當前工作階段中啟用它,使用 `/reload-plugins`,它會應用待處理的外掛程式變更而無需重新啟動:

34 

35```text theme={null}

36/reload-plugins

37```

38 

39### 在雲端工作階段和共享儲存庫中啟用

40 

41使用者範圍的外掛程式不會進入 [網路上的 Claude Code](/zh-TW/claude-code-on-the-web),因為這些工作階段在 Anthropic 基礎設施上執行,而不是在您的機器上。要在那裡啟用外掛程式,或為克隆儲存庫的所有人開啟它,請在專案的簽入設定中聲明它:

42 

43```json .claude/settings.json theme={null}

44{

45 "enabledPlugins": {

46 "security-guidance@claude-plugins-official": true

47 }

48}

49```

50 

51管理員可以通過在 [受管設定](/zh-TW/admin-setup) 中設定 [`enabledPlugins`](/zh-TW/settings#plugin-settings) 來組織範圍內啟用外掛程式。

52 

53## 外掛程式檢查的內容

54 

55外掛程式在三個點檢查 Claude 的工作,每個點的深度不同:

56 

57* [在每個檔案編輯上](#在每個檔案編輯上):快速模式匹配危險呼叫,無需模型呼叫

58* [在每個回合結束時](#在每個回合結束時):對該回合更改的所有內容進行背景模型審查

59* [在 Claude 進行的每次提交或推送上](#在-claude-進行的每次提交或推送上):讀取周圍程式碼的更深層代理審查

60 

61您可以通過 [添加自己的規則](#添加自己的規則) 擴展每一層。內置檢查無法單獨移除,但您可以 [獨立禁用每一層](#禁用或卸載)。

62 

63### 在每個檔案編輯上

64 

65當 Claude 寫入檔案時,外掛程式會掃描新內容中的已知危險模式。這是一個沒有模型呼叫的模式匹配,因此不會增加使用成本。

66 

67示例模式類別:

68 

69* 動態程式碼執行:`eval(`、`new Function`、`os.system`、`child_process.exec`

70* 不安全的反序列化:`pickle`

71* DOM 注入:`dangerouslySetInnerHTML`、`.innerHTML =`、`document.write`

72* 工作流檔案:`.github/workflows/` 下的編輯,可以授予儲存庫級別的權限

73 

74檢查在編輯完成後執行,並將警告附加到 Claude 的下一步上下文中。每個警告在每個工作階段中每個檔案每個模式觸發一次,因此同一檔案中的重複匹配不會淹沒對話。

75 

76您可以使用 `security-patterns.yaml` 檔案 [添加自己的模式](#添加自訂的每個編輯模式) 到此層。

77 

78### 在每個回合結束時

79 

80一個回合是 Claude 響應的一輪:您發送一條消息,Claude 工作並回覆,回合結束。在每個回合之後,外掛程式計算工作樹中在回合期間更改的所有內容的 git diff,包括來自 Claude 的編輯工具、Bash 命令和子代理的更改,並將其發送到專注於安全的單獨 Claude 審查。審查在背景中執行,因此 Claude 的回覆不會延遲。如果審查發現問題,Claude 會被重新提示發現的內容,並作為後續行動解決它們。

81 

82這捕捉了字符串匹配無法捕捉的問題,例如:

83 

84* 授權繞過

85* 不安全的直接物件參考

86* 注入

87* 伺服器端請求偽造

88* 弱密碼學

89 

90您可以直接在您的工作階段中看到發現和 Claude 的解決方案。審查涵蓋每個回合最多 30 個更改的檔案,並在最多連續三次後才讓位給您。

91 

92### 在 Claude 進行的每次提交或推送上

93 

94當 Claude 通過其 Bash 工具執行 `git commit` 或 `git push` 時,外掛程式在背景中執行對變更的更深層代理審查。此審查讀取周圍程式碼,包括呼叫者、清理程式和相關檔案,以決定發現是否真實,然後再報告它。額外的上下文使假陽性在看起來危險但在您的程式碼庫中安全的模式上保持低位。

95 

96此層僅在 Claude 通過其 Bash 工具進行的提交和推送上觸發。您從自己的 shell 執行的提交,包括工作階段內的 `!` shell 逃逸,不會被審查。提交和推送審查限制為每滾動小時 20 次。如果提交審查的發現重複了端回合審查已經報告的內容,Claude 不會被重新提示,因此乾淨的提交不會從此層產生可見的輸出。

97 

98### 審查獨立性和限制

99 

100外掛程式不會要求編寫程式碼的同一 Claude 實例對自己進行評分。每個編輯檢查是一個確定性的字符串匹配,不涉及模型。端回合和提交審查作為單獨的 Claude 呼叫執行,具有新鮮的上下文和安全聚焦的提示:審查者從 diff 開始,對原始方法沒有投資,並且僅被指示查找問題。

101 

102沒有任何層阻止寫入或提交。發現作為指令到達編寫 Claude,Claude 在對話中解決它們,審查模型可能會遺漏問題。將外掛程式視為深度防禦的一層,而不是完整的安全解決方案。請參閱 [此功能如何與其他安全工具配合](#此功能如何與其他安全工具配合)。

103 

104## 添加自己的規則

105 

106外掛程式有兩個擴展點:用於模型支持的審查的 Markdown 指導檔案,以及用於每個編輯字符串匹配的 YAML 或 JSON 模式檔案。兩者都是附加的。您可以添加檢查,但無法從這些檔案中禁用內置檢查。

107 

108### 為模型支持的審查添加指導

109 

110在您的專案中建立 `.claude/claude-security-guidance.md`,並用純文字描述您的威脅模型和審查清單。模型支持的審查將其作為附加上下文與內置漏洞清單一起載入。

111 

112以下示例適用於具有角色門控管理員路由和客戶資料日誌記錄政策的網路服務:

113 

114```markdown .claude/claude-security-guidance.md theme={null}

115# 此儲存庫的安全指導

116 

117- 不要在 INFO 級別或更高級別記錄 `customer_id` 或 `account_number`。

118- `/admin` 下的所有路由必須在任何資料庫讀取之前呼叫 `require_role("admin")`。

119- 使用 `crypto.timingSafeEqual` 進行令牌比較,而不是 `===`。

120```

121 

122這些規則是審查者的指導,而不是確定性的護欄。外掛程式將違規作為發現呈現給 Claude 修復,但它不會阻止寫入或保證捕捉每個違規。指導是附加的:說要忽略漏洞類別的規則不會抑制這些發現。對於硬執行,將外掛程式與 [阻止編輯受保護檔案的鉤子](/zh-TW/hooks-guide#block-edits-to-protected-files) 或 CI 檢查配對。

123 

124### 添加自訂的每個編輯模式

125 

126建立 `.claude/security-patterns.yaml` 以將 regex 或子字符串規則添加到 [每個編輯模式檢查](#在每個檔案編輯上)。這些作為確定性字符串匹配與內置模式一起執行:

127 

128```yaml .claude/security-patterns.yaml theme={null}

129patterns:

130 - rule_name: internal_api_key

131 substrings: ["sk_live_", "AKIA"]

132 reminder: "硬編碼的 API 金鑰前綴。從秘密管理器載入認證。"

133 - rule_name: tenant_unfiltered_query

134 regex: "\\.objects\\.all\\(\\)"

135 paths: ["**/src/tenants/**"]

136 reminder: "多租戶程式碼必須按 org_id 篩選。"

137```

138 

139| 欄位 | 類型 | 描述 |

140| :-------------- | :----- | :------------------------------------------------------------- |

141| `rule_name` | string | 警告中顯示的識別碼 |

142| `reminder` | string | 附加到 Claude 上下文的警告文本,上限為 1 KB |

143| `regex` | string | 針對編輯內容匹配的 Python regex |

144| `substrings` | list | 文字子字符串;提供此或 `regex` |

145| `paths` | list | 可選的 glob 模式;規則僅適用於匹配的檔案。Glob 會針對完整檔案路徑進行匹配,因此請在專案相對模式前加上 `**/` |

146| `exclude_paths` | list | 可選的 glob 模式以跳過;與 `paths` 相同的匹配 |

147 

148外掛程式還讀取 `.claude/security-patterns.yml` 和 `.claude/security-patterns.json`,具有相同的架構。JSON 適用於任何 Python 安裝。YAML 形式需要 PyYAML 可導入,外掛程式不會為您安裝。外掛程式載入最多 50 個自訂規則,並跳過看起來容易發生災難性回溯的 regex。

149 

150### 規則檔案查找位置

151 

152外掛程式在相同位置查找 `claude-security-guidance.md` 和 `security-patterns.yaml`,與外掛程式的啟用方式無關:

153 

154| 範圍 | 路徑 | 備註 |

155| :--- | :------------------------------------------ | :---------------- |

156| 使用者 | `~/.claude/claude-security-guidance.md` | 適用於您機器上的每個專案 |

157| 專案 | `.claude/claude-security-guidance.md` | 與儲存庫一起簽入 |

158| 專案本地 | `.claude/claude-security-guidance.local.md` | Gitignored,用於個人覆蓋 |

159 

160外掛程式載入所有存在的位置並連接它們,指導檔案的組合上限為 8 KB。管理員可以通過設備管理將使用者範圍檔案推送到 `~/.claude/` 來分發組織範圍的規則。相同的路徑適用於 `security-patterns.yaml`。

161 

162## 使用成本

163 

164[每個編輯模式檢查](#在每個檔案編輯上) 不進行模型呼叫,不增加成本。[端回合](#在每個回合結束時) 和 [提交](#在-claude-進行的每次提交或推送上) 審查各自花費額外的模型使用,計入您的 [使用](/zh-TW/costs),就像任何其他 Claude 請求一樣。提交審查是代理性的,每次提交可能需要多個模型回合,限制為每滾動小時 20 次審查。預期大約每個更改檔案的回合進行一次審查呼叫,每次提交進行一次更深層的審查,兩者都受上述上限的限制。

165 

166兩個模型支持的審查預設使用 Claude Opus 4.7。設定 `SECURITY_REVIEW_MODEL` 為端回合審查選擇不同的模型,設定 `SG_AGENTIC_MODEL` 為提交審查選擇不同的模型。

167 

168外掛程式在所有計畫上可用。

169 

170## 禁用或卸載

171 

172要關閉各個層同時保持其餘層,請設定匹配的環境變數:

173 

174| 變數 | 效果 |

175| :------------------------------ | :---------------------------------- |

176| `ENABLE_PATTERN_RULES=0` | 禁用 [每個編輯模式檢查](#在每個檔案編輯上) |

177| `ENABLE_STOP_REVIEW=0` | 禁用 [端回合 diff 審查](#在每個回合結束時) |

178| `ENABLE_COMMIT_REVIEW=0` | 禁用 [提交和推送審查](#在-claude-進行的每次提交或推送上) |

179| `ENABLE_CODE_SECURITY_REVIEW=0` | 一次禁用所有模型支持的審查 |

180| `SECURITY_GUIDANCE_DISABLE=1` | 禁用外掛程式而不卸載 |

181 

182要在您的使用者範圍中暫停外掛程式:

183 

184```text theme={null}

185/plugin disable security-guidance@claude-plugins-official

186```

187 

188要從您的使用者範圍中移除它:

189 

190```text theme={null}

191/plugin uninstall security-guidance@claude-plugins-official

192```

193 

194如果外掛程式通過專案的 `.claude/settings.json` 啟用,從 `/plugin` 禁用它會將覆蓋寫入您的 `.claude/settings.local.json`,而不是編輯簽入的檔案,因此外掛程式對您保持關閉,而不影響隊友。如果它通過 [受管設定](/zh-TW/admin-setup) 啟用,只有管理員可以禁用它。

195 

196## 外掛程式如何與 Claude Code 整合

197 

198外掛程式完全建立在 [hooks](/zh-TW/hooks) 上,這是在 Claude 迴圈中的特定點執行您自己的程式碼的機制。它註冊:

199 

200| Hook 事件 | 目的 |

201| :----------------------------------------------------- | :------------------ |

202| `SessionStart` | 啟動外掛程式的 Python 環境 |

203| `UserPromptSubmit` | 捕捉端回合審查 diff 的工作樹基線 |

204| `PostToolUse` 在 `Edit`、`Write` 和 `NotebookEdit` 上 | 每個編輯模式匹配 |

205| `Stop` | 端回合 diff 審查,在背景中執行 |

206| `PostToolUse` 在 `Bash` 上,篩選為 `git commit` 和 `git push` | 提交和推送審查,在背景中執行 |

207 

208如果您構建自己的 hooks,[外掛程式的源代碼](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/security-guidance) 是從 hook 執行單獨模型呼叫並將結果反饋到工作階段的工作示例。

209 

210## 此功能如何與其他安全工具配合

211 

212外掛程式是深度防禦方法中的一層。它最早捕捉問題,當程式碼仍在編輯器中時,但它不是保證,也不能替代後來的檢查。典型的堆棧:

213 

214| 階段 | 工具 | 涵蓋的內容 |

215| :----- | :----------------------------------------------------- | :----------------------------- |

216| 在工作階段中 | Security guidance 外掛程式 | Claude 編寫的程式碼中的常見漏洞,在同一工作階段中修復 |

217| 按需 | [`/security-review`](/zh-TW/commands#all-commands) | 對當前分支的一次性安全檢查,在您要求時執行 |

218| 在拉取請求上 | [Code Review](/zh-TW/code-review),Team 和 Enterprise 計畫 | 具有完整程式碼庫上下文的多代理正確性和安全審查 |

219| 在 CI 中 | 您現有的靜態分析和依賴掃描器 | 語言特定的規則、供應鏈檢查和外掛程式不嘗試的政策執行 |

220 

221每個後期階段捕捉早期階段遺漏的內容。外掛程式的價值是減少到達它們的數量,而不是消除對它們的需求。

222 

223## 故障排除

224 

225外掛程式將執行時診斷寫入 `~/.claude/security/log.txt`。如果審查未出現,請先檢查那裡。

226 

227審查層在對話中無聲跳過的常見原因:

228 

229* 目錄不是 git 儲存庫:端回合和提交審查需要 git 狀態,並在儲存庫外跳過

230* 工作階段沒有 Anthropic 身份驗證:模型支持的審查會跳過,只有每個編輯模式檢查執行

231* `security-patterns.yaml` 檔案存在但 PyYAML 不可導入:檔案被忽略。改用 `security-patterns.json`

232 

233## 相關資源

234 

235要深入了解此頁面涉及的部分:

236 

237* [Code Review](/zh-TW/code-review):設定 PR 時間多代理審查

238* [使用 hooks 自動化工作流](/zh-TW/hooks-guide):在相同的生命週期點構建您自己的檢查

239* [發現和安裝外掛程式](/zh-TW/discover-plugins#official-anthropic-marketplace):瀏覽其他官方外掛程式

Details

14 伺服器管理的設定適用於 [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) 和 [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise) 客戶。14 伺服器管理的設定適用於 [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) 和 [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise) 客戶。

15</Note>15</Note>

16 16 

17## 需求17<h2 id="requirements">

18 需求

19</h2>

18 20 

19若要使用伺服器管理的設定,您需要:21若要使用伺服器管理的設定,您需要:

20 22 


22* Claude for Teams 的 Claude Code 版本 2.1.38 或更新版本,或 Claude for Enterprise 的版本 2.1.30 或更新版本24* Claude for Teams 的 Claude Code 版本 2.1.38 或更新版本,或 Claude for Enterprise 的版本 2.1.30 或更新版本

23* 對 `api.anthropic.com` 的網路存取25* 對 `api.anthropic.com` 的網路存取

24 26 

25## 在伺服器管理和端點管理的設定之間選擇27<h2 id="choose-between-server-managed-and-endpoint-managed-settings">

28 在伺服器管理和端點管理的設定之間選擇

29</h2>

26 30 

27Claude Code 支援兩種集中設定方法。伺服器管理的設定從 Anthropic 的伺服器傳遞設定。[端點管理的設定](/zh-TW/settings#settings-files) 透過原生作業系統原則 (macOS 受管偏好設定、Windows 登錄) 或受管設定檔直接部署到裝置。31Claude Code 支援兩種集中設定方法。伺服器管理的設定從 Anthropic 的伺服器傳遞設定。[端點管理的設定](/zh-TW/settings#settings-files) 透過原生作業系統原則 (macOS 受管偏好設定、Windows 登錄) 或受管設定檔直接部署到裝置。

28 32 


33 37 

34如果您的裝置已在 MDM 或端點管理解決方案中註冊,端點管理的設定提供更強的安全保證,因為設定檔可以在作業系統層級受到保護,防止使用者修改。38如果您的裝置已在 MDM 或端點管理解決方案中註冊,端點管理的設定提供更強的安全保證,因為設定檔可以在作業系統層級受到保護,防止使用者修改。

35 39 

36## 設定伺服器管理的設定40<h2 id="configure-server-managed-settings">

41 設定伺服器管理的設定

42</h2>

37 43 

38<Steps>44<Steps>

39 <Step title="開啟管理員主控台">45 <Step title="開啟管理員主控台">


101 </Step>107 </Step>

102</Steps>108</Steps>

103 109 

104### 驗證設定傳遞110<h3 id="verify-settings-delivery">

111 驗證設定傳遞

112</h3>

105 113 

106若要確認設定正在套用,請要求使用者重新啟動 Claude Code。如果設定包含觸發[安全核准對話方塊](#security-approval-dialogs)的設定,使用者會在啟動時看到描述受管設定的提示。您也可以透過讓使用者執行 `/permissions` 來檢視其有效的權限規則,以驗證受管權限規則是否處於作用中。114若要確認設定正在套用,請要求使用者重新啟動 Claude Code。如果設定包含觸發[安全核准對話方塊](#security-approval-dialogs)的設定,使用者會在啟動時看到描述受管設定的提示。您也可以透過讓使用者執行 `/permissions` 來檢視其有效的權限規則,以驗證受管權限規則是否處於作用中。

107 115 

108### 存取控制116<h3 id="access-control">

117 存取控制

118</h3>

109 119 

110以下角色可以管理伺服器管理的設定:120以下角色可以管理伺服器管理的設定:

111 121 


114 124 

115限制對受信任人員的存取,因為設定變更會套用到組織中的所有使用者。125限制對受信任人員的存取,因為設定變更會套用到組織中的所有使用者。

116 126 

117### 僅限受管的設定127<h3 id="managed-only-settings">

128 僅限受管的設定

129</h3>

118 130 

119大多數[設定金鑰](/zh-TW/settings#available-settings)可在任何範圍中運作。少數金鑰只能從受管設定中讀取,在放置於使用者或專案設定檔中時無效。請參閱[僅限受管的設定](/zh-TW/permissions#managed-only-settings)以取得完整清單。任何不在該清單上的設定仍然可以放置在受管設定中,並具有最高優先順序。131大多數[設定金鑰](/zh-TW/settings#available-settings)可在任何範圍中運作。少數金鑰只能從受管設定中讀取,在放置於使用者或專案設定檔中時無效。請參閱[僅限受管的設定](/zh-TW/permissions#managed-only-settings)以取得完整清單。任何不在該清單上的設定仍然可以放置在受管設定中,並具有最高優先順序。

120 132 

121### 目前的限制133<h3 id="current-limitations">

134 目前的限制

135</h3>

122 136 

123伺服器管理的設定有以下限制:137伺服器管理的設定有以下限制:

124 138 

125* 設定統一套用到組織中的所有使用者。尚不支援每個群組的設定。139* 設定統一套用到組織中的所有使用者。尚不支援每個群組的設定。

126* [MCP 伺服器設定](/zh-TW/mcp#managed-mcp-configuration) 無法透過伺服器管理的設定分發140* [`managed-mcp.json`](/zh-TW/managed-mcp) 檔案無法透過伺服器管理的設定分發改為在該處傳遞 `allowedMcpServers` 和 `deniedMcpServers` 原則金鑰。

127* 限制於作業系統層級原則來源的設定,例如 `policyHelper` 和 `wslInheritsWindowsSettings`,不會被接受。改為透過 MDM 或系統 `managed-settings.json` 檔案部署它們。141* 限制於作業系統層級原則來源的設定,例如 `policyHelper` 和 `wslInheritsWindowsSettings`,不會被接受。改為透過 MDM 或系統 `managed-settings.json` 檔案部署它們。

128 142 

129## 設定傳遞143<h2 id="settings-delivery">

144 設定傳遞

145</h2>

130 146 

131### 設定優先順序147<h3 id="settings-precedence">

148 設定優先順序

149</h3>

132 150 

133伺服器管理的設定和[端點管理的設定](/zh-TW/settings#settings-files)都佔據 Claude Code [設定階層](/zh-TW/settings#settings-precedence)中的最高層級。沒有其他設定層級可以覆蓋它們,包括命令列引數。151伺服器管理的設定和[端點管理的設定](/zh-TW/settings#settings-files)都佔據 Claude Code [設定階層](/zh-TW/settings#settings-precedence)中的最高層級。沒有其他設定層級可以覆蓋它們,包括命令列引數。

134 152 


136 154 

137如果您在管理員主控台中清除伺服器管理的設定,意圖回退到端點管理的 plist 或登錄原則,請注意[快取的設定](#fetch-and-caching-behavior)會在用戶端機器上持續存在,直到下次成功擷取。執行 `/status` 以查看哪個受管來源處於作用中。155如果您在管理員主控台中清除伺服器管理的設定,意圖回退到端點管理的 plist 或登錄原則,請注意[快取的設定](#fetch-and-caching-behavior)會在用戶端機器上持續存在,直到下次成功擷取。執行 `/status` 以查看哪個受管來源處於作用中。

138 156 

139### 擷取和快取行為157<h3 id="fetch-and-caching-behavior">

158 擷取和快取行為

159</h3>

140 160 

141Claude Code 在啟動時從 Anthropic 的伺服器擷取設定,並在作用中的工作階段期間每小時輪詢一次更新。161Claude Code 在啟動時從 Anthropic 的伺服器擷取設定,並在作用中的工作階段期間每小時輪詢一次更新。

142 162 


154 174 

155Claude Code 自動套用設定更新而無需重新啟動,除了進階設定(例如 OpenTelemetry 設定)需要完整重新啟動才能生效。175Claude Code 自動套用設定更新而無需重新啟動,除了進階設定(例如 OpenTelemetry 設定)需要完整重新啟動才能生效。

156 176 

157### 強制執行失敗關閉啟動177<h3 id="enforce-fail-closed-startup">

178 強制執行失敗關閉啟動

179</h3>

158 180 

159根據預設,如果遠端設定擷取在啟動時失敗,CLI 會在沒有受管設定的情況下繼續。對於這個簡短的未強制執行視窗無法接受的環境,請在您的受管設定中設定 `forceRemoteSettingsRefresh: true`。181根據預設,如果遠端設定擷取在啟動時失敗,CLI 會在沒有受管設定的情況下繼續。對於這個簡短的未強制執行視窗無法接受的環境,請在您的受管設定中設定 `forceRemoteSettingsRefresh: true`。

160 182 


172 194 

173自 v2.1.139 起,`claude auth` 子命令(例如 `claude auth login`)不受此檢查限制,因此使用者可以在過期認證是設定擷取失敗原因時重新驗證。195自 v2.1.139 起,`claude auth` 子命令(例如 `claude auth login`)不受此檢查限制,因此使用者可以在過期認證是設定擷取失敗原因時重新驗證。

174 196 

175### 安全核准對話方塊197<h3 id="security-approval-dialogs">

198 安全核准對話方塊

199</h3>

176 200 

177某些可能造成安全風險的設定需要明確的使用者核准才能套用:201某些可能造成安全風險的設定需要明確的使用者核准才能套用:

178 202 


186 在使用 `-p` 旗標的非互動模式中,Claude Code 會略過安全對話方塊並在沒有使用者核准的情況下套用設定。210 在使用 `-p` 旗標的非互動模式中,Claude Code 會略過安全對話方塊並在沒有使用者核准的情況下套用設定。

187</Note>211</Note>

188 212 

189## 平台可用性213<h2 id="platform-availability">

214 平台可用性

215</h2>

190 216 

191伺服器管理的設定需要直接連線到 `api.anthropic.com`,在使用第三方模型提供者時無法使用:217伺服器管理的設定需要直接連線到 `api.anthropic.com`,在使用第三方模型提供者時無法使用:

192 218 


195* Microsoft Foundry221* Microsoft Foundry

196* 透過 `ANTHROPIC_BASE_URL` 或 [LLM 閘道](/zh-TW/llm-gateway) 的自訂 API 端點222* 透過 `ANTHROPIC_BASE_URL` 或 [LLM 閘道](/zh-TW/llm-gateway) 的自訂 API 端點

197 223 

198## 稽核記錄224<h2 id="audit-logging">

225 稽核記錄

226</h2>

199 227 

200設定變更的稽核記錄事件可透過合規性 API 或稽核記錄匯出取得。請聯絡您的 Anthropic 帳戶團隊以取得存取權。228設定變更的稽核記錄事件可透過合規性 API 或稽核記錄匯出取得。請聯絡您的 Anthropic 帳戶團隊以取得存取權。

201 229 

202稽核事件包括執行的動作類型、執行動作的帳戶和裝置,以及對先前和新值的參考。230稽核事件包括執行的動作類型、執行動作的帳戶和裝置,以及對先前和新值的參考。

203 231 

204## 安全考量232<h2 id="security-considerations">

233 安全考量

234</h2>

205 235 

206伺服器管理的設定提供集中式原則強制執行,但它們作為用戶端控制運作。在非受管裝置上,具有管理員或 sudo 存取權的使用者可以修改 Claude Code 二進位檔、檔案系統或網路設定。236伺服器管理的設定提供集中式原則強制執行,但它們作為用戶端控制運作。在非受管裝置上,具有管理員或 sudo 存取權的使用者可以修改 Claude Code 二進位檔、檔案系統或網路設定。

207 237 


217 247 

218如需更強的強制執行保證,請在已在 MDM 解決方案中註冊的裝置上使用[端點管理的設定](/zh-TW/settings#settings-files)。248如需更強的強制執行保證,請在已在 MDM 解決方案中註冊的裝置上使用[端點管理的設定](/zh-TW/settings#settings-files)。

219 249 

220## 另請參閱250<h2 id="see-also">

251 另請參閱

252</h2>

221 253 

222用於管理 Claude Code 設定的相關頁面:254用於管理 Claude Code 設定的相關頁面:

223 255 

sessions.md +141 −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# 管理 sessions

6 

7> 命名、恢復、分支和在 Claude Code 對話之間切換。涵蓋 `--continue`、`--resume`、`--from-pr`、`/resume` 選擇器、session 命名和文字記錄儲存位置。

8 

9session 是與專案目錄相關聯的已儲存對話。Claude Code 在您工作時將其儲存在本地,因此您可以從中斷的地方繼續、分支以嘗試不同的方法,或在任務之間切換。

10 

11[桌面應用程式](/zh-TW/desktop#work-in-parallel-with-sessions)、[Claude Code 網頁版](/zh-TW/claude-code-on-the-web)和 [VS Code 擴充功能](/zh-TW/vs-code#resume-past-conversations)各自維護自己的 session 歷史記錄。本頁涵蓋 CLI:

12 

13* 透過標誌、名稱或 PR [恢復](#resume-a-session)先前的對話

14* [命名](#name-your-sessions) sessions 以便稍後找到它們

15* 使用 `/resume` 選擇器 [瀏覽](#use-the-session-picker) sessions

16* [分支](#branch-a-session)對話以嘗試不同的方法

17* [匯出](#export-and-locate-session-data)文字記錄並在磁碟上找到它們

18 

19<h2 id="resume-a-session">

20 恢復 session

21</h2>

22 

23Sessions 在您工作時會持續儲存到[本地文字記錄檔案](#export-and-locate-session-data),因此您可以在退出或執行 `/clear` 後返回到一個。使用這些進入點:

24 

25| 命令 | 功能 |

26| :-------------------------- | :---------------------------------------- |

27| `claude --continue` | 恢復目前目錄中最近的 session |

28| `claude --resume` | 開啟 [session 選擇器](#use-the-session-picker) |

29| `claude --resume <name>` | 直接恢復命名的 session |

30| `claude --from-pr <number>` | 恢復連結到該 pull request 的 session |

31| `/resume` | 從活躍 session 內切換到不同的對話 |

32 

33使用 [`claude -p`](/zh-TW/headless) 或 [Agent SDK](/zh-TW/agent-sdk/overview) 建立的 sessions 不會出現在 session 選擇器中,但您仍然可以透過將其 session ID 傳遞給 `claude --resume <session-id>` 來恢復它。

34 

35<h3 id="where-the-session-picker-looks">

36 session 選擇器查看的位置

37</h3>

38 

39Sessions 按專案目錄儲存。預設情況下,session 選擇器顯示來自目前 worktree 的互動式 sessions,以及在其他地方啟動並使用 `/add-dir` 新增目前目錄的 sessions。使用 `Ctrl+W` 擴展到儲存庫的所有 worktrees,或使用 `Ctrl+A` 擴展到此機器上的每個專案。

40 

41從同一儲存庫的另一個 worktree 選擇 session 會在原地恢復它。從不相關的專案選擇 session 會將 `cd` 和恢復命令複製到您的剪貼簿。

42 

43按名稱恢復會在目前儲存庫及其 worktrees 中解析。兩種形式都會尋找完全相符的項目,並直接恢復它,即使它位於不同的 worktree 中:

44 

45| 命令 | 完全相符 | 模糊名稱 |

46| :----------------------- | :--- | :------------------------------------- |

47| `claude --resume <name>` | 直接恢復 | 使用名稱預先填入作為搜尋詞開啟 session 選擇器 |

48| `/resume <name>` | 直接恢復 | 報告錯誤;執行不帶引數的 `/resume` 以開啟 session 選擇器 |

49 

50<h2 id="name-your-sessions">

51 命名您的 sessions

52</h2>

53 

54為 sessions 提供描述性名稱,以便在 session 選擇器中找到它們並按名稱恢復。當您並行處理多個任務時,這最為重要。

55 

56| 時間 | 如何設定名稱 |

57| :------------ | :-------------------------------------------------------------------------------------------------------------- |

58| 啟動時 | `claude -n auth-refactor` |

59| 在 session 期間 | `/rename auth-refactor`。名稱也會出現在提示列上 |

60| 從 session 選擇器 | 反白 session 並按 `Ctrl+R` |

61| 在計畫接受時 | 在 [plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode) 中接受計畫會根據計畫內容命名 session,除非您已經設定了一個 |

62 

63session 命名後,使用 `claude --resume <name>` 或 `/resume <name>` 返回到它。請參閱[恢復 session](#resume-a-session) 以了解名稱解析在 worktrees 中的行為方式。

64 

65<h2 id="use-the-session-picker">

66 使用 session 選擇器

67</h2>

68 

69在 session 內執行 `/resume`,或不帶引數執行 `claude --resume`,以開啟互動式 session 選擇器。使用這些快捷鍵來導航、搜尋和擴展清單:

70 

71| 快捷鍵 | 動作 |

72| :----------------------- | :--------------------------------------------------------------------------------------------------------- |

73| `↑` / `↓` | 在 sessions 之間導航 |

74| `→` / `←` | 展開或摺疊分組的 sessions |

75| `Enter` | 恢復反白的 session |

76| `Space` | 預覽 session 內容。在不將其捕獲為貼上的終端上也可以使用 `Ctrl+V` |

77| `Ctrl+R` | 重新命名反白的 session |

78| `/` 或除 `Space` 外的任何可列印字元 | 進入搜尋模式並篩選 sessions。貼上 GitHub、GitHub Enterprise、GitLab 或 Bitbucket pull 或 merge request URL 以找到建立它的 session |

79| `Ctrl+A` | 顯示此機器上所有專案的 sessions。再次按下以返回目前儲存庫 |

80| `Ctrl+W` | 顯示目前儲存庫所有 worktrees 的 sessions。再次按下以返回目前 worktree。僅在多 worktree 儲存庫中顯示 |

81| `Ctrl+B` | 篩選為目前 git 分支的 sessions。再次按下以顯示所有分支 |

82| `Esc` | 退出 session 選擇器或搜尋模式 |

83 

84每一列顯示 session 名稱(如果已設定),否則顯示對話摘要或第一個提示,以及自上次活動以來的時間、訊息計數和 git 分支。使用 `Ctrl+A` 擴展到所有專案後,專案路徑會出現。

85 

86使用 `/branch`、`/rewind` 或 `--fork-session` 建立的分支 sessions 會分組在其根 session 下。按 `→` 展開群組。

87 

88<h2 id="branch-a-session">

89 分支 session

90</h2>

91 

92分支會建立迄今為止對話的副本並將您切換到其中,保持原始對話完整。使用它來嘗試不同的方法,而不會失去您所在的路徑。

93 

94從 session 內,執行 `/branch` 並使用可選名稱:

95 

96```text theme={null}

97/branch try-streaming-approach

98```

99 

100從命令列,將 `--continue` 或 `--resume` 與 `--fork-session` 結合:

101 

102```bash theme={null}

103claude --continue --fork-session

104```

105 

106原始 session 保持不變,並在 session 選擇器中保持可用。`/branch` 確認會列印兩個 session ID:您現在所在的新分支和原始分支。要返回原始分支,將其 ID 傳遞給 `/resume`、使用 session 選擇器或執行 `/resume <original-name>`。您使用「允許此 session」核准的權限不會轉移到新分支。如果您在兩個終端中恢復同一 session 而不進行分支,來自兩者的訊息會交錯到一個文字記錄中。

107 

108有關單個 session 內基於 checkpoint 的 rewind,請參閱 [Checkpointing](/zh-TW/checkpointing)。

109 

110<h2 id="manage-context-within-a-session">

111 在 session 內管理上下文

112</h2>

113 

114這些命令控制上下文視窗中的內容,而無需離開 session:

115 

116* **`/clear`**:以空上下文重新開始。先前的對話已儲存並可恢復

117* **`/compact [instructions]`**:用摘要替換歷史記錄,可選擇性地專注於您指定的內容

118* **`/context`**:顯示目前消耗上下文的內容

119 

120有關壓縮如何與 CLAUDE.md、skills 和規則互動,請參閱[上下文視窗指南](/zh-TW/context-window)。有關何時清除與壓縮的策略,請參閱[最佳實踐](/zh-TW/best-practices#manage-your-session)。

121 

122<h2 id="export-and-locate-session-data">

123 匯出和定位 session 資料

124</h2>

125 

126執行 `/export` 將目前對話複製到您的剪貼簿或將其儲存為純文字檔案,訊息和工具輸出呈現為可讀文字。傳遞檔案名以直接寫入該檔案。

127 

128文字記錄儲存為 JSONL,位置為 `~/.claude/projects/<project>/<session-id>.jsonl`,其中 `<project>` 衍生自您的工作目錄路徑。每一行都是訊息、工具使用或中繼資料項目的 JSON 物件。要將 sessions 儲存在 `~/.claude` 以外的位置,請設定 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars)。這些本地檔案預設在 30 天後被移除;使用 [`cleanupPeriodDays`](/zh-TW/settings#available-settings) 變更此設定。

129 

130要完全禁止文字記錄寫入,請設定 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars),或在非互動模式中使用 `--no-session-persistence`。

131 

132<h2 id="see-also">

133 另請參閱

134</h2>

135 

136這些頁面涵蓋相關的 session 和平行處理機制:

137 

138* [Worktrees](/zh-TW/worktrees):在單獨的分支上執行隔離的平行 sessions

139* [Checkpointing](/zh-TW/checkpointing):將程式碼和對話 rewind 到較早的點

140* [Context window](/zh-TW/context-window):什麼填充上下文以及什麼在壓縮中存活

141* [Non-interactive mode](/zh-TW/headless):`claude -p` 下的 session 行為

settings.md +158 −46

Details

8 8 

9Claude Code 提供多種設定選項,可根據您的需求配置其行為。您可以在使用互動式 REPL 時執行 `/config` 命令來設定 Claude Code,這會開啟一個標籤式設定介面,您可以在其中查看狀態資訊並修改設定選項。9Claude Code 提供多種設定選項,可根據您的需求配置其行為。您可以在使用互動式 REPL 時執行 `/config` 命令來設定 Claude Code,這會開啟一個標籤式設定介面,您可以在其中查看狀態資訊並修改設定選項。

10 10 

11## 設定範圍11<h2 id="configuration-scopes">

12 設定範圍

13</h2>

12 14 

13Claude Code 使用**範圍系統**來決定設定的適用位置和共享對象。了解範圍可幫助您決定如何為個人使用、團隊協作或企業部署設定 Claude Code。15Claude Code 使用**範圍系統**來決定設定的適用位置和共享對象。了解範圍可幫助您決定如何為個人使用、團隊協作或企業部署設定 Claude Code。

14 16 

15### 可用的範圍17<h3 id="available-scopes">

18 可用的範圍

19</h3>

16 20 

17| 範圍 | 位置 | 影響對象 | 與團隊共享? |21| 範圍 | 位置 | 影響對象 | 與團隊共享? |

18| :---------- | :----------------------------------------------- | :--------- | :------------ |22| :---------- | :----------------------------------------------- | :--------- | :------------ |


21| **Project** | 儲存庫中的 `.claude/` | 此儲存庫的所有協作者 | 是(提交到 git) |25| **Project** | 儲存庫中的 `.claude/` | 此儲存庫的所有協作者 | 是(提交到 git) |

22| **Local** | `.claude/settings.local.json` | 您,僅在此儲存庫中 | 否(gitignored) |26| **Local** | `.claude/settings.local.json` | 您,僅在此儲存庫中 | 否(gitignored) |

23 27 

24### 何時使用各個範圍28<h3 id="when-to-use-each-scope">

29 何時使用各個範圍

30</h3>

25 31 

26**Managed 範圍**用於:32**Managed 範圍**用於:

27 33 


47* 在與團隊共享之前測試設定53* 在與團隊共享之前測試設定

48* 對其他人不適用的機器特定設定54* 對其他人不適用的機器特定設定

49 55 

50### 範圍如何互動56<h3 id="how-scopes-interact">

57 範圍如何互動

58</h3>

51 59 

52當相同的設定在多個範圍中出現時,Claude Code 會按優先順序應用它們:60當相同的設定在多個範圍中出現時,Claude Code 會按優先順序應用它們:

53 61 


59 67 

60例如,如果您的使用者設定將 `spinnerTipsEnabled` 設定為 `true`,而專案設定將其設定為 `false`,則專案值適用。權限規則的行為不同,因為它們跨範圍合併而不是覆蓋。請參閱[設定優先順序](#settings-precedence)。68例如,如果您的使用者設定將 `spinnerTipsEnabled` 設定為 `true`,而專案設定將其設定為 `false`,則專案值適用。權限規則的行為不同,因為它們跨範圍合併而不是覆蓋。請參閱[設定優先順序](#settings-precedence)。

61 69 

62### 哪些功能使用範圍70<h3 id="what-uses-scopes">

71 哪些功能使用範圍

72</h3>

63 73 

64範圍適用於許多 Claude Code 功能:74範圍適用於許多 Claude Code 功能:

65 75 


75 85 

76***86***

77 87 

78## 設定檔案88<h2 id="settings-files">

89 設定檔案

90</h2>

79 91 

80`settings.json` 檔案是透過分層設定來設定 Claude Code 的官方機制:92`settings.json` 檔案是透過分層設定來設定 Claude Code 的官方機制:

81 93 


106 118 

107 使用數字前綴來控制合併順序,例如 `10-telemetry.json` 和 `20-security.json`。119 使用數字前綴來控制合併順序,例如 `10-telemetry.json` 和 `20-security.json`。

108 120 

109 請參閱 [managed 設定](/zh-TW/permissions#managed-only-settings) 和 [Managed MCP 設定](/zh-TW/mcp#managed-mcp-configuration) 以取得詳細資訊。121 請參閱 [managed 設定](/zh-TW/permissions#managed-only-settings) 和 [Managed MCP 設定](/zh-TW/managed-mcp) 以取得詳細資訊。

110 122 

111 此[儲存庫](https://github.com/anthropics/claude-code/tree/main/examples/mdm)包含 Jamf、Iru (Kandji)、Intune 和群組原則的入門部署範本。使用這些作為起點,並根據您的需求進行調整。123 此[儲存庫](https://github.com/anthropics/claude-code/tree/main/examples/mdm)包含 Jamf、Iru (Kandji)、Intune 和群組原則的入門部署範本。使用這些作為起點,並根據您的需求進行調整。

112 124 


151 163 

152已發佈的架構會定期更新,可能不包含最新 CLI 版本中新增的設定,因此最近記錄的欄位上的驗證警告不一定表示您的設定無效。164已發佈的架構會定期更新,可能不包含最新 CLI 版本中新增的設定,因此最近記錄的欄位上的驗證警告不一定表示您的設定無效。

153 165 

154### 可用的設定166<h3 id="when-edits-take-effect">

167 編輯何時生效

168</h3>

169 

170Claude Code 會監視您的設定檔案,並在它們變更時重新載入它們,因此對大多數金鑰的編輯會在執行中的工作階段中應用,無需重新啟動。這包括 `permissions`、`hooks` 和認證協助程式(如 `apiKeyHelper`)。重新載入涵蓋使用者、專案、本機和 managed 設定,並且 [`ConfigChange` hook](/zh-TW/hooks#configchange) 會針對每個偵測到的變更觸發。

171 

172少數金鑰在工作階段啟動時讀取一次,並在下次重新啟動時應用:

173 

174* `model`:使用 [`/model`](/zh-TW/model-config#setting-your-model) 在工作階段中切換

175* [`outputStyle`](/zh-TW/output-styles):系統提示的一部分,在 `/clear` 或重新啟動時重建

176 

177<h3 id="available-settings">

178 可用的設定

179</h3>

155 180 

156`settings.json` 支援多個選項:181`settings.json` 支援多個選項:

157 182 

158| 金鑰 | 說明 | 範例 |183| 金鑰 | 說明 | 範例 |

159| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |184| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |

160| `agent` | 將主執行緒作為命名 subagent 執行。應用該 subagent 的系統提示、工具限制和模型。請參閱[明確叫用 subagents](/zh-TW/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |185| `agent` | 將主執行緒作為命名 subagent 執行,並為從 `claude agents` 分派的工作階段設定預設 agent。應用該 subagent 的系統提示、工具限制和模型。請參閱[明確叫用 subagents](/zh-TW/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

186| `allowAllClaudeAiMcps` | (Managed 設定僅限)載入 claude.ai connectors 以及部署的 `managed-mcp.json`,否則會取得獨佔控制並抑制它們。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `true` |

161| `allowedChannelPlugins` | (Managed 設定僅限)可能推送訊息的頻道 plugins 白名單。在設定時替換預設 Anthropic 白名單。未定義 = 回退到預設值,空陣列 = 阻止所有頻道 plugins。需要 `channelsEnabled: true`。請參閱[限制哪些頻道 plugins 可以執行](/zh-TW/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |187| `allowedChannelPlugins` | (Managed 設定僅限)可能推送訊息的頻道 plugins 白名單。在設定時替換預設 Anthropic 白名單。未定義 = 回退到預設值,空陣列 = 阻止所有頻道 plugins。需要 `channelsEnabled: true`。請參閱[限制哪些頻道 plugins 可以執行](/zh-TW/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

162| `allowedHttpHookUrls` | HTTP hooks 可能針對的 URL 模式白名單。支援 `*` 作為萬用字元。設定時,具有不匹配 URL 的 hooks 會被阻止。未定義 = 無限制,空陣列 = 阻止所有 HTTP hooks。陣列跨設定來源合併。請參閱 [Hook 設定](#hook-configuration) | `["https://hooks.example.com/*"]` |188| `allowedHttpHookUrls` | HTTP hooks 可能針對的 URL 模式白名單。支援 `*` 作為萬用字元。設定時,具有不匹配 URL 的 hooks 會被阻止。未定義 = 無限制,空陣列 = 阻止所有 HTTP hooks。陣列跨設定來源合併。請參閱 [Hook 設定](#hook-configuration) | `["https://hooks.example.com/*"]` |

163| `allowedMcpServers` | 在 managed-settings.json 中設定時,使用者可以設定的 MCP servers 白名單。未定義 = 無限制,空陣列 = 鎖定。適用於所有範圍。拒絕清單優先。請參閱 [Managed MCP 設定](/zh-TW/mcp#managed-mcp-configuration) | `[{ "serverName": "github" }]` |189| `allowedMcpServers` | 在 managed-settings.json 中設定時,使用者可以設定的 MCP servers 白名單。未定義 = 無限制,空陣列 = 鎖定。適用於所有範圍。拒絕清單優先。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `[{ "serverName": "github" }]` |

164| `allowManagedHooksOnly` | (Managed 設定僅限)僅載入 managed hooks、SDK hooks 和在 managed 設定 `enabledPlugins` 中強制啟用的 plugins 中的 hooks。使用者、專案和所有其他 plugin hooks 被阻止。請參閱 [Hook 設定](#hook-configuration) | `true` |190| `allowManagedHooksOnly` | (Managed 設定僅限)僅載入 managed hooks、SDK hooks 和在 managed 設定 `enabledPlugins` 中強制啟用的 plugins 中的 hooks。使用者、專案和所有其他 plugin hooks 被阻止。請參閱 [Hook 設定](#hook-configuration) | `true` |

165| `allowManagedMcpServersOnly` | (Managed 設定僅限)僅尊重 managed 設定中的 `allowedMcpServers`。`deniedMcpServers` 仍從所有來源合併。使用者仍可新增 MCP servers,但僅適用管理員定義的白名單。請參閱 [Managed MCP 設定](/zh-TW/mcp#managed-mcp-configuration) | `true` |191| `allowManagedMcpServersOnly` | (Managed 設定僅限)僅尊重 managed 設定中的 `allowedMcpServers`。`deniedMcpServers` 仍從所有來源合併。使用者仍可新增 MCP servers,但僅適用管理員定義的白名單。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `true` |

166| `allowManagedPermissionRulesOnly` | (Managed 設定僅限)防止使用者和專案設定定義 `allow`、`ask` 或 `deny` 權限規則。僅適用 managed 設定中的規則。請參閱 [Managed 專用設定](/zh-TW/permissions#managed-only-settings) | `true` |192| `allowManagedPermissionRulesOnly` | (Managed 設定僅限)防止使用者和專案設定定義 `allow`、`ask` 或 `deny` 權限規則。僅適用 managed 設定中的規則。請參閱 [Managed 專用設定](/zh-TW/permissions#managed-only-settings) | `true` |

167| `alwaysThinkingEnabled` | 為所有工作階段預設啟用[擴展思考](/zh-TW/model-config#extended-thinking)。通常透過 `/config` 命令而不是直接編輯來設定。若要強制思考關閉,無論此設定如何,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_THINKING`](/zh-TW/env-vars) | `true` |193| `alwaysThinkingEnabled` | 為所有工作階段預設啟用[擴展思考](/zh-TW/model-config#extended-thinking)。通常透過 `/config` 命令而不是直接編輯來設定。若要強制思考關閉,無論此設定如何,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_THINKING`](/zh-TW/env-vars) | `true` |

168| `apiKeyHelper` | 自訂指令碼,在 `/bin/sh` 中執行,以產生驗證值。此值將作為 `X-Api-Key` 和 `Authorization: Bearer` 標頭傳送以進行模型請求。使用 [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/zh-TW/env-vars) 設定重新整理間隔 | `/bin/generate_temp_api_key.sh` |194| `apiKeyHelper` | 自訂指令碼,在 `/bin/sh` 中執行,以產生驗證值。此值將作為 `X-Api-Key` 和 `Authorization: Bearer` 標頭傳送以進行模型請求。使用 [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/zh-TW/env-vars) 設定重新整理間隔 | `/bin/generate_temp_api_key.sh` |

169| `attribution` | 自訂 git 提交和拉取請求的歸屬。請參閱[歸屬設定](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |195| `attribution` | 自訂 git 提交和拉取請求的歸屬。請參閱[歸屬設定](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

170| `autoMemoryDirectory` | [自動記憶](/zh-TW/memory#storage-location)儲存的自訂目錄。接受絕對路徑或 `~/` 前綴的路徑。從政策和使用者設定以及 `--settings` 旗標接受。不從專案或本機設定接受因為複製的儲存庫可能提供任一檔案以將記憶寫入重定向到敏感位置 | `"~/my-memory-dir"` |196| `autoMemoryDirectory` | [自動記憶](/zh-TW/memory#storage-location)儲存的自訂目錄。接受絕對路徑或 `~/` 前綴的路徑。從專案或本機設定接受此設定在您接受工作區信任對話後才受尊重,因為複製的儲存庫可能提供此檔案 | `"~/my-memory-dir"` |

171| `autoMemoryEnabled` | 啟用[自動記憶](/zh-TW/memory#enable-or-disable-auto-memory)。當為 `false` 時,Claude 不會從自動記憶目錄讀取或寫入。預設:`true`。您也可以在工作階段期間使用 `/memory` 切換此設定。若要透過環境變數停用,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/zh-TW/env-vars) | `false` |197| `autoMemoryEnabled` | 啟用[自動記憶](/zh-TW/memory#enable-or-disable-auto-memory)。當為 `false` 時,Claude 不會從自動記憶目錄讀取或寫入。預設:`true`。您也可以在工作階段期間使用 `/memory` 切換此設定。若要透過環境變數停用,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/zh-TW/env-vars) | `false` |

172| `autoMode` | 自訂[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器阻止和允許的內容。包含 `environment`、`allow`、`soft_deny` 和 `hard_deny` 陣列的散文規則。在陣列中包含字面字串 `"$defaults"` 以在該位置繼承內建規則。請參閱[設定自動模式](/zh-TW/auto-mode-config)。不從共享專案設定讀取 | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |198| `autoMode` | 自訂[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)分類器阻止和允許的內容。包含 `environment`、`allow`、`soft_deny` 和 `hard_deny` 陣列的散文規則。在陣列中包含字面字串 `"$defaults"` 以在該位置繼承內建規則。請參閱[設定自動模式](/zh-TW/auto-mode-config)。不從共享專案設定讀取 | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

173| `autoScrollEnabled` | 在[全螢幕渲染](/zh-TW/fullscreen)中,跟隨新輸出到對話的底部。預設:`true`。在 `/config` 中顯示為**自動捲軸**。當此設定關閉時,權限提示仍會捲軸進入檢視 | `false` |199| `autoScrollEnabled` | 在[全螢幕渲染](/zh-TW/fullscreen)中,跟隨新輸出到對話的底部。預設:`true`。在 `/config` 中顯示為**自動捲軸**。當此設定關閉時,權限提示仍會捲軸進入檢視 | `false` |


183| `cleanupPeriodDays` | 非使用中超過此期間的工作階段在啟動時刪除(預設:30 天,最少 1 天)。設定為 `0` 會被拒絕並出現驗證錯誤。也控制[孤立 subagent worktrees](/zh-TW/worktrees#clean-up-worktrees) 在啟動時自動移除的年齡截止。若要完全停用文字記錄寫入,請設定 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars) 環境變數,或在非互動模式(`-p`)中使用 `--no-session-persistence` 旗標或 `persistSession: false` SDK 選項。 | `20` |209| `cleanupPeriodDays` | 非使用中超過此期間的工作階段在啟動時刪除(預設:30 天,最少 1 天)。設定為 `0` 會被拒絕並出現驗證錯誤。也控制[孤立 subagent worktrees](/zh-TW/worktrees#clean-up-worktrees) 在啟動時自動移除的年齡截止。若要完全停用文字記錄寫入,請設定 [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars) 環境變數,或在非互動模式(`-p`)中使用 `--no-session-persistence` 旗標或 `persistSession: false` SDK 選項。 | `20` |

184| `companyAnnouncements` | 在啟動時向使用者顯示的公告。如果提供多個公告,它們將隨機循環。 | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |210| `companyAnnouncements` | 在啟動時向使用者顯示的公告。如果提供多個公告,它們將隨機循環。 | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

185| `defaultShell` | 輸入框 `!` 命令的預設 shell。接受 `"bash"`(預設)或 `"powershell"`。設定 `"powershell"` 會在 Windows 上透過 PowerShell 路由互動式 `!` 命令。需要 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`。請參閱 [PowerShell tool](/zh-TW/tools-reference#powershell-tool) | `"powershell"` |211| `defaultShell` | 輸入框 `!` 命令的預設 shell。接受 `"bash"`(預設)或 `"powershell"`。設定 `"powershell"` 會在 Windows 上透過 PowerShell 路由互動式 `!` 命令。需要 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`。請參閱 [PowerShell tool](/zh-TW/tools-reference#powershell-tool) | `"powershell"` |

186| `deniedMcpServers` | 在 managed-settings.json 中設定時,明確阻止的 MCP servers 拒絕清單。適用於所有範圍,包括 managed servers。拒絕清單優先於白名單。請參閱 [Managed MCP 設定](/zh-TW/mcp#managed-mcp-configuration) | `[{ "serverName": "filesystem" }]` |212| `deniedMcpServers` | 在 managed-settings.json 中設定時,明確阻止的 MCP servers 拒絕清單。適用於所有範圍,包括 managed servers。拒絕清單優先於白名單。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `[{ "serverName": "filesystem" }]` |

187| `disableAgentView` | 設定為 `true` 以關閉[背景代理和代理檢視](/zh-TW/agent-view):`claude agents`、`--bg`、`/background` 和隨選主管。通常在 [managed 設定](/zh-TW/permissions#managed-settings) 中設定。等同於將 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 設定為 `1` | `true` |213| `disableAgentView` | 設定為 `true` 以關閉[背景代理和代理檢視](/zh-TW/agent-view):`claude agents`、`--bg`、`/background` 和隨選主管。通常在 [managed 設定](/zh-TW/permissions#managed-settings) 中設定。等同於將 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 設定為 `1` | `true` |

188| `disableAllHooks` | 停用所有 [hooks](/zh-TW/hooks) 和任何自訂[狀態行](/zh-TW/statusline) | `true` |214| `disableAllHooks` | 停用所有 [hooks](/zh-TW/hooks) 和任何自訂[狀態行](/zh-TW/statusline) | `true` |

189| `disableAutoMode` | 設定為 `"disable"` 以防止[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)被啟用。從 `Shift+Tab` 循環中移除 `auto` 並在啟動時拒絕 `--permission-mode auto`。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |215| `disableAutoMode` | 設定為 `"disable"` 以防止[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)被啟用。從 `Shift+Tab` 循環中移除 `auto` 並在啟動時拒絕 `--permission-mode auto`。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |


191| `disabledMcpjsonServers` | 要拒絕的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["filesystem"]` |217| `disabledMcpjsonServers` | 要拒絕的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["filesystem"]` |

192| `disableRemoteControl` | {/* min-version: 2.1.128 */}停用[遠端控制](/zh-TW/remote-control):阻止 `claude remote-control`、`--remote-control` 旗標、自動啟動和工作階段內切換。通常放在[managed 設定](/zh-TW/permissions#managed-settings)中以進行每個裝置的 MDM 強制執行,但適用於任何範圍。需要 Claude Code v2.1.128 或更新版本 | `true` |218| `disableRemoteControl` | {/* min-version: 2.1.128 */}停用[遠端控制](/zh-TW/remote-control):阻止 `claude remote-control`、`--remote-control` 旗標、自動啟動和工作階段內切換。通常放在[managed 設定](/zh-TW/permissions#managed-settings)中以進行每個裝置的 MDM 強制執行,但適用於任何範圍。需要 Claude Code v2.1.128 或更新版本 | `true` |

193| `disableSkillShellExecution` | 停用 [skills](/zh-TW/skills) 和來自使用者、專案、plugin 或其他目錄來源的自訂命令中的內嵌 shell 執行(`` !`...` `` 和 ` ```! ` 區塊)。命令會被替換為 `[shell command execution disabled by policy]` 而不是被執行。Bundled 和 managed skills 不受影響。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `true` |219| `disableSkillShellExecution` | 停用 [skills](/zh-TW/skills) 和來自使用者、專案、plugin 或其他目錄來源的自訂命令中的內嵌 shell 執行(`` !`...` `` 和 ` ```! ` 區塊)。命令會被替換為 `[shell command execution disabled by policy]` 而不是被執行。Bundled 和 managed skills 不受影響。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `true` |

220| `disableWorkflows` | 停用[動態工作流程](/zh-TW/workflows#turn-workflows-off)和 bundled workflow 命令。預設:`false`。等同於將 `CLAUDE_CODE_DISABLE_WORKFLOWS` 設定為 `1` | `true` |

194| `editorMode` | 輸入提示的快捷鍵模式:`"normal"` 或 `"vim"`。預設:`"normal"`。在 `/config` 中顯示為**編輯器模式** | `"vim"` |221| `editorMode` | 輸入提示的快捷鍵模式:`"normal"` 或 `"vim"`。預設:`"normal"`。在 `/config` 中顯示為**編輯器模式** | `"vim"` |

195| `effortLevel` | 跨工作階段持久化[努力等級](/zh-TW/model-config#adjust-effort-level)。接受 `"low"`、`"medium"`、`"high"` 或 `"xhigh"`。當您執行 `/effort` 時自動寫入,其中包含其中一個值。`--effort` 和 [`CLAUDE_CODE_EFFORT_LEVEL`](/zh-TW/env-vars) 會覆蓋此設定以進行一個工作階段。請參閱[調整努力等級](/zh-TW/model-config#adjust-effort-level)以了解支援的模型 | `"xhigh"` |222| `effortLevel` | 跨工作階段持久化[努力等級](/zh-TW/model-config#adjust-effort-level)。接受 `"low"`、`"medium"`、`"high"` 或 `"xhigh"`。當您執行 `/effort` 時自動寫入,其中包含其中一個值。`--effort` 和 [`CLAUDE_CODE_EFFORT_LEVEL`](/zh-TW/env-vars) 會覆蓋此設定以進行一個工作階段。請參閱[調整努力等級](/zh-TW/model-config#adjust-effort-level)以了解支援的模型 | `"xhigh"` |

196| `enableAllProjectMcpServers` | 自動批准專案 `.mcp.json` 檔案中定義的所有 MCP servers | `true` |223| `enableAllProjectMcpServers` | 自動批准專案 `.mcp.json` 檔案中定義的所有 MCP servers | `true` |

197| `enabledMcpjsonServers` | 要批准的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["memory", "github"]` |224| `enabledMcpjsonServers` | 要批准的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["memory", "github"]` |

198| `env` | 將應用於每個工作階段的環境變數 | `{"FOO": "bar"}` |225| `env` | 應用於每個工作階段和 Claude Code 從中產生的子流程的環境變數。{/* min-version: 2.1.143 */}自 v2.1.143 起,此處設定的 `NO_COLOR` 和 `FORCE_COLOR` 會傳遞到子流程,但不會改變 Claude Code 自己的介面顏色。在啟動 `claude` 前在您的 shell 中設定這些以改變介面顏色 | `{"FOO": "bar"}` |

199| `fastModePerSessionOptIn` | 當為 `true` 時,快速模式不會跨工作階段持久化。每個工作階段都以快速模式關閉開始,需要使用者使用 `/fast` 啟用它。使用者的快速模式偏好仍會儲存。請參閱[需要每個工作階段的選擇加入](/zh-TW/fast-mode#require-per-session-opt-in) | `true` |226| `fastModePerSessionOptIn` | 當為 `true` 時,快速模式不會跨工作階段持久化。每個工作階段都以快速模式關閉開始,需要使用者使用 `/fast` 啟用它。使用者的快速模式偏好仍會儲存。請參閱[需要每個工作階段的選擇加入](/zh-TW/fast-mode#require-per-session-opt-in) | `true` |

200| `feedbackSurveyRate` | [工作階段品質調查](/zh-TW/data-usage#session-quality-surveys)出現時符合條件的機率(0–1)。設定為 `0` 以完全抑制,或設定 [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/zh-TW/env-vars) 在 `env` 中。在使用 Bedrock、Vertex 或 Foundry 時很有用,其中預設樣本率不適用 | `0.05` |227| `feedbackSurveyRate` | [工作階段品質調查](/zh-TW/data-usage#session-quality-surveys)出現時符合條件的機率(0–1)。設定為 `0` 以完全抑制,或設定 [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/zh-TW/env-vars) 在 `env` 中。在使用 Bedrock、Vertex 或 Foundry 時很有用,其中預設樣本率不適用 | `0.05` |

201| `fileSuggestion` | 為 `@` 檔案自動完成設定自訂指令碼。請參閱[檔案建議設定](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |228| `fileSuggestion` | 為 `@` 檔案自動完成設定自訂指令碼。請參閱[檔案建議設定](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

202| `forceLoginMethod` | 使用 `claudeai` 限制登入到 Claude.ai 帳戶,`console` 限制登入到 Claude Console(API 使用計費)帳戶 | `claudeai` |229| `forceLoginMethod` | 使用 `claudeai` 限制登入到 Claude.ai 帳戶,`console` 限制登入到 Claude Console 帳戶。在 managed 設定中設定時,由 API 金鑰、`apiKeyHelper` 或第三方提供者驗證的工作階段在啟動時被阻止,因為兩個值都無法在沒有第一方 OAuth 的情況下滿足 | `claudeai` |

203| `forceLoginOrgUUID` | 要求登入屬於特定組織。接受單一 UUID 字串(也會在登入期間預先選擇該組織),或 UUID 陣列,其中接受任何列出的組織而不預先選擇。在 managed 設定中設定時,如果驗證帳戶不屬於列出的組織,登入會失敗;空陣列會失敗關閉並使用誤設定訊息阻止登入 | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` 或 `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |230| `forceLoginOrgUUID` | 要求登入屬於特定 Anthropic 組織。接受單一 UUID 字串(也會在登入期間預先選擇該組織),或 UUID 陣列,其中接受任何列出的組織而不預先選擇。在 managed 設定中設定時,如果驗證帳戶不屬於列出的組織,登入會失敗;由 API 金鑰、`apiKeyHelper` 或第三方提供者驗證的工作階段在啟動時被阻止,因為無法驗證它們的組織成員資格。第三方提供者工作階段(例如 Bedrock、Vertex 和 Foundry)不被阻止:使用您的雲端 IAM 限制可以使用哪些雲端帳戶。空陣列會失敗關閉並使用誤設定訊息阻止登入 | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` 或 `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

204| `forceRemoteSettingsRefresh` | (Managed 設定僅限)阻止 CLI 啟動,直到從伺服器新鮮擷取遠端 managed 設定。如果擷取失敗,CLI 會結束而不是繼續使用快取或無設定。未設定時,啟動會繼續而不等待遠端設定。請參閱[失敗關閉強制執行](/zh-TW/server-managed-settings#enforce-fail-closed-startup) | `true` |231| `forceRemoteSettingsRefresh` | (Managed 設定僅限)阻止 CLI 啟動,直到從伺服器新鮮擷取遠端 managed 設定。如果擷取失敗,CLI 會結束而不是繼續使用快取或無設定。未設定時,啟動會繼續而不等待遠端設定。請參閱[失敗關閉強制執行](/zh-TW/server-managed-settings#enforce-fail-closed-startup) | `true` |

205| `gcpAuthRefresh` | 當 GCP Application Default Credentials 過期或無法載入時重新整理它們的自訂指令碼。請參閱[進階認證設定](/zh-TW/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |232| `gcpAuthRefresh` | 當 GCP Application Default Credentials 過期或無法載入時重新整理它們的自訂指令碼。請參閱[進階認證設定](/zh-TW/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |

206| `hooks` | 設定自訂命令以在生命週期事件執行。請參閱 [hooks 文件](/zh-TW/hooks)以了解格式 | 請參閱 [hooks](/zh-TW/hooks) |233| `hooks` | 設定自訂命令以在生命週期事件執行。請參閱 [hooks 文件](/zh-TW/hooks)以了解格式 | 請參閱 [hooks](/zh-TW/hooks) |


216| `outputStyle` | 設定輸出樣式以調整系統提示。請參閱[輸出樣式文件](/zh-TW/output-styles) | `"Explanatory"` |243| `outputStyle` | 設定輸出樣式以調整系統提示。請參閱[輸出樣式文件](/zh-TW/output-styles) | `"Explanatory"` |

217| `parentSettingsBehavior` | {/* min-version: 2.1.133 */}(Managed 設定僅限)控制由嵌入主機流程(例如 Agent SDK 或 IDE 擴充功能)以程式設計方式提供的 managed 設定在同時存在管理員部署的 managed 層級時是否適用。`"first-wins"`:父級提供的設定被丟棄,僅適用管理員層級。`"merge"`:父級提供的設定適用於管理員層級下方,經過篩選以便它們可以收緊政策但不能放鬆政策。當未部署管理員層級時無效。預設:`"first-wins"`。需要 Claude Code v2.1.133 或更新版本 | `"merge"` |244| `parentSettingsBehavior` | {/* min-version: 2.1.133 */}(Managed 設定僅限)控制由嵌入主機流程(例如 Agent SDK 或 IDE 擴充功能)以程式設計方式提供的 managed 設定在同時存在管理員部署的 managed 層級時是否適用。`"first-wins"`:父級提供的設定被丟棄,僅適用管理員層級。`"merge"`:父級提供的設定適用於管理員層級下方,經過篩選以便它們可以收緊政策但不能放鬆政策。當未部署管理員層級時無效。預設:`"first-wins"`。需要 Claude Code v2.1.133 或更新版本 | `"merge"` |

218| `permissions` | 請參閱下表以了解權限的結構。 | |245| `permissions` | 請參閱下表以了解權限的結構。 | |

219| `plansDirectory` | 自訂計畫檔案的儲存位置。路徑相對於專案根目錄。預設:`~/.claude/plans` | `"./plans"` |246| `plansDirectory` | 自訂 Plan Mode 檔案的儲存位置。路徑相對於專案根目錄。預設:`~/.claude/plans` | `"./plans"` |

247| `pluginSuggestionMarketplaces` | (Managed 設定僅限)其 plugins 可以作為內容相關安裝建議出現的 marketplace 名稱,除了官方 marketplace 外。建議來自每個 plugin 在其 marketplace 項目中的 `relevance` 宣告。名稱僅在 marketplace 在機器上註冊且其註冊來源也在 managed 設定中宣告時才生效,作為該名稱的 `extraKnownMarketplaces` 項目或 `strictKnownMarketplaces` 的項目。從不同來源在白名單名稱下註冊的 marketplace 會被忽略。 | `["acme-corp-plugins"]` |

220| `pluginTrustMessage` | (Managed 設定僅限)在安裝前顯示的 plugin 信任警告中附加的自訂訊息。使用此選項新增組織特定的內容,例如確認來自您內部 marketplace 的 plugins 已經過審查。 | `"All plugins from our marketplace are approved by IT"` |248| `pluginTrustMessage` | (Managed 設定僅限)在安裝前顯示的 plugin 信任警告中附加的自訂訊息。使用此選項新增組織特定的內容,例如確認來自您內部 marketplace 的 plugins 已經過審查。 | `"All plugins from our marketplace are approved by IT"` |

221| `policyHelper` | {/* min-version: 2.1.136 */}管理員部署的可執行檔,在啟動時動態計算 managed 設定。僅從 MDM 或系統 `managed-settings.json` 檔案受尊重。請參閱[使用政策協助程式計算 managed 設定](#compute-managed-settings-with-a-policy-helper)。需要 Claude Code v2.1.136 或更新版本 | `{"path": "/usr/local/bin/claude-policy"}` |249| `policyHelper` | {/* min-version: 2.1.136 */}管理員部署的可執行檔,在啟動時動態計算 managed 設定。僅從 MDM 或系統 `managed-settings.json` 檔案受尊重。請參閱[使用政策協助程式計算 managed 設定](#compute-managed-settings-with-a-policy-helper)。需要 Claude Code v2.1.136 或更新版本 | `{"path": "/usr/local/bin/claude-policy"}` |

222| `preferredNotifChannel` | 工作完成和權限提示通知的方法:`"auto"`、`"terminal_bell"`、`"iterm2"`、`"iterm2_with_bell"`、`"kitty"`、`"ghostty"` 或 `"notifications_disabled"`。預設:`"auto"`,在 iTerm2、Ghostty 和 Kitty 中傳送桌面通知,在其他終端機中不執行任何操作。設定 `"terminal_bell"` 以在任何終端機中響鈴字元。在 `/config` 中顯示為**通知**。請參閱[取得終端機鈴聲或通知](/zh-TW/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |250| `preferredNotifChannel` | 工作完成和權限提示通知的方法:`"auto"`、`"terminal_bell"`、`"iterm2"`、`"iterm2_with_bell"`、`"kitty"`、`"ghostty"` 或 `"notifications_disabled"`。預設:`"auto"`,在 iTerm2、Ghostty 和 Kitty 中傳送桌面通知,在其他終端機中不執行任何操作。設定 `"terminal_bell"` 以在任何終端機中響鈴字元。在 `/config` 中顯示為**通知**。請參閱[取得終端機鈴聲或通知](/zh-TW/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

223| `prefersReducedMotion` | 減少或停用 UI 動畫(微調器、閃爍、閃光效果)以提高可訪問性 | `true` |251| `prefersReducedMotion` | 減少或停用 UI 動畫(微調器、閃爍、閃光效果)以提高可訪問性 | `true` |

224| `prUrlTemplate` | PR 徽章的 URL 範本,顯示在頁尾和工具結果摘要中。替換 `gh` 報告的 PR URL 中的 `{host}`、`{owner}`、`{repo}`、`{number}` 和 `{url}`。使用以指向內部程式碼審查工具而不是 `github.com`。不影響 Claude 散文中的 `#123` 自動連結 | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |252| `prUrlTemplate` | PR 徽章的 URL 範本,顯示在頁尾和工具結果摘要中。替換 `gh` 報告的 PR URL 中的 `{host}`、`{owner}`、`{repo}`、`{number}` 和 `{url}`。使用以指向內部程式碼審查工具而不是 `github.com`。不影響 Claude 散文中的 `#123` 自動連結 | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

225| `respectGitignore` | 控制 `@` 檔案選擇器是否尊重 `.gitignore` 模式。當為 `true`(預設)時,符合 `.gitignore` 模式的檔案會從建議中排除 | `false` |253| `respectGitignore` | 控制 `@` 檔案選擇器是否尊重 `.gitignore` 模式。當為 `true`(預設)時,符合 `.gitignore` 模式的檔案會從建議中排除 | `false` |

226| `showClearContextOnPlanAccept` | 在計畫接受畫面上顯示「清除內容」選項。預設為 `false`。設定為 `true` 以還原選項 | `true` |254| `showClearContextOnPlanAccept` | 在 Plan Mode 接受畫面上顯示「清除內容」選項。預設為 `false`。設定為 `true` 以還原選項 | `true` |

227| `showThinkingSummaries` | 在互動式工作階段中顯示[擴展思考](/zh-TW/model-config#extended-thinking)摘要。未設定或 `false`(互動模式中的預設值)時,思考區塊由 API 編輯並顯示為摺疊的存根。編輯只會改變您看到的內容,而不是模型生成的內容:若要減少思考支出,請[降低預算或停用思考](/zh-TW/model-config#extended-thinking)。非互動模式(`-p`) SDK 呼叫者無論此設定如何都始終接收摘要 | `true` |255| `showThinkingSummaries` | 在互動式工作階段中顯示[擴展思考](/zh-TW/model-config#extended-thinking)摘要。未設定或 `false`(互動模式中的預設值)時,思考區塊由 API 編輯並顯示為摺疊的存根。編輯只會改變您看到的內容,而不是模型生成的內容:若要減少思考支出,請[降低預算或停用思考](/zh-TW/model-config#extended-thinking)。此設定在非互動模式(`-p`)、Agent SDK 或 IDE 擴充功能(例如 VS Code)中無效 | `true` |

228| `showTurnDuration` | 在回應後顯示輪次持續時間訊息,例如「Cooked for 1m 6s」。預設:`true`。在 `/config` 中顯示為**顯示輪次持續時間** | `false` |256| `showTurnDuration` | 在回應後顯示輪次持續時間訊息,例如「Cooked for 1m 6s」。預設:`true`。在 `/config` 中顯示為**顯示輪次持續時間** | `false` |

229| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}為 Claude 每輪看到的[skill 清單](/zh-TW/skills#skill-descriptions-are-cut-short)保留的模型內容視窗分數(預設:`0.01` = 1%)。當清單超過預算時,最少使用的 skills 的描述會摺疊為裸名稱,以便 Claude 仍可叫用它們,但不會看到原因。提高以保持更多描述可見,代價是每輪更多內容。`/doctor` 顯示目前的截斷計數和受影響的 skills。需要 Claude Code v2.1.105 或更新版本 | `0.02` |257| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}為 Claude 每輪看到的[skill 清單](/zh-TW/skills#skill-descriptions-are-cut-short)保留的模型內容視窗分數(預設:`0.01` = 1%)。當清單超過預算時,最少使用的 skills 的描述會摺疊為裸名稱,以便 Claude 仍可叫用它們,但不會看到原因。提高以保持更多描述可見,代價是每輪更多內容。`/doctor` 顯示目前的截斷計數和受影響的 skills。需要 Claude Code v2.1.105 或更新版本 | `0.02` |

230| `skillOverrides` | {/* min-version: 2.1.129 */}按 skill 名稱鍵入的每個 skill 可見性覆蓋。值為 `"on"`、`"name-only"`、`"user-invocable-only"` 或 `"off"`。讓您隱藏或摺疊 skill 而無需編輯其 SKILL.md。不適用於 plugin skills,這些由 `/plugin` 管理。`/skills` 功能表將這些寫入 `.claude/settings.local.json`。請參閱[從設定覆蓋 skill 可見性](/zh-TW/skills#override-skill-visibility-from-settings)。需要 Claude Code v2.1.129 或更新版本 | `{"legacy-context": "name-only", "deploy": "off"}` |258| `skillOverrides` | {/* min-version: 2.1.129 */}按 skill 名稱鍵入的每個 skill 可見性覆蓋。值為 `"on"`、`"name-only"`、`"user-invocable-only"` 或 `"off"`。讓您隱藏或摺疊 skill 而無需編輯其 SKILL.md。不適用於 plugin skills,這些由 `/plugin` 管理。`/skills` 功能表將這些寫入 `.claude/settings.local.json`。請參閱[從設定覆蓋 skill 可見性](/zh-TW/skills#override-skill-visibility-from-settings)。需要 Claude Code v2.1.129 或更新版本 | `{"legacy-context": "name-only", "deploy": "off"}` |

231| `skipWebFetchPreflight` | 跳過[WebFetch 網域安全檢查](/zh-TW/data-usage#webfetch-domain-safety-check),該檢查在擷取前將每個請求的主機名稱傳送到 `api.anthropic.com`。在阻止流量到 Anthropic 的環境中設定為 `true`,例如 Bedrock、Vertex AI 或 Foundry 部署,具有限制性的出站。跳過時,WebFetch 嘗試任何 URL 而不諮詢黑名單 | `true` |259| `skipWebFetchPreflight` | 跳過[WebFetch 網域安全檢查](/zh-TW/data-usage#webfetch-domain-safety-check),該檢查在擷取前將每個請求的主機名稱傳送到 `api.anthropic.com`。在阻止流量到 Anthropic 的環境中設定為 `true`,例如 Bedrock、Vertex AI 或 Foundry 部署,具有限制性的出站。跳過時,WebFetch 嘗試任何 URL 而不諮詢黑名單 | `true` |

232| `spinnerTipsEnabled` | 在 Claude 工作時在微調器中顯示提示。設定為 `false` 以停用提示(預設:`true`) | `false` |260| `spinnerTipsEnabled` | 在 Claude 工作時在微調器中顯示提示。設定為 `false` 以停用提示(預設:`true`) | `false` |

233| `spinnerTipsOverride` | 使用自訂字串覆蓋微調器提示。`tips`:提示字串陣列。`excludeDefault`:如果為 `true`,僅顯示自訂提示;如果為 `false` 或不存在,自訂提示會與內建提示合併 | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |261| `spinnerTipsOverride` | 使用自訂字串覆蓋微調器提示。`tips`:提示字串陣列。`excludeDefault`:如果為 `true`,僅顯示自訂提示;如果為 `false` 或不存在,自訂提示會與內建提示合併 | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

234| `spinnerVerbs` | 自訂在微調器和輪次持續時間訊息中顯示的動作動詞。將 `mode` 設定為 `"replace"` 以僅使用您的動詞,或 `"append"` 以將它們新增到預設值 | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |262| `spinnerVerbs` | 自訂在微調器中顯示的動作動詞。將 `mode` 設定為 `"replace"` 以僅使用您的動詞,或 `"append"` 以將它們新增到預設值 | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

235| `sshConfigs` | 要在[桌面](/zh-TW/desktop#pre-configure-ssh-connections-for-your-team)環境下拉式清單中顯示的 SSH 連線。每個項目需要 `id`、`name` 和 `sshHost`;`sshPort`、`sshIdentityFile` 和 `startDirectory` 是選用的。在 managed 設定中設定時,連線對使用者是唯讀的。僅從 managed 和使用者設定讀取 | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |263| `sshConfigs` | 要在[桌面](/zh-TW/desktop#pre-configure-ssh-connections-for-your-team)環境下拉式清單中顯示的 SSH 連線。每個項目需要 `id`、`name` 和 `sshHost`;`sshPort`、`sshIdentityFile` 和 `startDirectory` 是選用的。在 managed 設定中設定時,連線對使用者是唯讀的。僅從 managed 和使用者設定讀取 | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

236| `statusLine` | 設定自訂狀態行以顯示內容。請參閱 [`statusLine` 文件](/zh-TW/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |264| `statusLine` | 設定自訂狀態行以顯示內容。請參閱 [`statusLine` 文件](/zh-TW/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

237| `strictKnownMarketplaces` | (Managed 設定僅限)plugin marketplaces 白名單。未定義 = 無限制,空陣列 = 鎖定。在 marketplace 新增和 plugin 安裝、更新、重新整理和自動更新時強制執行,因此在設定政策之前新增的 marketplace 無法用於擷取 plugins。請參閱 [Managed marketplace 限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |265| `strictKnownMarketplaces` | (Managed 設定僅限)plugin marketplaces 白名單。未定義 = 無限制,空陣列 = 鎖定。在 marketplace 新增和 plugin 安裝、更新、重新整理和自動更新時強制執行,因此在設定政策之前新增的 marketplace 無法用於擷取 plugins。請參閱 [Managed marketplace 限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

266| `strictPluginOnlyCustomization` | (Managed 設定僅限)阻止 skills、agents、hooks 和 MCP servers 來自使用者和專案來源,因此它們只能來自 plugins 或 managed 設定。`true` 鎖定所有四個表面;陣列僅鎖定命名的表面。請參閱 [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |

238| `syntaxHighlightingDisabled` | 停用 diffs、程式碼區塊和檔案預覽中的語法醒目提示 | `true` |267| `syntaxHighlightingDisabled` | 停用 diffs、程式碼區塊和檔案預覽中的語法醒目提示 | `true` |

239| `teammateMode` | [agent team](/zh-TW/agent-teams) 隊友的顯示方式:`auto`(在 tmux 或 iTerm2 中選擇分割窗格,否則為進程內)、`in-process` 或 `tmux`。`--teammate-mode` 會覆蓋此設定以進行一個工作階段。請參閱[選擇顯示模式](/zh-TW/agent-teams#choose-a-display-mode) | `"in-process"` |268| `teammateMode` | [agent team](/zh-TW/agent-teams) 隊友的顯示方式:`auto`(在 tmux 或 iTerm2 中選擇分割窗格,否則為進程內)、`in-process` 或 `tmux`。`--teammate-mode` 會覆蓋此設定以進行一個工作階段。請參閱[選擇顯示模式](/zh-TW/agent-teams#choose-a-display-mode) | `"in-process"` |

240| `terminalProgressBarEnabled` | 在支援的終端機中顯示終端機進度條:ConEmu、Ghostty 1.2.0+ 和 iTerm2 3.6.6+。預設:`true`。在 `/config` 中顯示為**終端機進度條** | `false` |269| `terminalProgressBarEnabled` | 在支援的終端機中顯示終端機進度條:ConEmu、Ghostty 1.2.0+ 和 iTerm2 3.6.6+。預設:`true`。在 `/config` 中顯示為**終端機進度條** | `false` |

241| `tui` | 終端機 UI 渲染器。使用 `"fullscreen"` 以取得無閃爍[替代螢幕渲染器](/zh-TW/fullscreen),具有虛擬化捲軸。使用 `"default"` 以取得經典主螢幕渲染器。透過 `/tui` 設定。您也可以設定 [`CLAUDE_CODE_NO_FLICKER`](/zh-TW/env-vars) 環境變數 | `"fullscreen"` |270| `tui` | 終端機 UI 渲染器。使用 `"fullscreen"` 以取得無閃爍[替代螢幕渲染器](/zh-TW/fullscreen),具有虛擬化捲軸。使用 `"default"` 以取得經典主螢幕渲染器。透過 `/tui` 設定。您也可以設定 [`CLAUDE_CODE_NO_FLICKER`](/zh-TW/env-vars) 環境變數 | `"fullscreen"` |

271| `ultracode` | 為工作階段開啟 [ultracode](/zh-TW/workflows#let-claude-decide-with-ultracode)。僅限工作階段,不從 `settings.json` 讀取。透過 `/effort ultracode`、`--settings` 或 Agent SDK 控制請求設定 | `true` |

242| `useAutoModeDuringPlan` | Plan Mode 在自動模式可用時是否使用自動模式語義。預設:`true`。不從共享專案設定讀取。在 `/config` 中顯示為「在計畫期間使用自動模式」 | `false` |272| `useAutoModeDuringPlan` | Plan Mode 在自動模式可用時是否使用自動模式語義。預設:`true`。不從共享專案設定讀取。在 `/config` 中顯示為「在計畫期間使用自動模式」 | `false` |

243| `viewMode` | 啟動時的預設文字記錄檢視模式:`"default"`、`"verbose"` 或 `"focus"`。設定時覆蓋粘性 `/focus` 選擇。`--verbose` 旗標會覆蓋此設定以進行一個工作階段 | `"verbose"` |273| `viewMode` | 啟動時的預設文字記錄檢視模式:`"default"`、`"verbose"` 或 `"focus"`。設定時覆蓋粘性 `/focus` 選擇。`--verbose` 旗標會覆蓋此設定以進行一個工作階段 | `"verbose"` |

244| `voice` | [語音聽寫](/zh-TW/voice-dictation)設定:`enabled` 開啟聽寫,`mode` 選擇 `"hold"` 或 `"tap"`,`autoSubmit` 在保持模式中按鍵釋放時傳送提示。當您執行 `/voice` 時自動寫入。需要 Claude.ai 帳戶 | `{ "enabled": true, "mode": "tap" }` |274| `voice` | [語音聽寫](/zh-TW/voice-dictation)設定:`enabled` 開啟聽寫,`mode` 選擇 `"hold"` 或 `"tap"`,`autoSubmit` 在保持模式中按鍵釋放時傳送提示。當您執行 `/voice` 時自動寫入。需要 Claude.ai 帳戶 | `{ "enabled": true, "mode": "tap" }` |

245| `voiceEnabled` | `voice.enabled` 的舊版別名。偏好 `voice` 物件 | `true` |275| `voiceEnabled` | `voice.enabled` 的舊版別名。偏好 `voice` 物件 | `true` |

276| `workflowKeywordTriggerEnabled` | {/* min-version: 2.1.157 */}提示中的單詞 `ultracode` 是否觸發[動態工作流程](/zh-TW/workflows#ask-for-a-workflow-in-your-prompt)。設定為 `false` 以輸入單詞而不觸發一個。Ultracode 努力設定、`/workflows` 和儲存的工作流程命令不受影響。預設:`true`。在 `/config` 中顯示為**Ultracode 關鍵字觸發** | `false` |

246| `wslInheritsWindowsSettings` | (Windows managed 設定僅限)當為 `true` 時,WSL 上的 Claude Code 除了 `/etc/claude-code` 外還會從 Windows 政策鏈讀取 managed 設定,Windows 來源優先。僅在 HKLM 登錄機碼或 `C:\Program Files\ClaudeCode\managed-settings.json` 中設定時受尊重,兩者都需要 Windows 管理員才能寫入。為了讓 HKCU 政策也在 WSL 上適用,旗標必須另外在 HKCU 本身中設定。對原生 Windows 無效 | `true` |277| `wslInheritsWindowsSettings` | (Windows managed 設定僅限)當為 `true` 時,WSL 上的 Claude Code 除了 `/etc/claude-code` 外還會從 Windows 政策鏈讀取 managed 設定,Windows 來源優先。僅在 HKLM 登錄機碼或 `C:\Program Files\ClaudeCode\managed-settings.json` 中設定時受尊重,兩者都需要 Windows 管理員才能寫入。為了讓 HKCU 政策也在 WSL 上適用,旗標必須另外在 HKCU 本身中設定。對原生 Windows 無效 | `true` |

247 278 

248### 全域設定設定279<h3 id="global-config-settings">

280 全域設定設定

281</h3>

249 282 

250這些設定儲存在 `~/.claude.json` 中,而不是 `settings.json`。將它們新增到 `settings.json` 將觸發架構驗證錯誤。283這些設定儲存在 `~/.claude.json` 中,而不是 `settings.json`。將它們新增到 `settings.json` 將觸發架構驗證錯誤。

251 284 


260| `externalEditorContext` | 當您使用 `Ctrl+G` 開啟外部編輯器時,將 Claude 的前一個回應作為 `#` 註解內容前置。預設:`false`。在 `/config` 中顯示為**在外部編輯器中顯示最後回應** | `true` |293| `externalEditorContext` | 當您使用 `Ctrl+G` 開啟外部編輯器時,將 Claude 的前一個回應作為 `#` 註解內容前置。預設:`false`。在 `/config` 中顯示為**在外部編輯器中顯示最後回應** | `true` |

261| `teammateDefaultModel` | [agent team](/zh-TW/agent-teams) 隊友在生成提示未指定時的預設模型。設定為模型別名(例如 `"sonnet"`),或 `null` 以繼承主管的目前 `/model` 選擇。在 `/config` 中顯示為**預設隊友模型** | `"sonnet"` |294| `teammateDefaultModel` | [agent team](/zh-TW/agent-teams) 隊友在生成提示未指定時的預設模型。設定為模型別名(例如 `"sonnet"`),或 `null` 以繼承主管的目前 `/model` 選擇。在 `/config` 中顯示為**預設隊友模型** | `"sonnet"` |

262 295 

263### Worktree 設定296<h3 id="worktree-settings">

297 Worktree 設定

298</h3>

264 299 

265設定 `--worktree` 如何建立和管理 git worktrees。300設定 `--worktree` 如何建立和管理 git worktrees。

266 301 


273 308 

274若要將 gitignored 檔案(如 `.env`)複製到新的 worktrees,請改用專案根目錄中的 [`.worktreeinclude` 檔案](/zh-TW/worktrees#copy-gitignored-files-into-worktrees),而不是設定。309若要將 gitignored 檔案(如 `.env`)複製到新的 worktrees,請改用專案根目錄中的 [`.worktreeinclude` 檔案](/zh-TW/worktrees#copy-gitignored-files-into-worktrees),而不是設定。

275 310 

276### 權限設定311<h3 id="permission-settings">

312 權限設定

313</h3>

277 314 

278| 金鑰 | 說明 | 範例 |315| 金鑰 | 說明 | 範例 |

279| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------- |316| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------- |


285| `disableBypassPermissionsMode` | 設定為 `"disable"` 以防止啟用 `bypassPermissions` 模式。這會停用 `--dangerously-skip-permissions` 旗標。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |322| `disableBypassPermissionsMode` | 設定為 `"disable"` 以防止啟用 `bypassPermissions` 模式。這會停用 `--dangerously-skip-permissions` 旗標。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |

286| `skipDangerousModePermissionPrompt` | 跳過透過 `--dangerously-skip-permissions` 或 `defaultMode: "bypassPermissions"` 進入 bypass permissions 模式之前顯示的確認提示。在專案設定(`.claude/settings.json`)中設定時被忽略,以防止不受信任的儲存庫自動繞過提示 | `true` |323| `skipDangerousModePermissionPrompt` | 跳過透過 `--dangerously-skip-permissions` 或 `defaultMode: "bypassPermissions"` 進入 bypass permissions 模式之前顯示的確認提示。在專案設定(`.claude/settings.json`)中設定時被忽略,以防止不受信任的儲存庫自動繞過提示 | `true` |

287 324 

288### 權限規則語法325<h3 id="permission-rule-syntax">

326 權限規則語法

327</h3>

289 328 

290權限規則遵循 `Tool` 或 `Tool(specifier)` 的格式。規則按順序評估:首先是拒絕規則,然後是詢問,最後是允許。第一個匹配的規則獲勝。329權限規則遵循 `Tool` 或 `Tool(specifier)` 的格式。規則按順序評估:首先是拒絕規則,然後是詢問,最後是允許。第一個匹配的規則獲勝。

291 330 


300 339 

301如需完整的規則語法參考,包括萬用字元行為、Read、Edit、WebFetch、MCP 和 Agent 規則的工具特定模式,以及 Bash 模式的安全限制,請參閱[權限規則語法](/zh-TW/permissions#permission-rule-syntax)。340如需完整的規則語法參考,包括萬用字元行為、Read、Edit、WebFetch、MCP 和 Agent 規則的工具特定模式,以及 Bash 模式的安全限制,請參閱[權限規則語法](/zh-TW/permissions#permission-rule-syntax)。

302 341 

303### Sandbox 設定342<h3 id="sandbox-settings">

343 Sandbox 設定

344</h3>

304 345 

305設定進階 sandboxing 行為。Sandboxing 將 bash 命令與您的檔案系統和網路隔離。請參閱 [Sandboxing](/zh-TW/sandboxing) 以了解詳細資訊。346設定進階 sandboxing 行為。Sandboxing 將 bash 命令與您的檔案系統和網路隔離。請參閱 [Sandboxing](/zh-TW/sandboxing) 以了解詳細資訊。

306 347 


330| `bwrapPath` | (Managed 設定僅限,Linux/WSL2)bubblewrap (`bwrap`) 二進位檔的絕對路徑。覆蓋透過 `PATH` 的自動偵測。僅從 [managed 設定](/zh-TW/settings#settings-files)受尊重,不從使用者或專案設定。在 managed 環境中 `bwrap` 安裝在非標準位置時很有用。 | `/opt/admin/bwrap` |371| `bwrapPath` | (Managed 設定僅限,Linux/WSL2)bubblewrap (`bwrap`) 二進位檔的絕對路徑。覆蓋透過 `PATH` 的自動偵測。僅從 [managed 設定](/zh-TW/settings#settings-files)受尊重,不從使用者或專案設定。在 managed 環境中 `bwrap` 安裝在非標準位置時很有用。 | `/opt/admin/bwrap` |

331| `socatPath` | (Managed 設定僅限,Linux/WSL2)用於 sandbox 網路代理的 `socat` 二進位檔的絕對路徑。覆蓋透過 `PATH` 的自動偵測。僅從 managed 設定受尊重。 | `/opt/admin/socat` |372| `socatPath` | (Managed 設定僅限,Linux/WSL2)用於 sandbox 網路代理的 `socat` 二進位檔的絕對路徑。覆蓋透過 `PATH` 的自動偵測。僅從 managed 設定受尊重。 | `/opt/admin/socat` |

332 373 

333#### Sandbox 路徑前綴374<h4 id="sandbox-path-prefixes">

375 Sandbox 路徑前綴

376</h4>

334 377 

335`filesystem.allowWrite`、`filesystem.denyWrite`、`filesystem.denyRead` 和 `filesystem.allowRead` 中的路徑支援這些前綴:378`filesystem.allowWrite`、`filesystem.denyWrite`、`filesystem.denyRead` 和 `filesystem.allowRead` 中的路徑支援這些前綴:

336 379 


371* **`sandbox.filesystem` 設定**(如上所示):在 OS 層級 sandbox 邊界控制路徑。這些限制適用於所有子流程命令(例如 `kubectl`、`terraform`、`npm`),而不僅僅是 Claude 的檔案工具。414* **`sandbox.filesystem` 設定**(如上所示):在 OS 層級 sandbox 邊界控制路徑。這些限制適用於所有子流程命令(例如 `kubectl`、`terraform`、`npm`),而不僅僅是 Claude 的檔案工具。

372* **權限規則**:使用 `Edit` 允許/拒絕規則控制 Claude 的檔案工具存取,`Read` 拒絕規則阻止讀取,`WebFetch` 允許/拒絕規則控制網路網域。這些規則中的路徑也會合併到 sandbox 設定中。415* **權限規則**:使用 `Edit` 允許/拒絕規則控制 Claude 的檔案工具存取,`Read` 拒絕規則阻止讀取,`WebFetch` 允許/拒絕規則控制網路網域。這些規則中的路徑也會合併到 sandbox 設定中。

373 416 

374### 歸屬設定417<h3 id="attribution-settings">

418 歸屬設定

419</h3>

375 420 

376Claude Code 將歸屬新增到 git 提交和拉取請求。這些分別設定:421Claude Code 將歸屬新增到 git 提交和拉取請求。這些分別設定:

377 422 


412 `attribution` 設定優先於已棄用的 `includeCoAuthoredBy` 設定。若要隱藏所有歸屬,請將 `commit` 和 `pr` 設定為空字串。457 `attribution` 設定優先於已棄用的 `includeCoAuthoredBy` 設定。若要隱藏所有歸屬,請將 `commit` 和 `pr` 設定為空字串。

413</Note>458</Note>

414 459 

415### 檔案建議設定460<h3 id="file-suggestion-settings">

461 檔案建議設定

462</h3>

416 463 

417為 `@` 檔案路徑自動完成設定自訂命令。內建檔案建議使用快速檔案系統遍歷,但大型 monorepos 可能受益於專案特定的索引,例如預先建立的檔案索引或自訂工具。464為 `@` 檔案路徑自動完成設定自訂命令。內建檔案建議使用快速檔案系統遍歷,但大型 monorepos 可能受益於專案特定的索引,例如預先建立的檔案索引或自訂工具。

418 465 


447your-repo-file-index --query "$query" | head -20494your-repo-file-index --query "$query" | head -20

448```495```

449 496 

450### Hook 設定497<h3 id="hook-configuration">

498 Hook 設定

499</h3>

451 500 

452這些設定控制允許執行哪些 hooks 以及 HTTP hooks 可以存取的內容。`allowManagedHooksOnly` 設定只能在 [managed 設定](#settings-files)中設定。URL 和環境變數白名單可以在任何設定層級設定,並跨來源合併。501這些設定控制允許執行哪些 hooks 以及 HTTP hooks 可以存取的內容。`allowManagedHooksOnly` 設定只能在 [managed 設定](#settings-files)中設定。URL 和環境變數白名單可以在任何設定層級設定,並跨來源合併。

453 502 


477}526}

478```527```

479 528 

480### 使用政策協助程式計算 managed 設定529<h3 id="compute-managed-settings-with-a-policy-helper">

530 使用政策協助程式計算 managed 設定

531</h3>

481 532 

482`policyHelper` 設定指向在啟動時計算 managed 設定的可執行檔,因此管理員可以從裝置狀態、身份或遠端服務衍生政策,而不是靜態檔案。從 MDM 或系統 `managed-settings.json` 檔案設定它。Claude Code 在任何其他範圍中出現 `policyHelper` 時會忽略它,包括使用者設定、專案設定、HKCU 登錄 hive 和[伺服器管理的設定](/zh-TW/server-managed-settings)。533`policyHelper` 設定指向在啟動時計算 managed 設定的可執行檔,因此管理員可以從裝置狀態、身份或遠端服務衍生政策,而不是靜態檔案。從 MDM 或系統 `managed-settings.json` 檔案設定它。Claude Code 在任何其他範圍中出現 `policyHelper` 時會忽略它,包括使用者設定、專案設定、HKCU 登錄 hive 和[伺服器管理的設定](/zh-TW/server-managed-settings)。

483 534 


503 554 

504當協助程式發出 `managedSettings` 時,該物件會替換該執行的檔案型 managed 設定。當協助程式在啟動時以非零狀態結束時,Claude Code 會列印錯誤並拒絕啟動,因此需要中斷恢復能力的協助程式應從自己的快取提供並以 `0` 結束。555當協助程式發出 `managedSettings` 時,該物件會替換該執行的檔案型 managed 設定。當協助程式在啟動時以非零狀態結束時,Claude Code 會列印錯誤並拒絕啟動,因此需要中斷恢復能力的協助程式應從自己的快取提供並以 `0` 結束。

505 556 

506### 設定優先順序557<h3 id="settings-precedence">

558 設定優先順序

559</h3>

507 560 

508設定按優先順序順序應用。從最高到最低:561設定按優先順序順序應用。從最高到最低:

509 562 


533 **陣列設定跨範圍合併。** 當相同的陣列值設定(例如 `sandbox.filesystem.allowWrite` 或 `permissions.allow`)出現在多個範圍中時,陣列會**連接和去重**,而不是替換。這意味著較低優先順序的範圍可以新增項目而不覆蓋由較高優先順序範圍設定的項目,反之亦然。例如,如果 managed 設定將 `allowWrite` 設定為 `["/opt/company-tools"]`,使用者新增 `["~/.kube"]`,則最終設定中包含兩個路徑。586 **陣列設定跨範圍合併。** 當相同的陣列值設定(例如 `sandbox.filesystem.allowWrite` 或 `permissions.allow`)出現在多個範圍中時,陣列會**連接和去重**,而不是替換。這意味著較低優先順序的範圍可以新增項目而不覆蓋由較高優先順序範圍設定的項目,反之亦然。例如,如果 managed 設定將 `allowWrite` 設定為 `["/opt/company-tools"]`,使用者新增 `["~/.kube"]`,則最終設定中包含兩個路徑。

534</Note>587</Note>

535 588 

536### 驗證使用中的設定589<h3 id="verify-active-settings">

590 驗證使用中的設定

591</h3>

537 592 

538在 Claude Code 內執行 `/status` 以查看哪些設定來源處於使用中。狀態標籤包含 `Setting sources` 行,列出 Claude Code 為目前工作階段載入的每一層,例如 `User settings` 或 `Project local settings`。當[managed 設定](/zh-TW/managed-settings)生效時,項目會在括號中顯示傳遞頻道,例如 `Enterprise managed settings (remote)`、`(plist)`、`(HKLM)`、`(HKCU)` 或 `(file)`。只有當該來源至少載入一個金鑰時,層級才會出現在清單中,因此空清單表示未找到任何設定來源。593在 Claude Code 內執行 `/status` 以查看哪些設定來源處於使用中。狀態標籤包含 `Setting sources` 行,列出 Claude Code 為目前工作階段載入的每一層,例如 `User settings` 或 `Project local settings`。當[managed 設定](/zh-TW/managed-settings)生效時,項目會在括號中顯示傳遞頻道,例如 `Enterprise managed settings (remote)`、`(plist)`、`(HKLM)`、`(HKCU)` 或 `(file)`。只有當該來源至少載入一個金鑰時,層級才會出現在清單中,因此空清單表示未找到任何設定來源。

539 594 

540`Setting sources` 行確認正在讀取哪些來源。它不顯示哪一層提供了每個個別金鑰。同一對話框中的 Config 標籤是固定切換集(例如主題和詳細輸出)的編輯器,而不是您 `settings.json` 內容的檢視。如果設定檔案包含錯誤(例如無效的 JSON 或驗證失敗的值),`/status` 會報告問題,以便您可以修復它。595`Setting sources` 行確認正在讀取哪些來源。它不顯示哪一層提供了每個個別金鑰。同一對話框中的 Config 標籤是固定切換集(例如主題和詳細輸出)的編輯器,而不是您 `settings.json` 內容的檢視。如果設定檔案包含錯誤(例如無效的 JSON 或驗證失敗的值),`/status` 會報告問題,以便您可以修復它。

541 596 

542### 設定系統的關鍵要點597<h3 id="key-points-about-the-configuration-system">

598 設定系統的關鍵要點

599</h3>

543 600 

544* **記憶檔案(`CLAUDE.md`)**:包含 Claude 在啟動時載入的指示和內容601* **記憶檔案(`CLAUDE.md`)**:包含 Claude 在啟動時載入的指示和內容

545* **設定檔案(JSON)**:設定權限、環境變數和工具行為602* **設定檔案(JSON)**:設定權限、環境變數和工具行為


548* **優先順序**:較高層級的設定(Managed)覆蓋較低層級的設定(User/Project)605* **優先順序**:較高層級的設定(Managed)覆蓋較低層級的設定(User/Project)

549* **繼承**:設定會合併,更具體的設定新增到或覆蓋更廣泛的設定606* **繼承**:設定會合併,更具體的設定新增到或覆蓋更廣泛的設定

550 607 

551### 系統提示608<h3 id="system-prompt">

609 系統提示

610</h3>

552 611 

553Claude Code 的內部系統提示未發佈。若要新增自訂指示,請使用 `CLAUDE.md` 檔案或 `--append-system-prompt` 旗標。612Claude Code 的內部系統提示未發佈。若要新增自訂指示,請使用 `CLAUDE.md` 檔案或 `--append-system-prompt` 旗標。

554 613 

555### 排除敏感檔案614<h3 id="excluding-sensitive-files">

615 排除敏感檔案

616</h3>

556 617 

557若要防止 Claude Code 存取包含敏感資訊(如 API 金鑰、機密和環境檔案)的檔案,請在您的 `.claude/settings.json` 檔案中使用 `permissions.deny` 設定:618若要防止 Claude Code 存取包含敏感資訊(如 API 金鑰、機密和環境檔案)的檔案,請在您的 `.claude/settings.json` 檔案中使用 `permissions.deny` 設定:

558 619 


572 633 

573這取代了已棄用的 `ignorePatterns` 設定。符合這些模式的檔案會從檔案發現和搜尋結果中排除,並拒絕對這些檔案的讀取操作。634這取代了已棄用的 `ignorePatterns` 設定。符合這些模式的檔案會從檔案發現和搜尋結果中排除,並拒絕對這些檔案的讀取操作。

574 635 

575## Subagent 設定636<h2 id="subagent-configuration">

637 Subagent 設定

638</h2>

576 639 

577Claude Code 支援可在使用者和專案層級設定的自訂 AI subagents。這些 subagents 儲存為具有 YAML frontmatter 的 Markdown 檔案:640Claude Code 支援可在使用者和專案層級設定的自訂 AI subagents。這些 subagents 儲存為具有 YAML frontmatter 的 Markdown 檔案:

578 641 


581 644 

582Subagent 檔案定義具有自訂提示和工具權限的專門 AI 助手。在 [subagents 文件](/zh-TW/sub-agents)中深入了解建立和使用 subagents。645Subagent 檔案定義具有自訂提示和工具權限的專門 AI 助手。在 [subagents 文件](/zh-TW/sub-agents)中深入了解建立和使用 subagents。

583 646 

584## Plugin 設定647<h2 id="plugin-configuration">

648 Plugin 設定

649</h2>

585 650 

586Claude Code 支援 plugin 系統,可讓您使用 skills、agents、hooks 和 MCP servers 擴展功能。Plugins 透過 marketplaces 分發,可以在使用者和儲存庫層級設定。651Claude Code 支援 plugin 系統,可讓您使用 skills、agents、hooks 和 MCP servers 擴展功能。Plugins 透過 marketplaces 分發,可以在使用者和儲存庫層級設定。

587 652 

588### Plugin 設定653<h3 id="plugin-settings">

654 Plugin 設定

655</h3>

589 656 

590`settings.json` 中的 plugin 相關設定:657`settings.json` 中的 plugin 相關設定:

591 658 


607}674}

608```675```

609 676 

610#### `enabledPlugins`677<h4 id="enabledplugins">

678 `enabledPlugins`

679</h4>

611 680 

612控制啟用哪些 plugins。格式:`"plugin-name@marketplace-name": true/false`681控制啟用哪些 plugins。格式:`"plugin-name@marketplace-name": true/false`。沒有在任何範圍中有項目的 plugin 會回退到其 [`defaultEnabled`](/zh-TW/plugins-reference#default-enablement) 值。

613 682 

614**範圍**:683**範圍**:

615 684 


636}705}

637```706```

638 707 

639#### `extraKnownMarketplaces`708<h4 id="extraknownmarketplaces">

709 `extraKnownMarketplaces`

710</h4>

640 711 

641定義應為儲存庫提供的其他 marketplaces。通常在儲存庫層級設定中使用,以確保團隊成員有權存取所需的 plugin 來源。712定義應為儲存庫提供的其他 marketplaces。通常在儲存庫層級設定中使用,以確保團隊成員有權存取所需的 plugin 來源。

642 713 


676* `hostPattern`:正規表達式模式以符合 marketplace 主機(使用 `hostPattern`)747* `hostPattern`:正規表達式模式以符合 marketplace 主機(使用 `hostPattern`)

677* `settings`:直接在 settings.json 中宣告的內嵌 marketplace,無需單獨的託管儲存庫(使用 `name` 和 `plugins`)748* `settings`:直接在 settings.json 中宣告的內嵌 marketplace,無需單獨的託管儲存庫(使用 `name` 和 `plugins`)

678 749 

750對於 `github` 和 `git` 來源,在 `source` 物件內設定 `"skipLfs": true`(與 `repo` 或 `url` 並列)以在 Claude Code 複製或更新 marketplace 儲存庫時跳過 Git LFS 下載。LFS 指標檔案保持為指標而不是下載其內容。當儲存庫包含與 plugin 內容無關的大型 LFS 物件時,請使用此選項。{/* min-version: 2.1.153 */}需要 Claude Code v2.1.153 或更新版本。

751 

679每個 marketplace 項目也接受選用的 `autoUpdate` 布林值。在 `source` 旁邊設定 `"autoUpdate": true`,使 Claude Code 在啟動時重新整理該 marketplace 並更新其已安裝的 plugins。省略時,官方 Anthropic marketplaces 預設為 `true`,所有其他 marketplaces 預設為 `false`。請參閱[設定自動更新](/zh-TW/discover-plugins#configure-auto-updates)。752每個 marketplace 項目也接受選用的 `autoUpdate` 布林值。在 `source` 旁邊設定 `"autoUpdate": true`,使 Claude Code 在啟動時重新整理該 marketplace 並更新其已安裝的 plugins。省略時,官方 Anthropic marketplaces 預設為 `true`,所有其他 marketplaces 預設為 `false`。請參閱[設定自動更新](/zh-TW/discover-plugins#configure-auto-updates)。

680 753 

681使用 `source: 'settings'` 宣告一小組 plugins,無需設定託管 marketplace 儲存庫。此處列出的 Plugins 必須參考外部來源,例如 GitHub 或 npm。您仍需要在 `enabledPlugins` 中分別啟用每個 plugin。754使用 `source: 'settings'` 宣告一小組 plugins,無需設定託管 marketplace 儲存庫。此處列出的 Plugins 必須參考外部來源,例如 GitHub 或 npm。您仍需要在 `enabledPlugins` 中分別啟用每個 plugin。


702}775}

703```776```

704 777 

705#### `strictKnownMarketplaces`778<h4 id="strictknownmarketplaces">

779 `strictKnownMarketplaces`

780</h4>

706 781 

707**Managed 設定僅限**:控制使用者可以新增和安裝 plugins 的 plugin marketplaces。此設定只能在 [managed 設定](/zh-TW/settings#settings-files)中設定,並為管理員提供對 marketplace 來源的嚴格控制。782**Managed 設定僅限**:控制使用者可以新增和安裝 plugins 的 plugin marketplaces。此設定只能在 [managed 設定](/zh-TW/settings#settings-files)中設定,並為管理員提供對 marketplace 來源的嚴格控制。

708 783 


951 1026 

952請參閱 [Managed marketplace 限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions)以了解面向使用者的文件。1027請參閱 [Managed marketplace 限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions)以了解面向使用者的文件。

953 1028 

954### 管理 plugins1029<h4 id="strictpluginonlycustomization">

1030 `strictPluginOnlyCustomization`

1031</h4>

1032 

1033**Managed 設定僅限**:阻止 skills、agents、hooks 和 MCP servers 來自使用者和專案來源,因此它們只能來自 plugins 或 managed 設定。將其與 `strictKnownMarketplaces` 結合以控制完整的自訂供應鏈:marketplace 白名單控制使用者可以安裝哪些 plugins,此設定阻止所有不來自 plugin 或 managed 設定的內容。

1034 

1035<Note>

1036 `strictPluginOnlyCustomization` 需要 Claude Code v2.1.82 或更新版本。較早的版本會忽略該鍵並繼續載入使用者和專案自訂,因此鎖定在用戶端更新之前不會強制執行。

1037</Note>

1038 

1039該值要麼是 `true` 以鎖定所有四個表面,要麼是命名要鎖定的表面的陣列:

1040 

1041```json theme={null}

1042{

1043 "strictPluginOnlyCustomization": ["skills", "hooks"]

1044}

1045```

1046 

1047對於每個鎖定的表面,Claude Code 會跳過使用者層級和專案層級的來源,並僅載入 plugin 提供的和 managed 來源:

1048 

1049| 表面 | 鎖定時被阻止 | 仍然載入 |

1050| :------- | :---------------------------------------- | :------------------------------------------------------------------ |

1051| `skills` | `~/.claude/skills/`、`.claude/skills/` | Plugin skills、bundled skills、managed 政策目錄中的 skills |

1052| `agents` | `~/.claude/agents/`、`.claude/agents/` | Plugin agents、內建 agents、managed 政策目錄中的 agents |

1053| `hooks` | 使用者、專案和本機 `settings.json` 中的 Hooks | Plugin hooks、managed 設定中的 hooks |

1054| `mcp` | `~/.claude.json` 和 `.mcp.json` 中的 Servers | Plugin MCP servers、[`managed-mcp.json`](/zh-TW/managed-mcp) servers |

1055 

1056Claude Code 版本不識別的表面名稱會被忽略而不是導致設定檔案失敗,因此您可以在所有用戶端更新之前新增新的表面名稱。

1057 

1058<h3 id="managing-plugins">

1059 管理 plugins

1060</h3>

955 1061 

956使用 `/plugin` 命令以互動方式管理 plugins:1062使用 `/plugin` 命令以互動方式管理 plugins:

957 1063 


963 1069 

964在 [plugins 文件](/zh-TW/plugins)中深入了解 plugin 系統。1070在 [plugins 文件](/zh-TW/plugins)中深入了解 plugin 系統。

965 1071 

966## 環境變數1072<h2 id="environment-variables">

1073 環境變數

1074</h2>

967 1075 

968環境變數可讓您控制 Claude Code 行為,而無需編輯設定檔案。任何變數也可以在 [`settings.json`](#available-settings) 中的 `env` 金鑰下設定,以將其應用於每個工作階段或推出到您的團隊。1076環境變數可讓您控制 Claude Code 行為,而無需編輯設定檔案。任何變數也可以在 [`settings.json`](#available-settings) 中的 `env` 金鑰下設定,以將其應用於每個工作階段或推出到您的團隊。

969 1077 

970請參閱[環境變數參考](/zh-TW/env-vars)以了解完整清單。1078請參閱[環境變數參考](/zh-TW/env-vars)以了解完整清單。

971 1079 

972## Claude 可用的工具1080<h2 id="tools-available-to-claude">

1081 Claude 可用的工具

1082</h2>

973 1083 

974Claude Code 可以存取一組工具,用於讀取、編輯、搜尋、執行命令和協調 subagents。工具名稱是您在權限規則和 hook 匹配器中使用的確切字串。1084Claude Code 可以存取一組工具,用於讀取、編輯、搜尋、執行命令和協調 subagents。工具名稱是您在權限規則和 hook 匹配器中使用的確切字串。

975 1085 

976請參閱[工具參考](/zh-TW/tools-reference)以了解完整清單和 Bash 工具行為詳細資訊。1086請參閱[工具參考](/zh-TW/tools-reference)以了解完整清單和 Bash 工具行為詳細資訊。

977 1087 

978## 另請參閱1088<h2 id="see-also">

1089 另請參閱

1090</h2>

979 1091 

980* [Permissions](/zh-TW/permissions):權限系統、規則語法、工具特定模式和 managed 政策1092* [Permissions](/zh-TW/permissions):權限系統、規則語法、工具特定模式和 managed 政策

981* [Authentication](/zh-TW/authentication):設定使用者對 Claude Code 的存取1093* [Authentication](/zh-TW/authentication):設定使用者對 Claude Code 的存取

setup.md +99 −38

Details

8 8 

9本頁涵蓋系統需求、平台特定安裝詳情、更新和卸載。如需首次會話的引導式逐步說明,請參閱[快速入門](/zh-TW/quickstart)。如果您從未使用過終端機,請參閱[終端機指南](/zh-TW/terminal-guide)。9本頁涵蓋系統需求、平台特定安裝詳情、更新和卸載。如需首次會話的引導式逐步說明,請參閱[快速入門](/zh-TW/quickstart)。如果您從未使用過終端機,請參閱[終端機指南](/zh-TW/terminal-guide)。

10 10 

11## 系統需求11<h2 id="system-requirements">

12 系統需求

13</h2>

12 14 

13Claude Code 在以下平台和配置上運行:15Claude Code 在以下平台和配置上運行:

14 16 


20 * Alpine Linux 3.19+22 * Alpine Linux 3.19+

21* **硬體**:4 GB+ RAM、x64 或 ARM64 處理器23* **硬體**:4 GB+ RAM、x64 或 ARM64 處理器

22* **網路**:需要網際網路連線。請參閱[網路配置](/zh-TW/network-config#network-access-requirements)。24* **網路**:需要網際網路連線。請參閱[網路配置](/zh-TW/network-config#network-access-requirements)。

23* **Shell**:Bash、Zsh、PowerShell 或 CMD。在原生 Windows 上,建議使用 [Git for Windows](https://git-scm.com/downloads/win);當 Git Bash 不存在時,Claude Code 會回退到 PowerShell。WSL 設定不需要 Git for Windows。25* **Shell**:Bash、Zsh、PowerShell 或 CMD。

24* **位置**:[Anthropic 支援的國家](https://www.anthropic.com/supported-countries)26* **位置**:[Anthropic 支援的國家](https://www.anthropic.com/supported-countries)

25 27 

26### 其他依賴項28<h3 id="additional-dependencies">

29 其他依賴項

30</h3>

27 31 

28* **ripgrep**:通常包含在 Claude Code 中。如果搜尋失敗,請參閱[搜尋疑難排解](/zh-TW/troubleshooting#search-and-discovery-issues)。32* **ripgrep**:通常包含在 Claude Code 中。如果搜尋失敗,請參閱[搜尋疑難排解](/zh-TW/troubleshooting#search-and-discovery-issues)。

29 33 

30## 安裝 Claude Code34<h2 id="install-claude-code">

35 安裝 Claude Code

36</h2>

31 37 

32<Tip>38<Tip>

33 偏好圖形介面?[桌面應用程式](/zh-TW/desktop-quickstart)讓您無需終端機即可使用 Claude Code。下載適用於 [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) 或 [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) 的版本。39 偏好圖形介面?[桌面應用程式](/zh-TW/desktop-quickstart)讓您無需終端機即可使用 Claude Code。下載適用於 [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) 或 [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) 的版本。


99 105 

100如果您在安裝期間遇到任何問題,請參閱[疑難排解安裝和登入](/zh-TW/troubleshoot-install)。106如果您在安裝期間遇到任何問題,請參閱[疑難排解安裝和登入](/zh-TW/troubleshoot-install)。

101 107 

102### 在 Windows 上設定108<h3 id="set-up-on-windows">

109 在 Windows 上設定

110</h3>

103 111 

104您可以在 Windows 上原生執行 Claude Code 或在 WSL 內執行。根據您的專案位置和所需功能進行選擇:112您可以在 Windows 上原生執行 Claude Code 或在 WSL 內執行。根據您的專案位置和所需功能進行選擇:

105 113 

106| 選項 | 需要 | [沙箱](/zh-TW/sandboxing) | 何時使用 |114| 選項 | 需要 | [沙箱](/zh-TW/sandboxing) | 何時使用 |

107| ---------- | -------------------------------------------------------------------------- | ----------------------- | ----------------- |115| ---------- | ---------------------------------------------------------- | ----------------------- | ----------------- |

108| 原生 Windows | [Git for Windows](https://git-scm.com/downloads/win) 建議;如果沒有則使用 PowerShell | 不支援 | Windows 原生專案和工具 |116| 原生 Windows | 無;[Git for Windows](https://git-scm.com/downloads/win) 為選用 | 不支援 | Windows 原生專案和工具 |

109| WSL 2 | WSL 2 已啟用 | 支援 | Linux 工具鏈或沙箱化命令執行 |117| WSL 2 | WSL 2 已啟用 | 支援 | Linux 工具鏈或沙箱化命令執行 |

110| WSL 1 | WSL 1 已啟用 | 不支援 | 如果 WSL 2 無法使用 |118| WSL 1 | WSL 1 已啟用 | 不支援 | 如果 WSL 2 無法使用 |

111 119 

112**選項 1:使用 Git Bash 的原生 Windows**120**選項 1:原生 Windows**

113 121 

114安裝 [Git for Windows](https://git-scm.com/downloads/win),然後從 PowerShell CMD 執行安裝命令。您不需要以系統管理員身分執行122從 PowerShell 或 CMD 執行安裝命令。您不需要以系統管理員身分執行。安裝 [Git for Windows](https://git-scm.com/downloads/win) 為選用。它透過提供 Git Bash 來啟用 [Bash 工具](/zh-TW/tools-reference#bash-tool-behavior)

115 123 

116無論您從 PowerShell 還是 CMD 安裝,只會影響您執行的安裝命令。您的提示在 PowerShell 中顯示 `PS C:\Users\YourName>`,在 CMD 中顯示 `C:\Users\YourName>`(沒有 `PS`)。如果您是終端機新手,[終端機指南](/zh-TW/terminal-guide#windows)會逐步說明每個步驟。124無論您從 PowerShell 還是 CMD 安裝,只會影響您執行的安裝命令。您的提示在 PowerShell 中顯示 `PS C:\Users\YourName>`,在 CMD 中顯示 `C:\Users\YourName>`(沒有 `PS`)。如果您是終端機新手,[終端機指南](/zh-TW/terminal-guide#windows)會逐步說明每個步驟。

117 125 

118安裝後,從 PowerShell、CMD 或 Git Bash 啟動 `claude`。安裝 Git Bash 時,Claude Code 在內部使用它來執行命令,無論您從何處啟動它。如果 Claude Code 找不到您的 Git Bash 安裝,請在您的 [settings.json 檔案](/zh-TW/settings)中設定路徑:126安裝後,從任何終端機啟動 `claude`。

119 127 

120```json theme={null}128* **沒有 Git for Windows**,Claude Code 透過 [PowerShell 工具](/zh-TW/tools-reference#powershell-tool)執行 shell 命令。

121{129* **有 Git for Windows**,Claude Code 使用 Git Bash 來執行 [Bash 工具](/zh-TW/tools-reference#bash-tool-behavior)。如果 Claude Code 找不到 Git Bash,請在您的 [settings.json 檔案](/zh-TW/settings)中設定路徑:

130 

131 ```json theme={null}

132 {

122 "env": {133 "env": {

123 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"134 "CLAUDE_CODE_GIT_BASH_PATH": "C:\\Program Files\\Git\\bin\\bash.exe"

124 }135 }

125}136 }

126```137 ```

127 138 

128Claude Code 也可以在 Windows 上原生執行 PowerShell。安裝 Git Bash 時,PowerShell 工具正在逐步推出作為額外選項:設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` 以選擇加入或 `0` 以選擇退出。請參閱 [PowerShell tool](/zh-TW/tools-reference#powershell-tool) 以了解設定和限制。139安裝 Git for Windows 時,PowerShell 工具正在逐步推出作為 Bash 的額外選項。設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` 以選擇加入或 `0` 以選擇退出。請參閱 [PowerShell tool](/zh-TW/tools-reference#powershell-tool) 以了解設定和限制。

129 140 

130**選項 2:WSL**141**選項 2:WSL**

131 142 

132開啟您的 WSL 發行版本並從上面的[安裝說明](#install-claude-code)執行 Linux 安裝程式。您在 WSL 終端機內安裝和啟動 `claude`,而不是從 PowerShell 或 CMD。143開啟您的 WSL 發行版本並從上面的[安裝說明](#install-claude-code)執行 Linux 安裝程式。您在 WSL 終端機內安裝和啟動 `claude`,而不是從 PowerShell 或 CMD。

133 144 

134### Alpine Linux 和 musl 型發行版145<h3 id="alpine-linux-and-musl-based-distributions">

146 Alpine Linux 和 musl 型發行版

147</h3>

135 148 

136Alpine 和其他 musl/uClibc 型發行版上的原生安裝程式需要 `libgcc`、`libstdc++` 和 `ripgrep`。使用您的發行版套件管理員安裝這些,然後設定 `USE_BUILTIN_RIPGREP=0`。149Alpine 和其他 musl/uClibc 型發行版上的原生安裝程式需要 `libgcc`、`libstdc++` 和 `ripgrep`。使用您的發行版套件管理員安裝這些,然後設定 `USE_BUILTIN_RIPGREP=0`。

137 150 


151}164}

152```165```

153 166 

154## 驗證您的安裝167<h2 id="verify-your-installation">

168 驗證您的安裝

169</h2>

155 170 

156安裝後,確認 Claude Code 正常運作:171安裝後,確認 Claude Code 正常運作:

157 172 


167claude doctor182claude doctor

168```183```

169 184 

170## 驗證身份185<h2 id="authenticate">

186 驗證身份

187</h2>

171 188 

172Claude Code 需要 Pro、Max、Team、Enterprise 或 Console 帳戶。免費的 Claude.ai 方案不包括 Claude Code 存取權。您也可以透過第三方 API 提供者(如 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/zh-TW/microsoft-foundry))使用 Claude Code。189Claude Code 需要 Pro、Max、Team、Enterprise 或 Console 帳戶。免費的 Claude.ai 方案不包括 Claude Code 存取權。您也可以透過第三方 API 提供者(如 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/zh-TW/microsoft-foundry))使用 Claude Code。

173 190 

174安裝後,執行 `claude` 並按照瀏覽器提示登入。請參閱[驗證](/zh-TW/authentication)以了解所有帳戶類型和團隊設定選項。191安裝後,執行 `claude` 並按照瀏覽器提示登入。請參閱[驗證](/zh-TW/authentication)以了解所有帳戶類型和團隊設定選項。

175 192 

176## 更新 Claude Code193<h2 id="update-claude-code">

194 更新 Claude Code

195</h2>

177 196 

178原生安裝會在背景自動更新。您可以[配置發行版本通道](#configure-release-channel)來控制您是立即接收更新還是按延遲穩定時間表接收,或[完全停用自動更新](#disable-auto-updates)。Homebrew、WinGet 和[Linux 套件管理員](#install-with-linux-package-managers)安裝預設需要手動更新。197原生安裝會在背景自動更新。您可以[配置發行版本通道](#configure-release-channel)來控制您是立即接收更新還是按延遲穩定時間表接收,或[完全停用自動更新](#disable-auto-updates)。Homebrew、WinGet 和[Linux 套件管理員](#install-with-linux-package-managers)安裝預設需要手動更新。

179 198 

180### 自動更新199<h3 id="auto-updates">

200 自動更新

201</h3>

181 202 

182Claude Code 在啟動時和執行期間定期檢查更新。更新會在背景下載和安裝,然後在您下次啟動 Claude Code 時生效。203Claude Code 在啟動時和執行期間定期檢查更新。更新會在背景下載和安裝,然後在您下次啟動 Claude Code 時生效。

183 204 

205執行 `claude doctor` 以查看最近更新嘗試的結果。

206 

207如果 npm 全域安裝因為 npm 全域目錄不可寫而無法自動更新,Claude Code 會在啟動時顯示一次性通知,而 `claude doctor` 會列出可用的修復。詳見[安裝期間的權限錯誤](/zh-TW/troubleshoot-install#permission-errors-during-installation)。

208 

184<Note>209<Note>

185 Homebrew、WinGet、apt、dnf 和 apk 安裝預設不會自動更新;請參閱下方以選擇加入 Homebrew 和 WinGet。若要手動升級 Homebrew,請執行 `brew upgrade claude-code` 或 `brew upgrade claude-code@latest`,取決於您安裝的 cask。對於 WinGet,請執行 `winget upgrade Anthropic.ClaudeCode`。對於 Linux 套件管理員,請參閱[使用 Linux 套件管理員安裝](#install-with-linux-package-managers)中的升級命令。210 Homebrew、WinGet、apt、dnf 和 apk 安裝預設不會自動更新;請參閱下方以選擇加入 Homebrew 和 WinGet。若要手動升級 Homebrew,請執行 `brew upgrade claude-code` 或 `brew upgrade claude-code@latest`,取決於您安裝的 cask。對於 WinGet,請執行 `winget upgrade Anthropic.ClaudeCode`。對於 Linux 套件管理員,請參閱[使用 Linux 套件管理員安裝](#install-with-linux-package-managers)中的升級命令。

186 211 


193 Homebrew 在升級後會將舊版本保留在磁碟上。定期執行 `brew cleanup` 以回收磁碟空間。218 Homebrew 在升級後會將舊版本保留在磁碟上。定期執行 `brew cleanup` 以回收磁碟空間。

194</Note>219</Note>

195 220 

196### 配置發行版本通道221<h3 id="configure-release-channel">

222 配置發行版本通道

223</h3>

197 224 

198使用 `autoUpdatesChannel` 設定控制 Claude Code 為自動更新和 `claude update` 遵循的發行版本通道:225使用 `autoUpdatesChannel` 設定控制 Claude Code 為自動更新和 `claude update` 遵循的發行版本通道:

199 226 


212 239 

213Homebrew 安裝根據 cask 名稱而不是此設定選擇通道:`claude-code` 追蹤穩定版本,`claude-code@latest` 追蹤最新版本。240Homebrew 安裝根據 cask 名稱而不是此設定選擇通道:`claude-code` 追蹤穩定版本,`claude-code@latest` 追蹤最新版本。

214 241 

215### 固定最低版本242<h3 id="pin-a-minimum-version">

243 固定最低版本

244</h3>

216 245 

217`minimumVersion` 設定建立一個下限。背景自動更新和 `claude update` 拒絕安裝低於此值的任何版本,因此如果您已經在較新的 `"latest"` 組建上,移至 `"stable"` 通道不會降級您。246`minimumVersion` 設定建立一個下限。背景自動更新和 `claude update` 拒絕安裝低於此值的任何版本,因此如果您已經在較新的 `"latest"` 組建上,移至 `"stable"` 通道不會降級您。

218 247 


229 258 

230在[受管設定](/zh-TW/permissions#managed-settings)中,這會強制執行使用者和專案設定無法覆蓋的組織範圍最低版本。259在[受管設定](/zh-TW/permissions#managed-settings)中,這會強制執行使用者和專案設定無法覆蓋的組織範圍最低版本。

231 260 

232### 停用自動更新261<h3 id="disable-auto-updates">

262 停用自動更新

263</h3>

233 264 

234在您的 [`settings.json`](/zh-TW/settings#available-settings) 檔案的 `env` 鍵中將 `DISABLE_AUTOUPDATER` 設定為 `"1"`:265在您的 [`settings.json`](/zh-TW/settings#available-settings) 檔案的 `env` 鍵中將 `DISABLE_AUTOUPDATER` 設定為 `"1"`:

235 266 


243 274 

244`DISABLE_AUTOUPDATER` 只會停止背景檢查;`claude update` 和 `claude install` 仍然有效。若要阻止所有更新路徑(包括手動更新),請改為設定 [`DISABLE_UPDATES`](/zh-TW/env-vars)。當您透過自己的通道發佈 Claude Code 並需要使用者保持在您提供的版本上時,請使用此選項。275`DISABLE_AUTOUPDATER` 只會停止背景檢查;`claude update` 和 `claude install` 仍然有效。若要阻止所有更新路徑(包括手動更新),請改為設定 [`DISABLE_UPDATES`](/zh-TW/env-vars)。當您透過自己的通道發佈 Claude Code 並需要使用者保持在您提供的版本上時,請使用此選項。

245 276 

246### 手動更新277<h3 id="update-manually">

278 手動更新

279</h3>

247 280 

248若要立即套用更新而不等待下一次背景檢查,請執行:281若要立即套用更新而不等待下一次背景檢查,請執行:

249 282 


251claude update284claude update

252```285```

253 286 

254## 進階安裝選項287<h2 id="advanced-installation-options">

288 進階安裝選項

289</h2>

255 290 

256這些選項適用於版本固定、Linux 套件管理員、npm 和驗證二進位檔案完整性。291這些選項適用於版本固定、Linux 套件管理員、npm 和驗證二進位檔案完整性。

257 292 

258### 安裝特定版本293<h3 id="install-a-specific-version">

294 安裝特定版本

295</h3>

259 296 

260原生安裝程式接受特定版本號或發行版本通道(`latest` 或 `stable`)。您在安裝時選擇的通道將成為自動更新的預設值。請參閱[配置發行版本通道](#configure-release-channel)以取得更多資訊。297原生安裝程式接受特定版本號或發行版本通道(`latest` 或 `stable`)。您在安裝時選擇的通道將成為自動更新的預設值。請參閱[配置發行版本通道](#configure-release-channel)以取得更多資訊。

261 298 


325 </Tab>362 </Tab>

326</Tabs>363</Tabs>

327 364 

328### 使用 Linux 套件管理員安裝365<h3 id="install-with-linux-package-managers">

366 使用 Linux 套件管理員安裝

367</h3>

329 368 

330Claude Code 發佈已簽署的 apt、dnf 和 apk 儲存庫。將 `stable` 替換為 `latest` 以使用滾動通道。套件管理員安裝不會透過 Claude Code 自動更新;更新會透過您的正常系統升級工作流程進行。369Claude Code 發佈已簽署的 apt、dnf 和 apk 儲存庫。將 `stable` 替換為 `latest` 以使用滾動通道。套件管理員安裝不會透過 Claude Code 自動更新;更新會透過您的正常系統升級工作流程進行。

331 370 


386 </Tab>425 </Tab>

387</Tabs>426</Tabs>

388 427 

389### 使用 npm 安裝428<h3 id="install-with-npm">

429 使用 npm 安裝

430</h3>

390 431 

391您也可以將 Claude Code 安裝為全域 npm 套件。該套件需要 [Node.js 18 或更新版本](https://nodejs.org/en/download)。432您也可以將 Claude Code 安裝為全域 npm 套件。該套件需要 [Node.js 18 或更新版本](https://nodejs.org/en/download)。

392 433 


404 請勿使用 `sudo npm install -g`,因為這可能導致權限問題和安全風險。如果您遇到權限錯誤,請參閱[疑難排解權限錯誤](/zh-TW/troubleshoot-install#permission-errors-during-installation)。445 請勿使用 `sudo npm install -g`,因為這可能導致權限問題和安全風險。如果您遇到權限錯誤,請參閱[疑難排解權限錯誤](/zh-TW/troubleshoot-install#permission-errors-during-installation)。

405</Warning>446</Warning>

406 447 

407### 二進位檔案完整性和程式碼簽署448<h3 id="binary-integrity-and-code-signing">

449 二進位檔案完整性和程式碼簽署

450</h3>

408 451 

409每個發佈都會發佈一個 `manifest.json`,其中包含每個平台二進位檔案的 SHA256 校驗和。該資訊清單使用 Anthropic GPG 金鑰簽署,因此驗證資訊清單上的簽名可以傳遞地驗證它列出的每個二進位檔案。452每個發佈都會發佈一個 `manifest.json`,其中包含每個平台二進位檔案的 SHA256 校驗和。該資訊清單使用 Anthropic GPG 金鑰簽署,因此驗證資訊清單上的簽名可以傳遞地驗證它列出的每個二進位檔案。

410 453 

411#### 驗證資訊清單簽名454<h4 id="verify-the-manifest-signature">

455 驗證資訊清單簽名

456</h4>

412 457 

413步驟 1-3 需要具有 `gpg` 和 `curl` 的 POSIX shell。在 Windows 上,在 Git Bash 或 WSL 中執行它們。步驟 4 包括 PowerShell 選項。458步驟 1-3 需要具有 `gpg` 和 `curl` 的 POSIX shell。在 Windows 上,在 Git Bash 或 WSL 中執行它們。步驟 4 包括 PowerShell 選項。

414 459 


485 資訊清單簽名適用於 `2.1.89` 及以後的發佈。較早的發佈在 `manifest.json` 中發佈校驗和,但沒有分離的簽名。530 資訊清單簽名適用於 `2.1.89` 及以後的發佈。較早的發佈在 `manifest.json` 中發佈校驗和,但沒有分離的簽名。

486</Note>531</Note>

487 532 

488#### 平台程式碼簽名533<h4 id="platform-code-signatures">

534 平台程式碼簽名

535</h4>

489 536 

490除了簽署的資訊清單外,個別二進位檔案在支援的地方還帶有平台原生程式碼簽名。537除了簽署的資訊清單外,個別二進位檔案在支援的地方還帶有平台原生程式碼簽名。

491 538 


493* **Windows**:由「Anthropic, PBC」簽署。使用 `Get-AuthenticodeSignature .\claude.exe` 驗證。540* **Windows**:由「Anthropic, PBC」簽署。使用 `Get-AuthenticodeSignature .\claude.exe` 驗證。

494* **Linux**:二進位檔案不是單獨程式碼簽署的。如果您直接從 `claude-code-releases` 儲存庫下載或使用原生安裝程式,請使用上面的資訊清單簽名驗證完整性。如果您使用 [apt、dnf 或 apk](#install-with-linux-package-managers) 安裝,您的套件管理員會使用儲存庫簽署金鑰自動驗證簽名。541* **Linux**:二進位檔案不是單獨程式碼簽署的。如果您直接從 `claude-code-releases` 儲存庫下載或使用原生安裝程式,請使用上面的資訊清單簽名驗證完整性。如果您使用 [apt、dnf 或 apk](#install-with-linux-package-managers) 安裝,您的套件管理員會使用儲存庫簽署金鑰自動驗證簽名。

495 542 

496## 卸載 Claude Code543<h2 id="uninstall-claude-code">

544 卸載 Claude Code

545</h2>

497 546 

498若要移除 Claude Code,請按照您的安裝方法的說明進行。如果之後 `claude` 仍然執行,您可能有第二個安裝或來自舊版安裝程式的遺留 shell 別名。請參閱[檢查衝突的安裝](/zh-TW/troubleshoot-install#check-for-conflicting-installations)以找到並移除它。547若要移除 Claude Code,請按照您的安裝方法的說明進行。如果之後 `claude` 仍然執行,您可能有第二個安裝或來自舊版安裝程式的遺留 shell 別名。請參閱[檢查衝突的安裝](/zh-TW/troubleshoot-install#check-for-conflicting-installations)以找到並移除它。

499 548 

500### 原生安裝549<h3 id="native-installation">

550 原生安裝

551</h3>

501 552 

502移除 Claude Code 二進位檔案和版本檔案:553移除 Claude Code 二進位檔案和版本檔案:

503 554 


517 </Tab>568 </Tab>

518</Tabs>569</Tabs>

519 570 

520### Homebrew 安裝571<h3 id="homebrew-installation">

572 Homebrew 安裝

573</h3>

521 574 

522移除您安裝的 Homebrew cask。如果您安裝了穩定版 cask:575移除您安裝的 Homebrew cask。如果您安裝了穩定版 cask:

523 576 


531brew uninstall --cask claude-code@latest584brew uninstall --cask claude-code@latest

532```585```

533 586 

534### WinGet 安裝587<h3 id="winget-installation">

588 WinGet 安裝

589</h3>

535 590 

536移除 WinGet 套件:591移除 WinGet 套件:

537 592 


539winget uninstall Anthropic.ClaudeCode594winget uninstall Anthropic.ClaudeCode

540```595```

541 596 

542### apt / dnf / apk597<h3 id="apt-/-dnf-/-apk">

598 apt / dnf / apk

599</h3>

543 600 

544移除套件和儲存庫配置:601移除套件和儲存庫配置:

545 602 


567 </Tab>624 </Tab>

568</Tabs>625</Tabs>

569 626 

570### npm627<h3 id="npm">

628 npm

629</h3>

571 630 

572移除全域 npm 套件:631移除全域 npm 套件:

573 632 


575npm uninstall -g @anthropic-ai/claude-code634npm uninstall -g @anthropic-ai/claude-code

576```635```

577 636 

578### 移除配置檔案637<h3 id="remove-configuration-files">

638 移除配置檔案

639</h3>

579 640 

580<Warning>641<Warning>

581 移除配置檔案將刪除您的所有設定、允許的工具、MCP 伺服器配置和會話歷史記錄。642 移除配置檔案將刪除您的所有設定、允許的工具、MCP 伺服器配置和會話歷史記錄。

skills.md +140 −36

Details

11當您不斷將相同的劇本、檢查清單或多步驟程序貼到聊天中時,或當 CLAUDE.md 的某個部分已成長為程序而不是事實時,請建立一個 skill。與 CLAUDE.md 內容不同,skill 的主體僅在使用時載入,因此長參考資料在您需要之前幾乎不花費任何成本。11當您不斷將相同的劇本、檢查清單或多步驟程序貼到聊天中時,或當 CLAUDE.md 的某個部分已成長為程序而不是事實時,請建立一個 skill。與 CLAUDE.md 內容不同,skill 的主體僅在使用時載入,因此長參考資料在您需要之前幾乎不花費任何成本。

12 12 

13<Note>13<Note>

14 對於內建命令(如 `/help` 和 `/compact`)以及捆綁的 skills(如 `/debug` 和 `/simplify`),請參閱[命令參考](/zh-TW/commands)。14 對於內建命令(如 `/help` 和 `/compact`)以及捆綁的 skills(如 `/debug` 和 `/code-review`),請參閱[命令參考](/zh-TW/commands)。

15 15 

16 **自訂命令已合併到 skills 中。** `.claude/commands/deploy.md` 中的檔案和 `.claude/skills/deploy/SKILL.md` 中的 skill 都會建立 `/deploy` 並以相同方式運作。您現有的 `.claude/commands/` 檔案會繼續運作。Skills 新增了可選功能:支援檔案的目錄、[控制您或 Claude 是否叫用它們](#control-who-invokes-a-skill)的 frontmatter,以及 Claude 在相關時自動載入它們的能力。16 **自訂命令已合併到 skills 中。** `.claude/commands/deploy.md` 中的檔案和 `.claude/skills/deploy/SKILL.md` 中的 skill 都會建立 `/deploy` 並以相同方式運作。您現有的 `.claude/commands/` 檔案會繼續運作。Skills 新增了可選功能:支援檔案的目錄、[控制您或 Claude 是否叫用它們](#control-who-invokes-a-skill)的 frontmatter,以及 Claude 在相關時自動載入它們的能力。

17</Note>17</Note>

18 18 

19Claude Code skills 遵循 [Agent Skills](https://agentskills.io) 開放標準,該標準適用於多個 AI 工具。Claude Code 使用額外功能擴展了該標準,例如[叫用控制](#control-who-invokes-a-skill)、[subagent 執行](#run-skills-in-a-subagent)和[動態上下文注入](#inject-dynamic-context)。19Claude Code skills 遵循 [Agent Skills](https://agentskills.io) 開放標準,該標準適用於多個 AI 工具。Claude Code 使用額外功能擴展了該標準,例如[叫用控制](#control-who-invokes-a-skill)、[subagent 執行](#run-skills-in-a-subagent)和[動態上下文注入](#inject-dynamic-context)。

20 20 

21## 捆綁的 skills21<h2 id="bundled-skills">

22 捆綁的 skills

23</h2>

22 24 

23Claude Code 包含一組捆綁的 skills,在每個工作階段中都可用,包括 `/simplify`、`/batch`、`/debug`、`/loop` 和 `/claude-api`。與大多數內建命令不同,內建命令直接執行固定邏輯,捆綁的 skills 是基於提示的:它們為 Claude 提供詳細的劇本,並讓它使用其工具來協調工作。您叫用它們的方式與任何其他 skill 相同,輸入 `/` 後跟 skill 名稱。25Claude Code 包含一組捆綁的 skills,在每個工作階段中都可用,包括 `/code-review`、`/batch`、`/debug`、`/loop` 和 `/claude-api`。與大多數內建命令不同,內建命令直接執行固定邏輯,捆綁的 skills 是基於提示的:它們為 Claude 提供詳細的劇本,並讓它使用其工具來協調工作。您叫用它們的方式與任何其他 skill 相同,輸入 `/` 後跟 skill 名稱。

24 26 

25捆綁的 skills 在[命令參考](/zh-TW/commands)中與內建命令一起列出,在「目的」欄中標記為 **Skill**。27捆綁的 skills 在[命令參考](/zh-TW/commands)中與內建命令一起列出,在「目的」欄中標記為 **Skill**。

26 28 

27## 開始使用29<h3 id="run-and-verify-your-app">

30 執行並驗證您的應用程式

31</h3>

28 32 

29### 建立您的第一個 skill33三個捆綁的 skills 一起工作以啟動您的應用程式,並針對執行中的應用程式確認變更,而不是只針對測試:

34 

35| Skill | 目的 |

36| :--------------------- | :---------------------------------------- |

37| `/run` | 啟動並驅動您的應用程式以查看變更是否有效 |

38| `/verify` | 建置並執行您的應用程式以確認程式碼變更是否執行預期的操作,無需回退到測試或型別檢查 |

39| `/run-skill-generator` | 教導 `/run` 和 `/verify` 如何建置和啟動您的專案 |

40 

41{/* min-version: 2.1.145 */}所有三個 skills 都需要 Claude Code v2.1.145 或更新版本。

42 

43`/run` 和 `/verify` 無需設定即可運作。它們根據您的專案類型(CLI、伺服器、TUI、瀏覽器驅動)以及您的 README、`package.json` 或 `Makefile` 中的內容推斷啟動。該推斷對於需要超出標準啟動的任何內容的專案變得不可靠:資料庫、env 檔案、圖形工作階段、多步驟建置。

44 

45`/run-skill-generator` 改為記錄配方。它從乾淨的環境中讓您的應用程式執行,捕捉有效的內容(安裝命令、env 變數、啟動指令碼),並將其提交為每個專案的 skill,位於 `.claude/skills/run-<name>/`。之後,`/run`、`/verify` 和儲存庫中的任何其他代理都遵循記錄的配方,而不是重新發現它。每個專案執行一次 `/run-skill-generator`,如果建置或啟動程序變更,則再次執行。

46 

47<h2 id="getting-started">

48 開始使用

49</h2>

50 

51<h3 id="create-your-first-skill">

52 建立您的第一個 skill

53</h3>

30 54 

31此範例建立一個 skill,總結您的 git 儲存庫中未提交的變更,並標記任何風險的內容。它在 Claude 讀取之前將即時 diff 拉入提示中,因此回應是基於您的實際工作樹,而不是 Claude 從開啟的檔案中猜測的內容。當您詢問您的變更時,Claude 會自動載入該 skill,或者您可以直接使用 `/summarize-changes` 叫用它。55此範例建立一個 skill,總結您的 git 儲存庫中未提交的變更,並標記任何風險的內容。它在 Claude 讀取之前將即時 diff 拉入提示中,因此回應是基於您的實際工作樹,而不是 Claude 從開啟的檔案中猜測的內容。當您詢問您的變更時,Claude 會自動載入該 skill,或者您可以直接使用 `/summarize-changes` 叫用它。

32 56 


80 </Step>104 </Step>

81</Steps>105</Steps>

82 106 

83### Skills 的位置107<h3 id="where-skills-live">

108 Skills 的位置

109</h3>

84 110 

85您儲存 skill 的位置決定了誰可以使用它:111您儲存 skill 的位置決定了誰可以使用它:

86 112 


93 119 

94當 skills 在各個層級共享相同名稱時,企業會覆蓋個人,個人會覆蓋專案。外掛 skills 使用 `plugin-name:skill-name` 命名空間,因此它們不能與其他層級衝突。如果您在 `.claude/commands/` 中有檔案,它們的運作方式相同,但如果 skill 和命令共享相同名稱,skill 優先。120當 skills 在各個層級共享相同名稱時,企業會覆蓋個人,個人會覆蓋專案。外掛 skills 使用 `plugin-name:skill-name` 命名空間,因此它們不能與其他層級衝突。如果您在 `.claude/commands/` 中有檔案,它們的運作方式相同,但如果 skill 和命令共享相同名稱,skill 優先。

95 121 

96#### 即時變更偵測122<Note>

123 將 `.claude-plugin/plugin.json` 新增到 skill 資料夾,它會載入為名為 `<name>@skills-dir` 的[外掛](/zh-TW/plugins-reference#skills-directory-plugins),因此它可以捆綁代理、hooks 和 MCP 伺服器。在專案的 `.claude/skills/` 中,這需要先接受工作區信任對話。

124</Note>

125 

126<h4 id="live-change-detection">

127 即時變更偵測

128</h4>

97 129 

98Claude Code 監視 skill 目錄以尋找檔案變更。在 `~/.claude/skills/`、專案 `.claude/skills/` 或 `--add-dir` 目錄內的 `.claude/skills/` 中新增、編輯或移除 skill 會在目前工作階段內生效,無需重新啟動。建立在工作階段開始時不存在的頂級 skills 目錄需要重新啟動 Claude Code,以便可以監視新目錄。130Claude Code 監視 skill 目錄以尋找檔案變更。在 `~/.claude/skills/`、專案 `.claude/skills/` 或 `--add-dir` 目錄內的 `.claude/skills/` 中新增、編輯或移除 skill 會在目前工作階段內生效,無需重新啟動。建立在工作階段開始時不存在的頂級 skills 目錄需要重新啟動 Claude Code,以便可以監視新目錄。

99 131 

100#### 從巢狀目錄自動發現132<Note>

133 即時變更偵測僅涵蓋 `SKILL.md` 文字。對於也是[外掛](/zh-TW/plugins-reference#skills-directory-plugins)的 skill 資料夾,`hooks/`、`.mcp.json`、`agents/` 和 `output-styles/` 的變更需要 `/reload-plugins` 才能生效。

134</Note>

135 

136<h4 id="automatic-discovery-from-parent-and-nested-directories">

137 從父目錄和巢狀目錄自動發現

138</h4>

101 139 

102專案 skills 從您的起始目錄中的 `.claude/skills/` 以及直到儲存庫根目錄的每個父目錄中載入,因此在子目錄中啟動 Claude 仍會拾取在根目錄定義的 skills。當您在起始目錄下方的子目錄中使用檔案時,Claude Code 也會按需從巢狀 `.claude/skills/` 目錄發現 skills。例如,如果您正在編輯 `packages/frontend/` 中的檔案,Claude Code 也會在 `packages/frontend/.claude/skills/` 中尋找 skills。這支援 monorepo 設定,其中套件有自己的 skills。140專案 skills 從您的起始目錄中的 `.claude/skills/` 以及直到儲存庫根目錄的每個父目錄中載入,因此在子目錄中啟動 Claude 仍會拾取在根目錄定義的 skills。當您在起始目錄下方的子目錄中使用檔案時,Claude Code 也會按需從巢狀 `.claude/skills/` 目錄發現 skills。例如,如果您正在編輯 `packages/frontend/` 中的檔案,Claude Code 也會在 `packages/frontend/.claude/skills/` 中尋找 skills。這支援 monorepo 設定,其中套件有自己的 skills。

103 141 


119 `.claude/commands/` 中的檔案仍然有效,並支援相同的 [frontmatter](#frontmatter-reference)。建議使用 Skills,因為它們支援額外功能,例如支援檔案。157 `.claude/commands/` 中的檔案仍然有效,並支援相同的 [frontmatter](#frontmatter-reference)。建議使用 Skills,因為它們支援額外功能,例如支援檔案。

120</Note>158</Note>

121 159 

122#### 來自其他目錄的 skills160<h4 id="skills-from-additional-directories">

161 來自其他目錄的 skills

162</h4>

123 163 

124`--add-dir` 旗標[授予檔案存取權](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)而不是設定發現,但 skills 是例外:已新增目錄中的 `.claude/skills/` 會自動載入。請參閱[即時變更偵測](#live-change-detection)以了解編輯在工作階段期間如何被拾取。164`--add-dir` 旗標和 `/add-dir` 命令[授予檔案存取權](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)而不是設定發現,但 skills 是例外:已新增目錄中的 `.claude/skills/` 會自動載入。此例外僅適用於 `--add-dir` 和 `/add-dir`。`settings.json` 中的 `permissions.additionalDirectories` 設定僅授予檔案存取權,不會載入 skills。請參閱[即時變更偵測](#live-change-detection)以了解編輯在工作階段期間如何被拾取。

125 165 

126其他 `.claude/` 設定(例如 subagents、命令和輸出樣式)不會從其他目錄載入。請參閱[例外表](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)以取得完整的載入和未載入內容清單,以及跨專案共享設定的建議方式。166其他 `.claude/` 設定(例如 subagents、命令和輸出樣式)不會從其他目錄載入。請參閱[例外表](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)以取得完整的載入和未載入內容清單,以及跨專案共享設定的建議方式。

127 167 


129 來自 `--add-dir` 目錄的 CLAUDE.md 檔案預設不會載入。若要載入它們,請設定 `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`。請參閱[從其他目錄載入](/zh-TW/memory#load-from-additional-directories)。169 來自 `--add-dir` 目錄的 CLAUDE.md 檔案預設不會載入。若要載入它們,請設定 `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1`。請參閱[從其他目錄載入](/zh-TW/memory#load-from-additional-directories)。

130</Note>170</Note>

131 171 

132## 設定 skills172<h2 id="configure-skills">

173 設定 skills

174</h2>

133 175 

134Skills 透過 `SKILL.md` 頂部的 YAML frontmatter 和隨後的 markdown 內容進行設定。176Skills 透過 `SKILL.md` 頂部的 YAML frontmatter 和隨後的 markdown 內容進行設定。

135 177 

136### Skills 內容的類型178<h3 id="types-of-skill-content">

179 Skills 內容的類型

180</h3>

137 181 

138Skill 檔案可以包含任何說明,但思考您想如何叫用它們有助於指導要包含的內容:182Skill 檔案可以包含任何說明,但思考您想如何叫用它們有助於指導要包含的內容:

139 183 


169 213 

170您的 `SKILL.md` 可以包含任何內容,但思考您想如何叫用該 skill(由您、由 Claude 或兩者)以及您想在哪裡執行它(內聯或在 subagent 中)有助於指導要包含的內容。對於複雜的 skills,您也可以[新增支援檔案](#add-supporting-files)以保持主要 skill 的焦點。214您的 `SKILL.md` 可以包含任何內容,但思考您想如何叫用該 skill(由您、由 Claude 或兩者)以及您想在哪裡執行它(內聯或在 subagent 中)有助於指導要包含的內容。對於複雜的 skills,您也可以[新增支援檔案](#add-supporting-files)以保持主要 skill 的焦點。

171 215 

172保持內容本身簡潔。一旦 skill 載入,其內容[在整個回合中保持在上下文中](#skill-content-lifecycle),因此每一行都是一個重複的令牌成本。陳述要做什麼,而不是敘述如何或為什麼,並應用與您對[CLAUDE.md 內容](/zh-TW/best-practices#write-an-effective-claude-md)所做的相同簡潔性測試。216保持內容本身簡潔。一旦 skill 載入,其內容[在整個回合中保持在上下文中](#skill-content-lifecycle),因此每一行都是一個重複的令牌成本。陳述要做什麼,而不是敘述如何或為什麼,並應用與您對 [CLAUDE.md 內容](/zh-TW/best-practices#write-an-effective-claude-md)所做的相同簡潔性測試。

173 217 

174### Frontmatter 參考218<h3 id="frontmatter-reference">

219 Frontmatter 參考

220</h3>

175 221 

176除了 markdown 內容外,您可以使用 `SKILL.md` 檔案頂部 `---` 標記之間的 YAML frontmatter 欄位來設定 skill 行為:222除了 markdown 內容外,您可以使用 `SKILL.md` 檔案頂部 `---` 標記之間的 YAML frontmatter 欄位來設定 skill 行為:

177 223 


190 236 

191| 欄位 | 必需 | 描述 |237| 欄位 | 必需 | 描述 |

192| :------------------------- | :- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |238| :------------------------- | :- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

193| `name` | 否 | Skill 的顯示名稱如果省略,使用目錄名稱僅限小寫字母、數字和連字號(最多 64 個字元) |239| `name` | 否 | Skill 清單中顯示的顯示名稱預設為目錄名稱請參閱[skill 如何獲得其命令名稱](#how-a-skill-gets-its-command-name)以了解這與您輸入的名稱在 `/` 後的差異 |

194| `description` | 建議 | Skill 的功能以及何時使用它。Claude 使用此來決定何時應用該 skill。如果省略,使用 markdown 內容的第一段。前置關鍵使用案例:結合的 `description` 和 `when_to_use` 文字在 skill 清單中截斷至 1,536 個字元以減少上下文使用。 |240| `description` | 建議 | Skill 的功能以及何時使用它。Claude 使用此來決定何時應用該 skill。如果省略,使用 markdown 內容的第一段。前置關鍵使用案例:結合的 `description` 和 `when_to_use` 文字在 skill 清單中截斷至 1,536 個字元以減少上下文使用。 |

195| `when_to_use` | 否 | Claude 應何時叫用該 skill 的額外上下文,例如觸發短語或範例請求。附加到 skill 清單中的 `description`,並計入 1,536 個字元的上限。 |241| `when_to_use` | 否 | Claude 應何時叫用該 skill 的額外上下文,例如觸發短語或範例請求。附加到 skill 清單中的 `description`,並計入 1,536 個字元的上限。 |

196| `argument-hint` | 否 | 自動完成期間顯示的提示,指示預期的引數。範例:`[issue-number]` 或 `[filename] [format]`。 |242| `argument-hint` | 否 | 自動完成期間顯示的提示,指示預期的引數。範例:`[issue-number]` 或 `[filename] [format]`。 |

197| `arguments` | 否 | 用於 skill 內容中[`$name` 替換](#available-string-substitutions)的具名位置引數。接受空格分隔的字串或 YAML 清單。名稱按順序對應到引數位置。 |243| `arguments` | 否 | 用於 skill 內容中[`$name` 替換](#available-string-substitutions)的具名位置引數。接受空格分隔的字串或 YAML 清單。名稱按順序對應到引數位置。 |

198| `disable-model-invocation` | 否 | 設定為 `true` 以防止 Claude 自動載入此 skill。用於您想使用 `/name` 手動觸發的工作流程。也防止該 skill 被[預載入到 subagents](/zh-TW/sub-agents#preload-skills-into-subagents)。預設值:`false`。 |244| `disable-model-invocation` | 否 | 設定為 `true` 以防止 Claude 自動載入此 skill。用於您想使用 `/name` 手動觸發的工作流程。也防止該 skill 被[預載入到 subagents](/zh-TW/sub-agents#preload-skills-into-subagents)。預設值:`false`。 |

199| `user-invocable` | 否 | 設定為 `false` 以從 `/` 功能表中隱藏。用於使用者不應直接叫用的背景知識。預設值:`true`。 |245| `user-invocable` | 否 | 設定為 `false` 以從 `/` 功能表中隱藏。用於使用者不應直接叫用的背景知識。預設值:`true`。 |

200| `allowed-tools` | 否 | 當此 skill 處於作用中時,Claude 可以使用而無需詢問許可的工具。接受空格分隔的字串或 YAML 清單。 |246| `allowed-tools` | 否 | 當此 skill 處於作用中時,Claude 可以使用而無需詢問許可的工具。接受空格分隔的字串或逗號分隔的字串,或 YAML 清單。 |

247| `disallowed-tools` | 否 | 當此 skill 處於作用中時從 Claude 的可用工具池中移除的工具。用於不應呼叫某些工具的自主 skills,例如用於背景迴圈的 `AskUserQuestion`。接受空格分隔的字串或逗號分隔的字串,或 YAML 清單。限制在您傳送下一則訊息時清除。 |

201| `model` | 否 | 當此 skill 處於作用中時要使用的模型。覆蓋適用於目前回合的其餘部分,不會儲存到設定;工作階段模型在您的下一個提示時恢復。接受與 [`/model`](/zh-TW/model-config) 相同的值,或 `inherit` 以保持作用中的模型。 |248| `model` | 否 | 當此 skill 處於作用中時要使用的模型。覆蓋適用於目前回合的其餘部分,不會儲存到設定;工作階段模型在您的下一個提示時恢復。接受與 [`/model`](/zh-TW/model-config) 相同的值,或 `inherit` 以保持作用中的模型。 |

202| `effort` | 否 | 當此 skill 處於作用中時的[努力級別](/zh-TW/model-config#adjust-effort-level)。覆蓋工作階段努力級別。預設值:繼承自工作階段。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用級別取決於模型。 |249| `effort` | 否 | 當此 skill 處於作用中時的[努力級別](/zh-TW/model-config#adjust-effort-level)。覆蓋工作階段努力級別。預設值:繼承自工作階段。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用級別取決於模型。 |

203| `context` | 否 | 設定為 `fork` 以在分叉的 subagent 上下文中執行。 |250| `context` | 否 | 設定為 `fork` 以在分叉的 subagent 上下文中執行。 |


206| `paths` | 否 | Glob 模式,限制何時啟動此 skill。接受逗號分隔的字串或 YAML 清單。設定時,Claude 僅在使用與模式相符的檔案時自動載入該 skill。使用與[路徑特定規則](/zh-TW/memory#path-specific-rules)相同的格式。 |253| `paths` | 否 | Glob 模式,限制何時啟動此 skill。接受逗號分隔的字串或 YAML 清單。設定時,Claude 僅在使用與模式相符的檔案時自動載入該 skill。使用與[路徑特定規則](/zh-TW/memory#path-specific-rules)相同的格式。 |

207| `shell` | 否 | 用於此 skill 中 `` !`command` `` 和 ` ```! ` 區塊的 shell。接受 `bash`(預設)或 `powershell`。設定 `powershell` 會在 Windows 上透過 PowerShell 執行內聯 shell 命令。需要 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`。 |254| `shell` | 否 | 用於此 skill 中 `` !`command` `` 和 ` ```! ` 區塊的 shell。接受 `bash`(預設)或 `powershell`。設定 `powershell` 會在 Windows 上透過 PowerShell 執行內聯 shell 命令。需要 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`。 |

208 255 

209#### 可用的字串替換256<h4 id="how-a-skill-gets-its-command-name">

257 Skill 如何獲得其命令名稱

258</h4>

259 

260您輸入以叫用 skill 的命令來自 skill 檔案的位置。Frontmatter `name` 欄位設定在 skill 清單中顯示的顯示標籤,除了外掛根目錄 `SKILL.md` 外,不會改變您在 `/` 後輸入的內容。

261 

262下表顯示每個配置的命令名稱來自何處:

263 

264| Skill 位置 | 命令名稱來源 | 範例 |

265| :-------------------------------------------------- | :----------------------------- | :--------------------------------------------------------------------------------------------------------------------- |

266| `~/.claude/skills/` 或 `.claude/skills/` 下的 Skill 目錄 | 目錄名稱 | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

267| `.claude/commands/` 下的檔案 | 檔案名稱(不含副檔名) | `.claude/commands/deploy.md` → `/deploy` |

268| 外掛 `skills/` 子目錄 | 目錄名稱,由外掛命名空間 | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review` |

269| 外掛根目錄 `SKILL.md` | Frontmatter `name`,以外掛目錄名稱作為後備 | `my-plugin/SKILL.md` 搭配 `name: review` → `/my-plugin:review`。請參閱[路徑行為規則](/zh-TW/plugins-reference#path-behavior-rules) |

270 

271外掛根目錄情況是 `name` 設定命令名稱的唯一地方,因為沒有 skill 目錄可從中取得。如果 frontmatter 中未設定 `name`,則改用外掛的目錄名稱。

272 

273<h4 id="available-string-substitutions">

274 可用的字串替換

275</h4>

210 276 

211Skills 支援 skill 內容中動態值的字串替換:277Skills 支援 skill 內容中動態值的字串替換:

212 278 


217| `$N` | `$ARGUMENTS[N]` 的簡寫,例如 `$0` 表示第一個引數或 `$1` 表示第二個引數。 |283| `$N` | `$ARGUMENTS[N]` 的簡寫,例如 `$0` 表示第一個引數或 `$1` 表示第二個引數。 |

218| `$name` | 在 [`arguments`](#frontmatter-reference) frontmatter 清單中宣告的具名引數。名稱按順序對應到位置,因此使用 `arguments: [issue, branch]` 時,預留位置 `$issue` 擴展為第一個引數,`$branch` 擴展為第二個引數。 |284| `$name` | 在 [`arguments`](#frontmatter-reference) frontmatter 清單中宣告的具名引數。名稱按順序對應到位置,因此使用 `arguments: [issue, branch]` 時,預留位置 `$issue` 擴展為第一個引數,`$branch` 擴展為第二個引數。 |

219| `${CLAUDE_SESSION_ID}` | 目前的工作階段 ID。適用於記錄、建立工作階段特定檔案或將 skill 輸出與工作階段相關聯。 |285| `${CLAUDE_SESSION_ID}` | 目前的工作階段 ID。適用於記錄、建立工作階段特定檔案或將 skill 輸出與工作階段相關聯。 |

220| `${CLAUDE_EFFORT}` | 目前的努力級別:`low`、`medium`、`high`、`xhigh` 或 `max`。使用此來根據作用中的努力設定調整 skill 說明。 |286| `${CLAUDE_EFFORT}` | 目前的努力級別:`low`、`medium`、`high`、`xhigh` 或 `max`。Ultracode 不是一個不同的級別,報告為 `xhigh`。使用此來根據作用中的努力設定調整 skill 說明。 |

221| `${CLAUDE_SKILL_DIR}` | 包含 skill 的 `SKILL.md` 檔案的目錄。對於外掛 skills,這是外掛中 skill 的子目錄,而不是外掛根目錄。在 bash 注入命令中使用此來參考與 skill 捆綁的指令碼或檔案,無論目前的工作目錄如何。 |287| `${CLAUDE_SKILL_DIR}` | 包含 skill 的 `SKILL.md` 檔案的目錄。對於外掛 skills,這是外掛中 skill 的子目錄,而不是外掛根目錄。在 bash 注入命令中使用此來參考與 skill 捆綁的指令碼或檔案,無論目前的工作目錄如何。 |

222 288 

223索引引數使用 shell 風格的引用,因此將多字值包裝在引號中以將其作為單個引數傳遞。例如,`/my-skill "hello world" second` 使 `$0` 擴展為 `hello world`,`$1` 擴展為 `second`。`$ARGUMENTS` 預留位置始終擴展為輸入的完整引數字串。289索引引數使用 shell 風格的引用,因此將多字值包裝在引號中以將其作為單個引數傳遞。例如,`/my-skill "hello world" second` 使 `$0` 擴展為 `hello world`,`$1` 擴展為 `second`。`$ARGUMENTS` 預留位置始終擴展為輸入的完整引數字串。


235$ARGUMENTS301$ARGUMENTS

236```302```

237 303 

238### 新增支援檔案304<h3 id="add-supporting-files">

305 新增支援檔案

306</h3>

239 307 

240Skills 可以在其目錄中包含多個檔案。這使 `SKILL.md` 專注於基本要素,同時讓 Claude 僅在需要時存取詳細的參考資料。大型參考文件、API 規格或範例集合不需要在每次 skill 執行時載入上下文。308Skills 可以在其目錄中包含多個檔案。這使 `SKILL.md` 專注於基本要素,同時讓 Claude 僅在需要時存取詳細的參考資料。大型參考文件、API 規格或範例集合不需要在每次 skill 執行時載入上下文。

241 309 


259 327 

260<Tip>將 `SKILL.md` 保持在 500 行以下。將詳細的參考資料移至單獨的檔案。</Tip>328<Tip>將 `SKILL.md` 保持在 500 行以下。將詳細的參考資料移至單獨的檔案。</Tip>

261 329 

262### 控制誰叫用 skill330<h3 id="control-who-invokes-a-skill">

331 控制誰叫用 skill

332</h3>

263 333 

264預設情況下,您和 Claude 都可以叫用任何 skill。您可以輸入 `/skill-name` 直接叫用它,Claude 可以在與您的對話相關時自動載入它。兩個 frontmatter 欄位讓您限制此:334預設情況下,您和 Claude 都可以叫用任何 skill。您可以輸入 `/skill-name` 直接叫用它,Claude 可以在與您的對話相關時自動載入它。兩個 frontmatter 欄位讓您限制此:

265 335 


296 在常規工作階段中,skill 描述會載入上下文,以便 Claude 知道可用的內容,但完整 skill 內容僅在叫用時載入。[預載入 skills 的 Subagents](/zh-TW/sub-agents#preload-skills-into-subagents) 的運作方式不同:完整 skill 內容在啟動時注入。366 在常規工作階段中,skill 描述會載入上下文,以便 Claude 知道可用的內容,但完整 skill 內容僅在叫用時載入。[預載入 skills 的 Subagents](/zh-TW/sub-agents#preload-skills-into-subagents) 的運作方式不同:完整 skill 內容在啟動時注入。

297</Note>367</Note>

298 368 

299### Skill 內容生命週期369<h3 id="skill-content-lifecycle">

370 Skill 內容生命週期

371</h3>

300 372 

301當您或 Claude 叫用 skill 時,呈現的 `SKILL.md` 內容作為單一訊息進入對話,並在工作階段的其餘部分保持在那裡。Claude Code 不會在稍後的回合中重新讀取 skill 檔案,因此應將應該在整個任務中應用的指導寫成常設說明,而不是一次性步驟。373當您或 Claude 叫用 skill 時,呈現的 `SKILL.md` 內容作為單一訊息進入對話,並在工作階段的其餘部分保持在那裡。Claude Code 不會在稍後的回合中重新讀取 skill 檔案,因此應將應該在整個任務中應用的指導寫成常設說明,而不是一次性步驟。

302 374 


304 376 

305如果 skill 在第一個回應後似乎停止影響行為,內容通常仍然存在,模型正在選擇其他工具或方法。加強 skill 的 `description` 和說明,以便模型繼續偏好它,或使用 [hooks](/zh-TW/hooks) 來確定性地強制行為。如果 skill 很大或您在它之後叫用了其他幾個,請在 compaction 後重新叫用它以恢復完整內容。377如果 skill 在第一個回應後似乎停止影響行為,內容通常仍然存在,模型正在選擇其他工具或方法。加強 skill 的 `description` 和說明,以便模型繼續偏好它,或使用 [hooks](/zh-TW/hooks) 來確定性地強制行為。如果 skill 很大或您在它之後叫用了其他幾個,請在 compaction 後重新叫用它以恢復完整內容。

306 378 

307### 為 skill 預先批准工具379<h3 id="pre-approve-tools-for-a-skill">

380 為 skill 預先批准工具

381</h3>

308 382 

309`allowed-tools` 欄位在 skill 處於作用中時授予列出的工具的許可,因此 Claude 可以使用它們而無需提示您批准。它不會限制哪些工具可用:每個工具仍然可呼叫,您的[許可設定](/zh-TW/permissions)仍然管理未列出的工具。383`allowed-tools` 欄位在 skill 處於作用中時授予列出的工具的許可,因此 Claude 可以使用它們而無需提示您批准。它不會限制哪些工具可用:每個工具仍然可呼叫,您的[許可設定](/zh-TW/permissions)仍然管理未列出的工具。

310 384 


323 397 

324若要阻止 skill 使用某些工具,請在您的[許可設定](/zh-TW/permissions)中新增拒絕規則。398若要阻止 skill 使用某些工具,請在您的[許可設定](/zh-TW/permissions)中新增拒絕規則。

325 399 

326### 將引數傳遞給 skills400<h3 id="pass-arguments-to-skills">

401 將引數傳遞給 skills

402</h3>

327 403 

328您和 Claude 都可以在叫用 skill 時傳遞引數。引數可透過 `$ARGUMENTS` 預留位置取得。404您和 Claude 都可以在叫用 skill 時傳遞引數。引數可透過 `$ARGUMENTS` 預留位置取得。

329 405 


373Preserve all existing behavior and tests.449Preserve all existing behavior and tests.

374```450```

375 451 

376## 進階模式452<h2 id="advanced-patterns">

453 進階模式

454</h2>

377 455 

378### 注入動態上下文456<h3 id="inject-dynamic-context">

457 注入動態上下文

458</h3>

379 459 

380`` !`<command>` `` 語法在將 skill 內容傳送給 Claude 之前執行 shell 命令。命令輸出替換預留位置,因此 Claude 會收到實際資料,而不是命令本身。460`` !`<command>` `` 語法在將 skill 內容傳送給 Claude 之前執行 shell 命令。命令輸出替換預留位置,因此 Claude 會收到實際資料,而不是命令本身。

381 461 


409 489 

410替換對原始檔案執行一次。命令輸出會以純文字形式插入,不會重新掃描以尋找進一步的 `` !`<command>` `` 預留位置,因此命令無法發出預留位置供稍後的傳遞來展開。490替換對原始檔案執行一次。命令輸出會以純文字形式插入,不會重新掃描以尋找進一步的 `` !`<command>` `` 預留位置,因此命令無法發出預留位置供稍後的傳遞來展開。

411 491 

492內聯形式僅在 `!` 出現在行首或緊接在空白字元之後時被識別。如果 `!` 跟在另一個字元之後,如 `` KEY=!`cmd` ``,預留位置會保留為字面文字,命令不會執行。

493 

412對於多行命令,請使用以 ` ```! ` 開啟的圍欄程式碼區塊,而不是內聯形式:494對於多行命令,請使用以 ` ```! ` 開啟的圍欄程式碼區塊,而不是內聯形式:

413 495 

414````markdown theme={null}496````markdown theme={null}


426 若要在 skill 執行時要求更深入的推理,請在 skill 內容中的任何位置包含 `ultrathink`。請參閱[使用 ultrathink 進行一次性深入推理](/zh-TW/model-config#use-ultrathink-for-one-off-deep-reasoning)。508 若要在 skill 執行時要求更深入的推理,請在 skill 內容中的任何位置包含 `ultrathink`。請參閱[使用 ultrathink 進行一次性深入推理](/zh-TW/model-config#use-ultrathink-for-one-off-deep-reasoning)。

427</Tip>509</Tip>

428 510 

429### 在 subagent 中執行 skills511<h3 id="run-skills-in-a-subagent">

512 在 subagent 中執行 skills

513</h3>

430 514 

431當您想要 skill 在隔離中執行時,將 `context: fork` 新增到您的 frontmatter。Skill 內容變成驅動 subagent 的提示。它將無法存取您的對話歷史記錄。515當您想要 skill 在隔離中執行時,將 `context: fork` 新增到您的 frontmatter。Skill 內容變成驅動 subagent 的提示。它將無法存取您的對話歷史記錄。

432 516 


443 527 

444使用 `context: fork`,您在 skill 中編寫任務並選擇代理類型來執行它。內建的 Explore 和 Plan 代理[跳過 CLAUDE.md 和 git status](/zh-TW/sub-agents#what-loads-at-startup)以保持其上下文較小,因此使用 `agent: Explore` 的分叉 skill 只看到 SKILL.md 內容和代理自己的系統提示。對於反向情況,其中您定義使用 skills 作為參考資料的自訂 subagent,請參閱 [Subagents](/zh-TW/sub-agents#preload-skills-into-subagents)。528使用 `context: fork`,您在 skill 中編寫任務並選擇代理類型來執行它。內建的 Explore 和 Plan 代理[跳過 CLAUDE.md 和 git status](/zh-TW/sub-agents#what-loads-at-startup)以保持其上下文較小,因此使用 `agent: Explore` 的分叉 skill 只看到 SKILL.md 內容和代理自己的系統提示。對於反向情況,其中您定義使用 skills 作為參考資料的自訂 subagent,請參閱 [Subagents](/zh-TW/sub-agents#preload-skills-into-subagents)。

445 529 

446#### 範例:使用 Explore 代理的研究 skill530<h4 id="example-research-skill-using-explore-agent">

531 範例:使用 Explore 代理的研究 skill

532</h4>

447 533 

448此 skill 在分叉的 Explore 代理中執行研究。Skill 內容變成任務,代理提供針對程式碼庫探索最佳化的唯讀工具:534此 skill 在分叉的 Explore 代理中執行研究。Skill 內容變成任務,代理提供針對程式碼庫探索最佳化的唯讀工具:

449 535 


471 557 

472`agent` 欄位指定要使用的 subagent 設定。選項包括內建代理(`Explore`、`Plan`、`general-purpose`)或來自 `.claude/agents/` 的任何自訂 subagent。如果省略,使用 `general-purpose`。558`agent` 欄位指定要使用的 subagent 設定。選項包括內建代理(`Explore`、`Plan`、`general-purpose`)或來自 `.claude/agents/` 的任何自訂 subagent。如果省略,使用 `general-purpose`。

473 559 

474### 限制 Claude 的 skill 存取560<h3 id="restrict-claude-s-skill-access">

561 限制 Claude 的 skill 存取

562</h3>

475 563 

476預設情況下,Claude 可以叫用任何沒有設定 `disable-model-invocation: true` 的 skill。定義 `allowed-tools` 的 Skills 在 skill 處於作用中時授予 Claude 對這些工具的存取權,無需每次使用批准。您的[許可設定](/zh-TW/permissions)仍然管理所有其他工具的基準批准行為。一些內建命令也可透過 Skill 工具取得,包括 `/init`、`/review` 和 `/security-review`。其他內建命令(例如 `/compact`)則不行。564預設情況下,Claude 可以叫用任何沒有設定 `disable-model-invocation: true` 的 skill。定義 `allowed-tools` 的 Skills 在 skill 處於作用中時授予 Claude 對這些工具的存取權,無需每次使用批准。您的[許可設定](/zh-TW/permissions)仍然管理所有其他工具的基準批准行為。一些內建命令也可透過 Skill 工具取得,包括 `/init`、`/review` 和 `/security-review`。其他內建命令(例如 `/compact`)則不行。

477 565 


503 `user-invocable` 欄位僅控制功能表可見性,不控制 Skill 工具存取。使用 `disable-model-invocation: true` 來阻止程式化叫用。591 `user-invocable` 欄位僅控制功能表可見性,不控制 Skill 工具存取。使用 `disable-model-invocation: true` 來阻止程式化叫用。

504</Note>592</Note>

505 593 

506### 從設定覆蓋 skill 可見性594<h3 id="override-skill-visibility-from-settings">

595 從設定覆蓋 skill 可見性

596</h3>

507 597 

508`skillOverrides` 設定從您的[設定](/zh-TW/settings)控制 skill 可見性,而不是 skill 自己的 frontmatter。將其用於您不想編輯 SKILL.md 的 skills,例如簽入共享專案儲存庫或由 MCP 伺服器提供的 skills。`/skills` 功能表為您編寫:突出顯示 skill 並按 `Space` 循環狀態,然後按 `Enter` 儲存到 `.claude/settings.local.json`。598`skillOverrides` 設定從您的[設定](/zh-TW/settings)控制 skill 可見性,而不是 skill 自己的 frontmatter。將其用於您不想編輯 SKILL.md 的 skills,例如簽入共享專案儲存庫或由 MCP 伺服器提供的 skills。`/skills` 功能表為您編寫:突出顯示 skill 並按 `Space` 循環狀態,然後按 `Enter` 儲存到 `.claude/settings.local.json`。

509 599 


529 619 

530外掛 skills 不受 `skillOverrides` 影響。透過 `/plugin` 改為管理這些。620外掛 skills 不受 `skillOverrides` 影響。透過 `/plugin` 改為管理這些。

531 621 

532## 分享 skills622<h2 id="share-skills">

623 分享 skills

624</h2>

533 625 

534Skills 可以根據您的受眾在不同範圍內分發:626Skills 可以根據您的受眾在不同範圍內分發:

535 627 


537* **外掛**:在您的[外掛](/zh-TW/plugins)中建立 `skills/` 目錄629* **外掛**:在您的[外掛](/zh-TW/plugins)中建立 `skills/` 目錄

538* **受管**:透過[受管設定](/zh-TW/settings#settings-files)部署組織範圍630* **受管**:透過[受管設定](/zh-TW/settings#settings-files)部署組織範圍

539 631 

540### 生成視覺輸出632<h3 id="generate-visual-output">

633 生成視覺輸出

634</h3>

541 635 

542Skills 可以捆綁並執行任何語言的指令碼,為 Claude 提供超越單個提示可能的功能。一個強大的模式是生成視覺輸出:在您的瀏覽器中開啟的互動式 HTML 檔案,用於探索資料、偵錯或建立報告。636Skills 可以捆綁並執行任何語言的指令碼,為 Claude 提供超越單個提示可能的功能。一個強大的模式是生成視覺輸出:在您的瀏覽器中開啟的互動式 HTML 檔案,用於探索資料、偵錯或建立報告。

543 637 


728 822 

729此模式適用於任何視覺輸出:相依性圖表、測試涵蓋範圍報告、API 文件或資料庫架構視覺化。捆綁的指令碼完成繁重工作,而 Claude 處理協調。823此模式適用於任何視覺輸出:相依性圖表、測試涵蓋範圍報告、API 文件或資料庫架構視覺化。捆綁的指令碼完成繁重工作,而 Claude 處理協調。

730 824 

731## 疑難排解825<h2 id="troubleshooting">

826 疑難排解

827</h2>

732 828 

733### Skill 未觸發829<h3 id="skill-not-triggering">

830 Skill 未觸發

831</h3>

734 832 

735如果 Claude 在預期時不使用您的 skill:833如果 Claude 在預期時不使用您的 skill:

736 834 


7393. 嘗試重新表述您的請求以更密切地匹配描述8373. 嘗試重新表述您的請求以更密切地匹配描述

7404. 如果 skill 是使用者可叫用的,請使用 `/skill-name` 直接叫用它8384. 如果 skill 是使用者可叫用的,請使用 `/skill-name` 直接叫用它

741 839 

742### Skill 觸發過於頻繁840<h3 id="skill-triggers-too-often">

841 Skill 觸發過於頻繁

842</h3>

743 843 

744如果 Claude 在您不想要時使用您的 skill:844如果 Claude 在您不想要時使用您的 skill:

745 845 

7461. 使描述更具體8461. 使描述更具體

7472. 如果您只想手動叫用,請新增 `disable-model-invocation: true`8472. 如果您只想手動叫用,請新增 `disable-model-invocation: true`

748 848 

749### Skill 描述被截斷849<h3 id="skill-descriptions-are-cut-short">

850 Skill 描述被截斷

851</h3>

750 852 

751Skill 描述會載入上下文,以便 Claude 知道可用的內容。所有 skill 名稱始終包含在內,但如果您有許多 skills,描述會被縮短以適應字元預算,這可能會去除 Claude 需要匹配您的請求的關鍵字。預算在模型上下文視窗的 1% 處動態縮放。當預算溢出時,您最少叫用的 skills 的描述會首先被捨棄,因此您實際使用的 skills 會保留其完整文字。執行 `/doctor` 以查看預算是否溢出以及哪些 skills 受到影響。853Skill 描述會載入上下文,以便 Claude 知道可用的內容。所有 skill 名稱始終包含在內,但如果您有許多 skills,描述會被縮短以適應字元預算,這可能會去除 Claude 需要匹配您的請求的關鍵字。預算在模型上下文視窗的 1% 處動態縮放。當預算溢出時,您最少叫用的 skills 的描述會首先被捨棄,因此您實際使用的 skills 會保留其完整文字。執行 `/doctor` 以查看預算是否溢出以及哪些 skills 受到影響。

752 854 

753若要提高預算,請設定 [`skillListingBudgetFraction`](/zh-TW/settings#available-settings) 設定(例如 `0.02` = 2%)或 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 環境變數為固定字元計數。若要為其他 skills 釋放預算,請在 [`skillOverrides`](#override-skill-visibility-from-settings) 中將低優先順序項目設定為 `"name-only"`,以便它們列出而不顯示描述。您也可以在來源處修剪 `description` 和 `when_to_use` 文字:前置關鍵使用案例,因為每個項目的結合文字無論預算如何都限制在 1,536 個字元。此上限可透過 [`maxSkillDescriptionChars`](/zh-TW/settings#available-settings) 進行設定。855若要提高預算,請設定 [`skillListingBudgetFraction`](/zh-TW/settings#available-settings) 設定(例如 `0.02` = 2%)或 `SLASH_COMMAND_TOOL_CHAR_BUDGET` 環境變數為固定字元計數。若要為其他 skills 釋放預算,請在 [`skillOverrides`](#override-skill-visibility-from-settings) 中將低優先順序項目設定為 `"name-only"`,以便它們列出而不顯示描述。您也可以在來源處修剪 `description` 和 `when_to_use` 文字:前置關鍵使用案例,因為每個項目的結合文字無論預算如何都限制在 1,536 個字元。此上限可透過 [`maxSkillDescriptionChars`](/zh-TW/settings#available-settings) 進行設定。

754 856 

755## 相關資源857<h2 id="related-resources">

858 相關資源

859</h2>

756 860 

757* **[除錯您的設定](/zh-TW/debug-your-config)**:診斷為什麼 skill 沒有出現或觸發861* **[除錯您的設定](/zh-TW/debug-your-config)**:診斷為什麼 skill 沒有出現或觸發

758* **[Subagents](/zh-TW/sub-agents)**:委派任務給專門的代理862* **[Subagents](/zh-TW/sub-agents)**:委派任務給專門的代理

slack.md +110 −33

Details

10 10 

11此整合建立在現有的 Claude for Slack 應用程式基礎上,但為編碼相關請求添加了智能路由到網路上的 Claude Code。11此整合建立在現有的 Claude for Slack 應用程式基礎上,但為編碼相關請求添加了智能路由到網路上的 Claude Code。

12 12 

13## 使用案例13<h2 id="use-cases">

14 使用案例

15</h2>

14 16 

15* **錯誤調查和修復**:要求 Claude 在 Slack 頻道中報告錯誤時立即調查和修復。17* **錯誤調查和修復**:要求 Claude 在 Slack 頻道中報告錯誤時立即調查和修復。

16* **快速代碼審查和修改**:讓 Claude 根據團隊反饋實現小功能或重構代碼。18* **快速代碼審查和修改**:讓 Claude 根據團隊反饋實現小功能或重構代碼。

17* **協作調試**:當團隊討論提供關鍵背景資訊(例如錯誤重現或用戶報告)時,Claude 可以使用該資訊來指導其調試方法。19* **協作調試**:當團隊討論提供關鍵背景資訊(例如錯誤重現或用戶報告)時,Claude 可以使用該資訊來指導其調試方法。

18* **並行任務執行**:在 Slack 中啟動編碼任務,同時繼續其他工作,完成時接收通知。20* **並行任務執行**:在 Slack 中啟動編碼任務,同時繼續其他工作,完成時接收通知。

19 21 

20## 先決條件22<h2 id="prerequisites">

23 先決條件

24</h2>

21 25 

22在使用 Slack 中的 Claude Code 之前,請確保您具有以下條件:26在使用 Slack 中的 Claude Code 之前,請確保您具有以下條件:

23 27 

24| 要求 | 詳情 |28| 要求 | 詳情 |

25| :--------------- | :--------------------------------------------------------- |29| :--------------- | :------------------------------------------------------------------------- |

26| Claude 計畫 | Pro、Max、Team 或 Enterprise,具有 Claude Code 存取權限(高級席位 |30| Claude 計畫 | Pro、Max、Team 或 Enterprise,具有 Claude Code 存取權限(高級席位或 Chat + Claude Code 席位 |

27| 網路上的 Claude Code | 必須啟用對[網路上的 Claude Code](/zh-TW/claude-code-on-the-web) 的存取 |31| 網路上的 Claude Code | 必須啟用對[網路上的 Claude Code](/zh-TW/claude-code-on-the-web) 的存取 |

28| GitHub 帳戶 | 連接到網路上的 Claude Code,至少有一個存儲庫已驗證 |32| GitHub 帳戶 | 連接到網路上的 Claude Code,至少有一個存儲庫已驗證 |

29| Slack 驗證 | 您的 Slack 帳戶通過 Claude 應用程式連接到您的 Claude 帳戶 |33| Slack 驗證 | 您的 Slack 帳戶通過 Claude 應用程式連接到您的 Claude 帳戶 |

30 34 

31## 在 Slack 中設定 Claude Code35<h2 id="setting-up-claude-code-in-slack">

36 在 Slack 中設定 Claude Code

37</h2>

32 38 

33<Steps>39<Steps>

34 <Step title="在 Slack 中安裝 Claude 應用程式">40 <Step title="在 Slack 中安裝 Claude 應用程式">

35 工作區管理員必須從 Slack 應用程式市場安裝 Claude 應用程式。訪問 [Slack 應用程式市場](https://slack.com/marketplace/A08SF47R6P4) 並點擊Add to Slack以開始安裝過程。41 工作區管理員必須從 Slack 應用程式市場安裝 Claude 應用程式。訪問 [Slack 應用程式市場](https://slack.com/marketplace/A08SF47R6P4) 並點擊'Add to Slack'以開始安裝過程。

36 </Step>42 </Step>

37 43 

38 <Step title="連接您的 Claude 帳戶">44 <Step title="連接您的 Claude 帳戶">


64 在代碼 + 聊天模式中,如果 Claude 將訊息路由到聊天但您想要編碼工作階段,您可以點擊「Retry as Code」以改為建立 Claude Code 工作階段。同樣,如果它被路由到代碼但您想要聊天工作階段,您可以在該執行緒中選擇該選項。70 在代碼 + 聊天模式中,如果 Claude 將訊息路由到聊天但您想要編碼工作階段,您可以點擊「Retry as Code」以改為建立 Claude Code 工作階段。同樣,如果它被路由到代碼但您想要聊天工作階段,您可以在該執行緒中選擇該選項。

65 </Note>71 </Note>

66 </Step>72 </Step>

73 

74 <Step title="將 Claude 添加到頻道">

75 Claude 在安裝後不會自動添加到任何頻道。要在頻道中使用 Claude,請通過在該頻道中輸入 `/invite @Claude` 來邀請它。Claude 只能在已添加它的頻道中回應 @mentions。

76 </Step>

67</Steps>77</Steps>

68 78 

69## 工作原理79<h2 id="how-it-works">

80 工作原理

81</h2>

70 82 

71### 自動檢測83<h3 id="automatic-detection">

84 自動檢測

85</h3>

72 86 

73當您在 Slack 頻道或執行緒中提及 @Claude 時,Claude 會自動分析您的訊息以確定它是否是編碼任務。如果 Claude 檢測到編碼意圖,它將把您的請求路由到網路上的 Claude Code,而不是作為常規聊天助手回應。87當您在 Slack 頻道或執行緒中提及 @Claude 時,Claude 會自動分析您的訊息以確定它是否是編碼任務。如果 Claude 檢測到編碼意圖,它將把您的請求路由到網路上的 Claude Code,而不是作為常規聊天助手回應。

74 88 


78 Slack 中的 Claude Code 僅在頻道(公開或私人)中工作。它在直接訊息 (DM) 中不起作用。92 Slack 中的 Claude Code 僅在頻道(公開或私人)中工作。它在直接訊息 (DM) 中不起作用。

79</Note>93</Note>

80 94 

81### 背景資訊收集95<h3 id="context-gathering">

96 背景資訊收集

97</h3>

82 98 

83**來自執行緒**:當您在執行緒中 @mention Claude 時,它會從該執行緒中的所有訊息收集背景資訊以理解完整對話。99**來自執行緒**:當您在執行緒中 @mention Claude 時,它會從該執行緒中的所有訊息收集背景資訊以理解完整對話。

84 100 


90 當在 Slack 中調用 @Claude 時,Claude 會獲得對對話背景資訊的存取權限以更好地理解您的請求。Claude 可能會遵循背景資訊中其他訊息的指示,因此用戶應確保僅在受信任的 Slack 對話中使用 Claude。106 當在 Slack 中調用 @Claude 時,Claude 會獲得對對話背景資訊的存取權限以更好地理解您的請求。Claude 可能會遵循背景資訊中其他訊息的指示,因此用戶應確保僅在受信任的 Slack 對話中使用 Claude。

91</Warning>107</Warning>

92 108 

93### 工作階段流程109<h3 id="session-flow">

110 工作階段流程

111</h3>

94 112 

951. **啟動**:您 @mention Claude 並提出編碼請求1131. **啟動**:您 @mention Claude 並提出編碼請求

962. **檢測**:Claude 分析您的訊息並檢測編碼意圖1142. **檢測**:Claude 分析您的訊息並檢測編碼意圖

973. **工作階段建立**:在 claude.ai/code 上建立新的 Claude Code 工作階段1153. **工作階段建立**:在 claude.ai/code 上建立新的 Claude Code 工作階段

984. **進度更新**:Claude 在工作進行時向您的 Slack 執行緒發佈狀態更新1164. **進度更新**:Claude 在工作進行時向您的 Slack 執行緒發佈狀態更新

995. **完成**:完成後,Claude @mentions 您並提供摘要和操作按鈕1175. **完成**:完成後,Claude @mentions 您並提供摘要和操作按鈕

1006. **審查**:點擊View Session以查看完整記錄,或點擊Create PR以開啟拉取請求1186. **審查**:點擊'View Session'以查看完整記錄,或點擊'Create PR'以開啟拉取請求

101 119 

102## 用戶介面元素120<h2 id="user-interface-elements">

121 用戶介面元素

122</h2>

103 123 

104### 應用程式首頁124<h3 id="app-home">

125 應用程式首頁

126</h3>

105 127 

106應用程式首頁標籤顯示您的連接狀態,並允許您連接或斷開您的 Claude 帳戶與 Slack 的連接。128應用程式首頁標籤顯示您的連接狀態,並允許您連接或斷開您的 Claude 帳戶與 Slack 的連接。

107 129 

108### 訊息操作130<h3 id="message-actions">

131 訊息操作

132</h3>

109 133 

110* **View Session**:在您的瀏覽器中打開完整的 Claude Code 工作階段,您可以在其中查看所有執行的工作、繼續工作階段或提出其他請求。134* **View Session**:在您的瀏覽器中打開完整的 Claude Code 工作階段,您可以在其中查看所有執行的工作、繼續工作階段或提出其他請求。

111* **Create PR**:直接從工作階段的更改建立拉取請求。135* **Create PR**:直接從工作階段的更改建立拉取請求。

112* **Retry as Code**:如果 Claude 最初作為聊天助手回應但您想要編碼工作階段,點擊此按鈕以將請求重試為 Claude Code 任務。136* **Retry as Code**:如果 Claude 最初作為聊天助手回應但您想要編碼工作階段,點擊此按鈕以將請求重試為 Claude Code 任務。

113* **Change Repo**:允許您選擇不同的存儲庫,如果 Claude 選擇不正確。137* **Change Repo**:允許您選擇不同的存儲庫,如果 Claude 選擇不正確。

114 138 

115### 存儲庫選擇139<h3 id="repository-selection">

140 存儲庫選擇

141</h3>

116 142 

117Claude 根據您的 Slack 對話中的背景資訊自動選擇存儲庫。如果多個存儲庫可能適用,Claude 可能會顯示一個下拉菜單,允許您選擇正確的存儲庫。143Claude 根據您的 Slack 對話中的背景資訊自動選擇存儲庫。如果多個存儲庫可能適用,Claude 可能會顯示一個下拉菜單,允許您選擇正確的存儲庫。

118 144 

119## 存取和權限145<h2 id="access-and-permissions">

146 存取和權限

147</h2>

120 148 

121### 用戶級別存取149<h3 id="user-level-access">

150 用戶級別存取

151</h3>

122 152 

123| 存取類型 | 要求 |153| 存取類型 | 要求 |

124| :--------------- | :-------------------------------------------- |154| :--------------- | :-------------------------------------------- |


127| 存儲庫存取 | 用戶只能存取他們個人連接的存儲庫 |157| 存儲庫存取 | 用戶只能存取他們個人連接的存儲庫 |

128| 工作階段歷史記錄 | 工作階段出現在您的 Claude Code 歷史記錄中,位於 claude.ai/code |158| 工作階段歷史記錄 | 工作階段出現在您的 Claude Code 歷史記錄中,位於 claude.ai/code |

129 159 

130### 工作區管理員權限160<h3 id="workspace-level-access">

161 工作區級別存取

162</h3>

163 

164Slack 工作區管理員控制 Claude 應用程式是否可在其工作區中使用:

165 

166| 控制 | 描述 |

167| :----------------- | :--------------------------------------------------- |

168| 應用程式安裝 | 工作區管理員決定是否從 Slack 應用程式市場安裝 Claude 應用程式 |

169| Enterprise Grid 分發 | 對於 Enterprise Grid 組織,組織管理員可以控制哪些工作區有權存取 Claude 應用程式 |

170| 應用程式移除 | 從工作區移除應用程式會立即撤銷該工作區中所有用戶的存取權限 |

131 171 

132Slack 工作區管理員控制 Claude 應用程式是否可以在工作區中安裝。然後個人用戶使用他們自己的 Claude 帳戶進行驗證以使用此整合。172<h3 id="channel-based-access-control">

173 基於頻道的存取控制

174</h3>

133 175 

134## 在何處可以存取什麼176Claude 在安裝後不會自動添加到任何頻道。用戶必須明確邀請 Claude 到他們想要使用它的頻道:

177 

178* **需要邀請**:在任何頻道中輸入 `/invite @Claude` 以將 Claude 添加到該頻道

179* **頻道成員資格控制存取**:Claude 只能在已添加它的頻道中回應 @mentions

180* **通過頻道進行存取控制**:管理員可以通過管理 Claude 被邀請到哪些頻道以及誰有權存取這些頻道來控制誰使用 Claude Code

181* **私人頻道支援**:Claude 在公開和私人頻道中都可以工作,為團隊提供了控制可見性的靈活性

182 

183此基於頻道的模型允許團隊將 Claude Code 使用限制在特定頻道,提供了超越工作區級別權限的額外存取控制層。

184 

185<h2 id="what-s-accessible-where">

186 在何處可以存取什麼

187</h2>

135 188 

136**在 Slack 中**:您將看到狀態更新、完成摘要和操作按鈕。完整記錄被保留並始終可存取。189**在 Slack 中**:您將看到狀態更新、完成摘要和操作按鈕。完整記錄被保留並始終可存取。

137 190 

138**在網路上**:完整的 Claude Code 工作階段,包含完整對話歷史記錄、所有代碼更改、文件操作以及繼續工作階段或建立拉取請求的能力。191**在網路上**:完整的 Claude Code 工作階段,包含完整對話歷史記錄、所有代碼更改、文件操作以及繼續工作階段或建立拉取請求的能力。

139 192 

140## 最佳實踐193對於 Enterprise 和 Team 帳戶,從 Slack 中的 Claude 建立的工作階段會自動對組織可見。有關更多詳情,請參閱 [Claude Code on the Web 共享](/zh-TW/claude-code-on-the-web#share-sessions)。

194 

195<h2 id="best-practices">

196 最佳實踐

197</h2>

141 198 

142### 撰寫有效的請求199<h3 id="writing-effective-requests">

200 撰寫有效的請求

201</h3>

143 202 

144* **具體明確**:在相關時包括文件名、函數名或錯誤訊息。203* **具體明確**:在相關時包括文件名、函數名或錯誤訊息。

145* **提供背景資訊**:如果從對話中不清楚,請提及存儲庫或專案。204* **提供背景資訊**:如果從對話中不清楚,請提及存儲庫或專案。

146* **定義成功**:解釋完成的樣子——Claude 應該編寫測試嗎?更新文檔?建立拉取請求?205* **定義成功**:解釋'完成'的樣子——Claude 應該編寫測試嗎?更新文檔?建立拉取請求?

147* **使用執行緒**:在討論錯誤或功能時在執行緒中回覆,以便 Claude 可以收集完整背景資訊。206* **使用執行緒**:在討論錯誤或功能時在執行緒中回覆,以便 Claude 可以收集完整背景資訊。

148 207 

149### 何時使用 Slack 與網路208<h3 id="when-to-use-slack-vs-web">

209 何時使用 Slack 與網路

210</h3>

150 211 

151**在以下情況下使用 Slack**:背景資訊已存在於 Slack 討論中、您想要非同步啟動任務或與需要可見性的隊友協作。212**在以下情況下使用 Slack**:背景資訊已存在於 Slack 討論中、您想要非同步啟動任務或與需要可見性的隊友協作。

152 213 

153**直接在網路上使用**:當您需要上傳文件、想要在開發期間進行實時互動或正在處理更長、更複雜的任務時。214**直接在網路上使用**:當您需要上傳文件、想要在開發期間進行實時互動或正在處理更長、更複雜的任務時。

154 215 

155## 故障排除216<h2 id="troubleshooting">

217 故障排除

218</h2>

156 219 

157### 工作階段未啟動220<h3 id="sessions-not-starting">

221 工作階段未啟動

222</h3>

158 223 

1591. 驗證您的 Claude 帳戶已在 Claude 應用程式首頁中連接2241. 驗證您的 Claude 帳戶已在 Claude 應用程式首頁中連接

1602. 檢查您是否已啟用網路上的 Claude Code 存取2252. 檢查您是否已啟用網路上的 Claude Code 存取

1613. 確保您至少有一個 GitHub 存儲庫連接到 Claude Code2263. 確保您至少有一個 GitHub 存儲庫連接到 Claude Code

162 227 

163### 存儲庫未顯示228<h3 id="repository-not-showing">

229 存儲庫未顯示

230</h3>

164 231 

1651. 在 [claude.ai/code](https://claude.ai/code) 的網路上的 Claude Code 中連接存儲庫2321. 在 [claude.ai/code](https://claude.ai/code) 的網路上的 Claude Code 中連接存儲庫

1662. 驗證您對該存儲庫的 GitHub 權限2332. 驗證您對該存儲庫的 GitHub 權限

1673. 嘗試斷開並重新連接您的 GitHub 帳戶2343. 嘗試斷開並重新連接您的 GitHub 帳戶

168 235 

169### 選擇了錯誤的存儲庫236<h3 id="wrong-repository-selected">

237 選擇了錯誤的存儲庫

238</h3>

170 239 

1711. 點擊Change Repo按鈕以選擇不同的存儲庫2401. 點擊'Change Repo'按鈕以選擇不同的存儲庫

1722. 在您的請求中包括存儲庫名稱以獲得更準確的選擇2412. 在您的請求中包括存儲庫名稱以獲得更準確的選擇

173 242 

174### 驗證錯誤243<h3 id="authentication-errors">

244 驗證錯誤

245</h3>

175 246 

1761. 在應用程式首頁中斷開並重新連接您的 Claude 帳戶2471. 在應用程式首頁中斷開並重新連接您的 Claude 帳戶

1772. 確保您在瀏覽器中登入正確的 Claude 帳戶2482. 確保您在瀏覽器中登入正確的 Claude 帳戶

1783. 檢查您的 Claude 計畫是否包括 Claude Code 存取2493. 檢查您的 Claude 計畫是否包括 Claude Code 存取

179 250 

180### 工作階段過期251<h3 id="session-expiration">

252 工作階段過期

253</h3>

181 254 

1821. 工作階段在網路上的 Claude Code 歷史記錄中保持可存取2551. 工作階段在網路上的 Claude Code 歷史記錄中保持可存取

1832. 您可以從 [claude.ai/code](https://claude.ai/code) 繼續或參考過去的工作階段2562. 您可以從 [claude.ai/code](https://claude.ai/code) 繼續或參考過去的工作階段

184 257 

185## 目前限制258<h2 id="current-limitations">

259 目前限制

260</h2>

186 261 

187* **僅 GitHub**:目前支持 GitHub 上的存儲庫。262* **僅 GitHub**:目前支持 GitHub 上的存儲庫。

188* **一次一個拉取請求**:每個工作階段可以建立一個拉取請求。263* **一次一個拉取請求**:每個工作階段可以建立一個拉取請求。

189* **速率限制適用**:工作階段使用您的個人 Claude 計畫的速率限制。264* **速率限制適用**:工作階段使用您的個人 Claude 計畫的速率限制。

190* **需要網路存取**:用戶必須具有網路上的 Claude Code 存取;沒有它的用戶將只獲得標準 Claude 聊天回應。265* **需要網路存取**:用戶必須具有網路上的 Claude Code 存取;沒有它的用戶將只獲得標準 Claude 聊天回應。

191 266 

192## 相關資源267<h2 id="related-resources">

268 相關資源

269</h2>

193 270 

194<CardGroup>271<CardGroup>

195 <Card title="網路上的 Claude Code" icon="globe" href="/zh-TW/claude-code-on-the-web">272 <Card title="網路上的 Claude Code" icon="globe" href="/zh-TW/claude-code-on-the-web">

statusline.md +24 −3

Details

144* **顏色**:使用 [ANSI 逃逸碼](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors),例如 `\033[32m` 表示綠色(終端必須支援它們)。請參閱 [git 狀態範例](#git-status-with-colors)。144* **顏色**:使用 [ANSI 逃逸碼](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors),例如 `\033[32m` 表示綠色(終端必須支援它們)。請參閱 [git 狀態範例](#git-status-with-colors)。

145* **連結**:使用 [OSC 8 逃逸序列](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC) 使文字可點擊(macOS 上為 Cmd+click,Windows/Linux 上為 Ctrl+click)。需要支援超連結的終端,例如 iTerm2、Kitty 或 WezTerm。請參閱[可點擊連結範例](#clickable-links)。145* **連結**:使用 [OSC 8 逃逸序列](https://en.wikipedia.org/wiki/ANSI_escape_code#OSC) 使文字可點擊(macOS 上為 Cmd+click,Windows/Linux 上為 Ctrl+click)。需要支援超連結的終端,例如 iTerm2、Kitty 或 WezTerm。請參閱[可點擊連結範例](#clickable-links)。

146 146 

147**調整輸出大小以適應終端**

148 

149Claude Code 會擷取您指令碼的輸出,而不是直接將其連接到終端,因此 `tput cols` 和語言層級的寬度偵測無法從指令碼內部讀取終端大小。{/* min-version: 2.1.153 */}改為讀取 `COLUMNS` 和 `LINES` 環境變數。Claude Code 在執行您的指令碼之前會將這些設定為目前的終端尺寸。需要 Claude Code v2.1.153 或更新版本。

150 

147<Note>狀態列在本地執行,不消耗 API 令牌。在某些 UI 互動期間,它會暫時隱藏,包括自動完成建議、說明功能表和權限提示。</Note>151<Note>狀態列在本地執行,不消耗 API 令牌。在某些 UI 互動期間,它會暫時隱藏,包括自動完成建議、說明功能表和權限提示。</Note>

148 152 

149## 可用資料153## 可用資料


157| `workspace.project_dir` | 啟動 Claude Code 的目錄,如果工作階段期間工作目錄變更,可能與 `cwd` 不同 |161| `workspace.project_dir` | 啟動 Claude Code 的目錄,如果工作階段期間工作目錄變更,可能與 `cwd` 不同 |

158| `workspace.added_dirs` | 透過 `/add-dir` 或 `--add-dir` 新增的其他目錄。如果未新增任何目錄,則為空陣列 |162| `workspace.added_dirs` | 透過 `/add-dir` 或 `--add-dir` 新增的其他目錄。如果未新增任何目錄,則為空陣列 |

159| `workspace.git_worktree` | 當目前目錄位於使用 `git worktree add` 建立的連結 worktree 內時的 Git worktree 名稱。在主工作樹中不存在。對任何 git worktree 都會填入,不同於 `worktree.*` 僅適用於 `--worktree` 工作階段 |163| `workspace.git_worktree` | 當目前目錄位於使用 `git worktree add` 建立的連結 worktree 內時的 Git worktree 名稱。在主工作樹中不存在。對任何 git worktree 都會填入,不同於 `worktree.*` 僅適用於 `--worktree` 工作階段 |

164| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | 從 `origin` 遠端解析的儲存庫身分,例如 `"github.com"`、`"anthropics"`、`"claude-code"`。在 git 儲存庫外或未設定 `origin` 遠端時不存在 |

160| `cost.total_cost_usd` | 工作階段總成本(美元),在用戶端計算。可能與您的實際帳單不同 |165| `cost.total_cost_usd` | 工作階段總成本(美元),在用戶端計算。可能與您的實際帳單不同 |

161| `cost.total_duration_ms` | 自工作階段開始以來的總掛鐘時間(毫秒) |166| `cost.total_duration_ms` | 自工作階段開始以來的總掛鐘時間(毫秒) |

162| `cost.total_api_duration_ms` | 等待 API 回應所花費的總時間(毫秒) |167| `cost.total_api_duration_ms` | 等待 API 回應所花費的總時間(毫秒) |


167| `context_window.remaining_percentage` | 預先計算的剩餘 context window 百分比 |172| `context_window.remaining_percentage` | 預先計算的剩餘 context window 百分比 |

168| `context_window.current_usage` | 最後一次 API 呼叫中的令牌計數,在 [context window 欄位](#context-window-fields)中描述 |173| `context_window.current_usage` | 最後一次 API 呼叫中的令牌計數,在 [context window 欄位](#context-window-fields)中描述 |

169| `exceeds_200k_tokens` | 最近 API 回應中的總令牌計數(輸入、快取和輸出令牌合併)是否超過 200k。這是一個固定閾值,與實際 context window 大小無關。 |174| `exceeds_200k_tokens` | 最近 API 回應中的總令牌計數(輸入、快取和輸出令牌合併)是否超過 200k。這是一個固定閾值,與實際 context window 大小無關。 |

170| `effort.level` | 目前的推理努力等級(`low`、`medium`、`high`、`xhigh` 或 `max`)。反映即時工作階段值,包括工作階段中途的 `/effort` 變更。當目前模型不支援努力參數時不存在 |175| `effort.level` | 目前的推理努力等級(`low`、`medium`、`high`、`xhigh` 或 `max`)。反映即時工作階段值,包括工作階段中途的 `/effort` 變更。Ultracode 不是一個不同的等級,報告為 `xhigh`。當目前模型不支援努力參數時不存在 |

171| `thinking.enabled` | 是否為工作階段啟用擴展思考 |176| `thinking.enabled` | 是否為工作階段啟用擴展思考 |

172| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | 消耗的 5 小時或 7 天速率限制的百分比,從 0 到 100 |177| `rate_limits.five_hour.used_percentage`, `rate_limits.seven_day.used_percentage` | 消耗的 5 小時或 7 天速率限制的百分比,從 0 到 100 |

173| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | 5 小時或 7 天速率限制視窗重設時的 Unix 紀元秒數 |178| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | 5 小時或 7 天速率限制視窗重設時的 Unix 紀元秒數 |


178| `output_style.name` | 目前輸出樣式的名稱 |183| `output_style.name` | 目前輸出樣式的名稱 |

179| `vim.mode` | 啟用 [vim 模式](/zh-TW/interactive-mode#vim-editor-mode)時的目前 vim 模式(`NORMAL`、`INSERT`、`VISUAL` 或 `VISUAL LINE`) |184| `vim.mode` | 啟用 [vim 模式](/zh-TW/interactive-mode#vim-editor-mode)時的目前 vim 模式(`NORMAL`、`INSERT`、`VISUAL` 或 `VISUAL LINE`) |

180| `agent.name` | 使用 `--agent` 旗標或設定的代理設定執行時的代理名稱 |185| `agent.name` | 使用 `--agent` 旗標或設定的代理設定執行時的代理名稱 |

186| `pr.number`, `pr.url` | 目前分支的開啟提取請求。鏡像底部狀態列中的 PR 徽章。在找到 PR 之前、不在 git 儲存庫中或 PR 合併或關閉後不存在 |

187| `pr.review_state` | 開啟 PR 的審查狀態:`approved`、`pending`、`changes_requested` 或 `draft`。即使 `pr` 存在,也可能獨立不存在 |

181| `worktree.name` | 作用中 worktree 的名稱。僅在 `--worktree` 工作階段期間出現 |188| `worktree.name` | 作用中 worktree 的名稱。僅在 `--worktree` 工作階段期間出現 |

182| `worktree.path` | worktree 目錄的絕對路徑 |189| `worktree.path` | worktree 目錄的絕對路徑 |

183| `worktree.branch` | worktree 的 Git 分支名稱(例如 `"worktree-my-feature"`)。對於基於 hook 的 worktree 不存在 |190| `worktree.branch` | worktree 的 Git 分支名稱(例如 `"worktree-my-feature"`)。對於基於 hook 的 worktree 不存在 |


194 "session_name": "my-session",201 "session_name": "my-session",

195 "transcript_path": "/path/to/transcript.jsonl",202 "transcript_path": "/path/to/transcript.jsonl",

196 "model": {203 "model": {

197 "id": "claude-opus-4-7",204 "id": "claude-opus-4-8",

198 "display_name": "Opus"205 "display_name": "Opus"

199 },206 },

200 "workspace": {207 "workspace": {

201 "current_dir": "/current/working/directory",208 "current_dir": "/current/working/directory",

202 "project_dir": "/original/project/directory",209 "project_dir": "/original/project/directory",

203 "added_dirs": [],210 "added_dirs": [],

204 "git_worktree": "feature-xyz"211 "git_worktree": "feature-xyz",

212 "repo": {

213 "host": "github.com",

214 "owner": "anthropics",

215 "name": "claude-code"

216 }

205 },217 },

206 "version": "2.1.90",218 "version": "2.1.90",

207 "output_style": {219 "output_style": {


250 "agent": {262 "agent": {

251 "name": "security-reviewer"263 "name": "security-reviewer"

252 },264 },

265 "pr": {

266 "number": 1234,

267 "url": "https://github.com/anthropics/claude-code/pull/1234",

268 "review_state": "pending"

269 },

253 "worktree": {270 "worktree": {

254 "name": "my-feature",271 "name": "my-feature",

255 "path": "/path/to/.claude/worktrees/my-feature",272 "path": "/path/to/.claude/worktrees/my-feature",


264 281 

265 * `session_name`:僅在使用 `--name` 或 `/rename` 設定自訂名稱時出現282 * `session_name`:僅在使用 `--name` 或 `/rename` 設定自訂名稱時出現

266 * `workspace.git_worktree`:僅當目前目錄位於連結 git worktree 內時出現283 * `workspace.git_worktree`:僅當目前目錄位於連結 git worktree 內時出現

284 * `workspace.repo`:僅在 git 儲存庫內且設定了 `origin` 遠端時出現

267 * `effort`:僅當目前模型支援推理努力參數時出現285 * `effort`:僅當目前模型支援推理努力參數時出現

268 * `vim`:僅在啟用 vim 模式時出現286 * `vim`:僅在啟用 vim 模式時出現

269 * `agent`:僅在使用 `--agent` 旗標或設定的代理設定執行時出現287 * `agent`:僅在使用 `--agent` 旗標或設定的代理設定執行時出現

288 * `pr`:僅在為目前分支找到開啟 PR 時出現,一旦 PR 合併或關閉就會移除。`pr.review_state` 可能獨立不存在

270 * `worktree`:僅在 `--worktree` 工作階段期間出現。存在時,`branch` 和 `original_branch` 對於基於 hook 的 worktree 也可能不存在289 * `worktree`:僅在 `--worktree` 工作階段期間出現。存在時,`branch` 和 `original_branch` 對於基於 hook 的 worktree 也可能不存在

271 * `rate_limits`:僅對 Claude.ai 訂閱者(Pro/Max)在工作階段中第一次 API 回應後出現。每個視窗(`five_hour`、`seven_day`)可能獨立不存在。使用 `jq -r '.rate_limits.five_hour.used_percentage // empty'` 以優雅地處理不存在的情況。290 * `rate_limits`:僅對 Claude.ai 訂閱者(Pro/Max)在工作階段中第一次 API 回應後出現。每個視窗(`five_hour`、`seven_day`)可能獨立不存在。使用 `jq -r '.rate_limits.five_hour.used_percentage // empty'` 以優雅地處理不存在的情況。

272 291 


292* `cache_creation_input_tokens`:寫入快取的令牌311* `cache_creation_input_tokens`:寫入快取的令牌

293* `cache_read_input_tokens`:從快取讀取的令牌312* `cache_read_input_tokens`:從快取讀取的令牌

294 313 

314如需了解快取欄位的含義及其計費方式,請參閱[檢查快取效能](/zh-TW/prompt-caching#check-cache-performance)。

315 

295`used_percentage` 欄位僅從輸入令牌計算:`input_tokens + cache_creation_input_tokens + cache_read_input_tokens`。它不包括 `output_tokens`。316`used_percentage` 欄位僅從輸入令牌計算:`input_tokens + cache_creation_input_tokens + cache_read_input_tokens`。它不包括 `output_tokens`。

296 317 

297如果您從 `current_usage` 手動計算 context 百分比,請使用相同的僅輸入公式以符合 `used_percentage`。318如果您從 `current_usage` 手動計算 context 百分比,請使用相同的僅輸入公式以符合 `used_percentage`。

sub-agents.md +175 −71

Details

33* [Forked subagents](#fork-the-current-conversation)33* [Forked subagents](#fork-the-current-conversation)

34* [範例 subagents](#example-subagents)34* [範例 subagents](#example-subagents)

35 35 

36## 內建 subagents36<h2 id="built-in-subagents">

37 內建 subagents

38</h2>

37 39 

38Claude Code 包括內建 subagents,Claude 在適當時會自動使用。每個都繼承父對話的權限,並有額外的工具限制。40Claude Code 包括內建 subagents,Claude 在適當時會自動使用。每個都繼承父對話的權限,並有額外的工具限制。

39 41 


84 86 

85除了這些內建 subagents 之外,您可以建立自己的 subagents,具有自訂提示、工具限制、權限模式、hooks 和 skills。以下部分展示如何開始和自訂 subagents。87除了這些內建 subagents 之外,您可以建立自己的 subagents,具有自訂提示、工具限制、權限模式、hooks 和 skills。以下部分展示如何開始和自訂 subagents。

86 88 

87## 快速入門:建立您的第一個 subagent89<h2 id="quickstart-create-your-first-subagent">

90 快速入門:建立您的第一個 subagent

91</h2>

88 92 

89Subagents 在 Markdown 檔案中定義,具有 YAML frontmatter。您可以 [手動建立它們](#write-subagent-files) 或使用 `/agents` 命令。93Subagents 在 Markdown 檔案中定義,具有 YAML frontmatter。您可以 [手動建立它們](#write-subagent-files) 或使用 `/agents` 命令。

90 94 


146 150 

147您也可以手動建立 subagents 作為 Markdown 檔案、透過 CLI 標誌定義它們,或透過外掛程式分發它們。以下部分涵蓋所有配置選項。151您也可以手動建立 subagents 作為 Markdown 檔案、透過 CLI 標誌定義它們,或透過外掛程式分發它們。以下部分涵蓋所有配置選項。

148 152 

149## 配置 subagents153<h2 id="configure-subagents">

154 配置 subagents

155</h2>

150 156 

151### 使用 /agents 命令157<h3 id="use-the-/agents-command">

158 使用 /agents 命令

159</h3>

152 160 

153`/agents` 命令開啟用於管理 subagents 的分頁介面。**Running** 標籤顯示即時 subagents,讓您開啟或停止它們。**Library** 標籤讓您:161`/agents` 命令開啟用於管理 subagents 的分頁介面。**Running** 標籤顯示即時 subagents,讓您開啟或停止它們。**Library** 標籤讓您:

154 162 


160 168 

161這是建立和管理 subagents 的建議方式。對於手動建立或自動化,您也可以直接新增 subagent 檔案。169這是建立和管理 subagents 的建議方式。對於手動建立或自動化,您也可以直接新增 subagent 檔案。

162 170 

163### 選擇 subagent 範圍171<h3 id="choose-the-subagent-scope">

172 選擇 subagent 範圍

173</h3>

164 174 

165Subagents 是具有 YAML frontmatter 的 Markdown 檔案。根據範圍將它們儲存在不同位置。當多個 subagents 共享相同名稱時,更高優先級的位置獲勝。175Subagents 是具有 YAML frontmatter 的 Markdown 檔案。根據範圍將它們儲存在不同位置。當多個 subagents 共享相同名稱時,更高優先級的位置獲勝。

166 176 


234 244 

235來自任何這些範圍的 subagent 定義也可用於 [agent teams](/zh-TW/agent-teams#use-subagent-definitions-for-teammates):當產生隊友時,您可以參考 subagent 類型,隊友會使用其 `tools` 和 `model`,定義的主體作為額外指令附加到隊友的系統提示。請參閱 [agent teams](/zh-TW/agent-teams#use-subagent-definitions-for-teammates) 以了解哪些 frontmatter 欄位適用於該路徑。245來自任何這些範圍的 subagent 定義也可用於 [agent teams](/zh-TW/agent-teams#use-subagent-definitions-for-teammates):當產生隊友時,您可以參考 subagent 類型,隊友會使用其 `tools` 和 `model`,定義的主體作為額外指令附加到隊友的系統提示。請參閱 [agent teams](/zh-TW/agent-teams#use-subagent-definitions-for-teammates) 以了解哪些 frontmatter 欄位適用於該路徑。

236 246 

237### 編寫 subagent 檔案247<h3 id="write-subagent-files">

248 編寫 subagent 檔案

249</h3>

238 250 

239Subagent 檔案使用 YAML frontmatter 進行配置,後面跟著 Markdown 中的系統提示:251Subagent 檔案使用 YAML frontmatter 進行配置,後面跟著 Markdown 中的系統提示:

240 252 


258 270 

259一個 subagent 在主要對話的目前工作目錄中啟動。在 subagent 內,`cd` 命令不會在 Bash 或 PowerShell 工具呼叫之間持續,也不會影響主要對話的工作目錄。若要改為給 subagent 儲存庫的隔離副本,請設定 [`isolation: worktree`](#supported-frontmatter-fields)。271一個 subagent 在主要對話的目前工作目錄中啟動。在 subagent 內,`cd` 命令不會在 Bash 或 PowerShell 工具呼叫之間持續,也不會影響主要對話的工作目錄。若要改為給 subagent 儲存庫的隔離副本,請設定 [`isolation: worktree`](#supported-frontmatter-fields)。

260 272 

261#### 支援的 frontmatter 欄位273<h4 id="supported-frontmatter-fields">

274 支援的 frontmatter 欄位

275</h4>

262 276 

263以下欄位可用於 YAML frontmatter。只有 `name` 和 `description` 是必需的。277以下欄位可用於 YAML frontmatter。只有 `name` 和 `description` 是必需的。

264 278 

265| Field | Required | Description |279| Field | 必需 | Description |

266| :---------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |280| :---------------- | :- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

267| `name` | Yes | 使用小寫字母和連字號的唯一識別碼。[Hooks](/zh-TW/hooks#subagentstart) 將此值作為 `agent_type` 接收。檔案名稱不必相符 |281| `name` | | 使用小寫字母和連字號的唯一識別碼。[Hooks](/zh-TW/hooks#subagentstart) 將此值作為 `agent_type` 接收。檔案名稱不必相符 |

268| `description` | Yes | Claude 何時應委派給此 subagent |282| `description` | | Claude 何時應委派給此 subagent |

269| `tools` | No | [Tools](#available-tools) subagent 可以使用。如果省略,繼承所有工具。若要將 Skills 預載入上下文,請使用 `skills` 欄位而不是在此列出 `Skill` |283| `tools` | | [Tools](#available-tools) subagent 可以使用。如果省略,繼承所有工具。若要將 Skills 預載入上下文,請使用 `skills` 欄位而不是在此列出 `Skill` |

270| `disallowedTools` | No | 要拒絕的工具,從繼承或指定的清單中移除 |284| `disallowedTools` | | 要拒絕的工具,從繼承或指定的清單中移除 |

271| `model` | No | [Model](#choose-a-model) 使用:`sonnet`、`opus`、`haiku`、完整模型 ID(例如,`claude-opus-4-7`)或 `inherit`。預設為 `inherit` |285| `model` | | [Model](#choose-a-model) 使用:`sonnet`、`opus`、`haiku`、完整模型 ID(例如,`claude-opus-4-8`)或 `inherit`。預設為 `inherit` |

272| `permissionMode` | No | [Permission mode](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions` 或 `plan`。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |286| `permissionMode` | | [Permission mode](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions` 或 `plan`。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |

273| `maxTurns` | No | subagent 停止前的最大代理轉數 |287| `maxTurns` | | subagent 停止前的最大代理轉數 |

274| `skills` | No | [Skills](/zh-TW/skills) 在啟動時預載入到 subagent 的上下文中。注入完整技能內容,而不僅僅是描述。Subagents 仍然可以透過 Skill 工具呼叫未列出的專案、使用者和外掛程式技能 |288| `skills` | | [Skills](/zh-TW/skills) 在啟動時預載入到 subagent 的上下文中。注入完整技能內容,而不僅僅是描述。Subagents 仍然可以透過 Skill 工具呼叫未列出的專案、使用者和外掛程式技能 |

275| `mcpServers` | No | [MCP servers](/zh-TW/mcp) 可用於此 subagent。每個條目要麼是參考已配置伺服器的伺服器名稱(例如,`"slack"`),要麼是內聯定義,其中伺服器名稱為鍵,完整 [MCP server config](/zh-TW/mcp#installing-mcp-servers) 為值。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |289| `mcpServers` | | [MCP servers](/zh-TW/mcp) 可用於此 subagent。每個條目要麼是參考已配置伺服器的伺服器名稱(例如,`"slack"`),要麼是內聯定義,其中伺服器名稱為鍵,完整 [MCP server config](/zh-TW/mcp#installing-mcp-servers) 為值。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |

276| `hooks` | No | [Lifecycle hooks](#define-hooks-for-subagents) 限定於此 subagent。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |290| `hooks` | | [Lifecycle hooks](#define-hooks-for-subagents) 限定於此 subagent。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |

277| `memory` | No | [Persistent memory scope](#enable-persistent-memory):`user`、`project` 或 `local`。啟用跨工作階段學習 |291| `memory` | | [Persistent memory scope](#enable-persistent-memory):`user`、`project` 或 `local`。啟用跨工作階段學習 |

278| `background` | No | 設定為 `true` 以始終將此 subagent 作為 [background task](#run-subagents-in-foreground-or-background) 執行。預設:`false` |292| `background` | | 設定為 `true` 以始終將此 subagent 作為 [background task](#run-subagents-in-foreground-or-background) 執行。預設:`false` |

279| `effort` | No | 此 subagent 活動時的努力程度。覆蓋工作階段努力程度。預設:從工作階段繼承。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用的層級取決於模型 |293| `effort` | | 此 subagent 活動時的努力程度。覆蓋工作階段努力程度。預設:從工作階段繼承。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用的層級取決於模型 |

280| `isolation` | No | 設定為 `worktree` 以在臨時 [git worktree](/zh-TW/worktrees) 中執行 subagent,為其提供儲存庫的隔離副本。如果 subagent 不進行任何更改,worktree 會自動清理 |294| `isolation` | | 設定為 `worktree` 以在臨時 [git worktree](/zh-TW/worktrees) 中執行 subagent,為其提供儲存庫的隔離副本,預設從您的 [default branch](/zh-TW/worktrees#choose-the-base-branch) 分支,而不是父工作階段的 `HEAD`。如果 subagent 不進行任何更改,worktree 會自動清理 |

281| `color` | No | Subagent 在任務清單和文字中的顯示顏色。接受 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan` |295| `color` | | Subagent 在任務清單和文字中的顯示顏色。接受 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan` |

282| `initialPrompt` | No | 當此代理作為主工作階段代理執行時(透過 `--agent` 或 `agent` 設定),自動提交為第一個使用者轉數。[Commands](/zh-TW/commands) 和 [skills](/zh-TW/skills) 會被處理。前置於任何使用者提供的提示 |296| `initialPrompt` | | 當此代理作為主工作階段代理執行時(透過 `--agent` 或 `agent` 設定),自動提交為第一個使用者轉數。[Commands](/zh-TW/commands) 和 [skills](/zh-TW/skills) 會被處理。前置於任何使用者提供的提示 |

283 297 

284### 選擇模型298<h3 id="choose-a-model">

299 選擇模型

300</h3>

285 301 

286`model` 欄位控制 subagent 使用的 [AI model](/zh-TW/model-config):302`model` 欄位控制 subagent 使用的 [AI model](/zh-TW/model-config):

287 303 

288* **Model alias**:使用可用的別名之一:`sonnet`、`opus` 或 `haiku`304* **Model alias**:使用可用的別名之一:`sonnet`、`opus` 或 `haiku`

289* **Full model ID**:使用完整模型 ID,例如 `claude-opus-4-7` 或 `claude-sonnet-4-6`。接受與 `--model` 標誌相同的值305* **Full model ID**:使用完整模型 ID,例如 `claude-opus-4-8` 或 `claude-sonnet-4-6`。接受與 `--model` 標誌相同的值

290* **inherit**:使用與主要對話相同的模型306* **inherit**:使用與主要對話相同的模型

291* **Omitted**:如果未指定,預設為 `inherit`(使用與主要對話相同的模型)307* **Omitted**:如果未指定,預設為 `inherit`(使用與主要對話相同的模型)

292 308 


2973. Subagent 定義的 `model` frontmatter3133. Subagent 定義的 `model` frontmatter

2984. 主要對話的模型3144. 主要對話的模型

299 315 

300### 控制 subagent 功能316<h3 id="control-subagent-capabilities">

317 控制 subagent 功能

318</h3>

301 319 

302您可以透過工具存取、權限模式和條件規則來控制 subagents 可以執行的操作。320您可以透過工具存取、權限模式和條件規則來控制 subagents 可以執行的操作。

303 321 

304#### 可用工具322<h4 id="available-tools">

323 可用工具

324</h4>

305 325 

306Subagents 可以使用 Claude Code 的任何 [internal tools](/zh-TW/tools-reference)。預設情況下,subagents 從主要對話繼承所有工具,包括 MCP 工具。326Subagents 預設從主要對話繼承 [internal tools](/zh-TW/tools-reference) MCP 工具。以下工具取決於主要對話的 UI 或工作階段狀態,即使在 `tools` 欄位中列出也不可用於 subagents:

327 

328* `Agent`

329* `AskUserQuestion`

330* `EnterPlanMode`

331* `ExitPlanMode`,除非 subagent 的 [`permissionMode`](#permission-modes) 是 `plan`

332* `ScheduleWakeup`

333* `WaitForMcpServers`

307 334 

308若要限制工具,請使用 `tools` 欄位(允許清單)或 `disallowedTools` 欄位(拒絕清單)。此範例使用 `tools` 來專門允許 Read、Grep、Glob 和 Bash。Subagent 無法編輯檔案、寫入檔案或使用任何 MCP 工具:335若要限制工具,請使用 `tools` 欄位(允許清單)或 `disallowedTools` 欄位(拒絕清單)。此範例使用 `tools` 來專門允許 Read、Grep、Glob 和 Bash。Subagent 無法編輯檔案、寫入檔案或使用任何 MCP 工具:

309 336 


327 354 

328如果兩者都設定,`disallowedTools` 首先應用,然後 `tools` 針對剩餘的池進行解析。同時列在兩者中的工具會被移除。355如果兩者都設定,`disallowedTools` 首先應用,然後 `tools` 針對剩餘的池進行解析。同時列在兩者中的工具會被移除。

329 356 

330#### 限制可以產生的 subagents357<h4 id="restrict-which-subagents-can-be-spawned">

358 限制可以產生的 subagents

359</h4>

331 360 

332當代理以 `claude --agent` 作為主執行緒執行時,它可以使用 Agent 工具產生 subagents。若要限制它可以產生的 subagent 類型,請在 `tools` 欄位中使用 `Agent(agent_type)` 語法。361當代理以 `claude --agent` 作為主執行緒執行時,它可以使用 Agent 工具產生 subagents。若要限制它可以產生的 subagent 類型,請在 `tools` 欄位中使用 `Agent(agent_type)` 語法。

333 362 


351 380 

352如果 `Agent` 完全從 `tools` 清單中省略,代理無法產生任何 subagents。此限制僅適用於以 `claude --agent` 作為主執行緒執行的代理。Subagents 無法產生其他 subagents,因此 `Agent(agent_type)` 在 subagent 定義中無效。381如果 `Agent` 完全從 `tools` 清單中省略,代理無法產生任何 subagents。此限制僅適用於以 `claude --agent` 作為主執行緒執行的代理。Subagents 無法產生其他 subagents,因此 `Agent(agent_type)` 在 subagent 定義中無效。

353 382 

354#### 將 MCP 伺服器限定於 subagent383<h4 id="scope-mcp-servers-to-a-subagent">

384 將 MCP 伺服器限定於 subagent

385</h4>

355 386 

356使用 `mcpServers` 欄位為 subagent 提供對主要對話中不可用的 [MCP](/zh-TW/mcp) 伺服器的存取。此處定義的內聯伺服器在 subagent 啟動時連接,在完成時斷開連接。字串參考共享父工作階段的連接。387使用 `mcpServers` 欄位為 subagent 提供對主要對話中不可用的 [MCP](/zh-TW/mcp) 伺服器的存取。此處定義的內聯伺服器在 subagent 啟動時連接,在完成時斷開連接。字串參考共享父工作階段的連接。

357 388 


387 418 

388若要將 MCP 伺服器保持在主要對話之外,並避免其工具描述在那裡消耗上下文,請在此處內聯定義它,而不是在 `.mcp.json` 中。Subagent 獲得工具;父對話不獲得。419若要將 MCP 伺服器保持在主要對話之外,並避免其工具描述在那裡消耗上下文,請在此處內聯定義它,而不是在 `.mcp.json` 中。Subagent 獲得工具;父對話不獲得。

389 420 

390#### 權限模式421 v2.1.153 起,適用於主工作階段的 MCP 限制也涵蓋在 subagent frontmatter 中宣告的伺服器:

422 

423* [`--strict-mcp-config`](/zh-TW/cli-reference) 和 [`--bare`](/zh-TW/cli-reference)

424* [Enterprise managed MCP configuration](/zh-TW/managed-mcp)

425* [`allowedMcpServers` 和 `deniedMcpServers` 政策](/zh-TW/managed-mcp#policy-based-control-with-allowlists-and-denylists)

426 

427當其中之一阻止伺服器時,Claude Code 會跳過它並顯示警告,命名被阻止的伺服器。

428 

429受管設定限制適用於每個 subagent,無論其如何定義。`--strict-mcp-config` 不會過濾您透過 `--agents` 或 SDK `agents` 選項內聯傳遞的伺服器,因為這些是明確的呼叫者輸入。

430 

431<h4 id="permission-modes">

432 權限模式

433</h4>

391 434 

392`permissionMode` 欄位控制 subagent 如何處理權限提示。Subagents 從主要對話繼承權限上下文,並可以覆蓋模式,除非父模式優先,如下所述。435`permissionMode` 欄位控制 subagent 如何處理權限提示。Subagents 從主要對話繼承權限上下文,並可以覆蓋模式,除非父模式優先,如下所述。

393 436 


401| `plan` | Plan mode(唯讀探索) |444| `plan` | Plan mode(唯讀探索) |

402 445 

403<Warning>446<Warning>

404 謹慎使用 `bypassPermissions`。它跳過權限提示,允許 subagent 執行操作而無需批准,包括寫入 `.git`、`.claude`、`.vscode`、`.idea` 和 `.husky`。根和主目錄移除(例如 `rm -rf /`)仍然會提示作為斷路器。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 以了解詳細資訊。447 謹慎使用 `bypassPermissions`。它跳過權限提示,允許 subagent 執行操作而無需批准,包括寫入 `.git`、`.config/git`、`.claude`、`.vscode`、`.idea`、`.husky`、`.cargo`、`.devcontainer`、`.yarn` 和 `.mvn`。根和主目錄移除(例如 `rm -rf /`)仍然會提示作為斷路器。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 以了解詳細資訊。

405</Warning>448</Warning>

406 449 

407如果父級使用 `bypassPermissions` 或 `acceptEdits`,這優先並且無法被覆蓋。如果父級使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),subagent 繼承 auto mode,其 frontmatter 中的任何 `permissionMode` 都會被忽略:分類器使用與父工作階段相同的阻止和允許規則評估 subagent 的工具呼叫。450如果父級使用 `bypassPermissions` 或 `acceptEdits`,這優先並且無法被覆蓋。如果父級使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),subagent 繼承 auto mode,其 frontmatter 中的任何 `permissionMode` 都會被忽略:分類器使用與父工作階段相同的阻止和允許規則評估 subagent 的工具呼叫。

408 451 

409#### 將技能預載入 subagents452<h4 id="preload-skills-into-subagents">

453 將技能預載入 subagents

454</h4>

410 455 

411使用 `skills` 欄位在啟動時將技能內容注入到 subagent 的上下文中。這為 subagent 提供領域知識,而無需在執行期間發現和載入技能。456使用 `skills` 欄位在啟動時將技能內容注入到 subagent 的上下文中。這為 subagent 提供領域知識,而無需在執行期間發現和載入技能。

412 457 


430 這與 [在 subagent 中執行技能](/zh-TW/skills#run-skills-in-a-subagent) 相反。使用 subagent 中的 `skills`,subagent 控制系統提示並載入技能內容。使用技能中的 `context: fork`,技能內容被注入到您指定的代理中。兩者都使用相同的基礎系統。475 這與 [在 subagent 中執行技能](/zh-TW/skills#run-skills-in-a-subagent) 相反。使用 subagent 中的 `skills`,subagent 控制系統提示並載入技能內容。使用技能中的 `context: fork`,技能內容被注入到您指定的代理中。兩者都使用相同的基礎系統。

431</Note>476</Note>

432 477 

433#### 啟用持久記憶478<h4 id="enable-persistent-memory">

479 啟用持久記憶

480</h4>

434 481 

435`memory` 欄位為 subagent 提供一個在對話之間存活的持久目錄。Subagent 使用此目錄隨著時間建立知識,例如程式碼庫模式、除錯見解和架構決策。482`memory` 欄位為 subagent 提供一個在對話之間存活的持久目錄。Subagent 使用此目錄隨著時間建立知識,例如程式碼庫模式、除錯見解和架構決策。

436 483 


459* Subagent 的系統提示還包括記憶目錄中 `MEMORY.md` 的前 200 行或 25KB(以先到者為準),以及如果超過該限制則策劃 `MEMORY.md` 的說明。506* Subagent 的系統提示還包括記憶目錄中 `MEMORY.md` 的前 200 行或 25KB(以先到者為準),以及如果超過該限制則策劃 `MEMORY.md` 的說明。

460* Read、Write 和 Edit 工具會自動啟用,以便 subagent 可以管理其記憶檔案。507* Read、Write 和 Edit 工具會自動啟用,以便 subagent 可以管理其記憶檔案。

461 508 

462##### 持久記憶提示509<h5 id="persistent-memory-tips">

510 持久記憶提示

511</h5>

463 512 

464* `project` 是建議的預設範圍。它使 subagent 知識可透過版本控制共享。當 subagent 的知識在所有專案中廣泛適用時使用 `user`,或當知識不應簽入版本控制時使用 `local`。513* `project` 是建議的預設範圍。它使 subagent 知識可透過版本控制共享。當 subagent 的知識在所有專案中廣泛適用時使用 `user`,或當知識不應簽入版本控制時使用 `local`。

465* 要求 subagent 在開始工作前查閱其記憶:"Review this PR, and check your memory for patterns you've seen before."514* 要求 subagent 在開始工作前查閱其記憶:"Review this PR, and check your memory for patterns you've seen before."


473 and where.522 and where.

474 ```523 ```

475 524 

476#### 使用 hooks 的條件規則525<h4 id="conditional-rules-with-hooks">

526 使用 hooks 的條件規則

527</h4>

477 528 

478為了更動態地控制工具使用,請使用 `PreToolUse` hooks 在執行前驗證操作。當您需要允許工具的某些操作同時阻止其他操作時,這很有用。529為了更動態地控制工具使用,請使用 `PreToolUse` hooks 在執行前驗證操作。當您需要允許工具的某些操作同時阻止其他操作時,這很有用。

479 530 


513 564 

514請參閱 [Hook input](/zh-TW/hooks#pretooluse-input) 以了解完整的輸入架構,以及 [exit codes](/zh-TW/hooks#exit-code-output) 以了解退出代碼如何影響行為。在 Windows 上,在 PowerShell 中編寫 hook 指令碼,並在 hook 條目中新增 `shell: powershell`,如 [在 PowerShell 中執行 hooks](/zh-TW/hooks#windows-powershell-tool) 所示。565請參閱 [Hook input](/zh-TW/hooks#pretooluse-input) 以了解完整的輸入架構,以及 [exit codes](/zh-TW/hooks#exit-code-output) 以了解退出代碼如何影響行為。在 Windows 上,在 PowerShell 中編寫 hook 指令碼,並在 hook 條目中新增 `shell: powershell`,如 [在 PowerShell 中執行 hooks](/zh-TW/hooks#windows-powershell-tool) 所示。

515 566 

516#### 禁用特定 subagents567<h4 id="disable-specific-subagents">

568 禁用特定 subagents

569</h4>

517 570 

518您可以透過將 subagents 新增到 [settings](/zh-TW/settings#permission-settings) 中的 `deny` 陣列來防止 Claude 使用特定 subagents。使用格式 `Agent(subagent-name)`,其中 `subagent-name` 與 subagent 的 name 欄位相符。571您可以透過將 subagents 新增到 [settings](/zh-TW/settings#permission-settings) 中的 `deny` 陣列來防止 Claude 使用特定 subagents。使用格式 `Agent(subagent-name)`,其中 `subagent-name` 與 subagent 的 name 欄位相符。

519 572 


533 586 

534請參閱 [Permissions documentation](/zh-TW/permissions#tool-specific-permission-rules) 以了解有關權限規則的更多詳細資訊。587請參閱 [Permissions documentation](/zh-TW/permissions#tool-specific-permission-rules) 以了解有關權限規則的更多詳細資訊。

535 588 

536### 為 subagents 定義 hooks589<h3 id="define-hooks-for-subagents">

590 為 subagents 定義 hooks

591</h3>

537 592 

538Subagents 可以定義在 subagent 生命週期期間執行的 [hooks](/zh-TW/hooks)。有兩種方式來配置 hooks:593Subagents 可以定義在 subagent 生命週期期間執行的 [hooks](/zh-TW/hooks)。有兩種方式來配置 hooks:

539 594 

5401. **在 subagent 的 frontmatter 中**:定義只在該 subagent 活動時執行的 hooks5951. **在 subagent 的 frontmatter 中**:定義只在該 subagent 活動時執行的 hooks

5412. **在 `settings.json` 中**:定義在 subagents 啟動或停止時在主工作階段中執行的 hooks5962. **在 `settings.json` 中**:定義在 subagents 啟動或停止時在主工作階段中執行的 hooks

542 597 

543#### Subagent frontmatter 中的 Hooks598<h4 id="hooks-in-subagent-frontmatter">

599 Subagent frontmatter 中的 Hooks

600</h4>

544 601 

545直接在 subagent 的 markdown 檔案中定義 hooks。這些 hooks 只在該特定 subagent 活動時執行,並在完成時清理。602直接在 subagent 的 markdown 檔案中定義 hooks。這些 hooks 只在該特定 subagent 活動時執行,並在完成時清理。

546 603 


578 635 

579Frontmatter 中的 `Stop` hooks 會自動轉換為 `SubagentStop` 事件。636Frontmatter 中的 `Stop` hooks 會自動轉換為 `SubagentStop` 事件。

580 637 

581#### 用於 subagent 事件的專案層級 hooks638<h4 id="project-level-hooks-for-subagent-events">

639 用於 subagent 事件的專案層級 hooks

640</h4>

582 641 

583在 `settings.json` 中配置 hooks,以回應主工作階段中的 subagent 生命週期事件。642在 `settings.json` 中配置 hooks,以回應主工作階段中的 subagent 生命週期事件。

584 643 


613 672 

614請參閱 [Hooks](/zh-TW/hooks) 以了解完整的 hook 配置格式。673請參閱 [Hooks](/zh-TW/hooks) 以了解完整的 hook 配置格式。

615 674 

616## 使用 subagents675<h2 id="work-with-subagents">

676 使用 subagents

677</h2>

617 678 

618### 理解自動委派679<h3 id="understand-automatic-delegation">

680 理解自動委派

681</h3>

619 682 

620Claude 根據您請求中的任務描述、subagent 配置中的 `description` 欄位和目前上下文自動委派任務。為了鼓勵主動委派,在 subagent 的 description 欄位中包括「use proactively」之類的短語。683Claude 根據您請求中的任務描述、subagent 配置中的 `description` 欄位和目前上下文自動委派任務。為了鼓勵主動委派,在 subagent 的 description 欄位中包括「use proactively」之類的短語。

621 684 

622### 明確呼叫 subagents685<h3 id="invoke-subagents-explicitly">

686 明確呼叫 subagents

687</h3>

623 688 

624當自動委派不夠時,您可以自己要求 subagent。三種模式從一次性建議升級到工作階段範圍的預設:689當自動委派不夠時,您可以自己要求 subagent。三種模式從一次性建議升級到工作階段範圍的預設:

625 690 


678 743 

679如果兩者都存在,CLI 標誌會覆蓋設定。744如果兩者都存在,CLI 標誌會覆蓋設定。

680 745 

681### 在前景或背景中執行 subagents746<h3 id="run-subagents-in-foreground-or-background">

747 在前景或背景中執行 subagents

748</h3>

682 749 

683Subagents 可以在前景(阻止)或背景(並行)中執行:750Subagents 可以在前景(阻止)或背景(並行)中執行:

684 751 


694 761 

695若要禁用所有背景任務功能,請將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 環境變數設定為 `1`。請參閱 [Environment variables](/zh-TW/env-vars)。762若要禁用所有背景任務功能,請將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 環境變數設定為 `1`。請參閱 [Environment variables](/zh-TW/env-vars)。

696 763 

697當 [fork mode](#fork-the-current-conversation) 啟用時,每個 subagent 產生都在背景中執行,無論 `background` 欄位如何。Forks 仍然在您的終端中出現權限提示;命名 subagents 自動拒絕任何會提示的內容,如上所述。764當 [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) 設定時,每個 subagent 產生都在背景中執行,無論 `background` 欄位如何。Forks 仍然在您的終端中出現權限提示;命名 subagents 自動拒絕任何會提示的內容,如上所述。

698 765 

699### 常見模式766<h3 id="common-patterns">

767 常見模式

768</h3>

700 769 

701#### 隔離高容量操作770<h4 id="isolate-high-volume-operations">

771 隔離高容量操作

772</h4>

702 773 

703subagents 最有效的用途之一是隔離產生大量輸出的操作。執行測試、獲取文件或處理日誌檔案可能會消耗大量上下文。透過將這些委派給 subagent,詳細輸出保留在 subagent 的上下文中,而只有相關摘要返回到主要對話。774subagents 最有效的用途之一是隔離產生大量輸出的操作。執行測試、獲取文件或處理日誌檔案可能會消耗大量上下文。透過將這些委派給 subagent,詳細輸出保留在 subagent 的上下文中,而只有相關摘要返回到主要對話。

704 775 


706Use a subagent to run the test suite and report only the failing tests with their error messages777Use a subagent to run the test suite and report only the failing tests with their error messages

707```778```

708 779 

709#### 執行並行研究780<h4 id="run-parallel-research">

781 執行並行研究

782</h4>

710 783 

711對於獨立調查,產生多個 subagents 以同時工作:784對於獨立調查,產生多個 subagents 以同時工作:

712 785 


722 795 

723對於需要持續並行性或超過上下文視窗的任務,[agent teams](/zh-TW/agent-teams) 為每個工作者提供自己的獨立上下文。796對於需要持續並行性或超過上下文視窗的任務,[agent teams](/zh-TW/agent-teams) 為每個工作者提供自己的獨立上下文。

724 797 

725#### 鏈接 subagents798<h4 id="chain-subagents">

799 鏈接 subagents

800</h4>

726 801 

727對於多步驟工作流程,要求 Claude 按順序使用 subagents。每個 subagent 完成其任務並將結果返回給 Claude,然後將相關上下文傳遞給下一個 subagent。802對於多步驟工作流程,要求 Claude 按順序使用 subagents。每個 subagent 完成其任務並將結果返回給 Claude,然後將相關上下文傳遞給下一個 subagent。

728 803 


730Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them805Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

731```806```

732 807 

733### 在 subagents 和主要對話之間選擇808<h3 id="choose-between-subagents-and-main-conversation">

809 在 subagents 和主要對話之間選擇

810</h3>

734 811 

735在以下情況下使用 **主要對話**:812在以下情況下使用 **主要對話**:

736 813 


753 Subagents 無法產生其他 subagents。如果您的工作流程需要嵌套委派,請使用 [Skills](/zh-TW/skills) 或從主要對話 [鏈接 subagents](#chain-subagents)。830 Subagents 無法產生其他 subagents。如果您的工作流程需要嵌套委派,請使用 [Skills](/zh-TW/skills) 或從主要對話 [鏈接 subagents](#chain-subagents)。

754</Note>831</Note>

755 832 

756### 管理 subagent 上下文833<h3 id="manage-subagent-context">

834 管理 subagent 上下文

835</h3>

757 836 

758#### 啟動時載入的內容837<h4 id="what-loads-at-startup">

838 啟動時載入的內容

839</h4>

759 840 

760每個 subagent 都以新鮮、隔離的上下文視窗開始。它看不到您的對話歷史記錄、您已經呼叫的技能或 Claude 已經讀取的檔案。Claude 撰寫一條委派訊息來總結任務,subagent 從那裡開始工作。例外是 [fork](#fork-the-current-conversation),它繼承父對話而不是從頭開始。841每個 subagent 都以新鮮、隔離的上下文視窗開始。它看不到您的對話歷史記錄、您已經呼叫的技能或 Claude 已經讀取的檔案。Claude 撰寫一條委派訊息來總結任務,subagent 從那裡開始工作。例外是 [fork](#fork-the-current-conversation),它繼承父對話而不是從頭開始。

761 842 


771 852 

772主要對話使用完整 CLAUDE.md 上下文讀取 Explore 和 Plan 結果,所以大多數規則不需要到達 subagent 本身。如果規則必須,例如「忽略 `vendor/` 目錄」,在您委派時給 Claude 的提示中重新陳述它。853主要對話使用完整 CLAUDE.md 上下文讀取 Explore 和 Plan 結果,所以大多數規則不需要到達 subagent 本身。如果規則必須,例如「忽略 `vendor/` 目錄」,在您委派時給 Claude 的提示中重新陳述它。

773 854 

774#### 恢復 subagents855<h4 id="resume-subagents">

856 恢復 subagents

857</h4>

775 858 

776每個 subagent 呼叫都會建立一個具有新鮮上下文的新實例。若要繼續現有 subagent 的工作而不是重新開始,請要求 Claude 恢復它。859每個 subagent 呼叫都會建立一個具有新鮮上下文的新實例。若要繼續現有 subagent 的工作而不是重新開始,請要求 Claude 恢復它。

777 860 


799* **工作階段持續性**:Subagent 文字在其工作階段內持續存在。您可以透過恢復相同工作階段在重新啟動 Claude Code 後 [恢復 subagent](#resume-subagents)。882* **工作階段持續性**:Subagent 文字在其工作階段內持續存在。您可以透過恢復相同工作階段在重新啟動 Claude Code 後 [恢復 subagent](#resume-subagents)。

800* **自動清理**:文字根據 `cleanupPeriodDays` 設定進行清理(預設:30 天)。883* **自動清理**:文字根據 `cleanupPeriodDays` 設定進行清理(預設:30 天)。

801 884 

802#### 自動壓縮885<h4 id="auto-compaction">

886 自動壓縮

887</h4>

803 888 

804Subagents 支援使用與主要對話相同的邏輯進行自動壓縮。預設情況下,自動壓縮在大約 95% 容量時觸發。若要更早觸發壓縮,請將 `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 設定為較低的百分比(例如,`50`)。請參閱 [environment variables](/zh-TW/env-vars) 以了解詳細資訊。889Subagents 支援使用與主要對話相同的邏輯進行自動壓縮。預設情況下,自動壓縮在大約 95% 容量時觸發。若要更早觸發壓縮,請將 `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 設定為較低的百分比(例如,`50`)。請參閱 [environment variables](/zh-TW/env-vars) 以了解詳細資訊。

805 890 


818 903 

819`preTokens` 值顯示壓縮發生前使用了多少個 tokens。904`preTokens` 值顯示壓縮發生前使用了多少個 tokens。

820 905 

821## Fork 目前的對話906<h2 id="fork-the-current-conversation">

907 Fork 目前的對話

908</h2>

822 909 

823<Note>910<Note>

824 Forked subagents 是實驗性的,需要 Claude Code v2.1.117 或更新版本。行為和配置可能在未來版本中變更。透過將 [`CLAUDE_CODE_FORK_SUBAGENT`](/zh-TW/env-vars) 環境變數設定為 `1` 來啟用它們。該變數在互動模式中以及透過 SDK 或 `claude -p` 被接受。911 Forked subagents 需要 Claude Code v2.1.117 或更新版本。{/* min-version: 2.1.161 */}從 v2.1.161 開始,`/fork` 命令預設啟用;在較早版本中,它需要將 [`CLAUDE_CODE_FORK_SUBAGENT`](/zh-TW/env-vars) 環境變數設定為 `1`。將 forks 設定為模型的*預設*生成行為是實驗性的,可能在未來版本中變更;透過設定相同的變數來啟用它。該變數在互動模式中以及透過 SDK 或 `claude -p` 被接受。

825</Note>912</Note>

826 913 

827Fork 是一個 subagent,它繼承到目前為止的整個對話,而不是從頭開始。這會放棄 subagents 否則提供的輸入隔離:fork 看到與主工作階段相同的系統提示、工具、模型和訊息歷史記錄,因此您可以將側面任務交給它,而無需重新解釋情況。Fork 自己的工具呼叫仍然保持在您的對話之外,只有其最終結果返回,因此您的主要上下文視窗保持乾淨。當命名 subagent 需要太多背景才能有用時,或當您想從相同的起點並行嘗試多種方法時,使用 fork。914Fork 是一個 subagent,它繼承到目前為止的整個對話,而不是從頭開始。這會放棄 subagents 否則提供的輸入隔離:fork 看到與主工作階段相同的系統提示、工具、模型和訊息歷史記錄,因此您可以將側面任務交給它,而無需重新解釋情況。Fork 自己的工具呼叫仍然保持在您的對話之外,只有其最終結果返回,因此您的主要上下文視窗保持乾淨。當命名 subagent 需要太多背景才能有用時,或當您想從相同的起點並行嘗試多種方法時,使用 fork。

828 915 

829啟用 fork mode 以三種方式改變 Claude Code:916設定 `CLAUDE_CODE_FORK_SUBAGENT` 以兩種方式改變 Claude Code:

830 917 

831* Claude 在它否則會使用 [general-purpose](#built-in-subagents) subagent 時產生 fork。命名 subagents,如 Explore 仍然像以前一樣產生。918* Claude 在它否則會使用 [general-purpose](#built-in-subagents) subagent 時產生 fork。命名 subagents,如 Explore 仍然像以前一樣產生。

832* 每個 subagent 產生都在 [background](#run-subagents-in-foreground-or-background) 中執行,無論它是 fork 還是命名 subagent。設定 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 為 `1` 以保持產生同步。919* 每個 subagent 產生都在 [background](#run-subagents-in-foreground-or-background) 中執行,無論它是 fork 還是命名 subagent。設定 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 為 `1` 以保持產生同步。

833* `/fork` 命令產生 fork 而不是充當 [`/branch`](/zh-TW/commands) 的別名。

834 920 

835您可以使用 `/fork` 後跟指令自己啟動 fork。Claude Code 從指令的前幾個詞命名 fork。以下範例 forks 對話以在您在主工作階段中繼續實現時草擬測試案例:921您可以使用 `/fork` 後跟指令自己啟動 fork,無論是否設定了變數。Claude Code 從指令的前幾個詞命名 fork。以下範例 forks 對話以在您在主工作階段中繼續實現時草擬測試案例:

836 922 

837```text theme={null}923```text theme={null}

838/fork draft unit tests for the parser changes so far924/fork draft unit tests for the parser changes so far


840 926 

841Fork 出現在提示下方的面板中,並在您繼續工作時在背景中執行。完成後,其結果作為訊息到達您的主要對話。下一部分涵蓋面板控制項,用於在 forks 執行時觀察和引導它們。927Fork 出現在提示下方的面板中,並在您繼續工作時在背景中執行。完成後,其結果作為訊息到達您的主要對話。下一部分涵蓋面板控制項,用於在 forks 執行時觀察和引導它們。

842 928 

843### 觀察和引導執行中的 forks929<h3 id="observe-and-steer-running-forks">

930 觀察和引導執行中的 forks

931</h3>

844 932 

845執行中的 forks 出現在提示輸入下方的面板中,主工作階段有一行,每個 fork 有一行。使用這些鍵與面板互動:933執行中的 forks 出現在提示輸入下方的面板中,主工作階段有一行,每個 fork 有一行。使用這些鍵與面板互動:

846 934 


851| `x` | 關閉完成的 fork 或停止執行中的 fork |939| `x` | 關閉完成的 fork 或停止執行中的 fork |

852| `Esc` | 將焦點返回到提示輸入 |940| `Esc` | 將焦點返回到提示輸入 |

853 941 

854### Forks 與命名 subagents 的區別942<h3 id="how-forks-differ-from-named-subagents">

943 Forks 與命名 subagents 的區別

944</h3>

855 945 

856Fork 繼承主工作階段在產生時擁有的所有內容。命名 subagent 從自己的定義開始。946Fork 繼承主工作階段在產生時擁有的所有內容。命名 subagent 從自己的定義開始。

857 947 


867 957 

868當 Claude 透過 Agent 工具產生 fork 時,它可以傳遞 `isolation: "worktree"`,以便 fork 的檔案編輯被寫入單獨的 git worktree 而不是您的簽出。958當 Claude 透過 Agent 工具產生 fork 時,它可以傳遞 `isolation: "worktree"`,以便 fork 的檔案編輯被寫入單獨的 git worktree 而不是您的簽出。

869 959 

870### 限制960<h3 id="limitations">

961 限制

962</h3>

871 963 

872設定 `CLAUDE_CODE_FORK_SUBAGENT=1` 在互動式工作階段、[non-interactive mode](/zh-TW/headless) 和 Agent SDK 中啟用 fork mode。Fork 無法產生進一步的 forks。964設定 `CLAUDE_CODE_FORK_SUBAGENT=1` 在互動式工作階段、[non-interactive mode](/zh-TW/headless) 和 Agent SDK 中啟用 fork mode。Fork 無法產生進一步的 forks。

873 965 

874## 範例 subagents966<h2 id="example-subagents">

967 範例 subagents

968</h2>

875 969 

876這些範例展示了建立 subagents 的有效模式。將它們用作起點,或使用 Claude 生成自訂版本。970這些範例展示了建立 subagents 的有效模式。將它們用作起點,或使用 Claude 生成自訂版本。

877 971 


884 * **簽入版本控制:** 與您的團隊共享專案 subagents978 * **簽入版本控制:** 與您的團隊共享專案 subagents

885</Tip>979</Tip>

886 980 

887### 程式碼審查者981<h3 id="code-reviewer">

982 程式碼審查者

983</h3>

888 984 

889一個唯讀 subagent,審查程式碼而不修改它。此範例展示如何設計一個具有有限工具存取(無 Edit 或 Write)和詳細提示的專注 subagent,該提示明確指定要查找的內容以及如何格式化輸出。985一個唯讀 subagent,審查程式碼而不修改它。此範例展示如何設計一個具有有限工具存取(無 Edit 或 Write)和詳細提示的專注 subagent,該提示明確指定要查找的內容以及如何格式化輸出。

890 986 


921Include specific examples of how to fix issues.1017Include specific examples of how to fix issues.

922```1018```

923 1019 

924### 除錯器1020<h3 id="debugger">

1021 除錯器

1022</h3>

925 1023 

926一個可以分析和修復問題的 subagent。與程式碼審查者不同,這個包括 Edit,因為修復錯誤需要修改程式碼。提示提供了從診斷到驗證的清晰工作流程。1024一個可以分析和修復問題的 subagent。與程式碼審查者不同,這個包括 Edit,因為修復錯誤需要修改程式碼。提示提供了從診斷到驗證的清晰工作流程。

927 1025 


958Focus on fixing the underlying issue, not the symptoms.1056Focus on fixing the underlying issue, not the symptoms.

959```1057```

960 1058 

961### 資料科學家1059<h3 id="data-scientist">

1060 資料科學家

1061</h3>

962 1062 

963一個用於資料分析工作的特定領域 subagent。此範例展示如何為典型編碼任務之外的專門工作流程建立 subagents。它明確設定 `model: sonnet` 以進行更有能力的分析。1063一個用於資料分析工作的特定領域 subagent。此範例展示如何為典型編碼任務之外的專門工作流程建立 subagents。它明確設定 `model: sonnet` 以進行更有能力的分析。

964 1064 


995Always ensure queries are efficient and cost-effective.1095Always ensure queries are efficient and cost-effective.

996```1096```

997 1097 

998### 資料庫查詢驗證器1098<h3 id="database-query-validator">

1099 資料庫查詢驗證器

1100</h3>

999 1101 

1000一個允許 Bash 存取但驗證命令以僅允許唯讀 SQL 查詢的 subagent。此範例展示如何在需要比 `tools` 欄位提供的更精細控制時使用 `PreToolUse` hooks。1102一個允許 Bash 存取但驗證命令以僅允許唯讀 SQL 查詢的 subagent。此範例展示如何在需要比 `tools` 欄位提供的更精細控制時使用 `PreToolUse` hooks。

1001 1103 


1059 1161 

1060Hook 透過 stdin 接收 JSON,Bash 命令在 `tool_input.command` 中。退出代碼 2 阻止操作並將錯誤訊息反饋給 Claude。請參閱 [Hooks](/zh-TW/hooks#exit-code-output) 以了解退出代碼和 [Hook input](/zh-TW/hooks#pretooluse-input) 以了解完整的輸入架構。1162Hook 透過 stdin 接收 JSON,Bash 命令在 `tool_input.command` 中。退出代碼 2 阻止操作並將錯誤訊息反饋給 Claude。請參閱 [Hooks](/zh-TW/hooks#exit-code-output) 以了解退出代碼和 [Hook input](/zh-TW/hooks#pretooluse-input) 以了解完整的輸入架構。

1061 1163 

1062## 後續步驟1164<h2 id="next-steps">

1165 後續步驟

1166</h2>

1063 1167 

1064現在您理解了 subagents,請探索這些相關功能:1168現在您理解了 subagents,請探索這些相關功能:

1065 1169 

terminal-config.md +58 −20

Details

17 17 

18此頁面是關於讓您的終端機向 Claude Code 發送正確的信號。若要更改 Claude Code 本身回應的快捷鍵,請改為參閱[快捷鍵](/zh-TW/keybindings)。18此頁面是關於讓您的終端機向 Claude Code 發送正確的信號。若要更改 Claude Code 本身回應的快捷鍵,請改為參閱[快捷鍵](/zh-TW/keybindings)。

19 19 

20## 輸入多行提示20<h2 id="enter-multiline-prompts">

21 輸入多行提示

22</h2>

21 23 

22按 Enter 提交您的訊息。若要在不提交的情況下新增換行符,請按 Ctrl+J,或輸入 `\` 然後按 Enter。兩者都在每個終端機中無需設置即可運作。24按 Enter 提交您的訊息。若要在不提交的情況下新增換行符,請按 Ctrl+J,或輸入 `\` 然後按 Enter。兩者都在每個終端機中無需設置即可運作。

23 25 


26| 終端機 | Shift+Enter 用於換行符 |28| 終端機 | Shift+Enter 用於換行符 |

27| :---------------------------------------------------------------- | :--------------------------- |29| :---------------------------------------------------------------- | :--------------------------- |

28| Ghostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal | 無需設置即可運作 |30| Ghostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal | 無需設置即可運作 |

29| VS Code、Cursor、Windsurf、Alacritty、Zed | 執行一次 `/terminal-setup` |31| VS Code、Cursor、Devin Desktop、Alacritty、Zed | 執行一次 `/terminal-setup` |

30| gnome-terminal、JetBrains IDE(例如 PyCharm 和 Android Studio) | 不可用;使用 Ctrl+J 或 `\` 然後 Enter |32| gnome-terminal、JetBrains IDE(例如 PyCharm 和 Android Studio) | 不可用;使用 Ctrl+J 或 `\` 然後 Enter |

31 33 

32對於 VS Code、Cursor、Windsurf、Alacritty 和 Zed,`/terminal-setup` 將 Shift+Enter 和其他快捷鍵寫入終端機的配置檔案。在 VS Code、Cursor 和 Windsurf 中,它也會在編輯器設定中設定 `terminal.integrated.mouseWheelScrollSensitivity`,以在[全螢幕模式](/zh-TW/fullscreen)中實現更平順的滾動。現有的綁定和設定會保留在原位;如果您看到類似 `VSCode terminal Shift+Enter key binding already configured` 的訊息,則未進行任何變更。直接在主機終端機中執行 `/terminal-setup` 而不是在 tmux 或 screen 內,因為它需要寫入主機終端機的配置。34對於 VS Code、Cursor、Devin Desktop、Alacritty 和 Zed,`/terminal-setup` 將 Shift+Enter 和其他快捷鍵寫入終端機的配置檔案。現有的綁定會保留在原位;如果您看到類似 `VSCode terminal Shift+Enter key binding already configured` 的訊息,則未進行任何變更。直接在主機終端機中執行 `/terminal-setup` 而不是在 tmux 或 screen 內,因為它需要寫入主機終端機的配置。

35 

36在 VS Code、Cursor 和 Devin Desktop 中,`/terminal-setup` 也會更新兩個編輯器設定:它將 `terminal.integrated.gpuAcceleration` 設定為 `"off"` 以防止整合終端機中的文字亂碼,並設定 `terminal.integrated.mouseWheelScrollSensitivity` 以在[全螢幕模式](/zh-TW/fullscreen)中實現更平順的滾動。若要復原 GPU 加速變更,請將其設回 `"auto"` 並重新載入編輯器視窗。

33 37 

34如果您在 tmux 內執行,即使外部終端機支援,Shift+Enter 也需要下面的 [tmux 配置](#configure-tmux)。38如果您在 tmux 內執行,即使外部終端機支援,Shift+Enter 也需要下面的 [tmux 配置](#configure-tmux)。

35 39 

36若要將換行符綁定到不同的快捷鍵,或交換行為使 Enter 插入換行符而 Shift+Enter 提交,請在您的[快捷鍵檔案](/zh-TW/keybindings)中對應 `chat:newline` 和 `chat:submit` 動作。40若要將換行符綁定到不同的快捷鍵,或交換行為使 Enter 插入換行符而 Shift+Enter 提交,請在您的[快捷鍵檔案](/zh-TW/keybindings)中對應 `chat:newline` 和 `chat:submit` 動作。

37 41 

38## 在 macOS 上啟用 Option 快捷鍵42<h2 id="enable-option-key-shortcuts-on-macos">

43 在 macOS 上啟用 Option 快捷鍵

44</h2>

39 45 

40某些 Claude Code 快捷鍵使用 Option 快捷鍵,例如 Option+Enter 用於換行符或 Option+P 用於切換模型。在 macOS 上,大多數終端機預設不會將 Option 作為修飾符發送,因此這些快捷鍵在您啟用它之前無法運作。終端機設定通常標記為「使用 Option 作為 Meta 快捷鍵」;Meta 是現在標記為 Option 或 Alt 的快捷鍵的歷史 Unix 名稱。46某些 Claude Code 快捷鍵使用 Option 快捷鍵,例如 Option+Enter 用於換行符或 Option+P 用於切換模型。在 macOS 上,大多數終端機預設不會將 Option 作為修飾符發送,因此這些快捷鍵在您啟用它之前無法運作。終端機設定通常標記為「使用 Option 作為 Meta 快捷鍵」;Meta 是現在標記為 Option 或 Alt 的快捷鍵的歷史 Unix 名稱。

41 47 


59 65 

60對於 Ghostty、Kitty 和其他終端機,請在終端機的配置檔案中尋找 Option-as-Alt 或 Option-as-Meta 設定。66對於 Ghostty、Kitty 和其他終端機,請在終端機的配置檔案中尋找 Option-as-Alt 或 Option-as-Meta 設定。

61 67 

62## 獲得終端機鈴聲或通知68<h2 id="get-a-terminal-bell-or-notification">

69 獲得終端機鈴聲或通知

70</h2>

63 71 

64當 Claude 完成工作或暫停以進行權限提示時,它會觸發通知事件。將其顯示為終端機鈴聲或桌面通知可讓您在長工作執行時切換到其他工作。72當 Claude 完成工作或暫停以進行權限提示時,它會觸發通知事件。將其顯示為終端機鈴聲或桌面通知可讓您在長工作執行時切換到其他工作。

65 73 


79 87 

80如果通知仍未出現,請確認您的終端機應用程式在您的 OS 設定中具有通知權限,如果您在 tmux 內執行,請[啟用通過](#configure-tmux)。88如果通知仍未出現,請確認您的終端機應用程式在您的 OS 設定中具有通知權限,如果您在 tmux 內執行,請[啟用通過](#configure-tmux)。

81 89 

82### 使用通知 hook 播放聲音90<h3 id="play-a-sound-with-a-notification-hook">

91 使用通知 hook 播放聲音

92</h3>

83 93 

84在任何終端機中,您可以配置[通知 hook](/zh-TW/hooks-guide#get-notified-when-claude-needs-input) 以在 Claude 需要您的注意時播放聲音或執行自訂命令。Hooks 與內建通知一起執行,而不是替代它,因此不會收到桌面通知的終端機(例如 Warp 或 VS Code 整合終端機)可以使用 hook 或將 `preferredNotifChannel` 設定為 `"terminal_bell"` 代替。94在任何終端機中,您可以配置[通知 hook](/zh-TW/hooks-guide#get-notified-when-claude-needs-input) 以在 Claude 需要您的注意時播放聲音或執行自訂命令。Hooks 與內建通知一起執行,而不是替代它,因此不會收到桌面通知的終端機(例如 Warp 或 VS Code 整合終端機)可以使用 hook 或將 `preferredNotifChannel` 設定為 `"terminal_bell"` 代替。

85 95 


97}107}

98```108```

99 109 

100## 配置 tmux110<h2 id="configure-tmux">

111 配置 tmux

112</h2>

101 113 

102當 Claude Code 在 tmux 內執行時,預設情況下會發生兩件事:Shift+Enter 提交而不是插入換行符,桌面通知和[進度列](/zh-TW/settings#available-settings)永遠無法到達外部終端機。將這些行新增至 `~/.tmux.conf`,然後執行 `tmux source-file ~/.tmux.conf` 以將它們應用到執行中的伺服器:114當 Claude Code 在 tmux 內執行時,預設情況下會發生兩件事:Shift+Enter 提交而不是插入換行符,桌面通知和[進度列](/zh-TW/settings#available-settings)永遠無法到達外部終端機。將這些行新增至 `~/.tmux.conf`,然後執行 `tmux source-file ~/.tmux.conf` 以將它們應用到執行中的伺服器:

103 115 


109 121 

110`allow-passthrough` 行讓通知和進度更新到達外部終端機,而不是被 tmux 吞沒。`extended-keys` 行讓 tmux 區分 Shift+Enter 和純 Enter,以便換行符快捷鍵運作。122`allow-passthrough` 行讓通知和進度更新到達外部終端機,而不是被 tmux 吞沒。`extended-keys` 行讓 tmux 區分 Shift+Enter 和純 Enter,以便換行符快捷鍵運作。

111 123 

112## 匹配色彩主題124<h2 id="match-the-color-theme">

125 匹配色彩主題

126</h2>

113 127 

114使用 `/theme` 命令或 `/config` 中的主題選擇器來選擇與您的終端機相匹配的 Claude Code 主題。選擇自動選項會偵測您的終端機的淺色或深色背景,因此主題會在您的終端機執行時跟隨 OS 外觀變更。Claude Code 不控制終端機自己的色彩配置,該配置由終端機應用程式設定。128使用 `/theme` 命令或 `/config` 中的主題選擇器來選擇與您的終端機相匹配的 Claude Code 主題。選擇自動選項會偵測您的終端機的淺色或深色背景,因此主題會在您的終端機執行時跟隨 OS 外觀變更。Claude Code 不控制終端機自己的色彩配置,該配置由終端機應用程式設定。

115 129 

116若要自訂介面底部出現的內容,請配置[自訂狀態列](/zh-TW/statusline),顯示目前的模型、工作目錄、git 分支或其他上下文。130若要自訂介面底部出現的內容,請配置[自訂狀態列](/zh-TW/statusline),顯示目前的模型、工作目錄、git 分支或其他上下文。

117 131 

118### 建立自訂主題132<h3 id="create-a-custom-theme">

133 建立自訂主題

134</h3>

119 135 

120<Note>136<Note>

121 自訂主題需要 Claude Code v2.1.118 或更新版本。137 自訂主題需要 Claude Code v2.1.118 或更新版本。


168 }184 }

169 ```185 ```

170 186 

171 #### 文字和重點色彩187 <h4 id="text-and-accent-colors">

188 文字和重點色彩

189 </h4>

172 190 

173 控制整個介面中使用的主要品牌重點和前景文字陰影。191 控制整個介面中使用的主要品牌重點和前景文字陰影。

174 192 


183 | `permission` | 對話方塊邊框,包括權限提示和選擇器 |201 | `permission` | 對話方塊邊框,包括權限提示和選擇器 |

184 | `remember` | 記憶體和 `CLAUDE.md` 指示器 |202 | `remember` | 記憶體和 `CLAUDE.md` 指示器 |

185 203 

186 #### 狀態色彩204 <h4 id="status-colors">

205 狀態色彩

206 </h4>

187 207 

188 在訊息和指示器中發出成功、失敗和警告狀態的信號。208 在訊息和指示器中發出成功、失敗和警告狀態的信號。

189 209 


194 | `warning` | 警告、注意訊息和自動模式邊框 |214 | `warning` | 警告、注意訊息和自動模式邊框 |

195 | `merged` | 合併的提取要求狀態 |215 | `merged` | 合併的提取要求狀態 |

196 216 

197 #### 輸入框和模式指示器217 <h4 id="input-box-and-mode-indicators">

218 輸入框和模式指示器

219 </h4>

198 220 

199 設定輸入框邊框色彩和權限模式或指示器作用中時顯示的重點。221 設定輸入框邊框色彩和權限模式或指示器作用中時顯示的重點。

200 222 


207 | `ide` | IDE 連線指示器 |229 | `ide` | IDE 連線指示器 |

208 | `fastMode` | 快速模式指示器 |230 | `fastMode` | 快速模式指示器 |

209 231 

210 #### Diff 呈現232 <h4 id="diff-rendering">

233 Diff 呈現

234 </h4>

211 235 

212 在檔案編輯和審查中著色新增和移除的程式碼。236 在檔案編輯和審查中著色新增和移除的程式碼。

213 237 


220 | `diffAddedWord` | 新增行內的字級突出顯示 |244 | `diffAddedWord` | 新增行內的字級突出顯示 |

221 | `diffRemovedWord` | 移除行內的字級突出顯示 |245 | `diffRemovedWord` | 移除行內的字級突出顯示 |

222 246 

223 #### 全螢幕模式247 <h4 id="fullscreen-mode">

248 全螢幕模式

249 </h4>

224 250 

225 僅在[全螢幕呈現模式](/zh-TW/fullscreen)中套用,其中訊息具有背景填充。251 僅在[全螢幕呈現模式](/zh-TW/fullscreen)中套用,其中訊息具有背景填充。

226 252 


233 | `memoryBackgroundColor` | 文字記錄中 `#` 記憶體項目後面的背景 |259 | `memoryBackgroundColor` | 文字記錄中 `#` 記憶體項目後面的背景 |

234 | `selectionBg` | 使用滑鼠選取的文字背景 |260 | `selectionBg` | 使用滑鼠選取的文字背景 |

235 261 

236 #### 使用量計量和說話者標籤262 <h4 id="usage-meter-and-speaker-labels">

263 使用量計量和說話者標籤

264 </h4>

237 265 

238 調整 `/usage` 檢視中顯示的列,以及區分您的訊息與 Claude 訊息的標籤。266 調整 `/usage` 檢視中顯示的列,以及區分您的訊息與 Claude 訊息的標籤。

239 267 


244 | `briefLabelYou` | 您的訊息上 `You` 標籤的色彩 |272 | `briefLabelYou` | 您的訊息上 `You` 標籤的色彩 |

245 | `briefLabelClaude` | 助手訊息上 `Claude` 標籤的色彩 |273 | `briefLabelClaude` | 助手訊息上 `Claude` 標籤的色彩 |

246 274 

247 #### 微光變體和子代理色彩275 <h4 id="shimmer-variants-and-subagent-colors">

276 微光變體和子代理色彩

277 </h4>

248 278 

249 多個令牌具有配對的微光變體,可提供微調器動畫漸層中使用的較淺色彩。如果動畫看起來不相符,請與其基礎令牌一起覆蓋微光。279 多個令牌具有配對的微光變體,可提供微調器動畫漸層中使用的較淺色彩。如果動畫看起來不相符,請與其基礎令牌一起覆蓋微光。

250 280 


260 [`ultrathink`](/zh-TW/model-config#use-ultrathink-for-one-off-deep-reasoning) 和 [`ultraplan`](/zh-TW/ultraplan) 提示輸入中的關鍵字使用七色彩虹漸層呈現。令牌名稱遵循 `rainbow_<color>` 和 `rainbow_<color>_shimmer` 的模式,其中 `<color>` 是 `red`、`orange`、`yellow`、`green`、`blue`、`indigo` 或 `violet`。290 [`ultrathink`](/zh-TW/model-config#use-ultrathink-for-one-off-deep-reasoning) 和 [`ultraplan`](/zh-TW/ultraplan) 提示輸入中的關鍵字使用七色彩虹漸層呈現。令牌名稱遵循 `rainbow_<color>` 和 `rainbow_<color>_shimmer` 的模式,其中 `<color>` 是 `red`、`orange`、`yellow`、`green`、`blue`、`indigo` 或 `violet`。

261</Accordion>291</Accordion>

262 292 

263## 切換到全螢幕渲染293<h2 id="switch-to-fullscreen-rendering">

294 切換到全螢幕渲染

295</h2>

264 296 

265如果顯示閃爍或捲動位置在 Claude 工作時跳躍,請切換到[全螢幕渲染模式](/zh-TW/fullscreen)。它繪製到終端機為全螢幕應用程式保留的單獨螢幕,而不是附加到您的正常捲動,這保持記憶體使用平穩並新增滑鼠支援以進行捲動和選擇。在此模式中,您使用滑鼠或 PageUp 在 Claude Code 內捲動,而不是使用您的終端機的原生捲動;請參閱[全螢幕頁面](/zh-TW/fullscreen#search-and-review-the-conversation)以瞭解如何搜尋和複製。297如果顯示閃爍或捲動位置在 Claude 工作時跳躍,請切換到[全螢幕渲染模式](/zh-TW/fullscreen)。它繪製到終端機為全螢幕應用程式保留的單獨螢幕,而不是附加到您的正常捲動,這保持記憶體使用平穩並新增滑鼠支援以進行捲動和選擇。在此模式中,您使用滑鼠或 PageUp 在 Claude Code 內捲動,而不是使用您的終端機的原生捲動;請參閱[全螢幕頁面](/zh-TW/fullscreen#search-and-review-the-conversation)以瞭解如何搜尋和複製。

266 298 


284 ```316 ```

285</CodeGroup>317</CodeGroup>

286 318 

287## 貼上大型內容319<h2 id="paste-large-content">

320 貼上大型內容

321</h2>

288 322 

289當您將超過 10,000 個字元貼上到提示中時,Claude Code 會將輸入摺疊為 `[Pasted text]` 預留位置,以便輸入框保持可用。完整內容在您提交時仍會發送到 Claude。323當您將超過 10,000 個字元貼上到提示中時,Claude Code 會將輸入摺疊為 `[Pasted text]` 預留位置,以便輸入框保持可用。完整內容在您提交時仍會發送到 Claude。

290 324 

291VS Code 整合終端機可能會在非常大的貼上中丟棄字元,然後才能到達 Claude Code,因此在那裡更喜歡基於檔案的工作流程。對於非常大的輸入(例如整個檔案或長日誌),請將內容寫入檔案並要求 Claude 讀取它,而不是貼上。這保持對話記錄可讀,並讓 Claude 在稍後的回合中按路徑參考檔案。325VS Code 整合終端機可能會在非常大的貼上中丟棄字元,然後才能到達 Claude Code,因此在那裡更喜歡基於檔案的工作流程。對於非常大的輸入(例如整個檔案或長日誌),請將內容寫入檔案並要求 Claude 讀取它,而不是貼上。這保持對話記錄可讀,並讓 Claude 在稍後的回合中按路徑參考檔案。

292 326 

293## 使用 Vim 快捷鍵編輯提示327<h2 id="edit-prompts-with-vim-keybindings">

328 使用 Vim 快捷鍵編輯提示

329</h2>

294 330 

295Claude Code 包括提示輸入的 Vim 風格編輯模式。透過 `/config` → 編輯器模式啟用它,或透過在 `~/.claude/settings.json` 中將 [`editorMode`](/zh-TW/settings#available-settings) 設置為 `"vim"` 啟用它。將編輯器模式設置回 `normal` 以將其關閉。331Claude Code 包括提示輸入的 Vim 風格編輯模式。透過 `/config` → 編輯器模式啟用它,或透過在 `~/.claude/settings.json` 中將 [`editorMode`](/zh-TW/settings#available-settings) 設置為 `"vim"` 啟用它。將編輯器模式設置回 `normal` 以將其關閉。

296 332 


298 334 

299在 INSERT 模式中按 Enter 仍會提交您的提示,不同於標準 Vim。在 NORMAL 模式中使用 `o` 或 `O`,或 Ctrl+J,以插入換行符。335在 INSERT 模式中按 Enter 仍會提交您的提示,不同於標準 Vim。在 NORMAL 模式中使用 `o` 或 `O`,或 Ctrl+J,以插入換行符。

300 336 

301## 相關資源337<h2 id="related-resources">

338 相關資源

339</h2>

302 340 

303* [互動模式](/zh-TW/interactive-mode):完整鍵盤快捷鍵參考和 Vim 快捷鍵表341* [互動模式](/zh-TW/interactive-mode):完整鍵盤快捷鍵參考和 Vim 快捷鍵表

304* [快捷鍵](/zh-TW/keybindings):重新對應任何 Claude Code 快捷鍵,包括 Enter 和 Shift+Enter342* [快捷鍵](/zh-TW/keybindings):重新對應任何 Claude Code 快捷鍵,包括 Enter 和 Shift+Enter

Details

6 6 

7> 了解 Claude Code 如何與各種第三方服務和基礎設施整合,以滿足企業部署需求。7> 了解 Claude Code 如何與各種第三方服務和基礎設施整合,以滿足企業部署需求。

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79組織可以直接通過 Anthropic 或通過雲端提供商部署 Claude Code。本頁面幫助您選擇正確的配置。9組織可以直接通過 Anthropic 或通過雲端提供商部署 Claude Code。本頁面幫助您選擇正確的配置。

80 10 

81<ContactSalesCard surface="third_party_overview" />11<h2 id="compare-deployment-options">

82 12 比較部署選項

83## 比較部署選項13</h2>

84 14 

85對於大多數組織,Claude for Teams 或 Claude for Enterprise 提供最佳體驗。團隊成員可以通過單一訂閱同時存取 Claude Code 和網頁版 Claude,具有集中計費和無需基礎設施設置的優勢。15對於大多數組織,Claude for Teams 或 Claude for Enterprise 提供最佳體驗。團隊成員可以通過單一訂閱同時存取 Claude Code 和網頁版 Claude,具有集中計費和無需基礎設施設置的優勢。

86 16 


197* [Google Vertex AI](/zh-TW/google-vertex-ai)127* [Google Vertex AI](/zh-TW/google-vertex-ai)

198* [Microsoft Foundry](/zh-TW/microsoft-foundry)128* [Microsoft Foundry](/zh-TW/microsoft-foundry)

199 129 

200## 配置代理和網關130<h2 id="configure-proxies-and-gateways">

131 配置代理和網關

132</h2>

201 133 

202大多數組織可以直接使用雲端提供商,無需額外配置。但是,如果您的組織有特定的網路或管理要求,您可能需要配置公司代理或 LLM 網關。這些是可以一起使用的不同配置:134大多數組織可以直接使用雲端提供商,無需額外配置。但是,如果您的組織有特定的網路或管理要求,您可能需要配置公司代理或 LLM 網關。這些是可以一起使用的不同配置:

203 135 


206 138 

207以下示例顯示在您的 shell 或 shell 配置文件(`.bashrc`、`.zshrc`)中設置的環境變數。有關其他配置方法,請參閱 [設置](/zh-TW/settings)。139以下示例顯示在您的 shell 或 shell 配置文件(`.bashrc`、`.zshrc`)中設置的環境變數。有關其他配置方法,請參閱 [設置](/zh-TW/settings)。

208 140 

209### Amazon Bedrock141<h3 id="amazon-bedrock">

142 Amazon Bedrock

143</h3>

210 144 

211<Tabs>145<Tabs>

212 <Tab title="公司代理">146 <Tab title="公司代理">


236 </Tab>170 </Tab>

237</Tabs>171</Tabs>

238 172 

239### Microsoft Foundry173<h3 id="microsoft-foundry">

174 Microsoft Foundry

175</h3>

240 176 

241<Tabs>177<Tabs>

242 <Tab title="公司代理">178 <Tab title="公司代理">


267 </Tab>203 </Tab>

268</Tabs>204</Tabs>

269 205 

270### Google Vertex AI206<h3 id="google-vertex-ai">

207 Google Vertex AI

208</h3>

271 209 

272<Tabs>210<Tabs>

273 <Tab title="公司代理">211 <Tab title="公司代理">


302 在 Claude Code 中使用 `/status` 驗證您的代理和網關配置是否正確應用。240 在 Claude Code 中使用 `/status` 驗證您的代理和網關配置是否正確應用。

303</Tip>241</Tip>

304 242 

305## 組織的最佳實踐243<h2 id="best-practices-for-organizations">

244 組織的最佳實踐

245</h2>

306 246 

307### 投資於文件和記憶247<h3 id="invest-in-documentation-and-memory">

248 投資於文件和記憶

249</h3>

308 250 

309我們強烈建議投資於文件,以便 Claude Code 理解您的程式碼庫。組織可以在多個級別部署 CLAUDE.md 文件:251我們強烈建議投資於文件,以便 Claude Code 理解您的程式碼庫。組織可以在多個級別部署 CLAUDE.md 文件:

310 252 


313 255 

314在 [記憶和 CLAUDE.md 文件](/zh-TW/memory) 中了解更多。256在 [記憶和 CLAUDE.md 文件](/zh-TW/memory) 中了解更多。

315 257 

316### 簡化部署258<h3 id="simplify-deployment">

259 簡化部署

260</h3>

317 261 

318如果您有自訂開發環境,我們發現創建一個「一鍵」安裝 Claude Code 的方式是在組織中增加採用率的關鍵。262如果您有自訂開發環境,我們發現創建一個「一鍵」安裝 Claude Code 的方式是在組織中增加採用率的關鍵。

319 263 

320### 從引導式使用開始264<h3 id="start-with-guided-usage">

265 從引導式使用開始

266</h3>

321 267 

322鼓勵新用戶嘗試使用 Claude Code 進行程式碼庫問答,或在較小的錯誤修復或功能請求上使用。要求 Claude Code 制定計劃。檢查 Claude 的建議,如果偏離軌道,請提供反饋。隨著時間的推移,當用戶更好地理解這種新範式時,他們將更有效地讓 Claude Code 更自主地運行。268鼓勵新用戶嘗試使用 Claude Code 進行程式碼庫問答,或在較小的錯誤修復或功能請求上使用。要求 Claude Code 制定計劃。檢查 Claude 的建議,如果偏離軌道,請提供反饋。隨著時間的推移,當用戶更好地理解這種新範式時,他們將更有效地讓 Claude Code 更自主地運行。

323 269 

324### 為雲端提供商固定模型版本270<h3 id="pin-model-versions-for-cloud-providers">

271 為雲端提供商固定模型版本

272</h3>

325 273 

326如果您通過 [Bedrock](/zh-TW/amazon-bedrock)、[Vertex AI](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry) 或 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 部署,請使用 `ANTHROPIC_DEFAULT_OPUS_MODEL`、`ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 固定特定模型版本。如果不固定,模型別名會解析為最新版本,當 Anthropic 發佈您帳戶中尚未啟用的新模型時,可能會破壞用戶。固定讓您控制用戶何時移至新模型。有關每個提供商在最新版本不可用時的操作,請參閱 [模型配置](/zh-TW/model-config#pin-models-for-third-party-deployments)。274如果您通過 [Bedrock](/zh-TW/amazon-bedrock)、[Vertex AI](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry) 或 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 部署,請使用 `ANTHROPIC_DEFAULT_OPUS_MODEL`、`ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 固定特定模型版本。如果不固定,模型別名會解析為最新版本,當 Anthropic 發佈您帳戶中尚未啟用的新模型時,可能會破壞用戶。固定讓您控制用戶何時移至新模型。有關每個提供商在最新版本不可用時的操作,請參閱 [模型配置](/zh-TW/model-config#pin-models-for-third-party-deployments)。

327 275 

328### 配置安全策略276<h3 id="configure-security-policies">

277 配置安全策略

278</h3>

329 279 

330安全團隊可以配置託管權限,以定義 Claude Code 允許和不允許執行的操作,這些操作無法被本地配置覆蓋。[了解更多](/zh-TW/security)。280安全團隊可以配置託管權限,以定義 Claude Code 允許和不允許執行的操作,這些操作無法被本地配置覆蓋。[了解更多](/zh-TW/security)。

331 281 

332### 利用 MCP 進行整合282<h3 id="leverage-mcp-for-integrations">

283 利用 MCP 進行整合

284</h3>

333 285 

334MCP 是為 Claude Code 提供更多信息的絕佳方式,例如連接到票證管理系統或錯誤日誌。我們建議一個中央團隊配置 MCP servers 並將 `.mcp.json` 配置檢入程式碼庫,以便所有用戶受益。[了解更多](/zh-TW/mcp)。286MCP 是為 Claude Code 提供更多信息的絕佳方式,例如連接到票證管理系統或錯誤日誌。我們建議一個中央團隊配置 MCP servers 並將 `.mcp.json` 配置檢入程式碼庫,以便所有用戶受益。[了解更多](/zh-TW/mcp)。

335 287 

336在 Anthropic,我們信任 Claude Code 在每個 Anthropic 程式碼庫中推動開發。我們希望您享受使用 Claude Code 就像我們一樣。288在 Anthropic,我們信任 Claude Code 在每個 Anthropic 程式碼庫中推動開發。我們希望您享受使用 Claude Code 就像我們一樣。

337 289 

338## 後續步驟290<h2 id="next-steps">

291 後續步驟

292</h2>

339 293 

340選擇部署選項並為您的團隊配置存取權限後:294選擇部署選項並為您的團隊配置存取權限後:

341 295 

tools-reference.md +69 −26

Details

11若要新增自訂工具,請連接 [MCP server](/zh-TW/mcp)。若要使用可重複使用的提示型工作流程擴展 Claude,請撰寫 [skill](/zh-TW/skills),它透過現有的 `Skill` 工具執行,而不是新增工具項目。11若要新增自訂工具,請連接 [MCP server](/zh-TW/mcp)。若要使用可重複使用的提示型工作流程擴展 Claude,請撰寫 [skill](/zh-TW/skills),它透過現有的 `Skill` 工具執行,而不是新增工具項目。

12 12 

13| 工具 | 描述 | 需要權限 |13| 工具 | 描述 | 需要權限 |

14| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--- |14| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- |

15| `Agent` | 生成一個具有自己 context window 的 [subagent](/zh-TW/sub-agents),以處理任務。請參閱 [Agent 工具行為](#agent-tool-behavior) | 否 |15| `Agent` | 生成一個具有自己 context window 的 [subagent](/zh-TW/sub-agents),以處理任務。請參閱 [Agent 工具行為](#agent-tool-behavior) | 否 |

16| `AskUserQuestion` | 提出多選題以收集需求或澄清歧義 | 否 |16| `AskUserQuestion` | 提出多選題以收集需求或澄清歧義 | 否 |

17| `Bash` | 在您的環境中執行 shell 命令。請參閱 [Bash 工具行為](#bash-tool-behavior) | 是 |17| `Bash` | 在您的環境中執行 shell 命令。請參閱 [Bash 工具行為](#bash-tool-behavior) | 是 |


20| `CronList` | 列出工作階段中的所有排程任務 | 否 |20| `CronList` | 列出工作階段中的所有排程任務 | 否 |

21| `Edit` | 對特定檔案進行目標編輯。請參閱 [Edit 工具行為](#edit-tool-behavior) | 是 |21| `Edit` | 對特定檔案進行目標編輯。請參閱 [Edit 工具行為](#edit-tool-behavior) | 是 |

22| `EnterPlanMode` | 切換到 Plan Mode 以在編碼前設計方法 | 否 |22| `EnterPlanMode` | 切換到 Plan Mode 以在編碼前設計方法 | 否 |

23| `EnterWorktree` | 建立隔離的 [git worktree](/zh-TW/worktrees) 並切換到其中。傳遞 `path` 以切換到目前儲存庫的現有 worktree,而不是建立新的。不適用於 subagents | 否 |23| `EnterWorktree` | 建立隔離的 [git worktree](/zh-TW/worktrees) 並切換到其中。傳遞 `path` 以切換到目前儲存庫的現有 worktree,而不是建立新的。 worktree 工作階段內,或從具有固定工作目錄的 subagent(例如 [`isolation: worktree`](/zh-TW/sub-agents#supported-frontmatter-fields))中,只有 `path` 形式可用,且目標必須在 `.claude/worktrees/` 下 | 否 |

24| `ExitPlanMode` | 提出計畫以供批准並退出 Plan Mode | 是 |24| `ExitPlanMode` | 提出計畫以供批准並退出 Plan Mode | 是 |

25| `ExitWorktree` | 退出 worktree 工作階段並返回原始目錄。不適用於 subagents | 否 |25| `ExitWorktree` | 退出 worktree 工作階段並返回原始目錄。不適用於已在自己的工作目錄中執行的 subagents,例如使用 [`isolation: worktree`](/zh-TW/sub-agents#supported-frontmatter-fields) | 否 |

26| `Glob` | 根據模式匹配查找檔案。請參閱 [Glob 工具行為](#glob-tool-behavior) | 否 |26| `Glob` | 根據模式匹配查找檔案。請參閱 [Glob 工具行為](#glob-tool-behavior) | 否 |

27| `Grep` | 在檔案內容中搜尋模式。請參閱 [Grep 工具行為](#grep-tool-behavior) | 否 |27| `Grep` | 在檔案內容中搜尋模式。請參閱 [Grep 工具行為](#grep-tool-behavior) | 否 |

28| `ListMcpResourcesTool` | 列出連接的 [MCP servers](/zh-TW/mcp) 公開的資源 | 否 |28| `ListMcpResourcesTool` | 列出連接的 [MCP servers](/zh-TW/mcp) 公開的資源 | 否 |


34| `Read` | 讀取檔案的內容。請參閱 [Read 工具行為](#read-tool-behavior) | 否 |34| `Read` | 讀取檔案的內容。請參閱 [Read 工具行為](#read-tool-behavior) | 否 |

35| `ReadMcpResourceTool` | 按 URI 讀取特定 MCP 資源 | 否 |35| `ReadMcpResourceTool` | 按 URI 讀取特定 MCP 資源 | 否 |

36| `RemoteTrigger` | 在 claude.ai 上建立、更新、執行和列出 [Routines](/zh-TW/routines)。支援 `/schedule` 命令。{/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routines 位於 claude.ai 上,需要 Pro、Max、Team 或 Enterprise 計畫,因此此工具無法從 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 存取 | 否 |36| `RemoteTrigger` | 在 claude.ai 上建立、更新、執行和列出 [Routines](/zh-TW/routines)。支援 `/schedule` 命令。{/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routines 位於 claude.ai 上,需要 Pro、Max、Team 或 Enterprise 計畫,因此此工具無法從 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 存取 | 否 |

37| `ScheduleWakeup` | 重新排程 [自主進行的 `/loop`](/zh-TW/scheduled-tasks#let-claude-choose-the-interval) 的下一次迭代。Claude 在每次迭代結束時呼叫此工具,以選擇下一次執行的時間,範圍在一分鐘到一小時之間;您不需要直接呼叫它。待處理的喚醒會出現在 [Stop hook input](/zh-TW/hooks#stop-input) 的 `session_crons` 中。{/* plan-availability: feature=loop-dynamic providers=anthropic */}在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上不可用,其中沒有間隔的 `/loop` 提示會改為按固定時間表執行 | 否 |

37| `SendMessage` | 傳送訊息給 [agent team](/zh-TW/agent-teams) 隊友,或按 agent ID [恢復 subagent](/zh-TW/sub-agents#resume-subagents)。已停止的 subagents 會在背景中自動恢復。僅在設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 時可用 | 否 |38| `SendMessage` | 傳送訊息給 [agent team](/zh-TW/agent-teams) 隊友,或按 agent ID [恢復 subagent](/zh-TW/sub-agents#resume-subagents)。已停止的 subagents 會在背景中自動恢復。僅在設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 時可用 | 否 |

38| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}上傳 `ONBOARDING.md` 並傳回隊友可以在 Claude Code 中開啟的分享連結。在撰寫指南後從 `/team-onboarding` 呼叫。適用於 Pro、Max、Team 和 Enterprise 計畫上的 claude.ai 訂閱者 | 是 |39| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}上傳 `ONBOARDING.md` 並傳回隊友可以在 Claude Code 中開啟的分享連結。在撰寫指南後從 `/team-onboarding` 呼叫。適用於 Pro、Max、Team 和 Enterprise 計畫上的 claude.ai 訂閱者 | 是 |

39| `Skill` | 在主對話中執行 [skill](/zh-TW/skills#control-who-invokes-a-skill) | 是 |40| `Skill` | 在主對話中執行 [skill](/zh-TW/skills#control-who-invokes-a-skill) | 是 |


50| `WaitForMcpServers` | {/* min-version: 2.1.142 */}等待一個或多個仍在背景連接的 [MCP servers](/zh-TW/mcp),以便請求可以使用其工具而無需重新啟動工作階段。當所需的伺服器尚未連接時,Claude 會呼叫它。僅在停用 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 時出現,因為啟用時 `ToolSearch` 會處理等待 | 否 |51| `WaitForMcpServers` | {/* min-version: 2.1.142 */}等待一個或多個仍在背景連接的 [MCP servers](/zh-TW/mcp),以便請求可以使用其工具而無需重新啟動工作階段。當所需的伺服器尚未連接時,Claude 會呼叫它。僅在停用 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 時出現,因為啟用時 `ToolSearch` 會處理等待 | 否 |

51| `WebFetch` | 從指定 URL 擷取內容。請參閱 [WebFetch 工具行為](#webfetch-tool-behavior) | 是 |52| `WebFetch` | 從指定 URL 擷取內容。請參閱 [WebFetch 工具行為](#webfetch-tool-behavior) | 是 |

52| `WebSearch` | 執行網路搜尋。請參閱 [WebSearch 工具行為](#websearch-tool-behavior) | 是 |53| `WebSearch` | 執行網路搜尋。請參閱 [WebSearch 工具行為](#websearch-tool-behavior) | 是 |

54| `Workflow` | 執行 [dynamic workflow](/zh-TW/workflows):一個在背景協調許多 subagents 並傳回一個統一結果的指令碼 | 是 |

53| `Write` | 建立或覆寫檔案。請參閱 [Write 工具行為](#write-tool-behavior) | 是 |55| `Write` | 建立或覆寫檔案。請參閱 [Write 工具行為](#write-tool-behavior) | 是 |

54 56 

55## 使用權限規則和 hooks 設定工具57<h2 id="configure-tools-with-permission-rules-and-hooks">

58 使用權限規則和 hooks 設定工具

59</h2>

56 60 

57在大多數情況下,Claude 會決定何時使用這些工具,您在與 Claude 互動時不需要自己命名它們。當定義權限和其他設定時,您直接參考工具名稱:61在大多數情況下,Claude 會決定何時使用這些工具,您在與 Claude 互動時不需要自己命名它們。當定義權限和其他設定時,您直接參考工具名稱:

58 62 


81 85 

82Hook `matcher` 欄位使用裸工具名稱,而不是括號括起的規則格式。請參閱 [matcher 模式](/zh-TW/hooks#matcher-patterns) 以了解匹配規則。如需每個工具在 hooks 中傳遞給 `tool_input` 的欄位名稱,請參閱 [PreToolUse 輸入參考](/zh-TW/hooks#pretooluse-input)。86Hook `matcher` 欄位使用裸工具名稱,而不是括號括起的規則格式。請參閱 [matcher 模式](/zh-TW/hooks#matcher-patterns) 以了解匹配規則。如需每個工具在 hooks 中傳遞給 `tool_input` 的欄位名稱,請參閱 [PreToolUse 輸入參考](/zh-TW/hooks#pretooluse-input)。

83 87 

84## Agent 工具行為88<h2 id="agent-tool-behavior">

89 Agent 工具行為

90</h2>

85 91 

86Agent 工具在單獨的 context window 中生成一個 subagent。subagent 自主地完成其任務,然後將單個文字結果傳回父對話。父對話看不到 subagent 的中間工具呼叫或輸出,只看到最終結果。若要限制 subagent 執行的轉數,請在 [subagent 定義](/zh-TW/sub-agents#supported-frontmatter-fields) 中設定 `maxTurns`。92Agent 工具在單獨的 context window 中生成一個 subagent。subagent 自主地完成其任務,然後將單個文字結果傳回父對話。父對話看不到 subagent 的中間工具呼叫或輸出,只看到最終結果。若要限制 subagent 執行的轉數,請在 [subagent 定義](/zh-TW/sub-agents#supported-frontmatter-fields) 中設定 `maxTurns`。

87 93 


101 107 

102若要首先限制 subagent 可以到達的內容,請縮小其 `tools` 欄位、將 Bash 排除在清單之外,或在您的設定中設定拒絕規則,如 [控制 subagent 功能](/zh-TW/sub-agents#control-subagent-capabilities) 中所述。如需有關選擇前景或背景的更多資訊,請參閱 [在前景或背景中執行 subagents](/zh-TW/sub-agents#run-subagents-in-foreground-or-background)。108若要首先限制 subagent 可以到達的內容,請縮小其 `tools` 欄位、將 Bash 排除在清單之外,或在您的設定中設定拒絕規則,如 [控制 subagent 功能](/zh-TW/sub-agents#control-subagent-capabilities) 中所述。如需有關選擇前景或背景的更多資訊,請參閱 [在前景或背景中執行 subagents](/zh-TW/sub-agents#run-subagents-in-foreground-or-background)。

103 109 

104## Bash 工具行為110<h2 id="bash-tool-behavior">

111 Bash 工具行為

112</h2>

105 113 

106Bash 工具在單獨的程序中執行每個命令,具有以下持久性行為:114Bash 工具在單獨的程序中執行每個命令,具有以下持久性行為:

107 115 


109 * 如果 `cd` 落在這些目錄之外,Claude Code 會重設為專案目錄,並將 `Shell cwd was reset to <dir>` 附加到工具結果。117 * 如果 `cd` 落在這些目錄之外,Claude Code 會重設為專案目錄,並將 `Shell cwd was reset to <dir>` 附加到工具結果。

110 * 若要停用此延續,使每個 Bash 命令都在專案目錄中啟動,請設定 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`。118 * 若要停用此延續,使每個 Bash 命令都在專案目錄中啟動,請設定 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`。

111* 環境變數不持久化。一個命令中的 `export` 在下一個命令中將不可用。119* 環境變數不持久化。一個命令中的 `export` 在下一個命令中將不可用。

120* 在您的 shell 啟動檔案中定義的別名和 shell 函式可用。在工作階段開始時,Claude Code 會來源 `~/.zshrc`、`~/.bashrc` 或 `~/.profile`(取決於您的 shell),擷取產生的別名、函式和 shell 選項,並將其應用於每個 Bash 命令。

112 121 

113在啟動 Claude Code 之前啟動您的 virtualenv 或 conda 環境。若要讓環境變數在 Bash 命令之間持久化,請在啟動 Claude Code 之前將 [`CLAUDE_ENV_FILE`](/zh-TW/env-vars) 設定為 shell 指令碼,或使用 [SessionStart hook](/zh-TW/hooks#persist-environment-variables) 動態填充它。122在啟動 Claude Code 之前啟動您的 virtualenv 或 conda 環境。若要讓環境變數在 Bash 命令之間持久化,請在啟動 Claude Code 之前將 [`CLAUDE_ENV_FILE`](/zh-TW/env-vars) 設定為 shell 指令碼,或使用 [SessionStart hook](/zh-TW/hooks#persist-environment-variables) 動態填充它。

114 123 


119 128 

120對於長時間執行的程序(例如開發伺服器或監視建置),Claude 可以設定 `run_in_background: true` 以將命令作為背景任務啟動,並在其執行時繼續工作。使用 `/tasks` 列出和停止背景任務。129對於長時間執行的程序(例如開發伺服器或監視建置),Claude 可以設定 `run_in_background: true` 以將命令作為背景任務啟動,並在其執行時繼續工作。使用 `/tasks` 列出和停止背景任務。

121 130 

122## Edit 工具行為131<h2 id="edit-tool-behavior">

132 Edit 工具行為

133</h2>

123 134 

124Edit 工具執行確切的字串替換。它採用 `old_string` 和 `new_string` 並用第二個替換第一個。它不使用正規表達式或模糊匹配。135Edit 工具執行確切的字串替換。它採用 `old_string` 和 `new_string` 並用第二個替換第一個。它不使用正規表達式或模糊匹配。

125 136 


129* **匹配**:`old_string` 必須在檔案中完全按照撰寫方式出現。單個空白字元或縮排差異足以導致不匹配。140* **匹配**:`old_string` 必須在檔案中完全按照撰寫方式出現。單個空白字元或縮排差異足以導致不匹配。

130* **唯一性**:`old_string` 必須恰好出現一次。當它出現多次時,Claude 要麼提供更長的字串,其周圍有足夠的上下文來確定一個出現,要麼設定 `replace_all: true` 以替換所有出現。141* **唯一性**:`old_string` 必須恰好出現一次。當它出現多次時,Claude 要麼提供更長的字串,其周圍有足夠的上下文來確定一個出現,要麼設定 `replace_all: true` 以替換所有出現。

131 142 

132使用 Bash 檢視檔案也滿足編輯前讀取要求,當命令是 `cat path/to/file``sed -n 'X,Yp' path/to/file` 在單個檔案上,沒有管道或重定向時。其他 Bash 命令(例如 `head`、`tail` 或管道輸出)不計算,Claude 在這些情況下必須在編輯前使用 Read。143使用 Bash 檢視檔案也滿足編輯前讀取要求,當命令是 `cat``head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep` `fgrep` 在單個檔案上,沒有管道或重定向時。管道輸出和其他 Bash 命令不計算,Claude 在這些情況下必須在編輯前使用 Read。

133 144 

134這僅影響編輯資格,不影響權限。[Read 和 Edit 拒絕規則](/zh-TW/permissions#tool-specific-permission-rules) 也適用於 Claude Code 在 Bash 中識別的檔案命令,例如 `cat`、`head`、`tail` 和 `sed`,但不適用於間接讀取或寫入檔案的任意子程序,例如自己開啟檔案的 Python 或 Node 指令碼。如需涵蓋每個程序的作業系統級別強制執行,請 [啟用沙箱](/zh-TW/sandboxing)。145這僅影響編輯資格,不影響權限。[Read 和 Edit 拒絕規則](/zh-TW/permissions#tool-specific-permission-rules) 也適用於 Claude Code 在 Bash 中識別的檔案命令,例如 `cat`、`head`、`tail`、`sed` 和 `grep`,但不適用於間接讀取或寫入檔案的任意子程序,例如自己開啟檔案的 Python 或 Node 指令碼。識別用於拒絕規則的命令集與上述編輯前讀取清單不同:例如,`egrep` 和 `fgrep` 計算編輯前讀取但不針對 Read 拒絕規則進行檢查。如需涵蓋每個程序的作業系統級別強制執行,請 [啟用沙箱](/zh-TW/sandboxing)。

135 146 

136## Glob 工具行為147<h2 id="glob-tool-behavior">

148 Glob 工具行為

149</h2>

137 150 

138Glob 工具按名稱模式查找檔案。它支援標準 glob 語法,包括 `**` 用於遞迴目錄匹配:151Glob 工具按名稱模式查找檔案。它支援標準 glob 語法,包括 `**` 用於遞迴目錄匹配:

139 152 


145 158 

146Glob 預設不尊重 `.gitignore`,因此它會找到 gitignored 檔案以及追蹤的檔案。這與 [Grep](#grep-tool-behavior) 不同,後者跳過 gitignored 檔案。若要讓 Glob 尊重 `.gitignore`,請在啟動 Claude Code 之前設定 `CLAUDE_CODE_GLOB_NO_IGNORE=false`。159Glob 預設不尊重 `.gitignore`,因此它會找到 gitignored 檔案以及追蹤的檔案。這與 [Grep](#grep-tool-behavior) 不同,後者跳過 gitignored 檔案。若要讓 Glob 尊重 `.gitignore`,請在啟動 Claude Code 之前設定 `CLAUDE_CODE_GLOB_NO_IGNORE=false`。

147 160 

148## Grep 工具行為161<h2 id="grep-tool-behavior">

162 Grep 工具行為

163</h2>

149 164 

150Grep 工具在檔案內容中搜尋模式。其中 [Glob](#glob-tool-behavior) 按名稱查找檔案,Grep 在其中查找行。165Grep 工具在檔案內容中搜尋模式。其中 [Glob](#glob-tool-behavior) 按名稱查找檔案,Grep 在其中查找行。

151 166 


161 176 

162Grep 尊重 `.gitignore`,因此 gitignored 檔案會被跳過。若要搜尋 gitignored 檔案,Claude 直接傳遞其路徑。177Grep 尊重 `.gitignore`,因此 gitignored 檔案會被跳過。若要搜尋 gitignored 檔案,Claude 直接傳遞其路徑。

163 178 

164## LSP 工具行為179<h2 id="lsp-tool-behavior">

180 LSP 工具行為

181</h2>

165 182 

166LSP 工具從執行中的語言伺服器為 Claude 提供程式碼智慧。在每次檔案編輯後,它會自動報告型別錯誤和警告,以便 Claude 可以在沒有單獨建置步驟的情況下修復問題。Claude 也可以直接呼叫它來導航程式碼:183LSP 工具從執行中的語言伺服器為 Claude 提供程式碼智慧。在每次檔案編輯後,它會自動報告型別錯誤和警告,以便 Claude 可以在沒有單獨建置步驟的情況下修復問題。Claude 也可以直接呼叫它來導航程式碼:

167 184 


174 191 

175該工具在您安裝您的語言的 [程式碼智慧外掛](/zh-TW/discover-plugins#code-intelligence) 之前處於非作用中狀態。該外掛包含語言伺服器設定,您需要單獨安裝伺服器二進位檔。192該工具在您安裝您的語言的 [程式碼智慧外掛](/zh-TW/discover-plugins#code-intelligence) 之前處於非作用中狀態。該外掛包含語言伺服器設定,您需要單獨安裝伺服器二進位檔。

176 193 

177## Monitor 工具194<h2 id="monitor-tool">

195 Monitor 工具

196</h2>

178 197 

179<Note>198<Note>

180 Monitor 工具需要 Claude Code v2.1.98 或更新版本。199 Monitor 工具需要 Claude Code v2.1.98 或更新版本。


193 212 

194外掛可以宣告在外掛啟用時自動啟動的監視,而不是要求 Claude 啟動它們。請參閱 [外掛監視](/zh-TW/plugins-reference#monitors)。213外掛可以宣告在外掛啟用時自動啟動的監視,而不是要求 Claude 啟動它們。請參閱 [外掛監視](/zh-TW/plugins-reference#monitors)。

195 214 

196## NotebookEdit 工具行為215<h2 id="notebookedit-tool-behavior">

216 NotebookEdit 工具行為

217</h2>

197 218 

198NotebookEdit 一次修改一個 Jupyter notebook 儲存格,按其 `cell_id` 定位儲存格。它不像 [Edit](#edit-tool-behavior) 在純文字檔案上那樣跨 notebook 執行字串替換。219NotebookEdit 一次修改一個 Jupyter notebook 儲存格,按其 `cell_id` 定位儲存格。它不像 [Edit](#edit-tool-behavior) 在純文字檔案上那樣跨 notebook 執行字串替換。

199 220 


205 226 

206權限規則使用 `Edit(...)` 路徑格式。像 `Edit(notebooks/**)` 這樣的規則涵蓋該目錄中檔案上的 NotebookEdit 呼叫。227權限規則使用 `Edit(...)` 路徑格式。像 `Edit(notebooks/**)` 這樣的規則涵蓋該目錄中檔案上的 NotebookEdit 呼叫。

207 228 

208## PowerShell 工具229<h2 id="powershell-tool">

230 PowerShell 工具

231</h2>

209 232 

210PowerShell 工具讓 Claude 原生執行 PowerShell 命令。在 Windows 上,這表示命令在 PowerShell 中執行,而不是透過 Git Bash 路由。在沒有 Git Bash 的 Windows 上,該工具會自動啟用。在安裝了 Git Bash 的 Windows 上,該工具正在逐步推出。在 Linux、macOS 和 WSL 上,該工具是選擇加入的。233PowerShell 工具讓 Claude 原生執行 PowerShell 命令。在 Windows 上,這表示命令在 PowerShell 中執行,而不是透過 Git Bash 路由。在沒有 Git Bash 的 Windows 上,該工具會自動啟用。在安裝了 Git Bash 的 Windows 上,該工具正在逐步推出。在 Linux、macOS 和 WSL 上,該工具是選擇加入的。

211 234 

212### 啟用 PowerShell 工具235<h3 id="enable-the-powershell-tool">

236 啟用 PowerShell 工具

237</h3>

213 238 

214在您的環境或 `settings.json` 中設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`:239在您的環境或 `settings.json` 中設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`:

215 240 


225 250 

226在 Windows 上,Claude Code 自動偵測 `pwsh.exe`(PowerShell 7+),並回退到 `powershell.exe`(PowerShell 5.1)。啟用該工具時,Claude 將 PowerShell 視為主要 shell。當安裝了 Git Bash 時,Bash 工具仍可用於 POSIX 指令碼。251在 Windows 上,Claude Code 自動偵測 `pwsh.exe`(PowerShell 7+),並回退到 `powershell.exe`(PowerShell 5.1)。啟用該工具時,Claude 將 PowerShell 視為主要 shell。當安裝了 Git Bash 時,Bash 工具仍可用於 POSIX 指令碼。

227 252 

228### 設定、hooks skills 中的 shell 選擇253Claude Code 使用 `-ExecutionPolicy Bypass` 在程序範圍內生成 PowerShell,因此 `.ps1` 指令碼和模組匯入可在預設 Windows 安裝上運作,無需變更機器的原則。程序範圍的略過不會覆蓋群組原則 `MachinePolicy` 或 `UserPolicy`,因此企業鎖定仍然適用。若要改為尊重機器的有效執行原則,請設定 `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1`。

254 

255<h3 id="shell-selection-in-settings-hooks-and-skills">

256 設定、hooks 和 skills 中的 shell 選擇

257</h3>

229 258 

230三個額外的設定控制 PowerShell 的使用位置:259三個額外的設定控制 PowerShell 的使用位置:

231 260 


235 264 

236Bash 工具部分中描述的相同主工作階段工作目錄重設行為適用於 PowerShell 命令,包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 環境變數。265Bash 工具部分中描述的相同主工作階段工作目錄重設行為適用於 PowerShell 命令,包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 環境變數。

237 266 

238### 預覽限制267<h3 id="preview-limitations">

268 預覽限制

269</h3>

239 270 

240PowerShell 工具在預覽期間有以下已知限制:271PowerShell 工具在預覽期間有以下已知限制:

241 272 

242* PowerShell 設定檔未載入273* PowerShell 設定檔未載入

243* 在 Windows 上,不支援 sandboxing274* 在 Windows 上,不支援 sandboxing

244 275 

245## Read 工具行為276<h2 id="read-tool-behavior">

277 Read 工具行為

278</h2>

246 279 

247Read 工具採用檔案路徑並傳回帶有行號的內容。Claude 被指示始終傳遞絕對路徑。280Read 工具採用檔案路徑並傳回帶有行號的內容。Claude 被指示始終傳遞絕對路徑。

248 281 

249預設情況下,Read 從開始傳回檔案。超過大小閾值的檔案傳回錯誤而不是部分內容提示 Claude 使用 `offset` 和 `limit` 重試以讀取特定範圍282預設情況下,Read 從開始傳回檔案。當整個檔案讀取超過令牌限制時Read 傳回第一頁並附帶 `PARTIAL view` 通知,告訴 Claude 它收到了多少檔案內容以及如何使用 `offset` 和 `limit` 讀取更多內容傳遞明確的 `offset` 或 `limit` 且仍然超過令牌限制的讀取會傳回錯誤。

250 283 

251Read 處理純文字以外的多種檔案類型:284Read 處理純文字以外的多種檔案類型:

252 285 


256 289 

257Read 僅讀取檔案,不讀取目錄。Claude 使用透過 Bash 工具的 `ls` 列出目錄內容。290Read 僅讀取檔案,不讀取目錄。Claude 使用透過 Bash 工具的 `ls` 列出目錄內容。

258 291 

259## WebFetch 工具行為292<h2 id="webfetch-tool-behavior">

293 WebFetch 工具行為

294</h2>

260 295 

261WebFetch 採用 URL 和描述要提取內容的提示。它擷取頁面,當伺服器傳回 HTML 時將回應轉換為 Markdown,並使用小型快速模型針對內容執行提示。對於大多數擷取,Claude 會收到該模型的答案,而不是原始頁面。轉換步驟不可設定。296WebFetch 採用 URL 和描述要提取內容的提示。它擷取頁面,當伺服器傳回 HTML 時將回應轉換為 Markdown,並使用小型快速模型針對內容執行提示。對於大多數擷取,Claude 會收到該模型的答案,而不是原始頁面。轉換步驟不可設定。

262 297 


273 308 

274WebFetch 設定以 `Claude-User` 開頭的 `User-Agent` 標頭,以及偏好 Markdown 而不是 HTML 的 `Accept` 標頭,以便支援內容協商的伺服器可以直接傳回 Markdown。[Sandbox](/zh-TW/sandboxing) 網路規則是單獨設定的,因此您希望沙箱程序到達的網域仍需要明確的沙箱權限規則。309WebFetch 設定以 `Claude-User` 開頭的 `User-Agent` 標頭,以及偏好 Markdown 而不是 HTML 的 `Accept` 標頭,以便支援內容協商的伺服器可以直接傳回 Markdown。[Sandbox](/zh-TW/sandboxing) 網路規則是單獨設定的,因此您希望沙箱程序到達的網域仍需要明確的沙箱權限規則。

275 310 

276## WebSearch 工具行為311<h2 id="websearch-tool-behavior">

312 WebSearch 工具行為

313</h2>

277 314 

278WebSearch 針對 Anthropic 的 [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) 後端執行查詢,並傳回結果標題和 URL。它不擷取結果頁面。若要讀取 Claude 在搜尋結果中找到的頁面,它會跟進 [WebFetch](#webfetch-tool-behavior)。315WebSearch 針對 Anthropic 的 [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) 後端執行查詢,並傳回結果標題和 URL。它不擷取結果頁面。若要讀取 Claude 在搜尋結果中找到的頁面,它會跟進 [WebFetch](#webfetch-tool-behavior)。

279 316 


287 WebSearch 在 Claude API 和 Microsoft Foundry 上可用。在 Google Cloud Vertex AI 上,它適用於 Claude 4 模型,包括 Opus、Sonnet 和 Haiku。Amazon Bedrock 不公開伺服器端 web search 工具。324 WebSearch 在 Claude API 和 Microsoft Foundry 上可用。在 Google Cloud Vertex AI 上,它適用於 Claude 4 模型,包括 Opus、Sonnet 和 Haiku。Amazon Bedrock 不公開伺服器端 web search 工具。

288</Note>325</Note>

289 326 

290## Write 工具行為327<h2 id="write-tool-behavior">

328 Write 工具行為

329</h2>

291 330 

292Write 工具建立新檔案或使用提供的完整內容覆寫現有檔案。它不附加或合併。331Write 工具建立新檔案或使用提供的完整內容覆寫現有檔案。它不附加或合併。

293 332 

294如果目標路徑已存在,Claude 必須在目前對話中至少讀取過該檔案一次才能覆寫它。寫入未讀的現有檔案會失敗並出現錯誤。此限制不適用於新檔案。333如果目標路徑已存在,Claude 必須在目前對話中至少讀取過該檔案一次才能覆寫它。寫入未讀的現有檔案會失敗並出現錯誤。此限制不適用於新檔案。

295 334 

296使用 Bash `cat` 或 `sed -n` 檢視檔案也滿足此要求,如 [Edit 工具行為](#edit-tool-behavior) 中所述335使用 Bash 檢視檔案也滿足此要求,如 [Edit 工具行為](#edit-tool-behavior) 中所述的相同規則

297 336 

298對於現有檔案的部分變更,Claude 使用 Edit 而不是 Write。337對於現有檔案的部分變更,Claude 使用 Edit 而不是 Write。

299 338 

300## 檢查哪些工具可用339<h2 id="check-which-tools-are-available">

340 檢查哪些工具可用

341</h2>

301 342 

302您的確切工具集取決於您的提供者、平台和設定。若要檢查在執行中的工作階段中載入了什麼,請直接詢問 Claude:343您的確切工具集取決於您的提供者、平台和設定。若要檢查在執行中的工作階段中載入了什麼,請直接詢問 Claude:

303 344 


307 348 

308Claude 提供對話摘要。如需確切的 MCP 工具名稱,請執行 `/mcp`。349Claude 提供對話摘要。如需確切的 MCP 工具名稱,請執行 `/mcp`。

309 350 

310## 另請參閱351<h2 id="see-also">

352 另請參閱

353</h2>

311 354 

312* [MCP servers](/zh-TW/mcp):透過連接外部伺服器新增自訂工具355* [MCP servers](/zh-TW/mcp):透過連接外部伺服器新增自訂工具

313* [權限](/zh-TW/permissions):權限系統、規則語法和工具特定模式356* [權限](/zh-TW/permissions):權限系統、規則語法和工具特定模式

Details

8 8 

9如果安裝失敗或無法登入,請在下方找到您的錯誤。如需 Claude Code 正常運作後的執行時問題,請參閱[排除故障](/zh-TW/troubleshooting)。如需設定問題(例如設定未套用或 hooks 未觸發),請參閱[偵錯您的設定](/zh-TW/debug-your-config)。9如果安裝失敗或無法登入,請在下方找到您的錯誤。如需 Claude Code 正常運作後的執行時問題,請參閱[排除故障](/zh-TW/troubleshooting)。如需設定問題(例如設定未套用或 hooks 未觸發),請參閱[偵錯您的設定](/zh-TW/debug-your-config)。

10 10 

11## 找到您的錯誤11<h2 id="find-your-error">

12 找到您的錯誤

13</h2>

12 14 

13將您看到的錯誤訊息或症狀與修復方案相符:15將您看到的錯誤訊息或症狀與修復方案相符:

14 16 


16| :----------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------- |18| :----------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------- |

17| `command not found: claude` 或 `'claude' is not recognized` | [修復您的 PATH](#command-not-found-claude-after-installation) |19| `command not found: claude` 或 `'claude' is not recognized` | [修復您的 PATH](#command-not-found-claude-after-installation) |

18| `syntax error near unexpected token '<'` | [安裝指令碼傳回 HTML](#install-script-returns-html-instead-of-a-shell-script) |20| `syntax error near unexpected token '<'` | [安裝指令碼傳回 HTML](#install-script-returns-html-instead-of-a-shell-script) |

19| `curl: (56) Failure writing output to destination` | [檢查連線或使用替代安裝程式](#curl-56-failure-writing-output-to-destination) |21| `curl: (22) The requested URL returned error: 403` | [安裝指令碼傳回 403](#install-script-returns-html-instead-of-a-shell-script) |

22| `curl: (23)` 或 `curl: (56) Failure writing output to destination` | [檢查連線或使用替代安裝程式](#curl-56-failure-writing-output-to-destination) |

20| Linux 上安裝期間 `Killed` | [為低記憶體伺服器新增交換空間](#install-killed-on-low-memory-linux-servers) |23| Linux 上安裝期間 `Killed` | [為低記憶體伺服器新增交換空間](#install-killed-on-low-memory-linux-servers) |

21| `TLS connect error` 或 `SSL/TLS secure channel` | [更新 CA 憑證](#tls-or-ssl-connection-errors) |24| `TLS connect error` 或 `SSL/TLS secure channel` | [更新 CA 憑證](#tls-or-ssl-connection-errors) |

22| `Failed to fetch version` 或無法連線到下載伺服器 | [檢查網路和代理設定](#check-network-connectivity) |25| `Failed to fetch version` 或無法連線到下載伺服器 | [檢查網路和代理設定](#check-network-connectivity) |


44 如果您寧願完全跳過終端,[Claude Code Desktop 應用程式](/zh-TW/desktop-quickstart)可讓您透過圖形介面安裝和使用 Claude Code。下載適用於 [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) 或 [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) 的版本,無需任何命令列設定即可開始編碼。47 如果您寧願完全跳過終端,[Claude Code Desktop 應用程式](/zh-TW/desktop-quickstart)可讓您透過圖形介面安裝和使用 Claude Code。下載適用於 [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) 或 [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) 的版本,無需任何命令列設定即可開始編碼。

45</Tip>48</Tip>

46 49 

47## 執行診斷檢查50<h2 id="run-diagnostic-checks">

51 執行診斷檢查

52</h2>

48 53 

49### 檢查網路連線54<h3 id="check-network-connectivity">

55 檢查網路連線

56</h3>

50 57 

51安裝程式從 `downloads.claude.ai` 下載。驗證您可以連線到它:58安裝程式從 `downloads.claude.ai` 下載。驗證您可以連線到它:

52 59 


82 </Tab>89 </Tab>

83</Tabs>90</Tabs>

84 91 

85### 驗證您的 PATH92<h3 id="verify-your-path">

93 驗證您的 PATH

94</h3>

86 95 

87如果安裝成功但執行 `claude` 時收到 `command not found` 或 `not recognized` 錯誤,安裝目錄不在您的 PATH 中。您的 shell 在 PATH 中列出的目錄中搜尋程式,安裝程式在 macOS/Linux 上將 `claude` 放在 `~/.local/bin/claude`,或在 Windows 上放在 `%USERPROFILE%\.local\bin\claude.exe`。96如果安裝成功但執行 `claude` 時收到 `command not found` 或 `not recognized` 錯誤,安裝目錄不在您的 PATH 中。您的 shell 在 PATH 中列出的目錄中搜尋程式,安裝程式在 macOS/Linux 上將 `claude` 放在 `~/.local/bin/claude`,或在 Windows 上放在 `%USERPROFILE%\.local\bin\claude.exe`。

88 97 


157 </Tab>166 </Tab>

158</Tabs>167</Tabs>

159 168 

160### 檢查衝突的安裝169<h3 id="check-for-conflicting-installations">

170 檢查衝突的安裝

171</h3>

161 172 

162多個 Claude Code 安裝可能導致版本不相符或意外行為。檢查已安裝的內容:173多個 Claude Code 安裝可能導致版本不相符或意外行為。檢查已安裝的內容:

163 174 


233winget uninstall Anthropic.ClaudeCode244winget uninstall Anthropic.ClaudeCode

234```245```

235 246 

236### 檢查目錄權限247<h3 id="check-directory-permissions">

248 檢查目錄權限

249</h3>

237 250 

238安裝程式需要對 macOS 和 Linux 上的 `~/.local/bin/` 和 `~/.claude/` 有寫入存取權限。在 Windows 上,安裝位置在 `%USERPROFILE%` 下,預設情況下您的使用者可寫入,因此此部分很少適用於 Windows。251安裝程式需要對 macOS 和 Linux 上的 `~/.local/bin/` 和 `~/.claude/` 有寫入存取權限。在 Windows 上,安裝位置在 `%USERPROFILE%` 下,預設情況下您的使用者可寫入,因此此部分很少適用於 Windows。

239 252 


251sudo chown -R $(whoami) ~/.local264sudo chown -R $(whoami) ~/.local

252```265```

253 266 

254### 驗證二進位檔是否有效267<h3 id="verify-the-binary-works">

268 驗證二進位檔是否有效

269</h3>

255 270 

256如果 `claude --version` 列印版本但 `claude` 在啟動時崩潰或掛起,請執行這些檢查以縮小原因範圍。如果 `claude --version` 說 command not found,請先前往[驗證您的 PATH](#verify-your-path);下面的命令假設 `claude` 在您的 PATH 上。271如果 `claude --version` 列印版本但 `claude` 在啟動時崩潰或掛起,請執行這些檢查以縮小原因範圍。如果 `claude --version` 說 command not found,請先前往[驗證您的 PATH](#verify-your-path);下面的命令假設 `claude` 在您的 PATH 上。

257 272 


279claude --version294claude --version

280```295```

281 296 

282## 常見安裝問題297<h2 id="common-installation-issues">

298 常見安裝問題

299</h2>

283 300 

284這些是最常見的安裝問題及其解決方案。301這些是最常見的安裝問題及其解決方案。

285 302 

286### 安裝指令碼傳回 HTML 而非 shell 指令碼303<h3 id="install-script-returns-html-instead-of-a-shell-script">

304 安裝指令碼傳回 HTML 而非 shell 指令碼

305</h3>

287 306 

288執行安裝命令時,您可能會看到以下其中一個錯誤:307執行安裝命令時,您可能會看到以下其中一個錯誤:

289 308 


298Invoke-Expression: Missing argument in parameter list.317Invoke-Expression: Missing argument in parameter list.

299```318```

300 319 

301這表示安裝 URL 傳回了 HTML 頁面而非安裝指令碼。如果 HTML 頁面顯示「App unavailable in region」,Claude Code 在您的國家/地區不可用。請參閱[支援的國家/地區](https://www.anthropic.com/supported-countries)。320根據請求的路由方式,您可能會看到 403 且沒有 HTML 主體:

321 

322```text theme={null}

323curl: (22) The requested URL returned error: 403

324```

325 

326這些都表示安裝 URL 傳回了 HTML 頁面或錯誤狀態,而非安裝指令碼。如果 HTML 頁面顯示「App unavailable in region」,Claude Code 在您的國家/地區不可用。請參閱[支援的國家/地區](https://www.anthropic.com/supported-countries)。

327 

328沒有主體的單純 403 通常有相同的原因,但也可能來自公司代理或防火牆阻止下載。如果您在支援的國家/地區但仍然看到 403,在嘗試下面的替代安裝程式前,請先完成[檢查網路連線](#check-network-connectivity),因為這些會連線到相同的主機。

302 329 

303否則,這可能由於網路問題、區域路由或暫時服務中斷而發生。330否則,這可能由於網路問題、區域路由或暫時服務中斷而發生。

304 331 


320 347 

3212. **幾分鐘後重試**:問題通常是暫時的。等待並再次嘗試原始命令。3482. **幾分鐘後重試**:問題通常是暫時的。等待並再次嘗試原始命令。

322 349 

323### 安裝後 `command not found: claude`350<h3 id="command-not-found-claude-after-installation">

351 安裝後 `command not found: claude`

352</h3>

324 353 

325安裝完成但 `claude` 無法運作。確切的錯誤因平台而異:354安裝完成但 `claude` 無法運作。確切的錯誤因平台而異:

326 355 


333 362 

334這表示安裝目錄不在您的 shell 搜尋路徑中。請參閱[驗證您的 PATH](#verify-your-path) 以取得每個平台上的修復。363這表示安裝目錄不在您的 shell 搜尋路徑中。請參閱[驗證您的 PATH](#verify-your-path) 以取得每個平台上的修復。

335 364 

336### `curl: (56) Failure writing output to destination`365<h3 id="curl-56-failure-writing-output-to-destination">

366 `curl: (56) Failure writing output to destination`

367</h3>

337 368 

338`curl ... | bash` 命令下載指令碼並將其傳送到 Bash 以執行。此錯誤表示連線在指令碼完成下載前中斷常見原因包括網路中斷、下載在中途被阻止或系統資源限制369`curl ... | bash` 命令下載指令碼並將其傳送到 Bash 以執行。此錯誤以及相關的 `curl: (23) Failure writing output to destination` 表示 Bash 未收到完整的指令碼結束代碼 56 表示下載本身被中斷,結束代碼 23 表示 curl 無法將其收到的內容寫入管道,通常是因為 Bash 提前結束

339 370 

340**解決方案:**371**解決方案:**

341 372 


359 winget install Anthropic.ClaudeCode390 winget install Anthropic.ClaudeCode

360 ```391 ```

361 392 

362### TLS 或 SSL 連線錯誤393<h3 id="tls-or-ssl-connection-errors">

394 TLS 或 SSL 連線錯誤

395</h3>

363 396 

364錯誤如 `curl: (35) TLS connect error`、`schannel: next InitializeSecurityContext failed` 或 PowerShell 的 `Could not establish trust relationship for the SSL/TLS secure channel` 表示 TLS 握手失敗。397錯誤如 `curl: (35) TLS connect error`、`schannel: next InitializeSecurityContext failed` 或 PowerShell 的 `Could not establish trust relationship for the SSL/TLS secure channel` 表示 TLS 握手失敗。

365 398 


397 ```430 ```

398 或者,使用 `winget install Anthropic.ClaudeCode` 安裝,這完全避免了 curl。431 或者,使用 `winget install Anthropic.ClaudeCode` 安裝,這完全避免了 curl。

399 432 

400### `Failed to fetch version from downloads.claude.ai`433<h3 id="failed-to-fetch-version-from-downloads-claude-ai">

434 `Failed to fetch version from downloads.claude.ai`

435</h3>

401 436 

402安裝程式無法連線到下載伺服器。這通常表示 `downloads.claude.ai` 在您的網路上被阻止。437安裝程式無法連線到下載伺服器。這通常表示 `downloads.claude.ai` 在您的網路上被阻止。

403 438 


428 winget install Anthropic.ClaudeCode463 winget install Anthropic.ClaudeCode

429 ```464 ```

430 465 

431### Windows 上的錯誤安裝命令466<h3 id="wrong-install-command-on-windows">

467 Windows 上的錯誤安裝命令

468</h3>

432 469 

433如果您看到 `'irm' is not recognized`、`The token '&&' is not valid` 或 `'bash' is not recognized as the name of a cmdlet`,您複製了不同 shell 或作業系統的安裝命令。470如果您看到 `'irm' is not recognized`、`The token '&&' is not valid` 或 `'bash' is not recognized as the name of a cmdlet`,您複製了不同 shell 或作業系統的安裝命令。

434 471 


456 irm https://claude.ai/install.ps1 | iex493 irm https://claude.ai/install.ps1 | iex

457 ```494 ```

458 495 

459### Windows 上的 `The process cannot access the file` 在安裝期間496<h3 id="the-process-cannot-access-the-file-during-windows-install">

497 Windows 上的 `The process cannot access the file` 在安裝期間

498</h3>

460 499 

461如果 PowerShell 安裝程式因 `Failed to download binary: The process cannot access the file ... because it is being used by another process` 而失敗,安裝程式無法寫入 `%USERPROFILE%\.claude\downloads`。這通常表示先前的安裝嘗試仍在執行,或防毒軟體正在掃描該資料夾中部分下載的二進位檔。500如果 PowerShell 安裝程式因 `Failed to download binary: The process cannot access the file ... because it is being used by another process` 而失敗,安裝程式無法寫入 `%USERPROFILE%\.claude\downloads`。這通常表示先前的安裝嘗試仍在執行,或防毒軟體正在掃描該資料夾中部分下載的二進位檔。

462 501 


467irm https://claude.ai/install.ps1 | iex506irm https://claude.ai/install.ps1 | iex

468```507```

469 508 

470### 低記憶體 Linux 伺服器上安裝被終止509<h3 id="install-killed-on-low-memory-linux-servers">

510 低記憶體 Linux 伺服器上安裝被終止

511</h3>

471 512 

472如果您在 VPS 或雲端執行個體上的安裝期間看到 `Killed`:513如果您在 VPS 或雲端執行個體上的安裝期間看到 `Killed`:

473 514 


502 543 

5033. **如果可能,使用更大的執行個體**。Claude Code 需要至少 4 GB 的 RAM。5443. **如果可能,使用更大的執行個體**。Claude Code 需要至少 4 GB 的 RAM。

504 545 

505### Docker 中安裝掛起546<h3 id="install-hangs-in-docker">

547 Docker 中安裝掛起

548</h3>

506 549 

507在 Docker 容器中安裝 Claude Code 時,以 root 身份安裝到 `/` 可能導致掛起。550在 Docker 容器中安裝 Claude Code 時,以 root 身份安裝到 `/` 可能導致掛起。

508 551 


519 docker build --memory=4g .562 docker build --memory=4g .

520 ```563 ```

521 564 

522### Claude Desktop 在 Windows 上覆蓋 `claude` 命令565<h3 id="claude-desktop-overrides-the-claude-command-on-windows">

566 Claude Desktop 在 Windows 上覆蓋 `claude` 命令

567</h3>

523 568 

524如果您安裝了舊版本的 Claude Desktop,它可能在 `WindowsApps` 目錄中註冊 `Claude.exe`,其 PATH 優先級高於 Claude Code CLI。執行 `claude` 會開啟 Desktop 應用程式而非 CLI。569如果您安裝了舊版本的 Claude Desktop,它可能在 `WindowsApps` 目錄中註冊 `Claude.exe`,其 PATH 優先級高於 Claude Code CLI。執行 `claude` 會開啟 Desktop 應用程式而非 CLI。

525 570 

526更新 Claude Desktop 到最新版本以修復此問題。571更新 Claude Desktop 到最新版本以修復此問題。

527 572 

528### Windows 上的 Claude Code 需要 Git for Windows(用於 bash)或 PowerShell573<h3 id="claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell">

574 Windows 上的 Claude Code 需要 Git for Windows(用於 bash)或 PowerShell

575</h3>

529 576 

530Windows 上的原生 Claude Code 需要至少一個 shell:[Git for Windows](https://git-scm.com/downloads/win)(用於 Bash)或 PowerShell。當找不到任何一個時此錯誤會在啟動時出現。如果只找到 PowerShell,Claude Code 會改用 PowerShell 工具而非 Bash577Git for Windows 是選用的。Claude Code 在缺少 Git Bash 時使用 [PowerShell 工具](/zh-TW/tools-reference#powershell-tool),因此此錯誤表示找不到任何一個 shell

531 578 

532**如果都未安裝**,請安裝其中一個:579**如果 PowerShell 不在您的 PATH 中**,其預設位置是 `C:\Windows\System32\WindowsPowerShell\v1.0\`。將該目錄新增到您的 `PATH`,或安裝 [PowerShell 7](https://aka.ms/powershell),它提供 `pwsh`。

533 580 

534* Git for Windows:從 [git-scm.com/downloads/win](https://git-scm.com/downloads/win) 下載。在設定期間,選擇「Add to PATH」。安裝後重新啟動您的終端。581**若要改為安裝 Git for Windows**,請從 [git-scm.com/downloads/win](https://git-scm.com/downloads/win) 下載。在設定期間,選擇「Add to PATH」。安裝後重新啟動您的終端。安裝它會啟用 Bash 工具,在使用基於 Bash 的指令碼和工具時很有用。

535* PowerShell 7:從 [aka.ms/powershell](https://aka.ms/powershell) 下載。

536 582 

537**如果已安裝 Git** 但 Claude Code 找不到它,請在您的 [settings.json 檔案](/zh-TW/settings)中設定路徑:583**如果 Git 已安裝**但 Claude Code 找不到它,請在您的 [settings.json 檔案](/zh-TW/settings)中設定路徑:

538 584 

539```json theme={null}585```json theme={null}

540{586{


546 592 

547如果您的 Git 安裝在其他地方,透過在 PowerShell 中執行 `where.exe git` 找到路徑,並使用該目錄中的 `bin\bash.exe` 路徑。593如果您的 Git 安裝在其他地方,透過在 PowerShell 中執行 `where.exe git` 找到路徑,並使用該目錄中的 `bin\bash.exe` 路徑。

548 594 

549### Claude Code 不支援 32 位元 Windows595<h3 id="claude-code-does-not-support-32-bit-windows">

596 Claude Code 不支援 32 位元 Windows

597</h3>

550 598 

551Windows 在開始功能表中包含兩個 PowerShell 項目:`Windows PowerShell` 和 `Windows PowerShell (x86)`。x86 項目以 32 位元程序執行,即使在 64 位元機器上也會觸發此錯誤。要檢查您在哪種情況下,請在產生錯誤的同一視窗中執行此命令:599Windows 在開始功能表中包含兩個 PowerShell 項目:`Windows PowerShell` 和 `Windows PowerShell (x86)`。x86 項目以 32 位元程序執行,即使在 64 位元機器上也會觸發此錯誤。要檢查您在哪種情況下,請在產生錯誤的同一視窗中執行此命令:

552 600 


558 606 

559如果這列印 `False`,您在 32 位元版本的 Windows 上。Claude Code 需要 64 位元作業系統。請參閱[系統需求](/zh-TW/setup#system-requirements)。607如果這列印 `False`,您在 32 位元版本的 Windows 上。Claude Code 需要 64 位元作業系統。請參閱[系統需求](/zh-TW/setup#system-requirements)。

560 608 

561### Linux muslglibc 二進位不相符609<h3 id="linux-musl-or-glibc-binary-mismatch">

610 Linux musl 或 glibc 二進位不相符

611</h3>

562 612 

563如果在安裝後看到有關遺失共用程式庫的錯誤,如 `libstdc++.so.6` 或 `libgcc_s.so.1`,安裝程式可能為您的系統下載了錯誤的二進位變體。613如果在安裝後看到有關遺失共用程式庫的錯誤,如 `libstdc++.so.6` 或 `libgcc_s.so.1`,安裝程式可能為您的系統下載了錯誤的二進位變體。

564 614 


583 apk add libgcc libstdc++ ripgrep633 apk add libgcc libstdc++ ripgrep

584 ```634 ```

585 635 

586### `Illegal instruction`636<h3 id="illegal-instruction">

637 `Illegal instruction`

638</h3>

587 639 

588如果執行 `claude` 或安裝程式列印 `Illegal instruction`,原生二進位檔使用您的處理器不支援的 CPU 指令。有兩個不同的原因。640如果執行 `claude` 或安裝程式列印 `Illegal instruction`,原生二進位檔使用您的處理器不支援的 CPU 指令。有兩個不同的原因。

589 641 


597 649 

598替代安裝方法下載相同的原生二進位檔,不會解決任一原因。650替代安裝方法下載相同的原生二進位檔,不會解決任一原因。

599 651 

600### macOS 上的 `dyld: cannot load`652<h3 id="dyld-cannot-load-on-macos">

653 macOS 上的 `dyld: cannot load`

654</h3>

601 655 

602如果在安裝期間看到 `dyld: cannot load`、`dyld: Symbol not found` 或 `Abort trap: 6`,二進位檔與您的 macOS 版本或硬體不相容。656如果在安裝期間看到 `dyld: cannot load`、`dyld: Symbol not found` 或 `Abort trap: 6`,二進位檔與您的 macOS 版本或硬體不相容。

603 657 


620 674 

6212. **更新 macOS**(如果您在舊版本上)。二進位檔使用舊 macOS 版本不支援的載入命令和系統程式庫。Homebrew 等替代安裝方法下載相同的二進位檔,不會解決此錯誤。6752. **更新 macOS**(如果您在舊版本上)。二進位檔使用舊 macOS 版本不支援的載入命令和系統程式庫。Homebrew 等替代安裝方法下載相同的二進位檔,不會解決此錯誤。

622 676 

623### WSL1 上的 `Exec format error`677<h3 id="exec-format-error-on-wsl1">

678 WSL1 上的 `Exec format error`

679</h3>

624 680 

625如果在 WSL 中執行 `claude` 列印 `cannot execute binary file: Exec format error`,您在 WSL1 上並遇到[問題 #38788](https://github.com/anthropics/claude-code/issues/38788) 中追蹤的已知原生二進位檔回歸。二進位檔的程式頭以 WSL1 的載入器無法處理的方式改變。681如果在 WSL 中執行 `claude` 列印 `cannot execute binary file: Exec format error`,您在 WSL1 上並遇到[問題 #38788](https://github.com/anthropics/claude-code/issues/38788) 中追蹤的已知原生二進位檔回歸。二進位檔的程式頭以 WSL1 的載入器無法處理的方式改變。

626 682 


640 696 

641然後執行 `source ~/.bashrc` 並重試 `claude`。697然後執行 `source ~/.bashrc` 並重試 `claude`。

642 698 

643### WSL 中的 npm 安裝錯誤699<h3 id="npm-install-errors-in-wsl">

700 WSL 中的 npm 安裝錯誤

701</h3>

644 702 

645如果您在 WSL 內使用 `npm install -g` 安裝了 Claude Code,這些問題適用。如果您使用了[原生安裝程式](/zh-TW/setup),請跳過此部分。703如果您在 WSL 內使用 `npm install -g` 安裝了 Claude Code,這些問題適用。如果您使用了[原生安裝程式](/zh-TW/setup),請跳過此部分。

646 704 


672 避免透過 `appendWindowsPath = false` 停用 Windows PATH 匯入,因為這會破壞從 WSL 呼叫 Windows 可執行檔的能力。同樣,如果您在 Windows 開發中使用 Node.js,請避免從 Windows 解除安裝它。730 避免透過 `appendWindowsPath = false` 停用 Windows PATH 匯入,因為這會破壞從 WSL 呼叫 Windows 可執行檔的能力。同樣,如果您在 Windows 開發中使用 Node.js,請避免從 Windows 解除安裝它。

673</Warning>731</Warning>

674 732 

675### 安裝期間的權限錯誤733<h3 id="permission-errors-during-installation">

734 安裝期間的權限錯誤

735</h3>

676 736 

677如果原生安裝程式因權限錯誤而失敗,目標目錄可能不可寫入。請參閱[檢查目錄權限](#check-directory-permissions)。737如果原生安裝程式因權限錯誤而失敗,目標目錄可能不可寫入。請參閱[檢查目錄權限](#check-directory-permissions)。

678 738 


682curl -fsSL https://claude.ai/install.sh | bash742curl -fsSL https://claude.ai/install.sh | bash

683```743```

684 744 

685### npm 安裝後找不到原生二進位檔745<h3 id="native-binary-not-found-after-npm-install">

746 npm 安裝後找不到原生二進位檔

747</h3>

686 748 

687`@anthropic-ai/claude-code` npm 套件透過每個平台的可選相依性(如 `@anthropic-ai/claude-code-darwin-arm64`)拉入原生二進位檔。如果安裝後執行 `claude` 列印 `Could not find native binary package "@anthropic-ai/claude-code-<platform>"`,請檢查以下原因:749`@anthropic-ai/claude-code` npm 套件透過每個平台的可選相依性(如 `@anthropic-ai/claude-code-darwin-arm64`)拉入原生二進位檔。如果安裝後執行 `claude` 列印 `Could not find native binary package "@anthropic-ai/claude-code-<platform>"`,請檢查以下原因:

688 750 


692 754 

693使用 `--ignore-scripts` 安裝不會觸發此錯誤。跳過連結二進位檔到位置的 postinstall 步驟,因此 Claude Code 回退到在每次啟動時定位和生成平台二進位檔的包裝器。這有效但啟動速度較慢;使用啟用的指令碼重新安裝以進行直接執行。755使用 `--ignore-scripts` 安裝不會觸發此錯誤。跳過連結二進位檔到位置的 postinstall 步驟,因此 Claude Code 回退到在每次啟動時定位和生成平台二進位檔的包裝器。這有效但啟動速度較慢;使用啟用的指令碼重新安裝以進行直接執行。

694 756 

695## 登入和身份驗證757<h2 id="login-and-authentication">

758 登入和身份驗證

759</h2>

696 760 

697這些部分涉及登入失敗、OAuth 錯誤和令牌問題。761這些部分涉及登入失敗、OAuth 錯誤和令牌問題。

698 762 

699### 重設您的登入763<h3 id="reset-your-login">

764 重設您的登入

765</h3>

700 766 

701當登入失敗且原因不明顯時,乾淨的重新身份驗證可解決大多數情況:767當登入失敗且原因不明顯時,乾淨的重新身份驗證可解決大多數情況:

702 768 


706 772 

707如果瀏覽器在登入期間未自動開啟,按 `c` 將 OAuth URL 複製到您的剪貼簿,然後手動將其貼到瀏覽器中。當 URL 在狹窄或 SSH 終端中跨行換行且無法直接點擊時,這也有效。773如果瀏覽器在登入期間未自動開啟,按 `c` 將 OAuth URL 複製到您的剪貼簿,然後手動將其貼到瀏覽器中。當 URL 在狹窄或 SSH 終端中跨行換行且無法直接點擊時,這也有效。

708 774 

709### OAuth 錯誤:無效代碼775<h3 id="oauth-error-invalid-code">

776 OAuth 錯誤:無效代碼

777</h3>

710 778 

711如果您看到 `OAuth error: Invalid code. Please make sure the full code was copied`,登入代碼已過期或在複製貼上期間被截斷。779如果您看到 `OAuth error: Invalid code. Please make sure the full code was copied`,登入代碼已過期或在複製貼上期間被截斷。

712 780 


716* 如果瀏覽器未自動開啟,輸入 `c` 複製完整 URL784* 如果瀏覽器未自動開啟,輸入 `c` 複製完整 URL

717* 如果使用遠端/SSH 工作階段,瀏覽器可能在錯誤的機器上開啟。複製終端中顯示的 URL 並在您的本地瀏覽器中開啟它。785* 如果使用遠端/SSH 工作階段,瀏覽器可能在錯誤的機器上開啟。複製終端中顯示的 URL 並在您的本地瀏覽器中開啟它。

718 786 

719### 登入後 403 Forbidden787<h3 id="403-forbidden-after-login">

788 登入後 403 Forbidden

789</h3>

720 790 

721如果您在登入後看到 `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}`:791如果您在登入後看到 `API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}`:

722 792 


724* **Anthropic Console 使用者**:確認您的帳戶具有「Claude Code」或「Developer」角色。管理員在 Anthropic Console 的「設定」→「成員」中指派此角色。794* **Anthropic Console 使用者**:確認您的帳戶具有「Claude Code」或「Developer」角色。管理員在 Anthropic Console 的「設定」→「成員」中指派此角色。

725* **在代理後面**:公司代理可能干擾 API 請求。請參閱[網路設定](/zh-TW/network-config)以取得代理設定。795* **在代理後面**:公司代理可能干擾 API 請求。請參閱[網路設定](/zh-TW/network-config)以取得代理設定。

726 796 

727### 此組織已停用,但有有效的訂閱797<h3 id="this-organization-has-been-disabled-with-an-active-subscription">

798 此組織已停用,但有有效的訂閱

799</h3>

728 800 

729如果您看到 `API Error: 400 ... "This organization has been disabled"`,儘管有有效的 Claude 訂閱,`ANTHROPIC_API_KEY` 環境變數正在覆蓋您的訂閱。這通常發生在舊 API 金鑰(來自先前的雇主或專案)仍在您的 shell 設定檔中時。801如果您看到 `API Error: 400 ... "This organization has been disabled"`,儘管有有效的 Claude 訂閱,`ANTHROPIC_API_KEY` 環境變數正在覆蓋您的訂閱。這通常發生在舊 API 金鑰(來自先前的雇主或專案)仍在您的 shell 設定檔中時。

730 802 


739 811 

740檢查 `~/.zshrc`、`~/.bashrc` 或 `~/.profile` 中的 `export ANTHROPIC_API_KEY=...` 行並移除它們以永久進行變更。在 Windows 上,檢查您在 `$PROFILE` 的 PowerShell 設定檔和您的使用者環境變數中的 `ANTHROPIC_API_KEY`。在 Claude Code 內執行 `/status` 以確認哪個身份驗證方法是有效的。812檢查 `~/.zshrc`、`~/.bashrc` 或 `~/.profile` 中的 `export ANTHROPIC_API_KEY=...` 行並移除它們以永久進行變更。在 Windows 上,檢查您在 `$PROFILE` 的 PowerShell 設定檔和您的使用者環境變數中的 `ANTHROPIC_API_KEY`。在 Claude Code 內執行 `/status` 以確認哪個身份驗證方法是有效的。

741 813 

742### WSL2、SSH 或容器中的 OAuth 登入失敗814<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">

815 WSL2、SSH 或容器中的 OAuth 登入失敗

816</h3>

743 817 

744當 Claude Code 在 WSL2 中執行、透過 SSH 在遠端機器上執行或在容器內執行時,瀏覽器通常在不同的主機上開啟,其重新導向無法到達 Claude Code 的本地回呼伺服器。在您登入後,瀏覽器會顯示登入代碼而不是自動重新導向回來。將該代碼貼到終端的 `Paste code here if prompted` 提示中以完成登入。818當 Claude Code 在 WSL2 中執行、透過 SSH 在遠端機器上執行或在容器內執行時,瀏覽器通常在不同的主機上開啟,其重新導向無法到達 Claude Code 的本地回呼伺服器。在您登入後,瀏覽器會顯示登入代碼而不是自動重新導向回來。將該代碼貼到終端的 `Paste code here if prompted` 提示中以完成登入。

745 819 


760 834 

761此後備也適用於原生 Windows 或任何將代碼貼到互動式提示失敗的終端。835此後備也適用於原生 Windows 或任何將代碼貼到互動式提示失敗的終端。

762 836 

763### 未登入或令牌已過期837<h3 id="not-logged-in-or-token-expired">

838 未登入或令牌已過期

839</h3>

764 840 

765如果 Claude Code 在工作階段後提示您再次登入,您的 OAuth 令牌可能已過期。841如果 Claude Code 在工作階段後提示您再次登入,您的 OAuth 令牌可能已過期。

766 842 


768 844 

769在 macOS 上,當 Keychain 被鎖定或其密碼與您的帳戶密碼不同步時,登入也可能失敗,這會阻止 Claude Code 儲存認證。執行 `claude doctor` 以檢查 Keychain 存取。要手動解鎖 Keychain,請執行 `security unlock-keychain ~/Library/Keychains/login.keychain-db`。如果解鎖無幫助,請開啟 Keychain Access,選擇 `login` keychain,並選擇「編輯」>「變更 Keychain 'login' 的密碼」以將其與您的帳戶密碼重新同步。845在 macOS 上,當 Keychain 被鎖定或其密碼與您的帳戶密碼不同步時,登入也可能失敗,這會阻止 Claude Code 儲存認證。執行 `claude doctor` 以檢查 Keychain 存取。要手動解鎖 Keychain,請執行 `security unlock-keychain ~/Library/Keychains/login.keychain-db`。如果解鎖無幫助,請開啟 Keychain Access,選擇 `login` keychain,並選擇「編輯」>「變更 Keychain 'login' 的密碼」以將其與您的帳戶密碼重新同步。

770 846 

771### Bedrock、Vertex 或 Foundry 認證未載入847<h3 id="bedrock-vertex-or-foundry-credentials-not-loading">

848 Bedrock、Vertex 或 Foundry 認證未載入

849</h3>

772 850 

773如果您設定了 Claude Code 以使用雲端提供者,並在 Bedrock 上看到 `Could not load credentials from any providers`、在 Vertex 上看到 `Could not load the default credentials` 或在 Foundry 上看到 `ChainedTokenCredential authentication failed`,您的雲端提供者 CLI 可能在目前 shell 中未進行身份驗證。851如果您設定了 Claude Code 以使用雲端提供者,並在 Bedrock 上看到 `Could not load credentials from any providers`、在 Vertex 上看到 `Could not load the default credentials` 或在 Foundry 上看到 `ChainedTokenCredential authentication failed`,您的雲端提供者 CLI 可能在目前 shell 中未進行身份驗證。

774 852 


794 872 

795請參閱 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/zh-TW/microsoft-foundry) 以取得完整的提供者設定。873請參閱 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/zh-TW/microsoft-foundry) 以取得完整的提供者設定。

796 874 

797## 仍然卡住875<h2 id="still-stuck">

876 仍然卡住

877</h2>

798 878 

799如果上述任何方法都無法解決您的問題:879如果上述任何方法都無法解決您的問題:

800 880 

Details

21 21 

22如果您不確定哪個適用,請在 Claude Code 內執行 `/doctor` 以自動檢查您的安裝、設定、MCP 伺服器和上下文使用情況。如果 `claude` 根本無法啟動,請改為從您的 shell 執行 `claude doctor`。22如果您不確定哪個適用,請在 Claude Code 內執行 `/doctor` 以自動檢查您的安裝、設定、MCP 伺服器和上下文使用情況。如果 `claude` 根本無法啟動,請改為從您的 shell 執行 `claude doctor`。

23 23 

24## 效能和穩定性24<h2 id="performance-and-stability">

25 效能和穩定性

26</h2>

25 27 

26這些部分涵蓋與資源使用、回應性和搜尋行為相關的問題。28這些部分涵蓋與資源使用、回應性和搜尋行為相關的問題。

27 29 

28### 高 CPU 或記憶體使用30<h3 id="high-cpu-or-memory-usage">

31 高 CPU 或記憶體使用

32</h3>

29 33 

30Claude Code 設計用於與大多數開發環境配合使用,但在處理大型程式碼庫時可能消耗大量資源。如果您遇到效能問題:34Claude Code 設計用於與大多數開發環境配合使用,但在處理大型程式碼庫時可能消耗大量資源。如果您遇到效能問題:

31 35 


37 41 

38分解顯示駐留集大小、JS 堆、陣列緩衝區和未計算的原生記憶體,這有助於識別增長是在 JavaScript 物件還是原生程式碼中。若要檢查保留者,請在 Chrome DevTools 中的 Memory → Load 下開啟 `.heapsnapshot` 檔案。在 [GitHub](https://github.com/anthropics/claude-code/issues) 上報告記憶體問題時附加兩個檔案。42分解顯示駐留集大小、JS 堆、陣列緩衝區和未計算的原生記憶體,這有助於識別增長是在 JavaScript 物件還是原生程式碼中。若要檢查保留者,請在 Chrome DevTools 中的 Memory → Load 下開啟 `.heapsnapshot` 檔案。在 [GitHub](https://github.com/anthropics/claude-code/issues) 上報告記憶體問題時附加兩個檔案。

39 43 

40### Auto-compaction 停止並出現 thrashing 錯誤44<h3 id="auto-compaction-stops-with-a-thrashing-error">

45 Auto-compaction 停止並出現 thrashing 錯誤

46</h3>

41 47 

42如果您看到 `Autocompact is thrashing: the context refilled to the limit...`,自動 compaction 成功,但檔案或工具輸出立即多次重新填充上下文視窗。Claude Code 停止重試以避免在沒有進展的迴圈上浪費 API 呼叫。48如果您看到 `Autocompact is thrashing: the context refilled to the limit...`,自動 compaction 成功,但檔案或工具輸出立即多次重新填充上下文視窗。Claude Code 停止重試以避免在沒有進展的迴圈上浪費 API 呼叫。

43 49 


483. 將大檔案工作移動到 [subagent](/zh-TW/sub-agents),以便它在單獨的上下文視窗中執行543. 將大檔案工作移動到 [subagent](/zh-TW/sub-agents),以便它在單獨的上下文視窗中執行

494. 如果早期對話不再需要,執行 `/clear`554. 如果早期對話不再需要,執行 `/clear`

50 56 

51### 命令掛起或凍結57<h3 id="command-hangs-or-freezes">

58 命令掛起或凍結

59</h3>

52 60 

53如果 Claude Code 似乎無回應:61如果 Claude Code 似乎無回應:

54 62 


57 65 

58重新啟動不會遺失您的對話。在同一目錄中執行 `claude --resume` 以繼續會話。66重新啟動不會遺失您的對話。在同一目錄中執行 `claude --resume` 以繼續會話。

59 67 

60### 搜尋和發現問題68<h3 id="garbled-or-corrupted-text-in-an-editor-s-integrated-terminal">

69 編輯器整合終端中的文字亂碼或損毀

70</h3>

71 

72如果在 VS Code、Cursor 或 Devin Desktop 整合終端中執行 Claude Code 時字元呈現為方塊、塗抹或錯誤的字形,終端的 GPU 渲染器可能是原因。在 Claude Code 中執行 `/terminal-setup` 以將 `terminal.integrated.gpuAcceleration` 設定為 `"off"`,或在您的編輯器設定中手動設定並重新載入視窗。請參閱[終端配置](/zh-TW/terminal-config)以了解 `/terminal-setup` 寫入的其他設定。

73 

74<h3 id="search-and-discovery-issues">

75 搜尋和發現問題

76</h3>

61 77 

62如果搜尋工具、`@file` 提及、自訂代理或自訂 skills 找不到檔案,捆綁的 `ripgrep` 二進位檔可能無法在您的系統上執行。安裝您平台的 `ripgrep` 套件並告訴 Claude Code 改用它:78如果搜尋工具、`@file` 提及、自訂代理或自訂 skills 找不到檔案,捆綁的 `ripgrep` 二進位檔可能無法在您的系統上執行。安裝您平台的 `ripgrep` 套件並告訴 Claude Code 改用它:

63 79 


95 111 

96然後在您的[環境](/zh-TW/env-vars)中設定 `USE_BUILTIN_RIPGREP=0`。112然後在您的[環境](/zh-TW/env-vars)中設定 `USE_BUILTIN_RIPGREP=0`。

97 113 

98### WSL 上的搜尋速度緩慢或結果不完整114<h3 id="slow-or-incomplete-search-results-on-wsl">

115 WSL 上的搜尋速度緩慢或結果不完整

116</h3>

99 117 

100在 WSL 上[跨檔案系統工作](https://learn.microsoft.com/en-us/windows/wsl/filesystems)時的磁碟讀取效能損失可能導致在 WSL 上使用 Claude Code 時匹配數少於預期。搜尋仍然有效,但在原生檔案系統上返回的結果較少。118在 WSL 上[跨檔案系統工作](https://learn.microsoft.com/en-us/windows/wsl/filesystems)時的磁碟讀取效能損失可能導致在 WSL 上使用 Claude Code 時匹配數少於預期。搜尋仍然有效,但在原生檔案系統上返回的結果較少。

101 119 


111 129 

1123. **改用原生 Windows**:考慮在 Windows 上原生執行 Claude Code 而不是透過 WSL,以獲得更好的檔案系統效能。1303. **改用原生 Windows**:考慮在 Windows 上原生執行 Claude Code 而不是透過 WSL,以獲得更好的檔案系統效能。

113 131 

114## 取得更多幫助132<h2 id="get-more-help">

133 取得更多幫助

134</h2>

115 135 

116如果您遇到此處未涵蓋的問題:136如果您遇到此處未涵蓋的問題:

117 137 

ultraplan.md +18 −6

Details

20 20 

21Ultraplan 需要 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 帳戶和 GitHub 儲存庫。因為它在 Anthropic 的雲端基礎設施上執行,所以在使用 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 時不可用。雲端工作階段在您帳戶的預設 [cloud environment](/zh-TW/claude-code-on-the-web#the-cloud-environment) 中執行。如果您還沒有雲端環境,ultraplan 會在首次啟動時自動建立一個。21Ultraplan 需要 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 帳戶和 GitHub 儲存庫。因為它在 Anthropic 的雲端基礎設施上執行,所以在使用 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 時不可用。雲端工作階段在您帳戶的預設 [cloud environment](/zh-TW/claude-code-on-the-web#the-cloud-environment) 中執行。如果您還沒有雲端環境,ultraplan 會在首次啟動時自動建立一個。

22 22 

23## 從 CLI 啟動 ultraplan23<h2 id="launch-ultraplan-from-the-cli">

24 從 CLI 啟動 ultraplan

25</h2>

24 26 

25從您的本機 CLI 工作階段,您可以透過三種方式啟動 ultraplan:27從您的本機 CLI 工作階段,您可以透過三種方式啟動 ultraplan:

26 28 


46 48 

47執行 `/tasks` 並選擇 ultraplan 項目以開啟詳細檢視,其中包含工作階段連結、代理活動和 **Stop ultraplan** 操作。停止會封存雲端工作階段並清除指示器;沒有任何內容保存到您的終端機。49執行 `/tasks` 並選擇 ultraplan 項目以開啟詳細檢視,其中包含工作階段連結、代理活動和 **Stop ultraplan** 操作。停止會封存雲端工作階段並清除指示器;沒有任何內容保存到您的終端機。

48 50 

49## 在瀏覽器中審查和修訂計畫51<h2 id="review-and-revise-the-plan-in-your-browser">

52 在瀏覽器中審查和修訂計畫

53</h2>

50 54 

51當狀態變更為 `◆ ultraplan ready` 時,開啟工作階段連結以在 claude.ai 上檢視計畫。計畫出現在專用審查檢視中:55當狀態變更為 `◆ ultraplan ready` 時,開啟工作階段連結以在 claude.ai 上檢視計畫。計畫出現在專用審查檢視中:

52 56 


56 60 

57當您要求 Claude 處理您的評論時,它會修訂計畫並呈現更新的草稿。您可以根據需要迭代多次,然後再選擇在何處執行。61當您要求 Claude 處理您的評論時,它會修訂計畫並呈現更新的草稿。您可以根據需要迭代多次,然後再選擇在何處執行。

58 62 

59## 選擇執行位置63<h2 id="choose-where-to-execute">

64 選擇執行位置

65</h2>

60 66 

61當計畫看起來正確時,您可以從瀏覽器選擇 Claude 是在同一雲端工作階段中實施它,還是將其發送回您等待的終端機。67當計畫看起來正確時,您可以從瀏覽器選擇 Claude 是在同一雲端工作階段中實施它,還是將其發送回您等待的終端機。

62 68 

63### 在網路上執行69<h3 id="execute-on-the-web">

70 在網路上執行

71</h3>

64 72 

65在瀏覽器中選擇 **Approve Claude's plan and start coding** 以讓 Claude 在同一 Claude Code on the web 工作階段中實施它。您的終端機會顯示確認,狀態指示器會清除,工作會在雲端繼續。實施完成後,[review the diff](/zh-TW/claude-code-on-the-web#review-changes) 並從網路介面建立拉取請求。73在瀏覽器中選擇 **Approve Claude's plan and start coding** 以讓 Claude 在同一 Claude Code on the web 工作階段中實施它。您的終端機會顯示確認,狀態指示器會清除,工作會在雲端繼續。實施完成後,[review the diff](/zh-TW/claude-code-on-the-web#review-changes) 並從網路介面建立拉取請求。

66 74 

67### 將計畫發送回您的終端機75<h3 id="send-the-plan-back-to-your-terminal">

76 將計畫發送回您的終端機

77</h3>

68 78 

69在瀏覽器中選擇 **Approve plan and teleport back to terminal** 以使用對您環境的完全存取權限在本機實施計畫。當工作階段是從您的 CLI 啟動且終端機仍在輪詢時,此選項會出現。網路工作階段被封存,因此它不會並行繼續工作。79在瀏覽器中選擇 **Approve plan and teleport back to terminal** 以使用對您環境的完全存取權限在本機實施計畫。當工作階段是從您的 CLI 啟動且終端機仍在輪詢時,此選項會出現。網路工作階段被封存,因此它不會並行繼續工作。

70 80 


76 86 

77如果您開始新工作階段,Claude 會在頂部列印 `claude --resume` 命令,以便您稍後可以返回到您之前的對話。87如果您開始新工作階段,Claude 會在頂部列印 `claude --resume` 命令,以便您稍後可以返回到您之前的對話。

78 88 

79## 相關資源89<h2 id="related-resources">

90 相關資源

91</h2>

80 92 

81* [Claude Code on the web](/zh-TW/claude-code-on-the-web):ultraplan 執行的雲端基礎設施93* [Claude Code on the web](/zh-TW/claude-code-on-the-web):ultraplan 執行的雲端基礎設施

82* [Plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode):規劃在本機工作階段中的工作方式94* [Plan mode](/zh-TW/permission-modes#analyze-before-you-edit-with-plan-mode):規劃在本機工作階段中的工作方式

ultrareview.md +30 −18

Details

4 4 

5# 使用 Ultrareview 尋找錯誤5# 使用 Ultrareview 尋找錯誤

6 6 

7> 使用 /ultrareview 在雲端執行深度多代理程式碼審查,在合併前尋找並驗證錯誤。7> 使用 /code-review ultra 在雲端執行深度多代理程式碼審查,在合併前尋找並驗證錯誤。

8 8 

9<Note>9<Note>

10 Ultrareview 是 Claude Code v2.1.86 及更新版本中提供的研究預覽功能。該功能、定價和可用性可能會根據反饋而變更。10 Ultrareview 是 Claude Code v2.1.86 及更新版本中提供的研究預覽功能。該功能、定價和可用性可能會根據反饋而變更。該命令現在以 `/code-review ultra` 的方式調用,而 `/ultrareview` 仍保留為別名。

11</Note>11</Note>

12 12 

13Ultrareview 是在 Claude Code 網路基礎設施上執行的深度程式碼審查。當您執行 `/ultrareview` 時,Claude Code 會在遠端沙箱中啟動一群審查代理程式,以尋找您分支或拉取請求中的錯誤。13Ultrareview 是在 Claude Code 網路基礎設施上執行的深度程式碼審查。當您執行 `/code-review ultra` 時,Claude Code 會在遠端沙箱中啟動一群審查代理程式,以尋找您分支或拉取請求中的錯誤。

14 14 

15與本地 `/review` 相比,ultrareview 提供:15與本地 `/review` 相比,ultrareview 提供:

16 16 


20 20 

21Ultrareview 需要使用 Claude.ai 帳戶進行身份驗證,因為它在 Claude Code 網路基礎設施上執行。如果您僅使用 API 金鑰登入,請先執行 `/login` 並使用 Claude.ai 進行身份驗證。使用 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 的 Claude Code 時,Ultrareview 不可用,對於已啟用零資料保留的組織也不可用。21Ultrareview 需要使用 Claude.ai 帳戶進行身份驗證,因為它在 Claude Code 網路基礎設施上執行。如果您僅使用 API 金鑰登入,請先執行 `/login` 並使用 Claude.ai 進行身份驗證。使用 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 的 Claude Code 時,Ultrareview 不可用,對於已啟用零資料保留的組織也不可用。

22 22 

23## 從 CLI 執行 ultrareview23<h2 id="run-ultrareview-from-the-cli">

24 從 CLI 執行 ultrareview

25</h2>

24 26 

25從 Claude Code CLI 中的任何 git 儲存庫啟動審查。27從 Claude Code CLI 中的任何 git 儲存庫啟動審查。

26 28 

27```text theme={null}29```text theme={null}

28/ultrareview30/code-review ultra

29```31```

30 32 

31不帶引數時,ultrareview 審查您目前分支與預設分支之間的差異,包括工作樹中任何未提交和暫存的變更。Claude Code 會將儲存庫狀態打包並上傳到遠端沙箱進行審查。33不帶引數時,ultrareview 審查您目前分支與預設分支之間的差異,包括工作樹中任何未提交和暫存的變更。Claude Code 會將儲存庫狀態打包並上傳到遠端沙箱進行審查。


33若要改為審查 GitHub 拉取請求,請傳遞 PR 編號。35若要改為審查 GitHub 拉取請求,請傳遞 PR 編號。

34 36 

35```text theme={null}37```text theme={null}

36/ultrareview 123438/code-review ultra 1234

37```39```

38 40 

39在 PR 模式中,遠端沙箱直接從 GitHub 複製拉取請求,而不是打包您的本地工作樹。PR 模式需要儲存庫上有 `github.com` 遠端41在 PR 模式中,遠端沙箱直接從主機複製拉取請求,而不是打包您的本地工作樹。PR 模式適用於 `github.com` 上的儲存庫以及管理員已連接到 Claude Code 的 [GitHub Enterprise Server](/zh-TW/github-enterprise-server) 實例

40 42 

41<Tip>43<Tip>

42 如果您的儲存庫太大而無法打包,Claude Code 會提示您改用 PR 模式。推送您的分支並開啟草稿 PR,然後執行 `/ultrareview <PR-number>`。44 如果您的儲存庫太大而無法打包,Claude Code 會提示您改用 PR 模式。推送您的分支並開啟草稿 PR,然後執行 `/code-review ultra <PR-number>`。

43</Tip>45</Tip>

44 46 

45啟動前,Claude Code 會顯示確認對話框,其中包含審查範圍(審查分支時包括檔案和行數)、您剩餘的免費執行次數和估計成本。確認後,審查會在背景中繼續進行,您可以繼續使用您的工作階段。該命令僅在您使用 `/ultrareview` 叫用時執行;Claude 不會自動啟動 ultrareview。47啟動前,Claude Code 會顯示確認對話框,其中包含審查範圍(審查分支時包括檔案和行數)、您剩餘的免費執行次數和估計成本。確認後,審查會在背景中繼續進行,您可以繼續使用您的工作階段。該命令僅在您使用 `/code-review ultra` 叫用時執行;Claude 不會自動啟動 ultrareview。

46 48 

47## 定價和免費執行次數49<h2 id="pricing-and-free-runs">

50 定價和免費執行次數

51</h2>

48 52 

49Ultrareview 是一項高級功能,按額外使用量而非您計畫的包含使用量計費。53Ultrareview 是一項高級功能,按額外使用量而非您計畫的包含使用量計費。

50 54 


58 62 

59由於 ultrareview 在免費執行次數外始終按額外使用量計費,您的帳戶或組織必須在啟動付費審查前啟用額外使用量。如果未啟用額外使用量,Claude Code 會阻止啟動並將您連結到計費設定,您可以在那裡開啟它。您也可以執行 `/usage-credits` 來檢查或變更您目前的設定。63由於 ultrareview 在免費執行次數外始終按額外使用量計費,您的帳戶或組織必須在啟動付費審查前啟用額外使用量。如果未啟用額外使用量,Claude Code 會阻止啟動並將您連結到計費設定,您可以在那裡開啟它。您也可以執行 `/usage-credits` 來檢查或變更您目前的設定。

60 64 

61## 追蹤執行中的審查65<h2 id="track-a-running-review">

66 追蹤執行中的審查

67</h2>

62 68 

63審查通常需要 5 到 10 分鐘。審查作為背景工作執行,因此您可以繼續在工作階段中工作、啟動其他命令或完全關閉終端。69審查通常需要 5 到 10 分鐘。審查作為背景工作執行,因此您可以繼續在工作階段中工作、啟動其他命令或完全關閉終端。

64 70 

65使用 `/tasks` 查看執行中和已完成的審查、開啟審查的詳細檢視,或停止進行中的審查。停止審查會封存雲端工作階段,部分發現不會返回。審查完成後,已驗證的發現會在您的工作階段中顯示為通知。每個發現都包括檔案位置和問題說明,以便您可以直接要求 Claude 修復它。71使用 `/tasks` 查看執行中和已完成的審查、開啟審查的詳細檢視,或停止進行中的審查。停止審查會封存雲端工作階段,部分發現不會返回。審查完成後,已驗證的發現會在您的工作階段中顯示為通知。每個發現都包括檔案位置和問題說明,以便您可以直接要求 Claude 修復它。

66 72 

67## 非互動方式執行 ultrareview73<h2 id="run-ultrareview-non-interactively">

74 非互動方式執行 ultrareview

75</h2>

68 76 

69使用 `claude ultrareview` 子命令從 CI 或指令碼啟動 ultrareview,無需互動工作階段。該子命令啟動與 `/ultrareview` 相同的審查,阻止直到遠端審查完成,將發現列印到 stdout,並在成功時以代碼 0 或失敗時以代碼 1 退出。77使用 `claude ultrareview` 子命令從 CI 或指令碼啟動 ultrareview,無需互動工作階段。該子命令啟動與 `/code-review ultra` 相同的審查,阻止直到遠端審查完成,將發現列印到 stdout,並在成功時以代碼 0 或失敗時以代碼 1 退出。

70 78 

71```bash theme={null}79```bash theme={null}

72claude ultrareview80claude ultrareview


83| `--json` | 列印原始 `bugs.json` 承載而不是格式化的發現 |91| `--json` | 列印原始 `bugs.json` 承載而不是格式化的發現 |

84| `--timeout <minutes>` | 等待審查完成的最大分鐘數。預設為 30 |92| `--timeout <minutes>` | 等待審查完成的最大分鐘數。預設為 30 |

85 93 

86執行 `claude ultrareview` 需要與 `/ultrareview` 相同的身份驗證和額外使用量配置。當審查完成時(無論是否有發現),該子命令以代碼 0 退出;當審查無法啟動、遠端工作階段出錯或逾時時,以代碼 1 退出;當使用 Ctrl-C 中斷時,以代碼 130 退出。如果您中斷該子命令,遠端審查會繼續執行;請按照列印到 stderr 的工作階段 URL 在瀏覽器中觀看它。94執行 `claude ultrareview` 需要與 `/code-review ultra` 相同的身份驗證和使用量配額配置。當審查完成時(無論是否有發現),該子命令以代碼 0 退出;當審查無法啟動、遠端工作階段出錯或逾時時,以代碼 1 退出;當使用 Ctrl-C 中斷時,以代碼 130 退出。如果您中斷該子命令,遠端審查會繼續執行;請按照列印到 stderr 的工作階段 URL 在瀏覽器中觀看它。

87 95 

88如需在 GitHub 拉取請求上進行自動審查,[Code Review](/zh-TW/code-review) 直接與您的儲存庫整合,並將發現作為內嵌 PR 評論發佈,無需 CLI 步驟。96如需在 GitHub 拉取請求上進行自動審查,[Code Review](/zh-TW/code-review) 直接與您的儲存庫整合,並將發現作為內嵌 PR 評論發佈,無需 CLI 步驟。

89 97 

90## Ultrareview 與 /review 的比較98<h2 id="how-ultrareview-compares-to-/review">

99 ultrareview 與 /review 的比較

100</h2>

91 101 

92兩個命令都審查程式碼,但它們針對工作流程的不同階段。102兩個命令都審查程式碼,但它們針對工作流程的不同階段。

93 103 

94| | `/review` | `/ultrareview` |104| | `/review` | `/code-review ultra` |

95| ---- | ------------ | -------------------------------- |105| ---- | ------------ | -------------------------------- |

96| 執行位置 | 在您的工作階段中本地執行 | 在雲端沙箱中遠端執行 |106| 執行位置 | 在您的工作階段中本地執行 | 在雲端沙箱中遠端執行 |

97| 深度 | 單次審查 | 具有獨立驗證的多代理程式艦隊 |107| 深度 | 單次審查 | 具有獨立驗證的多代理程式艦隊 |


99| 成本 | 計入正常使用量 | 免費執行次數,然後大約 $5 至 $20 每次審查作為額外使用量 |109| 成本 | 計入正常使用量 | 免費執行次數,然後大約 $5 至 $20 每次審查作為額外使用量 |

100| 最適合 | 迭代時的快速反饋 | 在實質性變更前合併時的信心 |110| 最適合 | 迭代時的快速反饋 | 在實質性變更前合併時的信心 |

101 111 

102使用 `/review` 在工作時獲得快速反饋。在合併實質性變更前使用 `/ultrareview`,當您想要更深入的審查以捕捉單次審查可能遺漏的問題時。112使用 `/review` 在工作時獲得快速反饋。在合併實質性變更前使用 `/code-review ultra`,當您想要更深入的審查以捕捉單次審查可能遺漏的問題時。

103 113 

104## 相關資源114<h2 id="related-resources">

115 相關資源

116</h2>

105 117 

106* [Claude Code 網路版](/zh-TW/claude-code-on-the-web):了解遠端工作階段和雲端沙箱的工作原理118* [Claude Code 網路版](/zh-TW/claude-code-on-the-web):了解遠端工作階段和雲端沙箱的工作原理

107* [使用 ultraplan 規劃複雜變更](/zh-TW/ultraplan):ultrareview 的規劃對應項,用於前期設計工作119* [使用 ultraplan 規劃複雜變更](/zh-TW/ultraplan):ultrareview 的規劃對應項,用於前期設計工作

voice-dictation.md +30 −10

Details

12 語音聽寫需要 Claude Code v2.1.69 或更高版本。點擊模式需要 v2.1.116 或更高版本。使用 `claude --version` 檢查您的版本。12 語音聽寫需要 Claude Code v2.1.69 或更高版本。點擊模式需要 v2.1.116 或更高版本。使用 `claude --version` 檢查您的版本。

13</Note>13</Note>

14 14 

15## 要求15聽寫也適用於[代理檢視](/zh-TW/agent-view#peek-and-reply)。在調度輸入或窺視面板回覆聚焦時,按住或點擊您的推送通話鍵以聽寫到背景工作階段。

16 16 

17語音聽寫會將您錄製的音頻串流傳輸到 Anthropic 的伺服器進行轉錄。音頻不在本地處理。語音轉文字服務僅在您使用 Claude.ai 帳戶進行身份驗證時可用,當 Claude Code 配置為直接使用 Anthropic API 金鑰、Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 時不可用。轉錄不會消耗 Claude 訊息或代幣,也不會計入 `/usage` 中顯示的限制。請參閱[資料使用](/zh-TW/data-usage)了解 Anthropic 如何處理您的資料。17<h2 id="requirements">

18 要求

19</h2>

20 

21語音聽寫會將您錄製的音頻串流傳輸到 Anthropic 的伺服器進行轉錄。音頻不在本地處理。語音轉文字服務僅在您使用 Claude.ai 帳戶進行身份驗證時可用,當 Claude Code 配置為直接使用 Anthropic API 金鑰、Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 時不可用。當您的組織啟用了 HIPAA 合規性時,語音聽寫也不可用。轉錄不會消耗 Claude 訊息或代幣,也不會計入 `/usage` 中顯示的限制。請參閱[資料使用](/zh-TW/data-usage)了解 Anthropic 如何處理您的資料。

18 22 

19語音聽寫還需要本地麥克風存取權限,因此它在遠端環境中不起作用,例如[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web)或 SSH 工作階段。在 WSL 中,語音聽寫需要 WSLg 來進行音頻存取。WSL2 在從 Microsoft Store 在 Windows 10 或 11 上安裝時包含 WSLg。如果 WSLg 不可用,例如在 WSL1 上,改為在原生 Windows 中執行 Claude Code。23語音聽寫還需要本地麥克風存取權限,因此它在遠端環境中不起作用,例如[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web)或 SSH 工作階段。在 WSL 中,語音聽寫需要 WSLg 來進行音頻存取。WSL2 在從 Microsoft Store 在 Windows 10 或 11 上安裝時包含 WSLg。如果 WSLg 不可用,例如在 WSL1 上,改為在原生 Windows 中執行 Claude Code。

20 24 


22 26 

23Claude Code [VS Code 擴充功能](/zh-TW/vs-code)也支援語音聽寫,具有相同的 Claude.ai 帳戶要求。它在 VS Code Remote 工作階段中不可用,包括 SSH、Dev Containers 和 Codespaces,因為麥克風在您的本地機器上,而擴充功能在遠端主機上執行。27Claude Code [VS Code 擴充功能](/zh-TW/vs-code)也支援語音聽寫,具有相同的 Claude.ai 帳戶要求。它在 VS Code Remote 工作階段中不可用,包括 SSH、Dev Containers 和 Codespaces,因為麥克風在您的本地機器上,而擴充功能在遠端主機上執行。

24 28 

25## 啟用語音聽寫29<h2 id="enable-voice-dictation">

30 啟用語音聽寫

31</h2>

26 32 

27執行 `/voice` 以啟用聽寫。第一次啟用時,Claude Code 會執行麥克風檢查。在 macOS 上,如果您的終端機從未被授予權限,這會觸發系統麥克風權限提示。33執行 `/voice` 以啟用聽寫。第一次啟用時,Claude Code 會執行麥克風檢查。在 macOS 上,如果您的終端機從未被授予權限,這會觸發系統麥克風權限提示。

28 34 


55 61 

56轉錄在兩種模式中都針對編碼詞彙進行了調整。常見的開發術語如 `regex`、`OAuth`、`JSON` 和 `localhost` 都能正確識別,您目前的專案名稱和 git 分支名稱會自動新增為識別提示。62轉錄在兩種模式中都針對編碼詞彙進行了調整。常見的開發術語如 `regex`、`OAuth`、`JSON` 和 `localhost` 都能正確識別,您目前的專案名稱和 git 分支名稱會自動新增為識別提示。

57 63 

58## 按住錄音64<h2 id="hold-to-record">

65 按住錄音

66</h2>

59 67 

60按住模式是推送通話:錄製在您按住鍵時執行,在您鬆開時停止。這是預設模式。68按住模式是推送通話:錄製在您按住鍵時執行,在您鬆開時停止。這是預設模式。

61 69 


77 85 

78預設情況下,鬆開鍵會插入轉錄並等待您按 `Enter`。在 `voice` 設定物件中設定 `"autoSubmit": true` 以在您鬆開鍵時自動發送提示,只要轉錄至少有三個單詞。86預設情況下,鬆開鍵會插入轉錄並等待您按 `Enter`。在 `voice` 設定物件中設定 `"autoSubmit": true` 以在您鬆開鍵時自動發送提示,只要轉錄至少有三個單詞。

79 87 

80## 點擊錄音並發送88<h2 id="tap-to-record-and-send">

89 點擊錄音並發送

90</h2>

81 91 

82點擊模式使用單個按鍵切換錄製:點擊一次開始,說話,然後再點擊一次發送提示。沒有預熱,您不需要保持鍵被按住。92點擊模式使用單個按鍵切換錄製:點擊一次開始,說話,然後再點擊一次發送提示。沒有預熱,您不需要保持鍵被按住。

83 93 


85 95 

86第一次點擊只在提示輸入為空時開始錄製,因此您在撰寫訊息時仍然可以正常輸入空格。第二次點擊無論輸入內容如何都會停止錄製。錄製也會在 15 秒無聲或 2 分鐘總時間後自動停止。96第一次點擊只在提示輸入為空時開始錄製,因此您在撰寫訊息時仍然可以正常輸入空格。第二次點擊無論輸入內容如何都會停止錄製。錄製也會在 15 秒無聲或 2 分鐘總時間後自動停止。

87 97 

88## 變更聽寫語言98<h2 id="change-the-dictation-language">

99 變更聽寫語言

100</h2>

89 101 

90語音聽寫使用與控制 Claude 回應語言相同的[`language` 設定](/zh-TW/settings)。如果該設定為空,聽寫預設為英文。在 VS Code 擴充功能中,如果 `language` 為空,聽寫會在預設為英文之前使用 VS Code 的 `accessibility.voice.speechLanguage` 設定。102語音聽寫使用與控制 Claude 回應語言相同的[`language` 設定](/zh-TW/settings)。如果該設定為空,聽寫預設為英文。在 VS Code 擴充功能中,如果 `language` 為空,聽寫會在預設為英文之前使用 VS Code 的 `accessibility.voice.speechLanguage` 設定。

91 103 


124 136 

125如果您的 `language` 設定不在支援的清單中,`/voice` 會在啟用時警告您,並為聽寫回退到英文。Claude 的文字回應不受此回退的影響。137如果您的 `language` 設定不在支援的清單中,`/voice` 會在啟用時警告您,並為聽寫回退到英文。Claude 的文字回應不受此回退的影響。

126 138 

127## 重新繫結聽寫鍵139<h2 id="rebind-the-dictation-key">

140 重新繫結聽寫鍵

141</h2>

128 142 

129聽寫鍵在 `Chat` 上下文中繫結到 `voice:pushToTalk`,預設為 `Space`。相同的繫結控制按住和點擊模式。在 [`~/.claude/keybindings.json`](/zh-TW/keybindings) 中重新繫結它:143聽寫鍵在 `Chat` 上下文中繫結到 `voice:pushToTalk`,預設為 `Space`。相同的繫結控制按住和點擊模式。在 [`~/.claude/keybindings.json`](/zh-TW/keybindings) 中重新繫結它:

130 144 


148 162 

149某些鍵不會傳遞到終端應用程式,根本無法繫結。例如,如果您嘗試繫結 `Caps Lock`,它會顯示錯誤。請參閱[自訂鍵盤快捷鍵](/zh-TW/keybindings)了解完整的快捷鍵語法和保留快捷鍵的清單。163某些鍵不會傳遞到終端應用程式,根本無法繫結。例如,如果您嘗試繫結 `Caps Lock`,它會顯示錯誤。請參閱[自訂鍵盤快捷鍵](/zh-TW/keybindings)了解完整的快捷鍵語法和保留快捷鍵的清單。

150 164 

151## 疑難排解165<h2 id="troubleshooting">

166 疑難排解

167</h2>

152 168 

153語音聽寫未啟動或錄製時的常見問題:169語音聽寫未啟動或錄製時的常見問題:

154 170 


163* **`No speech detected`**:音頻到達轉錄服務但未識別任何單詞。靠近麥克風說話,減少背景噪音,並確認您的[聽寫語言](#change-the-dictation-language)與您說話的語言相符。179* **`No speech detected`**:音頻到達轉錄服務但未識別任何單詞。靠近麥克風說話,減少背景噪音,並確認您的[聽寫語言](#change-the-dictation-language)與您說話的語言相符。

164* **轉錄是亂碼或使用了錯誤的語言**:聽寫預設為英文。如果您用另一種語言聽寫,請先在 `/config` 中設定它。請參閱[變更聽寫語言](#change-the-dictation-language)。180* **轉錄是亂碼或使用了錯誤的語言**:聽寫預設為英文。如果您用另一種語言聽寫,請先在 `/config` 中設定它。請參閱[變更聽寫語言](#change-the-dictation-language)。

165 181 

166### 終端機未列在 macOS 麥克風設定中182<h3 id="terminal-not-listed-in-macos-microphone-settings">

183 終端機未列在 macOS 麥克風設定中

184</h3>

167 185 

168如果您的終端機應用程式未出現在系統設定 → 隱私與安全 → 麥克風下,則沒有您可以啟用的切換。重設您的終端機的權限狀態,以便下一次 `/voice` 執行觸發新的 macOS 權限提示。186如果您的終端機應用程式未出現在系統設定 → 隱私與安全 → 麥克風下,則沒有您可以啟用的切換。重設您的終端機的權限狀態,以便下一次 `/voice` 執行觸發新的 macOS 權限提示。

169 187 


185 </Step>203 </Step>

186</Steps>204</Steps>

187 205 

188## 另請參閱206<h2 id="see-also">

207 另請參閱

208</h2>

189 209 

190* [自訂鍵盤快捷鍵](/zh-TW/keybindings):重新繫結 `voice:pushToTalk` 和其他 CLI 鍵盤動作210* [自訂鍵盤快捷鍵](/zh-TW/keybindings):重新繫結 `voice:pushToTalk` 和其他 CLI 鍵盤動作

191* [設定設定](/zh-TW/settings):`voice`、`language` 和其他設定鍵的完整參考211* [設定設定](/zh-TW/settings):`voice`、`language` 和其他設定鍵的完整參考

vs-code.md +122 −42

Details

12 12 

13使用此擴充功能,您可以在接受 Claude 的計畫之前進行審查和編輯,在進行編輯時自動接受,從您的選擇中 @-提及具有特定行範圍的檔案,存取對話歷史記錄,以及在單獨的標籤或視窗中開啟多個對話。13使用此擴充功能,您可以在接受 Claude 的計畫之前進行審查和編輯,在進行編輯時自動接受,從您的選擇中 @-提及具有特定行範圍的檔案,存取對話歷史記錄,以及在單獨的標籤或視窗中開啟多個對話。

14 14 

15## 先決條件15<h2 id="prerequisites">

16 先決條件

17</h2>

16 18 

17安裝前,請確保您擁有:19安裝前,請確保您擁有:

18 20 


23 此擴充功能包含 CLI(命令列介面),您可以從 VS Code 的整合終端機存取它以獲得進階功能。有關詳細資訊,請參閱 [VS Code 擴充功能與 Claude Code CLI](#vs-code-extension-vs-claude-code-cli)。25 此擴充功能包含 CLI(命令列介面),您可以從 VS Code 的整合終端機存取它以獲得進階功能。有關詳細資訊,請參閱 [VS Code 擴充功能與 Claude Code CLI](#vs-code-extension-vs-claude-code-cli)。

24</Tip>26</Tip>

25 27 

26## 安裝擴充功能28<h2 id="install-the-extension">

29 安裝擴充功能

30</h2>

27 31 

28點擊您的 IDE 的連結以直接安裝:32點擊您的 IDE 的連結以直接安裝:

29 33 


32 36 

33或在 VS Code 中,按 `Cmd+Shift+X`(Mac)或 `Ctrl+Shift+X`(Windows/Linux)開啟擴充功能檢視,搜尋「Claude Code」,然後點擊**安裝**。37或在 VS Code 中,按 `Cmd+Shift+X`(Mac)或 `Ctrl+Shift+X`(Windows/Linux)開啟擴充功能檢視,搜尋「Claude Code」,然後點擊**安裝**。

34 38 

35擴充功能也會安裝在其他 VS Code 分支中,例如 Windsurf 或 Kiro。在編輯器的擴充功能檢視中搜尋「Claude Code」,或從 [Open VSX registry](https://open-vsx.org/extension/Anthropic/claude-code) 安裝。如果您的編輯器無法安裝擴充功能,請在其整合終端中執行 `claude`。[CLI](/zh-TW/quickstart) 可在任何終端中運作。39擴充功能也會安裝在其他 VS Code 分支中,例如 Devin Desktop 或 Kiro。在編輯器的擴充功能檢視中搜尋「Claude Code」,或從 [Open VSX registry](https://open-vsx.org/extension/Anthropic/claude-code) 安裝。如果您的編輯器無法安裝擴充功能,請在其整合終端中執行 `claude`。[CLI](/zh-TW/quickstart) 可在任何終端中運作。

36 40 

37<Note>如果安裝後擴充功能未出現,請重新啟動 VS Code 或從命令面板執行「Developer: Reload Window」。</Note>41<Note>如果安裝後擴充功能未出現,請重新啟動 VS Code 或從命令面板執行「Developer: Reload Window」。</Note>

38 42 

39## 開始使用43<h2 id="get-started">

44 開始使用

45</h2>

40 46 

41安裝後,您可以透過 VS Code 介面開始使用 Claude Code:47安裝後,您可以透過 VS Code 介面開始使用 Claude Code:

42 48 


90 從命令面板執行'Claude Code: Open Walkthrough'以獲得基礎知識的引導式導覽。96 從命令面板執行'Claude Code: Open Walkthrough'以獲得基礎知識的引導式導覽。

91</Tip>97</Tip>

92 98 

93## 使用提示框99<h2 id="use-the-prompt-box">

100 使用提示框

101</h2>

94 102 

95提示框支援多項功能:103提示框支援多項功能:

96 104 


100* **擴展思考**:讓 Claude 花更多時間推理複雜問題。透過命令菜單(`/`)切換它。Claude 的推理在對話中顯示為摺疊的區塊:點擊一個區塊以讀取它,或按 `Ctrl+O` 以展開或摺疊工作階段中的每個思考區塊。有關詳細資訊,請參閱 [Extended thinking](/zh-TW/model-config#extended-thinking)。108* **擴展思考**:讓 Claude 花更多時間推理複雜問題。透過命令菜單(`/`)切換它。Claude 的推理在對話中顯示為摺疊的區塊:點擊一個區塊以讀取它,或按 `Ctrl+O` 以展開或摺疊工作階段中的每個思考區塊。有關詳細資訊,請參閱 [Extended thinking](/zh-TW/model-config#extended-thinking)。

101* **多行輸入**:按 `Shift+Enter` 以添加新行而不傳送。這也適用於問題對話框的'其他'自由文字輸入。109* **多行輸入**:按 `Shift+Enter` 以添加新行而不傳送。這也適用於問題對話框的'其他'自由文字輸入。

102 110 

103### 參考檔案和資料夾111<h3 id="reference-files-and-folders">

112 參考檔案和資料夾

113</h3>

104 114 

105使用 @-提及為 Claude 提供有關特定檔案或資料夾的上下文。當您輸入 `@` 後跟檔案或資料夾名稱時,Claude 會讀取該內容,並可以回答有關它的問題或對其進行變更。Claude Code 支援模糊匹配,因此您可以輸入部分名稱來找到您需要的內容:115使用 @-提及為 Claude 提供有關特定檔案或資料夾的上下文。當您輸入 `@` 後跟檔案或資料夾名稱時,Claude 會讀取該內容,並可以回答有關它的問題或對其進行變更。Claude Code 支援模糊匹配,因此您可以輸入部分名稱來找到您需要的內容:

106 116 


115 125 

116您也可以在將檔案拖動到提示框時按住 `Shift` 以將它們添加為附件。點擊任何附件上的 X 以將其從上下文中移除。126您也可以在將檔案拖動到提示框時按住 `Shift` 以將它們添加為附件。點擊任何附件上的 X 以將其從上下文中移除。

117 127 

118### 恢復過去的對話128<h3 id="resume-past-conversations">

129 恢復過去的對話

130</h3>

119 131 

120點擊 Claude Code 面板頂部的**工作階段歷史記錄**按鈕以存取您的對話歷史記錄。您可以按關鍵字搜尋或按時間瀏覽(今天、昨天、過去 7 天等)。點擊任何對話以使用完整訊息歷史記錄恢復它。新工作階段會根據您的第一條訊息接收 AI 生成的標題。將滑鼠懸停在工作階段上以顯示重新命名和移除操作:重新命名以給它一個描述性標題,或移除以將其從清單中刪除。有關恢復工作階段的更多資訊,請參閱 [Manage sessions](/zh-TW/sessions)。132點擊 Claude Code 面板頂部的**工作階段歷史記錄**按鈕以存取您的對話歷史記錄。您可以按關鍵字搜尋或按時間瀏覽(今天、昨天、過去 7 天等)。點擊任何對話以使用完整訊息歷史記錄恢復它。新工作階段會根據您的第一條訊息接收 AI 生成的標題。將滑鼠懸停在工作階段上以顯示重新命名和移除操作:重新命名以給它一個描述性標題,或移除以將其從清單中刪除。有關恢復工作階段的更多資訊,請參閱 [Manage sessions](/zh-TW/sessions)。

121 133 

122### 從 Claude.ai 恢復遠端工作階段134<h3 id="resume-remote-sessions-from-claude-ai">

135 從 Claude.ai 恢復遠端工作階段

136</h3>

123 137 

124如果您使用[網路上的 Claude Code](/zh-TW/claude-code-on-the-web),您可以直接在 VS Code 中恢復這些遠端工作階段。這需要使用 **Claude.ai Subscription** 登入,而不是 Anthropic Console。138如果您使用[網路上的 Claude Code](/zh-TW/claude-code-on-the-web),您可以直接在 VS Code 中恢復這些遠端工作階段。這需要使用 **Claude.ai Subscription** 登入,而不是 Anthropic Console。

125 139 


141 只有使用 GitHub 儲存庫啟動的網路工作階段才會出現在遠端標籤中。恢復會在本機載入對話歷史記錄;變更不會同步回 claude.ai。155 只有使用 GitHub 儲存庫啟動的網路工作階段才會出現在遠端標籤中。恢復會在本機載入對話歷史記錄;變更不會同步回 claude.ai。

142</Note>156</Note>

143 157 

144## 自訂您的工作流程158<h2 id="customize-your-workflow">

159 自訂您的工作流程

160</h2>

145 161 

146一旦您啟動並執行,您可以重新定位 Claude 面板、執行多個工作階段或切換到終端機模式。162一旦您啟動並執行,您可以重新定位 Claude 面板、執行多個工作階段或切換到終端機模式。

147 163 

148### 選擇 Claude 的位置164<h3 id="choose-where-claude-lives">

165 選擇 Claude 的位置

166</h3>

149 167 

150您可以拖動 Claude 面板以在 VS Code 中的任何位置重新定位它。抓住面板的標籤或標題列並拖動到:168您可以拖動 Claude 面板以在 VS Code 中的任何位置重新定位它。抓住面板的標籤或標題列並拖動到:

151 169 


157 將邊欄用於您的主要 Claude 工作階段,並為側面任務開啟其他標籤。Claude 會記住您偏好的位置。活動列工作階段清單圖示與 Claude 面板分開:工作階段清單在活動列中始終可見,而 Claude 面板圖示只有在面板停靠到左側邊欄時才會出現在那裡。175 將邊欄用於您的主要 Claude 工作階段,並為側面任務開啟其他標籤。Claude 會記住您偏好的位置。活動列工作階段清單圖示與 Claude 面板分開:工作階段清單在活動列中始終可見,而 Claude 面板圖示只有在面板停靠到左側邊欄時才會出現在那裡。

158</Tip>176</Tip>

159 177 

160### 執行多個對話178<h3 id="run-multiple-conversations">

179 執行多個對話

180</h3>

161 181 

162使用命令面板中的**在新標籤中開啟**或**在新視窗中開啟**以開始其他對話。每個對話維護自己的歷史記錄和上下文,允許您並行處理不同的任務。182使用命令面板中的**在新標籤中開啟**或**在新視窗中開啟**以開始其他對話。每個對話維護自己的歷史記錄和上下文,允許您並行處理不同的任務。

163 183 

164使用標籤時,spark 圖示上的小彩色點表示狀態:藍色表示許可請求待處理,橙色表示 Claude 在標籤隱藏時完成。184使用標籤時,spark 圖示上的小彩色點表示狀態:藍色表示許可請求待處理,橙色表示 Claude 在標籤隱藏時完成。

165 185 

166### 切換到終端機模式186<h3 id="switch-to-terminal-mode">

187 切換到終端機模式

188</h3>

167 189 

168預設情況下,擴充功能開啟圖形聊天面板。如果您偏好 CLI 風格的介面,請開啟[使用終端機設定](vscode://settings/claudeCode.useTerminal)並勾選該框。190預設情況下,擴充功能開啟圖形聊天面板。如果您偏好 CLI 風格的介面,請開啟[使用終端機設定](vscode://settings/claudeCode.useTerminal)並勾選該框。

169 191 

170您也可以開啟 VS Code 設定(Mac 上的 `Cmd+,` 或 Windows/Linux 上的 `Ctrl+,`),前往「擴充功能」→「Claude Code」,然後勾選**使用終端機**。192您也可以開啟 VS Code 設定(Mac 上的 `Cmd+,` 或 Windows/Linux 上的 `Ctrl+,`),前往「擴充功能」→「Claude Code」,然後勾選**使用終端機**。

171 193 

172## 管理 plugins194<h2 id="manage-plugins">

195 管理 plugins

196</h2>

173 197 

174VS Code 擴充功能包含用於安裝和管理 [plugins](/zh-TW/plugins) 的圖形介面。在提示框中輸入 `/plugins` 以開啟**管理 plugins** 介面。198VS Code 擴充功能包含用於安裝和管理 [plugins](/zh-TW/plugins) 的圖形介面。在提示框中輸入 `/plugins` 以開啟**管理 plugins** 介面。

175 199 

176### 安裝 plugins200<h3 id="install-plugins">

201 安裝 plugins

202</h3>

177 203 

178plugin 對話框顯示兩個標籤:**Plugins** 和 **Marketplaces**。204plugin 對話框顯示兩個標籤:**Plugins** 和 **Marketplaces**。

179 205 


190* **為此專案安裝**:與專案協作者共享(專案範圍)216* **為此專案安裝**:與專案協作者共享(專案範圍)

191* **在本機安裝**:僅適用於您,僅在此儲存庫中(本機範圍)217* **在本機安裝**:僅適用於您,僅在此儲存庫中(本機範圍)

192 218 

193### 管理市場219<h3 id="manage-marketplaces">

220 管理市場

221</h3>

194 222 

195切換到 **Marketplaces** 標籤以添加或移除 plugin 來源:223切換到 **Marketplaces** 標籤以添加或移除 plugin 來源:

196 224 


206 234 

207有關 plugin 系統的更多資訊,請參閱 [Plugins](/zh-TW/plugins) 和 [Plugin marketplaces](/zh-TW/plugin-marketplaces)。235有關 plugin 系統的更多資訊,請參閱 [Plugins](/zh-TW/plugins) 和 [Plugin marketplaces](/zh-TW/plugin-marketplaces)。

208 236 

209## 使用 Chrome 自動化瀏覽器任務237<h2 id="automate-browser-tasks-with-chrome">

238 使用 Chrome 自動化瀏覽器任務

239</h2>

210 240 

211將 Claude 連接到您的 Chrome 瀏覽器以測試網路應用程式、使用主控台日誌進行除錯,以及在不離開 VS Code 的情況下自動化瀏覽器工作流程。這需要 [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) 版本 1.0.36 或更高版本。241將 Claude 連接到您的 Chrome 瀏覽器以測試網路應用程式、使用主控台日誌進行除錯,以及在不離開 VS Code 的情況下自動化瀏覽器工作流程。這需要 [Claude in Chrome extension](https://chromewebstore.google.com/detail/claude/fcoeoabgfenejglbffodgkkbkcdhcgfn) 版本 1.0.36 或更高版本。

212 242 


222 252 

223有關設定說明、完整功能清單和故障排除,請參閱[使用 Claude Code 與 Chrome](/zh-TW/chrome)。253有關設定說明、完整功能清單和故障排除,請參閱[使用 Claude Code 與 Chrome](/zh-TW/chrome)。

224 254 

225## VS Code 命令和快捷鍵255<h2 id="vs-code-commands-and-shortcuts">

256 VS Code 命令和快捷鍵

257</h2>

226 258 

227開啟命令面板(Mac 上的 `Cmd+Shift+P` 或 Windows/Linux 上的 `Ctrl+Shift+P`)並輸入「Claude Code」以查看 Claude Code 擴充功能的所有可用 VS Code 命令。259開啟命令面板(Mac 上的 `Cmd+Shift+P` 或 Windows/Linux 上的 `Ctrl+Shift+P`)並輸入「Claude Code」以查看 Claude Code 擴充功能的所有可用 VS Code 命令。

228 260 


245| Show Logs | - | 檢視擴充功能除錯日誌 |277| Show Logs | - | 檢視擴充功能除錯日誌 |

246| Logout | - | 登出您的 Anthropic 帳戶 |278| Logout | - | 登出您的 Anthropic 帳戶 |

247 279 

248### 從其他工具啟動 VS Code 標籤280<h3 id="launch-a-vs-code-tab-from-other-tools">

281 從其他工具啟動 VS Code 標籤

282</h3>

249 283 

250擴充功能在 `vscode://anthropic.claude-code/open` 註冊 URI 處理程式。使用它從您自己的工具開啟新的 Claude Code 標籤:shell 別名、瀏覽器書籤,或任何可以開啟 URL 的指令碼。如果 VS Code 尚未執行,開啟 URL 會先啟動它。如果 VS Code 已在執行,URL 會在目前獲得焦點的視窗中開啟。284擴充功能在 `vscode://anthropic.claude-code/open` 註冊 URI 處理程式。使用它從您自己的工具開啟新的 Claude Code 標籤:shell 別名、瀏覽器書籤,或任何可以開啟 URL 的指令碼。如果 VS Code 尚未執行,開啟 URL 會先啟動它。如果 VS Code 已在執行,URL 會在目前獲得焦點的視窗中開啟。

251 285 


294 328 

295若要啟動終端機工作階段而不是 VS Code 標籤,請使用 CLI 的 `claude-cli://` 處理程式。請參閱[從連結啟動工作階段](/zh-TW/deep-links)。329若要啟動終端機工作階段而不是 VS Code 標籤,請使用 CLI 的 `claude-cli://` 處理程式。請參閱[從連結啟動工作階段](/zh-TW/deep-links)。

296 330 

297## 配置設定331<h2 id="configure-settings">

332 配置設定

333</h2>

298 334 

299擴充功能有兩種類型的設定:335擴充功能有兩種類型的設定:

300 336 


305 將 `"$schema": "https://json.schemastore.org/claude-code-settings.json"` 添加到您的 `settings.json` 以在 VS Code 中直接獲得所有可用設定的自動完成和內聯驗證。341 將 `"$schema": "https://json.schemastore.org/claude-code-settings.json"` 添加到您的 `settings.json` 以在 VS Code 中直接獲得所有可用設定的自動完成和內聯驗證。

306</Tip>342</Tip>

307 343 

308### 擴充功能設定344<h3 id="extension-settings">

345 擴充功能設定

346</h3>

309 347 

310| 設定 | 預設值 | 描述 |348| 設定 | 預設值 | 描述 |

311| ----------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |349| ----------------------------------- | --------- | ----------------------------------------------------------------------------------------------------- |

312| `useTerminal` | `false` | 以終端機模式而不是圖形面板啟動 Claude |350| `useTerminal` | `false` | 以終端機模式而不是圖形面板啟動 Claude |

313| `initialPermissionMode` | `default` | 控制新對話的批准提示:`default`、`plan`、`acceptEdits` 或 `bypassPermissions`。請參閱[許可模式](/zh-TW/permission-modes)。 |351| `initialPermissionMode` | `default` | 控制新對話的批准提示:`default`、`plan`、`acceptEdits` 或 `bypassPermissions`。請參閱[許可模式](/zh-TW/permission-modes)。 |

314| `preferredLocation` | `panel` | Claude 開啟的位置:`sidebar`(右側)或 `panel`(新標籤) |352| `preferredLocation` | `panel` | Claude 開啟的位置:`sidebar`(右側)或 `panel`(新標籤) |


321| `usePythonEnvironment` | `true` | 執行 Claude 時啟動工作區的 Python 環境。需要 Python 擴充功能。 |359| `usePythonEnvironment` | `true` | 執行 Claude 時啟動工作區的 Python 環境。需要 Python 擴充功能。 |

322| `environmentVariables` | `[]` | 為 Claude 程序設定環境變數。改為使用 Claude Code 設定以進行共享配置。 |360| `environmentVariables` | `[]` | 為 Claude 程序設定環境變數。改為使用 Claude Code 設定以進行共享配置。 |

323| `disableLoginPrompt` | `false` | 跳過身份驗證提示(用於第三方提供者設定) |361| `disableLoginPrompt` | `false` | 跳過身份驗證提示(用於第三方提供者設定) |

324| `allowDangerouslySkipPermissions` | `false` | 將 [Auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 和 Bypass permissions 添加到模式選擇器。Auto mode 有[計畫、管理員、模型和提供者要求](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),因此即使此切換打開,該選項也可能保持不可用。僅在沒有網際網路存取的 sandbox 中使用 Bypass permissions |362| `allowDangerouslySkipPermissions` | `false` | 將 Bypass permissions 添加到模式選擇器。僅在沒有網際網路存取的 sandbox 中使用。 |

325| `claudeProcessWrapper` | - | 用於啟動 Claude 程序的可執行檔。當存在時,捆綁的二進制檔案路徑會作為引數傳遞。如果擴充功能組建不包含您平台的二進制檔案,請將此設定為單獨安裝的 `claude` 二進制檔案。 |363| `claudeProcessWrapper` | - | 用於啟動 Claude 程序的可執行檔。當存在時,捆綁的二進制檔案路徑會作為引數傳遞。如果擴充功能組建不包含您平台的二進制檔案,請將此設定為單獨安裝的 `claude` 二進制檔案。 |

326 364 

327## VS Code 擴充功能與 Claude Code CLI365<h2 id="vs-code-extension-vs-claude-code-cli">

366 VS Code 擴充功能與 Claude Code CLI

367</h2>

328 368 

329Claude Code 既可作為 VS Code 擴充功能(圖形面板)也可作為 CLI(終端機中的命令列介面)使用。某些功能僅在 CLI 中可用。如果您需要 CLI 專用功能,請在 VS Code 的整合終端機中執行 `claude`。369Claude Code 既可作為 VS Code 擴充功能(圖形面板)也可作為 CLI(終端機中的命令列介面)使用。某些功能僅在 CLI 中可用。如果您需要 CLI 專用功能,請在 VS Code 的整合終端機中執行 `claude`。

330 370 


336| `!` bash 快捷方式 | 是 | 否 |376| `!` bash 快捷方式 | 是 | 否 |

337| Tab 完成 | 是 | 否 |377| Tab 完成 | 是 | 否 |

338 378 

339### 使用 checkpoints 進行倒帶379<h3 id="rewind-with-checkpoints">

380 使用 checkpoints 進行倒帶

381</h3>

340 382 

341VS Code 擴充功能支援 checkpoints,它們追蹤 Claude 的檔案編輯並讓您倒帶到先前的狀態。將滑鼠懸停在任何訊息上以顯示倒帶按鈕,然後從三個選項中選擇:383VS Code 擴充功能支援 checkpoints,它們追蹤 Claude 的檔案編輯並讓您倒帶到先前的狀態。將滑鼠懸停在任何訊息上以顯示倒帶按鈕,然後從三個選項中選擇:

342 384 


346 388 

347有關 checkpoints 如何工作及其限制的完整詳細資訊,請參閱 [Checkpointing](/zh-TW/checkpointing)。389有關 checkpoints 如何工作及其限制的完整詳細資訊,請參閱 [Checkpointing](/zh-TW/checkpointing)。

348 390 

349### 在 VS Code 中執行 CLI391<h3 id="run-cli-in-vs-code">

392 在 VS Code 中執行 CLI

393</h3>

350 394 

351若要在 VS Code 中使用 CLI,請開啟整合終端機(Windows/Linux 上的 `` Ctrl+` `` 或 Mac 上的 `` Cmd+` ``)並執行 `claude`。CLI 會自動與您的 IDE 整合,以獲得差異檢視和診斷共享等功能。395若要在 VS Code 中使用 CLI,請開啟整合終端機(Windows/Linux 上的 `` Ctrl+` `` 或 Mac 上的 `` Cmd+` ``)並執行 `claude`。CLI 會自動與您的 IDE 整合,以獲得差異檢視和診斷共享等功能。

352 396 

353如果使用外部終端機,請在 Claude Code 中執行 `/ide` 以將其連接到 VS Code。397如果使用外部終端機,請在 Claude Code 中執行 `/ide` 以將其連接到 VS Code。

354 398 

355### 在擴充功能和 CLI 之間切換399<h3 id="switch-between-extension-and-cli">

400 在擴充功能和 CLI 之間切換

401</h3>

356 402 

357擴充功能和 CLI 共享相同的對話歷史記錄。若要在 CLI 中繼續擴充功能對話,請在終端機中執行 `claude --resume`。這會開啟一個互動式選擇器,您可以在其中搜尋並選擇您的對話。403擴充功能和 CLI 共享相同的對話歷史記錄。若要在 CLI 中繼續擴充功能對話,請在終端機中執行 `claude --resume`。這會開啟一個互動式選擇器,您可以在其中搜尋並選擇您的對話。

358 404 

359### 在提示中包含終端機輸出405<h3 id="include-terminal-output-in-prompts">

406 在提示中包含終端機輸出

407</h3>

360 408 

361使用 `@terminal:name` 在您的提示中參考終端機輸出,其中 `name` 是終端機的標題。這讓 Claude 可以看到命令輸出、錯誤訊息或日誌,而無需複製貼上。409使用 `@terminal:name` 在您的提示中參考終端機輸出,其中 `name` 是終端機的標題。這讓 Claude 可以看到命令輸出、錯誤訊息或日誌,而無需複製貼上。

362 410 

363### 監控背景程序411<h3 id="monitor-background-processes">

412 監控背景程序

413</h3>

364 414 

365當 Claude 執行長時間執行的命令時,擴充功能在狀態列中顯示進度。但是,與 CLI 相比,背景任務的可見性受限。為了獲得更好的可見性,讓 Claude 輸出命令,以便您可以在 VS Code 的整合終端機中執行它。415當 Claude 執行長時間執行的命令時,擴充功能在狀態列中顯示進度。但是,與 CLI 相比,背景任務的可見性受限。為了獲得更好的可見性,讓 Claude 輸出命令,以便您可以在 VS Code 的整合終端機中執行它。

366 416 

367### 使用 MCP 連接到外部工具417<h3 id="connect-to-external-tools-with-mcp">

418 使用 MCP 連接到外部工具

419</h3>

368 420 

369MCP(Model Context Protocol)servers 讓 Claude 存取外部工具、資料庫和 API。421MCP(Model Context Protocol)servers 讓 Claude 存取外部工具、資料庫和 API。

370 422 


379 431 

380若要在不離開 VS Code 的情況下管理 MCP servers,請在聊天面板中輸入 `/mcp`。MCP 管理對話框讓您啟用或停用伺服器、重新連接到伺服器以及管理 OAuth 身份驗證。有關可用伺服器,請參閱 [MCP 文件](/zh-TW/mcp)。432若要在不離開 VS Code 的情況下管理 MCP servers,請在聊天面板中輸入 `/mcp`。MCP 管理對話框讓您啟用或停用伺服器、重新連接到伺服器以及管理 OAuth 身份驗證。有關可用伺服器,請參閱 [MCP 文件](/zh-TW/mcp)。

381 433 

382## 使用 git434<h2 id="work-with-git">

435 使用 git

436</h2>

383 437 

384Claude Code 與 git 整合以幫助直接在 VS Code 中進行版本控制工作流程。要求 Claude 提交變更、建立拉取請求或跨分支工作。438Claude Code 與 git 整合以幫助直接在 VS Code 中進行版本控制工作流程。要求 Claude 提交變更、建立拉取請求或跨分支工作。

385 439 

386### 建立提交和拉取請求440<h3 id="create-commits-and-pull-requests">

441 建立提交和拉取請求

442</h3>

387 443 

388Claude 可以暫存變更、編寫提交訊息並根據您的工作建立拉取請求:444Claude 可以暫存變更、編寫提交訊息並根據您的工作建立拉取請求:

389 445 


395 451 

396建立拉取請求時,Claude 會根據實際程式碼變更生成描述,並可以添加有關測試或實現決策的上下文。452建立拉取請求時,Claude 會根據實際程式碼變更生成描述,並可以添加有關測試或實現決策的上下文。

397 453 

398### 使用 git worktrees 進行並行任務454<h3 id="use-git-worktrees-for-parallel-tasks">

455 使用 git worktrees 進行並行任務

456</h3>

399 457 

400使用 `--worktree`(`-w`)標誌以在具有自己的檔案和分支的隔離 worktree 中啟動 Claude:458使用 `--worktree`(`-w`)標誌以在具有自己的檔案和分支的隔離 worktree 中啟動 Claude:

401 459 


405 463 

406每個 worktree 維護獨立的檔案狀態,同時共享 git 歷史記錄。這可防止 Claude 實例在處理不同任務時相互干擾。有關更多詳細資訊,請參閱[使用 Git worktrees 執行並行工作階段](/zh-TW/worktrees)。464每個 worktree 維護獨立的檔案狀態,同時共享 git 歷史記錄。這可防止 Claude 實例在處理不同任務時相互干擾。有關更多詳細資訊,請參閱[使用 Git worktrees 執行並行工作階段](/zh-TW/worktrees)。

407 465 

408## 使用第三方提供者466<h2 id="use-third-party-providers">

467 使用第三方提供者

468</h2>

409 469 

410預設情況下,Claude Code 直接連接到 Anthropic 的 API。如果您的組織使用 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 來存取 Claude,請配置擴充功能以改為使用您的提供者:470預設情況下,Claude Code 直接連接到 Anthropic 的 API。如果您的組織使用 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 來存取 Claude,請配置擴充功能以改為使用您的提供者:

411 471 


427 </Step>487 </Step>

428</Steps>488</Steps>

429 489 

430## 安全和隱私490<h2 id="security-and-privacy">

491 安全和隱私

492</h2>

431 493 

432您的程式碼保持私密。Claude Code 處理您的程式碼以提供協助,但不使用它來訓練模型。有關資料處理和如何選擇退出日誌記錄的詳細資訊,請參閱[資料和隱私](/zh-TW/data-usage)。494您的程式碼保持私密。Claude Code 處理您的程式碼以提供協助,但不使用它來訓練模型。有關資料處理和如何選擇退出日誌記錄的詳細資訊,請參閱[資料和隱私](/zh-TW/data-usage)。

433 495 


437* 使用手動批准模式而不是自動接受進行編輯499* 使用手動批准模式而不是自動接受進行編輯

438* 在接受變更前仔細審查它們500* 在接受變更前仔細審查它們

439 501 

440### 內建 IDE MCP server502<h3 id="the-built-in-ide-mcp-server">

503 內建 IDE MCP server

504</h3>

441 505 

442當擴充功能處於活動狀態時,它會執行一個本機 MCP server,CLI 會自動連接到該伺服器。這是 CLI 在 VS Code 的原生差異檢視器中開啟差異、讀取您目前的選擇以進行 `@`-提及,以及 — 當您在 Jupyter notebook 中工作時 — 要求 VS Code 執行儲存格的方式。506當擴充功能處於活動狀態時,它會執行一個本機 MCP server,CLI 會自動連接到該伺服器。這是 CLI 在 VS Code 的原生差異檢視器中開啟差異、讀取您目前的選擇以進行 `@`-提及,以及 — 當您在 Jupyter notebook 中工作時 — 要求 VS Code 執行儲存格的方式。

443 507 

444伺服器名為 `ide`,從 `/mcp` 隱藏,因為沒有什麼可配置的。但是,如果您的組織使用 `PreToolUse` hook 來允許列出 MCP 工具,您需要知道它存在。508伺服器名為 `ide`,從 `/mcp` 隱藏,因為沒有什麼可配置的。但是,如果您的組織使用 `PreToolUse` hook 來允許列出 MCP 工具,您需要知道它存在。

445 509 

510**選擇和開啟檔案的內容。** 連接時,CLI 會在您傳送的每個提示上包含您目前的編輯器選擇和活動檔案的路徑作為內容。當發生這種情況時,文字記錄會顯示 `⧉ Selected N lines from <file>` 行。若要排除敏感檔案(如 `.env`),請為其路徑新增 [`Read` 拒絕規則](/zh-TW/permissions#read-and-edit)。匹配的拒絕規則會防止該檔案的選定文字和開啟檔案通知到達 Claude。

511 

446**傳輸和身份驗證。** 伺服器綁定到 `127.0.0.1` 上的隨機高埠,無法從其他機器訪問。每次擴充功能啟動都會生成一個新的隨機身份驗證令牌,CLI 必須提供該令牌才能連接。令牌會寫入 `~/.claude/ide/` 下的鎖定檔案,權限為 `0600`,在 `0700` 目錄中,因此只有執行 VS Code 的使用者可以讀取它。512**傳輸和身份驗證。** 伺服器綁定到 `127.0.0.1` 上的隨機高埠,無法從其他機器訪問。每次擴充功能啟動都會生成一個新的隨機身份驗證令牌,CLI 必須提供該令牌才能連接。令牌會寫入 `~/.claude/ide/` 下的鎖定檔案,權限為 `0600`,在 `0700` 目錄中,因此只有執行 VS Code 的使用者可以讀取它。

447 513 

448**向模型公開的工具。** 伺服器託管十幾個工具,但只有兩個對模型可見。其餘的是 CLI 用於自己的 UI 的內部 RPC — 開啟差異、讀取選擇、儲存檔案 — 在工具清單到達 Claude 之前被篩選出來。514**向模型公開的工具。** 伺服器託管十幾個工具,但只有兩個對模型可見。其餘的是 CLI 用於自己的 UI 的內部 RPC — 開啟差異、讀取選擇、儲存檔案 — 在工具清單到達 Claude 之前被篩選出來。


460 526 

461<a id="troubleshooting" />527<a id="troubleshooting" />

462 528 

463## 修復常見問題529<h2 id="fix-common-issues">

530 修復常見問題

531</h2>

464 532 

465### 擴充功能無法安裝533<h3 id="extension-won-t-install">

534 擴充功能無法安裝

535</h3>

466 536 

467* 確保您有相容的 VS Code 版本(1.98.0 或更高版本)537* 確保您有相容的 VS Code 版本(1.98.0 或更高版本)

468* 檢查 VS Code 是否有權限安裝擴充功能538* 檢查 VS Code 是否有權限安裝擴充功能

469* 嘗試從 [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code) 直接安裝539* 嘗試從 [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code) 直接安裝

470 540 

471### Spark 圖示不可見541<h3 id="spark-icon-not-visible">

542 Spark 圖示不可見

543</h3>

472 544 

473當您開啟檔案時,Spark 圖示會出現在**編輯器工具列**(編輯器右上角)中。如果您看不到它:545當您開啟檔案時,Spark 圖示會出現在**編輯器工具列**(編輯器右上角)中。如果您看不到它:

474 546 


480 552 

481或者,點擊**狀態列**(右下角)中的「✱ Claude Code」。即使沒有開啟檔案,這也有效。您也可以使用**命令面板**(`Cmd+Shift+P` / `Ctrl+Shift+P`)並輸入「Claude Code」。553或者,點擊**狀態列**(右下角)中的「✱ Claude Code」。即使沒有開啟檔案,這也有效。您也可以使用**命令面板**(`Cmd+Shift+P` / `Ctrl+Shift+P`)並輸入「Claude Code」。

482 554 

483### macOS 上的 Cmd+Esc 無法執行任何操作555<h3 id="cmd-esc-does-nothing-on-macos">

556 macOS 上的 Cmd+Esc 無法執行任何操作

557</h3>

484 558 

485在 macOS Tahoe 及更新版本上,系統遊戲覆蓋快捷鍵預設綁定到 `Cmd+Esc`,並在按鍵到達 VS Code 之前攔截它。若要釋放快捷鍵:559在 macOS Tahoe 及更新版本上,系統遊戲覆蓋快捷鍵預設綁定到 `Cmd+Esc`,並在按鍵到達 VS Code 之前攔截它。若要釋放快捷鍵:

486 560 


490 564 

491或者,將擴充功能重新綁定到不同的鍵:開啟 VS Code [鍵盤快捷鍵編輯器](https://code.visualstudio.com/docs/configure/keybindings)(`Cmd+K Cmd+S`),搜尋 `Claude Code: Focus input`,並指派新的綁定。565或者,將擴充功能重新綁定到不同的鍵:開啟 VS Code [鍵盤快捷鍵編輯器](https://code.visualstudio.com/docs/configure/keybindings)(`Cmd+K Cmd+S`),搜尋 `Claude Code: Focus input`,並指派新的綁定。

492 566 

493### Claude Code 從不回應567<h3 id="claude-code-never-responds">

568 Claude Code 從不回應

569</h3>

494 570 

495如果 Claude Code 沒有回應您的提示:571如果 Claude Code 沒有回應您的提示:

496 572 


500 576 

501如果問題持續,請[在 GitHub 上提交問題](https://github.com/anthropics/claude-code/issues),並提供有關錯誤的詳細資訊。577如果問題持續,請[在 GitHub 上提交問題](https://github.com/anthropics/claude-code/issues),並提供有關錯誤的詳細資訊。

502 578 

503## 卸載擴充功能579<h2 id="uninstall-the-extension">

580 卸載擴充功能

581</h2>

504 582 

505若要卸載 Claude Code 擴充功能:583若要卸載 Claude Code 擴充功能:

506 584 


516 594 

517如需其他幫助,請參閱[故障排除指南](/zh-TW/troubleshooting)。595如需其他幫助,請參閱[故障排除指南](/zh-TW/troubleshooting)。

518 596 

519## 後續步驟597<h2 id="next-steps">

598 後續步驟

599</h2>

520 600 

521現在您已在 VS Code 中設定了 Claude Code:601現在您已在 VS Code 中設定了 Claude Code:

522 602 

web-quickstart.md +61 −17

Details

23 23 

24對於需要您本地配置、工具或環境的工作,在本地執行 Claude Code 或使用 [Remote Control](/zh-TW/remote-control) 更合適。24對於需要您本地配置、工具或環境的工作,在本地執行 Claude Code 或使用 [Remote Control](/zh-TW/remote-control) 更合適。

25 25 

26## 會話如何執行26<h2 id="how-sessions-run">

27 會話如何執行

28</h2>

27 29 

28當您提交任務時:30當您提交任務時:

29 31 


34 36 

35推送分支時會話不會關閉。PR 建立和進一步編輯都在同一對話中進行。37推送分支時會話不會關閉。PR 建立和進一步編輯都在同一對話中進行。

36 38 

37## 比較執行 Claude Code 的方式39<h2 id="compare-ways-to-run-claude-code">

40 比較執行 Claude Code 的方式

41</h2>

38 42 

39Claude Code 在任何地方的行為都相同。改變的是代碼執行的位置以及您的本地配置是否可用。Desktop 應用程式提供本地和雲端會話,因此其下面的答案取決於您選擇的是哪一個:43Claude Code 在任何地方的行為都相同。改變的是代碼執行的位置以及您的本地配置是否可用。Desktop 應用程式提供本地和雲端會話,因此其下面的答案取決於您選擇的是哪一個:

40 44 


50 54 

51請參閱 [terminal quickstart](/zh-TW/quickstart)、[Desktop 應用程式](/zh-TW/desktop) 或 [Remote Control](/zh-TW/remote-control) 文件以設定這些。55請參閱 [terminal quickstart](/zh-TW/quickstart)、[Desktop 應用程式](/zh-TW/desktop) 或 [Remote Control](/zh-TW/remote-control) 文件以設定這些。

52 56 

53## 連接 GitHub 並建立環境57<h2 id="connect-github-and-create-an-environment">

58 連接 GitHub 並建立環境

59</h2>

54 60 

55設定是一次性過程。如果您已經使用 GitHub CLI,您可以[從您的終端執行此操作](#connect-from-your-terminal),而不是使用瀏覽器。61設定是一次性過程。如果您已經使用 GitHub CLI,您可以[從您的終端執行此操作](#connect-from-your-terminal),而不是使用瀏覽器。

56 62 


77 </Step>83 </Step>

78</Steps>84</Steps>

79 85 

80### 從您的終端連接86<h3 id="connect-from-your-terminal">

87 從您的終端連接

88</h3>

81 89 

82如果您已經使用 GitHub CLI (`gh`),您可以在不打開瀏覽器的情況下設定 Claude Code on the web。這需要 [Claude Code CLI](/zh-TW/quickstart)。`/web-setup` 讀取您的本地 `gh` 令牌,將其連結到您的 Claude 帳戶,並在您沒有雲端環境時建立預設雲端環境。90如果您已經使用 GitHub CLI (`gh`),您可以在不打開瀏覽器的情況下設定 Claude Code on the web。這需要 [Claude Code CLI](/zh-TW/quickstart)。`/web-setup` 讀取您的本地 `gh` 令牌,將其連結到您的 Claude 帳戶,並在您沒有雲端環境時建立預設雲端環境。

83 91 


109 </Step>117 </Step>

110</Steps>118</Steps>

111 119 

112## 啟動任務120<h2 id="start-a-task">

121 啟動任務

122</h2>

113 123 

114連接 GitHub 並建立環境後,您就可以提交任務了。124連接 GitHub 並建立環境後,您就可以提交任務了。

115 125 


133 </Step>143 </Step>

134</Steps>144</Steps>

135 145 

136## 預填充會話146<h2 id="pre-fill-sessions">

147 預填充會話

148</h2>

137 149 

138您可以透過將查詢參數新增到 [claude.ai/code](https://claude.ai/code) URL 來預填充新會話的提示、儲存庫和環境。使用此功能來建立整合,例如問題追蹤器中的按鈕,該按鈕使用問題描述作為提示打開 Claude Code。150您可以透過將查詢參數新增到 [claude.ai/code](https://claude.ai/code) URL 來預填充新會話的提示、儲存庫和環境。使用此功能來建立整合,例如問題追蹤器中的按鈕,該按鈕使用問題描述作為提示打開 Claude Code。

139 151 


150https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp162https://claude.ai/code?prompt=Fix%20the%20login%20bug&repositories=acme/webapp

151```163```

152 164 

153## 檢查和迭代165<h2 id="review-and-iterate">

166 檢查和迭代

167</h2>

154 168 

155當 Claude 完成時,檢查更改、在特定行上留下反饋,並繼續進行直到差異看起來正確。169當 Claude 完成時,檢查更改、在特定行上留下反饋,並繼續進行直到差異看起來正確。

156 170 


172 </Step>186 </Step>

173</Steps>187</Steps>

174 188 

175## 設定故障排除189<h2 id="troubleshoot-setup">

190 設定故障排除

191</h2>

176 192 

177### 連接 GitHub 後沒有儲存庫出現193<h3 id="no-repositories-appear-after-connecting-github">

194 連接 GitHub 後沒有儲存庫出現

195</h3>

178 196 

179Claude GitHub App 需要對您想要使用的每個儲存庫的明確存取權限。在 github.com 上,打開**設定 → 應用程式 → Claude → 配置**並驗證您的儲存庫是否列在**儲存庫存取**下。私有儲存庫需要與公開儲存庫相同的授權。197雲端會話可以使用連接的 GitHub 帳戶可以看到的任何儲存庫,無論 Claude GitHub App 安裝在哪些儲存庫上如果儲存庫遺失,請驗證連接的 GitHub 帳戶在 GitHub 上是否有權存取它。如果您還想要儲存庫的[自動修復](/zh-TW/claude-code-on-the-web#auto-fix-pull-requests),請在其上安裝應用程式:在 github.com 上,打開**設定 → 應用程式 → Claude → 配置**並驗證儲存庫是否列在**儲存庫存取**下。私有儲存庫需要與公開儲存庫相同的授權。

180 198 

181### 頁面只顯示 GitHub 登入按鈕199<h3 id="the-page-only-shows-a-github-login-button">

200 頁面只顯示 GitHub 登入按鈕

201</h3>

182 202 

183雲端會話需要連接的 GitHub 帳戶。透過上面的瀏覽器流程連接,或者如果您使用 GitHub CLI,從您的終端執行 `/web-setup`。如果您根本不想連接 GitHub,請參閱 [Remote Control](/zh-TW/remote-control) 以在您自己的機器上執行 Claude Code 並從網頁監控它。203雲端會話需要連接的 GitHub 帳戶。透過上面的瀏覽器流程連接,或者如果您使用 GitHub CLI,從您的終端執行 `/web-setup`。如果您根本不想連接 GitHub,請參閱 [Remote Control](/zh-TW/remote-control) 以在您自己的機器上執行 Claude Code 並從網頁監控它。

184 204 

185### "不適用於選定的組織"205<h3 id="not-available-for-the-selected-organization">

206 "不適用於選定的組織"

207</h3>

186 208 

187企業組織可能需要管理員啟用 Claude Code on the web。聯繫您的 Anthropic 帳戶團隊。209企業組織可能需要管理員啟用 Claude Code on the web。聯繫您的 Anthropic 帳戶團隊。

188 210 

189### `/web-setup` 返回 "Unknown command"211<h3 id="/web-setup-returns-unknown-command">

212 `/web-setup` 返回 "Unknown command"

213</h3>

190 214 

191`/web-setup` 在 Claude Code CLI 內執行,而不是在您的 shell 中。首先啟動 `claude`,然後在提示符處輸入 `/web-setup`。215`/web-setup` 在 Claude Code CLI 內執行,而不是在您的 shell 中。首先啟動 `claude`,然後在提示符處輸入 `/web-setup`。

192 216 

193如果您在 Claude Code 內輸入它並仍然看到錯誤,您的 CLI 版本早於 v2.1.80,或者您使用 API 金鑰或第三方提供商而不是 claude.ai 訂閱進行驗證。執行 `claude update`,然後執行 `/login` 以使用您的 claude.ai 帳戶登入。217如果您在 Claude Code 內輸入它並仍然看到錯誤,您的 CLI 版本早於 v2.1.80,或者您使用 API 金鑰或第三方提供商而不是 claude.ai 訂閱進行驗證。執行 `claude update`,然後執行 `/login` 以使用您的 claude.ai 帳戶登入。

194 218 

195### 使用 `--remote` 或 ultraplan 時出現 "Could not create a cloud environment" 或 "No cloud environment available"219<h3 id="could-not-create-a-cloud-environment-or-no-cloud-environment-available-when-using-remote-or-ultraplan">

220 使用 `--remote` 或 ultraplan 時出現 "Could not create a cloud environment" 或 "No cloud environment available"

221</h3>

196 222 

197遠端會話功能會在您沒有雲端環境時自動建立預設雲端環境。如果您看到 "Could not create a cloud environment",自動建立失敗。{/* max-version: 2.1.100 */}如果您看到 "No cloud environment available",您的 CLI 早於自動建立。在任何一種情況下,在 Claude Code CLI 中執行 `/web-setup` 以手動建立一個,或訪問 [claude.ai/code](https://claude.ai/code) 並按照上面的**建立您的環境**步驟進行。223遠端會話功能會在您沒有雲端環境時自動建立預設雲端環境。如果您看到 "Could not create a cloud environment",自動建立失敗。{/* max-version: 2.1.100 */}如果您看到 "No cloud environment available",您的 CLI 早於自動建立。在任何一種情況下,在 Claude Code CLI 中執行 `/web-setup` 以手動建立一個,或訪問 [claude.ai/code](https://claude.ai/code) 並按照上面的**建立您的環境**步驟進行。

198 224 

199### 設定指令碼失敗225<h3 id="setup-script-failed">

226 設定指令碼失敗

227</h3>

200 228 

201設定指令碼以非零狀態退出,這會阻止會話啟動。常見原因:229設定指令碼以非零狀態退出,這會阻止會話啟動。常見原因:

202 230 


206 234 

207要除錯,在指令碼頂部新增 `set -x` 以查看哪個命令失敗。對於非關鍵命令,附加 `|| true` 以便它們不會阻止會話啟動。235要除錯,在指令碼頂部新增 `set -x` 以查看哪個命令失敗。對於非關鍵命令,附加 `|| true` 以便它們不會阻止會話啟動。

208 236 

209### 會話在關閉標籤後保持執行237<h3 id="new-sessions-hang-or-time-out-during-setup">

238 新會話在設定期間掛起或逾時

239</h3>

240 

241如果新會話在設定指令碼步驟上停滯或在指令碼完成前因通用容器錯誤而失敗,指令碼可能超過了大約五分鐘的時間預算來建立[環境快取](/zh-TW/claude-code-on-the-web#environment-caching)。繁重的步驟,例如拉取大型 Docker 映像、同步完整依賴樹或下載模型權重,通常會將總數推過限制,特別是當它們一個接一個執行時。

242 

243要修復此問題,修剪指令碼以便它可靠地在五分鐘內完成:

244 

245* 使用 `&` 和最終 `wait` 並行執行獨立安裝,而不是按順序執行。

246* 將最大的下載移出設定指令碼,進入[SessionStart hook](/zh-TW/claude-code-on-the-web#setup-scripts-vs-sessionstart-hooks),在背景中啟動它們,以便會話在它們完成時變得可用。

247* 從設定指令碼中移除長重試睡眠,因為停滯的重試迴圈會計入預算。

248 

249<h3 id="session-keeps-running-after-closing-the-tab">

250 會話在關閉標籤後保持執行

251</h3>

210 252 

211這是設計使然。關閉標籤或導航離開不會停止會話。它在背景中繼續執行,直到 Claude 完成當前任務,然後閒置。從側邊欄,您可以[存檔會話](/zh-TW/claude-code-on-the-web#archive-sessions)以將其從列表中隱藏,或[刪除它](/zh-TW/claude-code-on-the-web#delete-sessions)以永久移除它。253這是設計使然。關閉標籤或導航離開不會停止會話。它在背景中繼續執行,直到 Claude 完成當前任務,然後閒置。從側邊欄,您可以[存檔會話](/zh-TW/claude-code-on-the-web#archive-sessions)以將其從列表中隱藏,或[刪除它](/zh-TW/claude-code-on-the-web#delete-sessions)以永久移除它。

212 254 

213## 後續步驟255<h2 id="next-steps">

256 後續步驟

257</h2>

214 258 

215現在您可以提交和檢查任務,這些頁面涵蓋接下來的內容:從您的終端啟動雲端會話、安排定期工作以及為 Claude 提供常設指令。259現在您可以提交和檢查任務,這些頁面涵蓋接下來的內容:從您的終端啟動雲端會話、安排定期工作以及為 Claude 提供常設指令。

216 260 

whats-new.md +24 −0

Details

8 8 

9每週開發摘要重點介紹最有可能改變您工作方式的功能。每個條目都包含可執行的程式碼、簡短的示範和完整文件的連結。如需每個錯誤修復和次要改進,請參閱 [changelog](/zh-TW/changelog)。9每週開發摘要重點介紹最有可能改變您工作方式的功能。每個條目都包含可執行的程式碼、簡短的示範和完整文件的連結。如需每個錯誤修復和次要改進,請參閱 [changelog](/zh-TW/changelog)。

10 10 

11<Update label="Week 22" description="May 25–29, 2026" tags={["v2.1.150–v2.1.157"]}>

12 **Claude Opus 4.8**:Max、Team Premium、Enterprise 隨用隨付和 Anthropic API 帳戶的新預設模型,預設具有高努力等級,以及用於最困難任務的 `/effort xhigh`。

13 

14 本週還有:**dynamic workflows** 從 Claude 編寫的指令碼協調數十到數百個子代理;**security-guidance plugin** 在 Claude 工作時檢查其變更是否存在漏洞;以及 **fast mode** 在 Opus 4.8 上以 $10/$50 per MTok 執行。

15 

16 [閱讀 Week 22 摘要 →](/zh-TW/whats-new/2026-w22)

17</Update>

18 

19<Update label="Week 21" description="May 18–22, 2026" tags={["v2.1.143–v2.1.149"]}>

20 **Pro 計畫上的 Auto mode**:auto mode 現在在 Pro 帳戶上執行,並支援 Sonnet 4.6 與 Opus,用背景安全檢查取代權限提示。

21 

22 本週還有:**`/usage`** 按 skill、subagent、plugin 和 MCP server 細分驅動您計畫限制的因素;新的 **`/code-review`** 命令報告正確性錯誤;以及 **background sessions** 出現在 `/resume` 中,並在釘選時保持活躍。

23 

24 [閱讀 Week 21 摘要 →](/zh-TW/whats-new/2026-w21)

25</Update>

26 

27<Update label="Week 20" description="May 11–15, 2026" tags={["v2.1.139–v2.1.142"]}>

28 **Agent view**:`claude agents` 為每個 Claude Code 工作階段開啟一個畫面,顯示正在執行的內容、被您阻止的內容以及已完成的內容。

29 

30 本週還有:**`/goal`** 讓 Claude 在多個回合中持續工作,直到完成條件成立;**fast mode** 現在預設在 Opus 4.7 上執行;以及 **Rewind menu** 可以使用「Summarize up to here」壓縮較早的背景。

31 

32 [閱讀 Week 20 摘要 →](/zh-TW/whats-new/2026-w20)

33</Update>

34 

11<Update label="Week 19" description="May 4–8, 2026" tags={["v2.1.128–v2.1.136"]}>35<Update label="Week 19" description="May 4–8, 2026" tags={["v2.1.128–v2.1.136"]}>

12 **Plugins 從 `.zip` 檔案和 URL 載入**:`--plugin-dir` 現在接受 `.zip` 檔案,而 `--plugin-url` 會為目前的工作階段擷取外掛程式封存。36 **Plugins 從 `.zip` 檔案和 URL 載入**:`--plugin-dir` 現在接受 `.zip` 檔案,而 `--plugin-url` 會為目前的工作階段擷取外掛程式封存。

13 37 

whats-new/2026-w13.md +164 −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# 第 13 週 · 2026 年 3 月 23–27 日

6 

7> 自動模式用於免提權限、內建電腦使用、雲端 PR 自動修復、文字稿搜尋,以及適用於 Windows 的 PowerShell 工具。

8 

9<div className="digest-meta">

10 <span>發佈版本 <a href="/zh-TW/docs/changelog#2-1-83">v2.1.83 → v2.1.85</a></span>

11 <span>6 項功能 · 3 月 23–27 日</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">自動模式</span>

17 <span className="digest-feature-pill">研究預覽</span>

18 </div>

19 

20 <p className="digest-feature-lede">自動模式將您的權限提示交給分類器。安全的編輯和命令無需中斷您即可執行;任何破壞性或可疑的操作都會被阻止並顯示。這是批准每個檔案寫入和使用 <code>--dangerously-skip-permissions</code> 執行之間的折衷方案。</p>

21 

22 <Frame>

23 <img src="https://mintcdn.com/claude-code/CfffsX01JHFnIKvD/images/whats-new/auto-mode.png?fit=max&auto=format&n=CfffsX01JHFnIKvD&q=85&s=367c9e9d4ba5bc57ec4b935154bf1fbb" alt="Claude Code 提示頁尾顯示黃色的'自動模式開啟 (Shift+Tab 切換)'指示器" width="2400" height="691" data-path="images/whats-new/auto-mode.png" />

24 </Frame>

25 

26 <p className="digest-feature-try">使用 Shift+Tab 切換到自動模式,或將其設定為預設值:</p>

27 

28 ```json ~/.claude/settings.json {3} theme={null}

29 {

30 "permissions": {

31 "defaultMode": "auto"

32 }

33 }

34 ```

35 

36 <a className="digest-feature-link" href="/zh-TW/docs/permission-modes">權限模式指南</a>

37</div>

38 

39<div className="digest-feature">

40 <div className="digest-feature-header">

41 <span className="digest-feature-title">電腦使用</span>

42 <span className="digest-feature-pill">Desktop</span>

43 </div>

44 

45 <p className="digest-feature-lede">Claude 現在可以從 Claude Code Desktop 應用程式控制您的實際桌面:開啟原生應用程式、點擊 iOS 模擬器、驅動硬體控制面板,以及驗證螢幕上的變更。預設為關閉,並在每個操作前詢問。最適合用於其他方法無法達到的事項:沒有 API 的應用程式、專有工具、任何只以 GUI 形式存在的東西。</p>

46 

47 <Frame>

48 <img src="https://mintcdn.com/claude-code/CfffsX01JHFnIKvD/images/whats-new/computer-use.png?fit=max&auto=format&n=CfffsX01JHFnIKvD&q=85&s=d631de2017edafff463505f8ddbc0f51" alt="Claude Desktop 設定,已啟用'電腦使用'切換,顯示允許 Claude 在您允許的應用程式中進行螢幕截圖並控制鍵盤和滑鼠的選項" width="2376" height="1210" data-path="images/whats-new/computer-use.png" />

49 </Frame>

50 

51 <p className="digest-feature-try">在設定中啟用它,授予作業系統權限,然後要求 Claude 端對端驗證變更:</p>

52 

53 ```text Claude Code theme={null}

54 > Open the iOS simulator, tap through the onboarding flow, and screenshot each step

55 ```

56 

57 <a className="digest-feature-link" href="/zh-TW/docs/desktop#let-claude-use-your-computer">電腦使用指南</a>

58</div>

59 

60<div className="digest-feature">

61 <div className="digest-feature-header">

62 <span className="digest-feature-title">PR 自動修復</span>

63 <span className="digest-feature-pill">Web</span>

64 </div>

65 

66 <p className="digest-feature-lede">開啟 PR 時翻轉開關並離開。Claude 監視 CI、修復失敗、處理細節,並推送直到變綠。不再需要透過六輪 lint 錯誤來監督 PR。</p>

67 

68 <Frame>

69 <img src="https://mintcdn.com/claude-code/CfffsX01JHFnIKvD/images/whats-new/auto-fix.png?fit=max&auto=format&n=CfffsX01JHFnIKvD&q=85&s=c62b181c6c5d96929f0b43525f9f3584" alt="Claude Code 網頁 CI 面板顯示已啟用'自動修復'切換,描述為'主動修復 CI 失敗和審查評論'" width="960" height="444" data-path="images/whats-new/auto-fix.png" />

70 </Frame>

71 

72 <p className="digest-feature-try">在 Claude Code 網頁上建立 PR 後,在 CI 面板中切換「自動修復」。</p>

73 

74 <a className="digest-feature-link" href="/zh-TW/docs/claude-code-on-the-web#auto-fix-pull-requests">自動修復提取請求</a>

75</div>

76 

77<div className="digest-feature">

78 <div className="digest-feature-header">

79 <span className="digest-feature-title">文字稿搜尋</span>

80 <span className="digest-feature-pill">v2.1.83</span>

81 </div>

82 

83 <p className="digest-feature-lede">在文字稿模式中按 <code>/</code> 搜尋您的對話。<code>n</code> 和 <code>N</code> 逐步瀏覽符合項目。最後有辦法找到 Claude 在 400 條訊息前執行的那個 Bash 命令。</p>

84 

85 <p className="digest-feature-try">開啟文字稿模式並搜尋:</p>

86 

87 ```text Claude Code theme={null}

88 Ctrl+O # open transcript

89 /migrate # search for "migrate"

90 n # next match

91 N # previous match

92 ```

93 

94 <a className="digest-feature-link" href="/zh-TW/docs/fullscreen#search-and-review-the-conversation">全螢幕指南</a>

95</div>

96 

97<div className="digest-feature">

98 <div className="digest-feature-header">

99 <span className="digest-feature-title">PowerShell 工具</span>

100 <span className="digest-feature-pill">preview</span>

101 <span className="digest-feature-pill">v2.1.84</span>

102 </div>

103 

104 <p className="digest-feature-lede">Windows 獲得了與 Bash 並行的原生 PowerShell 工具。Claude 可以執行 cmdlet、管道物件,以及使用 Windows 原生路徑,無需透過 Git Bash 翻譯所有內容。</p>

105 

106 <p className="digest-feature-try">從設定中選擇加入:</p>

107 

108 ```json .claude/settings.json {3} theme={null}

109 {

110 "env": {

111 "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"

112 }

113 }

114 ```

115 

116 <a className="digest-feature-link" href="/zh-TW/docs/tools-reference#powershell-tool">PowerShell 工具文件</a>

117</div>

118 

119<div className="digest-feature">

120 <div className="digest-feature-header">

121 <span className="digest-feature-title">條件式 hooks</span>

122 <span className="digest-feature-pill">v2.1.85</span>

123 </div>

124 

125 <p className="digest-feature-lede">Hooks 現在可以使用權限規則語法宣告 <code>if</code> 欄位。您的 pre-commit 檢查只會針對 <code>Bash(git commit \*)</code> 生成,而不是每個 bash 呼叫,減少繁忙工作階段中的程序開銷。</p>

126 

127 <p className="digest-feature-try">將 hook 限制為僅 git 提交:</p>

128 

129 ```json .claude/settings.json {5} theme={null}

130 {

131 "hooks": {

132 "PreToolUse": [{

133 "hooks": [{

134 "if": "Bash(git commit *)",

135 "type": "command",

136 "command": ".claude/hooks/lint-staged.sh"

137 }]

138 }]

139 }

140 }

141 ```

142 

143 <a className="digest-feature-link" href="/zh-TW/docs/hooks">Hooks 參考</a>

144</div>

145 

146<div className="digest-wins">

147 <p className="digest-wins-title">其他成果</p>

148 

149 <div className="digest-wins-grid">

150 <div>Plugin <code>userConfig</code> 現已公開:在啟用時提示設定、鑰匙圈支援的祕密</div>

151 <div>貼上的影像插入 <code>\[Image #N]</code> 晶片,您可以按位置參考</div>

152 <div><code>managed-settings.d/</code> 分層原則片段的放置目錄</div>

153 <div><code>CwdChanged</code> 和 <code>FileChanged</code> hook 事件用於 direnv 風格的設定</div>

154 <div>代理程式可以在 frontmatter 中宣告 <code>initialPrompt</code> 以自動提交第一個回合</div>

155 <div><code>Ctrl+X Ctrl+E</code> 開啟您的外部編輯器,符合 readline</div>

156 <div>在任何回應前中斷會自動恢復您的輸入</div>

157 <div><code>/status</code> 現在在 Claude 回應時也能運作</div>

158 <div>深層連結在您偏好的終端中開啟,而不是首次偵測到的</div>

159 <div>閒置返回提示在離開 75 分鐘以上後執行 <code>/clear</code></div>

160 <div>VS Code:速率限制橫幅、Esc 兩次倒帶選擇器</div>

161 </div>

162</div>

163 

164[v2.1.83–v2.1.85 的完整變更日誌 →](/zh-TW/changelog#2-1-83)

whats-new/2026-w14.md +138 −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# 第 14 週 · 3 月 30 日 – 4 月 3 日,2026 年

6 

7> CLI 中的電腦使用、互動式產品內課程、無閃爍渲染、按工具 MCP 結果大小覆蓋,以及 PATH 上的外掛程式可執行檔。

8 

9<div className="digest-meta">

10 <span>版本 <a href="/docs/zh-TW/changelog#2-1-86">v2.1.86 → v2.1.91</a></span>

11 <span>5 項功能 · 3 月 30 日 – 4 月 3 日</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">CLI 中的電腦使用</span>

17 <span className="digest-feature-pill">研究預覽</span>

18 </div>

19 

20 <p className="digest-feature-lede">上週電腦使用功能登陸了桌面應用程式。本週它進入了 CLI:Claude 可以打開原生應用程式、點擊 UI、測試自己的更改,以及修復損壞的內容,全部都在您的終端中進行。Web 應用程式已經有驗證迴圈;原生 iOS、macOS 和其他僅限 GUI 的應用程式沒有。現在有了。最適合用於關閉沒有 API 可調用的應用程式和工具的迴圈。仍處於早期階段;預期會有粗糙的邊緣。</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/CfffsX01JHFnIKvD/images/whats-new/cli-computer-use.mp4?fit=max&auto=format&n=CfffsX01JHFnIKvD&q=85&s=c17a337902308d7c9121013ded0494db" data-path="images/whats-new/cli-computer-use.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">運行 <code>/mcp</code>,找到 <code>computer-use</code>,然後將其打開。然後要求 Claude 端到端驗證更改:</p>

27 

28 ```text Claude Code theme={null}

29 > Open the iOS simulator, tap through onboarding, and screenshot each step

30 ```

31 

32 <a className="digest-feature-link" href="/docs/zh-TW/computer-use">電腦使用指南</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">/powerup</span>

38 <span className="digest-feature-pill">v2.1.90</span>

39 </div>

40 

41 <p className="digest-feature-lede">互動式課程,通過動畫演示教授 Claude Code 功能,直接在您的終端內進行。Claude Code 發佈頻繁,上個月會改變您工作方式的功能可能會被忽視。運行一次 <code>/powerup</code>,您就會知道有什麼功能。</p>

42 

43 <Frame>

44 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/CfffsX01JHFnIKvD/images/whats-new/powerup.mp4?fit=max&auto=format&n=CfffsX01JHFnIKvD&q=85&s=fb88beddc0ecc8029da5ab029e4b28f1" data-path="images/whats-new/powerup.mp4" />

45 </Frame>

46 

47 <p className="digest-feature-try">運行它:</p>

48 

49 ```text Claude Code theme={null}

50 > /powerup

51 ```

52 

53 <a className="digest-feature-link" href="/docs/zh-TW/commands">命令參考</a>

54</div>

55 

56<div className="digest-feature">

57 <div className="digest-feature-header">

58 <span className="digest-feature-title">無閃爍渲染</span>

59 <span className="digest-feature-pill">v2.1.89</span>

60 </div>

61 

62 <p className="digest-feature-lede">選擇加入具有虛擬化回滾的新替代屏幕渲染器。提示輸入保持固定在底部,滑鼠選擇可跨長對話進行,重繪時的閃爍消失了。取消設置 <code>CLAUDE\_CODE\_NO\_FLICKER</code> 以回滾。</p>

63 

64 <Frame>

65 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/CfffsX01JHFnIKvD/images/whats-new/flicker-free.mp4?fit=max&auto=format&n=CfffsX01JHFnIKvD&q=85&s=7719e35e52a3f9734b0cf69edac333ad" data-path="images/whats-new/flicker-free.mp4" />

66 </Frame>

67 

68 <p className="digest-feature-try">設置環境變數並重新啟動 Claude Code:</p>

69 

70 ```bash theme={null}

71 export CLAUDE_CODE_NO_FLICKER=1

72 claude

73 ```

74 

75 <a className="digest-feature-link" href="/docs/zh-TW/fullscreen">全屏渲染</a>

76</div>

77 

78<div className="digest-feature">

79 <div className="digest-feature-header">

80 <span className="digest-feature-title">MCP 結果大小覆蓋</span>

81 <span className="digest-feature-pill">v2.1.91</span>

82 </div>

83 

84 <p className="digest-feature-lede">MCP 伺服器作者現在可以通過在工具的 <code>tools/list</code> 條目中設置 <code>anthropic/maxResultSizeChars</code> 來提高特定工具的截斷上限,最高可達 500K 字符的硬上限。上限曾經是全局的,因此偶爾返回固有大型有效負載(如資料庫架構或完整文件樹)的工具會達到默認限制,並使用文件參考持久化到磁盤。按工具覆蓋在工具真正需要時將這些結果保持內聯。</p>

85 

86 <p className="digest-feature-try">在您的伺服器的 <code>tools/list</code> 響應中註釋工具:</p>

87 

88 ```json highlight={5} theme={null}

89 {

90 "name": "get_schema",

91 "description": "Returns the full database schema",

92 "_meta": {

93 "anthropic/maxResultSizeChars": 500000

94 }

95 }

96 ```

97 

98 <a className="digest-feature-link" href="/docs/zh-TW/mcp#raise-the-limit-for-a-specific-tool">MCP 參考</a>

99</div>

100 

101<div className="digest-feature">

102 <div className="digest-feature-header">

103 <span className="digest-feature-title">PATH 上的外掛程式可執行檔</span>

104 <span className="digest-feature-pill">v2.1.91</span>

105 </div>

106 

107 <p className="digest-feature-lede">在外掛程式根目錄的 <code>bin/</code> 目錄中放置可執行檔,Claude Code 會在外掛程式啟用時將該目錄添加到 Bash 工具的 <code>PATH</code>。Claude 然後可以從任何 Bash 工具調用中將二進制檔案作為裸命令調用,無需絕對路徑或包裝器指令碼。便於將 CLI 幫助程式與調用它們的命令、代理和鉤子一起打包。</p>

108 

109 <p className="digest-feature-try">在外掛程式根目錄添加 <code>bin/</code> 目錄:</p>

110 

111 ```text highlight={4, 5} theme={null}

112 my-plugin/

113 ├── .claude-plugin/

114 │ └── plugin.json

115 └── bin/

116 └── my-tool

117 ```

118 

119 <a className="digest-feature-link" href="/docs/zh-TW/plugins-reference#file-locations-reference">外掛程式參考</a>

120</div>

121 

122<div className="digest-wins">

123 <p className="digest-wins-title">其他成就</p>

124 

125 <div className="digest-wins-grid">

126 <div>自動模式後續:新的 <code>PermissionDenied</code> 鉤子在分類器拒絕時觸發(返回 <code>retry: true</code> 讓 Claude 嘗試不同的方法),<code>/permissions</code> → 最近讓您使用 <code>r</code> 手動重試</div>

127 <div><code>PreToolUse</code> 鉤子中 <code>permissionDecision</code> 的新 <code>defer</code> 值:<code>-p</code> 會話在工具調用處暫停並以 <code>deferred\_tool\_use</code> 有效負載退出,以便 SDK 應用程式或自訂 UI 可以呈現它,然後使用 <code>--resume</code> 恢復</div>

128 <div><code>/buddy</code>:孵化一個小生物來觀看您編碼(4 月 1 日)</div>

129 <div><code>disableSkillShellExecution</code> 設置阻止來自技能、斜杠命令和外掛程式命令的內聯 shell</div>

130 <div>編輯工具現在可以在通過 <code>cat</code> 或 <code>sed -n</code> 查看的文件上工作,無需單獨的 Read</div>

131 <div>超過 50K 的鉤子輸出保存到磁盤,帶有路徑 + 預覽,而不是注入到上下文中</div>

132 <div>思考摘要在互動式會話中默認關閉(<code>showThinkingSummaries: true</code> 以恢復)</div>

133 <div>語音模式:推送通話修飾符組合、Windows WebSocket、macOS Apple Silicon 麥克風權限</div>

134 <div><code>claude-cli://</code> 深層連結接受多行提示(編碼 <code>%0A</code>)</div>

135 </div>

136</div>

137 

138[v2.1.86–v2.1.91 的完整變更日誌 →](/zh-TW/changelog#2-1-86)

whats-new/2026-w15.md +119 −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# 第 15 週 · 2026 年 4 月 6–10 日

6 

7> Ultraplan 雲端規劃、具有自我調整 /loop 的 Monitor 工具、用於打包設定的 /team-onboarding,以及從終端執行的 /autofix-pr。

8 

9<div className="digest-meta">

10 <span>版本 <a href="/zh-TW/docs/changelog#2-1-92">v2.1.92 → v2.1.101</a></span>

11 <span>4 項功能 · 4 月 6–10 日</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Ultraplan</span>

17 <span className="digest-feature-pill">研究預覽</span>

18 </div>

19 

20 <p className="digest-feature-lede">從終端在雲端啟動規劃模式,然後在瀏覽器中檢視結果。Claude 在網頁工作階段的 Claude Code 中起草計畫,同時您的終端保持空閒;當準備好時,您可以對各個部分進行評論、要求修訂,並選擇遠端執行或將其發送回 CLI。從 v2.1.101 開始,首次執行會自動建立預設雲端環境,因此在嘗試之前無需進行網頁設定步驟。</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/aFXPQxiBOW99MHS3/images/whats-new/ultraplan.mp4?fit=max&auto=format&n=aFXPQxiBOW99MHS3&q=85&s=e8f2f23730c6a5c289dbf3e7b13eadf6" data-path="images/whats-new/ultraplan.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">執行命令,或在任何提示中包含關鍵字:</p>

27 

28 ```text Claude Code theme={null}

29 > /ultraplan migrate the auth service from sessions to JWTs

30 ```

31 

32 <a className="digest-feature-link" href="/zh-TW/docs/ultraplan">Ultraplan 指南</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">Monitor 工具</span>

38 <span className="digest-feature-pill">v2.1.98</span>

39 </div>

40 

41 <p className="digest-feature-lede">一個新的內建工具,可生成背景監視程式並將其事件串流到對話中:每個事件都會作為新的文字記錄訊息出現,Claude 會立即對其做出反應。追蹤訓練執行、監督 PR 的 CI,或在開發伺服器當機時立即自動修復,所有這些都無需 Bash sleep 迴圈佔用回合。</p>

42 

43 <Frame>

44 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/aFXPQxiBOW99MHS3/images/whats-new/monitor-tool.mp4?fit=max&auto=format&n=aFXPQxiBOW99MHS3&q=85&s=f4156c15a0999de5c5157f54a3117c89" data-path="images/whats-new/monitor-tool.mp4" />

45 </Frame>

46 

47 <p className="digest-feature-try">要求 Claude 在您繼續工作時監視某些內容:</p>

48 

49 ```text Claude Code theme={null}

50 > Tail server.log in the background and tell me the moment a 5xx shows up

51 ```

52 

53 <p className="digest-feature-try">這與 <code>/loop</code> 配對,現在可自我調整:省略間隔,Claude 會根據任務排定下一個時刻,或使用 Monitor 工具來完全跳過輪詢。</p>

54 

55 ```text Claude Code theme={null}

56 > /loop check CI on my PR

57 ```

58 

59 <a className="digest-feature-link" href="/zh-TW/docs/tools-reference#monitor-tool">Monitor 工具參考</a>

60</div>

61 

62<div className="digest-feature">

63 <div className="digest-feature-header">

64 <span className="digest-feature-title">/autofix-pr</span>

65 <span className="digest-feature-pill">CLI</span>

66 </div>

67 

68 <p className="digest-feature-lede">PR 自動修復在第 13 週登陸網頁版。現在您可以在不離開終端的情況下啟用它:<code>/autofix-pr</code> 推斷您目前分支的開放 PR,並在一個步驟中為網頁上的 Claude Code 啟用自動修復。推送您的分支、執行命令、離開;Claude 監視 CI 和審查評論,並推送修復直到通過。</p>

69 

70 <Frame>

71 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/aFXPQxiBOW99MHS3/images/whats-new/autofix-pr.mp4?fit=max&auto=format&n=aFXPQxiBOW99MHS3&q=85&s=95f191eb4711130a128aec3f6b720527" data-path="images/whats-new/autofix-pr.mp4" />

72 </Frame>

73 

74 <p className="digest-feature-try">從 PR 的分支執行:</p>

75 

76 ```text Claude Code theme={null}

77 > /autofix-pr

78 ```

79 

80 <a className="digest-feature-link" href="/zh-TW/docs/claude-code-on-the-web#auto-fix-pull-requests">自動修復拉取請求</a>

81</div>

82 

83<div className="digest-feature">

84 <div className="digest-feature-header">

85 <span className="digest-feature-title">/team-onboarding</span>

86 <span className="digest-feature-pill">v2.1.101</span>

87 </div>

88 

89 <p className="digest-feature-lede">從您的本機 Claude Code 使用情況產生團隊入職指南。在您熟悉的專案中執行它,並將輸出交給新團隊成員,以便他們可以重新執行您的設定,而不是從預設值開始。</p>

90 

91 <p className="digest-feature-try">在您花費真實時間的專案中執行:</p>

92 

93 ```text Claude Code theme={null}

94 > /team-onboarding

95 ```

96 

97 <a className="digest-feature-link" href="/zh-TW/docs/commands">命令參考</a>

98</div>

99 

100<div className="digest-wins">

101 <p className="digest-wins-title">其他成就</p>

102 

103 <div className="digest-wins-grid">

104 <div>焦點檢視:在無閃爍模式中按 <code>Ctrl+O</code> 以將檢視摺疊到您的最後提示、單行工具摘要(含 diffstats)和 Claude 的最終回應</div>

105 <div>登入畫面上的引導式 <a href="/zh-TW/docs/amazon-bedrock">Bedrock</a> 和 <a href="/zh-TW/docs/google-vertex-ai">Vertex AI</a> 設定精靈:選擇「第三方平台」以進行逐步驗證、區域、認證檢查和模型固定</div>

106 <div><code>/agents</code> 獲得標籤式版面配置:「執行中」標籤顯示帶有 <code>● N running</code> 計數的即時子代理,加上「執行代理」和「檢視執行中的執行個體」動作在「程式庫」標籤中</div>

107 <div>預設工作量級別現在對 API 金鑰、Bedrock、Vertex、Foundry、Team 和 Enterprise 使用者為 <code>high</code>(使用 <code>/effort</code> 控制)</div>

108 <div><code>/cost</code> 為訂閱使用者顯示每個模型和快取命中的細目分類</div>

109 <div><code>/release-notes</code> 現在是互動式版本選擇器</div>

110 <div>狀態列:新的 <code>refreshInterval</code> 設定每 N 秒重新執行命令,JSON 輸入中的 <code>workspace.git\_worktree</code></div>

111 <div><code>CLAUDE\_CODE\_PERFORCE\_MODE</code>:Edit/Write 在唯讀檔案上失敗,並提示 <code>p4 edit</code>,而不是無聲地覆寫</div>

112 <div>OS CA 憑證存放區現在預設受信任,因此企業 TLS 代理無需額外設定即可運作(<code>CLAUDE\_CODE\_CERT\_STORE=bundled</code> 以選擇退出)</div>

113 <div>由 Mantle 提供支援的 Amazon Bedrock:設定 <code>CLAUDE\_CODE\_USE\_MANTLE=1</code></div>

114 <div>強化的 Bash 工具權限:反斜線轉義旗標、環境變數前綴、<code>/dev/tcp</code> 重新導向和複合命令現在會正確提示</div>

115 <div><code>UserPromptSubmit</code> hooks 可以透過 <code>hookSpecificOutput.sessionTitle</code> 設定工作階段標題</div>

116 </div>

117</div>

118 

119[v2.1.92–v2.1.101 的完整變更日誌 →](/zh-TW/changelog#2-1-92)

Details

31<div className="digest-feature">31<div className="digest-feature">

32 <div className="digest-feature-header">32 <div className="digest-feature-header">

33 <span className="digest-feature-title">claude project purge</span>33 <span className="digest-feature-title">claude project purge</span>

34 <span className="digest-feature-pill">v2.1.126</span>34 <span className="digest-feature-pill">v2.1.124</span>

35 </div>35 </div>

36 36 

37 <p className="digest-feature-lede">刪除專案的所有 Claude Code 狀態:文字記錄、任務、檔案歷史記錄和專案的設定項目。支援 `--dry-run` 預覽、`-y`/`--yes` 跳過確認、`-i`/`--interactive` 選擇,以及 `--all` 清理每個專案。</p>37 <p className="digest-feature-lede">刪除專案的所有 Claude Code 狀態:文字記錄、任務、檔案歷史記錄和專案的設定項目。支援 `--dry-run` 預覽、`-y`/`--yes` 跳過確認、`-i`/`--interactive` 選擇,以及 `--all` 清理每個專案。</p>

whats-new/2026-w20.md +95 −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# 第 20 週 · 2026 年 5 月 11–15 日

6 

7> 從一個螢幕管理每個 Claude Code 工作階段,使用代理檢視,讓 Claude 持續朝著目標工作直到條件成立,並在 Opus 4.7 上預設執行快速模式。

8 

9<div className="digest-meta">

10 <span>版本 <a href="/zh-TW/changelog#2-1-139">v2.1.139 → v2.1.142</a></span>

11 <span>3 項功能 · 5 月 11–15</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Agent view</span>

17 <span className="digest-feature-pill">research preview</span>

18 </div>

19 

20 <p className="digest-feature-lede"><code>claude agents</code> 為每個 Claude Code 工作階段開啟一個螢幕:什麼正在執行、什麼在等待您的輸入,以及什麼已完成。分派一個錯誤修復、一個拉取請求審查和一個不穩定測試調查作為三行,在另一個視窗中繼續工作,只在一行需要您時才介入。附加到任何一行以進入其完整對話,然後按 <code>←</code> 返回列表。每個背景工作階段在沒有終端連接的情況下繼續執行。</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/ITvjicPxe1SM3GX7/images/whats-new/agent-view.mp4?fit=max&auto=format&n=ITvjicPxe1SM3GX7&q=85&s=0eefe6cbe75464c8f7902bba630ab7a4" data-path="images/whats-new/agent-view.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">從您的 shell 開啟儀表板:</p>

27 

28 ```bash terminal theme={null}

29 claude agents

30 ```

31 

32 <a className="digest-feature-link" href="/zh-TW/agent-view">Agent view</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">/goal</span>

38 <span className="digest-feature-pill">v2.1.139</span>

39 </div>

40 

41 <p className="digest-feature-lede">設定完成條件,Claude 會在多個回合中持續朝著它工作,無需您提示每一步。在每個回合之後,一個快速模型檢查條件是否成立;如果不成立,Claude 會開始另一個回合,而不是將控制權交回。適用於具有可驗證終止狀態的大量工作,例如遷移模組直到每個呼叫位置都編譯並通過測試。目標在條件滿足後清除,並在互動、<code>-p</code> 和 Remote Control 中工作。</p>

42 

43 <Frame>

44 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/ITvjicPxe1SM3GX7/images/whats-new/goal.mp4?fit=max&auto=format&n=ITvjicPxe1SM3GX7&q=85&s=6806df3780c548b93a02d6fa71da276b" data-path="images/whats-new/goal.mp4" />

45 </Frame>

46 

47 <p className="digest-feature-try">設定目標並讓 Claude 執行直到它成立:</p>

48 

49 ```text Claude Code theme={null}

50 > /goal all tests in test/auth pass and the lint step is clean

51 ```

52 

53 <a className="digest-feature-link" href="/zh-TW/goal">Goals</a>

54</div>

55 

56<div className="digest-feature">

57 <div className="digest-feature-header">

58 <span className="digest-feature-title">Fast mode on Opus 4.7</span>

59 <span className="digest-feature-pill">research preview</span>

60 </div>

61 

62 <p className="digest-feature-lede"><code>/fast</code> 現在預設在 Opus 4.7 上執行,而不是 Opus 4.6。快速模式是高速 Opus 配置:相同的模型品質,速度約快 2.5 倍,但每個 token 成本更高,適用於快速迭代和即時除錯。定價保持不變,為 $30/$150 per MTok,與 Opus 4.6 快速模式相同。要將快速模式固定到 Opus 4.6,請設定 <code>CLAUDE\_CODE\_OPUS\_4\_6\_FAST\_MODE\_OVERRIDE=1</code>。</p>

63 

64 <Frame>

65 <img className="w-full" src="https://mintcdn.com/claude-code/ITvjicPxe1SM3GX7/images/whats-new/fast-mode-opus-47.png?fit=max&auto=format&n=ITvjicPxe1SM3GX7&q=85&s=6b6d92f7748ce5328a1ee9a269fb1a87" alt="Claude Code 模型選擇器顯示 Opus 4.7 Fast 1M 作為預設值,並啟用了 Fast 切換" width="3840" height="2160" data-path="images/whats-new/fast-mode-opus-47.png" />

66 </Frame>

67 

68 <p className="digest-feature-try">切換快速模式,現在在 Opus 4.7 上執行:</p>

69 

70 ```text Claude Code theme={null}

71 > /fast

72 ```

73 

74 <a className="digest-feature-link" href="/zh-TW/fast-mode#understand-the-cost-tradeoff">Fast mode on Opus 4.7</a>

75</div>

76 

77<div className="digest-wins">

78 <p className="digest-wins-title">其他成果</p>

79 

80 <div className="digest-wins-grid">

81 <div><code>claude agents</code> 獲得了分派標誌(<code>--add-dir</code>、<code>--settings</code>、<code>--mcp-config</code>、<code>--plugin-dir</code>、<code>--permission-mode</code>、<code>--model</code>、<code>--effort</code>、<code>--dangerously-skip-permissions</code>)來配置背景工作階段,<code>claude agents --cwd \<path></code> 將工作階段列表限制在一個目錄</div>

82 <div>新的 hook <code>args: string\[]</code> exec 形式直接生成命令而不使用 shell,因此路徑佔位符永遠不需要引用</div>

83 <div>新的 <code>continueOnBlock</code> 配置選項用於 <code>PostToolUse</code> hooks,將 hook 的拒絕原因反饋給 Claude 並繼續回合,而不是結束它</div>

84 <div>hook JSON 輸出中的新 <code>terminalSequence</code> 欄位讓 hooks 發出桌面通知、視窗標題和鈴聲,無需控制終端</div>

85 <div>Rewind 菜單新增了「在此處總結」以壓縮較早的上下文,同時保持最近的回合完整</div>

86 <div>當設定 <code>ANTHROPIC\_API\_KEY</code>、<code>apiKeyHelper</code> 或 <code>ANTHROPIC\_AUTH\_TOKEN</code> 時,Remote Control、<code>/schedule</code>、Claude.ai MCP 連接器和通知偏好設定現在被禁用,即使與 Claude.ai 登入並行;取消設定 API 金鑰以使用這些功能</div>

87 <div>MCP stdio 伺服器現在在其環境中接收 <code>CLAUDE\_PROJECT\_DIR</code>,與 hooks 相符,plugin 配置可以在命令中參考 <code>\${"{"}CLAUDE\_PROJECT\_DIR{"}"}</code></div>

88 <div><code>claude plugin details \<name></code> 顯示 plugin 的元件清單和預計的每個工作階段 token 成本,<code>/plugin</code> 詳細資訊窗格現在也列出 plugin 提供的 LSP 伺服器</div>

89 <div>具有根級 <code>SKILL.md</code> 且沒有 <code>skills/</code> 子目錄的 Plugins 現在被呈現為一個 skill</div>

90 <div><code>/feedback</code> 現在可以包含過去 24 小時或 7 天內的最近工作階段,用於跨越超過當前工作階段的問題</div>

91 <div>Agent tool <code>subagent\_type</code> 現在不區分大小寫和分隔符地匹配,因此 <code>"Code Reviewer"</code> 解析為 <code>code-reviewer</code></div>

92 </div>

93</div>

94 

95[v2.1.139–v2.1.142 的完整變更日誌 →](/zh-TW/changelog#2-1-139)

whats-new/2026-w21.md +50 −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# 第 21 週 · 2026 年 5 月 18–22 日

6 

7> 在 Pro 方案上使用 auto mode 並搭配 Sonnet 4.6,在 /usage 中查看哪些 skills、subagents 和 MCP servers 推動您的方案限制,並使用新的 /code-review 命令檢查差異。

8 

9<div className="digest-meta">

10 <span>Releases <a href="/zh-TW/changelog#2-1-143">v2.1.143 → v2.1.149</a></span>

11 <span>1 feature · 5 月 18–22</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Pro 方案上的 Auto mode</span>

17 <span className="digest-feature-pill">CLI</span>

18 </div>

19 

20 <p className="digest-feature-lede">Auto mode 現已在 Pro 方案上提供,並支援 Sonnet 4.6 以及 Opus。它用背景安全檢查取代權限提示:常規操作無需中斷您即可執行,而破壞性或可疑的操作會被阻止並顯示。</p>

21 

22 <p className="digest-feature-try">更新 Claude Code,然後使用 Shift+Tab 切換模式;一旦您的帳戶符合要求,auto mode 就會出現:</p>

23 

24 ```bash terminal theme={null}

25 claude update

26 ```

27 

28 <a className="digest-feature-link" href="/zh-TW/permission-modes#eliminate-prompts-with-auto-mode">Auto mode</a>

29</div>

30 

31<div className="digest-wins">

32 <p className="digest-wins-title">其他亮點</p>

33 

34 <div className="digest-wins-grid">

35 <div><a href="/zh-TW/costs#track-your-costs"><code>/usage</code></a> 現在顯示推動您方案限制的內容的按類別細分,將最近的使用情況歸因於 skills、subagents、plugins 和個別 MCP servers</div>

36 <div>"Extra usage" 在整個 CLI 中重新命名為 "usage credits",<code>/extra-usage</code> 現在是 <code>/usage-credits</code>。舊名稱仍然有效。</div>

37 <div>新的 <a href="/zh-TW/code-review"><code>/code-review</code></a> 命令在選定的努力級別(例如 <code>/code-review high</code>)報告正確性錯誤,<code>--comment</code> 將發現作為內聯 GitHub PR 評論發佈。<code>/simplify</code> 保留為單獨的清理專用檢查。</div>

38 <div>背景會話現在在 <code>/resume</code> 中與互動式會話一起出現,標記為 <code>bg</code>,並且在 <code>claude agents</code> 中使用 <code>Ctrl+T</code> 固定的會話在空閒時保持活動</div>

39 <div><code>claude agents --json</code> 將實時會話列為 JSON 以供指令碼編寫,例如狀態欄和會話選擇器</div>

40 <div>PowerShell tool 現在在 Windows 上預設為啟用,適用於 Bedrock、Vertex 和 Foundry 使用者;使用 <code>CLAUDE\_CODE\_USE\_POWERSHELL\_TOOL=0</code> 選擇退出</div>

41 <div><code>claude plugin disable</code> 現在在另一個啟用的 plugin 依賴於目標時拒絕,<code>claude plugin enable</code> 強制啟用傳遞依賴項</div>

42 <div><code>/plugin</code> marketplace 瀏覽窗格顯示預計的上下文成本,Discover 和 Browse 螢幕在安裝前列出 plugin 的命令、agents、skills、hooks 和 MCP/LSP servers</div>

43 <div>新的 <code>worktree.bgIsolation: "none"</code> 設定讓背景會話直接編輯工作副本,無需 <code>EnterWorktree</code>,適用於 worktrees 不實用的儲存庫</div>

44 <div>Markdown 輸出呈現 GFM 任務列表複選框,<code>/diff</code> 詳細檢視使用鍵盤滾動</div>

45 <div>狀態行 JSON 輸入現在在偵測到時包含 GitHub 儲存庫和 PR 資訊</div>

46 <div>Enterprise:<code>allowAllClaudeAiMcps</code> 受管設定在 <code>managed-mcp.json</code> 旁邊載入 claude.ai 雲端 MCP 連接器</div>

47 </div>

48</div>

49 

50[v2.1.143–v2.1.149 的完整變更日誌 →](/zh-TW/changelog#2-1-143)

whats-new/2026-w22.md +119 −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# 第 22 週 · 5 月 25–29 日,2026 年

6 

7> 在 Claude Opus 4.8 上執行 Claude Code、使用動態工作流程協調大型任務、使用 security-guidance 外掛程式捕捉安全問題,以及以更低的價格在 Opus 4.8 上使用快速模式。

8 

9<div className="digest-meta">

10 <span>版本 <a href="/zh-TW/changelog#2-1-150">v2.1.150 → v2.1.157</a></span>

11 <span>4 項功能 · 5 月 25–29 日</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Claude Opus 4.8</span>

17 <span className="digest-feature-pill">新模型</span>

18 </div>

19 

20 <p className="digest-feature-lede">Opus 4.8 現在是 Max、Team Premium、Enterprise 隨用隨付和 Anthropic API 上的預設值。它預設為高努力;對於更難的任務,請使用 <code>/effort xhigh</code>。需要 v2.1.154 或更新版本。</p>

21 

22 <Frame>

23 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/QsIrGXGFg6xd7joy/images/whats-new/opus-4-8.mp4?fit=max&auto=format&n=QsIrGXGFg6xd7joy&q=85&s=6ebcf5fe136467da2b254de1fe749ea7" data-path="images/whats-new/opus-4-8.mp4" />

24 </Frame>

25 

26 <p className="digest-feature-try">按名稱切換到 Opus 4.8,或從模型選擇器中選擇它:</p>

27 

28 ```text Claude Code theme={null}

29 > /model claude-opus-4-8

30 ```

31 

32 <a className="digest-feature-link" href="/zh-TW/model-config#available-models">模型配置</a>

33</div>

34 

35<div className="digest-feature">

36 <div className="digest-feature-header">

37 <span className="digest-feature-title">Dynamic workflows</span>

38 <span className="digest-feature-pill">研究預覽</span>

39 </div>

40 

41 <p className="digest-feature-lede">工作流程是 Claude 為您的任務編寫的協調指令碼,並在背景中跨許多子代理執行。當任務對於一個對話來協調太大時,請使用一個:整個程式碼庫審計、大型遷移、需要交叉檢查的研究問題。使用 <code>/workflows</code> 管理執行。</p>

42 

43 <Frame>

44 <img className="w-full" src="https://mintcdn.com/claude-code/QsIrGXGFg6xd7joy/images/whats-new/dynamic-workflows.png?fit=max&auto=format&n=QsIrGXGFg6xd7joy&q=85&s=26671fa8607cec3453ed9753f821bd4f" alt="Claude Code on Opus 4.8 showing a Dynamic workflow requested indicator for a prompt that asks for a workflow to migrate every internal fetch() call" width="3840" height="2160" data-path="images/whats-new/dynamic-workflows.png" />

45 </Frame>

46 

47 <p className="digest-feature-try">描述任務並要求工作流程:</p>

48 

49 ```text Claude Code theme={null}

50 > create a workflow that migrates every internal fetch() call to the new HttpClient wrapper

51 ```

52 

53 <a className="digest-feature-link" href="/zh-TW/workflows">Dynamic workflows</a>

54</div>

55 

56<div className="digest-feature">

57 <div className="digest-feature-header">

58 <span className="digest-feature-title">Security guidance plugin</span>

59 <span className="digest-feature-pill">plugin</span>

60 </div>

61 

62 <p className="digest-feature-lede">security-guidance 外掛程式檢查 Claude 的程式碼變更是否存在漏洞,並在同一工作階段中修復它們。它在每次編輯時執行快速模式檢查,在每個回合結束時執行模型檢查,以及在提交或推送時執行更深入的代理檢查。在 <code>.claude/claude-security-guidance.md</code> 中新增專案規則。</p>

63 

64 <Frame>

65 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/QsIrGXGFg6xd7joy/images/whats-new/security-guidance.mp4?fit=max&auto=format&n=QsIrGXGFg6xd7joy&q=85&s=c91d865936411586f42b24c558bcdd1d" data-path="images/whats-new/security-guidance.mp4" />

66 </Frame>

67 

68 <p className="digest-feature-try">從官方 Anthropic 市場安裝它:</p>

69 

70 ```text Claude Code theme={null}

71 > /plugin install security-guidance@claude-plugins-official

72 ```

73 

74 <p className="digest-feature-try">然後在目前工作階段中啟用它:</p>

75 

76 ```text Claude Code theme={null}

77 > /reload-plugins

78 ```

79 

80 <a className="digest-feature-link" href="/zh-TW/security-guidance">Security guidance plugin</a>

81</div>

82 

83<div className="digest-feature">

84 <div className="digest-feature-header">

85 <span className="digest-feature-title">Fast mode on Opus 4.8</span>

86 <span className="digest-feature-pill">研究預覽</span>

87 </div>

88 

89 <p className="digest-feature-lede">快速模式現在預設為 Opus 4.8,每 MTok 為 \$10/\$50:標準速率的 2 倍,速度約為 2.5 倍。Opus 4.7 和 4.6 保持在 \$30/\$150。Opus 4.6 快速模式已棄用。</p>

90 

91 <p className="digest-feature-try">切換快速模式,現在在 Opus 4.8 上:</p>

92 

93 ```text Claude Code theme={null}

94 > /fast

95 ```

96 

97 <a className="digest-feature-link" href="/zh-TW/fast-mode#understand-the-cost-tradeoff">快速模式定價</a>

98</div>

99 

100<div className="digest-wins">

101 <p className="digest-wins-title">其他成果</p>

102 

103 <div className="digest-wins-grid">

104 <div>在 <code>claude agents</code> 中,在 shell 命令前加上 <code>!</code> 以將其作為背景工作執行,您可以附加到該工作並從中分離;也可用作 <code>claude --bg --exec 'pytest -x'</code></div>

105 <div>位於 <code>.claude/skills</code> 目錄中的外掛程式現在會自動載入,不需要市場,<code>claude plugin init \<name></code> 會為新外掛程式搭建框架</div>

106 <div>新的 <code>/reload-skills</code> 命令重新掃描技能目錄而無需重新啟動,<code>SessionStart</code> hooks 可以傳回 <code>reloadSkills: true</code> 以使它們安裝的技能在同一工作階段中可用</div>

107 <div>技能和命令可以在 frontmatter 中設定 <code>disallowed-tools</code> 以在技能處於活動狀態時從模型中移除工具</div>

108 <div>新的 <code>MessageDisplay</code> hook 事件讓 hooks 在顯示助手訊息文字時轉換或隱藏它</div>

109 <div>Claude Code 現在在找不到主要模型時會切換到您配置的 <code>--fallback-model</code> 以進行工作階段的其餘部分,而不是使每個請求都失敗</div>

110 <div>外掛程式可以在 <code>plugin.json</code> 或市場項目中宣告 <code>defaultEnabled: false</code>,以便它們安裝而不開啟,直到您啟用它們</div>

111 <div>Vim 模式:在 NORMAL 模式下按 <code>/</code> 開啟反向歷史搜尋,與 Bash 和 Zsh vi-mode 相符</div>

112 <div>串流工具執行現在始終啟用,包括在禁用遙測和 Bedrock、Vertex 和 Foundry 上</div>

113 <div><code>←←</code> 開啟代理檢視現在適用於 Bedrock、Vertex、Foundry 和禁用遙測的情況</div>

114 <div>Chrome 中的 Claude:透過 <code>/chrome</code> → "選擇瀏覽器…" 選擇要使用的連接瀏覽器,或在瀏覽器操作執行時在聊天中選擇多個連接的瀏覽器</div>

115 <div><code>claude mcp list</code> 和 <code>claude mcp get</code> 現在將未批准的 <code>.mcp.json</code> 伺服器顯示為待批准,而不是在輸出被管道傳輸時自動批准和連接</div>

116 </div>

117</div>

118 

119[v2.1.150–v2.1.157 的完整變更日誌 →](/zh-TW/changelog#2-1-150)

workflows.md +289 −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# 使用動態工作流程大規模協調子代理

6 

7> 動態工作流程從 Claude 編寫的指令碼協調許多子代理,您可以重新執行。用於程式碼庫審計、大規模遷移和交叉檢查研究。

8 

9{/* plan-availability: feature=workflows plans=pro,max,team,enterprise providers=all */}

10 

11<Note>

12 Dynamic workflows 處於研究預覽階段。它們需要 Claude Code v2.1.154 或更新版本,並在所有付費方案上可用,具有 Anthropic API 存取權限,以及在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上可用。在 Pro 上,從 `/config` 中的 Dynamic workflows 列啟用它們。

13</Note>

14 

15動態工作流程是一個 JavaScript 指令碼,可大規模協調[子代理](/zh-TW/sub-agents)。Claude 為您描述的任務編寫指令碼,執行時期在背景執行它,同時您的工作階段保持回應。

16 

17當任務需要超過一個對話可以協調的代理數量時,或當您想將協調編成可以讀取和重新執行的指令碼時,請使用工作流程。範例包括程式碼庫範圍的錯誤掃描、500 個檔案遷移、需要相互交叉檢查來源的研究問題,以及值得從多個獨立角度起草的困難計畫,然後再提交給其中一個。

18 

19本頁涵蓋如何:

20 

21* 決定[何時使用工作流程](#when-to-use-a-workflow)而不是子代理或技能

22* [執行捆綁的工作流程](#run-a-bundled-workflow)與 `/deep-research`

23* [讓 Claude 為您的任務編寫工作流程](#have-claude-write-a-workflow)並儲存它

24* 瞭解[工作流程如何執行](#how-a-workflow-runs)和[管理執行](#manage-runs)

25 

26<h2 id="when-to-use-a-workflow">

27 何時使用工作流程

28</h2>

29 

30[子代理](/zh-TW/sub-agents)、[技能](/zh-TW/skills)、[代理團隊](/zh-TW/agent-teams)和工作流程都可以執行多步驟任務。區別在於誰掌握計畫:

31 

32| | 子代理 | 技能 | 代理團隊 | 工作流程 |

33| :--------- | :------------ | :------------ | :------------ | :----------- |

34| 它是什麼 | Claude 生成的工作者 | Claude 遵循的指示 | 監督對等工作階段的主導代理 | 執行時期執行的指令碼 |

35| 誰決定接下來執行什麼 | Claude,逐輪 | Claude,遵循提示 | 主導代理,逐輪 | 指令碼 |

36| 中間結果在哪裡 | Claude 的上下文視窗 | Claude 的上下文視窗 | 共享任務清單 | 指令碼變數 |

37| 什麼是可重複的 | 工作者定義 | 指示 | 團隊定義 | 協調本身 |

38| 規模 | 每輪委派的幾項任務 | 與子代理相同 | 少數長時間執行的對等代理 | 每次執行數十到數百個代理 |

39| 中斷 | 重新啟動輪次 | 重新啟動輪次 | 隊友繼續執行 | 在同一工作階段中可恢復 |

40 

41工作流程將計畫移入程式碼。使用子代理、技能和代理團隊,Claude 是協調者:它逐輪決定接下來要生成或指派什麼,每個結果都進入上下文視窗。工作流程指令碼保存迴圈、分支和中間結果本身,因此 Claude 的上下文只保存最終答案。

42 

43將計畫移入程式碼也讓工作流程應用可重複的品質模式,而不僅僅是執行更多代理:它可以讓獨立代理在報告前對彼此的發現進行對抗性審查,或從多個角度起草計畫並相互權衡,因此您獲得比單次通過更可信的結果。

44 

45<h2 id="run-a-bundled-workflow">

46 執行捆綁的工作流程

47</h2>

48 

49查看工作流程運作的最快方式是執行 `/deep-research`,[內建工作流程](#bundled-workflows)Claude Code 包含用於跨許多來源調查問題。您將看到代理在背景中完成一組階段,同時您的工作階段保持自由,最後獲得一份報告而不是逐輪記錄。

50 

51<Steps>

52 <Step title="執行工作流程">

53 使用您想調查的問題執行 `/deep-research`。它在多個角度上展開網路搜尋,獲取並交叉檢查它找到的來源,並合成引用的報告。

54 

55 ```text theme={null}

56 /deep-research What changed in the Node.js permission model between v20 and v22?

57 ```

58 </Step>

59 

60 <Step title="允許工作流程">

61 Claude Code 詢問是否允許工作流程。選擇**是**以繼續。確切的提示取決於您的權限模式。有關每種模式選項,請參閱[在執行前批准計畫](#approve-the-plan-before-it-runs)。

62 </Step>

63 

64 <Step title="監視進度">

65 執行在背景中啟動。執行 `/workflows`,使用箭頭鍵選擇執行,然後按 Enter 開啟其進度檢視:

66 

67 ```text theme={null}

68 /workflows

69 ```

70 

71 檢視顯示每個階段及其代理計數、令牌總計和經過時間。深入任何階段以查看其代理及每個代理發現的內容。有關完整的控制集,請參閱[監視執行](#watch-the-run)。

72 

73 您也可以從輸入框下方的任務面板監視:執行進行時會出現一行進度摘要。按向下箭頭聚焦它,然後按 Enter 展開。

74 </Step>

75 

76 <Step title="閱讀報告">

77 執行完成後,報告進入您的工作階段。它引用每項聲明來自的來源,未通過交叉檢查的聲明已被篩選出去。

78 </Step>

79</Steps>

80 

81要為您自己的任務執行工作流程,[讓 Claude 編寫一個](#have-claude-write-a-workflow),一旦執行執行您想要的操作,您可以[儲存它](#save-the-workflow-for-reuse)作為您自己的命令。

82 

83<h3 id="bundled-workflows">

84 捆綁的工作流程

85</h3>

86 

87Claude Code 包含 `/deep-research` 作為內建工作流程:

88 

89| 命令 | 它做什麼 |

90| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |

91| `/deep-research <question>` | 在多個角度上展開網路搜尋問題,獲取並交叉檢查它找到的來源,對每項聲明進行投票,並返回引用的報告,其中未通過交叉檢查的聲明已被篩選出去。需要[WebSearch 工具](/zh-TW/tools-reference#websearch-tool-behavior)可用 |

92 

93[您自己儲存的工作流程](#save-the-workflow-for-reuse)以相同方式成為命令,並在 `/` 自動完成中與捆綁的命令一起出現。

94 

95<h3 id="watch-the-run">

96 監視執行

97</h3>

98 

99工作流程在背景中執行,因此工作階段在代理工作時保持回應。隨時執行 `/workflows` 以列出執行中和已完成的工作流程,然後選擇一個以開啟其進度檢視。

100 

101```text theme={null}

102/workflows

103```

104 

105進度檢視顯示每個階段及其代理計數、令牌總計和經過時間。頁腳列出每個動作的鍵:

106 

107| 鍵 | 動作 |

108| :------------ | :------------------------------------------- |

109| `↑` / `↓` | 選擇階段或代理 |

110| `Enter` 或 `→` | 深入選定的階段,然後進入代理以讀取其提示、最近的工具呼叫和結果 |

111| `Esc` | 返回一個級別 |

112| `j` / `k` | 當代理詳細資訊溢出時在其中捲動 |

113| `p` | 暫停或恢復執行 |

114| `x` | 停止選定的代理,或當焦點在執行上時停止整個工作流程 |

115| `r` | 重新啟動選定的執行中代理 |

116| `s` | [儲存](#save-the-workflow-for-reuse)執行的指令碼作為命令 |

117 

118<h2 id="have-claude-write-a-workflow">

119 讓 Claude 編寫工作流程

120</h2>

121 

122您可以通過兩種方式讓 Claude 為您的任務編寫工作流程:

123 

124* [在您的提示中要求工作流程](#ask-for-a-workflow-in-your-prompt),使用關鍵字 `ultracode`,Claude 為任務編寫一個。

125* [讓 Claude 使用 ultracode 決定](#let-claude-decide-with-ultracode):設定 `/effort ultracode`,Claude 為工作階段中的每項實質性任務規劃工作流程。

126 

127您也可以執行已存在的工作流程命令:[捆綁的工作流程](#bundled-workflows)如 `/deep-research`,或您[儲存的](#save-the-workflow-for-reuse)工作流程。

128 

129<h3 id="ask-for-a-workflow-in-your-prompt">

130 在您的提示中要求工作流程

131</h3>

132 

133要在不改變工作階段努力級別的情況下將單個任務作為工作流程執行,請在提示中包含關鍵字 `ultracode`。用您自己的話提問,例如「使用工作流程」或「執行工作流程」,也可以:Claude 將直接請求視為相同的選擇加入。在 v2.1.160 之前,字面觸發關鍵字是 `workflow`;自然語言請求在兩個版本中都有效。

134 

135```text theme={null}

136ultracode: audit every API endpoint under src/routes/ for missing auth checks

137```

138 

139Claude Code 在您的輸入中突出顯示該關鍵字,Claude 為任務編寫工作流程指令碼,而不是逐輪完成它。如果執行執行您想要的操作,您可以之後[將其儲存為命令](#save-the-workflow-for-reuse)。

140 

141如果您沒有打算啟動工作流程,請在 macOS 上按 `Option+W` 或在 Windows 和 Linux 上按 `Alt+W` 以忽略此提示的突出顯示,或在游標位於突出顯示單詞的正後方時按退格鍵。要停止該單詞完全觸發,請在 `/config` 中關閉 Workflow keyword trigger。

142 

143如果您已經以另一種方式建立了協調器,例如子代理提示的資料夾或一個分散工作的技能,您可以指向 Claude 並要求工作流程執行相同的操作。

144 

145<h3 id="let-claude-decide-with-ultracode">

146 讓 Claude 使用 ultracode 決定

147</h3>

148 

149Ultracode 是一個 Claude Code 設定,結合 `xhigh` [推理努力](/zh-TW/model-config#adjust-effort-level)與自動工作流程協調。啟用它後,Claude 為每項實質性任務規劃工作流程,而不是等待您要求。

150 

151```text theme={null}

152/effort ultracode

153```

154 

155啟用 ultracode 後,Claude 決定任務何時值得工作流程。單個請求可以變成一系列工作流程:一個用於理解程式碼,一個用於進行更改,一個用於驗證它。這適用於工作階段中的每項任務,因此每個請求使用更多令牌並花費比較低努力級別更長的時間。

156 

157Ultracode 持續當前工作階段,當您啟動新工作階段時重設。當您返回日常工作時,使用 `/effort high` 下降。它在支援 `xhigh` [努力](/zh-TW/model-config#adjust-effort-level)的模型上可用;在其他模型上,`/effort` 功能表不提供它。

158 

159<h3 id="approve-the-plan-before-it-runs">

160 在執行前批准計畫

161</h3>

162 

163在 CLI 中,每次執行提示顯示計畫的階段和這些選項:

164 

165* **是,執行它**:啟動執行

166* **是,不再詢問 `<name>` 在 `<path>` 中**:啟動,並從現在開始跳過此專案中此工作流程的此提示

167* **檢視原始指令碼**:在決定前讀取指令碼

168* **否**:取消

169 

170`Ctrl+G` 在您的編輯器中開啟指令碼。`Tab` 讓您在執行啟動前調整提示。

171 

172您是否看到此提示取決於您的[權限模式](/zh-TW/permission-modes):

173 

174| 權限模式 | 何時提示您 |

175| :------------------------- | :--------------------------------------------------------- |

176| 預設、接受編輯 | 每次執行,除非您已為此專案中的該工作流程選擇**是,不再詢問** |

177| 自動 | 首次啟動。任何**是**在您的使用者設定中記錄同意,稍後啟動無需提示即可啟動。當 ultracode 啟用時完全跳過 |

178| 繞過權限、`claude -p`、Agent SDK | 從不。執行立即啟動 |

179 

180在桌面應用程式中,批准卡顯示工作流程名稱、階段列表和令牌使用警告,具有**一次**、**始終**和**拒絕**動作。進度檢視出現在背景任務側窗格中。

181 

182您的權限模式僅控制上面的啟動提示。工作流程生成的子代理始終在 `acceptEdits` 模式下執行,並繼承您的[工具允許清單](/zh-TW/settings#permission-settings),無論您的工作階段模式如何。檔案編輯自動批准。

183 

184Shell 命令、網路獲取和不在您允許清單中的 MCP 工具仍可在執行中提示您。要在長時間執行時避免這種情況,請在啟動前將代理需要的命令新增到您的允許清單。

185 

186在 `claude -p` 和 Agent SDK 中沒有人提示,因此工具呼叫遵循您配置的權限規則,無需互動確認。

187 

188<h3 id="save-the-workflow-for-reuse">

189 儲存工作流程以供重複使用

190</h3>

191 

192當 Claude 為您將重複的任務編寫工作流程時,您可以將該執行的指令碼儲存為命令。一個您在每個分支上執行的審查流程然後每次執行相同的協調。

193 

194執行 `/workflows`,選擇您想保留的執行,然後按 `s`。在儲存對話中,Tab 在兩個儲存位置之間切換:

195 

196* `.claude/workflows/` 在您的專案中:與克隆儲存庫的每個人共享

197* `~/.claude/workflows/` 在您的主目錄中:在每個專案中可用,僅對您可見

198 

199按 Enter 儲存。工作流程在未來工作階段中從任一位置作為 `/<name>` 執行。

200 

201如果專案工作流程和個人工作流程共享名稱,則執行專案工作流程。

202 

203<h3 id="pass-input-to-a-saved-workflow">

204 將輸入傳遞給已儲存的工作流程

205</h3>

206 

207已儲存的工作流程可以通過 `args` 參數接受輸入。指令碼將其讀取為名為 `args` 的全域變數。使用此功能在調用時提供研究問題、目標路徑清單或配置物件,而不是為每次執行編輯指令碼。

208 

209以下提示使用問題編號清單執行已儲存的工作流程:

210 

211```text theme={null}

212> Run /triage-issues on issues 1024, 1025, and 1030

213```

214 

215Claude 將清單作為結構化資料傳遞,因此指令碼可以直接在 `args` 上呼叫陣列和物件方法,無需先解析它。如果省略 `args`,全域變數在指令碼內為 `undefined`。

216 

217<h2 id="how-a-workflow-runs">

218 工作流程如何執行

219</h2>

220 

221工作流程執行時期在隔離環境中執行指令碼,與您的對話分開。中間結果保留在指令碼變數中,而不是進入 Claude 的上下文。

222 

223每次執行都會將其指令碼寫入您工作階段目錄下的 `~/.claude/projects/` 中的檔案。執行開始時 Claude 會收到該路徑,因此您可以要求它。您可以開啟該檔案以讀取 Claude 編寫的協調指令碼,將其與先前執行的指令碼進行比較,或編輯它並要求 Claude 從編輯後的版本重新啟動。

224 

225執行時期在執行進行時追蹤每個代理的結果,這是使執行在同一工作階段中[可恢復](#resume-after-a-pause)的原因。

226 

227<h3 id="behavior-and-limits">

228 行為和限制

229</h3>

230 

231執行時期應用以下約束:

232 

233| 約束 | 為什麼 |

234| :--------------------------- | :----------------------------------------- |

235| 無中途使用者輸入 | 只有代理權限提示可以暫停執行。對於階段之間的簽核,將每個階段作為其自己的工作流程執行 |

236| 無來自工作流程本身的直接檔案系統或 shell 存取 | 代理讀取、寫入和執行命令。指令碼協調代理 |

237| 最多 16 個並行代理,在 CPU 核心有限的機器上更少 | 限制本地資源使用 |

238| 每次執行 1,000 個代理 | 防止失控迴圈 |

239 

240<h2 id="manage-runs">

241 管理執行

242</h2>

243 

244執行啟動後,您從 `/workflows` 檢視或通過展開輸入框下方任務面板中的進度線來管理它。

245 

246<h3 id="resume-after-a-pause">

247 暫停後恢復

248</h3>

249 

250如果您停止執行,您可以恢復它:已完成的代理返回其快取結果,其餘的實時執行。從 `/workflows` 恢復暫停的執行,方法是選擇它並按 `p`,或要求 Claude 使用相同指令碼重新啟動工作流程。

251 

252恢復在同一 Claude Code 工作階段內工作。如果您在工作流程執行時退出 Claude Code,下一個工作階段將重新啟動工作流程。

253 

254<h3 id="cost">

255 成本

256</h3>

257 

258工作流程生成許多代理,因此單次執行可以使用比在對話中完成相同任務更多的令牌。執行計入您的方案使用量和速率限制,如任何其他工作階段。

259 

260為了在提交大型任務前評估支出,請先在小片段上執行工作流程:一個目錄而不是整個儲存庫,或一個狹隘的問題而不是廣泛的問題。`/workflows` 檢視顯示每個代理的令牌使用量,隨著執行進行,您可以隨時在那裡停止執行而不會丟失已完成的工作。執行時間的[代理上限](#behavior-and-limits)限制單次執行可以生成多少個代理,這限制了失控指令碼的成本。

261 

262工作流程中的每個代理使用您的工作階段模型,除非指令碼將階段路由到不同的模型。要控制模型成本:

263 

264* 在大型執行前檢查 `/model`,如果您通常為日常工作切換到較小的模型

265* 當您描述任務時,要求 Claude 為不需要最強模型的階段使用較小的模型

266 

267<h3 id="turn-workflows-off">

268 關閉工作流程

269</h3>

270 

271工作流程在 CLI、桌面應用程式、IDE 擴充功能、[非互動模式](/zh-TW/headless)與 `claude -p` 和 [Agent SDK](/zh-TW/agent-sdk/overview) 中可用。相同的禁用設定適用於每個表面。

272 

273要為自己關閉工作流程:

274 

275* 在 `/config` 中切換 Dynamic workflows 關閉。在工作階段中持續。

276* 在 `~/.claude/settings.json` 中設定 `"disableWorkflows": true`。在工作階段中持續。

277* 設定 `CLAUDE_CODE_DISABLE_WORKFLOWS=1`。在啟動時讀取,因此它適用於您設定它的任何位置。

278 

279要為整個組織關閉工作流程,在[受管設定](/zh-TW/server-managed-settings)中設定 `"disableWorkflows": true`,或使用 [Claude Code 管理員設定](https://claude.ai/admin-settings/claude-code)頁面上的切換。

280 

281禁用工作流程時,捆綁的工作流程命令不可用,`ultracode` 關鍵字不再觸發執行,`ultracode` 從 `/effort` 功能表中移除。

282 

283<h2 id="related-resources">

284 相關資源

285</h2>

286 

287* [並行執行代理](/zh-TW/agents):比較子代理、代理檢視、代理團隊和工作流程

288* [建立自訂子代理](/zh-TW/sub-agents):工作流程協調的工作者原始類型

289* [管理成本](/zh-TW/costs):多代理執行如何計入使用限制

worktrees.md +30 −12

Details

12 12 

13Worktrees 是執行 Claude 平行處理的幾種方式之一。它們隔離檔案編輯,而[子代理](/zh-TW/sub-agents)和[代理團隊](/zh-TW/agent-teams)協調工作本身。請參閱[平行執行代理](/zh-TW/agents)以比較這些方法,或跳到[使用 worktrees 隔離子代理](#isolate-subagents-with-worktrees)以同時使用 worktrees 和子代理。13Worktrees 是執行 Claude 平行處理的幾種方式之一。它們隔離檔案編輯,而[子代理](/zh-TW/sub-agents)和[代理團隊](/zh-TW/agent-teams)協調工作本身。請參閱[平行執行代理](/zh-TW/agents)以比較這些方法,或跳到[使用 worktrees 隔離子代理](#isolate-subagents-with-worktrees)以同時使用 worktrees 和子代理。

14 14 

15## 在 worktree 中啟動 Claude15<h2 id="start-claude-in-a-worktree">

16 在 worktree 中啟動 Claude

17</h2>

16 18 

17傳遞 `--worktree` 或 `-w` 以建立隔離的 worktree 並在其中啟動 Claude。預設情況下,worktree 在您的儲存庫根目錄下的 `.claude/worktrees/<value>/` 下建立,在名為 `worktree-<value>` 的新分支上:19傳遞 `--worktree` 或 `-w` 以建立隔離的 worktree 並在其中啟動 Claude。預設情況下,worktree 在您的儲存庫根目錄下的 `.claude/worktrees/<value>/` 下建立,在名為 `worktree-<value>` 的新分支上:

18 20 


32claude --worktree34claude --worktree

33```35```

34 36 

35您也可以在會話期間要求 Claude「在 worktree 中工作」,它將使用 [`EnterWorktree`](/zh-TW/tools-reference) 工具建立一個。37您也可以在會話期間要求 Claude「在 worktree 中工作」,它將使用 [`EnterWorktree`](/zh-TW/tools-reference) 工具建立一個。進入 worktree 後,Claude 可以透過呼叫 `EnterWorktree` 並指定目標路徑,直接切換到 `.claude/worktrees/` 下的另一個 worktree。前一個 worktree 保持在磁碟上未被觸及。

36 38 

37在第一次在目錄中使用 `--worktree` 之前,請透過在該目錄中執行一次 `claude` 來接受工作區信任對話。如果尚未接受信任,`--worktree` 將以錯誤退出並提示您先在目錄中執行 `claude`,包括與 `-p` 結合時。39在第一次在目錄中使用 `--worktree` 之前,請透過在該目錄中執行一次 `claude` 來接受工作區信任對話。如果尚未接受信任,`--worktree` 將以錯誤退出並提示您先在目錄中執行 `claude`,包括與 `-p` 結合時。

38 40 


40 將 `.claude/worktrees/` 新增到您的 `.gitignore`,以便 worktree 內容不會在您的主要檢出中顯示為未追蹤的檔案。42 將 `.claude/worktrees/` 新增到您的 `.gitignore`,以便 worktree 內容不會在您的主要檢出中顯示為未追蹤的檔案。

41</Tip>43</Tip>

42 44 

43### 選擇基礎分支45<h3 id="choose-the-base-branch">

46 選擇基礎分支

47</h3>

44 48 

45Worktrees 從您的儲存庫的預設分支 `origin/HEAD` 分支,因此它們從與遠端相符的乾淨樹開始。如果未配置遠端或提取失敗,worktree 會回退到您目前的本地 `HEAD`。要始終從本地 `HEAD` 分支,請在[設定](/zh-TW/settings#worktree-settings)中將 `worktree.baseRef` 設定為 `"head"`。將 `baseRef` 設定為 `"head"` 會使新 worktrees 帶有您未推送的提交和功能分支狀態,這在隔離需要在進行中的工作上操作的子代理時很有用。該設定僅接受 `"fresh"` 或 `"head"`,不接受任意 git refs:49Worktrees 從您的儲存庫的預設分支 `origin/HEAD` 分支,因此它們從與遠端相符的乾淨樹開始。如果未配置遠端或提取失敗,worktree 會回退到您目前的本地 `HEAD`。要始終從本地 `HEAD` 分支,請在[設定](/zh-TW/settings#worktree-settings)中將 `worktree.baseRef` 設定為 `"head"`。將 `baseRef` 設定為 `"head"` 會使新 worktrees 帶有您未推送的提交和功能分支狀態,這在隔離需要在進行中的工作上操作的子代理時很有用。該設定僅接受 `"fresh"` 或 `"head"`,不接受任意 git refs:

46 50 


60 64 

61為了完全控制 worktrees 的建立方式,請配置 [`WorktreeCreate` hook](/zh-TW/hooks#worktreecreate),它完全取代預設的 `git worktree` 邏輯。65為了完全控制 worktrees 的建立方式,請配置 [`WorktreeCreate` hook](/zh-TW/hooks#worktreecreate),它完全取代預設的 `git worktree` 邏輯。

62 66 

63## 將 gitignored 檔案複製到 worktrees67<h2 id="copy-gitignored-files-into-worktrees">

68 將 gitignored 檔案複製到 worktrees

69</h2>

64 70 

65Worktree 是一個新的檢出,因此來自您主要儲存庫的未追蹤檔案(如 `.env` 或 `.env.local`)不存在。要在 Claude 建立 worktree 時自動複製它們,請將 `.worktreeinclude` 檔案新增到您的專案根目錄。71Worktree 是一個新的檢出,因此來自您主要儲存庫的未追蹤檔案(如 `.env` 或 `.env.local`)不存在。要在 Claude 建立 worktree 時自動複製它們,請將 `.worktreeinclude` 檔案新增到您的專案根目錄。

66 72 


76 82 

77這適用於使用 `--worktree` 建立的 worktrees、[子代理 worktrees](#isolate-subagents-with-worktrees) 和[桌面應用程式](/zh-TW/desktop#work-in-parallel-with-sessions)中的平行會話。83這適用於使用 `--worktree` 建立的 worktrees、[子代理 worktrees](#isolate-subagents-with-worktrees) 和[桌面應用程式](/zh-TW/desktop#work-in-parallel-with-sessions)中的平行會話。

78 84 

79## 使用 worktrees 隔離子代理85<h2 id="isolate-subagents-with-worktrees">

86 使用 worktrees 隔離子代理

87</h2>

80 88 

81子代理可以在自己的 worktrees 中執行,以便平行編輯不會衝突。要求 Claude「為您的代理使用 worktrees」,或通過將 `isolation: worktree` 新增到 frontmatter 在[自訂子代理](/zh-TW/sub-agents#supported-frontmatter-fields)上永久設定它。每個子代理都會獲得一個臨時 worktree,當子代理完成而沒有變更時會自動移除。89子代理可以在自己的 worktrees 中執行,以便平行編輯不會衝突。要求 Claude「為您的代理使用 worktrees」,或通過將 `isolation: worktree` 新增到 frontmatter 在[自訂子代理](/zh-TW/sub-agents#supported-frontmatter-fields)上永久設定它。每個子代理都會獲得一個臨時 worktree,當子代理完成而沒有變更時會自動移除。

82 90 

83## 清理 worktrees91子代理 worktrees 使用與 `--worktree` 相同的[基礎分支](#choose-the-base-branch),因此它們從您的儲存庫的預設分支分支,除非 `worktree.baseRef` 設定為 `"head"`。

92 

93<h2 id="clean-up-worktrees">

94 清理 worktrees

95</h2>

84 96 

85當您退出 worktree 會話時,清理取決於您是否進行了變更:97當您退出 worktree 會話時,清理取決於您是否進行了變更:

86 98 

87* **無變更**:worktree 及其分支會自動移除99* **無未提交的變更、無未追蹤的檔案且無新提交**:worktree 及其分支會自動移除。如果會話有[名稱](/zh-TW/sessions#name-your-sessions),Claude 會改為提示您,以便您可以稍後保留 worktree

88* **存在變更或提交**:Claude 會提示您保留或移除 worktree。保留會保留目錄和分支,以便您稍後可以返回。移除會刪除 worktree 目錄及其分支,丟棄所有未提交的變更和提交100* **存在未提交的變更、未追蹤的檔案或新提交**:Claude 會提示您保留或移除 worktree。保留會保留目錄和分支,以便您稍後可以返回。移除會刪除 worktree 目錄及其分支,丟棄所有未提交的變更、未追蹤的檔案和提交

89* **非互動式執行**:使用 `--worktree` 與 `-p` 一起建立的 worktrees 不會自動清理,因為沒有退出提示。使用 `git worktree remove` 移除它們101* **非互動式執行**:使用 `--worktree` 與 `-p` 一起建立的 worktrees 不會自動清理,因為沒有退出提示。使用 `git worktree remove` 移除它們

90 102 

91由崩潰或中斷的執行孤立的子代理 worktrees 會在啟動時移除,一旦它們超過您的 [`cleanupPeriodDays`](/zh-TW/settings#available-settings) 設定,前提是它們沒有未提交的變更、沒有未追蹤的檔案和沒有未推送的提交。您使用 `--worktree` 建立的 Worktrees 永遠不會被此掃描移除。103Claude 為子代理和[背景會話](/zh-TW/agent-view#how-file-edits-are-isolated)建立的 Worktrees 一旦超過您的 [`cleanupPeriodDays`](/zh-TW/settings#available-settings) 設定,就會自動移除,前提是它們沒有未提交的變更、沒有未追蹤的檔案和沒有未推送的提交。您使用 `--worktree` 建立的 Worktrees 永遠不會被此掃描移除。

92 104 

93## 手動管理 worktrees105<h2 id="manage-worktrees-manually">

106 手動管理 worktrees

107</h2>

94 108 

95為了完全控制 worktree 位置和分支配置,請直接使用 Git 建立 worktrees。當您需要檢出特定的現有分支或將 worktree 放在儲存庫外時,這很有用。109為了完全控制 worktree 位置和分支配置,請直接使用 Git 建立 worktrees。當您需要檢出特定的現有分支或將 worktree 放在儲存庫外時,這很有用。

96 110 


126 140 

127有關完整的命令參考,請參閱 [Git worktree 文件](https://git-scm.com/docs/git-worktree)。記住在每個新 worktree 中初始化您的開發環境:安裝依賴項、設定虛擬環境或執行您的專案設定所需的任何操作。141有關完整的命令參考,請參閱 [Git worktree 文件](https://git-scm.com/docs/git-worktree)。記住在每個新 worktree 中初始化您的開發環境:安裝依賴項、設定虛擬環境或執行您的專案設定所需的任何操作。

128 142 

129## 非 git 版本控制143<h2 id="non-git-version-control">

144 非 git 版本控制

145</h2>

130 146 

131Worktree 隔離預設使用 git。對於 SVN、Perforce、Mercurial 或其他系統,請配置 [`WorktreeCreate` 和 `WorktreeRemove` hooks](/zh-TW/hooks#worktreecreate) 以提供自訂建立和清理邏輯。因為 hook 取代了預設的 git 行為,當您使用 `--worktree` 時,[`.worktreeinclude`](#copy-gitignored-files-into-worktrees) 不會被處理。改為在您的 hook 指令碼內複製任何本地配置檔案。147Worktree 隔離預設使用 git。對於 SVN、Perforce、Mercurial 或其他系統,請配置 [`WorktreeCreate` 和 `WorktreeRemove` hooks](/zh-TW/hooks#worktreecreate) 以提供自訂建立和清理邏輯。因為 hook 取代了預設的 git 行為,當您使用 `--worktree` 時,[`.worktreeinclude`](#copy-gitignored-files-into-worktrees) 不會被處理。改為在您的 hook 指令碼內複製任何本地配置檔案。

132 148 


151 167 

152將其與 `WorktreeRemove` hook 配對以在會話結束時進行清理。有關輸入架構和移除範例,請參閱 [hooks 參考](/zh-TW/hooks#worktreecreate)。168將其與 `WorktreeRemove` hook 配對以在會話結束時進行清理。有關輸入架構和移除範例,請參閱 [hooks 參考](/zh-TW/hooks#worktreecreate)。

153 169 

154## 另請參閱170<h2 id="see-also">

171 另請參閱

172</h2>

155 173 

156Worktrees 處理檔案隔離。下面的相關頁面涵蓋將工作委派到這些隔離的檢出中以及在您建立的會話之間切換:174Worktrees 處理檔案隔離。下面的相關頁面涵蓋將工作委派到這些隔離的檢出中以及在您建立的會話之間切換:

157 175 

Details

17 17 

18Claude for Enterprise 上 Claude Code 的 ZDR 僅適用於 Anthropic 的直接平台。對於在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上的 Claude 部署,請參考這些平台的數據保留政策。18Claude for Enterprise 上 Claude Code 的 ZDR 僅適用於 Anthropic 的直接平台。對於在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上的 Claude 部署,請參考這些平台的數據保留政策。

19 19 

20## ZDR 範圍20<h2 id="zdr-scope">

21 ZDR 範圍

22</h2>

21 23 

22ZDR 涵蓋 Claude for Enterprise 上的 Claude Code 推理。24ZDR 涵蓋 Claude for Enterprise 上的 Claude Code 推理。

23 25 


25 ZDR 在每個組織的基礎上啟用。每個新組織都需要由您的 Anthropic 帳戶團隊單獨啟用 ZDR。ZDR 不會自動應用於在同一帳戶下創建的新組織。請聯繫您的帳戶團隊為任何新組織啟用 ZDR。27 ZDR 在每個組織的基礎上啟用。每個新組織都需要由您的 Anthropic 帳戶團隊單獨啟用 ZDR。ZDR 不會自動應用於在同一帳戶下創建的新組織。請聯繫您的帳戶團隊為任何新組織啟用 ZDR。

26</Warning>28</Warning>

27 29 

28### ZDR 涵蓋的內容30<h3 id="what-zdr-covers">

31 ZDR 涵蓋的內容

32</h3>

29 33 

30ZDR 涵蓋通過 Claude for Enterprise 上的 Claude Code 進行的模型推理調用。當您在終端中使用 Claude Code 時,您發送的提示和 Claude 生成的回應不會由 Anthropic 保留。無論使用哪個 Claude 模型,這都適用。34ZDR 涵蓋通過 Claude for Enterprise 上的 Claude Code 進行的模型推理調用。當您在終端中使用 Claude Code 時,您發送的提示和 Claude 生成的回應不會由 Anthropic 保留。無論使用哪個 Claude 模型,這都適用。

31 35 

32### ZDR 不涵蓋的內容36<h3 id="what-zdr-does-not-cover">

37 ZDR 不涵蓋的內容

38</h3>

33 39 

34即使對於啟用了 ZDR 的組織,ZDR 也不適用於以下內容。這些功能遵循[標準數據保留政策](/zh-TW/data-usage#data-retention):40即使對於啟用了 ZDR 的組織,ZDR 也不適用於以下內容。這些功能遵循[標準數據保留政策](/zh-TW/data-usage#data-retention):

35 41 


41| 用戶和座位管理 | 管理數據(例如帳戶電子郵件和座位分配)根據標準政策保留。 |47| 用戶和座位管理 | 管理數據(例如帳戶電子郵件和座位分配)根據標準政策保留。 |

42| 第三方集成 | 由第三方工具、MCP servers 或其他外部集成處理的數據不受 ZDR 保護。請獨立審查這些服務的數據處理實踐。 |48| 第三方集成 | 由第三方工具、MCP servers 或其他外部集成處理的數據不受 ZDR 保護。請獨立審查這些服務的數據處理實踐。 |

43 49 

44## ZDR 下禁用的功能50<h2 id="features-disabled-under-zdr">

51 ZDR 下禁用的功能

52</h2>

45 53 

46當為 Claude for Enterprise 上的 Claude Code 組織啟用 ZDR 時,某些需要存儲提示或完成的功能會在後端級別自動禁用:54當為 Claude for Enterprise 上的 Claude Code 組織啟用 ZDR 時,某些需要存儲提示或完成的功能會在後端級別自動禁用:

47 55 


55 63 

56如果未來的功能需要存儲提示或完成,它們也可能被禁用。64如果未來的功能需要存儲提示或完成,它們也可能被禁用。

57 65 

58## 政策違規的數據保留66<h2 id="data-retention-for-policy-violations">

67 政策違規的數據保留

68</h2>

59 69 

60即使啟用了 ZDR,Anthropic 也可能在法律要求或解決使用政策違規時保留數據。如果會話因政策違規而被標記,Anthropic 可能會保留相關的輸入和輸出長達 2 年,與 Anthropic 的標準 ZDR 政策一致。70即使啟用了 ZDR,Anthropic 也可能在法律要求或解決使用政策違規時保留數據。如果會話因政策違規而被標記,Anthropic 可能會保留相關的輸入和輸出長達 2 年,與 Anthropic 的標準 ZDR 政策一致。

61 71 

62## 請求 ZDR72<h2 id="request-zdr">

73 請求 ZDR

74</h2>

63 75 

64要為 Claude for Enterprise 上的 Claude Code 請求 ZDR,請[聯繫銷售](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request)或您的 Anthropic 帳戶團隊。您的帳戶團隊將在內部提交請求,Anthropic 將在確認符合條件後在您的組織上審查並啟用 ZDR。所有啟用操作都會被審計記錄。76要為 Claude for Enterprise 上的 Claude Code 請求 ZDR,請[聯繫銷售](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request)或您的 Anthropic 帳戶團隊。您的帳戶團隊將在內部提交請求,Anthropic 將在確認符合條件後在您的組織上審查並啟用 ZDR。所有啟用操作都會被審計記錄。

65 77