SpyBara
Go Premium

Documentation 2026-06-16 21:57 UTC to 2026-06-17 17:02 UTC

116 files changed +8,216 −1,417. 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 +24 −9

Details

22| [設定使用情況可見性](#set-up-usage-visibility) | 您如何追蹤支出和採用情況 | [Analytics](/zh-TW/analytics)、[Monitoring](/zh-TW/monitoring-usage)、[Costs](/zh-TW/costs) |22| [設定使用情況可見性](#set-up-usage-visibility) | 您如何追蹤支出和採用情況 | [Analytics](/zh-TW/analytics)、[Monitoring](/zh-TW/monitoring-usage)、[Costs](/zh-TW/costs) |

23| [檢查資料處理](#review-data-handling) | 資料保留和合規狀況 | [Data usage](/zh-TW/data-usage)、[Security](/zh-TW/security) |23| [檢查資料處理](#review-data-handling) | 資料保留和合規狀況 | [Data usage](/zh-TW/data-usage)、[Security](/zh-TW/security) |

24 24 

25## 選擇您的 API 提供者25<h2 id="choose-your-api-provider">

26 選擇您的 API 提供者

27</h2>

26 28 

27Claude Code 透過多個 API 提供者之一連接到 Claude。您的選擇會影響計費、驗證、您繼承的合規狀況,以及您的開發人員可以使用的 Claude Code 功能。29Claude Code 透過多個 API 提供者之一連接到 Claude。您的選擇會影響計費、驗證、您繼承的合規狀況,以及您的開發人員可以使用的 Claude Code 功能。

28 30 


40 42 

41無論提供者如何,[網路配置](/zh-TW/network-config) 中的代理和防火牆要求都適用。如果您想要在多個提供者前面有單一端點或集中式請求日誌記錄,請參閱 [LLM gateway](/zh-TW/llm-gateway)。43無論提供者如何,[網路配置](/zh-TW/network-config) 中的代理和防火牆要求都適用。如果您想要在多個提供者前面有單一端點或集中式請求日誌記錄,請參閱 [LLM gateway](/zh-TW/llm-gateway)。

42 44 

43## 決定設定如何到達裝置45<h2 id="decide-how-settings-reach-devices">

46 決定設定如何到達裝置

47</h2>

44 48 

45受管設定定義優先於本地開發人員配置的政策。Claude Code 在四個位置尋找它們並使用在給定裝置上找到的第一個49受管設定定義優先於本地開發人員配置的政策。Claude Code 按優先順序檢查以下四個來源並應用第一個傳回非空配置的來源

46 50 

47| 機制 | 傳遞 | 優先級 | 平台 |51| 機制 | 傳遞 | 優先級 | 平台 |

48| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-- | :------------ |52| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-- | :------------ |


61 65 

62請參閱 [Server-managed settings](/zh-TW/server-managed-settings) 和 [Settings files and precedence](/zh-TW/settings#settings-files)。66請參閱 [Server-managed settings](/zh-TW/server-managed-settings) 和 [Settings files and precedence](/zh-TW/settings#settings-files)。

63 67 

64## 決定要執行什麼68<h2 id="decide-what-to-enforce">

69 決定要執行什麼

70</h2>

65 71 

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

67 73 


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

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

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

86| [Required version range](/zh-TW/settings) | 當執行版本超出組織核准範圍時,完全拒絕啟動。比 `minimumVersion` 更強大,後者只會阻止降級 | `requiredMinimumVersion`、`requiredMaximumVersion` |

80 87 

81權限規則和沙箱涵蓋不同的層。拒絕 WebFetch 會阻止 Claude 的 fetch 工具,但如果允許 Bash,`curl` 和 `wget` 仍然可以到達任何 URL。沙箱透過在作業系統級別執行的網路網域允許清單來彌補這一差距。88權限規則和沙箱涵蓋不同的層。拒絕 WebFetch 會阻止 Claude 的 fetch 工具,但如果允許 Bash,`curl` 和 `wget` 仍然可以到達任何 URL。沙箱透過在作業系統級別執行的網路網域允許清單來彌補這一差距。

82 89 

83有關這些控制防禦的威脅模型,請參閱 [Security](/zh-TW/security)。90有關這些控制防禦的威脅模型,請參閱 [Security](/zh-TW/security)。

84 91 

85## 設定使用情況可見性92<h2 id="set-up-usage-visibility">

93 設定使用情況可見性

94</h2>

86 95 

87根據您需要報告的內容選擇監控。96根據您需要報告的內容選擇監控。

88 97 


94 103 

95雲端提供者透過 AWS Cost Explorer、GCP Billing 或 Azure Cost Management 公開支出。Claude for Teams 和 Enterprise 計畫在 [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) 包含使用情況儀表板。104雲端提供者透過 AWS Cost Explorer、GCP Billing 或 Azure Cost Management 公開支出。Claude for Teams 和 Enterprise 計畫在 [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code) 包含使用情況儀表板。

96 105 

97## 檢查資料處理106<h2 id="review-data-handling">

107 檢查資料處理

108</h2>

98 109 

99在 Team、Enterprise、Claude API 和雲端提供者計畫上,Anthropic 不會在您的程式碼或提示上訓練模型。您的 API 提供者決定保留和合規狀況。110在 Team、Enterprise、Claude API 和雲端提供者計畫上,Anthropic 不會在您的程式碼或提示上訓練模型。您的 API 提供者決定保留和合規狀況。

100 111 


106 117 

107如果您需要請求級別的稽核日誌記錄或按資料敏感性路由流量,請在開發人員和您的提供者之間放置 [LLM gateway](/zh-TW/llm-gateway)。有關法規要求和認證,請參閱 [Legal and compliance](/zh-TW/legal-and-compliance)。118如果您需要請求級別的稽核日誌記錄或按資料敏感性路由流量,請在開發人員和您的提供者之間放置 [LLM gateway](/zh-TW/llm-gateway)。有關法規要求和認證,請參閱 [Legal and compliance](/zh-TW/legal-and-compliance)。

108 119 

109## 驗證和上線120<h2 id="verify-and-onboard">

121 驗證和上線

122</h2>

110 123 

111配置受管設定後,讓開發人員在 Claude Code 內執行 `/status`。輸出包括以 `Enterprise managed settings` 開頭的一行,後面是括號中的來源,其中之一為 `(remote)`、`(plist)`、`(HKLM)`、`(HKCU)` 或 `(file)`。請參閱 [驗證作用中的設定](/zh-TW/settings#verify-active-settings)。124配置受管設定後,讓開發人員在 Claude Code 內執行 `/status`。 **Status** 標籤上,`Setting sources` 行顯示 `Enterprise managed settings` 後面跟著括號中的來源,其中之一為 `(remote)`、`(plist)`、`(HKLM)`、`(HKCU)` 或 `(file)`。請參閱 [驗證作用中的設定](/zh-TW/settings#verify-active-settings)。

112 125 

113分享這些資源以幫助開發人員入門:126分享這些資源以幫助開發人員入門:

114 127 


124 137 

125如果開發人員看到「您尚未被新增到您的組織」,他們的座位不包括 Claude Code 存取權限,需要在管理員控制台中更新。138如果開發人員看到「您尚未被新增到您的組織」,他們的座位不包括 Claude Code 存取權限,需要在管理員控制台中更新。

126 139 

127## 後續步驟140<h2 id="next-steps">

141 後續步驟

142</h2>

128 143 

129選擇提供者和傳遞機制後,繼續進行詳細配置:144選擇提供者和傳遞機制後,繼續進行詳細配置:

130 145 

advisor.md +198 −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=advisor providers=anthropic */}

10 

11<Note>

12 顧問工具是實驗性功能,需要 Claude Code v2.1.98 或更新版本搭配 Anthropic API。它在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上不可用。行為、定價和可用性可能會變更。

13</Note>

14 

15顧問工具讓 Claude 在任務期間的關鍵時刻諮詢第二個通常更強大的模型,例如在提交方案前、遇到重複錯誤時,或在宣佈任務完成前。顧問會收到完整的對話記錄,包括每個工具呼叫和結果,並返回 Claude 在繼續前應用的指導。

16 

17顧問在 Anthropic 基礎設施上以伺服器端方式運行,作為[伺服器工具](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool),可供訂閱和 API 計費帳戶使用。您選擇哪個模型充當顧問,Claude 決定何時呼叫它。

18 

19本頁涵蓋如何啟用顧問、接受哪些模型配對、Claude 在諮詢期間顯示什麼,以及顧問使用如何計費。

20 

21<h2 id="when-to-use-the-advisor">

22 何時使用顧問

23</h2>

24 

25顧問適合長期、多步驟的任務,其中大多數輪次是例行的,但計畫品質決定結果。範例包括大型重構、錯誤不斷重複的除錯會話,以及您希望在 Claude 宣佈完成前獨立檢查的任務。

26 

27在短期任務(幾乎沒有計畫空間)或每個輪次都需要最強模型的工作上,它的價值較少。對於這些情況,[切換主要模型](/zh-TW/model-config#setting-your-model),或查看[顧問與 opusplan 和子代理的比較](#compare-with-related-features)以了解獲取第二意見的其他方式。

28 

29<h2 id="enable-the-advisor">

30 啟用顧問

31</h2>

32 

33您可以透過三種方式設定顧問模型:

34 

35* **`/advisor` 命令**:在會話中途設定或變更顧問,並將其儲存為預設值

36* **`advisorModel` 設定**:在您的[設定檔](/zh-TW/settings)中配置持久預設值

37* **`--advisor` 旗標**:在啟動時為單一會話設定顧問

38 

39如果其中任何一個設定了顧問模型,則對於主要模型[支援它](#choose-an-advisor-model)的會話,顧問會被啟用。若要停止使用它,請參閱[關閉顧問](#turn-the-advisor-off)。

40 

41<Note>

42 若要使用 Fable 5 作為顧問,您需要 Claude Code v2.1.170 或更新版本以及您的組織的 [Fable 5 存取權](/zh-TW/model-config#work-with-fable-5)。

43</Note>

44 

45<h3 id="use-the-/advisor-command">

46 使用 `/advisor` 命令

47</h3>

48 

49執行 `/advisor` 而不帶引數以開啟列出可用顧問模型的選擇器,或直接傳遞模型:

50 

51```

52/advisor opus

53```

54 

55您的選擇會儲存到使用者設定中的 `advisorModel`,並在會話間保持。如果您目前的主要模型不支援顧問,選擇仍會被儲存,並在您使用 [`/model`](/zh-TW/model-config#setting-your-model) 切換到[相容的主要模型](#choose-an-advisor-model)時啟動。

56 

57<h3 id="set-advisormodel-in-settings">

58 在設定中設定 `advisorModel`

59</h3>

60 

61若要在不開啟會話的情況下將顧問配置為預設值,請在設定檔中設定它:

62 

63```json theme={null}

64{

65 "advisorModel": "opus"

66}

67```

68 

69<h3 id="use-the-advisor-flag">

70 使用 `--advisor` 旗標

71</h3>

72 

73若要為單一會話設定顧問而不變更已儲存的設定,請使用旗標啟動:

74 

75```bash theme={null}

76claude --advisor opus

77```

78 

79該旗標在該會話中優先於 `advisorModel` 設定。與 `/advisor` 不同(後者會儲存非作用中的選擇),如果會話的主要模型不支援顧問,旗標會以錯誤退出。

80 

81<h2 id="choose-an-advisor-model">

82 選擇顧問模型

83</h2>

84 

85顧問的能力必須至少與主要模型相同。每個主要模型接受的顧問為:

86 

87| 主要模型 | 接受的顧問 | 備註 |

88| ----------------------------------------------- | ------------------------ | ------------------------------- |

89| Haiku 4.5 | Fable、Opus、Sonnet | Haiku 可以呼叫顧問但不能充當顧問 |

90| Sonnet 4.6 | Fable、Opus、Sonnet | |

91| Opus 4.6 或更新版本 | Fable、Opus(版本在主要模型版本或以上) | Opus 4.7 主要模型搭配 Opus 4.6 顧問會被拒絕 |

92| Fable 5 ({/* min-version: 2.1.170 */}v2.1.170+) | Fable | Opus 或 Sonnet 顧問會被拒絕 |

93 

94Fable 5 需要 Claude Code v2.1.170 或更新版本以及 Fable 5 存取權,無論它是充當主要模型還是顧問。

95 

96將顧問設定為 `opus`、`sonnet` 或 `fable`。這些別名解析為每個模型的最新版本。您也可以傳遞完整的模型 ID,例如 `claude-opus-4-8`。

97 

98子代理繼承已設定的顧問,並針對其自身模型應用相同的配對檢查。

99 

100Claude Code 在傳送請求前驗證配對:

101 

102* 如果顧問的能力低於主要模型,顧問不會附加到主要模型的請求。`/advisor` 命令輸出和通知會顯示此情況。其自身模型滿足配對的子代理仍可使用顧問。

103* 如果主要模型或顧問是 Claude Code 無法識別的模型,顧問不會附加。

104 

105<h3 id="common-model-pairings">

106 常見模型配對

107</h3>

108 

109任何接受的配對都有效。這些組合以不同方式平衡成本與能力:

110 

111| 配對 | 何時使用 |

112| --------------------- | ---------------------------------------------------------------------------------- |

113| Sonnet 主要 + Opus 顧問 | Sonnet 處理例行工作,並將計畫、模糊失敗和完成檢查升級到 Opus |

114| Sonnet 主要 + Fable 顧問 | 在決策點獲得 Fable 5 指導,而無需全程執行 Fable 5。需要 v2.1.170 或更新版本以及 Fable 5 存取權 |

115| Haiku 主要 + Opus 顧問 | 具有強大計畫的最低成本主要模型。預期成本高於單獨使用 Haiku,但低於將主要模型切換到 Sonnet 或 Opus |

116| Opus 主要 + Opus 顧問 | 第二個 Opus 審查第一個。適用於獨立檢查比成本更重要的高風險任務 |

117| Fable 主要 + Fable 顧問 | 當 Fable 5 可用時(v2.1.170+)的最高能力配對。Fable 是比 Opus 和 Sonnet 更高的層級,因此是 Fable 主要模型唯一接受的顧問 |

118| Sonnet 主要 + Sonnet 顧問 | 用於捕捉例行疏漏的較低成本第二意見 |

119 

120<h2 id="when-claude-consults-the-advisor">

121 Claude 何時諮詢顧問

122</h2>

123 

124Claude 決定何時呼叫顧問。它傾向於在提交方案前、錯誤不斷重複時以及在宣佈任務完成前進行諮詢,但時機是由模型驅動而非基於規則的。

125 

126您可以在提示中要求諮詢,就像您會要求任何工具一樣,例如 `consult the advisor before you continue`。沒有設定來限制或強制顧問呼叫;如果您希望 Claude 在任務期間更頻繁或更少地諮詢顧問,請在您的指示中說明。

127 

128<h2 id="what-you-see-during-a-session">

129 會話期間您看到的內容

130</h2>

131 

132當 Claude 呼叫顧問時,文字記錄會在呼叫進行中顯示帶有顧問模型名稱的 `Advising` 行。當結果返回時,該行確認顧問已審查對話。按 `Ctrl+O` 展開它並閱讀顧問的完整指導。

133 

134Claude 通常遵循顧問的指導,但在其自身證據與特定聲明相矛盾時進行調整:如果建議的步驟在嘗試時失敗,或檔案內容與建議相矛盾,Claude 會表面衝突而不是無條件地遵循指導。

135 

136顧問始終收到完整的對話,Claude 控制時機。如需更多控制或不同的配置,請參閱[顧問與子代理和 opusplan 的比較](#compare-with-related-features)。

137 

138<h2 id="cost">

139 成本

140</h2>

141 

142每個顧問呼叫都會將對話發送到顧問模型,因此除了主要模型的使用外,還會以顧問模型的費率消耗代幣。使用 API 計費時,顧問代幣按顧問模型的輸入和輸出費率計費。在訂閱計畫上,顧問使用計入您計畫的使用限制。

143 

144Claude 在決策點而非每個輪次都呼叫顧問,因此將更快的主要模型與更強大的顧問配對通常比全程執行更強大的模型成本更低。顧問使用計入 [`/usage`](/zh-TW/costs#track-your-costs) 顯示的會話總計。

145 

146有關顧問代幣如何在 API 回應中報告的資訊,請參閱 Claude API 文件中的[使用和計費](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#usage-and-billing)。

147 

148<h2 id="impact-on-prompt-caching">

149 對提示快取的影響

150</h2>

151 

152在會話中途啟用或停用顧問不會使主要模型的[提示快取](/zh-TW/prompt-caching)失效。與[變更模型或努力等級](/zh-TW/prompt-caching#actions-that-invalidate-the-cache)不同,切換 `/advisor` 會保持快取的前綴完整,顧問返回的指導會在後續輪次中作為文字記錄的一部分被快取。

153 

154顧問模型自身對對話的讀取不會被快取。每個顧問呼叫都會全新處理完整的文字記錄,呼叫之間沒有重複使用。

155 

156<h2 id="requirements">

157 需求

158</h2>

159 

160顧問工具需要以下所有條件:

161 

162* **Claude Code v2.1.98 或更新版本**:執行 `claude update` 以升級。

163* **僅限 Anthropic API**:顧問是伺服器執行的工具。它在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 上不可用。透過配置有 `ANTHROPIC_BASE_URL` 的 [LLM 閘道](/zh-TW/llm-gateway),可用性取決於閘道是否將請求完整轉發到 Anthropic API。

164* **支援的主要模型**:Opus 4.6 或更新版本、Sonnet 4.6 或 Haiku 4.5。{/* min-version: 2.1.170 */}Fable 5 在 Claude Code v2.1.170 或更新版本上也符合條件。

165 

166<h2 id="turn-the-advisor-off">

167 關閉顧問

168</h2>

169 

170若要停止使用顧問並清除已儲存的 `advisorModel`,執行 `/advisor off` 或在 `/advisor` 選擇器中選擇 **No advisor**:

171 

172```

173/advisor off

174```

175 

176若要完全停用顧問工具,包括 `/advisor` 命令和 `--advisor` 旗標,設定 `CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`。請參閱[環境變數](/zh-TW/env-vars)。

177 

178<h2 id="compare-with-related-features">

179 與相關功能的比較

180</h2>

181 

182顧問是結合模型優勢的幾種方式之一。根據您希望何時涉及第二個模型來選擇。

183 

184| 方法 | 更強大的模型何時執行 | 如何啟動 |

185| -------------------------------------------------------- | ------------------------ | ----------------- |

186| 顧問工具 | 在任務中途的決策點 | Claude 在需要指導時呼叫它 |

187| [`opusplan`](/zh-TW/model-config#opusplan-model-setting) | 在計畫模式期間,然後切換到 Sonnet 以執行 | 您進入計畫模式 |

188| [子代理](/zh-TW/sub-agents#choose-a-model)搭配 `model` 設定 | 針對整個委派的子任務 | Claude 委派,或您呼叫子代理 |

189| [`/model`](/zh-TW/model-config#setting-your-model) | 針對所有後續輪次 | 您切換模型 |

190 

191<h2 id="see-also">

192 另請參閱

193</h2>

194 

195* [模型配置](/zh-TW/model-config):切換模型、設定努力等級並使用 `opusplan`

196* [有效管理成本](/zh-TW/costs):跨模型追蹤代幣使用

197* [Claude API 中的顧問工具](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool):了解基礎伺服器工具,或直接從 Messages API 使用它

198* [顧問策略](https://claude.com/blog/the-advisor-strategy):為什麼將快速主要模型與更強大的顧問配對有效

Details

16 16 

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

18 18 

19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-loop-diagram.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=1c6e8f28d80dba14a7287419656f1237" alt="代理程式迴圈提示進入、Claude 評估、分支到工具呼叫或最終答案" width="720" height="212" data-path="images/agent-loop-diagram.svg" />19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-loop-diagram.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=1c6e8f28d80dba14a7287419656f1237" alt="代理程式迴圈的圖表您的提示進入代理程式迴圈,Claude 評估並要求工具呼叫(其結果回饋到另一個評估中),或返回最終答案" width="720" height="212" data-path="images/agent-loop-diagram.svg" />

20 20 

211. **接收提示。** Claude 接收您的提示,以及系統提示、工具定義和對話歷史記錄。SDK 會產生一個 [`SystemMessage`](#message-types),其子類型為 `"init"`,包含工作階段中繼資料。211. **接收提示。** Claude 接收您的提示,以及系統提示、工具定義和對話歷史記錄。SDK 會產生一個 [`SystemMessage`](#message-types),其子類型為 `"init"`,包含工作階段中繼資料。

222. **評估並回應。** Claude 評估目前狀態並決定如何進行。它可能會以文字回應、要求一個或多個工具呼叫,或兩者都有。SDK 會產生一個 [`AssistantMessage`](#message-types),包含文字和任何工具呼叫要求。222. **評估並回應。** Claude 評估目前狀態並決定如何進行。它可能會以文字回應、要求一個或多個工具呼叫,或兩者都有。SDK 會產生一個 [`AssistantMessage`](#message-types),包含文字和任何工具呼叫要求。


53 53 

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

55 55 

56* **`SystemMessage`:** 工作階段生命週期事件。`subtype` 欄位區分它們:`"init"` 是第一個訊息(工作階段中繼資料),`"compact_boundary"` 在 [壓縮](#automatic-compaction) 後觸發。在 TypeScript 中,壓縮邊界是其自己的 [`SDKCompactBoundaryMessage`](/zh-TW/agent-sdk/typescript#sdkcompactboundarymessage) 類型,而不是 `SDKSystemMessage` 的子類型。56* **`SystemMessage`:** 工作階段生命週期事件。`subtype` 欄位區分它們:

57 

58 * `"init"`:第一個訊息,包含工作階段中繼資料

59 * `"compact_boundary"`:在 [壓縮](#automatic-compaction) 後觸發

60 * `"informational"`:來自迴圈的純文字狀態橫幅

61 * `"worker_shutting_down"`:迴圈將在目前回合後結束,因為主機正在退出或遠端控制已斷開連線

62 

63 在 TypeScript 中,除了 `"init"` 之外的每個子類型都是 [`SDKMessage` 聯合](/zh-TW/agent-sdk/typescript#sdkmessage) 中的自己的類型,而不是 `SDKSystemMessage` 的子類型。

57* **`AssistantMessage`:** 在每個 Claude 回應後發出,包括最終純文字回應。包含該回合的文字內容區塊和工具呼叫區塊。64* **`AssistantMessage`:** 在每個 Claude 回應後發出,包括最終純文字回應。包含該回合的文字內容區塊和工具呼叫區塊。

58* **`UserMessage`:** 在每個工具執行後發出,包含發送回 Claude 的工具結果內容。也針對您在迴圈中期串流的任何使用者輸入發出。65* **`UserMessage`:** 在每個工具執行後發出,包含發送回 Claude 的工具結果內容。也針對您在迴圈中期串流的任何使用者輸入發出。

59* **`StreamEvent`:** 僅在啟用部分訊息時發出。包含原始 API 串流事件(文字增量、工具輸入區塊)。請參閱 [串流回應](/zh-TW/agent-sdk/streaming-output)。66* **`StreamEvent`:** 僅在啟用部分訊息時發出。包含原始 API 串流事件(文字增量、工具輸入區塊)。請參閱 [串流回應](/zh-TW/agent-sdk/streaming-output)。


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

184 191 

185| 等級 | 行為 | 適合 |192| 等級 | 行為 | 適合 |

186| :--------- | :-------- | :----------------------- |193| :--------- | :-------- | :---------------------------------- |

187| `"low"` | 最少推理、快速回應 | 檔案查找、列出目錄 |194| `"low"` | 最少推理、快速回應 | 檔案查找、列出目錄 |

188| `"medium"` | 平衡推理 | 常規編輯、標準任務 |195| `"medium"` | 平衡推理 | 常規編輯、標準任務 |

189| `"high"` | 徹底分析 | 重構、除錯 |196| `"high"` | 徹底分析 | 重構、除錯 |

190| `"xhigh"` | 擴展推理深度 | 編碼和代理任務;建議在 Opus 4.7 上使用 |197| `"xhigh"` | 擴展推理深度 | 編碼和代理任務;建議在 Fable 5 和 Opus 4.7+ 上使用 |

191| `"max"` | 最大推理深度 | 需要深入分析的多步驟問題 |198| `"max"` | 最大推理深度 | 需要深入分析的多步驟問題 |

192 199 

193如果您不設定 `effort`,Python SDK 會保留參數未設定,並遵循模型的預設行為。TypeScript SDK 預設為 `"high"`。200如果您不設定 `effort`,兩個 SDK 都會保留參數未設定,並遵循模型的預設行為。

194 201 

195<Note>202<Note>

196 `effort` 在每個回應內交換延遲和代幣成本以獲得推理深度。[擴展思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) 是一個單獨的功能,在輸出中產生可見的思考鏈區塊。它們是獨立的:您可以設定 `effort: "low"` 並啟用擴展思考,或 `effort: "max"` 而不啟用它。203 `effort` 在每個回應內交換延遲和代幣成本以獲得推理深度。[擴展思考](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) 是一個單獨的功能,在輸出中產生可見的思考鏈區塊。它們是獨立的:您可以設定 `effort: "low"` 並啟用擴展思考,或 `effort: "max"` 而不啟用它。


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

206 213 

207| 模式 | 行為 |214| 模式 | 行為 |

208| :--------------------- | :------------------------------------------------------------------------------------------------ |215| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

209| `"default"` | 不受允許規則涵蓋的工具會觸發您的批准回呼;沒有回呼意味著拒絕 |216| `"default"` | 不受允許規則涵蓋的工具會觸發您的批准回呼;沒有回呼意味著拒絕 |

210| `"acceptEdits"` | 自動批准檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等);其他 Bash 命令遵循預設規則 |217| `"acceptEdits"` | 自動批准檔案編輯和常見的檔案系統命令(`mkdir`、`touch`、`mv`、`cp` 等);其他 Bash 命令遵循預設規則 |

211| `"plan"` | 唯讀工具執行;Claude 探索並產生計畫而不編輯您的原始檔案 |218| `"plan"` | Claude 探索並規劃而不編輯您的原始檔案;檔案編輯永遠不會自動批准,並透過您的 `canUseTool` 回呼提示 |

212| `"dontAsk"` | 永不提示。由 [權限規則](/zh-TW/settings#permission-settings) 預先批准的工具執行,其他所有工具都被拒絕 |219| `"dontAsk"` | 永不提示。由 [權限規則](/zh-TW/settings#permission-settings) 預先批准的工具執行,其他所有工具都被拒絕 |

213| `"auto"`(僅 TypeScript) | 使用模型分類器批准或拒絕每個工具呼叫。請參閱 [自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 以了解可用性和行為 |220| `"auto"`(僅 TypeScript) | 使用模型分類器批准或拒絕每個工具呼叫。請參閱 [自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 以了解可用性和行為 |

214| `"bypassPermissions"` | 執行所有允許的工具而不詢問。在 Unix 上以 root 身份執行時無法使用。僅在隔離環境中使用,其中代理程式的操作無法影響您關心的系統 |221| `"bypassPermissions"` | 執行所有允許的工具而不詢問,除非明確的 [`ask` 規則](/zh-TW/settings#permission-settings) 符合;請參閱 [權限如何被評估](/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated) 以了解 ask 規則在優先順序中的位置。在 Unix 上以 root 身份執行時無法使用。僅在隔離環境中使用,其中代理程式的操作無法影響您關心的系統 |

215 222 

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

217 224 


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

306 313 

307| 結果子類型 | 發生了什麼 | `result` 欄位可用? |314| 結果子類型 | 發生了什麼 | `result` 欄位可用? |

308| :------------------------------------ | :----------------------- | :------------: |315| :------------------------------------ | :---------------------------------------------------- | :------------: |

309| `success` | Claude 正常完成了任務 | 是 |316| `success` | Claude 正常完成了任務 | 是 |

310| `error_max_turns` | 在完成前達到 `maxTurns` 限制 | 否 |317| `error_max_turns` | 在完成前達到 `maxTurns` 限制 | 否 |

311| `error_max_budget_usd` | 在完成前達到 `maxBudgetUsd` 限制 | 否 |318| `error_max_budget_usd` | 在完成前達到 `maxBudgetUsd` 限制 | 否 |

312| `error_during_execution` | 錯誤中斷了迴圈(例如,API 失敗或取消的請求) | 否 |319| `error_during_execution` | 錯誤中斷了迴圈(例如,API 失敗或取消的請求) | 否 |

313| `error_max_structured_output_retries` | 結構化輸出驗證在配置的重試限制後失敗 | 否 |320| `error_max_structured_output_retries` | 在配置的重試限制內未產生有效的結構化輸出:每次嘗試都未通過驗證,或模型後備撤回了已完成的輸出且沒有成功重試 | 否 |

314 321 

315`result` 欄位(最終文字輸出)僅在 `success` 變體上存在,因此在讀取它之前始終檢查子類型。所有結果子類型都帶有 `total_cost_usd`、`usage`、`num_turns` 和 `session_id`,因此您可以追蹤成本並在錯誤後恢復。在 Python 中,`total_cost_usd` 和 `usage` 被類型化為可選的,在某些錯誤路徑上可能是 `None`,因此在格式化它們之前進行保護。請參閱 [追蹤成本和使用量](/zh-TW/agent-sdk/cost-tracking) 以了解有關解釋 `usage` 欄位的詳細資訊。322`result` 欄位(最終文字輸出)僅在 `success` 變體上存在,因此在讀取它之前始終檢查子類型。所有結果子類型都帶有 `total_cost_usd`、`usage`、`num_turns` 和 `session_id`,因此您可以追蹤成本並在錯誤後恢復。在 Python 中,`total_cost_usd` 和 `usage` 被類型化為可選的,在某些錯誤路徑上可能是 `None`,因此在格式化它們之前進行保護。請參閱 [追蹤成本和使用量](/zh-TW/agent-sdk/cost-tracking) 以了解有關解釋 `usage` 欄位的詳細資訊。

316 323 

Details

257 257 

258<CodeGroup>258<CodeGroup>

259 ```python Python theme={null}259 ```python Python theme={null}

260 from claude_agent_sdk import ClaudeAgentOptions, query

261 import asyncio

262 

263 

264 async def main():

260 options = ClaudeAgentOptions(265 options = ClaudeAgentOptions(

261 env={266 env={

262 "CLAUDE_CODE_USE_BEDROCK": "1",267 "CLAUDE_CODE_USE_BEDROCK": "1",

263 "ENABLE_PROMPT_CACHING_1H": "1",268 "ENABLE_PROMPT_CACHING_1H": "1",

264 },269 },

265 )270 )

271 

272 async for message in query(prompt="Summarize this project", options=options):

273 print(message)

274 

275 

276 asyncio.run(main())

266 ```277 ```

267 278 

268 ```typescript TypeScript theme={null}279 ```typescript TypeScript theme={null}

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

281 

269 const options = {282 const options = {

270 env: {283 env: {

271 ...process.env,284 ...process.env,


273 ENABLE_PROMPT_CACHING_1H: "1",286 ENABLE_PROMPT_CACHING_1H: "1",

274 },287 },

275 };288 };

289 

290 for await (const message of query({ prompt: "Summarize this project", options })) {

291 console.log(message);

292 }

276 ```293 ```

277</CodeGroup>294</CodeGroup>

278 295 

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.

1 4 

5# 為 Claude 提供自訂工具

6 

7> 使用 Claude Agent SDK 的同程序 MCP 伺服器定義自訂工具,讓 Claude 可以呼叫您的函數、存取您的 API,並執行特定領域的操作。

8 

9自訂工具透過讓您定義 Claude 在對話期間可以呼叫的自己的函數來擴展 Agent SDK。使用 SDK 的同程序 MCP 伺服器,您可以讓 Claude 存取資料庫、外部 API、特定領域邏輯或應用程式需要的任何其他功能。

10 

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

12 

13<h2 id="quick-reference">

14 快速參考

15</h2>

16 

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

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

19| 定義工具 | 使用 [`@tool`](/zh-TW/agent-sdk/python#tool)(Python)或 [`tool()`](/zh-TW/agent-sdk/typescript#tool)(TypeScript),搭配名稱、描述、結構描述和處理程式。請參閱[建立自訂工具](#create-a-custom-tool)。 |

20| 向 Claude 註冊工具 | 在 `create_sdk_mcp_server` / `createSdkMcpServer` 中包裝,並傳遞至 `query()` 中的 `mcpServers`。請參閱[呼叫自訂工具](#call-a-custom-tool)。 |

21| 預先核准工具 | 新增至您允許的工具。請參閱[設定允許的工具](#configure-allowed-tools)。 |

22| 從 Claude 的內容中移除內建工具 | 傳遞 `tools` 陣列,僅列出您想要的內建工具。請參閱[設定允許的工具](#configure-allowed-tools)。 |

23| 讓 Claude 平行呼叫工具 | 在沒有副作用的工具上設定 `readOnlyHint: true`。請參閱[新增工具註解](#add-tool-annotations)。 |

24| 處理錯誤而不停止迴圈 | 傳回 `isError: true` 而不是擲回。請參閱[處理錯誤](#handle-errors)。 |

25| 傳回影像或檔案 | 在內容陣列中使用 `image` 或 `resource` 區塊。請參閱[傳回影像和資源](#return-images-and-resources)。 |

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

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

28 

29<h2 id="create-a-custom-tool">

30 建立自訂工具

31</h2>

32 

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

34 

35* **名稱:** Claude 用來呼叫工具的唯一識別碼。

36* **描述:** 工具的功能。Claude 讀取此項以決定何時呼叫它。

37* **輸入結構描述:** Claude 必須提供的引數。在 TypeScript 中,這始終是 [Zod 結構描述](https://zod.dev/),處理程式的 `args` 會自動從中輸入。在 Python 中,這是將名稱對應到類型的字典,例如 `{"latitude": float}`,SDK 會為您轉換為 JSON Schema。Python 裝飾器也接受完整的 [JSON Schema](https://json-schema.org/understanding-json-schema/about) 字典,當您需要列舉、範圍、選用欄位或巢狀物件時。

38* **處理程式:** 當 Claude 呼叫工具時執行的非同步函數。它接收驗證的引數,並必須傳回具有以下內容的物件:

39 * `content`(必需):結果區塊的陣列,每個區塊的 `type` 為 `"text"`、`"image"`、`"audio"`、`"resource"` 或 `"resource_link"`。請參閱[傳回影像和資源](#return-images-and-resources)以取得非文字區塊。

40 * `structuredContent`(選用):保存結果作為機器可讀資料的 JSON 物件,與 `content` 一起傳回。請參閱[傳回結構化資料](#return-structured-data)。

41 * `isError`(選用):設定為 `true` 以表示工具失敗,讓 Claude 可以對其做出反應。請參閱[處理錯誤](#handle-errors)。

42 

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

44 

45<h3 id="weather-tool-example">

46 天氣工具範例

47</h3>

48 

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

50 

51<CodeGroup>

52 ```python Python theme={null}

53 from typing import Any

54 import httpx

55 from claude_agent_sdk import tool, create_sdk_mcp_server

56 

57 

58 # Define a tool: name, description, input schema, handler

59 @tool(

60 "get_temperature",

61 "Get the current temperature at a location",

62 {"latitude": float, "longitude": float},

63 )

64 async def get_temperature(args: dict[str, Any]) -> dict[str, Any]:

65 async with httpx.AsyncClient() as client:

66 response = await client.get(

67 "https://api.open-meteo.com/v1/forecast",

68 params={

69 "latitude": args["latitude"],

70 "longitude": args["longitude"],

71 "current": "temperature_2m",

72 "temperature_unit": "fahrenheit",

73 },

74 )

75 data = response.json()

76 

77 # Return a content array - Claude sees this as the tool result

78 return {

79 "content": [

80 {

81 "type": "text",

82 "text": f"Temperature: {data['current']['temperature_2m']}°F",

83 }

84 ]

85 }

86 

87 

88 # Wrap the tool in an in-process MCP server

89 weather_server = create_sdk_mcp_server(

90 name="weather",

91 version="1.0.0",

92 tools=[get_temperature],

93 )

94 ```

95 

96 ```typescript TypeScript theme={null}

97 import { tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";

98 import { z } from "zod";

99 

100 // Define a tool: name, description, input schema, handler

101 const getTemperature = tool(

102 "get_temperature",

103 "Get the current temperature at a location",

104 {

105 latitude: z.number().describe("Latitude coordinate"), // .describe() adds a field description Claude sees

106 longitude: z.number().describe("Longitude coordinate")

107 },

108 async (args) => {

109 // args is typed from the schema: { latitude: number; longitude: number }

110 const response = await fetch(

111 `https://api.open-meteo.com/v1/forecast?latitude=${args.latitude}&longitude=${args.longitude}&current=temperature_2m&temperature_unit=fahrenheit`

112 );

113 const data: any = await response.json();

114 

115 // Return a content array - Claude sees this as the tool result

116 return {

117 content: [{ type: "text", text: `Temperature: ${data.current.temperature_2m}°F` }]

118 };

119 }

120 );

121 

122 // Wrap the tool in an in-process MCP server

123 const weatherServer = createSdkMcpServer({

124 name: "weather",

125 version: "1.0.0",

126 tools: [getTemperature]

127 });

128 ```

129</CodeGroup>

130 

131請參閱 [`tool()`](/zh-TW/agent-sdk/typescript#tool) TypeScript 參考或 [`@tool`](/zh-TW/agent-sdk/python#tool) Python 參考,以取得完整的參數詳細資訊,包括 JSON Schema 輸入格式和傳回值結構。

132 

133<Tip>

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

135</Tip>

136 

137<h3 id="call-a-custom-tool">

138 呼叫自訂工具

139</h3>

140 

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

142 

143這些程式碼片段重複使用上面[範例](#weather-tool-example)中的 `weatherServer`,以詢問 Claude 特定位置的天氣。

144 

145<CodeGroup>

146 ```python Python theme={null}

147 import asyncio

148 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

149 

150 

151 async def main():

152 options = ClaudeAgentOptions(

153 mcp_servers={"weather": weather_server},

154 allowed_tools=["mcp__weather__get_temperature"],

155 )

156 

157 async for message in query(

158 prompt="What's the temperature in San Francisco?",

159 options=options,

160 ):

161 # ResultMessage is the final message after all tool calls complete

162 if isinstance(message, ResultMessage) and message.subtype == "success":

163 print(message.result)

164 

165 

166 asyncio.run(main())

167 ```

168 

169 ```typescript TypeScript theme={null}

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

171 

172 for await (const message of query({

173 prompt: "What's the temperature in San Francisco?",

174 options: {

175 mcpServers: { weather: weatherServer },

176 allowedTools: ["mcp__weather__get_temperature"]

177 }

178 })) {

179 // "result" is the final message after all tool calls complete

180 if (message.type === "result" && message.subtype === "success") {

181 console.log(message.result);

182 }

183 }

184 ```

185</CodeGroup>

186 

187<h3 id="add-more-tools">

188 新增更多工具

189</h3>

190 

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

192 

193下面的範例將第二個工具 `get_precipitation_chance` 新增至[天氣工具範例](#weather-tool-example)中的 `weatherServer`,並使用陣列中的兩個工具重建它。

194 

195<CodeGroup>

196 ```python Python theme={null}

197 # Define a second tool for the same server

198 @tool(

199 "get_precipitation_chance",

200 "Get the hourly precipitation probability for a location. "

201 "Optionally pass 'hours' (1-24) to control how many hours to return.",

202 {"latitude": float, "longitude": float},

203 )

204 async def get_precipitation_chance(args: dict[str, Any]) -> dict[str, Any]:

205 # 'hours' isn't in the schema - read it with .get() to make it optional

206 hours = args.get("hours", 12)

207 async with httpx.AsyncClient() as client:

208 response = await client.get(

209 "https://api.open-meteo.com/v1/forecast",

210 params={

211 "latitude": args["latitude"],

212 "longitude": args["longitude"],

213 "hourly": "precipitation_probability",

214 "forecast_days": 1,

215 },

216 )

217 data = response.json()

218 chances = data["hourly"]["precipitation_probability"][:hours]

219 

220 return {

221 "content": [

222 {

223 "type": "text",

224 "text": f"Next {hours} hours: {'%, '.join(map(str, chances))}%",

225 }

226 ]

227 }

228 

229 

230 # Rebuild the server with both tools in the array

231 weather_server = create_sdk_mcp_server(

232 name="weather",

233 version="1.0.0",

234 tools=[get_temperature, get_precipitation_chance],

235 )

236 ```

237 

238 ```typescript TypeScript theme={null}

239 // Define a second tool for the same server

240 const getPrecipitationChance = tool(

241 "get_precipitation_chance",

242 "Get the hourly precipitation probability for a location",

243 {

244 latitude: z.number(),

245 longitude: z.number(),

246 hours: z

247 .number()

248 .int()

249 .min(1)

250 .max(24)

251 .default(12) // .default() makes the parameter optional

252 .describe("How many hours of forecast to return")

253 },

254 async (args) => {

255 const response = await fetch(

256 `https://api.open-meteo.com/v1/forecast?latitude=${args.latitude}&longitude=${args.longitude}&hourly=precipitation_probability&forecast_days=1`

257 );

258 const data: any = await response.json();

259 const chances = data.hourly.precipitation_probability.slice(0, args.hours);

260 

261 return {

262 content: [{ type: "text", text: `Next ${args.hours} hours: ${chances.join("%, ")}%` }]

263 };

264 }

265 );

266 

267 // Rebuild the server with both tools in the array

268 const weatherServer = createSdkMcpServer({

269 name: "weather",

270 version: "1.0.0",

271 tools: [getTemperature, getPrecipitationChance]

272 });

273 ```

274</CodeGroup>

275 

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

277 

278<h3 id="add-tool-annotations">

279 新增工具註解

280</h3>

281 

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

283 

284| 欄位 | 預設值 | 意義 |

285| :---------------- | :------ | :----------------------------- |

286| `readOnlyHint` | `false` | 工具不會修改其環境。控制工具是否可以與其他唯讀工具平行呼叫。 |

287| `destructiveHint` | `true` | 工具可能執行破壞性更新。僅供參考。 |

288| `idempotentHint` | `false` | 使用相同引數重複呼叫沒有額外效果。僅供參考。 |

289| `openWorldHint` | `true` | 工具到達程序外的系統。僅供參考。 |

290 

291註解是中繼資料,不是強制執行。標記為 `readOnlyHint: true` 的工具如果處理程式執行該操作,仍然可以寫入磁碟。保持註解準確反映處理程式。

292 

293此範例將 `readOnlyHint` 新增至[天氣工具範例](#weather-tool-example)中的 `get_temperature` 工具。

294 

295<CodeGroup>

296 ```python Python theme={null}

297 from claude_agent_sdk import tool, ToolAnnotations

298 

299 

300 @tool(

301 "get_temperature",

302 "Get the current temperature at a location",

303 {"latitude": float, "longitude": float},

304 annotations=ToolAnnotations(

305 readOnlyHint=True

306 ), # Lets Claude batch this with other read-only calls

307 )

308 async def get_temperature(args):

309 return {"content": [{"type": "text", "text": "..."}]}

310 ```

311 

312 ```typescript TypeScript theme={null}

313 tool(

314 "get_temperature",

315 "Get the current temperature at a location",

316 { latitude: z.number(), longitude: z.number() },

317 async (args) => ({ content: [{ type: "text", text: `...` }] }),

318 { annotations: { readOnlyHint: true } } // Lets Claude batch this with other read-only calls

319 );

320 ```

321</CodeGroup>

322 

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

324 

325<h2 id="control-tool-access">

326 控制工具存取

327</h2>

328 

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

330 

331<h3 id="tool-name-format">

332 工具名稱格式

333</h3>

334 

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

336 

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

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

339 

340<h3 id="configure-allowed-tools">

341 設定允許的工具

342</h3>

343 

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

345 

346| 選項 | 層級 | 效果 |

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

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

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

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

351| 不允許的工具 | 兩者 | 裸工具名稱(例如 `"Bash"`)會將工具從 Claude 的內容中移除,與從 `tools` 中省略它相同。限定範圍的規則(例如 `"Bash(rm *)"`)會將工具保留在內容中,並僅拒絕符合的呼叫。 |

352 

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

354 

355<h2 id="handle-errors">

356 處理錯誤

357</h2>

358 

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

360 

361| 發生的情況 | 結果 |

362| :---------------------------------------------------------- | :--------------------------------------- |

363| 處理程式擲出未捕獲的例外 | 代理迴圈停止。Claude 永遠看不到錯誤,`query` 呼叫失敗。 |

364| 處理程式捕獲錯誤並傳回 `isError: true`(TS)/ `"is_error": True`(Python) | 代理迴圈繼續。Claude 將錯誤視為資料並可以重試、嘗試不同的工具或解釋失敗。 |

365 

366下面的範例在處理程式內捕獲兩種失敗,而不是讓它們擲出。非 200 HTTP 狀態從回應中捕獲並作為錯誤結果傳回。網路錯誤或無效 JSON 由周圍的 `try/except`(Python)或 `try/catch`(TypeScript)捕獲,也作為錯誤結果傳回。在兩種情況下,處理程式正常傳回,代理迴圈繼續。

367 

368<CodeGroup>

369 ```python Python theme={null}

370 import json

371 import httpx

372 from typing import Any

373 

374 

375 @tool(

376 "fetch_data",

377 "Fetch data from an API",

378 {"endpoint": str}, # Simple schema

379 )

380 async def fetch_data(args: dict[str, Any]) -> dict[str, Any]:

381 try:

382 async with httpx.AsyncClient() as client:

383 response = await client.get(args["endpoint"])

384 if response.status_code != 200:

385 # Return the failure as a tool result so Claude can react to it.

386 # is_error marks this as a failed call rather than odd-looking data.

387 return {

388 "content": [

389 {

390 "type": "text",

391 "text": f"API error: {response.status_code} {response.reason_phrase}",

392 }

393 ],

394 "is_error": True,

395 }

396 

397 data = response.json()

398 return {"content": [{"type": "text", "text": json.dumps(data, indent=2)}]}

399 except Exception as e:

400 # Catching here keeps the agent loop alive. An uncaught exception

401 # would end the whole query() call.

402 return {

403 "content": [{"type": "text", "text": f"Failed to fetch data: {str(e)}"}],

404 "is_error": True,

405 }

406 ```

407 

408 ```typescript TypeScript theme={null}

409 tool(

410 "fetch_data",

411 "Fetch data from an API",

412 {

413 endpoint: z.string().url().describe("API endpoint URL")

414 },

415 async (args) => {

416 try {

417 const response = await fetch(args.endpoint);

418 

419 if (!response.ok) {

420 // Return the failure as a tool result so Claude can react to it.

421 // isError marks this as a failed call rather than odd-looking data.

422 return {

423 content: [

424 {

425 type: "text",

426 text: `API error: ${response.status} ${response.statusText}`

427 }

428 ],

429 isError: true

430 };

431 }

432 

433 const data = await response.json();

434 return {

435 content: [

436 {

437 type: "text",

438 text: JSON.stringify(data, null, 2)

439 }

440 ]

441 };

442 } catch (error) {

443 // Catching here keeps the agent loop alive. An uncaught throw

444 // would end the whole query() call.

445 return {

446 content: [

447 {

448 type: "text",

449 text: `Failed to fetch data: ${error instanceof Error ? error.message : String(error)}`

450 }

451 ],

452 isError: true

453 };

454 }

455 }

456 );

457 ```

458</CodeGroup>

459 

460<h2 id="return-images-and-resources">

461 傳回影像和資源

462</h2>

463 

464工具結果中的 `content` 陣列接受 `text`、`image`、`audio`、`resource` 和 `resource_link` 區塊。您可以在同一回應中混合它們。音訊區塊會儲存到磁碟,Claude 會收到一個包含已儲存檔案路徑的文字區塊。資源連結區塊會轉換為包含連結名稱、URI 和描述的文字區塊。

465 

466<h3 id="images">

467 影像

468</h3>

469 

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

471 

472| 欄位 | 類型 | 備註 |

473| :--------- | :-------- | :------------------------------------------------------ |

474| `type` | `"image"` | |

475| `data` | `string` | Base64 編碼的位元組。僅原始 base64,沒有 `data:image/...;base64,` 前綴 |

476| `mimeType` | `string` | 必需。例如 `image/png`、`image/jpeg`、`image/webp`、`image/gif` |

477 

478<CodeGroup>

479 ```python Python theme={null}

480 import base64

481 import httpx

482 

483 

484 # Define a tool that fetches an image from a URL and returns it to Claude

485 @tool("fetch_image", "Fetch an image from a URL and return it to Claude", {"url": str})

486 async def fetch_image(args):

487 async with httpx.AsyncClient() as client: # Fetch the image bytes

488 response = await client.get(args["url"])

489 

490 return {

491 "content": [

492 {

493 "type": "image",

494 "data": base64.b64encode(response.content).decode(

495 "ascii"

496 ), # Base64-encode the raw bytes

497 "mimeType": response.headers.get(

498 "content-type", "image/png"

499 ), # Read MIME type from the response

500 }

501 ]

502 }

503 ```

504 

505 ```typescript TypeScript theme={null}

506 tool(

507 "fetch_image",

508 "Fetch an image from a URL and return it to Claude",

509 {

510 url: z.string().url()

511 },

512 async (args) => {

513 const response = await fetch(args.url); // Fetch the image bytes

514 const buffer = Buffer.from(await response.arrayBuffer()); // Read into a Buffer for base64 encoding

515 const mimeType = response.headers.get("content-type") ?? "image/png";

516 

517 return {

518 content: [

519 {

520 type: "image",

521 data: buffer.toString("base64"), // Base64-encode the raw bytes

522 mimeType

523 }

524 ]

525 };

526 }

527 );

528 ```

529</CodeGroup>

530 

531<h3 id="resources">

532 資源

533</h3>

534 

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

536 

537| 欄位 | 類型 | 備註 |

538| :------------------ | :----------- | :----------------------------- |

539| `type` | `"resource"` | |

540| `resource.uri` | `string` | 內容的識別碼。任何 URI 配置 |

541| `resource.text` | `string` | 內容,如果是文字。提供此項或 `blob`,不要同時提供兩者 |

542| `resource.blob` | `string` | 內容 base64 編碼,如果是二進位 |

543| `resource.mimeType` | `string` | 選用 |

544 

545此範例顯示從工具處理程式內傳回的資源區塊。URI `file:///tmp/report.md` 是 Claude 稍後可以參考的標籤;SDK 不會從該路徑讀取。

546 

547<CodeGroup>

548 ```typescript TypeScript theme={null}

549 return {

550 content: [

551 {

552 type: "resource",

553 resource: {

554 uri: "file:///tmp/report.md", // Label for Claude to reference, not a path the SDK reads

555 mimeType: "text/markdown",

556 text: "# Report\n..." // The actual content, inline

557 }

558 }

559 ]

560 };

561 ```

562 

563 ```python Python theme={null}

564 return {

565 "content": [

566 {

567 "type": "resource",

568 "resource": {

569 "uri": "file:///tmp/report.md", # Label for Claude to reference, not a path the SDK reads

570 "mimeType": "text/markdown",

571 "text": "# Report\n...", # The actual content, inline

572 },

573 }

574 ]

575 }

576 ```

577</CodeGroup>

578 

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

580 

581<h2 id="return-structured-data">

582 傳回結構化資料

583</h2>

584 

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

586 

587設定 `structuredContent` 時,Claude 接收 JSON 加上 `content` 中的任何影像或資源區塊。`content` 中的文字區塊不會轉發,因為假設它們複製結構化資料。下面的範例將圖表呈現為影像區塊,並從同一處理程式在 `structuredContent` 中傳回其背後的資料點。

588 

589```typescript TypeScript theme={null}

590return {

591 content: [

592 {

593 type: "image",

594 data: chartPngBuffer.toString("base64"),

595 mimeType: "image/png"

596 }

597 ],

598 structuredContent: {

599 series: "temperature_2m",

600 unit: "fahrenheit",

601 points: [62.1, 63.4, 65.0, 64.2]

602 }

603};

604```

605 

606<Note>

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

608</Note>

609 

610<h2 id="example-unit-converter">

611 範例:單位轉換器

612</h2>

613 

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

615 

616它演示了兩種模式:

617 

618* **列舉結構描述:** `unit_type` 受限於一組固定值。在 TypeScript 中,使用 `z.enum()`。在 Python 中,字典結構描述不支援列舉,因此需要完整的 JSON Schema 字典。

619* **不支援的輸入處理:** 當找不到轉換對時,處理程式傳回 `isError: true`,以便 Claude 可以告訴使用者出了什麼問題,而不是將失敗視為正常結果。

620 

621<CodeGroup>

622 ```python Python theme={null}

623 from typing import Any

624 from claude_agent_sdk import tool, create_sdk_mcp_server

625 

626 

627 # z.enum() in TypeScript becomes an "enum" constraint in JSON Schema.

628 # The dict schema has no equivalent, so full JSON Schema is required.

629 @tool(

630 "convert_units",

631 "Convert a value from one unit to another",

632 {

633 "type": "object",

634 "properties": {

635 "unit_type": {

636 "type": "string",

637 "enum": ["length", "temperature", "weight"],

638 "description": "Category of unit",

639 },

640 "from_unit": {

641 "type": "string",

642 "description": "Unit to convert from, e.g. kilometers, fahrenheit, pounds",

643 },

644 "to_unit": {"type": "string", "description": "Unit to convert to"},

645 "value": {"type": "number", "description": "Value to convert"},

646 },

647 "required": ["unit_type", "from_unit", "to_unit", "value"],

648 },

649 )

650 async def convert_units(args: dict[str, Any]) -> dict[str, Any]:

651 conversions = {

652 "length": {

653 "kilometers_to_miles": lambda v: v * 0.621371,

654 "miles_to_kilometers": lambda v: v * 1.60934,

655 "meters_to_feet": lambda v: v * 3.28084,

656 "feet_to_meters": lambda v: v * 0.3048,

657 },

658 "temperature": {

659 "celsius_to_fahrenheit": lambda v: (v * 9) / 5 + 32,

660 "fahrenheit_to_celsius": lambda v: (v - 32) * 5 / 9,

661 "celsius_to_kelvin": lambda v: v + 273.15,

662 "kelvin_to_celsius": lambda v: v - 273.15,

663 },

664 "weight": {

665 "kilograms_to_pounds": lambda v: v * 2.20462,

666 "pounds_to_kilograms": lambda v: v * 0.453592,

667 "grams_to_ounces": lambda v: v * 0.035274,

668 "ounces_to_grams": lambda v: v * 28.3495,

669 },

670 }

671 

672 key = f"{args['from_unit']}_to_{args['to_unit']}"

673 fn = conversions.get(args["unit_type"], {}).get(key)

674 

675 if not fn:

676 return {

677 "content": [

678 {

679 "type": "text",

680 "text": f"Unsupported conversion: {args['from_unit']} to {args['to_unit']}",

681 }

682 ],

683 "is_error": True,

684 }

685 

686 result = fn(args["value"])

687 return {

688 "content": [

689 {

690 "type": "text",

691 "text": f"{args['value']} {args['from_unit']} = {result:.4f} {args['to_unit']}",

692 }

693 ]

694 }

695 

696 

697 converter_server = create_sdk_mcp_server(

698 name="converter",

699 version="1.0.0",

700 tools=[convert_units],

701 )

702 ```

703 

704 ```typescript TypeScript theme={null}

705 import { tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";

706 import { z } from "zod";

707 

708 const convert = tool(

709 "convert_units",

710 "Convert a value from one unit to another",

711 {

712 unit_type: z.enum(["length", "temperature", "weight"]).describe("Category of unit"),

713 from_unit: z

714 .string()

715 .describe("Unit to convert from, e.g. kilometers, fahrenheit, pounds"),

716 to_unit: z.string().describe("Unit to convert to"),

717 value: z.number().describe("Value to convert")

718 },

719 async (args) => {

720 type Conversions = Record<string, Record<string, (v: number) => number>>;

721 

722 const conversions: Conversions = {

723 length: {

724 kilometers_to_miles: (v) => v * 0.621371,

725 miles_to_kilometers: (v) => v * 1.60934,

726 meters_to_feet: (v) => v * 3.28084,

727 feet_to_meters: (v) => v * 0.3048

728 },

729 temperature: {

730 celsius_to_fahrenheit: (v) => (v * 9) / 5 + 32,

731 fahrenheit_to_celsius: (v) => ((v - 32) * 5) / 9,

732 celsius_to_kelvin: (v) => v + 273.15,

733 kelvin_to_celsius: (v) => v - 273.15

734 },

735 weight: {

736 kilograms_to_pounds: (v) => v * 2.20462,

737 pounds_to_kilograms: (v) => v * 0.453592,

738 grams_to_ounces: (v) => v * 0.035274,

739 ounces_to_grams: (v) => v * 28.3495

740 }

741 };

742 

743 const key = `${args.from_unit}_to_${args.to_unit}`;

744 const fn = conversions[args.unit_type]?.[key];

745 

746 if (!fn) {

747 return {

748 content: [

749 {

750 type: "text",

751 text: `Unsupported conversion: ${args.from_unit} to ${args.to_unit}`

752 }

753 ],

754 isError: true

755 };

756 }

757 

758 const result = fn(args.value);

759 return {

760 content: [

761 {

762 type: "text",

763 text: `${args.value} ${args.from_unit} = ${result.toFixed(4)} ${args.to_unit}`

764 }

765 ]

766 };

767 }

768 );

769 

770 const converterServer = createSdkMcpServer({

771 name: "converter",

772 version: "1.0.0",

773 tools: [convert]

774 });

775 ```

776</CodeGroup>

777 

778定義伺服器後,以與天氣範例相同的方式將其傳遞至 `query`。此範例在迴圈中傳送三個不同的提示,以顯示同一工具處理不同的單位類型。對於每個回應,它檢查 `AssistantMessage` 物件(包含 Claude 在該回合期間進行的工具呼叫)並在列印最終 `ResultMessage` 文字之前列印每個 `ToolUseBlock`。這讓您看到 Claude 何時使用工具與從自己的知識回答。

779 

780<CodeGroup>

781 ```python Python theme={null}

782 import asyncio

783 from claude_agent_sdk import (

784 query,

785 ClaudeAgentOptions,

786 ResultMessage,

787 AssistantMessage,

788 ToolUseBlock,

789 )

790 

791 

792 async def main():

793 options = ClaudeAgentOptions(

794 mcp_servers={"converter": converter_server},

795 allowed_tools=["mcp__converter__convert_units"],

796 )

797 

798 prompts = [

799 "Convert 100 kilometers to miles.",

800 "What is 72°F in Celsius?",

801 "How many pounds is 5 kilograms?",

802 ]

803 

804 for prompt in prompts:

805 async for message in query(prompt=prompt, options=options):

806 if isinstance(message, AssistantMessage):

807 for block in message.content:

808 if isinstance(block, ToolUseBlock):

809 print(f"[tool call] {block.name}({block.input})")

810 elif isinstance(message, ResultMessage) and message.subtype == "success":

811 print(f"Q: {prompt}\nA: {message.result}\n")

812 

813 

814 asyncio.run(main())

815 ```

816 

817 ```typescript TypeScript theme={null}

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

819 

820 const prompts = [

821 "Convert 100 kilometers to miles.",

822 "What is 72°F in Celsius?",

823 "How many pounds is 5 kilograms?"

824 ];

825 

826 for (const prompt of prompts) {

827 for await (const message of query({

828 prompt,

829 options: {

830 mcpServers: { converter: converterServer },

831 allowedTools: ["mcp__converter__convert_units"]

832 }

833 })) {

834 if (message.type === "assistant") {

835 for (const block of message.message.content) {

836 if (block.type === "tool_use") {

837 console.log(`[tool call] ${block.name}`, block.input);

838 }

839 }

840 } else if (message.type === "result" && message.subtype === "success") {

841 console.log(`Q: ${prompt}\nA: ${message.result}\n`);

842 }

843 }

844 }

845 ```

846</CodeGroup>

847 

848<h2 id="next-steps">

849 後續步驟

850</h2>

851 

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

853 

854從這裡:

855 

856* 如果您的伺服器增長到數十個工具,請參閱[工具搜尋](/zh-TW/agent-sdk/tool-search)以延遲載入它們,直到 Claude 需要它們。

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

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

859 

860<h2 id="related-documentation">

861 相關文件

862</h2>

863 

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

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

866* [MCP 文件](https://modelcontextprotocol.io)

867* [SDK 概觀](/zh-TW/agent-sdk/overview)

Details

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

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

731 731 

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

733 使用者訊息沒有 UUID733 使用者訊息沒有 UUID

734</h3>734</h3>

735 735 

Details

26 </Step>26 </Step>

27 27 

28 <Step title="SDK 收集已註冊的 hooks">28 <Step title="SDK 收集已註冊的 hooks">

29 SDK 檢查為該事件類型註冊的 hooks。這包括您在 `options.hooks` 中傳遞的回調 hooks 和來自設定檔案的 shell 命令 hooks,當相應的 [`settingSources`](/zh-TW/agent-sdk/typescript#settingSources) 或 [`setting_sources`](/zh-TW/agent-sdk/python#setting_sources) 項目啟用時(預設 `query()` 選項就是這樣)。29 SDK 檢查為該事件類型註冊的 hooks。這包括您在 `options.hooks` 中傳遞的回調 hooks 和來自設定檔案的 shell 命令 hooks,當相應的 [`settingSources`](/zh-TW/agent-sdk/typescript#settingsource) 或 [`setting_sources`](/zh-TW/agent-sdk/python#settingsource) 項目啟用時(預設 `query()` 選項就是這樣)。

30 </Step>30 </Step>

31 31 

32 <Step title="匹配器篩選哪些 hooks 執行">32 <Step title="匹配器篩選哪些 hooks 執行">

Details

10 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)。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 12 

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

14 14 

15<Info>15<Info>

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


151 151 

152選擇提供商時要回答的問題:152選擇提供商時要回答的問題:

153 153 

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

155* **冷啟動延遲**:從「創建沙箱」到「準備好接受第一個請求」需要多長時間。臨時模式需要亞秒級啟動。長期運行模式可以容忍更長的延遲。155* **冷啟動延遲**:從「創建沙箱」到「準備好接受第一個請求」需要多長時間。臨時模式需要亞秒級啟動。長期運行模式可以容忍更長的延遲。

156* **持久存儲**:提供商是否提供持久卷或僅提供臨時磁盤。混合模式需要在沙箱內或沙箱旁邊的某處進行持久存儲。156* **持久存儲**:提供商是否提供持久卷或僅提供臨時磁盤。混合模式需要在沙箱內或沙箱旁邊的某處進行持久存儲。

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


191 191 

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

193 193 

194對於入站流量,在容器上公開 HTTP 或 WebSocket 端口。您的應用程序在該端口上處理客戶端請求並在內部調用 SDK;子進程本身不在網絡上監聽。194對於入站流量,在容器上公開 HTTP 或 WebSocket 端口。您的應用程式在該端口上處理客戶端請求並在內部調用 SDK;子進程本身不在網絡上監聽。

195 195 

196<h2 id="handle-production-concerns">196<h2 id="handle-production-concerns">

197 處理生產環境問題197 處理生產環境問題

agent-sdk/mcp.md +83 −31

Details

14 本頁涵蓋 Agent SDK 的 MCP 配置。若要將 MCP 伺服器添加到 Claude Code CLI 以便在每個項目中加載,請參閱 [MCP 安裝範圍](/zh-TW/mcp#mcp-installation-scopes)。14 本頁涵蓋 Agent SDK 的 MCP 配置。若要將 MCP 伺服器添加到 Claude Code CLI 以便在每個項目中加載,請參閱 [MCP 安裝範圍](/zh-TW/mcp#mcp-installation-scopes)。

15</Note>15</Note>

16 16 

17## 快速開始17<h2 id="quickstart">

18 快速開始

19</h2>

18 20 

19此示例使用 [HTTP 傳輸](#httpsse-servers) 連接到 [Claude Code 文檔](https://code.claude.com/docs) MCP 伺服器,並使用 [`allowedTools`](#allow-mcp-tools) 與通配符來允許來自伺服器的所有工具。21此示例使用 [HTTP 傳輸](#http%2Fsse-servers) 連接到 [Claude Code 文檔](https://code.claude.com/docs) MCP 伺服器,並使用 [`allowedTools`](#allow-mcp-tools) 與通配符來允許來自伺服器的所有工具。

20 22 

21<CodeGroup>23<CodeGroup>

22 ```typescript TypeScript theme={null}24 ```typescript TypeScript theme={null}


70 72 

71代理程式連接到文檔伺服器,搜尋有關 hooks 的信息,並返回結果。73代理程式連接到文檔伺服器,搜尋有關 hooks 的信息,並返回結果。

72 74 

73## 添加 MCP 伺服器75<h2 id="add-an-mcp-server">

76 新增 MCP 伺服器

77</h2>

74 78 

75您可以在調用 `query()` 時在代碼中配置 MCP 伺服器,或在通過 [`settingSources`](#from-a-config-file) 加載的 `.mcp.json` 文件中配置79您可以在呼叫 `query()` 時在程式碼中設定 MCP 伺服器,或在通過 [`settingSources`](#from-a-config-file) 載入的 `.mcp.json` 檔案中設定

76 80 

77### 在代碼中81<h3 id="in-code">

82 在程式碼中

83</h3>

78 84 

79在 `mcpServers` 選項中直接傳遞 MCP 伺服器:85在 `mcpServers` 選項中直接傳遞 MCP 伺服器:

80 86 


129 ```135 ```

130</CodeGroup>136</CodeGroup>

131 137 

132### 從配置文件138<h3 id="from-a-config-file">

139 從設定檔案

140</h3>

133 141 

134在您的項目根目錄創建一個 `.mcp.json` 文件。當啟用 `project` 設置源時該文件會被選取這對於默認 `query()` 選項是默認的如果您明確設置 `settingSources`,請包含 `"project"` 以便加載此文件142在您的專案根目錄建立一個 `.mcp.json` 檔案。當啟用 `project` 設定來源時該檔案會被選取這對於預設 `query()` 選項是預設的如果您明確設定 `settingSources`,請包含 `"project"` 以便載入此檔案

135 143 

136```json theme={null}144```json theme={null}

137{145{


144}152}

145```153```

146 154 

147## 允許 MCP 工具155<h2 id="allow-mcp-tools">

156 允許 MCP 工具

157</h2>

148 158 

149MCP 工具需要明確的權限才能讓 Claude 使用它們。沒有權限,Claude 會看到工具可用,但無法調用它們。159MCP 工具需要明確的權限才能讓 Claude 使用它們。沒有權限,Claude 會看到工具可用,但無法調用它們。

150 160 

151### 工具命名約定161<h3 id="tool-naming-convention">

162 工具命名約定

163</h3>

152 164 

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

154 166 

155### 使用 allowedTools 自動批准167<h3 id="auto-approve-with-allowedtools">

168 使用 allowedTools 自動批准

169</h3>

156 170 

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

158 172 


174通配符 (`*`) 讓您允許來自伺服器的所有工具,而無需逐個列出。188通配符 (`*`) 讓您允許來自伺服器的所有工具,而無需逐個列出。

175 189 

176<Note>190<Note>

177 **對於 MCP 訪問,優先使用 `allowedTools` 而不是權限模式。** `permissionMode: "acceptEdits"` 不會自動批准 MCP 工具(僅限文件編輯和文件系統 Bash 命令)。`permissionMode: "bypassPermissions"` 會自動批准 MCP 工具,但也會禁用所有其他安全提示,這比必要的範圍更廣。`allowedTools` 中的通配符只授予您想要的 MCP 伺服器,沒有其他。有關完整比較,請參閱[權限模式](/zh-TW/agent-sdk/permissions#permission-modes)。191 **對於 MCP 訪問,優先使用 `allowedTools` 而不是權限模式。** `permissionMode: "acceptEdits"` 不會自動批准 MCP 工具(僅限文件編輯和文件系統 Bash 命令)。`permissionMode: "bypassPermissions"` 會自動批准 MCP 工具,但也會禁用所有其他安全提示,除非明確的 [`ask` 規則](/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated)符合,這比必要的範圍更廣。`allowedTools` 中的通配符只授予您想要的 MCP 伺服器,沒有其他。有關完整比較,請參閱[權限模式](/zh-TW/agent-sdk/permissions#permission-modes)。

178</Note>192</Note>

179 193 

180### 發現可用工具194<h3 id="discover-available-tools">

195 發現可用工具

196</h3>

181 197 

182要查看 MCP 伺服器提供的工具,請檢查伺服器的文檔或連接到伺服器並檢查 `system` init 消息:198要查看 MCP 伺服器提供的工具,請檢查伺服器的文檔或連接到伺服器並檢查 `system` init 消息:

183 199 


189}205}

190```206```

191 207 

192## 傳輸類型208<h2 id="transport-types">

209 傳輸類型

210</h2>

193 211 

194MCP 伺服器使用不同的傳輸協議與您的代理程式通信。檢查伺服器的文檔以查看它支持哪種傳輸:212MCP 伺服器使用不同的傳輸協議與您的代理程式通信。檢查伺服器的文檔以查看它支持哪種傳輸:

195 213 


197* 如果文檔給您一個 **URL**,請使用 HTTP 或 SSE215* 如果文檔給您一個 **URL**,請使用 HTTP 或 SSE

198* 如果您在代碼中構建自己的工具,請使用 SDK MCP 伺服器216* 如果您在代碼中構建自己的工具,請使用 SDK MCP 伺服器

199 217 

200### stdio 伺服器218<h3 id="stdio-servers">

219 stdio 伺服器

220</h3>

201 221 

202通過 stdin/stdout 通信的本地進程。對於在同一台機器上運行的 MCP 伺服器,請使用此方法:222通過 stdin/stdout 通信的本地進程。對於在同一台機器上運行的 MCP 伺服器,請使用此方法:

203 223 


253 </Tab>273 </Tab>

254</Tabs>274</Tabs>

255 275 

256### HTTP/SSE 伺服器276<h3 id="http/sse-servers">

277 HTTP/SSE 伺服器

278</h3>

257 279 

258對於雲託管的 MCP 伺服器和遠程 API,請使用 HTTP 或 SSE:280對於雲託管的 MCP 伺服器和遠程 API,請使用 HTTP 或 SSE:

259 281 


311 333 

312對於可流式傳輸的 HTTP 傳輸,請改用 `"type": "http"`。在 `.mcp.json` 和其他 JSON 配置文件中,`"streamable-http"` 被接受作為 `"http"` 的別名。程式化的 `mcpServers` 選項僅接受 `"http"`。334對於可流式傳輸的 HTTP 傳輸,請改用 `"type": "http"`。在 `.mcp.json` 和其他 JSON 配置文件中,`"streamable-http"` 被接受作為 `"http"` 的別名。程式化的 `mcpServers` 選項僅接受 `"http"`。

313 335 

314### SDK MCP 伺服器336<h3 id="sdk-mcp-servers">

337 SDK MCP 伺服器

338</h3>

315 339 

316直接在應用程式代碼中定義自訂工具,而不是運行單獨的伺服器進程。有關實現詳情,請參閱[自訂工具指南](/zh-TW/agent-sdk/custom-tools)。340直接在應用程式代碼中定義自訂工具,而不是運行單獨的伺服器進程。有關實現詳情,請參閱[自訂工具指南](/zh-TW/agent-sdk/custom-tools)。

317 341 

318## MCP 工具搜尋342<h2 id="mcp-tool-search">

343 MCP 工具搜尋

344</h2>

319 345 

320當您配置了許多 MCP 工具時,工具定義可能會消耗上下文窗口的很大一部分。工具搜尋通過從上下文中隱藏工具定義並僅加載 Claude 每次轉換所需的工具來解決此問題。346當您配置了許多 MCP 工具時,工具定義可能會消耗上下文窗口的很大一部分。工具搜尋通過從上下文中隱藏工具定義並僅加載 Claude 每次轉換所需的工具來解決此問題。

321 347 


323 349 

324有關更多詳情,包括最佳實踐和將工具搜尋與自訂 SDK 工具一起使用,請參閱[工具搜尋指南](/zh-TW/agent-sdk/tool-search)。350有關更多詳情,包括最佳實踐和將工具搜尋與自訂 SDK 工具一起使用,請參閱[工具搜尋指南](/zh-TW/agent-sdk/tool-search)。

325 351 

326## 身份驗證352<h2 id="authentication">

353 身份驗證

354</h2>

327 355 

328大多數 MCP 伺服器需要身份驗證才能訪問外部服務。通過伺服器配置中的環境變數傳遞憑據。356大多數 MCP 伺服器需要身份驗證才能訪問外部服務。通過伺服器配置中的環境變數傳遞憑據。

329 357 

330### 通過環境變數傳遞憑據358<h3 id="pass-credentials-via-environment-variables">

359 通過環境變數傳遞憑據

360</h3>

331 361 

332使用 `env` 字段將 API 密鑰、令牌和其他憑據傳遞給 MCP 伺服器:362使用 `env` 字段將 API 密鑰、令牌和其他憑據傳遞給 MCP 伺服器:

333 363 


387 417 

388有關帶有調試日誌的完整工作示例,請參閱[從存儲庫列出問題](#list-issues-from-a-repository)。418有關帶有調試日誌的完整工作示例,請參閱[從存儲庫列出問題](#list-issues-from-a-repository)。

389 419 

390### 遠程伺服器的 HTTP 標頭420<h3 id="http-headers-for-remote-servers">

421 遠程伺服器的 HTTP 標頭

422</h3>

391 423 

392對於 HTTP 和 SSE 伺服器,直接在伺服器配置中傳遞身份驗證標頭:424對於 HTTP 和 SSE 伺服器,直接在伺服器配置中傳遞身份驗證標頭:

393 425 


445 </Tab>477 </Tab>

446</Tabs>478</Tabs>

447 479 

448### OAuth2 身份驗證480<h3 id="oauth2-authentication">

481 OAuth2 身份驗證

482</h3>

449 483 

450[MCP 規範支持 OAuth 2.1](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization) 用於授權。SDK 不會自動處理 OAuth 流程,但您可以在應用程式中完成 OAuth 流程後通過標頭傳遞訪問令牌:484[MCP 規範支持 OAuth 2.1](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization) 用於授權。SDK 不會自動處理 OAuth 流程,但您可以在應用程式中完成 OAuth 流程後通過標頭傳遞訪問令牌:

451 485 


485 ```519 ```

486</CodeGroup>520</CodeGroup>

487 521 

488## 示例522<h2 id="examples">

523 示例

524</h2>

489 525 

490### 從存儲庫列出問題526<h3 id="list-issues-from-a-repository">

527 從存儲庫列出問題

528</h3>

491 529 

492此示例連接到 [GitHub MCP 伺服器](https://github.com/modelcontextprotocol/servers/tree/main/src/github) 以列出最近的問題。該示例包括調試日誌以驗證 MCP 連接和工具調用。530此示例連接到 [GitHub MCP 伺服器](https://github.com/modelcontextprotocol/servers/tree/main/src/github) 以列出最近的問題。該示例包括調試日誌以驗證 MCP 連接和工具調用。

493 531 


584 ```622 ```

585</CodeGroup>623</CodeGroup>

586 624 

587### 查詢資料庫625<h3 id="query-a-database">

626 查詢資料庫

627</h3>

588 628 

589此示例使用 [Postgres MCP 伺服器](https://github.com/modelcontextprotocol/servers/tree/main/src/postgres) 查詢資料庫。連接字符串作為參數傳遞給伺服器。代理程式自動發現資料庫架構、編寫 SQL 查詢並返回結果:629此示例使用 [Postgres MCP 伺服器](https://github.com/modelcontextprotocol/servers/tree/main/src/postgres) 查詢資料庫。連接字符串作為參數傳遞給伺服器。代理程式自動發現資料庫架構、編寫 SQL 查詢並返回結果:

590 630 


655 ```695 ```

656</CodeGroup>696</CodeGroup>

657 697 

658## 錯誤處理698<h2 id="error-handling">

699 錯誤處理

700</h2>

659 701 

660MCP 伺服器可能因各種原因無法連接:伺服器進程可能未安裝、憑據可能無效,或遠程伺服器可能無法訪問。702MCP 伺服器可能因各種原因無法連接:伺服器進程可能未安裝、憑據可能無效,或遠程伺服器可能無法訪問。

661 703 

662SDK 在每個查詢開始時發出一個 `system` 消息,子類型為 `init`。此消息包括每個 MCP 伺服器的連接狀態。檢查 `status` 字段以在代理程式開始工作前檢測連接失敗704SDK 在每個查詢開始時發出一個 `system` 訊息,子類型為 `init`。此訊息包括每個 MCP 伺服器的連接狀態。檢查 `status` 欄位以在代理程式開始工作前檢測連接失敗

663 705 

664<CodeGroup>706<CodeGroup>

665 ```typescript TypeScript theme={null}707 ```typescript TypeScript theme={null}


717 ```759 ```

718</CodeGroup>760</CodeGroup>

719 761 

720## 故障排除762<h2 id="troubleshooting">

763 故障排除

764</h2>

721 765 

722### 伺服器顯示「失敗」狀態766<h3 id="server-shows-failed-status">

767 伺服器顯示「失敗」狀態

768</h3>

723 769 

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

725 771 


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

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

742 788 

743### 工具未被呼叫789<h3 id="tools-not-being-called">

790 工具未被呼叫

791</h3>

744 792 

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

746 794 


755};803};

756```804```

757 805 

758### 連接逾時806<h3 id="connection-timeouts">

807 連接逾時

808</h3>

759 809 

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

761 811 


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

764* 檢查伺服器日誌以查找緩慢初始化的原因814* 檢查伺服器日誌以查找緩慢初始化的原因

765 815 

766## 相關資源816<h2 id="related-resources">

817 相關資源

818</h2>

767 819 

768* **[自訂工具指南](/zh-TW/agent-sdk/custom-tools)**:構建您自己的 MCP 伺服器,與您的 SDK 應用程式在進程中運行820* **[自訂工具指南](/zh-TW/agent-sdk/custom-tools)**:構建您自己的 MCP 伺服器,與您的 SDK 應用程式在進程中運行

769* **[權限](/zh-TW/agent-sdk/permissions)**:使用 `allowedTools` 和 `disallowedTools` 控制您的代理程式可以使用哪些 MCP 工具821* **[權限](/zh-TW/agent-sdk/permissions)**:使用 `allowedTools` 和 `disallowedTools` 控制您的代理程式可以使用哪些 MCP 工具

Details

12 12 

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

14 14 

15<h2 id="what-s-changed">15<h2 id="whats-changed">

16 變更內容16 變更內容

17</h2>17</h2>

18 18 


82}82}

83```83```

84 84 

85就這樣!無需進行其他代碼變更。85**5. 檢查[重大變更](#breaking-changes)**

86 

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

86 88 

87<h3 id="for-python-projects">89<h3 id="for-python-projects">

88 針對 Python 專案90 針對 Python 專案


128options = ClaudeAgentOptions(model="claude-opus-4-7")130options = ClaudeAgentOptions(model="claude-opus-4-7")

129```131```

130 132 

131**5. 檢查 [重大變更](#breaking-changes)**133**5. 檢查[重大變更](#breaking-changes)**

132 134 

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

134 136 


172 174 

173<CodeGroup>175<CodeGroup>

174 ```typescript TypeScript theme={null}176 ```typescript TypeScript theme={null}

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

178 

175 // 之前 (v0.0.x) - 預設使用 Claude Code 的系統提示179 // 之前 (v0.0.x) - 預設使用 Claude Code 的系統提示

176 const result = query({ prompt: "Hello" });180 const before = query({ prompt: "Hello" });

177 181 

178 // 之後 (v0.1.0) - 預設使用最小系統提示182 // 之後 (v0.1.0) - 預設使用最小系統提示

179 // 要獲得舊行為,明確請求 Claude Code 的預設值:183 // 要獲得舊行為,明確請求 Claude Code 的預設值:

180 const result = query({184 const presetResult = query({

181 prompt: "Hello",185 prompt: "Hello",

182 options: {186 options: {

183 systemPrompt: { type: "preset", preset: "claude_code" }187 systemPrompt: { type: "preset", preset: "claude_code" }


185 });189 });

186 190 

187 // 或使用自訂系統提示:191 // 或使用自訂系統提示:

188 const result = query({192 const customResult = query({

189 prompt: "Hello",193 prompt: "Hello",

190 options: {194 options: {

191 systemPrompt: "You are a helpful coding assistant"195 systemPrompt: "You are a helpful coding assistant"


233 237 

234<CodeGroup>238<CodeGroup>

235 ```typescript TypeScript theme={null}239 ```typescript TypeScript theme={null}

236 const result = query({240 import { query } from "@anthropic-ai/claude-agent-sdk";

241 

242 const isolatedResult = query({

237 prompt: "Hello",243 prompt: "Hello",

238 options: {244 options: {

239 settingSources: [] // 未載入檔案系統設定245 settingSources: [] // 未載入檔案系統設定


241 });247 });

242 248 

243 // 或僅載入特定來源:249 // 或僅載入特定來源:

244 const result = query({250 const projectOnlyResult = query({

245 prompt: "Hello",251 prompt: "Hello",

246 options: {252 options: {

247 settingSources: ["project"] // 僅專案設定253 settingSources: ["project"] // 僅專案設定

Details

193 ...process.env,193 ...process.env,

194 // ... 匯出器配置 ...194 // ... 匯出器配置 ...

195 OTEL_SERVICE_NAME: "support-triage-agent",195 OTEL_SERVICE_NAME: "support-triage-agent",

196 OTEL_RESOURCE_ATTRIBUTES:196 OTEL_RESOURCE_ATTRIBUTES":

197 "service.version=1.4.0,deployment.environment=production",197 "service.version=1.4.0,deployment.environment=production",

198 },198 },

199 };199 };

Details

474 Claude Code 功能474 Claude Code 功能

475</h3>475</h3>

476 476 

477SDK 也支援 Claude Code 的基於檔案系統的配置。使用預設選項,SDK 從工作目錄中的 `.claude/` 和 `~/.claude/` 載入這些。要限制載入哪些來源,請在選項中設定 `setting_sources`(Python)或 `settingSources`(TypeScript)。477SDK 也支援 Claude Code 的基於檔案系統的設定。使用預設選項,SDK 從工作目錄中的 `.claude/` 和 `~/.claude/` 載入這些。要限制載入哪些來源,請在選項中設定 `setting_sources`(Python)或 `settingSources`(TypeScript)。

478 478 

479| 功能 | 描述 | 位置 |479| 功能 | 描述 | 位置 |

480| --------------------------------------------------- | -------------------------------- | --------------------------------- |480| --------------------------------------------------- | -------------------------------- | --------------------------------- |

Details

27 檢查 `deny` 規則(來自 `disallowed_tools` 和 [settings.json](/zh-TW/settings#permission-settings))。如果拒絕規則符合,工具會被阻止,即使在 `bypassPermissions` 模式下也是如此。裸名稱拒絕規則(如 `Bash`)會在此評估開始前將工具從 Claude 的上下文中移除,因此只有範圍規則(如 `Bash(rm *)`)會在此步驟中被檢查。27 檢查 `deny` 規則(來自 `disallowed_tools` 和 [settings.json](/zh-TW/settings#permission-settings))。如果拒絕規則符合,工具會被阻止,即使在 `bypassPermissions` 模式下也是如此。裸名稱拒絕規則(如 `Bash`)會在此評估開始前將工具從 Claude 的上下文中移除,因此只有範圍規則(如 `Bash(rm *)`)會在此步驟中被檢查。

28 </Step>28 </Step>

29 29 

30 <Step title="詢問規則">

31 檢查來自 [settings.json](/zh-TW/settings#permission-settings) 的 `ask` 規則。如果詢問規則符合,呼叫會傳遞到您的 [`canUseTool` 回呼](/zh-TW/agent-sdk/user-input) 以進行確認,即使在 `bypassPermissions` 模式下也是如此。在 `dontAsk` 模式下,符合的詢問規則會被拒絕,因為該模式永遠不會提示。

32 </Step>

33 

30 <Step title="權限模式">34 <Step title="權限模式">

31 應用活躍的 [權限模式](#permission-modes)。`bypassPermissions` 批准到達此步驟的所有內容。`acceptEdits` 批准檔案操作。其他模式會通過。35 應用活躍的 [權限模式](#permission-modes)。`bypassPermissions` 批准到達此步驟的所有內容。`acceptEdits` 批准檔案操作。`plan` 將檔案編輯和 shell 寫入工具路由到您的 `canUseTool` 回呼,無論允許規則如何,因此在規劃時寫入操作無法自動批准。其他模式會通過。

32 </Step>36 </Step>

33 37 

34 <Step title="允許規則">38 <Step title="允許規則">


40 </Step>44 </Step>

41</Steps>45</Steps>

42 46 

43<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=cc94220087262cd48c9b64a14c4e1c2c" alt="Permission evaluation flow diagram" width="1024" height="260" data-path="images/agent-sdk/permissions-flow.svg" />47<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=cc94220087262cd48c9b64a14c4e1c2c" alt="五步驟權限評估流程圖,與上述步驟相符:工具請求通過 hooks、拒絕規則、權限模式、允許規則和 canUseTool。Hooks、拒絕規則和 canUseTool 可以路由到'已阻止';權限模式繞過、允許規則和 canUseTool 可以路由到'執行'。" width="1024" height="260" data-path="images/agent-sdk/permissions-flow.svg" />

44 48 

45本頁重點關注 **允許和拒絕規則** 以及 **權限模式**。對於其他步驟:49本頁重點關注 **允許和拒絕規則** 以及 **權限模式**。對於其他步驟:

46 50 


58| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動批准。此處未列出的工具仍然存在,並會通過權限模式和 `canUseTool`。 |62| `allowed_tools=["Read", "Grep"]` | `Read` 和 `Grep` 會自動批准。此處未列出的工具仍然存在,並會通過權限模式和 `canUseTool`。 |

59| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除。Claude 看不到該工具,無法嘗試使用它。 |63| `disallowed_tools=["Bash"]` | `Bash` 工具定義會從請求中移除。Claude 看不到該工具,無法嘗試使用它。 |

60| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` 的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫會通過權限模式。 |64| `disallowed_tools=["Bash(rm *)"]` | `Bash` 保持可用。符合 `rm *` 的呼叫在每個權限模式中都會被拒絕,包括 `bypassPermissions`。其他 `Bash` 呼叫會通過權限模式。 |

65| `disallowed_tools=["*"]` | 每個工具定義都會從請求中移除。工具名稱萬用字元在拒絕規則中受支援:`"*"` 符合每個工具,`"mcp__*"` 符合所有伺服器上的每個 MCP 工具。 |

66 

67允許規則只在字面 `mcp__<server>__` 前綴之後接受工具名稱萬用字元。伺服器段必須不含萬用字元,以便規則命名您設定的特定伺服器:`mcp__puppeteer__*` 符合來自 `puppeteer` 伺服器的每個工具,`mcp__github__get_*` 符合其 `get_` 工具。未錨定的條目(如 `allowed_tools=["*"]` 或 `allowed_tools=["mcp__*"]`)會被忽略並顯示啟動警告,不會自動批准任何內容。

61 68 

62對於鎖定的代理程式,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對。列出的工具會被批准;其他任何工具都會被直接拒絕,而不是提示:69對於鎖定的代理程式,將 `allowedTools` 與 `permissionMode: "dontAsk"` 配對。列出的工具會被批准;其他任何工具都會被直接拒絕,而不是提示:

63 70 


90| :------------------- | :------- | :---------------------------------------------------------------------------------------------- |97| :------------------- | :------- | :---------------------------------------------------------------------------------------------- |

91| `default` | 標準權限行為 | 無自動批准;不符合的工具會觸發您的 `canUseTool` 回呼 |98| `default` | 標準權限行為 | 無自動批准;不符合的工具會觸發您的 `canUseTool` 回呼 |

92| `dontAsk` | 拒絕而不是提示 | 任何未被 `allowed_tools` 或規則預先批准的內容都會被拒絕;`canUseTool` 永遠不會被呼叫 |99| `dontAsk` | 拒絕而不是提示 | 任何未被 `allowed_tools` 或規則預先批准的內容都會被拒絕;`canUseTool` 永遠不會被呼叫 |

93| `acceptEdits` | 自動接受檔案編輯 | 檔案編輯和 [檔案系統操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)會自動被批准 |100| `acceptEdits` | 自動接受檔案編輯 | 檔案編輯和[檔案系統操作](#accept-edits-mode-acceptedits)(`mkdir`、`rm`、`mv` 等)會自動被批准 |

94| `bypassPermissions` | 繞過所有權限檢查 | 所有工具執行時無需權限提示(謹慎使用) |101| `bypassPermissions` | 繞過權限檢查 | 工具執行時無需權限提示,除非明確的[`ask` 規則](#how-permissions-are-evaluated)符合(謹慎使用) |

95| `plan` | 規劃模式 | 唯讀工具執行;Claude 分析和規劃而不編輯您的原始檔案 |102| `plan` | 規劃模式 | Claude 在不編輯您的原始檔案的情況下探索和規劃;檔案編輯永遠不會自動批准,並透過您的 `canUseTool` 回呼提示 |

96| `auto`(僅 TypeScript) | 模型分類批准 | 模型分類器批准或拒絕每個工具呼叫。請參閱 [Auto 模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 以了解可用性 |103| `auto`(僅 TypeScript) | 模型分類批准 | 模型分類器批准或拒絕每個工具呼叫。請參閱 [Auto 模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 以了解可用性 |

97 104 

98<Warning>105<Warning>

99 **子代理程式繼承:** 當父代理程式使用 `bypassPermissions`、`acceptEdits` 或 `auto` 時,所有子代理程式都會繼承該模式,且無法按子代理程式覆蓋。子代理程式可能有不同的系統提示和行為限制較少,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權,無需任何核准提示106 **子代理程式繼承:** 當父代理程式使用 `bypassPermissions`、`acceptEdits` 或 `auto` 時,所有子代理程式都會繼承該模式,且無法按子代理程式覆蓋。子代理程式可能有不同的系統提示和行為限制較少,因此繼承 `bypassPermissions` 會授予它們完整的自主系統存取權。明確的[`ask` 規則](#how-permissions-are-evaluated)仍然會強制提示。

100</Warning>107</Warning>

101 108 

102<h3 id="set-permission-mode">109<h3 id="set-permission-mode">


226 233 

227**使用時機:** 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時。234**使用時機:** 您信任 Claude 的編輯並想要更快的迭代,例如在原型設計期間或在隔離目錄中工作時。

228 235 

229<h4 id="don-t-ask-mode-dontask">236<h4 id="dont-ask-mode-dontask">

230 不詢問模式(`dontAsk`)237 不詢問模式(`dontAsk`)

231</h4>238</h4>

232 239 


250 規劃模式(`plan`)257 規劃模式(`plan`)

251</h4>258</h4>

252 259 

253Claude 限制為唯讀工具Claude 可以讀取檔案並執行唯讀 shell 命令來探索程式碼庫,但不編輯您的原始檔案。Claude 可能會使用 `AskUserQuestion` 在最終確定計畫之前澄清需求。請參閱 [處理核准和使用者輸入](/zh-TW/agent-sdk/user-input#handle-clarifying-questions) 以處理這些提示。260Claude 探索程式碼庫並產生計畫而不編輯您的原始檔案唯讀工具在預設模式下執行。檔案編輯在規劃模式下永遠不會自動批准,即使允許規則符合。它們改為透過您的 `canUseTool` 回呼提示。Claude 可能會使用 `AskUserQuestion` 在最終確定計畫之前澄清需求。請參閱[處理核准和使用者輸入](/zh-TW/agent-sdk/user-input#handle-clarifying-questions)以處理這些提示。

254 261 

255**使用時機:** 您想要 Claude 提出變更建議而不執行它們,例如在程式碼審查期間或當您需要在進行變更之前核准變更時。262**使用時機:** 您想要 Claude 提出變更建議而不執行它們,例如在程式碼審查期間或當您需要在進行變更之前核准變更時。

256 263 

agent-sdk/python.md +520 −179

Details

6 6 

7> Python Agent SDK 的完整 API 參考,包括所有函數、類型和類別。7> Python Agent SDK 的完整 API 參考,包括所有函數、類型和類別。

8 8 

9## 安裝9<h2 id="installation">

10 安裝

11</h2>

10 12 

11```bash theme={null}13```bash theme={null}

12pip install claude-agent-sdk14pip install claude-agent-sdk

13```15```

14 16 

15## 在 `query()` 和 `ClaudeSDKClient` 之間選擇17<h2 id="choosing-between-query-and-claudesdkclient">

18 在 `query()` 和 `ClaudeSDKClient` 之間選擇

19</h2>

16 20 

17Python SDK 提供了兩種與 Claude Code 互動的方式:21Python SDK 提供了兩種與 Claude Code 互動的方式:

18 22 

19### 快速比較23<h3 id="quick-comparison">

24 快速比較

25</h3>

20 26 

21| 功能 | `query()` | `ClaudeSDKClient` |27| 功能 | `query()` | `ClaudeSDKClient` |

22| :------------------ | :----------------------------------------- | :---------------- |28| :------------------ | :----------------------------------------- | :---------------- |


30| **Continue Chat** | 透過 `continue_conversation` 或 `resume` 手動進行 | ✅ 自動進行 |36| **Continue Chat** | 透過 `continue_conversation` 或 `resume` 手動進行 | ✅ 自動進行 |

31| **Use Case** | 一次性任務 | 持續對話 |37| **Use Case** | 一次性任務 | 持續對話 |

32 38 

33### 何時使用 `query()`(一次性任務)39<h3 id="when-to-use-query-one-off-tasks">

40 何時使用 `query()`(一次性任務)

41</h3>

34 42 

35**最適合:**43**最適合:**

36 44 


39* 簡單的自動化腳本47* 簡單的自動化腳本

40* 當您想每次都重新開始時48* 當您想每次都重新開始時

41 49 

42### 何時使用 `ClaudeSDKClient`(持續對話)50<h3 id="when-to-use-claudesdkclient-continuous-conversation">

51 何時使用 `ClaudeSDKClient`(持續對話)

52</h3>

43 53 

44**最適合:**54**最適合:**

45 55 


49* **回應驅動邏輯** - 當下一個動作取決於 Claude 的回應時59* **回應驅動邏輯** - 當下一個動作取決於 Claude 的回應時

50* **Session 控制** - 明確管理對話生命週期60* **Session 控制** - 明確管理對話生命週期

51 61 

52## 函數62<h2 id="functions">

63 函數

64</h2>

53 65 

54### `query()`66<h3 id="query">

67 `query()`

68</h3>

55 69 

56為每次與 Claude Code 的互動建立新 session。返回一個非同步迭代器,在消息到達時產生消息。每次呼叫 `query()` 都會重新開始,不記得先前的互動,除非您傳遞 `continue_conversation=True` 或在 [`ClaudeAgentOptions`](#claudeagentoptions) 中傳遞 `resume`。請參閱 [Sessions](/zh-TW/agent-sdk/sessions)。70為每次與 Claude Code 的互動建立新 session。返回一個非同步迭代器,在消息到達時產生消息。每次呼叫 `query()` 都會重新開始,不記得先前的互動,除非您傳遞 `continue_conversation=True` 或在 [`ClaudeAgentOptions`](#claudeagentoptions) 中傳遞 `resume`。請參閱 [Sessions](/zh-TW/agent-sdk/sessions)。

57 71 


64) -> AsyncIterator[Message]78) -> AsyncIterator[Message]

65```79```

66 80 

67#### 參數81<h4 id="parameters">

82 參數

83</h4>

68 84 

69| 參數 | 類型 | 描述 |85| 參數 | 類型 | 描述 |

70| :---------- | :--------------------------- | :------------------------------------------ |86| :---------- | :--------------------------- | :------------------------------------------ |


72| `options` | `ClaudeAgentOptions \| None` | 可選配置物件(如果為 None,預設為 `ClaudeAgentOptions()`) |88| `options` | `ClaudeAgentOptions \| None` | 可選配置物件(如果為 None,預設為 `ClaudeAgentOptions()`) |

73| `transport` | `Transport \| None` | 用於與 CLI 程序通訊的可選自訂傳輸 |89| `transport` | `Transport \| None` | 用於與 CLI 程序通訊的可選自訂傳輸 |

74 90 

75#### 返回91<h4 id="returns">

92 返回

93</h4>

76 94 

77返回 `AsyncIterator[Message]`,從對話中產生消息。95返回 `AsyncIterator[Message]`,從對話中產生消息。

78 96 

79#### 範例 - 使用選項97<h4 id="example-with-options">

98 範例 - 使用選項

99</h4>

80 100 

81```python theme={null}101```python theme={null}

82import asyncio102import asyncio


97asyncio.run(main())117asyncio.run(main())

98```118```

99 119 

100### `tool()`120<h3 id="tool">

121 `tool()`

122</h3>

101 123 

102用於定義具有類型安全的 MCP tools 的裝飾器。124用於定義具有類型安全的 MCP tools 的裝飾器。

103 125 


110) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]132) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

111```133```

112 134 

113#### 參數135<h4 id="parameters-1">

136 參數

137</h4>

114 138 

115| 參數 | 類型 | 描述 |139| 參數 | 類型 | 描述 |

116| :------------- | :---------------------------------------------- | :------------------------- |140| :------------- | :---------------------------------------------- | :------------------------- |


119| `input_schema` | `type \| dict[str, Any]` | 定義 tool 輸入參數的架構(見下文) |143| `input_schema` | `type \| dict[str, Any]` | 定義 tool 輸入參數的架構(見下文) |

120| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | 可選的 MCP tool 註解,為客戶端提供行為提示 |144| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | 可選的 MCP tool 註解,為客戶端提供行為提示 |

121 145 

122#### 輸入架構選項146<h4 id="input-schema-options">

147 輸入架構選項

148</h4>

123 149 

1241. **簡單類型對應**(推薦):1501. **簡單類型對應**(推薦):

125 151 


139 }165 }

140 ```166 ```

141 167 

142#### 返回168<h4 id="returns-1">

169 返回

170</h4>

143 171 

144一個裝飾器函數,包裝 tool 實現並返回 `SdkMcpTool` 實例。172一個裝飾器函數,包裝 tool 實現並返回 `SdkMcpTool` 實例。

145 173 

146#### 範例174<h4 id="example">

175 範例

176</h4>

147 177 

148```python theme={null}178```python theme={null}

149from claude_agent_sdk import tool179from claude_agent_sdk import tool


155 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}185 return {"content": [{"type": "text", "text": f"Hello, {args['name']}!"}]}

156```186```

157 187 

158#### `ToolAnnotations`188<h4 id="toolannotations">

189 `ToolAnnotations`

190</h4>

159 191 

160從 `mcp.types` 重新匯出(也可以從 `claude_agent_sdk` 匯入)。所有欄位都是可選提示;客戶端不應依賴它們進行安全決策。192從 `mcp.types` 重新匯出(也可以從 `claude_agent_sdk` 匯入)。所有欄位都是可選提示;客戶端不應依賴它們進行安全決策。

161 193 


182 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}214 return {"content": [{"type": "text", "text": f"Results for: {args['query']}"}]}

183```215```

184 216 

185### `create_sdk_mcp_server()`217<h3 id="create_sdk_mcp_server">

218 `create_sdk_mcp_server()`

219</h3>

186 220 

187建立在 Python 應用程式內執行的進程內 MCP 伺服器。221建立在 Python 應用程式內執行的進程內 MCP 伺服器。

188 222 


194) -> McpSdkServerConfig228) -> McpSdkServerConfig

195```229```

196 230 

197#### 參數231<h4 id="parameters-2">

232 參數

233</h4>

198 234 

199| 參數 | 類型 | 預設 | 描述 |235| 參數 | 類型 | 預設 | 描述 |

200| :-------- | :------------------------------ | :-------- | :-------------------------- |236| :-------- | :------------------------------ | :-------- | :-------------------------- |


202| `version` | `str` | `"1.0.0"` | 伺服器版本字串 |238| `version` | `str` | `"1.0.0"` | 伺服器版本字串 |

203| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | 使用 `@tool` 裝飾器建立的 tool 函數清單 |239| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | 使用 `@tool` 裝飾器建立的 tool 函數清單 |

204 240 

205#### 返回241<h4 id="returns-2">

242 返回

243</h4>

206 244 

207返回 `McpSdkServerConfig` 物件,可以傳遞給 `ClaudeAgentOptions.mcp_servers`。245返回 `McpSdkServerConfig` 物件,可以傳遞給 `ClaudeAgentOptions.mcp_servers`。

208 246 

209#### 範例247<h4 id="example-1">

248 範例

249</h4>

210 250 

211```python theme={null}251```python theme={null}

212from claude_agent_sdk import tool, create_sdk_mcp_server252from claude_agent_sdk import tool, create_sdk_mcp_server


235)275)

236```276```

237 277 

238### `list_sessions()`278<h3 id="list_sessions">

279 `list_sessions()`

280</h3>

239 281 

240列出過去的 sessions 及其中繼資料。按專案目錄篩選或列出所有專案中的 sessions。同步;立即返回。282列出過去的 sessions 及其中繼資料。按專案目錄篩選或列出所有專案中的 sessions。同步;立即返回。

241 283 


247) -> list[SDKSessionInfo]289) -> list[SDKSessionInfo]

248```290```

249 291 

250#### 參數292<h4 id="parameters-3">

293 參數

294</h4>

251 295 

252| 參數 | 類型 | 預設 | 描述 |296| 參數 | 類型 | 預設 | 描述 |

253| :------------------ | :------------ | :----- | :----------------------------------------------------- |297| :------------------ | :------------ | :----- | :----------------------------------------------------- |


255| `limit` | `int \| None` | `None` | 返回的最大 sessions 數 |299| `limit` | `int \| None` | `None` | 返回的最大 sessions 數 |

256| `include_worktrees` | `bool` | `True` | 當 `directory` 在 git 儲存庫內時,包括所有 worktrees 路徑中的 sessions |300| `include_worktrees` | `bool` | `True` | 當 `directory` 在 git 儲存庫內時,包括所有 worktrees 路徑中的 sessions |

257 301 

258#### 返回類型:`SDKSessionInfo`302<h4 id="return-type-sdksessioninfo">

303 返回類型:`SDKSessionInfo`

304</h4>

259 305 

260| 屬性 | 類型 | 描述 |306| 屬性 | 類型 | 描述 |

261| :-------------- | :------------ | :--------------------------------------------------- |307| :-------------- | :------------ | :--------------------------------------------------- |


270| `tag` | `str \| None` | 使用者設定的 session 標籤(見 [`tag_session()`](#tag_session)) |316| `tag` | `str \| None` | 使用者設定的 session 標籤(見 [`tag_session()`](#tag_session)) |

271| `created_at` | `int \| None` | session 建立時間(自紀元以來的毫秒數) |317| `created_at` | `int \| None` | session 建立時間(自紀元以來的毫秒數) |

272 318 

273#### 範例319<h4 id="example-2">

320 範例

321</h4>

274 322 

275列印專案的 10 個最近 sessions。結果按 `last_modified` 降序排序,因此第一項是最新的。省略 `directory` 以搜尋所有專案。323列印專案的 10 個最近 sessions。結果按 `last_modified` 降序排序,因此第一項是最新的。省略 `directory` 以搜尋所有專案。

276 324 


281 print(f"{session.summary} ({session.session_id})")329 print(f"{session.summary} ({session.session_id})")

282```330```

283 331 

284### `get_session_messages()`332<h3 id="get_session_messages">

333 `get_session_messages()`

334</h3>

285 335 

286從過去的 session 中檢索消息。同步;立即返回。336從過去的 session 中檢索消息。同步;立即返回。

287 337 


294) -> list[SessionMessage]344) -> list[SessionMessage]

295```345```

296 346 

297#### 參數347<h4 id="parameters-4">

348 參數

349</h4>

298 350 

299| 參數 | 類型 | 預設 | 描述 |351| 參數 | 類型 | 預設 | 描述 |

300| :----------- | :------------ | :----- | :------------------ |352| :----------- | :------------ | :----- | :------------------ |


303| `limit` | `int \| None` | `None` | 返回的最大消息數 |355| `limit` | `int \| None` | `None` | 返回的最大消息數 |

304| `offset` | `int` | `0` | 從開始跳過的消息數 |356| `offset` | `int` | `0` | 從開始跳過的消息數 |

305 357 

306#### 返回類型:`SessionMessage`358<h4 id="return-type-sessionmessage">

359 返回類型:`SessionMessage`

360</h4>

307 361 

308| 屬性 | 類型 | 描述 |362| 屬性 | 類型 | 描述 |

309| :------------------- | :----------------------------- | :---------- |363| :------------------- | :----------------------------- | :---------- |


313| `message` | `Any` | 原始消息內容 |367| `message` | `Any` | 原始消息內容 |

314| `parent_tool_use_id` | `None` | 保留供未來使用 |368| `parent_tool_use_id` | `None` | 保留供未來使用 |

315 369 

316#### 範例370<h4 id="example-3">

371 範例

372</h4>

317 373 

318```python theme={null}374```python theme={null}

319from claude_agent_sdk import list_sessions, get_session_messages375from claude_agent_sdk import list_sessions, get_session_messages


325 print(f"[{msg.type}] {msg.uuid}")381 print(f"[{msg.type}] {msg.uuid}")

326```382```

327 383 

328### `get_session_info()`384<h3 id="get_session_info">

385 `get_session_info()`

386</h3>

329 387 

330按 ID 讀取單個 session 的中繼資料,無需掃描完整專案目錄。同步;立即返回。388按 ID 讀取單個 session 的中繼資料,無需掃描完整專案目錄。同步;立即返回。

331 389 


336) -> SDKSessionInfo | None394) -> SDKSessionInfo | None

337```395```

338 396 

339#### 參數397<h4 id="parameters-5">

398 參數

399</h4>

340 400 

341| 參數 | 類型 | 預設 | 描述 |401| 參數 | 類型 | 預設 | 描述 |

342| :----------- | :------------ | :----- | :------------------ |402| :----------- | :------------ | :----- | :------------------ |


345 405 

346返回 [`SDKSessionInfo`](#return-type-sdksessioninfo),如果找不到 session,則返回 `None`。406返回 [`SDKSessionInfo`](#return-type-sdksessioninfo),如果找不到 session,則返回 `None`。

347 407 

348#### 範例408<h4 id="example-4">

409 範例

410</h4>

349 411 

350查詢單個 session 的中繼資料,無需掃描專案目錄。當您已經從先前的執行中獲得 session ID 時很有用。412查詢單個 session 的中繼資料,無需掃描專案目錄。當您已經從先前的執行中獲得 session ID 時很有用。

351 413 


357 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")419 print(f"{info.summary} (branch: {info.git_branch}, tag: {info.tag})")

358```420```

359 421 

360### `rename_session()`422<h3 id="rename_session">

423 `rename_session()`

424</h3>

361 425 

362通過附加自訂標題項來重新命名 session。重複呼叫是安全的;最新的標題獲勝。同步。426通過附加自訂標題項來重新命名 session。重複呼叫是安全的;最新的標題獲勝。同步。

363 427 


369) -> None433) -> None

370```434```

371 435 

372#### 參數436<h4 id="parameters-6">

437 參數

438</h4>

373 439 

374| 參數 | 類型 | 預設 | 描述 |440| 參數 | 類型 | 預設 | 描述 |

375| :----------- | :------------ | :----- | :-------------------- |441| :----------- | :------------ | :----- | :-------------------- |


379 445 

380如果 `session_id` 不是有效的 UUID 或 `title` 為空,則引發 `ValueError`;如果找不到 session,則引發 `FileNotFoundError`。446如果 `session_id` 不是有效的 UUID 或 `title` 為空,則引發 `ValueError`;如果找不到 session,則引發 `FileNotFoundError`。

381 447 

382#### 範例448<h4 id="example-5">

449 範例

450</h4>

383 451 

384重新命名最近的 session,以便稍後更容易找到。新標題在後續讀取時出現在 [`SDKSessionInfo.custom_title`](#return-type-sdksessioninfo) 中。452重新命名最近的 session,以便稍後更容易找到。新標題在後續讀取時出現在 [`SDKSessionInfo.custom_title`](#return-type-sdksessioninfo) 中。

385 453 


391 rename_session(sessions[0].session_id, "Refactor auth module")459 rename_session(sessions[0].session_id, "Refactor auth module")

392```460```

393 461 

394### `tag_session()`462<h3 id="tag_session">

463 `tag_session()`

464</h3>

395 465 

396標記 session。傳遞 `None` 以清除標籤。重複呼叫是安全的;最新的標籤獲勝。同步。466標記 session。傳遞 `None` 以清除標籤。重複呼叫是安全的;最新的標籤獲勝。同步。

397 467 


403) -> None473) -> None

404```474```

405 475 

406#### 參數476<h4 id="parameters-7">

477 參數

478</h4>

407 479 

408| 參數 | 類型 | 預設 | 描述 |480| 參數 | 類型 | 預設 | 描述 |

409| :----------- | :------------ | :----- | :--------------------------------- |481| :----------- | :------------ | :----- | :--------------------------------- |


413 485 

414如果 `session_id` 不是有效的 UUID 或 `tag` 在清理後為空,則引發 `ValueError`;如果找不到 session,則引發 `FileNotFoundError`。486如果 `session_id` 不是有效的 UUID 或 `tag` 在清理後為空,則引發 `ValueError`;如果找不到 session,則引發 `FileNotFoundError`。

415 487 

416#### 範例488<h4 id="example-6">

489 範例

490</h4>

417 491 

418標記 session,然後在稍後的讀取中按該標籤篩選。傳遞 `None` 以清除現有標籤。492標記 session,然後在稍後的讀取中按該標籤篩選。傳遞 `None` 以清除現有標籤。

419 493 


429 print(session.summary)503 print(session.summary)

430```504```

431 505 

432## 類別506<h2 id="classes">

507 類別

508</h2>

433 509 

434### `ClaudeSDKClient`510<h3 id="claudesdkclient">

511 `ClaudeSDKClient`

512</h3>

435 513 

436**在多個交換中維持對話 session。** 這是 TypeScript SDK 的 `query()` 函數內部工作方式的 Python 等效物 - 它建立一個可以繼續對話的客戶端物件。514**在多個交換中維持對話 session。** 這是 TypeScript SDK 的 `query()` 函數內部工作方式的 Python 等效物 - 它建立一個可以繼續對話的客戶端物件。

437 515 

438#### 主要功能516<h4 id="key-features">

517 主要功能

518</h4>

439 519 

440* **Session 連續性**:在多個 `query()` 呼叫中維持對話上下文520* **Session 連續性**:在多個 `query()` 呼叫中維持對話上下文

441* **相同對話**:session 保留先前的消息521* **相同對話**:session 保留先前的消息


463 async def disconnect(self) -> None543 async def disconnect(self) -> None

464```544```

465 545 

466#### 方法546<h4 id="methods">

547 方法

548</h4>

467 549 

468| 方法 | 描述 |550| 方法 | 描述 |

469| :---------------------------------------- | :-------------------------------------------------------------------------------------------------------------- |551| :---------------------------------------- | :-------------------------------------------------------------------------------------------------------------- |


483| `get_server_info()` | 取得伺服器資訊,包括 session ID 和功能 |565| `get_server_info()` | 取得伺服器資訊,包括 session ID 和功能 |

484| `disconnect()` | 從 Claude 斷開連接 |566| `disconnect()` | 從 Claude 斷開連接 |

485 567 

486#### 上下文管理器支援568<h4 id="context-manager-support">

569 上下文管理器支援

570</h4>

487 571 

488客戶端可以用作非同步上下文管理器以進行自動連接管理:572客戶端可以用作非同步上下文管理器以進行自動連接管理:

489 573 


496 580 

497> **重要:** 在迭代消息時,避免使用 `break` 提前退出,因為這可能導致 asyncio 清理問題。相反,讓迭代自然完成或使用標誌來追蹤何時找到所需內容。581> **重要:** 在迭代消息時,避免使用 `break` 提前退出,因為這可能導致 asyncio 清理問題。相反,讓迭代自然完成或使用標誌來追蹤何時找到所需內容。

498 582 

499#### 範例 - 繼續對話583<h4 id="example-continuing-a-conversation">

584 範例 - 繼續對話

585</h4>

500 586 

501```python theme={null}587```python theme={null}

502import asyncio588import asyncio


537asyncio.run(main())623asyncio.run(main())

538```624```

539 625 

540#### 範例 - 使用 ClaudeSDKClient 進行串流輸入626<h4 id="example-streaming-input-with-claudesdkclient">

627 範例 - 使用 ClaudeSDKClient 進行串流輸入

628</h4>

541 629 

542```python theme={null}630```python theme={null}

543import asyncio631import asyncio


581asyncio.run(main())669asyncio.run(main())

582```670```

583 671 

584#### 範例 - 使用中斷672<h4 id="example-using-interrupts">

673 範例 - 使用中斷

674</h4>

585 675 

586```python theme={null}676```python theme={null}

587import asyncio677import asyncio


624 **中斷後的緩衝區行為:** `interrupt()` 發送停止信號但不清除消息緩衝區。已由中斷任務產生的消息,包括其 `ResultMessage`(帶有 `subtype="error_during_execution"`),保留在流中。您必須在讀取新查詢的回應之前使用 `receive_response()` 清空它們。如果您在 `interrupt()` 之後立即發送新查詢並僅呼叫一次 `receive_response()`,您將收到中斷任務的消息,而不是新查詢的回應。714 **中斷後的緩衝區行為:** `interrupt()` 發送停止信號但不清除消息緩衝區。已由中斷任務產生的消息,包括其 `ResultMessage`(帶有 `subtype="error_during_execution"`),保留在流中。您必須在讀取新查詢的回應之前使用 `receive_response()` 清空它們。如果您在 `interrupt()` 之後立即發送新查詢並僅呼叫一次 `receive_response()`,您將收到中斷任務的消息,而不是新查詢的回應。

625</Note>715</Note>

626 716 

627#### 範例 - 進階權限控制717<h4 id="example-advanced-permission-control">

718 範例 - 進階權限控制

719</h4>

628 720 

629```python theme={null}721```python theme={null}

630from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions722from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions


673asyncio.run(main())765asyncio.run(main())

674```766```

675 767 

676## 類型768<h2 id="types">

769 類型

770</h2>

677 771 

678<Note>772<Note>

679 **`@dataclass` vs `TypedDict`:** 此 SDK 使用兩種類型。用 `@dataclass` 裝飾的類別(例如 `ResultMessage`、`AgentDefinition`、`TextBlock`)在執行時是物件實例,支援屬性存取:`msg.result`。用 `TypedDict` 定義的類別(例如 `ThinkingConfigEnabled`、`McpStdioServerConfig`、`SyncHookJSONOutput`)在執行時是**純字典**,需要鍵存取:`config["budget_tokens"]`,而不是 `config.budget_tokens`。`ClassName(field=value)` 呼叫語法對兩者都有效,但只有 dataclasses 產生具有屬性的物件。773 **`@dataclass` vs `TypedDict`:** 此 SDK 使用兩種類型。用 `@dataclass` 裝飾的類別(例如 `ResultMessage`、`AgentDefinition`、`TextBlock`)在執行時是物件實例,支援屬性存取:`msg.result`。用 `TypedDict` 定義的類別(例如 `ThinkingConfigEnabled`、`McpStdioServerConfig`、`SyncHookJSONOutput`)在執行時是**純字典**,需要鍵存取:`config["budget_tokens"]`,而不是 `config.budget_tokens`。`ClassName(field=value)` 呼叫語法對兩者都有效,但只有 dataclasses 產生具有屬性的物件。

680</Note>774</Note>

681 775 

682### `SdkMcpTool`776<h3 id="sdkmcptool">

777 `SdkMcpTool`

778</h3>

683 779 

684使用 `@tool` 裝飾器建立的 SDK MCP tool 的定義。780使用 `@tool` 裝飾器建立的 SDK MCP tool 的定義。

685 781 


701| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | 處理 tool 執行的非同步函數 |797| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | 處理 tool 執行的非同步函數 |

702| `annotations` | `ToolAnnotations \| None` | 可選的 MCP tool 註解(例如 `readOnlyHint`、`destructiveHint`、`openWorldHint`)。來自 `mcp.types` |798| `annotations` | `ToolAnnotations \| None` | 可選的 MCP tool 註解(例如 `readOnlyHint`、`destructiveHint`、`openWorldHint`)。來自 `mcp.types` |

703 799 

704### `Transport`800<h3 id="transport">

801 `Transport`

802</h3>

705 803 

706自訂傳輸實現的抽象基類。使用此來透過自訂通道與 Claude 程序通訊(例如,遠端連接而不是本地子程序)。804自訂傳輸實現的抽象基類。使用此來透過自訂通道與 Claude 程序通訊(例如,遠端連接而不是本地子程序)。

707 805 


746 844 

747匯入:`from claude_agent_sdk import Transport`845匯入:`from claude_agent_sdk import Transport`

748 846 

749### `ClaudeAgentOptions`847<h3 id="claudeagentoptions">

848 `ClaudeAgentOptions`

849</h3>

750 850 

751Claude Code 查詢的配置 dataclass。851Claude Code 查詢的配置 dataclass。

752 852 


810| `max_budget_usd` | `float \| None` | `None` | 當客戶端成本估計達到此 USD 值時停止查詢。與 `total_cost_usd` 的相同估計進行比較;見 [追蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 以了解準確性注意事項 |910| `max_budget_usd` | `float \| None` | `None` | 當客戶端成本估計達到此 USD 值時停止查詢。與 `total_cost_usd` 的相同估計進行比較;見 [追蹤成本和使用情況](/zh-TW/agent-sdk/cost-tracking) 以了解準確性注意事項 |

811| `disallowed_tools` | `list[str]` | `[]` | 要拒絕的 tools。裸名稱(例如 `"Bash"`)會從 Claude 的上下文中移除該 tool。範圍規則(例如 `"Bash(rm *)"`)會保留該 tool 可用,並在每個權限模式(包括 `bypassPermissions`)中拒絕匹配的呼叫。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |911| `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) |912| `enable_file_checkpointing` | `bool` | `False` | 啟用檔案變更追蹤以進行倒帶。見 [檔案 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |

813| `model` | `str \| None` | `None` | 要使用的 Claude 模型 |913| `model` | `str \| None` | `None` | Claude 模型別名或完整模型名稱。見 [接受的值和提供者特定 ID](/zh-TW/model-config#available-models) |

814| `fallback_model` | `str \| None` | `None` | 如果主模型失敗,使用的備用模型 |914| `fallback_model` | `str \| None` | `None` | 如果主模型失敗,使用的備用模型 |

815| `betas` | `list[SdkBeta]` | `[]` | 要啟用的測試版功能。見 [`SdkBeta`](#sdkbeta) 以了解可用選項 |915| `betas` | `list[SdkBeta]` | `[]` | 要啟用的測試版功能。見 [`SdkBeta`](#sdkbeta) 以了解可用選項 |

816| `output_format` | `dict[str, Any] \| None` | `None` | 結構化回應的輸出格式(例如 `{"type": "json_schema", "schema": {...}}`)。見 [結構化輸出](/zh-TW/agent-sdk/structured-outputs) 以了解詳情 |916| `output_format` | `dict[str, Any] \| None` | `None` | 結構化回應的輸出格式(例如 `{"type": "json_schema", "schema": {...}}`)。見 [結構化輸出](/zh-TW/agent-sdk/structured-outputs) 以了解詳情 |


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) |937| `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` |938| `max_thinking_tokens` | `int \| None` | `None` | *已棄用* - 思考區塊的最大令牌數。改用 `thinking` |

839| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | 控制擴展思考行為。優先於 `max_thinking_tokens` |939| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | 控制擴展思考行為。優先於 `max_thinking_tokens` |

840| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | 思考深度的努力級別 |940| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | 思考深度的努力級別。見 [調整努力級別](/zh-TW/model-config#adjust-effort-level) |

841| `session_store` | [`SessionStore`](/zh-TW/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | 將 session 記錄鏡像到外部後端,以便任何主機都可以繼續它們。見 [將 sessions 持久化到外部儲存](/zh-TW/agent-sdk/session-storage) |941| `session_store` | [`SessionStore`](/zh-TW/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | 將 session 記錄鏡像到外部後端,以便任何主機都可以繼續它們。見 [將 sessions 持久化到外部儲存](/zh-TW/agent-sdk/session-storage) |

842| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | 何時將鏡像的記錄項目刷新到 `session_store`。`"batched"` 每轉一次或當緩衝區填滿時刷新;`"eager"` 在每個框架後觸發背景刷新。當 `session_store` 為 `None` 時忽略 |942| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | 何時將鏡像的記錄項目刷新到 `session_store`。`"batched"` 每轉一次或當緩衝區填滿時刷新;`"eager"` 在每個框架後觸發背景刷新。當 `session_store` 為 `None` 時忽略 |

843 943 

844#### 處理緩慢或停滯的 API 回應944<h4 id="handle-slow-or-stalled-api-responses">

945 處理緩慢或停滯的 API 回應

946</h4>

845 947 

846CLI 子程序讀取多個環境變數,控制 API 逾時和停滯偵測。透過 `ClaudeAgentOptions.env` 傳遞它們:948CLI 子程序讀取多個環境變數,控制 API 逾時和停滯偵測。透過 `ClaudeAgentOptions.env` 傳遞它們:

847 949 


858* `API_TIMEOUT_MS`:Anthropic 客戶端上的每個請求逾時,以毫秒為單位。預設 `600000`。適用於主迴圈和所有子代理。960* `API_TIMEOUT_MS`:Anthropic 客戶端上的每個請求逾時,以毫秒為單位。預設 `600000`。適用於主迴圈和所有子代理。

859* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重試次數。預設 `10`。每次重試都有自己的 `API_TIMEOUT_MS` 視窗,因此最壞情況下的牆時間大約是 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 加上退避。961* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重試次數。預設 `10`。每次重試都有自己的 `API_TIMEOUT_MS` 視窗,因此最壞情況下的牆時間大約是 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 加上退避。

860* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:使用 `run_in_background` 啟動的子代理的停滯監視程式。預設 `600000`。在每個串流事件上重置;停滯時中止子代理,將任務標記為失敗,並將錯誤呈現給父代理,包含任何部分結果。不適用於同步子代理。962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:使用 `run_in_background` 啟動的子代理的停滯監視程式。預設 `600000`。在每個串流事件上重置;停滯時中止子代理,將任務標記為失敗,並將錯誤呈現給父代理,包含任何部分結果。不適用於同步子代理。

861* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` 搭配 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`:當標頭已到達但回應本體停止串流時中止請求。預設關閉。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 預設為 `300000` 並限制在該最小值。中止的請求會經過正常重試路徑。963* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` 搭配 `CLAUDE_STREAM_IDLE_TIMEOUT_MS`:當標頭已到達但回應本體停止串流時中止請求。當 `CLAUDE_ENABLE_STREAM_WATCHDOG` 未設定時,預設在直接 Anthropic API 上由伺服器控制,在其他提供者上關閉。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 預設為 `300000` 並限制在該最小值。中止的請求會經過正常重試路徑。

862 964 

863### `OutputFormat`965<h3 id="outputformat">

966 `OutputFormat`

967</h3>

864 968 

865結構化輸出驗證的配置。將此作為 `dict` 傳遞給 `ClaudeAgentOptions` 上的 `output_format` 欄位:969結構化輸出驗證的配置。將此作為 `dict` 傳遞給 `ClaudeAgentOptions` 上的 `output_format` 欄位:

866 970 


877| `type` | 是 | 必須是 `"json_schema"` 以進行 JSON Schema 驗證 |981| `type` | 是 | 必須是 `"json_schema"` 以進行 JSON Schema 驗證 |

878| `schema` | 是 | 用於輸出驗證的 JSON Schema 定義 |982| `schema` | 是 | 用於輸出驗證的 JSON Schema 定義 |

879 983 

880### `SystemPromptPreset`984<h3 id="systempromptpreset">

985 `SystemPromptPreset`

986</h3>

881 987 

882使用 Claude Code 的預設系統提示配置,可選新增。988使用 Claude Code 的預設系統提示配置,可選新增。

883 989 


896| `append` | 否 | 要附加到預設系統提示的其他指示 |1002| `append` | 否 | 要附加到預設系統提示的其他指示 |

897| `exclude_dynamic_sections` | 否 | 將每個 session 上下文(例如工作目錄、git 狀態和記憶體路徑)從系統提示移到第一個使用者消息。改進跨使用者和機器的提示快取重複使用。見 [修改系統提示](/zh-TW/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |1003| `exclude_dynamic_sections` | 否 | 將每個 session 上下文(例如工作目錄、git 狀態和記憶體路徑)從系統提示移到第一個使用者消息。改進跨使用者和機器的提示快取重複使用。見 [修改系統提示](/zh-TW/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

898 1004 

899### `SettingSource`1005<h3 id="settingsource">

1006 `SettingSource`

1007</h3>

900 1008 

901控制 SDK 從哪些檔案系統配置來源載入設定。1009控制 SDK 從哪些檔案系統配置來源載入設定。

902 1010 


905```1013```

906 1014 

907| 值 | 描述 | 位置 |1015| 值 | 描述 | 位置 |

908| :---------- | :----------------- | :---------------------------- |1016| :---------- | :------------ | :---------------------------- |

909| `"user"` | 全域使用者設定 | `~/.claude/settings.json` |1017| `"user"` | 全域使用者設定 | `~/.claude/settings.json` |

910| `"project"` | 共享專案設定(版本控制) | `.claude/settings.json` |1018| `"project"` | 共享專案設定(版本控制) | `.claude/settings.json` |

911| `"local"` | 本地專案設定(gitignored) | `.claude/settings.local.json` |1019| `"local"` | 本地專案設定(未版本控制) | `.claude/settings.local.json` |

912 1020 

913#### 預設行為1021<h4 id="default-behavior">

1022 預設行為

1023</h4>

914 1024 

915當 `setting_sources` 被省略或為 `None` 時,`query()` 載入與 Claude Code CLI 相同的檔案系統設定:使用者、專案和本地。無論如何都會載入受管原則設定。見 [settingSources 不控制的內容](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 以了解無論此選項如何都會讀取的輸入,以及如何停用它們。1025當 `setting_sources` 被省略或為 `None` 時,`query()` 載入與 Claude Code CLI 相同的檔案系統設定:使用者、專案和本地。無論如何都會載入受管原則設定。見 [settingSources 不控制的內容](/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 以了解無論此選項如何都會讀取的輸入,以及如何停用它們。

916 1026 

917#### 為什麼使用 setting\_sources1027<h4 id="why-use-setting_sources">

1028 為什麼使用 setting\_sources

1029</h4>

918 1030 

919**停用檔案系統設定:**1031**停用檔案系統設定:**

920 1032 


1011 print(message)1123 print(message)

1012```1124```

1013 1125 

1014#### 設定優先順序1126<h4 id="settings-precedence">

1127 設定優先順序

1128</h4>

1015 1129 

1016當載入多個來源時,設定會以此優先順序合併(最高到最低):1130當載入多個來源時,設定會以此優先順序合併(最高到最低):

1017 1131 


1021 1135 

1022程式設計選項(例如 `agents` 和 `allowed_tools`)會覆蓋使用者、專案和本地檔案系統設定。受管原則設定優先於程式設計選項。1136程式設計選項(例如 `agents` 和 `allowed_tools`)會覆蓋使用者、專案和本地檔案系統設定。受管原則設定優先於程式設計選項。

1023 1137 

1024### `AgentDefinition`1138<h3 id="agentdefinition">

1139 `AgentDefinition`

1140</h3>

1025 1141 

1026以程式設計方式定義的子代理的配置。1142以程式設計方式定義的子代理的配置。

1027 1143 


1044```1160```

1045 1161 

1046| 欄位 | 必需 | 描述 |1162| 欄位 | 必需 | 描述 |

1047| :---------------- | :- | :------------------------------------------------------------------------------- |1163| :---------------- | :- | :----------------------------------------------------------------------------------------------------------------------- |

1048| `description` | 是 | 何時使用此代理的自然語言描述 |1164| `description` | 是 | 何時使用此代理的自然語言描述 |

1049| `prompt` | 是 | 代理的系統提示 |1165| `prompt` | 是 | 代理的系統提示 |

1050| `tools` | 否 | 允許的 tool 名稱陣列。如果省略,繼承所有 tools |1166| `tools` | 否 | 允許的 tool 名稱陣列。如果省略,繼承所有 tools |

1051| `disallowedTools` | 否 | 要從代理的 tool 集中移除的 tool 名稱陣列 |1167| `disallowedTools` | 否 | 要從代理的 tool 集中移除的 tool 名稱陣列。也接受 MCP 伺服器級別的模式:`mcp__server` 或 `mcp__server__*` 移除該伺服器的每個 tool,`mcp__*` 移除任何伺服器的每個 MCP tool |

1052| `model` | 否 | 此代理的模型覆蓋。接受別名,例如 `"sonnet"`、`"opus"`、`"haiku"` 或 `"inherit"`,或完整模型 ID。如果省略,使用主模型 |1168| `model` | 否 | 此代理的模型覆蓋。接受別名,例如 `"sonnet"`、`"opus"`、`"haiku"` 或 `"inherit"`,或完整模型 ID。如果省略,使用主模型 |

1053| `skills` | 否 | 此代理可用的 skill 名稱清單 |1169| `skills` | 否 | 此代理可用的 skill 名稱清單 |

1054| `memory` | 否 | 此代理的記憶體來源:`"user"`、`"project"` 或 `"local"` |1170| `memory` | 否 | 此代理的記憶體來源:`"user"`、`"project"` 或 `"local"` |


1063 `AgentDefinition` 欄位名稱使用 camelCase,例如 `disallowedTools`、`permissionMode` 和 `maxTurns`。這些名稱直接對應到與 TypeScript SDK 共享的線路格式。這與 `ClaudeAgentOptions` 不同,後者對等頂級欄位(例如 `disallowed_tools` 和 `permission_mode`)使用 Python snake\_case。因為 `AgentDefinition` 是 dataclass,傳遞 snake\_case 關鍵字在構造時會引發 `TypeError`。1179 `AgentDefinition` 欄位名稱使用 camelCase,例如 `disallowedTools`、`permissionMode` 和 `maxTurns`。這些名稱直接對應到與 TypeScript SDK 共享的線路格式。這與 `ClaudeAgentOptions` 不同,後者對等頂級欄位(例如 `disallowed_tools` 和 `permission_mode`)使用 Python snake\_case。因為 `AgentDefinition` 是 dataclass,傳遞 snake\_case 關鍵字在構造時會引發 `TypeError`。

1064</Note>1180</Note>

1065 1181 

1066### `PermissionMode`1182<h3 id="permissionmode">

1183 `PermissionMode`

1184</h3>

1067 1185 

1068用於控制 tool 執行的權限模式。1186用於控制 tool 執行的權限模式。

1069 1187 


1071PermissionMode = Literal[1189PermissionMode = Literal[

1072 "default", # Standard permission behavior1190 "default", # Standard permission behavior

1073 "acceptEdits", # Auto-accept file edits1191 "acceptEdits", # Auto-accept file edits

1074 "plan", # Planning mode - read-only tools only1192 "plan", # Planning mode - explore without editing

1075 "dontAsk", # Deny anything not pre-approved instead of prompting1193 "dontAsk", # Deny anything not pre-approved instead of prompting

1076 "bypassPermissions", # Bypass all permission checks (use with caution)1194 "bypassPermissions", # Bypass permission checks; explicit ask rules still prompt (use with caution)

1077]1195]

1078```1196```

1079 1197 

1080### `EffortLevel`1198<h3 id="effortlevel">

1199 `EffortLevel`

1200</h3>

1081 1201 

1082用於指導思考深度的努力級別。1202用於指導思考深度的努力級別。

1083 1203 


1086 "low", # Minimal thinking, fastest responses1206 "low", # Minimal thinking, fastest responses

1087 "medium", # Moderate thinking1207 "medium", # Moderate thinking

1088 "high", # Deep reasoning1208 "high", # Deep reasoning

1089 "xhigh", # Extended reasoning (Opus 4.7 only; falls back to "high" on other models)1209 "xhigh", # Extended reasoning (Opus 4.8 and Opus 4.7; falls back to "high" on other models)

1090 "max", # Maximum effort1210 "max", # Maximum effort

1091]1211]

1092```1212```

1093 1213 

1094### `CanUseTool`1214<h3 id="canusetool">

1215 `CanUseTool`

1216</h3>

1095 1217 

1096tool 權限回呼函數的類型別名。1218tool 權限回呼函數的類型別名。

1097 1219 


1109 1231 

1110返回 `PermissionResult`(`PermissionResultAllow` 或 `PermissionResultDeny`)。1232返回 `PermissionResult`(`PermissionResultAllow` 或 `PermissionResultDeny`)。

1111 1233 

1112### `ToolPermissionContext`1234<h3 id="toolpermissioncontext">

1235 `ToolPermissionContext`

1236</h3>

1113 1237 

1114傳遞給 tool 權限回呼的上下文資訊。1238傳遞給 tool 權限回呼的上下文資訊。

1115 1239 


1135| `display_name` | `str \| None` | tool 操作的簡短名詞短語,例如 `Read file`,適合按鈕標籤 |1259| `display_name` | `str \| None` | tool 操作的簡短名詞短語,例如 `Read file`,適合按鈕標籤 |

1136| `description` | `str \| None` | 權限 UI 的人類可讀副標題 |1260| `description` | `str \| None` | 權限 UI 的人類可讀副標題 |

1137 1261 

1138### `PermissionResult`1262<h3 id="permissionresult">

1263 `PermissionResult`

1264</h3>

1139 1265 

1140權限回呼結果的聯合類型。1266權限回呼結果的聯合類型。

1141 1267 


1143PermissionResult = PermissionResultAllow | PermissionResultDeny1269PermissionResult = PermissionResultAllow | PermissionResultDeny

1144```1270```

1145 1271 

1146### `PermissionResultAllow`1272<h3 id="permissionresultallow">

1273 `PermissionResultAllow`

1274</h3>

1147 1275 

1148指示應允許 tool 呼叫的結果。1276指示應允許 tool 呼叫的結果。

1149 1277 


1161| `updated_input` | `dict[str, Any] \| None` | `None` | 要使用的修改輸入而不是原始輸入 |1289| `updated_input` | `dict[str, Any] \| None` | `None` | 要使用的修改輸入而不是原始輸入 |

1162| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | 要應用的權限更新 |1290| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | 要應用的權限更新 |

1163 1291 

1164### `PermissionResultDeny`1292<h3 id="permissionresultdeny">

1293 `PermissionResultDeny`

1294</h3>

1165 1295 

1166指示應拒絕 tool 呼叫的結果。1296指示應拒絕 tool 呼叫的結果。

1167 1297 


1179| `message` | `str` | `""` | 解釋為什麼拒絕 tool 的消息 |1309| `message` | `str` | `""` | 解釋為什麼拒絕 tool 的消息 |

1180| `interrupt` | `bool` | `False` | 是否中斷目前執行 |1310| `interrupt` | `bool` | `False` | 是否中斷目前執行 |

1181 1311 

1182### `PermissionUpdate`1312<h3 id="permissionupdate">

1313 `PermissionUpdate`

1314</h3>

1183 1315 

1184用於以程式設計方式更新權限的配置。1316用於以程式設計方式更新權限的配置。

1185 1317 


1212| `directories` | `list[str] \| None` | 用於新增/移除目錄操作的目錄 |1344| `directories` | `list[str] \| None` | 用於新增/移除目錄操作的目錄 |

1213| `destination` | `Literal[...] \| None` | 應用權限更新的位置 |1345| `destination` | `Literal[...] \| None` | 應用權限更新的位置 |

1214 1346 

1215### `PermissionRuleValue`1347<h3 id="permissionrulevalue">

1348 `PermissionRuleValue`

1349</h3>

1216 1350 

1217要在權限更新中新增、取代或移除的規則。1351要在權限更新中新增、取代或移除的規則。

1218 1352 


1223 rule_content: str | None = None1357 rule_content: str | None = None

1224```1358```

1225 1359 

1226### `ToolsPreset`1360<h3 id="toolspreset">

1361 `ToolsPreset`

1362</h3>

1227 1363 

1228使用 Claude Code 預設 tool 集的預設 tools 配置。1364使用 Claude Code 預設 tool 集的預設 tools 配置。

1229 1365 


1233 preset: Literal["claude_code"]1369 preset: Literal["claude_code"]

1234```1370```

1235 1371 

1236### `ThinkingConfig`1372<h3 id="thinkingconfig">

1373 `ThinkingConfig`

1374</h3>

1237 1375 

1238控制擴展思考行為。三個配置的聯合:1376控制擴展思考行為。三個配置的聯合:

1239 1377 


1281# config.budget_tokens would raise AttributeError1419# config.budget_tokens would raise AttributeError

1282```1420```

1283 1421 

1284### `SdkBeta`1422<h3 id="sdkbeta">

1423 `SdkBeta`

1424</h3>

1285 1425 

1286SDK 測試版功能的字面類型。1426SDK 測試版功能的字面類型。

1287 1427 


1292與 `ClaudeAgentOptions` 中的 `betas` 欄位一起使用以啟用測試版功能。1432與 `ClaudeAgentOptions` 中的 `betas` 欄位一起使用以啟用測試版功能。

1293 1433 

1294<Warning>1434<Warning>

1295 `context-1m-2025-08-07` 測試版自 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/en/about-claude/models/overview),它們以標準定價包括 1M 上下文,無需測試版標頭。1435 `context-1m-2025-08-07` 測試版自 2026 年 4 月 30 日起已停用。使用 Claude Sonnet 4.5 或 Sonnet 4 傳遞此標頭沒有效果,超過標準 200k 令牌上下文視窗的請求會返回錯誤。要使用 1M 令牌上下文視窗,請遷移到 [Claude Sonnet 4.6、Claude Opus 4.6、Claude Opus 4.7 或 Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview),它們以標準定價包括 1M 上下文,無需測試版標頭。

1296</Warning>1436</Warning>

1297 1437 

1298### `McpSdkServerConfig`1438<h3 id="mcpsdkserverconfig">

1439 `McpSdkServerConfig`

1440</h3>

1299 1441 

1300使用 `create_sdk_mcp_server()` 建立的 SDK MCP 伺服器的配置。1442使用 `create_sdk_mcp_server()` 建立的 SDK MCP 伺服器的配置。

1301 1443 


1306 instance: Any # MCP Server instance1448 instance: Any # MCP Server instance

1307```1449```

1308 1450 

1309### `McpServerConfig`1451<h3 id="mcpserverconfig">

1452 `McpServerConfig`

1453</h3>

1310 1454 

1311MCP 伺服器配置的聯合類型。1455MCP 伺服器配置的聯合類型。

1312 1456 


1316)1460)

1317```1461```

1318 1462 

1319#### `McpStdioServerConfig`1463<h4 id="mcpstdioserverconfig">

1464 `McpStdioServerConfig`

1465</h4>

1320 1466 

1321```python theme={null}1467```python theme={null}

1322class McpStdioServerConfig(TypedDict):1468class McpStdioServerConfig(TypedDict):


1326 env: NotRequired[dict[str, str]]1472 env: NotRequired[dict[str, str]]

1327```1473```

1328 1474 

1329#### `McpSSEServerConfig`1475<h4 id="mcpsseserverconfig">

1476 `McpSSEServerConfig`

1477</h4>

1330 1478 

1331```python theme={null}1479```python theme={null}

1332class McpSSEServerConfig(TypedDict):1480class McpSSEServerConfig(TypedDict):


1335 headers: NotRequired[dict[str, str]]1483 headers: NotRequired[dict[str, str]]

1336```1484```

1337 1485 

1338#### `McpHttpServerConfig`1486<h4 id="mcphttpserverconfig">

1487 `McpHttpServerConfig`

1488</h4>

1339 1489 

1340```python theme={null}1490```python theme={null}

1341class McpHttpServerConfig(TypedDict):1491class McpHttpServerConfig(TypedDict):


1344 headers: NotRequired[dict[str, str]]1494 headers: NotRequired[dict[str, str]]

1345```1495```

1346 1496 

1347### `McpServerStatusConfig`1497<h3 id="mcpserverstatusconfig">

1498 `McpServerStatusConfig`

1499</h3>

1348 1500 

1349MCP 伺服器的配置,如 [`get_mcp_status()`](#methods) 所報告。這是所有 [`McpServerConfig`](#mcpserverconfig) 傳輸變體加上用於透過 claude.ai 代理的伺服器的僅輸出 `claudeai-proxy` 變體的聯合。1501MCP 伺服器的配置,如 [`get_mcp_status()`](#methods) 所報告。這是所有 [`McpServerConfig`](#mcpserverconfig) 傳輸變體加上用於透過 claude.ai 代理的伺服器的僅輸出 `claudeai-proxy` 變體的聯合。

1350 1502 


1360 1512 

1361`McpSdkServerConfigStatus` 是 [`McpSdkServerConfig`](#mcpsdkserverconfig) 的可序列化形式,僅具有 `type`(`"sdk"`)和 `name`(`str`)欄位;進程內 `instance` 被省略。`McpClaudeAIProxyServerConfig` 具有 `type`(`"claudeai-proxy"`)、`url`(`str`)和 `id`(`str`)欄位。1513`McpSdkServerConfigStatus` 是 [`McpSdkServerConfig`](#mcpsdkserverconfig) 的可序列化形式,僅具有 `type`(`"sdk"`)和 `name`(`str`)欄位;進程內 `instance` 被省略。`McpClaudeAIProxyServerConfig` 具有 `type`(`"claudeai-proxy"`)、`url`(`str`)和 `id`(`str`)欄位。

1362 1514 

1363### `McpStatusResponse`1515<h3 id="mcpstatusresponse">

1516 `McpStatusResponse`

1517</h3>

1364 1518 

1365來自 [`ClaudeSDKClient.get_mcp_status()`](#methods) 的回應。在 `mcpServers` 鍵下包裝伺服器狀態清單。1519來自 [`ClaudeSDKClient.get_mcp_status()`](#methods) 的回應。在 `mcpServers` 鍵下包裝伺服器狀態清單。

1366 1520 


1369 mcpServers: list[McpServerStatus]1523 mcpServers: list[McpServerStatus]

1370```1524```

1371 1525 

1372### `McpServerStatus`1526<h3 id="mcpserverstatus">

1527 `McpServerStatus`

1528</h3>

1373 1529 

1374連接的 MCP 伺服器的狀態,包含在 [`McpStatusResponse`](#mcpstatusresponse) 中。1530連接的 MCP 伺服器的狀態,包含在 [`McpStatusResponse`](#mcpstatusresponse) 中。

1375 1531 


1394| `scope` | `str`(可選) | 配置範圍 |1550| `scope` | `str`(可選) | 配置範圍 |

1395| `tools` | `list`(可選) | 此伺服器提供的 tools,每個都具有 `name`、`description` 和 `annotations` 欄位 |1551| `tools` | `list`(可選) | 此伺服器提供的 tools,每個都具有 `name`、`description` 和 `annotations` 欄位 |

1396 1552 

1397### `SdkPluginConfig`1553<h3 id="sdkpluginconfig">

1554 `SdkPluginConfig`

1555</h3>

1398 1556 

1399在 SDK 中載入外掛程式的配置。1557在 SDK 中載入外掛程式的配置。

1400 1558 


1420 1578 

1421如需建立和使用外掛程式的完整資訊,見 [外掛程式](/zh-TW/agent-sdk/plugins)。1579如需建立和使用外掛程式的完整資訊,見 [外掛程式](/zh-TW/agent-sdk/plugins)。

1422 1580 

1423## 消息類型1581<h2 id="message-types">

1582 消息類型

1583</h2>

1424 1584 

1425### `Message`1585<h3 id="message">

1586 `Message`

1587</h3>

1426 1588 

1427所有可能消息的聯合類型。1589所有可能消息的聯合類型。

1428 1590 


1437)1599)

1438```1600```

1439 1601 

1440### `UserMessage`1602<h3 id="usermessage">

1603 `UserMessage`

1604</h3>

1441 1605 

1442使用者輸入消息。1606使用者輸入消息。

1443 1607 


1457| `parent_tool_use_id` | `str \| None` | 如果此消息是 tool 結果回應,則為 tool 使用 ID |1621| `parent_tool_use_id` | `str \| None` | 如果此消息是 tool 結果回應,則為 tool 使用 ID |

1458| `tool_use_result` | `dict[str, Any] \| None` | tool 結果資料(如適用) |1622| `tool_use_result` | `dict[str, Any] \| None` | tool 結果資料(如適用) |

1459 1623 

1460### `AssistantMessage`1624<h3 id="assistantmessage">

1625 `AssistantMessage`

1626</h3>

1461 1627 

1462具有內容區塊的助手回應消息。1628具有內容區塊的助手回應消息。

1463 1629 


1481| `usage` | `dict[str, Any] \| None` | 每消息令牌使用情況(與 [`ResultMessage.usage`](#resultmessage) 相同的鍵) |1647| `usage` | `dict[str, Any] \| None` | 每消息令牌使用情況(與 [`ResultMessage.usage`](#resultmessage) 相同的鍵) |

1482| `message_id` | `str \| None` | API 消息 ID。來自一個轉的多個消息共享相同的 ID |1648| `message_id` | `str \| None` | API 消息 ID。來自一個轉的多個消息共享相同的 ID |

1483 1649 

1484### `AssistantMessageError`1650<h3 id="assistantmessageerror">

1651 `AssistantMessageError`

1652</h3>

1485 1653 

1486助手消息的可能錯誤類型。1654助手消息的可能錯誤類型。

1487 1655 


1497]1665]

1498```1666```

1499 1667 

1500### `SystemMessage`1668<h3 id="systemmessage">

1669 `SystemMessage`

1670</h3>

1501 1671 

1502具有中繼資料的系統消息。1672具有中繼資料的系統消息。

1503 1673 


1508 data: dict[str, Any]1678 data: dict[str, Any]

1509```1679```

1510 1680 

1511### `ResultMessage`1681<h3 id="resultmessage">

1682 `ResultMessage`

1683</h3>

1512 1684 

1513具有成本和使用情況資訊的最終結果消息。1685具有成本和使用情況資訊的最終結果消息。

1514 1686 


1534 uuid: str | None = None1706 uuid: str | None = None

1535```1707```

1536 1708 

1709`subtype` 欄位決定了其他哪些欄位會被填入。它是 `"success"`、`"error_during_execution"`、`"error_max_turns"`、`"error_max_budget_usd"` 或 `"error_max_structured_output_retries"` 之一。Python dataclass 將所有變體扁平化為一個形狀,因此不適用於返回的 subtype 的欄位為 `None`。

1710 

1711當對話在錯誤時結束時,多個欄位會帶有診斷詳細資訊:

1712 

1713* `is_error`:當對話以錯誤狀態結束時為 `True`。在 `error_*` subtypes 上始終為 `True`。在 `subtype="success"` 上,當最終模型請求失敗時為 `True`,表示代理迴圈已完成但最後一個 API 呼叫返回了錯誤。

1714* `api_error_status`:終止 API 錯誤的 HTTP 狀態碼。當轉在沒有錯誤的情況下結束時為 `None`。僅在 `subtype="success"` 上填入。

1715* `result`:在 `subtype="success"` 上為最終助手消息的文字,或在 `error_*` subtypes 上為 `None`。當 `subtype="success"` 且 `is_error=True` 時,如果可用,此欄位會保存 API 錯誤字串,但可能為空,因此請檢查 `api_error_status` 和前面的 `AssistantMessage` 內容以獲取詳細資訊。

1716* `errors`:迴圈級別的錯誤字串,例如最大轉數消息。僅在 `error_*` subtypes 上填入。

1717 

1537`usage` 字典在出現時包含以下鍵:1718`usage` 字典在出現時包含以下鍵:

1538 1719 

1539| 鍵 | 類型 | 描述 |1720| 鍵 | 類型 | 描述 |


1556| `contextWindow` | `int` | 此模型的上下文視窗大小。 |1737| `contextWindow` | `int` | 此模型的上下文視窗大小。 |

1557| `maxOutputTokens` | `int` | 此模型的最大輸出令牌限制。 |1738| `maxOutputTokens` | `int` | 此模型的最大輸出令牌限制。 |

1558 1739 

1559### `StreamEvent`1740<h3 id="streamevent">

1741 `StreamEvent`

1742</h3>

1560 1743 

1561用於在串流期間進行部分消息更新的串流事件。僅在 `ClaudeAgentOptions` 中 `include_partial_messages=True` 時接收。透過 `from claude_agent_sdk.types import StreamEvent` 匯入。1744用於在串流期間進行部分消息更新的串流事件。僅在 `ClaudeAgentOptions` 中 `include_partial_messages=True` 時接收。透過 `from claude_agent_sdk.types import StreamEvent` 匯入。

1562 1745 


1576| `event` | `dict[str, Any]` | 原始 Claude API 串流事件資料 |1759| `event` | `dict[str, Any]` | 原始 Claude API 串流事件資料 |

1577| `parent_tool_use_id` | `str \| None` | 如果此事件來自子代理,則為父 tool 使用 ID |1760| `parent_tool_use_id` | `str \| None` | 如果此事件來自子代理,則為父 tool 使用 ID |

1578 1761 

1579### `RateLimitEvent`1762<h3 id="ratelimitevent">

1763 `RateLimitEvent`

1764</h3>

1580 1765 

1581當速率限制狀態變更時發出(例如,從 `"allowed"` 到 `"allowed_warning"`)。使用此來在使用者達到硬限制之前警告他們,或在狀態為 `"rejected"` 時退避。1766當速率限制狀態變更時發出(例如,從 `"allowed"` 到 `"allowed_warning"`)。使用此來在使用者達到硬限制之前警告他們,或在狀態為 `"rejected"` 時退避。

1582 1767 


1594| `uuid` | `str` | 唯一事件識別碼 |1779| `uuid` | `str` | 唯一事件識別碼 |

1595| `session_id` | `str` | session 識別碼 |1780| `session_id` | `str` | session 識別碼 |

1596 1781 

1597### `RateLimitInfo`1782<h3 id="ratelimitinfo">

1783 `RateLimitInfo`

1784</h3>

1598 1785 

1599由 [`RateLimitEvent`](#ratelimitevent) 攜帶的速率限制狀態。1786由 [`RateLimitEvent`](#ratelimitevent) 攜帶的速率限制狀態。

1600 1787 


1628| `overage_disabled_reason` | `str \| None` | 如果狀態為 `"rejected"`,為什麼超額不可用 |1815| `overage_disabled_reason` | `str \| None` | 如果狀態為 `"rejected"`,為什麼超額不可用 |

1629| `raw` | `dict[str, Any]` | 來自 CLI 的完整原始字典,包括上面未建模的欄位 |1816| `raw` | `dict[str, Any]` | 來自 CLI 的完整原始字典,包括上面未建模的欄位 |

1630 1817 

1631### `TaskStartedMessage`1818<h3 id="taskstartedmessage">

1819 `TaskStartedMessage`

1820</h3>

1632 1821 

1633在背景任務啟動時發出。背景任務是在主轉之外追蹤的任何內容:背景 Bash 命令、[Monitor](#monitor) 監視、透過 Agent tool 生成的子代理或遠端代理。`task_type` 欄位告訴您是哪一個。此命名與 `Task` 到 `Agent` tool 重新命名無關。1822在背景任務啟動時發出。背景任務是在主轉之外追蹤的任何內容:背景 Bash 命令、[Monitor](#monitor) 監視、透過 Agent tool 生成的子代理或遠端代理。`task_type` 欄位告訴您是哪一個。此命名與 `Task` 到 `Agent` tool 重新命名無關。

1634 1823 


1652| `tool_use_id` | `str \| None` | 相關聯的 tool 使用 ID |1841| `tool_use_id` | `str \| None` | 相關聯的 tool 使用 ID |

1653| `task_type` | `str \| None` | 背景任務的類型:`"local_bash"` 用於背景 Bash 和 Monitor 監視,`"local_agent"` 或 `"remote_agent"` |1842| `task_type` | `str \| None` | 背景任務的類型:`"local_bash"` 用於背景 Bash 和 Monitor 監視,`"local_agent"` 或 `"remote_agent"` |

1654 1843 

1655### `TaskUsage`1844<h3 id="taskusage">

1845 `TaskUsage`

1846</h3>

1656 1847 

1657背景任務的令牌和計時資料。1848背景任務的令牌和計時資料。

1658 1849 


1663 duration_ms: int1854 duration_ms: int

1664```1855```

1665 1856 

1666### `TaskProgressMessage`1857<h3 id="taskprogressmessage">

1858 `TaskProgressMessage`

1859</h3>

1667 1860 

1668定期為執行中的背景任務發出進度更新。1861定期為執行中的背景任務發出進度更新。

1669 1862 


1689| `tool_use_id` | `str \| None` | 相關聯的 tool 使用 ID |1882| `tool_use_id` | `str \| None` | 相關聯的 tool 使用 ID |

1690| `last_tool_name` | `str \| None` | 任務最後使用的 tool 名稱 |1883| `last_tool_name` | `str \| None` | 任務最後使用的 tool 名稱 |

1691 1884 

1692### `TaskNotificationMessage`1885<h3 id="tasknotificationmessage">

1886 `TaskNotificationMessage`

1887</h3>

1693 1888 

1694在背景任務完成、失敗或停止時發出。背景任務包括 `run_in_background` Bash 命令、Monitor 監視和背景子代理。1889在背景任務完成、失敗或停止時發出。背景任務包括 `run_in_background` Bash 命令、Monitor 監視和背景子代理。

1695 1890 


1717| `tool_use_id` | `str \| None` | 相關聯的 tool 使用 ID |1912| `tool_use_id` | `str \| None` | 相關聯的 tool 使用 ID |

1718| `usage` | `TaskUsage \| None` | 任務的最終令牌使用情況 |1913| `usage` | `TaskUsage \| None` | 任務的最終令牌使用情況 |

1719 1914 

1720## 內容區塊類型1915<h2 id="content-block-types">

1916 內容區塊類型

1917</h2>

1721 1918 

1722### `ContentBlock`1919<h3 id="contentblock">

1920 `ContentBlock`

1921</h3>

1723 1922 

1724所有內容區塊的聯合類型。1923所有內容區塊的聯合類型。

1725 1924 


1727ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock1926ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

1728```1927```

1729 1928 

1730### `TextBlock`1929<h3 id="textblock">

1930 `TextBlock`

1931</h3>

1731 1932 

1732文字內容區塊。1933文字內容區塊。

1733 1934 


1737 text: str1938 text: str

1738```1939```

1739 1940 

1740### `ThinkingBlock`1941<h3 id="thinkingblock">

1942 `ThinkingBlock`

1943</h3>

1741 1944 

1742思考內容區塊(用於具有思考能力的模型)。1945思考內容區塊(用於具有思考能力的模型)。

1743 1946 


1748 signature: str1951 signature: str

1749```1952```

1750 1953 

1751### `ToolUseBlock`1954<h3 id="tooluseblock">

1955 `ToolUseBlock`

1956</h3>

1752 1957 

1753tool 使用請求區塊1958工具使用請求區塊

1754 1959 

1755```python theme={null}1960```python theme={null}

1756@dataclass1961@dataclass


1760 input: dict[str, Any]1965 input: dict[str, Any]

1761```1966```

1762 1967 

1763### `ToolResultBlock`1968<h3 id="toolresultblock">

1969 `ToolResultBlock`

1970</h3>

1764 1971 

1765tool 執行結果區塊1972工具執行結果區塊

1766 1973 

1767```python theme={null}1974```python theme={null}

1768@dataclass1975@dataclass


1772 is_error: bool | None = None1979 is_error: bool | None = None

1773```1980```

1774 1981 

1775## 錯誤類型1982<h2 id="error-types">

1983 錯誤類型

1984</h2>

1776 1985 

1777### `ClaudeSDKError`1986<h3 id="claudesdkerror">

1987 `ClaudeSDKError`

1988</h3>

1778 1989 

1779所有 SDK 錯誤的基礎例外類別。1990所有 SDK 錯誤的基礎例外類別。

1780 1991 


1783 """Base error for Claude SDK."""1994 """Base error for Claude SDK."""

1784```1995```

1785 1996 

1786### `CLINotFoundError`1997<h3 id="clinotfounderror">

1998 `CLINotFoundError`

1999</h3>

1787 2000 

1788當 Claude Code CLI 未安裝或找不到時引發。2001當 Claude Code CLI 未安裝或找不到時引發。

1789 2002 


1799 """2012 """

1800```2013```

1801 2014 

1802### `CLIConnectionError`2015<h3 id="cliconnectionerror">

2016 `CLIConnectionError`

2017</h3>

1803 2018 

1804當連接到 Claude Code 失敗時引發。2019當連接到 Claude Code 失敗時引發。

1805 2020 


1808 """Failed to connect to Claude Code."""2023 """Failed to connect to Claude Code."""

1809```2024```

1810 2025 

1811### `ProcessError`2026<h3 id="processerror">

2027 `ProcessError`

2028</h3>

1812 2029 

1813當 Claude Code 程序失敗時引發。2030當 Claude Code 程序失敗時引發。

1814 2031 


1821 self.stderr = stderr2038 self.stderr = stderr

1822```2039```

1823 2040 

1824### `CLIJSONDecodeError`2041<h3 id="clijsondecodeerror">

2042 `CLIJSONDecodeError`

2043</h3>

1825 2044 

1826當 JSON 解析失敗時引發。2045當 JSON 解析失敗時引發。

1827 2046 


1837 self.original_error = original_error2056 self.original_error = original_error

1838```2057```

1839 2058 

1840## Hook 類型2059<h2 id="hook-types">

2060 Hook 類型

2061</h2>

1841 2062 

1842如需使用 hooks 的綜合指南,包括範例和常見模式,見 [Hooks 指南](/zh-TW/agent-sdk/hooks)。2063如需使用 hooks 的綜合指南,包括範例和常見模式,見 [Hooks 指南](/zh-TW/agent-sdk/hooks)。

1843 2064 

1844### `HookEvent`2065<h3 id="hookevent">

2066 `HookEvent`

2067</h3>

1845 2068 

1846支援的 hook 事件類型。2069支援的 hook 事件類型。

1847 2070 


1864 TypeScript SDK 支援 Python 中尚未提供的其他 hook 事件:`SessionStart`、`SessionEnd`、`Setup`、`TeammateIdle`、`TaskCompleted`、`ConfigChange`、`WorktreeCreate`、`WorktreeRemove`、`PostToolBatch` 和 `MessageDisplay`。2087 TypeScript SDK 支援 Python 中尚未提供的其他 hook 事件:`SessionStart`、`SessionEnd`、`Setup`、`TeammateIdle`、`TaskCompleted`、`ConfigChange`、`WorktreeCreate`、`WorktreeRemove`、`PostToolBatch` 和 `MessageDisplay`。

1865</Note>2088</Note>

1866 2089 

1867### `HookCallback`2090<h3 id="hookcallback">

2091 `HookCallback`

2092</h3>

1868 2093 

1869hook 回呼函數的類型定義。2094hook 回呼函數的類型定義。

1870 2095 


1884* `systemMessage`:警告消息,顯示給使用者2109* `systemMessage`:警告消息,顯示給使用者

1885* `hookSpecificOutput`:hook 特定輸出資料2110* `hookSpecificOutput`:hook 特定輸出資料

1886 2111 

1887### `HookContext`2112<h3 id="hookcontext">

2113 `HookContext`

2114</h3>

1888 2115 

1889傳遞給 hook 回呼的上下文資訊。2116傳遞給 hook 回呼的上下文資訊。

1890 2117 


1893 signal: Any | None # Future: abort signal support2120 signal: Any | None # Future: abort signal support

1894```2121```

1895 2122 

1896### `HookMatcher`2123<h3 id="hookmatcher">

2124 `HookMatcher`

2125</h3>

1897 2126 

1898用於將 hooks 符合到特定事件或 tools 的配置。2127用於將 hooks 符合到特定事件或 tools 的配置。

1899 2128 


1911 )2140 )

1912```2141```

1913 2142 

1914### `HookInput`2143<h3 id="hookinput">

2144 `HookInput`

2145</h3>

1915 2146 

1916所有 hook 輸入類型的聯合類型。實際類型取決於 `hook_event_name` 欄位。2147所有 hook 輸入類型的聯合類型。實際類型取決於 `hook_event_name` 欄位。

1917 2148 


1930)2161)

1931```2162```

1932 2163 

1933### `BaseHookInput`2164<h3 id="basehookinput">

2165 `BaseHookInput`

2166</h3>

1934 2167 

1935所有 hook 輸入類型中存在的基礎欄位。2168所有 hook 輸入類型中存在的基礎欄位。

1936 2169 


1949| `cwd` | `str` | 目前工作目錄 |2182| `cwd` | `str` | 目前工作目錄 |

1950| `permission_mode` | `str`(可選) | 目前權限模式 |2183| `permission_mode` | `str`(可選) | 目前權限模式 |

1951 2184 

1952### `PreToolUseHookInput`2185<h3 id="pretoolusehookinput">

2186 `PreToolUseHookInput`

2187</h3>

1953 2188 

1954`PreToolUse` hook 事件的輸入資料。2189`PreToolUse` hook 事件的輸入資料。

1955 2190 


1972| `agent_id` | `str`(可選) | 子代理識別碼,當 hook 在子代理內觸發時出現 |2207| `agent_id` | `str`(可選) | 子代理識別碼,當 hook 在子代理內觸發時出現 |

1973| `agent_type` | `str`(可選) | 子代理類型,當 hook 在子代理內觸發時出現 |2208| `agent_type` | `str`(可選) | 子代理類型,當 hook 在子代理內觸發時出現 |

1974 2209 

1975### `PostToolUseHookInput`2210<h3 id="posttoolusehookinput">

2211 `PostToolUseHookInput`

2212</h3>

1976 2213 

1977`PostToolUse` hook 事件的輸入資料。2214`PostToolUse` hook 事件的輸入資料。

1978 2215 


1997| `agent_id` | `str`(可選) | 子代理識別碼,當 hook 在子代理內觸發時出現 |2234| `agent_id` | `str`(可選) | 子代理識別碼,當 hook 在子代理內觸發時出現 |

1998| `agent_type` | `str`(可選) | 子代理類型,當 hook 在子代理內觸發時出現 |2235| `agent_type` | `str`(可選) | 子代理類型,當 hook 在子代理內觸發時出現 |

1999 2236 

2000### `PostToolUseFailureHookInput`2237<h3 id="posttoolusefailurehookinput">

2238 `PostToolUseFailureHookInput`

2239</h3>

2001 2240 

2002`PostToolUseFailure` hook 事件的輸入資料。在 tool 執行失敗時呼叫。2241`PostToolUseFailure` hook 事件的輸入資料。在 tool 執行失敗時呼叫。

2003 2242 


2024| `agent_id` | `str`(可選) | 子代理識別碼,當 hook 在子代理內觸發時出現 |2263| `agent_id` | `str`(可選) | 子代理識別碼,當 hook 在子代理內觸發時出現 |

2025| `agent_type` | `str`(可選) | 子代理類型,當 hook 在子代理內觸發時出現 |2264| `agent_type` | `str`(可選) | 子代理類型,當 hook 在子代理內觸發時出現 |

2026 2265 

2027### `UserPromptSubmitHookInput`2266<h3 id="userpromptsubmithookinput">

2267 `UserPromptSubmitHookInput`

2268</h3>

2028 2269 

2029`UserPromptSubmit` hook 事件的輸入資料。2270`UserPromptSubmit` hook 事件的輸入資料。

2030 2271 


2039| `hook_event_name` | `Literal["UserPromptSubmit"]` | 始終為 "UserPromptSubmit" |2280| `hook_event_name` | `Literal["UserPromptSubmit"]` | 始終為 "UserPromptSubmit" |

2040| `prompt` | `str` | 使用者提交的提示 |2281| `prompt` | `str` | 使用者提交的提示 |

2041 2282 

2042### `StopHookInput`2283<h3 id="stophookinput">

2284 `StopHookInput`

2285</h3>

2043 2286 

2044`Stop` hook 事件的輸入資料。2287`Stop` hook 事件的輸入資料。

2045 2288 


2054| `hook_event_name` | `Literal["Stop"]` | 始終為 "Stop" |2297| `hook_event_name` | `Literal["Stop"]` | 始終為 "Stop" |

2055| `stop_hook_active` | `bool` | stop hook 是否活躍 |2298| `stop_hook_active` | `bool` | stop hook 是否活躍 |

2056 2299 

2057### `SubagentStopHookInput`2300<h3 id="subagentstophookinput">

2301 `SubagentStopHookInput`

2302</h3>

2058 2303 

2059`SubagentStop` hook 事件的輸入資料。2304`SubagentStop` hook 事件的輸入資料。

2060 2305 


2075| `agent_transcript_path` | `str` | 子代理記錄檔案的路徑 |2320| `agent_transcript_path` | `str` | 子代理記錄檔案的路徑 |

2076| `agent_type` | `str` | 子代理的類型 |2321| `agent_type` | `str` | 子代理的類型 |

2077 2322 

2078### `PreCompactHookInput`2323<h3 id="precompacthookinput">

2324 `PreCompactHookInput`

2325</h3>

2079 2326 

2080`PreCompact` hook 事件的輸入資料。2327`PreCompact` hook 事件的輸入資料。

2081 2328 


2092| `trigger` | `Literal["manual", "auto"]` | 觸發壓縮的原因 |2339| `trigger` | `Literal["manual", "auto"]` | 觸發壓縮的原因 |

2093| `custom_instructions` | `str \| None` | 壓縮的自訂指示 |2340| `custom_instructions` | `str \| None` | 壓縮的自訂指示 |

2094 2341 

2095### `NotificationHookInput`2342<h3 id="notificationhookinput">

2343 `NotificationHookInput`

2344</h3>

2096 2345 

2097`Notification` hook 事件的輸入資料。2346`Notification` hook 事件的輸入資料。

2098 2347 


2111| `title` | `str`(可選) | 通知標題 |2360| `title` | `str`(可選) | 通知標題 |

2112| `notification_type` | `str` | 通知類型 |2361| `notification_type` | `str` | 通知類型 |

2113 2362 

2114### `SubagentStartHookInput`2363<h3 id="subagentstarthookinput">

2364 `SubagentStartHookInput`

2365</h3>

2115 2366 

2116`SubagentStart` hook 事件的輸入資料。2367`SubagentStart` hook 事件的輸入資料。

2117 2368 


2128| `agent_id` | `str` | 子代理的唯一識別碼 |2379| `agent_id` | `str` | 子代理的唯一識別碼 |

2129| `agent_type` | `str` | 子代理的類型 |2380| `agent_type` | `str` | 子代理的類型 |

2130 2381 

2131### `PermissionRequestHookInput`2382<h3 id="permissionrequesthookinput">

2383 `PermissionRequestHookInput`

2384</h3>

2132 2385 

2133`PermissionRequest` hook 事件的輸入資料。允許 hooks 以程式設計方式處理權限決策。2386`PermissionRequest` hook 事件的輸入資料。允許 hooks 以程式設計方式處理權限決策。

2134 2387 


2147| `tool_input` | `dict[str, Any]` | tool 的輸入參數 |2400| `tool_input` | `dict[str, Any]` | tool 的輸入參數 |

2148| `permission_suggestions` | `list[Any]`(可選) | 來自 CLI 的建議權限更新 |2401| `permission_suggestions` | `list[Any]`(可選) | 來自 CLI 的建議權限更新 |

2149 2402 

2150### `HookJSONOutput`2403<h3 id="hookjsonoutput">

2404 `HookJSONOutput`

2405</h3>

2151 2406 

2152hook 回呼返回值的聯合類型。2407hook 回呼返回值的聯合類型。

2153 2408 


2155HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput2410HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput

2156```2411```

2157 2412 

2158#### `SyncHookJSONOutput`2413<h4 id="synchookjsonoutput">

2414 `SyncHookJSONOutput`

2415</h4>

2159 2416 

2160具有控制和決策欄位的同步 hook 輸出。2417具有控制和決策欄位的同步 hook 輸出。

2161 2418 


2179 在 Python 程式碼中使用 `continue_`(帶下劃線)。發送到 CLI 時會自動轉換為 `continue`。2436 在 Python 程式碼中使用 `continue_`(帶下劃線)。發送到 CLI 時會自動轉換為 `continue`。

2180</Note>2437</Note>

2181 2438 

2182#### `HookSpecificOutput`2439<h4 id="hookspecificoutput">

2440 `HookSpecificOutput`

2441</h4>

2183 2442 

2184包含 hook 事件名稱和事件特定欄位的 `TypedDict`。形狀取決於 `hookEventName` 值。如需每個 hook 事件的可用欄位的完整詳情,見 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks#outputs)。2443包含 hook 事件名稱和事件特定欄位的 `TypedDict`。形狀取決於 `hookEventName` 值。如需每個 hook 事件的可用欄位的完整詳情,見 [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks#outputs)。

2185 2444 


2237)2496)

2238```2497```

2239 2498 

2240#### `AsyncHookJSONOutput`2499<h4 id="asynchookjsonoutput">

2500 `AsyncHookJSONOutput`

2501</h4>

2241 2502 

2242延遲 hook 執行的非同步 hook 輸出。2503延遲 hook 執行的非同步 hook 輸出。

2243 2504 


2251 在 Python 程式碼中使用 `async_`(帶下劃線)。發送到 CLI 時會自動轉換為 `async`。2512 在 Python 程式碼中使用 `async_`(帶下劃線)。發送到 CLI 時會自動轉換為 `async`。

2252</Note>2513</Note>

2253 2514 

2254### Hook 使用範例2515<h3 id="hook-usage-example">

2516 Hook 使用範例

2517</h3>

2255 2518 

2256此範例註冊兩個 hooks:一個阻止危險的 bash 命令(如 `rm -rf /`),另一個記錄所有 tool 使用情況以進行審計。安全 hook 僅在 Bash 命令上執行(透過 `matcher`),而記錄 hook 在所有 tools 上執行。2519此範例註冊兩個 hooks:一個阻止危險的 bash 命令(如 `rm -rf /`),另一個記錄所有 tool 使用情況以進行審計。安全 hook 僅在 Bash 命令上執行(透過 `matcher`),而記錄 hook 在所有 tools 上執行。

2257 2520 


2303 print(message)2566 print(message)

2304```2567```

2305 2568 

2306## Tool 輸入/輸出類型2569<h2 id="tool-input/output-types">

2570 Tool 輸入/輸出類型

2571</h2>

2307 2572 

2308所有內建 Claude Code tools 的輸入/輸出架構文件。雖然 Python SDK 不將這些匯出為類型,但它們代表消息中 tool 輸入和輸出的結構。2573所有內建 Claude Code tools 的輸入/輸出架構文件。雖然 Python SDK 不將這些匯出為類型,但它們代表消息中 tool 輸入和輸出的結構。

2309 2574 

2310### Agent2575<h3 id="agent">

2576 Agent

2577</h3>

2311 2578 

2312**Tool 名稱:** `Agent`(先前為 `Task`,仍接受作為別名)2579**Tool 名稱:** `Agent`(先前為 `Task`,仍接受作為別名)

2313 2580 


2332}2599}

2333```2600```

2334 2601 

2335### AskUserQuestion2602<h3 id="askuserquestion">

2603 AskUserQuestion

2604</h3>

2336 2605 

2337**Tool 名稱:** `AskUserQuestion`2606**Tool 名稱:** `AskUserQuestion`

2338 2607 


2378}2647}

2379```2648```

2380 2649 

2381### Bash2650<h3 id="bash">

2651 Bash

2652</h3>

2382 2653 

2383**Tool 名稱:** `Bash`2654**Tool 名稱:** `Bash`

2384 2655 


2404}2675}

2405```2676```

2406 2677 

2407### Monitor2678<h3 id="monitor">

2679 Monitor

2680</h3>

2408 2681 

2409**Tool 名稱:** `Monitor`2682**Tool 名稱:** `Monitor`

2410 2683 


2431}2704}

2432```2705```

2433 2706 

2434### Edit2707<h3 id="edit">

2708 Edit

2709</h3>

2435 2710 

2436**Tool 名稱:** `Edit`2711**Tool 名稱:** `Edit`

2437 2712 


2456}2731}

2457```2732```

2458 2733 

2459### Read2734<h3 id="read">

2735 Read

2736</h3>

2460 2737 

2461**Tool 名稱:** `Read`2738**Tool 名稱:** `Read`

2462 2739 


2490}2767}

2491```2768```

2492 2769 

2493### Write2770<h3 id="write">

2771 Write

2772</h3>

2494 2773 

2495**Tool 名稱:** `Write`2774**Tool 名稱:** `Write`

2496 2775 


2513}2792}

2514```2793```

2515 2794 

2516### Glob2795<h3 id="glob">

2796 Glob

2797</h3>

2517 2798 

2518**Tool 名稱:** `Glob`2799**Tool 名稱:** `Glob`

2519 2800 


2536}2817}

2537```2818```

2538 2819 

2539### Grep2820<h3 id="grep">

2821 Grep

2822</h3>

2540 2823 

2541**Tool 名稱:** `Grep`2824**Tool 名稱:** `Grep`

2542 2825 


2585}2868}

2586```2869```

2587 2870 

2588### NotebookEdit2871<h3 id="notebookedit">

2872 NotebookEdit

2873</h3>

2589 2874 

2590**Tool 名稱:** `NotebookEdit`2875**Tool 名稱:** `NotebookEdit`

2591 2876 


2612}2897}

2613```2898```

2614 2899 

2615### WebFetch2900<h3 id="webfetch">

2901 WebFetch

2902</h3>

2616 2903 

2617**Tool 名稱:** `WebFetch`2904**Tool 名稱:** `WebFetch`

2618 2905 


2638}2925}

2639```2926```

2640 2927 

2641### WebSearch2928<h3 id="websearch">

2929 WebSearch

2930</h3>

2642 2931 

2643**Tool 名稱:** `WebSearch`2932**Tool 名稱:** `WebSearch`

2644 2933 


2662}2951}

2663```2952```

2664 2953 

2665### TodoWrite2954<h3 id="todowrite">

2955 TodoWrite

2956</h3>

2666 2957 

2667**Tool 名稱:** `TodoWrite`2958**Tool 名稱:** `TodoWrite`

2668 2959 


2693}2984}

2694```2985```

2695 2986 

2696### TaskCreate2987<h3 id="taskcreate">

2988 TaskCreate

2989</h3>

2697 2990 

2698**Tool 名稱:** `TaskCreate`2991**Tool 名稱:** `TaskCreate`

2699 2992 


2716}3009}

2717```3010```

2718 3011 

2719### TaskUpdate3012<h3 id="taskupdate">

3013 TaskUpdate

3014</h3>

2720 3015 

2721**Tool 名稱:** `TaskUpdate`3016**Tool 名稱:** `TaskUpdate`

2722 3017 


2748}3043}

2749```3044```

2750 3045 

2751### TaskGet3046<h3 id="taskget">

3047 TaskGet

3048</h3>

2752 3049 

2753**Tool 名稱:** `TaskGet`3050**Tool 名稱:** `TaskGet`

2754 3051 


2775}3072}

2776```3073```

2777 3074 

2778### TaskList3075<h3 id="tasklist">

3076 TaskList

3077</h3>

2779 3078 

2780**Tool 名稱:** `TaskList`3079**Tool 名稱:** `TaskList`

2781 3080 


2801}3100}

2802```3101```

2803 3102 

2804### BashOutput3103<h3 id="bashoutput">

3104 BashOutput

3105</h3>

2805 3106 

2806**Tool 名稱:** `BashOutput`3107**Tool 名稱:** `BashOutput`

2807 3108 


2824}3125}

2825```3126```

2826 3127 

2827### KillBash3128<h3 id="killbash">

3129 KillBash

3130</h3>

2828 3131 

2829**Tool 名稱:** `KillBash`3132**Tool 名稱:** `KillBash`

2830 3133 


2845}3148}

2846```3149```

2847 3150 

2848### ExitPlanMode3151<h3 id="exitplanmode">

3152 ExitPlanMode

3153</h3>

2849 3154 

2850**Tool 名稱:** `ExitPlanMode`3155**Tool 名稱:** `ExitPlanMode`

2851 3156 


2866}3171}

2867```3172```

2868 3173 

2869### ListMcpResources3174<h3 id="listmcpresources">

3175 ListMcpResources

3176</h3>

2870 3177 

2871**Tool 名稱:** `ListMcpResourcesTool`3178**Tool 名稱:** `ListMcpResourcesTool`

2872 3179 


2895}3202}

2896```3203```

2897 3204 

2898### ReadMcpResource3205<h3 id="readmcpresource">

3206 ReadMcpResource

3207</h3>

2899 3208 

2900**Tool 名稱:** `ReadMcpResourceTool`3209**Tool 名稱:** `ReadMcpResourceTool`

2901 3210 


2919}3228}

2920```3229```

2921 3230 

2922## 使用 ClaudeSDKClient 的進階功能3231<h2 id="advanced-features-with-claudesdkclient">

3232 使用 ClaudeSDKClient 的進階功能

3233</h2>

2923 3234 

2924### 建立持續對話介面3235<h3 id="building-a-continuous-conversation-interface">

3236 建立持續對話介面

3237</h3>

2925 3238 

2926```python theme={null}3239```python theme={null}

2927from claude_agent_sdk import (3240from claude_agent_sdk import (


3000asyncio.run(main())3313asyncio.run(main())

3001```3314```

3002 3315 

3003### 使用 Hooks 進行行為修改3316<h3 id="using-hooks-for-behavior-modification">

3317 使用 Hooks 進行行為修改

3318</h3>

3004 3319 

3005```python theme={null}3320```python theme={null}

3006from claude_agent_sdk import (3321from claude_agent_sdk import (


3084asyncio.run(main())3399asyncio.run(main())

3085```3400```

3086 3401 

3087### 即時進度監控3402<h3 id="real-time-progress-monitoring">

3403 即時進度監控

3404</h3>

3088 3405 

3089```python theme={null}3406```python theme={null}

3090from claude_agent_sdk import (3407from claude_agent_sdk import (


3125asyncio.run(monitor_progress())3442asyncio.run(monitor_progress())

3126```3443```

3127 3444 

3128## 範例使用3445<h2 id="example-usage">

3446 範例使用

3447</h2>

3129 3448 

3130### 基本檔案操作(使用 query3449<h3 id="basic-file-operations-using-query">

3450 基本檔案操作(使用 query)

3451</h3>

3131 3452 

3132```python theme={null}3453```python theme={null}

3133from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock3454from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock


3153asyncio.run(create_project())3474asyncio.run(create_project())

3154```3475```

3155 3476 

3156### 錯誤處理3477<h3 id="error-handling">

3478 錯誤處理

3479</h3>

3157 3480 

3158```python theme={null}3481```python theme={null}

3159from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError3482from claude_agent_sdk import query, CLINotFoundError, ProcessError, CLIJSONDecodeError


3171 print(f"Failed to parse response: {e}")3494 print(f"Failed to parse response: {e}")

3172```3495```

3173 3496 

3174### 使用客戶端的串流模式3497<h3 id="streaming-mode-with-client">

3498 使用客戶端的串流模式

3499</h3>

3175 3500 

3176```python theme={null}3501```python theme={null}

3177from claude_agent_sdk import ClaudeSDKClient3502from claude_agent_sdk import ClaudeSDKClient


3198asyncio.run(interactive_session())3523asyncio.run(interactive_session())

3199```3524```

3200 3525 

3201### 使用 ClaudeSDKClient 的自訂 tools3526<h3 id="using-custom-tools-with-claudesdkclient">

3527 使用 ClaudeSDKClient 的自訂 tools

3528</h3>

3202 3529 

3203```python theme={null}3530```python theme={null}

3204from claude_agent_sdk import (3531from claude_agent_sdk import (


3270asyncio.run(main())3597asyncio.run(main())

3271```3598```

3272 3599 

3273## 沙箱配置3600<h2 id="sandbox-configuration">

3601 沙箱配置

3602</h2>

3274 3603 

3275### `SandboxSettings`3604<h3 id="sandboxsettings">

3605 `SandboxSettings`

3606</h3>

3276 3607 

3277沙箱行為的配置。使用此來啟用命令沙箱並以程式設計方式配置網路限制。3608沙箱行為的配置。使用此來啟用命令沙箱並以程式設計方式配置網路限制。

3278 3609 


3303 在沙箱設定中設定 `"failIfUnavailable": True` 以改為停止。該鍵尚未在 `SandboxSettings` 上宣告,但 SDK 會將其轉發給 Claude Code,後者會遵守它。`query()` 然後報告 `ResultMessage`,其中 `subtype="error_during_execution"` 且原因在 `errors` 中。監視該子類型,而不是期望 `query()` 在產生訊息之前引發。3634 在沙箱設定中設定 `"failIfUnavailable": True` 以改為停止。該鍵尚未在 `SandboxSettings` 上宣告,但 SDK 會將其轉發給 Claude Code,後者會遵守它。`query()` 然後報告 `ResultMessage`,其中 `subtype="error_during_execution"` 且原因在 `errors` 中。監視該子類型,而不是期望 `query()` 在產生訊息之前引發。

3304</Note>3635</Note>

3305 3636 

3306#### 範例使用3637<h4 id="example-usage-1">

3638 範例使用

3639</h4>

3307 3640 

3308```python theme={null}3641```python theme={null}

3309from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings3642from claude_agent_sdk import query, ClaudeAgentOptions, SandboxSettings


3325 **Unix socket 安全性**:`allowUnixSockets` 選項可以授予對強大系統服務的存取權限。例如,允許 `/var/run/docker.sock` 實際上透過 Docker API 授予完整主機系統存取權限,繞過沙箱隔離。僅允許嚴格必要的 Unix sockets,並了解每個的安全含義。3658 **Unix socket 安全性**:`allowUnixSockets` 選項可以授予對強大系統服務的存取權限。例如,允許 `/var/run/docker.sock` 實際上透過 Docker API 授予完整主機系統存取權限,繞過沙箱隔離。僅允許嚴格必要的 Unix sockets,並了解每個的安全含義。

3326</Warning>3659</Warning>

3327 3660 

3328### `SandboxNetworkConfig`3661<h3 id="sandboxnetworkconfig">

3662 `SandboxNetworkConfig`

3663</h3>

3329 3664 

3330沙箱模式的網路特定配置。這些設定適用於當父 [`SandboxSettings`](#sandboxsettings) 中的 `enabled` 為 `True` 時的沙箱化 Bash 命令。它們不會限制 WebFetch 工具,該工具改用[權限規則](/zh-TW/permissions#webfetch)。3665沙箱模式的網路特定配置。這些設定適用於當父 [`SandboxSettings`](#sandboxsettings) 中的 `enabled` 為 `True` 時的沙箱化 Bash 命令。它們不會限制 WebFetch 工具,該工具改用[權限規則](/zh-TW/permissions#webfetch)。

3331 3666 


3358 內建沙箱 proxy 根據請求的主機名稱強制執行網路允許清單,不會終止或檢查 TLS 流量,因此[網域前置](https://en.wikipedia.org/wiki/Domain_fronting)等技術可能會繞過它。有關詳細資訊,請參閱[沙箱安全限制](/zh-TW/sandboxing#security-limitations),以及[安全部署](/zh-TW/agent-sdk/secure-deployment#traffic-forwarding)以配置 TLS 終止 proxy。3693 內建沙箱 proxy 根據請求的主機名稱強制執行網路允許清單,不會終止或檢查 TLS 流量,因此[網域前置](https://en.wikipedia.org/wiki/Domain_fronting)等技術可能會繞過它。有關詳細資訊,請參閱[沙箱安全限制](/zh-TW/sandboxing#security-limitations),以及[安全部署](/zh-TW/agent-sdk/secure-deployment#traffic-forwarding)以配置 TLS 終止 proxy。

3359</Note>3694</Note>

3360 3695 

3361### `SandboxIgnoreViolations`3696<h3 id="sandboxignoreviolations">

3697 `SandboxIgnoreViolations`

3698</h3>

3362 3699 

3363用於忽略特定沙箱違規的配置。3700用於忽略特定沙箱違規的配置。

3364 3701 


3373| `file` | `list[str]` | `[]` | 要忽略違規的檔案路徑模式 |3710| `file` | `list[str]` | `[]` | 要忽略違規的檔案路徑模式 |

3374| `network` | `list[str]` | `[]` | 要忽略違規的網路模式 |3711| `network` | `list[str]` | `[]` | 要忽略違規的網路模式 |

3375 3712 

3376### 未沙箱化命令的權限回退3713<h3 id="permissions-fallback-for-unsandboxed-commands">

3714 未沙箱化命令的權限回退

3715</h3>

3377 3716 

3378當 `allowUnsandboxedCommands` 啟用時,模型可以透過在 tool 輸入中設定 `dangerouslyDisableSandbox: True` 來請求在沙箱外執行命令。這些請求回退到現有權限系統,意味著您的 `can_use_tool` 處理程序將被呼叫,允許您實現自訂授權邏輯。3717當 `allowUnsandboxedCommands` 啟用時,模型可以透過在 tool 輸入中設定 `dangerouslyDisableSandbox: True` 來請求在沙箱外執行命令。這些請求回退到現有權限系統,意味著您的 `can_use_tool` 處理程序將被呼叫,允許您實現自訂授權邏輯。

3379 3718 


3451 如果 `permission_mode` 設定為 `bypassPermissions` 且 `allow_unsandboxed_commands` 啟用,模型可以自主執行沙箱外的命令,無需任何批准提示。此組合實際上允許模型無聲地逃脫沙箱隔離。3790 如果 `permission_mode` 設定為 `bypassPermissions` 且 `allow_unsandboxed_commands` 啟用,模型可以自主執行沙箱外的命令,無需任何批准提示。此組合實際上允許模型無聲地逃脫沙箱隔離。

3452</Warning>3791</Warning>

3453 3792 

3454## 另見3793<h2 id="see-also">

3794 另見

3795</h2>

3455 3796 

3456* [SDK 概述](/zh-TW/agent-sdk/overview) - 一般 SDK 概念3797* [SDK 概述](/zh-TW/agent-sdk/overview) - 一般 SDK 概念

3457* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript) - TypeScript SDK 文件3798* [TypeScript SDK 參考](/zh-TW/agent-sdk/typescript) - TypeScript SDK 文件

Details

38 </Step>38 </Step>

39 39 

40 <Step title="安裝 SDK">40 <Step title="安裝 SDK">

41 為您的語言安裝 Agent SDK 41 為您的語言安裝 Agent SDK 套件

42 42 

43 <Tabs>43 <Tabs>

44 <Tab title="TypeScript">44 <Tab title="TypeScript">


48 </Tab>48 </Tab>

49 49 

50 <Tab title="Python (uv)">50 <Tab title="Python (uv)">

51 [uv](https://docs.astral.sh/uv/) 是一個快速的 Python 包管理器,可自動處理虛擬環境:51 [uv](https://docs.astral.sh/uv/) 是一個快速的 Python 套件管理器,可自動處理虛擬環境:

52 52 

53 ```bash theme={null}53 ```bash theme={null}

54 uv init54 uv init


57 </Tab>57 </Tab>

58 58 

59 <Tab title="Python (pip)">59 <Tab title="Python (pip)">

60 創建並激活虛擬環境然後安裝該包60 創建並啟用虛擬環境然後安裝該套件

61 61 

62 在 macOS 或 Linux 上:62 在 macOS 或 Linux 上:

63 63 


80 </Tabs>80 </Tabs>

81 81 

82 <Note>82 <Note>

83 TypeScript SDK 為您的平台捆綁了一個本機 Claude Code 二進制文件作為可選依賴項,因此您無需單獨安裝 Claude Code。83 TypeScript SDK 為您的平台捆綁了一個原生 Claude Code 二進制文件作為可選依賴項,因此您無需單獨安裝 Claude Code。

84 </Note>84 </Note>

85 </Step>85 </Step>

86 86 

87 <Step title="設置您的 API 密鑰">87 <Step title="設置您的 API 金鑰">

88 從 [Claude 控制台](https://platform.claude.com/) 獲取 API 密鑰然後在您的項目目錄中創建一個 `.env` 文件88 從 [Claude 控制台](https://platform.claude.com/) 取得 API 金鑰然後在您的項目目錄中建立一個 `.env` 檔案

89 89 

90 ```bash theme={null}90 ```bash theme={null}

91 ANTHROPIC_API_KEY=your-api-key91 ANTHROPIC_API_KEY=your-api-key

92 ```92 ```

93 93 

94 SDK 還支持通過第三方 API 提供商進行身份驗證:94 SDK 也支援透過第三方 API 提供商進行身份驗證:

95 95 

96 * **Amazon Bedrock**:設置 `CLAUDE_CODE_USE_BEDROCK=1` 環境變量並配置 AWS 憑證96 * **Amazon Bedrock**:設定 `CLAUDE_CODE_USE_BEDROCK=1` 環境變數並設定 AWS 認證

97 * **Claude Platform on AWS**:設置 `CLAUDE_CODE_USE_ANTHROPIC_AWS=1` 和 `ANTHROPIC_AWS_WORKSPACE_ID`,然後配置 AWS 憑證97 * **Claude Platform on AWS**:設定 `CLAUDE_CODE_USE_ANTHROPIC_AWS=1` 和 `ANTHROPIC_AWS_WORKSPACE_ID`,然後設定 AWS 認證

98 * **Google Vertex AI**:設置 `CLAUDE_CODE_USE_VERTEX=1` 環境變量並配置 Google Cloud 憑證98 * **Google Vertex AI**:設定 `CLAUDE_CODE_USE_VERTEX=1` 環境變數並設定 Google Cloud 認證

99 * **Microsoft Azure**:設置 `CLAUDE_CODE_USE_FOUNDRY=1` 環境變量並配置 Azure 憑證99 * **Microsoft Azure**:設定 `CLAUDE_CODE_USE_FOUNDRY=1` 環境變數並設定 Azure 認證

100 100 

101 有關詳細信息,請參閱 [Bedrock](/zh-TW/amazon-bedrock)、[Claude Platform on AWS](/zh-TW/claude-platform-on-aws)、[Vertex AI](/zh-TW/google-vertex-ai) 或 [Azure AI Foundry](/zh-TW/microsoft-foundry) 的設置指南。101 如需詳細資訊,請參閱 [Bedrock](/zh-TW/amazon-bedrock)、[Claude Platform on AWS](/zh-TW/claude-platform-on-aws)、[Vertex AI](/zh-TW/google-vertex-ai) 或 [Azure AI Foundry](/zh-TW/microsoft-foundry) 的設置指南。

102 102 

103 <Note>103 <Note>

104 除非事先獲得批准,否則 Anthropic 不允許第三方開發人員提供 claude.ai 登錄或對其產品的速率限制,包括基於 Claude Agent SDK 構建的代理。請改用本文檔中描述的 API 密鑰身份驗證方法104 除非事先獲得批准,否則 Anthropic 不允許第三方開發人員提供 claude.ai 登入或對其產品的速率限制,包括基於 Claude Agent SDK 構建的代理。請改用本文件中描述的 API 金鑰身份驗證方法

105 </Note>105 </Note>

106 </Step>106 </Step>

107</Steps>107</Steps>


244這就是 Agent SDK 的不同之處:Claude 直接執行工具,而不是要求您實現它們。244這就是 Agent SDK 的不同之處:Claude 直接執行工具,而不是要求您實現它們。

245 245 

246<Note>246<Note>

247 如果您看到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)。

248</Note>248</Note>

249 249 

250<h3 id="try-other-prompts">250<h3 id="try-other-prompts">


340**權限模式**控制您想要多少人工監督:340**權限模式**控制您想要多少人工監督:

341 341 

342| 模式 | 行為 | 用例 |342| 模式 | 行為 | 用例 |

343| -------------------- | -------------------------- | -------------- |343| -------------------- | ------------------------------------------------------------------------------------------ | -------------- |

344| `acceptEdits` | 自動批准文件編輯和常見文件系統命令,詢問其他操作 | 受信任的開發工作流 |344| `acceptEdits` | 自動批准文件編輯和常見文件系統命令,詢問其他操作 | 受信任的開發工作流 |

345| `dontAsk` | 拒絕不在 `allowedTools` 中的任何內容 | 鎖定的無頭代理 |345| `dontAsk` | 拒絕不在 `allowedTools` 中的任何內容 | 鎖定的無頭代理 |

346| `auto`(僅 TypeScript) | 模型分類器批准或拒絕每個工具調用 | 具有安全防護的自主代理 |346| `auto`(僅 TypeScript) | 模型分類器批准或拒絕每個工具調用 | 具有安全防護的自主代理 |

347| `bypassPermissions` | 運行每個工具而不提示 | 沙箱 CI、完全受信任的環境 |347| `bypassPermissions` | 運行每個工具而不提示,除非明確的 [`ask` 規則](/zh-TW/agent-sdk/permissions#how-permissions-are-evaluated) 符合 | 沙箱 CI、完全受信任的環境 |

348| `default` | 需要 `canUseTool` 回調來處理批准 | 自定義批准流程 |348| `default` | 需要 `canUseTool` 回調來處理批准 | 自定義批准流程 |

349 349 

350上面的示例使用 `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)。

Details

18 威脅模型18 威脅模型

19</h2>19</h2>

20 20 

21代理可能因提示注入(嵌入在它們處理的內容中的指令)或模型錯誤而採取意外操作。Claude 模型旨在抵抗這種情況;請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)和您部署的模型的系統卡以了解評估詳情。21代理可能因提示注入(嵌入在它們處理的內容中的指令)或模型錯誤而採取意外操作。Claude 模型旨在抵抗這種情況;請參閱[模型概述](https://platform.claude.com/docs/zh-TW/about-claude/models/overview)和您部署的模型的系統卡以了解評估詳情。

22 22 

23不過,深度防禦仍然是很好的做法。例如,如果代理處理一個惡意檔案,該檔案指示它將客戶資料發送到外部伺服器,網路控制可以完全阻止該請求。23不過,深度防禦仍然是很好的做法。例如,如果代理處理一個惡意檔案,該檔案指示它將客戶資料發送到外部伺服器,網路控制可以完全阻止該請求。

24 24 

Details

15* **合規性和審計。** 將記錄保存在您已經管理的存儲中,使用您自己的保留規則、加密和訪問控制。15* **合規性和審計。** 將記錄保存在您已經管理的存儲中,使用您自己的保留規則、加密和訪問控制。

16 16 

17<h2 id="the-sessionstore-interface">17<h2 id="the-sessionstore-interface">

18 `SessionStore` 接口18 `SessionStore` 介面

19</h2>19</h2>

20 20 

21`SessionStore` 是一個對象,具有兩個必需的方法 `append` 和 `load`,以及三個可選方法。SDK 調用 `append` 在查詢期間寫入記錄條目調用 `load` 讀取它們以進行恢復。21`SessionStore` 是一個物件,具有兩個必需的方法 `append` 和 `load`,以及三個可選方法。SDK 呼叫 `append` 在查詢期間寫入記錄項目呼叫 `load` 讀取它們以進行恢復。

22 22 

23<CodeGroup>23<CodeGroup>

24 ```typescript TypeScript theme={null}24 ```typescript TypeScript theme={null}


73 ```73 ```

74</CodeGroup>74</CodeGroup>

75 75 

76`SessionKey` 指向一個記錄。`projectKey` 是工作目錄的穩定、文件系統安全的編碼,`sessionId` 是會話 UUID,`subpath` 在條目屬於子代理記錄或邊車文件而不是主對話時設置。將 `subpath` 視為不透明的鍵後綴;它遵循磁盤上的佈局,例如 `subagents/agent-<id>`。當 `subpath` 未定義時,鍵指向主記錄。76`SessionKey` 指向一個記錄。`projectKey` 是工作目錄的穩定、檔案系統安全的編碼,`sessionId` 是工作階段 UUID,`subpath` 在項目屬於子代理記錄或邊車檔案而不是主對話時設定。將 `subpath` 視為不透明的鍵後綴;它遵循磁碟上的配置,例如 `subagents/agent-<id>`。當 `subpath` 未定義時,鍵指向主記錄。

77 77 

78| 方法 | 必需 | 調用時機 |78| 方法 | 必需 | 呼叫時機 |

79| :------------- | :- | :------------------------------------------------------------------------------------------------ |79| :------------- | :- | :------------------------------------------------------------------------------------------------ |

80| `append` | 是 | 在本地寫入每批記錄條目後條目是 JSON 安全的對象本地 JSONL 中每行一個。 |80| `append` | 是 | 在本機寫入每批記錄項目後項目是 JSON 安全的物件本機 JSONL 中每行一個。 |

81| `load` | 是 | 在子進程生成之前一次當設置 `resume` 時。如果會話未知返回 `null`。 |81| `load` | 是 | 在子程序產生之前一次當設定 `resume` 時。如果工作階段未知傳回 `null`。 |

82| `listSessions` | 否 | 由 `listSessions({ sessionStore })` 和 `query()`/`startup()` 與 `continue: true` 調用。如果未定義,這些調用會拋出異常。 |82| `listSessions` | 否 | 由 `listSessions({ sessionStore })` 和 `query()`/`startup()` 與 `continue: true` 呼叫。如果未定義,這些呼叫會擲出例外。 |

83| `delete` | 否 | 由 `deleteSession({ sessionStore })` 調用。刪除主鍵(無 `subpath`)必須級聯到該會話的所有子鍵。如果未定義,刪除是無操作的,適合僅追加後端。 |83| `delete` | 否 | 由 `deleteSession({ sessionStore })` 呼叫。刪除主鍵(無 `subpath`)必須級聯到該工作階段的所有子鍵。如果未定義,刪除是無操作的,適合僅追加後端。 |

84| `listSubkeys` | 否 | 在恢復期間,發現子代理記錄。如果未定義,只有主記錄被恢復。 |84| `listSubkeys` | 否 | 在恢復期間,探索子代理記錄。如果未定義,只有主記錄被恢復。 |

85 85 

86<h2 id="quick-start">86<h2 id="quick-start">

87 快速開始87 快速開始

88</h2>88</h2>

89 89 

90SDK 附帶一個 `InMemorySessionStore` 用於開發和測試。下面的示例使用附加的存儲運行查詢,從結果消息中捕獲會話 ID,然後在第二個 `query()` 調用中從存儲恢復第二個調用傳遞相同的存儲實例加上 `resume`,因此 SDK 從存儲而不是本地文件系統加載記錄90SDK 附帶一個 `InMemorySessionStore` 用於開發和測試。下面的示例使用附加的存儲運行查詢,從結果消息中捕獲會話 ID,然後在第二個 `query()` 呼叫中從存儲恢復第二個呼叫傳遞相同的存儲實例加上 `resume`,因此 SDK 從存儲而不是本地檔案系統載入記錄

91 91 

92<CodeGroup>92<CodeGroup>

93 ```typescript TypeScript theme={null}93 ```typescript TypeScript theme={null}


150 ```150 ```

151</CodeGroup>151</CodeGroup>

152 152 

153第二個查詢會列印來自第一個查詢的檔案摘要,這表明代理已從存儲恢復並具有完整的上下文。

154 

153<h2 id="write-your-own-adapter">155<h2 id="write-your-own-adapter">

154 編寫您自己的適配器156 編寫您自己的適配器

155</h2>157</h2>

Details

8 8 

9Session 是 SDK 在您的代理工作時累積的對話歷史。它包含您的提示、代理進行的每個工具呼叫、每個工具結果和每個回應。SDK 會自動將其寫入磁碟,以便您稍後可以返回它。9Session 是 SDK 在您的代理工作時累積的對話歷史。它包含您的提示、代理進行的每個工具呼叫、每個工具結果和每個回應。SDK 會自動將其寫入磁碟,以便您稍後可以返回它。

10 10 

11返回 session 意味著代理具有之前的完整上下文:它已經讀取的文件、它已經執行的分析、它已經做出的決定。您可以提出後續問題、從中斷中恢復,或分支以嘗試不同的方法。11返回 session 意味著代理具有之前的完整上下文:它已經讀取的檔案、它已經執行的分析、它已經做出的決定。您可以提出後續問題、從中斷中恢復,或分支以嘗試不同的方法。

12 12 

13<Note>13<Note>

14 Sessions 保持**對話**,而不是文件系統要快照和還原代理所做的文件更改,請使用[文件檢查點](/zh-TW/agent-sdk/file-checkpointing)。14 Sessions 保持**對話**,而不是檔案系統要快照和還原代理所做的檔案更改,請使用[檔案檢查點](/zh-TW/agent-sdk/file-checkpointing)。

15</Note>15</Note>

16 16 

17本指南涵蓋如何為您的應用選擇正確的方法、自動追蹤 sessions 的 SDK 介面、如何捕獲 session ID 並手動使用 `resume` 和 `fork`,以及關於跨主機恢復 sessions 的注意事項。17本指南涵蓋如何為您的應用選擇正確的方法、自動追蹤 sessions 的 SDK 介面、如何捕獲 session ID 並手動使用 `resume` 和 `fork`,以及關於跨主機恢復 sessions 的注意事項。


230 ```230 ```

231 231 

232 ```typescript TypeScript theme={null}232 ```typescript TypeScript theme={null}

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

234 

235 const sessionId = "..."; // The ID you captured in the previous example

236 

233 // Earlier session analyzed the code; now build on that analysis237 // Earlier session analyzed the code; now build on that analysis

234 for await (const message of query({238 for await (const message of query({

235 prompt: "Now implement the refactoring you suggested",239 prompt: "Now implement the refactoring you suggested",


245 ```249 ```

246</CodeGroup>250</CodeGroup>

247 251 

252您應該會看到一個基於先前分析而構建的回應,而不是從頭開始。這確認了代理以其先前的上下文完整恢復了 session。

253 

248<Tip>254<Tip>

249 如果 `resume` 呼叫返回新 session 而不是預期的歷史,最常見的原因是不匹配的 `cwd`。Sessions 存儲在 `~/.claude/projects/<encoded-cwd>/*.jsonl` 下,其中 `<encoded-cwd>` 是絕對工作目錄,每個非英數字元都被替換為 `-`(所以 `/Users/me/proj` 變成 `-Users-me-proj`)。如果您的 resume 呼叫從不同的目錄運行,SDK 會在錯誤的位置查找。session 文件也需要存在於當前機器上。255 如果 `resume` 呼叫返回新 session 而不是預期的歷史,最常見的原因是不匹配的 `cwd`。Sessions 存儲在 `~/.claude/projects/<encoded-cwd>/*.jsonl` 下,或者如果您設定了 `CLAUDE_CONFIG_DIR` 環境變數,則存儲在 `$CLAUDE_CONFIG_DIR/projects/<encoded-cwd>/*.jsonl` 下,其中 `<encoded-cwd>` 是絕對工作目錄,每個非英數字元都被替換為 `-`(所以 `/Users/me/proj` 變成 `-Users-me-proj`)。如果您的 resume 呼叫從不同的目錄運行,SDK 會在錯誤的位置查找。session 文件也需要存在於當前機器上。

250</Tip>256</Tip>

251 257 

252要跨機器或在無伺服器環境中恢復 sessions,請使用 [`SessionStore` 適配器](/zh-TW/agent-sdk/session-storage)將記錄鏡像到共享存儲。258要跨機器或在無伺服器環境中恢復 sessions,請使用 [`SessionStore` 適配器](/zh-TW/agent-sdk/session-storage)將記錄鏡像到共享存儲。


268 # Fork: branch from session_id into a new session274 # Fork: branch from session_id into a new session

269 forked_id = None275 forked_id = None

270 async for message in query(276 async for message in query(

271 prompt="Instead of JWT, implement OAuth2 for the auth module",277 prompt="Instead of JWT, outline how OAuth2 would work for the auth module",

272 options=ClaudeAgentOptions(278 options=ClaudeAgentOptions(

273 resume=session_id,279 resume=session_id,

274 fork_session=True,280 fork_session=True,

281 max_turns=5,

275 ),282 ),

276 ):283 ):

277 if isinstance(message, ResultMessage):284 if isinstance(message, ResultMessage):


291 ```298 ```

292 299 

293 ```typescript TypeScript theme={null}300 ```typescript TypeScript theme={null}

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

302 

303 const sessionId = "..."; // The ID you captured in the previous example

304 

294 // Fork: branch from sessionId into a new session305 // Fork: branch from sessionId into a new session

295 let forkedId: string | undefined;306 let forkedId: string | undefined;

296 307 

297 for await (const message of query({308 for await (const message of query({

298 prompt: "Instead of JWT, implement OAuth2 for the auth module",309 prompt: "Instead of JWT, outline how OAuth2 would work for the auth module",

299 options: {310 options: {

300 resume: sessionId,311 resume: sessionId,

301 forkSession: true312 forkSession: true,

313 maxTurns: 5

302 }314 }

303 })) {315 })) {

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


323 ```335 ```

324</CodeGroup>336</CodeGroup>

325 337 

338您應該會看到 `forkedId` 與原始 session ID 不同。恢復原始 session 仍然會繼續 JWT 線程,這確認了 fork 沒有修改原始歷史。

339 

326<h2 id="resume-across-hosts">340<h2 id="resume-across-hosts">

327 跨主機恢復341 跨主機恢復

328</h2>342</h2>

Details

12 12 

13Agent Skills 使用專門功能擴展 Claude,Claude 會在相關時自動調用這些功能。Skills 被打包為 `SKILL.md` 文件,包含說明、描述和可選的支持資源。13Agent Skills 使用專門功能擴展 Claude,Claude 會在相關時自動調用這些功能。Skills 被打包為 `SKILL.md` 文件,包含說明、描述和可選的支持資源。

14 14 

15有關 Skills 的全面信息,包括優勢、架構和編寫指南,請參閱 [Agent Skills 概述](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview)。15有關 Skills 的全面信息,包括優勢、架構和編寫指南,請參閱 [Agent Skills 概述](https://platform.claude.com/docs/zh-TW/agents-and-tools/agent-skills/overview)。

16 16 

17<h2 id="how-skills-work-with-the-sdk">17<h2 id="how-skills-work-with-the-sdk">

18 Skills 如何與 SDK 配合使用18 Skills 如何與 SDK 配合使用


102 102 

103* **項目 Skills**(`.claude/skills/`):通過 git 與您的團隊共享 - 當 `setting_sources` 包含 `"project"` 時加載103* **項目 Skills**(`.claude/skills/`):通過 git 與您的團隊共享 - 當 `setting_sources` 包含 `"project"` 時加載

104* **用戶 Skills**(`~/.claude/skills/`):跨所有項目的個人 Skills - 當 `setting_sources` 包含 `"user"` 時加載104* **用戶 Skills**(`~/.claude/skills/`):跨所有項目的個人 Skills - 當 `setting_sources` 包含 `"user"` 時加載

105* **插件 Skills**:與已安裝的 Claude Code 插件捆綁105* **Plugin Skills**:與已安裝的 Claude Code plugins 捆綁

106 106 

107<h2 id="creating-skills">107<h2 id="creating-skills">

108 創建 Skills108 創建 Skills


119 119 

120有關創建 Skills 的完整指導,包括 SKILL.md 結構、多文件 Skills 和示例,請參閱:120有關創建 Skills 的完整指導,包括 SKILL.md 結構、多文件 Skills 和示例,請參閱:

121 121 

122* [Claude Code 中的 Agent Skills](/zh-TW/skills):包含示例和故障排除的完整指南122* [Claude Code 中的 Agent Skills](/zh-TW/skills):包含示例的完整指南

123* [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):編寫指南和命名約定

124* [Agent Skills Cookbook](https://platform.claude.com/cookbook/skills-notebooks-01-skills-introduction):示例 Skills 和模板

125 124 

126<h2 id="tool-restrictions">125<h2 id="tool-restrictions">

127 工具限制126 工具限制

128</h2>127</h2>

129 128 

130<Note>129<Note>

131 SKILL.md 中的 `allowed-tools` frontmatter 字段僅在直接使用 Claude Code CLI 時受支持。**通過 SDK 使用 Skills 時不適用**。130 SKILL.md 中的 `allowed-tools` frontmatter 欄位僅在直接使用 Claude Code CLI 時受支持。**通過 SDK 使用 Skills 時不適用**。

132 131 

133 使用 SDK 時,通過查詢配置中的主 `allowedTools` 選項控制工具訪問132 使用 SDK 時,通過查詢配置中的主 `allowedTools` 選項控制工具存取

134</Note>133</Note>

135 134 

136要在 SDK 應用程序中控制 Skills 的工具訪問,使用 `allowedTools` 預先批准特定工具。沒有 `canUseTool` 回調時,列表中沒有的任何內容都被拒絕:135要在 SDK 應用程式中控制 Skills 的工具存取,使用 `allowedTools` 預先批准特定工具。沒有 `canUseTool` 回呼時,列表中沒有的任何內容都被拒絕:

137 136 

138<Note>137<Note>

139 假設第一個示例中的導入語句在以下代碼片段中138 假設第一個範例中的匯入陳述式在以下程式碼片段中

140</Note>139</Note>

141 140 

142<CodeGroup>141<CodeGroup>

Details

101 parent_tool_use_id: string | null;101 parent_tool_use_id: string | null;

102 uuid: UUID;102 uuid: UUID;

103 session_id: string;103 session_id: string;

104 ttft_ms?: number; // Time to first token in ms, present only on message_start events

104 };105 };

105 ```106 ```

106</CodeGroup>107</CodeGroup>


197工具呼叫也會增量串流。您可以追蹤工具何時開始、在生成時接收其輸入,以及查看何時完成。下面的範例追蹤目前被呼叫的工具並在串流進來時累積 JSON 輸入。它使用三種事件類型:198工具呼叫也會增量串流。您可以追蹤工具何時開始、在生成時接收其輸入,以及查看何時完成。下面的範例追蹤目前被呼叫的工具並在串流進來時累積 JSON 輸入。它使用三種事件類型:

198 199 

199* `content_block_start`:工具開始200* `content_block_start`:工具開始

200* `content_block_delta`,其中 `input_json_delta`:輸入區塊到達201* `content_block_delta` 搭配 `input_json_delta`:輸入區塊到達

201* `content_block_stop`:工具呼叫完成202* `content_block_stop`:工具呼叫完成

202 203 

203<CodeGroup>204<CodeGroup>

Details

218 ```218 ```

219</CodeGroup>219</CodeGroup>

220 220 

221<Note>

222 在 TypeScript SDK 中,如果您的訊息產生器拋出例外,例如當它讀取的檔案遺失時,串流會以錯誤結束,該錯誤顯示為 `Claude Code process aborted by user`,而不是原始錯誤,因此當您看到該訊息時,請先檢查產生器內的程式碼。該錯誤前面也可能會有一長行的最小化捆綁 SDK 原始碼,因此請閱讀輸出末尾以取得錯誤文字。

223 

224 在 Python SDK 中,產生器例外會在偵錯層級記錄,工作階段會停滯而不會引發,因此如果串流工作階段掛起且沒有輸出,請啟用偵錯記錄並檢查您的產生器。

225</Note>

226 

221<h2 id="single-message-input">227<h2 id="single-message-input">

222 單一訊息輸入228 單一訊息輸入

223</h2>229</h2>


247 * 自然的多回合對話253 * 自然的多回合對話

248</Warning>254</Warning>

249 255 

250<h3 id="implementation-example">256如果查詢以錯誤結果結束,例如 `error_max_turns`,單一訊息 `query()` 呼叫會引發一個錯誤,該錯誤在產生最終結果訊息後包含失敗文字,因此如果您的程式碼需要繼續執行,請將迴圈包裝在 try 區塊中。請參閱 [處理結果](/zh-TW/agent-sdk/agent-loop#handle-the-result) 以了解結果子類型。

257 

258<h3 id="implementation-example-1">

251 實作範例259 實作範例

252</h3>260</h3>

253 261 

Details

245* `type`:設置為 `"json_schema"` 以進行結構化輸出245* `type`:設置為 `"json_schema"` 以進行結構化輸出

246* `schema`:一個 [JSON Schema](https://json-schema.org/understanding-json-schema/about) 物件,定義您的輸出結構。您可以使用 `z.toJSONSchema()` 從 Zod 架構或使用 `.model_json_schema()` 從 Pydantic 模型生成此項。246* `schema`:一個 [JSON Schema](https://json-schema.org/understanding-json-schema/about) 物件,定義您的輸出結構。您可以使用 `z.toJSONSchema()` 從 Zod 架構或使用 `.model_json_schema()` 從 Pydantic 模型生成此項。

247 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)。248SDK 支援標準 JSON Schema 功能,包括所有基本類型(object、array、string、number、boolean、null)、`enum`、`const`、`required`、嵌套物件和 `$ref` 定義。有關支援的功能和限制的完整列表,請參閱 [JSON Schema 限制](https://platform.claude.com/docs/zh-TW/build-with-claude/structured-outputs#json-schema-limitations)。

249 249 

250<h2 id="example-todo-tracking-agent">250<h2 id="example-todo-tracking-agent">

251 範例:TODO 追蹤代理251 範例:TODO 追蹤代理


358 錯誤處理358 錯誤處理

359</h2>359</h2>

360 360 

361當代理無法生成與您的架構相匹配的有效 JSON 時,結構化輸出生成可能會失敗。這通常發生在架構對於任務過於複雜、任務本身不明確或代理在嘗試修復驗證錯誤時達到重試限制時。361結構化輸出生成可能會失敗,當代理無法生成與您的架構相匹配的有效 JSON 時。這通常發生在架構對於任務過於複雜、任務本身不明確或代理在嘗試修復驗證錯誤時達到重試限制時。它也可能在沒有任何驗證失敗的情況下發生:[模型回退](/zh-TW/model-config#automatic-model-fallback)可以在中途收回已完成的輸出,如果沒有重試替換它,運行將以相同的錯誤結束。在調試您的架構之前,請檢查結果訊息上的 `errors` 欄位以區分這兩個原因。

362 362 

363發生錯誤時,結果訊息有一個 `subtype` 指示出了什麼問題:363發生錯誤時,結果訊息有一個 `subtype` 指示出了什麼問題:

364 364 

365| Subtype | 含義 |365| Subtype | 含義 |

366| ------------------------------------- | ---------------- |366| ------------------------------------- | ---------------------------------- |

367| `success` | 輸出已成功生成並驗證 |367| `success` | 輸出已成功生成並驗證 |

368| `error_max_structured_output_retries` | 代理在多次嘗試後無法生成有效輸出 |368| `error_max_structured_output_retries` | 多次嘗試後沒有有效輸出存活(驗證失敗,或模型回退收回且沒有成功重試) |

369 369 

370下面的範例檢查 `subtype` 欄位以確定輸出是否成功生成或您是否需要處理失敗:370下面的範例檢查 `subtype` 欄位以確定輸出是否成功生成或您是否需要處理失敗:

371 371 

Details

15 概述15 概述

16</h2>16</h2>

17 17 

18您可以通過三種方式創建子代理18您可以通過三種方式建立子代理

19 19 

20* **以程式方式**:在您的 `query()` 選項中使用 `agents` 參數([TypeScript](/zh-TW/agent-sdk/typescript#agentdefinition)、[Python](/zh-TW/agent-sdk/python#agentdefinition))20* **以程式方式**:在您的 `query()` 選項中使用 `agents` 參數([TypeScript](/zh-TW/agent-sdk/typescript#agentdefinition)、[Python](/zh-TW/agent-sdk/python#agentdefinition))

21* **基於檔案系統**:在 `.claude/agents/` 目錄中將代理定義為 markdown 檔案(請參閱[將子代理定義為檔案](/zh-TW/sub-agents))21* **基於檔案系統**:在 `.claude/agents/` 目錄中將代理定義為 markdown 檔案(請參閱[將子代理定義為檔案](/zh-TW/sub-agents))

22* **內置通用代理**:Claude 可以隨時通過 Agent 工具調用內置的 `general-purpose` 子代理,無需您定義任何內容22* **內置通用代理**:Claude 可以隨時通過 Agent 工具呼叫內置的 `general-purpose` 子代理,無需您定義任何內容

23 23 

24本指南重點介紹程式化方法,這是 SDK 應用程式的推薦方法。24本指南重點介紹程式化方法,這是 SDK 應用程式的推薦方法。

25 25 

26定義子代理時,Claude 根據每個子代理的 `description` 欄位確定是否調用它。編寫清晰的描述,說明何時應使用子代理,Claude 將自動委派適當的任務。您也可以在提示詞中按名稱明確請求子代理(例如,「使用代碼審查員代理來...」)。26定義子代理時,Claude 根據每個子代理的 `description` 欄位確定是否呼叫它。編寫清晰的描述,說明何時應使用子代理,Claude 將自動委派適當的任務。您也可以在提示詞中按名稱明確請求子代理(例如,「使用代碼審查員代理來...」)。

27 27 

28<h2 id="benefits-of-using-subagents">28<h2 id="benefits-of-using-subagents">

29 使用子代理的好處29 使用子代理的好處


41 並行化41 並行化

42</h3>42</h3>

43 43 

44多個子代理可以並發運行,大大加快複雜工作流程的速度44多個子代理可以並發運行,因此獨立的子任務在最慢的一個的時間內完成,而不是所有任務時間的總和

45 45 

46**示例:** 在代碼審查期間,您可以同時運行 `style-checker`、`security-scanner` 和 `test-coverage` 子代理,將審查時間從幾分鐘縮短到幾秒鐘46**示例:** 在代碼審查期間,您可以同時運行 `style-checker`、`security-scanner` 和 `test-coverage` 子代理,而不是按順序運行

47 47 

48<h3 id="specialized-instructions-and-knowledge">48<h3 id="specialized-instructions-and-knowledge">

49 專門化指令和知識49 專門化指令和知識


51 51 

52每個子代理可以有具有特定專業知識、最佳實踐和約束的定製系統提示詞。52每個子代理可以有具有特定專業知識、最佳實踐和約束的定製系統提示詞。

53 53 

54**示例:** `database-migration` 子代理可以具有有關 SQL 最佳實踐、回滾策略和數據完整性檢查的詳細知識,這些在主代理的指令中將是不必要的噪音。54**示例:** `database-migration` 子代理可以具有有關 SQL 最佳實踐、回滾策略和資料完整性檢查的詳細知識,這些在主代理的指令中將是不必要的噪音。

55 55 

56<h3 id="tool-restrictions">56<h3 id="tool-restrictions">

57 工具限制57 工具限制


178</h3>178</h3>

179 179 

180| 欄位 | 類型 | 必需 | 描述 |180| 欄位 | 類型 | 必需 | 描述 |

181| :---------------- | :---------------------------------------------------------- | :- | :------------------------------------------------------------------------------ |181| :---------------- | :---------------------------------------------------------- | :- | :---------------------------------------------------------------------------------------------------------- |

182| `description` | `string` | 是 | 何時使用此代理的自然語言描述 |182| `description` | `string` | 是 | 何時使用此代理的自然語言描述 |

183| `prompt` | `string` | 是 | 代理的系統提示詞,定義其角色和行為 |183| `prompt` | `string` | 是 | 代理的系統提示詞,定義其角色和行為 |

184| `tools` | `string[]` | 否 | 允許的工具名稱陣列。如果省略,繼承所有工具 |184| `tools` | `string[]` | 否 | 允許的工具名稱陣列。如果省略,繼承所有工具 |

185| `disallowedTools` | `string[]` | 否 | 要從代理的工具集中移除的工具名稱陣列 |185| `disallowedTools` | `string[]` | 否 | 要從代理的工具集中移除的工具名稱陣列。MCP 伺服器級別的模式也被接受:`mcp__server` 或 `mcp__server__*` 移除該伺服器的每個工具,`mcp__*` 移除任何伺服器的每個 MCP 工具 |

186| `model` | `string` | 否 | 此代理的模型覆蓋。接受別名,例如 `'sonnet'`、`'opus'`、`'haiku'`、`'inherit'`,或完整模型 ID。如果省略,預設為主模型 |186| `model` | `string` | 否 | 此代理的模型覆蓋。接受別名,例如 `'fable'`、`'opus'`、`'sonnet'`、`'haiku'`、`'inherit'`,或完整模型 ID。如果省略,預設為主模型 |

187| `skills` | `string[]` | 否 | 在啟動時預加載到代理上下文中的 skills 名稱列表。未列出的 skills 仍可通過 Skill 工具調用 |187| `skills` | `string[]` | 否 | 在啟動時預加載到代理上下文中的 skills 名稱列表。未列出的 skills 仍可通過 Skill 工具調用 |

188| `memory` | `'user' \| 'project' \| 'local'` | 否 | 此代理的記憶體來源 |188| `memory` | `'user' \| 'project' \| 'local'` | 否 | 此代理的記憶體來源 |

189| `mcpServers` | `(string \| object)[]` | 否 | 此代理可用的 MCP 伺服器,按名稱或內聯配置 |189| `mcpServers` | `(string \| object)[]` | 否 | 此代理可用的 MCP 伺服器,按名稱或內聯配置 |

190| `initialPrompt` | `string` | 否 | 當此代理作為主執行緒代理運行時,自動提交為第一個使用者回合。當代理作為子代理調用時忽略 |

190| `maxTurns` | `number` | 否 | 代理停止前的最大代理轉數 |191| `maxTurns` | `number` | 否 | 代理停止前的最大代理轉數 |

191| `background` | `boolean` | 否 | 調用時將此代理作為非阻塞背景任務運行 |192| `background` | `boolean` | 否 | 調用時將此代理作為非阻塞背景任務運行 |

192| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | 否 | 此代理的推理努力級別 |193| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | 否 | 此代理的推理努力級別 |


195在 Python SDK 中,這些欄位名稱使用 camelCase 以匹配線路格式。有關詳細信息,請參閱 [`AgentDefinition` 參考](/zh-TW/agent-sdk/python#agentdefinition)。196在 Python SDK 中,這些欄位名稱使用 camelCase 以匹配線路格式。有關詳細信息,請參閱 [`AgentDefinition` 參考](/zh-TW/agent-sdk/python#agentdefinition)。

196 197 

197<Note>198<Note>

198 子代理無法生成自己的子代理不要在子代理的 `tools` 陣列中包含 `Agent`。199 {/* min-version: 2.1.172 */}自 Claude Code v2.1.172 起,子代理可以生成自己的子代理位於主代理下方五個級別的背景子代理無法生成進一步的子代理;前景子代理可以在任何深度生成。若要防止子代理生成其他子代理,請從其 `tools` 陣列中省略 `Agent` 或將其添加到 `disallowedTools`有關完整的深度規則,請參閱[嵌套子代理](/zh-TW/sub-agents#spawn-nested-subagents)。

199</Note>200</Note>

200 201 

201<h3 id="filesystem-based-definition-alternative">202<h3 id="filesystem-based-definition-alternative">


215子代理的上下文窗口從新開始(無父對話),但並非空的。從父代理到子代理的唯一通道是 Agent 工具的提示詞字符串,因此請直接在該提示詞中包含子代理需要的任何檔案路徑、錯誤消息或決策。216子代理的上下文窗口從新開始(無父對話),但並非空的。從父代理到子代理的唯一通道是 Agent 工具的提示詞字符串,因此請直接在該提示詞中包含子代理需要的任何檔案路徑、錯誤消息或決策。

216 217 

217| 子代理接收 | 子代理不接收 |218| 子代理接收 | 子代理不接收 |

218| :------------------------------------------------ | :---------------------------------------- |219| :---------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------- |

219| 其自己的系統提示詞(`AgentDefinition.prompt`)和 Agent 工具的提示詞 | 父代理的對話歷史或工具結果 |220| 其自己的系統提示詞(`AgentDefinition.prompt`)和 Agent 工具的提示詞 | 父代理的對話歷史或工具結果 |

220| 項目 CLAUDE.md(通過 `settingSources` 加載) | 預加載的技能內容,除非在 `AgentDefinition.skills` 中列出 |221| 項目 CLAUDE.md(通過 [`settingSources`](/zh-TW/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) 加載) | 預加載的技能內容,除非在 `AgentDefinition.skills` 中列出 |

221| 工具定義(從父代理繼承,或 `tools` 中的子集) | 父代理的系統提示詞 |222| 工具定義(從父代理繼承,或 `tools` 中的子集) | 父代理的系統提示詞 |

222 223 

223<Note>224<Note>


336 工具名稱在 Claude Code v2.1.63 中從 `"Task"` 重新命名為 `"Agent"`。目前 SDK 版本在 `tool_use` 塊中發出 `"Agent"`,但在 `system:init` 工具清單和 `result.permission_denials[].tool_name` 中仍使用 `"Task"`。檢查 `block.name` 中的兩個值可確保跨 SDK 版本的相容性。337 工具名稱在 Claude Code v2.1.63 中從 `"Task"` 重新命名為 `"Agent"`。目前 SDK 版本在 `tool_use` 塊中發出 `"Agent"`,但在 `system:init` 工具清單和 `result.permission_denials[].tool_name` 中仍使用 `"Task"`。檢查 `block.name` 中的兩個值可確保跨 SDK 版本的相容性。

337</Note>338</Note>

338 339 

339此範例遍歷串流訊息記錄何時調用子代理以及後續訊息何時源自該子代理的執行上下文340訊息結構在 SDK 之間有所不同。在 Python 中內容塊直接通過 `message.content` 存取在 TypeScript 中,`SDKAssistantMessage` 包裝 Claude API 訊息,因此內容通過 `message.message.content` 存取。

340 341 

341<Note>342此範例遍歷串流訊息,記錄何時調用子代理以及後續訊息何時源自該子代理的執行上下文。

342 訊息結構在 SDK 之間有所不同。在 Python 中,內容塊直接通過 `message.content` 存取。在 TypeScript 中,`SDKAssistantMessage` 包裝 Claude API 訊息,因此內容通過 `message.message.content` 存取。

343</Note>

344 343 

345<CodeGroup>344<CodeGroup>

346 ```python Python theme={null}345 ```python Python theme={null}


427 426 

428子代理可以恢復以繼續中斷的地方。恢復的子代理保留其完整的對話歷史,包括所有先前的工具調用、結果和推理。子代理從停止的地方繼續,而不是從頭開始。427子代理可以恢復以繼續中斷的地方。恢復的子代理保留其完整的對話歷史,包括所有先前的工具調用、結果和推理。子代理從停止的地方繼續,而不是從頭開始。

429 428 

430當子代理完成時,Claude Agent 工具結果中接收其代理 ID。要以程式方式恢復子代理:429當子代理完成時,Agent 工具結果包含一個文字區塊,其中包含 `agentId: <id>`。內置的 [`Explore` 和 `Plan` 代理](/zh-TW/sub-agents#built-in-subagents) 是一次性的,不會返回 `agentId`,因此當您需要恢復時,請使用自訂代理或 `general-purpose`。要以程式方式恢復子代理:

431 430 

4321. **捕獲會話 ID**:在第一個查詢期間從訊息中提取 `session_id`4311. **捕獲會話 ID**:在第一個查詢期間從訊息中提取 `session_id`

4332. **提取代理 ID**:從訊息內容中解析 `agentId`4322. **提取代理 ID**: Agent 工具結果文字中解析 `agentId`

4343. **恢復會話**:在第二個查詢的選項中傳遞 `resume: sessionId`,並在提示詞中包含代理 ID4333. **恢復會話**:在第二個查詢的選項中傳遞 `resume: sessionId`,並在提示詞中包含代理 ID

435 434 

436<Note>435<Note>

437 您必須恢復相同的會話以訪問子代理的記錄。默認情況下,每個 `query()` 調用都會啟動一個新會話,因此傳遞 `resume: sessionId` 以在相同會話中繼續。436 您必須恢復相同的會話以訪問子代理的記錄。默認情況下,每個 `query()` 調用都會啟動一個新會話,因此傳遞 `resume: sessionId` 以在相同會話中繼續。

438 437 

439 如果您使用的是自訂代理(不是內置代理)您還需要在兩個查詢的 `agents` 參數中傳遞相同的代理定義。438 使用自訂代理時在兩個查詢的 `agents` 參數中傳遞相同的代理定義。

440</Note>439</Note>

441 440 

442下面的示例演示了此流程:第一個查詢運行子代理並捕獲會話 ID 和代理 ID,然後第二個查詢恢復會話以提出需要來自第一個分析的上下文的後續問題。441下面的示例定義了一個自訂的 `endpoint-finder` 代理。第一個查詢運行它並從 Agent 工具結果中捕獲會話 ID 和代理 ID,然後第二個查詢恢復會話以提出需要來自第一個分析的上下文的後續問題。

443 442 

444<CodeGroup>443<CodeGroup>

445 ```typescript TypeScript theme={null}

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

447 

448 // Helper to extract agentId from message content

449 // Stringify to avoid traversing different block types (TextBlock, ToolResultBlock, etc.)

450 function extractAgentId(message: SDKMessage): string | undefined {

451 if (message.type !== "assistant" && message.type !== "user") return undefined;

452 // Stringify the content so we can search it without traversing nested blocks

453 const content = JSON.stringify(message.message.content);

454 const match = content.match(/agentId:\s*([a-f0-9-]+)/);

455 return match?.[1];

456 }

457 

458 let agentId: string | undefined;

459 let sessionId: string | undefined;

460 

461 // First invocation - use the Explore agent to find API endpoints

462 for await (const message of query({

463 prompt: "Use the Explore agent to find all API endpoints in this codebase",

464 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"] }

465 })) {

466 // Capture session_id from ResultMessage (needed to resume this session)

467 if ("session_id" in message) sessionId = message.session_id;

468 // Search message content for the agentId (appears in Agent tool results)

469 const extractedId = extractAgentId(message);

470 if (extractedId) agentId = extractedId;

471 // Print the final result

472 if ("result" in message) console.log(message.result);

473 }

474 

475 // Second invocation - resume and ask follow-up

476 if (agentId && sessionId) {

477 for await (const message of query({

478 prompt: `Resume agent ${agentId} and list the top 3 most complex endpoints`,

479 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], resume: sessionId }

480 })) {

481 if ("result" in message) console.log(message.result);

482 }

483 }

484 ```

485 

486 ```python Python theme={null}444 ```python Python theme={null}

487 import asyncio445 import asyncio

488 import json

489 import re446 import re

490 from claude_agent_sdk import query, ClaudeAgentOptions447 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition, ToolResultBlock

448 

449 AGENTS = {

450 "endpoint-finder": AgentDefinition(

451 description="Locates and catalogs API endpoints in a codebase.",

452 prompt="You find and document API endpoints. Report each endpoint's path, method, and handler.",

453 tools=["Read", "Grep", "Glob"],

454 )

455 }

491 456 

492 457 

493 def extract_agent_id(text: str) -> str | None:458 def extract_agent_id(block: ToolResultBlock) -> str | None:

494 """Extract agentId from Agent tool result text."""459 """Extract agentId from an Agent tool result's text content."""

495 match = re.search(r"agentId:\s*([a-f0-9-]+)", text)460 parts = block.content if isinstance(block.content, list) else [{"text": block.content}]

496 return match.group(1) if match else None461 for part in parts:

462 if match := re.search(r"agentId:\s*([\w-]+)", part.get("text") or ""):

463 return match.group(1)

464 return None

497 465 

498 466 

499 async def main():467 async def main():

500 agent_id = None468 agent_id = None

501 session_id = None469 session_id = None

502 470 

503 # First invocation - use the Explore agent to find API endpoints471 # First invocation - run the endpoint-finder subagent

504 async for message in query(472 async for message in query(

505 prompt="Use the Explore agent to find all API endpoints in this codebase",473 prompt="Use the endpoint-finder agent to find all API endpoints in this codebase",

506 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"]),474 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS),

507 ):475 ):

508 # Capture session_id from ResultMessage (needed to resume this session)476 # Capture session_id from ResultMessage (needed to resume this session)

509 if hasattr(message, "session_id"):477 if hasattr(message, "session_id"):

510 session_id = message.session_id478 session_id = message.session_id

511 # Search message content for the agentId (appears in Agent tool results)479 # Search tool results for the agentId trailer

512 if hasattr(message, "content"):480 for block in getattr(message, "content", None) or []:

513 # Stringify the content so we can search it without traversing nested blocks481 if isinstance(block, ToolResultBlock):

514 content_str = json.dumps(message.content, default=str)482 agent_id = extract_agent_id(block) or agent_id

515 extracted = extract_agent_id(content_str)

516 if extracted:

517 agent_id = extracted

518 # Print the final result483 # Print the final result

519 if hasattr(message, "result"):484 if hasattr(message, "result"):

520 print(message.result)485 print(message.result)


524 async for message in query(489 async for message in query(

525 prompt=f"Resume agent {agent_id} and list the top 3 most complex endpoints",490 prompt=f"Resume agent {agent_id} and list the top 3 most complex endpoints",

526 options=ClaudeAgentOptions(491 options=ClaudeAgentOptions(

527 allowed_tools=["Read", "Grep", "Glob", "Agent"], resume=session_id492 allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS, resume=session_id

528 ),493 ),

529 ):494 ):

530 if hasattr(message, "result"):495 if hasattr(message, "result"):


533 498 

534 asyncio.run(main())499 asyncio.run(main())

535 ```500 ```

501 

502 ```typescript TypeScript theme={null}

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

504 

505 const agents = {

506 "endpoint-finder": {

507 description: "Locates and catalogs API endpoints in a codebase.",

508 prompt: "You find and document API endpoints. Report each endpoint's path, method, and handler.",

509 tools: ["Read", "Grep", "Glob"]

510 }

511 };

512 

513 // Stringify content to search for agentId without traversing nested block types

514 function extractAgentId(message: SDKMessage): string | undefined {

515 if (message.type !== "assistant" && message.type !== "user") return undefined;

516 const content = JSON.stringify(message.message.content);

517 const match = content.match(/agentId:\s*([\w-]+)/);

518 return match?.[1];

519 }

520 

521 let agentId: string | undefined;

522 let sessionId: string | undefined;

523 

524 // First invocation - run the endpoint-finder subagent

525 for await (const message of query({

526 prompt: "Use the endpoint-finder agent to find all API endpoints in this codebase",

527 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents }

528 })) {

529 // Capture session_id from ResultMessage (needed to resume this session)

530 if ("session_id" in message) sessionId = message.session_id;

531 // Search message content for the agentId (appears in Agent tool results)

532 const extractedId = extractAgentId(message);

533 if (extractedId) agentId = extractedId;

534 // Print the final result

535 if ("result" in message) console.log(message.result);

536 }

537 

538 // Second invocation - resume and ask follow-up

539 if (agentId && sessionId) {

540 for await (const message of query({

541 prompt: `Resume agent ${agentId} and list the top 3 most complex endpoints`,

542 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents, resume: sessionId }

543 })) {

544 if ("result" in message) console.log(message.result);

545 }

546 }

547 ```

536</CodeGroup>548</CodeGroup>

537 549 

538子代理記錄獨立於主對話而持續存在:550子代理記錄獨立於主對話而持續存在:

539 551 

540* **主對話壓縮**:當主對話壓縮時,子代理記錄不受影響。它們存儲在單獨的檔案中。552* **主對話壓縮**:當主對話壓縮時,子代理記錄不受影響。它們存儲在單獨的檔案中。

541* **會話持久性**:子代理記錄在其會話內持續存在。您可以通過恢復相同會話在重新啟動 Claude Code 後恢復子代理。553* **會話持久性**:子代理記錄在其會話內持續存在。您可以通過恢復相同會話在重新啟動 Claude Code 後恢復子代理。

542* **自動清理**:記錄根據 `cleanupPeriodDays` 設置進行清理(預設:30 天)。554* **自動清理**:記錄根據 `cleanupPeriodDays` 設定進行清理(預設:30 天)。

543 555 

544<h2 id="tool-restrictions">556<h2 id="tool-restrictions-1">

545 工具限制557 工具限制

546</h2>558</h2>

547 559 

Details

217| 項目形狀:`{ content, status, activeForm }` | `TaskCreate` 輸入:`{ subject, description, activeForm?, metadata? }`。`TaskUpdate` 輸入:`{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }`。`status` 是 `"pending"`、`"in_progress"` 或 `"completed"`;設置 `status: "deleted"` 以刪除 |217| 項目形狀:`{ content, status, activeForm }` | `TaskCreate` 輸入:`{ subject, description, activeForm?, metadata? }`。`TaskUpdate` 輸入:`{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }`。`status` 是 `"pending"`、`"in_progress"` 或 `"completed"`;設置 `status: "deleted"` 以刪除 |

218| 直接呈現 `block.input.todos` | 跨呼叫累積項目,或從 `TaskList` 工具結果讀取快照 |218| 直接呈現 `block.input.todos` | 跨呼叫累積項目,或從 `TaskList` 工具結果讀取快照 |

219 219 

220指派的任務 ID 不在 `TaskCreate` 輸入中。它在匹配的 `tool_result` 中作為 `{ task: { id, subject } }` 返回,因此從結果區塊捕獲它以鍵入您的映射。以下範例顯示了對[監控待辦事項變更](#monitoring-todo-changes)迴圈的最小變更。要呈現完整清單,請在流中監視 `TaskList` 工具結果或將 `TaskCreate` 結果和 `TaskUpdate` 輸入累積到映射中220指派的任務 ID 不在 `TaskCreate` 輸入中。它在匹配的 `tool_result` 中作為 `{ task: { id, subject } }` 返回,因此從結果區塊捕獲它以鍵入您的映射。以下範例顯示了對[監控待辦事項變更](#monitoring-todo-changes)迴圈的最小變更。要呈現完整清單,請在流中監視 `TaskList` 工具結果或將 `TaskCreate` 結果和 `TaskUpdate` 輸入累積到映射中

221 

222串流的 `tool_use` 輸入是模型發出的原始形狀。Claude Code 在執行前修復一些接近但不正確的鍵名,將 `id` 或 `task_id` 映射到 `taskId` 和 `active_form` 映射到 `activeForm`,但該修復不會反映在流中。防禦性地讀取 `TaskUpdate` 輸入欄位,如下面的範例所示,而不是假設規範名稱始終存在。

221 223 

222<CodeGroup>224<CodeGroup>

223 ```typescript TypeScript theme={null}225 ```typescript TypeScript theme={null}


233 const input = block.input as { subject: string };235 const input = block.input as { subject: string };

234 console.log(`+ ${input.subject}`);236 console.log(`+ ${input.subject}`);

235 } else if (block.name === "TaskUpdate") {237 } else if (block.name === "TaskUpdate") {

236 const input = block.input as { taskId: string; status?: string };238 const input = block.input as {

237 if (input.status) console.log(` ${input.taskId} -> ${input.status}`);239 taskId?: string;

240 id?: string;

241 task_id?: string;

242 status?: string;

243 };

244 const taskId = input.taskId ?? input.id ?? input.task_id;

245 if (taskId && input.status) console.log(` ${taskId} -> ${input.status}`);

238 }246 }

239 }247 }

240 }248 }


254 if block.name == "TaskCreate":262 if block.name == "TaskCreate":

255 print(f"+ {block.input['subject']}")263 print(f"+ {block.input['subject']}")

256 elif block.name == "TaskUpdate" and block.input.get("status"):264 elif block.name == "TaskUpdate" and block.input.get("status"):

257 print(f" {block.input['taskId']} -> {block.input['status']}")265 task_id = (

266 block.input.get("taskId")

267 or block.input.get("id")

268 or block.input.get("task_id")

269 )

270 if task_id:

271 print(f" {task_id} -> {block.input['status']}")

258 ```272 ```

259</CodeGroup>273</CodeGroup>

260 274 

Details

400 `resolveSettings()`400 `resolveSettings()`

401</h3>401</h3>

402 402 

403使用與 CLI 相同的合併引擎為給定目錄解析有效的 Claude Code 設置,無需生成 Claude CLI。在調用 `query()` 之前使用它來檢查 `query()` 調用將看到什麼配置。403使用與 CLI 相同的合併引擎為給定目錄解析有效的 Claude Code 設定,無需生成 Claude CLI。在調用 `query()` 之前使用它來檢查 `query()` 調用將看到什麼配置。

404 404 

405<Note>405<Note>

406 此函數處於 alpha 階段,其 API 在穩定之前可能會更改。它讀取 MDM 源,包括 macOS plist 和 Windows HKLM/HKCU,以與 CLI 啟動保持一致,但不執行管理員配置的 `policyHelper` 子進程。`permissions.defaultMode` 字段從所有層級(包括項目設置)按原樣返回。CLI 在遵守升級權限模式之前應用的信任過濾器不被應用。406 此函數處於 alpha 階段,其 API 在穩定之前可能會更改。它讀取 MDM 源,包括 macOS plist 和 Windows HKLM/HKCU,以與 CLI 啟動保持一致,但不執行管理員配置的 `policyHelper` 子進程。`permissions.defaultMode` 字段從所有層級(包括項目設定)按原樣返回。CLI 在遵守升級權限模式之前應用的信任過濾器不被應用。

407</Note>407</Note>

408 408 

409```typescript theme={null}409```typescript theme={null}


420 420 

421| 參數 | 類型 | 默認值 | 描述 |421| 參數 | 類型 | 默認值 | 描述 |

422| :------------------------------ | :------------------------------------ | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |422| :------------------------------ | :------------------------------------ | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

423| `options.cwd` | `string` | `process.cwd()` | 用於解析項目和本地設置的相對目錄 |423| `options.cwd` | `string` | `process.cwd()` | 用於解析項目和本地設定的相對目錄 |

424| `options.settingSources` | [`SettingSource`](#settingsource)`[]` | 所有源 | 要加載的文件系統源。傳遞 `[]` 以跳過用戶、項目和本地設置託管策略設置在所有情況下都會加載 |424| `options.settingSources` | [`SettingSource`](#settingsource)`[]` | 所有源 | 要加載的文件系統源。傳遞 `[]` 以跳過用戶、項目和本地設定託管策略設定在所有情況下都會加載 |

425| `options.managedSettings` | `Settings` | `undefined` | 由嵌入主機提供的限制性策略層設置。當存在管理員部署的託管層時被丟棄;當 [`parentSettingsBehavior`](/zh-TW/settings#available-settings) 為 `"merge"` 時在該層下合併。非限制性鍵(如 `model`)會被靜默丟棄,以便此選項可以加強託管策略但不能放寬它 |425| `options.managedSettings` | `Settings` | `undefined` | 由嵌入主機提供的限制性策略層設定。當存在管理員部署的託管層時被丟棄;當 [`parentSettingsBehavior`](/zh-TW/settings#available-settings) 為 `"merge"` 時在該層下合併。非限制性鍵(如 `model`)會被靜默丟棄,以便此選項可以加強託管策略但不能放寬它 |

426| `options.serverManagedSettings` | `Settings` | `undefined` | 來自 `/api/claude_code/settings` 的服務器託管設置有效負載。非限制性鍵無過濾地通過 |426| `options.serverManagedSettings` | `Settings` | `undefined` | 來自 `/api/claude_code/settings` 的服務器託管設定有效負載。非限制性鍵無過濾地通過 |

427 427 

428<h4 id="return-type-resolvedsettings">428<h4 id="return-type-resolvedsettings">

429 返回類型:`ResolvedSettings`429 返回類型:`ResolvedSettings`

430</h4>430</h4>

431 431 

432`resolveSettings()` 返回一個對象,描述合併的設置和為每個鍵提供的源432`resolveSettings()` 返回一個對象,描述合併的設定和為每個鍵提供的源

433 433 

434| 屬性 | 類型 | 描述 |434| 屬性 | 類型 | 描述 |

435| :----------- | :-------------------------------------------------- | :------------------------------ |435| :----------- | :-------------------------------------------------- | :------------------------------ |

436| `effective` | `Settings` | 在優先級順序中應用所有啟用源後的合併設置 |436| `effective` | `Settings` | 在優先級順序中應用所有啟用源後的合併設定 |

437| `provenance` | `Partial<Record<keyof Settings, ProvenanceEntry>>` | 對於 `effective` 中的每個頂級鍵,哪個源提供了該值 |437| `provenance` | `Partial<Record<keyof Settings, ProvenanceEntry>>` | 對於 `effective` 中的每個頂級鍵,哪個源提供了該值 |

438| `sources` | `Array<{ source, settings, path?, policyOrigin? }>` | 每個源的原始設置,按從最低到最高優先級排序 |438| `sources` | `Array<{ source, settings, path?, policyOrigin? }>` | 每個源的原始設定,按從最低到最高優先級排序 |

439 439 

440<h4 id="example">440<h4 id="example">

441 示例441 示例

442</h4>442</h4>

443 443 

444下面的示例為項目目錄解析設置並打印控制清理期的源444下面的示例為項目目錄解析設定並打印控制清理期的源

445 445 

446```typescript theme={null}446```typescript theme={null}

447import { resolveSettings } from "@anthropic-ai/claude-agent-sdk";447import { resolveSettings } from "@anthropic-ai/claude-agent-sdk";


481| `debug` | `boolean` | `false` | 為 Claude Code 進程啟用調試模式 |481| `debug` | `boolean` | `false` | 為 Claude Code 進程啟用調試模式 |

482| `debugFile` | `string` | `undefined` | 將調試日誌寫入特定文件路徑。隱式啟用調試模式 |482| `debugFile` | `string` | `undefined` | 將調試日誌寫入特定文件路徑。隱式啟用調試模式 |

483| `disallowedTools` | `string[]` | `[]` | 要拒絕的工具。裸名稱如 `"Bash"` 會從 Claude 的上下文中移除該工具。作用域規則如 `"Bash(rm *)"` 會保留該工具可用,並在每個權限模式中拒絕匹配的調用,包括 `bypassPermissions`。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |483| `disallowedTools` | `string[]` | `[]` | 要拒絕的工具。裸名稱如 `"Bash"` 會從 Claude 的上下文中移除該工具。作用域規則如 `"Bash(rm *)"` 會保留該工具可用,並在每個權限模式中拒絕匹配的調用,包括 `bypassPermissions`。見 [權限](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) |

484| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | 控制 Claude 在其響應中投入多少努力。與自適應思考一起工作以指導思考深度 |484| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | 模型默認值 | 控制 Claude 在其響應中投入多少努力。與自適應思考一起工作以指導思考深度。見 [調整努力級別](/zh-TW/model-config#adjust-effort-level) |

485| `enableFileCheckpointing` | `boolean` | `false` | 啟用文件更改跟蹤以進行回滾。見 [文件 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |485| `enableFileCheckpointing` | `boolean` | `false` | 啟用文件更改跟蹤以進行回滾。見 [文件 checkpointing](/zh-TW/agent-sdk/file-checkpointing) |

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 標頭中標識您的應用程序 |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 標頭中標識您的應用程序 |

487| `executable` | `'bun' \| 'deno' \| 'node'` | 自動檢測 | 要使用的 JavaScript 運行時 |487| `executable` | `'bun' \| 'deno' \| 'node'` | 自動檢測 | 要使用的 JavaScript 運行時 |


499| `maxThinkingTokens` | `number` | `undefined` | *已棄用:* 改用 `thinking`。思考過程的最大令牌數 |499| `maxThinkingTokens` | `number` | `undefined` | *已棄用:* 改用 `thinking`。思考過程的最大令牌數 |

500| `maxTurns` | `number` | `undefined` | 最大代理轉數(工具使用往返) |500| `maxTurns` | `number` | `undefined` | 最大代理轉數(工具使用往返) |

501| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 服務器配置 |501| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | MCP 服務器配置 |

502| `model` | `string` | CLI 默認值 | 要使用的 Claude 模型 |502| `model` | `string` | CLI 默認值 | Claude 模型別名或完整模型名稱。見 [接受的值和提供商特定 ID](/zh-TW/model-config#available-models) |

503| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | 用於處理 MCP 引出請求的回調。當 MCP 服務器請求用戶輸入且沒有 hooks 首先處理它時調用。未提供時,未處理的引出請求會自動被拒絕 |503| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | 用於處理 MCP 引出請求的回調。當 MCP 服務器請求用戶輸入且沒有 hooks 首先處理它時調用。未提供時,未處理的引出請求會自動被拒絕 |

504| `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) 了解詳情 |

505| `outputStyle` | `string` | `undefined` | 不是 `Options` 字段。改為在內聯 [`settings`](/zh-TW/settings) 對象或設置文件中設置 `outputStyle`。見 [激活輸出樣式](/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) |


553* `API_TIMEOUT_MS`:Anthropic 客戶端上的每個請求超時,以毫秒為單位。默認 `600000`。適用於主循環和所有子代理。553* `API_TIMEOUT_MS`:Anthropic 客戶端上的每個請求超時,以毫秒為單位。默認 `600000`。適用於主循環和所有子代理。

554* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重試次數。默認 `10`。每次重試都有自己的 `API_TIMEOUT_MS` 窗口,因此最壞情況下的牆時間大約是 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 加上退避。554* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重試次數。默認 `10`。每次重試都有自己的 `API_TIMEOUT_MS` 窗口,因此最壞情況下的牆時間大約是 `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` 加上退避。

555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:使用 `run_in_background` 啟動的子代理的停滯監視程序。默認 `600000`。在每個流事件上重置;在停滯時中止子代理,將任務標記為失敗,並將錯誤與任何部分結果一起呈現給父代理。不適用於同步子代理。555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`:使用 `run_in_background` 啟動的子代理的停滯監視程序。默認 `600000`。在每個流事件上重置;在停滯時中止子代理,將任務標記為失敗,並將錯誤與任何部分結果一起呈現給父代理。不適用於同步子代理。

556* `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_ENABLE_STREAM_WATCHDOG` 未設置時,默認值在直接 Anthropic API 上由服務器控制,在其他提供商上關閉。`CLAUDE_STREAM_IDLE_TIMEOUT_MS` 默認為 `300000` 並被限制為該最小值。中止的請求通過正常重試路徑進行。

557 557 

558<h3 id="query-object">558<h3 id="query-object">

559 `Query` 對象559 `Query` 對象


658}658}

659```659```

660 660 

661<h4 id="methods">661<h4 id="methods-1">

662 方法662 方法

663</h4>663</h4>

664 664 


717```717```

718 718 

719| 字段 | 必需 | 描述 |719| 字段 | 必需 | 描述 |

720| :------------------------------------ | :- | :---------------------------------------------------------------------------------------- |720| :------------------------------------ | :- | :-------------------------------------------------------------------------------------------------------- |

721| `description` | 是 | 何時使用此代理的自然語言描述 |721| `description` | 是 | 何時使用此代理的自然語言描述 |

722| `tools` | 否 | 允許的工具名稱數組。如果省略,從父代理繼承所有工具。要將 Skills 預加載到代理的上下文中,請使用 `skills` 字段而不是在此處列出 `'Skill'` |722| `tools` | 否 | 允許的工具名稱數組。如果省略,從父代理繼承所有工具。要將 Skills 預加載到代理的上下文中,請使用 `skills` 字段而不是在此處列出 `'Skill'` |

723| `disallowedTools` | 否 | 要為此代理明確禁止的工具名稱數組 |723| `disallowedTools` | 否 | 要為此代理明確禁止的工具名稱數組。MCP 服務器級別的模式也被接受:`mcp__server` 或 `mcp__server__*` 移除該服務器的每個工具,`mcp__*` 移除任何服務器的每個 MCP 工具 |

724| `prompt` | 是 | 代理的系統提示 |724| `prompt` | 是 | 代理的系統提示 |

725| `model` | 否 | 此代理的模型覆蓋。接受別名如 `'sonnet'`、`'opus'`、`'haiku'`、`'inherit'` 或完整模型 ID。如果省略或 `'inherit'`,使用主模型 |725| `model` | 否 | 此代理的模型覆蓋。接受別名如 `'fable'`、`'opus'`、`'sonnet'`、`'haiku'`、`'inherit'` 或完整模型 ID。如果省略或 `'inherit'`,使用主模型 |

726| `mcpServers` | 否 | 此代理可用的 MCP 服務器規範 |726| `mcpServers` | 否 | 此代理可用的 MCP 服務器規範 |

727| `skills` | 否 | 要預加載到代理上下文中的 skill 名稱數組 |727| `skills` | 否 | 要預加載到代理上下文中的 skill 名稱數組 |

728| `initialPrompt` | 否 | 當此代理作為主線程代理運行時,自動提交為第一個用戶轉數 |728| `initialPrompt` | 否 | 當此代理作為主線程代理運行時,自動提交為第一個用戶轉數 |


874type PermissionMode =874type PermissionMode =

875 | "default" // 標準權限行為875 | "default" // 標準權限行為

876 | "acceptEdits" // 自動接受文件編輯876 | "acceptEdits" // 自動接受文件編輯

877 | "bypassPermissions" // 繞過所有權限檢查877 | "bypassPermissions" // 繞過權限檢查;明確要求規則仍然提示

878 | "plan" // Plan Mode - 僅讀取工具878 | "plan" // Plan Mode - 無編輯探索

879 | "dontAsk" // 不提示權限,如果未預批准則拒絕879 | "dontAsk" // 不提示權限,如果未預批准則拒絕

880 | "auto"; // 使用模型分類器批准或拒絕每個工具調用880 | "auto"; // 使用模型分類器批准或拒絕每個工具調用

881```881```


1035type SdkPluginConfig = {1035type SdkPluginConfig = {

1036 type: "local";1036 type: "local";

1037 path: string;1037 path: string;

1038 skipMcpDiscovery?: boolean;

1038};1039};

1039```1040```

1040 1041 

1041| 字段 | 類型 | 描述 |1042| 字段 | 類型 | 描述 |

1042| :----- | :-------- | :----------------------------- |1043| :----------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------ |

1043| `type` | `'local'` | 必須是 `'local'`(目前僅支持本地 plugins) |1044| `type` | `'local'` | 必須是 `'local'`(目前僅支持本地 plugins) |

1044| `path` | `string` | 插件目錄的絕對或相對路徑 |1045| `path` | `string` | 插件目錄的絕對或相對路徑 |

1046| `skipMcpDiscovery` | `boolean` | 當為 `true` 時,SDK 從此 plugin 加載 skills、hooks、agents 和 commands,但不讀取其 `.mcp.json` 或 manifest `mcpServers`。當您的應用程序擁有 plugin 的 MCP 連接時設置此項。 |

1045 1047 

1046**示例:**1048**示例:**

1047 1049 


1086 | SDKTaskProgressMessage1088 | SDKTaskProgressMessage

1087 | SDKTaskUpdatedMessage1089 | SDKTaskUpdatedMessage

1088 | SDKSessionStateChangedMessage1090 | SDKSessionStateChangedMessage

1091 | SDKWorkerShuttingDownMessage

1089 | SDKCommandsChangedMessage1092 | SDKCommandsChangedMessage

1090 | SDKNotificationMessage1093 | SDKNotificationMessage

1091 | SDKFilesPersistedEvent1094 | SDKFilesPersistedEvent


1096 | SDKPermissionDeniedMessage1099 | SDKPermissionDeniedMessage

1097 | SDKPromptSuggestionMessage1100 | SDKPromptSuggestionMessage

1098 | SDKAPIRetryMessage1101 | SDKAPIRetryMessage

1099 | SDKMirrorErrorMessage;1102 | SDKMirrorErrorMessage

1103 | SDKInformationalMessage;

1100```1104```

1101 1105 

1102<h3 id="sdkassistantmessage">1106<h3 id="sdkassistantmessage">


1183 result: string;1187 result: string;

1184 stop_reason: string | null;1188 stop_reason: string | null;

1185 ttft_ms?: number;1189 ttft_ms?: number;

1190 ttft_stream_ms?: number;

1186 total_cost_usd: number;1191 total_cost_usd: number;

1187 usage: NonNullableUsage;1192 usage: NonNullableUsage;

1188 modelUsage: { [modelName: string]: ModelUsage };1193 modelUsage: { [modelName: string]: ModelUsage };


1221結果上的多個字段除了 `subtype` 之外還攜帶診斷詳細信息:1226結果上的多個字段除了 `subtype` 之外還攜帶診斷詳細信息:

1222 1227 

1223* `api_error_status`:終止對話的 API 錯誤的 HTTP 狀態碼。當轉數在沒有 API 錯誤的情況下結束時,不存在或為 `null`。1228* `api_error_status`:終止對話的 API 錯誤的 HTTP 狀態碼。當轉數在沒有 API 錯誤的情況下結束時,不存在或為 `null`。

1224* `ttft_ms`:首個令牌的時間(毫秒)。僅在成功分支上出現。1229* `ttft_ms`:首個令牌的時間(毫秒),在第一個完整助手消息到達時測量。僅在成功分支上出現。

1230* `ttft_stream_ms`:直到第一個 `message_start` 流事件的時間(毫秒),當響應流打開時。低於 `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"` 之一。1231* `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"` 之一。1232* `fast_mode_state`:為 `"on"`、`"off"` 或 `"cooldown"` 之一。

1227 1233 


1273 parent_tool_use_id: string | null;1279 parent_tool_use_id: string | null;

1274 uuid: UUID;1280 uuid: UUID;

1275 session_id: string;1281 session_id: string;

1282 ttft_ms?: number; // 首個令牌的時間(毫秒),僅在 message_start 事件上出現

1276};1283};

1277```1284```

1278 1285 


1295};1302};

1296```1303```

1297 1304 

1305<h3 id="sdkinformationalmessage">

1306 `SDKInformationalMessage`

1307</h3>

1308 

1309由循環發出的通用文本橫幅。攜帶非錯誤狀態行、hook 反饋(例如 `UserPromptSubmit` hook 的阻止原因)和命令輸出。將 `content` 呈現為給定 `level` 的純文本。

1310 

1311```typescript theme={null}

1312type SDKInformationalMessage = {

1313 type: "system";

1314 subtype: "informational";

1315 content: string;

1316 level: "info" | "notice" | "suggestion" | "warning";

1317 tool_use_id?: string;

1318 prevent_continuation?: boolean;

1319 uuid: UUID;

1320 session_id: string;

1321};

1322```

1323 

1324<h3 id="sdkworkershuttingdownmessage">

1325 `SDKWorkerShuttingDownMessage`

1326</h3>

1327 

1328在優雅的 worker 拆卸時發出,以便遠程客戶端可以顯示 worker 消失的原因,而不是等待心跳超時。`reason` 是由主機 CLI 設置的短 snake\_case 字符串,例如 `"host_exit"` 或 `"remote_control_disabled"`。僅在實時流式傳輸時對此採取行動。恢復的會話會重放此消息的過去實例,因此在這種情況下忽略它們。

1329 

1330```typescript theme={null}

1331type SDKWorkerShuttingDownMessage = {

1332 type: "system";

1333 subtype: "worker_shutting_down";

1334 reason: string;

1335 uuid: UUID;

1336 session_id: string;

1337};

1338```

1339 

1298<h3 id="sdkplugininstallmessage">1340<h3 id="sdkplugininstallmessage">

1299 `SDKPluginInstallMessage`1341 `SDKPluginInstallMessage`

1300</h3>1342</h3>

1301 1343 

1302插件安裝進度事件。當設置 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/zh-TW/env-vars) 時發出,以便您的 Agent SDK 應用程序可以在第一個轉數之前跟蹤市場插件安裝。`started` 和 `completed` 狀態括起整體安裝。`installed` 和 `failed` 狀態報告單個市場並包括 `name`。1344插件安裝進度事件。當設置 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/zh-TW/env-vars) 時發出,以便您的 Agent SDK 應用程式可以在第一個轉數之前追蹤市場插件安裝。`started` 和 `completed` 狀態括起整體安裝。`installed` 和 `failed` 狀態報告單個市場並包括 `name`。

1303 1345 

1304```typescript theme={null}1346```typescript theme={null}

1305type SDKPluginInstallMessage = {1347type SDKPluginInstallMessage = {


1317 `SDKPermissionDeniedMessage`1359 `SDKPermissionDeniedMessage`

1318</h3>1360</h3>

1319 1361 

1320當權限系統自動拒絕工具調用而不進行互動式提示時發出的流事件。使用它在發生時在您的 UI 中呈現拒絕,而不是僅觀察隨後的 `is_error` 工具結果。互動式詢問路徑通過 [`canUseTool`](#canusetool) 回調單獨到達您的應用程序。由 `PreToolUse` hook 發出的拒絕不會通過此事件報告。1362當權限系統自動拒絕工具調用而不進行互動式提示時發出的流事件。使用它在發生時在您的 UI 中呈現拒絕,而不是僅觀察隨後的 `is_error` 工具結果。互動式詢問路徑通過 [`canUseTool`](#canusetool) 回調單獨到達您的應用程式。由 `PreToolUse` hook 發出的拒絕不會通過此事件報告。

1321 1363 

1322此事件需要 Claude Code v2.1.136 或更高版本。1364此事件需要 Claude Code v2.1.136 或更高版本。

1323 1365 


1369type SDKMessageOrigin =1411type SDKMessageOrigin =

1370 | { kind: "human" }1412 | { kind: "human" }

1371 | { kind: "channel"; server: string }1413 | { kind: "channel"; server: string }

1372 | { kind: "peer"; from: string; name?: string }1414 | { kind: "peer"; from: string; name?: string; senderTaskId?: string }

1373 | { kind: "task-notification" }1415 | { kind: "task-notification" }

1374 | { kind: "coordinator" };1416 | { kind: "coordinator" }

1417 | { kind: "auto-continuation" };

1375```1418```

1376 1419 

1377| `kind` | 含義 |1420| `kind` | 含義 |

1378| ------------------- | ------------------------------------------------------------------------------- |1421| ------------------- | -------------------------------------------------------------------------------------------------------------------------------- |

1379| `human` | 來自最終用戶的直接輸入。在用戶消息上,缺少的 `origin` 也表示人類輸入。 |1422| `human` | 來自最終用戶的直接輸入。在用戶消息上,缺少的 `origin` 也表示人類輸入。 |

1380| `channel` | 在[頻道](/zh-TW/channels)上到達的消息。`server` 是源 MCP 伺服器名稱。 |1423| `channel` | 在[頻道](/zh-TW/channels)上到達的消息。`server` 是源 MCP 伺服器名稱。 |

1381| `peer` | 來自另一個代理會話的消息,通過 `SendMessage`。`from` 是發送者地址`name` 是發送者的顯示名稱(如果可用)。 |1424| `peer` | 保留用於來自另一個代理會話的消息。`from` 是發送者地址`name` 是發送者的顯示名稱(如果可用)。`senderTaskId` 是發送消息的進程內背景子代理的任務 ID;對於跨會話對等體不存在。Agent SDK 不發出此來源;將其視為未知來源。 |

1382| `task-notification` | 後台任務完成後注入的合成轉數。請參閱 [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)。 |1425| `task-notification` | 後台任務完成後注入的合成轉數。請參閱 [`SDKTaskNotificationMessage`](#sdktasknotificationmessage)。 |

1383| `coordinator` | 來自[代理團隊](/zh-TW/agent-teams)中的團隊協調員的消息。 |1426| `coordinator` | 來自[代理團隊](/zh-TW/agent-teams)中的團隊協調員的消息。 |

1427| `auto-continuation` | 當會話在沒有新用戶輸入的情況下繼續時注入的合成轉數,例如觸發後續提示的命令結果。 |

1384 1428 

1385<h2 id="hook-types">1429<h2 id="hook-types">

1386 Hook 類型1430 Hook 類型


1602```typescript theme={null}1646```typescript theme={null}

1603type SessionEndHookInput = BaseHookInput & {1647type SessionEndHookInput = BaseHookInput & {

1604 hook_event_name: "SessionEnd";1648 hook_event_name: "SessionEnd";

1605 reason: ExitReason; // EXIT_REASONS 數組中的字符串1649 reason: ExitReason; // EXIT_REASONS 陣列中的字串

1606};1650};

1607```1651```

1608 1652 


1712type TeammateIdleHookInput = BaseHookInput & {1756type TeammateIdleHookInput = BaseHookInput & {

1713 hook_event_name: "TeammateIdle";1757 hook_event_name: "TeammateIdle";

1714 teammate_name: string;1758 teammate_name: string;

1759 /** @deprecated 自 v2.1.178 起已棄用。攜帶工作階段衍生的團隊名稱;將被移除。 */

1715 team_name: string;1760 team_name: string;

1716};1761};

1717```1762```


1727 task_subject: string;1772 task_subject: string;

1728 task_description?: string;1773 task_description?: string;

1729 teammate_name?: string;1774 teammate_name?: string;

1775 /** @deprecated 自 v2.1.178 起已棄用。攜帶工作階段衍生的團隊名稱;將被移除。 */

1730 team_name?: string;1776 team_name?: string;

1731};1777};

1732```1778```


1934 description: string;1980 description: string;

1935 prompt: string;1981 prompt: string;

1936 subagent_type: string;1982 subagent_type: string;

1937 model?: "sonnet" | "opus" | "haiku";1983 model?: "sonnet" | "opus" | "haiku" | "fable";

1938 resume?: string;1984 resume?: string;

1939 run_in_background?: boolean;1985 run_in_background?: boolean;

1940 max_turns?: number;1986 max_turns?: number;

1941 name?: string;1987 name?: string;

1942 team_name?: string;

1943 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";1988 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1944 isolation?: "worktree";1989 isolation?: "worktree";

1945};1990};


2385 | WorkflowOutput;2430 | WorkflowOutput;

2386```2431```

2387 2432 

2388<h3 id="agent">2433<h3 id="agent-1">

2389 Agent2434 Agent

2390</h3>2435</h3>

2391 2436 


2397 status: "completed";2442 status: "completed";

2398 agentId: string;2443 agentId: string;

2399 content: Array<{ type: "text"; text: string }>;2444 content: Array<{ type: "text"; text: string }>;

2445 resolvedModel?: string;

2400 totalToolUseCount: number;2446 totalToolUseCount: number;

2401 totalDurationMs: number;2447 totalDurationMs: number;

2402 totalTokens: number;2448 totalTokens: number;


2421 status: "async_launched";2467 status: "async_launched";

2422 agentId: string;2468 agentId: string;

2423 description: string;2469 description: string;

2470 resolvedModel?: string;

2424 prompt: string;2471 prompt: string;

2425 outputFile: string;2472 outputFile: string;

2426 canReadOutputFile?: boolean;2473 canReadOutputFile?: boolean;


2434 2481 

2435返回子代理的結果。在 `status` 字段上區分:`"completed"` 用於已完成的任務,`"async_launched"` 用於後台任務,`"sub_agent_entered"` 用於交互式子代理。2482返回子代理的結果。在 `status` 字段上區分:`"completed"` 用於已完成的任務,`"async_launched"` 用於後台任務,`"sub_agent_entered"` 用於交互式子代理。

2436 2483 

2437<h3 id="askuserquestion">2484`completed` 和 `async_launched` 變體上的 `resolvedModel` 字段命名子代理實際運行的模型,當應用 [`availableModels`](/zh-TW/model-config#restrict-model-selection) 或其他覆蓋時,該模型可能與請求的 `model` 輸入不同。{/* min-version: 2.1.174 */}此字段需要 Claude Code v2.1.174 或更高版本。

2485 

2486<h3 id="askuserquestion-1">

2438 AskUserQuestion2487 AskUserQuestion

2439</h3>2488</h3>

2440 2489 


2455 2504 

2456返回提出的問題和用戶的答案。當用戶輸入自由形式的回覆而不是回答結構化問題時,`response` 被設置;當存在時,Claude 會收到「用戶回應:…」而不是每個問題的答案列表。2505返回提出的問題和用戶的答案。當用戶輸入自由形式的回覆而不是回答結構化問題時,`response` 被設置;當存在時,Claude 會收到「用戶回應:…」而不是每個問題的答案列表。

2457 2506 

2458<h3 id="bash">2507<h3 id="bash-1">

2459 Bash2508 Bash

2460</h3>2509</h3>

2461 2510 


2480 2529 

2481返回命令輸出,stdout/stderr 分開。後台命令包括 `backgroundTaskId`。2530返回命令輸出,stdout/stderr 分開。後台命令包括 `backgroundTaskId`。

2482 2531 

2483<h3 id="monitor">2532<h3 id="monitor-1">

2484 Monitor2533 Monitor

2485</h3>2534</h3>

2486 2535 


2496 2545 

2497返回運行監視器的後台任務 ID。使用此 ID 與 `TaskStop` 一起提前取消監視。2546返回運行監視器的後台任務 ID。使用此 ID 與 `TaskStop` 一起提前取消監視。

2498 2547 

2499<h3 id="edit">2548<h3 id="edit-1">

2500 Edit2549 Edit

2501</h3>2550</h3>

2502 2551 


2530 2579 

2531返回編輯操作的結構化差異。2580返回編輯操作的結構化差異。

2532 2581 

2533<h3 id="read">2582<h3 id="read-1">

2534 Read2583 Read

2535</h3>2584</h3>

2536 2585 


2590 2639 

2591返回適合文件類型的文件內容。在 `type` 字段上區分。2640返回適合文件類型的文件內容。在 `type` 字段上區分。

2592 2641 

2593<h3 id="write">2642<h3 id="write-1">

2594 Write2643 Write

2595</h3>2644</h3>

2596 2645 


2622 2671 

2623返回寫入結果,包含結構化差異信息。2672返回寫入結果,包含結構化差異信息。

2624 2673 

2625<h3 id="glob">2674<h3 id="glob-1">

2626 Glob2675 Glob

2627</h3>2676</h3>

2628 2677 


2637};2686};

2638```2687```

2639 2688 

2640返回與 glob 模式匹配的文件路徑,按修改時間排序。2689返回與 Glob 模式匹配的文件路徑,按修改時間排序。

2641 2690 

2642<h3 id="grep">2691<h3 id="grep-1">

2643 Grep2692 Grep

2644</h3>2693</h3>

2645 2694 


2660 2709 

2661返回搜索結果。形狀因 `mode` 而異:文件列表、帶匹配的內容或匹配計數。2710返回搜索結果。形狀因 `mode` 而異:文件列表、帶匹配的內容或匹配計數。

2662 2711 

2663<h3 id="taskstop">2712<h3 id="taskstop-1">

2664 TaskStop2713 TaskStop

2665</h3>2714</h3>

2666 2715 


2677 2726 

2678停止後台任務後返回確認。2727停止後台任務後返回確認。

2679 2728 

2680<h3 id="notebookedit">2729<h3 id="notebookedit-1">

2681 NotebookEdit2730 NotebookEdit

2682</h3>2731</h3>

2683 2732 


2699 2748 

2700返回筆記本編輯的結果,包含原始和更新的文件內容。2749返回筆記本編輯的結果,包含原始和更新的文件內容。

2701 2750 

2702<h3 id="webfetch">2751<h3 id="webfetch-1">

2703 WebFetch2752 WebFetch

2704</h3>2753</h3>

2705 2754 


2718 2767 

2719返回獲取的內容,包含 HTTP 狀態和元數據。2768返回獲取的內容,包含 HTTP 狀態和元數據。

2720 2769 

2721<h3 id="websearch">2770<h3 id="websearch-1">

2722 WebSearch2771 WebSearch

2723</h3>2772</h3>

2724 2773 


2740 2789 

2741返回來自網絡的搜索結果。2790返回來自網絡的搜索結果。

2742 2791 

2743<h3 id="workflow">2792<h3 id="workflow-1">

2744 Workflow2793 Workflow

2745</h3>2794</h3>

2746 2795 


2770| `scriptPath` | `string` | 此運行的持久化工作流腳本的路徑。編輯它並作為 `scriptPath` 傳回以重新運行而無需重新發送腳本 |2819| `scriptPath` | `string` | 此運行的持久化工作流腳本的路徑。編輯它並作為 `scriptPath` 傳回以重新運行而無需重新發送腳本 |

2771| `error` | `string` | 當腳本失敗其語法檢查時設置。存在時,儘管 `async_launched` 狀態,運行未啟動 |2820| `error` | `string` | 當腳本失敗其語法檢查時設置。存在時,儘管 `async_launched` 狀態,運行未啟動 |

2772 2821 

2773<h3 id="todowrite">2822<h3 id="todowrite-1">

2774 TodoWrite2823 TodoWrite

2775</h3>2824</h3>

2776 2825 


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`。2846 自 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`。

2798</Note>2847</Note>

2799 2848 

2800<h3 id="taskcreate">2849<h3 id="taskcreate-1">

2801 TaskCreate2850 TaskCreate

2802</h3>2851</h3>

2803 2852 


2814 2863 

2815返回創建的任務及其分配的 ID。2864返回創建的任務及其分配的 ID。

2816 2865 

2817<h3 id="taskupdate">2866<h3 id="taskupdate-1">

2818 TaskUpdate2867 TaskUpdate

2819</h3>2868</h3>

2820 2869 


2835 2884 

2836返回更新結果,包括哪些字段已更改。2885返回更新結果,包括哪些字段已更改。

2837 2886 

2838<h3 id="taskget">2887<h3 id="taskget-1">

2839 TaskGet2888 TaskGet

2840</h3>2889</h3>

2841 2890 


2856 2905 

2857返回完整的任務記錄,或在找不到 ID 時返回 `null`。2906返回完整的任務記錄,或在找不到 ID 時返回 `null`。

2858 2907 

2859<h3 id="tasklist">2908<h3 id="tasklist-1">

2860 TaskList2909 TaskList

2861</h3>2910</h3>

2862 2911 


2876 2925 

2877返回當前列表中所有任務的快照。2926返回當前列表中所有任務的快照。

2878 2927 

2879<h3 id="exitplanmode">2928<h3 id="exitplanmode-1">

2880 ExitPlanMode2929 ExitPlanMode

2881</h3>2930</h3>

2882 2931 


2895 2944 

2896返回退出 Plan Mode 後的計劃狀態。2945返回退出 Plan Mode 後的計劃狀態。

2897 2946 

2898<h3 id="listmcpresources">2947<h3 id="listmcpresources-1">

2899 ListMcpResources2948 ListMcpResources

2900</h3>2949</h3>

2901 2950 


2913 2962 

2914返回可用 MCP 資源的數組。2963返回可用 MCP 資源的數組。

2915 2964 

2916<h3 id="readmcpresource">2965<h3 id="readmcpresource-1">

2917 ReadMcpResource2966 ReadMcpResource

2918</h3>2967</h3>

2919 2968 


2931 2980 

2932返回請求的 MCP 資源的內容。2981返回請求的 MCP 資源的內容。

2933 2982 

2934<h3 id="enterworktree">2983<h3 id="enterworktree-1">

2935 EnterWorktree2984 EnterWorktree

2936</h3>2985</h3>

2937 2986 


3008 3057 

3009```typescript theme={null}3058```typescript theme={null}

3010type PermissionUpdateDestination =3059type PermissionUpdateDestination =

3011 | "userSettings" // 全局用戶設置3060 | "userSettings" // 全域使用者設定

3012 | "projectSettings" // 每個目錄的項目設置3061 | "projectSettings" // 每個目錄的專案設定

3013 | "localSettings" // Gitignored 本地設置3062 | "localSettings" // 本機專案設定

3014 | "session" // 僅當前會話3063 | "session" // 僅限目前工作階段

3015 | "cliArg"; // CLI 參數3064 | "cliArg"; // CLI 引數

3016```3065```

3017 3066 

3018<h3 id="permissionrulevalue">3067<h3 id="permissionrulevalue">


3049```3098```

3050 3099 

3051<Warning>3100<Warning>

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 標頭。3101 `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 或 Claude Opus 4.8](https://platform.claude.com/docs/zh-TW/about-claude/models/overview),它們以標準定價包括 1M 上下文,無需 beta 標頭。

3053</Warning>3102</Warning>

3054 3103 

3055<h3 id="slashcommand">3104<h3 id="slashcommand">


3241```typescript theme={null}3290```typescript theme={null}

3242type CallToolResult = {3291type CallToolResult = {

3243 content: Array<{3292 content: Array<{

3244 type: "text" | "image" | "resource";3293 type: "text" | "image" | "audio" | "resource" | "resource_link";

3245 // 其他字段因類型而異3294 // 其他字段因類型而異

3246 }>;3295 }>;

3247 structuredContent?: Record<string, unknown>;3296 structuredContent?: Record<string, unknown>;

Details

16 16 

17本指南向您展示如何檢測每種類型的請求並做出適當的回應。17本指南向您展示如何檢測每種類型的請求並做出適當的回應。

18 18 

19## 檢測 Claude 何時需要輸入19<h2 id="detect-when-claude-needs-input">

20 檢測 Claude 何時需要輸入

21</h2>

20 22 

21在您的查詢選項中傳遞 `canUseTool` 回呼。每當 Claude 需要使用者輸入時,回呼就會觸發,接收工具名稱和輸入作為參數:23在您的查詢選項中傳遞 `canUseTool` 回呼。每當 Claude 需要使用者輸入時,回呼就會觸發,接收工具名稱和輸入作為參數:

22 24 


49 要自動允許或拒絕工具而不提示使用者,請改用 [hooks](/zh-TW/agent-sdk/hooks)。Hooks 在 `canUseTool` 之前執行,可以根據您自己的邏輯允許、拒絕或修改請求。您也可以使用 [`PermissionRequest` hook](/zh-TW/agent-sdk/hooks#available-hooks) 在 Claude 等待批准時發送外部通知(Slack、電子郵件、推送)。51 要自動允許或拒絕工具而不提示使用者,請改用 [hooks](/zh-TW/agent-sdk/hooks)。Hooks 在 `canUseTool` 之前執行,可以根據您自己的邏輯允許、拒絕或修改請求。您也可以使用 [`PermissionRequest` hook](/zh-TW/agent-sdk/hooks#available-hooks) 在 Claude 等待批准時發送外部通知(Slack、電子郵件、推送)。

50</Note>52</Note>

51 53 

52## 處理工具批准請求54<h2 id="handle-tool-approval-requests">

55 處理工具批准請求

56</h2>

53 57 

54一旦您在查詢選項中傳遞了 `canUseTool` 回呼,當 Claude 想要使用未自動批准的工具時,它就會觸發。您的回呼接收三個參數:58一旦您在查詢選項中傳遞了 `canUseTool` 回呼,當 Claude 想要使用未自動批准的工具時,它就會觸發。您的回呼接收三個參數:

55 59 


197 201 

198此範例使用 y/n 流程,其中除 `y` 以外的任何輸入都被視為拒絕。在實踐中,您可能會構建一個更豐富的 UI,讓使用者修改請求、提供回饋或完全重定向 Claude。有關所有回應方式,請參閱[回應工具請求](#respond-to-tool-requests)。202此範例使用 y/n 流程,其中除 `y` 以外的任何輸入都被視為拒絕。在實踐中,您可能會構建一個更豐富的 UI,讓使用者修改請求、提供回饋或完全重定向 Claude。有關所有回應方式,請參閱[回應工具請求](#respond-to-tool-requests)。

199 203 

200### 回應工具請求204<h3 id="respond-to-tool-requests">

205 回應工具請求

206</h3>

201 207 

202您的回呼返回以下兩種回應類型之一:208您的回呼返回以下兩種回應類型之一:

203 209 


407 </Tab>413 </Tab>

408</Tabs>414</Tabs>

409 415 

410## 處理澄清問題416<h2 id="handle-clarifying-questions">

417 處理澄清問題

418</h2>

411 419 

412當 Claude 需要在具有多個有效方法的任務上獲得更多方向時,它會呼叫 `AskUserQuestion` 工具。這會使用 `toolName` 設定為 `AskUserQuestion` 的方式觸發您的 `canUseTool` 回呼。輸入包含 Claude 的問題作為多選選項,您將其顯示給使用者並返回他們的選擇。420當 Claude 需要在具有多個有效方法的任務上獲得更多方向時,它會呼叫 `AskUserQuestion` 工具。這會使用 `toolName` 設定為 `AskUserQuestion` 的方式觸發您的 `canUseTool` 回呼。輸入包含 Claude 的問題作為多選選項,您將其顯示給使用者並返回他們的選擇。

413 421 


551 </Step>559 </Step>

552</Steps>560</Steps>

553 561 

554### 問題格式562<h3 id="question-format">

563 問題格式

564</h3>

555 565 

556輸入在 `questions` 陣列中包含 Claude 生成的問題。每個問題都有這些欄位:566輸入在 `questions` 陣列中包含 Claude 生成的問題。每個問題都有這些欄位:

557 567 

558| 欄位 | 描述 |568| 欄位 | 描述 |

559| ------------- | ------------------------------------------------------------------------------------------------------ |569| ------------- | ----------------------------------------------------------------------------------------------------- |

560| `question` | 要顯示的完整問題文字 |570| `question` | 要顯示的完整問題文字 |

561| `header` | 問題的簡短標籤(最多 12 個字元) |571| `header` | 問題的簡短標籤(最多 12 個字元) |

562| `options` | 2-4 個選擇的陣列,每個都有 `label` 和 `description`。TypeScript:可選 `preview`(請參閱[下方](#option-previews-type-script)) |572| `options` | 2-4 個選擇的陣列,每個都有 `label` 和 `description`。TypeScript:可選 `preview`(請參閱[下方](#option-previews-typescript)) |

563| `multiSelect` | 如果為 `true`,使用者可以選擇多個選項 |573| `multiSelect` | 如果為 `true`,使用者可以選擇多個選項 |

564 574 

565您的回呼接收的結構:575您的回呼接收的結構:


580}590}

581```591```

582 592 

583#### 選項預覽 (TypeScript)593<h4 id="option-previews-typescript">

594 選項預覽 (TypeScript)

595</h4>

584 596 

585`toolConfig.askUserQuestion.previewFormat` 為每個選項添加 `preview` 欄位,以便您的應用程式可以在標籤旁邊顯示視覺模型。沒有此設定,Claude 不會生成預覽,該欄位不存在。597`toolConfig.askUserQuestion.previewFormat` 為每個選項添加 `preview` 欄位,以便您的應用程式可以在標籤旁邊顯示視覺模型。沒有此設定,Claude 不會生成預覽,該欄位不存在。

586 598 


621}633}

622```634```

623 635 

624### 回應格式636<h3 id="response-format">

637 回應格式

638</h3>

625 639 

626返回 `answers` 物件,將每個問題的 `question` 欄位對應到所選選項的 `label`:640返回 `answers` 物件,將每個問題的 `question` 欄位對應到所選選項的 `label`:

627 641 


645}659}

646```660```

647 661 

648#### 支援自由文字輸入662<h4 id="support-free-text-input">

663 支援自由文字輸入

664</h4>

649 665 

650Claude 的預定義選項不會總是涵蓋使用者想要的內容。要讓使用者輸入自己的答案:666Claude 的預定義選項不會總是涵蓋使用者想要的內容。要讓使用者輸入自己的答案:

651 667 


654 670 

655有關完整實現,請參閱下方的[完整範例](#complete-example)。671有關完整實現,請參閱下方的[完整範例](#complete-example)。

656 672 

657### 完整範例673<h3 id="complete-example">

674 完整範例

675</h3>

658 676 

659當 Claude 需要使用者輸入以繼續時,它會提出澄清問題。例如,當被要求幫助決定行動應用程式的技術堆棧時,Claude 可能會詢問跨平台與原生、後端偏好或目標平台。這些問題幫助 Claude 做出與使用者偏好相符的決定,而不是猜測。677當 Claude 需要使用者輸入以繼續時,它會提出澄清問題。例如,當被要求幫助決定行動應用程式的技術堆棧時,Claude 可能會詢問跨平台與原生、後端偏好或目標平台。這些問題幫助 Claude 做出與使用者偏好相符的決定,而不是猜測。

660 678 


821 ```839 ```

822</CodeGroup>840</CodeGroup>

823 841 

824## 限制842<h2 id="limitations">

843 限制

844</h2>

825 845 

826* **子代理**:`AskUserQuestion` 目前在透過 Agent 工具生成的子代理中不可用846* **子代理**:`AskUserQuestion` 目前在透過 Agent 工具生成的子代理中不可用

827* **問題限制**:每個 `AskUserQuestion` 呼叫支援 1-4 個問題,每個 2-4 個選項847* **問題限制**:每個 `AskUserQuestion` 呼叫支援 1-4 個問題,每個 2-4 個選項

828 848 

829## 獲取使用者輸入的其他方式849<h2 id="other-ways-to-get-user-input">

850 獲取使用者輸入的其他方式

851</h2>

830 852 

831`canUseTool` 回呼和 `AskUserQuestion` 工具涵蓋大多數批准和澄清情況,但 SDK 提供其他方式來從使用者獲取輸入:853`canUseTool` 回呼和 `AskUserQuestion` 工具涵蓋大多數批准和澄清情況,但 SDK 提供其他方式來從使用者獲取輸入:

832 854 

833### 串流輸入855<h3 id="streaming-input">

856 串流輸入

857</h3>

834 858 

835當您需要以下情況時,使用[串流輸入](/zh-TW/agent-sdk/streaming-vs-single-mode):859當您需要以下情況時,使用[串流輸入](/zh-TW/agent-sdk/streaming-vs-single-mode):

836 860 


840 864 

841串流輸入非常適合對話式 UI,使用者在整個執行過程中與代理互動,而不僅僅在批准檢查點。865串流輸入非常適合對話式 UI,使用者在整個執行過程中與代理互動,而不僅僅在批准檢查點。

842 866 

843### 自訂工具867<h3 id="custom-tools">

868 自訂工具

869</h3>

844 870 

845當您需要以下情況時,使用[自訂工具](/zh-TW/agent-sdk/custom-tools):871當您需要以下情況時,使用[自訂工具](/zh-TW/agent-sdk/custom-tools):

846 872 


850 876 

851自訂工具讓您完全控制互動,但需要比使用內建 `canUseTool` 回呼更多的實現工作。877自訂工具讓您完全控制互動,但需要比使用內建 `canUseTool` 回呼更多的實現工作。

852 878 

853## 相關資源879<h2 id="related-resources">

880 相關資源

881</h2>

854 882 

855* [配置權限](/zh-TW/agent-sdk/permissions):設定權限模式和規則883* [配置權限](/zh-TW/agent-sdk/permissions):設定權限模式和規則

856* [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks):在代理生命週期的關鍵點執行自訂程式碼884* [使用 hooks 控制執行](/zh-TW/agent-sdk/hooks):在代理生命週期的關鍵點執行自訂程式碼

agent-teams.md +143 −77

Details

7> 協調多個 Claude Code 實例作為團隊一起工作,具有共享任務、代理間訊息傳遞和集中管理。7> 協調多個 Claude Code 實例作為團隊一起工作,具有共享任務、代理間訊息傳遞和集中管理。

8 8 

9<Warning>9<Warning>

10 Agent teams 是實驗性功能,預設為停用。透過在 [settings.json](/zh-TW/settings) 或環境中新增 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 來啟用。Agent teams 在工作階段恢復、任務協調和關閉行為方面有[已知限制](#limitations)。10 Agent teams 是實驗性功能,預設為停用。透過在 [settings.json](/zh-TW/settings) 或環境中新增 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 來啟用。若沒有該變數,工作階段啟動時不會設定任何團隊、不會寫入團隊目錄,Claude 也不會生成或提議隊友。Agent teams 在工作階段恢復、任務協調和關閉行為方面有[已知限制](#limitations)。

11</Warning>11</Warning>

12 12 

13Agent teams 讓您協調多個 Claude Code 實例一起工作。一個工作階段充當團隊主管,協調工作、分配任務並綜合結果。隊友獨立工作,各自在自己的 context window 中,並直接相互溝通。13Agent teams 讓您協調多個 Claude Code 實例一起工作。一個工作階段充當團隊主管,協調工作、分配任務並綜合結果。隊友獨立工作,各自在自己的 context window 中,並直接相互溝通。


15與 [subagents](/zh-TW/sub-agents) 不同,subagents 在單個工作階段內運行,只能向主代理報告,您也可以直接與個別隊友互動,無需透過主管。15與 [subagents](/zh-TW/sub-agents) 不同,subagents 在單個工作階段內運行,只能向主代理報告,您也可以直接與個別隊友互動,無需透過主管。

16 16 

17<Note>17<Note>

18 Agent teams 需要 Claude Code v2.1.32 或更新版本。使用 `claude --version` 檢查您的版本18 本頁描述的是 v2.1.178 版本的 agent teams。設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 後,生成隊友不再需要設定步驟,工作階段退出時會自動清理。在 v2.1.178 之前,您需要要求 Claude 先建立並命名團隊,Claude 使用 `TeamCreate` 和 `TeamDelete` 工具來設定和移除它。這兩個工具已不存在。Agent 工具上的 `team_name` 輸入被接受但被忽略,`TaskCreated`、`TaskCompleted` 和 `TeammateIdle` [hook payloads](/zh-TW/hooks#taskcreated) 中的 `team_name` 欄位帶有工作階段衍生的名稱,已被棄用

19</Note>19</Note>

20 20 

21本頁涵蓋:21本頁涵蓋:


25* [控制您的 agent team](#control-your-agent-team),包括顯示模式、任務分配和委派25* [控制您的 agent team](#control-your-agent-team),包括顯示模式、任務分配和委派

26* [並行工作的最佳實踐](#best-practices)26* [並行工作的最佳實踐](#best-practices)

27 27 

28## 何時使用 agent teams28<h2 id="when-to-use-agent-teams">

29 何時使用 agent teams

30</h2>

29 31 

30Agent teams 最適合用於並行探索能增加真實價值的任務。請參閱[使用案例範例](#use-case-examples)以了解完整情景。最強的使用案例是:32Agent teams 最適合用於並行探索能增加真實價值的任務。請參閱[使用案例範例](#use-case-examples)以了解完整情景。最強的使用案例是:

31 33 


36 38 

37Agent teams 增加了協調開銷,並使用的 tokens 遠多於單個工作階段。當隊友可以獨立運作時,它們效果最佳。對於順序任務、相同檔案編輯或具有許多依賴關係的工作,單個工作階段或 [subagents](/zh-TW/sub-agents) 更有效。39Agent teams 增加了協調開銷,並使用的 tokens 遠多於單個工作階段。當隊友可以獨立運作時,它們效果最佳。對於順序任務、相同檔案編輯或具有許多依賴關係的工作,單個工作階段或 [subagents](/zh-TW/sub-agents) 更有效。

38 40 

39### 與 subagents 比較41<h3 id="compare-with-subagents">

42 與 subagents 比較

43</h3>

40 44 

41Agent teams 和 [subagents](/zh-TW/sub-agents) 都讓您並行化工作,但它們的運作方式不同。根據您的工作人員是否需要相互溝通來選擇:45Agent teams 和 [subagents](/zh-TW/sub-agents) 都讓您並行化工作,但它們的運作方式不同。根據您的工作人員是否需要相互溝通來選擇:

42 46 


56 60 

57當您需要快速、專注的工作人員報告結果時,使用 subagents。當隊友需要分享發現、相互質疑並自行協調時,使用 agent teams。61當您需要快速、專注的工作人員報告結果時,使用 subagents。當隊友需要分享發現、相互質疑並自行協調時,使用 agent teams。

58 62 

59## 啟用 agent teams63<h2 id="enable-agent-teams">

64 啟用 agent teams

65</h2>

60 66 

61Agent teams 預設為停用。透過將 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 環境變數設定為 `1`,在您的 shell 環境或透過 [settings.json](/zh-TW/settings) 來啟用:67Agent teams 預設為停用。透過將 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 環境變數設定為 `1`,在您的 shell 環境或透過 [settings.json](/zh-TW/settings) 來啟用:

62 68 


68}74}

69```75```

70 76 

71## 啟動您的第一個 agent team77<h2 id="start-your-first-agent-team">

78 啟動您的第一個 agent team

79</h2>

72 80 

73啟用 agent teams 後,告訴 Claude 建立一個 agent team 並用自然語言描述您想要的任務和團隊結構。Claude 建立團隊、生成隊友並根據您的提示協調工作81啟用 agent teams 後,用自然語言描述您想要的任務和隊友。Claude 會生成他們並根據您的提示協調工作

74 82 

75此範例效果很好,因為三個角色是獨立的,可以在不相互等待的情況下探索問題:83此範例效果很好,因為三個角色是獨立的,可以在不相互等待的情況下探索問題:

76 84 

77```text theme={null}85```text theme={null}

78I'm designing a CLI tool that helps developers track TODO comments across86I'm designing a CLI tool that helps developers track TODO comments across

79their codebase. Create an agent team to explore this from different angles: one87their codebase. Spawn three teammates to explore this from different angles:

80teammate on UX, one on technical architecture, one playing devil's advocate.88one on UX, one on technical architecture, one playing devil's advocate.

81```89```

82 90 

83從那裡,Claude 建立一個具有[共享任務列表](/zh-TW/interactive-mode#task-list)的團隊,為每個觀點生成隊友,讓他們探索問題,綜合發現,並嘗試在完成時[清理團隊](#clean-up-the-team)91從那裡,Claude 會建立一個[共享任務列表](/zh-TW/interactive-mode#task-list),為每個觀點生成隊友,讓他們探索問題,並在完成時綜合發現

84 92 

85主管的終端列出所有隊友及其正在進行的工作。使用 Shift+Down 循環瀏覽隊友並直接向他們傳送訊息。在最後一個隊友之後,Shift+Down 會回到主管。93主管的終端列出所有隊友及其正在進行的工作。使用 Shift+Down 循環瀏覽隊友並直接向他們傳送訊息。在最後一個隊友之後,Shift+Down 會回到主管。

86 94 

87如果您希望每個隊友都在自己的分割窗格中,請參閱[選擇顯示模式](#choose-a-display-mode)。95如果您希望每個隊友都在自己的分割窗格中,請參閱[選擇顯示模式](#choose-a-display-mode)。

88 96 

89## 控制您的 agent team97<h2 id="control-your-agent-team">

98 控制您的 agent team

99</h2>

90 100 

91用自然語言告訴主管您想要什麼。它根據您的指示處理團隊協調、任務分配和委派。101用自然語言告訴主管您想要什麼。它根據您的指示處理團隊協調、任務分配和委派。

92 102 

93### 選擇顯示模式103<h3 id="choose-a-display-mode">

104 選擇顯示模式

105</h3>

94 106 

95Agent teams 支援兩種顯示模式:107Agent teams 支援兩種顯示模式:

96 108 


101 `tmux` 在某些作業系統上有已知限制,傳統上在 macOS 上效果最佳。在 iTerm2 中使用 `tmux -CC` 是進入 `tmux` 的建議入口點。113 `tmux` 在某些作業系統上有已知限制,傳統上在 macOS 上效果最佳。在 iTerm2 中使用 `tmux -CC` 是進入 `tmux` 的建議入口點。

102</Note>114</Note>

103 115 

104預設值是 `"auto"`,如果您已在 tmux 工作階段內運行,則使用分割窗格,否則使用 in-process。`"tmux"` 設定啟用分割窗格模式,並根據您的終端自動偵測是否使用 tmux 或 iTerm2。若要覆蓋,請在 `~/.claude/settings.json` 中設定 [`teammateMode`](/zh-TW/settings#available-settings):116預設值是 `"auto"`,如果您已在 tmux 工作階段內運行或您的終端是 iTerm2,則使用分割窗格,否則使用 in-process。`"tmux"` 設定啟用分割窗格模式,並根據您的終端自動偵測是否使用 tmux 或 iTerm2。若要覆蓋,請在 `~/.claude/settings.json` 中設定 [`teammateMode`](/zh-TW/settings#available-settings):

105 117 

106```json theme={null}118```json theme={null}

107{119{


120* **tmux**:透過您系統的套件管理器安裝。請參閱 [tmux wiki](https://github.com/tmux/tmux/wiki/Installing) 以了解平台特定的指示。132* **tmux**:透過您系統的套件管理器安裝。請參閱 [tmux wiki](https://github.com/tmux/tmux/wiki/Installing) 以了解平台特定的指示。

121* **iTerm2**:安裝 [`it2` CLI](https://github.com/mkusaka/it2),然後在 **iTerm2 → Settings → General → Magic → Enable Python API** 中啟用 Python API。133* **iTerm2**:安裝 [`it2` CLI](https://github.com/mkusaka/it2),然後在 **iTerm2 → Settings → General → Magic → Enable Python API** 中啟用 Python API。

122 134 

123### 指定隊友和模型135<h3 id="specify-teammates-and-models">

136 指定隊友和模型

137</h3>

124 138 

125Claude 根據您的任務決定要生成的隊友數量,或者您可以指定您想要的確切內容:139Claude 根據您的任務決定要生成的隊友數量,或者您可以指定您想要的確切內容:

126 140 

127```text theme={null}141```text theme={null}

128Create a team with 4 teammates to refactor these modules in parallel.142Spawn 4 teammates to refactor these modules in parallel. Use Sonnet for

129Use Sonnet for each teammate.143each teammate.

130```144```

131 145 

132隊友預設不會繼承主管的 `/model` 選擇。若要變更在提示未指定模型時使用的模型,請在 `/config` 中設定**預設隊友模型**。選擇\*\*預設(主管的模型)\*\*以讓隊友遵循主管的目前模型。146隊友預設不會繼承主管的 `/model` 選擇。若要變更在提示未指定模型時使用的模型,請在 `/config` 中設定**預設隊友模型**。選擇\*\*預設(主管的模型)\*\*以讓隊友遵循主管的目前模型。

133 147 

134### 要求隊友的計畫批准148<h3 id="require-plan-approval-for-teammates">

149 要求隊友的計畫批准

150</h3>

135 151 

136對於複雜或有風險的任務,您可以要求隊友在實施前進行計畫。隊友在唯讀計畫模式下工作,直到主管批准其方法:152對於複雜或有風險的任務,您可以要求隊友在實施前進行計畫。隊友在唯讀計畫模式下工作,直到主管批准其方法:

137 153 


144 160 

145主管自主做出批准決定。若要影響主管的判斷,在您的提示中提供標準,例如「只批准包含測試覆蓋的計畫」或「拒絕修改資料庫架構的計畫」。161主管自主做出批准決定。若要影響主管的判斷,在您的提示中提供標準,例如「只批准包含測試覆蓋的計畫」或「拒絕修改資料庫架構的計畫」。

146 162 

147### 直接與隊友交談163<h3 id="talk-to-teammates-directly">

164 直接與隊友交談

165</h3>

148 166 

149每個隊友都是一個完整、獨立的 Claude Code 工作階段。您可以直接向任何隊友傳送訊息,以提供額外指示、提出後續問題或重新定向其方法。167每個隊友都是一個完整、獨立的 Claude Code 工作階段。您可以直接向任何隊友傳送訊息,以提供額外指示、提出後續問題或重新定向其方法。

150 168 

151* **In-process 模式**:使用 Shift+Down 循環瀏覽隊友,然後輸入以向他們傳送訊息。按 Enter 查看隊友的工作階段,然後按 Escape 中斷其目前回合。按 Ctrl+T 切換任務列表。169* **In-process 模式**:使用 Shift+Down 循環瀏覽隊友,然後輸入以向他們傳送訊息。按 Enter 查看隊友的工作階段,然後按 Escape 中斷其目前回合。按 Ctrl+T 切換任務列表。

152* **Split-pane 模式**:點擊隊友的窗格以直接與其工作階段互動。每個隊友都有自己終端的完整檢視。170* **Split-pane 模式**:點擊隊友的窗格以直接與其工作階段互動。每個隊友都有自己終端的完整檢視。

153 171 

154### 分配和認領任務172<h3 id="assign-and-claim-tasks">

173 分配和認領任務

174</h3>

155 175 

156共享任務列表協調整個團隊的工作。主管建立任務,隊友完成它們。任務有三種狀態:待處理、進行中和已完成。任務也可以依賴其他任務:具有未解決依賴關係的待處理任務在這些依賴關係完成之前無法被認領。176共享任務列表協調整個團隊的工作。主管建立任務,隊友完成它們。任務有三種狀態:待處理、進行中和已完成。任務也可以依賴其他任務:具有未解決依賴關係的待處理任務在這些依賴關係完成之前無法被認領。

157 177 


162 182 

163任務認領使用檔案鎖定來防止多個隊友同時嘗試認領同一任務時的競爭條件。183任務認領使用檔案鎖定來防止多個隊友同時嘗試認領同一任務時的競爭條件。

164 184 

165### 關閉隊友185<h3 id="shut-down-teammates">

186 關閉隊友

187</h3>

166 188 

167若要優雅地結束隊友的工作階段:189若要優雅地結束隊友的工作階段,請按名稱引用它。例如,使用名為 researcher 的隊友

168 190 

169```text theme={null}191```text theme={null}

170Ask the researcher teammate to shut down192Ask the researcher teammate to shut down


172 194 

173主管發送關閉請求。隊友可以批准並優雅地退出,或拒絕並提供解釋。195主管發送關閉請求。隊友可以批准並優雅地退出,或拒絕並提供解釋。

174 196 

175### 清理團隊197團隊的共享目錄在工作階段結束時會自動清理,因此沒有單獨的清理步驟。請參閱[架構](#architecture)以了解哪些目錄被移除以及哪些目錄為已恢復的工作階段保留。

176 198 

177完成後,要求主管清理:199<h3 id="enforce-quality-gates-with-hooks">

178 200 使用 hooks 強制執行品質閘門

179```text theme={null}201</h3>

180Clean up the team

181```

182 

183這會移除共享的團隊資源。當主管運行清理時,它會檢查活躍的隊友,如果仍有任何隊友在運行,則失敗,因此請先關閉他們。

184 

185<Warning>

186 始終使用主管進行清理。隊友不應運行清理,因為他們的團隊 context 可能無法正確解析,可能會使資源處於不一致的狀態。

187</Warning>

188 

189### 使用 hooks 強制執行品質閘門

190 202 

191使用 [hooks](/zh-TW/hooks) 在隊友完成工作或任務建立或完成時強制執行規則:203使用 [hooks](/zh-TW/hooks) 在隊友完成工作或任務建立或完成時強制執行規則:

192 204 


194* [`TaskCreated`](/zh-TW/hooks#taskcreated):當任務正在建立時運行。以代碼 2 退出以防止建立並發送反饋。206* [`TaskCreated`](/zh-TW/hooks#taskcreated):當任務正在建立時運行。以代碼 2 退出以防止建立並發送反饋。

195* [`TaskCompleted`](/zh-TW/hooks#taskcompleted):當任務被標記為完成時運行。以代碼 2 退出以防止完成並發送反饋。207* [`TaskCompleted`](/zh-TW/hooks#taskcompleted):當任務被標記為完成時運行。以代碼 2 退出以防止完成並發送反饋。

196 208 

197## Agent teams 如何工作209<h2 id="how-agent-teams-work">

210 Agent teams 如何工作

211</h2>

198 212 

199本節涵蓋 agent teams 背後的架構和機制。如果您想開始使用它們,請參閱上面的[控制您的 agent team](#control-your-agent-team)。213本節涵蓋 agent teams 背後的架構和機制。如果您想開始使用它們,請參閱上面的[控制您的 agent team](#control-your-agent-team)。

200 214 

201### Claude 如何啟動 agent teams215<h3 id="how-claude-starts-agent-teams">

216 Claude 如何啟動 agent teams

217</h3>

202 218 

203Agent teams 有兩種啟動方式219當第一個隊友被生成時,agent team 就會形成,主要工作階段充當主管。隊友有兩種方式被生成

204 220 

205* **您請求一個團隊**:給 Claude 一個受益於並行工作的任務,並明確要求一個 agent team。Claude 根據您的指示建立一個221* **您請求隊友**:給 Claude 一個受益於並行工作的任務,並明確要求隊友。Claude 根據您的指示生成他們

206* **Claude 提議一個團隊**:如果 Claude 確定您的任務將受益於並行工作,它可能會建議建立一個團隊。您在它繼續之前確認。222* **Claude 提議隊友**:如果 Claude 確定您的任務將受益於並行工作,它可能會建議生成隊友。您在它繼續之前確認。

207 223 

208在這兩種情況下,您都保持控制。Claude 不會在沒有您批准的情況下建立團隊224在這兩種情況下,您都保持控制。Claude 不會在沒有您批准的情況下生成隊友

209 225 

210### 架構226<h3 id="architecture">

227 架構

228</h3>

211 229 

212Agent team 由以下部分組成:230Agent team 由以下部分組成:

213 231 

214| 元件 | 角色 |232| 元件 | 角色 |

215| :------------ | :--------------------------------- |233| :------------ | :---------------------------- |

216| **Team lead** | 建立團隊、生成隊友並協調工作的主要 Claude Code 工作階段 |234| **Team lead** | 生成隊友並協調工作的主要 Claude Code 工作階段 |

217| **Teammates** | 各自處理分配任務的獨立 Claude Code 實例 |235| **Teammates** | 各自處理分配任務的獨立 Claude Code 實例 |

218| **Task list** | 隊友認領和完成的共享工作項目列表 |236| **Task list** | 隊友認領和完成的共享工作項目列表 |

219| **Mailbox** | 代理之間通訊的訊息系統 |237| **Mailbox** | 代理之間通訊的訊息系統 |


222 240 

223系統自動管理任務依賴關係。當隊友完成其他任務依賴的任務時,被阻止的任務會自動解除阻止。241系統自動管理任務依賴關係。當隊友完成其他任務依賴的任務時,被阻止的任務會自動解除阻止。

224 242 

225團隊和任務存儲在本地:243團隊和任務存儲在本地,名稱來自工作階段衍生的名稱。名稱是 `session-` 後跟工作階段 ID 的前八個字元

226 244 

227* **Team config**:`~/.claude/teams/{team-name}/config.json`245* **Team config**:`~/.claude/teams/{team-name}/config.json`

228* **Task list**:`~/.claude/tasks/{team-name}/`246* **Task list**:`~/.claude/tasks/{team-name}/`

229 247 

230Claude Code 在您建立團隊時自動生成這兩者,並在隊友加入、閒置或離開時更新它們。團隊配置保存運行時狀態例如工作階段 ID 和 tmux 窗格 ID因此不要手動編輯或預先編寫它:您的變更會在下次狀態更新時被覆蓋248Claude Code 在工作階段啟動時自動生成這兩者,並在隊友加入、閒置或離開時更新它們。團隊配置目錄在工作階段結束時被移除。任務列表目錄在本地保留永遠不會上傳,因此恢復的工作階段會保留其任務。保留期由您已經控制的相同 [`cleanupPeriodDays`](/zh-TW/settings#available-settings) 管理用於工作階段記錄

249 

250團隊配置保存運行時狀態,例如工作階段 ID 和 tmux 窗格 ID,因此不要手動編輯或預先編寫它:您的變更會在下次狀態更新時被覆蓋。

231 251 

232若要定義可重複使用的隊友角色,請改用 [subagent 定義](#use-subagent-definitions-for-teammates)。252若要定義可重複使用的隊友角色,請改用 [subagent 定義](#use-subagent-definitions-for-teammates)。

233 253 


235 255 

236沒有專案級別的團隊配置等效項。您專案目錄中的 `.claude/teams/teams.json` 之類的檔案不被識別為配置;Claude 將其視為普通檔案。256沒有專案級別的團隊配置等效項。您專案目錄中的 `.claude/teams/teams.json` 之類的檔案不被識別為配置;Claude 將其視為普通檔案。

237 257 

238### 為隊友使用 subagent 定義258<h3 id="use-subagent-definitions-for-teammates">

259 為隊友使用 subagent 定義

260</h3>

239 261 

240生成隊友時,您可以參考來自任何 [subagent 範圍](/zh-TW/sub-agents#choose-the-subagent-scope)的 [subagent](/zh-TW/sub-agents) 類型:專案、使用者、plugin 或 CLI 定義。這讓您定義一個角色一次,例如安全審查者或測試執行者,並將其同時重複使用為委派的 subagent 和 agent team 隊友。262生成隊友時,您可以參考來自任何 [subagent 範圍](/zh-TW/sub-agents#choose-the-subagent-scope)的 [subagent](/zh-TW/sub-agents) 類型:專案、使用者、plugin 或 CLI 定義。這讓您定義一個角色一次,例如安全審查者或測試執行者,並將其同時重複使用為委派的 subagent 和 agent team 隊友。

241 263 


251 Subagent 定義中的 `skills` 和 `mcpServers` frontmatter 欄位在該定義作為隊友運行時不適用。隊友從您的專案和使用者設定中載入 skills 和 MCP servers,與常規工作階段相同。273 Subagent 定義中的 `skills` 和 `mcpServers` frontmatter 欄位在該定義作為隊友運行時不適用。隊友從您的專案和使用者設定中載入 skills 和 MCP servers,與常規工作階段相同。

252</Note>274</Note>

253 275 

254### 權限276<h3 id="permissions">

277 權限

278</h3>

255 279 

256隊友開始時具有主管的權限設定。如果主管使用 `--dangerously-skip-permissions` 運行,所有隊友也會這樣做。生成後,您可以更改個別隊友模式,但在生成時無法設定每個隊友的模式。280隊友開始時具有主管的權限設定。如果主管使用 `--dangerously-skip-permissions` 運行,所有隊友也會這樣做。生成後,您可以更改個別隊友模式,但在生成時無法設定每個隊友的模式。

257 281 

258### Context 和通訊282<h3 id="context-and-communication">

283 Context 和通訊

284</h3>

259 285 

260每個隊友都有自己的 context window。生成時,隊友載入與常規工作階段相同的專案 context:CLAUDE.md、MCP servers 和 skills。它還接收來自主管的生成提示。主管的對話歷史不會延續。286每個隊友都有自己的 context window。生成時,隊友載入與常規工作階段相同的專案 context:CLAUDE.md、MCP servers 和 skills。它還接收來自主管的生成提示。主管的對話歷史不會延續。

261 287 


268 294 

269主管在生成隊友時為其分配名稱,任何隊友都可以按該名稱向任何其他隊友傳送訊息。若要獲得可在稍後提示中參考的可預測名稱,請在您的生成指示中告訴主管如何稱呼每個隊友。295主管在生成隊友時為其分配名稱,任何隊友都可以按該名稱向任何其他隊友傳送訊息。若要獲得可在稍後提示中參考的可預測名稱,請在您的生成指示中告訴主管如何稱呼每個隊友。

270 296 

271### Token 使用297<h3 id="token-usage">

298 Token 使用

299</h3>

272 300 

273Agent teams 使用的 tokens 遠多於單個工作階段。每個隊友都有自己的 context window,token 使用量隨活躍隊友數量而增加。對於研究、審查和新功能工作,額外的 tokens 通常是值得的。對於日常任務,單個工作階段更具成本效益。請參閱 [agent team token 成本](/zh-TW/costs#agent-team-token-costs)以了解使用指南。301Agent teams 使用的 tokens 遠多於單個工作階段。每個隊友都有自己的 context window,token 使用量隨活躍隊友數量而增加。對於研究、審查和新功能工作,額外的 tokens 通常是值得的。對於日常任務,單個工作階段更具成本效益。請參閱 [agent team token 成本](/zh-TW/costs#agent-team-token-costs)以了解使用指南。

274 302 

275## 使用案例範例303<h2 id="use-case-examples">

304 使用案例範例

305</h2>

276 306 

277這些範例展示了 agent teams 如何處理並行探索增加價值的任務。307這些範例展示了 agent teams 如何處理並行探索增加價值的任務。

278 308 

279### 運行並行程式碼審查309<h3 id="run-a-parallel-code-review">

310 運行並行程式碼審查

311</h3>

280 312 

281單個審查者傾向於一次專注於一種類型的問題。將審查標準分成獨立領域意味著安全性、效能和測試覆蓋都同時獲得徹底的關注。提示為每個隊友分配一個不同的視角,以便他們不重疊:313單個審查者傾向於一次專注於一種類型的問題。將審查標準分成獨立領域意味著安全性、效能和測試覆蓋都同時獲得徹底的關注。提示為每個隊友分配一個不同的視角,以便他們不重疊:

282 314 

283```text theme={null}315```text theme={null}

284Create an agent team to review PR #142. Spawn three reviewers:316Spawn three teammates to review PR #142:

285- One focused on security implications317- One focused on security implications

286- One checking performance impact318- One checking performance impact

287- One validating test coverage319- One validating test coverage


290 322 

291每個審查者從相同的 PR 工作,但應用不同的篩選器。主管在他們完成後綜合所有三個的發現。323每個審查者從相同的 PR 工作,但應用不同的篩選器。主管在他們完成後綜合所有三個的發現。

292 324 

293### 使用競爭假設進行調查325<h3 id="investigate-with-competing-hypotheses">

326 使用競爭假設進行調查

327</h3>

294 328 

295當根本原因不清楚時,單個代理傾向於找到一個看似合理的解釋並停止尋找。提示透過使隊友明確對抗來對抗這一點:每個隊友的工作不僅是調查自己的理論,還要質疑其他隊友的理論。329當根本原因不清楚時,單個代理傾向於找到一個看似合理的解釋並停止尋找。提示透過使隊友明確對抗來對抗這一點:每個隊友的工作不僅是調查自己的理論,還要質疑其他隊友的理論。

296 330 


305 339 

306有多個獨立調查人員積極嘗試相互反駁,倖存的理論更有可能是實際的根本原因。340有多個獨立調查人員積極嘗試相互反駁,倖存的理論更有可能是實際的根本原因。

307 341 

308## 最佳實踐342<h2 id="best-practices">

343 最佳實踐

344</h2>

309 345 

310### 給隊友足夠的 context346<h3 id="give-teammates-enough-context">

347 給隊友足夠的 context

348</h3>

311 349 

312隊友自動載入專案 context,包括 CLAUDE.md、MCP servers 和 skills,但他們不繼承主管的對話歷史。請參閱[Context 和通訊](#context-and-communication)以了解詳情。在生成提示中包含任務特定的詳情:350隊友自動載入專案 context,包括 CLAUDE.md、MCP servers 和 skills,但他們不繼承主管的對話歷史。請參閱[Context 和通訊](#context-and-communication)以了解詳情。在生成提示中包含任務特定的詳情:

313 351 


318httpOnly cookies. Report any issues with severity ratings."356httpOnly cookies. Report any issues with severity ratings."

319```357```

320 358 

321### 選擇適當的團隊規模359<h3 id="choose-an-appropriate-team-size">

360 選擇適當的團隊規模

361</h3>

322 362 

323隊友數量沒有硬性限制,但實際限制適用:363隊友數量沒有硬性限制,但實際限制適用:

324 364 


332 372 

333只有當工作真正受益於隊友同時工作時才擴展。三個專注的隊友通常優於五個分散的隊友。373只有當工作真正受益於隊友同時工作時才擴展。三個專注的隊友通常優於五個分散的隊友。

334 374 

335### 適當調整任務大小375<h3 id="size-tasks-appropriately">

376 適當調整任務大小

377</h3>

336 378 

337* **太小**:協調開銷超過收益379* **太小**:協調開銷超過收益

338* **太大**:隊友工作時間過長而沒有檢查點,增加浪費努力的風險380* **太大**:隊友工作時間過長而沒有檢查點,增加浪費努力的風險


342 主管將工作分解為任務並自動分配給隊友。如果它沒有建立足夠的任務,要求它將工作分成更小的部分。每個隊友有 5-6 個任務可以保持每個人的生產力,並讓主管在有人卡住時重新分配工作。384 主管將工作分解為任務並自動分配給隊友。如果它沒有建立足夠的任務,要求它將工作分成更小的部分。每個隊友有 5-6 個任務可以保持每個人的生產力,並讓主管在有人卡住時重新分配工作。

343</Tip>385</Tip>

344 386 

345### 等待隊友完成387<h3 id="wait-for-teammates-to-finish">

388 等待隊友完成

389</h3>

346 390 

347有時主管開始自己實施任務,而不是等待隊友。如果您注意到這一點:391有時主管開始自己實施任務,而不是等待隊友。如果您注意到這一點:

348 392 


350Wait for your teammates to complete their tasks before proceeding394Wait for your teammates to complete their tasks before proceeding

351```395```

352 396 

353### 從研究和審查開始397<h3 id="start-with-research-and-review">

398 從研究和審查開始

399</h3>

354 400 

355如果您是 agent teams 的新手,請從具有清晰邊界且不需要編寫程式碼的任務開始:審查 PR、研究庫或調查錯誤。這些任務展示了並行探索的價值,而不會帶來並行實施所帶來的協調挑戰。401如果您是 agent teams 的新手,請從具有清晰邊界且不需要編寫程式碼的任務開始:審查 PR、研究庫或調查錯誤。這些任務展示了並行探索的價值,而不會帶來並行實施所帶來的協調挑戰。

356 402 

357### 避免檔案衝突403<h3 id="avoid-file-conflicts">

404 避免檔案衝突

405</h3>

358 406 

359兩個隊友編輯同一檔案會導致覆蓋。分解工作,使每個隊友擁有不同的檔案集。407兩個隊友編輯同一檔案會導致覆蓋。分解工作,使每個隊友擁有不同的檔案集。

360 408 

361### 監控和引導409<h3 id="monitor-and-steer">

410 監控和引導

411</h3>

362 412 

363檢查隊友的進度,重新定向不起作用的方法,並在發現時綜合發現。讓團隊無人值守運行太長時間會增加浪費努力的風險。413檢查隊友的進度,重新定向不起作用的方法,並在發現時綜合發現。讓團隊無人值守運行太長時間會增加浪費努力的風險。

364 414 

365## 故障排除415<h2 id="troubleshooting">

416 故障排除

417</h2>

366 418 

367### 隊友未出現419<h3 id="teammates-not-appearing">

420 隊友未出現

421</h3>

368 422 

369如果在您要求 Claude 建立團隊後隊友未出現423如果在您要求 Claude 建立隊友後隊友未出現

370 424 

371* 在 in-process 模式中,隊友可能已在運行但不可見。按 Shift+Down 循環瀏覽活躍隊友。425* 在 in-process 模式中,隊友可能已在運行但不可見。按 Shift+Down 循環瀏覽活躍隊友。

372* 檢查您給 Claude 的任務是否足夠複雜以保證團隊。Claude 根據任務決定是否生成隊友。426* 檢查您給 Claude 的任務是否足夠複雜以保證隊友。Claude 根據任務決定是否生成隊友。

373* 如果您明確要求分割窗格,請確保 tmux 已安裝並在您的 PATH 中可用:427* 如果您明確要求分割窗格,請確保 tmux 已安裝並在您的 PATH 中可用:

374 ```bash theme={null}428 ```bash theme={null}

375 which tmux429 which tmux

376 ```430 ```

377* 對於 iTerm2,驗證 `it2` CLI 已安裝且 Python API 在 iTerm2 偏好設定中啟用。431* 對於 iTerm2,驗證 `it2` CLI 已安裝且 Python API 在 iTerm2 偏好設定中啟用。

378 432 

379### 過多權限提示433<h3 id="too-many-permission-prompts">

434 過多權限提示

435</h3>

380 436 

381隊友權限請求冒泡到主管,這可能會造成摩擦。在生成隊友之前在 [permission settings](/zh-TW/permissions) 中預批准常見操作以減少中斷。437隊友權限請求冒泡到主管,這可能會造成摩擦。在生成隊友之前在 [permission settings](/zh-TW/permissions) 中預批准常見操作以減少中斷。

382 438 

383### 隊友在錯誤時停止439<h3 id="teammates-stopping-on-errors">

440 隊友在錯誤時停止

441</h3>

384 442 

385隊友可能在遇到錯誤後停止,而不是恢復。使用 in-process 模式中的 Shift+Down 或分割模式中的點擊窗格檢查其輸出,然後:443隊友可能在遇到錯誤後停止,而不是恢復。使用 in-process 模式中的 Shift+Down 或分割模式中的點擊窗格檢查其輸出,然後:

386 444 

387* 直接給他們額外的指示445* 直接給他們額外的指示

388* 生成替換隊友以繼續工作446* 生成替換隊友以繼續工作

389 447 

390### 主管在工作完成前關閉448<h3 id="lead-shuts-down-before-work-is-done">

449 主管在工作完成前關閉

450</h3>

391 451 

392主管可能在所有任務實際完成之前決定團隊已完成。如果發生這種情況,告訴它繼續。您也可以告訴主管在繼續之前等待隊友完成,如果它開始做工作而不是委派。452主管可能在所有任務實際完成之前決定團隊已完成。如果發生這種情況,告訴它繼續。您也可以告訴主管在繼續之前等待隊友完成,如果它開始做工作而不是委派。

393 453 

394### 孤立的 tmux 工作階段454<h3 id="orphaned-tmux-sessions">

455 孤立的 tmux 工作階段

456</h3>

395 457 

396如果 tmux 工作階段在團隊結束後仍然存在,它可能未被完全清理。列出工作階段並殺死由團隊建立的工作階段:458如果 tmux 工作階段在 Claude Code 工作階段結束後仍然存在,它可能未被完全清理。列出工作階段並殺死由團隊建立的工作階段:

397 459 

398```bash theme={null}460```bash theme={null}

399tmux ls461tmux ls

400tmux kill-session -t <session-name>462tmux kill-session -t <session-name>

401```463```

402 464 

403## 限制465<h2 id="limitations">

466 限制

467</h2>

404 468 

405Agent teams 是實驗性的。要注意的目前限制:469Agent teams 是實驗性的。要注意的目前限制:

406 470 

407* **In-process 隊友沒有工作階段恢復**:`/resume` 和 `/rewind` 不會恢復 in-process 隊友。恢復工作階段後,主管可能會嘗試向不再存在的隊友傳送訊息。如果發生這種情況,告訴主管生成新隊友。471* **沒有 in-process 隊友的工作階段恢復**:`/resume` 和 `/rewind` 不會恢復 in-process 隊友。恢復工作階段後,主管可能會嘗試向不再存在的隊友傳送訊息。如果發生這種情況,告訴主管生成新隊友。

408* **任務狀態可能滯後**:隊友有時無法將任務標記為已完成,這會阻止依賴任務。如果任務似乎卡住,請檢查工作是否實際完成並手動更新任務狀態或告訴主管推動隊友。472* **任務狀態可能滯後**:隊友有時無法將任務標記為已完成,這會阻止依賴任務。如果任務似乎卡住,請檢查工作是否實際完成並手動更新任務狀態或告訴主管推動隊友。

409* **關閉可能很慢**:隊友在關閉前完成其目前請求或工具呼叫,這可能需要時間。473* **關閉可能很慢**:隊友在關閉前完成其目前請求或工具呼叫,這可能需要時間。

410* **每個工作階段一個團隊**:主管一次只能管理一個團隊在啟動新團隊之前清理目前團隊474* **每個工作階段一個團隊**:一個工作階段恰好有一個團隊,範圍限於該工作階段您無法建立其他具名團隊或在工作階段之間共享團隊

411* **沒有嵌套團隊**:隊友無法生成自己的團隊或隊友。只有主管可以管理團隊。475* **沒有嵌套團隊**:隊友無法生成自己的隊友。只有主管可以管理團隊。

412* **主管是固定的**:建立團隊的工作階段在其生命週期內是主管。您無法將隊友提升為主管或轉移領導權。476* **主管是固定的**:主要工作階段在其生命週期內是主管。您無法將隊友提升為主管或轉移領導權。

413* **權限在生成時設定**:所有隊友開始時具有主管的權限模式。您可以在生成後更改個別隊友模式,但在生成時無法設定每個隊友的模式。477* **權限在生成時設定**:所有隊友開始時具有主管的權限模式。您可以在生成後更改個別隊友模式,但在生成時無法設定每個隊友的模式。

414* **分割窗格需要 tmux 或 iTerm2**:預設 in-process 模式在任何終端中工作。VS Code 的整合終端、Windows Terminal 或 Ghostty 不支援分割窗格模式。478* **分割窗格需要 tmux 或 iTerm2**:預設 in-process 模式在任何終端中工作。VS Code 的整合終端、Windows Terminal 或 Ghostty 不支援分割窗格模式。

415 479 


417 **`CLAUDE.md` 正常工作**:隊友從其工作目錄讀取 `CLAUDE.md` 檔案。使用此為所有隊友提供專案特定的指導。481 **`CLAUDE.md` 正常工作**:隊友從其工作目錄讀取 `CLAUDE.md` 檔案。使用此為所有隊友提供專案特定的指導。

418</Tip>482</Tip>

419 483 

420## 後續步驟484<h2 id="next-steps">

485 後續步驟

486</h2>

421 487 

422探索並行工作和委派的相關方法:488探索並行工作和委派的相關方法:

423 489 

agent-view.md +11 −4

Details

143 143 

144每行中的單行摘要由 [Haiku-class 模型](/zh-TW/model-config) 生成,因此該行可以告訴您工作階段正在做什麼、需要什麼或生成了什麼,無需開啟記錄。當工作階段主動工作時,摘要最多每 15 秒刷新一次,加上每個回合結束時刷新一次。144每行中的單行摘要由 [Haiku-class 模型](/zh-TW/model-config) 生成,因此該行可以告訴您工作階段正在做什麼、需要什麼或生成了什麼,無需開啟記錄。當工作階段主動工作時,摘要最多每 15 秒刷新一次,加上每個回合結束時刷新一次。

145 145 

146從 v2.1.161 開始,當工作階段執行兩個或更多平行工作項目時,例如 subagents、背景 shell 命令或監視器,`done/total` 計數(例如 `2/5`)會出現在摘要文字之前。

147 

146每次刷新都是通過您的正常提供者的一個簡短 Haiku-class 請求,按照與工作階段本身相同的 [資料使用條款](/zh-TW/data-usage) 計費和處理。在第三方提供者(例如 Bedrock、Vertex AI、Microsoft Foundry 和自訂閘道)上,當未配置 Haiku 模型時,請求會回退到工作階段的主要模型。設定 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/zh-TW/model-config#environment-variables) 以在這些提供者上為這些摘要選擇模型。148每次刷新都是通過您的正常提供者的一個簡短 Haiku-class 請求,按照與工作階段本身相同的 [資料使用條款](/zh-TW/data-usage) 計費和處理。在第三方提供者(例如 Bedrock、Vertex AI、Microsoft Foundry 和自訂閘道)上,當未配置 Haiku 模型時,請求會回退到工作階段的主要模型。設定 [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/zh-TW/model-config#environment-variables) 以在這些提供者上為這些摘要選擇模型。

147 149 

148<h3 id="pull-request-status">150<h3 id="pull-request-status">


170 172 

171在選定的行上按 `Space` 開啟查看面板。它顯示工作階段需要您提供什麼、其最近的輸出以及它開啟的任何拉取請求。大多數時候這就足夠了,您永遠不需要開啟完整記錄。173在選定的行上按 `Space` 開啟查看面板。它顯示工作階段需要您提供什麼、其最近的輸出以及它開啟的任何拉取請求。大多數時候這就足夠了,您永遠不需要開啟完整記錄。

172 174 

175從 v2.1.161 開始,當工作階段執行平行工作項目時,面板也會命名執行時間最長的項目及其執行時間,因此您可以看到工作階段在等待什麼,而無需附加。

176 

173在查看面板中輸入回覆並按 `Enter` 將其發送到該工作階段。當工作階段詢問多選問題時,查看面板顯示選項,您可以按數字鍵選擇一個。對於其他被阻止的工作階段,按 `Tab` 用建議的回覆填充輸入,您可以在發送前編輯。使用 `!` 前綴回覆以發送 Bash 命令。177在查看面板中輸入回覆並按 `Enter` 將其發送到該工作階段。當工作階段詢問多選問題時,查看面板顯示選項,您可以按數字鍵選擇一個。對於其他被阻止的工作階段,按 `Tab` 用建議的回覆填充輸入,您可以在發送前編輯。使用 `!` 前綴回覆以發送 Bash 命令。

174 178 

175啟用 [語音聽寫](/zh-TW/voice-dictation) 後,在回覆輸入有焦點時按住或點擊您的推送通話鍵以聽寫回覆,而不是輸入。同樣的方式也適用於 agent view 底部的分派輸入。179啟用 [語音聽寫](/zh-TW/voice-dictation) 後,在回覆輸入有焦點時按住或點擊您的推送通話鍵以聽寫回覆,而不是輸入。同樣的方式也適用於 agent view 底部的分派輸入。


224| `a:<name>` | 執行命名代理的工作階段 |228| `a:<name>` | 執行命名代理的工作階段 |

225| `s:<state>` | 給定狀態中的工作階段,例如 `s:working`。也接受 `s:blocked` 表示等待您的所有工作階段 |229| `s:<state>` | 給定狀態中的工作階段,例如 `s:working`。也接受 `s:blocked` 表示等待您的所有工作階段 |

226| `#<number>` 或 PR URL | 在該拉取請求上工作的工作階段 |230| `#<number>` 或 PR URL | 在該拉取請求上工作的工作階段 |

231| 任何其他 URL | 其第一個提示包含該 URL 的工作階段 |

227 232 

228<h3 id="keyboard-shortcuts">233<h3 id="keyboard-shortcuts">

229 快捷鍵234 快捷鍵


478每個背景工作階段都有一個短 ID,您可以從 shell 使用。當您使用 `claude --bg` 啟動工作階段時會列印該 ID,每個工作階段的 ID 是其在 `~/.claude/jobs/` 下的目錄名稱。這些命令對於指令碼編寫或當您不想開啟 agent view 時很有用。483每個背景工作階段都有一個短 ID,您可以從 shell 使用。當您使用 `claude --bg` 啟動工作階段時會列印該 ID,每個工作階段的 ID 是其在 `~/.claude/jobs/` 下的目錄名稱。這些命令對於指令碼編寫或當您不想開啟 agent view 時很有用。

479 484 

480| 命令 | 目的 |485| 命令 | 目的 |

481| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |486| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

482| `claude agents` | 開啟 agent view |487| `claude agents` | 開啟 agent view |

483| `claude agents --cwd <path>` | 開啟 agent view,範圍限定於在 `<path>` 下啟動的工作階段 |488| `claude agents --cwd <path>` | 開啟 agent view,範圍限定於在 `<path>` 下啟動的工作階段 |

484| `claude agents --json` | 將即時工作階段列印為 JSON 陣列並結束。每個項目都有 `pid``cwd`、`kind` 和 `startedAt`,加上設定時的 `sessionId`、`name` 和 `status`。與 `--cwd <path>` 結合以篩選 |489| `claude agents --json` | 將即時工作階段列印為 JSON 陣列並結束:每個即時工作階段,加上仍在執行或被阻止的背景工作階段,即使其程序已結束新增 `--all` 以同時包含已完成的背景工作階段。每個項目都有 `cwd`、`kind` 和 `startedAt`。背景項目也有 `id`(可與 `claude attach`/`logs`/`stop` 搭配使用)和 `state`:`working`、`blocked`、`done`、`failed` 或 `stopped` 之一。`pid` 和 `status` 僅在程序執行時出現,加上當 status 為 `waiting` 時的 `waitingFor`,其說明工作階段被阻止的原因,例如 `permission prompt` 或 `input needed`;`sessionId` 和 `name` 在設定時出現。與 `--cwd <path>` 結合以篩選 |

485| `claude attach <id>` | 在此終端中附加到工作階段 |490| `claude attach <id>` | 在此終端中附加到工作階段 |

486| `claude logs <id>` | 列印工作階段的最近輸出 |491| `claude logs <id>` | 列印工作階段的最近輸出 |

487| `claude stop <id>` | 停止工作階段。也接受 `claude kill` |492| `claude stop <id>` | 停止工作階段。也接受 `claude kill` |


532 537 

533要在不直接讀取檔案的情況下檢查此狀態,請執行 `claude daemon status`。它報告監督程序是否可達、其程序 ID 和版本、socket 目錄,以及有多少背景工作階段處於活動狀態。`/doctor` 包含相同檢查的摘要。在 Windows 上,當 daemon 的 pipe-key 檔案被鎖定或無法讀取時,`claude daemon status` 會顯示基礎檔案錯誤,而不是報告通用連接失敗。538要在不直接讀取檔案的情況下檢查此狀態,請執行 `claude daemon status`。它報告監督程序是否可達、其程序 ID 和版本、socket 目錄,以及有多少背景工作階段處於活動狀態。`/doctor` 包含相同檢查的摘要。在 Windows 上,當 daemon 的 pipe-key 檔案被鎖定或無法讀取時,`claude daemon status` 會顯示基礎檔案錯誤,而不是報告通用連接失敗。

534 539 

540該命令也會在執行中的監督程序版本與您叫用的 `claude` 版本不同時發出警告,這會在監督程序尚未重新啟動到新版本的更新後發生。警告會顯示兩個版本,並告訴您執行 `claude daemon stop --any` 以採用新版本。當 Claude Code 安裝為作業系統服務時,建議的命令是 `claude daemon stop`,不帶該旗標。

541 

535<h3 id="turn-off-agent-view">542<h3 id="turn-off-agent-view">

536 關閉 agent view543 關閉 agent view

537</h3>544</h3>


556 563 

557在您分派第一個工作階段之前,agent view 會顯示簡短的入門提示,並在工作階段清單的位置顯示範例提示。在底部的輸入框中輸入提示並按 `Enter` 以分派您的第一個工作階段。564在您分派第一個工作階段之前,agent view 會顯示簡短的入門提示,並在工作階段清單的位置顯示範例提示。在底部的輸入框中輸入提示並按 `Enter` 以分派您的第一個工作階段。

558 565 

559<h3 id="cannot-open-agents-because-background-tasks-are-running">566<h3 id="cannot-open-agents-because-work-is-running-in-the-background">

560 無法開啟代理,因為背景工作正在執行567 無法開啟代理,因為背景工作正在執行

561</h3>568</h3>

562 569 

563如果按 `←` 將目前工作階段放在背景中顯示 `Cannot open agents — N background task(s) running`,工作階段有進行中的工作,例如子代理、動態工作流程或背景 shell 命令,快捷鍵不會無聲地放棄它。執行 `/tasks` 以查看正在執行的內容,然後執行 `/bg` 以確認放棄它們。請參閱[從工作階段內部](#from-inside-a-session)以了解背景化時哪些會轉移,哪些不會。570如果按 `←` 將目前工作階段放在背景中顯示 `Cannot open agents — N still running in the background`,工作階段有進行中的工作,例如子代理、動態工作流程或背景 shell 命令,快捷鍵不會無聲地放棄它。執行 `/tasks` 以查看正在執行的內容,然後執行 `/bg` 以確認放棄它們。請參閱[從工作階段內部](#from-inside-a-session)以了解背景化時哪些會轉移,哪些不會。

564 571 

565<h3 id="prompt-rejected-as-too-short">572<h3 id="prompt-rejected-as-too-short">

566 提示被拒絕為過短573 提示被拒絕為過短

agents.md +2 −2

Details

9[子代理](/zh-TW/sub-agents)、[代理視圖](/zh-TW/agent-view)、[代理團隊](/zh-TW/agent-teams) 和 [動態工作流](/zh-TW/workflows) 各自以不同的方式並行化工作。正確的選擇取決於您是否想要自己留在每個對話中、交付任務並稍後檢查,或讓 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| [動態工作流](/zh-TW/workflows) | 一個運行許多子代理並檢查其結果的腳本,用於一個太大而無法一次協調的工作。研究預覽 | 一個任務對於少數子代理來說太大了:一個代碼庫範圍的審計、一個 500 文件遷移或需要對抗性驗證的研究 |16| [動態工作流](/zh-TW/workflows) | 一個運行許多子代理並檢查其結果的腳本,用於一個太大而無法一次協調的工作或需要多於單一次通過的工作 | 一個任務對於少數子代理來說太大了,或您想要驗證發現相互對抗:一個代碼庫範圍的審計、一個 500 文件遷移、交叉檢查的研究,或從多個角度起草的計劃 |

17 17 

18在每種方法中,工作人員都是 Claude 會話。要涉及不同的工具,請將其作為 [MCP server](/zh-TW/mcp) 公開給 Claude。18在每種方法中,工作人員都是 Claude 會話。要涉及不同的工具,請將其作為 [MCP server](/zh-TW/mcp) 公開給 Claude。

19 19 

Details

6 6 

7> 了解如何透過 Amazon Bedrock 設定 Claude Code,包括設定、IAM 設定和故障排除。7> 了解如何透過 Amazon Bedrock 設定 Claude Code,包括設定、IAM 設定和故障排除。

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<ContactSalesCard surface="bedrock" />

80 

9<h2 id="prerequisites">81<h2 id="prerequisites">

10 先決條件82 先決條件

11</h2>83</h2>


141 "Credentials": {213 "Credentials": {

142 "AccessKeyId": "value",214 "AccessKeyId": "value",

143 "SecretAccessKey": "value",215 "SecretAccessKey": "value",

144 "SessionToken": "value"216 "SessionToken": "value",

217 "Expiration": "2026-01-01T00:00:00Z"

145 }218 }

146}219}

147```220```

148 221 

222`Expiration` 是選用的。{/* min-version: 2.1.176 */}自 Claude Code v2.1.176 起,當命令傳回有效的 ISO 8601 `Expiration` 時,Claude Code 會快取認證直到該時間前五分鐘。沒有它,或在較早版本上,認證會快取一小時。

223 

149<h3 id="3-configure-claude-code">224<h3 id="3-configure-claude-code">

150 3. 設定 Claude Code225 3. 設定 Claude Code

151</h3>226</h3>


155```bash theme={null}230```bash theme={null}

156# 啟用 Bedrock 整合231# 啟用 Bedrock 整合

157export CLAUDE_CODE_USE_BEDROCK=1232export CLAUDE_CODE_USE_BEDROCK=1

158export AWS_REGION=us-east-1 # 或您偏好的區域233export AWS_REGION=us-east-1 # 如果您的 AWS 設定檔已設定區域,則為選用;如果您的設定檔沒有區域,則為必需

159 234 

160# 選用:覆寫小型/快速模型 (Bedrock 和 Mantle) 的 AWS 區域。235# 選用:覆寫小型/快速模型 (Bedrock 和 Mantle) 的 AWS 區域。

161# 在 Bedrock 上,如果沒有設定 ANTHROPIC_DEFAULT_HAIKU_MODEL236# 在 Bedrock 上,如果沒有設定 ANTHROPIC_DEFAULT_HAIKU_MODEL


168 243 

169為 Claude Code 啟用 Bedrock 時,請記住以下事項:244為 Claude Code 啟用 Bedrock 時,請記住以下事項:

170 245 

171* `AWS_REGION` 是必需的環境變數。Claude Code 不會從 `.aws` 設定檔讀取此設定。246* {/* min-version: 2.1.172 */}自 v2.1.172 起,您只需設定 `AWS_REGION` 以覆寫您的 AWS 設定檔的區域,或在您的設定檔沒有區域時設定。Claude Code 按此順序解析區域:

247 

248 * `AWS_REGION`

249 * `AWS_DEFAULT_REGION`

250 * 在您的作用中 AWS 設定檔上設定的 `region`,首先從 AWS 共用認證檔案讀取,然後從共用設定檔讀取,符合 AWS SDK 優先順序

251 * `us-east-1`

252 

253 作用中設定檔是 `AWS_PROFILE`(如果已設定),否則為 `default`。設定 `AWS_SHARED_CREDENTIALS_FILE` 或 `AWS_CONFIG_FILE` 以指向非預設檔案路徑。執行 `/status` 以查看已解析的區域。當區域來自您的 AWS 設定檔或預設回退時,`/status` 也會記錄來源。在 v2.1.171 及更早版本上,Claude Code 不會讀取 AWS 設定檔,因此請明確設定 `AWS_REGION`。

172* 使用 Bedrock 時,`/logout` 命令無法使用,因為驗證是透過 AWS 認證處理的。254* 使用 Bedrock 時,`/logout` 命令無法使用,因為驗證是透過 AWS 認證處理的。

173* WebSearch 工具在 Bedrock 上無法使用。請參閱 [WebSearch 工具行為](/zh-TW/tools-reference#websearch-tool-behavior)。255* WebSearch 工具在 Bedrock 上無法使用。請參閱 [WebSearch 工具行為](/zh-TW/tools-reference#websearch-tool-behavior)。

174* 您可以使用設定檔來設定環境變數,例如 `AWS_PROFILE`,您不想將其洩露給其他程序。請參閱[設定](/zh-TW/settings)以取得更多資訊。256* 您可以使用設定檔來設定環境變數,例如 `AWS_PROFILE`,您不想將其洩露給其他程序。請參閱[設定](/zh-TW/settings)以取得更多資訊。


178</h3>260</h3>

179 261 

180<Warning>262<Warning>

181 在部署給多個使用者時固定特定的模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為最新版本,當 Anthropic 發佈更新時,該版本可能在您的 Bedrock 帳戶中尚不可用。Claude Code 在啟動時會在最新版本不可用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。263 在部署給多個使用者時固定特定的模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為 Claude Code 針對 Bedrock 的內建預設值,該預設值可能落後於最新版本,且可能在您的帳戶中尚不可用。Claude Code 在啟動時會在預設值無法使用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。

182</Warning>264</Warning>

183 265 

184將這些環境變數設定為特定的 Bedrock 模型 ID。266將這些環境變數設定為特定的 Bedrock 模型 ID。


191export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'273export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

192```274```

193 275 

194這些變數使用跨區域推論設定檔 ID(帶有 `us.` 前綴)。如果您使用不同的區域前綴或應用程式推論設定檔,請相應調整。如需目前和舊版模型 ID,請參閱[模型概觀](https://platform.claude.com/docs/en/about-claude/models/overview)。請參閱[模型設定](/zh-TW/model-config#pin-models-for-third-party-deployments)以取得完整的環境變數清單。276這些變數使用跨區域推論設定檔 ID(帶有 `us.` 前綴)。如果您使用不同的區域前綴或應用程式推論設定檔,請相應調整。在 AWS GovCloud 區域中,使用 `us-gov.` 前綴。如需目前和舊版模型 ID,請參閱[模型概觀](https://platform.claude.com/docs/en/about-claude/models/overview)。請參閱[模型設定](/zh-TW/model-config#pin-models-for-third-party-deployments)以取得完整的環境變數清單。

195 277 

196Claude Code 使用這些預設模型,當未設定固定變數時:278Claude Code 使用這些預設模型,當未設定固定變數時:

197 279 


366export AWS_REGION=us-east-1448export AWS_REGION=us-east-1

367```449```

368 450 

369Claude Code 從 `AWS_REGION` 構造端點 URL。若要為自訂端點或閘道覆寫它,請設定 `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`。451Claude Code 從 AWS 區域構造端點 URL。{/* min-version: 2.1.172 */}自 v2.1.172 起,區域的解析優先順序與[上面的 Bedrock](#3-configure-claude-code) 相同;較早的版本僅使用 `AWS_REGION`。若要為自訂端點或閘道覆寫 URL,請設定 `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`。

370 452 

371在 Claude Code 內執行 `/status` 以確認。當 Mantle 處於作用中時,提供者行會顯示 `Amazon Bedrock (Mantle)`。453在 Claude Code 內執行 `/status` 以確認。當 Mantle 處於作用中時,提供者行會顯示 `Amazon Bedrock (Mantle)`。

372 454 

Details

136* **重新整理間隔**:根據預設,`apiKeyHelper` 在 5 分鐘後或在 HTTP 401 回應時呼叫。設定 `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` 環境變數以自訂重新整理間隔。136* **重新整理間隔**:根據預設,`apiKeyHelper` 在 5 分鐘後或在 HTTP 401 回應時呼叫。設定 `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` 環境變數以自訂重新整理間隔。

137* **緩慢協助程式通知**:如果 `apiKeyHelper` 花費超過 10 秒的時間傳回金鑰,Claude Code 會在提示符列中顯示警告通知,顯示經過的時間。如果您經常看到此通知,請檢查您的認證指令碼是否可以最佳化。137* **緩慢協助程式通知**:如果 `apiKeyHelper` 花費超過 10 秒的時間傳回金鑰,Claude Code 會在提示符列中顯示警告通知,顯示經過的時間。如果您經常看到此通知,請檢查您的認證指令碼是否可以最佳化。

138 138 

139`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 金鑰環境變數。

140 140 

141<h3 id="authentication-precedence">141<h3 id="authentication-precedence">

142 驗證優先順序142 驗證優先順序

Details

6 6 

7> 告訴自動模式分類器您的組織信任哪些儲存庫、儲存桶和網域。設定環境上下文、覆蓋預設的阻止和允許規則,並使用自動模式 CLI 子命令檢查您的有效設定。7> 告訴自動模式分類器您的組織信任哪些儲存庫、儲存桶和網域。設定環境上下文、覆蓋預設的阻止和允許規則,並使用自動模式 CLI 子命令檢查您的有效設定。

8 8 

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 自動模式可在 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 方案上的管理員啟用。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 方案上的管理員啟用。


33對於跨專案應用的規則,例如受信任的基礎設施或組織範圍的拒絕規則,請使用 `autoMode` 設定區塊。分類器從以下範圍讀取 `autoMode`:33對於跨專案應用的規則,例如受信任的基礎設施或組織範圍的拒絕規則,請使用 `autoMode` 設定區塊。分類器從以下範圍讀取 `autoMode`:

34 34 

35| 範圍 | 檔案 | 用途 |35| 範圍 | 檔案 | 用途 |

36| :------------------------- | :------------------------------------- | :------------------------ |36| :------------------------- | :------------------------------------- | :---------------- |

37| 一個開發人員 | `~/.claude/settings.json` | 個人受信任的基礎設施 |37| 一個開發人員 | `~/.claude/settings.json` | 個人受信任的基礎設施 |

38| 一個專案,一個開發人員 | `.claude/settings.local.json` | 每個專案的受信任儲存桶或服務,gitignored |38| 一個專案,一個開發人員 | `.claude/settings.local.json` | 每個專案的受信任儲存桶或服務 |

39| 組織範圍 | [受管設定](/zh-TW/server-managed-settings) | 分散到所有開發人員的受信任基礎設施 |39| 組織範圍 | [受管設定](/zh-TW/server-managed-settings) | 分散到所有開發人員的受信任基礎設施 |

40| `--settings` 旗標或 Agent SDK | 內聯 JSON | 自動化的每次呼叫覆蓋 |40| `--settings` 旗標或 Agent SDK | 內聯 JSON | 自動化的每次呼叫覆蓋 |

41 41 

champion-kit.md +14 −13

Details

78下面的例子帖子說明了語氣和長度;適應它們而不是逐字複製。78下面的例子帖子說明了語氣和長度;適應它們而不是逐字複製。

79 79 

80```text theme={null}80```text theme={null}

81今天學到 @-提及目錄有效。我將其指向 @src/components/ 並詢問哪些81今天學到 @-提及目錄有效。我將其指向

82@src/components/ 並詢問哪些

82組件缺少測試,它發現了我忘記的兩個。83組件缺少測試,它發現了我忘記的兩個。

83```84```

84 85 


135 擴大圈子136 擴大圈子

136</h2>137</h2>

137 138 

138目標不是建立一個程序或擁有推出。它是建立少量輕量級習慣,以便即使你停止主動推動它,動力也能繼續。當頻道中的問題被除你之外的人回答時,該角色已經完成了它的工作。139目標不是建立一個程式或擁有推出。它是建立少量輕量級習慣,以便即使你停止主動推動它,動力也能繼續。當頻道中的問題被除你之外的人回答時,該角色已經完成了它的工作。

139 140 

140<h3 id="patterns-that-tend-to-work">141<h3 id="patterns-that-tend-to-work">

141 傾向於有效的模式142 傾向於有效的模式


143 144 

144| 模式 | 如何運行它 | 所需努力 |145| 模式 | 如何運行它 | 所需努力 |

145| ------------- | ------------------------------------------------------------------------------------------------------------- | ------------ |146| ------------- | ------------------------------------------------------------------------------------------------------------- | ------------ |

146| 專用頻道 | 創建一個 `#claude-code` 頻道(或現有頻道中的定期線程),固定 [Quickstart](/zh-TW/quickstart) 連結和一個強大的例子,並公開回答問題,以便每個答案都使觀看的每個人受益。 | 大約五分鐘設置,然後環境 |147| 專用頻道 | 創建一個 `#claude-code` 頻道(或現有頻道中的定期討論串),釘選 [Quickstart](/zh-TW/quickstart) 連結和一個強大的例子,並公開回答問題,以便每個答案都使觀看的每個人受益。 | 大約五分鐘設置,然後環境 |

147| 每週展示和講述線程 | 每個星期五,發佈"Claude 本週幫助你做了什麼?"不需要準備、幻燈片或會議;截圖和簡短描述就足夠了。 | 每週約兩分鐘 |148| 每週展示和講述討論串 | 每個星期五,發佈Claude 本週幫助你做了什麼?不需要準備、幻燈片或會議;截圖和簡短描述就足夠了。 | 每週約兩分鐘 |

148| 分享自定義技能 | 發佈你最有用的 `.claude/skills/<name>/SKILL.md` 文件,例如一個 `/ship` 技能,在提交前運行測試和 lint,帶有一行描述。因為技能是純 Markdown,同事可以立即採用它們。 | 每個技能約五分鐘 |149| 分享自訂技能 | 發佈你最有用的 `.claude/skills/<name>/SKILL.md` 檔案,例如一個 `/ship` 技能,在提交前運行測試和 lint,帶有一行描述。因為技能是純 Markdown,同事可以立即採用它們。 | 每個技能約五分鐘 |

149| 從你自己的使用生成設置指南 | 在你花費真實時間的項目中運行 `/team-onboarding`。Claude 掃描你最近的會話、命令和 MCP 服務器然後生成一個新隊友可以粘貼為他們的第一條消息以重放你的設置的指南在頻道中固定它 | 約兩分鐘 |150| 從你自己的使用生成設定指南 | 在你花費真實時間的專案中運行 `/team-onboarding`。Claude 掃描你最近的工作階段、命令和 MCP 伺服器然後生成一個新隊友可以貼上為他們的第一條訊息以重放你的設定的指南在頻道中釘選它 | 約兩分鐘 |

150| 配對第一個任務 | 為任何開始的人提供一個十五分鐘的配對會話他們自己代碼上的一個成功結果比任何演示都更有說服力 | 每人約十五分鐘 |151| 配對第一個任務 | 為任何開始的人提供一個十五分鐘的配對工作階段他們自己程式碼上的一個成功結果比任何簡報都更有說服力 | 每人約十五分鐘 |

151| 識別下一個倡導者 | 問你最多問題的同事通常已經準備好承擔這個角色。轉發他們這個頁面並在你之間分配頻道責任。 | 可忽略不計 |152| 識別下一個倡導者 | 問你最多問題的同事通常已經準備好承擔這個角色。轉發他們這個頁面並在你之間分配頻道責任。 | 可忽略不計 |

152 153 

153<h3 id="thirty-day-playbook">154<h3 id="thirty-day-playbook">


158 159 

159<Steps>160<Steps>

160 <Step title="第 1 週:播種頻道">161 <Step title="第 1 週:播種頻道">

161 創建頻道,固定 [Quickstart](/zh-TW/quickstart),並發佈兩三個你自己的例子,包括提示。162 創建頻道,釘選 [Quickstart](/zh-TW/quickstart),並發佈兩三個你自己的例子,包括提示。

162 163 

163 **表明它有效的信號:** 幾個同事做出反應或回覆,至少在頻道中提出一個問題。164 **表明它有效的信號:** 幾個同事做出反應或回覆,至少在頻道中提出一個問題。

164 </Step>165 </Step>

165 166 

166 <Step title="第 2 週:開始節奏">167 <Step title="第 2 週:開始節奏">

167 開始每週展示和講述線程,公開回答每個問題,並分享一個自定義技能或 `CLAUDE.md` 片段。168 開始每週展示和講述討論串,公開回答每個問題,並分享一個自訂技能或 `CLAUDE.md` 片段。

168 169 

169 **表明它有效的信號:** 除你之外的人發佈他們自己的例子。170 **表明它有效的信號:** 除你之外的人發佈他們自己的例子。

170 </Step>171 </Step>

171 172 

172 <Step title="第 3 週:配對和整合">173 <Step title="第 3 週:配對和整合">

173 提供兩三個短配對會話並將最常見的問題和答案整合到一個固定的常見問題消息中174 提供兩三個短配對工作階段並將最常見的問題和答案整合到一個釘選的常見問題訊息中

174 175 

175 **表明它有效的信號:** 你看到重複使用,同樣的同事返回而不是嘗試一次然後停止。176 **表明它有效的信號:** 你看到重複使用,同樣的同事返回而不是嘗試一次然後停止。

176 </Step>177 </Step>


186 當有人想深入時187 當有人想深入時

187</h3>188</h3>

188 189 

189你是溫暖的介紹而不是入職計劃。當同事從"我應該嘗試這個嗎"進入"我如何有效地使用它"時,指向他們 [Quickstart](/zh-TW/quickstart) 和 [Common workflows](/zh-TW/common-workflows) 頁面。它們包含涵蓋真正有用但難以自己發現的功能的簡短部分。190你是溫暖的介紹而不是入職計劃。當同事從我應該嘗試這個嗎進入我如何有效地使用它時,指向他們 [Quickstart](/zh-TW/quickstart) 和 [Common workflows](/zh-TW/common-workflows) 頁面。它們包含涵蓋真正有用但難以自己發現的功能的簡短部分。

190 191 

191<h2 id="respond-to-common-concerns">192<h2 id="respond-to-common-concerns">

192 回應常見疑慮193 回應常見疑慮


211| 技術 | 如何應用它 |212| 技術 | 如何應用它 |

212| ---------- | ---------------------------------------------------------------------------------------------- |213| ---------- | ---------------------------------------------------------------------------------------------- |

213| 提供正確的上下文 | 使用 `@file` 或 `@directory/` 參考,或直接粘貼錯誤或日誌輸出。提供相關上下文比精心製作的提示更有效。 |214| 提供正確的上下文 | 使用 `@file` 或 `@directory/` 參考,或直接粘貼錯誤或日誌輸出。提供相關上下文比精心製作的提示更有效。 |

214| 在編輯前審查計劃 | 按 `Shift+Tab` 進入 plan mode。Claude 將在執行之前描述預期的更改以供你批准。 |215| 在編輯前審查計劃 | 按 `Shift+Tab` 進入 Plan Mode。Claude 將在執行之前描述預期的更改以供你批准。 |

215| 教它你的存儲庫 | 運行 `/init` 生成 `CLAUDE.md` 文件,然後添加你的約定、測試命令和任何不應修改的目錄。見 [Memory](/zh-TW/memory)。 |216| 教它你的存儲庫 | 運行 `/init` 生成 `CLAUDE.md` 文件,然後添加你的約定、測試命令和任何不應修改的目錄。見 [Memory](/zh-TW/memory)。 |

216| 重複使用工作流程 | 在 `.claude/skills/<name>/` 中保存 `SKILL.md` 文件以創建整個團隊可以使用的 `/name` 技能。見 [Skills](/zh-TW/skills)。 |217| 重複使用工作流程 | 在 `.claude/skills/<name>/` 中保存 `SKILL.md` 文件以創建整個團隊可以使用的 `/name` 技能。見 [Skills](/zh-TW/skills)。 |

217| 在長任務期間保持知情 | 配置一個 Stop hook 以在長時間運行的任務完成時收到桌面通知。見 [Hooks](/zh-TW/hooks-guide)。 |218| 在長任務期間保持知情 | 配置一個 Stop hook 以在長時間運行的任務完成時收到桌面通知。見 [Hooks](/zh-TW/hooks-guide)。 |

218| 從不正確的結果恢復 | 與其重新表述請求,不如將失敗的測試或堆棧跟蹤粘貼回 Claude,並要求它解決該特定失敗。 |219| 從不正確的結果恢復 | 與其重新表述請求,不如將失敗的測試或堆棧跟蹤粘貼回 Claude,並要求它解決該特定失敗。 |

219| 保持編輯精確 | 要求一個 diff,或指定"只更改 X。"Claude 在陳述範圍時尊重範圍。 |220| 保持編輯精確 | 要求一個 diff,或指定只更改 X。Claude 在陳述範圍時尊重範圍。 |

220 221 

221<Tip>222<Tip>

222 Claude Code 經常更新。在內部分發此材料之前,根據 [documentation home page](/zh-TW/overview) 驗證版本特定的詳細信息。223 Claude Code 經常更新。在內部分發此材料之前,根據 [documentation home page](/zh-TW/overview) 驗證版本特定的詳細信息。

Details

142 claude --dangerously-load-development-channels server:webhook142 claude --dangerously-load-development-channels server:webhook

143 ```143 ```

144 144 

145 當您在此專案中首次啟動工作階段時,Claude Code 在使用 `.mcp.json` 中的新伺服器之前要求同意。對話報告'在此專案中找到新的 MCP 伺服器:webhook'。選擇**使用此 MCP 伺服器**以繼續。

146 

145 當 Claude Code 啟動時,它讀取您的 MCP 配置,將您的 `webhook.ts` 作為子程序生成,HTTP 監聽器自動在您配置的連接埠上啟動(此範例中為 8788)。您不需要自己執行伺服器。147 當 Claude Code 啟動時,它讀取您的 MCP 配置,將您的 `webhook.ts` 作為子程序生成,HTTP 監聽器自動在您配置的連接埠上啟動(此範例中為 8788)。您不需要自己執行伺服器。

146 148 

149 啟動橫幅下方的暗淡通知確認 channel 已註冊:`Channels (experimental) messages from server:webhook inject directly in this session · restart without --dangerously-load-development-channels to stop`。

150 

147 如果您看到'被組織政策阻止',您的組織管理員需要先[啟用 channels](/zh-TW/channels#enterprise-controls)。151 如果您看到'被組織政策阻止',您的組織管理員需要先[啟用 channels](/zh-TW/channels#enterprise-controls)。

148 152 

149 在單獨的終端機中,透過傳送帶有訊息的 HTTP POST 來模擬 webhook 到您的伺服器。此範例將 CI 失敗警報傳送到連接埠 8788(或您配置的任何連接埠):153 在單獨的終端機中,透過傳送帶有訊息的 HTTP POST 來模擬 webhook 到您的伺服器。此範例將 CI 失敗警報傳送到連接埠 8788(或您配置的任何連接埠):


753curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788757curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

754```758```

755 759 

756本機權限對話框在您的 Claude Code 終端機中開啟。片刻後提示出現在 `/events` 串流中,包括五字母 ID。從遠端側批准它:760列出檔案是唯讀的,所以 Claude 執行它而不需要批准。當 Claude 呼叫 `reply` 工具以傳送其答案回去時,權限對話框開啟。本機對話框在您的 Claude Code 終端機中開啟,片刻後提示出現在 `/events` 串流中,包括五字母 ID。從遠端側批准它:

757 761 

758```bash theme={null}762```bash theme={null}

759curl -d "yes <id>" -H "X-Sender: dev" localhost:8788763curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

760```764```

761 765 

762本機對話框關閉,工具執行。Claude 的回覆透過 `reply` 工具回來並也落入串流中766本機對話框關閉,`reply` 工具執行,Claude 的回覆落入串流中

763 767 

764此檔案中的三個 channel 特定部分:768此檔案中的三個 channel 特定部分:

765 769 

Details

40* **恢復對話**:回溯到該訊息,同時保持目前程式碼40* **恢復對話**:回溯到該訊息,同時保持目前程式碼

41* **恢復程式碼**:回復檔案變更,同時保持對話41* **恢復程式碼**:回復檔案變更,同時保持對話

42* **從此處總結**:將此點之後的對話壓縮為摘要,釋放 context window 空間42* **從此處總結**:將此點之後的對話壓縮為摘要,釋放 context window 空間

43* **從此處之前總結**:將此點之前的對話壓縮為摘要,保持後續訊息完整

43* **算了**:返回訊息清單而不進行任何變更44* **算了**:返回訊息清單而不進行任何變更

44 45 

45恢復對話或選擇「從此處總結」後,所選訊息的原始提示會恢復到輸入欄位中,以便您可以重新傳送或編輯它。46恢復對話或選擇「從此處總結」後,所選訊息的原始提示會恢復到輸入欄位中,以便您可以重新傳送或編輯它。

46 47 

47選擇「算了」會讓您留在對話末尾,輸入為空。48選擇「從此處之前總結」會讓您留在對話末尾,輸入為空。

48 49 

49<h4 id="restore-vs-summarize">50<h4 id="restore-vs-summarize">

50 恢復與總結51 恢復與總結


53恢復選項會回復狀態:它們撤銷程式碼變更、對話歷史或兩者。總結選項會將對話的一部分壓縮為 AI 生成的摘要,而不改變磁碟上的檔案:54恢復選項會回復狀態:它們撤銷程式碼變更、對話歷史或兩者。總結選項會將對話的一部分壓縮為 AI 生成的摘要,而不改變磁碟上的檔案:

54 55 

55* **從此處總結**:所選訊息之前的訊息保持完整。所選訊息及其後的所有訊息都被替換為摘要。使用此選項可以捨棄旁支討論,同時保持早期上下文的完整詳細資訊。56* **從此處總結**:所選訊息之前的訊息保持完整。所選訊息及其後的所有訊息都被替換為摘要。使用此選項可以捨棄旁支討論,同時保持早期上下文的完整詳細資訊。

56* **算了**:所選訊息之前的訊息被替換為摘要。所選訊息及其後的所有訊息保持完整,您保持在對話末尾。使用此選項可以壓縮早期設定討論,同時保持最近工作的完整詳細資訊。57* **從此處之前總結**:所選訊息之前的訊息被替換為摘要。所選訊息及其後的所有訊息保持完整,您保持在對話末尾。使用此選項可以壓縮早期設定討論,同時保持最近工作的完整詳細資訊。

57 58 

58在這兩種情況下,原始訊息都保存在會話記錄中,因此 Claude 可以在需要時參考詳細資訊。您可以輸入可選指示來引導摘要的重點。這類似於 `/compact`,但更有針對性:您不是總結整個對話,而是選擇所選訊息的哪一側要壓縮。59在這兩種情況下,原始訊息都保存在會話記錄中,因此 Claude 可以在需要時參考詳細資訊。您可以輸入可選指示來引導摘要的重點。這類似於 `/compact`,但更有針對性:您不是總結整個對話,而是選擇所選訊息的哪一側要壓縮。

59 60 

Details

59 59 

60每個工作階段在一個新的 Anthropic 管理的 VM 中執行,其中您的儲存庫已複製。本節涵蓋工作階段啟動時可用的內容以及如何自訂它。60每個工作階段在一個新的 Anthropic 管理的 VM 中執行,其中您的儲存庫已複製。本節涵蓋工作階段啟動時可用的內容以及如何自訂它。

61 61 

62<h3 id="what-s-available-in-cloud-sessions">62<h3 id="whats-available-in-cloud-sessions">

63 雲端工作階段中可用的內容63 雲端工作階段中可用的內容

64</h3>64</h3>

65 65 

66雲端工作階段從您的儲存庫的新複製開始。任何提交到儲存庫的內容都可用。您只在自己的機器上安裝或配置的任何內容都不可用。66雲端工作階段從您的儲存庫的新複製開始。任何提交到儲存庫的內容都可用。您只在自己的機器上安裝或配置的任何內容都不可用。

67 67 

68| | 在雲端工作階段中可用 | 原因 |68| | 在雲端工作階段中可用 | 原因 |

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

70| 您的儲存庫的 `CLAUDE.md` | 是 | 複製的一部分 |70| 您的儲存庫的 `CLAUDE.md` | 是 | 複製的一部分 |

71| 您的儲存庫的 `.claude/settings.json` hooks | 是 | 複製的一部分 |71| 您的儲存庫的 `.claude/settings.json` hooks | 是 | 複製的一部分 |

72| 您的儲存庫的 `.mcp.json` MCP 伺服器 | 是 | 複製的一部分 |72| 您的儲存庫的 `.mcp.json` MCP 伺服器 | 是 | 複製的一部分 |


74| 您的儲存庫的 `.claude/skills/`、`.claude/agents/`、`.claude/commands/` | 是 | 複製的一部分 |74| 您的儲存庫的 `.claude/skills/`、`.claude/agents/`、`.claude/commands/` | 是 | 複製的一部分 |

75| 在 `.claude/settings.json` 中聲明的 Plugins | 是 | 在工作階段啟動時從您聲明的[市場](/zh-TW/plugin-marketplaces)安裝。需要網路存取才能到達市場來源 |75| 在 `.claude/settings.json` 中聲明的 Plugins | 是 | 在工作階段啟動時從您聲明的[市場](/zh-TW/plugin-marketplaces)安裝。需要網路存取才能到達市場來源 |

76| 您的使用者 `~/.claude/CLAUDE.md` | 否 | 位於您的機器上,不在儲存庫中 |76| 您的使用者 `~/.claude/CLAUDE.md` | 否 | 位於您的機器上,不在儲存庫中 |

77| 您的使用者 `~/.claude/skills/`、`~/.claude/agents/`、`~/.claude/commands/` | 否 | 位於您的機器上,不在儲存庫中。改為將它們提交到儲存庫的 `.claude/` 目錄。您在 claude.ai 上啟用的技能會自動載入到雲端工作階段中 |

77| 僅在您的使用者設定中啟用的 Plugins | 否 | 使用者範圍的 `enabledPlugins` 位於 `~/.claude/settings.json`。改為在儲存庫的 `.claude/settings.json` 中聲明它們 |78| 僅在您的使用者設定中啟用的 Plugins | 否 | 使用者範圍的 `enabledPlugins` 位於 `~/.claude/settings.json`。改為在儲存庫的 `.claude/settings.json` 中聲明它們 |

78| 您使用 `claude mcp add` 新增的 MCP 伺服器 | 否 | 這些寫入您的本機使用者配置,不是儲存庫。改為在[`.mcp.json`](/zh-TW/mcp#project-scope)中聲明伺服器 |79| 您使用 `claude mcp add` 新增的 MCP 伺服器 | 否 | 這些寫入您的本機使用者配置,不是儲存庫。改為在[`.mcp.json`](/zh-TW/mcp#project-scope)中聲明伺服器 |

79| 靜態 API 令牌和認證 | 否 | 尚不存在專用的秘密存儲。請參閱下文 |80| 靜態 API 令牌和認證 | 否 | 尚不存在專用的秘密存儲。請參閱下文 |


109 使用 GitHub 問題和拉取請求110 使用 GitHub 問題和拉取請求

110</h3>111</h3>

111 112 

112雲端工作階段包含內建的 GitHub 工具,讓 Claude 可以讀取問題、列出拉取請求、取得差異和發佈評論,無需任何設定。這些工具通過[GitHub 代理](#github-proxy)進行驗證,使用您在 [GitHub 驗證選項](#github-authentication-options)下配置的任何方法,因此您的令牌永遠不會進入容器。113雲端工作階段包含內建的 GitHub 工具,讓 Claude 可以讀取問題、列出拉取請求、取得差異和發佈評論,無需任何設定。這些工具通過 [GitHub 代理](#github-proxy)進行驗證,使用您在 [GitHub 驗證選項](#github-authentication-options)下配置的任何方法,因此您的令牌永遠不會進入容器。

113 114 

114`gh` CLI 未預先安裝。如果您需要內建工具不涵蓋的 `gh` 命令,例如 `gh release` 或 `gh workflow run`,請自行安裝和驗證:115`gh` CLI 未預先安裝。如果您需要內建工具不涵蓋的 `gh` 命令,例如 `gh release` 或 `gh workflow run`,請自行安裝和驗證:

115 116 


353* 防止惡意請求354* 防止惡意請求

354* 速率限制和濫用防止355* 速率限制和濫用防止

355* 增強安全性的內容篩選356* 增強安全性的內容篩選

357* 所請求主機名稱的 DNS 級別稽核軌跡

356 358 

357<h3 id="default-allowed-domains">359<h3 id="default-allowed-domains">

358 預設允許的域360 預設允許的域


745| `/context` | 是 | 顯示目前在上下文視窗中的內容 |747| `/context` | 是 | 顯示目前在上下文視窗中的內容 |

746| `/clear` | 否 | 改為從側邊欄啟動新工作階段 |748| `/clear` | 否 | 改為從側邊欄啟動新工作階段 |

747 749 

748自動壓縮在上下文視窗接近容量時自動執行,與 CLI 中相同。若要更早觸發它,請在您的[環境變數](#configure-your-environment)中設定 [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/zh-TW/env-vars)。例如,`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` 在 70% 容量而不是預設 \~95% 時壓縮。若要更改壓縮計算的有效視窗大小,請使用 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/zh-TW/env-vars)。750自動壓縮在上下文視窗接近容量時自動執行。若要更早觸發它,請在您的[環境變數](#configure-your-environment)中設定 [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/zh-TW/env-vars)。例如,`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` 在 70% 容量而不是等待視窗幾乎滿時壓縮。若要更改壓縮計算的有效視窗大小,請使用 [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/zh-TW/env-vars)。

749 751 

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)來啟用。752[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)來啟用。

751 753 


868 870 

869* 在本機執行 `/login` 以刷新您的認證,然後重新連接871* 在本機執行 `/login` 以刷新您的認證,然後重新連接

870* 確認您登入到擁有工作階段的相同帳戶872* 確認您登入到擁有工作階段的相同帳戶

871* 如果您看到 `Remote Control may not be available for this organization`,您的管理員尚未為您的計畫啟用遠端工作階段873* 如果您看到 `Remote Control may not be available for this organization`,您的管理員尚未為您的計畫啟用雲端工作階段

872 874 

873<h3 id="environment-expired">875<h3 id="environment-expired">

874 環境已過期876 環境已過期

claude-directory.md +1427 −1

Details

6 6 

7> Claude Code 讀取 CLAUDE.md、settings.json、hooks、skills、commands、subagents、workflows、rules 和自動記憶的位置。探索您專案中的 .claude 目錄和主目錄中的 ~/.claude。7> Claude Code 讀取 CLAUDE.md、settings.json、hooks、skills、commands、subagents、workflows、rules 和自動記憶的位置。探索您專案中的 .claude 目錄和主目錄中的 ~/.claude。

8 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 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

201 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.</>,

202 example: `---

203paths:

204 - "src/api/**/*.ts"

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 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.</>,

222 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'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 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.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 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.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 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.</>,

293 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'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 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.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 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.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 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.',

338 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'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 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.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'workflows',

366 label: 'workflows/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 oneLiner: 'Dynamic workflow scripts that orchestrate many subagents',

371 when: 'Loaded at startup; each file becomes a /<name> command',

372 description: <>Each <C>.js</C> file is a <A href="/en/workflows">dynamic workflow</A>: a script the runtime executes to spawn and coordinate many subagents. Workflows are written by Claude and saved here from <C>/workflows</C> rather than authored from scratch.</>,

373 tips: [<>Save a run from <C>/workflows</C> with <C>s</C> to create one of these</>, <>A project workflow takes precedence over a personal one in <C>~/.claude/workflows/</C> with the same name</>],

374 docsLink: '/en/workflows'

375 }, {

376 id: 'agent-memory',

377 label: 'agent-memory/',

378 type: 'folder',

379 icon: 'folder',

380 color: '#C46686',

381 badge: 'committed',

382 autogen: true,

383 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

384 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

385 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.</>,

386 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</>],

387 docsLink: '/en/sub-agents#enable-persistent-memory',

388 children: [{

389 id: 'agent-memory-sub',

390 label: '<agent-name>/',

391 type: 'folder',

392 icon: 'folder',

393 color: '#C46686',

394 autogen: true,

395 children: [{

396 id: 'agent-memory-md',

397 label: 'MEMORY.md',

398 type: 'file',

399 icon: 'md',

400 color: '#C46686',

401 badge: 'committed',

402 autogen: true,

403 oneLiner: 'The subagent writes and maintains this file automatically',

404 when: 'Loaded into the subagent system prompt when the subagent starts',

405 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.</>,

406 example: `# code-reviewer memory

407 

408## Patterns seen

409- Project uses custom Result<T, E> type, not exceptions

410- Auth middleware expects Bearer token in Authorization header

411- Tests use factory functions in test/factories/

412 

413## Recurring issues

414- Missing null checks on API responses (src/api/*)

415- Unhandled promise rejections in background jobs`

416 }]

417 }]

418 }]

419 }]

420 },

421 global: {

422 label: '~/',

423 children: [{

424 id: 'claude-json',

425 label: '.claude.json',

426 type: 'file',

427 icon: 'json',

428 color: 'var(--ce-text-3)',

429 badge: 'local',

430 oneLiner: 'App state and UI preferences',

431 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</>,

432 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.</>,

433 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</>],

434 example: `{

435 "autoConnectIde": true,

436 "externalEditorContext": true,

437 "mcpServers": {

438 "my-tools": {

439 "command": "npx",

440 "args": ["-y", "@example/mcp-server"]

441 }

442 }

443}`,

444 docsLink: '/en/settings#global-config-settings'

445 }, {

446 id: 'global-dot-claude',

447 label: '.claude/',

448 type: 'folder',

449 icon: 'folder',

450 color: 'var(--ce-accent)',

451 oneLiner: 'Your personal configuration across all projects',

452 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.',

453 children: [{

454 id: 'global-claude-md',

455 label: 'CLAUDE.md',

456 type: 'file',

457 icon: 'md',

458 color: '#6A9BCC',

459 badge: 'local',

460 oneLiner: 'Personal preferences across every project',

461 when: 'Loaded at the start of every session, in every project',

462 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.',

463 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'],

464 example: `# Global preferences

465 

466- Keep explanations concise

467- Use conventional commit format

468- Show the terminal command to verify changes

469- Prefer composition over inheritance`,

470 docsLink: '/en/memory'

471 }, {

472 id: 'global-settings',

473 label: 'settings.json',

474 type: 'file',

475 icon: 'json',

476 color: 'var(--ce-text-3)',

477 badge: 'local',

478 oneLiner: 'Default settings for all projects',

479 when: 'Your defaults. Project and local settings.json override any keys you also set there',

480 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.</>],

481 example: `{

482 "permissions": {

483 "allow": [

484 "Bash(git log *)",

485 "Bash(git diff *)"

486 ]

487 }

488}`,

489 docsLink: '/en/settings'

490 }, {

491 id: 'keybindings',

492 label: 'keybindings.json',

493 type: 'file',

494 icon: 'json',

495 color: 'var(--ce-text-3)',

496 badge: 'local',

497 oneLiner: 'Custom keyboard shortcuts',

498 when: 'Read at session start and hot-reloaded when you edit the file',

499 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.</>,

500 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.</>,

501 example: `{

502 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

503 "$docs": "https://code.claude.com/docs/en/keybindings",

504 "bindings": [

505 {

506 "context": "Chat",

507 "bindings": {

508 "ctrl+e": "chat:externalEditor",

509 "ctrl+u": null

510 }

511 }

512 ]

513}`,

514 docsLink: '/en/keybindings'

515 }, {

516 id: 'themes',

517 label: 'themes/',

518 type: 'folder',

519 icon: 'folder',

520 color: '#5AA7A7',

521 oneLiner: 'Custom color themes',

522 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

523 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.</>,

524 example: `{

525 "name": "Dracula",

526 "base": "dark",

527 "overrides": {

528 "claude": "#bd93f9",

529 "error": "#ff5555",

530 "success": "#50fa7b"

531 }

532}`,

533 docsLink: '/en/terminal-config#create-a-custom-theme',

534 children: []

535 }, {

536 id: 'global-projects',

537 label: 'projects/',

538 type: 'folder',

539 icon: 'folder',

540 color: '#E8A45C',

541 autogen: true,

542 oneLiner: "Auto memory: Claude's notes to itself, per project",

543 when: 'MEMORY.md loaded at session start; topic files read on demand',

544 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.',

545 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'],

546 docsLink: '/en/memory#auto-memory',

547 children: [{

548 id: 'memory-dir',

549 label: '<project>/memory/',

550 type: 'folder',

551 icon: 'folder',

552 color: '#E8A45C',

553 autogen: true,

554 oneLiner: "Claude's accumulated knowledge for one project",

555 children: [{

556 id: 'memory-md',

557 label: 'MEMORY.md',

558 type: 'file',

559 icon: 'md',

560 color: '#E8A45C',

561 badge: 'local',

562 autogen: true,

563 oneLiner: 'Claude writes and maintains this file automatically',

564 when: 'First 200 lines (capped at 25KB) loaded at session start',

565 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.',

566 example: `# Memory Index

567 

568## Project

569- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

570- [architecture.md](architecture.md): API client singleton, refresh-token auth

571 

572## Reference

573- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

574 docsLink: '/en/memory'

575 }, {

576 id: 'memory-topic',

577 label: 'debugging.md',

578 type: 'file',

579 icon: 'md',

580 color: '#E8A45C',

581 badge: 'local',

582 autogen: true,

583 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

584 when: 'Claude reads this when a related task comes up',

585 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.',

586 example: `---

587name: Debugging patterns

588description: Auth token rotation and database connection troubleshooting for this project

589type: reference

590---

591 

592## Auth Token Issues

593- Refresh token rotation: old token invalidated immediately

594- If 401 after refresh: check clock skew between client and server

595 

596## Database Connection Drops

597- Connection pool: max 10 in dev, 50 in prod

598- Always check \`docker compose ps\` first`

599 }]

600 }]

601 }, {

602 id: 'global-rules',

603 label: 'rules/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

609 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.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []

612 }, {

613 id: 'global-skills',

614 label: 'skills/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#D4A843',

618 oneLiner: 'Personal skills available in every project',

619 when: <>Invoked with <C>/skill-name</C> in any project</>,

620 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.',

621 docsLink: '/en/skills',

622 children: []

623 }, {

624 id: 'global-commands',

625 label: 'commands/',

626 type: 'folder',

627 icon: 'folder',

628 color: '#788C5D',

629 oneLiner: 'Personal single-file commands available in every project',

630 note: commandsNote,

631 when: <>User types <C>/command-name</C> in any project</>,

632 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

633 docsLink: '/en/skills',

634 children: []

635 }, {

636 id: 'global-output-styles',

637 label: 'output-styles/',

638 type: 'folder',

639 icon: 'folder',

640 color: '#5AA7A7',

641 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

642 when: 'Applied at session start when selected via the outputStyle setting',

643 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.</>],

644 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'],

645 docsLink: '/en/output-styles',

646 children: [{

647 id: 'output-style-example',

648 label: 'teaching.md',

649 type: 'file',

650 icon: 'md',

651 color: '#5AA7A7',

652 badge: 'local',

653 oneLiner: 'Example style that adds explanations and leaves small changes for you',

654 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

655 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.</>,

656 example: `---

657description: Explains reasoning and asks you to implement small pieces

658keep-coding-instructions: true

659---

660 

661After completing each task, add a brief "Why this approach" note

662explaining the key design decision.

663 

664When a change is under 10 lines, ask the user to implement it

665themselves by leaving a TODO(human) marker instead of writing it.`

666 }]

667 }, {

668 id: 'global-agents',

669 label: 'agents/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 oneLiner: 'Personal subagents available in every project',

674 when: 'Claude delegates or you @-mention in any project',

675 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

676 docsLink: '/en/sub-agents',

677 children: []

678 }, {

679 id: 'global-workflows',

680 label: 'workflows/',

681 type: 'folder',

682 icon: 'folder',

683 color: '#C46686',

684 oneLiner: 'Personal dynamic workflows available in every project',

685 when: 'Loaded at startup; each file becomes a /<name> command',

686 description: <>Workflow scripts saved here are available across all your projects. A project workflow with the same name in <C>.claude/workflows/</C> takes precedence.</>,

687 docsLink: '/en/workflows',

688 children: []

689 }, {

690 id: 'global-agent-memory',

691 label: 'agent-memory/',

692 type: 'folder',

693 icon: 'folder',

694 color: '#C46686',

695 autogen: true,

696 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

697 when: 'Loaded into the subagent system prompt when the subagent starts',

698 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.</>,

699 docsLink: '/en/sub-agents#enable-persistent-memory',

700 children: []

701 }]

702 }]

703 }

704 }), []);

705 const BADGE_STYLES = useMemo(() => ({

706 committed: {

707 bg: 'rgba(85,138,66,0.08)',

708 color: 'var(--ce-badge-committed)',

709 border: 'rgba(85,138,66,0.15)',

710 label: 'committed'

711 },

712 gitignored: {

713 bg: 'rgba(217,119,87,0.06)',

714 color: 'var(--ce-badge-gitignored)',

715 border: 'rgba(217,119,87,0.15)',

716 label: 'gitignored'

717 },

718 local: {

719 bg: 'rgba(115,114,108,0.06)',

720 color: 'var(--ce-badge-local)',

721 border: 'rgba(115,114,108,0.12)',

722 label: 'local only'

723 },

724 autogen: {

725 bg: 'rgba(232,164,92,0.1)',

726 color: 'var(--ce-badge-autogen)',

727 border: 'rgba(232,164,92,0.2)',

728 label: 'Claude writes'

729 }

730 }), []);

731 const allNodes = useMemo(() => {

732 const flatten = (nodes, acc, path, parentId) => {

733 for (const node of nodes) {

734 const nextPath = [...path, node.label];

735 acc[node.id] = {

736 ...node,

737 path: nextPath,

738 parentId

739 };

740 if (node.children) flatten(node.children, acc, nextPath, node.id);

741 }

742 return acc;

743 };

744 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

745 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

746 for (const id in project) project[id].root = 'project';

747 for (const id in global) global[id].root = 'global';

748 return {

749 ...project,

750 ...global

751 };

752 }, [FILE_TREE]);

753 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

754 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'];

755 const [mounted, setMounted] = useState(false);

756 const [activeRoot, setActiveRoot] = useState('project');

757 const [selectedId, setSelectedId] = useState('claude-md');

758 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

759 const [forceMobile, setForceMobile] = useState(false);

760 const [copiedId, setCopiedId] = useState(null);

761 const [isFullscreen, setIsFullscreen] = useState(false);

762 const copyTimeoutRef = useRef(null);

763 const rootRef = useRef(null);

764 useEffect(() => {

765 setMounted(true);

766 const applyHash = scroll => {

767 const hash = window.location.hash.slice(1);

768 if (!hash.startsWith('ce-')) return;

769 const id = hash.slice(3);

770 const node = allNodes[id];

771 if (!node) return;

772 setActiveRoot(node.root);

773 setSelectedId(id);

774 setExpandedFolders(new Set(allFolderIds));

775 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

776 behavior: 'smooth',

777 block: 'start'

778 });

779 };

780 applyHash(false);

781 const onHashChange = () => applyHash(true);

782 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

783 window.addEventListener('hashchange', onHashChange);

784 document.addEventListener('fullscreenchange', onFsChange);

785 return () => {

786 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

787 window.removeEventListener('hashchange', onHashChange);

788 document.removeEventListener('fullscreenchange', onFsChange);

789 };

790 }, []);

791 useEffect(() => {

792 if (!mounted || !rootRef.current) return;

793 const hash = window.location.hash.slice(1);

794 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

795 rootRef.current.scrollIntoView({

796 behavior: 'smooth',

797 block: 'start'

798 });

799 }

800 }, [mounted]);

801 if (!mounted) return null;

802 const selected = allNodes[selectedId];

803 const tree = FILE_TREE[activeRoot];

804 const isCopied = copiedId === selected.id;

805 const toggleFolder = id => {

806 const next = new Set(expandedFolders);

807 next.has(id) ? next.delete(id) : next.add(id);

808 setExpandedFolders(next);

809 };

810 const switchRoot = root => {

811 if (root === activeRoot) return;

812 setActiveRoot(root);

813 const firstId = FILE_TREE[root].children[0].id;

814 setSelectedId(firstId);

815 try {

816 history.replaceState(null, '', '#ce-' + firstId);

817 } catch (e) {}

818 };

819 const toggleFullscreen = () => {

820 if (!rootRef.current) return;

821 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

822 };

823 const selectNode = n => {

824 setSelectedId(n.id);

825 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

826 try {

827 history.replaceState(null, '', '#ce-' + n.id);

828 } catch (e) {}

829 };

830 const iconBtn = {

831 width: 28,

832 flexShrink: 0,

833 borderRadius: '6px',

834 border: 'none',

835 cursor: 'pointer',

836 background: 'transparent',

837 color: 'var(--ce-text-4)',

838 display: 'flex',

839 alignItems: 'center',

840 justifyContent: 'center'

841 };

842 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

843 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

844 const toggleAllFolders = () => {

845 const next = new Set(expandedFolders);

846 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

847 setExpandedFolders(next);

848 };

849 const onTreeKeyDown = e => {

850 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

851 const visible = [];

852 const walk = nodes => {

853 for (const n of nodes) {

854 visible.push(n.id);

855 if (n.children && expandedFolders.has(n.id)) walk(n.children);

856 }

857 };

858 walk(tree.children);

859 const i = visible.indexOf(selectedId);

860 if (i === -1) return;

861 e.preventDefault();

862 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') {

863 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

864 } else if (e.key === 'ArrowLeft') {

865 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

866 }

867 };

868 const copyExample = (id, text) => {

869 const done = () => {

870 setCopiedId(id);

871 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

872 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

873 };

874 const fallback = () => {

875 const ta = document.createElement('textarea');

876 ta.value = text;

877 ta.style.position = 'fixed';

878 ta.style.opacity = '0';

879 document.body.appendChild(ta);

880 ta.select();

881 try {

882 if (document.execCommand('copy')) done();

883 } catch (e) {}

884 document.body.removeChild(ta);

885 };

886 if (navigator.clipboard) {

887 navigator.clipboard.writeText(text).then(done, fallback);

888 } else {

889 fallback();

890 }

891 };

892 const renderIcon = (icon, color, size) => {

893 const sz = size || 14;

894 if (icon === 'folder') {

895 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

896 <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" />

897 </svg>;

898 }

899 if (icon === 'json') {

900 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

901 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

902 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

903 </svg>;

904 }

905 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

906 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

907 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

908 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

909 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

910 </svg>;

911 };

912 const renderNode = (node, depth) => {

913 const isFolder = node.type === 'folder';

914 const isExpanded = expandedFolders.has(node.id);

915 const isSelected = selectedId === node.id;

916 return <div key={node.id}>

917 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

918 display: 'flex',

919 alignItems: 'center',

920 gap: '5px',

921 width: '100%',

922 padding: `4px 8px 4px ${8 + depth * 16}px`,

923 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

924 borderTop: 'none',

925 borderRight: 'none',

926 borderBottom: 'none',

927 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

928 outline: 'none',

929 cursor: 'pointer',

930 textAlign: 'left',

931 fontFamily: 'var(--ce-mono)',

932 fontSize: '13.5px',

933 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

934 fontWeight: isSelected ? 550 : 400,

935 transition: 'all 0.1s'

936 }}>

937 {isFolder ? <span onClick={e => {

938 e.stopPropagation();

939 toggleFolder(node.id);

940 }} style={{

941 fontSize: '14px',

942 color: 'var(--ce-text-4)',

943 width: '20px',

944 height: '20px',

945 display: 'inline-flex',

946 alignItems: 'center',

947 justifyContent: 'center',

948 cursor: 'pointer',

949 borderRadius: '4px',

950 marginLeft: '-6px',

951 flexShrink: 0

952 }} onMouseEnter={e => {

953 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

954 e.currentTarget.style.color = 'var(--ce-text-2)';

955 }} onMouseLeave={e => {

956 e.currentTarget.style.background = 'transparent';

957 e.currentTarget.style.color = 'var(--ce-text-4)';

958 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

959 width: '14px',

960 flexShrink: 0

961 }} />}

962 {renderIcon(node.icon, node.color)}

963 <span style={{

964 flex: 1,

965 overflow: 'hidden',

966 textOverflow: 'ellipsis',

967 whiteSpace: 'nowrap'

968 }}>{node.label}</span>

969 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

970 width: 6,

971 height: 6,

972 borderRadius: '50%',

973 background: BADGE_STYLES[node.badge].color,

974 flexShrink: 0,

975 opacity: 0.7

976 }} />}

977 </button>

978 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

979 </div>;

980 };

981 return <>

982 <style>{`

983 .ce-root {

984 --ce-mono: var(--font-mono, ui-monospace, monospace);

985 --ce-accent: #D97757;

986 --ce-accent-bg: rgba(217,119,87,0.06);

987 --ce-accent-border: rgba(217,119,87,0.12);

988 --ce-bg: #fff;

989 --ce-surface: #FAFAF7;

990 --ce-surface-hover: #F0EEE6;

991 --ce-border: #E8E6DC;

992 --ce-border-subtle: #F0EEE6;

993 --ce-text: #141413;

994 --ce-text-2: #5E5D59;

995 --ce-text-3: #73726C;

996 --ce-text-4: #9C9A92;

997 --ce-text-5: #B8B6AE;

998 --ce-sep: #D1CFC5;

999 --ce-code-header: #F5F4ED;

1000 --ce-code-bg: #1A1918;

1001 --ce-arrow-hover: rgba(0,0,0,0.08);

1002 --ce-badge-committed: #3d6b2e;

1003 --ce-badge-gitignored: #b85c3a;

1004 --ce-badge-local: #5e5d59;

1005 --ce-badge-autogen: #b07520;

1006 --ce-when-text: #4a7fb5;

1007 }

1008 .dark .ce-root {

1009 --ce-bg: #1a1918;

1010 --ce-surface: #232221;

1011 --ce-surface-hover: #2e2d2b;

1012 --ce-border: #3a3936;

1013 --ce-border-subtle: #2e2d2b;

1014 --ce-text: #e8e6dc;

1015 --ce-text-2: #c4c2b8;

1016 --ce-text-3: #9c9a92;

1017 --ce-text-4: #73726c;

1018 --ce-text-5: #5e5d59;

1019 --ce-sep: #4a4946;

1020 --ce-code-header: #2e2d2b;

1021 --ce-code-bg: #0d0d0c;

1022 --ce-arrow-hover: rgba(255,255,255,0.08);

1023 --ce-badge-committed: #6fa85c;

1024 --ce-badge-gitignored: #e08a60;

1025 --ce-badge-local: #9c9a92;

1026 --ce-badge-autogen: #e8a45c;

1027 --ce-when-text: #8bb4e0;

1028 }

1029 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1030 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1031 @media (max-width: 700px) {

1032 .ce-root:not(.ce-force) { display: none !important; }

1033 .ce-mobile-fallback { display: block; }

1034 }

1035 `}</style>

1036 {!forceMobile && <div className="ce-mobile-fallback" style={{

1037 padding: '14px 16px',

1038 borderRadius: '8px',

1039 fontSize: '14px'

1040 }}>

1041 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1042 color: '#D97757'

1043 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1044 border: 'none',

1045 background: 'none',

1046 padding: 0,

1047 color: '#D97757',

1048 textDecoration: 'underline',

1049 cursor: 'pointer',

1050 font: 'inherit'

1051 }}>show the explorer anyway</button>.

1052 </div>}

1053 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1054 borderRadius: isFullscreen ? 0 : '12px',

1055 border: '1px solid var(--ce-border)',

1056 background: 'var(--ce-bg)',

1057 display: 'flex',

1058 alignItems: 'stretch',

1059 overflow: 'hidden',

1060 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1061 ...isFullscreen && ({

1062 height: '100vh'

1063 })

1064 }}>

1065 {}

1066 <div style={{

1067 width: 'min(240px, 35%)',

1068 minWidth: '180px',

1069 flexShrink: 0,

1070 borderRight: '1px solid var(--ce-border-subtle)',

1071 background: 'var(--ce-surface)',

1072 display: 'flex',

1073 flexDirection: 'column'

1074 }}>

1075 <div style={{

1076 padding: '8px 8px 4px',

1077 borderBottom: '1px solid var(--ce-border-subtle)',

1078 display: 'flex',

1079 gap: '4px'

1080 }}>

1081 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1082 flex: 1,

1083 padding: '6px 0',

1084 borderRadius: '6px',

1085 border: 'none',

1086 cursor: 'pointer',

1087 fontFamily: 'var(--ce-mono)',

1088 fontSize: '11.5px',

1089 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1090 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1091 fontWeight: activeRoot === root ? 600 : 430

1092 }}>

1093 {root === 'project' ? 'Project' : 'Global (~/)'}

1094 </button>)}

1095 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1096 ...iconBtn,

1097 fontSize: 11

1098 }}>

1099 {allExpanded ? '⊟' : '⊞'}

1100 </button>

1101 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1102 ...iconBtn,

1103 fontSize: 13

1104 }}>

1105 {isFullscreen ? '⤡' : '⛶'}

1106 </button>

1107 </div>

1108 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1109 padding: '6px 0',

1110 overflowY: 'auto',

1111 flex: 1,

1112 outline: 'none'

1113 }}>

1114 {tree.children.map(node => renderNode(node, 0))}

1115 </div>

1116 </div>

1117 

1118 {}

1119 <div style={{

1120 flex: 1,

1121 minWidth: 0,

1122 padding: '20px 24px',

1123 minHeight: '400px',

1124 overflowY: 'auto'

1125 }}>

1126 <span aria-live="polite" style={{

1127 position: 'absolute',

1128 width: 1,

1129 height: 1,

1130 overflow: 'hidden',

1131 clip: 'rect(0 0 0 0)'

1132 }}>{selected.label} selected</span>

1133 {}

1134 <div style={{

1135 fontFamily: 'var(--ce-mono)',

1136 fontSize: '11px',

1137 color: 'var(--ce-text-4)',

1138 marginBottom: '10px',

1139 cursor: 'default'

1140 }}>

1141 {selected.path.map((seg, i) => <span key={i}>

1142 <span style={{

1143 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1144 }}>{seg.replace(/\/$/, '')}</span>

1145 {i < selected.path.length - 1 && <span style={{

1146 color: 'var(--ce-sep)'

1147 }}> / </span>}

1148 </span>)}

1149 </div>

1150 

1151 {}

1152 <div style={{

1153 display: 'flex',

1154 alignItems: 'flex-start',

1155 gap: '10px',

1156 marginBottom: '10px'

1157 }}>

1158 <span style={{

1159 flexShrink: 0,

1160 display: 'flex'

1161 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1162 <div style={{

1163 flex: 1,

1164 minWidth: 0

1165 }}>

1166 <div style={{

1167 fontSize: '22px',

1168 fontWeight: 600,

1169 color: 'var(--ce-text)',

1170 letterSpacing: '-0.3px',

1171 lineHeight: '26px'

1172 }}>{selected.label}</div>

1173 {selected.oneLiner && <div style={{

1174 fontSize: '15px',

1175 color: 'var(--ce-text-3)',

1176 marginTop: '3px'

1177 }}>{selected.oneLiner}</div>}

1178 </div>

1179 <div style={{

1180 display: 'flex',

1181 gap: '4px',

1182 flexShrink: 0

1183 }}>

1184 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1185 const s = BADGE_STYLES[k];

1186 if (!s) return null;

1187 return <span key={k} style={{

1188 fontFamily: 'var(--ce-mono)',

1189 fontSize: '10px',

1190 fontWeight: 600,

1191 textTransform: 'uppercase',

1192 letterSpacing: '0.3px',

1193 padding: '2px 6px',

1194 borderRadius: '4px',

1195 background: s.bg,

1196 color: s.color,

1197 border: `0.5px solid ${s.border}`

1198 }}>{s.label}</span>;

1199 })}

1200 </div>

1201 </div>

1202 

1203 {}

1204 {selected.note && <div style={{

1205 padding: '10px 12px',

1206 borderRadius: '8px',

1207 marginBottom: '14px',

1208 background: 'rgba(217,119,87,0.06)',

1209 border: '1px solid rgba(217,119,87,0.2)',

1210 borderLeft: '3px solid var(--ce-accent)',

1211 fontSize: '15px',

1212 color: 'var(--ce-text-2)',

1213 lineHeight: 1.6

1214 }}>

1215 {selected.note}

1216 </div>}

1217 

1218 {}

1219 {selected.when && <div style={{

1220 padding: '8px 12px',

1221 borderRadius: '6px',

1222 background: 'rgba(106,155,204,0.06)',

1223 border: '0.5px solid rgba(106,155,204,0.12)',

1224 fontSize: '15px',

1225 color: 'var(--ce-when-text)',

1226 marginBottom: '16px'

1227 }}>

1228 <div style={{

1229 fontSize: '10px',

1230 fontWeight: 700,

1231 textTransform: 'uppercase',

1232 letterSpacing: '0.4px',

1233 opacity: 0.65,

1234 marginBottom: '3px'

1235 }}>When it loads</div>

1236 <div style={{

1237 fontWeight: 500

1238 }}>{selected.when}</div>

1239 </div>}

1240 

1241 {}

1242 {selected.description && <div style={{

1243 fontSize: '16px',

1244 color: 'var(--ce-text-2)',

1245 lineHeight: 1.65,

1246 marginBottom: '16px'

1247 }}>

1248 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1249 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1250 }}>{para}</div>) : selected.description}

1251 </div>}

1252 

1253 {}

1254 {selected.contains && selected.contains.length > 0 && <div style={{

1255 marginBottom: '16px'

1256 }}>

1257 <div style={{

1258 fontSize: '11px',

1259 fontWeight: 700,

1260 color: 'var(--ce-text-4)',

1261 textTransform: 'uppercase',

1262 letterSpacing: '0.4px',

1263 marginBottom: '8px'

1264 }}>Common keys</div>

1265 {selected.contains.map((item, i) => <div key={i} style={{

1266 display: 'flex',

1267 gap: '7px',

1268 fontSize: '15px',

1269 color: 'var(--ce-text-2)',

1270 lineHeight: 1.5,

1271 marginBottom: '5px'

1272 }}>

1273 <span style={{

1274 fontSize: '7px',

1275 color: 'var(--ce-text-4)',

1276 marginTop: '6px'

1277 }}>●</span>

1278 <span>{item}</span>

1279 </div>)}

1280 </div>}

1281 

1282 {}

1283 {selected.tips && selected.tips.length > 0 && <div style={{

1284 padding: '12px 14px',

1285 borderRadius: '8px',

1286 background: 'var(--ce-surface)',

1287 border: '1px solid var(--ce-border-subtle)',

1288 marginBottom: '16px'

1289 }}>

1290 <div style={{

1291 fontSize: '11px',

1292 fontWeight: 700,

1293 color: 'var(--ce-accent)',

1294 textTransform: 'uppercase',

1295 letterSpacing: '0.4px',

1296 marginBottom: '6px'

1297 }}>Tips</div>

1298 {selected.tips.map((tip, i) => <div key={i} style={{

1299 display: 'flex',

1300 gap: '7px',

1301 fontSize: '14.5px',

1302 color: 'var(--ce-text-2)',

1303 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1304 }}>

1305 <span style={{

1306 fontSize: '7px',

1307 color: 'var(--ce-accent)',

1308 marginTop: '6px'

1309 }}>●</span>

1310 <span>{tip}</span>

1311 </div>)}

1312 </div>}

1313 

1314 {}

1315 {selected.example && <div style={{

1316 marginBottom: '16px'

1317 }}>

1318 {selected.exampleIntro && <div style={{

1319 fontSize: '15px',

1320 color: 'var(--ce-text-2)',

1321 lineHeight: 1.6,

1322 marginBottom: '10px'

1323 }}>

1324 {selected.exampleIntro}

1325 </div>}

1326 <div style={{

1327 display: 'flex',

1328 justifyContent: 'space-between',

1329 alignItems: 'center',

1330 padding: '6px 10px',

1331 background: 'var(--ce-code-header)',

1332 border: '1px solid var(--ce-border)',

1333 borderRadius: '8px 8px 0 0'

1334 }}>

1335 <span style={{

1336 fontFamily: 'var(--ce-mono)',

1337 fontSize: '11px',

1338 fontWeight: 600,

1339 color: 'var(--ce-text-3)'

1340 }}>{selected.label}</span>

1341 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1342 padding: '3px 8px',

1343 borderRadius: '4px',

1344 fontSize: '11px',

1345 fontWeight: 600,

1346 cursor: 'pointer',

1347 transition: 'all 0.15s',

1348 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1349 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1350 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1351 }}>

1352 {isCopied ? '✓ Copied' : 'Copy'}

1353 </button>

1354 </div>

1355 <pre style={{

1356 margin: 0,

1357 padding: '12px 14px',

1358 background: 'var(--ce-code-bg)',

1359 color: '#E8E6DC',

1360 fontFamily: 'var(--ce-mono)',

1361 fontSize: '13px',

1362 lineHeight: 1.65,

1363 borderRadius: '0 0 8px 8px',

1364 overflowX: 'auto',

1365 whiteSpace: 'pre'

1366 }}>{selected.example}</pre>

1367 </div>}

1368 

1369 {}

1370 {selected.docsLink && <a href={selected.docsLink} style={{

1371 display: 'inline-flex',

1372 padding: '5px 12px',

1373 borderRadius: '6px',

1374 background: 'var(--ce-accent-bg)',

1375 border: '1px solid var(--ce-accent-border)',

1376 color: 'var(--ce-accent)',

1377 fontSize: '12px',

1378 fontWeight: 600,

1379 textDecoration: 'none'

1380 }}>Full docs →</a>}

1381 

1382 {}

1383 {selected.children && selected.children.length > 0 && <div style={{

1384 marginTop: '20px'

1385 }}>

1386 <div style={{

1387 fontSize: '11px',

1388 fontWeight: 700,

1389 color: 'var(--ce-text-4)',

1390 textTransform: 'uppercase',

1391 letterSpacing: '0.4px',

1392 marginBottom: '8px'

1393 }}>Contents</div>

1394 <div style={{

1395 display: 'flex',

1396 flexDirection: 'column',

1397 gap: '4px'

1398 }}>

1399 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1400 display: 'flex',

1401 alignItems: 'center',

1402 gap: '8px',

1403 padding: '6px 8px',

1404 width: '100%',

1405 background: 'var(--ce-surface)',

1406 borderRadius: '6px',

1407 border: 'none',

1408 cursor: 'pointer',

1409 textAlign: 'left',

1410 transition: 'background 0.1s'

1411 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1412 {renderIcon(child.icon, child.color, 13)}

1413 <span style={{

1414 fontFamily: 'var(--ce-mono)',

1415 fontSize: '12px',

1416 color: 'var(--ce-text-2)'

1417 }}>{child.label}</span>

1418 {child.oneLiner && <span style={{

1419 fontSize: '11px',

1420 color: 'var(--ce-text-4)',

1421 overflow: 'hidden',

1422 textOverflow: 'ellipsis',

1423 whiteSpace: 'nowrap'

1424 }}>{child.oneLiner}</span>}

1425 </button>)}

1426 </div>

1427 </div>}

1428 </div>

1429 </div>

1430 </>;

1431};

1432 

9Claude Code 從您的專案目錄和主目錄中的 `~/.claude` 讀取指令、設定、skills、subagents 和記憶。將專案檔案提交到 git 以與您的團隊共享;`~/.claude` 中的檔案是個人設定,適用於您的所有專案。1433Claude Code 從您的專案目錄和主目錄中的 `~/.claude` 讀取指令、設定、skills、subagents 和記憶。將專案檔案提交到 git 以與您的團隊共享;`~/.claude` 中的檔案是個人設定,適用於您的所有專案。

10 1434 

11在 Windows 上,`~/.claude` 解析為 `%USERPROFILE%\.claude`。如果您設定了 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),此頁面上的每個 `~/.claude` 路徑都會改為位於該目錄下。1435在 Windows 上,`~/.claude` 解析為 `%USERPROFILE%\.claude`。如果您設定了 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars),此頁面上的每個 `~/.claude` 路徑都會改為位於該目錄下。


18 1442 

19點擊樹中的檔案以查看每個檔案的功能、何時載入以及範例。1443點擊樹中的檔案以查看每個檔案的功能、何時載入以及範例。

20 1444 

21<h2 id="what-s-not-shown">1445<ClaudeExplorer />

1446 

1447<h2 id="what’s-not-shown">

22 未顯示的內容1448 未顯示的內容

23</h2>1449</h2>

24 1450 

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 

9AWS 上的 Claude Platform 是 Anthropic 營運的 Claude API,具有 AWS 驗證、IAM 存取控制和 AWS Marketplace 計費。請求直接到達 Anthropic 的 API,因此您可以獲得與 [Claude API](https://platform.claude.com/docs) 相同的模型和功能,並遵循相同的發佈時程表。您使用 AWS 認證或工作區 API 金鑰進行驗證,並透過 AWS Marketplace 付款。191AWS 上的 Claude Platform 是 Anthropic 營運的 Claude API,具有 AWS 驗證、IAM 存取控制和 AWS Marketplace 計費。請求直接到達 Anthropic 的 API,因此您可以獲得與 [Claude API](https://platform.claude.com/docs) 相同的模型和功能,並遵循相同的發佈時程表。您使用 AWS 認證或工作區 API 金鑰進行驗證,並透過 AWS Marketplace 付款。

10 192 

11使用本指南將 Claude Code 指向您已透過 AWS 上的 Claude Platform 佈建的工作區。有關在此之前的 AWS 訂閱和工作區設定,請參閱 [AWS 上的 Claude Platform 文件](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws)。193使用本指南將 Claude Code 指向您已透過 AWS 上的 Claude Platform 佈建的工作區。有關在此之前的 AWS 訂閱和工作區設定,請參閱 [AWS 上的 Claude Platform 文件](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws)。


92 3. 固定模型版本274 3. 固定模型版本

93</h3>275</h3>

94 276 

95AWS 上的 Claude Platform 使用與直接 Claude API 相同的模型 ID。預設別名 `opus`、`sonnet` 和 `haiku` 解析為您工作區中可用的最新版本277AWS 上的 Claude Platform 使用與直接 Claude API 相同的模型 ID。預設別名 `fable`、`opus`、`sonnet` 和 `haiku` 解析為 Claude Code 針對 AWS 上的 Claude Platform 的內建預設值,這些值可能落後於最新版本沒有 `ANTHROPIC_DEFAULT_OPUS_MODEL`,`opus` 別名解析為 Opus 4.7。

96 278 

97如果您將 Claude Code 部署到團隊,請明確固定模型 ID,以便新版本不會一次移動所有人:279如果您將 Claude Code 部署到團隊,請明確固定模型 ID,以便新版本不會一次移動所有人:

98 280 

99```bash theme={null}281```bash theme={null}

282export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5

100export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7283export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7

101export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6284export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6

102export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5285export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5


154執行 `/status` 以查看已解析的提供者和任何明確設定的工作區 ID、區域、基礎 URL 覆寫和驗證跳過設定。這是確認 Claude Code 是否完全針對 AWS 上的 Claude Platform 的最快方式。337執行 `/status` 以查看已解析的提供者和任何明確設定的工作區 ID、區域、基礎 URL 覆寫和驗證跳過設定。這是確認 Claude Code 是否完全針對 AWS 上的 Claude Platform 的最快方式。

155 338 

156<h3 id="403-forbidden-or-accessdenied-on-every-request">339<h3 id="403-forbidden-or-accessdenied-on-every-request">

157 每個請求上都出現 `403 Forbidden` 或 `AccessDenied`340 `403 Forbidden` 或 `AccessDenied` 在每個請求上

158</h3>341</h3>

159 342 

160Claude Code 解析的 IAM 主體可能缺少在您的工作區中叫用 Anthropic 服務的權限。檢查附加到您的 AWS 設定檔或啟動 Claude Code 的執行器的角色,並驗證它具有 [IAM 動作參考](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions)中記錄的 `aws-external-anthropic` 動作。343Claude Code 解析的 IAM 主體可能缺少在您的工作區中叫用 Anthropic 服務的權限。檢查附加到您的 AWS 設定檔或啟動 Claude Code 的執行器的角色,並驗證它具有 [IAM 動作參考](https://platform.claude.com/docs/zh-TW/api/claude-platform-on-aws-iam-actions)中記錄的 `aws-external-anthropic` 動作。

161 344 

162如果您設定了 `ANTHROPIC_AWS_API_KEY`,金鑰優先於 SigV4,過期的金鑰會產生相同的錯誤。在 AWS Console 中的 **Claude Platform on AWS → API keys** 下重新產生金鑰,或取消設定變數以回退到您的 AWS 認證。345如果您設定了 `ANTHROPIC_AWS_API_KEY`,金鑰優先於 SigV4,過期的金鑰會產生相同的錯誤。在 AWS Console 中的 **Claude Platform on AWS → API keys** 下重新產生金鑰,或取消設定變數以回退到您的 AWS 認證。

163 346 


179 362 

180設定 Claude Code 之前的 AWS 上的 Claude Platform 訂閱、工作區和 IAM 設定涵蓋在平台文件中:363設定 Claude Code 之前的 AWS 上的 Claude Platform 訂閱、工作區和 IAM 設定涵蓋在平台文件中:

181 364 

182* [AWS 上的 Claude Platform 概述](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws):訂閱、工作區設定和產品參考365* [AWS 上的 Claude Platform 概述](https://platform.claude.com/docs/zh-TW/build-with-claude/claude-platform-on-aws):訂閱、工作區設定和產品參考

183* [IAM 動作參考](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions):權限和受管原則366* [IAM 動作參考](https://platform.claude.com/docs/zh-TW/api/claude-platform-on-aws-iam-actions):權限和受管原則

cli-reference.md +15 −13

Details

51使用這些命令列旗標自訂 Claude Code 的行為。`claude --help` 不會列出每個旗標,因此旗標在 `--help` 中的缺失並不表示它無法使用。51使用這些命令列旗標自訂 Claude Code 的行為。`claude --help` 不會列出每個旗標,因此旗標在 `--help` 中的缺失並不表示它無法使用。

52 52 

53| 旗標 | 描述 | 範例 |53| 旗標 | 描述 | 範例 |

54| :---------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |54| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- |

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` |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` |

56| `--advisor <model>` | {/* min-version: 2.1.98 */}使用模型別名啟用此工作階段的伺服器端 [advisor tool](/zh-TW/advisor):`opus`、`sonnet` 或 `fable`({/* min-version: 2.1.170 */}v2.1.170+),或完整模型 ID。優先於工作階段的 `advisorModel` 設定。需要 Claude Code v2.1.98 或更新版本 | `claude --advisor opus` |

56| `--agent` | 為目前工作階段指定代理程式(覆蓋 `agent` 設定) | `claude --agent my-custom-agent` |57| `--agent` | 為目前工作階段指定代理程式(覆蓋 `agent` 設定) | `claude --agent my-custom-agent` |

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"}}'` |58| `--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"}}'` |

58| `--allow-dangerously-skip-permissions` | 新增 `bypassPermissions` 到 `Shift+Tab` 模式循環而不立即啟動它。允許您以不同的模式(如 `plan`)開始,稍後切換到 `bypassPermissions`。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |59| `--allow-dangerously-skip-permissions` | 新增 `bypassPermissions` 到 `Shift+Tab` 模式循環而不立即啟動它。允許您以不同的模式(如 `plan`)開始,稍後切換到 `bypassPermissions`。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

59| `--allowedTools` | 無需提示權限即可執行的工具。請參閱 [permission rule syntax](/zh-TW/settings#permission-rule-syntax) 以了解模式匹配。若要限制可用的工具,請改用 `--tools` | `"Bash(git log *)" "Bash(git diff *)" "Read"` |60| `--allowedTools`、`--allowed-tools` | 無需提示權限即可執行的工具。請參閱 [permission rule syntax](/zh-TW/settings#permission-rule-syntax) 以了解模式匹配。若要限制可用的工具,請改用 `--tools` | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

60| `--append-system-prompt` | 將自訂文字附加到預設系統提示的末尾 | `claude --append-system-prompt "Always use TypeScript"` |61| `--append-system-prompt` | 將自訂文字附加到預設系統提示的末尾 | `claude --append-system-prompt "Always use TypeScript"` |

61| `--append-system-prompt-file` | 從檔案載入額外的系統提示文字並附加到預設提示 | `claude --append-system-prompt-file ./extra-rules.txt` |62| `--append-system-prompt-file` | 從檔案載入額外的系統提示文字並附加到預設提示 | `claude --append-system-prompt-file ./extra-rules.txt` |

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"` |63| `--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"` |


64| `--bg` | 以 [background agent](/zh-TW/agent-view) 身份啟動工作階段並立即返回。列印工作階段 ID 和管理命令。與 `--exec` 結合以執行 shell 命令作為背景工作而不是 Claude 工作階段,或與 `--agent` 結合以執行特定 subagent | `claude --bg "investigate the flaky test"` |65| `--bg` | 以 [background agent](/zh-TW/agent-view) 身份啟動工作階段並立即返回。列印工作階段 ID 和管理命令。與 `--exec` 結合以執行 shell 命令作為背景工作而不是 Claude 工作階段,或與 `--agent` 結合以執行特定 subagent | `claude --bg "investigate the flaky test"` |

65| `--channels` | (研究預覽)MCP 伺服器,其 [channel](/zh-TW/channels) 通知 Claude 應在此工作階段中監聽。以空格分隔的 `plugin:<name>@<marketplace>` 項目清單。需要 Claude.ai 驗證 | `claude --channels plugin:my-notifier@my-marketplace` |66| `--channels` | (研究預覽)MCP 伺服器,其 [channel](/zh-TW/channels) 通知 Claude 應在此工作階段中監聽。以空格分隔的 `plugin:<name>@<marketplace>` 項目清單。需要 Claude.ai 驗證 | `claude --channels plugin:my-notifier@my-marketplace` |

66| `--chrome` | 啟用 [Chrome 瀏覽器整合](/zh-TW/chrome) 以進行網頁自動化和測試 | `claude --chrome` |67| `--chrome` | 啟用 [Chrome 瀏覽器整合](/zh-TW/chrome) 以進行網頁自動化和測試 | `claude --chrome` |

67| `--continue`, `-c` | 載入目前目錄中最近的對話。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --continue` |68| `--continue``-c` | 載入目前目錄中最近的對話。包括使用 `/add-dir` 新增此目錄的工作階段 | `claude --continue` |

68| `--dangerously-load-development-channels` | 啟用不在核准允許清單上的 [channels](/zh-TW/channels-reference#test-during-the-research-preview),用於本機開發。接受 `plugin:<name>@<marketplace>` 和 `server:<name>` 項目。提示確認 | `claude --dangerously-load-development-channels server:webhook` |69| `--dangerously-load-development-channels` | 啟用不在核准允許清單上的 [channels](/zh-TW/channels-reference#test-during-the-research-preview),用於本機開發。接受 `plugin:<name>@<marketplace>` 和 `server:<name>` 項目。提示確認 | `claude --dangerously-load-development-channels server:webhook` |

69| `--dangerously-skip-permissions` | 略過權限提示。等同於 `--permission-mode bypassPermissions`。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 以了解此操作會和不會略過的內容 | `claude --dangerously-skip-permissions` |70| `--dangerously-skip-permissions` | 略過權限提示。等同於 `--permission-mode bypassPermissions`。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 以了解此操作會和不會略過的內容 | `claude --dangerously-skip-permissions` |

70| `--debug` | 啟用偵錯模式,可選類別篩選(例如,`"api,hooks"` 或 `"!statsig,!file"`) | `claude --debug "api,mcp"` |71| `--debug` | 啟用偵錯模式,可選類別篩選(例如,`"api,hooks"` 或 `"!statsig,!file"`) | `claude --debug "api,mcp"` |

71| `--debug-file <path>` | 將偵錯日誌寫入特定檔案路徑。隱含啟用偵錯模式。優先於 `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |72| `--debug-file <path>` | 將偵錯日誌寫入特定檔案路徑。隱含啟用偵錯模式。優先於 `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

72| `--disable-slash-commands` | 為此工作階段停用所有 skills 和命令 | `claude --disable-slash-commands` |73| `--disable-slash-commands` | 為此工作階段停用所有 skills 和命令 | `claude --disable-slash-commands` |

73| `--disallowedTools` | 拒絕規則。裸工具名稱會從模型的內容中移除該工具。範圍規則(例如 `Bash(rm *)` )會保留工具可用,但只拒絕符合的呼叫 | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |74| `--disallowedTools`、`--disallowed-tools` | 拒絕規則。裸工具名稱會從模型的內容中移除該工具:`"Edit"` 移除 Edit、`"*"` 移除每個工具,`"mcp__*"` 移除每個 MCP 工具。範圍規則(例如 `Bash(rm *)` )會保留工具可用,但只拒絕符合的呼叫 | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

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` |75| `--effort` | 為目前工作階段設定 [effort level](/zh-TW/model-config#adjust-effort-level)。選項:`low`、`medium`、`high`、`xhigh`、`max`;可用的層級取決於模型。覆蓋此工作階段的 [`effortLevel`](/zh-TW/settings#available-settings) 設定,且不會持久化 | `claude --effort high` |

75| `--enable-auto-mode` | {/* max-version: 2.1.110 */}在 v2.1.111 中移除。Auto mode 現在預設在 `Shift+Tab` 循環中;使用 `--permission-mode auto` 以它開始 | `claude --permission-mode auto` |76| `--enable-auto-mode` | {/* max-version: 2.1.110 */}在 v2.1.111 中移除。Auto mode 現在預設在 `Shift+Tab` 循環中;使用 `--permission-mode auto` 以它開始 | `claude --permission-mode auto` |

76| `--exclude-dynamic-system-prompt-sections` | 將每台機器的系統提示部分(工作目錄、環境資訊、記憶體路徑、git 狀態旗標)移至第一個使用者訊息。改善在執行相同工作的不同使用者和機器之間的提示快取重複使用。僅適用於預設系統提示;設定 `--system-prompt` 或 `--system-prompt-file` 時忽略。與 `-p` 搭配使用以進行指令碼化、多使用者工作負載 | `claude -p --exclude-dynamic-system-prompt-sections "query"` |77| `--exclude-dynamic-system-prompt-sections` | 將每台機器的系統提示部分(工作目錄、環境資訊、記憶體路徑、git 狀態旗標)移至第一個使用者訊息。改善在執行相同工作的不同使用者和機器之間的提示快取重複使用。僅適用於預設系統提示;設定 `--system-prompt` 或 `--system-prompt-file` 時忽略。與 `-p` 搭配使用以進行指令碼化、多使用者工作負載 | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

77| `--exec` | 執行 shell 命令作為 PTY 支援的背景工作而不是啟動 Claude 工作階段。與 `--bg` 搭配使用以從 shell 啟動 | `claude --bg --exec 'pytest -x'` |78| `--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"` |79| `--fallback-model` | 當主要模型過載或無法使用時啟用自動回退到指定的模型,例如已淘汰的模型。接受以逗號分隔的清單,依序嘗試。請參閱 [Fallback model chains](/zh-TW/model-config#fallback-model-chains)。若要在工作階段之間持久化鏈,請使用 [`fallbackModel` 設定](/zh-TW/settings#available-settings)此旗標會覆蓋它 | `claude --fallback-model sonnet,haiku` |

79| `--fork-session` | 繼續時,建立新的工作階段 ID 而不是重複使用原始 ID(與 `--resume` 或 `--continue` 搭配使用) | `claude --resume abc123 --fork-session` |80| `--fork-session` | 繼續時,建立新的工作階段 ID 而不是重複使用原始 ID(與 `--resume` 或 `--continue` 搭配使用) | `claude --resume abc123 --fork-session` |

80| `--from-pr` | 繼續連結到特定提取請求的工作階段。接受 PR 編號、GitHub 或 GitHub Enterprise PR URL、GitLab 合併請求 URL 或 Bitbucket 提取請求 URL。當 Claude 建立提取請求時,工作階段會自動連結 | `claude --from-pr 123` |81| `--from-pr` | 繼續連結到特定提取請求的工作階段。接受 PR 編號、GitHub 或 GitHub Enterprise PR URL、GitLab 合併請求 URL 或 Bitbucket 提取請求 URL。當 Claude 建立提取請求時,工作階段會自動連結 | `claude --from-pr 123` |

81| `--ide` | 如果恰好有一個有效的 IDE 可用,在啟動時自動連線到 IDE | `claude --ide` |82| `--ide` | 如果恰好有一個有效的 IDE 可用,在啟動時自動連線到 IDE | `claude --ide` |


89| `--max-budget-usd` | 在停止前在 API 呼叫上花費的最大美元金額(僅列印模式) | `claude -p --max-budget-usd 5.00 "query"` |90| `--max-budget-usd` | 在停止前在 API 呼叫上花費的最大美元金額(僅列印模式) | `claude -p --max-budget-usd 5.00 "query"` |

90| `--max-turns` | 限制代理程式轉數(僅列印模式)。達到限制時以錯誤退出。預設無限制 | `claude -p --max-turns 3 "query"` |91| `--max-turns` | 限制代理程式轉數(僅列印模式)。達到限制時以錯誤退出。預設無限制 | `claude -p --max-turns 3 "query"` |

91| `--mcp-config` | 從 JSON 檔案或字串載入 MCP 伺服器(以空格分隔) | `claude --mcp-config ./mcp.json` |92| `--mcp-config` | 從 JSON 檔案或字串載入 MCP 伺服器(以空格分隔) | `claude --mcp-config ./mcp.json` |

92| `--model` | 使用最新模型的別名(`sonnet` 或 `opus`)或模型的完整名稱為目前工作階段設定模型。覆蓋 [`model`](/zh-TW/settings#available-settings) 設定和 [`ANTHROPIC_MODEL`](/zh-TW/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |93| `--model` | 使用最新模型的別名(`sonnet`、`opus`、`haiku` 或 `fable`)或模型的完整名稱為目前工作階段設定模型。覆蓋 [`model`](/zh-TW/settings#available-settings) 設定和 [`ANTHROPIC_MODEL`](/zh-TW/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |

93| `--name`, `-n` | 為工作階段設定顯示名稱,顯示在 `/resume` 和終端標題中。您可以使用 `claude --resume <name>` 繼續已命名的工作階段。<br /><br />[`/rename`](/zh-TW/commands) 在工作階段中途變更名稱,也會在提示列中顯示 | `claude -n "my-feature-work"` |94| `--name``-n` | 為工作階段設定顯示名稱,顯示在 `/resume` 和終端標題中。您可以使用 `claude --resume <name>` 繼續已命名的工作階段。<br /><br />[`/rename`](/zh-TW/commands) 在工作階段中途變更名稱,也會在提示列中顯示 | `claude -n "my-feature-work"` |

94| `--no-chrome` | 為此工作階段停用 [Chrome 瀏覽器整合](/zh-TW/chrome) | `claude --no-chrome` |95| `--no-chrome` | 為此工作階段停用 [Chrome 瀏覽器整合](/zh-TW/chrome) | `claude --no-chrome` |

95| `--no-session-persistence` | 停用工作階段持久性,使工作階段不會儲存到磁碟且無法繼續。僅列印模式。[`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars) 環境變數在任何模式中執行相同操作 | `claude -p --no-session-persistence "query"` |96| `--no-session-persistence` | 停用工作階段持久性,使工作階段不會儲存到磁碟且無法繼續。僅列印模式。[`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/zh-TW/env-vars) 環境變數在任何模式中執行相同操作 | `claude -p --no-session-persistence "query"` |

96| `--output-format` | 為列印模式指定輸出格式(選項:`text`、`json`、`stream-json`) | `claude -p "query" --output-format json` |97| `--output-format` | 為列印模式指定輸出格式(選項:`text`、`json`、`stream-json`) | `claude -p "query" --output-format json` |


98| `--permission-prompt-tool` | 指定 MCP 工具以在非互動模式下處理權限提示 | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |99| `--permission-prompt-tool` | 指定 MCP 工具以在非互動模式下處理權限提示 | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

99| `--plugin-dir` | 為此工作階段僅從目錄或 `.zip` 封存載入 plugin。每個旗標採用一個路徑。重複旗標以使用多個 plugins:`--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |100| `--plugin-dir` | 為此工作階段僅從目錄或 `.zip` 封存載入 plugin。每個旗標採用一個路徑。重複旗標以使用多個 plugins:`--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |

100| `--plugin-url` | 為此工作階段僅從 URL 擷取 plugin `.zip` 封存。重複旗標以使用多個 plugins,或在單一引用值中傳遞以空格分隔的 URL | `claude --plugin-url https://example.com/plugin.zip` |101| `--plugin-url` | 為此工作階段僅從 URL 擷取 plugin `.zip` 封存。重複旗標以使用多個 plugins,或在單一引用值中傳遞以空格分隔的 URL | `claude --plugin-url https://example.com/plugin.zip` |

101| `--print`, `-p` | 列印回應而不進入互動模式(請參閱 [Agent SDK 文件](/zh-TW/agent-sdk/overview) 以了解程式化使用詳細資訊) | `claude -p "query"` |102| `--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"` |103| `--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"` |

103| `--remote` | 在 claude.ai 上建立新的 [web session](/zh-TW/claude-code-on-the-web),並提供工作描述 | `claude --remote "Fix the login bug"` |104| `--remote` | 在 claude.ai 上建立新的 [web session](/zh-TW/claude-code-on-the-web),並提供工作描述 | `claude --remote "Fix the login bug"` |

104| `--remote-control`, `--rc` | 啟動互動式工作階段,並啟用 [Remote Control](/zh-TW/remote-control#start-a-remote-control-session),以便您也可以從 claude.ai 或 Claude 應用程式控制它。可選擇傳遞工作階段的名稱 | `claude --remote-control "My Project"` |105| `--remote-control``--rc` | 啟動互動式工作階段,並啟用 [Remote Control](/zh-TW/remote-control#start-a-remote-control-session),以便您也可以從 claude.ai 或 Claude 應用程式控制它。可選擇傳遞工作階段的名稱 | `claude --remote-control "My Project"` |

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` |106| `--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` |

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` |107| `--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` |

107| `--resume`, `-r` | 按 ID 或名稱繼續特定工作階段,或顯示互動式選擇器以選擇工作階段。包括使用 `/add-dir` 新增此目錄的工作階段。自 v2.1.144 起,[background sessions](/zh-TW/agent-view) 在選擇器中出現,標記為 `bg` | `claude --resume auth-refactor` |108| `--resume``-r` | 按 ID 或名稱繼續特定工作階段,或顯示互動式選擇器以選擇工作階段。選擇器和名稱搜尋包括使用 `/add-dir` 新增此目錄的工作階段;傳遞工作階段 ID 只搜尋目前專案目錄及其 git worktrees。自 v2.1.144 起,[background sessions](/zh-TW/agent-view) 在選擇器中出現,標記為 `bg` | `claude --resume auth-refactor` |

109| `--safe-mode` | {/* min-version: 2.1.169 */}以所有自訂項目停用的狀態啟動以排除故障的設定:CLAUDE.md、skills、plugins、hooks、MCP 伺服器、自訂命令和代理程式、輸出樣式、工作流程、自訂主題、自訂快捷鍵、狀態列和檔案建議命令、LSP 伺服器和自動記憶體不會載入。驗證、模型選擇、內建工具和權限正常運作,這與 [`--bare`](/zh-TW/headless#start-faster-with-bare-mode) 不同。受管設定原則仍然適用,包括原則設定的 hooks、狀態列和檔案建議命令;受管 plugins、受管 skills、受管 CLAUDE.md 和原則設定的 MCP 伺服器不會。用於檢查自訂項目是否觸發 [automatic fallback from Fable 5](/zh-TW/model-config#automatic-model-fallback)。設定 [`CLAUDE_CODE_SAFE_MODE`](/zh-TW/env-vars) | `claude --safe-mode` |

108| `--session-id` | 為對話使用特定的工作階段 ID(必須是有效的 UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |110| `--session-id` | 為對話使用特定的工作階段 ID(必須是有效的 UUID) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

109| `--setting-sources` | 要載入的設定來源的逗號分隔清單(`user`、`project`、`local`) | `claude --setting-sources user,project` |111| `--setting-sources` | 要載入的設定來源的逗號分隔清單(`user`、`project`、`local`) | `claude --setting-sources user,project` |

110| `--settings` | 設定 JSON 檔案的路徑或內嵌 JSON 字串。您在此設定的值會覆蓋此工作階段中 `settings.json` 檔案中的相同金鑰。您省略的金鑰保留其檔案型值。請參閱 [settings precedence](/zh-TW/settings#settings-precedence) | `claude --settings ./settings.json` |112| `--settings` | 設定 JSON 檔案的路徑或內嵌 JSON 字串。您在此設定的值會覆蓋此工作階段中 `settings.json` 檔案中的相同金鑰。您省略的金鑰保留其檔案型值。請參閱 [settings precedence](/zh-TW/settings#settings-precedence) | `claude --settings ./settings.json` |


114| `--teleport` | 在本機終端中繼續 [web session](/zh-TW/claude-code-on-the-web) | `claude --teleport` |116| `--teleport` | 在本機終端中繼續 [web session](/zh-TW/claude-code-on-the-web) | `claude --teleport` |

115| `--teammate-mode` | 設定 [agent team](/zh-TW/agent-teams) 隊友的顯示方式:`auto`(預設)、`in-process` 或 `tmux`。覆蓋此工作階段的 [`teammateMode`](/zh-TW/settings#available-settings) 設定。請參閱 [選擇顯示模式](/zh-TW/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |117| `--teammate-mode` | 設定 [agent team](/zh-TW/agent-teams) 隊友的顯示方式:`auto`(預設)、`in-process` 或 `tmux`。覆蓋此工作階段的 [`teammateMode`](/zh-TW/settings#available-settings) 設定。請參閱 [選擇顯示模式](/zh-TW/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

116| `--tmux` | 為 worktree 建立 tmux 工作階段。需要 `--worktree`。在可用時使用 iTerm2 原生窗格;傳遞 `--tmux=classic` 以使用傳統 tmux | `claude -w feature-auth --tmux` |118| `--tmux` | 為 worktree 建立 tmux 工作階段。需要 `--worktree`。在可用時使用 iTerm2 原生窗格;傳遞 `--tmux=classic` 以使用傳統 tmux | `claude -w feature-auth --tmux` |

117| `--tools` | 限制 Claude 可以使用的內建工具。使用 `""` 停用全部`"default"` 為全部,或工具名稱如 `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |119| `--tools` | 限制 Claude 可以使用的內建工具。使用 `""` 停用全部`"default"` 為全部,或工具名稱如 `"Bash,Edit,Read"`。MCP 工具不受影響;若要拒絕這些工具,請改用 `--disallowedTools "mcp__*"`,或傳遞 `--strict-mcp-config` 而不使用 `--mcp-config` 以便不載入 MCP 伺服器 | `claude --tools "Bash,Edit,Read"` |

118| `--verbose` | 啟用詳細記錄,顯示完整的逐轉輸出。覆蓋此工作階段的 [`viewMode`](/zh-TW/settings#available-settings) 設定 | `claude --verbose` |120| `--verbose` | 啟用詳細記錄,顯示完整的逐轉輸出。覆蓋此工作階段的 [`viewMode`](/zh-TW/settings#available-settings) 設定 | `claude --verbose` |

119| `--version`, `-v` | 輸出版本號 | `claude -v` |121| `--version``-v` | 輸出版本號 | `claude -v` |

120| `--worktree`, `-w` | 在隔離的 [git worktree](/zh-TW/worktrees) 中啟動 Claude,位於 `<repo>/.claude/worktrees/<name>`。如果未提供名稱,則會自動產生一個。傳遞 `#<number>` 或 GitHub 提取請求 URL 以從 `origin` 擷取該 PR 並從它分支 worktree | `claude -w feature-auth` |122| `--worktree``-w` | 在隔離的 [git worktree](/zh-TW/worktrees) 中啟動 Claude,位於 `<repo>/.claude/worktrees/<name>`。如果未提供名稱,則會自動產生一個。傳遞 `#<number>` 或 GitHub 提取請求 URL 以從 `origin` 擷取該 PR 並從它分支 worktree | `claude -w feature-auth` |

121 123 

122<h3 id="system-prompt-flags">124<h3 id="system-prompt-flags">

123 系統提示旗標125 系統提示旗標

code-review.md +67 −25

Details

30 要在本地終端中審查差異而無需安裝 GitHub App,請在任何 Claude Code 工作階段中運行 `/code-review` 命令。請參閱[在本地審查差異](#review-a-diff-locally)。30 要在本地終端中審查差異而無需安裝 GitHub App,請在任何 Claude Code 工作階段中運行 `/code-review` 命令。請參閱[在本地審查差異](#review-a-diff-locally)。

31</Note>31</Note>

32 32 

33## 審查如何運作33<h2 id="how-reviews-work">

34 審查如何運作

35</h2>

34 36 

35一旦管理員為您的組織[啟用 Code Review](#set-up-code-review),審查將在 PR 開啟時、每次推送時或手動請求時觸發,具體取決於存儲庫的配置行為。在任何模式下,評論 `@claude review` [在 PR 上啟動審查](#manually-trigger-reviews)。37一旦管理員為您的組織[啟用 Code Review](#set-up-code-review),審查將在 PR 開啟時、每次推送時或手動請求時觸發,具體取決於存儲庫的配置行為。在任何模式下,評論 `@claude review` [在 PR 上啟動審查](#manually-trigger-reviews)。

36 38 


38 40 

39審查成本隨著 PR 大小和複雜性而擴展,平均在 20 分鐘內完成。管理員可以通過[分析儀表板](#view-usage)監控審查活動和支出。41審查成本隨著 PR 大小和複雜性而擴展,平均在 20 分鐘內完成。管理員可以通過[分析儀表板](#view-usage)監控審查活動和支出。

40 42 

41### 嚴重程度級別43<h3 id="severity-levels">

44 嚴重程度級別

45</h3>

42 46 

43每個發現都標記有嚴重程度級別:47每個發現都標記有嚴重程度級別:

44 48 


50 54 

51發現包括可折疊的擴展推理部分,您可以展開以了解 Claude 為什麼標記該問題以及它如何驗證問題。55發現包括可折疊的擴展推理部分,您可以展開以了解 Claude 為什麼標記該問題以及它如何驗證問題。

52 56 

53### 對發現進行評分和回覆57<h3 id="rate-and-reply-to-findings">

58 對發現進行評分和回覆

59</h3>

54 60 

55每個來自 Claude 的審查評論都已附加 👍 和 👎,因此兩個按鈕都會在 GitHub UI 中出現,以便一鍵評分。如果發現有用,請點擊 👍;如果發現錯誤或嘈雜,請點擊 👎。Anthropic 在 PR 合併後收集反應計數,並使用它們來調整審查者。反應不會觸發重新審查或更改 PR 上的任何內容。61每個來自 Claude 的審查評論都已附加 👍 和 👎,因此兩個按鈕都會在 GitHub UI 中出現,以便一鍵評分。如果發現有用,請點擊 👍;如果發現錯誤或嘈雜,請點擊 👎。Anthropic 在 PR 合併後收集反應計數,並使用它們來調整審查者。反應不會觸發重新審查或更改 PR 上的任何內容。

56 62 

57回覆內聯評論不會提示 Claude 回應或更新 PR。要對發現採取行動,請修復程式碼並推送。如果 PR 訂閱了推送觸發的審查,下一次運行將在問題修復時解決線程。要在不推送的情況下請求新審查,請作為[頂級 PR 評論](#manually-trigger-reviews)評論 `@claude review once`。63回覆內聯評論不會提示 Claude 回應或更新 PR。要對發現採取行動,請修復程式碼並推送。如果 PR 訂閱了推送觸發的審查,下一次運行將在問題修復時解決線程。要在不推送的情況下請求新審查,請作為[頂級 PR 評論](#manually-trigger-reviews)評論 `@claude review once`。

58 64 

59### 檢查運行輸出65<h3 id="check-run-output">

66 檢查運行輸出

67</h3>

60 68 

61除了內聯審查評論外,每次審查都會填充 **Claude Code Review** 檢查運行,該運行與您的 CI 檢查一起出現。展開其 **Details** 連結以在一個地方查看每個發現的摘要,按嚴重程度排序:69除了內聯審查評論外,每次審查都會填充 **Claude Code Review** 檢查運行,該運行與您的 CI 檢查一起出現。展開其 **Details** 連結以在一個地方查看每個發現的摘要,按嚴重程度排序:

62 70 


76 84 

77這返回一個 JSON 對象,其中包含每個嚴重程度的計數,例如 `{"normal": 2, "nit": 1, "pre_existing": 0}`。`normal` 鍵保存重要發現的計數;非零值意味著 Claude 發現至少一個值得在合併前修復的錯誤。85這返回一個 JSON 對象,其中包含每個嚴重程度的計數,例如 `{"normal": 2, "nit": 1, "pre_existing": 0}`。`normal` 鍵保存重要發現的計數;非零值意味著 Claude 發現至少一個值得在合併前修復的錯誤。

78 86 

79### Code Review 檢查的內容87<h3 id="what-code-review-checks">

88 Code Review 檢查的內容

89</h3>

80 90 

81默認情況下,Code Review 專注於正確性:會破壞生產的錯誤,而不是格式設置偏好或缺失的測試覆蓋。您可以通過[添加指導文件](#customize-reviews)到您的存儲庫來擴展它檢查的內容。91默認情況下,Code Review 專注於正確性:會破壞生產的錯誤,而不是格式設置偏好或缺失的測試覆蓋。您可以通過[添加指導文件](#customize-reviews)到您的存儲庫來擴展它檢查的內容。

82 92 

83## 設定 Code Review93<h2 id="set-up-code-review">

94 設定 Code Review

95</h2>

84 96 

85管理員為組織啟用 Code Review 一次,並選擇要包含的存儲庫。97管理員為組織啟用 Code Review 一次,並選擇要包含的存儲庫。

86 98 


122 134 

123要驗證設定,請開啟測試 PR。如果您選擇了自動觸發器,名為 **Claude Code Review** 的檢查運行會在幾分鐘內出現。如果您選擇了手動,在 PR 上評論 `@claude review` 以開始第一次審查。如果沒有檢查運行出現,請確認存儲庫列在您的管理員設定中,並且 Claude GitHub App 有權存取它。135要驗證設定,請開啟測試 PR。如果您選擇了自動觸發器,名為 **Claude Code Review** 的檢查運行會在幾分鐘內出現。如果您選擇了手動,在 PR 上評論 `@claude review` 以開始第一次審查。如果沒有檢查運行出現,請確認存儲庫列在您的管理員設定中,並且 Claude GitHub App 有權存取它。

124 136 

125## 手動觸發審查137<h2 id="manually-trigger-reviews">

138 手動觸發審查

139</h2>

126 140 

127兩個評論命令按需啟動審查。無論存儲庫的配置觸發器如何,兩者都有效,因此您可以使用它們在手動模式下選擇特定 PR 進行審查,或在其他模式下獲得立即重新審查。141兩個評論命令按需啟動審查。無論存儲庫的配置觸發器如何,兩者都有效,因此您可以使用它們在手動模式下選擇特定 PR 進行審查,或在其他模式下獲得立即重新審查。

128 142 


144 158 

145如果該 PR 上已有審查正在運行,請求將排隊直到進行中的審查完成。您可以通過 PR 上的檢查運行監控進度。159如果該 PR 上已有審查正在運行,請求將排隊直到進行中的審查完成。您可以通過 PR 上的檢查運行監控進度。

146 160 

147## 自訂審查161<h2 id="customize-reviews">

162 自訂審查

163</h2>

148 164 

149Code Review 從您的存儲庫讀取兩個文件來指導它標記的內容。它們在強度上有所不同:165Code Review 從您的存儲庫讀取兩個文件來指導它標記的內容。它們在強度上有所不同:

150 166 

151* **`CLAUDE.md`**:Claude Code 用於所有任務的共享項目指令,不僅僅是審查。Code Review 將其讀取為項目背景,並將新引入的違規標記為細節。167* **`CLAUDE.md`**:Claude Code 用於所有任務的共享項目指令,不僅僅是審查。Code Review 將其讀取為項目背景,並將新引入的違規標記為細節。

152* **`REVIEW.md`**:僅審查指導,直接注入到審查管道中每個代理的系統提示中作為最高優先級。使用它來改變標記的內容、嚴重程度以及發現的報告方式。168* **`REVIEW.md`**:僅審查指導,直接注入到審查管道中每個代理的系統提示中作為最高優先級。使用它來改變標記的內容、嚴重程度以及發現的報告方式。

153 169 

154### CLAUDE.md170<h3 id="claude-md">

171 CLAUDE.md

172</h3>

155 173 

156Code Review 讀取您存儲庫的 `CLAUDE.md` 文件,並將新引入的違規視為 [細節級別](#severity-levels) 的發現。這是雙向工作的:如果您的 PR 以使 `CLAUDE.md` 陳述過時的方式更改程式碼,Claude 會標記文件需要更新。174Code Review 讀取您存儲庫的 `CLAUDE.md` 文件,並將新引入的違規視為 [細節級別](#severity-levels) 的發現。這是雙向工作的:如果您的 PR 以使 `CLAUDE.md` 陳述過時的方式更改程式碼,Claude 會標記文件需要更新。

157 175 


159 177 

160對於您不想應用於一般 Claude Code 會話的審查特定指導,請改用 [`REVIEW.md`](#review-md)。178對於您不想應用於一般 Claude Code 會話的審查特定指導,請改用 [`REVIEW.md`](#review-md)。

161 179 

162### REVIEW\.md180<h3 id="review-md">

181 REVIEW\.md

182</h3>

163 183 

164`REVIEW.md` 是位於您存儲庫根目錄的文件,它覆蓋 Code Review 在您的存儲庫上的行為方式。其內容被注入到審查管道中每個代理的系統提示中作為最高優先級指令塊,優先於默認審查指導。184`REVIEW.md` 是位於您存儲庫根目錄的文件,它覆蓋 Code Review 在您的存儲庫上的行為方式。其內容被注入到審查管道中每個代理的系統提示中作為最高優先級指令塊,優先於默認審查指導。

165 185 

166因為它是逐字粘貼的,`REVIEW.md` 是純指令:[`@` 導入語法](/zh-TW/memory#import-additional-files) 不會展開,引用的文件不會讀入提示中。將您想要強制執行的規則直接放在文件中。186因為它是逐字粘貼的,`REVIEW.md` 是純指令:[`@` 導入語法](/zh-TW/memory#import-additional-files) 不會展開,引用的文件不會讀入提示中。將您想要強制執行的規則直接放在文件中。

167 187 

168#### 您可以調整什麼188<h4 id="what-you-can-tune">

189 您可以調整什麼

190</h4>

169 191 

170`REVIEW.md` 是自由格式的 markdown,因此任何您可以表達為審查指令的內容都在範圍內。下面的模式在實踐中影響最大。192`REVIEW.md` 是自由格式的 markdown,因此任何您可以表達為審查指令的內容都在範圍內。下面的模式在實踐中影響最大。

171 193 


183 205 

184**摘要形狀**:要求審查正文以一行計數開頭,例如 `2 factual, 4 style`,並在這種情況下以「沒有事實問題」開頭。作者想在詳細信息之前知道工作的形狀。206**摘要形狀**:要求審查正文以一行計數開頭,例如 `2 factual, 4 style`,並在這種情況下以「沒有事實問題」開頭。作者想在詳細信息之前知道工作的形狀。

185 207 

186#### 示例208<h4 id="example">

209 示例

210</h4>

187 211 

188此 `REVIEW.md` 為後端服務重新校準嚴重程度,限制細節,跳過生成的文件,並添加存儲庫特定檢查。212此 `REVIEW.md` 為後端服務重新校準嚴重程度,限制細節,跳過生成的文件,並添加存儲庫特定檢查。

189 213 


211- 數據庫查詢的範圍限於調用者的租戶235- 數據庫查詢的範圍限於調用者的租戶

212```236```

213 237 

214#### 保持專注238<h4 id="keep-it-focused">

239 保持專注

240</h4>

215 241 

216長度有成本:長 `REVIEW.md` 會稀釋最重要的規則。將其保留為改變審查行為的指令,並將一般項目背景留在 `CLAUDE.md` 中。242長度有成本:長 `REVIEW.md` 會稀釋最重要的規則。將其保留為改變審查行為的指令,並將一般項目背景留在 `CLAUDE.md` 中。

217 243 

218## 查看使用情況244<h2 id="view-usage">

245 查看使用情況

246</h2>

219 247 

220前往 [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review) 查看整個組織的 Code Review 活動。儀表板顯示:248前往 [claude.ai/analytics/code-review](https://claude.ai/analytics/code-review) 查看整個組織的 Code Review 活動。儀表板顯示:

221 249 


228 256 

229管理員設定中的存儲庫表也顯示每個存儲庫的平均審查成本。儀表板成本數字是用於監控活動的估計;對於發票準確的支出,請參閱您的 Anthropic 帳單。257管理員設定中的存儲庫表也顯示每個存儲庫的平均審查成本。儀表板成本數字是用於監控活動的估計;對於發票準確的支出,請參閱您的 Anthropic 帳單。

230 258 

231## 定價259<h2 id="pricing">

260 定價

261</h2>

232 262 

233Code Review 根據令牌使用情況計費。每次審查平均花費 \$15-25,隨著 PR 大小、程式碼庫複雜性和需要驗證的問題數量而擴展。Code Review 使用通過 [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) 單獨計費,不計入您計劃的包含使用情況。263Code Review 根據令牌使用情況計費。每次審查平均花費 \$15-25,隨著 PR 大小、程式碼庫複雜性和需要驗證的問題數量而擴展。Code Review 使用通過 [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) 單獨計費,不計入您計劃的包含使用情況。

234 264 


244 274 

245通過 [analytics](#view-usage) 中的每週成本圖表或管理員設定中的每個存儲庫平均成本列監控支出。275通過 [analytics](#view-usage) 中的每週成本圖表或管理員設定中的每個存儲庫平均成本列監控支出。

246 276 

247## 故障排除277<h2 id="troubleshooting">

278 故障排除

279</h2>

248 280 

249審查運行是盡力而為的。失敗的運行永遠不會阻止您的 PR,但它也不會自動重試。本部分涵蓋如何從失敗的運行中恢復,以及在檢查運行報告您找不到的問題時在哪裡查看。281審查運行是盡力而為的。失敗的運行永遠不會阻止您的 PR,但它也不會自動重試。本部分涵蓋如何從失敗的運行中恢復,以及在檢查運行報告您找不到的問題時在哪裡查看。

250 282 

251### 重新觸發失敗或超時的審查283<h3 id="retrigger-a-failed-or-timed-out-review">

284 重新觸發失敗或超時的審查

285</h3>

252 286 

253當審查基礎設施遇到內部錯誤或超過其時間限制時,檢查運行完成,標題為 **Code review encountered an error** 或 **Code review timed out**。結論仍然是中立的,因此沒有任何東西阻止您的合併,但沒有發現被發佈。287當審查基礎設施遇到內部錯誤或超過其時間限制時,檢查運行完成,標題為 **Code review encountered an error** 或 **Code review timed out**。結論仍然是中立的,因此沒有任何東西阻止您的合併,但沒有發現被發佈。

254 288 


256 290 

257GitHub 的 Checks 標籤中的 **Re-run** 按鈕不會重新觸發 Code Review。改用評論命令或新推送。291GitHub 的 Checks 標籤中的 **Re-run** 按鈕不會重新觸發 Code Review。改用評論命令或新推送。

258 292 

259### 審查未運行,PR 顯示支出上限消息293<h3 id="review-didn’t-run-and-the-pr-shows-a-spend-cap-message">

294 審查未運行,PR 顯示支出上限消息

295</h3>

260 296 

261當您的組織的月度支出上限達到時,Code Review 在 PR 上發佈單個評論,解釋審查被跳過。審查在下一個計費期開始時自動恢復,或當管理員在 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 提高上限時立即恢復。297當您的組織的月度支出上限達到時,Code Review 在 PR 上發佈單個評論,解釋審查被跳過。審查在下一個計費期開始時自動恢復,或當管理員在 [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) 提高上限時立即恢復。

262 298 

263### 查找未顯示為內聯評論的問題299<h3 id="find-issues-that-aren’t-showing-as-inline-comments">

300 查找未顯示為內聯評論的問題

301</h3>

264 302 

265如果檢查運行標題說發現了問題,但您在差異上看不到內聯審查評論,請在這些其他位置查看發現的位置:303如果檢查運行標題說發現了問題,但您在差異上看不到內聯審查評論,請在這些其他位置查看發現的位置:

266 304 


268* **Files changed annotations**:在 PR 上打開 **Files changed** 標籤。發現呈現為直接附加到差異行的註釋,與審查評論分開。306* **Files changed annotations**:在 PR 上打開 **Files changed** 標籤。發現呈現為直接附加到差異行的註釋,與審查評論分開。

269* **Review body**:如果您在審查運行時推送到 PR,某些發現可能引用當前差異中不再存在的行。這些出現在審查正文文本中的 **Additional findings** 標題下,而不是作為內聯評論。307* **Review body**:如果您在審查運行時推送到 PR,某些發現可能引用當前差異中不再存在的行。這些出現在審查正文文本中的 **Additional findings** 標題下,而不是作為內聯評論。

270 308 

271## 在本地審查差異309<h2 id="review-a-diff-locally">

310 在本地審查差異

311</h2>

272 312 

273[`/code-review` 命令](/zh-TW/commands)在您的終端中審查差異,無需安裝 GitHub App。在任何 Claude Code 工作階段中運行它:它報告當前差異中的正確性錯誤和 {/* min-version: 2.1.151 */}重用、簡化和效率清理。傳遞 `--comment` 以將發現結果作為內聯 PR 評論發佈,或傳遞 `--fix` 以在審查後將發現結果應用到您的工作樹。313[`/code-review` 命令](/zh-TW/commands)在您的終端中審查差異,無需安裝 GitHub App。在任何 Claude Code 工作階段中運行它:它報告正確性錯誤和 {/* min-version: 2.1.151 */}重用、簡化和效率清理。預設情況下,本地審查涵蓋您分支相對於其上游的提交,加上工作樹中的任何未提交變更。傳遞 `--comment` 以將發現結果作為內聯 PR 評論發佈,或傳遞 `--fix` 以在審查後將發現結果應用到您的工作樹。

274 314 

275較低的[努力級別](/zh-TW/model-config#adjust-effort-level)返回較少、更高信心的發現,而 `high` 到 `max` 提供更廣泛的覆蓋範圍,可能包括不確定的發現。沒有努力參數,審查使用工作階段的當前努力。傳遞路徑或 PR 參考以審查特定目標而不是當前差異315較低的[努力級別](/zh-TW/model-config#adjust-effort-level)返回較少、更高信心的發現,而 `high` 到 `max` 提供更廣泛的覆蓋範圍,可能包括不確定的發現。沒有努力參數時,審查使用工作階段的當前努力。若要審查預設差異以外的內容,請傳遞目標:檔案路徑、PR 編號、分支名稱或參考範圍,例如 `main...my-feature`參考範圍形式審查從 `my-feature` 到 `main` 的提取請求將包含的已提交差異,無論分支的上游如何配置。

276 316 

277`/code-review ultra --fix` 在雲中運行更深入的 [ultrareview](/zh-TW/ultrareview),然後在它們到達您的工作階段時將其發現結果應用到您的工作樹。317`/code-review ultra --fix` 在雲中運行更深入的 [ultrareview](/zh-TW/ultrareview),然後在它們到達您的工作階段時將其發現結果應用到您的工作樹。Ultrareview 使用其自己的範圍:您的當前分支相對於儲存庫的預設分支,加上工作樹中的任何未提交和已暫存變更。

278 318 

279該命令在 v2.1.147 之前被命名為 `/simplify`,當時它默認應用修復。{/* min-version: 2.1.154 */}從 v2.1.154 開始,`/simplify` 運行單獨的僅清理審查,該審查應用修復而不尋找錯誤。如果您編寫了 `/simplify` 用於尋找錯誤,請切換到 `/code-review --fix`,它保持不變。319該命令在 v2.1.147 之前被命名為 `/simplify`,當時它預設應用修復。{/* min-version: 2.1.154 */}從 v2.1.154 開始,`/simplify` 運行單獨的僅清理審查,該審查應用修復而不尋找錯誤。如果您編寫了 `/simplify` 用於尋找錯誤,請切換到 `/code-review --fix`,它保持不變。

280 320 

281## 相關資源321<h2 id="related-resources">

322 相關資源

323</h2>

282 324 

283Code Review 設計用於與 Claude Code 的其餘部分一起工作。如果您想在開啟 PR 之前在本地運行審查、需要自託管設定,或想深入了解 `CLAUDE.md` 如何在工具中塑造 Claude 的行為,這些頁面是很好的下一步:325Code Review 設計用於與 Claude Code 的其餘部分一起工作。如果您想在開啟 PR 之前在本地運行審查、需要自託管設定,或想深入了解 `CLAUDE.md` 如何在工具中塑造 Claude 的行為,這些頁面是很好的下一步:

284 326 

commands.md +25 −14

Details

12 12 

13命令只有在您的訊息開始時才會被識別。命令名稱後面的文字會作為引數傳遞給它。13命令只有在您的訊息開始時才會被識別。命令名稱後面的文字會作為引數傳遞給它。

14 14 

15## 典型工作流程中的命令15<h2 id="commands-across-a-typical-workflow">

16 典型工作流程中的命令

17</h2>

16 18 

17大多數命令在工作階段的特定時刻很有用,從設定專案到推送變更。19大多數命令在工作階段的特定時刻很有用,從設定專案到推送變更。

18 20 


28 30 

29**當出現問題時。** `/rewind` 將程式碼和對話倒帶到 checkpoint,或總結對話的一部分。`/doctor` 和 `/debug` 診斷安裝和執行時問題,`/feedback` 報告附加工作階段上下文的錯誤。31**當出現問題時。** `/rewind` 將程式碼和對話倒帶到 checkpoint,或總結對話的一部分。`/doctor` 和 `/debug` 診斷安裝和執行時問題,`/feedback` 報告附加工作階段上下文的錯誤。

30 32 

31## 所有命令33<h2 id="all-commands">

34 所有命令

35</h2>

32 36 

33下表列出了 Claude Code 中包含的所有命令。大多數是內建命令,其行為被編碼到 CLI 中。有兩種項目被標記:37下表列出了 Claude Code 中包含的所有命令。大多數是內建命令,其行為被編碼到 CLI 中。有兩種項目被標記:

34 38 


46| 命令 | 用途 |50| 命令 | 用途 |

47| :--------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |51| :--------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `/add-dir <path>` | 為目前工作階段期間的檔案存取添加工作目錄。大多數 `.claude/` 配置[未從添加的目錄發現](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)。您可以稍後使用 `--continue` 或 `--resume` 從添加的目錄繼續工作階段 |52| `/add-dir <path>` | 為目前工作階段期間的檔案存取添加工作目錄。大多數 `.claude/` 配置[未從添加的目錄發現](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration)。您可以稍後使用 `--continue` 或 `--resume` 從添加的目錄繼續工作階段 |

53| `/advisor [model\|off]` | {/* min-version: 2.1.98 */}啟用或停用[顧問工具](/zh-TW/advisor),它在工作期間的關鍵時刻諮詢第二個模型以獲得指導。接受 `opus`、`sonnet`、`fable`({/* min-version: 2.1.170 */}v2.1.170+)或完整的模型 ID。不帶引數時,開啟選擇器。需要 Claude Code v2.1.98 或更新版本 |

49| `/agents` | 管理 [agent](/zh-TW/sub-agents) 配置 |54| `/agents` | 管理 [agent](/zh-TW/sub-agents) 配置 |

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) |55| `/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) |

51| `/background [prompt]` | 分離目前的工作階段以作為[背景 agent](/zh-TW/agent-view) 運行並釋放此終端機。傳遞提示以在分離前發送一個額外的指示。使用 `claude agents` 監視工作階段。別名:`/bg` |56| `/background [prompt]` | 分離目前的工作階段以作為[背景 agent](/zh-TW/agent-view) 運行並釋放此終端機。傳遞提示以在分離前發送一個額外的指示。使用 `claude agents` 監視工作階段。別名:`/bg` |

52| `/batch <instruction>` | **[Skill](/zh-TW/skills#bundled-skills).** 在整個程式碼庫中並行協調大規模變更。研究程式碼庫,將工作分解為 5 到 30 個獨立單位,並呈現計劃。獲得批准後,在隔離的 [git worktree](/zh-TW/worktrees) 中為每個單位生成一個背景 subagent。每個 subagent 實現其單位、運行測試並開啟 pull request。需要 git 存放庫。示例:`/batch migrate src/ from Solid to React` |57| `/batch <instruction>` | **[Skill](/zh-TW/skills#bundled-skills).** 在整個程式碼庫中並行協調大規模變更。研究程式碼庫,將工作分解為 5 到 30 個獨立單位,並呈現計劃。獲得批准後,在隔離的 [git worktree](/zh-TW/worktrees) 中為每個單位生成一個背景 subagent。每個 subagent 實現其單位、運行測試並開啟 pull request。需要 git 存放庫。示例:`/batch migrate src/ from Solid to React` |

53| `/branch [name]` | 在此時刻建立目前對話的分支。切換到分支並保留原始分支,您可以使用 `/resume` 返回。別名:`/fork`。當設定 [`CLAUDE_CODE_FORK_SUBAGENT`](/zh-TW/env-vars) ,`/fork` 改為生成[分叉的 subagent](/zh-TW/sub-agents#fork-the-current-conversation),不再是此命令的別名 |58| `/branch [name]` | 在此時刻建立目前對話的分支,以便您可以嘗試不同的方向而不會失去目前的對話。切換到分支並保留原始分支,您可以使用 `/resume` 返回。若要將側邊工作交給背景 subagent 而不是自己切換到副本請使用 `/fork` |

54| `/btw <question>` | 提出快速[側邊問題](/zh-TW/interactive-mode#side-questions-with-%2Fbtw),無需添加到對話中 |59| `/btw <question>` | 提出快速[側邊問題](/zh-TW/interactive-mode#side-questions-with-%2Fbtw),無需添加到對話中 |

60| `/cd <path>` | {/* min-version: 2.1.169 */}將此工作階段移動到新的工作目錄。對話的提示快取被保留:新目錄的 [`CLAUDE.md`](/zh-TW/memory) 被附加為訊息,而不是重建系統提示。工作階段被重新定位到新目錄的專案儲存,因此 `--resume` 和 `--continue` 從那裡找到它。如果您之前未在該目錄中工作過,會提示您信任該目錄。若要授予對額外目錄的存取權而不移動工作階段,請使用 `/add-dir`。使用 [`Cd` 權限規則](/zh-TW/permissions#cd)限制或停用 `/cd` 目標。需要 Claude Code v2.1.169 或更新版本;較早的版本報告 `Unknown command: /cd` |

55| `/chrome` | 配置 [Chrome 中的 Claude](/zh-TW/chrome) 設定 |61| `/chrome` | 配置 [Chrome 中的 Claude](/zh-TW/chrome) 設定 |

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 |62| `/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 |

57| `/clear [name]` | 使用空上下文開始新對話。上一個對話在 `/resume` 中保持可用。傳遞名稱以在 `/resume` 選擇器中標記上一個對話。若要在繼續同一對話時釋放上下文,請改用 `/compact`。別名:`/reset`、`/new` |63| `/clear [name]` | 使用空上下文開始新對話。上一個對話在 `/resume` 中保持可用。傳遞名稱以在 `/resume` 選擇器中標記上一個對話。若要在繼續同一對話時釋放上下文,請改用 `/compact`。別名:`/reset`、`/new` |


74| `/feedback [report]` | 提交意見反應、報告錯誤或分享您的對話。別名:`/bug`、`/share` |80| `/feedback [report]` | 提交意見反應、報告錯誤或分享您的對話。別名:`/bug`、`/share` |

75| `/fewer-permission-prompts` | **[Skill](/zh-TW/skills#bundled-skills).** 掃描您的記錄以查找常見的唯讀 Bash 和 MCP 工具呼叫,然後將優先允許清單添加到專案 `.claude/settings.json` 以減少權限提示 |81| `/fewer-permission-prompts` | **[Skill](/zh-TW/skills#bundled-skills).** 掃描您的記錄以查找常見的唯讀 Bash 和 MCP 工具呼叫,然後將優先允許清單添加到專案 `.claude/settings.json` 以減少權限提示 |

76| `/focus` | 切換焦點檢視,僅顯示您的最後一個提示、帶有編輯 diffstats 的單行工具呼叫摘要和最終回應。選擇在工作階段之間保持。僅在[全螢幕渲染](/zh-TW/fullscreen)中可用 |82| `/focus` | 切換焦點檢視,僅顯示您的最後一個提示、帶有編輯 diffstats 的單行工具呼叫摘要和最終回應。選擇在工作階段之間保持。僅在[全螢幕渲染](/zh-TW/fullscreen)中可用 |

83| `/fork <directive>` | {/* min-version: 2.1.161 */}生成一個[分叉的 subagent](/zh-TW/sub-agents#fork-the-current-conversation):一個背景 subagent,繼承完整的對話並在指令上工作,同時您繼續進行。其結果在完成時返回到您的對話。若要自己切換到對話的副本,請使用 `/branch`。在 v2.1.161 之前,`/fork` 是 `/branch` 的別名 |

77| `/goal [condition\|clear]` | 設定[目標](/zh-TW/goal):Claude 在各個回合中持續工作,直到滿足條件。不帶引數時,顯示目前或最近達成的目標。`clear`、`stop`、`off`、`reset`、`none` 或 `cancel` 會提前移除活躍的目標 |84| `/goal [condition\|clear]` | 設定[目標](/zh-TW/goal):Claude 在各個回合中持續工作,直到滿足條件。不帶引數時,顯示目前或最近達成的目標。`clear`、`stop`、`off`、`reset`、`none` 或 `cancel` 會提前移除活躍的目標 |

78| `/heapdump` | 將 JavaScript 堆快照和記憶體分解寫入 `~/Desktop`,或在沒有 Desktop 資料夾的 Linux 上寫入您的主目錄,以診斷高記憶體使用情況。請參閱[故障排除](/zh-TW/troubleshooting#high-cpu-or-memory-usage) |85| `/heapdump` | 將 JavaScript 堆快照和記憶體分解寫入 `~/Desktop`,或在沒有 Desktop 資料夾的 Linux 上寫入您的主目錄,以診斷高記憶體使用情況。請參閱[故障排除](/zh-TW/troubleshooting#high-cpu-or-memory-usage) |

79| `/help` | 顯示說明和可用命令 |86| `/help` | 顯示說明和可用命令 |


83| `/insights` | 產生報告,分析您的 Claude Code 工作階段,包括專案領域、互動模式和摩擦點 |90| `/insights` | 產生報告,分析您的 Claude Code 工作階段,包括專案領域、互動模式和摩擦點 |

84| `/install-github-app` | 為存放庫設定 [Claude GitHub Actions](/zh-TW/github-actions) 應用程式。引導您選擇存放庫並配置整合 |91| `/install-github-app` | 為存放庫設定 [Claude GitHub Actions](/zh-TW/github-actions) 應用程式。引導您選擇存放庫並配置整合 |

85| `/install-slack-app` | 安裝 Claude Slack 應用程式。開啟瀏覽器以完成 OAuth 流程 |92| `/install-slack-app` | 安裝 Claude Slack 應用程式。開啟瀏覽器以完成 OAuth 流程 |

86| `/keybindings` | 開啟或建立您的快捷鍵配置檔案 |93| `/keybindings` | 開啟您的[快捷鍵](/zh-TW/keybindings)檔案 |

87| `/login` | 登入您的 Anthropic 帳戶 |94| `/login` | 登入您的 Anthropic 帳戶 |

88| `/logout` | 登出您的 Anthropic 帳戶 |95| `/logout` | 登出您的 Anthropic 帳戶 |

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` |96| `/loop [interval] [prompt]` | **[Skill](/zh-TW/skills#bundled-skills).** 在工作階段保持開啟時重複執行提示。省略間隔,Claude 會在迭代之間自動調整步調。省略提示,[如果可用](/zh-TW/scheduled-tasks#run-the-built-in-maintenance-prompt)Claude 運行自主維護檢查或 `.claude/loop.md` 中的提示。示例:`/loop 5m check if the deploy finished`。請參閱[按計劃運行提示](/zh-TW/scheduled-tasks)。別名:`/proactive` |

90| `/mcp` | 管理 MCP 伺服器連線和 OAuth 驗證 |97| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | 管理 MCP 伺服器連線和 OAuth 驗證。不帶引數執行以開啟互動式清單,傳遞 `reconnect <server>` 以重新連接一個已斷開連接的伺服器,或傳遞 `enable`/`disable` 與伺服器名稱或 `all` 以在不開啟對話框的情況下變更連接狀態 |

91| `/memory` | 編輯 `CLAUDE.md` 記憶體檔案、啟用或停用[自動記憶體](/zh-TW/memory#auto-memory),以及檢視自動記憶體項目 |98| `/memory` | 編輯 `CLAUDE.md` 記憶體檔案、啟用或停用[自動記憶體](/zh-TW/memory#auto-memory),以及檢視自動記憶體項目 |

92| `/mobile` | 顯示 QR 碼以下載 Claude 行動應用程式。別名:`/ios`、`/android` |99| `/mobile` | 顯示 QR 碼以下載 Claude 行動應用程式。別名:`/ios`、`/android` |

93| `/model [model]` | 切換 AI 模型並將其儲存為新工作階段的預設值。對於支援此功能的模型,使用左/右箭頭以[調整努力程度](/zh-TW/model-config#adjust-effort-level)。不帶引數時,開啟選擇器;在列上按 `s` 以僅為目前工作階段切換。當對話有先前輸出時,選擇器會要求確認,因為下一個回應會重新讀取完整歷史記錄而不使用快取上下文。確認後,變更立即應用,無需等待目前回應完成 |100| `/model [model]` | 切換 AI 模型並將其儲存為新工作階段的預設值。對於支援此功能的模型,使用左/右箭頭以[調整努力程度](/zh-TW/model-config#adjust-effort-level)。不帶引數時,開啟選擇器;在列上按 `s` 以僅為目前工作階段切換。當對話有先前輸出時,選擇器會要求確認,因為下一個回應會重新讀取完整歷史記錄而不使用快取上下文。確認後,變更立即應用,無需等待目前回應完成 |

94| `/passes` | 與朋友分享免費一週的 Claude Code。僅在您的帳戶符合資格時可見 |101| `/passes` | 與朋友分享免費一週的 Claude Code。僅在您的帳戶符合資格時可見 |

95| `/permissions` | 管理工具權限的允許、詢問和拒絕規則。開啟互動式對話框,您可以按範圍檢視規則、添加或移除規則、管理工作目錄,以及檢視[最近的自動模式拒絕](/zh-TW/auto-mode-config#review-denials)。別名:`/allowed-tools` |102| `/permissions` | 管理工具權限的允許、詢問和拒絕規則。開啟互動式對話框,您可以按範圍檢視規則、添加或移除規則、管理工作目錄,以及檢視[最近的自動模式拒絕](/zh-TW/auto-mode-config#review-denials)。別名:`/allowed-tools` |

96| `/plan [description]` | 直接從提示進入 Plan Mode。傳遞可選的描述以進入 Plan Mode 並立即開始該工作,例如 `/plan fix the auth bug` |103| `/plan [description]` | 直接從提示進入 Plan Mode。傳遞可選的描述以進入 Plan Mode 並立即開始該工作,例如 `/plan fix the auth bug` |

97| `/plugin` | 管理 Claude Code [plugins](/zh-TW/plugins) |104| `/plugin [subcommand]` | 管理 Claude Code [plugins](/zh-TW/plugins)。不帶引數執行以開啟 plugin 選單,或傳遞子命令如 `list`、`install`、`enable` 或 `disable` 以直接執行 |

98| `/powerup` | 通過具有動畫演示的快速互動式課程探索 Claude Code 功能 |105| `/powerup` | 通過具有動畫演示的快速互動式課程探索 Claude Code 功能 |

99| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}在 v2.1.91 中移除。直接詢問 Claude 以查看 pull request 評論。在較早的版本上,從 GitHub pull request 擷取並顯示評論;自動偵測目前分支的 PR,或傳遞 PR URL 或編號。需要 `gh` CLI |106| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}在 v2.1.91 中移除。直接詢問 Claude 以查看 pull request 評論。在較早的版本上,從 GitHub pull request 擷取並顯示評論;自動偵測目前分支的 PR,或傳遞 PR URL 或編號。需要 `gh` CLI |

100| `/privacy-settings` | 檢視和更新您的隱私設定。僅適用於 Pro 和 Max 方案訂閱者 |107| `/privacy-settings` | 檢視和更新您的隱私設定。僅適用於 Pro 和 Max 方案訂閱者 |

101| `/radio` | 在您的瀏覽器中開啟 Claude FM lo-fi 廣播。當沒有瀏覽器可用時列印串流 URL。在 Bedrock、Vertex 或 Foundry 上不可用 |108| `/radio` | 在您的瀏覽器中開啟 Claude FM lo-fi 廣播。當沒有瀏覽器可用時列印串流 URL。在 Bedrock、Vertex 或 Foundry 上不可用 |

102| `/recap` | 按需生成目前工作階段的單行摘要。請參閱[工作階段摘要](/zh-TW/interactive-mode#session-recap)以了解您離開後出現的自動摘要 |109| `/recap` | 按需生成目前工作階段的單行摘要。請參閱[工作階段摘要](/zh-TW/interactive-mode#session-recap)以了解您離開後出現的自動摘要 |

103| `/release-notes` | 在互動式版本選擇器中檢視變更日誌。選擇特定版本以查看其發行說明,或選擇顯示所有版本 |110| `/release-notes` | 在互動式版本選擇器中檢視變更日誌。選擇特定版本以查看其發行說明,或選擇顯示所有版本 |

104| `/reload-plugins` | 重新載入所有作用中的 [plugins](/zh-TW/plugins) 以套用待處理的變更,無需重新啟動。報告每個已重新載入的元件的計數,並標記任何載入錯誤 |111| `/reload-plugins [--force]` | 重新載入所有作用中的 [plugins](/zh-TW/plugins) 以套用待處理的變更,無需重新啟動。報告每個已重新載入的元件的計數,並標記任何載入錯誤。當重新載入會變更載入的 MCP 工具並使提示快取失效時,命令會警告並跳過,除非您傳遞 `--force` |

105| `/reload-skills` | {/* min-version: 2.1.152 */}重新掃描 [skill](/zh-TW/skills) 和命令目錄,以便在工作階段期間添加或更改的 skills 在磁碟上變得可用,無需重新啟動。報告有多少 skills 可用以及添加或移除了多少 |112| `/reload-skills` | {/* min-version: 2.1.152 */}重新掃描 [skill](/zh-TW/skills) 和命令目錄,以便在工作階段期間添加或更改的 skills 在磁碟上變得可用,無需重新啟動。報告有多少 skills 可用以及添加或移除了多少 |

106| `/remote-control` | 使此工作階段可從 claude.ai 進行[遠端控制](/zh-TW/remote-control)。別名:`/rc` |113| `/remote-control` | 使此工作階段可從 claude.ai 進行[遠端控制](/zh-TW/remote-control)。別名:`/rc` |

107| `/remote-env` | 為[使用 `--remote` 啟動的網頁工作階段](/zh-TW/claude-code-on-the-web#configure-your-environment)配置預設遠端環境 |114| `/remote-env` | 為[雲端 agents](/zh-TW/claude-code-on-the-web#configure-your-environment) 選擇預設環境 |

108| `/rename [name]` | 重新命名目前的工作階段並在提示列上顯示名稱。不使用名稱時,從對話歷史記錄自動產生名稱 |115| `/rename [name]` | 重新命名目前的工作階段並在提示列上顯示名稱。不使用名稱時,從對話歷史記錄自動產生名稱 |

109| `/resume [session]` | 按 ID 或名稱繼續對話,或開啟工作階段選擇器。自 v2.1.144 起,[背景工作階段](/zh-TW/agent-view)會在選擇器中顯示,標記為 `bg`。別名:`/continue` |116| `/resume [session]` | 按 ID 或名稱繼續對話,或開啟工作階段選擇器。自 v2.1.144 起,[背景工作階段](/zh-TW/agent-view)會在選擇器中顯示,標記為 `bg`。別名:`/continue` |

110| `/review [PR]` | 在您目前的工作階段中本地審閱 pull request。如需更深入的雲端審閱,請參閱 [`/code-review ultra`](/zh-TW/ultrareview) |117| `/review [PR]` | 在您目前的工作階段中本地審閱 pull request。如需更深入的雲端審閱,請參閱 [`/code-review ultra`](/zh-TW/ultrareview) |


124| `/statusline` | 配置 Claude Code 的[狀態列](/zh-TW/statusline)。描述您想要的內容,或不帶引數執行以從您的 shell 提示自動配置 |131| `/statusline` | 配置 Claude Code 的[狀態列](/zh-TW/statusline)。描述您想要的內容,或不帶引數執行以從您的 shell 提示自動配置 |

125| `/stickers` | 訂購 Claude Code 貼紙 |132| `/stickers` | 訂購 Claude Code 貼紙 |

126| `/stop` | 停止目前的[背景工作階段](/zh-TW/agent-view)。僅在附加到背景工作階段時可用;記錄和任何 worktree 都會保留。若要分離而不停止,請使用 `/exit` 或按 `←` |133| `/stop` | 停止目前的[背景工作階段](/zh-TW/agent-view)。僅在附加到背景工作階段時可用;記錄和任何 worktree 都會保留。若要分離而不停止,請使用 `/exit` 或按 `←` |

127| `/tasks` | 列出並管理背景工作。也可用作 `/bashes` |134| `/tasks` | 檢視並管理背景中運行的所有內容。也可用作 `/bashes` |

128| `/team-onboarding` | 從您的 Claude Code 使用歷史記錄產生團隊入職指南。Claude 分析您過去 30 天的工作階段、命令和 MCP 伺服器使用情況,並產生一份 markdown 指南,團隊成員可以貼上作為第一條訊息以快速設定。對於 claude.ai 上 Pro、Max、Team 和 Enterprise 方案的訂閱者,也會返回一個分享連結,團隊成員可以直接在 Claude Code 中開啟 |135| `/team-onboarding` | 從您的 Claude Code 使用歷史記錄產生團隊入職指南。Claude 分析您過去 30 天的工作階段、命令和 MCP 伺服器使用情況,並產生一份 markdown 指南,團隊成員可以貼上作為第一條訊息以快速設定。對於 claude.ai 上 Pro、Max、Team 和 Enterprise 方案的訂閱者,也會返回一個分享連結,團隊成員可以直接在 Claude Code 中開啟 |

129| `/teleport` | 將[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#from-web-to-terminal) 工作階段拉入此終端機:開啟選擇器,然後擷取分支和對話。也可用作 `/tp`。需要 claude.ai 訂閱 |136| `/teleport` | 將[網頁上的 Claude Code](/zh-TW/claude-code-on-the-web#from-web-to-terminal) 工作階段拉入此終端機:開啟選擇器,然後擷取分支和對話。也可用作 `/tp`。需要 claude.ai 訂閱 |

130| `/terminal-setup` | 為 Shift+Enter 和其他快捷鍵配置終端機快捷鍵。僅在需要它的終端機中可見,例如 VS Code、Cursor、Devin Desktop、Alacritty 或 Zed |137| `/terminal-setup` | 為 Shift+Enter 和其他快捷鍵配置終端機快捷鍵。僅在需要它的終端機中可見,例如 VS Code、Cursor、Devin Desktop、Alacritty 或 Zed |

131| `/theme` | 變更色彩主題。包括跟隨您終端機深色或淺色背景的 `auto` 選項、淺色和深色變體、色盲無障礙(daltonized)主題、ANSI 主題(使用您終端機的色彩調色盤),以及來自 `~/.claude/themes/` 或 plugins 的任何[自訂主題](/zh-TW/terminal-config#create-a-custom-theme) |138| `/theme` | 變更色彩主題。包括跟隨您終端機深色或淺色背景的 `auto` 選項、淺色和深色變體、色盲無障礙(daltonized)主題、ANSI 主題(使用您終端機的色彩調色盤),以及來自 `~/.claude/themes/` 或 plugins 的任何[自訂主題](/zh-TW/terminal-config#create-a-custom-theme) |

132| `/tui [default\|fullscreen]` | 設定終端機 UI 渲染器並使用您的對話完整重新啟動到它。`fullscreen` 啟用[無閃爍 alt-screen 渲染器](/zh-TW/fullscreen)。不帶引數時,列印作用中的渲染器 |139| `/tui [default\|fullscreen]` | 設定終端機 UI 渲染器並使用您的對話完整重新啟動到它。`fullscreen` 啟用[無閃爍 alt-screen 渲染器](/zh-TW/fullscreen)。不帶引數時,列印作用中的渲染器 |

133| `/ultraplan <prompt>` | 在 [ultraplan](/zh-TW/ultraplan) 工作階段中草擬計劃,在您的瀏覽器中檢視它,然後遠端執行或將其發送回您的終端機 |140| `/ultraplan <prompt>` | 在 [ultraplan](/zh-TW/ultraplan) 工作階段中草擬計劃,在您的瀏覽器中檢視它,然後遠端執行或將其發送回您的終端機 |

134| `/ultrareview [PR]` | 在雲端沙箱中使用 [ultrareview](/zh-TW/ultrareview) 運行深度、多 agent 程式碼審閱。Pro 和 Max 上包括 3 次免費執行,然後需要[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |141| `/ultrareview [PR]` | 在雲端沙箱中使用 [ultrareview](/zh-TW/ultrareview) 運行深度、多 agent 程式碼審閱。首選的調用現在是 `/code-review ultra`,`/ultrareview` 保留為別名。Pro 和 Max 上包括 3 次免費執行,然後需要[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

135| `/upgrade` | 開啟升級頁面以切換到更高的方案層級 |142| `/upgrade` | 開啟升級頁面以切換到更高的方案層級 |

136| `/usage` | 顯示工作階段成本、方案使用限制和活動統計資訊。在 Pro、Max、Team 或 Enterprise 方案上,包括按 skill、subagent、plugin 和 MCP 伺服器的使用情況分解。請參閱[成本追蹤指南](/zh-TW/costs#using-the-%2Fusage-command)以了解詳細資訊。`/cost` 和 `/stats` 是別名 |143| `/usage` | 顯示工作階段成本、方案使用限制和活動統計資訊。在 Pro、Max、Team 或 Enterprise 方案上,包括按 skill、subagent、plugin 和 MCP 伺服器的使用情況分解。請參閱[成本追蹤指南](/zh-TW/costs#using-the-%2Fusage-command)以了解詳細資訊。`/cost` 和 `/stats` 是別名 |

137| `/usage-credits` | 配置使用量額度以在達到限制時繼續工作。先前為 `/extra-usage` |144| `/usage-credits` | 配置使用量額度以在達到限制時繼續工作。先前為 `/extra-usage` |


141| `/web-setup` | 使用您的本地 `gh` CLI 認證將您的 GitHub 帳戶連接到[網頁上的 Claude Code](/zh-TW/web-quickstart#connect-from-your-terminal)。如果 GitHub 未連接,`/schedule` 會自動提示此操作 |148| `/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)進度檢視以監視、暫停、繼續或儲存執行中和已完成的工作流 |149| `/workflows` | 開啟[工作流](/zh-TW/workflows#watch-the-run)進度檢視以監視、暫停、繼續或儲存執行中和已完成的工作流 |

143 150 

144## MCP prompts151<h2 id="mcp-prompts">

152 MCP prompts

153</h2>

145 154 

146MCP 伺服器可以公開顯示為命令的提示。這些使用 `/mcp__<server>__<prompt>` 格式,並從連接的伺服器動態發現。請參閱 [MCP prompts](/zh-TW/mcp#use-mcp-prompts-as-commands) 以了解詳細資訊。155MCP 伺服器可以公開顯示為命令的提示。這些使用 `/mcp__<server>__<prompt>` 格式,並從連接的伺服器動態發現。請參閱 [MCP prompts](/zh-TW/mcp#use-mcp-prompts-as-commands) 以了解詳細資訊。

147 156 

148## 另請參閱157<h2 id="see-also">

158 另請參閱

159</h2>

149 160 

150* [Skills](/zh-TW/skills):建立您自己的命令161* [Skills](/zh-TW/skills):建立您自己的命令

151* [Interactive mode](/zh-TW/interactive-mode):鍵盤快捷鍵、Vim 模式和命令歷史記錄162* [Interactive mode](/zh-TW/interactive-mode):鍵盤快捷鍵、Vim 模式和命令歷史記錄

Details

184 提示和技巧行銷活動184 提示和技巧行銷活動

185</h2>185</h2>

186 186 

187設計用於在推出後推動功能啟用的現成 Slack 或 Teams 訊息。每個都遵循相同的模式:一個鉤子、收益、一個 "現在嘗試" 提示和一個文件連結。在 `#claude-code` 中每週滴灌一兩個,或選擇與您團隊差距相符的少數幾個。它們獨立存在,沒有必需的順序。187設計用於在推出後推動功能啟用的現成 Slack 或 Teams 訊息。每個都遵循相同的模式:一個鉤子、收益、一個現在嘗試提示和一個文件連結。在 `#claude-code` 中每週滴灌一兩個,或選擇與您團隊差距相符的少數幾個。它們獨立存在,沒有必需的順序。

188 188 

189直接從每個區塊複製訊息正文到 Slack 或 Teams。在發送前替換 `[括號中的佔位符]`。189直接從每個區塊複製訊息正文到 Slack 或 Teams。在發送前替換 `[括號中的佔位符]`。

190 190 


200使用 Opus 修復打字錯誤會浪費計算。使用 Haiku 進行 12 檔案重構200使用 Opus 修復打字錯誤會浪費計算。使用 Haiku 進行 12 檔案重構

201是要求重做。201是要求重做。

202 202 

203Claude Code 在與 Claude 應用相同的模型上執行,您可以在會話中間切換。*Sonnet* 是日常功能工作、錯誤、測試和審查的預設主力。在大型重構、複雜除錯或任何高風險的事情上使用 *Opus*。對於快速問題、格式化和速度獲勝的機械編輯,降低到 *Haiku*。203Claude Code 在與 Claude 應用相同的模型上執行,您可以在會話中間切換。*Sonnet* 是日常功能工作、錯誤、測試和審查的預設主力。在大型重構、複雜除錯或任何高風險的事情上使用 *Opus*。對於快速問題、格式化和速度獲勝的機械編輯,降低到 *Haiku*。*Fable 5* 是您最困難、最長時間執行任務的最有能力的模型;它不是預設值,所以使用 `/model fable` 選擇它,並注意網路安全和生物學內容會自動回退到 Opus。

204 204 

205*現在嘗試:* 輸入 `/model` 並選擇 Sonnet(如果您還沒有的話)。它是大多數任務的正確預設。205*現在嘗試:* 輸入 `/model` 並選擇 Sonnet(如果您還沒有的話)。它是大多數任務的正確預設。

206 206 

207📖 模型配置 → https://code.claude.com/docs/en/model-config207📖 Model configuration → https://code.claude.com/docs/zh-TW/model-config

208```208```

209 209 

210| 模型 | 最適合 |210| 模型 | 最適合 |

211| ------ | ----------------------------- |211| ------- | ------------------------------------------------------------------------------------------------------------ |

212| Fable 5 | 最困難、最長時間執行的任務。僅選擇加入:使用 `/model fable` 選擇它。網路安全或生物學內容[回退到 Opus](/zh-TW/model-config#automatic-model-fallback) |

212| Opus | 大規模重構、複雜除錯、架構決策、高風險變更 |213| Opus | 大規模重構、複雜除錯、架構決策、高風險變更 |

213| Sonnet | 日常功能工作、錯誤修復、測試、文件、程式碼審查。建議預設。 |214| Sonnet | 日常功能工作、錯誤修復、測試、文件、程式碼審查。建議預設。 |

214| Haiku | 快速問題、格式化、機械編輯、快速迭代 |215| Haiku | 快速問題、格式化、機械編輯、快速迭代 |


220 221 

221已安裝 Claude Code 但不確定實際要求什麼?從一直困擾您整週的東西開始。222已安裝 Claude Code 但不確定實際要求什麼?從一直困擾您整週的東西開始。

222 223 

223 - 修復令人煩惱的東西:"檔案 [file] 中的測試不穩定,找出原因"224 - 修復令人煩惱的東西:檔案 [file] 中的測試不穩定,找出原因

224 - 在您沒有寫的程式碼中定位:"向我介紹 [module] 如何工作"225 - 在您沒有寫的程式碼中定位:向我介紹 [module] 如何工作

225 - 在您推送前進行理智檢查:"查看我的工作差異並告訴我什麼看起來風險"226 - 在您推送前進行理智檢查:查看我的工作差異並告訴我什麼看起來風險

226 227 

227這些都不需要設定。只需 `cd` 進入您的儲存庫並執行 `claude`。228這些都不需要設定。只需 `cd` 進入您的儲存庫並執行 `claude`。

228 229 

229*現在嘗試:* 選擇您一直在迴避的錯誤並貼上錯誤訊息。230*現在嘗試:* 選擇您一直在迴避的錯誤並貼上錯誤訊息。

230 231 

231📖 快速入門 → https://code.claude.com/docs/en/quickstart232📖 Quickstart → https://code.claude.com/docs/zh-TW/quickstart

232```233```

233 234 

234<h3 id="project-memory">235<h3 id="project-memory">


240```markdown theme={null}241```markdown theme={null}

241📁 *提示:停止每個會話重新解釋您的儲存庫*242📁 *提示:停止每個會話重新解釋您的儲存庫*

242 243 

243第五次告訴 Claude "我們使用 pnpm,而不是 npm"?有一個一次性修復。244第五次告訴 Claude我們使用 pnpm,而不是 npm?有一個一次性修復。

244 245 

245每個儲存庫執行一次 `/init`。Claude 讀取您的專案結構並寫入一個 CLAUDE.md 檔案,其中包含您的建置命令、架構和約定。該儲存庫中的每個未來會話都會自動從此檔案開始。將其保持在兩個螢幕以下。它是一個速查表,而不是文件。246每個儲存庫執行一次 `/init`。Claude 讀取您的專案結構並寫入一個 CLAUDE.md 檔案,其中包含您的建置命令、架構和約定。該儲存庫中的每個未來會話都會自動從此檔案開始。將其保持在兩個螢幕以下。它是一個速查表,而不是文件。

246 247 

247*現在嘗試:* 開啟您的主儲存庫,執行 `claude`,輸入 `/init`。三十秒,在之後的每個會話中都有回報。248*現在嘗試:* 開啟您的主儲存庫,執行 `claude`,輸入 `/init`。三十秒,在之後的每個會話中都有回報。

248 249 

249📖 CLAUDE.md 和專案記憶 → https://code.claude.com/docs/en/memory250📖 CLAUDE.md and project memory → https://code.claude.com/docs/zh-TW/memory

250```251```

251 252 

252**@-參考**253**@-參考**


254```markdown theme={null}255```markdown theme={null}

255📎 *提示:停止將檔案內容貼到聊天中*256📎 *提示:停止將檔案內容貼到聊天中*

256 257 

257複製一個元件的 200 行到您的提示中,以便 Claude 可以 "看到" 它?您不必這樣做。258複製一個元件的 200 行到您的提示中,以便 Claude 可以看到它?您不必這樣做。

258 259 

259輸入 `@` 然後是檔案路徑。Claude 直接將檔案拉入上下文。也適用於整個目錄。260輸入 `@` 然後是檔案路徑。Claude 直接將檔案拉入上下文。也適用於整個目錄。

260 261 


262 263 

263*現在嘗試:* 輸入 `@` 然後 Tab。自動完成顯示您可以到達的每個檔案。264*現在嘗試:* 輸入 `@` 然後 Tab。自動完成顯示您可以到達的每個檔案。

264 265 

265📖 參考檔案 → https://code.claude.com/docs/en/common-workflows266📖 Referencing files → https://code.claude.com/docs/zh-TW/common-workflows

266```267```

267 268 

268<h3 id="control-and-safety">269<h3 id="control-and-safety">

269 控制和安全270 控制和安全

270</h3>271</h3>

271 272 

272**許可模式**273**Permission modes**

273 274 

274```markdown theme={null}275```markdown theme={null}

275🛡️ *提示:一個按鍵在 "查看但不觸及" "就做吧" 之間*276🛡️ *提示:一個按鍵在查看但不觸及就做吧之間*

276 277 

277有時您希望 Claude 在每次編輯前請求許可。有時您只是希望它發貨。您不應該永遠選擇一個。278有時您希望 Claude 在每次編輯前請求許可。有時您只是希望它發貨。您不應該永遠選擇一個。

278 279 

279*Shift+Tab* 循環通過 Claude 獲得多少自由度:*default* 在風險操作前請求,*acceptEdits* 讓檔案編輯和常見檔案系統命令流通,同時仍在其他 shell 命令前檢查,*plan* 在觸及任何東西前為您的批准提議變更。Plan 模式是信任建立者,因此對於觸及多個檔案的任何事情,從那裡開始。280*Shift+Tab* 循環通過 Claude 獲得多少自由度:*default* 在風險操作前請求,*acceptEdits* 讓檔案編輯和常見檔案系統命令流通,同時仍在其他 shell 命令前檢查,*plan* 在觸及任何東西前為您的批准提議變更。Plan 模式是信任建立者,因此對於觸及多個檔案的任何事情,從那裡開始。

280 281 

281*現在嘗試:* 在您的下一個重構上,按 Shift+Tab 直到您看到 "plan"282*現在嘗試:* 在您的下一個重構上,按 Shift+Tab 直到您看到plan

282然後描述變更。您將在單個檔案移動前獲得完整提案。283然後描述變更。您將在單個檔案移動前獲得完整提案。

283 284 

284📖 許可模式 → https://code.claude.com/docs/en/permissions285📖 Permission modes → https://code.claude.com/docs/zh-TW/permissions

285```286```

286 287 

287**檢查點和 `/rewind`**288**Checkpointing `/rewind`**

288 289 

289```markdown theme={null}290```markdown theme={null}

290⏪ *提示:整個對話有一個撤銷按鈕*291⏪ *提示:整個對話有一個撤銷按鈕*

291 292 

292Claude 三個回合前走錯了路,現在您正在解開它?您不必向前修復。293Claude 三個回合前走錯了路,現在您正在解開它?您不必向前修復。

293 294 

294`/rewind` 回滾到對話中的較早點,包括 Claude 沿途所做的檔案變更。檢查點是自動的;您不需要設定任何東西。295`/rewind` 回滾到對話中的較早點,包括 Claude 沿途所做的檔案變更。Checkpointing 是自動的;您不需要設定任何東西。

295 296 

296*現在嘗試:* 按 *Esc* 兩次以開啟倒帶菜單,或輸入 `/rewind`。297*現在嘗試:* 按 *Esc* 兩次以開啟倒帶菜單,或輸入 `/rewind`。

297選擇事情變得不對勁之前的點。298選擇事情變得不對勁之前的點。

298 299 

299📖 檢查點 → https://code.claude.com/docs/en/checkpointing300📖 Checkpointing → https://code.claude.com/docs/zh-TW/checkpointing

300```301```

301 302 

302<h3 id="connect-your-tools">303<h3 id="connect-your-tools">

303 連接您的工具304 連接您的工具

304</h3>305</h3>

305 306 

306**MCP 連接器**307**MCP connectors**

307 308 

308```markdown theme={null}309```markdown theme={null}

309🔌 *提示:讓 Claude 讀取您的問題追蹤器,這樣您就不必貼票證*310🔌 *提示:讓 Claude 讀取您的問題追蹤器,這樣您就不必貼票證*

310 311 

311將 Jira 票證複製貼到終端感覺像是向後退一步。確實如此。312將 Jira 票證複製貼到終端感覺像是向後退一步。確實如此。

312 313 

313一個配置檔案(您的專案根目錄中的 `.mcp.json`)將 Claude 連接到 GitHub、Jira、Linear 或您使用的任何追蹤器。然後 "什麼是分配給我的最高優先級問題?" "繼續修復它" 在同一對話中發生。314一個配置檔案(您的專案根目錄中的 `.mcp.json`)將 Claude 連接到 GitHub、Jira、Linear 或您使用的任何追蹤器。然後什麼是分配給我的最高優先級問題?繼續修復它在同一對話中發生。

314 315 

315*現在嘗試:* 要求 Claude "在此儲存庫中為 [GitHub/Jira/Linear] 設定 MCP 連接器"。它將為您寫入配置。316*現在嘗試:* 要求 Claude在此儲存庫中為 [GitHub/Jira/Linear] 設定 MCP 連接器。它將為您寫入配置。

316 317 

317📖 MCP 連接器 → https://code.claude.com/docs/en/mcp318📖 MCP connectors → https://code.claude.com/docs/zh-TW/mcp

318```319```

319 320 

320<h3 id="automate-your-workflows">321<h3 id="automate-your-workflows">


326```markdown theme={null}327```markdown theme={null}

327⚡ *提示:將您一直重新輸入的提示變成命令*328⚡ *提示:將您一直重新輸入的提示變成命令*

328 329 

329本週三次輸入 "從 git log 總結我今天所做的工作,為站立會議格式化"?那是一個等待發生的斜杠命令。330本週三次輸入從 git log 總結我今天所做的工作,為站立會議格式化?那是一個等待發生的斜杠命令。

330 331 

331`.claude/skills/<name>/` 中的 SKILL.md 檔案變成可重用提示;輸入 `/name` 來執行它。在您輸入您之前輸入過的多步驟提示的第二次時製作一個。最簡單的路徑:要求 Claude 為您製作它。332`.claude/skills/<name>/` 中的 SKILL.md 檔案變成可重用提示;輸入 `/name` 來執行它。在您輸入您之前輸入過的多步驟提示的第二次時製作一個。最簡單的路徑:要求 Claude 為您製作它。

332 333 

333*現在嘗試:* 輸入 "為我製作一個 /standup skill,從 git log 總結我今天所做的工作",然後明天早上執行 `/standup`。334*現在嘗試:* 輸入為我製作一個 /standup skill,從 git log 總結我今天所做的工作,然後明天早上執行 `/standup`。

334 335 

335📖 Skills → https://code.claude.com/docs/en/skills336📖 Skills → https://code.claude.com/docs/zh-TW/skills

336```337```

337 338 

338**Hooks**339**Hooks**


344 345 

345Hooks 是在 Claude Code 事件上觸發的 shell 命令。一個發送桌面通知的 Stop hook 意味著您可以啟動一個長重構、走開,並在完成時立即收到通知。346Hooks 是在 Claude Code 事件上觸發的 shell 命令。一個發送桌面通知的 Stop hook 意味著您可以啟動一個長重構、走開,並在完成時立即收到通知。

346 347 

347*現在嘗試:* 要求 Claude "新增一個 Stop hook,當您完成時發送桌面通知"。它將寫入指令碼並連接它。348*現在嘗試:* 要求 Claude新增一個 Stop hook,當您完成時發送桌面通知。它將寫入指令碼並連接它。

348 349 

349📖 Hooks 指南 → https://code.claude.com/docs/en/hooks-guide350📖 Hooks guide → https://code.claude.com/docs/zh-TW/hooks-guide

350```351```

351 352 

352<h3 id="day-to-day-development">353<h3 id="day-to-day-development">

353 日常開發354 日常開發

354</h3>355</h3>

355 356 

356**螢幕截圖和圖像**357**Screenshots 和圖像**

357 358 

358```markdown theme={null}359```markdown theme={null}

359📸 *提示:停止描述錯誤對話框。只需顯示它。*360📸 *提示:停止描述錯誤對話框。只需顯示它。*

360 361 

361輸出 "有一個紅色框說一些關於空參考的東西,它指向第 47 行左右"?螢幕截圖它。362輸出有一個紅色框說一些關於空參考的東西,它指向第 47 行左右?螢幕截圖它。

362 363 

363直接將螢幕截圖拖到終端中,Claude 看到它:錯誤對話框、UI 模型、白板照片、Figma 匯出。*Ctrl+V* 從剪貼板貼上(在 macOS 上也使用 Ctrl+V,而不是 Cmd+V)。364直接將螢幕截圖拖到終端中,Claude 看到它:錯誤對話框、UI 模型、白板照片、Figma 匯出。*Ctrl+V* 從剪貼板貼上(在 macOS 上也使用 Ctrl+V,而不是 Cmd+V)。

364 365 

365*現在嘗試:* 下次視覺上出現問題時,螢幕截圖它並直接貼到提示中。然後只需輸入 "這裡出了什麼問題?"366*現在嘗試:* 下次視覺上出現問題時,螢幕截圖它並直接貼到提示中。然後只需輸入這裡出了什麼問題?

366 367 

367📖 使用圖像 → https://code.claude.com/docs/en/common-workflows368📖 Working with images → https://code.claude.com/docs/zh-TW/common-workflows

368```369```

369 370 

370**Git 工作流程**371**Git 工作流程**


374 375 

375修復花了 5 分鐘。提交訊息、分支和 PR 描述花了 15 分鐘。該比率是錯誤的。376修復花了 5 分鐘。提交訊息、分支和 PR 描述花了 15 分鐘。該比率是錯誤的。

376 377 

377Claude 處理完整的 git 流程:具有常規訊息的提交、分支、具有適當摘要的 PR。一個要求:"修復偏差一,使用常規提交訊息提交,並開啟 PR。" 審查別人的工作?貼上 PR URL 並要求 Claude 向您介紹差異。378Claude 處理完整的 git 流程:具有常規訊息的提交、分支、具有適當摘要的 PR。一個要求:修復偏差一,使用常規提交訊息提交,並開啟 PR。審查別人的工作?貼上 PR URL 並要求 Claude 向您介紹差異。

378 379 

379*現在嘗試:* 在您的下一個修復後,而不是切換到您的 git 客戶端,380*現在嘗試:* 在您的下一個修復後,而不是切換到您的 git 客戶端,

380只需輸入 "用好訊息提交此內容並開啟 PR"381只需輸入用好訊息提交此內容並開啟 PR

381 382 

382📖 建立拉取請求 → https://code.claude.com/docs/en/common-workflows383📖 Creating pull requests → https://code.claude.com/docs/zh-TW/common-workflows

383```384```

384 385 

385<h3 id="share-and-scale">386<h3 id="share-and-scale">


397 398 

398*現在嘗試:* 輸入 `/plugin` 並滾動瀏覽。您會找到至少一件您不知道自己想要的東西。399*現在嘗試:* 輸入 `/plugin` 並滾動瀏覽。您會找到至少一件您不知道自己想要的東西。

399 400 

400📖 Plugins → https://code.claude.com/docs/en/plugins401📖 Plugins → https://code.claude.com/docs/zh-TW/plugins

401```402```

402 403 

403<h3 id="security-and-admin">404<h3 id="security-and-admin">

404 安全和管理405 安全和管理

405</h3>406</h3>

406 407 

407**安全架構**408**Security architecture**

408 409 

409```markdown theme={null}410```markdown theme={null}

410🔐 *提示:下次被問到時 "這安全嗎?" 的答案*411🔐 *提示:下次被問到時這安全嗎?的答案*

411 412 

412您團隊中的某個人會問 "等等,我的程式碼去哪裡了?"413您團隊中的某個人會問等等,我的程式碼去哪裡了?

413這是您可以貼上的簡短版本。414這是您可以貼上的簡短版本。

414 415 

415許可優先設計。每個檔案編輯、shell 命令和外部呼叫都由您的批准控制。CLI 在您的終端中執行,直接與 Anthropic 的 API 通訊,沒有第三方伺服器,並支援 shell 命令的可選作業系統級沙箱。根據我們的企業計畫,Anthropic 不使用您的程式碼或提示來訓練其模型。416許可優先設計。每個檔案編輯、shell 命令和外部呼叫都由您的批准控制。CLI 在您的終端中執行,直接與 Anthropic 的 API 通訊,沒有第三方伺服器,並支援 shell 命令的可選作業系統級沙箱。根據我們的企業計畫,Anthropic 不使用您的程式碼或提示來訓練其模型。


417*現在嘗試:* 保存這兩個連結,以備下次問題出現時使用。418*現在嘗試:* 保存這兩個連結,以備下次問題出現時使用。

418它們回答了大多數安全審查問題。419它們回答了大多數安全審查問題。

419 420 

420📖 https://code.claude.com/docs/en/security421📖 https://code.claude.com/docs/zh-TW/security

421📖 https://code.claude.com/docs/en/data-usage422📖 https://code.claude.com/docs/zh-TW/data-usage

422```423```

423 424 

424**最佳實踐**425**Best practices**

425 426 

426```markdown theme={null}427```markdown theme={null}

427✅ *提示:將 "嘗試過一次" "每天使用" 分開的 4 個習慣*428✅ *提示:將嘗試過一次每天使用分開的 4 個習慣*

428 429 

429大多數從 Claude Code 反彈的人跳過了其中之一。大多數堅持的人在第一週完成了全部四個。430大多數從 Claude Code 反彈的人跳過了其中之一。大多數堅持的人在第一週完成了全部四個。

430 431 

431 - 對於觸及多個檔案的任何事情,在 plan 模式中開始432 - 對於觸及多個檔案的任何事情,在 Plan Mode 中開始

432 - 早期執行 /init;上下文複合433 - 早期執行 /init;上下文複合

433 - 在提交前審查差異;Claude 可以自信地出錯434 - 在提交前審查差異;Claude 可以自信地出錯

434 - 驗證觸及關鍵路徑的變更;將其視為銳利的初級,而不是預言家435 - 驗證觸及關鍵路徑的變更;將其視為銳利的初級,而不是預言家

435 436 

436*現在嘗試:* 如果您只做了其中一兩個,選擇您缺少的那個並在您的下一個任務上執行它。在 #claude-code 中發佈發生了什麼變化。437*現在嘗試:* 如果您只做了其中一兩個,選擇您缺少的那個並在您的下一個任務上執行它。在 #claude-code 中發佈發生了什麼變化。

437 438 

438📖 最佳實踐 → https://code.claude.com/docs/en/best-practices439📖 Best practices → https://code.claude.com/docs/zh-TW/best-practices

439```440```

440 441 

441<h2 id="quick-reference">442<h2 id="quick-reference">

computer-use.md +1 −1

Details

230 230 

231授予螢幕錄製權限後,macOS 有時需要重新啟動請求程序。完全退出 Claude Code 並啟動新工作階段。如果提示仍然存在,開啟**系統設定 > 隱私與安全 > 螢幕錄製**並確認您的終端機應用程式已列出並啟用。231授予螢幕錄製權限後,macOS 有時需要重新啟動請求程序。完全退出 Claude Code 並啟動新工作階段。如果提示仍然存在,開啟**系統設定 > 隱私與安全 > 螢幕錄製**並確認您的終端機應用程式已列出並啟用。

232 232 

233<h3 id="computer-use-doesn-t-appear-in-/mcp">233<h3 id="computer-use-doesnt-appear-in-/mcp">

234 `computer-use` 未出現在 `/mcp` 中234 `computer-use` 未出現在 `/mcp` 中

235</h3>235</h3>

236 236 

context-window.md +1591 −5

Details

6 6 

7> Claude Code 上下文視窗在會話期間如何填充的互動模擬。查看自動加載的內容、每個文件讀取的成本,以及規則和 hooks 何時觸發。7> Claude Code 上下文視窗在會話期間如何填充的互動模擬。查看自動加載的內容、每個文件讀取的成本,以及規則和 hooks 何時觸發。

8 8 

9Claude Code 的上下文視窗包含 Claude 對您的會話所知的一切:您的指令、它讀取的文件、它自己的回應,以及從不在您的終端中出現的內容。下面的時間線介紹了加載的內容和時間。請參閱[書面分解](#what-the-timeline-shows)以獲取相同內容的列表形式。9export const ContextWindow = () => {

10 const MAX = 200000;

11 const STARTUP_END = 0.2;

12 {}

13 const EVENTS = useMemo(() => [{}, {

14 t: 0.015,

15 kind: 'auto',

16 label: 'System prompt',

17 tokens: 4200,

18 color: '#6B6964',

19 vis: 'hidden',

20 desc: 'Core instructions for behavior, tool use, and response formatting. Always loaded first. You never see it.',

21 link: null

22 }, {

23 t: 0.035,

24 kind: 'auto',

25 label: 'Auto memory (MEMORY.md)',

26 tokens: 680,

27 color: '#E8A45C',

28 vis: 'hidden',

29 desc: "Claude's notes to itself from previous sessions: build commands it learned, patterns it noticed, mistakes to avoid. The first 200 lines or 25KB, whichever comes first, are loaded into the conversation context.",

30 link: '/en/memory#auto-memory'

31 }, {

32 t: 0.06,

33 kind: 'auto',

34 label: 'Environment info',

35 tokens: 280,

36 color: '#6B6964',

37 vis: 'hidden',

38 desc: 'Working directory, platform, shell, OS version, and whether this is a git repo. Git branch, status, and recent commits load as a separate block at the very end of the system prompt.',

39 link: null

40 }, {

41 t: 0.08,

42 kind: 'auto',

43 label: 'MCP tools (deferred)',

44 tokens: 120,

45 color: '#9B7BC4',

46 vis: 'hidden',

47 desc: 'MCP tool names listed so Claude knows what is available. By default, full schemas stay deferred and Claude loads specific ones on demand via tool search when a task needs them. Set `ENABLE_TOOL_SEARCH=auto` to load schemas upfront when they fit within 10% of the context window, or `ENABLE_TOOL_SEARCH=false` to load everything.',

48 link: '/en/mcp#scale-with-mcp-tool-search'

49 }, {

50 t: 0.1,

51 kind: 'auto',

52 label: 'Skill descriptions',

53 tokens: 450,

54 color: '#D4A843',

55 vis: 'hidden',

56 noSurviveCompact: true,

57 desc: 'One-line descriptions of available skills so Claude knows what it can invoke. Full skill content loads only when Claude actually uses one. Skills with `disable-model-invocation: true` are not in this list. They stay completely out of context until you invoke them with `/name`. Unlike the rest of the startup content, this listing is not re-injected after `/compact`. Only skills you actually invoked get preserved.',

58 link: '/en/skills'

59 }, {

60 t: 0.12,

61 kind: 'auto',

62 label: '~/.claude/CLAUDE.md',

63 tokens: 320,

64 color: '#6A9BCC',

65 vis: 'hidden',

66 desc: 'Your global preferences. Applies to every project. Loaded alongside project instructions at the start of every conversation.',

67 link: '/en/memory#choose-where-to-put-claude-md-files'

68 }, {

69 t: 0.14,

70 kind: 'auto',

71 label: 'Project CLAUDE.md',

72 tokens: 1800,

73 color: '#6A9BCC',

74 vis: 'hidden',

75 desc: 'Project conventions, build commands, architecture notes. The most important file you can create. Lives in your project root, so your whole team gets the same instructions.',

76 tip: 'Keep it under 200 lines. Move reference content to skills or path-scoped rules so it only loads when needed.',

77 link: '/en/memory'

78 }, {}, {

79 t: 0.22,

80 kind: 'user',

81 label: 'Your prompt',

82 tokens: 45,

83 color: '#558A42',

84 vis: 'full',

85 desc: '"Fix the auth bug where users get 401 after token refresh"',

86 link: null

87 }, {}, {

88 t: 0.28,

89 kind: 'claude',

90 label: 'Read src/api/auth.ts',

91 tokens: 2400,

92 color: '#8A8880',

93 vis: 'brief',

94 desc: 'Main auth file. You see "Read auth.ts" in your terminal, but the 2,400 tokens of file content only Claude sees.',

95 tip: 'File reads dominate context usage. Be specific in prompts ("fix the bug in auth.ts") so Claude reads fewer files. For research-heavy tasks, use a subagent.',

96 link: null

97 }, {

98 t: 0.32,

99 kind: 'claude',

100 label: 'Read src/lib/tokens.ts',

101 tokens: 1100,

102 color: '#8A8880',

103 vis: 'brief',

104 desc: 'Following imports to the token module. Shown as a one-liner in your terminal.',

105 link: null

106 }, {

107 t: 0.35,

108 kind: 'auto',

109 label: 'Rule: api-conventions.md',

110 tokens: 380,

111 color: '#4A9B8E',

112 vis: 'brief',

113 desc: 'This rule in `.claude/rules/` has a `paths:` pattern matching `src/api/**`. It loaded automatically when Claude read a file in that directory. You see "Loaded .claude/rules/api-conventions.md" in your terminal, but not the rule content.',

114 link: '/en/memory#path-specific-rules'

115 }, {

116 t: 0.38,

117 kind: 'claude',

118 label: 'Read middleware.ts',

119 tokens: 1800,

120 color: '#8A8880',

121 vis: 'brief',

122 desc: 'Tracing the auth flow deeper.',

123 link: null

124 }, {

125 t: 0.41,

126 kind: 'claude',

127 label: 'Read auth.test.ts',

128 tokens: 1600,

129 color: '#8A8880',

130 vis: 'brief',

131 desc: 'Checking existing tests for expected behavior.',

132 link: null

133 }, {

134 t: 0.44,

135 kind: 'auto',

136 label: 'Rule: testing.md',

137 tokens: 290,

138 color: '#4A9B8E',

139 vis: 'brief',

140 desc: 'Another path-scoped rule, this one matching `*.test.ts` files. Triggered when Claude read auth.test.ts. Shown as a one-line "Loaded" notice.',

141 link: '/en/memory#path-specific-rules'

142 }, {

143 t: 0.47,

144 kind: 'claude',

145 label: 'grep "refreshToken"',

146 tokens: 600,

147 color: '#A09E96',

148 vis: 'brief',

149 desc: 'Search results across the codebase. You see the command ran, not the full output.',

150 link: null

151 }, {}, {

152 t: 0.53,

153 kind: 'claude',

154 label: "Claude's analysis",

155 tokens: 800,

156 color: '#D97757',

157 vis: 'full',

158 desc: 'Explains the bug: token invalidated too early in the rotation. This text appears in your terminal.',

159 link: null

160 }, {

161 t: 0.57,

162 kind: 'claude',

163 label: 'Edit auth.ts',

164 tokens: 400,

165 color: '#D97757',

166 vis: 'full',

167 desc: 'Fixes the token rotation order. The diff appears in your terminal.',

168 link: null

169 }, {

170 t: 0.59,

171 kind: 'hook',

172 label: 'Hook: prettier',

173 tokens: 120,

174 color: '#B8860B',

175 vis: 'hidden',

176 desc: 'A PostToolUse hook in `settings.json` runs prettier after every file edit and reports back via `hookSpecificOutput.additionalContext`. That field enters Claude\'s context. Plain stdout on exit 0 does not. It is written to the debug log only.',

177 tip: 'Output JSON with `additionalContext` to send info to Claude. For PostToolUse hooks, exit code 2 surfaces stderr as an error but cannot block since the tool already ran. Keep output concise since it enters context without truncation.',

178 link: '/en/hooks-guide'

179 }, {

180 t: 0.62,

181 kind: 'claude',

182 label: 'Edit auth.test.ts',

183 tokens: 600,

184 color: '#D97757',

185 vis: 'full',

186 desc: 'Adds a regression test for the fix. The diff appears in your terminal.',

187 link: null

188 }, {

189 t: 0.64,

190 kind: 'hook',

191 label: 'Hook: prettier',

192 tokens: 100,

193 color: '#B8860B',

194 vis: 'hidden',

195 desc: 'The same hook fires again for the test file. Every matching tool event triggers it.',

196 link: '/en/hooks-guide'

197 }, {

198 t: 0.67,

199 kind: 'claude',

200 label: 'npm test output',

201 tokens: 1200,

202 color: '#A09E96',

203 vis: 'brief',

204 desc: 'Runs the test suite. You see "Running npm test..." and the pass count, not the full 1,200 tokens of output.',

205 link: null

206 }, {

207 t: 0.70,

208 kind: 'claude',

209 label: 'Summary',

210 tokens: 400,

211 color: '#D97757',

212 vis: 'full',

213 desc: '"Fixed token rotation. Added regression test. All tests pass."',

214 link: null

215 }, {}, {

216 t: 0.72,

217 kind: 'user',

218 label: 'Your follow-up',

219 tokens: 40,

220 color: '#558A42',

221 vis: 'full',

222 desc: '"Use a subagent to research session timeout handling, then fix it"',

223 tip: 'Follow-ups add to the same context. Delegating research to a subagent keeps large file reads out of your main window.',

224 link: null

225 }, {

226 t: 0.79,

227 kind: 'claude',

228 label: 'Spawn research subagent',

229 tokens: 80,

230 color: '#D97757',

231 vis: 'brief',

232 desc: "Claude delegates the research to a subagent with a fresh, separate context window. It loads CLAUDE.md and the same MCP and skill setup, but starts without your conversation history or the main session's auto memory.",

233 link: '/en/sub-agents'

234 }, {

235 t: 0.795,

236 kind: 'sub',

237 label: 'System prompt',

238 tokens: 0,

239 subTokens: 900,

240 color: '#6B6964',

241 vis: 'hidden',

242 desc: "The subagent gets its own system prompt, shorter than the main session's. For the general-purpose agent, it's a brief prompt plus environment details. The main session's auto memory is not included. If a custom agent has memory: in its frontmatter, it loads its own separate MEMORY.md here instead.",

243 link: '/en/sub-agents#enable-persistent-memory'

244 }, {

245 t: 0.80,

246 kind: 'sub',

247 label: 'Project CLAUDE.md (own copy)',

248 tokens: 0,

249 subTokens: 1800,

250 color: '#6A9BCC',

251 vis: 'hidden',

252 desc: "The subagent loads CLAUDE.md too. Same file, same content, but it counts against the subagent's context, not yours. The built-in Explore and Plan agents skip this for a smaller context.",

253 link: '/en/sub-agents'

254 }, {

255 t: 0.805,

256 kind: 'sub',

257 label: 'MCP tools + skills',

258 tokens: 0,

259 subTokens: 970,

260 color: '#9B7BC4',

261 vis: 'hidden',

262 desc: "The subagent has access to the same MCP servers and skills. It gets most of the parent's tools, minus several that don't apply in a nested context, including plan-mode controls, background-task tools, and by default the Agent tool itself to prevent recursion.",

263 link: '/en/sub-agents'

264 }, {

265 t: 0.81,

266 kind: 'sub',

267 label: 'Task prompt from main',

268 tokens: 0,

269 subTokens: 120,

270 color: '#558A42',

271 vis: 'hidden',

272 desc: "Instead of a user prompt, the subagent receives the task Claude wrote for it: 'Research session timeout handling in this codebase.'",

273 link: '/en/sub-agents'

274 }, {

275 t: 0.82,

276 kind: 'sub',

277 label: 'Read session.ts',

278 tokens: 0,

279 subTokens: 2200,

280 color: '#8A8880',

281 vis: 'hidden',

282 desc: "Now the subagent does its work. This file read fills the subagent's context, not yours.",

283 link: '/en/sub-agents'

284 }, {

285 t: 0.825,

286 kind: 'sub',

287 label: 'Read timeouts.ts',

288 tokens: 0,

289 subTokens: 800,

290 color: '#8A8880',

291 vis: 'hidden',

292 desc: "Another file read in the subagent's separate context.",

293 link: '/en/sub-agents'

294 }, {

295 t: 0.83,

296 kind: 'sub',

297 label: 'Read config/*.ts',

298 tokens: 0,

299 subTokens: 3100,

300 color: '#8A8880',

301 vis: 'hidden',

302 desc: "The subagent can read as many files as it needs. None of this touches your main context.",

303 link: '/en/sub-agents'

304 }, {

305 t: 0.85,

306 kind: 'claude',

307 label: 'Subagent returns summary',

308 tokens: 420,

309 color: '#D97757',

310 vis: 'brief',

311 desc: "Only the subagent's final text response comes back to your context, plus a small metadata trailer with token counts and duration. The subagent read 6,100 tokens of files. You got a 420-token result. That's the context savings.",

312 link: '/en/sub-agents'

313 }, {

314 t: 0.86,

315 kind: 'claude',

316 label: "Claude's response",

317 tokens: 1200,

318 color: '#D97757',

319 vis: 'full',

320 desc: 'Analysis and fix for session timeouts. This text appears in your terminal.',

321 link: null

322 }, {}, {

323 t: 0.875,

324 kind: 'user',

325 label: '!git status',

326 tokens: 180,

327 color: '#558A42',

328 vis: 'full',

329 desc: "You ran a shell command with the ! prefix to see which files Claude modified. The command and its output both enter context as part of your message. Useful for grounding Claude in command output without Claude running it.",

330 link: '/en/interactive-mode#bash-mode-with-prefix'

331 }, {

332 t: 0.89,

333 kind: 'user',

334 label: '/commit-push',

335 tokens: 620,

336 color: '#558A42',

337 vis: 'brief',

338 desc: 'You invoked a skill that has `disable-model-invocation: true`. Its description was not in the skill index at startup, so it cost zero context until this moment. Now the full skill content loads and Claude follows its instructions to stage, commit, and push your changes.',

339 tip: 'Set `disable-model-invocation: true` on skills with side effects like committing, deploying, or sending messages. They stay out of context entirely until you need them.',

340 link: '/en/skills#control-who-invokes-a-skill'

341 }, {}, {

342 t: 0.93,

343 kind: 'compact',

344 label: '/compact',

345 tokens: 0,

346 color: '#D97757',

347 vis: 'brief',

348 desc: 'Replaces the conversation with a structured summary. You see a "Conversation compacted" message. The summarization happens without appearing in your terminal.',

349 link: '/en/how-claude-code-works#the-context-window'

350 }].filter(e => e.t !== undefined), []);

351 const VIS_META = {

352 hidden: {

353 label: 'Invisible in your terminal',

354 sub: 'This content does not appear in your terminal.'

355 },

356 brief: {

357 label: 'One-liner in your terminal',

358 sub: 'You see a brief mention, not the full content.'

359 },

360 full: {

361 label: 'Shown in your terminal',

362 sub: 'The actual content appears in your terminal.'

363 }

364 };

365 {}

366 const GATES = [{

367 at: 0.18,

368 kind: 'prompt',

369 text: 'Fix the auth bug where users get 401 after token refresh',

370 resumeTo: 0.22

371 }, {

372 at: 0.705,

373 kind: 'prompt',

374 text: 'Use a subagent to research session timeout handling, then fix it',

375 resumeTo: 0.72

376 }, {

377 at: 0.865,

378 kind: 'bang',

379 text: '!git status',

380 resumeTo: 0.875

381 }, {

382 at: 0.88,

383 kind: 'slash',

384 text: '/commit-push',

385 resumeTo: 0.89

386 }, {

387 at: 0.90,

388 kind: 'compact',

389 text: '/compact',

390 resumeTo: 1

391 }];

392 const KIND_META = {

393 auto: {

394 badge: 'auto',

395 detail: 'Auto-loaded',

396 badgeBg: 'rgba(94,93,89,0.15)',

397 badgeColor: '#8A8880'

398 },

399 user: {

400 badge: 'you',

401 detail: 'You typed this',

402 badgeBg: 'rgba(85,138,66,0.15)',

403 badgeColor: '#6BA656'

404 },

405 claude: {

406 badge: 'claude',

407 detail: "Claude's work",

408 badgeBg: 'rgba(217,119,87,0.12)',

409 badgeColor: '#D97757'

410 },

411 hook: {

412 badge: 'hook',

413 detail: 'Hook (automatic)',

414 badgeBg: 'rgba(184,134,11,0.15)',

415 badgeColor: '#CCA020'

416 },

417 compact: {

418 badge: 'compact',

419 detail: 'Compaction',

420 badgeBg: 'rgba(217,119,87,0.12)',

421 badgeColor: '#D97757'

422 },

423 sub: {

424 badge: 'subagent',

425 detail: "In subagent's context",

426 badgeBg: 'rgba(155,123,196,0.12)',

427 badgeColor: '#9B7BC4'

428 }

429 };

430 const LEGEND = [{

431 c: '#6B6964',

432 l: 'System'

433 }, {

434 c: '#6A9BCC',

435 l: 'CLAUDE.md'

436 }, {

437 c: '#E8A45C',

438 l: 'Memory'

439 }, {

440 c: '#D4A843',

441 l: 'Skills'

442 }, {

443 c: '#9B7BC4',

444 l: 'MCP'

445 }, {

446 c: '#4A9B8E',

447 l: 'Rules'

448 }, {

449 c: '#558A42',

450 l: 'You'

451 }, {

452 c: '#8A8880',

453 l: 'Files'

454 }, {

455 c: '#A09E96',

456 l: 'Output'

457 }, {

458 c: '#D97757',

459 l: 'Claude'

460 }, {

461 c: '#B8860B',

462 l: 'Hooks'

463 }];

464 const fmt = n => n >= 1000 ? (n / 1000).toFixed(1).replace(/\.0$/, '') + 'K' : n + '';

465 const [time, setTime] = useState(0);

466 const [playing, setPlaying] = useState(false);

467 const [hovIdx, setHovIdx] = useState(null);

468 const [selIdx, setSelIdx] = useState(null);

469 const [hovCat, setHovCat] = useState(null);

470 const [gatesPassed, setGatesPassed] = useState(0);

471 const [mounted, setMounted] = useState(false);

472 const [hasInteracted, setHasInteracted] = useState(false);

473 const lastRef = useRef(null);

474 const scrollRef = useRef(null);

475 const detailRef = useRef(null);

476 useEffect(() => setMounted(true), []);

477 const activeGate = GATES.find((g, i) => i >= gatesPassed && time >= g.at && time < g.resumeTo);

478 useEffect(() => {

479 if (!playing) return;

480 let raf;

481 let stopped = false;

482 const tick = ts => {

483 if (stopped) return;

484 if (!lastRef.current) lastRef.current = ts;

485 const dt = (ts - lastRef.current) / 1000;

486 lastRef.current = ts;

487 setTime(prev => {

488 const next = prev + dt * 0.032;

489 const gate = GATES.find((g, i) => i >= gatesPassed && next >= g.at && prev < g.resumeTo);

490 if (gate) {

491 stopped = true;

492 setPlaying(false);

493 return gate.at;

494 }

495 if (next >= 1) {

496 stopped = true;

497 setPlaying(false);

498 return 1;

499 }

500 return next;

501 });

502 if (!stopped) raf = requestAnimationFrame(tick);

503 };

504 raf = requestAnimationFrame(tick);

505 return () => {

506 stopped = true;

507 cancelAnimationFrame(raf);

508 lastRef.current = null;

509 };

510 }, [playing, gatesPassed]);

511 const sendPrompt = () => {

512 if (!activeGate) return;

513 const isCompact = activeGate.kind === 'compact';

514 setGatesPassed(n => n + 1);

515 setTime(activeGate.resumeTo);

516 setSelIdx(null);

517 setHovIdx(null);

518 if (!isCompact) setPlaying(true);

519 };

520 const visibleCount = EVENTS.filter(e => e.t <= time).length;

521 const preCompactVisible = useMemo(() => EVENTS.slice(0, visibleCount), [EVENTS, visibleCount]);

522 const compactGateIdx = GATES.length - 1;

523 const isCompacted = gatesPassed > compactGateIdx && preCompactVisible.some(e => e.kind === 'compact');

524 const {visible, preCompactTotal} = useMemo(() => {

525 const nonCompact = preCompactVisible.filter(e => e.kind !== 'compact');

526 if (!isCompacted) {

527 return {

528 visible: preCompactVisible,

529 preCompactTotal: 0

530 };

531 }

532 {}

533 const autoLoads = nonCompact.filter(e => e.kind === 'auto' && e.t < STARTUP_END && !e.noSurviveCompact);

534 const summarized = nonCompact.filter(e => e.t >= STARTUP_END && e.kind !== 'sub');

535 const sumTokens = summarized.reduce((s, e) => s + e.tokens, 0);

536 const summaryBlock = {

537 t: STARTUP_END,

538 kind: 'compact',

539 label: 'Conversation summary',

540 tokens: Math.round(sumTokens * 0.12),

541 color: '#A09E96',

542 vis: 'hidden',

543 desc: `All ${summarized.length} conversation events condensed into one structured summary. The summary keeps: your requests and intent, key technical concepts, files examined or modified with important code snippets, errors and how they were fixed, pending tasks, and current work. It replaces the verbatim conversation: full tool outputs and intermediate reasoning are gone. Claude can still reference the work but won't have the exact code it read earlier.`,

544 link: '/en/how-claude-code-works#the-context-window'

545 };

546 return {

547 visible: [...autoLoads, summaryBlock],

548 preCompactTotal: nonCompact.reduce((s, e) => s + e.tokens, 0)

549 };

550 }, [preCompactVisible, isCompacted]);

551 const {blocks, totalTokens} = useMemo(() => {

552 const bl = visible.map((e, visIdx) => ({

553 ...e,

554 id: e.label + e.t,

555 visIdx

556 })).filter(e => e.tokens > 0 || e.label === 'Conversation summary');

557 return {

558 blocks: bl,

559 totalTokens: bl.reduce((s, b) => s + b.tokens, 0)

560 };

561 }, [visible]);

562 const subTotal = useMemo(() => visible.filter(e => e.kind === 'sub').reduce((s, e) => s + (e.subTokens || 0), 0), [visible]);

563 useEffect(() => {

564 if (!scrollRef.current) return;

565 if (isCompacted) scrollRef.current.scrollTo({

566 top: 0,

567 behavior: 'smooth'

568 }); else if (playing || activeGate) scrollRef.current.scrollTop = scrollRef.current.scrollHeight;

569 }, [visible.length, !!activeGate, isCompacted]);

570 const rootRef = useRef(null);

571 const keyStateRef = useRef({});

572 const [isFullscreen, setIsFullscreen] = useState(false);

573 keyStateRef.current = {

574 time,

575 activeGate,

576 sendPrompt,

577 hasInteracted

578 };

579 useEffect(() => {

580 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

581 document.addEventListener('fullscreenchange', onFsChange);

582 return () => document.removeEventListener('fullscreenchange', onFsChange);

583 }, []);

584 const toggleFullscreen = () => {

585 if (!rootRef.current) return;

586 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

587 };

588 useEffect(() => {

589 const onKey = e => {

590 const tag = e.target.tagName;

591 if (tag === 'INPUT' || tag === 'BUTTON' || tag === 'TEXTAREA' || tag === 'SELECT' || e.target.isContentEditable) return;

592 if (!rootRef.current) return;

593 const rect = rootRef.current.getBoundingClientRect();

594 if (rect.width === 0 && rect.height === 0) return;

595 if (rect.bottom < 0 || rect.top > window.innerHeight) return;

596 if (e.code === 'Space') {

597 const {time: t, activeGate: g, sendPrompt: send, hasInteracted: hi} = keyStateRef.current;

598 if (!hi) return;

599 e.preventDefault();

600 if (t === 0) setPlaying(true); else if (g) send(); else if (t >= 1) {

601 setTime(0);

602 setGatesPassed(0);

603 setSelIdx(null);

604 setHovIdx(null);

605 setPlaying(true);

606 } else setPlaying(p => !p);

607 }

608 };

609 window.addEventListener('keydown', onKey);

610 return () => window.removeEventListener('keydown', onKey);

611 }, []);

612 const pct = totalTokens / MAX * 100;

613 const barColor = pct > 75 ? '#D97757' : pct > 50 ? '#B8860B' : '#558A42';

614 const activeIdx = selIdx !== null ? selIdx : hovIdx;

615 const hovEvent = activeIdx !== null ? visible[activeIdx] : null;

616 useEffect(() => {

617 if (detailRef.current) detailRef.current.scrollTop = 0;

618 }, [hovEvent]);

619 const focusT = hovEvent ? hovEvent.t : time;

620 const takeaway = isCompacted ? 'Compaction replaces the conversation with a structured summary. System prompt, CLAUDE.md, memory, and MCP tools reload automatically. The skill listing is the one exception. Only skills you actually invoked are preserved.' : focusT < STARTUP_END ? 'A lot loads before you type anything. CLAUDE.md, memory, skills, and MCP tools are all in context before your first prompt.' : focusT < 0.28 ? "Your prompt is tiny compared to what's already loaded. Most of Claude's context is project knowledge, not your words." : focusT < 0.50 ? 'Each file Claude reads grows the context. Path-scoped rules load automatically alongside matching files.' : focusT < 0.71 ? 'Hooks fire automatically on tool events. Output reaches Claude via additionalContext JSON. Exit code 2 surfaces stderr to Claude. Plain stdout on exit 0 goes to the debug log, not the transcript.' : focusT < 0.79 ? 'Follow-up questions keep building on the same context. Everything from earlier is still there.' : focusT < 0.87 ? "The subagent works in its own separate context window. None of its file reads touch yours. Only the final summary comes back." : focusT < 0.88 ? 'Bang commands run in your shell and prefix the output to your next message. Useful for grounding Claude in command results without it running them.' : focusT < 0.90 ? 'User-only skills stay out of context entirely until you invoke them. The skill index at startup only lists skills Claude can call on its own.' : '/compact summarizes the conversation to free space while keeping key information. In a real session, run it when context starts affecting performance or before a long new task.';

621 const terminalView = isCompacted ? 'A "Conversation compacted" message. The summarization happens silently.' : focusT < STARTUP_END ? 'The input box, waiting for your first message. Everything above loads silently before you type anything.' : focusT < 0.28 ? 'Your prompt. Claude hasn\'t started working yet.' : focusT < 0.52 ? 'Your prompt and "Reading files...". Rules show as one-line "Loaded" notices, not their content.' : focusT < 0.72 ? "Claude's response and file diffs. Hooks fire silently. Tool output like npm test shows as a brief summary, not the full content." : focusT < 0.79 ? 'Your follow-up prompt.' : focusT < 0.86 ? "A brief notice that a subagent is working, then its result. You don't see the subagent's individual file reads." : focusT < 0.90 ? "Claude's response, your git status output, and the commit-push skill running." : 'Your full conversation. /compact is available to run.';

622 const mono = 'var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)';

623 const renderWithCode = s => s.split('`').map((part, i) => i % 2 === 1 ? <code key={i} style={{

624 fontFamily: mono,

625 fontSize: '0.92em',

626 background: 'var(--cw-track)',

627 padding: '1px 4px',

628 borderRadius: 3

629 }}>{part}</code> : part);

630 if (!mounted) return null;

631 return <>

632 <div className="cw-mobile-fallback">

633 This interactive timeline works best on a larger screen. See <a href="#what-the-timeline-shows" style={{

634 color: '#D97757'

635 }}>the written breakdown below</a> for the same concepts.

636 </div>

637 <div className="cw-root" ref={rootRef} onClickCapture={() => setHasInteracted(true)} style={isFullscreen ? {

638 height: '100vh',

639 borderRadius: 0,

640 display: 'flex',

641 flexDirection: 'column'

642 } : {}}>

643 <style>{`

644 .cw-root {

645 --cw-bg: #FAFAF8;

646 --cw-text: #1A1918;

647 --cw-text-2: #3D3C38;

648 --cw-text-3: #5E5D59;

649 --cw-text-dim: #6E6C64;

650 --cw-text-faint: #8A8880;

651 --cw-surface: rgba(0,0,0,0.025);

652 --cw-surface-2: rgba(0,0,0,0.04);

653 --cw-border: rgba(0,0,0,0.08);

654 --cw-track: rgba(0,0,0,0.04);

655 --cw-hover: rgba(0,0,0,0.04);

656 --cw-rail: rgba(0,0,0,0.08);

657 --cw-scrollbar: rgba(0,0,0,0.22);

658 background: var(--cw-bg);

659 border-radius: 12px;

660 overflow: hidden;

661 font-family: var(--font-sans, -apple-system, BlinkMacSystemFont, sans-serif);

662 color: var(--cw-text);

663 border: 1px solid var(--cw-border);

664 }

665 .dark .cw-root {

666 --cw-bg: #111110;

667 --cw-text: #E8E6DC;

668 --cw-text-2: #B8B6AE;

669 --cw-text-3: #9C9A92;

670 --cw-text-dim: #8A8880;

671 --cw-text-faint: #6E6C64;

672 --cw-surface: rgba(255,255,255,0.02);

673 --cw-surface-2: rgba(255,255,255,0.015);

674 --cw-border: rgba(255,255,255,0.06);

675 --cw-track: rgba(255,255,255,0.03);

676 --cw-hover: rgba(255,255,255,0.04);

677 --cw-rail: rgba(255,255,255,0.04);

678 --cw-scrollbar: rgba(255,255,255,0.18);

679 }

680 .cw-scroll::-webkit-scrollbar { width: 6px; }

681 .cw-scroll::-webkit-scrollbar-track { background: transparent; }

682 .cw-scroll::-webkit-scrollbar-thumb { background: var(--cw-scrollbar); border-radius: 3px; }

683 @keyframes cw-blink { 50% { opacity: 0; } }

684 @keyframes cw-fadein { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }

685 .cw-compacted-row { animation: cw-fadein 0.3s ease-out backwards; }

686 .cw-mobile-fallback { display: none; padding: 14px 16px; border-radius: 8px; font-size: 14px; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

687 .dark .cw-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

688 @media (max-width: 700px) {

689 .cw-root { display: none !important; }

690 .cw-mobile-fallback { display: block; }

691 }

692 `}</style>

10 693 

11## 時間線顯示的內容694 {}

695 <div style={{

696 padding: '16px 20px 12px',

697 display: 'flex',

698 alignItems: 'flex-end',

699 gap: 24

700 }}>

701 <div style={{

702 flex: 1,

703 minWidth: 0

704 }}>

705 <div style={{

706 fontSize: 18,

707 fontWeight: 600,

708 letterSpacing: -0.3,

709 lineHeight: 1

710 }}>

711 Explore the context window

712 </div>

713 <div style={{

714 fontSize: 14,

715 color: 'var(--cw-text-dim)',

716 marginTop: 4

717 }}>

718 A simulated session showing what enters context and what it costs

719 </div>

720 </div>

721 <div style={{

722 textAlign: 'right',

723 flexShrink: 0

724 }}>

725 <div style={{

726 fontFamily: mono,

727 fontSize: 20,

728 fontWeight: 600,

729 color: barColor,

730 letterSpacing: -0.5,

731 lineHeight: 1

732 }}>

733 ~{fmt(totalTokens)}<span style={{

734 fontSize: 15,

735 fontWeight: 500,

736 marginLeft: 4

737 }}>tokens</span>

738 </div>

739 <div style={{

740 fontFamily: mono,

741 fontSize: 13,

742 color: 'var(--cw-text-dim)',

743 marginTop: 2

744 }} title="Token counts are illustrative. Actual values vary with your CLAUDE.md size, MCP servers, and file lengths.">

745 / {fmt(MAX)} · illustrative

746 </div>

747 </div>

748 </div>

749 

750 {}

751 <div style={{

752 padding: '0 20px'

753 }}>

754 <div style={{

755 height: 4,

756 borderRadius: 2,

757 background: 'var(--cw-track)',

758 overflow: 'hidden',

759 marginBottom: 6

760 }}>

761 <div style={{

762 width: pct + '%',

763 height: '100%',

764 background: barColor,

765 transition: 'width 0.6s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s'

766 }} />

767 </div>

768 <div style={{

769 height: 28,

770 borderRadius: 5,

771 background: 'var(--cw-track)',

772 border: '1px solid var(--cw-border)',

773 overflow: 'hidden',

774 display: 'flex'

775 }}>

776 {blocks.map((b, i) => {

777 const w = Math.max(b.tokens / MAX * 100, 0.15);

778 const isHov = b.visIdx === activeIdx;

779 const catMatch = hovCat && b.color === hovCat;

780 const dimmed = hovCat ? !catMatch : activeIdx !== null && !isHov;

781 return <div key={b.id} onMouseEnter={() => setHovIdx(b.visIdx)} onMouseLeave={() => setHovIdx(null)} onClick={() => setSelIdx(selIdx === b.visIdx ? null : b.visIdx)} style={{

782 width: w + '%',

783 height: '100%',

784 background: b.color,

785 opacity: isHov || catMatch ? 1 : dimmed ? 0.25 : 0.65,

786 borderRight: i < blocks.length - 1 ? '0.5px solid var(--cw-border)' : 'none',

787 transition: 'opacity 0.15s',

788 cursor: 'pointer'

789 }} />;

790 })}

791 </div>

792 <div style={{

793 display: 'flex',

794 gap: 12,

795 marginTop: 6,

796 flexWrap: 'wrap',

797 justifyContent: 'space-between'

798 }}>

799 <div style={{

800 display: 'flex',

801 gap: 12,

802 flexWrap: 'wrap'

803 }}>

804 {LEGEND.map(x => {

805 const active = hovCat === x.c;

806 return <div key={x.l} onMouseEnter={() => setHovCat(x.c)} onMouseLeave={() => setHovCat(null)} style={{

807 display: 'flex',

808 alignItems: 'center',

809 gap: 4,

810 padding: '2px 6px',

811 borderRadius: 4,

812 cursor: 'pointer',

813 background: active ? 'var(--cw-hover)' : 'transparent',

814 transition: 'background 0.1s'

815 }}>

816 <div style={{

817 width: 6,

818 height: 6,

819 borderRadius: 1.5,

820 background: x.c,

821 opacity: active ? 1 : 0.7

822 }} />

823 <span style={{

824 fontSize: 12,

825 color: active ? 'var(--cw-text)' : 'var(--cw-text-dim)'

826 }}>{x.l}</span>

827 </div>;

828 })}

829 </div>

830 <div style={{

831 display: 'flex',

832 gap: 6,

833 alignItems: 'center',

834 fontSize: 12,

835 color: 'var(--cw-text-dim)'

836 }}>

837 <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="#558A42" strokeWidth="2.5">

838 <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" /><circle cx="12" cy="12" r="3" />

839 </svg>

840 <span>= appears in your terminal</span>

841 </div>

842 </div>

843 </div>

844 

845 {}

846 <div style={{

847 display: 'flex',

848 padding: '14px 20px 0',

849 gap: 16,

850 height: isFullscreen ? 'calc(100vh - 240px)' : 420

851 }}>

852 

853 {}

854 <div ref={scrollRef} className="cw-scroll" style={{

855 flex: 1,

856 minWidth: 0,

857 overflowY: 'auto',

858 paddingRight: 8,

859 scrollBehavior: 'smooth'

860 }}>

861 {visible.length === 0 && !playing && <div style={{

862 height: '100%',

863 display: 'flex',

864 flexDirection: 'column',

865 alignItems: 'center',

866 justifyContent: 'center',

867 gap: 16

868 }}>

869 <div style={{

870 fontFamily: mono,

871 fontSize: 16,

872 color: 'var(--cw-text-dim)',

873 display: 'flex',

874 alignItems: 'center',

875 gap: 8

876 }}>

877 <span style={{

878 color: 'var(--cw-text-faint)'

879 }}>$</span>

880 <span>claude</span>

881 <span style={{

882 display: 'inline-block',

883 width: 8,

884 height: 16,

885 background: 'var(--cw-text-dim)',

886 opacity: 0.5,

887 animation: 'cw-blink 1s step-end infinite'

888 }} />

889 </div>

890 <button onClick={() => setPlaying(true)} style={{

891 padding: '10px 20px',

892 borderRadius: 8,

893 border: '1px solid rgba(217,119,87,0.3)',

894 background: 'rgba(217,119,87,0.08)',

895 color: '#D97757',

896 fontSize: 15,

897 fontWeight: 600,

898 cursor: 'pointer',

899 display: 'flex',

900 alignItems: 'center',

901 gap: 8

902 }}>

903 <span>▶</span>

904 <span>Start session</span>

905 </button>

906 <div style={{

907 fontSize: 13,

908 color: 'var(--cw-text-faint)',

909 maxWidth: 280,

910 textAlign: 'center',

911 lineHeight: 1.5

912 }}>

913 Watch what loads into context, from the moment you run <code style={{

914 fontFamily: mono

915 }}>claude</code> through a full conversation.

916 </div>

917 </div>}

918 {isCompacted && <div style={{

919 marginBottom: 10,

920 padding: '10px 12px',

921 borderRadius: 6,

922 background: 'rgba(217,119,87,0.05)',

923 border: '1px solid rgba(217,119,87,0.15)'

924 }}>

925 <div style={{

926 fontSize: 13,

927 fontWeight: 600,

928 color: '#D97757',

929 marginBottom: 3

930 }}>

931 After /compact

932 </div>

933 <div style={{

934 fontSize: 13,

935 color: 'var(--cw-text-3)',

936 lineHeight: 1.5,

937 fontFamily: mono

938 }}>

939 {fmt(preCompactTotal)} → {fmt(totalTokens)} tokens · freed {fmt(preCompactTotal - totalTokens)}

940 </div>

941 <div style={{

942 fontSize: 13,

943 color: 'var(--cw-text-dim)',

944 lineHeight: 1.5,

945 marginTop: 4

946 }}>

947 This is what's left in context: startup content, which lives outside the message history and reloads after compaction, plus a structured summary of the entire conversation. Skill descriptions don't reload.

948 </div>

949 </div>}

950 {time > 0 && visible.length > 0 && <div style={{

951 fontSize: 12,

952 fontWeight: 700,

953 color: 'var(--cw-text-faint)',

954 textTransform: 'uppercase',

955 letterSpacing: 0.6,

956 marginBottom: 6,

957 paddingLeft: 28

958 }}>

959 {isCompacted ? 'Reloaded after compact' : 'Before you type anything'}

960 </div>}

961 

962 {time > 0 && visible.map((evt, i) => {

963 const meta = KIND_META[evt.kind];

964 const isHov = hovIdx === i;

965 const prevKind = i > 0 ? visible[i - 1].kind : null;

966 const isSub = evt.kind === 'sub';

967 const enteringSubagent = isSub && prevKind !== 'sub';

968 const leavingSubagent = prevKind === 'sub' && !isSub;

969 let showPhase = null;

970 if (evt.kind === 'user' && prevKind !== 'user') showPhase = 'You'; else if (evt.kind === 'claude' && prevKind === 'user') showPhase = 'Claude works'; else if (evt.label === 'Conversation summary') showPhase = 'Summarized by /compact';

971 const isNewRow = isCompacted && !(evt.kind === 'auto' && evt.t < STARTUP_END);

972 return <div key={evt.label + evt.t} className={isNewRow ? 'cw-compacted-row' : ''} style={isNewRow ? {

973 animationDelay: `${i * 60}ms`

974 } : {}}>

975 {showPhase && <div style={{

976 fontSize: 12,

977 fontWeight: 700,

978 color: 'var(--cw-text-faint)',

979 textTransform: 'uppercase',

980 letterSpacing: 0.6,

981 marginTop: 14,

982 marginBottom: 6,

983 paddingLeft: 28

984 }}>

985 {showPhase}

986 </div>}

987 {enteringSubagent && <div style={{

988 marginLeft: 28,

989 marginTop: 6,

990 marginBottom: 2,

991 paddingLeft: 10,

992 borderLeft: '2px solid rgba(155,123,196,0.4)',

993 fontSize: 12,

994 fontWeight: 600,

995 color: '#9B7BC4',

996 textTransform: 'uppercase',

997 letterSpacing: 0.5

998 }}>

999 Subagent's separate context window

1000 </div>}

1001 {leavingSubagent && <div style={{

1002 marginLeft: 28,

1003 marginBottom: 6,

1004 paddingLeft: 10,

1005 paddingBottom: 6,

1006 borderLeft: '2px solid rgba(155,123,196,0.4)',

1007 fontSize: 12,

1008 color: 'var(--cw-text-dim)',

1009 fontFamily: mono

1010 }}>

1011 ↓ {fmt(subTotal)} tokens stayed in subagent's context · only the summary returns

1012 </div>}

1013 <div onMouseEnter={() => setHovIdx(i)} onMouseLeave={() => setHovIdx(null)} onClick={() => setSelIdx(selIdx === i ? null : i)} style={{

1014 display: 'flex',

1015 alignItems: 'flex-start',

1016 borderRadius: 6,

1017 cursor: 'pointer',

1018 background: selIdx === i || isHov ? 'var(--cw-hover)' : 'transparent',

1019 outline: selIdx === i ? '1px solid rgba(217,119,87,0.4)' : 'none',

1020 opacity: hovCat && evt.color !== hovCat ? 0.35 : 1,

1021 transition: 'background 0.1s, opacity 0.15s',

1022 marginLeft: isSub ? 28 : 0,

1023 paddingLeft: isSub ? 10 : 0,

1024 borderLeft: isSub ? '2px solid rgba(155,123,196,0.4)' : 'none'

1025 }}>

1026 <div style={{

1027 width: 28,

1028 display: 'flex',

1029 flexDirection: 'column',

1030 alignItems: 'center',

1031 paddingTop: 8,

1032 flexShrink: 0

1033 }}>

1034 <div style={{

1035 width: evt.kind === 'user' || evt.kind === 'compact' ? 10 : 7,

1036 height: evt.kind === 'user' || evt.kind === 'compact' ? 10 : 7,

1037 borderRadius: '50%',

1038 background: evt.color,

1039 opacity: isHov ? 1 : 0.6,

1040 transition: 'opacity 0.15s',

1041 boxShadow: isHov ? `0 0 8px ${evt.color}40` : 'none'

1042 }} />

1043 {i < visible.length - 1 && <div style={{

1044 width: 1.5,

1045 flex: 1,

1046 background: 'var(--cw-rail)',

1047 marginTop: 2,

1048 minHeight: 6

1049 }} />}

1050 </div>

1051 <div style={{

1052 flex: 1,

1053 minWidth: 0,

1054 padding: '5px 10px 5px 4px',

1055 display: 'flex',

1056 alignItems: 'center',

1057 gap: 8

1058 }}>

1059 <span style={{

1060 fontSize: 12,

1061 fontWeight: 600,

1062 padding: '1px 5px',

1063 borderRadius: 3,

1064 background: meta.badgeBg,

1065 color: meta.badgeColor,

1066 flexShrink: 0,

1067 fontFamily: mono

1068 }}>

1069 {meta.badge}

1070 </span>

1071 <span style={{

1072 fontSize: 15,

1073 fontFamily: mono,

1074 color: isHov ? 'var(--cw-text)' : evt.kind === 'user' ? '#558A42' : evt.kind === 'auto' ? 'var(--cw-text-dim)' : 'var(--cw-text-2)',

1075 flex: 1,

1076 minWidth: 0,

1077 overflow: 'hidden',

1078 textOverflow: 'ellipsis',

1079 whiteSpace: 'nowrap',

1080 fontWeight: evt.kind === 'user' ? 550 : 400

1081 }}>

1082 {evt.label}

1083 </span>

1084 {evt.tokens > 0 && <span style={{

1085 fontSize: 12,

1086 fontFamily: mono,

1087 color: 'var(--cw-text-faint)',

1088 flexShrink: 0

1089 }}>

1090 +{fmt(evt.tokens)}

1091 </span>}

1092 {evt.subTokens > 0 && <span style={{

1093 fontSize: 12,

1094 fontFamily: mono,

1095 color: '#9B7BC4',

1096 flexShrink: 0,

1097 opacity: 0.6

1098 }}>

1099 +{fmt(evt.subTokens)}

1100 </span>}

1101 {evt.tokens > 0 && <div style={{

1102 width: 50,

1103 height: 5,

1104 borderRadius: 2,

1105 background: 'var(--cw-track)',

1106 flexShrink: 0,

1107 overflow: 'hidden'

1108 }}>

1109 <div style={{

1110 width: Math.min(evt.tokens / 5000 * 100, 100) + '%',

1111 height: '100%',

1112 background: evt.color,

1113 opacity: isHov ? 0.8 : 0.4,

1114 transition: 'opacity 0.15s'

1115 }} />

1116 </div>}

1117 <span style={{

1118 width: 14,

1119 flexShrink: 0,

1120 display: 'flex',

1121 justifyContent: 'center'

1122 }} title={VIS_META[evt.vis].label}>

1123 {evt.vis !== 'hidden' && <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke={evt.vis === 'full' ? '#558A42' : 'currentColor'} style={{

1124 color: 'var(--cw-text-faint)',

1125 opacity: evt.vis === 'full' ? 1 : 0.5

1126 }} strokeWidth="2">

1127 <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" /><circle cx="12" cy="12" r="3" />

1128 </svg>}

1129 </span>

1130 </div>

1131 </div>

1132 </div>;

1133 })}

1134 

1135 {activeGate && (activeGate.kind === 'prompt' || activeGate.kind === 'bang' || activeGate.kind === 'slash') && <div style={{

1136 paddingLeft: 28,

1137 marginTop: 12,

1138 paddingRight: 8

1139 }}>

1140 <div style={{

1141 fontSize: 11,

1142 fontWeight: 600,

1143 color: '#6BA656',

1144 fontFamily: mono,

1145 textTransform: 'uppercase',

1146 letterSpacing: 0.5,

1147 marginBottom: 4,

1148 paddingLeft: 2

1149 }}>

1150 You type in your terminal

1151 </div>

1152 <div style={{

1153 display: 'flex',

1154 alignItems: 'flex-start',

1155 gap: 8,

1156 padding: '10px 12px',

1157 borderRadius: 6,

1158 background: 'rgba(85,138,66,0.06)',

1159 border: '1px solid rgba(85,138,66,0.2)'

1160 }}>

1161 <span style={{

1162 color: '#558A42',

1163 fontSize: 15,

1164 fontFamily: mono,

1165 flexShrink: 0

1166 }}>❯</span>

1167 <span style={{

1168 fontSize: 15,

1169 fontFamily: mono,

1170 color: 'var(--cw-text-2)',

1171 flex: 1,

1172 lineHeight: 1.5

1173 }}>

1174 {activeGate.text}

1175 <span style={{

1176 display: 'inline-block',

1177 width: 7,

1178 height: 13,

1179 marginLeft: 2,

1180 background: '#558A42',

1181 opacity: 0.5,

1182 verticalAlign: 'middle',

1183 animation: 'cw-blink 1s step-end infinite'

1184 }} />

1185 </span>

1186 <button onClick={sendPrompt} style={{

1187 padding: '5px 12px',

1188 borderRadius: 5,

1189 border: 'none',

1190 background: '#558A42',

1191 color: '#fff',

1192 fontSize: 13,

1193 fontWeight: 600,

1194 cursor: 'pointer',

1195 flexShrink: 0

1196 }}>

1197 {activeGate.kind === 'prompt' ? 'Send ↵' : 'Run ↵'}

1198 </button>

1199 </div>

1200 </div>}

1201 {activeGate && activeGate.kind === 'compact' && <div style={{

1202 paddingLeft: 28,

1203 marginTop: 12,

1204 paddingRight: 8

1205 }}>

1206 <div style={{

1207 padding: '12px 14px',

1208 borderRadius: 6,

1209 background: 'rgba(217,119,87,0.06)',

1210 border: '1px solid rgba(217,119,87,0.25)'

1211 }}>

1212 <div style={{

1213 fontSize: 13,

1214 color: 'var(--cw-text-3)',

1215 marginBottom: 8,

1216 lineHeight: 1.5

1217 }}>

1218 Context is at <span style={{

1219 fontFamily: mono,

1220 fontWeight: 600,

1221 color: barColor

1222 }}>{fmt(totalTokens)} tokens</span>.

1223 Run <code style={{

1224 fontFamily: mono,

1225 background: 'var(--cw-track)',

1226 padding: '1px 4px',

1227 borderRadius: 3

1228 }}>/compact</code> to

1229 summarize older exchanges and free space for more work.

1230 </div>

1231 <div style={{

1232 display: 'flex',

1233 alignItems: 'center',

1234 gap: 8

1235 }}>

1236 <span style={{

1237 color: '#D97757',

1238 fontSize: 15,

1239 fontFamily: mono

1240 }}>❯</span>

1241 <span style={{

1242 fontSize: 15,

1243 fontFamily: mono,

1244 color: 'var(--cw-text-2)',

1245 flex: 1

1246 }}>

1247 {activeGate.text}

1248 </span>

1249 <button onClick={sendPrompt} style={{

1250 padding: '5px 12px',

1251 borderRadius: 5,

1252 border: 'none',

1253 background: '#D97757',

1254 color: '#fff',

1255 fontSize: 13,

1256 fontWeight: 600,

1257 cursor: 'pointer',

1258 flexShrink: 0

1259 }}>

1260 Run ↵

1261 </button>

1262 </div>

1263 </div>

1264 </div>}

1265 </div>

1266 

1267 {}

1268 <div style={{

1269 width: 300,

1270 flexShrink: 0,

1271 display: 'flex',

1272 flexDirection: 'column'

1273 }}>

1274 <div ref={detailRef} className="cw-scroll" style={{

1275 padding: '14px 16px',

1276 borderRadius: 10,

1277 background: 'var(--cw-surface)',

1278 border: '1px solid var(--cw-border)',

1279 flex: 1,

1280 minHeight: 0,

1281 overflowY: 'auto',

1282 display: 'flex',

1283 flexDirection: 'column',

1284 gap: 10

1285 }}>

1286 {hovEvent ? <div>

1287 <div style={{

1288 display: 'flex',

1289 alignItems: 'center',

1290 gap: 8,

1291 marginBottom: 8

1292 }}>

1293 <div style={{

1294 width: 10,

1295 height: 10,

1296 borderRadius: 3,

1297 background: hovEvent.color,

1298 opacity: 0.8

1299 }} />

1300 <span style={{

1301 fontSize: 16,

1302 fontWeight: 600

1303 }}>{hovEvent.label}</span>

1304 </div>

1305 <div style={{

1306 display: 'flex',

1307 width: 'fit-content',

1308 padding: '3px 8px',

1309 borderRadius: 4,

1310 marginBottom: 8,

1311 background: KIND_META[hovEvent.kind].badgeBg

1312 }}>

1313 <span style={{

1314 fontSize: 12,

1315 fontWeight: 600,

1316 color: KIND_META[hovEvent.kind].badgeColor

1317 }}>

1318 {KIND_META[hovEvent.kind].detail}

1319 </span>

1320 </div>

1321 {hovEvent.tokens > 0 && <div style={{

1322 fontSize: 14,

1323 fontFamily: mono,

1324 color: 'var(--cw-text-dim)',

1325 marginBottom: 6

1326 }}>

1327 {fmt(hovEvent.tokens)} tokens

1328 </div>}

1329 {hovEvent.subTokens > 0 && <div style={{

1330 fontSize: 14,

1331 fontFamily: mono,

1332 color: '#9B7BC4',

1333 marginBottom: 6

1334 }}>

1335 {fmt(hovEvent.subTokens)} tokens in the subagent's context

1336 </div>}

1337 <p style={{

1338 fontSize: 15,

1339 color: 'var(--cw-text-3)',

1340 lineHeight: 1.55,

1341 margin: 0

1342 }}>

1343 {renderWithCode(hovEvent.desc)}

1344 </p>

1345 <div style={{

1346 marginTop: 10,

1347 padding: '8px 10px',

1348 borderRadius: 6,

1349 background: hovEvent.vis === 'full' ? 'rgba(85,138,66,0.08)' : 'var(--cw-surface-2)',

1350 border: '1px solid ' + (hovEvent.vis === 'full' ? 'rgba(85,138,66,0.2)' : 'var(--cw-border)')

1351 }}>

1352 <div style={{

1353 display: 'flex',

1354 alignItems: 'center',

1355 gap: 6,

1356 marginBottom: 3

1357 }}>

1358 <span style={{

1359 fontSize: 13,

1360 color: hovEvent.vis === 'full' ? '#558A42' : 'var(--cw-text-dim)'

1361 }}>

1362 {hovEvent.vis === 'full' ? '●' : hovEvent.vis === 'brief' ? '◐' : '○'}

1363 </span>

1364 <span style={{

1365 fontSize: 12,

1366 fontWeight: 600,

1367 color: 'var(--cw-text-2)'

1368 }}>

1369 {VIS_META[hovEvent.vis].label}

1370 </span>

1371 </div>

1372 <div style={{

1373 fontSize: 13,

1374 color: 'var(--cw-text-dim)',

1375 lineHeight: 1.4

1376 }}>

1377 {VIS_META[hovEvent.vis].sub}

1378 </div>

1379 </div>

1380 {hovEvent.tip && <div style={{

1381 marginTop: 10,

1382 padding: '8px 10px',

1383 borderRadius: 6,

1384 background: 'rgba(85,138,66,0.06)',

1385 border: '1px solid rgba(85,138,66,0.15)'

1386 }}>

1387 <div style={{

1388 fontSize: 12,

1389 fontWeight: 600,

1390 color: '#558A42',

1391 marginBottom: 3,

1392 display: 'flex',

1393 alignItems: 'center',

1394 gap: 4

1395 }}>

1396 <span>💡</span> Save context

1397 </div>

1398 <div style={{

1399 fontSize: 13,

1400 color: 'var(--cw-text-3)',

1401 lineHeight: 1.5

1402 }}>

1403 {renderWithCode(hovEvent.tip)}

1404 </div>

1405 </div>}

1406 {hovEvent.link && <a href={hovEvent.link} style={{

1407 display: 'inline-block',

1408 marginTop: 10,

1409 fontSize: 13,

1410 color: '#D97757',

1411 textDecoration: 'none',

1412 borderBottom: '1px solid rgba(217,119,87,0.3)'

1413 }}>

1414 Learn more →

1415 </a>}

1416 </div> : <div style={{

1417 display: 'flex',

1418 flexDirection: 'column',

1419 alignItems: 'center',

1420 textAlign: 'center',

1421 gap: 4,

1422 padding: '12px 0 4px'

1423 }}>

1424 <div style={{

1425 fontSize: 22,

1426 opacity: 0.2

1427 }}>👁</div>

1428 <div style={{

1429 fontSize: 14,

1430 fontWeight: 500,

1431 color: 'var(--cw-text-dim)'

1432 }}>Hover or click any event</div>

1433 <div style={{

1434 fontSize: 12,

1435 color: 'var(--cw-text-faint)',

1436 lineHeight: 1.4,

1437 maxWidth: 200

1438 }}>

1439 Hover to preview. Click to pin so you can scroll.

1440 </div>

1441 </div>}

1442 

1443 <div style={{

1444 padding: '10px 12px',

1445 borderRadius: 8,

1446 background: 'rgba(217,119,87,0.05)',

1447 border: '1px solid rgba(217,119,87,0.12)'

1448 }}>

1449 <div style={{

1450 fontSize: 11,

1451 fontWeight: 700,

1452 color: '#D97757',

1453 textTransform: 'uppercase',

1454 letterSpacing: 0.5,

1455 marginBottom: 3

1456 }}>

1457 Key takeaway

1458 </div>

1459 <div style={{

1460 fontSize: 13,

1461 color: 'var(--cw-text-3)',

1462 lineHeight: 1.5

1463 }}>

1464 {takeaway}

1465 </div>

1466 </div>

1467 

1468 <div style={{

1469 padding: '10px 12px',

1470 borderRadius: 8,

1471 background: 'var(--cw-surface-2)',

1472 border: '1px solid var(--cw-border)'

1473 }}>

1474 <div style={{

1475 fontSize: 11,

1476 fontWeight: 700,

1477 color: 'var(--cw-text-dim)',

1478 textTransform: 'uppercase',

1479 letterSpacing: 0.5,

1480 marginBottom: 3

1481 }}>

1482 In your terminal you see

1483 </div>

1484 <div style={{

1485 fontSize: 13,

1486 color: 'var(--cw-text-3)',

1487 lineHeight: 1.5

1488 }}>

1489 {terminalView}

1490 </div>

1491 </div>

1492 </div>

1493 </div>

1494 </div>

1495 

1496 {}

1497 <div style={{

1498 padding: '10px 20px 14px',

1499 display: 'flex',

1500 alignItems: 'center',

1501 gap: 10

1502 }}>

1503 <button aria-label={time >= 1 ? 'Restart' : activeGate ? 'Continue' : playing ? 'Pause' : 'Play'} onClick={() => {

1504 if (time >= 1) {

1505 setTime(0);

1506 setGatesPassed(0);

1507 setSelIdx(null);

1508 setHovIdx(null);

1509 setPlaying(true);

1510 } else if (activeGate) sendPrompt(); else setPlaying(!playing);

1511 }} style={{

1512 width: 30,

1513 height: 30,

1514 borderRadius: 6,

1515 border: 'none',

1516 background: 'rgba(217,119,87,0.1)',

1517 color: '#D97757',

1518 cursor: 'pointer',

1519 fontSize: 15,

1520 fontWeight: 700,

1521 display: 'flex',

1522 alignItems: 'center',

1523 justifyContent: 'center'

1524 }}>

1525 {time >= 1 ? '↺' : playing ? '⏸' : '▶'}

1526 </button>

1527 <div style={{

1528 flex: 1,

1529 height: 3,

1530 borderRadius: 2,

1531 background: 'var(--cw-track)',

1532 overflow: 'hidden'

1533 }}>

1534 <div style={{

1535 width: time * 100 + '%',

1536 height: '100%',

1537 background: '#D97757',

1538 transition: 'width 0.1s linear'

1539 }} />

1540 </div>

1541 <span style={{

1542 fontSize: 12,

1543 fontFamily: mono,

1544 color: 'var(--cw-text-faint)',

1545 minWidth: 30

1546 }}>

1547 {Math.round(time * 100)}%

1548 </span>

1549 <button onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1550 width: 28,

1551 height: 28,

1552 borderRadius: 6,

1553 border: '1px solid var(--cw-border)',

1554 background: 'var(--cw-surface)',

1555 color: 'var(--cw-text-dim)',

1556 cursor: 'pointer',

1557 fontSize: 15,

1558 flexShrink: 0,

1559 marginLeft: 4,

1560 display: 'flex',

1561 alignItems: 'center',

1562 justifyContent: 'center'

1563 }}>

1564 {isFullscreen ? '⤡' : '⛶'}

1565 </button>

1566 </div>

1567 </div>

1568 </>;

1569};

1570 

1571Claude Code 的上下文視窗包含 Claude 對您的會話所知的一切:您的指令、它讀取的文件、它自己的回應,以及從不在您的終端中出現的內容。下面的時間線播放了從啟動到壓縮的完整會話:在您輸入任何內容之前加載的內容、每個文件讀取、規則和 hook 在 Claude 工作時添加的內容,以及子代理如何將大型讀取保持在上下文之外。請參閱[書面分解](#what-the-timeline-shows)以獲取相同內容的列表形式。

1572 

1573<ContextWindow />

1574 

1575<h2 id="what-the-timeline-shows">

1576 時間線顯示的內容

1577</h2>

12 1578 

13該會話演示了一個現實流程,包含代表性的令牌計數:1579該會話演示了一個現實流程,包含代表性的令牌計數:

14 1580 


17* **後續提示**:[子代理](/zh-TW/sub-agents)在其自己的單獨上下文視窗中處理研究,因此大型文件讀取不會進入您的視窗。只有摘要和一個小的元數據預告片返回。1583* **後續提示**:[子代理](/zh-TW/sub-agents)在其自己的單獨上下文視窗中處理研究,因此大型文件讀取不會進入您的視窗。只有摘要和一個小的元數據預告片返回。

18* **最後**:`/compact` 用結構化摘要替換對話。大多數啟動內容會自動重新加載;下表顯示每個機制會發生什麼。1584* **最後**:`/compact` 用結構化摘要替換對話。大多數啟動內容會自動重新加載;下表顯示每個機制會發生什麼。

19 1585 

20## 壓縮後的存活內容1586<h2 id="what-survives-compaction">

1587 壓縮後的存活內容

1588</h2>

21 1589 

22當長會話壓縮時,Claude Code 會總結對話歷史以適應上下文視窗。您的指令會發生什麼取決於它們的加載方式:1590當長會話壓縮時,Claude Code 會總結對話歷史以適應上下文視窗。您的指令會發生什麼取決於它們的加載方式:

23 1591 


35 1603 

36技能主體在壓縮後重新注入,但大型技能會被截斷以適應每個技能的上限,一旦超過總預算,最舊的調用技能就會被刪除。截斷保留文件的開始部分,因此請將最重要的指令放在 `SKILL.md` 的頂部附近。1604技能主體在壓縮後重新注入,但大型技能會被截斷以適應每個技能的上限,一旦超過總預算,最舊的調用技能就會被刪除。截斷保留文件的開始部分,因此請將最重要的指令放在 `SKILL.md` 的頂部附近。

37 1605 

38## 檢查您自己的會話1606<h2 id="when-your-context-fills-up">

1607 當您的上下文填滿時

1608</h2>

1609 

1610Claude Code 會在您接近限制時自動壓縮,因此完整的上下文視窗不會結束您的會話。自動傳遞的工作方式與時間線中的 `/compact` 步驟相同。請參閱[當上下文填滿時](/zh-TW/how-claude-code-works#when-context-fills-up)以了解它保留的內容。

1611 

1612您也可以在自動傳遞運行之前採取行動:

1613 

1614* **使用焦點進行壓縮**:在開始長時間新任務之前,運行帶有指令的 `/compact`,例如 `/compact focus on the auth bug fix`。摘要保留您選擇的內容,而不是自動傳遞猜測的重要內容。

1615* **在任務之間清除**:切換到不相關的工作時運行 `/clear`。舊對話會擠出您接下來需要的文件,並在每條消息上花費令牌。

1616* **委託大型讀取**:將研究發送給[子代理](/zh-TW/sub-agents),以便文件內容保留在其上下文視窗中,而不是您的。

1617 

1618如果您需要更大的視窗而不是更小的對話,Fable 5、Opus 4.6 及更高版本以及 Sonnet 4.6 支持 100 萬令牌上下文視窗。請參閱[擴展上下文](/zh-TW/model-config#extended-context)以了解按計劃的可用性以及如何選擇 `[1m]` 模型變體。壓縮在更大的限制下以相同方式工作。

1619 

1620<h2 id="check-your-own-session">

1621 檢查您自己的會話

1622</h2>

39 1623 

40該可視化使用代表性數字。要在任何時刻查看您的實際上下文使用情況,請運行 `/context` 以獲取按類別的實時分解和優化建議。運行 `/memory` 以檢查在啟動時加載了哪些 CLAUDE.md 和自動記憶文件。1624該可視化使用代表性數字。要在任何時刻查看您的實際上下文使用情況,請運行 `/context` 以獲取按類別的實時分解和優化建議。運行 `/memory` 以檢查在啟動時加載了哪些 CLAUDE.md 和自動記憶文件。

41 1625 

42## 相關資源1626<h2 id="related-resources">

1627 相關資源

1628</h2>

43 1629 

44有關時間線中顯示的功能的更深入覆蓋,請參閱這些頁面:1630有關時間線中顯示的功能的更深入覆蓋,請參閱這些頁面:

45 1631 

costs.md +3 −1

Details

35 35 

36在 Pro、Max、Team 或 Enterprise 計畫上,`/usage` 還會顯示計入您計畫限制的內容明細。它將最近的使用情況歸因於 skills、subagents、plugins 和個別 MCP servers,每個都顯示為總數的百分比。按 `d` 或 `w` 在過去 24 小時和過去 7 天之間切換。這些數字是近似值,根據此機器上的本地工作階段歷史記錄計算,因此不包括來自其他裝置或 claude.ai 的使用情況。36在 Pro、Max、Team 或 Enterprise 計畫上,`/usage` 還會顯示計入您計畫限制的內容明細。它將最近的使用情況歸因於 skills、subagents、plugins 和個別 MCP servers,每個都顯示為總數的百分比。按 `d` 或 `w` 在過去 24 小時和過去 7 天之間切換。這些數字是近似值,根據此機器上的本地工作階段歷史記錄計算,因此不包括來自其他裝置或 claude.ai 的使用情況。

37 37 

38在 [VS Code 擴充功能](/zh-TW/vs-code#check-account-and-usage) 中,相同的明細會出現在「帳戶與使用情況」對話框中,並提供「日」和「週」切換。需要 Claude Code v2.1.174 或更新版本。

39 

38<h2 id="managing-costs-for-teams">40<h2 id="managing-costs-for-teams">

39 管理團隊成本41 管理團隊成本

40</h2>42</h2>


196 調整延伸思考198 調整延伸思考

197</h3>199</h3>

198 200 

199延伸思考預設為啟用,因為它可以顯著改善複雜規劃和推理任務的效能。思考 token 會作為輸出 token 計費,預設預算可能是每個請求數萬個 token,取決於模型。對於不需要深度推理的較簡單任務,您可以透過在 `/effort` 中降低[努力等級](/zh-TW/model-config#adjust-effort-level)或在 `/model` 中降低、在 `/config` 中停用思考或降低預算(例如,`MAX_THINKING_TOKENS=8000`)來降低成本201延伸思考預設為啟用,因為它可以顯著改善複雜規劃和推理任務的效能。思考 token 會作為輸出 token 計費,預設預算可能是每個請求數萬個 token,取決於模型。對於不需要深度推理的較簡單任務,您可以透過在 `/effort` 中降低[努力等級](/zh-TW/model-config#adjust-effort-level)或在 `/model` 中降低、在 `/config` 中停用思考或在具有[固定思考預算](/zh-TW/model-config#adaptive-reasoning-and-fixed-thinking-budgets)的模型上,透過 `MAX_THINKING_TOKENS=8000` 降低預算來降低成本自適應推理模型會忽略非零預算,因此請改用努力等級。Fable 5 上無法停用思考,它始終使用延伸思考。

200 202 

201<h3 id="delegate-verbose-operations-to-subagents">203<h3 id="delegate-verbose-operations-to-subagents">

202 將詳細操作委派給 subagents204 將詳細操作委派給 subagents

data-usage.md +3 −3

Details

62**商業使用者(Team、Enterprise 和 API)**:62**商業使用者(Team、Enterprise 和 API)**:

63 63 

64* 標準:30 天保留期64* 標準:30 天保留期

65* [零資料保留](/zh-TW/zero-data-retention):適用於 Claude for Enterprise 上的 Claude Code。ZDR 按組織啟用;每個新組織必須由您的帳戶團隊單獨啟用 ZDR65* [零資料保留](/zh-TW/zero-data-retention):適用於 Claude for Enterprise 上的 Claude Code。ZDR 不包含在標準 Enterprise 方案中;在您的帳戶團隊確認符合資格後,會按組織啟用

66* 本機快取:Claude Code 用戶端在 `~/.claude/projects/` 下以純文字形式本機儲存工作階段文字記錄,預設為 30 天,以啟用工作階段繼續。使用 `cleanupPeriodDays` 調整期間。請參閱[應用程式資料](/zh-TW/claude-directory#application-data)以了解儲存的內容以及如何清除。66* 本機快取:Claude Code 用戶端在 `~/.claude/projects/` 下以純文字形式本機儲存工作階段文字記錄,預設為 30 天,以啟用工作階段繼續。使用 `cleanupPeriodDays` 調整期間。請參閱[應用程式資料](/zh-TW/claude-directory#application-data)以了解儲存的內容以及如何清除。

67 67 

68您可以隨時刪除網路上的個別 Claude Code 工作階段。刪除工作階段會永久移除工作階段的事件資料。如需有關如何刪除工作階段的說明,請參閱[刪除工作階段](/zh-TW/claude-code-on-the-web#delete-sessions)。68您可以隨時刪除網路上的個別 Claude Code 工作階段。刪除工作階段會永久移除工作階段的事件資料。如需有關如何刪除工作階段的說明,請參閱[刪除工作階段](/zh-TW/claude-code-on-the-web#delete-sessions)。


83 83 

84下圖顯示 Claude Code 在安裝和正常操作期間如何連接到外部服務。實線表示必需的連接,而虛線表示可選或使用者啟動的資料流。84下圖顯示 Claude Code 在安裝和正常操作期間如何連接到外部服務。實線表示必需的連接,而虛線表示可選或使用者啟動的資料流。

85 85 

86<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/claude-code-data-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=5b1131530bdfdd415700a0cb4d4070c4" alt="顯示 Claude Code 外部連接的圖表:安裝/更新連接到發佈伺服器,使用者請求連接到 Anthropic 服務,包括 Console 驗證、public-api,以及可選的 metricsSentry 和錯誤報告" width="720" height="520" data-path="images/claude-code-data-flow.svg" />86<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/claude-code-data-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=5b1131530bdfdd415700a0cb4d4070c4" alt="顯示 Claude Code 外部連接的圖表:安裝/更新連接到發佈伺服器,使用者請求連接到 Anthropic 服務,包括 Console 驗證、public-api,以及可選的 metricsSentry。透過 /feedback 傳送的意見反應會傳送到 Google Cloud Storage,並可選擇性地建立 GitHub 議題" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

87 87 

88Claude Code 在本機執行。為了與 LLM 互動,Claude Code 透過網路發送資料。此資料包括所有使用者提示和模型輸出,在傳輸中透過 TLS 1.2+ 加密。Claude Code 與大多數流行的 VPN 和 LLM 代理相容。88Claude Code 在本機執行。為了與 LLM 互動,Claude Code 透過網路發送資料。此資料包括所有使用者提示和模型輸出,在傳輸中透過 TLS 1.2+ 加密。Claude Code 與大多數流行的 VPN 和 LLM 代理相容。

89 89 


119 119 

120Claude Code 從使用者的機器連接到 Sentry 進行操作錯誤記錄。資料在傳輸中使用 TLS 加密,在靜止時使用 256 位 AES 加密。在 [Sentry 安全文件](https://sentry.io/security/) 中閱讀更多資訊。若要選擇退出錯誤記錄,請設定 `DISABLE_ERROR_REPORTING` 環境變數。120Claude Code 從使用者的機器連接到 Sentry 進行操作錯誤記錄。資料在傳輸中使用 TLS 加密,在靜止時使用 256 位 AES 加密。在 [Sentry 安全文件](https://sentry.io/security/) 中閱讀更多資訊。若要選擇退出錯誤記錄,請設定 `DISABLE_ERROR_REPORTING` 環境變數。

121 121 

122當使用者執行 `/feedback` 命令時,他們的完整對話歷史記錄(包括程式碼)的副本會發送到 Anthropic。在提交前,使用者可以選擇要包含多少歷史記錄:僅限目前工作階段(預設值),或也包括同一專案在過去 24 小時或 7 天內的其他工作階段。資料在傳輸中使用 TLS 加密。可選地,在公開儲存庫中建立 GitHub 問題。若要選擇退出,請設定 `DISABLE_FEEDBACK_COMMAND` 環境變數為 `1`。122當使用者執行 `/feedback` 命令時,他們的完整對話歷史記錄(包括程式碼)的副本會發送到 Anthropic。在提交前,使用者可以選擇要包含多少歷史記錄:僅限目前工作階段(預設值),或也包括同一專案在過去 24 小時或 7 天內的其他工作階段。資料在傳輸中使用 TLS 加密,並儲存在 Google Cloud Storage 中,預設情況下會加密靜止的資料。可選地,在公開儲存庫中建立 GitHub 問題。若要選擇退出,請設定 `DISABLE_FEEDBACK_COMMAND` 環境變數為 `1`。

123 123 

124當使用者使用第三方提供者(例如 Bedrock 或 Vertex)或未設定 Anthropic 認證時,`/feedback` 會將報告寫入 `~/.claude/feedback-bundles/` 下的本機封存,而不是將其發送到 Anthropic。已知的 API 金鑰和權杖模式在寫入封存前會被編輯。在使用者將該檔案發送給 Anthropic 帳戶代表或將其附加到支援請求之前,任何內容都不會離開使用者的機器。124當使用者使用第三方提供者(例如 Bedrock 或 Vertex)或未設定 Anthropic 認證時,`/feedback` 會將報告寫入 `~/.claude/feedback-bundles/` 下的本機封存,而不是將其發送到 Anthropic。已知的 API 金鑰和權杖模式在寫入封存前會被編輯。在使用者將該檔案發送給 Anthropic 帳戶代表或將其附加到支援請求之前,任何內容都不會離開使用者的機器。

125 125 

Details

78 針對乾淨的設定進行測試78 針對乾淨的設定進行測試

79</h2>79</h2>

80 80 

81如果目標檢查無法隔離原因,或您的設定處於未知狀態,請與不從您常用設定載入任何內容的工作階段進行比較。將 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars) 指向空目錄以略過 `~/.claude` 下的所有內容並從沒有 `.claude` 資料夾、`.mcp.json` 或 `CLAUDE.md` 的目錄啟動以便也跳過專案設定81{/* min-version: 2.1.169 */}使用 [`claude --safe-mode`](/zh-TW/cli-reference#cli-flags) 開始它會啟動一個工作階段,其中所有自訂項目都被停用,包括 `CLAUDE.md`、skills、plugins、hooks、MCP servers 和自訂命令與代理程式。驗證、模型選擇、內建工具和權限正常運作。如果問題在安全模式中消失則其中一個表面是原因;使用上面的目標檢查來找出是哪一個由您的組織部署的受管設定仍然部分適用,因此原則配置的 hooks 和狀態列即使在安全模式中也會執行。

82 

83如果問題在安全模式中持續存在,或您的設定本身令人懷疑,請與不從您常用設定載入任何內容的工作階段進行比較。將 [`CLAUDE_CONFIG_DIR`](/zh-TW/env-vars) 指向空目錄以略過 `~/.claude` 下的所有內容,並從沒有 `.claude` 資料夾、`.mcp.json` 或 `CLAUDE.md` 的目錄啟動,以便也跳過專案設定。

82 84 

83```bash theme={null}85```bash theme={null}

84cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude86cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude

85```87```

86 88 

87乾淨的工作階段沒有使用者或專案設定、hooks、MCP servers、外掛程式或記憶89乾淨的工作階段沒有使用者或專案設定、hooks、MCP servers、plugins 或記憶

88 90 

89* 如果您的組織部署受管設定,它們仍然適用,因為它們位於 `~/.claude` 外的系統路徑91* 如果您的組織部署受管設定,它們仍然適用,因為它們位於 `~/.claude` 外的系統路徑

90* 在 Linux 和 Windows 上,您將被提示再次登入,因為認證儲存在設定目錄下92* 在 Linux 和 Windows 上,您將被提示再次登入,因為認證儲存在設定目錄下

desktop.md +31 −29

Details

67 67 

68提示框支援兩種方式來引入外部上下文:68提示框支援兩種方式來引入外部上下文:

69 69 

70* **@mention 檔案**:輸入 `@` 後跟檔案名稱,將檔案新增到對話上下文。Claude 隨後可以讀取和參考該檔案。@mention 在遠端會話中不可用70* **@mention 檔案**:輸入 `@` 後跟檔案名稱,將檔案新增到對話上下文。Claude 隨後可以讀取和參考該檔案。@mention 在雲端會話中不可用

71* **附加檔案**:使用附件按鈕將影像、PDF 和其他檔案附加到您的提示,或直接將檔案拖放到提示中。這對於分享錯誤的螢幕截圖、設計模型或參考文件很有用。71* **附加檔案**:使用附件按鈕將影像、PDF 和其他檔案附加到您的提示,或直接將檔案拖放到提示中。這對於分享錯誤的螢幕截圖、設計模型或參考文件很有用。

72 72 

73<h3 id="choose-a-permission-mode">73<h3 id="choose-a-permission-mode">

74 選擇權限模式74 選擇權限模式

75</h3>75</h3>

76 76 

77權限模式控制 Claude 在會話期間擁有多少自主權:它是否在編輯檔案、執行命令或兩者之前詢問。您可以隨時使用傳送按鈕旁的模式選擇器切換模式。從「詢問權限」開始,以查看 Claude 確切執行的操作,然後隨著您變得更加熟悉,移至「自動接受編輯」或 Plan Mode77權限模式控制 Claude 在會話期間擁有多少自主權:它是否在編輯檔案、執行命令或兩者之前詢問。您可以隨時使用傳送按鈕旁的模式選擇器切換模式。從「詢問權限」開始,以查看 Claude 確切執行的操作,然後隨著您變得更加熟悉,移至「自動接受編輯」或 Plan mode

78 78 

79| 模式 | 設定金鑰 | 行為 |79| 模式 | 設定金鑰 | 行為 |

80| ------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |80| ------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |

81| **詢問權限** | `default` | Claude 在編輯檔案或執行命令之前詢問。您會看到差異,並可以接受或拒絕每項變更。建議新使用者使用。 |81| **詢問權限** | `default` | Claude 在編輯檔案或執行命令之前詢問。您會看到差異,並可以接受或拒絕每項變更。建議新使用者使用。 |

82| **自動接受編輯** | `acceptEdits` | Claude 自動接受檔案編輯和常見的檔案系統命令,如 `mkdir`、`touch` 和 `mv`,但在執行其他終端機命令之前仍會詢問。當您信任檔案變更並想要更快速的迭代時,請使用此選項。 |82| **自動接受編輯** | `acceptEdits` | Claude 自動接受檔案編輯和常見的檔案系統命令,如 `mkdir`、`touch` 和 `mv`,但在執行其他終端機命令之前仍會詢問。當您信任檔案變更並想要更快速的迭代時,請使用此選項。 |

83| **Plan Mode** | `plan` | Claude 讀取檔案並執行命令以探索,然後提出計畫而不編輯您的原始程式碼。適合您想要先檢查方法的複雜任務。 |83| **Plan mode** | `plan` | Claude 讀取檔案並執行命令以探索,然後提出計畫而不編輯您的原始程式碼。適合您想要先檢查方法的複雜任務。 |

84| **Auto** | `auto` | Claude 執行所有操作,並進行背景安全檢查以驗證與您的請求的一致性。減少權限提示,同時保持監督。在您的「設定」→「Claude Code」中啟用。請參閱下方的[可用性要求](#auto-mode-availability)。 |84| **Auto** | `auto` | Claude 執行所有操作,並進行背景安全檢查以驗證與您的請求的一致性。減少權限提示,同時保持監督。在您的「設定」→「Claude Code」中啟用。請參閱下方的[可用性要求](#auto-mode-availability)。 |

85| **略過權限** | `bypassPermissions` | Claude 執行時不會有任何權限提示,相當於 CLI 中的 `--dangerously-skip-permissions`。在「設定」→「Claude Code」下的「允許略過權限模式」中啟用。僅在沙箱容器或虛擬機器中使用。企業管理員可以停用此選項。 |85| **略過權限** | `bypassPermissions` | Claude 執行時不會有任何權限提示,相當於 CLI 中的 `--dangerously-skip-permissions`。在「設定」→「Claude Code」下的「允許略過權限模式」中啟用。僅在沙箱容器或虛擬機器中使用。企業管理員可以停用此選項。 |

86 86 


88 88 

89<span id="auto-mode-availability" />89<span id="auto-mode-availability" />

90 90 

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。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。

92 92 

93<Tip title="最佳實踐">93<Tip title="最佳實踐">

94 在 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)。

95</Tip>95</Tip>

96 96 

97遠端會話支援'自動接受編輯'和 Plan Mode。'詢問權限'不可用,因為遠端會話預設會自動接受檔案編輯,'略過權限'不可用,因為遠端環境已經是沙箱化的97雲端會話支援'自動接受編輯'、Plan mode Auto mode。'自動接受編輯'對應於 `default` 模式:雲端會話預先批准檔案編輯因此選擇器顯示'自動接受編輯'而不是'詢問權限'。'略過權限'不可用,因為雲端環境已經是沙箱化的

98 98 

99企業管理員可以限制哪些權限模式可用。有關詳細資訊,請參閱[企業配置](#enterprise-configuration)。99企業管理員可以限制哪些權限模式可用。有關詳細資訊,請參閱[企業配置](#enterprise-configuration)。

100 100 


249 電腦使用是 macOS 和 Windows 上的研究預覽版,需要 Pro 或 Max 計畫。它在 Team 或 Enterprise 計畫上不可用。Claude Desktop 應用程式必須執行。249 電腦使用是 macOS 和 Windows 上的研究預覽版,需要 Pro 或 Max 計畫。它在 Team 或 Enterprise 計畫上不可用。Claude Desktop 應用程式必須執行。

250</Note>250</Note>

251 251 

252電腦使用預設為關閉。[在'設定'中啟用它](#enable-computer-use),然後 Claude 才能控制您的螢幕。在 macOS 上,您還需要授予'協助工具'和'螢幕錄製'權限252電腦使用預設為關閉。[在設定中啟用它](#enable-computer-use),然後 Claude 才能控制您的螢幕。在 macOS 上,您還需要授予協助工具和螢幕錄製權限

253 253 

254<Warning>254<Warning>

255 與[沙箱化 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)。


272 啟用電腦使用272 啟用電腦使用

273</h3>273</h3>

274 274 

275電腦使用預設為關閉。如果您要求 Claude 執行需要它的操作而它處於關閉狀態,Claude 會告訴您如果在'設定'中啟用電腦使用,它可以執行該任務。275電腦使用預設為關閉。如果您要求 Claude 執行需要它的操作而它處於關閉狀態,Claude 會告訴您如果在設定中啟用電腦使用,它可以執行該任務。

276 276 

277<Steps>277<Steps>

278 <Step title="更新桌面應用程式">278 <Step title="更新桌面應用程式">


403 連接外部工具403 連接外部工具

404</h3>404</h3>

405 405 

406對於本機和 [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 建立時配置連接器。

407 407 

408若要管理或斷開連接器,請在桌面應用程式中前往「設定」→「Connectors」,或從提示框中的「Connectors」選單中選擇 **Manage connectors**。408若要管理或斷開連接器,請在桌面應用程式中前往「設定」→「Connectors」,或從提示框中的「Connectors」選單中選擇 **Manage connectors**。

409 409 


425 425 

426對於本機和 [SSH](#ssh-sessions) 會話,點擊提示框旁的 **+** 按鈕,然後選擇 **Plugins** 以查看您已安裝的 plugins 及其 skills。若要新增 plugin,從子選單中選擇 **Add plugin** 以開啟 plugin 瀏覽器,它顯示來自您配置的 [marketplaces](/zh-TW/plugin-marketplaces)(包括官方 Anthropic 市場)的可用 plugins。選擇 **Manage plugins** 以啟用、停用或解除安裝 plugins。426對於本機和 [SSH](#ssh-sessions) 會話,點擊提示框旁的 **+** 按鈕,然後選擇 **Plugins** 以查看您已安裝的 plugins 及其 skills。若要新增 plugin,從子選單中選擇 **Add plugin** 以開啟 plugin 瀏覽器,它顯示來自您配置的 [marketplaces](/zh-TW/plugin-marketplaces)(包括官方 Anthropic 市場)的可用 plugins。選擇 **Manage plugins** 以啟用、停用或解除安裝 plugins。

427 427 

428Plugins 可以限定於您的使用者帳戶、特定專案或僅本機。如果您的組織集中管理 plugins,這些 plugins 在桌面會話中的可用方式與在 CLI 中相同。遠端會話不提供 Plugins。有關完整的 plugin 參考(包括建立您自己的 plugins),請參閱 [plugins](/zh-TW/plugins)。428Plugins 可以限定於您的使用者帳戶、特定專案或僅本機。如果您的組織集中管理 plugins,這些 plugins 在桌面會話中的可用方式與在 CLI 中相同。雲端會話不提供 Plugins。有關完整的 plugin 參考(包括建立您自己的 plugins),請參閱 [plugins](/zh-TW/plugins)。

429 429 

430<h3 id="configure-preview-servers">430<h3 id="configure-preview-servers">

431 配置預覽伺服器431 配置預覽伺服器


487| `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) |

488| `args` | string\[] | 傳遞給 `program` 的引數。僅在設定 `program` 時使用 |488| `args` | string\[] | 傳遞給 `program` 的引數。僅在設定 `program` 時使用 |

489 489 

490<a id="when-to-use-program-vs-runtimeexecutable" />

491 

490<h5 id="when-to-use-program-vs-runtimeexecutable">492<h5 id="when-to-use-program-vs-runtimeexecutable">

491 何時使用 `program` 與 `runtimeExecutable`493 何時使用 `program` 與 `runtimeExecutable`

492</h5>494</h5>


598 600 

599若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/zh-TW/env-vars)。601若要在任何平台上為本機會話和開發伺服器設定環境變數,請在提示框中開啟環境下拉式選單,將滑鼠懸停在 **Local** 上,然後點擊齒輪圖示以開啟本機環境編輯器。您在此處儲存的變數會在您的機器上加密儲存,並適用於您啟動的每個本機會話和預覽伺服器。您也可以將變數新增到 `~/.claude/settings.json` 檔案中的 `env` 金鑰,儘管這些僅到達 Claude 會話而不是開發伺服器。有關支援的變數的完整清單,請參閱[環境變數](/zh-TW/env-vars)。

600 602 

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 及更新版本始終使用自適應推理,沒有固定預算模式。603[Extended thinking](/zh-TW/model-config#extended-thinking) 預設啟用,這改進了複雜推理任務的效能,但使用額外的 tokens。若要停用思考,請在本機環境編輯器中將 `MAX_THINKING_TOKENS` 設定為 `0`;這對 Fable 5 沒有影響,Fable 5 始終使用 extended thinking在[第三方提供者](/zh-TW/third-party-integrations)上,`0` 會改為省略 `thinking` 參數,自適應推理模型可能仍會思考。在具有[自適應推理](/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 及更新版本始終使用自適應推理,沒有固定預算模式。

602 604 

603<h3 id="remote-sessions">605<h3 id="cloud-sessions">

604 遠端會話606 雲端會話

605</h3>607</h3>

606 608 

607遠端會話即使您關閉應用程式也會在背景繼續。使用情況計入您的[訂閱計畫限制](/zh-TW/costs),沒有單獨的計算費用。609雲端會話即使您關閉應用程式也會在背景繼續。使用情況計入您的[訂閱計畫限制](/zh-TW/costs),沒有單獨的計算費用。

608 610 

609您可以建立具有不同網路存取級別和環境變數的自訂雲端環境。在開始遠端會話時選擇環境下拉式選單,然後選擇 **Add environment**。有關配置網路存取和環境變數的詳細資訊,請參閱[雲端環境](/zh-TW/claude-code-on-the-web#the-cloud-environment)。611您可以建立具有不同網路存取級別和環境變數的自訂雲端環境。在開始雲端會話時選擇環境下拉式選單,然後選擇 **Add environment**。有關配置網路存取和環境變數的詳細資訊,請參閱[雲端環境](/zh-TW/claude-code-on-the-web#the-cloud-environment)。

610 612 

611<h3 id="ssh-sessions">613<h3 id="ssh-sessions">

612 SSH 會話614 SSH 會話


710 712 

711IT 團隊可以透過 macOS 上的 MDM 或 Windows 上的群組原則來管理桌面應用程式。可用的原則包括啟用或停用 Claude Code 功能、控制自動更新和設定自訂部署 URL。713IT 團隊可以透過 macOS 上的 MDM 或 Windows 上的群組原則來管理桌面應用程式。可用的原則包括啟用或停用 Claude Code 功能、控制自動更新和設定自訂部署 URL。

712 714 

713* **macOS**:使用 Jamf 或 Kandji 等工具透過 `com.anthropic.Claude` 偏好設定網域配置715* **macOS**:使用 Jamf 或 Kandji 等工具透過 `com.anthropic.claudefordesktop` 偏好設定網域配置

714* **Windows**:透過 `SOFTWARE\Policies\Claude` 的登錄配置716* **Windows**:透過 `SOFTWARE\Policies\Claude` 的登錄配置

715 717 

716<h3 id="authentication-and-sso">718<h3 id="authentication-and-sso">


723 資料處理725 資料處理

724</h3>726</h3>

725 727 

726Claude Code 在本機會話中本機處理您的程式碼,或在遠端會話中在 Anthropic 的雲端基礎設施上處理。對話和程式碼上下文會傳送到 Anthropic 的 API 進行處理。有關資料保留、隱私和合規性的詳細資訊,請參閱[資料處理](/zh-TW/data-usage)。728Claude Code 在本機會話中本機處理您的程式碼,或在雲端會話中在 Anthropic 的雲端基礎設施上處理。對話和程式碼上下文會傳送到 Anthropic 的 API 進行處理。有關資料保留、隱私和合規性的詳細資訊,請參閱[資料處理](/zh-TW/data-usage)。

727 729 

728<h3 id="deployment">730<h3 id="deployment">

729 部署731 部署


779* **[MCP servers](/zh-TW/mcp)** 在 `~/.claude.json` 或 `.mcp.json` 中配置的在兩者中都有效781* **[MCP servers](/zh-TW/mcp)** 在 `~/.claude.json` 或 `.mcp.json` 中配置的在兩者中都有效

780* **[Hooks](/zh-TW/hooks)** 和 **[skills](/zh-TW/skills)** 在設定中定義的適用於兩者782* **[Hooks](/zh-TW/hooks)** 和 **[skills](/zh-TW/skills)** 在設定中定義的適用於兩者

781* **[Settings](/zh-TW/settings)** 在 `~/.claude.json` 和 `~/.claude/settings.json` 中是共用的。`settings.json` 中的權限規則、允許的工具和其他設定適用於 Desktop 會話。783* **[Settings](/zh-TW/settings)** 在 `~/.claude.json` 和 `~/.claude/settings.json` 中是共用的。`settings.json` 中的權限規則、允許的工具和其他設定適用於 Desktop 會話。

782* **Models**:Sonnet、Opus 和 Haiku 在兩者中都可用。在 Desktop 中,從傳送按鈕旁的下拉式選單中選擇模型。您可以在會話期間從相同的下拉式選單變更模型。784* **Models**:相同的[模型](/zh-TW/model-config#available-models)在兩者中都可用。在 Desktop 中,從傳送按鈕旁的下拉式選單中選擇模型。您可以在會話期間從相同的下拉式選單變更模型。

783 785 

784<Note>786<Note>

785 **來自 Claude Desktop 聊天應用程式的 MCP servers**:Desktop 應用程式從 `claude_desktop_config.json` 將 MCP servers 載入到 Code 標籤會話中,以及來自 `~/.claude.json` 和 `.mcp.json` 的伺服器。在 `claude_desktop_config.json` 中定義的伺服器在 Desktop 聊天表面和 Code 標籤中都可用。787 **來自 Claude Desktop 聊天應用程式的 MCP servers**:Desktop 應用程式從 `claude_desktop_config.json` 將 MCP servers 載入到 Code 標籤會話中,以及來自 `~/.claude.json` 和 `.mcp.json` 的伺服器。在 `claude_desktop_config.json` 中定義的伺服器在 Desktop 聊天表面和 Code 標籤中都可用。


794此表比較 CLI 和 Desktop 之間的核心功能。有關 CLI 標誌的完整清單,請參閱 [CLI 參考](/zh-TW/cli-reference)。796此表比較 CLI 和 Desktop 之間的核心功能。有關 CLI 標誌的完整清單,請參閱 [CLI 參考](/zh-TW/cli-reference)。

795 797 

796| 功能 | CLI | Desktop |798| 功能 | CLI | Desktop |

797| ----------------------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |799| ----------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

798| 權限模式 | 所有模式,包括 `dontAsk` | 詢問權限、自動接受編輯、Plan Mode、Auto 和透過「設定」略過權限 |800| 權限模式 | 所有模式,包括 `dontAsk` | 詢問權限、自動接受編輯、Plan Mode、Auto 和透過「設定」略過權限 |

799| `--dangerously-skip-permissions` | CLI 標誌 | 略過權限模式。在「設定」→「Claude Code」→「允許略過權限模式」中啟用 |801| `--dangerously-skip-permissions` | CLI 標誌 | 略過權限模式。在「設定」→「Claude Code」→「允許略過權限模式」中啟用 |

800| [第三方提供者](/zh-TW/third-party-integrations) | Bedrock、Vertex、Foundry | Anthropic 的 API 預設。企業部署可以配置 Vertex AI 和閘道提供者。請參閱[企業配置指南](https://support.claude.com/en/articles/12622667-enterprise-configuration)。 |802| [第三方提供者](/zh-TW/third-party-integrations) | Bedrock、Vertex AI、Foundry | Anthropic 的 API 預設。企業部署可以配置 Vertex AI 和閘道提供者。請參閱[企業配置指南](https://support.claude.com/en/articles/12622667-enterprise-configuration)。若要在 Bedrock、Vertex AI、Foundry 或自託管 LLM 閘道上執行 Code 標籤,請參閱 [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview)。 |

801| [MCP servers](/zh-TW/mcp) | 在設定檔案中配置 | 本機和 SSH 會話的連接器 UI,或設定檔案 |803| [MCP servers](/zh-TW/mcp) | 在設定檔案中配置 | 本機和 SSH 會話的連接器 UI,或設定檔案 |

802| [Plugins](/zh-TW/plugins) | `/plugin` 命令 | plugin 管理器 UI |804| [Plugins](/zh-TW/plugins) | `/plugin` 命令 | Plugin 管理器 UI |

803| @mention 檔案 | 文字型 | 具有自動完成;本機和 SSH 會話僅 |805| @mention 檔案 | 文字型 | 具有自動完成;本機和 SSH 會話僅 |

804| 檔案附件 | 不可用 | 影像、PDF |806| 檔案附件 | 不可用 | 影像、PDF |

805| 會話隔離 | [`--worktree`](/zh-TW/cli-reference) 標誌 | 自動 worktrees |807| 會話隔離 | [`--worktree`](/zh-TW/cli-reference) 標誌 | 自動 worktrees |


809| Dispatch 整合 | 不可用 | [Dispatch 會話](#sessions-from-dispatch)在側邊欄中 |811| Dispatch 整合 | 不可用 | [Dispatch 會話](#sessions-from-dispatch)在側邊欄中 |

810| 指令碼和自動化 | [`--print`](/zh-TW/cli-reference)、[Agent SDK](/zh-TW/headless) | 不可用 |812| 指令碼和自動化 | [`--print`](/zh-TW/cli-reference)、[Agent SDK](/zh-TW/headless) | 不可用 |

811 813 

812<h3 id="what-s-not-available-in-desktop">814<h3 id="whats-not-available-in-desktop">

813 Desktop 中不可用的內容815 Desktop 中不可用的內容

814</h3>816</h3>

815 817 

816以下功能僅在 CLI 或 VS Code 擴充功能中可用:818以下功能僅在 CLI 或 VS Code 擴充功能中可用,除非另有說明

817 819 

818* **第三方提供者**:Desktop 預設連接到 Anthropic 的 API。企業部署可以配置 Vertex AI 和閘道提供者,透過[受管設定](https://support.claude.com/en/articles/12622667-enterprise-configuration)。對於 Bedrock 或 Foundry,請使用 [CLI](/zh-TW/quickstart)。820* **第三方提供者**:Desktop 預設連接到 Anthropic 的 API。企業部署可以透過[受管設定](https://support.claude.com/en/articles/12622667-enterprise-configuration)配置 Vertex AI 和閘道提供者。對於 Bedrock 或 Foundry,請參閱 [quickstart](/zh-TW/quickstart)。作為上述部分的例外,[Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview) 在 Bedrock、Vertex AI、Foundry 或自託管 LLM 閘道上執行 Code 標籤。

819* **Linux**:桌面應用程式僅在 macOS 和 Windows 上可用。在 Linux 上,請使用 [CLI](/zh-TW/quickstart)。821* **Linux**:桌面應用程式僅在 macOS 和 Windows 上可用。在 Linux 上,請使用 [CLI](/zh-TW/quickstart)。

820* **內嵌程式碼建議**:Desktop 不提供自動完成樣式的建議。它透過對話提示和明確的程式碼變更進行工作。822* **內嵌程式碼建議**:Desktop 不提供自動完成樣式的建議。它透過對話提示和明確的程式碼變更進行工作。

821* **Agent teams**:平行 Claude Code 會話相互傳遞訊息,可在 [CLI](/zh-TW/agent-teams) 中使用,不在 Desktop 中。若要在一個會話內進行多代理工作,請使用 [dynamic workflows](/zh-TW/workflows),它們在 Desktop 中執行。823* **Agent teams**:平行 Claude Code 會話相互傳遞訊息,可在 [CLI](/zh-TW/agent-teams) 中使用,不在 Desktop 中。若要在一個會話內進行多代理工作,請使用 [dynamic workflows](/zh-TW/workflows),它們在 Desktop 中執行。


885 887 

886如果 MCP server 切換沒有回應或伺服器在 Windows 上無法連接,請檢查伺服器是否在您的設定中正確配置、重新啟動應用程式、驗證伺服器程序在工作管理員中執行,並檢查伺服器日誌以查看連線錯誤。888如果 MCP server 切換沒有回應或伺服器在 Windows 上無法連接,請檢查伺服器是否在您的設定中正確配置、重新啟動應用程式、驗證伺服器程序在工作管理員中執行,並檢查伺服器日誌以查看連線錯誤。

887 889 

888<h3 id="app-won-t-quit">890<h3 id="app-wont-quit">

889 應用程式無法退出891 應用程式無法退出

890</h3>892</h3>

891 893 


899* **安裝後 PATH 未更新**:開啟新的終端機視窗。PATH 更新僅適用於新的終端機會話。901* **安裝後 PATH 未更新**:開啟新的終端機視窗。PATH 更新僅適用於新的終端機會話。

900* **並行安裝錯誤**:如果您看到有關另一個安裝進行中的錯誤,但實際上沒有,請嘗試以管理員身份執行安裝程式。902* **並行安裝錯誤**:如果您看到有關另一個安裝進行中的錯誤,但實際上沒有,請嘗試以管理員身份執行安裝程式。

901 903 

902<h3 id="branch-doesn-t-exist-yet-when-opening-in-cli">904<h3 id="branch-doesnt-exist-yet-when-opening-in-cli">

903 在 CLI 中開啟時「分支尚不存在」905 在 CLI 中開啟時「分支尚不存在」

904</h3>906</h3>

905 907 


914 仍然卡住?916 仍然卡住?

915</h3>917</h3>

916 918 

917* [GitHub Issues](https://github.com/anthropics/claude-code/issues) 上搜尋或提交錯誤919* 在桌面應用程式中開啟「Help → Get Support」,或直接造訪 [Claude 支援中心](https://support.claude.com/)

918* 造訪 [Claude 支援中心](https://support.claude.com/)920* 對於在獨立 `claude` CLI 中也會重現的問題,請在 [GitHub Issues](https://github.com/anthropics/claude-code/issues) 上搜尋或提交錯誤

919 921 

920提交錯誤時包括您的桌面應用程式版本、您的作業系統、確切的錯誤訊息和相關日誌。在 macOS 上,檢查 Console.app。在 Windows 上,檢查「事件檢視器Windows 日誌應用程式」。922提交問題時請包括您的桌面應用程式版本、您的作業系統、確切的錯誤訊息和相關日誌。在 macOS 上,檢查 Console.app。在 Windows 上,檢查「事件檢視器 Windows 日誌 應用程式」。

Details

71 </Step>71 </Step>

72 72 

73 <Step title="選擇模型">73 <Step title="選擇模型">

74 從傳送按鈕旁的下拉式選單中選擇模型。請參閱 [models](/zh-TW/model-config#available-models) 以比較 Opus、Sonnet 和 Haiku。您可以稍後從相同的下拉式選單變更模型。74 從傳送按鈕旁的下拉式選單中選擇模型。請參閱 [models](/zh-TW/model-config#available-models) 以比較可用的模型。您可以稍後從相同的下拉式選單變更模型。

75 </Step>75 </Step>

76 76 

77 <Step title="告訴 Claude 要做什麼">77 <Step title="告訴 Claude 要做什麼">


129 129 

130Desktop 使用與 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)。

131 131 

132<h2 id="what-s-next">132<h2 id="whats-next">

133 接下來133 接下來

134</h2>134</h2>

135 135 

Details

117</h2>117</h2>

118 118 

119* [Routines](/zh-TW/routines):在 Anthropic 管理的基礎設施上按排程、透過 API 呼叫或回應 GitHub 事件執行任務,即使您的電腦關閉也能執行119* [Routines](/zh-TW/routines):在 Anthropic 管理的基礎設施上按排程、透過 API 呼叫或回應 GitHub 事件執行任務,即使您的電腦關閉也能執行

120* [Run prompts on a schedule](/zh-TW/scheduled-tasks):在 CLI 中使用 `/loop` 的工作階段範圍排程120* [在排程上執行提示](/zh-TW/scheduled-tasks):在 CLI 中使用 `/loop` 的工作階段範圍排程

121* [Claude Code GitHub Actions](/zh-TW/github-actions):在 CI 中按排程執行 Claude,而不是在您的機器上執行121* [Claude Code GitHub Actions](/zh-TW/github-actions):在 CI 中按排程執行 Claude,而不是在您的機器上執行

122* [Use Claude Code Desktop](/zh-TW/desktop):完整的 Desktop 應用程式指南122* [使用 Claude Code Desktop](/zh-TW/desktop):完整的 Desktop 應用程式指南

discover-plugins.md +100 −32

Details

10 10 

11想要建立和分發您自己的市場?請參閱[建立和分發外掛程式市場](/zh-TW/plugin-marketplaces)。11想要建立和分發您自己的市場?請參閱[建立和分發外掛程式市場](/zh-TW/plugin-marketplaces)。

12 12 

13## 市場如何運作13<h2 id="how-marketplaces-work">

14 市場如何運作

15</h2>

14 16 

15市場是他人建立和共享的外掛程式目錄。使用市場是一個兩步流程:17市場是他人建立和共享的外掛程式目錄。使用市場是一個兩步流程:

16 18 


26 28 

27將其視為新增應用程式商店:新增商店可讓您存取瀏覽其集合,但您仍然可以選擇個別下載哪些應用程式。29將其視為新增應用程式商店:新增商店可讓您存取瀏覽其集合,但您仍然可以選擇個別下載哪些應用程式。

28 30 

29## 官方 Anthropic 市場31<h2 id="official-anthropic-marketplace">

32 官方 Anthropic 市場

33</h2>

30 34 

31官方 Anthropic 市場 (`claude-plugins-official`) 在您啟動 Claude Code 時自動可用。執行 `/plugin` 並前往 **Discover** 標籤以瀏覽可用內容,或在 [claude.com/plugins](https://claude.com/plugins) 查看目錄。35官方 Anthropic 市場 (`claude-plugins-official`) 在您啟動 Claude Code 時自動可用。執行 `/plugin` 並前往 **Discover** 標籤以瀏覽可用內容,或在 [claude.com/plugins](https://claude.com/plugins) 查看目錄。

32 36 


44 48 

45官方市場包括多個外掛程式類別:49官方市場包括多個外掛程式類別:

46 50 

47### 程式碼智能51<h3 id="code-intelligence">

52 程式碼智能

53</h3>

48 54 

49程式碼智能外掛程式啟用 Claude Code 的內建 LSP 工具,使 Claude 能夠跳轉到定義、尋找參考資料,並在編輯後立即查看類型錯誤。這些外掛程式配置[語言伺服器協議](https://microsoft.github.io/language-server-protocol/)連接,這是為 VS Code 程式碼智能提供動力的相同技術。55程式碼智能外掛程式啟用 Claude Code 的內建 LSP 工具,使 Claude 能夠跳轉到定義、尋找參考資料,並在編輯後立即查看類型錯誤。這些外掛程式配置[語言伺服器協議](https://microsoft.github.io/language-server-protocol/)連接,這是為 VS Code 程式碼智能提供動力的相同技術。

50 56 


70 如果在安裝外掛程式後在 `/plugin` Errors 標籤中看到 `Executable not found in $PATH`,請從上表安裝所需的二進位檔。76 如果在安裝外掛程式後在 `/plugin` Errors 標籤中看到 `Executable not found in $PATH`,請從上表安裝所需的二進位檔。

71</Note>77</Note>

72 78 

73#### Claude 從程式碼智能外掛程式獲得的功能79<h4 id="what-claude-gains-from-code-intelligence-plugins">

80 Claude 從程式碼智能外掛程式獲得的功能

81</h4>

74 82 

75安裝程式碼智能外掛程式並且其語言伺服器二進位檔可用後,Claude 獲得兩項功能:83安裝程式碼智能外掛程式並且其語言伺服器二進位檔可用後,Claude 獲得兩項功能:

76 84 


79 87 

80如果您遇到問題,請參閱[程式碼智能故障排除](#code-intelligence-issues)。88如果您遇到問題,請參閱[程式碼智能故障排除](#code-intelligence-issues)。

81 89 

82### 外部整合90<h3 id="external-integrations">

91 外部整合

92</h3>

83 93 

84這些外掛程式捆綁預先配置的 [MCP servers](/zh-TW/mcp),以便您可以連接 Claude 到外部服務,無需手動設定:94這些外掛程式捆綁預先配置的 [MCP servers](/zh-TW/mcp),以便您可以連接 Claude 到外部服務,無需手動設定:

85 95 


90* **通訊**:`slack`100* **通訊**:`slack`

91* **監控**:`sentry`101* **監控**:`sentry`

92 102 

93### 自動安全審查103<h3 id="automatic-security-review">

104 自動安全審查

105</h3>

94 106 

95`security-guidance` 外掛程式審查 Claude 進行的每項變更是否存在常見漏洞,並指示 Claude 在同一工作階段中修復發現的問題。請參閱[在 Claude 編寫程式碼時捕捉安全問題](/zh-TW/security-guidance)以了解它檢查的內容以及如何新增專案特定的規則。107`security-guidance` 外掛程式審查 Claude 進行的每項變更是否存在常見漏洞,並指示 Claude 在同一工作階段中修復發現的問題。請參閱[在 Claude 編寫程式碼時捕捉安全問題](/zh-TW/security-guidance)以了解它檢查的內容以及如何新增專案特定的規則。

96 108 

97### 開發工作流程109<h3 id="development-workflows">

110 開發工作流程

111</h3>

98 112 

99為常見開發任務新增技能和代理的外掛程式:113為常見開發任務新增技能和代理的外掛程式:

100 114 


103* **agent-sdk-dev**:使用 Claude Agent SDK 構建的工具117* **agent-sdk-dev**:使用 Claude Agent SDK 構建的工具

104* **plugin-dev**:建立您自己的外掛程式的工具組118* **plugin-dev**:建立您自己的外掛程式的工具組

105 119 

106### 輸出樣式120<h3 id="output-styles">

121 輸出樣式

122</h3>

107 123 

108自訂 Claude 的回應方式:124自訂 Claude 的回應方式:

109 125 

110* **explanatory-output-style**:關於實現選擇的教育見解126* **explanatory-output-style**:關於實現選擇的教育見解

111* **learning-output-style**:用於技能建立的互動式學習模式127* **learning-output-style**:用於技能建立的互動式學習模式

112 128 

113## 社群市場129<h2 id="community-marketplace">

130 社群市場

131</h2>

114 132 

115位於 [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) 的社群市場託管已通過 Anthropic 自動驗證和安全篩選的第三方外掛程式。每個外掛程式都固定到目錄中的特定提交 SHA。與官方市場不同,您需要手動新增它:133位於 [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) 的社群市場託管已通過 Anthropic 自動驗證和安全篩選的第三方外掛程式。每個外掛程式都固定到目錄中的特定提交 SHA。與官方市場不同,您需要手動新增它:

116 134 


126 144 

127若要將您自己的外掛程式提交到社群市場,請參閱建立外掛程式指南中的[將您的外掛程式提交到社群市場](/zh-TW/plugins#submit-your-plugin-to-the-community-marketplace)。145若要將您自己的外掛程式提交到社群市場,請參閱建立外掛程式指南中的[將您的外掛程式提交到社群市場](/zh-TW/plugins#submit-your-plugin-to-the-community-marketplace)。

128 146 

129## 試試看:新增演示市場147<h2 id="try-it-add-the-demo-marketplace">

148 試試看:新增演示市場

149</h2>

130 150 

131Anthropic 也維護一個[演示外掛程式市場](https://github.com/anthropics/claude-code/tree/main/plugins)(`claude-code-plugins`),其中包含展示外掛程式系統可能性的範例外掛程式。與官方市場不同,您需要手動新增此市場。151Anthropic 也維護一個[演示外掛程式市場](https://github.com/anthropics/claude-code/tree/main/plugins)(`claude-code-plugins`),其中包含展示外掛程式系統可能性的範例外掛程式。與官方市場不同,您需要手動新增此市場。

132 152 


149 * **Marketplaces**:新增、移除或更新已新增的市場169 * **Marketplaces**:新增、移除或更新已新增的市場

150 * **Errors**:檢視任何外掛程式載入錯誤170 * **Errors**:檢視任何外掛程式載入錯誤

151 171 

152 前往 **Discover** 標籤以查看您剛新增的市場中的外掛程式。{/* min-version: 2.1.154 */}標記為與您目前工作目錄相關的外掛程式會釘在頂部,並帶有 **suggested for this directory** 標籤。172 前往 **Discover** 標籤以查看您剛新增的市場中的外掛程式。{/* min-version: 2.1.154 */}當您的管理員已透過 [`pluginSuggestionMarketplaces`](/zh-TW/settings#available-settings) 受管設定將市場加入允許清單時,標記為與您目前工作目錄相關的外掛程式會釘在頂部,並帶有 **suggested for this directory** 標籤。

153 </Step>173 </Step>

154 174 

155 <Step title="安裝外掛程式">175 <Step title="安裝外掛程式">


193 213 

194本指南的其餘部分涵蓋了您可以新增市場、安裝外掛程式和管理配置的所有方式。214本指南的其餘部分涵蓋了您可以新增市場、安裝外掛程式和管理配置的所有方式。

195 215 

196## 新增市場216<h2 id="add-marketplaces">

217 新增市場

218</h2>

197 219 

198使用 `/plugin marketplace add` 命令從不同來源新增市場。220使用 `/plugin marketplace add` 命令從不同來源新增市場。

199 221 


206* **本機路徑**:目錄或 `marketplace.json` 檔案的直接路徑228* **本機路徑**:目錄或 `marketplace.json` 檔案的直接路徑

207* **遠端 URL**:託管 `marketplace.json` 檔案的直接 URL229* **遠端 URL**:託管 `marketplace.json` 檔案的直接 URL

208 230 

209### 從 GitHub 新增231<h3 id="add-from-github">

232 從 GitHub 新增

233</h3>

210 234 

211使用 `owner/repo` 格式新增包含 `.claude-plugin/marketplace.json` 檔案的 GitHub 儲存庫,其中 `owner` 是 GitHub 使用者名稱或組織,`repo` 是儲存庫名稱。235使用 `owner/repo` 格式新增包含 `.claude-plugin/marketplace.json` 檔案的 GitHub 儲存庫,其中 `owner` 是 GitHub 使用者名稱或組織,`repo` 是儲存庫名稱。

212 236 


216/plugin marketplace add anthropics/claude-code240/plugin marketplace add anthropics/claude-code

217```241```

218 242 

219### 從其他 Git 主機新增243<h3 id="add-from-other-git-hosts">

244 從其他 Git 主機新增

245</h3>

220 246 

221透過提供完整 URL 新增任何 git 儲存庫。這適用於任何 Git 主機,包括 GitLab、Bitbucket 和自託管伺服器。包含 `.git` 後綴,以便 Claude Code 複製儲存庫,而不是將 URL 視為託管 `marketplace.json` 檔案的直接連結。247透過提供完整 URL 新增任何 git 儲存庫。這適用於任何 Git 主機,包括 GitLab、Bitbucket 和自託管伺服器。包含 `.git` 後綴,以便 Claude Code 複製儲存庫,而不是將 URL 視為託管 `marketplace.json` 檔案的直接連結。

222 248 


238/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0264/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

239```265```

240 266 

241### 從本機路徑新增267<h3 id="add-from-local-paths">

268 從本機路徑新增

269</h3>

242 270 

243新增包含 `.claude-plugin/marketplace.json` 檔案的本機目錄:271新增包含 `.claude-plugin/marketplace.json` 檔案的本機目錄:

244 272 


252/plugin marketplace add ./path/to/marketplace.json280/plugin marketplace add ./path/to/marketplace.json

253```281```

254 282 

255### 從遠端 URL 新增283<h3 id="add-from-remote-urls">

284 從遠端 URL 新增

285</h3>

256 286 

257透過 URL 新增遠端 `marketplace.json` 檔案:287透過 URL 新增遠端 `marketplace.json` 檔案:

258 288 


264 與基於 Git 的市場相比,基於 URL 的市場有一些限制。如果在安裝外掛程式時遇到「找不到路徑」錯誤,請參閱[故障排除](/zh-TW/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces)。294 與基於 Git 的市場相比,基於 URL 的市場有一些限制。如果在安裝外掛程式時遇到「找不到路徑」錯誤,請參閱[故障排除](/zh-TW/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces)。

265</Note>295</Note>

266 296 

267## 安裝外掛程式297<h2 id="install-plugins">

298 安裝外掛程式

299</h2>

268 300 

269新增市場後,您可以直接安裝外掛程式(預設安裝到使用者範圍):301新增市場後,您可以直接安裝外掛程式(預設安裝到使用者範圍):

270 302 


284 在安裝外掛程式之前,請確保您信任它。Anthropic 不控制外掛程式中包含的 MCP servers、檔案或其他軟體,也無法驗證它們是否按預期工作。檢查每個外掛程式的首頁以獲取更多資訊。316 在安裝外掛程式之前,請確保您信任它。Anthropic 不控制外掛程式中包含的 MCP servers、檔案或其他軟體,也無法驗證它們是否按預期工作。檢查每個外掛程式的首頁以獲取更多資訊。

285</Warning>317</Warning>

286 318 

287## 管理已安裝的外掛程式319<h2 id="manage-installed-plugins">

320 管理已安裝的外掛程式

321</h2>

288 322 

289執行 `/plugin` 並前往 **Installed** 標籤以檢視、啟用、停用或解除安裝外掛程式。清單按範圍分組,並排序以便您首先看到問題:具有載入錯誤或未解決依賴項的外掛程式出現在頂部,然後是您的最愛,停用的外掛程式摺疊在底部的摺疊標題後面。323執行 `/plugin` 並前往 **Installed** 標籤以檢視、啟用、停用或解除安裝外掛程式。清單按範圍分組,並排序以便您首先看到問題:具有載入錯誤或未解決依賴項的外掛程式出現在頂部,然後是您的最愛,停用的外掛程式摺疊在底部的摺疊標題後面。

290 324 


294* 輸入以按外掛程式名稱或描述篩選328* 輸入以按外掛程式名稱或描述篩選

295* 按 Enter 以開啟外掛程式的詳細檢視並啟用、停用或解除安裝它329* 按 Enter 以開啟外掛程式的詳細檢視並啟用、停用或解除安裝它

296 330 

331詳細檢視會顯示外掛程式貢獻的元件:命令、skills、agents、hooks、MCP servers 和 LSP servers。相同的清單也可從命令列透過 `claude plugin details` 取得。

332 

297當您安裝聲明依賴項的外掛程式時,安裝輸出會列出哪些依賴項與其一起自動安裝。333當您安裝聲明依賴項的外掛程式時,安裝輸出會列出哪些依賴項與其一起自動安裝。

298 334 

299您也可以使用直接命令管理外掛程式。335您也可以使用直接命令管理外掛程式。

300 336 

337列出已安裝的外掛程式而不開啟選單:

338 

339```shell theme={null}

340/plugin list

341```

342 

343傳遞 `--enabled` 或 `--disabled` 以僅顯示處於該狀態的外掛程式。

344 

301停用外掛程式而不解除安裝:345停用外掛程式而不解除安裝:

302 346 

303```shell theme={null}347```shell theme={null}


323claude plugin uninstall formatter@your-org --scope project367claude plugin uninstall formatter@your-org --scope project

324```368```

325 369 

326### 在不重新啟動的情況下套用外掛程式變更370<h3 id="apply-plugin-changes-without-restarting">

371 在不重新啟動的情況下套用外掛程式變更

372</h3>

327 373 

328當您在工作階段期間安裝、啟用或停用外掛程式時,執行 `/reload-plugins` 以在不重新啟動的情況下啟動所有變更:374當您在工作階段期間安裝、啟用或停用外掛程式時,執行 `/reload-plugins` 以在不重新啟動的情況下啟動所有變更:

329 375 


331/reload-plugins377/reload-plugins

332```378```

333 379 

334Claude Code 重新載入所有活動外掛程式,並顯示外掛程式、技能代理、hooks、外掛程式 MCP servers 和外掛程式 LSP servers 的計數。380Claude Code 重新載入所有活動外掛程式,並顯示外掛程式、skillsagents、hooks、外掛程式 MCP servers 和外掛程式 LSP servers 的計數。

335 381 

336重新載入在下一個請求時會產生令牌成本:新載入的元件會在附加到對話的內容中宣佈自己,而現有歷史記錄仍然從提示快取讀取。提供 MCP servers 的外掛程式在其工具未被 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 延遲時成本更高:該變更會使快取失效,下一個請求會重新讀取整個對話。如需詳細資訊,請參閱 [啟用或停用外掛程式](/zh-TW/prompt-caching#enabling-or-disabling-a-plugin)。382重新載入在下一個請求時會產生令牌成本:新載入的元件會在附加到對話的內容中宣佈自己,而現有歷史記錄仍然從提示快取讀取。提供 MCP servers 的外掛程式在其工具未被 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 延遲時成本更高:該變更會使快取失效,下一個請求會重新讀取整個對話。{/* min-version: 2.1.163 */}在該情況下 `/reload-plugins` 會顯示警告並不套用重新載入;傳遞 `--force` 以強制套用。如需詳細資訊,請參閱 [啟用或停用外掛程式](/zh-TW/prompt-caching#enabling-or-disabling-a-plugin)。

337 383 

338## 管理市場384<h2 id="manage-marketplaces">

385 管理市場

386</h2>

339 387 

340您可以透過互動式 `/plugin` 介面或使用 CLI 命令管理市場。388您可以透過互動式 `/plugin` 介面或使用 CLI 命令管理市場。

341 389 

342### 使用互動式介面390<h3 id="use-the-interactive-interface">

391 使用互動式介面

392</h3>

343 393 

344執行 `/plugin` 並前往 **Marketplaces** 標籤以:394執行 `/plugin` 並前往 **Marketplaces** 標籤以:

345 395 


348* 更新市場清單以取得最新外掛程式398* 更新市場清單以取得最新外掛程式

349* 移除您不再需要的市場399* 移除您不再需要的市場

350 400 

351### 使用 CLI 命令401<h3 id="use-cli-commands">

402 使用 CLI 命令

403</h3>

352 404 

353您也可以使用直接命令管理市場。405您也可以使用直接命令管理市場。

354 406 


374 移除市場將解除安裝您從中安裝的任何外掛程式。426 移除市場將解除安裝您從中安裝的任何外掛程式。

375</Warning>427</Warning>

376 428 

377### 配置自動更新429<h3 id="configure-auto-updates">

430 配置自動更新

431</h3>

378 432 

379Claude Code 可以在啟動時自動更新市場及其已安裝的外掛程式。為市場啟用自動更新後,Claude Code 會重新整理市場資料並將已安裝的外掛程式更新到其最新版本。如果任何外掛程式已更新,您將看到提示您執行 `/reload-plugins` 的通知。433Claude Code 可以在啟動時自動更新市場及其已安裝的外掛程式。為市場啟用自動更新後,Claude Code 會重新整理市場資料並將已安裝的外掛程式更新到其最新版本。如果任何外掛程式已更新,您將看到提示您執行 `/reload-plugins` 的通知。

380 434 


400 454 

401當您想要手動管理 Claude Code 更新但仍然接收自動外掛程式更新時,這很有用。455當您想要手動管理 Claude Code 更新但仍然接收自動外掛程式更新時,這很有用。

402 456 

403## 配置團隊市場457<h2 id="configure-team-marketplaces">

458 配置團隊市場

459</h2>

404 460 

405團隊管理員可以透過將市場配置新增到 `.claude/settings.json` 來為專案設定自動市場安裝。當團隊成員信任儲存庫資料夾時,Claude Code 會提示他們安裝這些市場和外掛程式。461團隊管理員可以透過將市場配置新增到 `.claude/settings.json` 來為專案設定自動市場安裝。當團隊成員信任儲存庫資料夾時,Claude Code 會提示他們安裝這些市場和外掛程式。

406 462 


421 477 

422如需完整配置選項(包括 `extraKnownMarketplaces` 和 `enabledPlugins`),請參閱[外掛程式設定](/zh-TW/settings#plugin-settings)。478如需完整配置選項(包括 `extraKnownMarketplaces` 和 `enabledPlugins`),請參閱[外掛程式設定](/zh-TW/settings#plugin-settings)。

423 479 

424## 安全性480<h2 id="security">

481 安全性

482</h2>

425 483 

426外掛程式和市場是高度受信任的元件,可以使用您的使用者權限在您的機器上執行任意程式碼。僅從您信任的來源安裝外掛程式和新增市場。組織可以使用[受管市場限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions)限制使用者可以新增的市場。484外掛程式和市場是高度受信任的元件,可以使用您的使用者權限在您的機器上執行任意程式碼。僅從您信任的來源安裝外掛程式和新增市場。組織可以使用[受管市場限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions)限制使用者可以新增的市場。

427 485 

428## 故障排除486<h2 id="troubleshooting">

487 故障排除

488</h2>

429 489 

430### /plugin 命令無法識別490<h3 id="/plugin-command-not-recognized">

491 /plugin 命令無法識別

492</h3>

431 493 

432如果您看到「未知命令」或 `/plugin` 命令未出現:494如果您看到「未知命令」或 `/plugin` 命令未出現:

433 495 


438 * **原生安裝程式**:從[設定](/zh-TW/setup)重新執行安裝命令500 * **原生安裝程式**:從[設定](/zh-TW/setup)重新執行安裝命令

4393. **重新啟動 Claude Code**:更新後,重新啟動您的終端機並再次執行 `claude`。5013. **重新啟動 Claude Code**:更新後,重新啟動您的終端機並再次執行 `claude`。

440 502 

441### 常見問題503<h3 id="common-issues">

504 常見問題

505</h3>

442 506 

443* **市場未載入**:驗證 URL 是否可存取以及 `.claude-plugin/marketplace.json` 是否存在於路徑中507* **市場未載入**:驗證 URL 是否可存取以及 `.claude-plugin/marketplace.json` 是否存在於路徑中

444* **外掛程式安裝失敗**:檢查外掛程式來源 URL 是否可存取以及儲存庫是否為公開(或您有存取權)508* **外掛程式安裝失敗**:檢查外掛程式來源 URL 是否可存取以及儲存庫是否為公開(或您有存取權)


447 511 

448如需詳細的故障排除和解決方案,請參閱市場指南中的[故障排除](/zh-TW/plugin-marketplaces#troubleshooting)。如需偵錯工具,請參閱[偵錯和開發工具](/zh-TW/plugins-reference#debugging-and-development-tools)。512如需詳細的故障排除和解決方案,請參閱市場指南中的[故障排除](/zh-TW/plugin-marketplaces#troubleshooting)。如需偵錯工具,請參閱[偵錯和開發工具](/zh-TW/plugins-reference#debugging-and-development-tools)。

449 513 

450### 程式碼智能問題514<h3 id="code-intelligence-issues">

515 程式碼智能問題

516</h3>

451 517 

452* **語言伺服器未啟動**:驗證二進位檔已安裝且在您的 `$PATH` 中可用。檢查 `/plugin` Errors 標籤以獲取詳細資訊。518* **語言伺服器未啟動**:驗證二進位檔已安裝且在您的 `$PATH` 中可用。檢查 `/plugin` Errors 標籤以獲取詳細資訊。

453* **高記憶體使用量**:`rust-analyzer` 和 `pyright` 等語言伺服器在大型專案上可能會消耗大量記憶體。如果您遇到記憶體問題,請使用 `/plugin disable <plugin-name>` 停用外掛程式,並改為依賴 Claude 的內建搜尋工具。519* **高記憶體使用量**:`rust-analyzer` 和 `pyright` 等語言伺服器在大型專案上可能會消耗大量記憶體。如果您遇到記憶體問題,請使用 `/plugin disable <plugin-name>` 停用外掛程式,並改為依賴 Claude 的內建搜尋工具。

454* **monorepos 中的誤報診斷**:如果工作區配置不正確,語言伺服器可能會報告內部套件的未解決匯入錯誤。這些不會影響 Claude 編輯程式碼的能力。520* **monorepos 中的誤報診斷**:如果工作區配置不正確,語言伺服器可能會報告內部套件的未解決匯入錯誤。這些不會影響 Claude 編輯程式碼的能力。

455 521 

456## 後續步驟522<h2 id="next-steps">

523 後續步驟

524</h2>

457 525 

458* **構建您自己的外掛程式**:請參閱[外掛程式](/zh-TW/plugins)以建立技能、代理和 hooks526* **構建您自己的外掛程式**:請參閱[外掛程式](/zh-TW/plugins)以建立技能、代理和 hooks

459* **建立市場**:請參閱[建立外掛程式市場](/zh-TW/plugin-marketplaces)以將外掛程式分發給您的團隊或社群527* **建立市場**:請參閱[建立外掛程式市場](/zh-TW/plugin-marketplaces)以將外掛程式分發給您的團隊或社群

env-vars.md +37 −22

Details

73您選擇的檔案控制變數適用於誰:73您選擇的檔案控制變數適用於誰:

74 74 

75| 檔案 | 適用於 |75| 檔案 | 適用於 |

76| :---------------------------- | :----------------- |76| :---------------------------- | :----------------------------------- |

77| `~/.claude/settings.json` | 您,在每個專案中 |77| `~/.claude/settings.json` | 您,在每個專案中 |

78| `.claude/settings.json` | 在專案中工作的每個人,簽入原始碼控制 |78| `.claude/settings.json` | 在專案中工作的每個人,簽入原始碼控制 |

79| `.claude/settings.local.json` | 您,僅在此專案中,未簽入 |79| `.claude/settings.local.json` | 您,僅在此專案中(如果您手動建立請將其新增到您的 gitignore) |

80| 受管 settings | 您組織中的每個人,由管理員部署 |80| 受管 settings | 您組織中的每個人,由管理員部署 |

81 81 

82請參閱 [Settings 檔案](/zh-TW/settings#settings-files) 以了解每個檔案的位置,以及 [Settings 優先順序](/zh-TW/settings#settings-precedence) 以了解當多個檔案設定相同變數時它們如何結合。82請參閱 [Settings 檔案](/zh-TW/settings#settings-files) 以了解每個檔案的位置,以及 [Settings 優先順序](/zh-TW/settings#settings-precedence) 以了解當多個檔案設定相同變數時它們如何結合。


96</h2>96</h2>

97 97 

98| 變數 | 用途 |98| 變數 | 用途 |

99| :------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |99| :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

100| `ANTHROPIC_API_KEY` | 作為 `X-Api-Key` 標頭發送的 API 金鑰。設定時,即使您已登入,此金鑰也會用於代替您的 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` |

101| `ANTHROPIC_AUTH_TOKEN` | `Authorization` 標頭的自訂值(您在此設定的值將以 `Bearer ` 為前綴) |101| `ANTHROPIC_AUTH_TOKEN` | `Authorization` 標頭的自訂值(您在此設定的值將以 `Bearer ` 為前綴) |

102| `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 |


112| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | `/model` 選擇器中自訂模型項目的顯示描述。未設定時預設為 `Custom model (<model-id>)` |112| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | `/model` 選擇器中自訂模型項目的顯示描述。未設定時預設為 `Custom model (<model-id>)` |

113| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | `/model` 選擇器中自訂模型項目的顯示名稱。未設定時預設為模型 ID |113| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | `/model` 選擇器中自訂模型項目的顯示名稱。未設定時預設為模型 ID |

114| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |114| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |

115| `ANTHROPIC_DEFAULT_FABLE_MODEL` | 請參閱 [Model configuration](/zh-TW/model-config#environment-variables) |

116| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |

117| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |

118| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |

115| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 請參閱 [Model configuration](/zh-TW/model-config#environment-variables) |119| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 請參閱 [Model configuration](/zh-TW/model-config#environment-variables) |

116| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |120| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |

117| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |121| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | 請參閱 [Model configuration](/zh-TW/model-config#customize-pinned-model-display-and-capabilities) |


133| `ANTHROPIC_VERTEX_BASE_URL` | 覆蓋 Vertex AI 端點 URL。用於自訂 Vertex 端點或透過 [LLM gateway](/zh-TW/llm-gateway) 路由。請參閱 [Google Vertex AI](/zh-TW/google-vertex-ai) |137| `ANTHROPIC_VERTEX_BASE_URL` | 覆蓋 Vertex AI 端點 URL。用於自訂 Vertex 端點或透過 [LLM gateway](/zh-TW/llm-gateway) 路由。請參閱 [Google Vertex AI](/zh-TW/google-vertex-ai) |

134| `ANTHROPIC_VERTEX_PROJECT_ID` | Vertex AI 的 GCP 專案 ID。被 `GCLOUD_PROJECT`、`GOOGLE_CLOUD_PROJECT` 或您的 `GOOGLE_APPLICATION_CREDENTIALS` 認證檔案中的專案覆蓋。請參閱 [Google Vertex AI](/zh-TW/google-vertex-ai) |138| `ANTHROPIC_VERTEX_PROJECT_ID` | Vertex AI 的 GCP 專案 ID。被 `GCLOUD_PROJECT`、`GOOGLE_CLOUD_PROJECT` 或您的 `GOOGLE_APPLICATION_CREDENTIALS` 認證檔案中的專案覆蓋。請參閱 [Google Vertex AI](/zh-TW/google-vertex-ai) |

135| `ANTHROPIC_WORKSPACE_ID` | [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的工作區 ID。當您的聯盟規則的範圍涵蓋多個工作區時設定此項,以便權杖交換知道要針對哪個工作區 |139| `ANTHROPIC_WORKSPACE_ID` | [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 的工作區 ID。當您的聯盟規則的範圍涵蓋多個工作區時設定此項,以便權杖交換知道要針對哪個工作區 |

140| `API_FORCE_IDLE_TIMEOUT` | {/* min-version: 2.1.169 */}覆蓋 5 分鐘的閒置逾時,該逾時會在沒有位元組到達時中止串流模型回應。設定為 `0` 以停用逾時,例如當緩慢的 [gateway](/zh-TW/llm-gateway) 或本機模型在區塊之間暫停超過 5 分鐘時。設定為 `1` 以在每個提供者上保持逾時。未設定時,逾時在直接 Anthropic API 和 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 連線上無效,其中 Claude Code 自己的位元組級串流監視程式執行,在每個其他提供者上有效,包括 [Vertex AI](/zh-TW/google-vertex-ai)、[Foundry](/zh-TW/microsoft-foundry)、[Mantle](/zh-TW/amazon-bedrock#use-the-mantle-endpoint)、[Bedrock](/zh-TW/amazon-bedrock) 和閘道連線,因此停滯的串流會中止而不是掛起。自 v2.1.169 起 |

136| `API_TIMEOUT_MS` | API 請求的逾時(以毫秒為單位)(預設值:600000,或 10 分鐘;最大值:2147483647)。在緩慢網路上請求逾時或透過代理路由時增加此值。超過最大值的值會導致基礎計時器溢位,並導致請求立即失敗 |141| `API_TIMEOUT_MS` | API 請求的逾時(以毫秒為單位)(預設值:600000,或 10 分鐘;最大值:2147483647)。在緩慢網路上請求逾時或透過代理路由時增加此值。超過最大值的值會導致基礎計時器溢位,並導致請求立即失敗 |

137| `AWS_BEARER_TOKEN_BEDROCK` | Bedrock API 金鑰用於驗證(請參閱 [Bedrock API keys](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |142| `AWS_BEARER_TOKEN_BEDROCK` | Bedrock API 金鑰用於驗證(請參閱 [Bedrock API keys](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

138| `BASH_DEFAULT_TIMEOUT_MS` | 長時間執行的 bash 命令的預設逾時(預設值:120000,或 2 分鐘) |143| `BASH_DEFAULT_TIMEOUT_MS` | 長時間執行的 bash 命令的預設逾時(預設值:120000,或 2 分鐘) |

139| `BASH_MAX_OUTPUT_LENGTH` | bash 輸出中的最大字元數,超過此數量後完整輸出會儲存到檔案,Claude 會收到路徑加上簡短預覽。請參閱 [Bash tool behavior](/zh-TW/tools-reference#bash-tool-behavior) |144| `BASH_MAX_OUTPUT_LENGTH` | bash 輸出中的最大字元數,超過此數量後完整輸出會儲存到檔案,Claude 會收到路徑加上簡短預覽。請參閱 [Bash tool behavior](/zh-TW/tools-reference#bash-tool-behavior) |

140| `BASH_MAX_TIMEOUT_MS` | 模型可以為長時間執行的 bash 命令設定的最大逾時(預設值:600000,或 10 分鐘) |145| `BASH_MAX_TIMEOUT_MS` | 模型可以為長時間執行的 bash 命令設定的最大逾時(預設值:600000,或 10 分鐘) |

141| `CCR_FORCE_BUNDLE` | 設定為 `1` 以強制 [`claude --remote`](/zh-TW/claude-code-on-the-web#send-local-repositories-without-github) 在 GitHub 存取可用時也要捆綁並上傳您的本機儲存庫 |146| `CCR_FORCE_BUNDLE` | 設定為 `1` 以強制 [`claude --remote`](/zh-TW/claude-code-on-the-web#send-local-repositories-without-github) 在 GitHub 存取可用時也要捆綁並上傳您的本機儲存庫 |

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 生成的子程序內執行 |147| `CLAUDECODE` | 在 Claude Code 生成的子程序中設定為 `1`(Bash 和 PowerShell 工具、tmux 工作階段、[hook](/zh-TW/hooks) 命令、[status line](/zh-TW/statusline) 命令、stdio [MCP server](/zh-TW/mcp) 子程序)。IDE 擴充功能也在其整合終端中設定此項。用於偵測指令碼何時在 Claude Code 生成的子程序內執行。若要檢查目前程序是否由工具呼叫或 hook 直接生成,而不是在 Claude Code 啟動的 stdio MCP 伺服器內,請改用 `CLAUDE_CODE_CHILD_SESSION` |

143| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 設定為 `1` 以停用所有內建 [subagent](/zh-TW/sub-agents) 類型,例如 Explore 和 Plan。僅適用於非互動式模式(`-p` 旗標)。對於想要空白狀態的 SDK 使用者很有用 |148| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | 設定為 `1` 以停用所有內建 [subagent](/zh-TW/sub-agents) 類型,例如 Explore 和 Plan。僅適用於非互動式模式(`-p` 旗標)。對於想要空白狀態的 SDK 使用者很有用 |

144| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 設定為 `1` 以跳過來自 SDK 建立的 MCP 伺服器的工具名稱上的 `mcp__<server>__` 前綴。工具使用其原始名稱。僅限 SDK 使用 |149| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | 設定為 `1` 以跳過來自 SDK 建立的 MCP 伺服器的工具名稱上的 `mcp__<server>__` 前綴。工具使用其原始名稱。僅限 SDK 使用 |

145| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 背景 subagents 的停滯逾時(以毫秒為單位)。預設 `600000`(10 分鐘)。計時器在每個串流進度事件時重設;如果在視窗內沒有進度到達,subagent 會被中止,任務會標記為失敗,將任何部分結果呈現給父級 |150| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | 背景 subagents 的停滯逾時(以毫秒為單位)。預設 `600000`(10 分鐘)。計時器在每個串流進度事件時重設;如果在視窗內沒有進度到達,subagent 會被中止,任務會標記為失敗,將任何部分結果呈現給父級 |

146| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 設定自動壓縮觸發的上下文容量百分比 (1-100)。預設情況下,自動壓縮在約 95% 容量時觸發。使用較低的值(如 `50`)以更早進行壓縮。高於預設閾值的值無效。適用於主要對話和 subagents。此百分比與 [status line](/zh-TW/statusline) 中可用的 `context_window.used_percentage` 欄位一致 |151| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 設定自動壓縮觸發的上下文容量百分比 (1-100)。使用較低的值(如 `50`)以更早進行壓縮。此變數僅在 Claude Code 主動進行壓縮時導致更早壓縮:當設定 `CLAUDE_CODE_AUTO_COMPACT_WINDOW` 時、在 [cloud sessions](/zh-TW/claude-code-on-the-web) 中、在 [Remote Control](/zh-TW/remote-control) 工作階段中,以及在沒有 [extended context](/zh-TW/model-config#extended-context) 的 Sonnet 4.6 和 Opus 4.6 上,預設在 200K 邊界進行壓縮。在其他情況下,例如預設本機工作階段,當對話達到模型的上下文限制時,自動壓縮觸發。覆蓋只能降低閾值,因此高於預設值的值無效。適用於主要對話和 subagents |

147| `CLAUDE_AUTO_BACKGROUND_TASKS` | 設定為 `1` 以強制啟用長時間執行的代理任務的自動背景執行。啟用時,subagents 在執行約兩分鐘後會移至背景 |152| `CLAUDE_AUTO_BACKGROUND_TASKS` | 設定為 `1` 以強制啟用長時間執行的代理任務的自動背景執行。啟用時,subagents 在執行約兩分鐘後會移至背景 |

148| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | 在主工作階段中每個 Bash 或 PowerShell 命令後返回原始工作目錄 |153| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | 在主工作階段中每個 Bash 或 PowerShell 命令後返回原始工作目錄 |

149| `CLAUDE_CODE_ACCESSIBILITY` | 設定為 `1` 以保持原生終端游標可見並停用反轉文字游標指示器。允許 macOS Zoom 等螢幕放大鏡追蹤游標位置 |154| `CLAUDE_CODE_ACCESSIBILITY` | 設定為 `1` 以保持原生終端游標可見並停用反轉文字游標指示器。允許 macOS Zoom 等螢幕放大鏡追蹤游標位置 |

150| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | 設定為 `1` 以從使用 `--add-dir` 指定的目錄載入記憶體檔案。載入 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。預設情況下,其他目錄不載入記憶體檔案 |155| `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) 中自動啟用此功能 |156| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | 設定為 `1` 以在 [fullscreen rendering](/zh-TW/fullscreen) 中的每一幀上重新繪製整個螢幕,而不是發送增量更新。如果全螢幕模式顯示過時或錯位的文字片段,請使用此選項。Claude Code 在 Windows 上的背景工作階段和 [agent view](/zh-TW/agent-view) 中自動啟用此功能 |

157| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | 設定為 `1` 以在每個請求中發送 [effort](/zh-TW/model-config#adjust-effort-level) 參數,即使 Claude Code 不將模型 ID 識別為支援努力的模型。在透過 [LLM gateway](/zh-TW/llm-gateway) 或第三方提供者路由時使用,該提供者在自訂識別碼下提供模型。在 API 中拒絕努力參數的模型,包括 Claude 3 模型、Sonnet 4.0 和 4.5、Opus 4.0 和 4.1 以及 Haiku 4.5,仍被排除,以便請求不會失敗 |

152| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | 應刷新認證的間隔(以毫秒為單位)(使用 [`apiKeyHelper`](/zh-TW/settings#available-settings) 時) |158| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | 應刷新認證的間隔(以毫秒為單位)(使用 [`apiKeyHelper`](/zh-TW/settings#available-settings) 時) |

153| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 設定為 `0` 以省略系統提示開始處的歸屬區塊(用戶端版本和提示指紋)。停用它會改善透過 [LLM gateway](/zh-TW/llm-gateway) 路由時的提示快取命中率。Anthropic API 快取不受影響 |159| `CLAUDE_CODE_ATTRIBUTION_HEADER` | 設定為 `0` 以省略系統提示開始處的歸屬區塊(用戶端版本和提示指紋)。停用它會改善透過 [LLM gateway](/zh-TW/llm-gateway) 路由時的提示快取命中率。Anthropic API 快取不受影響 |

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` 解耦,後者始終使用模型的完整上下文視窗 |160| `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` 解耦,後者始終使用模型的完整上下文視窗 |

155| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 覆蓋自動 [IDE connection](/zh-TW/vs-code)。預設情況下,在支援的 IDE 的整合終端內啟動時,Claude Code 會自動連線。設定為 `false` 以防止此情況。設定為 `true` 以在自動偵測失敗時強制連線嘗試,例如當 tmux 遮蔽父終端時。優先於 [`autoConnectIde`](/zh-TW/settings#global-config-settings) 全域配置設定 |161| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 覆蓋自動 [IDE connection](/zh-TW/vs-code)。預設情況下,在支援的 IDE 的整合終端內啟動時,Claude Code 會自動連線。設定為 `false` 以防止此情況。設定為 `true` 以在自動偵測失敗時強制連線嘗試,例如當 tmux 遮蔽父終端時。優先於 [`autoConnectIde`](/zh-TW/settings#global-config-settings) 全域配置設定 |

156| `CLAUDE_CODE_CERT_STORE` | TLS 連線的 CA 憑證來源逗號分隔清單。`bundled` 是隨 Claude Code 提供的 Mozilla CA 集。`system` 是作業系統信任存放區。預設為 `bundled,system` |162| `CLAUDE_CODE_CERT_STORE` | TLS 連線的 CA 憑證來源逗號分隔清單。`bundled` 是隨 Claude Code 提供的 Mozilla CA 集。`system` 是作業系統信任存放區。預設為 `bundled,system` |

163| `CLAUDE_CODE_CHILD_SESSION` | {/* min-version: 2.1.172 */}在 Claude Code 透過 Bash、PowerShell 和 Monitor 工具、[hook](/zh-TW/hooks) 命令和 [status line](/zh-TW/statusline) 命令生成的子程序中設定為 `1`。不為 stdio [MCP server](/zh-TW/mcp) 子程序設定,這些是長期存在的,並且超過啟動它們的工作階段。與 `CLAUDECODE` 不同,這僅由 Claude Code 自己的生成路徑設定,而不是由 IDE 擴充功能設定,因此它可靠地區分嵌套工作階段與在 IDE 整合終端中啟動的頂層 `claude`。以這種方式啟動的嵌套互動式 `claude` TUI 會自動從 `--resume`、`--continue`、向上箭頭歷史記錄和 `claude agents` 清單中排除。非互動式 `claude -p` 工作階段仍然保留。設定 `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` 以覆蓋此排除。需要 Claude Code v2.1.172 或更新版本 |

157| `CLAUDE_CODE_CLIENT_CERT` | 用於 mTLS 驗證的用戶端憑證檔案的路徑 |164| `CLAUDE_CODE_CLIENT_CERT` | 用於 mTLS 驗證的用戶端憑證檔案的路徑 |

158| `CLAUDE_CODE_CLIENT_KEY` | 用於 mTLS 驗證的用戶端私密金鑰檔案的路徑 |165| `CLAUDE_CODE_CLIENT_KEY` | 用於 mTLS 驗證的用戶端私密金鑰檔案的路徑 |

159| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密 CLAUDE\_CODE\_CLIENT\_KEY 的密碼(可選) |166| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密 CLAUDE\_CODE\_CLIENT\_KEY 的密碼(可選) |

160| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆蓋偵錯日誌檔案路徑。儘管名稱如此,這是檔案路徑,而不是目錄。需要透過 `--debug`、`/debug` 或 `DEBUG` 環境變數單獨啟用偵錯模式:僅設定此變數不會啟用日誌記錄。[`--debug-file`](/zh-TW/cli-reference#cli-flags) 旗標同時執行兩者。預設為 `~/.claude/debug/<session-id>.txt` |167| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆蓋偵錯日誌檔案路徑。儘管名稱如此,這是檔案路徑,而不是目錄。需要透過 `--debug`、`/debug` 或 `DEBUG` 環境變數單獨啟用偵錯模式:僅設定此變數不會啟用日誌記錄。[`--debug-file`](/zh-TW/cli-reference#cli-flags) 旗標同時執行兩者。預設為 `~/.claude/debug/<session-id>.txt` |

161| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 寫入偵錯日誌檔案的最小日誌級別。值:`verbose`、`debug`(預設)、`info`、`warn`、`error`。設定為 `verbose` 以包含高容量診斷,例如完整狀態行命令輸出,或提高到 `error` 以減少雜訊 |168| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 寫入偵錯日誌檔案的最小日誌級別。值:`verbose`、`debug`(預設)、`info`、`warn`、`error`。設定為 `verbose` 以包含高容量診斷,例如完整狀態行命令輸出,或提高到 `error` 以減少雜訊 |

162| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 設定為 `1` 以停用 [1M context window](/zh-TW/model-config#extended-context) 支援。設定時,1M 模型變體在模型選擇器中不可用。對於具有合規性要求的企業環境很有用 |169| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 設定為 `1` 以停用 [1M context window](/zh-TW/model-config#extended-context) 支援。設定時,1M 模型變體在模型選擇器中不可用。對於具有合規性要求的企業環境很有用 |

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 及更新版本無效,其始終使用自適應推理 |170| `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 */}從 v2.1.111 起,Fable 5 無效,或對 Opus 4.7 及更新版本無效,其始終使用自適應推理 |

171| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | {/* min-version: 2.1.98 */}設定為 `1` 以停用 [advisor tool](/zh-TW/advisor)。`/advisor` 命令和 `--advisor` 旗標變為不可用,任何配置的 `advisorModel` 都會被忽略。需要 Claude Code v2.1.98 或更新版本 |

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) 設定 |172| `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) 設定 |

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` 切換 |173| `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` 切換。不適用於從 [agent view](/zh-TW/agent-view) 開啟的背景工作階段,其始終使用全螢幕渲染 |

166| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 設定為 `1` 以停用附件處理。使用 `@` 語法的檔案提及會作為純文字發送,而不是擴展為檔案內容 |174| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | 設定為 `1` 以停用附件處理。使用 `@` 語法的檔案提及會作為純文字發送,而不是擴展為檔案內容 |

167| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | 設定為 `1` 以停用 [auto memory](/zh-TW/memory#auto-memory)。設定為 `0` 以在 `--bare` 模式或 [`autoMemoryEnabled: false`](/zh-TW/settings#available-settings) 會以其他方式停用時強制啟用自動記憶體。停用時,Claude 不會建立或載入自動記憶體檔案 |175| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | 設定為 `1` 以停用 [auto memory](/zh-TW/memory#auto-memory)。設定為 `0` 以在 `--bare` 模式或 [`autoMemoryEnabled: false`](/zh-TW/settings#available-settings) 會以其他方式停用時強制啟用自動記憶體。停用時,Claude 不會建立或載入自動記憶體檔案 |

168| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | 設定為 `1` 以停用所有背景任務功能,包括 Bash 和 subagent 工具上的 `run_in_background` 參數、自動背景執行和 Ctrl+B 快捷鍵 |176| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | 設定為 `1` 以停用所有背景任務功能,包括 Bash 和 subagent 工具上的 `run_in_background` 參數、自動背景執行和 Ctrl+B 快捷鍵 |

177| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | 設定為 `1` 以停用隨 Claude Code 提供的 [skills](/zh-TW/skills) 和工作流程:捆綁的 skills 和工作流程會完全移除,而內建的斜線命令(如 `/init`)保持可輸入但對模型隱藏。來自外掛程式、`.claude/skills/` 和 `.claude/commands/` 的 skills 不受影響。相當於 [`disableBundledSkills`](/zh-TW/settings#available-settings) 設定;`0` 不會覆蓋它 |

169| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | 設定為 `1` 以防止將任何 CLAUDE.md 記憶體檔案載入上下文,包括使用者、專案和自動記憶體檔案 |178| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | 設定為 `1` 以防止將任何 CLAUDE.md 記憶體檔案載入上下文,包括使用者、專案和自動記憶體檔案 |

170| `CLAUDE_CODE_DISABLE_CRON` | 設定為 `1` 以停用 [scheduled tasks](/zh-TW/scheduled-tasks)。`/loop` skill 和 cron 工具變為不可用,任何已排程的任務停止觸發,包括已在工作階段中執行的任務 |179| `CLAUDE_CODE_DISABLE_CRON` | 設定為 `1` 以停用 [scheduled tasks](/zh-TW/scheduled-tasks)。`/loop` skill 和 cron 工具變為不可用,任何已排程的任務停止觸發,包括已在工作階段中執行的任務 |

171| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 設定為 `1` 以從 API 請求中移除 Anthropic 特定的 `anthropic-beta` 請求標頭和 beta 工具架構欄位(例如 `defer_loading` 和 `eager_input_streaming`)。當代理閘道拒絕請求並出現「Unexpected value(s) for the `anthropic-beta` header」或「Extra inputs are not permitted」之類的錯誤時,請使用此選項。標準欄位(`name`、`description`、`input_schema`、`cache_control`)會保留。 |180| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | 設定為 `1` 以從 API 請求中移除 Anthropic 特定的 `anthropic-beta` 請求標頭和 beta 工具架構欄位(例如 `defer_loading` 和 `eager_input_streaming`)。當代理閘道拒絕請求並出現「Unexpected value(s) for the `anthropic-beta` header」或「Extra inputs are not permitted」之類的錯誤時,請使用此選項。標準欄位(`name`、`description`、`input_schema`、`cache_control`)會保留。 |


180| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | 設定為 `1` 以跳過首次執行時官方外掛程式市場的自動新增 |189| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | 設定為 `1` 以跳過首次執行時官方外掛程式市場的自動新增 |

181| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 設定為 `1` 以跳過從系統範圍的受管 skills 目錄載入 skills。對於不應載入操作員佈建的 skills 的容器或 CI 工作階段很有用 |190| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | 設定為 `1` 以跳過從系統範圍的受管 skills 目錄載入 skills。對於不應載入操作員佈建的 skills 的容器或 CI 工作階段很有用 |

182| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 設定為 `1` 以停用基於對話上下文的自動終端標題更新。在 Agent SDK 和 `claude -p` 工作階段中,這也會跳過產生工作階段標題的背景 Haiku 請求 |191| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | 設定為 `1` 以停用基於對話上下文的自動終端標題更新。在 Agent SDK 和 `claude -p` 工作階段中,這也會跳過產生工作階段標題的背景 Haiku 請求 |

183| `CLAUDE_CODE_DISABLE_THINKING` | 設定為 `1` 以強制停用 [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),無論模型支援或其他設定如何。比 `MAX_THINKING_TOKENS=0` 更直接 |192| `CLAUDE_CODE_DISABLE_THINKING` | 設定為 `1` 以完全省略 API 請求中的 `thinking` 參數。這是代理和閘道拒絕該參數的相容性選項。該變數的行為與早期版本相同;在預設思考的模型上,省略該參數意味著模型仍可能思考。若要在 Anthropic API 上明確停用 [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking),請改用 `MAX_THINKING_TOKENS=0`,這在 Fable 5 上也無效,因為它無法關閉思考。在 [third-party providers](/zh-TW/third-party-integrations) 上,`0` 同樣省略該參數,因此兩個變數在那裡的行為相同 |

184| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | 設定為 `1` 以停用 [fullscreen rendering](/zh-TW/fullscreen) 中的虛擬捲動,並呈現文字記錄中的每條訊息。如果全螢幕模式中的捲動顯示應該出現訊息的空白區域,請使用此選項 |193| `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) 設定 |194| `CLAUDE_CODE_DISABLE_WORKFLOWS` | 設定為 `1` 以停用 [workflows](/zh-TW/workflows#turn-workflows-off)。相當於 [`disableWorkflows`](/zh-TW/settings#available-settings) 設定 |

186| `CLAUDE_CODE_EFFORT_LEVEL` | 為支援的模型設定努力級別。值:`low`、`medium`、`high`、`xhigh`、`max` 或 `auto` 以使用模型預設值。可用級別取決於模型。優先於 `/effort` 和 `effortLevel` 設定。請參閱 [Adjust effort level](/zh-TW/model-config#adjust-effort-level) |195| `CLAUDE_CODE_EFFORT_LEVEL` | 為支援的模型設定努力級別。值:`low`、`medium`、`high`、`xhigh`、`max` 或 `auto` 以使用模型預設值。可用級別取決於模型。優先於 `/effort` 和 `effortLevel` 設定。請參閱 [Adjust effort level](/zh-TW/model-config#adjust-effort-level) |


198| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 設定為 `1` 以啟用 [agent teams](/zh-TW/agent-teams)。Agent teams 是實驗性的,預設停用 |207| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 設定為 `1` 以啟用 [agent teams](/zh-TW/agent-teams)。Agent teams 是實驗性的,預設停用 |

199| `CLAUDE_CODE_EXTRA_BODY` | JSON 物件以合併到每個 API 請求主體的頂層。對於傳遞 Claude Code 不直接公開的提供者特定參數很有用 |208| `CLAUDE_CODE_EXTRA_BODY` | JSON 物件以合併到每個 API 請求主體的頂層。對於傳遞 Claude Code 不直接公開的提供者特定參數很有用 |

200| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆蓋檔案讀取的預設 token 限制。當您需要完整讀取較大的檔案時很有用 |209| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | 覆蓋檔案讀取的預設 token 限制。當您需要完整讀取較大的檔案時很有用 |

210| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | {/* min-version: 2.1.172 */}設定為 `1` 以強制文字記錄持久化、提示歷史記錄和 `claude agents` 註冊,即使此 `claude` 是從另一個 Claude Code 工作階段內啟動的。在繼承的 `CLAUDE_CODE_CHILD_SESSION` 值(例如來自 Claude Code 的 Bash 工具首次啟動的 tmux 伺服器)導致真正的頂層工作階段被誤分類為嵌套時使用。也在 v2.1.169 及更早版本上受尊重;對 v2.1.170 和 v2.1.171 無效,其中它覆蓋的嵌套工作階段偵測被移除 |

201| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 設定為 `1` 以強制啟用 DEC 私有模式 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)(當您的終端支援但未自動偵測時)。對於實現 BSU/ESU 但不回覆功能探測的模擬器(例如 Emacs `eat`)很有用。在 tmux 下無效 |211| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 設定為 `1` 以強制啟用 DEC 私有模式 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)(當您的終端支援但未自動偵測時)。對於實現 BSU/ESU 但不回覆功能探測的模擬器(例如 Emacs `eat`)很有用。在 tmux 下無效 |

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` 中工作 |212| `CLAUDE_CODE_FORK_SUBAGENT` | 設定為 `1` 以啟用 [forked subagents](/zh-TW/sub-agents#fork-the-current-conversation) 作為模型的預設值,或 `0` 以停用它們,覆蓋任何伺服器端推出。啟用時,Claude 會生成一個分叉(一個繼承完整對話上下文而不是從頭開始的 subagent),而不是使用通用 subagent,所有 subagent 生成都在背景中執行。明確的 [`/fork`](/zh-TW/commands) 命令無需此變數即可工作。在互動式模式和透過 SDK 或 `claude -p` 中工作 |

203| `CLAUDE_CODE_GIT_BASH_PATH` | 僅限 Windows:Git Bash 可執行檔(`bash.exe`)的路徑。在 Git Bash 已安裝但不在您的 PATH 中時使用。請參閱 [Windows setup](/zh-TW/setup#set-up-on-windows) |213| `CLAUDE_CODE_GIT_BASH_PATH` | 僅限 Windows:Git Bash 可執行檔(`bash.exe`)的路徑。在 Git Bash 已安裝但不在您的 PATH 中時使用。請參閱 [Windows setup](/zh-TW/setup#set-up-on-windows) |

204| `CLAUDE_CODE_GLOB_HIDDEN` | 設定為 `false` 以在 Claude 呼叫 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 時從結果中排除隱藏檔案。預設包含。不影響 `@` 檔案自動完成、`ls`、Grep 或 Read |214| `CLAUDE_CODE_GLOB_HIDDEN` | 設定為 `false` 以在 Claude 呼叫 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 時從結果中排除隱藏檔案。預設包含。不影響 `@` 檔案自動完成、`ls`、Grep 或 Read |

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) |215| `CLAUDE_CODE_GLOB_NO_IGNORE` | 設定為 `false` 以使 [Glob tool](/zh-TW/tools-reference#glob-tool-behavior) 尊重 `.gitignore` 模式。預設情況下,Glob 返回所有符合的檔案,包括 gitignored 的檔案。不影響 `@` 檔案自動完成,其具有自己的 [`respectGitignore` 設定](/zh-TW/settings#available-settings) |


239| `CLAUDE_CODE_REMOTE_SESSION_ID` | 在 [cloud sessions](/zh-TW/claude-code-on-the-web) 中自動設定為目前工作階段的 ID。讀取此項以構造回到工作階段文字記錄的連結。請參閱 [Link artifacts back to the session](/zh-TW/claude-code-on-the-web#link-artifacts-back-to-the-session) |249| `CLAUDE_CODE_REMOTE_SESSION_ID` | 在 [cloud sessions](/zh-TW/claude-code-on-the-web) 中自動設定為目前工作階段的 ID。讀取此項以構造回到工作階段文字記錄的連結。請參閱 [Link artifacts back to the session](/zh-TW/claude-code-on-the-web#link-artifacts-back-to-the-session) |

240| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 設定為 `1` 以在上一個工作階段在中途結束時自動繼續。在 SDK 模式中使用,以便模型繼續而無需 SDK 重新發送提示 |250| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | 設定為 `1` 以在上一個工作階段在中途結束時自動繼續。在 SDK 模式中使用,以便模型繼續而無需 SDK 重新發送提示 |

241| `CLAUDE_CODE_RESUME_PROMPT` | 覆蓋在繼續在中途結束的工作階段時注入的延續訊息。預設為 `Continue from where you left off.`。長時間執行的代理的生成指令碼可以將此設定為更具指令性的啟動訊息。空字串使用預設值 |251| `CLAUDE_CODE_RESUME_PROMPT` | 覆蓋在繼續在中途結束的工作階段時注入的延續訊息。預設為 `Continue from where you left off.`。長時間執行的代理的生成指令碼可以將此設定為更具指令性的啟動訊息。空字串使用預設值 |

252| `CLAUDE_CODE_SAFE_MODE` | 設定為 `1` 以在安全模式下啟動:CLAUDE.md、skills、plugins、hooks、MCP 伺服器、自訂命令和代理、輸出樣式、工作流程、自訂主題、自訂快捷鍵、狀態行和檔案建議命令、LSP 伺服器和自動記憶體不載入,用於對損壞的配置進行故障排除。受管設定政策仍然適用,包括政策配置的 hooks、狀態行和檔案建議命令;受管外掛程式、受管 skills、受管 CLAUDE.md 和政策配置的 MCP 伺服器不適用。相當於傳遞 [`--safe-mode`](/zh-TW/cli-reference#cli-flags)。直接生成的子程序繼承該變數 |

242| `CLAUDE_CODE_SCRIPT_CAPS` | JSON 物件,當設定 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` 時限制特定指令碼在每個工作階段中可被呼叫的次數。鍵是針對命令文字進行比對的子字串;值是整數呼叫限制。例如,`{"deploy.sh": 2}` 允許 `deploy.sh` 最多被呼叫兩次。比對是基於子字串的,因此 shell 擴展技巧(如 `./scripts/deploy.sh $(evil)`)仍然計入上限。透過 `xargs` 或 `find -exec` 的執行時扇出未被偵測;這是深度防禦控制 |253| `CLAUDE_CODE_SCRIPT_CAPS` | JSON 物件,當設定 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` 時限制特定指令碼在每個工作階段中可被呼叫的次數。鍵是針對命令文字進行比對的子字串;值是整數呼叫限制。例如,`{"deploy.sh": 2}` 允許 `deploy.sh` 最多被呼叫兩次。比對是基於子字串的,因此 shell 擴展技巧(如 `./scripts/deploy.sh $(evil)`)仍然計入上限。透過 `xargs` 或 `find -exec` 的執行時扇出未被偵測;這是深度防禦控制 |

243| `CLAUDE_CODE_SCROLL_SPEED` | 在 [fullscreen rendering](/zh-TW/fullscreen#mouse-wheel-scrolling) 中設定滑鼠滾輪捲動乘數。接受 1 到 20 的值。設定為 `3` 以符合 `vim`(如果您的終端在沒有放大的情況下每個刻度發送一個滾輪事件)。在 JetBrains IDE 終端中被忽略,Claude Code 使用其自己的捲動處理 |254| `CLAUDE_CODE_SCROLL_SPEED` | 在 [fullscreen rendering](/zh-TW/fullscreen#mouse-wheel-scrolling) 中設定滑鼠滾輪捲動乘數。接受 1 到 20 的值,以及低於 1 的分數值(例如 `0.5`)以減慢終端上原生捲動路徑中加速的觸控板和滾輪捲動。設定為 `3` 以符合 `vim`(如果您的終端在沒有放大的情況下每個刻度發送一個滾輪事件)。在 JetBrains IDE 終端中被忽略,Claude Code 使用其自己的捲動處理 |

244| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | 覆蓋 [SessionEnd](/zh-TW/hooks#sessionend) hooks 的時間預算(以毫秒為單位)。適用於工作階段退出、`/clear` 和透過互動式 `/resume` 切換工作階段。預設情況下,預算為 1.5 秒,自動提高到設定檔案中配置的最高每個 hook `timeout`,最高 60 秒。外掛程式提供的 hooks 上的逾時不會提高預算 |255| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | 覆蓋 [SessionEnd](/zh-TW/hooks#sessionend) hooks 的時間預算(以毫秒為單位)。適用於工作階段退出、`/clear` 和透過互動式 `/resume` 切換工作階段。預設情況下,預算為 1.5 秒,自動提高到設定檔案中配置的最高每個 hook `timeout`,最高 60 秒。外掛程式提供的 hooks 上的逾時不會提高預算 |

245| `CLAUDE_CODE_SESSION_ID` | 在 Bash 和 PowerShell 工具子程序中自動設定為目前工作階段 ID。符合傳遞給 [hooks](/zh-TW/hooks) `session_id` 欄位。在 `/clear` 時更新。用於將指令碼和外部工具與啟動它們的 Claude Code 工作階段相關聯 |256| `CLAUDE_CODE_SESSION_ID` | 在 Bash 和 PowerShell 工具子程序、[hook command](/zh-TW/hooks) 子程序和 stdio [MCP server](/zh-TW/mcp) 子程序中自動設定為目前工作階段 ID。對於 Bash、PowerShell 和 hooks,這符合傳遞給 hook JSON 輸入的 `session_id` 欄位,並在 `/clear` 時更新。MCP 伺服器子程序保留它生成時的 ID。在 `--resume <session-id>` 上,它接收繼續的 ID,符合 hooks 和 Bash。在 `--continue` 或 `--resume` 沒有明確 ID 時,它可能接收初始啟動 ID。用於將指令碼和外部工具與啟動它們的 Claude Code 工作階段相關聯 |

246| `CLAUDE_CODE_SHELL` | 覆蓋自動 shell 偵測。當您的登入 shell 與您偏好的工作 shell 不同時很有用(例如,`bash` 與 `zsh`) |257| `CLAUDE_CODE_SHELL` | 覆蓋自動 shell 偵測。當您的登入 shell 與您偏好的工作 shell 不同時很有用(例如,`bash` 與 `zsh`) |

247| `CLAUDE_CODE_SHELL_PREFIX` | 命令前綴以包裝 Claude Code 生成的 shell 命令:Bash 工具呼叫、[hook](/zh-TW/hooks) 命令和 stdio [MCP server](/zh-TW/mcp) 啟動命令。對於日誌記錄或稽核很有用。範例:設定 `/path/to/logger.sh` 會將每個命令執行為 `/path/to/logger.sh <command>` |258| `CLAUDE_CODE_SHELL_PREFIX` | 命令前綴以包裝 Claude Code 生成的 shell 命令:Bash 工具呼叫、[hook](/zh-TW/hooks) 命令、[status line](/zh-TW/statusline) 命令和 stdio [MCP server](/zh-TW/mcp) 啟動命令。PowerShell hooks 和 exec 形式的 hooks 無需前綴執行。對於日誌記錄或稽核很有用。設定裸可執行檔路徑(例如 `/path/to/logger.sh`會將每個命令執行為 `/path/to/logger.sh '<command>'`。包裝器在 `$1` 中接收命令行作為單個 shell 引用的引數,因此包裝器必須使用 shell 重新評估 `$1`,例如 `exec bash -c "$1"`。將 `$1` 視為裸可執行檔路徑會破壞傳遞引數的 stdio MCP 伺服器,例如 `npx -y <package>`。對於 Bash 工具呼叫,`$1` 包含 Claude Code 組裝的完整 shell 呼叫,包括環境設定,而不僅僅是 Claude 執行的命令 |

248| `CLAUDE_CODE_SIMPLE` | 設定為 `1` 以使用最小系統提示和僅 Bash、檔案讀取和檔案編輯工具執行。來自 `--mcp-config` 的 MCP 工具仍然可用。停用 hooks、skills、plugins、MCP 伺服器、自動記憶體和 CLAUDE.md 的自動探索。OAuth 權杖和鑰匙圈認證不會被讀取,因此 Anthropic 驗證必須來自 `ANTHROPIC_API_KEY` 或 `--settings` 中的 `apiKeyHelper`。相當於傳遞 [`--bare`](/zh-TW/headless#start-faster-with-bare-mode) |259| `CLAUDE_CODE_SIMPLE` | 設定為 `1` 以使用最小系統提示和僅 Bash、檔案讀取和檔案編輯工具執行。來自 `--mcp-config` 的 MCP 工具仍然可用。停用 hooks、skills、plugins、MCP 伺服器、自動記憶體和 CLAUDE.md 的自動探索。OAuth 權杖和鑰匙圈認證不會被讀取,因此 Anthropic 驗證必須來自 `ANTHROPIC_API_KEY` 或 `--settings` 中的 `apiKeyHelper`。相當於傳遞 [`--bare`](/zh-TW/headless#start-faster-with-bare-mode) |

249| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | 設定為 `1` 以在任何模型上使用較短的系統提示和縮寫工具描述。設定為 `0`、`false`、`no` 或 `off` 以選擇退出,即使實驗或伺服器配置會以其他方式啟用它。完整工具集、hooks、MCP 伺服器和 CLAUDE.md 探索保持啟用 |260| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | 設定為 `1` 以在任何模型上使用較短的系統提示和縮寫工具描述。設定為 `0`、`false`、`no` 或 `off` 以選擇退出,即使實驗或伺服器配置會以其他方式啟用它。完整工具集、hooks、MCP 伺服器和 CLAUDE.md 探索保持啟用 |

250| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | 跳過 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 的用戶端驗證,用於自行簽署請求的閘道 |261| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | 跳過 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 的用戶端驗證,用於自行簽署請求的閘道 |


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` 會自動設定此項 |269| `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` 會自動設定此項 |

259| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非互動式模式(`-p` 旗標)中設定為 `1` 以等待外掛程式安裝完成,然後再進行第一個查詢。沒有此選項,外掛程式會在背景中安裝,可能在第一個回合時不可用。與 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 結合以限制等待時間 |270| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | 在非互動式模式(`-p` 旗標)中設定為 `1` 以等待外掛程式安裝完成,然後再進行第一個查詢。沒有此選項,外掛程式會在背景中安裝,可能在第一個回合時不可用。與 `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` 結合以限制等待時間 |

260| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | 同步外掛程式安裝的逾時(以毫秒為單位)。超過時,Claude Code 會在沒有外掛程式的情況下繼續並記錄錯誤。無預設值:沒有此變數,同步安裝會等待直到完成 |271| `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 驗證 |272| `CLAUDE_CODE_SYNC_SKILLS` | 設定為 `1` 以在第一個查詢之前將您啟用的 claude.ai skills 下載到 `~/.claude/skills/`,並每 10 分鐘重新同步一次。僅適用於非互動式模式,使用 `-p` 旗標。需要 claude.ai 驗證。[Claude Code on the web](/zh-TW/claude-code-on-the-web) 工作階段會自動接收您啟用的 claude.ai skills;您不需要在那裡設定此項 |

273| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | 當設定 `CLAUDE_CODE_SYNC_SKILLS` 時,中途工作階段 skills 重新同步的逾時(以毫秒為單位)(預設值:30000)。限制在主機要求 skill 重新載入期間觸發的下載。超過時,重新同步停止,其餘下載在背景中繼續 |

262| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 當設定 `CLAUDE_CODE_SYNC_SKILLS` 時,第一個查詢等待初始 skills 同步的逾時(以毫秒為單位)(預設值:5000)。超過時,查詢會繼續進行,其餘 skill 下載會在背景中繼續 |274| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | 當設定 `CLAUDE_CODE_SYNC_SKILLS` 時,第一個查詢等待初始 skills 同步的逾時(以毫秒為單位)(預設值:5000)。超過時,查詢會繼續進行,其餘 skill 下載會在背景中繼續 |

263| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 設定為 `false` 以停用 diff 輸出中的語法醒目提示。當顏色干擾您的終端設定時很有用。若要也停用程式碼區塊和檔案預覽中的醒目提示,請使用 [`syntaxHighlightingDisabled`](/zh-TW/settings) 設定 |275| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 設定為 `false` 以停用 diff 輸出中的語法醒目提示。當顏色干擾您的終端設定時很有用。若要也停用程式碼區塊和檔案預覽中的醒目提示,請使用 [`syntaxHighlightingDisabled`](/zh-TW/settings) 設定 |

264| `CLAUDE_CODE_TASK_LIST_ID` | 跨工作階段共享任務清單。在多個 Claude Code 實例中設定相同的 ID 以協調共享任務清單。請參閱 [Task list](/zh-TW/interactive-mode#task-list) |276| `CLAUDE_CODE_TASK_LIST_ID` | 跨工作階段共享任務清單。在多個 Claude Code 實例中設定相同的 ID 以協調共享任務清單。請參閱 [Task list](/zh-TW/interactive-mode#task-list) |

265| `CLAUDE_CODE_TEAM_NAME` | 此隊友所屬的 agent team 名稱。在 [agent team](/zh-TW/agent-teams) 成員上自動設定 |277| `CLAUDE_CODE_TEAM_NAME` | 此隊友所屬的 agent team 名稱。在 [agent team](/zh-TW/agent-teams) 成員上自動設定 |

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 自己的臨時檔案始終使用您的覆蓋 |278| `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 上,當您的覆蓋是長路徑時,[sandboxed](/zh-TW/sandboxing) Bash 子程序會在系統預設下收到簡短的回退 `$TMPDIR`,因為某些工具在臨時路徑變得太長時會失敗。未沙箱化的 Bash 命令繼承您的 shell 的 `$TMPDIR` 不變。Claude Code 自己的臨時檔案始終使用您的覆蓋 |

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 設定 |279| `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 設定 |

268| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | 使用 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) |280| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | 使用 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) |

269| `CLAUDE_CODE_USE_BEDROCK` | 使用 [Bedrock](/zh-TW/amazon-bedrock) |281| `CLAUDE_CODE_USE_BEDROCK` | 使用 [Bedrock](/zh-TW/amazon-bedrock) |


274| `CLAUDE_CODE_USE_VERTEX` | 使用 [Vertex](/zh-TW/google-vertex-ai) |286| `CLAUDE_CODE_USE_VERTEX` | 使用 [Vertex](/zh-TW/google-vertex-ai) |

275| `CLAUDE_CONFIG_DIR` | 覆蓋配置目錄(預設值:`~/.claude`)。所有設定、認證、工作階段歷史記錄和外掛程式都儲存在此路徑下。對於並排執行多個帳戶很有用:例如,`alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |287| `CLAUDE_CONFIG_DIR` | 覆蓋配置目錄(預設值:`~/.claude`)。所有設定、認證、工作階段歷史記錄和外掛程式都儲存在此路徑下。對於並排執行多個帳戶很有用:例如,`alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

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` 欄位。僅在目前模型支援努力參數時設定 |288| `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` 欄位。僅在目前模型支援努力參數時設定 |

277| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 設定為 `1` 以強制啟用位元級串流閒置監視程式,或設定為 `0` 以強制停用它。未設定時,監視程式預設對 Anthropic API 連線啟用。位元監視程式會在 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 設定的持續時間內沒有位元到達線路時中止連線最少 5 分鐘,獨立於事件級監視程式 |289| `CLAUDE_ENABLE_BYTE_WATCHDOG` | 設定為 `1` 以強制啟用位元級串流閒置監視程式,或設定為 `0` 以強制停用它。未設定時,監視程式預設對 Anthropic API 和 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 連線啟用。位元監視程式會在 180 秒內沒有位元組到達線路時中止連線(直接 Anthropic API 連線上預設為 180 秒,Claude Platform on AWS 和其他提供者上為 300 秒),或在設定 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 時為該值該值被限制為最少 5 分鐘,獨立於事件級監視程式 |

278| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 設定為 `1` 以在 Amazon Bedrock `vnd.amazon.eventstream` 回應上啟用位元級串流閒置監視程式。預設關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |290| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | 設定為 `1` 以在 Amazon Bedrock `vnd.amazon.eventstream` 回應上啟用位元級串流閒置監視程式。預設關閉。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |

279| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 設定為 `1` 以啟用事件級串流閒置監視程式預設關閉對於 Bedrock、VertexFoundry這是唯一可用的閒置監視程式。在 Bedrock 上,您也可以使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` 啟用獨立的位元級監視程式;當兩者都設定時,它們一起執行。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |291| `CLAUDE_ENABLE_STREAM_WATCHDOG` | 設定為 `1` 以強制啟用事件級串流閒置監視程式,或設定為 `0` 以強制停用它未設定時,預設值由伺服器在直接 Anthropic API 上控制,在其他提供者上關閉{/* min-version: 2.1.169 */}自 v2.1.169 起,直接 Anthropic API Claude Platform on AWS 以外的提供者也有預設開啟的 5 分鐘主體閒置逾時獨立於此變數;請參閱 `API_FORCE_IDLE_TIMEOUT`。在 Bedrock 上,您也可以使用 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` 啟用獨立的位元級監視程式;當兩者都設定時,它們一起執行。使用 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 配置逾時 |

280| `CLAUDE_ENV_FILE` | Claude Code 在每個 Bash 命令之前在同一 shell 程序中執行的 shell 指令碼的路徑,因此檔案中的匯出對命令可見。用於在命令之間保持 virtualenv 或 conda 啟用。也由 [SessionStart](/zh-TW/hooks#persist-environment-variables)、[Setup](/zh-TW/hooks#setup)、[CwdChanged](/zh-TW/hooks#cwdchanged) 和 [FileChanged](/zh-TW/hooks#filechanged) hooks 動態填充 |292| `CLAUDE_ENV_FILE` | Claude Code 在每個 Bash 命令之前在同一 shell 程序中執行的 shell 指令碼的路徑,因此檔案中的匯出對命令可見。用於在命令之間保持 virtualenv 或 conda 啟用。也由 [SessionStart](/zh-TW/hooks#persist-environment-variables)、[Setup](/zh-TW/hooks#setup)、[CwdChanged](/zh-TW/hooks#cwdchanged) 和 [FileChanged](/zh-TW/hooks#filechanged) hooks 動態填充 |

281| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | 當未提供明確名稱時,自動產生的 [Remote Control](/zh-TW/remote-control) 工作階段名稱的前綴。預設為您的機器主機名稱,產生名稱如 `myhost-graceful-unicorn`。`--remote-control-session-name-prefix` CLI 旗標為單一呼叫設定相同的值 |293| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | 當未提供明確名稱時,自動產生的 [Remote Control](/zh-TW/remote-control) 工作階段名稱的前綴。預設為您的機器主機名稱,產生名稱如 `myhost-graceful-unicorn`。`--remote-control-session-name-prefix` CLI 旗標為單一呼叫設定相同的值 |

282| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | 串流閒置監視程式在關閉停滯連線之前的逾時(以毫秒為單位)。預設和最小 `300000`(5 分鐘)用於位元級和事件級監視程式;較低的值會無聲地限制以吸收延伸思考暫停和代理緩衝。對於第三方提供者,需要 `CLAUDE_ENABLE_STREAM_WATCHDOG=1`。在 Bedrock 上,也適用於 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` |294| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | 串流閒置監視程式在關閉停滯連線之前的逾時(以毫秒為單位)。當您明確設定此變數時,最小值為 `300000`(5 分鐘);較低的值會無聲地限制以吸收延伸思考暫停和代理緩衝。未設定時事件級監視程式預設為 300 秒,位元級監視程式在直接 Anthropic API 連線上預設為 180 秒(Claude Platform on AWS 和其他提供者上為 300 秒)。未設定的 180 秒位元監視程式預設是一個單獨的值,不受 5 分鐘限制。對於第三方提供者上的事件級監視程式,需要 `CLAUDE_ENABLE_STREAM_WATCHDOG=1`;`API_FORCE_IDLE_TIMEOUT` 下描述的主體閒置逾時獨立適用。在 Bedrock 上,也適用於 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` |

283| `DEBUG` | 設定為 `1` 以啟用偵錯模式,相當於使用 [`--debug`](/zh-TW/cli-reference#cli-flags) 啟動。偵錯日誌會寫入 `~/.claude/debug/<session-id>.txt`,或寫入 `CLAUDE_CODE_DEBUG_LOGS_DIR` 設定的路徑。僅真值 `1`、`true`、`yes` 和 `on` 啟用偵錯模式,因此為其他工具設定的命名空間模式(如 `DEBUG=express:*`)不會觸發它 |295| `DEBUG` | 設定為 `1` 以啟用偵錯模式,相當於使用 [`--debug`](/zh-TW/cli-reference#cli-flags) 啟動。偵錯日誌會寫入 `~/.claude/debug/<session-id>.txt`,或寫入 `CLAUDE_CODE_DEBUG_LOGS_DIR` 設定的路徑。僅真值 `1`、`true`、`yes` 和 `on` 啟用偵錯模式,因此為其他工具設定的命名空間模式(如 `DEBUG=express:*`)不會觸發它 |

284| `DISABLE_AUTOUPDATER` | 設定為 `1` 以停用自動背景更新。手動 `claude update` 仍然有效。使用 `DISABLE_UPDATES` 以阻止兩者 |296| `DISABLE_AUTOUPDATER` | 設定為 `1` 以停用自動背景更新。手動 `claude update` 仍然有效。使用 `DISABLE_UPDATES` 以阻止兩者 |

285| `DISABLE_AUTO_COMPACT` | 設定為 `1` 以停用接近上下文限制時的自動壓縮。手動 `/compact` 命令仍然可用。在您想要明確控制何時進行壓縮時使用 |297| `DISABLE_AUTO_COMPACT` | 設定為 `1` 以停用接近上下文限制時的自動壓縮。手動 `/compact` 命令仍然可用。在您想要明確控制何時進行壓縮時使用 |


296| `DISABLE_LOGIN_COMMAND` | 設定為 `1` 以隱藏 `/login` 命令。當驗證透過 API 金鑰或 `apiKeyHelper` 外部處理時很有用 |308| `DISABLE_LOGIN_COMMAND` | 設定為 `1` 以隱藏 `/login` 命令。當驗證透過 API 金鑰或 `apiKeyHelper` 外部處理時很有用 |

297| `DISABLE_LOGOUT_COMMAND` | 設定為 `1` 以隱藏 `/logout` 命令 |309| `DISABLE_LOGOUT_COMMAND` | 設定為 `1` 以隱藏 `/logout` 命令 |

298| `DISABLE_PROMPT_CACHING` | 設定為 `1` 以停用所有模型的提示快取(優先於每個模型的設定) |310| `DISABLE_PROMPT_CACHING` | 設定為 `1` 以停用所有模型的提示快取(優先於每個模型的設定) |

311| `DISABLE_PROMPT_CACHING_FABLE` | 設定為 `1` 以停用 Fable 模型的提示快取 |

299| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以停用 Haiku 模型的提示快取 |312| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以停用 Haiku 模型的提示快取 |

300| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以停用 Opus 模型的提示快取 |313| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以停用 Opus 模型的提示快取 |

301| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以停用 Sonnet 模型的提示快取 |314| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以停用 Sonnet 模型的提示快取 |


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 小時快取寫入以更高的速率計費 |320| `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 小時快取寫入以更高的速率計費 |

308| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已棄用。改用 `ENABLE_PROMPT_CACHING_1H` |321| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | 已棄用。改用 `ENABLE_PROMPT_CACHING_1H` |

309| `ENABLE_TOOL_SEARCH` | 控制 [MCP tool search](/zh-TW/mcp#scale-with-mcp-tool-search)。未設定:預設所有 MCP 工具延遲,但在 Vertex AI 上或當 `ANTHROPIC_BASE_URL` 指向非第一方主機時提前載入。值:`true`(始終延遲並發送 beta 標頭,在 Vertex AI 或不支援 `tool_reference` 的代理上請求失敗)、`auto`(閾值模式:如果工具符合上下文的 10% 內則提前載入)、`auto:N`(自訂閾值,例如 `auto:5` 表示 5%)、`false`(提前載入全部) |322| `ENABLE_TOOL_SEARCH` | 控制 [MCP tool search](/zh-TW/mcp#scale-with-mcp-tool-search)。未設定:預設所有 MCP 工具延遲,但在 Vertex AI 上或當 `ANTHROPIC_BASE_URL` 指向非第一方主機時提前載入。值:`true`(始終延遲並發送 beta 標頭,在 Vertex AI 或不支援 `tool_reference` 的代理上請求失敗)、`auto`(閾值模式:如果工具符合上下文的 10% 內則提前載入)、`auto:N`(自訂閾值,例如 `auto:5` 表示 5%)、`false`(提前載入全部) |

310| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 設定為任何非空值以在任何主要模型上重複過載錯誤後觸發回退至 [`--fallback-model`](/zh-TW/cli-reference#cli-flags)。預設情況下,僅 Opus 模型觸發回退 |323| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | 設定為任何非空值以在任何主要模型上重複過載錯誤後觸發回退。{/* min-version: 2.1.160 */}自 v2.1.160 起,配置的 [fallback model chain](/zh-TW/model-config#fallback-model-chains) 會在任何主要模型的重複過載錯誤時觸發,因此此變數不影響切換到回退模型 |

311| `FORCE_AUTOUPDATE_PLUGINS` | 設定為 `1` 以強制外掛程式自動更新,即使主自動更新器通過 `DISABLE_AUTOUPDATER` 停用 |324| `FORCE_AUTOUPDATE_PLUGINS` | 設定為 `1` 以強制外掛程式自動更新,即使主自動更新器通過 `DISABLE_AUTOUPDATER` 停用 |

312| `FORCE_PROMPT_CACHING_5M` | 設定為 `1` 以強制 5 分鐘的提示快取 TTL,即使 1 小時 TTL 會以其他方式適用。覆蓋 `ENABLE_PROMPT_CACHING_1H` |325| `FORCE_PROMPT_CACHING_5M` | 設定為 `1` 以強制 5 分鐘的提示快取 TTL,即使 1 小時 TTL 會以其他方式適用。覆蓋 `ENABLE_PROMPT_CACHING_1H` |

313| `HTTP_PROXY` | 為網路連線指定 HTTP 代理伺服器 |326| `HTTP_PROXY` | 為網路連線指定 HTTP 代理伺服器 |

314| `HTTPS_PROXY` | 為網路連線指定 HTTPS 代理伺服器 |327| `HTTPS_PROXY` | 為網路連線指定 HTTPS 代理伺服器 |

315| `IS_DEMO` | 設定為 `1` 以啟用演示模式:隱藏標頭和 `/status` 輸出中的電子郵件和組織名稱,並跳過上線。對於串流或錄製工作階段很有用 |328| `IS_DEMO` | 設定為 `1` 以啟用演示模式:隱藏標頭和 `/status` 輸出中的電子郵件和組織名稱,並跳過上線。對於串流或錄製工作階段很有用 |

316| `MAX_MCP_OUTPUT_TOKENS` | MCP 工具回應中允許的最大 token 數。當輸出超過 10,000 token 時,Claude Code 會顯示警告。宣告 [`anthropic/maxResultSizeChars`](/zh-TW/mcp#raise-the-limit-for-a-specific-tool) 的工具對文字內容使用該字元限制,但來自這些工具的影像內容仍受此變數限制(預設值:25000) |329| `MAX_MCP_OUTPUT_TOKENS` | MCP 工具回應中允許的最大 token 數。Claude Code 在輸出超過 10,000 token 時顯示警告。宣告 [`anthropic/maxResultSizeChars`](/zh-TW/mcp#raise-the-limit-for-a-specific-tool) 的工具對文字內容使用該字元限制,但來自這些工具的影像內容仍受此變數限制(預設值:25000) |

317| `MAX_STRUCTURED_OUTPUT_RETRIES` | 當模型的回應無法驗證非互動式模式(`-p` 旗標)中的 [`--json-schema`](/zh-TW/cli-reference#cli-flags) 時重試的次數。預設為 5 |330| `MAX_STRUCTURED_OUTPUT_RETRIES` | 當模型的回應無法驗證非互動式模式(`-p` 旗標)中的 [`--json-schema`](/zh-TW/cli-reference#cli-flags) 時重試的次數。預設為 5 |

318| `MAX_THINKING_TOKENS` | 覆蓋 [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) token 預算。上限是模型的 [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) 減一。設定為 `0` 以完全停用思考在具有 [adaptive reasoning](/zh-TW/model-config#adjust-effort-level) 的模型上,預算會被忽略,除非透過 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 停用自適應推理 |331| `MAX_THINKING_TOKENS` | 覆蓋 [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) token 預算。上限是模型的 [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) 減一。設定為 `0` 以在 Anthropic API 上停用思考,除了 Fable 5,它無法關閉思考 [third-party providers](/zh-TW/third-party-integrations) 上,`0` 同樣省略該參數,具有 [adaptive reasoning](/zh-TW/model-config#adjust-effort-level) 的模型仍可能思考。對於自適應推理模型上的非零值,預算會被忽略,除非透過 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 停用自適應推理 |

319| `MCP_CLIENT_SECRET` | 需要 [pre-configured credentials](/zh-TW/mcp#use-pre-configured-oauth-credentials) 的 MCP 伺服器的 OAuth 用戶端密碼。在使用 `--client-secret` 新增伺服器時避免互動式提示 |332| `MCP_CLIENT_SECRET` | 需要 [pre-configured credentials](/zh-TW/mcp#use-pre-configured-oauth-credentials) 的 MCP 伺服器的 OAuth 用戶端密碼。在使用 `--client-secret` 新增伺服器時避免互動式提示 |

320| `MCP_CONNECTION_NONBLOCKING` | 控制啟動是否在第一個查詢之前等待 MCP 伺服器連線。{/* min-version: 2.1.142 */}自 Claude Code v2.1.142 起,MCP 啟動預設為非阻止:伺服器在背景中連線,其工具在完成時變為可用。設定為 `0` 以還原阻止 5 秒連線等待。配置 [`alwaysLoad: true`](/zh-TW/mcp#exempt-a-server-from-deferral) 的伺服器仍會阻止啟動,無論如何,因為其工具必須在建立第一個提示時存在 |333| `MCP_CONNECTION_NONBLOCKING` | 控制啟動是否在第一個查詢之前等待 MCP 伺服器連線。{/* min-version: 2.1.142 */}自 Claude Code v2.1.142 起,MCP 啟動預設為非阻止:伺服器在背景中連線,其工具在完成時變為可用。設定為 `0` 以還原阻止 5 秒連線等待。配置 [`alwaysLoad: true`](/zh-TW/mcp#exempt-a-server-from-deferral) 的伺服器仍會阻止啟動,無論如何,因為其工具必須在建立第一個提示時存在 |

321| `MCP_CONNECT_TIMEOUT_MS` | 阻止 MCP 啟動等待連線批次的時間(以毫秒為單位),然後拍攝工具清單快照(預設值:5000)。適用於 `MCP_CONNECTION_NONBLOCKING=0` 或標記為 [`alwaysLoad: true`](/zh-TW/mcp#exempt-a-server-from-deferral) 的伺服器。在截止時間時仍待處理的伺服器會在背景中繼續連線,但在下一個查詢之前不會出現。與 `MCP_TIMEOUT` 不同,後者限制個別伺服器的連線嘗試 |334| `MCP_CONNECT_TIMEOUT_MS` | 阻止 MCP 啟動等待連線批次的時間(以毫秒為單位),然後拍攝工具清單快照(預設值:5000)。適用於 `MCP_CONNECTION_NONBLOCKING=0` 或標記為 [`alwaysLoad: true`](/zh-TW/mcp#exempt-a-server-from-deferral) 的伺服器。在截止時間時仍待處理的伺服器會在背景中繼續連線,但在下一個查詢之前不會出現。與 `MCP_TIMEOUT` 不同,後者限制個別伺服器的連線嘗試 |


323| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的遠端 MCP 伺服器(HTTP/SSE)的最大數量(預設值:20) |336| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的遠端 MCP 伺服器(HTTP/SSE)的最大數量(預設值:20) |

324| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的本機 MCP 伺服器(stdio)的最大數量(預設值:3) |337| `MCP_SERVER_CONNECTION_BATCH_SIZE` | 啟動期間並行連線的本機 MCP 伺服器(stdio)的最大數量(預設值:3) |

325| `MCP_TIMEOUT` | MCP 伺服器啟動的逾時(以毫秒為單位)(預設值:30000,或 30 秒) |338| `MCP_TIMEOUT` | MCP 伺服器啟動的逾時(以毫秒為單位)(預設值:30000,或 30 秒) |

326| `MCP_TOOL_TIMEOUT` | MCP 工具執行的逾時(以毫秒為單位)(預設值:100000000,約 28 小時)。`.mcp.json` 中的每個伺服器 `timeout` 欄位會覆蓋該伺服器的此值。低於 1000 的值會下限為 1 秒 |339| `MCP_TOOL_TIMEOUT` | MCP 工具執行的逾時(以毫秒為單位)(預設值:100000000,約 28 小時)。`.mcp.json` 中的每個伺服器 `timeout` 欄位會覆蓋該伺服器的此值。對於環境變數,低於 1000 的值會下限為 1 秒;對於每個伺服器欄位,低於 1000 的值會被忽略 |

327| `NO_PROXY` | 要直接發出請求的網域和 IP 清單,繞過代理 |340| `NO_PROXY` | 要直接發出請求的網域和 IP 清單,繞過代理 |

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) |341| `OTEL_LOG_RAW_API_BODIES` | 設定為 `1` 以將完整的 Anthropic Messages API 請求和回應 JSON 作為 `api_request_body` / `api_response_body` 日誌事件發出(在 60 KB 處截斷),或 `file:<dir>` 以將未截斷的主體寫入磁碟並發出 `body_ref` 路徑。預設停用;主體包括整個對話歷史記錄。請參閱 [Monitoring](/zh-TW/monitoring-usage#api-request-body-event) |

329| `OTEL_LOG_TOOL_CONTENT` | 設定為 `1` 以在 OpenTelemetry span 事件中包含工具輸入和輸出內容。預設停用以保護敏感資料。請參閱 [Monitoring](/zh-TW/monitoring-usage) |342| `OTEL_LOG_TOOL_CONTENT` | 設定為 `1` 以在 OpenTelemetry span 事件中包含工具輸入和輸出內容。預設停用以保護敏感資料。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

330| `OTEL_LOG_TOOL_DETAILS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含工具輸入引數、MCP 伺服器名稱、工具失敗時的原始錯誤字串和其他工具詳細資訊。預設停用以保護個人識別資訊。請參閱 [Monitoring](/zh-TW/monitoring-usage) |343| `OTEL_LOG_TOOL_DETAILS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含工具輸入引數、MCP 伺服器名稱、工具失敗時的原始錯誤字串和其他工具詳細資訊。預設停用以保護個人識別資訊。請參閱 [Monitoring](/zh-TW/monitoring-usage) |

331| `OTEL_LOG_USER_PROMPTS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含使用者提示文字。預設停用(提示被編輯)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |344| `OTEL_LOG_USER_PROMPTS` | 設定為 `1` 以在 OpenTelemetry 追蹤和日誌中包含使用者提示文字。預設停用(提示被編輯)。請參閱 [Monitoring](/zh-TW/monitoring-usage) |


348| `VERTEX_REGION_CLAUDE_4_6_OPUS` | 使用 Vertex AI 時覆蓋 Claude Opus 4.6 的區域 |361| `VERTEX_REGION_CLAUDE_4_6_OPUS` | 使用 Vertex AI 時覆蓋 Claude Opus 4.6 的區域 |

349| `VERTEX_REGION_CLAUDE_4_6_SONNET` | 使用 Vertex AI 時覆蓋 Claude Sonnet 4.6 的區域 |362| `VERTEX_REGION_CLAUDE_4_6_SONNET` | 使用 Vertex AI 時覆蓋 Claude Sonnet 4.6 的區域 |

350| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}使用 Vertex AI 時覆蓋 Claude Opus 4.7 的區域。在 v2.1.111 中新增 |363| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}使用 Vertex AI 時覆蓋 Claude Opus 4.7 的區域。在 v2.1.111 中新增 |

364| `VERTEX_REGION_CLAUDE_4_8_OPUS` | {/* min-version: 2.1.154 */}使用 Vertex AI 時覆蓋 Claude Opus 4.8 的區域。在 v2.1.154 中新增 |

365| `VERTEX_REGION_CLAUDE_FABLE_5` | {/* min-version: 2.1.170 */}使用 Vertex AI 時覆蓋 Claude Fable 5 的區域。在 v2.1.170 中新增 |

351| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | 使用 Vertex AI 時覆蓋 Claude Haiku 4.5 的區域 |366| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | 使用 Vertex AI 時覆蓋 Claude Haiku 4.5 的區域 |

352 367 

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) 以取得配置詳細資訊。368標準 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) 以取得配置詳細資訊。

errors.md +197 −46

Details

14 Claude Code 呼叫 Claude API 以取得模型回應,因此大多數執行時錯誤對應到基礎 API 錯誤代碼。本頁涵蓋每個錯誤在 Claude Code 中的含義及如何恢復。如需原始 HTTP 狀態代碼定義,請參閱 [Claude Platform error reference](https://platform.claude.com/docs/en/api/errors)。14 Claude Code 呼叫 Claude API 以取得模型回應,因此大多數執行時錯誤對應到基礎 API 錯誤代碼。本頁涵蓋每個錯誤在 Claude Code 中的含義及如何恢復。如需原始 HTTP 狀態代碼定義,請參閱 [Claude Platform error reference](https://platform.claude.com/docs/en/api/errors)。

15</Note>15</Note>

16 16 

17## 尋找您的錯誤17<h2 id="find-your-error">

18 尋找您的錯誤

19</h2>

18 20 

19將您在終端中看到的訊息與下方的部分相符。21將您在終端中看到的訊息與下方的部分相符。

20 22 


26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |28| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

27| `Auto mode could not evaluate this action and is blocking it for safety` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |29| `Auto mode could not evaluate this action and is blocking it for safety` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

28| `Auto mode classifier transcript exceeded context window` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |30| `Auto mode classifier transcript exceeded context window` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

29| `You've hit your session limit` / `You've hit your weekly limit` | [Usage limits](#youve-hit-your-session-limit) |31| `You've hit your session limit` / `You've hit your weekly limit` | [Usage limits](#you%E2%80%99ve-hit-your-session-limit) |

32| `Usage credits required for 1M context` | [Usage limits](#usage-credits-required-for-1m-context) |

30| `Server is temporarily limiting requests` | [Usage limits](#server-is-temporarily-limiting-requests) |33| `Server is temporarily limiting requests` | [Usage limits](#server-is-temporarily-limiting-requests) |

31| `Request rejected (429)` | [Usage limits](#request-rejected-429) |34| `Request rejected (429)` | [Usage limits](#request-rejected-429) |

32| `Credit balance is too low` | [Usage limits](#credit-balance-is-too-low) |35| `Credit balance is too low` | [Usage limits](#credit-balance-is-too-low) |

33| `Not logged in · Please run /login` | [Authentication](#not-logged-in) |36| `Not logged in · Please run /login` | [Authentication](#not-logged-in) |

37| `Could not resolve authentication method` | [Authentication](#could-not-resolve-authentication-method) |

34| `Invalid API key` | [Authentication](#invalid-api-key) |38| `Invalid API key` | [Authentication](#invalid-api-key) |

35| `This organization has been disabled` | [Authentication](#this-organization-has-been-disabled) |39| `This organization has been disabled` | [Authentication](#this-organization-has-been-disabled) |

40| `Your organization has disabled API key authentication` | [Authentication](#your-organization-has-disabled-api-key-authentication) |

36| `Your organization has disabled Claude subscription access` | [Authentication](#your-organization-has-disabled-claude-subscription-access) |41| `Your organization has disabled Claude subscription access` | [Authentication](#your-organization-has-disabled-claude-subscription-access) |

37| `Routines are disabled by your organization's policy` | [Authentication](#routines-are-disabled-by-your-organizations-policy) |42| `Routines are disabled by your organization's policy` | [Authentication](#routines-are-disabled-by-your-organization%E2%80%99s-policy) |

38| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |43| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |

39| `does not meet scope requirement user:profile` | [Authentication](#oauth-scope-requirement) |44| `does not meet scope requirement user:profile` | [Authentication](#oauth-scope-requirement) |

40| `Unable to connect to API` | [Network](#unable-to-connect-to-api) |45| `Unable to connect to API` | [Network](#unable-to-connect-to-api) |


47| `Unable to resize image` | [Request errors](#unable-to-resize-image) |52| `Unable to resize image` | [Request errors](#unable-to-resize-image) |

48| `PDF too large` / `PDF is password protected` | [Request errors](#pdf-errors) |53| `PDF too large` / `PDF is password protected` | [Request errors](#pdf-errors) |

49| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |54| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |

50| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |55| `There's an issue with the selected model` | [Request errors](#there%E2%80%99s-an-issue-with-the-selected-model) |

51| `Claude Opus is not available with the Claude Pro plan` | [Request errors](#claude-opus-is-not-available-with-the-claude-pro-plan) |56| `Claude Opus is not available with the Claude Pro plan` | [Request errors](#claude-opus-is-not-available-with-the-claude-pro-plan) |

52| `thinking.type.enabled is not supported for this model` | [Request errors](#thinking-type-enabled-is-not-supported-for-this-model) |57| `thinking.type.enabled is not supported for this model` | [Request errors](#thinking-type-enabled-is-not-supported-for-this-model) |

53| `max_tokens must be greater than thinking.budget_tokens` | [Request errors](#thinking-budget-exceeds-output-limit) |58| `max_tokens must be greater than thinking.budget_tokens` | [Request errors](#thinking-budget-exceeds-output-limit) |


55| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Request errors](#usage-policy-refusal) |60| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Request errors](#usage-policy-refusal) |

56| 回應品質似乎低於平常 | [Response quality](#responses-seem-lower-quality-than-usual) |61| 回應品質似乎低於平常 | [Response quality](#responses-seem-lower-quality-than-usual) |

57 62 

58## 自動重試63<h2 id="automatic-retries">

64 自動重試

65</h2>

59 66 

60Claude Code 在向您顯示錯誤之前會重試暫時性失敗。伺服器錯誤、過載回應、請求逾時、臨時 429 節流和中斷的連線都會以指數退避方式重試最多 10 次。重試時,微調器會顯示 `Retrying in Ns · attempt x/y` 倒數計時。67Claude Code 在向您顯示錯誤之前會重試暫時性失敗。伺服器錯誤、過載回應、請求逾時、臨時 429 節流和中斷的連線都會以指數退避方式重試最多 10 次。重試時,微調器會顯示 `Retrying in Ns · attempt x/y` 倒數計時。

61 68 


66| [`CLAUDE_CODE_MAX_RETRIES`](/zh-TW/env-vars) | 10 | 重試次數。降低它以在指令碼中更快地顯示失敗;提高它以等待更長的事件。 |73| [`CLAUDE_CODE_MAX_RETRIES`](/zh-TW/env-vars) | 10 | 重試次數。降低它以在指令碼中更快地顯示失敗;提高它以等待更長的事件。 |

67| [`API_TIMEOUT_MS`](/zh-TW/env-vars) | 600000 | 每個請求的逾時(毫秒)。為慢速網路或代理提高它。 |74| [`API_TIMEOUT_MS`](/zh-TW/env-vars) | 600000 | 每個請求的逾時(毫秒)。為慢速網路或代理提高它。 |

68 75 

69## 伺服器錯誤76<h2 id="server-errors">

77 伺服器錯誤

78</h2>

70 79 

71這些錯誤來自推論提供者,而不是您的帳戶或請求。在 Anthropic API 上,這表示 Anthropic 基礎設施。在 Bedrock、Vertex AI、Foundry 或自訂閘道上,這表示該提供者的基礎設施。80這些錯誤來自推論提供者,而不是您的帳戶或請求。在 Anthropic API 上,這表示 Anthropic 基礎設施。在 Bedrock、Vertex AI、Foundry 或自訂閘道上,這表示該提供者的基礎設施。

72 81 

73### API Error: 500 Internal server error82<h3 id="api-error-500-internal-server-error">

83 API Error: 500 Internal server error

84</h3>

74 85 

75Claude Code 為任何 5xx 回應顯示狀態碼和 API 的錯誤訊息。下面的範例顯示 Anthropic API 上的 500 回應:86Claude Code 為任何 5xx 回應顯示狀態碼和 API 的錯誤訊息。下面的範例顯示 Anthropic API 上的 500 回應:

76 87 


88* 等待一分鐘,然後再次傳送您的訊息。您的原始訊息仍在對話中,因此對於長提示,您可以輸入 `try again` 而不是貼上整個內容。99* 等待一分鐘,然後再次傳送您的訊息。您的原始訊息仍在對話中,因此對於長提示,您可以輸入 `try again` 而不是貼上整個內容。

89* 如果錯誤持續存在且沒有發佈的事件,請執行 `/feedback` 以便 Anthropic 可以使用您的請求詳細資訊進行調查。如果您的環境中 `/feedback` 不可用,請參閱 [回報錯誤](#report-an-error)。100* 如果錯誤持續存在且沒有發佈的事件,請執行 `/feedback` 以便 Anthropic 可以使用您的請求詳細資訊進行調查。如果您的環境中 `/feedback` 不可用,請參閱 [回報錯誤](#report-an-error)。

90 101 

91### API Error: Repeated 529 Overloaded errors102<h3 id="api-error-repeated-529-overloaded-errors">

103 API Error: Repeated 529 Overloaded errors

104</h3>

92 105 

93API 在所有使用者中暫時達到容量。Claude Code 在顯示此訊息之前已經重試了多次:106API 在所有使用者中暫時達到容量。Claude Code 在顯示此訊息之前已經重試了多次:

94 107 


104* 幾分鐘後再試一次117* 幾分鐘後再試一次

105* 執行 `/model` 並切換到不同的模型以繼續工作,因為容量是按模型追蹤的。當一個模型負載特別高時,Claude Code 會提示您執行此操作,例如 `Opus is experiencing high load, please use /model to switch to Sonnet`。118* 執行 `/model` 並切換到不同的模型以繼續工作,因為容量是按模型追蹤的。當一個模型負載特別高時,Claude Code 會提示您執行此操作,例如 `Opus is experiencing high load, please use /model to switch to Sonnet`。

106 119 

107### Request timed out120<h3 id="request-timed-out">

121 Request timed out

122</h3>

108 123 

109API 在連線截止時間之前沒有回應。124API 在連線截止時間之前沒有回應。

110 125 


121* 如果原因是慢速網路或代理,請按照 [Automatic retries](#automatic-retries) 中的說明提高 `API_TIMEOUT_MS`136* 如果原因是慢速網路或代理,請按照 [Automatic retries](#automatic-retries) 中的說明提高 `API_TIMEOUT_MS`

122* 如果逾時頻繁且您的網路在其他方面是健康的,請參閱下面的 [Network and connection errors](#network-and-connection-errors)137* 如果逾時頻繁且您的網路在其他方面是健康的,請參閱下面的 [Network and connection errors](#network-and-connection-errors)

123 138 

124### Auto mode cannot determine the safety of an action139<h3 id="auto-mode-cannot-determine-the-safety-of-an-action">

140 Auto mode cannot determine the safety of an action

141</h3>

125 142 

126用來 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類動作的模型無法產生決定,因此 auto mode 沒有自動批准該動作。您看到的訊息取決於分類器失敗的原因。143用來 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 分類動作的模型無法產生決定,因此 auto mode 沒有自動批准該動作。您看到的訊息取決於分類器失敗的原因。

127 144 


163* 在出現的提示中批准或拒絕該動作180* 在出現的提示中批准或拒絕該動作

164* 執行 `/compact` 以減少對話大小,以便後續動作再次適應分類器視窗內181* 執行 `/compact` 以減少對話大小,以便後續動作再次適應分類器視窗內

165 182 

166## 使用限制183<h2 id="usage-limits">

184 使用限制

185</h2>

167 186 

168這些錯誤表示與您的帳戶或計畫相關的配額已達到。它們與影響所有人的 [server errors](#server-errors) 不同。187這些錯誤表示與您的帳戶或計畫相關的配額已達到。它們與影響所有人的 [server errors](#server-errors) 不同。

169 188 

170### You've hit your session limit189<h3 id="you’ve-hit-your-session-limit">

190 You've hit your session limit

191</h3>

171 192 

172訂閱計畫包括滾動使用額度。當它用完時,您會看到以下訊息之一:193訂閱計畫包括滾動使用額度。當它用完時,您會看到以下訊息之一:

173 194 


188 209 

189若要在達到限制之前監視您的剩餘額度,請將 `rate_limits` 欄位新增到 [custom status line](/zh-TW/statusline#rate-limit-usage),或在 Desktop app 中按一下模型選擇器旁邊的 [usage ring](/zh-TW/desktop#check-usage)。210若要在達到限制之前監視您的剩餘額度,請將 `rate_limits` 欄位新增到 [custom status line](/zh-TW/statusline#rate-limit-usage),或在 Desktop app 中按一下模型選擇器旁邊的 [usage ring](/zh-TW/desktop#check-usage)。

190 211 

191### Server is temporarily limiting requests212<h3 id="usage-credits-required-for-1m-context">

213 Usage credits required for 1M context

214</h3>

215 

216所選模型使用 1M 令牌擴展上下文視窗,而您的計畫僅透過使用額度包括它。

217 

218```text theme={null}

219API Error: Usage credits required for 1M context · run /usage-credits to turn them on, or /model to switch to standard context

220```

221 

222這是一項權利檢查,而不是配額耗盡。即使您的工作階段和每週額度仍有容量,它也會觸發。請參閱 [Extended context](/zh-TW/model-config#extended-context) 以了解哪些計畫直接包括 1M 上下文,哪些需要使用額度。

223 

224{/* min-version: 2.1.172 */}當此錯誤在對話中途出現,因為上下文增長超過 200K 令牌時,Claude Code 會自動將對話壓縮回標準上下文限制以下,並在之後將工作階段保持在該限制,因此無需採取任何行動。在 v2.1.172 之前的版本上,錯誤會在每個後續請求(包括 `/compact`)上重複出現;在這些版本上執行 `/clear` 以恢復。以下步驟適用於您明確選擇 `[1m]` 模型的情況。

225 

226**要做什麼:**

227 

228* 執行 `/model` 並選擇不帶 `[1m]` 後綴的變體以回退到標準上下文視窗

229* 執行 `/usage-credits` 以在 Pro 和 Max 上開啟 1M 變體的計量計費,或在 Team 和 Enterprise 上向您的管理員請求

230* 如果執行 `/model` 後錯誤仍然存在,1M 模型 ID 可能在其他地方設定。請參閱 [There's an issue with the selected model](#there%E2%80%99s-an-issue-with-the-selected-model) 以了解要按優先順序檢查的配置位置。

231* 若要從模型選擇器中完全移除 1M 變體,請設定 [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/zh-TW/env-vars)

232 

233<h3 id="server-is-temporarily-limiting-requests">

234 Server is temporarily limiting requests

235</h3>

192 236 

193API 應用了與您的計畫配額無關的短期節流。237API 應用了與您的計畫配額無關的短期節流。

194 238 


203* 稍等片刻,然後再試一次247* 稍等片刻,然後再試一次

204* 如果持續存在,請檢查 [status.claude.com](https://status.claude.com)248* 如果持續存在,請檢查 [status.claude.com](https://status.claude.com)

205 249 

206### Request rejected (429)250<h3 id="request-rejected-429">

251 Request rejected (429)

252</h3>

207 253 

208您已達到為您的 API 金鑰、Amazon Bedrock 專案或 Google Vertex AI 專案配置的速率限制。254您已達到為您的 API 金鑰、Amazon Bedrock 專案或 Google Vertex AI 專案配置的速率限制。

209 255 


220* 對於 Anthropic API 金鑰,請參閱 [rate limits reference](https://platform.claude.com/docs/en/api/rate-limits) 以了解層級如何運作以及如何設定每個工作區的上限266* 對於 Anthropic API 金鑰,請參閱 [rate limits reference](https://platform.claude.com/docs/en/api/rate-limits) 以了解層級如何運作以及如何設定每個工作區的上限

221* 降低並行性:降低 [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/zh-TW/env-vars)、避免執行許多平行子代理,或使用 `/model` 切換到較小的模型以進行高容量指令碼執行267* 降低並行性:降低 [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/zh-TW/env-vars)、避免執行許多平行子代理,或使用 `/model` 切換到較小的模型以進行高容量指令碼執行

222 268 

223### Credit balance is too low269<h3 id="credit-balance-is-too-low">

270 Credit balance is too low

271</h3>

224 272 

225您的 Console 組織已用完預付額度。273您的 Console 組織已用完預付額度。

226 274 


234* 如果您有 Pro、Max、Team 或 Enterprise 計畫,請使用 `/login` 切換到訂閱認證282* 如果您有 Pro、Max、Team 或 Enterprise 計畫,請使用 `/login` 切換到訂閱認證

235* 在 Console 中設定每個工作區的支出上限,以防止單個專案耗盡組織餘額。請參閱 [Manage costs effectively](/zh-TW/costs)。283* 在 Console 中設定每個工作區的支出上限,以防止單個專案耗盡組織餘額。請參閱 [Manage costs effectively](/zh-TW/costs)。

236 284 

237## 認證錯誤285<h2 id="authentication-errors">

286 認證錯誤

287</h2>

238 288 

239這些錯誤表示 Claude Code 無法向 API 證明您的身份。隨時執行 `/status` 以查看目前活躍的認證。289這些錯誤表示 Claude Code 無法向 API 證明您的身份。隨時執行 `/status` 以查看目前活躍的認證。

240 290 

241### Not logged in291<h3 id="not-logged-in">

292 Not logged in

293</h3>

242 294 

243此工作階段沒有有效的認證可用。295此工作階段沒有有效的認證可用。

244 296 


255 307 

256如果系統提示您重複登入,請參閱 [Not logged in or token expired](/zh-TW/troubleshoot-install#not-logged-in-or-token-expired) 以了解系統時鐘和 macOS Keychain 修復。308如果系統提示您重複登入,請參閱 [Not logged in or token expired](/zh-TW/troubleshoot-install#not-logged-in-or-token-expired) 以了解系統時鐘和 macOS Keychain 修復。

257 309 

258### Invalid API key310<h3 id="could-not-resolve-authentication-method">

311 Could not resolve authentication method

312</h3>

313 

314工作階段到達 API 用戶端時沒有任何認證。這會出現在[背景工作階段](/zh-TW/agent-view)、雲端工作階段和 Agent SDK 環境中,其中互動式登入檢查在第一個請求之前不會執行。

315 

316```text theme={null}

317Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted

318```

319 

320{/* min-version: 2.1.174 */}在 v2.1.174 之前,分配給閒置預初始化背景工作程序的背景或雲端工作階段即使配置了有效認證也可能以這種方式失敗。升級以恢復。在目前版本中,此錯誤表示沒有認證可用於背景工作程序。

321 

322**要做什麼:**

323 

324* 如果這出現在背景或雲端工作階段中且您的認證已配置,請升級到 v2.1.174 或更新版本

325* 確認 `ANTHROPIC_API_KEY`、`CLAUDE_CODE_OAUTH_TOKEN` 或您的雲端提供者認證已在啟動背景工作程序的環境中設定,而不僅在您的互動式 shell 中

326* 對於 Agent SDK,請參閱[認證設定](/zh-TW/agent-sdk/overview#get-started)

327* 在相同環境中的互動式工作階段中執行 `/status` 以確認哪個認證來源會解析

328 

329<h3 id="invalid-api-key">

330 Invalid API key

331</h3>

259 332 

260`ANTHROPIC_API_KEY` 環境變數或 `apiKeyHelper` 指令碼傳回的金鑰被 API 拒絕。333`ANTHROPIC_API_KEY` 環境變數或 `apiKeyHelper` 指令碼傳回的金鑰被 API 拒絕。

261 334 


271* 如果金鑰來自 [`apiKeyHelper`](/zh-TW/settings#available-settings) 指令碼,請直接執行指令碼以確認它在 stdout 上列印有效的金鑰344* 如果金鑰來自 [`apiKeyHelper`](/zh-TW/settings#available-settings) 指令碼,請直接執行指令碼以確認它在 stdout 上列印有效的金鑰

272* 執行 `/status` 以確認 Claude Code 實際使用的認證來源345* 執行 `/status` 以確認 Claude Code 實際使用的認證來源

273 346 

274### This organization has been disabled347<h3 id="this-organization-has-been-disabled">

348 This organization has been disabled

349</h3>

275 350 

276來自已停用 Console 組織的過時 `ANTHROPIC_API_KEY` 正在覆蓋您的訂閱登入。351來自已停用 Console 組織的過時 `ANTHROPIC_API_KEY` 正在覆蓋您的訂閱登入。

277 352 


288* 之後執行 `/status` 以確認活躍的認證是您的訂閱363* 之後執行 `/status` 以確認活躍的認證是您的訂閱

289* 如果未設定環境變數且錯誤持續存在,則已停用的組織是與您的 `/login` 相關聯的組織。聯絡支援或使用不同的帳戶登入。364* 如果未設定環境變數且錯誤持續存在,則已停用的組織是與您的 `/login` 相關聯的組織。聯絡支援或使用不同的帳戶登入。

290 365 

291### Your organization has disabled Claude subscription access366<h3 id="your-organization-has-disabled-api-key-authentication">

367 Your organization has disabled API key authentication

368</h3>

369 

370您的 Console 組織管理員已關閉 API 金鑰認證,因此 API 拒絕了 Claude Code 正在傳送的金鑰。`·` 之後的復原提示會根據金鑰的來源而異:

371 

372```text theme={null}

373Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account

374Your organization has disabled API key authentication · Unset ANTHROPIC_API_KEY to use your claude.ai account instead

375Your organization has disabled API key authentication · Unset ANTHROPIC_API_KEY and run /login to sign in with your claude.ai account

376Your organization has disabled API key authentication · Unset the apiKeyHelper setting and run /login to sign in with your claude.ai account

377```

378 

379環境變數和 `apiKeyHelper` 優先於 `/login`,因此在任一仍在提供金鑰時單獨執行 `/login` 無法幫助。請參閱 [Authentication precedence](/zh-TW/authentication#authentication-precedence)。

380 

381**要做什麼:**

382 

383* 如果訊息提及 `ANTHROPIC_API_KEY`,請在目前的 shell 中取消設定它,並從您的 shell 設定檔或 `.env` 檔案中移除它,然後重新啟動 `claude`

384* 如果訊息提及 `apiKeyHelper`,請從您的 `settings.json` 中移除 [`apiKeyHelper`](/zh-TW/settings#available-settings) 設定

385* 執行 `/login` 以使用您的 claude.ai 帳戶登入

386* 之後執行 `/status` 以確認活躍的認證是您的訂閱而不是 API 金鑰

387* 如果您需要 API 金鑰認證進行自動化,請要求您的組織管理員在 Console 中重新啟用它

388 

389<h3 id="your-organization-has-disabled-claude-subscription-access">

390 Your organization has disabled Claude subscription access

391</h3>

292 392 

293您的 Claude 組織不允許使用訂閱登入來登入 Claude Code。使用相同帳戶再次執行 `/login` 會傳回相同的錯誤。393您的 Claude 組織不允許使用訂閱登入來登入 Claude Code。使用相同帳戶再次執行 `/login` 會傳回相同的錯誤。

294 394 


304* 改用 Console API 金鑰進行認證,而不是您的訂閱。請參閱 [Claude Console authentication](/zh-TW/authentication#claude-console-authentication) 以了解設定。404* 改用 Console API 金鑰進行認證,而不是您的訂閱。請參閱 [Claude Console authentication](/zh-TW/authentication#claude-console-authentication) 以了解設定。

305* 如果您是管理員且看不到啟用存取的選項,請聯絡 [Anthropic support](https://support.claude.com)405* 如果您是管理員且看不到啟用存取的選項,請聯絡 [Anthropic support](https://support.claude.com)

306 406 

307### Routines are disabled by your organization's policy407<h3 id="routines-are-disabled-by-your-organizations-policy">

408 Routines are disabled by your organization's policy

409</h3>

308 410 

309您的 Team 或 Enterprise 管理員已在組織層級關閉了例程。當您嘗試建立或執行例程時會出現此錯誤,包括從 `/schedule` 和 claude.ai/code 上的 [Routines](/zh-TW/routines) UI。411您的 Team 或 Enterprise 管理員已在組織層級關閉了例程。當您嘗試建立或執行例程時會出現此錯誤,包括從 `/schedule` 和 claude.ai/code 上的 [Routines](/zh-TW/routines) UI。

310 412 


319* 要求您的管理員在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 啟用 **Routines** 切換421* 要求您的管理員在 [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) 啟用 **Routines** 切換

320* 對於不需要組織層級例程的一次性排程工作,請參閱 [scheduled tasks](/zh-TW/scheduled-tasks)422* 對於不需要組織層級例程的一次性排程工作,請參閱 [scheduled tasks](/zh-TW/scheduled-tasks)

321 423 

322### OAuth token revoked or expired424<h3 id="oauth-token-revoked-or-expired">

425 OAuth token revoked or expired

426</h3>

323 427 

324您的已儲存登入不再有效。撤銷的令牌表示您在任何地方登出或管理員移除了存取權;過期的令牌表示自動重新整理在工作階段中途失敗。428您的已儲存登入不再有效。撤銷的令牌表示您在任何地方登出或管理員移除了存取權;過期的令牌表示自動重新整理在工作階段中途失敗。

325 429 


336* 對於跨啟動的重複登入提示,請參閱 [Troubleshooting](/zh-TW/troubleshoot-install#not-logged-in-or-token-expired) 中的系統時鐘和 macOS Keychain 檢查440* 對於跨啟動的重複登入提示,請參閱 [Troubleshooting](/zh-TW/troubleshoot-install#not-logged-in-or-token-expired) 中的系統時鐘和 macOS Keychain 檢查

337* 對於其他失敗(包括 `403 Forbidden` 和 OAuth 瀏覽器問題),請參閱 [Login and authentication](/zh-TW/troubleshoot-install#login-and-authentication)441* 對於其他失敗(包括 `403 Forbidden` 和 OAuth 瀏覽器問題),請參閱 [Login and authentication](/zh-TW/troubleshoot-install#login-and-authentication)

338 442 

339### OAuth scope requirement443<h3 id="oauth-scope-requirement">

444 OAuth scope requirement

445</h3>

340 446 

341儲存的令牌早於較新功能所需的權限範圍。您最常從 `/usage` 和狀態行使用指標看到這一點:447儲存的令牌早於較新功能所需的權限範圍。您最常從 `/usage` 和狀態行使用指標看到這一點:

342 448 


348 454 

349* 執行 `/login` 以使用目前的範圍鑄造新令牌。您不需要先登出。455* 執行 `/login` 以使用目前的範圍鑄造新令牌。您不需要先登出。

350 456 

351## 網路和連線錯誤457<h2 id="network-and-connection-errors">

458 網路和連線錯誤

459</h2>

352 460 

353這些錯誤表示 Claude Code 的網路請求無法到達其目的地。它們通常源於您的本地網路、代理或防火牆,或雲端環境的網路政策。461這些錯誤表示 Claude Code 的網路請求無法到達其目的地。它們通常源於您的本地網路、代理或防火牆,或雲端環境的網路政策。

354 462 

355### Unable to connect to API463<h3 id="unable-to-connect-to-api">

464 Unable to connect to API

465</h3>

356 466 

357到 API 的 TCP 連線失敗或從未完成。467到 API 的 TCP 連線失敗或從未完成。

358 468 


381* 在 macOS 上,已斷開連線或卸載的 VPN 用戶端可能會留下隧道介面或路由規則。檢查 `ifconfig` 以了解過時的 `utun` 介面,並在系統設定中移除 VPN 的網路擴充功能。491* 在 macOS 上,已斷開連線或卸載的 VPN 用戶端可能會留下隧道介面或路由規則。檢查 `ifconfig` 以了解過時的 `utun` 介面,並在系統設定中移除 VPN 的網路擴充功能。

382* Docker Desktop 和類似的容器執行時可以攔截出站流量。退出它們並重試以排除這一點。492* Docker Desktop 和類似的容器執行時可以攔截出站流量。退出它們並重試以排除這一點。

383 493 

384### SSL certificate errors494<h3 id="ssl-certificate-errors">

495 SSL certificate errors

496</h3>

385 497 

386您網路上的代理或安全設備正在使用其自己的憑證攔截 TLS 流量,而 Claude Code 不信任它。498您網路上的代理或安全設備正在使用其自己的憑證攔截 TLS 流量,而 Claude Code 不信任它。

387 499 


396* 請參閱 [Network configuration](/zh-TW/network-config#custom-ca-certificates) 以了解完整的設定說明508* 請參閱 [Network configuration](/zh-TW/network-config#custom-ca-certificates) 以了解完整的設定說明

397* 不要設定 `NODE_TLS_REJECT_UNAUTHORIZED=0`,這會完全停用憑證驗證509* 不要設定 `NODE_TLS_REJECT_UNAUTHORIZED=0`,這會完全停用憑證驗證

398 510 

399### Host not allowed in a cloud session511<h3 id="host-not-allowed-in-a-cloud-session">

512 Host not allowed in a cloud session

513</h3>

400 514 

401來自雲端工作階段或例行程序的出站 HTTP 請求被環境的網路政策阻止。515來自雲端工作階段或例行程序的出站 HTTP 請求被環境的網路政策阻止。

402 516 


417 531 

418請參閱 [Network access](/zh-TW/claude-code-on-the-web#network-access) 以了解存取層級和預設允許清單。本地 CLI 工作階段不受此政策影響。532請參閱 [Network access](/zh-TW/claude-code-on-the-web#network-access) 以了解存取層級和預設允許清單。本地 CLI 工作階段不受此政策影響。

419 533 

420## 請求錯誤534<h2 id="request-errors">

535 請求錯誤

536</h2>

421 537 

422這些錯誤表示 API 收到了您的請求但拒絕了其內容。538這些錯誤表示 API 收到了您的請求但拒絕了其內容。

423 539 

424### Prompt is too long540<h3 id="prompt-is-too-long">

541 Prompt is too long

542</h3>

425 543 

426對話加上附加檔案超過了模型的上下文視窗。544對話加上附加檔案超過了模型的上下文視窗。

427 545 


440 558 

441請參閱 [Explore the context window](/zh-TW/context-window) 以取得上下文如何填滿的互動式檢視。559請參閱 [Explore the context window](/zh-TW/context-window) 以取得上下文如何填滿的互動式檢視。

442 560 

443### Error during compaction: Conversation too long561<h3 id="error-during-compaction-conversation-too-long">

562 Error during compaction: Conversation too long

563</h3>

444 564 

445`/compact` 本身失敗,因為沒有足夠的可用上下文來保存它產生的摘要。565`/compact` 本身失敗,因為沒有足夠的可用上下文來保存它產生的摘要。

446 566 


455* 按 Esc 兩次以開啟訊息清單並回退幾個轉向。這會從上下文中刪除最近的訊息。然後再次執行 `/compact`。575* 按 Esc 兩次以開啟訊息清單並回退幾個轉向。這會從上下文中刪除最近的訊息。然後再次執行 `/compact`。

456* 如果回退沒有釋放足夠的空間,請執行 `/clear` 以啟動新的工作階段。您之前的對話已保留,可以使用 `/resume` 重新開啟。576* 如果回退沒有釋放足夠的空間,請執行 `/clear` 以啟動新的工作階段。您之前的對話已保留,可以使用 `/resume` 重新開啟。

457 577 

458### Request too large578<h3 id="request-too-large">

579 Request too large

580</h3>

459 581 

460原始請求主體在標記化之前超過了 API 的位元組限制,通常是因為貼上的大型檔案或附件。582原始請求主體在標記化之前超過了 API 的位元組限制,通常是因為貼上的大型檔案或附件。

461 583 


471* 按路徑參考大型檔案而不是貼上其內容,以便 Claude 可以分塊讀取它們593* 按路徑參考大型檔案而不是貼上其內容,以便 Claude 可以分塊讀取它們

472* 對於影像,請參閱下面的 [Image was too large](#image-was-too-large)594* 對於影像,請參閱下面的 [Image was too large](#image-was-too-large)

473 595 

474### Image was too large596<h3 id="image-was-too-large">

597 Image was too large

598</h3>

475 599 

476貼上或附加的影像超過了 API 的大小或尺寸限制。600貼上或附加的影像超過了 API 的大小或尺寸限制。

477 601 


480API Error: 400 ... image dimensions exceed max allowed size604API Error: 400 ... image dimensions exceed max allowed size

481```605```

482 606 

483影像在錯誤後保留在對話歷史記錄中因此每個後續訊息都會失敗出現相同的錯誤直到您移除它607{/* min-version: 2.1.142 */}Claude Code 會將無法處理的影像替換為文字預留位置並重試因此後續訊息會成功。在 2.1.142 之前的版本上貼上的影像可能會保留在對話中並在每個後續訊息上重複相同的錯誤若要在這些版本上恢復,請按 Esc 兩次並回退到新增影像的轉向之前。

484 608 

485**要做什麼:**609**要做什麼:**

486 610 

487* 按 Esc 兩次並回退到新增影像的轉向之前

488* 在貼上之前調整影像大小。API 接受單個影像最長邊最多 8000 像素的影像,或當許多影像在上下文中時為 2000 像素。611* 在貼上之前調整影像大小。API 接受單個影像最長邊最多 8000 像素的影像,或當許多影像在上下文中時為 2000 像素。

489* 拍攝相關區域的更緊密螢幕截圖,而不是整個螢幕612* 拍攝相關區域的更緊密螢幕截圖,而不是整個螢幕

490 613 

491### Unable to resize image614<h3 id="unable-to-resize-image">

615 Unable to resize image

616</h3>

492 617 

493Claude Code 無法在將附加影像傳送到 API 之前將其縮小。618Claude Code 無法在將附加影像傳送到 API 之前將其縮小。

494 619 


506* 如果訊息要求您轉換影像,請將其轉換為 PNG、JPEG、GIF 或 WebP,然後再次附加。Claude Code 可以驗證這些格式的尺寸,而無需影像處理器。631* 如果訊息要求您轉換影像,請將其轉換為 PNG、JPEG、GIF 或 WebP,然後再次附加。Claude Code 可以驗證這些格式的尺寸,而無需影像處理器。

507* 如果訊息報告尺寸或大小限制,請在附加之前將影像調整大小或重新壓縮到該限制以下。632* 如果訊息報告尺寸或大小限制,請在附加之前將影像調整大小或重新壓縮到該限制以下。

508 633 

509### PDF errors634<h3 id="pdf-errors">

635 PDF errors

636</h3>

510 637 

511您附加的 PDF 無法處理。638您附加的 PDF 無法處理。

512 639 


521* 對於超大 PDF,請要求 Claude 使用 Read 工具讀取頁面範圍,而不是附加整個檔案,或使用 `pdftotext` 等工具提取文字並按路徑參考輸出檔案648* 對於超大 PDF,請要求 Claude 使用 Read 工具讀取頁面範圍,而不是附加整個檔案,或使用 `pdftotext` 等工具提取文字並按路徑參考輸出檔案

522* 對於受保護或無效的 PDF,移除密碼或從其來源應用程式重新匯出檔案,然後再試一次649* 對於受保護或無效的 PDF,移除密碼或從其來源應用程式重新匯出檔案,然後再試一次

523 650 

524### Extra inputs are not permitted651<h3 id="extra-inputs-are-not-permitted">

652 Extra inputs are not permitted

653</h3>

525 654 

526Claude Code 和 API 之間的代理或 LLM 閘道剝離了 `anthropic-beta` 請求標頭,因此 API 拒絕了依賴它的欄位。655Claude Code 和 API 之間的代理或 LLM 閘道剝離了 `anthropic-beta` 請求標頭,因此 API 拒絕了依賴它的欄位。

527 656 


538* 配置您的閘道以轉發 `anthropic-beta` 標頭。請參閱 [LLM gateway configuration](/zh-TW/llm-gateway)。667* 配置您的閘道以轉發 `anthropic-beta` 標頭。請參閱 [LLM gateway configuration](/zh-TW/llm-gateway)。

539* 作為後備,在啟動之前設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/zh-TW/env-vars)。這會停用需要測試版標頭的功能,以便請求透過無法轉發它的閘道成功。668* 作為後備,在啟動之前設定 [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/zh-TW/env-vars)。這會停用需要測試版標頭的功能,以便請求透過無法轉發它的閘道成功。

540 669 

541### There's an issue with the selected model670<h3 id="there’s-an-issue-with-the-selected-model">

671 There's an issue with the selected model

672</h3>

542 673 

543配置的模型名稱未被識別,或您的帳戶缺乏對其的存取權。自 v2.1.160 起,尾部提示(如此處以其互動形式所示)因表面而異。674配置的模型名稱未被識別,或您的帳戶缺乏對其的存取權。自 v2.1.160 起,尾部提示(如此處以其互動形式所示)因表面而異。

544 675 


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 會回退到您的帳戶預設值。686* 如果錯誤的模型一直出現在 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 會回退到您的帳戶預設值。

556* 對於 Vertex AI 部署,請參閱 [Vertex AI troubleshooting](/zh-TW/google-vertex-ai#troubleshooting)。687* 對於 Vertex AI 部署,請參閱 [Vertex AI troubleshooting](/zh-TW/google-vertex-ai#troubleshooting)。

557 688 

558### Claude Opus is not available with the Claude Pro plan689<h3 id="claude-opus-is-not-available-with-the-claude-pro-plan">

690 Claude Opus is not available with the Claude Pro plan

691</h3>

559 692 

560您的活躍訂閱計畫不包括您選擇的模型。693您的活躍訂閱計畫不包括您選擇的模型。

561 694 


569* 如果您最近升級了計畫但仍然看到這個,請執行 `/logout` 然後 `/login`。儲存的令牌反映您登入時的計畫,因此在現有工作階段中升級網路不會生效,直到您重新認證。702* 如果您最近升級了計畫但仍然看到這個,請執行 `/logout` 然後 `/login`。儲存的令牌反映您登入時的計畫,因此在現有工作階段中升級網路不會生效,直到您重新認證。

570* 請參閱 [claude.com/pricing](https://claude.com/pricing) 以了解每個計畫包括哪些模型703* 請參閱 [claude.com/pricing](https://claude.com/pricing) 以了解每個計畫包括哪些模型

571 704 

572### thinking.type.enabled is not supported for this model705<h3 id="thinking-type-enabled-is-not-supported-for-this-model">

706 thinking.type.enabled is not supported for this model

707</h3>

573 708 

574您的 Claude Code 版本早於 Opus 4.7 或 Opus 4.8 的最低版本。CLI 傳送了模型不再接受的思考配置。709您的 Claude Code 版本早於 Opus 4.7 或 Opus 4.8 的最低版本。CLI 傳送了模型不再接受的思考配置。

575 710 


583* 如果您無法升級,請執行 `/model` 並選擇 Opus 4.6 或 Sonnet718* 如果您無法升級,請執行 `/model` 並選擇 Opus 4.6 或 Sonnet

584* 如果您在 Agent SDK 中遇到這個,請參閱 [SDK troubleshooting](/zh-TW/agent-sdk/quickstart#troubleshooting)719* 如果您在 Agent SDK 中遇到這個,請參閱 [SDK troubleshooting](/zh-TW/agent-sdk/quickstart#troubleshooting)

585 720 

586### Thinking budget exceeds output limit721<h3 id="thinking-budget-exceeds-output-limit">

722 Thinking budget exceeds output limit

723</h3>

587 724 

588配置的擴展思考預算超過最大回應長度,因此實際答案沒有剩餘空間。725配置的擴展思考預算超過最大回應長度,因此實際答案沒有剩餘空間。

589 726 


598* 降低 `MAX_THINKING_TOKENS`,或將 [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/zh-TW/env-vars) 提高到思考預算之上735* 降低 `MAX_THINKING_TOKENS`,或將 [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/zh-TW/env-vars) 提高到思考預算之上

599* 請參閱 [Extended thinking](/zh-TW/model-config#extended-thinking) 以了解預算如何與輸出長度互動736* 請參閱 [Extended thinking](/zh-TW/model-config#extended-thinking) 以了解預算如何與輸出長度互動

600 737 

601### Tool use or thinking block mismatch738<h3 id="tool-use-or-thinking-block-mismatch">

739 Tool use or thinking block mismatch

740</h3>

602 741 

603對話歷史記錄以不一致的狀態到達 API,通常是在工具呼叫被中斷或轉向在流中途被編輯後。742對話歷史記錄以不一致的狀態到達 API,通常是在工具呼叫被中斷或轉向在流中途被編輯後。

604 743 


615* {/* max-version: 2.1.155 */}如果您使用的是 Opus 4.7 或 Opus 4.8,請先執行 `claude update`。v2.1.156 之前的版本可能在正常工具使用期間觸發此錯誤,而 `/rewind` 無法清除它。754* {/* max-version: 2.1.155 */}如果您使用的是 Opus 4.7 或 Opus 4.8,請先執行 `claude update`。v2.1.156 之前的版本可能在正常工具使用期間觸發此錯誤,而 `/rewind` 無法清除它。

616* 執行 `/rewind`,或按 Esc 兩次,以回退到損壞轉向之前的檢查點並從那裡繼續。請參閱 [Checkpointing](/zh-TW/checkpointing) 以了解如何建立和恢復檢查點。755* 執行 `/rewind`,或按 Esc 兩次,以回退到損壞轉向之前的檢查點並從那裡繼續。請參閱 [Checkpointing](/zh-TW/checkpointing) 以了解如何建立和恢復檢查點。

617 756 

618### Usage Policy refusal757<h3 id="usage-policy-refusal">

758 Usage Policy refusal

759</h3>

619 760 

620API 拒絕回應,因為對話中的內容觸發了 [Usage Policy](https://www.anthropic.com/legal/aup) 檢查。訊息包括一個請求 ID,如果您認為拒絕不正確,可以引用該 ID 與支援部門聯繫。761API 拒絕回應,因為對話中的內容觸發了 [Usage Policy](https://www.anthropic.com/legal/aup) 檢查。訊息包括一個請求 ID,如果您認為拒絕不正確,可以引用該 ID 與支援部門聯繫。

621 762 


631* 如果您無法識別哪個轉向導致了它,請執行 `/clear` 以在同一專案中啟動新的對話。您之前的對話已保留在磁碟上,並在 `/resume` 中保持可用。772* 如果您無法識別哪個轉向導致了它,請執行 `/clear` 以在同一專案中啟動新的對話。您之前的對話已保留在磁碟上,並在 `/resume` 中保持可用。

632* 在 [non-interactive mode](/zh-TW/headless)(`-p`)中,其中無法使用 rewind,請使用重新表述的提示重試或啟動新的工作階段而不使用 `--continue`。773* 在 [non-interactive mode](/zh-TW/headless)(`-p`)中,其中無法使用 rewind,請使用重新表述的提示重試或啟動新的工作階段而不使用 `--continue`。

633 774 

634## 回應品質似乎低於平常775<h2 id="responses-seem-lower-quality-than-usual">

776 回應品質似乎低於平常

777</h2>

778 

779如果 Claude 的答案似乎不如您預期的那樣有能力,但沒有顯示錯誤,原因通常是對話狀態而不是模型本身。Claude Code 不會無聲地更改模型版本。它可以在三個特定情況下切換到後備模型:

780 

781* 配置的 [`--fallback-model`](/zh-TW/cli-reference#cli-flags) 在可用性錯誤後接管該轉向,並在記錄中顯示通知

782* Bedrock 或 Vertex AI 啟動檢查發現您的預設模型不可用

783* [自動模型後備](/zh-TW/model-config#automatic-model-fallback)在 Fable 5 上將工作階段移至預設 Opus 模型,並在記錄中顯示通知

635 784 

636如果 Claude 的答案似乎不如您預期的那樣有能力,但沒有顯示錯誤,原因通常是對話狀態而不是模型本身。Claude Code 不會無聲地更改模型版本它可以在特定情況下切換到後備模型,例如達到 Opus 配額或 Bedrock 或 Vertex AI 區域缺乏您的模型;下面的模型選擇檢查會捕獲兩者,[Model configuration](/zh-TW/model-config) 解釋何時應用後備785下面的模型選擇檢查會捕獲第二和第三種情況;第一種情況顯示為記錄通知而不是 `/model` 變更。[Model configuration](/zh-TW/model-config) 解釋何時應用每個後備

637 786 

638首先檢查這些:787首先檢查這些:

639 788 


646 795 

647如果在檢查上述內容後品質仍然似乎有問題,請執行 `/feedback` 並描述您期望的內容與您得到的內容。以這種方式提交的反饋包括對話記錄,這是 Anthropic 診斷真實回歸的最快方式。如果您的環境上 `/feedback` 不可用,請參閱 [Report an error](#report-an-error)。796如果在檢查上述內容後品質仍然似乎有問題,請執行 `/feedback` 並描述您期望的內容與您得到的內容。以這種方式提交的反饋包括對話記錄,這是 Anthropic 診斷真實回歸的最快方式。如果您的環境上 `/feedback` 不可用,請參閱 [Report an error](#report-an-error)。

648 797 

649## 報告錯誤798<h2 id="report-an-error">

799 報告錯誤

800</h2>

650 801 

651本頁涵蓋來自 Claude API 的錯誤。對於來自其他 Claude Code 元件的錯誤,請參閱相關指南:802本頁涵蓋來自 Claude API 的錯誤。對於來自其他 Claude Code 元件的錯誤,請參閱相關指南:

652 803 

fast-mode.md +1 −1

Details

115* **Team 和 Enterprise 的管理員啟用**:快速模式預設對 Team 和 Enterprise 組織禁用。管理員必須明確[啟用快速模式](#enable-fast-mode-for-your-organization),使用者才能存取它。115* **Team 和 Enterprise 的管理員啟用**:快速模式預設對 Team 和 Enterprise 組織禁用。管理員必須明確[啟用快速模式](#enable-fast-mode-for-your-organization),使用者才能存取它。

116 116 

117<Note>117<Note>

118 如果您的管理員尚未為您的組織啟用快速模式,`/fast` 命令將顯示「Fast mode has been disabled by your organization.」118 如果您的管理員尚未為您的組織啟用快速模式,`/fast` 命令將顯示「Fast mode has been disabled by your organization.」如果您組織的 [`availableModels`](/zh-TW/model-config#restrict-model-selection) 允許清單排除了快速模式 Opus 模型,`/fast` 會被拒絕,顯示「is not in your organization's allowed models」。

119</Note>119</Note>

120 120 

121<h3 id="enable-fast-mode-for-your-organization">121<h3 id="enable-fast-mode-for-your-organization">

Details

12 有關核心代理迴圈如何運作的資訊,請參閱[Claude Code 如何運作](/zh-TW/how-claude-code-works)。12 有關核心代理迴圈如何運作的資訊,請參閱[Claude Code 如何運作](/zh-TW/how-claude-code-works)。

13</Note>13</Note>

14 14 

15**初次使用 Claude Code?** 從[CLAUDE.md](/zh-TW/memory)開始了解專案約定,然後根據特定觸發器添加其他擴展。15**初次使用 Claude Code?** 從[CLAUDE.md](/zh-TW/memory)開始了解專案約定,然後根據特定觸發器添加其他擴展[如下所示](#build-your-setup-over-time)

16 16 

17<h2 id="overview">17<h2 id="overview">

18 概述18 概述


109 109 

110 **如果它是 Claude 有時需要的參考資料(API 文件、風格指南)或您使用 `/<name>` 觸發的工作流程(部署、審查、發佈),請將其放在 skill 中**。110 **如果它是 Claude 有時需要的參考資料(API 文件、風格指南)或您使用 `/<name>` 觸發的工作流程(部署、審查、發佈),請將其放在 skill 中**。

111 111 

112 **經驗法則:** 保持 CLAUDE.md 在 200 行以下。如果它在增長,將參考內容移動到 skills 或拆分為 [`.claude/rules/`](/zh-TW/memory#organize-rules-with-clauderules) 檔案。112 **經驗法則:** 保持 CLAUDE.md 在 200 行以下。如果它在增長,將參考內容移動到 skills 或拆分為 [`.claude/rules/`](/zh-TW/memory#organize-rules-with-claude%2Frules%2F) 檔案。

113 </Tab>113 </Tab>

114 114 

115 <Tab title="CLAUDE.md vs Rules vs Skills">115 <Tab title="CLAUDE.md vs Rules vs Skills">


198 198 

199功能可以在多個級別定義:使用者範圍、每個專案、通過 plugins,或通過受管理的策略。您也可以在子目錄中嵌套 CLAUDE.md 檔案,或在 monorepo 的特定套件中放置 skills。當相同的功能存在於多個級別時,以下是它們的分層方式:199功能可以在多個級別定義:使用者範圍、每個專案、通過 plugins,或通過受管理的策略。您也可以在子目錄中嵌套 CLAUDE.md 檔案,或在 monorepo 的特定套件中放置 skills。當相同的功能存在於多個級別時,以下是它們的分層方式:

200 200 

201* **CLAUDE.md 檔案** 是累加的:所有級別同時對 Claude 的上下文貢獻內容。來自您的工作目錄及以上的檔案在啟動時載入;子目錄在您在其中工作時載入。當指令衝突時,Claude 使用判斷來協調它們,更具體的指令通常優先。請參閱 [CLAUDE.md 檔案如何載入](/zh-TW/memory#how-claudemd-files-load)。201* **CLAUDE.md 檔案** 是累加的:所有級別同時對 Claude 的上下文貢獻內容。來自您的工作目錄及以上的檔案在啟動時載入;子目錄在您在其中工作時載入。當指令衝突時,Claude 使用判斷來協調它們,更具體的指令通常優先。請參閱 [CLAUDE.md 檔案如何載入](/zh-TW/memory#how-claude-md-files-load)。

202* **Skills 和 subagents** 按名稱覆蓋:當相同名稱存在於多個級別時,一個定義根據優先級獲勝(skills 為受管理 > 使用者 > 專案;subagents 為受管理 > CLI 標誌 > 專案 > 使用者 > plugin)。Plugin skills 是[命名空間](/zh-TW/plugins#add-skills-to-your-plugin)的,以避免衝突。請參閱 [skill 發現](/zh-TW/skills#where-skills-live) 和 [subagent 範圍](/zh-TW/sub-agents#choose-the-subagent-scope)。202* **Skills 和 subagents** 按名稱覆蓋:當相同名稱存在於多個級別時,一個定義根據優先級獲勝(skills 為受管理 > 使用者 > 專案;subagents 為受管理 > CLI 標誌 > 專案 > 使用者 > plugin)。Plugin skills 是[命名空間](/zh-TW/plugins#add-skills-to-your-plugin)的,以避免衝突。請參閱 [skill 發現](/zh-TW/skills#where-skills-live) 和 [subagent 範圍](/zh-TW/sub-agents#choose-the-subagent-scope)。

203* **MCP 伺服器** 按名稱覆蓋:本地 > 專案 > 使用者。請參閱 [MCP 範圍](/zh-TW/mcp#scope-hierarchy-and-precedence)。203* **MCP 伺服器** 按名稱覆蓋:本地 > 專案 > 使用者。請參閱 [MCP 範圍](/zh-TW/mcp#scope-hierarchy-and-precedence)。

204* **Hooks** 合併:所有註冊的 hooks 為其匹配事件觸發,無論來源如何。請參閱 [hooks](/zh-TW/hooks-guide)。204* **Hooks** 合併:所有註冊的 hooks 為其匹配事件觸發,無論來源如何。請參閱 [hooks](/zh-TW/hooks-guide)。


255 255 

256 **什麼載入:** 所有 CLAUDE.md 檔案的完整內容(受管理、使用者和專案級別)。256 **什麼載入:** 所有 CLAUDE.md 檔案的完整內容(受管理、使用者和專案級別)。

257 257 

258 **繼承:** Claude 從您的工作目錄讀取 CLAUDE.md 檔案直到根目錄,並在訪問這些檔案時在子目錄中發現嵌套的檔案。有關詳細資訊,請參閱 [CLAUDE.md 檔案如何載入](/zh-TW/memory#how-claudemd-files-load)。258 **繼承:** Claude 從您的工作目錄讀取 CLAUDE.md 檔案直到根目錄,並在訪問這些檔案時在子目錄中發現嵌套的檔案。有關詳細資訊,請參閱 [CLAUDE.md 檔案如何載入](/zh-TW/memory#how-claude-md-files-load)。

259 259 

260 <Tip>保持 CLAUDE.md 在 200 行以下。將參考資料移動到 skills,它們按需載入。</Tip>260 <Tip>保持 CLAUDE.md 在 200 行以下。將參考資料移動到 skills,它們按需載入。</Tip>

261 </Tab>261 </Tab>

fullscreen.md +23 −4

Details

104export CLAUDE_CODE_SCROLL_SPEED=3104export CLAUDE_CODE_SCROLL_SPEED=3

105```105```

106 106 

107值 `3` 符合 `vim` 和類似應用程式中的預設值。該設定接受 1 到 20 的值。107值 `3` 符合 `vim` 和類似應用程式中的預設值。該設定接受 1 到 20 的值,以及低於 1 的分數值(例如 `0.5`)以減緩終端上原本放大的加速觸控板和滾輪捲動

108 108 

109若要以互動方式調整捲動速度,請執行 `/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 終端中不可用。

110 110 

111另外,Claude Code 會在您快速旋轉滾輪時加速捲動速率,因此快速旋轉覆蓋的距離比相同數量的慢凹口更遠。若要關閉加速並保持每個凹口的恆定速率,請在 [`settings.json`](/zh-TW/settings#available-settings) 中將 `wheelScrollAccelerationEnabled` 設定為 `false`。此設定需要 Claude Code v2.1.174 或更新版本。

112 

111<h3 id="scroll-in-the-jetbrains-ide-terminal">113<h3 id="scroll-in-the-jetbrains-ide-terminal">

112 JetBrains IDE 終端中的捲動114 JetBrains IDE 終端中的捲動

113</h3>115</h3>


169 保持原生文字選擇171 保持原生文字選擇

170</h2>172</h2>

171 173 

172滑鼠捕捉是最常見的摩擦點,特別是在 SSH 上或 tmux 內。當 Claude Code 捕捉滑鼠事件時,您的終端的原生選擇時複製停止運作。您使用點擊並拖曳進行的選擇存在於 Claude Code 內,而不是在您的終端的選擇緩衝區中,因此 tmux 複製模式、Kitty 提示和類似工具看不到它。174滑鼠捕捉是最常見的摩擦點,特別是在 SSH 上或 tmux 內。當 Claude Code 捕捉滑鼠事件時,您的終端的原生複製選擇停止運作。您使用點擊並拖曳進行的選擇存在於 Claude Code 內,而不是在您的終端的選擇緩衝區中,因此 tmux 複製模式、Kitty 提示和類似工具看不到它。

175 

176Claude Code 將選擇寫入您的系統剪貼簿,它使用的路徑取決於您的設定。在本機工作階段上,它執行原生剪貼簿工具:

177 

178* **macOS**: `pbcopy`

179* **Linux**: Wayland 上的 `wl-copy`,或 X11 上已安裝的 `xclip` 或 `xsel`。Claude Code 同時寫入剪貼簿和 PRIMARY 選擇,因此中鍵貼上可以運作。

180* **Windows 和 WSL**: PowerShell `Set-Clipboard`

181 

182在 tmux 內,它也寫入 tmux 貼上緩衝區。在 SSH 上,它回退到 OSC 52 逃逸序列。Claude Code 在每次複製後列印一個快顯通知,告訴您它使用了哪個路徑。

183 

184某些終端預設會阻止 OSC 52。iTerm2 會阻止它,直到您開啟 Settings → General → Selection → Applications in terminal may access clipboard;在 iTerm2 中執行 [`/terminal-setup`](/zh-TW/terminal-config) 會為您啟用此功能。

185 

186如果您想進行一次性的原生選擇,要使用的按鍵取決於您的終端:

187 

188* **Terminal.app**: `Fn`

189* **iTerm2**: `Option`

190* **VS Code、Cursor 和 Devin Desktop**: `Shift`,或在啟用 `terminal.integrated.macOptionClickForcesSelection` 設定的 macOS 上使用 `Option`

191* **大多數其他終端**: `Shift`

173 192 

174Claude Code 嘗試將選擇寫入您的剪貼簿,但它使用的路徑取決於您的設定。在 tmux 內,它寫入 tmux 貼上緩衝區在 SSH 上它回退到 OSC 52 逃逸序列,某些終端預設會阻止這些序列。iTerm2 會阻止它們直到您開啟 Settings → General → Selection → Applications in terminal may access clipboard。在 iTerm2 中執行 [`/terminal-setup`](/zh-TW/terminal-config) 會為您啟用此功能。Claude Code 在每次複製後列印一個快顯通知,告訴您它使用了哪個路徑193按住該按鍵同時點擊並拖曳您的終端自己處理選擇而不是將其傳遞給 Claude Code因此複製快捷鍵如 `Cmd+C` 可以在您選擇的內容上運作。Claude Code 也會在其螢幕上的提示中顯示正確的按鍵

175 194 

176如果您想進行一次性的原生選擇,請在點擊並拖曳時按住您的終端的略過修飾鍵:iTerm2 中的 `Option`,或大多數 Linux Windows 終端中的 `Shift`。修飾鍵告訴您的終端自己處理選擇而不是將滑鼠事件轉發給 Claude Code,因此 `Cmd+C` 和您的終端的其他複製快捷鍵可以在其上運作195 SSH 上或 tmux ,Claude Code 無法總是偵測您連接的終端,因此提示會列出候選按鍵

177 196 

178如果您一直依賴原生選擇,請設定 `CLAUDE_CODE_DISABLE_MOUSE=1` 以選擇退出滑鼠捕捉,同時保持無閃爍渲染和平穩記憶體:197如果您一直依賴原生選擇,請設定 `CLAUDE_CODE_DISABLE_MOUSE=1` 以選擇退出滑鼠捕捉,同時保持無閃爍渲染和平穩記憶體:

179 198 

github-actions.md +102 −38

Details

12 Claude Code GitHub Actions 建立在 [Claude Agent SDK](/zh-TW/agent-sdk/overview) 之上,該 SDK 可實現 Claude Code 與您的應用程式的程式化整合。您可以使用 SDK 來建立超越 GitHub Actions 的自訂自動化工作流程。12 Claude Code GitHub Actions 建立在 [Claude Agent SDK](/zh-TW/agent-sdk/overview) 之上,該 SDK 可實現 Claude Code 與您的應用程式的程式化整合。您可以使用 SDK 來建立超越 GitHub Actions 的自訂自動化工作流程。

13</Note>13</Note>

14 14 

15<Info>15<h2 id="why-use-claude-code-github-actions">

16 **Claude Opus 4.8 現已推出。** Claude Code GitHub Actions 預設使用 Sonnet。若要使用 Opus 4.8,請設定 [model 參數](#breaking-changes-reference)以使用 `claude-opus-4-8`。16 為什麼使用 Claude Code GitHub Actions

17</Info>17</h2>

18 

19## 為什麼使用 Claude Code GitHub Actions?

20 18 

21* **即時 PR 建立**:描述您需要的內容,Claude 會建立包含所有必要變更的完整 PR19* **即時 PR 建立**:描述您需要的內容,Claude 會建立包含所有必要變更的完整 PR

22* **自動化程式碼實現**:使用單一命令將議題轉換為可運作的程式碼20* **自動化程式碼實現**:使用單一命令將議題轉換為可運作的程式碼


24* **簡單設定**:使用我們的安裝程式和 API 金鑰在幾分鐘內開始使用22* **簡單設定**:使用我們的安裝程式和 API 金鑰在幾分鐘內開始使用

25* **預設安全**:您的程式碼保留在 Github 的執行器上23* **預設安全**:您的程式碼保留在 Github 的執行器上

26 24 

27## Claude 可以做什麼?25<h2 id="what-can-claude-do">

26 Claude 可以做什麼?

27</h2>

28 28 

29Claude Code 提供了一個強大的 GitHub Action,改變了您使用程式碼的方式:29Claude Code 提供了一個強大的 GitHub Action,改變了您使用程式碼的方式:

30 30 

31### Claude Code Action31<h3 id="claude-code-action">

32 Claude Code Action

33</h3>

32 34 

33此 GitHub Action 允許您在 GitHub Actions 工作流程中執行 Claude Code。您可以使用此功能在 Claude Code 之上建立任何自訂工作流程。35此 GitHub Action 允許您在 GitHub Actions 工作流程中執行 Claude Code。您可以使用此功能在 Claude Code 之上建立任何自訂工作流程。

34 36 

35[檢視儲存庫 →](https://github.com/anthropics/claude-code-action)37[檢視儲存庫 →](https://github.com/anthropics/claude-code-action)

36 38 

37## 設定39<h2 id="setup">

40 設定

41</h2>

38 42 

39## 快速設定43<h2 id="quick-setup">

44 快速設定

45</h2>

40 46 

41設定此 action 的最簡單方法是透過終端機中的 Claude Code。只需開啟 claude 並執行 `/install-github-app`。47設定此 action 的最簡單方法是透過終端機中的 Claude Code。只需開啟 claude 並執行 `/install-github-app`。

42 48 


48 * 此快速入門方法僅適用於直接 Claude API 使用者。如果您使用 Amazon Bedrock 或 Google Vertex AI,請參閱 [使用 Amazon Bedrock 和 Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai) 部分。54 * 此快速入門方法僅適用於直接 Claude API 使用者。如果您使用 Amazon Bedrock 或 Google Vertex AI,請參閱 [使用 Amazon Bedrock 和 Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai) 部分。

49</Note>55</Note>

50 56 

51## 手動設定57<h2 id="manual-setup">

58 手動設定

59</h2>

52 60 

53如果 `/install-github-app` 命令失敗或您偏好手動設定,請遵循以下手動設定說明:61如果 `/install-github-app` 命令失敗或您偏好手動設定,請遵循以下手動設定說明:

54 62 


68 完成快速入門或手動設定後,透過在議題或 PR 評論中標記 `@claude` 來測試 action。76 完成快速入門或手動設定後,透過在議題或 PR 評論中標記 `@claude` 來測試 action。

69</Tip>77</Tip>

70 78 

71## 從 Beta 升級79<h2 id="upgrading-from-beta">

80 從 Beta 升級

81</h2>

72 82 

73<Warning>83<Warning>

74 Claude Code GitHub Actions v1.0 引入了重大變更,需要更新您的工作流程檔案才能從 beta 版本升級到 v1.0。84 Claude Code GitHub Actions v1.0 引入了重大變更,需要更新您的工作流程檔案才能從 beta 版本升級到 v1.0。


76 86 

77如果您目前使用 Claude Code GitHub Actions 的 beta 版本,我們建議您更新工作流程以使用 GA 版本。新版本簡化了設定,同時新增了強大的新功能,如自動模式偵測。87如果您目前使用 Claude Code GitHub Actions 的 beta 版本,我們建議您更新工作流程以使用 GA 版本。新版本簡化了設定,同時新增了強大的新功能,如自動模式偵測。

78 88 

79### 基本變更89<h3 id="essential-changes">

90 基本變更

91</h3>

80 92 

81所有 beta 使用者必須對其工作流程檔案進行這些變更才能升級:93所有 beta 使用者必須對其工作流程檔案進行這些變更才能升級:

82 94 


853. **更新提示輸入**:將 `direct_prompt` 替換為 `prompt`973. **更新提示輸入**:將 `direct_prompt` 替換為 `prompt`

864. **移動 CLI 選項**:將 `max_turns`、`model`、`custom_instructions` 等轉換為 `claude_args`984. **移動 CLI 選項**:將 `max_turns`、`model`、`custom_instructions` 等轉換為 `claude_args`

87 99 

88### 重大變更參考100<h3 id="breaking-changes-reference">

101 重大變更參考

102</h3>

89 103 

90| 舊 Beta 輸入 | 新 v1.0 輸入 |104| 舊 Beta 輸入 | 新 v1.0 輸入 |

91| --------------------- | ------------------------------------- |105| --------------------- | ------------------------------------- |


99| `disallowed_tools` | `claude_args: --disallowedTools` |113| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` JSON 格式 |114| `claude_env` | `settings` JSON 格式 |

101 115 

102### 前後範例116<h3 id="before-and-after-example">

117 前後範例

118</h3>

103 119 

104**Beta 版本:**120**Beta 版本:**

105 121 


131 該 action 現在會根據您的設定自動偵測是否在互動模式(回應 `@claude` 提及)或自動化模式(立即使用提示執行)中執行。147 該 action 現在會根據您的設定自動偵測是否在互動模式(回應 `@claude` 提及)或自動化模式(立即使用提示執行)中執行。

132</Tip>148</Tip>

133 149 

134## 範例使用案例150<h2 id="example-use-cases">

151 範例使用案例

152</h2>

135 153 

136Claude Code GitHub Actions 可以幫助您完成各種任務。[examples 目錄](https://github.com/anthropics/claude-code-action/tree/main/examples)包含適用於不同情境的現成工作流程。154Claude Code GitHub Actions 可以幫助您完成各種任務。[examples 目錄](https://github.com/anthropics/claude-code-action/tree/main/examples)包含適用於不同情境的現成工作流程。

137 155 

138### 基本工作流程156<h3 id="basic-workflow">

157 基本工作流程

158</h3>

139 159 

140```yaml theme={null}160```yaml theme={null}

141name: Claude Code161name: Claude Code


154 # Responds to @claude mentions in comments174 # Responds to @claude mentions in comments

155```175```

156 176 

157### 使用 skills177<h3 id="using-skills">

178 使用 skills

179</h3>

158 180 

159`prompt` 輸入接受 [skill](/zh-TW/skills) 調用以及純文本:181`prompt` 輸入接受 [skill](/zh-TW/skills) 調用以及純文本:

160 182 


180 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"202 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

181```203```

182 204 

183### 使用提示的自訂自動化205<h3 id="custom-automation-with-prompts">

206 使用提示的自訂自動化

207</h3>

184 208 

185```yaml theme={null}209```yaml theme={null}

186name: Daily Report210name: Daily Report


198 claude_args: "--model opus"222 claude_args: "--model opus"

199```223```

200 224 

201### 常見使用案例225<h3 id="common-use-cases">

226 常見使用案例

227</h3>

202 228 

203在議題或 PR 評論中:229在議題或 PR 評論中:

204 230 


210 236 

211Claude 將自動分析上下文並做出適當的回應。237Claude 將自動分析上下文並做出適當的回應。

212 238 

213## 最佳實踐239<h2 id="best-practices">

240 最佳實踐

241</h2>

214 242 

215### CLAUDE.md 設定243<h3 id="claude-md-configuration">

244 CLAUDE.md 設定

245</h3>

216 246 

217在您的儲存庫根目錄建立 `CLAUDE.md` 檔案,以定義程式碼風格指南、審查標準、專案特定規則和偏好的模式。此檔案指導 Claude 對您的專案標準的理解。247在您的儲存庫根目錄建立 `CLAUDE.md` 檔案,以定義程式碼風格指南、審查標準、專案特定規則和偏好的模式。此檔案指導 Claude 對您的專案標準的理解。

218 248 

219### 安全考量249<h3 id="security-considerations">

250 安全考量

251</h3>

220 252 

221<Warning>永遠不要直接將 API 金鑰提交到您的儲存庫。</Warning>253<Warning>永遠不要直接將 API 金鑰提交到您的儲存庫。</Warning>

222 254 


231 263 

232始終使用 GitHub Secrets(例如 `${{ secrets.ANTHROPIC_API_KEY }}`)而不是直接在工作流程檔案中硬編碼 API 金鑰。264始終使用 GitHub Secrets(例如 `${{ secrets.ANTHROPIC_API_KEY }}`)而不是直接在工作流程檔案中硬編碼 API 金鑰。

233 265 

234### 最佳化效能266<h3 id="optimizing-performance">

267 最佳化效能

268</h3>

235 269 

236使用議題範本提供上下文,保持您的 `CLAUDE.md` 簡潔且專注,並為您的工作流程設定適當的逾時。270使用議題範本提供上下文,保持您的 `CLAUDE.md` 簡潔且專注,並為您的工作流程設定適當的逾時。

237 271 

238### CI 成本272<h3 id="ci-costs">

273 CI 成本

274</h3>

239 275 

240使用 Claude Code GitHub Actions 時,請注意相關成本:276使用 Claude Code GitHub Actions 時,請注意相關成本:

241 277 


257* 設定工作流程級別的逾時以避免失控的工作293* 設定工作流程級別的逾時以避免失控的工作

258* 考慮使用 GitHub 的並行控制來限制平行執行294* 考慮使用 GitHub 的並行控制來限制平行執行

259 295 

260## 設定範例296<h2 id="configuration-examples">

297 設定範例

298</h2>

261 299 

262Claude Code Action v1 使用統一參數簡化了設定:300Claude Code Action v1 使用統一參數簡化了設定:

263 301 


282 當回應議題或 PR 評論時,Claude 會自動回應 @claude 提及。對於其他事件,使用 `prompt` 參數來提供指令。320 當回應議題或 PR 評論時,Claude 會自動回應 @claude 提及。對於其他事件,使用 `prompt` 參數來提供指令。

283</Tip>321</Tip>

284 322 

285## 使用 Amazon Bedrock 和 Google Vertex AI323<h2 id="using-with-amazon-bedrock--google-vertex-ai">

324 使用 Amazon Bedrock 和 Google Vertex AI

325</h2>

286 326 

287對於企業環境,您可以使用 Claude Code GitHub Actions 搭配您自己的雲端基礎設施。此方法讓您可以控制資料駐留和計費,同時保持相同的功能。327對於企業環境,您可以使用 Claude Code GitHub Actions 搭配您自己的雲端基礎設施。此方法讓您可以控制資料駐留和計費,同時保持相同的功能。

288 328 

289### 先決條件329<h3 id="prerequisites">

330 先決條件

331</h3>

290 332 

291在使用雲端提供者設定 Claude Code GitHub Actions 之前,您需要:333在使用雲端提供者設定 Claude Code GitHub Actions 之前,您需要:

292 334 

293#### 對於 Google Cloud Vertex AI:335<h4 id="for-google-cloud-vertex-ai">

336 對於 Google Cloud Vertex AI:

337</h4>

294 338 

2951. 啟用了 Vertex AI 的 Google Cloud 專案3391. 啟用了 Vertex AI 的 Google Cloud 專案

2962. 為 GitHub Actions 設定的工作負載身份聯盟3402. 為 GitHub Actions 設定的工作負載身份聯盟

2973. 具有所需權限的服務帳戶3413. 具有所需權限的服務帳戶

2984. GitHub App(建議)或使用預設 GITHUB\_TOKEN3424. GitHub App(建議)或使用預設 GITHUB\_TOKEN

299 343 

300#### 對於 Amazon Bedrock:344<h4 id="for-amazon-bedrock">

345 對於 Amazon Bedrock:

346</h4>

301 347 

3021. 啟用了 Amazon Bedrock 的 AWS 帳戶3481. 啟用了 Amazon Bedrock 的 AWS 帳戶

3032. 在 AWS 中設定的 GitHub OIDC 身份提供者3492. 在 AWS 中設定的 GitHub OIDC 身份提供者


609 </Step>655 </Step>

610</Steps>656</Steps>

611 657 

612## 故障排除658<h2 id="troubleshooting">

659 故障排除

660</h2>

613 661 

614### Claude 不回應 @claude 命令662<h3 id="claude-not-responding-to-claude-commands">

663 Claude 不回應 @claude 命令

664</h3>

615 665 

616驗證 GitHub App 是否正確安裝,檢查工作流程是否已啟用,確保 API 金鑰已在儲存庫密鑰中設定,並確認評論包含 `@claude`(不是 `/claude`)。666驗證 GitHub App 是否正確安裝,檢查工作流程是否已啟用,確保 API 金鑰已在儲存庫密鑰中設定,並確認評論包含 `@claude`(不是 `/claude`)。

617 667 

618### CI 不在 Claude 的提交上執行668<h3 id="ci-not-running-on-claude’s-commits">

669 CI 不在 Claude 的提交上執行

670</h3>

619 671 

620確保您使用的是 GitHub App 或自訂 app(不是 Actions 使用者),檢查工作流程觸發器是否包括必要的事件,並驗證 app 權限是否包括 CI 觸發器。672確保您使用的是 GitHub App 或自訂 app(不是 Actions 使用者),檢查工作流程觸發器是否包括必要的事件,並驗證 app 權限是否包括 CI 觸發器。

621 673 

622### 身份驗證錯誤674<h3 id="authentication-errors">

675 身份驗證錯誤

676</h3>

623 677 

624確認 API 金鑰有效且具有足夠的權限。對於 Bedrock/Vertex,檢查認證設定並確保密鑰在工作流程中命名正確。678確認 API 金鑰有效且具有足夠的權限。對於 Bedrock/Vertex,檢查認證設定並確保密鑰在工作流程中命名正確。

625 679 

626## 進階設定680<h2 id="advanced-configuration">

681 進階設定

682</h2>

627 683 

628### Action 參數684<h3 id="action-parameters">

685 Action 參數

686</h3>

629 687 

630Claude Code Action v1 使用簡化的設定:688Claude Code Action v1 使用簡化的設定:

631 689 


644\*提示是可選的 - 當在議題/PR 評論中省略時,Claude 回應觸發短語\702\*提示是可選的 - 當在議題/PR 評論中省略時,Claude 回應觸發短語\

645\*\*對於直接 Claude API 是必需的,對於 Bedrock/Vertex 不是必需的703\*\*對於直接 Claude API 是必需的,對於 Bedrock/Vertex 不是必需的

646 704 

647#### 傳遞 CLI 引數705<h4 id="pass-cli-arguments">

706 傳遞 CLI 引數

707</h4>

648 708 

649`claude_args` 參數接受任何 Claude Code CLI 引數:709`claude_args` 參數接受任何 Claude Code CLI 引數:

650 710 


660* `--allowedTools`:允許的工具的逗號分隔清單。`--allowed-tools` 別名也可以使用。720* `--allowedTools`:允許的工具的逗號分隔清單。`--allowed-tools` 別名也可以使用。

661* `--debug`:啟用偵錯輸出721* `--debug`:啟用偵錯輸出

662 722 

663### 替代整合方法723<h3 id="alternative-integration-methods">

724 替代整合方法

725</h3>

664 726 

665雖然 `/install-github-app` 命令是推薦的方法,但您也可以:727雖然 `/install-github-app` 命令是推薦的方法,但您也可以:

666 728 


670 732 

671請參閱 [Claude Code Action 文件](https://github.com/anthropics/claude-code-action/blob/main/docs)以取得有關身份驗證、安全性和進階設定的詳細指南。733請參閱 [Claude Code Action 文件](https://github.com/anthropics/claude-code-action/blob/main/docs)以取得有關身份驗證、安全性和進階設定的詳細指南。

672 734 

673### 自訂 Claude 的行為735<h3 id="customizing-claude’s-behavior">

736 自訂 Claude 的行為

737</h3>

674 738 

675您可以透過兩種方式自訂 Claude 的行為:739您可以透過兩種方式自訂 Claude 的行為:

676 740 

Details

143有關構建市場的完整指南,請參閱 [Create and distribute a plugin marketplace](/zh-TW/plugin-marketplaces)。143有關構建市場的完整指南,請參閱 [Create and distribute a plugin marketplace](/zh-TW/plugin-marketplaces)。

144 144 

145<h3 id="allowlist-ghes-marketplaces-in-managed-settings">145<h3 id="allowlist-ghes-marketplaces-in-managed-settings">

146 在託管設置中將 GHES 市場列入白名單146 在託管設定中將 GHES 市場列入白名單

147</h3>147</h3>

148 148 

149如果您的組織使用 [託管設置](/zh-TW/settings) 來限制開發人員可以添加的市場,請使用 `hostPattern` 源類型來允許來自您的 GHES 實例的所有市場,而無需列舉每個存儲庫:149如果您的組織使用 [託管設定](/zh-TW/settings) 來限制開發人員可以添加的市場,請使用 `hostPattern` 源類型來允許來自您的 GHES 實例的所有市場,而無需列舉每個存儲庫:

150 150 

151```json theme={null}151```json theme={null}

152{152{


159}159}

160```160```

161 161 

162您也可以為開發人員預先註冊市場,以便它們無需手動設置即可顯示。此示例使內部工具市場在整個組織中可用:162您也可以為開發人員預先註冊市場,以便它們無需手動設定即可顯示。此示例使內部工具市場在整個組織中可用:

163 163 

164```json theme={null}164```json theme={null}

165{165{


174}174}

175```175```

176 176 

177有關完整的架構,請參閱 [strictKnownMarketplaces](/zh-TW/settings#strictknownmarketplaces) 和 [extraKnownMarketplaces](/zh-TW/settings#extraknownmarketplaces) 設置參考177有關完整的架構,請參閱 [strictKnownMarketplaces](/zh-TW/settings#strictknownmarketplaces) 和 [extraKnownMarketplaces](/zh-TW/settings#extraknownmarketplaces) 設定參考

178 178 

179<h2 id="limitations">179<h2 id="limitations">

180 限制180 限制


205 GHES 實例無法訪問205 GHES 實例無法訪問

206</h3>206</h3>

207 207 

208如果審查或網頁會話超時,您的 GHES 實例可能無法從 Anthropic 基礎設施訪問。確認您的防火牆允許來自 [Anthropic API IP 地址](https://platform.claude.com/docs/en/api/ip-addresses) 的入站連接。208如果審查或網頁會話超時,您的 GHES 實例可能無法從 Anthropic 基礎設施訪問。確認您的防火牆允許來自 [Anthropic API IP 地址](https://platform.claude.com/docs/zh-TW/api/ip-addresses) 的入站連接。

209 209 

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

211 相關資源211 相關資源

gitlab-ci-cd.md +85 −29

Details

16 此整合建立在 [Claude Code CLI and Agent SDK](/zh-TW/agent-sdk/overview) 之上,可在您的 CI/CD 工作和自訂自動化工作流程中以程式設計方式使用 Claude。16 此整合建立在 [Claude Code CLI and Agent SDK](/zh-TW/agent-sdk/overview) 之上,可在您的 CI/CD 工作和自訂自動化工作流程中以程式設計方式使用 Claude。

17</Note>17</Note>

18 18 

19## 為什麼要在 GitLab 中使用 Claude Code?19<h2 id="why-use-claude-code-with-gitlab">

20 為什麼要在 GitLab 中使用 Claude Code?

21</h2>

20 22 

21* **即時 MR 建立**:描述您需要的內容,Claude 會提出完整的 MR,包括變更和說明23* **即時 MR 建立**:描述您需要的內容,Claude 會提出完整的 MR,包括變更和說明

22* **自動化實現**:使用單一命令或提及將問題轉變為可運作的程式碼24* **自動化實現**:使用單一命令或提及將問題轉變為可運作的程式碼


25* **企業就緒**:選擇 Claude API、Amazon Bedrock 或 Google Vertex AI 以滿足資料駐留和採購需求27* **企業就緒**:選擇 Claude API、Amazon Bedrock 或 Google Vertex AI 以滿足資料駐留和採購需求

26* **預設安全**:在您的 GitLab runners 中執行,具有您的分支保護和核准28* **預設安全**:在您的 GitLab runners 中執行,具有您的分支保護和核准

27 29 

28## 運作方式30<h2 id="how-it-works">

31 運作方式

32</h2>

29 33 

30Claude Code 使用 GitLab CI/CD 在隔離的工作中執行 AI 任務,並透過 MR 將結果提交回去:34Claude Code 使用 GitLab CI/CD 在隔離的工作中執行 AI 任務,並透過 MR 將結果提交回去:

31 35 


40 44 

41選擇區域端點以減少延遲並滿足資料主權要求,同時使用現有的雲端協議。45選擇區域端點以減少延遲並滿足資料主權要求,同時使用現有的雲端協議。

42 46 

43## Claude 可以做什麼?47<h2 id="what-can-claude-do">

48 Claude 可以做什麼?

49</h2>

44 50 

45Claude Code 啟用強大的 CI/CD 工作流程,改變您與程式碼的互動方式:51Claude Code 啟用強大的 CI/CD 工作流程,改變您與程式碼的互動方式:

46 52 


50* 修復由測試或評論識別的錯誤和回歸56* 修復由測試或評論識別的錯誤和回歸

51* 回應後續評論以反覆進行請求的變更57* 回應後續評論以反覆進行請求的變更

52 58 

53## 設定59<h2 id="setup">

60 設定

61</h2>

54 62 

55### 快速設定63<h3 id="quick-setup">

64 快速設定

65</h3>

56 66 

57最快的入門方式是在您的 `.gitlab-ci.yml` 中新增最小工作,並將您的 API 金鑰設定為遮罩變數。67最快的入門方式是在您的 `.gitlab-ci.yml` 中新增最小工作,並將您的 API 金鑰設定為遮罩變數。

58 68 


98新增工作和您的 `ANTHROPIC_API_KEY` 變數後,透過 **CI/CD** → **Pipelines** 手動執行工作進行測試,或從 MR 觸發它,讓 Claude 在分支中提出更新並在需要時開啟 MR。108新增工作和您的 `ANTHROPIC_API_KEY` 變數後,透過 **CI/CD** → **Pipelines** 手動執行工作進行測試,或從 MR 觸發它,讓 Claude 在分支中提出更新並在需要時開啟 MR。

99 109 

100<Note>110<Note>

101 若要改為在 Amazon Bedrock 或 Google Vertex AI 上執行而不是 Claude API,請參閱下方的 [Using with Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock--google-vertex-ai) 部分,了解驗證和環境設定。111 若要改為在 Amazon Bedrock 或 Google Vertex AI 上執行而不是 Claude API,請參閱下方的 [Using with Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai) 部分,了解驗證和環境設定。

102</Note>112</Note>

103 113 

104### 手動設定(建議用於生產)114<h3 id="manual-setup-recommended-for-production">

115 手動設定(建議用於生產)

116</h3>

105 117 

106如果您偏好更受控的設定或需要企業提供者:118如果您偏好更受控的設定或需要企業提供者:

107 119 


120 * 為「Comments (notes)」新增專案 webhook 到您的事件監聽器(如果您使用的話)132 * 為「Comments (notes)」新增專案 webhook 到您的事件監聽器(如果您使用的話)

121 * 當評論包含 `@claude` 時,讓監聽器使用 `AI_FLOW_INPUT` 和 `AI_FLOW_CONTEXT` 等變數呼叫管道觸發 API133 * 當評論包含 `@claude` 時,讓監聽器使用 `AI_FLOW_INPUT` 和 `AI_FLOW_CONTEXT` 等變數呼叫管道觸發 API

122 134 

123## 範例使用案例135<h2 id="example-use-cases">

136 範例使用案例

137</h2>

124 138 

125### 將問題轉變為 MR139<h3 id="turn-issues-into-mrs">

140 將問題轉變為 MR

141</h3>

126 142 

127在問題評論中:143在問題評論中:

128 144 


132 148 

133Claude 分析問題和程式碼庫,在分支中寫入變更,並開啟 MR 供審查。149Claude 分析問題和程式碼庫,在分支中寫入變更,並開啟 MR 供審查。

134 150 

135### 獲得實現幫助151<h3 id="get-implementation-help">

152 獲得實現幫助

153</h3>

136 154 

137在 MR 討論中:155在 MR 討論中:

138 156 


142 160 

143Claude 提出變更,新增具有適當快取的程式碼,並更新 MR。161Claude 提出變更,新增具有適當快取的程式碼,並更新 MR。

144 162 

145### 快速修復錯誤163<h3 id="fix-bugs-quickly">

164 快速修復錯誤

165</h3>

146 166 

147在問題或 MR 評論中:167在問題或 MR 評論中:

148 168 


152 172 

153Claude 定位錯誤,實現修復,並更新分支或開啟新的 MR。173Claude 定位錯誤,實現修復,並更新分支或開啟新的 MR。

154 174 

155## 使用 Amazon Bedrock 和 Google Vertex AI175<h2 id="using-with-amazon-bedrock--google-vertex-ai">

176 使用 Amazon Bedrock 和 Google Vertex AI

177</h2>

156 178 

157對於企業環境,您可以在您的雲端基礎設施上完全執行 Claude Code,具有相同的開發人員體驗。179對於企業環境,您可以在您的雲端基礎設施上完全執行 Claude Code,具有相同的開發人員體驗。

158 180 


238 </Tab>260 </Tab>

239</Tabs>261</Tabs>

240 262 

241## 設定範例263<h2 id="configuration-examples">

264 設定範例

265</h2>

242 266 

243以下是您可以調整到您的管道的現成程式碼片段。267以下是您可以調整到您的管道的現成程式碼片段。

244 268 

245### 基本 .gitlab-ci.yml (Claude API)269<h3 id="basic-gitlab-ci-yml-claude-api">

270 基本 .gitlab-ci.yml (Claude API)

271</h3>

246 272 

247```yaml theme={null}273```yaml theme={null}

248stages:274stages:


271 # Claude Code 將使用 CI/CD 變數中的 ANTHROPIC_API_KEY297 # Claude Code 將使用 CI/CD 變數中的 ANTHROPIC_API_KEY

272```298```

273 299 

274### Amazon Bedrock 工作範例 (OIDC)300<h3 id="amazon-bedrock-job-example-oidc">

301 Amazon Bedrock 工作範例 (OIDC)

302</h3>

275 303 

276**先決條件:**304**先決條件:**

277 305 


322 Bedrock 的模型 ID 包括區域特定的前綴(例如,`us.anthropic.claude-sonnet-4-6`)。如果您的工作流程支援,透過您的工作設定或提示傳遞所需的模型。350 Bedrock 的模型 ID 包括區域特定的前綴(例如,`us.anthropic.claude-sonnet-4-6`)。如果您的工作流程支援,透過您的工作設定或提示傳遞所需的模型。

323</Note>351</Note>

324 352 

325### Google Vertex AI 工作範例 (Workload Identity Federation)353<h3 id="google-vertex-ai-job-example-workload-identity-federation">

354 Google Vertex AI 工作範例 (Workload Identity Federation)

355</h3>

326 356 

327**先決條件:**357**先決條件:**

328 358 


375 使用 Workload Identity Federation,您不需要儲存服務帳戶金鑰。使用儲存庫特定的信任條件和最小權限服務帳戶。405 使用 Workload Identity Federation,您不需要儲存服務帳戶金鑰。使用儲存庫特定的信任條件和最小權限服務帳戶。

376</Note>406</Note>

377 407 

378## 最佳實踐408<h2 id="best-practices">

409 最佳實踐

410</h2>

379 411 

380### CLAUDE.md 設定412<h3 id="claude-md-configuration">

413 CLAUDE.md 設定

414</h3>

381 415 

382在儲存庫根目錄建立 `CLAUDE.md` 檔案以定義編碼標準、審查標準和專案特定規則。Claude 在執行期間讀取此檔案並在提出變更時遵循您的慣例。416在儲存庫根目錄建立 `CLAUDE.md` 檔案以定義編碼標準、審查標準和專案特定規則。Claude 在執行期間讀取此檔案並在提出變更時遵循您的慣例。

383 417 

384### 安全考量418<h3 id="security-considerations">

419 安全考量

420</h3>

385 421 

386**永遠不要將 API 金鑰或雲端認證提交到您的儲存庫**。始終使用 GitLab CI/CD 變數:422**永遠不要將 API 金鑰或雲端認證提交到您的儲存庫**。始終使用 GitLab CI/CD 變數:

387 423 


390* 限制工作權限和網路出口426* 限制工作權限和網路出口

391* 像審查任何其他貢獻者一樣審查 Claude 的 MR427* 像審查任何其他貢獻者一樣審查 Claude 的 MR

392 428 

393### 最佳化效能429<h3 id="optimizing-performance">

430 最佳化效能

431</h3>

394 432 

395* 保持 `CLAUDE.md` 專注和簡潔433* 保持 `CLAUDE.md` 專注和簡潔

396* 提供清晰的問題/MR 描述以減少反覆434* 提供清晰的問題/MR 描述以減少反覆

397* 設定合理的工作逾時以避免失控執行435* 設定合理的工作逾時以避免失控執行

398* 在可能的情況下在 runners 中快取 npm 和套件安裝436* 在可能的情況下在 runners 中快取 npm 和套件安裝

399 437 

400### CI 成本438<h3 id="ci-costs">

439 CI 成本

440</h3>

401 441 

402使用 Claude Code 與 GitLab CI/CD 時,請注意相關成本:442使用 Claude Code 與 GitLab CI/CD 時,請注意相關成本:

403 443 


415 * 設定適當的 `max_turns` 和工作逾時值455 * 設定適當的 `max_turns` 和工作逾時值

416 * 限制並行以控制平行執行456 * 限制並行以控制平行執行

417 457 

418## 安全和治理458<h2 id="security-and-governance">

459 安全和治理

460</h2>

419 461 

420* 每個工作都在具有受限網路存取的隔離容器中執行462* 每個工作都在具有受限網路存取的隔離容器中執行

421* Claude 的變更透過 MR 流動,以便審查者看到每個差異463* Claude 的變更透過 MR 流動,以便審查者看到每個差異


423* Claude Code 使用工作區範圍的權限以限制寫入465* Claude Code 使用工作區範圍的權限以限制寫入

424* 成本保持在您的控制下,因為您帶來自己的提供者認證466* 成本保持在您的控制下,因為您帶來自己的提供者認證

425 467 

426## 疑難排解468<h2 id="troubleshooting">

469 疑難排解

470</h2>

427 471 

428### Claude 不回應 @claude 命令472<h3 id="claude-not-responding-to-claude-commands">

473 Claude 不回應 @claude 命令

474</h3>

429 475 

430* 驗證您的管道正在被觸發(手動、MR 事件或透過 note 事件監聽器/webhook)476* 驗證您的管道正在被觸發(手動、MR 事件或透過 note 事件監聽器/webhook)

431* 確保 CI/CD 變數(`ANTHROPIC_API_KEY` 或雲端提供者設定)存在且未遮罩477* 確保 CI/CD 變數(`ANTHROPIC_API_KEY` 或雲端提供者設定)存在且未遮罩

432* 檢查評論是否包含 `@claude`(不是 `/claude`)以及您的提及觸發器是否已設定478* 檢查評論是否包含 `@claude`(不是 `/claude`)以及您的提及觸發器是否已設定

433 479 

434### 工作無法寫入評論或開啟 MR480<h3 id="job-can’t-write-comments-or-open-mrs">

481 工作無法寫入評論或開啟 MR

482</h3>

435 483 

436* 確保 `CI_JOB_TOKEN` 對專案具有足夠的權限,或使用具有 `api` 範圍的專案存取令牌484* 確保 `CI_JOB_TOKEN` 對專案具有足夠的權限,或使用具有 `api` 範圍的專案存取令牌

437* 檢查 `mcp__gitlab` 工具是否在 `--allowedTools` 中啟用485* 檢查 `mcp__gitlab` 工具是否在 `--allowedTools` 中啟用

438* 確認工作在 MR 的上下文中執行或透過 `AI_FLOW_*` 變數有足夠的上下文486* 確認工作在 MR 的上下文中執行或透過 `AI_FLOW_*` 變數有足夠的上下文

439 487 

440### 驗證錯誤488<h3 id="authentication-errors">

489 驗證錯誤

490</h3>

441 491 

442* **對於 Claude API**:確認 `ANTHROPIC_API_KEY` 有效且未過期492* **對於 Claude API**:確認 `ANTHROPIC_API_KEY` 有效且未過期

443* **對於 Bedrock/Vertex**:驗證 OIDC/WIF 設定、角色模擬和祕密名稱;確認區域和模型可用性493* **對於 Bedrock/Vertex**:驗證 OIDC/WIF 設定、角色模擬和祕密名稱;確認區域和模型可用性

444 494 

445## 進階設定495<h2 id="advanced-configuration">

496 進階設定

497</h2>

446 498 

447### 常見參數和變數499<h3 id="common-parameters-and-variables">

500 常見參數和變數

501</h3>

448 502 

449Claude Code 支援這些常用輸入:503Claude Code 支援這些常用輸入:

450 504 


458 確切的旗標和參數可能因 `@anthropic-ai/claude-code` 的版本而異。在您的工作中執行 `claude --help` 以查看支援的選項。512 確切的旗標和參數可能因 `@anthropic-ai/claude-code` 的版本而異。在您的工作中執行 `claude --help` 以查看支援的選項。

459</Note>513</Note>

460 514 

461### 自訂 Claude 的行為515<h3 id="customizing-claude’s-behavior">

516 自訂 Claude 的行為

517</h3>

462 518 

463您可以透過兩種主要方式指導 Claude:519您可以透過兩種主要方式指導 Claude:

464 520 

glossary.md +2 −2

Details

162 Effort level162 Effort level

163</h3>163</h3>

164 164 

165一個設定,控制 Claude 在每個回合上使用多少自適應推理思考預算。更高的努力意味著更多的思考 tokens 和更深入的推理;更低的努力更快且更便宜。Effort 在 Opus 4.6 及更新版本和 Sonnet 4.6 上受支援。165一個設定,控制 Claude 在每個回合上使用多少自適應推理思考預算。更高的努力意味著更多的思考 tokens 和更深入的推理;更低的努力更快且更便宜。Effort 在 Fable 5、Opus 4.6 及更新版本和 Sonnet 4.6 上受支援。

166 166 

167了解更多:[Adjust effort level](/zh-TW/model-config#adjust-effort-level)167了解更多:[Adjust effort level](/zh-TW/model-config#adjust-effort-level)

168 168 


170 Extended thinking170 Extended thinking

171</h3>171</h3>

172 172 

173模型在回應前執行的可見逐步推理。您可以使用 `MAX_THINKING_TOKENS` 限制思考 tokens 或調整 [effort level](#effort-level)。思考在終端中以灰色斜體文字顯示。173模型在回應前執行的可見逐步推理。您可以使用 [effort level](#effort-level) 調整它,或在具有固定思考預算的模型上使用 `MAX_THINKING_TOKENS` 限制思考 tokens。思考在終端中以灰色斜體文字顯示。

174 174 

175了解更多:[Use extended thinking](/zh-TW/model-config#extended-thinking)175了解更多:[Use extended thinking](/zh-TW/model-config#extended-thinking)

176 176 

Details

6 6 

7> 了解如何透過 Google Vertex AI 設定 Claude Code,包括設定、IAM 設定和故障排除。7> 了解如何透過 Google Vertex AI 設定 Claude Code,包括設定、IAM 設定和故障排除。

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<ContactSalesCard surface="vertex" />

80 

9<h2 id="prerequisites">81<h2 id="prerequisites">

10 先決條件82 先決條件

11</h2>83</h2>


155</h3>227</h3>

156 228 

157<Warning>229<Warning>

158 在部署到多個使用者時固定特定模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為最新版本,當 Anthropic 發佈更新時,該版本可能尚未在您的 Vertex AI 專案中啟用。Claude Code 在啟動時會在最新版本無法使用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。230 在部署到多個使用者時固定特定模型版本。如果不固定,模型別名(例如 `sonnet` 和 `opus`)會解析為 Claude Code 針對 Vertex AI 的內建預設值,該預設值可能落後於最新版本,且可能尚未在您的專案中啟用。Claude Code 在啟動時會在預設值無法使用時[回退](#startup-model-checks)到先前版本,但固定可讓您控制使用者何時移至新模型。

159</Warning>231</Warning>

160 232 

161將這些環境變數設定為特定的 Vertex AI 模型 ID。233將這些環境變數設定為特定的 Vertex AI 模型 ID。

headless.md +11 −3

Details

62 `--bare` 是指令碼和 SDK 呼叫的建議模式,將在未來版本中成為 `-p` 的預設值。62 `--bare` 是指令碼和 SDK 呼叫的建議模式,將在未來版本中成為 `-p` 的預設值。

63</Note>63</Note>

64 64 

65<h3 id="background-tasks-at-exit">

66 結束時的背景工作

67</h3>

68 

69如果 Claude 在 `claude -p` 執行期間啟動 [背景 Bash 工作](/zh-TW/tools-reference#bash-tool-behavior),例如開發伺服器或監視組建,該工作將在 Claude 傳回其最終結果且 stdin 已關閉後約五秒鐘終止。寬限期允許在結果之後立即完成的工作仍然傳遞其輸出。在 v2.1.163 之前,永不退出的背景程序會無限期地保持 `claude -p` 呼叫開啟。

70 

65<h2 id="examples">71<h2 id="examples">

66 範例72 範例

67</h2>73</h2>


163當 API 請求因可重試錯誤而失敗時,Claude Code 會在重試前發出 `system/api_retry` 事件。您可以使用此來顯示重試進度或實施自訂退避邏輯。169當 API 請求因可重試錯誤而失敗時,Claude Code 會在重試前發出 `system/api_retry` 事件。您可以使用此來顯示重試進度或實施自訂退避邏輯。

164 170 

165| 欄位 | 類型 | 描述 |171| 欄位 | 類型 | 描述 |

166| ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |172| ---------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

167| `type` | `"system"` | 訊息類型 |173| `type` | `"system"` | 訊息類型 |

168| `subtype` | `"api_retry"` | 將此識別為重試事件 |174| `subtype` | `"api_retry"` | 將此識別為重試事件 |

169| `attempt` | 整數 | 目前嘗試次數,從 1 開始 |175| `attempt` | 整數 | 目前嘗試次數,從 1 開始 |

170| `max_retries` | 整數 | 允許的總重試次數 |176| `max_retries` | 整數 | 允許的總重試次數 |

171| `retry_delay_ms` | 整數 | 毫秒直到下一次嘗試 |177| `retry_delay_ms` | 整數 | 毫秒直到下一次嘗試 |

172| `error_status` | 整數或 null | HTTP 狀態碼,或 `null` 表示沒有 HTTP 回應的連線錯誤 |178| `error_status` | 整數或 null | HTTP 狀態碼,或 `null` 表示沒有 HTTP 回應的連線錯誤 |

173| `error` | 字串 | 錯誤類別:`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`rate_limit`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens` 或 `unknown` |179| `error` | 字串 | 錯誤類別:`authentication_failed`、`oauth_org_not_allowed`、`billing_error`、`rate_limit`、`overloaded`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens` 或 `unknown` |

174| `uuid` | 字串 | 唯一事件識別碼 |180| `uuid` | 字串 | 唯一事件識別碼 |

175| `session_id` | 字串 | 事件所屬的工作階段 |181| `session_id` | 字串 | 事件所屬的工作階段 |

176 182 


226`--allowedTools` 旗標使用 [權限規則語法](/zh-TW/settings#permission-rule-syntax)。尾部的 ` *` 啟用前綴匹配,因此 `Bash(git diff *)` 允許任何以 `git diff` 開頭的命令。空格在 `*` 之前很重要:沒有它,`Bash(git diff*)` 也會符合 `git diff-index`。232`--allowedTools` 旗標使用 [權限規則語法](/zh-TW/settings#permission-rule-syntax)。尾部的 ` *` 啟用前綴匹配,因此 `Bash(git diff *)` 允許任何以 `git diff` 開頭的命令。空格在 `*` 之前很重要:沒有它,`Bash(git diff*)` 也會符合 `git diff-index`。

227 233 

228<Note>234<Note>

229 使用者叫用的 [skills](/zh-TW/skills) `/code-review` [內建命令](/zh-TW/commands) 僅在互動模式中可用。在 `-p` 模式中,改為描述您想要完成的任務235 使用者叫用的 [skills](/zh-TW/skills) 和自訂命令在 `-p` 模式中運作:在提示字串中包含 `/skill-name`,Claude Code 會在執行前展開它開啟互動對話的內建命令,例如 `/config` 和 `/login`,在 `-p` 模式中不可用

230</Note>236</Note>

231 237 

232<h3 id="customize-the-system-prompt">238<h3 id="customize-the-system-prompt">


265claude -p "Continue that review" --resume "$session_id"271claude -p "Continue that review" --resume "$session_id"

266```272```

267 273 

274從同一目錄執行兩個命令:工作階段 ID 查詢的範圍限於目前專案目錄及其 git worktrees。請參閱 [繼續工作階段](/zh-TW/sessions#resume-a-session) 以取得完整的範圍規則。

275 

268<h2 id="next-steps">276<h2 id="next-steps">

269 後續步驟277 後續步驟

270</h2>278</h2>

hooks.md +65 −26

Details

108現在假設 Claude Code 決定執行 `Bash "rm -rf /tmp/build"`。以下是發生的情況:108現在假設 Claude Code 決定執行 `Bash "rm -rf /tmp/build"`。以下是發生的情況:

109 109 

110<Frame>110<Frame>

111 <img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=be0bf3053550c26de5f54cd64674c197" alt="Hook 解析流程:PreToolUse 事件觸發,匹配器檢查 Bash 匹配,if 條件檢查 Bash(rm *) 匹配,hook 處理程式執行,結果返回到 Claude Code" width="930" height="270" data-path="images/hook-resolution.svg" />111 <img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=be0bf3053550c26de5f54cd64674c197" alt="Hook 解析流程:PreToolUse 事件觸發,匹配器檢查 Bash 匹配,if 條件檢查 Bash(rm *) 匹配。如果兩者都匹配,hook 命令執行並返回 permissionDecision deny,因此工具呼叫被阻止,Claude Code 繼續。如果任一檢查未能匹配,hook 被跳過,工具呼叫允許繼續進行。" width="930" height="270" data-path="images/hook-resolution.svg" />

112</Frame>112</Frame>

113 113 

114<Steps>114<Steps>


164有關完整的逐步說明和註解範例,請參閱上面的 [Hook 如何解析](#how-a-hook-resolves)。164有關完整的逐步說明和註解範例,請參閱上面的 [Hook 如何解析](#how-a-hook-resolves)。

165 165 

166<Note>166<Note>

167 此頁面為每個層級使用特定術語:**hook 事件**表示生命週期點,**匹配器群組**表示篩選器,**hook 處理程式**表示執行的 shell 命令、HTTP 端點、MCP 工具、提示或代理。'Hook'本身指的是一般功能。167 此頁面為每個層級使用特定術語:**hook 事件**表示生命週期點,**匹配器群組**表示篩選器,**hook 處理程式**表示執行的 shell 命令、HTTP 端點、MCP 工具、提示或代理。'Hook' 本身指的是一般功能。

168</Note>168</Note>

169 169 

170<h3 id="hook-locations">170<h3 id="hook-locations">


311這些欄位適用於所有 hook 類型:311這些欄位適用於所有 hook 類型:

312 312 

313| 欄位 | 必需 | 描述 |313| 欄位 | 必需 | 描述 |

314| :-------------- | :- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |314| :-------------- | :- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

315| `type` | 是 | `"command"`、`"http"`、`"mcp_tool"`、`"prompt"` 或 `"agent"` |315| `type` | 是 | `"command"`、`"http"`、`"mcp_tool"`、`"prompt"` 或 `"agent"` |

316| `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 匹配表](#bash-if-matching) 以了解 Bash 模式如何針對子命令、`$()` 和反引號進行評估。僅在工具事件上評估:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。在其他事件上,設定 `if` 的 hook 永遠不會執行。使用與 [權限規則](/zh-TW/permissions) 相同的語法 |

317| `timeout` | 否 | 取消前的秒數。預設值:`command`、`http` 和 `mcp_tool` 為 600;`prompt` 為 30;`agent` 為 60。[`UserPromptSubmit`](#userpromptsubmit) 將 `command`、`http` 和 `mcp_tool` 的預設值降低到 30,[`MessageDisplay`](#messagedisplay) 將其降低到 10 |317| `timeout` | 否 | 取消前的秒數。預設值:`command`、`http` 和 `mcp_tool` 為 600;`prompt` 為 30;`agent` 為 60。[`UserPromptSubmit`](#userpromptsubmit) 將 `command`、`http` 和 `mcp_tool` 的預設值降低到 30,[`MessageDisplay`](#messagedisplay) 將其降低到 10 |

318| `statusMessage` | 否 | hook 執行時顯示的自訂微調訊息 |318| `statusMessage` | 否 | hook 執行時顯示的自訂微調訊息 |

319| `once` | 否 | 如果為 `true`,每個工作階段只執行一次,然後被移除。僅在 [skill frontmatter](#hooks-in-skills-and-agents) 中受尊重;在設定檔和代理 frontmatter 中被忽略 |319| `once` | 否 | 如果為 `true`,每個工作階段只執行一次,然後被移除。僅在 [skill frontmatter](#hooks-in-skills-and-agents) 中受尊重;在設定檔和代理 frontmatter 中被忽略 |

320 320 

321`if` 欄位恰好包含一個權限規則。沒有 `&&`、`||` 或清單語法來組合規則;要應用多個條件,請為每個條件定義一個單獨的 hook 處理程式。對於 Bash,規則會針對工具輸入的每個子命令進行匹配,在去除前導 `VAR=value` 指派後,因此 `if: "Bash(git push *)"` 同時匹配 `FOO=bar git push` 和 `npm test && git push`。如果任何子命令匹配,hook 會執行,並且當命令太複雜而無法解析時總是執行。321`if` 欄位恰好包含一個權限規則。沒有 `&&`、`||` 或清單語法來組合規則;要應用多個條件,請為每個條件定義一個單獨的 hook 處理程式。

322 

323<span id="bash-if-matching" />對於 Bash 模式,您的 hook 命令是否執行取決於模式的形狀和 Claude 正在呼叫的 Bash 命令。前導 `VAR=value` 指派在匹配前被移除。

324 

325| `if` 模式 | Bash 命令 | Hook 執行? | 原因 |

326| :----------------- | :--------------------- | :------- | :-------------------------------------- |

327| `Bash(git *)` | `FOO=bar git push` | 是 | 前導指派被移除;`git push` 匹配 |

328| `Bash(git *)` | `npm test && git push` | 是 | 每個子命令都被檢查;`git push` 匹配 |

329| `Bash(rm *)` | `echo $(rm -rf /)` | 是 | `$()` 和反引號內的命令被檢查;`rm -rf /` 匹配 |

330| `Bash(rm *)` | `echo $(date)` | 否 | 沒有子命令匹配 `rm *` |

331| `Bash(git push *)` | `echo $(date)` | 是 | 指定超過命令名稱的模式在 `$()`、反引號或 `$VAR` 上執行 hook |

332 

333當 Bash 命令無法解析時,篩選器也會失敗開放,無論如何執行您的 hook。因為 `if` 篩選器是盡力而為的,請使用 [權限系統](/zh-TW/permissions) 而不是 hook 來強制執行硬允許或拒絕。

322 334 

323<h4 id="command-hook-fields">335<h4 id="command-hook-fields">

324 命令 hook 欄位336 命令 hook 欄位


461除了 [通用欄位](#common-fields) 外,提示和代理 hooks 還接受這些欄位:473除了 [通用欄位](#common-fields) 外,提示和代理 hooks 還接受這些欄位:

462 474 

463| 欄位 | 必需 | 描述 |475| 欄位 | 必需 | 描述 |

464| :------- | :- | :----------------------------------------------- |476| :------- | :- | :----------------------------------------------------------------------------------- |

465| `prompt` | 是 | 要發送到模型的提示文字。使用 `$ARGUMENTS` 作為 hook 輸入 JSON 的佔位符 |477| `prompt` | 是 | 要發送到模型的提示文字。使用 `$ARGUMENTS` 作為 hook 輸入 JSON 的佔位符。使用反斜線逸出以包含字面文字:`\$1.00` 呈現為 `$1.00` |

466| `model` | 否 | 用於評估的模型。預設為快速模型 |478| `model` | 否 | 用於評估的模型。預設為快速模型 |

467 479 

468所有匹配的 hooks 並行執行,相同的處理程式會自動去重。命令 hooks 按命令字串和 `args` 去重,HTTP hooks 按 URL 去重。處理程式在目前目錄中執行,使用 Claude Code 的環境。在遠端網路環境中,`$CLAUDE_CODE_REMOTE` 環境變數設定為 `"true"`,在本機 CLI 中未設定。480所有匹配的 hooks 並行執行,相同的處理程式會自動去重。命令 hooks 按命令字串和 `args` 去重,HTTP hooks 按 URL 去重。處理程式在目前目錄中執行,使用 Claude Code 的環境。在遠端網路環境中,`$CLAUDE_CODE_REMOTE` 環境變數設定為 `"true"`,在本機 CLI 中未設定。


619| `agent_id` | Subagent 的唯一識別碼。僅當 hook 在 subagent 呼叫內觸發時出現。使用此項來區分 subagent hook 呼叫與主執行緒呼叫。 |631| `agent_id` | Subagent 的唯一識別碼。僅當 hook 在 subagent 呼叫內觸發時出現。使用此項來區分 subagent hook 呼叫與主執行緒呼叫。 |

620| `agent_type` | 代理名稱(例如 `"Explore"` 或 `"security-reviewer"`)。當工作階段使用 `--agent` 或 hook 在 subagent 內觸發時出現。對於 subagents,subagent 的類型優先於工作階段的 `--agent` 值。對於 [自訂 subagents](/zh-TW/sub-agents),這是代理 frontmatter 中的 `name` 欄位,而不是檔案名稱。 |632| `agent_type` | 代理名稱(例如 `"Explore"` 或 `"security-reviewer"`)。當工作階段使用 `--agent` 或 hook 在 subagent 內觸發時出現。對於 subagents,subagent 的類型優先於工作階段的 `--agent` 值。對於 [自訂 subagents](/zh-TW/sub-agents),這是代理 frontmatter 中的 `name` 欄位,而不是檔案名稱。 |

621 633 

622只有 [`SessionStart`](#sessionstart) hooks 接收 `model` 欄位。沒有 `$CLAUDE_MODEL` 環境變數。Hook 程序繼承父環境,因此如果您在 shell 中設定它,它可以讀取 `$ANTHROPIC_MODEL`,但當您在工作階段期間使用 `/model` 切換模型時,該值不會改變。634只有 [`SessionStart`](#sessionstart) hooks 可以接收 `model` 欄位,且不保證存在。沒有 `$CLAUDE_MODEL` 環境變數。Hook 程序繼承父環境,因此如果您在 shell 中設定它,它可以讀取 `$ANTHROPIC_MODEL`,但當您在工作階段期間使用 `/model` 切換模型時,該值不會改變。

623 635 

624例如,Bash 命令的 `PreToolUse` hook 在 stdin 上接收此內容:636例如,Bash 命令的 `PreToolUse` hook 在 stdin 上接收此內容:

625 637 


782# Notification hook:當 Claude Code 需要注意時 ping 桌面。794# Notification hook:當 Claude Code 需要注意時 ping 桌面。

783input=$(cat)795input=$(cat)

784title="Claude Code'796title="Claude Code'

785body=$(jq -r '.message // 'Needs your attention'' <<<"$input")797body=$(jq -r '.message // 'Needs your attention'' <<<'$input")

786seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")798seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

787jq -nc --arg seq "$seq" '{terminalSequence: $seq}'799jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

788```800```


815* [SessionStart](#sessionstart)、[Setup](#setup) 和 [SubagentStart](#subagentstart):在對話開始,在第一個提示之前827* [SessionStart](#sessionstart)、[Setup](#setup) 和 [SubagentStart](#subagentstart):在對話開始,在第一個提示之前

816* [UserPromptSubmit](#userpromptsubmit) 和 [UserPromptExpansion](#userpromptexpansion):與提交的提示一起828* [UserPromptSubmit](#userpromptsubmit) 和 [UserPromptExpansion](#userpromptexpansion):與提交的提示一起

817* [PreToolUse](#pretooluse)、[PostToolUse](#posttooluse)、[PostToolUseFailure](#posttoolusefailure) 和 [PostToolBatch](#posttoolbatch):在工具結果旁邊829* [PreToolUse](#pretooluse)、[PostToolUse](#posttooluse)、[PostToolUseFailure](#posttoolusefailure) 和 [PostToolBatch](#posttoolbatch):在工具結果旁邊

830* [Stop](#stop) 和 [SubagentStop](#subagentstop):在回合結束。對話繼續,以便 Claude 可以對反饋採取行動。請參閱 [Stop 決定控制](#stop-decision-control)

818 831 

819當多個 hooks 為同一事件返回 `additionalContext` 時,Claude 接收所有值。如果值超過 10,000 個字元,Claude Code 會將完整文字寫入工作階段目錄中的檔案,並將檔案路徑與簡短預覽傳遞給 Claude。832當多個 hooks 為同一事件返回 `additionalContext` 時,Claude 接收所有值。如果值超過 10,000 個字元,Claude Code 會將完整文字寫入工作階段目錄中的檔案,並將檔案路徑與簡短預覽傳遞給 Claude。

820 833 


838 851 

839| 事件 | 決定模式 | 關鍵欄位 |852| 事件 | 決定模式 | 關鍵欄位 |

840| :-------------------------------------------------------------------------------------------------------------------------- | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |853| :-------------------------------------------------------------------------------------------------------------------------- | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

841| UserPromptSubmit、UserPromptExpansion、PostToolUse、PostToolUseFailure、PostToolBatch、Stop、SubagentStop、ConfigChange、PreCompact | 頂層 `decision` | `decision: "block"`、`reason` |854| UserPromptSubmit、UserPromptExpansion、PostToolUse、PostToolUseFailure、PostToolBatch、Stop、SubagentStop、ConfigChange、PreCompact | 頂層 `decision` | `decision: "block"`、`reason`。Stop 和 SubagentStop 也接受 `hookSpecificOutput.additionalContext` 用於 [繼續對話的非錯誤反饋](#stop-decision-control) |

842| TeammateIdle、TaskCreated、TaskCompleted | 退出代碼或 `continue: false` | 退出代碼 2 使用 stderr 反饋阻止操作。JSON `{"continue": false, "stopReason": "..."}` 也會完全停止隊友,匹配 `Stop` hook 行為 |855| TeammateIdle、TaskCreated、TaskCompleted | 退出代碼或 `continue: false` | 退出代碼 2 使用 stderr 反饋阻止操作。JSON `{"continue": false, "stopReason": "..."}` 也會完全停止隊友,匹配 `Stop` hook 行為 |

843| PreToolUse | `hookSpecificOutput` | `permissionDecision`(allow/deny/ask/defer)、`permissionDecisionReason` |856| PreToolUse | `hookSpecificOutput` | `permissionDecision`(allow/deny/ask/defer)、`permissionDecisionReason` |

844| PermissionRequest | `hookSpecificOutput` | `decision.behavior`(allow/deny) |857| PermissionRequest | `hookSpecificOutput` | `decision.behavior`(allow/deny) |


850| SessionStart、Setup、SubagentStart | 僅上下文 | `hookSpecificOutput.additionalContext` 為 Claude 新增上下文。SessionStart 也接受 [`initialUserMessage`、`watchPaths`、`sessionTitle` 和 `reloadSkills`](#sessionstart-decision-control)。無阻止或決定控制 |863| SessionStart、Setup、SubagentStart | 僅上下文 | `hookSpecificOutput.additionalContext` 為 Claude 新增上下文。SessionStart 也接受 [`initialUserMessage`、`watchPaths`、`sessionTitle` 和 `reloadSkills`](#sessionstart-decision-control)。無阻止或決定控制 |

851| WorktreeRemove、Notification、SessionEnd、PostCompact、InstructionsLoaded、StopFailure、CwdChanged、FileChanged | 無 | 無決定控制。用於副作用,如記錄或清理 |864| WorktreeRemove、Notification、SessionEnd、PostCompact、InstructionsLoaded、StopFailure、CwdChanged、FileChanged | 無 | 無決定控制。用於副作用,如記錄或清理 |

852 865 

866一些事件也可以重寫內容,而不僅僅是允許或阻止它:

867 

868* `PreToolUse` — `updatedInput` 直接在 `hookSpecificOutput` 下替換工具的引數,然後執行([詳細資訊](#pretooluse-decision-control))

869* `PermissionRequest` — `updatedInput` 在 `decision` 物件內([詳細資訊](#permissionrequest-decision-control))

870* `PostToolUse` — `updatedToolOutput` 替換工具的結果([詳細資訊](#posttooluse-decision-control))

871* `UserPromptSubmit` — 無法替換提示;僅在其旁邊注入 `additionalContext`

872 

873對於編輯或轉換使用案例,在 `PreToolUse` 攔截出站工具輸入,在 `PostToolUse` 攔截入站工具結果。

874 

853以下是每種模式的實際範例:875以下是每種模式的實際範例:

854 876 

855<Tabs>877<Tabs>


926 SessionStart 輸入948 SessionStart 輸入

927</h4>949</h4>

928 950 

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` 以避免覆寫使用者明確設定的標題。951除了 [通用輸入欄位](#common-input-fields) 外,SessionStart hooks 還接收 `source` 和可選的 `model`、`agent_type` 和 `session_title`。`source` 欄位指示工作階段如何啟動:新工作階段為 `"startup"`,恢復的工作階段為 `"resume"`,`/clear` 後為 `"clear"`,或壓縮後為 `"compact"`。`model` 欄位包含模型識別碼。它可以被省略,例如在 `/clear` 後或當工作階段通過對話恢復被恢復時,因此在讀取它之前檢查欄位。如果您使用 `claude --agent <name>` 啟動 Claude Code,`agent_type` 欄位包含代理名稱。`session_title` 欄位攜帶目前工作階段標題(如果已設定),例如通過 `--name` 或 `/rename`。發出 `sessionTitle` 的 hook 可以先檢查 `session_title` 以避免覆寫使用者明確設定的標題。

930 952 

931```json theme={null}953```json theme={null}

932{954{


1506| `status` | 字串 | `"completed"` | 同步呼叫為 `"completed"`,`run_in_background: true` 為 `"async_launched"` |1528| `status` | 字串 | `"completed"` | 同步呼叫為 `"completed"`,`run_in_background: true` 為 `"async_launched"` |

1507| `agentId` | 字串 | `"a4d2c8f1e0b3a297"` | subagent 執行的識別碼 |1529| `agentId` | 字串 | `"a4d2c8f1e0b3a297"` | subagent 執行的識別碼 |

1508| `content` | 陣列 | `[{"type": "text", "text": "Found 12 endpoints..."}]` | subagent 的最終文字塊 |1530| `content` | 陣列 | `[{"type": "text", "text": "Found 12 endpoints..."}]` | subagent 的最終文字塊 |

1531| `resolvedModel` | 字串 | `"claude-sonnet-4-5"` | subagent 執行的模型,可能與請求的模型不同。{/* min-version: 2.1.174 */}需要 Claude Code v2.1.174 或更高版本 |

1509| `totalTokens` | 數字 | `12450` | 在 subagent 轉向中計費的總令牌數 |1532| `totalTokens` | 數字 | `12450` | 在 subagent 轉向中計費的總令牌數 |

1510| `totalDurationMs` | 數字 | `48211` | subagent 執行的掛鐘時間 |1533| `totalDurationMs` | 數字 | `48211` | subagent 執行的掛鐘時間 |

1511| `totalToolUseCount` | 數字 | `7` | subagent 進行的工具呼叫計數 |1534| `totalToolUseCount` | 數字 | `7` | subagent 進行的工具呼叫計數 |

1512| `usage` | 物件 | `{"input_tokens": 8320, ...}` | 按類型的令牌細分:`input_tokens`、`output_tokens`、`cache_creation_input_tokens`、`cache_read_input_tokens` |1535| `usage` | 物件 | `{"input_tokens": 8320, ...}` | 按類型的令牌細分:`input_tokens`、`output_tokens`、`cache_creation_input_tokens`、`cache_read_input_tokens` |

1513 1536 

1514對於 `run_in_background: true` 呼叫,工具在啟動 subagent 後立即返回,因此 `tool_response` 不攜帶使用量欄位。它具有 `status: "async_launched"`、`agentId`、`description`、`prompt` 和 `outputFile`。1537對於 `run_in_background: true` 呼叫,工具在啟動 subagent 後立即返回,因此 `tool_response` 不攜帶使用量欄位。它具有 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。

1538 

1539`resolvedModel` 欄位命名 subagent 實際執行的模型,可能與 `tool_input` 中的 `model` 值不同。它需要 Claude Code v2.1.174 或更高版本。

1540 

1541<a id="askuserquestion" />

1515 1542 

1516<h5 id="askuserquestion">1543<h5 id="askuserquestion">

1517 AskUserQuestion1544 AskUserQuestion


2091}2118}

2092```2119```

2093 2120 

2094SubagentStop hooks 使用與 [Stop hooks](#stop-decision-control) 相同的決定控制格式。它們不支援 `additionalContext`。返回 `decision: "block"` 與 `reason` 會保持 subagent 執行並將 `reason` 作為其下一個指令傳遞給 subagent。要在 subagent 返回後將上下文注入到父工作階段,請改用 `Agent` 工具上的 [`PostToolUse`](#posttooluse) hook。2121SubagentStop hooks 使用與 [Stop hooks](#stop-decision-control) 相同的決定控制格式,包括 `hookSpecificOutput.additionalContext`,其中 `hookEventName` 設定為 `"SubagentStop"`,用於非錯誤反饋,使 subagent 保持執行。返回 `decision: "block"` 與 `reason` 會保持 subagent 執行並將 `reason` 作為其下一個指令傳遞給 subagent。要在 subagent 返回後將上下文注入到父工作階段,請改用 `Agent` 工具上的 [`PostToolUse`](#posttooluse) hook。

2095 2122 

2096<h3 id="taskcreated">2123<h3 id="taskcreated">

2097 TaskCreated2124 TaskCreated


2118 "task_subject": "Implement user authentication",2145 "task_subject": "Implement user authentication",

2119 "task_description": "Add login and signup endpoints",2146 "task_description": "Add login and signup endpoints",

2120 "teammate_name": "implementer",2147 "teammate_name": "implementer",

2121 "team_name": "my-project"2148 "team_name": "session-a1b2c3d4"

2122}2149}

2123```2150```

2124 2151 

2125| 欄位 | 描述 |2152| 欄位 | 描述 |

2126| :----------------- | :--------------- |2153| :----------------- | :------------------------ |

2127| `task_id` | 被建立的任務的識別碼 |2154| `task_id` | 被建立的任務的識別碼 |

2128| `task_subject` | 任務的標題 |2155| `task_subject` | 任務的標題 |

2129| `task_description` | 任務的詳細描述。可能不存在 |2156| `task_description` | 任務的詳細描述。可能不存在 |

2130| `teammate_name` | 建立任務的隊友的名稱。可能不存在 |2157| `teammate_name` | 建立任務的隊友的名稱。可能不存在 |

2131| `team_name` | 團隊的名稱可能不存在 |2158| `team_name` | 已棄用工作階段衍生的團隊名稱;將在未來版本中移除 |

2132 2159 

2133<h4 id="taskcreated-decision-control">2160<h4 id="taskcreated-decision-control">

2134 TaskCreated 決定控制2161 TaskCreated 決定控制


2179 "task_subject": "Implement user authentication",2206 "task_subject": "Implement user authentication",

2180 "task_description": "Add login and signup endpoints",2207 "task_description": "Add login and signup endpoints",

2181 "teammate_name": "implementer",2208 "teammate_name": "implementer",

2182 "team_name": "my-project"2209 "team_name": "session-a1b2c3d4"

2183}2210}

2184```2211```

2185 2212 

2186| 欄位 | 描述 |2213| 欄位 | 描述 |

2187| :----------------- | :--------------- |2214| :----------------- | :------------------------ |

2188| `task_id` | 被完成的任務的識別碼 |2215| `task_id` | 被完成的任務的識別碼 |

2189| `task_subject` | 任務的標題 |2216| `task_subject` | 任務的標題 |

2190| `task_description` | 任務的詳細描述。可能不存在 |2217| `task_description` | 任務的詳細描述。可能不存在 |

2191| `teammate_name` | 完成任務的隊友的名稱。可能不存在 |2218| `teammate_name` | 完成任務的隊友的名稱。可能不存在 |

2192| `team_name` | 團隊的名稱可能不存在 |2219| `team_name` | 已棄用工作階段衍生的團隊名稱;將在未來版本中移除 |

2193 2220 

2194<h4 id="taskcompleted-decision-control">2221<h4 id="taskcompleted-decision-control">

2195 TaskCompleted 決定控制2222 TaskCompleted 決定控制


2295`Stop` 和 `SubagentStop` hooks 可以控制 Claude 是否繼續。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:2322`Stop` 和 `SubagentStop` hooks 可以控制 Claude 是否繼續。除了所有 hooks 可用的 [JSON 輸出欄位](#json-output) 外,您的 hook 指令碼可以返回這些事件特定欄位:

2296 2323 

2297| 欄位 | 描述 |2324| 欄位 | 描述 |

2298| :--------- | :---------------------------------------------- |2325| :------------------------------------- | :-------------------------------------------------------------------------------------------- |

2299| `decision` | `"block"` 防止 Claude 停止。省略以允許 Claude 停止 |2326| `decision` | `"block"` 防止 Claude 停止。省略以允許 Claude 停止 |

2300| `reason` | 當 `decision` 為 `"block"` 時必需。告訴 Claude 為什麼它應該繼續 |2327| `reason` | 當 `decision` 為 `"block"` 時必需。告訴 Claude 為什麼它應該繼續 |

2328| `hookSpecificOutput.additionalContext` | 非錯誤反饋給 Claude。對話繼續,以便 Claude 可以對其採取行動,但與 `decision: "block"` 不同,它在成績單中顯示為 hook 反饋,而不是 hook 錯誤 |

2301 2329 

2302```json theme={null}2330```json theme={null}

2303{2331{


2306}2334}

2307```2335```

2308 2336 

2337當 hook 的設計目的是提供指導時,使用 `additionalContext`,例如「在完成前執行測試套件」。它通過與 `decision: "block"` 相同的迴圈保護(即 `stop_hook_active` 輸入和 8 次連續繼續上限)保持對話進行,但成績單將其標籤為 `Stop hook feedback`,不顯示 hook 錯誤通知:

2338 

2339```json theme={null}

2340{

2341 "hookSpecificOutput": {

2342 "hookEventName": "Stop",

2343 "additionalContext": "Please run the test suite before finishing"

2344 }

2345}

2346```

2347 

2309<h3 id="stopfailure">2348<h3 id="stopfailure">

2310 StopFailure2349 StopFailure

2311</h3>2350</h3>


2360 "permission_mode": "default",2399 "permission_mode": "default",

2361 "hook_event_name": "TeammateIdle",2400 "hook_event_name": "TeammateIdle",

2362 "teammate_name": "researcher",2401 "teammate_name": "researcher",

2363 "team_name": "my-project"2402 "team_name": "session-a1b2c3d4"

2364}2403}

2365```2404```

2366 2405 

2367| 欄位 | 描述 |2406| 欄位 | 描述 |

2368| :-------------- | :--------- |2407| :-------------- | :------------------------ |

2369| `teammate_name` | 即將閒置的隊友的名稱 |2408| `teammate_name` | 即將閒置的隊友的名稱 |

2370| `team_name` | 團隊的名稱 |2409| `team_name` | 已棄用。工作階段衍生的團隊名稱;將在未來版本中移除 |

2371 2410 

2372<h4 id="teammateidle-decision-control">2411<h4 id="teammateidle-decision-control">

2373 TeammateIdle 決定控制2412 TeammateIdle 決定控制


2740 SessionEnd 輸入2779 SessionEnd 輸入

2741</h4>2780</h4>

2742 2781 

2743除了 [通用輸入欄位](#common-input-fields) 外,SessionEnd hooks 還接收指示工作階段為何結束的 `reason` 欄位。有關所有值,請參閱上面的 [原因表](#sessionend)2782除了 [通用輸入欄位](#common-input-fields) 外,SessionEnd hooks 還接收指示工作階段為何結束的 `reason` 欄位。有關所有值,請參閱上面的原因表

2744 2783 

2745```json theme={null}2784```json theme={null}

2746{2785{


2845匹配器欄位與 MCP 伺服器名稱匹配。2884匹配器欄位與 MCP 伺服器名稱匹配。

2846 2885 

2847<h4 id="elicitationresult-input">2886<h4 id="elicitationresult-input">

2848 Elicitation Result 輸入2887 ElicitationResult 輸入

2849</h4>2888</h4>

2850 2889 

2851除了 [通用輸入欄位](#common-input-fields) 外,ElicitationResult hooks 還接收 `mcp_server_name`、`action` 和可選的 `mode`、`elicitation_id` 和 `content` 欄位。2890除了 [通用輸入欄位](#common-input-fields) 外,ElicitationResult hooks 還接收 `mcp_server_name`、`action` 和可選的 `mode`、`elicitation_id` 和 `content` 欄位。


3262 3301 

3263有關更細粒度的 hook 匹配詳細資訊,設定 `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` 以查看額外的日誌行,例如 hook 匹配器計數和查詢匹配。3302有關更細粒度的 hook 匹配詳細資訊,設定 `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` 以查看額外的日誌行,例如 hook 匹配器計數和查詢匹配。

3264 3303 

3265有關故障排除常見問題,如 hooks 不觸發、無限 Stop hook 迴圈或配置錯誤,請參閱指南中的 [限制和故障排除](/zh-TW/hooks-guide#limitations-and-troubleshooting)。有關涵蓋 `/context`、`/doctor` 和設定優先順序的更廣泛診斷逐步解說,請參閱 [偵錯您的配置](/zh-TW/debug-your-config)。3304有關故障排除常見問題,如 hooks 不觸發、Stop hooks 持續阻擋或配置錯誤,請參閱指南中的 [限制和故障排除](/zh-TW/hooks-guide#limitations-and-troubleshooting)。有關涵蓋 `/context`、`/doctor` 和設定優先順序的更廣泛診斷逐步解說,請參閱 [偵錯您的配置](/zh-TW/debug-your-config)。

hooks-guide.md +16 −4

Details

506 506 

507當多個 hooks 相符同一事件時,每個 hook 的命令都會執行到完成,然後 Claude Code 合併結果。一個 hook 傳回 `deny` 不會阻止同級 hooks 執行。不要依賴一個 hook 的 `deny` 來抑制另一個 hook 中的副作用。507當多個 hooks 相符同一事件時,每個 hook 的命令都會執行到完成,然後 Claude Code 合併結果。一個 hook 傳回 `deny` 不會阻止同級 hooks 執行。不要依賴一個 hook 的 `deny` 來抑制另一個 hook 中的副作用。

508 508 

509所有匹配的 hooks 完成後,Claude Code 合併它們的輸出。對於 `PreToolUse` 權限決策,最具限制性的答案獲勝`deny` 覆蓋 `ask``ask` 覆蓋 `allow`。來自 `additionalContext` 的文字會從每個 hook 保留並一起傳遞給 Claude。509所有匹配的 hooks 完成後,Claude Code 合併它們的輸出。對於 `PreToolUse` 權限決策,最具限制性的答案獲勝,順序為 `deny``defer``ask``allow`。來自 `additionalContext` 的文字會從每個 hook 保留並一起傳遞給 Claude。

510 510 

511下面的範例在 `Bash` 上註冊了兩個 `PreToolUse` hooks。第一個將每個命令附加到日誌檔案並退出 0。第二個執行一個指令碼,當命令包含 `rm -rf` 時退出 2 以拒絕:511下面的範例在 `Bash` 上註冊了兩個 `PreToolUse` hooks。第一個將每個命令附加到日誌檔案並退出 0。第二個執行一個指令碼,當命令包含 `rm -rf` 時退出 2 以拒絕:

512 512 


751 `if` 欄位需要 Claude Code v2.1.85 或更新版本。較早的版本會忽略它並在每次匹配的呼叫上執行 hook。751 `if` 欄位需要 Claude Code v2.1.85 或更新版本。較早的版本會忽略它並在每次匹配的呼叫上執行 hook。

752</Note>752</Note>

753 753 

754`if` 欄位使用[權限規則語法](/zh-TW/permissions)按工具名稱和引數一起篩選 hooks,因此 hook 程序只在工具呼叫相符時生成,或當 Bash 命令太複雜而無法解析時。這超越了 `matcher`,它只在工具名稱級別篩選。754`if` 欄位使用[權限規則語法](/zh-TW/permissions)按工具名稱和引數一起篩選 hooks,因此 hook 程序只在工具呼叫相符時生成。這超越了 `matcher`,它只在工具名稱級別篩選。

755 755 

756例如,若要只在 Claude 使用 `git` 命令而不是所有 Bash 命令時執行 hook:756例如,若要只在 Claude 使用 `git` 命令而不是所有 Bash 命令時執行 hook:

757 757 


774}774}

775```775```

776 776 

777hook 程序只在 Bash 命令的子命令與 `git *` 相符時生成,或當命令太複雜而無法解析為子命令時。對於複合命令(如 `npm test && git push`),Claude Code 評估每個子命令並觸發 hook,因為 `git push` 相符。`if` 欄位接受與權限規則相同的模式:`"Bash(git *)"`、`"Edit(*.ts)"` 等。若要匹配多個工具名稱,請使用每個都有自己的 `if` 值的單獨處理程式,或在 `matcher` 級別進行匹配,其中支援管道交替。777您的 hook 命令是否執行取決於您的 `if` 模式的形狀和 Claude 正在呼叫的 Bash 命令:

778 

779| `if` 模式 | Bash 命令 | Hook 執行? | 為什麼 |

780| :----------------- | :--------------------- | :------- | :-------------------------------------- |

781| `Bash(git *)` | `git push` | 是 | 命令名稱相符 |

782| `Bash(git *)` | `npm test && git push` | 是 | 每個子命令都被檢查;`git push` 相符 |

783| `Bash(git *)` | `echo $(git log)` | 是 | `$()` 和反引號內的命令被檢查;`git log` 相符 |

784| `Bash(git *)` | `echo $(date)` | 否 | 沒有子命令相符 `git *` |

785| `Bash(git push *)` | `echo $(date)` | 是 | 指定超過命令名稱的模式在 `$()`、反引號或 `$VAR` 上執行 hook |

786 

787篩選器也會失敗開放,當 Bash 命令無法解析時執行您的 hook。因為篩選器是盡力而為,請使用[權限系統](/zh-TW/permissions)而不是 hook 來強制執行硬允許或拒絕。

788 

789`if` 欄位接受與權限規則相同的模式:`"Bash(git *)"`、`"Edit(*.ts)"` 等。若要匹配多個工具名稱,請使用每個都有自己的 `if` 值的單獨處理程式,或在 `matcher` 級別進行匹配,其中支援管道交替。

778 790 

779`if` 只適用於工具事件:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。將其新增到任何其他事件會防止 hook 執行。791`if` 只適用於工具事件:`PreToolUse`、`PostToolUse`、`PostToolUseFailure`、`PermissionRequest` 和 `PermissionDenied`。將其新增到任何其他事件會防止 hook 執行。

780 792 


793| [Plugin](/zh-TW/plugins) `hooks/hooks.json` | 啟用外掛時 | 是,與外掛捆綁 |805| [Plugin](/zh-TW/plugins) `hooks/hooks.json` | 啟用外掛時 | 是,與外掛捆綁 |

794| [Skill](/zh-TW/skills) 或[agent](/zh-TW/sub-agents) frontmatter | 當 skill 或 agent 處於活動狀態時 | 是,在元件檔案中定義 |806| [Skill](/zh-TW/skills) 或[agent](/zh-TW/sub-agents) frontmatter | 當 skill 或 agent 處於活動狀態時 | 是,在元件檔案中定義 |

795 807 

796在 Claude Code 中執行 [`/hooks`](/zh-TW/hooks#the-hooks-menu) 以瀏覽按事件分組的所有配置的 hooks。若要一次禁用所有 hooks,請在設定檔中設定 `"disableAllHooks": true`。受管理的原則設定中配置的 Hooks 仍會執行,除非 `disableAllHooks` 也在那裡設定。808在 Claude Code 中執行 [`/hooks`](/zh-TW/hooks#the-%2Fhooks-menu) 以瀏覽按事件分組的所有配置的 hooks。若要一次禁用所有 hooks,請在設定檔中設定 `"disableAllHooks": true`。受管理的原則設定中配置的 Hooks 仍會執行,除非 `disableAllHooks` 也在那裡設定。

797 809 

798如果您在 Claude Code 執行時直接編輯設定檔,檔案監視程式通常會自動選取 hook 變更。810如果您在 Claude Code 執行時直接編輯設定檔,檔案監視程式通常會自動選取 hook 變更。

799 811 

Details

16 16 

17當您給 Claude 一項任務時,它會經歷三個階段:**收集上下文**、**採取行動**和**驗證結果**。這些階段相互融合。Claude 始終使用工具,無論是搜尋檔案以了解您的程式碼、編輯以進行變更,還是執行測試以檢查其工作。17當您給 Claude 一項任務時,它會經歷三個階段:**收集上下文**、**採取行動**和**驗證結果**。這些階段相互融合。Claude 始終使用工具,無論是搜尋檔案以了解您的程式碼、編輯以進行變更,還是執行測試以檢查其工作。

18 18 

19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agentic-loop.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=4a30fb7ce2815012a9f27c955e2c6bb0" alt="代理迴圈:您的提示導致 Claude 收集上下文、採取行動、驗證結果,並重複直到任務完成。您可以在任何時刻中斷。" width="720" height="280" data-path="images/agentic-loop.svg" />19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agentic-loop.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=4a30fb7ce2815012a9f27c955e2c6bb0" alt="代理迴圈的圖表:您的提示導致 Claude 收集上下文、採取行動、驗證結果,並重複直到任務完成。您可以在任何時刻中斷。" width="720" height="280" data-path="images/agentic-loop.svg" />

20 20 

21迴圈會根據您的要求進行調整。關於您程式碼庫的問題可能只需要收集上下文。錯誤修復會反覆循環所有三個階段。重構可能涉及廣泛的驗證。Claude 根據從上一步學到的內容決定每一步需要什麼,將數十個操作鏈接在一起,並沿途進行課程修正。21迴圈會根據您的要求進行調整。關於您程式碼庫的問題可能只需要收集上下文。錯誤修復會反覆循環所有三個階段。重構可能涉及廣泛的驗證。Claude 根據從上一步學到的內容決定每一步需要什麼,將數十個操作鏈接在一起,並沿途進行課程修正。

22 22 


86 環境和介面86 環境和介面

87</h2>87</h2>

88 88 

89上述代理迴圈工具和功能在您使用 Claude Code 的任何地方都是相同的。改變的是程式碼執行的位置以及您與它互動的方式。89代理迴圈工具和上述功能在您使用 Claude Code 的任何地方都是相同的。改變的是程式碼執行的位置以及您與它互動的方式。

90 90 

91<h3 id="execution-environments">91<h3 id="execution-environments">

92 執行環境92 執行環境


188 188 

189* **預設**:Claude 在檔案編輯和 shell 命令之前詢問189* **預設**:Claude 在檔案編輯和 shell 命令之前詢問

190* **自動接受編輯**:Claude 編輯檔案並執行常見的檔案系統命令(如 `mkdir` 和 `mv`)而不詢問,仍然詢問其他命令190* **自動接受編輯**:Claude 編輯檔案並執行常見的檔案系統命令(如 `mkdir` 和 `mv`)而不詢問,仍然詢問其他命令

191* **Plan Mode**:Claude 僅使用唯讀工具,建立您可以在執行前批准的計畫191* **Plan Mode**:Claude 探索並提出計畫而不編輯您的原始檔案;許可提示仍然如預設模式一樣適用

192* **Auto mode**:Claude 使用背景安全檢查評估所有操作。目前是研究預覽192* **Auto mode**:Claude 使用背景安全檢查評估所有操作。目前是研究預覽

193 193 

194您也可以在 `.claude/settings.json` 中允許特定命令,以便 Claude 不會每次都詢問。這對於受信任的命令(如 `npm test` 或 `git status`)很有用。設定可以從組織範圍的政策範圍到個人偏好。請參閱[許可](/zh-TW/permissions)以取得詳細資訊。194您也可以在 `.claude/settings.json` 中允許特定命令,以便 Claude 不會每次都詢問。這對於受信任的命令(如 `npm test` 或 `git status`)很有用。設定可以從組織範圍的政策範圍到個人偏好。請參閱[許可](/zh-TW/permissions)以取得詳細資訊。


213* `/agents` 幫助您設定自訂 subagents213* `/agents` 幫助您設定自訂 subagents

214* `/doctor` 診斷您的安裝的常見問題214* `/doctor` 診斷您的安裝的常見問題

215 215 

216<h3 id="it-s-a-conversation">216<h3 id="its-a-conversation">

217 這是一個對話217 這是一個對話

218</h3>218</h3>

219 219 


282 282 

283檢查計畫,透過對話細化它,然後讓 Claude 實現。這種兩階段方法比直接跳到程式碼產生更好的結果。283檢查計畫,透過對話細化它,然後讓 Claude 實現。這種兩階段方法比直接跳到程式碼產生更好的結果。

284 284 

285<h3 id="delegate-don-t-dictate">285<h3 id="delegate-dont-dictate">

286 委派,不要指示286 委派,不要指示

287</h3>287</h3>

288 288 


295 295 

296您不需要指定要讀取哪些檔案或執行哪些命令。Claude 會找出來。296您不需要指定要讀取哪些檔案或執行哪些命令。Claude 會找出來。

297 297 

298<h2 id="what-s-next">298<h2 id="whats-next">

299 接下來299 接下來

300</h2>300</h2>

301 301 

Details

39| `Ctrl+B` | 背景執行工作 | 將 bash 命令和代理放在背景執行。Tmux 使用者按兩次 |39| `Ctrl+B` | 背景執行工作 | 將 bash 命令和代理放在背景執行。Tmux 使用者按兩次 |

40| `Ctrl+T` | 切換工作清單 | 在終端狀態區域中顯示或隱藏[工作清單](#task-list) |40| `Ctrl+T` | 切換工作清單 | 在終端狀態區域中顯示或隱藏[工作清單](#task-list) |

41| `Left/Right arrows` | 在對話框標籤之間循環 | 在權限對話框和選單中的標籤之間導航 |41| `Left/Right arrows` | 在對話框標籤之間循環 | 在權限對話框和選單中的標籤之間導航 |

42| `Up/Down arrows` 或 `Ctrl+P`/`Ctrl+N` | 移動游標或導航命令歷史 | 在多行輸入中,首先在提示內移動游標。一旦游標已在頂部或底部邊緣,再次按下會導航命令歷史 |42| `Up/Down arrows` 或 `Ctrl+P`/`Ctrl+N` | 移動游標或導航命令歷史 | 當輸入跨越多個視覺行時無論是換行還是多行,首先在提示內移動游標。一旦游標已在第一個或最後一個視覺行,再次按下會導航命令歷史。{/* min-version: 2.1.169 */}自 v2.1.169 起,換行的單行輸入行為與多行相同 |

43| `Esc` | 中斷 Claude | 停止目前回應或工具呼叫中途,以便您可以重新導向。Claude 會保留迄今為止完成的工作 |43| `Esc` | 中斷 Claude | 停止目前回應或工具呼叫中途,以便您可以重新導向。Claude 會保留迄今為止完成的工作 |

44| `Esc` + `Esc` | 清除輸入草稿,或回溯 | 當提示輸入包含文字時,雙 `Esc` 會清除它並將草稿儲存到歷史,以便 `Up` 可以回憶它。當輸入為空時,雙 `Esc` 會開啟[回溯選單](/zh-TW/checkpointing)以從先前的點還原或摘要程式碼和對話 |44| `Esc` + `Esc` | 清除輸入草稿,或回溯 | 當提示輸入包含文字時,雙 `Esc` 會清除它並將草稿儲存到歷史,以便 `Up` 可以回憶它。當輸入為空時,雙 `Esc` 會開啟[回溯選單](/zh-TW/checkpointing)以從先前的點還原或摘要程式碼和對話 |

45| `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)。 |

46| `Option+P`(macOS)或 `Alt+P`(Windows/Linux) | 切換模型 | 在不清除提示的情況下切換模型 |46| `Option+P`(macOS)或 `Alt+P`(Windows/Linux) | 切換模型 | 在不清除提示的情況下切換模型 |

47| `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) | 切換擴展思考 | 啟用或停用擴展思考模式。在 Fable 5 上無效,其始終使用擴展思考。{/* min-version: 2.1.132 */}自 v2.1.132 起,此快捷鍵在 macOS 上無需配置 Option 為 Meta 即可運作 |

48| `Option+O`(macOS)或 `Alt+O`(Windows/Linux) | 切換快速模式 | 啟用或停用[快速模式](/zh-TW/fast-mode) |48| `Option+O`(macOS)或 `Alt+O`(Windows/Linux) | 切換快速模式 | 啟用或停用[快速模式](/zh-TW/fast-mode) |

49 49 

50<h3 id="text-editing">50<h3 id="text-editing">


305* 長時間執行的程序(docker、terraform)305* 長時間執行的程序(docker、terraform)

306 306 

307<h3 id="shell-mode-with-prefix">307<h3 id="shell-mode-with-prefix">

308 使用 `!` 前綴的 Bash 模式308 使用 `!` 前綴的 Shell 模式

309</h3>309</h3>

310 310 

311透過在輸入前加上 `!` 直接執行 bash 命令,無需透過 Claude:311透過在輸入前加上 `!` 直接執行 bash 命令,無需透過 Claude:


316! ls -la316! ls -la

317```317```

318 318 

319Bash 模式:319Shell 模式:

320 320 

321* 將命令及其輸出新增到對話上下文321* 將命令及其輸出新增到對話上下文

322* 顯示即時進度和輸出322* 顯示即時進度和輸出


324* 不需要 Claude 解釋或批准命令324* 不需要 Claude 解釋或批准命令

325* 支援基於歷史的自動完成:輸入部分命令並按 **Tab** 以從目前專案中的先前 `!` 命令完成325* 支援基於歷史的自動完成:輸入部分命令並按 **Tab** 以從目前專案中的先前 `!` 命令完成

326* 使用 `Escape`、`Backspace` 或在空提示上使用 `Ctrl+U` 退出326* 使用 `Escape`、`Backspace` 或在空提示上使用 `Ctrl+U` 退出

327* 將以 `!` 開頭的貼上文字貼到空提示中會自動進入 bash 模式,符合輸入的 `!` 行為327* 將以 `!` 開頭的貼上文字貼到空提示中會自動進入 shell 模式,符合輸入的 `!` 行為

328 328 

329這對於快速 shell 操作同時維護對話上下文很有用。329這對於快速 shell 操作同時維護對話上下文很有用。

330 330 


372| :----------------------- | :------------------------------------------------------------------------------------------------ |372| :----------------------- | :------------------------------------------------------------------------------------------------ |

373| `Space`、`Enter`、`Escape` | 關閉答案並返回提示 |373| `Space`、`Enter`、`Escape` | 關閉答案並返回提示 |

374| `Up` / `Down` | 捲動答案 |374| `Up` / `Down` | 捲動答案 |

375| `c` | 將答案複製到您的剪貼簿作為原始 Markdown。使用此方式而不是滑鼠選取,後者會擷取硬換行的終端機呈現而非原始文字 |

375| `f` | 分支到新會話。分支繼承父對話加上此問題和答案作為真實文字記錄輪次,因此您可以繼續進行完整工具存取。原始會話保留在 [`/resume`](/zh-TW/commands) 下。僅在本機會話中可用 |376| `f` | 分支到新會話。分支繼承父對話加上此問題和答案作為真實文字記錄輪次,因此您可以繼續進行完整工具存取。原始會話保留在 [`/resume`](/zh-TW/commands) 下。僅在本機會話中可用 |

376| `x` | 清除目前答案上方顯示的較早 `/btw` 交換列表 |377| `x` | 清除目前答案上方顯示的較早 `/btw` 交換列表 |

377 378 

jetbrains.md +77 −25

Details

8 8 

9Claude Code 透過專用外掛程式與 JetBrains IDEs 整合,提供互動式差異檢視、選擇內容共享等功能。9Claude Code 透過專用外掛程式與 JetBrains IDEs 整合,提供互動式差異檢視、選擇內容共享等功能。

10 10 

11## 支援的 IDEs11<h2 id="supported-ides">

12 支援的 IDEs

13</h2>

12 14 

13Claude Code 外掛程式適用於大多數 JetBrains IDEs,包括:15Claude Code 外掛程式適用於大多數 JetBrains IDEs,包括:

14 16 


19* PhpStorm21* PhpStorm

20* GoLand22* GoLand

21 23 

22## 功能24<h2 id="features">

25 功能

26</h2>

23 27 

24* **快速啟動**:使用 `Cmd+Esc`(Mac)或 `Ctrl+Esc`(Windows/Linux)直接從編輯器開啟 Claude Code,或點擊 UI 中的 Claude Code 按鈕28* **快速啟動**:使用 `Cmd+Esc`(Mac)或 `Ctrl+Esc`(Windows/Linux)直接從編輯器開啟 Claude Code,或點擊 UI 中的 Claude Code 按鈕

25* **差異檢視**:程式碼變更可直接在 IDE 差異檢視器中顯示,而不是在終端機中29* **差異檢視**:程式碼變更可直接在 IDE 差異檢視器中顯示,而不是在終端機中


27* **檔案參考快捷方式**:使用 `Cmd+Option+K`(Mac)或 `Alt+Ctrl+K`(Linux/Windows)插入檔案參考,例如 `@src/auth.ts#L1-99`31* **檔案參考快捷方式**:使用 `Cmd+Option+K`(Mac)或 `Alt+Ctrl+K`(Linux/Windows)插入檔案參考,例如 `@src/auth.ts#L1-99`

28* **診斷共享**:IDE 中的診斷錯誤(例如 lint 和語法錯誤)會在您工作時自動與 Claude 共享32* **診斷共享**:IDE 中的診斷錯誤(例如 lint 和語法錯誤)會在您工作時自動與 Claude 共享

29 33 

30## 安裝34<h2 id="installation">

35 安裝

36</h2>

31 37 

32### Marketplace 安裝38該外掛程式在您的 IDE 整合終端機中執行 `claude` 命令並連接到它。它不包含自己的 CLI 副本,因此請安裝兩個部分:

33 39 

34從 JetBrains marketplace 尋找並安裝 [Claude Code 外掛程式](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-),然後重新啟動您的 IDE。40<Steps>

41 <Step title="安裝 Claude Code CLI">

42 如果您還未安裝 CLI,請按照[快速入門](/zh-TW/quickstart)進行安裝。當 `claude` 不在您的 PATH 中時,外掛程式會顯示'無法啟動 Claude Code'通知。

43 </Step>

44 

45 <Step title="安裝 JetBrains 外掛程式">

46 從 JetBrains Marketplace 安裝 [Claude Code 外掛程式](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-),然後重新啟動您的 IDE。

47 </Step>

48</Steps>

49 

50如果 `claude` 安裝在您的 IDE 找不到的位置,請在外掛程式的 [Claude 命令設定](#general-settings)中設定完整路徑。

35 51 

36如果您還未安裝 Claude Code,請參閱[快速入門指南](/zh-TW/quickstart)以取得安裝說明52Claude Code 適用於任何付費 Claude 訂閱(Pro、Max、Team 或 Enterprise)或 Claude Console 帳戶無需 API 金鑰。當您第一次執行 `claude` 時,系統會提示您[登入](/zh-TW/authentication#log-in-to-claude-code) Claude Code

37 53 

38<Note>54<Note>

39 安裝外掛程式後,您可能需要完全重新啟動 IDE 才能使其生效。55 安裝外掛程式後,您可能需要完全重新啟動 IDE 才能使其生效。

40</Note>56</Note>

41 57 

42## 使用方式58<h2 id="usage">

59 使用方式

60</h2>

43 61 

44### 從您的 IDE62<h3 id="from-your-ide">

63 從您的 IDE

64</h3>

45 65 

46從 IDE 的整合終端機執行 `claude`,所有整合功能將處於活躍狀態。66從 IDE 的整合終端機執行 `claude`,所有整合功能將處於活躍狀態。

47 67 

48### 從外部終端機68<h3 id="from-external-terminals">

69 從外部終端機

70</h3>

49 71 

50在任何外部終端機中使用 `/ide` 命令,將 Claude Code 連接到您的 JetBrains IDE 並啟動所有功能:72在任何外部終端機中使用 `/ide` 命令,將 Claude Code 連接到您的 JetBrains IDE 並啟動所有功能:

51 73 


59 81 

60如果您希望 Claude 能夠存取與 IDE 相同的檔案,請從與 IDE 專案根目錄相同的目錄啟動 Claude Code。82如果您希望 Claude 能夠存取與 IDE 相同的檔案,請從與 IDE 專案根目錄相同的目錄啟動 Claude Code。

61 83 

62## 設定84<h2 id="configuration">

85 設定

86</h2>

63 87 

64### Claude Code 設定88<h3 id="claude-code-settings">

89 Claude Code 設定

90</h3>

65 91 

66透過 Claude Code 的設定來設定 IDE 整合:92透過 Claude Code 的設定來設定 IDE 整合:

67 93 


692. 輸入 `/config` 命令952. 輸入 `/config` 命令

703. 將差異工具設定為 `auto` 以在 IDE 中顯示差異,或設定為 `terminal` 以在終端機中保留差異963. 將差異工具設定為 `auto` 以在 IDE 中顯示差異,或設定為 `terminal` 以在終端機中保留差異

71 97 

72### 外掛程式設定98<h3 id="plugin-settings">

99 外掛程式設定

100</h3>

73 101 

74透過前往 **Settings → Tools → Claude Code \[Beta]** 來設定 Claude Code 外掛程式:102透過前往 **Settings → Tools → Claude Code \[Beta]** 來設定 Claude Code 外掛程式:

75 103 

76#### 一般設定104<h4 id="general-settings">

105 一般設定

106</h4>

77 107 

78* **Claude 命令**:指定自訂命令以執行 Claude,例如 `claude`、`/usr/local/bin/claude` 或 `npx @anthropic-ai/claude-code`108* **Claude 命令**:指定自訂命令以執行 Claude,例如 `claude`、`/usr/local/bin/claude` 或 `npx @anthropic-ai/claude-code`

79* **抑制找不到 Claude 命令的通知**:略過有關找不到 Claude 命令的通知109* **抑制找不到 Claude 命令的通知**:略過有關找不到 Claude 命令的通知


84 對於 WSL 使用者:將 `wsl -d Ubuntu -- bash -lic "claude"` 設定為您的 Claude 命令(將 `Ubuntu` 替換為您的 WSL 發行版名稱)114 對於 WSL 使用者:將 `wsl -d Ubuntu -- bash -lic "claude"` 設定為您的 Claude 命令(將 `Ubuntu` 替換為您的 WSL 發行版名稱)

85</Tip>115</Tip>

86 116 

87#### ESC 鍵設定117<h4 id="esc-key-configuration">

118 ESC 鍵設定

119</h4>

88 120 

89如果 ESC 鍵無法在 JetBrains 終端機中中斷 Claude Code 操作:121如果 ESC 鍵無法在 JetBrains 終端機中中斷 Claude Code 操作:

90 122 


96 128 

97這將允許 ESC 鍵正確中斷 Claude Code 操作。129這將允許 ESC 鍵正確中斷 Claude Code 操作。

98 130 

99## 特殊設定131<h2 id="special-configurations">

132 特殊設定

133</h2>

100 134 

101### 遠端開發135<h3 id="remote-development">

136 遠端開發

137</h3>

102 138 

103<Warning>139<Warning>

104 使用 JetBrains 遠端開發時,您必須透過 **Settings → Plugin (Host)** 在遠端主機上安裝外掛程式。140 使用 JetBrains 遠端開發時,您必須透過 **Settings → Plugin (Host)** 在遠端主機上安裝外掛程式。


106 142 

107外掛程式必須安裝在遠端主機上,而不是在您的本機用戶端機器上。143外掛程式必須安裝在遠端主機上,而不是在您的本機用戶端機器上。

108 144 

109### WSL 設定145<h3 id="wsl-configuration">

146 WSL 設定

147</h3>

110 148 

111如果您在 WSL2 上使用 Claude Code 搭配 JetBrains IDE,並看到「未偵測到可用的 IDEs」,原因通常是 WSL2 的 NAT 網路或 Windows 防火牆阻止了 WSL2 與在 Windows 主機上執行的 IDE 之間的連線。WSL1 直接使用主機的網路,不受影響。149如果您在 WSL2 上使用 Claude Code 搭配 JetBrains IDE,並看到「未偵測到可用的 IDEs」,原因通常是 WSL2 的 NAT 網路或 Windows 防火牆阻止了 WSL2 與在 Windows 主機上執行的 IDE 之間的連線。WSL1 直接使用主機的網路,不受影響。

112 150 

113#### 允許 WSL2 流量通過 Windows 防火牆151<h4 id="allow-wsl2-traffic-through-windows-firewall">

152 允許 WSL2 流量通過 Windows 防火牆

153</h4>

114 154 

115這是建議的修復方式,因為它保持您現有的 WSL2 網路模式。155這是建議的修復方式,因為它保持您現有的 WSL2 網路模式。

116 156 


138 </Step>178 </Step>

139</Steps>179</Steps>

140 180 

141#### 將 WSL2 切換為鏡像網路181<h4 id="switch-wsl2-to-mirrored-networking">

182 將 WSL2 切換為鏡像網路

183</h4>

142 184 

143鏡像網路需要 Windows 11 22H2 或更新版本。如果您使用 Windows 10,請改用上述防火牆規則。185鏡像網路需要 Windows 11 22H2 或更新版本。如果您使用 Windows 10,請改用上述防火牆規則。

144 186 


151 193 

152然後從 PowerShell 使用 `wsl --shutdown` 重新啟動 WSL。194然後從 PowerShell 使用 `wsl --shutdown` 重新啟動 WSL。

153 195 

154## 疑難排解196<h2 id="troubleshooting">

197 疑難排解

198</h2>

155 199 

156### 外掛程式無法運作200<h3 id="plugin-not-working">

201 外掛程式無法運作

202</h3>

157 203 

158如果外掛程式已安裝但 Claude Code 功能未出現在您的 IDE 中:204如果外掛程式已安裝但 Claude Code 功能未出現在您的 IDE 中:

159 205 


162* 完全重新啟動 IDE(您可能需要執行多次)208* 完全重新啟動 IDE(您可能需要執行多次)

163* 對於遠端開發,確保外掛程式已安裝在遠端主機上209* 對於遠端開發,確保外掛程式已安裝在遠端主機上

164 210 

165### IDE 未被偵測211<h3 id="ide-not-detected">

212 IDE 未被偵測

213</h3>

166 214 

167如果執行 `claude` 顯示「未偵測到可用的 IDEs」:215如果執行 `claude` 顯示「未偵測到可用的 IDEs」:

168 216 

169* 驗證外掛程式已安裝並啟用217* 驗證外掛程式已安裝並啟用

170* 完全重新啟動 IDE218* 完全重新啟動 IDE

171* 檢查您是否從整合終端機執行 Claude Code219* 檢查您是否從整合終端機執行 Claude Code

172* 對於 WSL 使用者,請參閱上方的 [WSL 設定](#wsl-設定)220* 對於 WSL 使用者,請參閱上方的 [WSL 設定](#wsl-configuration)

173 221 

174### 找不到命令222<h3 id="command-not-found">

223 找不到命令

224</h3>

175 225 

176如果點擊 Claude 圖示顯示「找不到命令」:226如果點擊 Claude 圖示顯示「找不到命令」:

177 227 


1792. 在外掛程式設定中設定 Claude 命令路徑2292. 在外掛程式設定中設定 Claude 命令路徑

1803. 對於 WSL 使用者,使用設定部分中提到的 WSL 命令格式2303. 對於 WSL 使用者,使用設定部分中提到的 WSL 命令格式

181 231 

182## 安全考量232<h2 id="security-considerations">

233 安全考量

234</h2>

183 235 

184當 Claude Code 在啟用自動編輯權限的 JetBrains IDE 中執行時,它可能能夠修改可由您的 IDE 自動執行的 IDE 設定檔。這可能會增加在自動編輯模式下執行 Claude Code 的風險,並允許繞過 Claude Code 對 bash 執行的權限提示。236當 Claude Code 在啟用自動編輯權限的 JetBrains IDE 中執行時,它可能能夠修改可由您的 IDE 自動執行的 IDE 設定檔。這可能會增加在自動編輯模式下執行 Claude Code 的風險,並允許繞過 Claude Code 對 bash 執行的權限提示。

185 237 

keybindings.md +2 −2

Details

203在 `Task` 上下文中可用的動作:203在 `Task` 上下文中可用的動作:

204 204 

205| 動作 | 預設值 | 說明 |205| 動作 | 預設值 | 說明 |

206| :---------------- | :----- | :------- |206| :---------------- | :-------------------- | :------------------------------------------------------------------------------------ |

207| `task:background` | Ctrl+B | 背景執行目前工作 |207| `task:background` | Ctrl+B, Ctrl+X Ctrl+B | 背景執行目前工作。{/* min-version: 2.1.169 */}Ctrl+X Ctrl+B 快捷鍵需要 v2.1.169 或更新版本,並避免 tmux 前綴衝突 |

208 208 

209<h3 id="theme-actions">209<h3 id="theme-actions">

210 主題動作210 主題動作

Details

148 148 

149將此用於您從不使用的目錄,例如其他團隊的套件、舊程式碼或供應商子樹。排除清單是靜態的,不是按任務的開關。若要今天專注於一個套件,明天專注於另一個套件,請[從該套件的目錄啟動 Claude](#choose-where-to-start-claude),而不是編輯排除項。149將此用於您從不使用的目錄,例如其他團隊的套件、舊程式碼或供應商子樹。排除清單是靜態的,不是按任務的開關。若要今天專注於一個套件,明天專注於另一個套件,請[從該套件的目錄啟動 Claude](#choose-where-to-start-claude),而不是編輯排除項。

150 150 

151如果您只想為自己進行這些排除,請將設定放在 `.claude/settings.local.json` 中,該檔案被 gitignored 且未提交。模式使用針對絕對檔案路徑匹配的 glob 語法,因此以 `**/` 開始相對樣式的模式以在樹中的任何地方匹配。下面的範例排除由其他團隊擁有的套件:151如果您只想為自己進行這些排除,請將設定放在 `.claude/settings.local.json` 中。Claude Code 在建立該檔案時會將其 gitignore;由於您在此手動建立它,請將其添加到您的 gitignore。模式使用針對絕對檔案路徑匹配的 glob 語法,因此以 `**/` 開始相對樣式的模式以在樹中的任何地方匹配。下面的範例排除由其他團隊擁有的套件:

152 152 

153```json .claude/settings.local.json theme={null}153```json .claude/settings.local.json theme={null}

154{154{

llm-gateway.md +11 −9

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# LLM gateway 配置5# LLM gateway 設定

6 6 

7> 了解如何配置 Claude Code 以使用 LLM gateway 解決方案。涵蓋 gateway 要求、身份驗證配置、模型選擇和提供商特定的端點設置。7> 了解如何設定 Claude Code 以使用 LLM gateway 解決方案。涵蓋 gateway 要求、身份驗證設定、模型選擇和提供商特定的端點設置。

8 8 

9LLM gateway 提供了 Claude Code 和模型提供商之間的集中代理層,通常提供:9LLM gateway 提供了 Claude Code 和模型提供商之間的集中代理層,通常提供:

10 10 

11* **集中身份驗證** - 單一 API 密鑰管理點11* **集中身份驗證** - 單一 API 金鑰管理點

12* **使用情況追蹤** - 監控跨團隊和項目的使用情況12* **使用情況追蹤** - 監控跨團隊和專案的使用情況

13* **成本控制** - 實施預算和速率限制13* **成本控制** - 實施預算和速率限制

14* **審計日誌** - 追蹤所有模型交互以進行合規性檢查14* **審計日誌** - 追蹤所有模型互動以進行合規性檢查

15* **模型路由** - 無需更改代碼即可在提供商之間切換15* **模型路由** - 無需更改程式碼即可在提供商之間切換

16 

17此頁面涵蓋 Claude Code CLI 的 gateway 要求和設定。企業桌面部署可以透過[受管設定](https://support.claude.com/zh-TW/articles/12622667-enterprise-configuration)設定 gateway 提供商。Claude Desktop 應用程式也可以透過 [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/gateway) 針對自託管 gateway 執行,該預覽使用自己的設定金鑰。

16 18 

17<h2 id="gateway-requirements">19<h2 id="gateway-requirements">

18 Gateway 要求20 Gateway 要求


238</h2>240</h2>

239 241 

240* [LiteLLM 文檔](https://docs.litellm.ai/)242* [LiteLLM 文檔](https://docs.litellm.ai/)

241* [Claude Code 設置](/zh-TW/settings)243* [Claude Code 設定](/zh-TW/settings)

242* [企業網絡配置](/zh-TW/network-config)244* [企業網路配置](/zh-TW/network-config)

243* [第三方集成概述](/zh-TW/third-party-integrations)245* [第三方整合概述](/zh-TW/third-party-integrations)

mcp.md +161 −75

Details

12 12 

13如果您是第一次連接 server,請從 [MCP 快速入門](/zh-TW/mcp-quickstart) 開始,以取得逐步說明。本頁面是完整參考。13如果您是第一次連接 server,請從 [MCP 快速入門](/zh-TW/mcp-quickstart) 開始,以取得逐步說明。本頁面是完整參考。

14 14 

15## 使用 MCP 可以做什麼15<h2 id="what-you-can-do-with-mcp">

16 使用 MCP 可以做什麼

17</h2>

16 18 

17連接 MCP servers 後,您可以要求 Claude Code:19連接 MCP servers 後,您可以要求 Claude Code:

18 20 


23* **自動化工作流程**:"建立 Gmail 草稿,邀請這 10 個使用者參加關於新功能的回饋會議。"25* **自動化工作流程**:"建立 Gmail 草稿,邀請這 10 個使用者參加關於新功能的回饋會議。"

24* **回應外部事件**:MCP server 也可以充當 [channel](/zh-TW/channels),將訊息推送到您的 session 中,因此當您不在時,Claude 可以回應 Telegram 訊息、Discord 聊天或 webhook 事件。26* **回應外部事件**:MCP server 也可以充當 [channel](/zh-TW/channels),將訊息推送到您的 session 中,因此當您不在時,Claude 可以回應 Telegram 訊息、Discord 聊天或 webhook 事件。

25 27 

26## 尋找並建立 MCP servers28<h2 id="find-and-build-mcp-servers">

29 尋找並建立 MCP servers

30</h2>

27 31 

28在 [Anthropic Directory](https://claude.ai/directory) 中瀏覽已審核的連接器。Directory 連接器使用與 Claude Code 相同的 MCP 基礎設施,因此您可以使用 `claude mcp add` 新增任何列在其中的遠端伺服器。32在 [Anthropic Directory](https://claude.ai/directory) 中瀏覽已審核的連接器。Directory 連接器使用與 Claude Code 相同的 MCP 基礎設施,因此您可以使用 `claude mcp add` 新增任何列在其中的遠端伺服器。

29 33 


55 </Step>59 </Step>

56</Steps>60</Steps>

57 61 

58## 安裝 MCP servers62<h2 id="installing-mcp-servers">

63 安裝 MCP servers

64</h2>

59 65 

60MCP servers 可以根據您的需求以多種方式進行配置:66MCP servers 可以根據您的需求以多種方式進行配置:

61 67 

62### 選項 1:新增遠端 HTTP server68<h3 id="option-1-add-a-remote-http-server">

69 選項 1:新增遠端 HTTP server

70</h3>

63 71 

64HTTP servers 是連接到遠端 MCP servers 的推薦選項。這是雲端服務最廣泛支援的傳輸方式。72HTTP servers 是連接到遠端 MCP servers 的推薦選項。這是雲端服務最廣泛支援的傳輸方式。

65 73 


77 85 

78當透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 配置 MCP servers 時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸,因此從 server 文件複製的配置無需修改即可運作。86當透過 `.mcp.json`、`~/.claude.json` 或 `claude mcp add-json` 中的 JSON 配置 MCP servers 時,`type` 欄位接受 `streamable-http` 作為 `http` 的別名。MCP 規範使用名稱 `streamable-http` 作為此傳輸,因此從 server 文件複製的配置無需修改即可運作。

79 87 

80### 選項 2:新增遠端 SSE server88<h3 id="option-2-add-a-remote-sse-server">

89 選項 2:新增遠端 SSE server

90</h3>

81 91 

82<Warning>92<Warning>

83 SSE (Server-Sent Events) 傳輸已棄用。請改用 HTTP servers(如果可用)。93 SSE (Server-Sent Events) 傳輸已棄用。請改用 HTTP servers(如果可用)。


95 --header "X-API-Key: your-key-here"105 --header "X-API-Key: your-key-here"

96```106```

97 107 

98### 選項 3:新增本機 stdio server108<h3 id="option-3-add-a-local-stdio-server">

109 選項 3:新增本機 stdio server

110</h3>

99 111 

100Stdio servers 在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。112Stdio servers 在您的機器上作為本機程序執行。它們非常適合需要直接系統存取或自訂指令碼的工具。

101 113 


108claude mcp add [options] <name> -- <command> [args...]120claude mcp add [options] <name> -- <command> [args...]

109 121 

110# 實際範例:新增 Airtable server122# 實際範例:新增 Airtable server

111claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \123claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \

112 -- npx -y airtable-mcp-server124 -- npx -y airtable-mcp-server

113```125```

114 126 

115<Note>127<Note>

116 **重要:選項順序**128 **重要:使用 `--` 分隔 server 引數**

117 129 

118 所有選項(`--transport``--env`、`--scope``--header`)必須在 server 名稱**之前**然後 `--` (雙破折號) 將 server 名稱與傳遞給 MCP server 的命令和引數分開130 對於 stdio servers,`--` (雙破折號) 將 Claude 自己的選項(例如 `--transport`、`--env``--scope`)與執行 server 的命令和引數分開。`--` 之後的所有內容都會原封不動地傳遞給 server。

119 131 

120 例如:132 例如:

121 133 

122 * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`134 * `claude mcp add --transport stdio myserver -- npx server` → 執行 `npx server`

123 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → 執行 `python server.py --port 8080`,環境中有 `KEY=value`135 * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → 執行 `python server.py --port 8080`,環境中有 `KEY=value`

124 136 

125 這可以防止 Claude 的旗標與 server 旗標之間的衝突137 沒有 `--`,Claude Code 會嘗試解析 server 的旗標(例如上面的 `--port`)作為自己的選項

138 

139 `--env` 接受多個 `KEY=value` 對。如果 server 名稱直接跟在 `--env` 之後,CLI 會將該名稱讀取為另一對並拒絕它,因此請在 `--env` 和 server 名稱之間放置至少一個其他選項,如上面的範例所示。

126</Note>140</Note>

127 141 

128### 選項 4:新增遠端 WebSocket server142<h3 id="option-4-add-a-remote-websocket-server">

143 選項 4:新增遠端 WebSocket server

144</h3>

129 145 

130WebSocket servers 保持持久的雙向連接,適合遠端 MCP servers 主動向 Claude 推送事件。當您的 server 只回應請求時,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 都不支援。146WebSocket servers 保持持久的雙向連接,適合遠端 MCP servers 主動向 Claude 推送事件。當您的 server 只回應請求時,請改用 HTTP,因為 HTTP 支援 OAuth 和 `claude mcp add --transport` 旗標,而 WebSocket 都不支援。

131 147 


138 154 

139`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。驗證僅限標頭,因此在 `headers` 中傳遞靜態 token,或在連接時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 生成一個。`claude mcp add --transport` 旗標不接受 `ws`。155`type: "ws"` 項目接受與 `http` 相同的 `url`、`headers`、`headersHelper`、`timeout` 和 `alwaysLoad` 欄位。驗證僅限標頭,因此在 `headers` 中傳遞靜態 token,或在連接時使用 [`headersHelper`](#use-dynamic-headers-for-custom-authentication) 生成一個。`claude mcp add --transport` 旗標不接受 `ws`。

140 156 

141### 管理您的 servers157<h3 id="managing-your-servers">

158 管理您的 servers

159</h3>

142 160 

143配置後,您可以使用這些命令管理您的 MCP servers:161配置後,您可以使用這些命令管理您的 MCP servers:

144 162 


164 182 

165server 名稱 `workspace` 保留供內部使用。如果您的配置定義了具有該名稱的 server,Claude Code 會在載入時跳過它,並顯示警告要求您重新命名它。183server 名稱 `workspace` 保留供內部使用。如果您的配置定義了具有該名稱的 server,Claude Code 會在載入時跳過它,並顯示警告要求您重新命名它。

166 184 

167### 動態工具更新185<h3 id="dynamic-tool-updates">

186 動態工具更新

187</h3>

168 188 

169Claude Code 支援 MCP `list_changed` 通知,允許 MCP servers 動態更新其可用工具、提示和資源,而無需您斷開連接並重新連接。當 MCP server 傳送 `list_changed` 通知時,Claude Code 會自動重新整理該 server 的可用功能。189Claude Code 支援 MCP `list_changed` 通知,允許 MCP servers 動態更新其可用工具、提示和資源,而無需您斷開連接並重新連接。當 MCP server 傳送 `list_changed` 通知時,Claude Code 會自動重新整理該 server 的可用功能。

170 190 

171### 自動重新連接191<h3 id="automatic-reconnection">

192 自動重新連接

193</h3>

172 194 

173如果 HTTP 或 SSE server 在 session 中途斷開連接,Claude Code 會自動以指數退避方式重新連接:最多五次嘗試,從一秒延遲開始,每次加倍。在 `/mcp` 中,server 會顯示為待處理狀態,同時重新連接正在進行中。五次失敗嘗試後,server 被標記為失敗,您可以從 `/mcp` 手動重試。Stdio servers 是本機程序,不會自動重新連接。195如果 HTTP 或 SSE server 在 session 中途斷開連接,Claude Code 會自動以指數退避方式重新連接:最多五次嘗試,從一秒延遲開始,每次加倍。在 `/mcp` 中,server 會顯示為待處理狀態,同時重新連接正在進行中。五次失敗嘗試後,server 被標記為失敗,您可以從 `/mcp` 手動重試。Stdio servers 是本機程序,不會自動重新連接。

174 196 

175相同的退避策略適用於 HTTP 或 SSE server 在啟動時初始連接失敗的情況。自 v2.1.121 起,Claude Code 在暫時性錯誤(例如 5xx 回應、連接被拒絕或逾時)上最多重試初始連接三次,如果仍無法連接,則將 server 標記為失敗。驗證和找不到錯誤不會重試,因為它們需要配置變更才能解決。197相同的退避策略適用於 HTTP 或 SSE server 在啟動時初始連接失敗的情況。自 v2.1.121 起,Claude Code 在暫時性錯誤(例如 5xx 回應、連接被拒絕或逾時)上最多重試初始連接三次,如果仍無法連接,則將 server 標記為失敗。驗證和找不到錯誤不會重試,因為它們需要配置變更才能解決。

176 198 

177### 使用 channels 推送訊息199<h3 id="push-messages-with-channels">

200 使用 channels 推送訊息

201</h3>

178 202 

179MCP server 也可以直接將訊息推送到您的 session 中,以便 Claude 可以回應外部事件,例如 CI 結果、監控警報或聊天訊息。若要啟用此功能,您的 server 宣告 `claude/channel` 功能,並在啟動時使用 `--channels` 旗標選擇加入。請參閱 [Channels](/zh-TW/channels) 以使用官方支援的 channel,或 [Channels reference](/zh-TW/channels-reference) 以建立您自己的。203MCP server 也可以直接將訊息推送到您的 session 中,以便 Claude 可以回應外部事件,例如 CI 結果、監控警報或聊天訊息。若要啟用此功能,您的 server 宣告 `claude/channel` 功能,並在啟動時使用 `--channels` 旗標選擇加入。請參閱 [Channels](/zh-TW/channels) 以使用官方支援的 channel,或 [Channels reference](/zh-TW/channels-reference) 以建立您自己的。

180 204 


192 * 使用 `/mcp` 向需要 OAuth 2.0 驗證的遠端 servers 進行驗證216 * 使用 `/mcp` 向需要 OAuth 2.0 驗證的遠端 servers 進行驗證

193</Tip>217</Tip>

194 218 

195每個 server 的 `timeout` 是每個工具呼叫的硬牆鐘限制,來自 server 的進度通知不會延長它。低於 1000 的值會被調整為一秒。對於 HTTP 和 SSE servers,每個請求的 fetch 首位元組預算無論此值如何都有 60 秒的最小值,因此只有工具呼叫看門狗會遵守較小的值219每個 server 的 `timeout` 是每個工具呼叫的硬牆鐘限制,來自 server 的進度通知不會延長它。低於 1000 的值會被忽略並落回到 `MCP_TOOL_TIMEOUT`,或在該變數未設定時落回到其預設值約 28 小時{/* min-version: 2.1.162 */}在 v2.1.162 之前,低於 1000 的值被調整為一秒。對於 HTTP 和 SSE servers,每個請求的 fetch 首位元組預算有 60 秒的最小值。

196 220 

197### Plugin 提供的 MCP servers221<h3 id="plugin-provided-mcp-servers">

222 Plugin 提供的 MCP servers

223</h3>

198 224 

199[Plugins](/zh-TW/plugins) 可以捆綁 MCP servers,在啟用 plugin 時自動提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。225[Plugins](/zh-TW/plugins) 可以捆綁 MCP servers,在啟用 plugin 時自動提供工具和整合。Plugin MCP servers 的工作方式與使用者配置的 servers 相同。

200 226 


240**Plugin MCP 功能**:266**Plugin MCP 功能**:

241 267 

242* **自動生命週期**:在 session 啟動時,已啟用 plugins 的 servers 會自動連接。如果您在 session 期間啟用或停用 plugin,請執行 `/reload-plugins` 以連接或斷開其 MCP servers268* **自動生命週期**:在 session 啟動時,已啟用 plugins 的 servers 會自動連接。如果您在 session 期間啟用或停用 plugin,請執行 `/reload-plugins` 以連接或斷開其 MCP servers

243* **環境變數**:使用 `${CLAUDE_PLUGIN_ROOT}` 表示 plugin 根目錄中的捆綁 plugin 檔案,`${CLAUDE_PLUGIN_DATA}` 表示 [persistent state](/zh-TW/plugins-reference#persistent-data-directory) 在 plugin 更新後仍然存在,以及 `${CLAUDE_PROJECT_DIR}` 表示穩定的專案根目錄269* **環境變數**:使用 `${CLAUDE_PLUGIN_ROOT}` 表示捆綁的 plugin 檔案,`${CLAUDE_PLUGIN_DATA}` 表示 [persistent state](/zh-TW/plugins-reference#persistent-data-directory) 在 plugin 更新後仍然存在,以及 `${CLAUDE_PROJECT_DIR}` 表示穩定的專案根目錄

244* **使用者環境存取**:存取與手動配置的 servers 相同的環境變數270* **使用者環境存取**:存取與手動配置的 servers 相同的環境變數

245* **多種傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸 (傳輸支援可能因 server 而異)271* **多種傳輸類型**:支援 stdio、SSE、HTTP 和 WebSocket 傳輸 (傳輸支援可能因 server 而異)

246 272 


253 279 

254Plugin servers 在列表中出現,並有指示器顯示它們來自 plugins。280Plugin servers 在列表中出現,並有指示器顯示它們來自 plugins。

255 281 

282**Plugin MCP 工具名稱**:

283 

284來自 plugin 捆綁的 MCP server 的工具在其可呼叫名稱中包含 plugin 名稱和 server 金鑰。完整形式是 `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`,其中 `A-Z`、`a-z`、`0-9`、`_` 和 `-` 以外的任何字元都被替換為 `_`。對於在名為 `my-plugin` 的 plugin 中捆綁的 `database-tools` server,`query` 工具可呼叫為:

285 

286```

287mcp__plugin_my-plugin_database-tools__query

288```

289 

290在 [permission rules](/zh-TW/permissions)、skill 的 `allowed-tools` 列表或 [subagent 的 `tools` 欄位](/zh-TW/sub-agents#available-tools) 中參考工具時,請使用此完整名稱。

291 

256**Plugin MCP servers 的優點**:292**Plugin MCP servers 的優點**:

257 293 

258* **捆綁分發**:工具和 servers 一起打包294* **捆綁分發**:工具和 servers 一起打包


261 297 

262請參閱 [plugin 元件參考](/zh-TW/plugins-reference#mcp-servers),了解有關使用 plugins 捆綁 MCP servers 的詳細資訊。298請參閱 [plugin 元件參考](/zh-TW/plugins-reference#mcp-servers),了解有關使用 plugins 捆綁 MCP servers 的詳細資訊。

263 299 

264## MCP 安裝範圍300<h2 id="mcp-installation-scopes">

301 MCP 安裝範圍

302</h2>

265 303 

266MCP servers 可以在三個不同的範圍級別進行配置。您選擇的範圍控制 server 在哪些專案中載入,以及配置是否與您的團隊共享。管理員也可以透過[受管配置](#managed-mcp-configuration)在企業級別部署 servers。304MCP servers 可以在三個不同的範圍級別進行配置。您選擇的範圍控制 server 在哪些專案中載入,以及配置是否與您的團隊共享。管理員也可以透過[受管配置](#managed-mcp-configuration)在企業級別部署 servers。

267 305 


271| [Project](#project-scope) | 僅目前專案 | 是,透過版本控制 | 專案根目錄中的 `.mcp.json` |309| [Project](#project-scope) | 僅目前專案 | 是,透過版本控制 | 專案根目錄中的 `.mcp.json` |

272| [User](#user-scope) | 您的所有專案 | 否 | `~/.claude.json` |310| [User](#user-scope) | 您的所有專案 | 否 | `~/.claude.json` |

273 311 

274### Local scope312<h3 id="local-scope">

313 Local scope

314</h3>

275 315 

276Local scope 是預設值。本機範圍的 server 僅在您新增它的專案中載入,並對您保持私密。Claude Code 將其儲存在 `~/.claude.json` 中該專案的路徑下,因此相同的 server 不會出現在您的其他專案中。使用本機範圍進行個人開發 servers、實驗配置或包含您不想在版本控制中的認證的 servers。316Local scope 是預設值。本機範圍的 server 僅在您新增它的專案中載入,並對您保持私密。Claude Code 將其儲存在 `~/.claude.json` 中該專案的路徑下,因此相同的 server 不會出現在您的其他專案中。使用本機範圍進行個人開發 servers、實驗配置或包含您不想在版本控制中的認證的 servers。

277 317 


304}344}

305```345```

306 346 

307### Project scope347<h3 id="project-scope">

348 Project scope

349</h3>

308 350 

309Project scope 的 servers 透過在專案根目錄中儲存配置在 `.mcp.json` 檔案中來啟用團隊協作。此檔案設計為簽入版本控制,確保所有團隊成員都能存取相同的 MCP 工具和服務。新增 project scope 的 server 時,Claude Code 會自動建立或更新此檔案,使用適當的配置結構。351Project scope 的 servers 透過在專案根目錄中儲存配置在 `.mcp.json` 檔案中來啟用團隊協作。此檔案設計為簽入版本控制,確保所有團隊成員都能存取相同的 MCP 工具和服務。新增 project scope 的 server 時,Claude Code 會自動建立或更新此檔案,使用適當的配置結構。

310 352 


329 371 

330出於安全考慮,Claude Code 在使用來自 `.mcp.json` 檔案的 project scope servers 之前會提示批准。如果您需要重設這些批准選擇,請使用 `claude mcp reset-project-choices` 命令。372出於安全考慮,Claude Code 在使用來自 `.mcp.json` 檔案的 project scope servers 之前會提示批准。如果您需要重設這些批准選擇,請使用 `claude mcp reset-project-choices` 命令。

331 373 

332### User scope374<h3 id="user-scope">

375 User scope

376</h3>

333 377 

334User scope 的 servers 儲存在 `~/.claude.json` 中,並提供跨專案可存取性,使其在您機器上的所有專案中可用,同時對您的使用者帳戶保持私密。此範圍非常適合個人公用程式 servers、開發工具或您在不同專案中經常使用的服務。378User scope 的 servers 儲存在 `~/.claude.json` 中,並提供跨專案可存取性,使其在您機器上的所有專案中可用,同時對您的使用者帳戶保持私密。此範圍非常適合個人公用程式 servers、開發工具或您在不同專案中經常使用的服務。

335 379 


338claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic382claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

339```383```

340 384 

341### Scope 階層和優先順序385<h3 id="scope-hierarchy-and-precedence">

386 Scope 階層和優先順序

387</h3>

342 388 

343當相同的 server 在多個位置定義時,Claude Code 連接到它一次,使用來自最高優先順序來源的定義。整個 server 項目來自該來源;欄位不會跨範圍合併。389當相同的 server 在多個位置定義時,Claude Code 連接到它一次,使用來自最高優先順序來源的定義。整個 server 項目來自該來源;欄位不會跨範圍合併。

344 390 


350 396 

351三個範圍按名稱符合重複項。Plugins 和 connectors 按端點符合,因此指向與上述 server 相同 URL 或命令的端點被視為重複項。397三個範圍按名稱符合重複項。Plugins 和 connectors 按端點符合,因此指向與上述 server 相同 URL 或命令的端點被視為重複項。

352 398 

353### `.mcp.json` 中的環境變數擴展399<h3 id="environment-variable-expansion-in-mcp-json">

400 `.mcp.json` 中的環境變數擴展

401</h3>

354 402 

355Claude Code 支援 `.mcp.json` 檔案中的環境變數擴展,允許團隊共享配置,同時保持機器特定路徑和 API 金鑰等敏感值的靈活性。403Claude Code 支援 `.mcp.json` 檔案中的環境變數擴展,允許團隊共享配置,同時保持機器特定路徑和 API 金鑰等敏感值的靈活性。

356 404 


386 434 

387如果未設定必需的環境變數且沒有預設值,Claude Code 將無法解析配置。435如果未設定必需的環境變數且沒有預設值,Claude Code 將無法解析配置。

388 436 

389## 實用範例437<h2 id="practical-examples">

438 實用範例

439</h2>

390 440 

391{/* ### 範例:使用 Playwright 自動化瀏覽器測試441<h3 id="example-monitor-errors-with-sentry">

392 442 範例:使用 Sentry 監控錯誤

393```bash443</h3>

394claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

395```

396 

397然後編寫並執行瀏覽器測試:

398 

399```text

400Test if the login flow works with test@example.com

401```

402```text

403Take a screenshot of the checkout page on mobile

404```

405```text

406Verify that the search feature returns results

407``` */}

408 

409### 範例:使用 Sentry 監控錯誤

410 444 

411```bash theme={null}445```bash theme={null}

412claude mcp add --transport http sentry https://mcp.sentry.dev/mcp446claude mcp add --transport http sentry https://mcp.sentry.dev/mcp


432哪個部署引入了這些新錯誤?466哪個部署引入了這些新錯誤?

433```467```

434 468 

435### 範例:連接到 GitHub 進行程式碼審查469<h3 id="example-connect-to-github-for-code-reviews">

470 範例:連接到 GitHub 進行程式碼審查

471</h3>

436 472 

437GitHub 的遠端 MCP server 使用作為標頭傳遞的 GitHub 個人存取 token 進行驗證。若要取得一個,請開啟您的 [GitHub token 設定](https://github.com/settings/personal-access-tokens),產生一個新的細粒度 token,具有對您希望 Claude 使用的儲存庫的存取權,然後新增 server:473GitHub 的遠端 MCP server 使用作為標頭傳遞的 GitHub 個人存取 token 進行驗證。若要取得一個,請開啟您的 [GitHub token 設定](https://github.com/settings/personal-access-tokens),產生一個新的細粒度 token,具有對您希望 Claude 使用的儲存庫的存取權,然後新增 server:

438 474 


455顯示所有指派給我的開放 PRs491顯示所有指派給我的開放 PRs

456```492```

457 493 

458### 範例:查詢您的 PostgreSQL 資料庫494<h3 id="example-query-your-postgresql-database">

495 範例:查詢您的 PostgreSQL 資料庫

496</h3>

459 497 

460```bash theme={null}498```bash theme={null}

461claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \499claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \


476找到 90 天內未進行購買的客戶514找到 90 天內未進行購買的客戶

477```515```

478 516 

479## 使用遠端 MCP servers 進行驗證517<h2 id="authenticate-with-remote-mcp-servers">

518 使用遠端 MCP servers 進行驗證

519</h2>

480 520 

481許多雲端 MCP servers 需要驗證。Claude Code 支援 OAuth 2.0 以進行安全連接。521許多雲端 MCP servers 需要驗證。Claude Code 支援 OAuth 2.0 以進行安全連接。

482 522 


514 * OAuth 驗證適用於 HTTP servers554 * OAuth 驗證適用於 HTTP servers

515</Tip>555</Tip>

516 556 

517### 使用固定的 OAuth 回呼連接埠557<h3 id="use-a-fixed-oauth-callback-port">

558 使用固定的 OAuth 回呼連接埠

559</h3>

518 560 

519某些 MCP servers 需要預先註冊的特定重新導向 URI。根據預設,Claude Code 為 OAuth 回呼選擇隨機可用連接埠。使用 `--callback-port` 固定連接埠,使其符合 `http://localhost:PORT/callback` 形式的預先註冊重新導向 URI。561某些 MCP servers 需要預先註冊的特定重新導向 URI。根據預設,Claude Code 為 OAuth 回呼選擇隨機可用連接埠。使用 `--callback-port` 固定連接埠,使其符合 `http://localhost:PORT/callback` 形式的預先註冊重新導向 URI。

520 562 


527 my-server https://mcp.example.com/mcp569 my-server https://mcp.example.com/mcp

528```570```

529 571 

530### 使用預先配置的 OAuth 認證572<h3 id="use-pre-configured-oauth-credentials">

573 使用預先配置的 OAuth 認證

574</h3>

531 575 

532某些 MCP servers 不支援透過 Dynamic Client Registration 進行自動 OAuth 設定。如果您看到類似「Incompatible auth server: does not support dynamic client registration」的錯誤,server 需要預先配置的認證。Claude Code 也支援使用 Client ID Metadata Document (CIMD) 而不是 Dynamic Client Registration 的 servers,並自動探索這些。如果自動探索失敗,請先透過 server 的開發人員入口網站註冊 OAuth 應用程式,然後在新增 server 時提供認證。576某些 MCP servers 不支援透過 Dynamic Client Registration 進行自動 OAuth 設定。如果您看到類似「Incompatible auth server: does not support dynamic client registration」的錯誤,server 需要預先配置的認證。Claude Code 也支援使用 Client ID Metadata Document (CIMD) 而不是 Dynamic Client Registration 的 servers,並自動探索這些。如果自動探索失敗,請先透過 server 的開發人員入口網站註冊 OAuth 應用程式,然後在新增 server 時提供認證。

533 577 


598 * 使用 `claude mcp get <name>` 驗證為 server 配置了 OAuth 認證642 * 使用 `claude mcp get <name>` 驗證為 server 配置了 OAuth 認證

599</Tip>643</Tip>

600 644 

601### 覆蓋 OAuth 中繼資料探索645<h3 id="override-oauth-metadata-discovery">

646 覆蓋 OAuth 中繼資料探索

647</h3>

602 648 

603指向 Claude Code 特定的 OAuth 授權 server 中繼資料 URL 以繞過預設探索鏈。當 MCP server 的標準端點出錯時,或當您想要透過內部代理路由探索時,設定 `authServerMetadataUrl`。根據預設,Claude Code 首先檢查 RFC 9728 Protected Resource Metadata at `/.well-known/oauth-protected-resource`,然後回退到 RFC 8414 authorization server metadata at `/.well-known/oauth-authorization-server`。649指向 Claude Code 特定的 OAuth 授權 server 中繼資料 URL 以繞過預設探索鏈。當 MCP server 的標準端點出錯時,或當您想要透過內部代理路由探索時,設定 `authServerMetadataUrl`。根據預設,Claude Code 首先檢查 RFC 9728 Protected Resource Metadata at `/.well-known/oauth-protected-resource`,然後回退到 RFC 8414 authorization server metadata at `/.well-known/oauth-authorization-server`。

604 650 


620 666 

621URL 必須使用 `https://`。`authServerMetadataUrl` 需要 Claude Code v2.1.64 或更新版本。中繼資料 URL 的 `scopes_supported` 會覆蓋上游 server 宣傳的範圍。667URL 必須使用 `https://`。`authServerMetadataUrl` 需要 Claude Code v2.1.64 或更新版本。中繼資料 URL 的 `scopes_supported` 會覆蓋上游 server 宣傳的範圍。

622 668 

623### 限制 OAuth 範圍669<h3 id="restrict-oauth-scopes">

670 限制 OAuth 範圍

671</h3>

624 672 

625設定 `oauth.scopes` 以固定 Claude Code 在授權流程中要求的範圍。這是限制 MCP server 到安全團隊批准的子集的支援方式,當上游授權 server 宣傳的範圍超過您想要授予的範圍時。該值是單個空格分隔的字串,符合 RFC 6749 §3.3 中的 `scope` 參數格式。673設定 `oauth.scopes` 以固定 Claude Code 在授權流程中要求的範圍。這是限制 MCP server 到安全團隊批准的子集的支援方式,當上游授權 server 宣傳的範圍超過您想要授予的範圍時。該值是單個空格分隔的字串,符合 RFC 6749 §3.3 中的 `scope` 參數格式。

626 674 


644 692 

645如果 server 稍後為工具呼叫傳回 403 `insufficient_scope`,Claude Code 會使用相同的固定範圍重新驗證。當您需要的工具需要固定範圍外的範圍時,擴展 `oauth.scopes`。693如果 server 稍後為工具呼叫傳回 403 `insufficient_scope`,Claude Code 會使用相同的固定範圍重新驗證。當您需要的工具需要固定範圍外的範圍時,擴展 `oauth.scopes`。

646 694 

647### 使用動態標頭進行自訂驗證695<h3 id="use-dynamic-headers-for-custom-authentication">

696 使用動態標頭進行自訂驗證

697</h3>

648 698 

649如果您的 MCP server 使用 OAuth 以外的驗證方案 (例如 Kerberos、短期 tokens 或內部 SSO),請使用 `headersHelper` 在連接時產生請求標頭。Claude Code 執行命令並將其輸出合併到連接標頭中。699如果您的 MCP server 使用 OAuth 以外的驗證方案 (例如 Kerberos、短期 tokens 或內部 SSO),請使用 `headersHelper` 在連接時產生請求標頭。Claude Code 執行命令並將其輸出合併到連接標頭中。

650 700 


695 `headersHelper` 執行任意 shell 命令。在專案或本機範圍定義時,它僅在您接受工作區信任對話框後執行。745 `headersHelper` 執行任意 shell 命令。在專案或本機範圍定義時,它僅在您接受工作區信任對話框後執行。

696</Note>746</Note>

697 747 

698## 從 JSON 配置新增 MCP servers748<h2 id="add-mcp-servers-from-json-configuration">

749 從 JSON 配置新增 MCP servers

750</h2>

699 751 

700如果您有 MCP server 的 JSON 配置,您可以直接新增它:752如果您有 MCP server 的 JSON 配置,您可以直接新增它:

701 753 


731 * 您可以使用 `--scope user` 將 server 新增到您的使用者配置,而不是專案特定的配置783 * 您可以使用 `--scope user` 將 server 新增到您的使用者配置,而不是專案特定的配置

732</Tip>784</Tip>

733 785 

734## 從 Claude Desktop 匯入 MCP servers786<h2 id="import-mcp-servers-from-claude-desktop">

787 從 Claude Desktop 匯入 MCP servers

788</h2>

735 789 

736如果您已在 Claude Desktop 中配置了 MCP servers,您可以匯入它們:790如果您已在 Claude Desktop 中配置了 MCP servers,您可以匯入它們:

737 791 


764 * 如果已存在相同名稱的 servers,它們將獲得數字尾碼 (例如,`server_1`)818 * 如果已存在相同名稱的 servers,它們將獲得數字尾碼 (例如,`server_1`)

765</Tip>819</Tip>

766 820 

767## 使用來自 Claude.ai 的 MCP servers821<h2 id="use-mcp-servers-from-claude-ai">

822 使用來自 Claude.ai 的 MCP servers

823</h2>

768 824 

769如果您已使用 [Claude.ai](https://claude.ai) 帳戶登入 Claude Code,您在 Claude.ai 中新增的 MCP servers 會自動在 Claude Code 中可用:825如果您已使用 [Claude.ai](https://claude.ai) 帳戶登入 Claude Code,您在 Claude.ai 中新增的 MCP servers 會自動在 Claude Code 中可用:

770 826 


794 850 

795您在 Claude Code 中新增的 server 優先於指向相同 URL 的 claude.ai connector。發生這種情況時,`/mcp` 會將 connector 列為隱藏,並顯示如何移除重複項(如果您寧願使用 connector)。851您在 Claude Code 中新增的 server 優先於指向相同 URL 的 claude.ai connector。發生這種情況時,`/mcp` 會將 connector 列為隱藏,並顯示如何移除重複項(如果您寧願使用 connector)。

796 852 

853某些 Anthropic 託管的 connectors(例如 Microsoft 365、Gmail 和 Google Calendar)不支援來自 Claude Code 的本機 OAuth,因為上游身分識別提供者只接受 claude.ai 註冊的重新導向 URL。從 v2.1.162 開始,在 `/mcp` 中驗證其中一個主機會顯示一條訊息,指導您改為在 claude.ai 上的'設定'→'Connectors'中連接它。連接後,connector 會自動出現在 Claude Code 中。

854 

797若要在 Claude Code 中停用 claude.ai MCP servers,請將 `ENABLE_CLAUDEAI_MCP_SERVERS` 環境變數設定為 `false`:855若要在 Claude Code 中停用 claude.ai MCP servers,請將 `ENABLE_CLAUDEAI_MCP_SERVERS` 環境變數設定為 `false`:

798 856 

799```bash theme={null}857```bash theme={null}

800ENABLE_CLAUDEAI_MCP_SERVERS=false claude858ENABLE_CLAUDEAI_MCP_SERVERS=false claude

801```859```

802 860 

803## 使用 Claude Code 作為 MCP server861<h2 id="use-claude-code-as-an-mcp-server">

862 使用 Claude Code 作為 MCP server

863</h2>

804 864 

805您可以使用 Claude Code 本身作為其他應用程式可以連接到的 MCP server:865您可以使用 Claude Code 本身作為其他應用程式可以連接到的 MCP server:

806 866 


859 * 請注意,此 MCP server 僅將 Claude Code 的工具公開給您的 MCP 用戶端,因此您自己的用戶端負責為個別工具呼叫實現使用者確認。919 * 請注意,此 MCP server 僅將 Claude Code 的工具公開給您的 MCP 用戶端,因此您自己的用戶端負責為個別工具呼叫實現使用者確認。

860</Tip>920</Tip>

861 921 

862## MCP 輸出限制和警告922<h2 id="mcp-output-limits-and-warnings">

923 MCP 輸出限制和警告

924</h2>

863 925 

864當 MCP 工具產生大型輸出時,Claude Code 可幫助管理 token 使用情況,以防止淹沒您的對話內容:926當 MCP 工具產生大型輸出時,Claude Code 可幫助管理 token 使用情況,以防止淹沒您的對話內容:

865 927 


881* 產生詳細報告或文件943* 產生詳細報告或文件

882* 處理廣泛的日誌檔案或除錯資訊944* 處理廣泛的日誌檔案或除錯資訊

883 945 

884### 提高特定工具的限制946<h3 id="raise-the-limit-for-a-specific-tool">

947 提高特定工具的限制

948</h3>

885 949 

886如果您正在建立 MCP server,您可以透過在工具的 `tools/list` 回應項目中設定 `_meta["anthropic/maxResultSizeChars"]` 來允許個別工具傳回超過預設持久化到磁碟閾值的結果。Claude Code 將該工具的閾值提高到註解值,最高為 500,000 個字元的硬上限。950如果您正在建立 MCP server,您可以透過在工具的 `tools/list` 回應項目中設定 `_meta["anthropic/maxResultSizeChars"]` 來允許個別工具傳回超過預設持久化到磁碟閾值的結果。Claude Code 將該工具的閾值提高到註解值,最高為 500,000 個字元的硬上限。

887 951 


903 如果您經常遇到特定 MCP servers 的輸出警告,請考慮增加 `MAX_MCP_OUTPUT_TOKENS` 限制。您也可以要求 server 作者新增 `anthropic/maxResultSizeChars` 註解或分頁其回應。註解對傳回影像內容的工具沒有影響;對於這些,提高 `MAX_MCP_OUTPUT_TOKENS` 是唯一的選項。967 如果您經常遇到特定 MCP servers 的輸出警告,請考慮增加 `MAX_MCP_OUTPUT_TOKENS` 限制。您也可以要求 server 作者新增 `anthropic/maxResultSizeChars` 註解或分頁其回應。註解對傳回影像內容的工具沒有影響;對於這些,提高 `MAX_MCP_OUTPUT_TOKENS` 是唯一的選項。

904</Warning>968</Warning>

905 969 

906## 回應 MCP 引發請求970<h2 id="respond-to-mcp-elicitation-requests">

971 回應 MCP 引發請求

972</h2>

907 973 

908MCP servers 可以使用引發在任務中途要求您提供結構化輸入。當 server 需要無法自行取得的資訊時,Claude Code 會顯示互動式對話框並將您的回應傳回給 server。您無需進行任何配置:當 server 要求時,引發對話框會自動出現。974MCP servers 可以使用引發在任務中途要求您提供結構化輸入。當 server 需要無法自行取得的資訊時,Claude Code 會顯示互動式對話框並將您的回應傳回給 server。您無需進行任何配置:當 server 要求時,引發對話框會自動出現。

909 975 


912* **表單模式**:Claude Code 顯示一個對話框,其中包含 server 定義的表單欄位 (例如,使用者名稱和密碼提示)。填入欄位並提交。978* **表單模式**:Claude Code 顯示一個對話框,其中包含 server 定義的表單欄位 (例如,使用者名稱和密碼提示)。填入欄位並提交。

913* **URL 模式**:Claude Code 開啟瀏覽器 URL 以進行驗證或批准。在瀏覽器中完成流程,然後在 CLI 中確認。979* **URL 模式**:Claude Code 開啟瀏覽器 URL 以進行驗證或批准。在瀏覽器中完成流程,然後在 CLI 中確認。

914 980 

915若要自動回應引發請求而不顯示對話框,請使用 [`Elicitation` hook](/zh-TW/hooks#Elicitation)。981若要自動回應引發請求而不顯示對話框,請使用 [`Elicitation` hook](/zh-TW/hooks#elicitation)。

916 982 

917如果您正在建立使用引發的 MCP server,請參閱 [MCP 引發規格](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation),了解協議詳細資訊和架構範例。983如果您正在建立使用引發的 MCP server,請參閱 [MCP 引發規格](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation),了解協議詳細資訊和架構範例。

918 984 

919## 使用 MCP 資源985<h2 id="use-mcp-resources">

986 使用 MCP 資源

987</h2>

920 988 

921MCP servers 可以公開資源,您可以使用 @ 提及來參考,類似於您參考檔案的方式。989MCP servers 可以公開資源,您可以使用 @ 提及來參考,類似於您參考檔案的方式。

922 990 

923### 參考 MCP 資源991<h3 id="reference-mcp-resources">

992 參考 MCP 資源

993</h3>

924 994 

925<Steps>995<Steps>

926 <Step title="列出可用資源">996 <Step title="列出可用資源">


957 * 資源可以包含 MCP server 提供的任何類型的內容 (文字、JSON、結構化資料等)1027 * 資源可以包含 MCP server 提供的任何類型的內容 (文字、JSON、結構化資料等)

958</Tip>1028</Tip>

959 1029 

960## 使用 MCP Tool Search 進行擴展1030<h2 id="scale-with-mcp-tool-search">

1031 使用 MCP Tool Search 進行擴展

1032</h2>

961 1033 

962Tool search 透過延遲工具定義直到 Claude 需要它們來保持 MCP 內容使用低。只有工具名稱和伺服器指示在 session 啟動時載入,因此新增更多 MCP servers 對您的內容視窗的影響最小。1034Tool search 透過延遲工具定義直到 Claude 需要它們來保持 MCP 內容使用低。只有工具名稱和伺服器指示在 session 啟動時載入,因此新增更多 MCP servers 對您的內容視窗的影響最小。Claude Code 不會對每個伺服器施加固定的工具上限;實際限制是您的內容視窗預算。

963 1035 

964### 工作原理1036<h3 id="how-it-works">

1037 工作原理

1038</h3>

965 1039 

966Tool search 預設啟用。MCP 工具被延遲而不是預先載入到內容中,Claude 使用搜尋工具在任務需要時探索相關的工具。只有 Claude 實際使用的工具才會進入內容。從您的角度來看,MCP 工具的工作方式完全相同。1040Tool search 預設啟用。MCP 工具被延遲而不是預先載入到內容中,Claude 使用搜尋工具在任務需要時探索相關的工具。只有 Claude 實際使用的工具才會進入內容。從您的角度來看,MCP 工具的工作方式完全相同。

967 1041 

968如果您偏好基於閾值的載入,請設定 `ENABLE_TOOL_SEARCH=auto` 以在工具適合內容視窗的 10% 內時預先載入架構,並僅延遲溢出。請參閱 [配置 tool search](#configure-tool-search) 了解所有選項。1042如果您偏好基於閾值的載入,請設定 `ENABLE_TOOL_SEARCH=auto` 以在工具適合內容視窗的 10% 內時預先載入架構,並僅延遲溢出。請參閱 [配置 tool search](#configure-tool-search) 了解所有選項。

969 1043 

970### 對於 MCP server 作者1044<h3 id="for-mcp-server-authors">

1045 對於 MCP server 作者

1046</h3>

971 1047 

972如果您正在建立 MCP server,啟用 Tool Search 時 server 指示欄位會變得更有用。Server 指示可幫助 Claude 了解何時搜尋您的工具,類似於 [skills](/zh-TW/skills) 的工作方式。1048如果您正在建立 MCP server,啟用 Tool Search 時 server 指示欄位會變得更有用。Server 指示可幫助 Claude 了解何時搜尋您的工具,類似於 [skills](/zh-TW/skills) 的工作方式。

973 1049 


979 1055 

980Claude Code 將工具描述和 server 指示截斷為每個 2KB。保持簡潔以避免截斷,並將關鍵詳細資訊放在開始處。1056Claude Code 將工具描述和 server 指示截斷為每個 2KB。保持簡潔以避免截斷,並將關鍵詳細資訊放在開始處。

981 1057 

982### 配置 tool search1058<h3 id="configure-tool-search">

1059 配置 tool search

1060</h3>

983 1061 

984Tool search 預設啟用:MCP 工具被延遲並按需探索。Claude Code 在 Vertex AI 上預設停用它。當 `ANTHROPIC_BASE_URL` 指向非第一方主機時,它也被停用,因為大多數代理不轉發 `tool_reference` 區塊。設定 `ENABLE_TOOL_SEARCH` 明確以覆蓋任一回退。1062Tool search 預設啟用:MCP 工具被延遲並按需探索。Claude Code 在 Vertex AI 上預設停用它。當 `ANTHROPIC_BASE_URL` 指向非第一方主機時,它也被停用,因為大多數代理不轉發 `tool_reference` 區塊。設定 `ENABLE_TOOL_SEARCH` 明確以覆蓋任一回退。

985 1063 

986Tool search 需要支援 `tool_reference` 區塊的模型:Sonnet 4 及更新版本,或 Opus 4 及更新版本。Haiku 模型不支援它。在 Vertex AI 上,tool search 支援 Claude Sonnet 4.5 及更新版本和 Claude Opus 4.5 及更新版本。1064Tool search 需要支援 `tool_reference` 區塊的模型。Haiku 模型不支援它。在 Vertex AI 上,tool search 支援 Claude Sonnet 4.5 及更新版本和 Claude Opus 4.5 及更新版本。

987 1065 

988使用 `ENABLE_TOOL_SEARCH` 環境變數控制 tool search 行為:1066使用 `ENABLE_TOOL_SEARCH` 環境變數控制 tool search 行為:

989 1067 

990| 值 | 行為 |1068| 值 | 行為 |

991| :------- | :----------------------------------------------------------------------------------------------------------------------------------- |1069| :------- | :------------------------------------------------------------------------------------------------------------------------------------- |

992| (未設定) | 所有 MCP 工具被延遲並按需載入。在 Vertex AI 上或當 `ANTHROPIC_BASE_URL` 是非第一方主機時回退到預先載入 |1070| (未設定) | 所有 MCP 工具被延遲並按需載入。在 Vertex AI 上或當 `ANTHROPIC_BASE_URL` 是非第一方主機時回退到預先載入 |

993| `true` | 所有 MCP 工具被延遲。Claude Code 即使在 Vertex AI 上和透過代理也會傳送 beta 標頭。在不支援 `tool_reference` 區塊的 Vertex AI 模型上或在不支援 `tool_reference` 區塊的代理上,請求會失敗 |1071| `true` | 所有 MCP 工具被延遲。Claude Code 即使在 Vertex AI 上和透過代理也會傳送 beta 標頭。 Vertex AI 模型早於 Sonnet 4.5 或 Opus 4.5 上,或在不支援 `tool_reference` 區塊的代理上,請求會失敗 |

994| `auto` | 閾值模式:如果工具適合內容視窗的 10% 內,則預先載入,否則延遲 |1072| `auto` | 閾值模式:如果工具適合內容視窗的 10% 內,則預先載入,否則延遲 |

995| `auto:N` | 閾值模式,具有自訂百分比,其中 `N` 是 0-100。例如,`auto:5` 表示 5% |1073| `auto:N` | 閾值模式,具有自訂百分比,其中 `N` 是 0-100。例如,`auto:5` 表示 5% |

996| `false` | 所有 MCP 工具預先載入,無延遲 |1074| `false` | 所有 MCP 工具預先載入,無延遲 |


1015}1093}

1016```1094```

1017 1095 

1018### 豁免伺服器延遲1096<h3 id="exempt-a-server-from-deferral">

1097 豁免伺服器延遲

1098</h3>

1019 1099 

1020如果伺服器的工具應始終對 Claude 可見而無需搜尋步驟,請在該伺服器的配置中將 `alwaysLoad` 設定為 `true`。該伺服器的每個工具隨後都會在 session 啟動時載入到內容中,無論 `ENABLE_TOOL_SEARCH` 設定如何。對於 Claude 在每個回合都需要的少量工具,請使用此選項,因為每個預先載入的工具會消耗內容,否則這些內容將可用於您的對話。1100如果伺服器的工具應始終對 Claude 可見而無需搜尋步驟,請在該伺服器的配置中將 `alwaysLoad` 設定為 `true`。該伺服器的每個工具隨後都會在 session 啟動時載入到內容中,無論 `ENABLE_TOOL_SEARCH` 設定如何。對於 Claude 在每個回合都需要的少量工具,請使用此選項,因為每個預先載入的工具會消耗內容,否則這些內容將可用於您的對話。

1021 1101 


1037 1117 

1038設定 `alwaysLoad: true` 也會阻止啟動直到伺服器連線,上限為標準 5 秒連線逾時。即使 MCP 啟動在其他方面[預設為非阻塞](/zh-TW/env-vars),這也適用,因為工具必須在建立第一個提示時存在。其他伺服器繼續在背景中連線。1118設定 `alwaysLoad: true` 也會阻止啟動直到伺服器連線,上限為標準 5 秒連線逾時。即使 MCP 啟動在其他方面[預設為非阻塞](/zh-TW/env-vars),這也適用,因為工具必須在建立第一個提示時存在。其他伺服器繼續在背景中連線。

1039 1119 

1040## 使用 MCP 提示作為命令1120<h2 id="use-mcp-prompts-as-commands">

1121 使用 MCP 提示作為命令

1122</h2>

1041 1123 

1042MCP servers 可以公開提示,這些提示在 Claude Code 中變成可用的命令。1124MCP servers 可以公開提示,這些提示在 Claude Code 中變成可用的命令。

1043 1125 

1044### 執行 MCP 提示1126<h3 id="execute-mcp-prompts">

1127 執行 MCP 提示

1128</h3>

1045 1129 

1046<Steps>1130<Steps>

1047 <Step title="探索可用提示">1131 <Step title="探索可用提示">


1076 * Server 和提示名稱已標準化 (空格變成底線)1160 * Server 和提示名稱已標準化 (空格變成底線)

1077</Tip>1161</Tip>

1078 1162 

1079## 受管理的 MCP 配置1163<h2 id="managed-mcp-configuration">

1164 受管理的 MCP 配置

1165</h2>

1080 1166 

1081對於需要對使用者可以連接的 MCP servers 進行集中控制的組織,請參閱 [受管理的 MCP 配置](/zh-TW/managed-mcp)。它涵蓋使用 `managed-mcp.json` 部署固定的 server 集合、使用 `allowedMcpServers` 和 `deniedMcpServers` 限制 servers,以及當 server 被阻止時使用者看到的內容。1167對於需要對使用者可以連接的 MCP servers 進行集中控制的組織,請參閱 [受管理的 MCP 配置](/zh-TW/managed-mcp)。它涵蓋使用 `managed-mcp.json` 部署固定的 server 集合、使用 `allowedMcpServers` 和 `deniedMcpServers` 限制 servers,以及當 server 被阻止時使用者看到的內容。

Details

120 在磁碟上找到您的設定120 在磁碟上找到您的設定

121</h3>121</h3>

122 122 

123[範圍表](#find-your-configuration-on-disk)中的每個檔案對伺服器項目使用相同的 JSON 格式。根據 `--scope` 旗標,跨兩個檔案儲存三個範圍之一。您不需要直接編輯這些檔案,但知道它們的位置有助於除錯和版本控制。123`claude mcp add` 命令根據 `--scope` 旗標,將伺服器寫入三個範圍之一,儲存在兩個檔案中。您不需要直接編輯這些檔案,但知道它們的位置有助於除錯和版本控制。

124 124 

125| 範圍 | 檔案 | 可用於 |125| 範圍 | 檔案 | 可用於 |

126| :-------- | :----------------------------------- | :------------ |126| :-------- | :----------------------------------- | :------------ |

memory.md +93 −33

Details

14本頁涵蓋如何:14本頁涵蓋如何:

15 15 

16* [編寫和組織 CLAUDE.md 檔案](#claude-md-files)16* [編寫和組織 CLAUDE.md 檔案](#claude-md-files)

17* [使用 `.claude/rules/` 將規則範圍限定於特定檔案類型](#organize-rules-with-clauderules)17* [使用 `.claude/rules/` 將規則範圍限定於特定檔案類型](#organize-rules-with-claude%2Frules%2F)

18* [配置自動記憶](#auto-memory),使 Claude 自動記筆記18* [配置自動記憶](#auto-memory),使 Claude 自動記筆記

19* [疑難排解](#troubleshoot-memory-issues)指令未被遵循的情況19* [疑難排解](#troubleshoot-memory-issues)指令未被遵循的情況

20 20 

21## CLAUDE.md 與自動記憶21<h2 id="claude-md-vs-auto-memory">

22 CLAUDE.md 與自動記憶

23</h2>

22 24 

23Claude Code 有兩個互補的記憶系統。兩者都在每次對話開始時載入。Claude 將它們視為上下文,而不是強制配置。若要阻止某個動作(無論 Claude 決定什麼),請改用 [PreToolUse hook](/zh-TW/hooks-guide)。您的指令越具體和簡潔,Claude 遵循它們的一致性就越高。25Claude Code 有兩個互補的記憶系統。兩者都在每次對話開始時載入。Claude 將它們視為上下文,而不是強制配置。若要阻止某個動作(無論 Claude 決定什麼),請改用 [PreToolUse hook](/zh-TW/hooks-guide)。您的指令越具體和簡潔,Claude 遵循它們的一致性就越高。

24 26 


34 36 

35Subagents 也可以維護自己的自動記憶。有關詳細資訊,請參閱 [subagent 配置](/zh-TW/sub-agents#enable-persistent-memory)。37Subagents 也可以維護自己的自動記憶。有關詳細資訊,請參閱 [subagent 配置](/zh-TW/sub-agents#enable-persistent-memory)。

36 38 

37## CLAUDE.md 檔案39<h2 id="claude-md-files">

40 CLAUDE.md 檔案

41</h2>

38 42 

39CLAUDE.md 檔案是 markdown 檔案,為專案、您的個人工作流程或整個組織為 Claude 提供持久指令。您以純文字編寫這些檔案;Claude 在每個工作階段開始時讀取它們。43CLAUDE.md 檔案是 markdown 檔案,為專案、您的個人工作流程或整個組織為 Claude 提供持久指令。您以純文字編寫這些檔案;Claude 在每個工作階段開始時讀取它們。

40 44 

41### 何時新增到 CLAUDE.md45<h3 id="when-to-add-to-claude-md">

46 何時新增到 CLAUDE.md

47</h3>

42 48 

43將 CLAUDE.md 視為您寫下您本來會重新解釋的內容的地方。在以下情況下新增到它:49將 CLAUDE.md 視為您寫下您本來會重新解釋的內容的地方。在以下情況下新增到它:

44 50 


49 55 

50將其保持為 Claude 應該在每個工作階段中保留的事實:建置命令、慣例、專案佈局、「始終執行 X」規則。如果一個條目是多步驟程序或僅對程式碼庫的一部分重要,請將其移到 [skill](/zh-TW/skills) 或 [路徑範圍規則](#organize-rules-with-claude/rules/) 代替。[擴展概述](/zh-TW/features-overview#build-your-setup-over-time)涵蓋何時使用每個機制。56將其保持為 Claude 應該在每個工作階段中保留的事實:建置命令、慣例、專案佈局、「始終執行 X」規則。如果一個條目是多步驟程序或僅對程式碼庫的一部分重要,請將其移到 [skill](/zh-TW/skills) 或 [路徑範圍規則](#organize-rules-with-claude/rules/) 代替。[擴展概述](/zh-TW/features-overview#build-your-setup-over-time)涵蓋何時使用每個機制。

51 57 

52### 選擇 CLAUDE.md 檔案的位置58<h3 id="choose-where-to-put-claude-md-files">

59 選擇 CLAUDE.md 檔案的位置

60</h3>

53 61 

54CLAUDE.md 檔案可以位於多個位置,每個位置都有不同的範圍。下表按載入順序列出它們,從最廣泛的範圍到最具體的範圍,因此專案指令在使用者指令之後出現在上下文中。62CLAUDE.md 檔案可以位於多個位置,每個位置都有不同的範圍。下表按載入順序列出它們,從最廣泛的範圍到最具體的範圍,因此專案指令在使用者指令之後出現在上下文中。

55 63 


64 72 

65對於大型專案,您可以使用 [專案規則](#organize-rules-with-claude/rules/) 將指令分解為主題特定的檔案。規則讓您將指令範圍限定於特定檔案類型或子目錄。73對於大型專案,您可以使用 [專案規則](#organize-rules-with-claude/rules/) 將指令分解為主題特定的檔案。規則讓您將指令範圍限定於特定檔案類型或子目錄。

66 74 

67### 設定專案 CLAUDE.md75<h3 id="set-up-a-project-claude-md">

76 設定專案 CLAUDE.md

77</h3>

68 78 

69專案 CLAUDE.md 可以儲存在 `./CLAUDE.md` 或 `./.claude/CLAUDE.md` 中。建立此檔案並新增適用於在專案上工作的任何人的指令:建置和測試命令、編碼標準、架構決策、命名慣例和常見工作流程。這些指令透過版本控制與您的團隊共享,因此請專注於專案級別的標準,而不是個人偏好。79專案 CLAUDE.md 可以儲存在 `./CLAUDE.md` 或 `./.claude/CLAUDE.md` 中。建立此檔案並新增適用於在專案上工作的任何人的指令:建置和測試命令、編碼標準、架構決策、命名慣例和常見工作流程。這些指令透過版本控制與您的團隊共享,因此請專注於專案級別的標準,而不是個人偏好。

70 80 


74 設定 `CLAUDE_CODE_NEW_INIT=1` 以啟用互動式多階段流程。`/init` 詢問要設定哪些成品:CLAUDE.md 檔案、skills 和 hooks。然後它使用 subagent 探索您的程式碼庫,透過後續問題填補空白,並在寫入任何檔案之前呈現可審查的提案。84 設定 `CLAUDE_CODE_NEW_INIT=1` 以啟用互動式多階段流程。`/init` 詢問要設定哪些成品:CLAUDE.md 檔案、skills 和 hooks。然後它使用 subagent 探索您的程式碼庫,透過後續問題填補空白,並在寫入任何檔案之前呈現可審查的提案。

75</Tip>85</Tip>

76 86 

77### 編寫有效的指令87<h3 id="write-effective-instructions">

88 編寫有效的指令

89</h3>

78 90 

79CLAUDE.md 檔案在每個工作階段開始時載入到 context window 中,與您的對話一起消耗令牌。[context window 視覺化](/zh-TW/context-window)顯示 CLAUDE.md 相對於其餘啟動上下文的載入位置。因為它們是上下文而不是強制配置,您編寫指令的方式會影響 Claude 遵循它們的可靠性。具體、簡潔、結構良好的指令效果最好。91CLAUDE.md 檔案在每個工作階段開始時載入到 context window 中,與您的對話一起消耗令牌。[context window 視覺化](/zh-TW/context-window)顯示 CLAUDE.md 相對於其餘啟動上下文的載入位置。因為它們是上下文而不是強制配置,您編寫指令的方式會影響 Claude 遵循它們的可靠性。具體、簡潔、結構良好的指令效果最好。

80 92 


90 102 

91**一致性**:如果兩個規則相互矛盾,Claude 可能會任意選擇一個。定期檢查您的 CLAUDE.md 檔案、子目錄中的巢狀 CLAUDE.md 檔案和 [`.claude/rules/`](#organize-rules-with-claude/rules/),以移除過時或衝突的指令。在 monorepos 中,使用 [`claudeMdExcludes`](#exclude-specific-claude-md-files) 跳過與您的工作無關的其他團隊的 CLAUDE.md 檔案。103**一致性**:如果兩個規則相互矛盾,Claude 可能會任意選擇一個。定期檢查您的 CLAUDE.md 檔案、子目錄中的巢狀 CLAUDE.md 檔案和 [`.claude/rules/`](#organize-rules-with-claude/rules/),以移除過時或衝突的指令。在 monorepos 中,使用 [`claudeMdExcludes`](#exclude-specific-claude-md-files) 跳過與您的工作無關的其他團隊的 CLAUDE.md 檔案。

92 104 

93### 匯入其他檔案105<h3 id="import-additional-files">

106 匯入其他檔案

107</h3>

94 108 

95CLAUDE.md 檔案可以使用 `@path/to/import` 語法匯入其他檔案。匯入的檔案會展開並在啟動時與參考它們的 CLAUDE.md 一起載入到上下文中。109CLAUDE.md 檔案可以使用 `@path/to/import` 語法匯入其他檔案。匯入的檔案會展開並在啟動時與參考它們的 CLAUDE.md 一起載入到上下文中。

96 110 


120 134 

121有關組織指令的更結構化方法,請參閱 [`.claude/rules/`](#organize-rules-with-claude/rules/)。135有關組織指令的更結構化方法,請參閱 [`.claude/rules/`](#organize-rules-with-claude/rules/)。

122 136 

123### AGENTS.md137<h3 id="agents-md">

138 AGENTS.md

139</h3>

124 140 

125Claude Code 讀取 `CLAUDE.md`,而不是 `AGENTS.md`。如果您的儲存庫已經為其他編碼代理使用 `AGENTS.md`,請建立一個 `CLAUDE.md` 來匯入它,以便兩個工具讀取相同的指令而不重複。您也可以在匯入下方新增 Claude 特定的指令。Claude 在工作階段開始時載入匯入的檔案,然後附加其餘部分:141Claude Code 讀取 `CLAUDE.md`,而不是 `AGENTS.md`。如果您的儲存庫已經為其他編碼代理使用 `AGENTS.md`,請建立一個 `CLAUDE.md` 來匯入它,以便兩個工具讀取相同的指令而不重複。您也可以在匯入下方新增 Claude 特定的指令。Claude 在工作階段開始時載入匯入的檔案,然後附加其餘部分:

126 142 


140 156 

141在 Windows 上,建立符號連結需要系統管理員權限或開發人員模式,因此請改用 `@AGENTS.md` 匯入。157在 Windows 上,建立符號連結需要系統管理員權限或開發人員模式,因此請改用 `@AGENTS.md` 匯入。

142 158 

143在已經有 `AGENTS.md` 的儲存庫中執行 [`/init`](/zh-TW/commands) 會讀取它並將相關部分合併到產生的 `CLAUDE.md` 中。它也會讀取其他工具配置,如 `.cursorrules` 和 `.windsurfrules`。159在已經有 `AGENTS.md` 的儲存庫中執行 [`/init`](/zh-TW/commands) 會讀取它並將相關部分合併到產生的 `CLAUDE.md` 中。它也會讀取其他工具配置,如 `.cursorrules`、`.devin/rules/` 和 `.windsurfrules`。

144 160 

145### CLAUDE.md 檔案如何載入161<h3 id="how-claude-md-files-load">

162 CLAUDE.md 檔案如何載入

163</h3>

146 164 

147Claude Code 透過從您目前的工作目錄向上走目錄樹來讀取 CLAUDE.md 檔案,檢查沿途的每個目錄中是否有 `CLAUDE.md` 和 `CLAUDE.local.md` 檔案。這意味著如果您在 `foo/bar/` 中執行 Claude Code,它會從 `foo/bar/CLAUDE.md`、`foo/CLAUDE.md` 和沿途的任何 `CLAUDE.local.md` 檔案載入指令。165Claude Code 透過從您目前的工作目錄向上走目錄樹來讀取 CLAUDE.md 檔案,檢查沿途的每個目錄中是否有 `CLAUDE.md` 和 `CLAUDE.local.md` 檔案。這意味著如果您在 `foo/bar/` 中執行 Claude Code,它會從 `foo/bar/CLAUDE.md`、`foo/CLAUDE.md` 和沿途的任何 `CLAUDE.local.md` 檔案載入指令。

148 166 


154 172 

155CLAUDE.md 檔案中的區塊級 HTML 註解(`<!-- maintainer notes -->`)在內容被注入到 Claude 的上下文之前會被移除。使用它們為人類維護者留下筆記,而不會在令牌上花費上下文。程式碼區塊內的註解會被保留。當您直接使用 Read 工具開啟 CLAUDE.md 檔案時,註解保持可見。173CLAUDE.md 檔案中的區塊級 HTML 註解(`<!-- maintainer notes -->`)在內容被注入到 Claude 的上下文之前會被移除。使用它們為人類維護者留下筆記,而不會在令牌上花費上下文。程式碼區塊內的註解會被保留。當您直接使用 Read 工具開啟 CLAUDE.md 檔案時,註解保持可見。

156 174 

157#### 從其他目錄載入175<h4 id="load-from-additional-directories">

176 從其他目錄載入

177</h4>

158 178 

159`--add-dir` 旗標讓 Claude 可以存取主工作目錄外的其他目錄。預設情況下,不會載入這些目錄中的 CLAUDE.md 檔案。179`--add-dir` 旗標讓 Claude 可以存取主工作目錄外的其他目錄。預設情況下,不會載入這些目錄中的 CLAUDE.md 檔案。

160 180 


166 186 

167這會從其他目錄載入 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。如果您從 [`--setting-sources`](/zh-TW/cli-reference) 排除 `local`,則會跳過 `CLAUDE.local.md`。187這會從其他目錄載入 `CLAUDE.md`、`.claude/CLAUDE.md`、`.claude/rules/*.md` 和 `CLAUDE.local.md`。如果您從 [`--setting-sources`](/zh-TW/cli-reference) 排除 `local`,則會跳過 `CLAUDE.local.md`。

168 188 

169### 使用 `.claude/rules/` 組織規則189<h3 id="organize-rules-with-claude/rules/">

190 使用 `.claude/rules/` 組織規則

191</h3>

170 192 

171對於較大的專案,您可以使用 `.claude/rules/` 目錄將指令組織成多個檔案。這使指令保持模組化,更容易讓團隊維護。規則也可以 [範圍限定於特定檔案路徑](#path-specific-rules),因此它們只在 Claude 處理匹配檔案時載入到上下文中,減少雜訊並節省上下文空間。193對於較大的專案,您可以使用 `.claude/rules/` 目錄將指令組織成多個檔案。這使指令保持模組化,更容易讓團隊維護。規則也可以 [範圍限定於特定檔案路徑](#path-specific-rules),因此它們只在 Claude 處理匹配檔案時載入到上下文中,減少雜訊並節省上下文空間。

172 194 


174 規則在每個工作階段或開啟匹配檔案時載入到上下文中。對於不需要始終在上下文中的任務特定指令,請改用 [skills](/zh-TW/skills),它們只在您呼叫它們或 Claude 確定它們與您的提示相關時載入。196 規則在每個工作階段或開啟匹配檔案時載入到上下文中。對於不需要始終在上下文中的任務特定指令,請改用 [skills](/zh-TW/skills),它們只在您呼叫它們或 Claude 確定它們與您的提示相關時載入。

175</Note>197</Note>

176 198 

177#### 設定規則199<h4 id="set-up-rules">

200 設定規則

201</h4>

178 202 

179在您的專案的 `.claude/rules/` 目錄中放置 markdown 檔案。每個檔案應涵蓋一個主題,具有描述性檔案名稱,如 `testing.md` 或 `api-design.md`。所有 `.md` 檔案都被遞迴發現,因此您可以將規則組織到子目錄中,如 `frontend/` 或 `backend/`:203在您的專案的 `.claude/rules/` 目錄中放置 markdown 檔案。每個檔案應涵蓋一個主題,具有描述性檔案名稱,如 `testing.md` 或 `api-design.md`。所有 `.md` 檔案都被遞迴發現,因此您可以將規則組織到子目錄中,如 `frontend/` 或 `backend/`:

180 204 


190 214 

191沒有 [`paths` frontmatter](#path-specific-rules) 的規則在啟動時載入,優先級與 `.claude/CLAUDE.md` 相同。215沒有 [`paths` frontmatter](#path-specific-rules) 的規則在啟動時載入,優先級與 `.claude/CLAUDE.md` 相同。

192 216 

193#### 路徑特定規則217<h4 id="path-specific-rules">

218 路徑特定規則

219</h4>

194 220 

195規則可以使用帶有 `paths` 欄位的 YAML frontmatter 範圍限定於特定檔案。這些條件規則僅在 Claude 處理與指定模式匹配的檔案時適用。221規則可以使用帶有 `paths` 欄位的 YAML frontmatter 範圍限定於特定檔案。這些條件規則僅在 Claude 處理與指定模式匹配的檔案時適用。

196 222 


229---255---

230```256```

231 257 

232#### 使用符號連結跨專案共享規則258<h4 id="share-rules-across-projects-with-symlinks">

259 使用符號連結跨專案共享規則

260</h4>

233 261 

234`.claude/rules/` 目錄支援符號連結,因此您可以維護一組共享規則並將它們連結到多個專案中。符號連結被解析並正常載入,並且循環符號連結被檢測並妥善處理。262`.claude/rules/` 目錄支援符號連結,因此您可以維護一組共享規則並將它們連結到多個專案中。符號連結被解析並正常載入,並且循環符號連結被檢測並妥善處理。

235 263 


240ln -s ~/company-standards/security.md .claude/rules/security.md268ln -s ~/company-standards/security.md .claude/rules/security.md

241```269```

242 270 

243#### 使用者級別規則271<h4 id="user-level-rules">

272 使用者級別規則

273</h4>

244 274 

245`~/.claude/rules/` 中的個人規則適用於您機器上的每個專案。使用它們來處理不是專案特定的偏好:275`~/.claude/rules/` 中的個人規則適用於您機器上的每個專案。使用它們來處理不是專案特定的偏好:

246 276 


252 282 

253使用者級別規則在專案規則之前載入,給予專案規則更高的優先級。283使用者級別規則在專案規則之前載入,給予專案規則更高的優先級。

254 284 

255### 為大型團隊管理 CLAUDE.md285<h3 id="manage-claude-md-for-large-teams">

286 為大型團隊管理 CLAUDE.md

287</h3>

256 288 

257對於在團隊中部署 Claude Code 的組織,您可以集中指令並控制載入哪些 CLAUDE.md 檔案。289對於在團隊中部署 Claude Code 的組織,您可以集中指令並控制載入哪些 CLAUDE.md 檔案。

258 290 

259#### 部署組織範圍的 CLAUDE.md291<h4 id="deploy-organization-wide-claude-md">

292 部署組織範圍的 CLAUDE.md

293</h4>

260 294 

261組織可以部署一個集中管理的 CLAUDE.md,適用於機器上的所有使用者。此檔案無法被個人設定排除。295組織可以部署一個集中管理的 CLAUDE.md,適用於機器上的所有使用者。此檔案無法被個人設定排除。

262 296 


302 336 

303設定規則由用戶端強制執行,無論 Claude 決定做什麼。CLAUDE.md 指令塑造 Claude 的行為,但不是硬強制執行層。337設定規則由用戶端強制執行,無論 Claude 決定做什麼。CLAUDE.md 指令塑造 Claude 的行為,但不是硬強制執行層。

304 338 

305#### 排除特定的 CLAUDE.md 檔案339<h4 id="exclude-specific-claude-md-files">

340 排除特定的 CLAUDE.md 檔案

341</h4>

306 342 

307在大型 monorepos 中,祖先 CLAUDE.md 檔案可能包含與您的工作無關的指令。`claudeMdExcludes` 設定讓您按路徑或 glob 模式跳過特定檔案。343在大型 monorepos 中,祖先 CLAUDE.md 檔案可能包含與您的工作無關的指令。`claudeMdExcludes` 設定讓您按路徑或 glob 模式跳過特定檔案。

308 344 


321 357 

322受管理的原則 CLAUDE.md 檔案無法被排除。這確保組織範圍的指令始終適用,無論個人設定如何。358受管理的原則 CLAUDE.md 檔案無法被排除。這確保組織範圍的指令始終適用,無論個人設定如何。

323 359 

324## 自動記憶360<h2 id="auto-memory">

361 自動記憶

362</h2>

325 363 

326自動記憶讓 Claude 在您不編寫任何內容的情況下跨工作階段累積知識。Claude 在工作時為自己保存筆記:建置命令、除錯見解、架構筆記、程式碼樣式偏好和工作流程習慣。Claude 不會每個工作階段都保存內容。它根據資訊在未來對話中是否有用來決定值得記住的內容。364自動記憶讓 Claude 在您不編寫任何內容的情況下跨工作階段累積知識。Claude 在工作時為自己保存筆記:建置命令、除錯見解、架構筆記、程式碼樣式偏好和工作流程習慣。Claude 不會每個工作階段都保存內容。它根據資訊在未來對話中是否有用來決定值得記住的內容。

327 365 


329 自動記憶需要 Claude Code v2.1.59 或更高版本。使用 `claude --version` 檢查您的版本。367 自動記憶需要 Claude Code v2.1.59 或更高版本。使用 `claude --version` 檢查您的版本。

330</Note>368</Note>

331 369 

332### 啟用或停用自動記憶370<h3 id="enable-or-disable-auto-memory">

371 啟用或停用自動記憶

372</h3>

333 373 

334自動記憶預設為開啟。要切換它,請在工作階段中開啟 `/memory` 並使用自動記憶切換,或在您的專案設定中設定 `autoMemoryEnabled`:374自動記憶預設為開啟。要切換它,請在工作階段中開啟 `/memory` 並使用自動記憶切換,或在您的專案設定中設定 `autoMemoryEnabled`:

335 375 


341 381 

342要透過環境變數停用自動記憶,請設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`。382要透過環境變數停用自動記憶,請設定 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`。

343 383 

344### 儲存位置384<h3 id="storage-location">

385 儲存位置

386</h3>

345 387 

346每個專案在 `~/.claude/projects/<project>/memory/` 獲得自己的記憶目錄。`<project>` 路徑源自 git 儲存庫,因此同一儲存庫內的所有 worktrees 和子目錄共享一個自動記憶目錄。在 git 儲存庫外,改用專案根目錄。388每個專案在 `~/.claude/projects/<project>/memory/` 獲得自己的記憶目錄。`<project>` 路徑源自 git 儲存庫,因此同一儲存庫內的所有 worktrees 和子目錄共享一個自動記憶目錄。在 git 儲存庫外,改用專案根目錄。

347 389 


369 411 

370自動記憶是機器本地的。同一 git 儲存庫內的所有 worktrees 和子目錄共享一個自動記憶目錄。檔案不在機器或雲端環境之間共享。412自動記憶是機器本地的。同一 git 儲存庫內的所有 worktrees 和子目錄共享一個自動記憶目錄。檔案不在機器或雲端環境之間共享。

371 413 

372### 它如何運作414<h3 id="how-it-works">

415 它如何運作

416</h3>

373 417 

374`MEMORY.md` 的前 200 行或前 25KB(以先到者為準)在每次對話開始時載入。超過該閾值的內容在工作階段開始時不載入。Claude 透過將詳細筆記移到單獨的主題檔案中來保持 `MEMORY.md` 簡潔。418`MEMORY.md` 的前 200 行或前 25KB(以先到者為準)在每次對話開始時載入。超過該閾值的內容在工作階段開始時不載入。Claude 透過將詳細筆記移到單獨的主題檔案中來保持 `MEMORY.md` 簡潔。

375 419 


379 423 

380Claude 在您的工作階段中讀取和寫入記憶檔案。當您在 Claude Code 介面中看到「寫入記憶」或「回憶記憶」時,Claude 正在主動更新或讀取 `~/.claude/projects/<project>/memory/`。424Claude 在您的工作階段中讀取和寫入記憶檔案。當您在 Claude Code 介面中看到「寫入記憶」或「回憶記憶」時,Claude 正在主動更新或讀取 `~/.claude/projects/<project>/memory/`。

381 425 

382### 審計和編輯您的記憶426<h3 id="audit-and-edit-your-memory">

427 審計和編輯您的記憶

428</h3>

383 429 

384自動記憶檔案是純 markdown,您可以隨時編輯或刪除。執行 [`/memory`](#view-and-edit-with-memory) 以從工作階段中瀏覽和開啟記憶檔案。430自動記憶檔案是純 markdown,您可以隨時編輯或刪除。執行 [`/memory`](#view-and-edit-with-%2Fmemory) 以從工作階段中瀏覽和開啟記憶檔案。

385 431 

386## 使用 `/memory` 檢視和編輯432<h2 id="view-and-edit-with-/memory">

433 使用 `/memory` 檢視和編輯

434</h2>

387 435 

388`/memory` 命令列出在您目前工作階段中載入的所有 CLAUDE.md、CLAUDE.local.md 和規則檔案,讓您切換自動記憶開啟或關閉,並提供開啟自動記憶資料夾的連結。選擇任何檔案以在您的編輯器中開啟它。436`/memory` 命令列出在您目前工作階段中載入的所有 CLAUDE.md、CLAUDE.local.md 和規則檔案,讓您切換自動記憶開啟或關閉,並提供開啟自動記憶資料夾的連結。選擇任何檔案以在您的編輯器中開啟它。

389 437 

390當您要求 Claude 記住某些內容時,例如「始終使用 pnpm,而不是 npm」或「記住 API 測試需要本地 Redis 實例」,Claude 會將其保存到自動記憶。要改為將指令新增到 CLAUDE.md,請直接要求 Claude,例如「將此新增到 CLAUDE.md」,或透過 `/memory` 自己編輯檔案。438當您要求 Claude 記住某些內容時,例如「始終使用 pnpm,而不是 npm」或「記住 API 測試需要本地 Redis 實例」,Claude 會將其保存到自動記憶。要改為將指令新增到 CLAUDE.md,請直接要求 Claude,例如「將此新增到 CLAUDE.md」,或透過 `/memory` 自己編輯檔案。

391 439 

392## 疑難排解記憶問題440<h2 id="troubleshoot-memory-issues">

441 疑難排解記憶問題

442</h2>

393 443 

394這些是 CLAUDE.md 和自動記憶最常見的問題,以及除錯步驟。444這些是 CLAUDE.md 和自動記憶最常見的問題,以及除錯步驟。

395 445 

396### Claude 不遵循我的 CLAUDE.md446<h3 id="claude-isn’t-following-my-claude-md">

447 Claude 不遵循我的 CLAUDE.md

448</h3>

397 449 

398CLAUDE.md 內容作為系統提示後的使用者訊息傳遞,而不是系統提示本身的一部分。Claude 讀取它並嘗試遵循它,但沒有嚴格遵守的保證,特別是對於模糊或衝突的指令。450CLAUDE.md 內容作為系統提示後的使用者訊息傳遞,而不是系統提示本身的一部分。Claude 讀取它並嘗試遵循它,但沒有嚴格遵守的保證,特別是對於模糊或衝突的指令。

399 451 


412 使用 [`InstructionsLoaded` hook](/zh-TW/hooks#instructionsloaded) 記錄確切載入的指令檔案、何時載入以及為什麼。這對於除錯路徑特定規則或子目錄中的延遲載入檔案很有用。464 使用 [`InstructionsLoaded` hook](/zh-TW/hooks#instructionsloaded) 記錄確切載入的指令檔案、何時載入以及為什麼。這對於除錯路徑特定規則或子目錄中的延遲載入檔案很有用。

413</Tip>465</Tip>

414 466 

415### 我不知道自動記憶保存了什麼467<h3 id="i-don’t-know-what-auto-memory-saved">

468 我不知道自動記憶保存了什麼

469</h3>

416 470 

417執行 `/memory` 並選擇自動記憶資料夾以瀏覽 Claude 保存的內容。一切都是純 markdown,您可以讀取、編輯或刪除。471執行 `/memory` 並選擇自動記憶資料夾以瀏覽 Claude 保存的內容。一切都是純 markdown,您可以讀取、編輯或刪除。

418 472 

419### 我的 CLAUDE.md 太大了473<h3 id="my-claude-md-is-too-large">

474 我的 CLAUDE.md 太大了

475</h3>

420 476 

421超過 200 行的檔案消耗更多上下文,可能會降低遵守度。使用 [路徑範圍規則](#path-specific-rules) 僅在 Claude 處理符合的檔案時載入指令,或修剪不是每個工作階段都需要的內容。分割成 [`@path` 匯入](#import-additional-files) 有助於組織,但不會減少上下文,因為匯入的檔案在啟動時載入。477超過 200 行的檔案消耗更多上下文,可能會降低遵守度。使用 [路徑範圍規則](#path-specific-rules) 僅在 Claude 處理符合的檔案時載入指令,或修剪不是每個工作階段都需要的內容。分割成 [`@path` 匯入](#import-additional-files) 有助於組織,但不會減少上下文,因為匯入的檔案在啟動時載入。

422 478 

423### 指令在 `/compact` 後似乎丟失了479<h3 id="instructions-seem-lost-after-/compact">

480 指令在 `/compact` 後似乎丟失了

481</h3>

424 482 

425專案根目錄 CLAUDE.md 在壓縮中倖存:在 `/compact` 之後,Claude 從磁碟重新讀取它並將其重新注入到工作階段中。子目錄中的巢狀 CLAUDE.md 檔案不會自動重新注入;它們在 Claude 下次讀取該子目錄中的檔案時重新載入。483專案根目錄 CLAUDE.md 在壓縮中倖存:在 `/compact` 之後,Claude 從磁碟重新讀取它並將其重新注入到工作階段中。子目錄中的巢狀 CLAUDE.md 檔案不會自動重新注入;它們在 Claude 下次讀取該子目錄中的檔案時重新載入。

426 484 


428 486 

429請參閱 [編寫有效的指令](#write-effective-instructions) 以取得有關大小、結構和具體性的指導。487請參閱 [編寫有效的指令](#write-effective-instructions) 以取得有關大小、結構和具體性的指導。

430 488 

431## 相關資源489<h2 id="related-resources">

490 相關資源

491</h2>

432 492 

433* [除錯您的配置](/zh-TW/debug-your-config):診斷為什麼 CLAUDE.md 或設定未生效493* [除錯您的配置](/zh-TW/debug-your-config):診斷為什麼 CLAUDE.md 或設定未生效

434* [Skills](/zh-TW/skills):封裝按需載入的可重複工作流程494* [Skills](/zh-TW/skills):封裝按需載入的可重複工作流程

Details

6 6 

7> 了解如何透過 Microsoft Foundry 配置 Claude Code,包括設定、配置和故障排除。7> 了解如何透過 Microsoft Foundry 配置 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<ContactSalesCard surface="foundry" />

80 

9<h2 id="prerequisites">81<h2 id="prerequisites">

10 先決條件82 先決條件

11</h2>83</h2>


90</h3>162</h3>

91 163 

92<Warning>164<Warning>

93 為每個部署固定特定的模型版本。如果您使用模型別名(`sonnet``opus`、`haiku`)而不固定版本,Claude Code 可能會嘗試使用您的 Foundry 帳戶中不可用的較新模型版本在 Anthropic 發佈更新時破壞現有使用者。建立 Azure 部署時,請選擇特定的模型版本,而不是「自動更新至最新版本」。165 為每個部署固定特定的模型版本。如果您使用模型別名(例如 `sonnet``opus`)而不固定版本,Claude Code Foundry 內建預設值可能會落後最新版本且可能尚未在您的帳戶中提供。Foundry 沒有啟動模型檢查,因此當預設值無法使用時,請求會失敗。建立 Azure 部署時,請選擇特定的模型版本,而不是「自動更新至最新版本」。

94</Warning>166</Warning>

95 167 

96設定模型變數以符合您在步驟 1 中建立的部署名稱。168設定模型變數以符合您在步驟 1 中建立的部署名稱。

model-config.md +150 −28

Details

32| 模型別名 | 行為 |32| 模型別名 | 行為 |

33| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |33| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |

34| **`default`** | 特殊值,可清除任何模型覆蓋並還原為您帳戶類型的推薦模型。本身不是模型別名 |34| **`default`** | 特殊值,可清除任何模型覆蓋並還原為您帳戶類型的推薦模型。本身不是模型別名 |

35| **`best`** | 使用最強大的可用模型目前相當於 `opus` |35| **`best`** | 在您的組織有權限的地方使用 Fable 5否則使用最新的 Opus 模型 |

36| **`fable`** | 使用 Claude Fable 5 進行您最困難和最長時間執行的任務 |

36| **`sonnet`** | 使用最新的 Sonnet 模型進行日常編碼任務 |37| **`sonnet`** | 使用最新的 Sonnet 模型進行日常編碼任務 |

37| **`opus`** | 使用最新的 Opus 模型進行複雜推理任務 |38| **`opus`** | 使用最新的 Opus 模型進行複雜推理任務 |

38| **`haiku`** | 使用快速高效的 Haiku 模型進行簡單任務 |39| **`haiku`** | 使用快速高效的 Haiku 模型進行簡單任務 |


48 Opus 4.8 需要 Claude Code v2.1.154 或更新版本。執行 `claude update` 以升級。49 Opus 4.8 需要 Claude Code v2.1.154 或更新版本。執行 `claude update` 以升級。

49</Note>50</Note>

50 51 

52<h3 id="work-with-fable-5">

53 使用 Fable 5

54</h3>

55 

56[Claude Fable 5](https://platform.claude.com/docs/zh-TW/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5) 是 Claude Code 中最強大的模型,適合於超過單次會話的任務。它能維持長時間的自主會話,在行動前進行調查,並比較小的模型更頻繁地驗證其工作。

57 

58Fable 5 不是預設模型。使用 `/model fable` 選擇它。其安全分類器標記的請求,最常見於網路安全和生物學領域,會觸發[自動模型回退](#automatic-model-fallback)。

59 

60若要充分利用 Fable 5:

61 

62* **描述結果,而不是步驟**:給它您想要的結果,讓它規劃路徑。若要讓它持續工作直到該結果成立,[設定目標](/zh-TW/goal)。

63* **交給它模糊的問題**:根本原因調查、中斷除錯和架構決策是額外調查和驗證發揮作用的地方。

64* **跳過驗證提醒**:它以較少的提示驗證自己的工作,所以測試或檢查的提醒通常是不必要的。

65* **規劃更大的任務**:給它您通常會分成多個部分的工作。它能維持長時間的會話而不失去思路。

66 

67<Note>

68 Fable 5 需要 Claude Code v2.1.170 或更新版本。較舊的版本不會在模型選擇器中顯示 Fable 5,也無法選擇它。執行 `claude update` 以升級。Fable 5 在[零資料保留](/zh-TW/zero-data-retention)下不可用,其中 `/model` 選擇器要麼省略它,要麼將其顯示為已停用。

69</Note>

70 

51<h3 id="setting-your-model">71<h3 id="setting-your-model">

52 設定您的模型72 設定您的模型

53</h3>73</h3>


101 121 

102企業管理員可以在[受管理或政策設定](/zh-TW/settings#settings-files)中使用 `availableModels` 來限制使用者可以選擇的模型。122企業管理員可以在[受管理或政策設定](/zh-TW/settings#settings-files)中使用 `availableModels` 來限制使用者可以選擇的模型。

103 123 

104設定 `availableModels` 後,使用者無法透過 `/model`、`--model` 旗標或 `ANTHROPIC_MODEL` 環境變數切換到清單中沒有的模型。124設定 `availableModels` 後,允許清單適用於使用者可以指定模型的每個位置:

125 

126* **主要會話模型**:`/model`、`--model` 旗標和 `ANTHROPIC_MODEL` 環境變數

127* **別名解析**:{/* min-version: 2.1.176 */}`ANTHROPIC_DEFAULT_OPUS_MODEL`、`ANTHROPIC_DEFAULT_SONNET_MODEL`、`ANTHROPIC_DEFAULT_HAIKU_MODEL` 和 `ANTHROPIC_DEFAULT_FABLE_MODEL` 環境變數無法將允許的別名重新導向到清單外的模型

128* **快速模式**:{/* min-version: 2.1.176 */}`/fast` 在隱含切換到清單外的 Opus 模型時拒絕切換,並顯示訊息「不在您組織的允許模型中」

129* **子代理模型**:[子代理](/zh-TW/sub-agents#choose-a-model) frontmatter 中的 `model` 欄位、Agent 工具的 `model` 參數、`/agents` 中的模型選擇器,以及 `CLAUDE_CODE_SUBAGENT_MODEL`

130* **顧問模型**:已設定的 [`advisorModel`](/zh-TW/advisor) 設定

131* **後備鏈**:[後備模型鏈](#fallback-model-chains)外清單中的元素會被捨棄

132 

133使用 `/model` 切換到被阻止的模型會被拒絕並出現錯誤,而被阻止的 `--model` 旗標或 `ANTHROPIC_MODEL` 值在啟動時會被替換為警告,命名所要求和替代的模型,會話會在預設模型上啟動。被阻止的子代理或顧問覆蓋會回退到繼承或預設模型,而不是使請求失敗。

105 134 

106```json theme={null}135```json theme={null}

107{136{


113 預設模型行為142 預設模型行為

114</h3>143</h3>

115 144 

116模型選擇器中的「預設」選項不受 `availableModels` 影響。它始終保持可用,並代表系統的執行時預設值[基於使用者的訂閱層級](#default-model-setting)。145根據預設,模型選擇器中的「預設」選項不受 `availableModels` 影響。它始終保持可用,並代表系統的執行時預設值[基於使用者的訂閱層級](#default-model-setting)。

117 146 

118即使使用 `availableModels: []`,使用者仍然可以使用其層級的預設模型來使用 Claude Code。147若要將允許清單擴展到「預設」選項,請在受管理或政策設定中將 `enforceAvailableModels` 設定為 `true`並搭配非空的 `availableModels` 清單。當層級預設值不在允許清單中時,「預設」會解析為第一個允許的項目,而不是層級預設值。這需要 Claude Code v2.1.175 或更新版本

148 

149空的 `availableModels` 陣列永遠不會啟用強制執行。即使使用 `availableModels: []`,使用者仍然可以使用其層級的「預設」模型來使用 Claude Code,無論 `enforceAvailableModels` 為何。

119 150 

120<h3 id="control-the-model-users-run-on">151<h3 id="control-the-model-users-run-on">

121 控制使用者執行的模型152 控制使用者執行的模型


123 154 

124`model` 設定是初始選擇,而非強制執行。它設定會話啟動時哪個模型處於活動狀態,但使用者仍然可以開啟 `/model` 並選擇「預設」,這會解析為其層級的系統預設值,無論 `model` 設定為何。155`model` 設定是初始選擇,而非強制執行。它設定會話啟動時哪個模型處於活動狀態,但使用者仍然可以開啟 `/model` 並選擇「預設」,這會解析為其層級的系統預設值,無論 `model` 設定為何。

125 156 

126若要完全控制模型體驗,請結合三個設定157若要完全控制模型體驗,請結合這些設定

127 158 

128* **`availableModels`**:限制使用者可以切換到的具名模型159* **`availableModels`**:限制使用者可以切換到的具名模型

160* **`enforceAvailableModels`**:將 `availableModels` 允許清單擴展到「預設」選項,因此「預設」無法解析為清單外的模型

129* **`model`**:設定會話啟動時的初始模型選擇161* **`model`**:設定會話啟動時的初始模型選擇

130* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`**:控制「預設」選項以及 `sonnet`、`opus` 和 `haiku` 別名解析為什麼162* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`** / **`ANTHROPIC_DEFAULT_FABLE_MODEL`**:控制「預設」選項以及 `sonnet`、`opus`、`haiku` 和 `fable` 別名解析為什麼

131 163 

132此範例在 Sonnet 4.5 上啟動使用者,將選擇器限制為 Sonnet 和 Haiku,並將「預設」固定為解析為 Sonnet 4.5 而不是最新版本164此範例在 Sonnet 4.5 上啟動使用者,將選擇器限制為 Sonnet 和 Haiku,並確保「預設」解析為允許清單上的模型,而不是層級預設值

133 165 

134```json theme={null}166```json theme={null}

135{167{

136 "model": "claude-sonnet-4-5",168 "model": "claude-sonnet-4-5",

137 "availableModels": ["claude-sonnet-4-5", "haiku"],169 "availableModels": ["claude-sonnet-4-5", "haiku"],

170 "enforceAvailableModels": true,

138 "env": {171 "env": {

139 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"172 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

140 }173 }

141}174}

142```175```

143 176 

144沒有 `env` 區塊,在選擇器中選擇「預設」的使用者會獲得最新的 Sonnet 版本,繞過 `model` 和 `availableModels` 中的版本固定。177沒有 `enforceAvailableModels` 或 `env` 區塊,在選擇器中選擇「預設」的使用者會獲得其層級的最新版本,繞過 `model` 和 `availableModels` 中的版本固定。這兩個設定涵蓋不同的範圍:`enforceAvailableModels` 使「預設」遵守允許清單,而 `env` 區塊固定允許的別名(例如 `sonnet`)解析為哪個版本。當限制模型系列就足夠時,單獨使用 `enforceAvailableModels`;當您還需要固定特定版本時,新增 `env` 區塊。

145 178 

146<h3 id="merge-behavior">179<h3 id="merge-behavior">

147 合併行為180 合併行為

148</h3>181</h3>

149 182 

150當 `availableModels` 在多個層級設定時,例如使用者設定和專案設定,陣列會被合併並去重。若要強制執行嚴格的允許清單,請在受管理或政策設定中設定 `availableModels`這具有最高優先順序183當 `availableModels` 僅在使用者、專案和本機設定中設定時陣列會在這些層級中合併並去重

184 

185當 `availableModels` 在受管理或政策設定中設定時,受管理或政策值會完全取代合併結果:在使用者或專案設定中新增的項目無法擴大它。受管理和政策設定以相同方式取代 `enforceAvailableModels` 的較低優先順序值。自 Claude Code v2.1.175 起,這是強制執行嚴格允許清單的唯一方式;較早版本會將受管理清單與較低優先順序項目合併。

151 186 

152<h3 id="mantle-model-ids">187<h3 id="mantle-model-ids">

153 Mantle 模型 ID188 Mantle 模型 ID

154</h3>189</h3>

155 190 

156當[Bedrock Mantle 端點](/zh-TW/amazon-bedrock#use-the-mantle-endpoint)啟用時,`availableModels` 中以 `anthropic.` 開頭的項目會作為自訂選項新增到 `/model` 選擇器,並路由到 Mantle 端點。這是對[為第三方部署固定模型](#pin-models-for-third-party-deployments)中描述的僅別名匹配的例外。該設定仍然將選擇器限制為列出的項目,因此請在任何 Mantle ID 旁邊包含標準別名。191當[Bedrock Mantle 端點](/zh-TW/amazon-bedrock#use-the-mantle-endpoint)啟用時,`availableModels` 中以 `anthropic.` 開頭的項目會作為自訂選項新增到 `/model` 選擇器,並路由到 Mantle 端點。該設定仍然將選擇器限制為列出的項目,因此請在任何 Mantle ID 旁邊包含標準別名。

157 192 

158<h2 id="special-model-behavior">193<h2 id="special-model-behavior">

159 特殊模型行為194 特殊模型行為


172 207 

173Enterprise 隨用隨付是指按使用量計費而非按訂閱席位計費的 Enterprise 組織。208Enterprise 隨用隨付是指按使用量計費而非按訂閱席位計費的 Enterprise 組織。

174 209 

175Claude Code 可能會在您達到 Opus 的使用閾值時自動回退到 Sonnet210Fable 5 不是任何帳戶類型的預設模型。會話僅在您選擇 Fable 5 後才使用它,使用 `/model fable`、`model` 設定或 `best` 別名(其中 Fable 5 可用)使用 `/model` 選擇它會將其儲存為您使用者設定中的選定模型,因此後續會話會在 Fable 5 上啟動,直到您變更模型。

176 211 

177<h3 id="opusplan-model-setting">212<h3 id="opusplan-model-setting">

178 `opusplan` 模型設定213 `opusplan` 模型設定


185 220 

186這為您提供了兩全其美的方案:Opus 優越的推理能力用於計畫,Sonnet 的效率用於執行。221這為您提供了兩全其美的方案:Opus 優越的推理能力用於計畫,Sonnet 的效率用於執行。

187 222 

188Plan Mode Opus 階段使用標準 200K context window 執行。[擴展 context](#extended-context) 中描述的自動 1M 升級適用於 `opus` 模型設定不適用於 `opusplan`。223Plan Mode Opus 階段使用與 `opus` 模型設定相同的 context window。在訂閱層級上,Opus 會[自動升級到 1M context](#extended-context),`opusplan` Plan Mode 中也會獲得升級。若要在您不在自動升級層級上時強制兩個階段都使用 1M context請將模型設定為 `opusplan[1m]`。

224 

225當 [`availableModels`](#restrict-model-selection) 排除 Opus 時,`opusplan` 在 Plan Mode 中保持在 Sonnet 上,而不是切換。當 Sonnet 被排除時,隱含的 Haiku 到 Sonnet Plan Mode 升級也適用相同情況。

226 

227如需混合方法,其中 Claude 在任務中途決定何時諮詢第二個模型,而不是在計畫邊界處切換,請參閱 [advisor tool](/zh-TW/advisor)。

228 

229<h3 id="fallback-model-chains">

230 回退模型鏈

231</h3>

232 

233當主要模型過載、不可用或傳回另一個不可重試的伺服器錯誤時,Claude Code 可以切換到回退模型,而不是使請求失敗。驗證、計費、速率限制、請求大小和傳輸錯誤永遠不會觸發切換;這些遵循其正常的重試和錯誤處理。

234 

235配置一個或多個回退模型,Claude Code 會按順序嘗試它們,在切換時顯示通知。切換僅持續目前輪次,因此您的下一條訊息會再次首先嘗試主要模型。鏈在重複移除後限制為三個模型,額外項目會被忽略。

236 

237使用 `--fallback-model` 旗標為一個會話設定鏈,該旗標接受逗號分隔的清單:

238 

239```bash theme={null}

240claude --fallback-model sonnet,haiku

241```

242 

243若要在會話間持續保存鏈,請在 [settings](/zh-TW/settings) 中設定 `fallbackModel` 為陣列:

244 

245```json theme={null}

246{

247 "fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]

248}

249```

250 

251`--fallback-model` 旗標優先於 `fallbackModel` 設定。每個元素接受模型名稱或別名,`"default"` 會展開為預設模型。

252 

253兩種情況會導致元素被跳過:

254 

255* **不可用的模型**:無法到達的模型,例如在設定中固定的已停用模型,會被跳過,Claude Code 會繼續到下一個元素。

256* **超出允許清單**:不被 [`availableModels`](#restrict-model-selection) 允許的元素在讀取鏈時會被刪除,永遠不會被嘗試。

257 

258<h3 id="automatic-model-fallback">

259 自動模型回退

260</h3>

261 

262本節涵蓋來自 Fable 5 的基於內容的回退。如需模型過載或不可用時的基於可用性的回退,請參閱 [Fallback model chains](#fallback-model-chains)。

263 

264Fable 5 使用網路安全和生物學內容的安全分類器執行。當分類器標記請求時,Claude Code 會在預設 Opus 模型上重新執行該請求,並在記錄中顯示通知:Anthropic API 和 [LLM gateway](/zh-TW/llm-gateway) 部署上的 Opus 4.8,或 [Claude Platform on AWS](/zh-TW/claude-platform-on-aws) 上的 Opus 4.7。

265 

266會話隨後在該 Opus 模型上繼續。若要返回 Fable 5,請執行 `/model fable`。

267 

268<h4 id="check-what-triggered-fallback">

269 檢查觸發回退的原因

270</h4>

271 

272回退可以在會話的第一個請求上觸發,在您發送任何不尋常的內容之前,因為第一個請求會攜帶工作區上下文,例如您的 CLAUDE.md 內容和 git 狀態。包含安全或生物學材料的儲存庫可以單獨在該上下文上觸發分類器。

273 

274若要檢查自訂是否是觸發器,請使用 `claude --safe-mode` 啟動會話,這會禁用自訂,例如 CLAUDE.md、skills、MCP 伺服器和 hooks。Git 狀態和目錄名稱不是自訂,仍然包含在內。

275 

276<h4 id="ask-before-switching">

277 在切換前詢問

278</h4>

279 

280若要決定每次請求被標記時發生的情況,而不是自動切換,請執行 `/config` 並關閉「當訊息被標記時切換模型」。標記的請求隨後會暫停會話,有兩個選項:切換到 Opus 模型,或編輯提示並在 Fable 5 上重試。

281 

282某些情況的行為不同:

283 

284* 如果兩個模型都標記相同的請求,您可以編輯提示並重試,或啟動新會話。

285* 在行動裝置 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 會話上,不支援編輯和重試。切換模型,或從桌面瀏覽器或桌面應用程式繼續會話。

286* 在 [non-interactive mode](/zh-TW/cli-reference#cli-flags) 和無法顯示提示的 SDK 整合中,標記的請求以拒絕結束輪次。

287 

288<h4 id="enable-fallback-on-bedrock-vertex-ai-and-foundry">

289 在 Bedrock、Vertex AI 和 Foundry 上啟用回退

290</h4>

291 

292在 [Amazon Bedrock](/zh-TW/amazon-bedrock)、[Google Vertex AI](/zh-TW/google-vertex-ai) 和 [Microsoft Foundry](/zh-TW/microsoft-foundry) 上,模型 ID 是提供者特定的,因此自動回退僅在 Claude Code 可以識別涉及的兩個模型時運作:

293 

294* Claude Code 必須將目前模型識別為 Fable 5:模型 ID 包含 `claude-fable-5`、符合 `ANTHROPIC_DEFAULT_FABLE_MODEL` 的值,或使用 [`modelOverrides`](#override-model-ids-per-version) 對應。

295* 回退目標必須解析為 Opus 模型:`ANTHROPIC_DEFAULT_OPUS_MODEL` 的值(如果設定),否則提供者模型清單中的 Opus 4.8 項目。

296 

297如果任一模型無法識別,Claude Code 不會自動切換。標記的請求以拒絕訊息結束,您可以使用 [`/model`](#setting-your-model) 切換模型並重試。若要在這些提供者上啟用自動回退,請將 `ANTHROPIC_DEFAULT_FABLE_MODEL` 設定為您的 Fable 5 模型 ID,並將 `ANTHROPIC_DEFAULT_OPUS_MODEL` 設定為您的 Opus 4.8 模型 ID。

298 

299<h4 id="security-research-and-biology-workloads">

300 安全研究和生物學工作負載

301</h4>

302 

303進攻性安全或生物學中的工作負載,包括滲透測試、Capture the Flag (CTF) 練習和生物學相鄰程式碼庫,經常觸發回退,通常在第一個請求上。對於實質性生物學工作,預期幾乎所有請求都會重新路由。

304 

305這是這些領域的預期路由,不是帳戶標記。如果您的組織需要 Fable 級別的能力來進行此工作,請詢問您的 Anthropic 帳戶團隊有關受信任存取計畫。

189 306 

190<h3 id="adjust-effort-level">307<h3 id="adjust-effort-level">

191 調整努力等級308 調整努力等級


197 314 

198| 模型 | 等級 |315| 模型 | 等級 |

199| :-------------------- | :---------------------------------- |316| :-------------------- | :---------------------------------- |

317| Fable 5 | `low`、`medium`、`high`、`xhigh`、`max` |

200| Opus 4.8 和 Opus 4.7 | `low`、`medium`、`high`、`xhigh`、`max` |318| Opus 4.8 和 Opus 4.7 | `low`、`medium`、`high`、`xhigh`、`max` |

201| Opus 4.6 和 Sonnet 4.6 | `low`、`medium`、`high`、`max` |319| Opus 4.6 和 Sonnet 4.6 | `low`、`medium`、`high`、`max` |

202 320 

203如果您設定活動模型不支援的等級,Claude Code 會回退到您設定的等級處或以下的最高支援等級。例如,`xhigh` 在 Opus 4.6 上執行為 `high`。321如果您設定活動模型不支援的等級,Claude Code 會回退到您設定的等級處或以下的最高支援等級。例如,`xhigh` 在 Opus 4.6 上執行為 `high`。

204 322 

205Opus 4.8、Opus 4.6 和 Sonnet 4.6 上的預設努力為 `high`,Opus 4.7 上的預設努力為 `xhigh`。323Fable 5、Opus 4.8、Opus 4.6 和 Sonnet 4.6 上的預設努力為 `high`,Opus 4.7 上的預設努力為 `xhigh`。

206 324 

207當您首次執行 Opus 4.8 或 Opus 4.7 時,Claude Code 會應用該模型的預設努力,即使您之前為另一個模型設定了不同的等級:Opus 4.8 上的 `high` Opus 4.7 上的 `xhigh`。執行 `/effort` 以在切換後選擇不同的等級。325當您首次執行 Fable 5、Opus 4.8 或 Opus 4.7 時,Claude Code 會應用該模型的預設努力,即使您之前為另一個模型設定了不同的等級:Fable 5 和 Opus 4.8 上的 `high`,以及 Opus 4.7 上的 `xhigh`。執行 `/effort` 以在切換後選擇不同的等級。

208 326 

209`low`、`medium`、`high` 和 `xhigh` 在會話間持續存在。`max` 提供最深入的推理,對 token 支出沒有限制,並且僅適用於目前會話,除非透過 `CLAUDE_CODE_EFFORT_LEVEL` 環境變數設定。327`low`、`medium`、`high` 和 `xhigh` 在會話間持續存在。`max` 提供最深入的推理,對 token 支出沒有限制,並且僅適用於目前會話,除非透過 `CLAUDE_CODE_EFFORT_LEVEL` 環境變數設定。

210 328 


220| :---------- | :---------------------------------------------------------------------------- |338| :---------- | :---------------------------------------------------------------------------- |

221| `low` | 保留用於短期、範圍有限、延遲敏感且不是智能敏感的任務 |339| `low` | 保留用於短期、範圍有限、延遲敏感且不是智能敏感的任務 |

222| `medium` | 減少成本敏感工作的 token 使用,可以權衡一些智能 |340| `medium` | 減少成本敏感工作的 token 使用,可以權衡一些智能 |

223| `high` | 平衡 token 使用和智能。Opus 4.8、Opus 4.6 和 Sonnet 4.6 上的預設值 |341| `high` | 平衡 token 使用和智能。Fable 5、Opus 4.8、Opus 4.6 和 Sonnet 4.6 上的預設值 |

224| `xhigh` | 更深入的推理,token 支出更高。Opus 4.7 上的預設值 |342| `xhigh` | 更深入的推理,token 支出更高。Opus 4.7 上的預設值 |

225| `max` | 可以改善困難任務的效能,但可能顯示遞減回報,容易過度思考。在廣泛採用前進行測試 |343| `max` | 可以改善困難任務的效能,但可能顯示遞減回報,容易過度思考。在廣泛採用前進行測試 |

226| `ultracode` | 一個 Claude Code 設定,為每個實質性任務規劃[動態工作流程](/zh-TW/workflows),每條訊息進行 `xhigh` 推理。僅限會話 |344| `ultracode` | 一個 Claude Code 設定,為每個實質性任務規劃[動態工作流程](/zh-TW/workflows),每條訊息進行 `xhigh` 推理。僅限會話 |


256 374 

257自適應推理使思考在每一步上都是可選的,因此 Claude 可以更快地回應常規提示,並為受益於思考的步驟保留更深入的思考。如果您想要 Claude 比目前等級產生的更頻繁或更少地思考,您可以直接在您的提示或 `CLAUDE.md` 中說明;模型在其努力設定範圍內回應該指導。375自適應推理使思考在每一步上都是可選的,因此 Claude 可以更快地回應常規提示,並為受益於思考的步驟保留更深入的思考。如果您想要 Claude 比目前等級產生的更頻繁或更少地思考,您可以直接在您的提示或 `CLAUDE.md` 中說明;模型在其努力設定範圍內回應該指導。

258 376 

259Opus 4.7 及更新版本始終使用自適應推理。固定思考預算模式和 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 不適用於它377Opus 4.7 及更新版本始終使用自適應推理,Fable 5 也是如此。固定思考預算模式和 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 不適用於它們

260 378 

261在 Opus 4.6 和 Sonnet 4.6 上,您可以設定 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` 以恢復到由 `MAX_THINKING_TOKENS` 控制的先前固定思考預算。請參閱[環境變數](/zh-TW/env-vars)。379在 Opus 4.6 和 Sonnet 4.6 上,您可以設定 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` 以恢復到由 `MAX_THINKING_TOKENS` 控制的先前固定思考預算。請參閱[環境變數](/zh-TW/env-vars)。

262 380 


267擴展思考是 Claude 在回應前發出的推理。在支援[自適應推理](#adjust-effort-level)的模型上,努力等級是控制發生多少思考的主要控制項;下面的設定會開啟或關閉思考,並控制其顯示方式。385擴展思考是 Claude 在回應前發出的推理。在支援[自適應推理](#adjust-effort-level)的模型上,努力等級是控制發生多少思考的主要控制項;下面的設定會開啟或關閉思考,並控制其顯示方式。

268 386 

269| 控制項 | 如何設定 |387| 控制項 | 如何設定 |

270| :------- | :------------------------------------------------------------------------------------------------------------ |388| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

271| 目前會話的切換 | 在 macOS 上按 `Option+T` 或在 Windows 和 Linux 上按 `Alt+T` |389| 目前會話的切換 | 在 macOS 上按 `Option+T` 或在 Windows 和 Linux 上按 `Alt+T` |

272| 設定全域預設值 | 執行 `/config` 並切換思考模式。儲存為 `~/.claude/settings.json` 中的 `alwaysThinkingEnabled` |390| 設定全域預設值 | 執行 `/config` 並切換思考模式。儲存為 `~/.claude/settings.json` 中的 `alwaysThinkingEnabled` |

273| 無論努力如何禁用 | 設定 [`MAX_THINKING_TOKENS=0`](/zh-TW/env-vars)。其他值僅適用於[固定思考預算](#adaptive-reasoning-and-fixed-thinking-budgets) |391| 無論努力如何禁用 | 設定 [`MAX_THINKING_TOKENS=0`](/zh-TW/env-vars),這會在 Anthropic API 上關閉思考,除了 Fable 5在[第三方提供者](/zh-TW/third-party-integrations)上,這會改為省略 `thinking` 參數,自適應推理模型可能仍然思考。其他值僅適用於[固定思考預算](#adaptive-reasoning-and-fixed-thinking-budgets) |

392 

393思考無法在 Fable 5 上關閉。會話切換、`alwaysThinkingEnabled` 和 `MAX_THINKING_TOKENS=0` 在那裡沒有效果,Fable 5 根據努力等級決定每一步思考多少。

274 394 

275思考輸出預設為摺疊。按 `Ctrl+O` 以切換詳細模式並將推理視為灰色斜體文本。Anthropic API 上的互動式會話預設會收到編輯的思考區塊,因此如果您想要在展開時可用的完整摘要,請在[設定](/zh-TW/settings)中設定 `showThinkingSummaries: true`。您需要為所有生成的思考 token 付費,即使它們被摺疊或編輯。395思考輸出預設為摺疊。按 `Ctrl+O` 以切換詳細模式並將推理視為灰色斜體文本。Anthropic API 上的互動式會話預設會收到編輯的思考區塊,因此如果您想要在展開時可用的完整摘要,請在[設定](/zh-TW/settings)中設定 `showThinkingSummaries: true`。您需要為所有生成的思考 token 付費,即使它們被摺疊或編輯。

276 396 


278 擴展 context398 擴展 context

279</h3>399</h3>

280 400 

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),用於具有大型程式碼庫的長時間會話。401Fable 5、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),用於具有大型程式碼庫的長時間會話。

282 402 

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。403可用性因模型和計畫而異。在 Max、Team 和 Enterprise 計畫上,Opus 會自動升級到 1M context,無需額外配置。這適用於 Team Standard 和 Team Premium 席位。在 Anthropic API 上,Fable 5、Opus 4.8 和 Opus 4.7 始終使用 1M window 執行。Sonnet 搭配 1M context 不是自動升級的一部分,需要在每個訂閱計畫上進行[使用額度](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans),包括 Max。

284 404 

285| 計畫 | Opus 搭配 1M context | Sonnet 搭配 1M context |405| 計畫 | Opus 搭配 1M context | Sonnet 搭配 1M context |

286| --------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |406| --------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |


340 460 

341| 環境變數 | 描述 |461| 環境變數 | 描述 |

342| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |462| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

463| `ANTHROPIC_DEFAULT_FABLE_MODEL` | 用於 `fable` 的模型,以及 Claude Code 識別為 Fable 5 的模型 ID,用於第三方提供者上的[自動模型回退](#automatic-model-fallback) |

343| `ANTHROPIC_DEFAULT_OPUS_MODEL` | 用於 `opus` 的模型,或在 Plan Mode 活動時用於 `opusplan` 的模型。 |464| `ANTHROPIC_DEFAULT_OPUS_MODEL` | 用於 `opus` 的模型,或在 Plan Mode 活動時用於 `opusplan` 的模型。 |

344| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 用於 `sonnet` 的模型,或在 Plan Mode 未活動時用於 `opusplan` 的模型。 |465| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 用於 `sonnet` 的模型,或在 Plan Mode 未活動時用於 `opusplan` 的模型。 |

345| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 用於 `haiku` 的模型,或[背景功能](/zh-TW/costs#background-token-usage) |466| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 用於 `haiku` 的模型,或[背景功能](/zh-TW/costs#background-token-usage) |


351 為第三方部署固定模型472 為第三方部署固定模型

352</h3>473</h3>

353 474 

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 時,在向使用者推出前固定模型版本。475當透過 [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 時,在向使用者推出前固定模型版本。

355 476 

356不固定模型時,Claude Code 使用模型別名(`sonnet`、`opus`、`haiku`),這些別名會解析為最新版本 Anthropic 發佈新模型時帳戶未啟用新版本的使用者會看到通知並回退到該會話的先前版本,而 Foundry 使用者會看到錯誤,因為 Foundry 沒有等效的啟動檢查。477不固定模型時,Claude Code 使用模型別名(例如 `fable`、`opus`、`sonnet` 和 `haiku`),這些別名會解析為每個提供者的內建預設模型 ID該預設值可能落後於最新的 Anthropic 版本而且它指向的模型可能尚未在使用者的帳戶中啟用。當預設值不可用時Bedrock 和 Vertex AI 使用者會看到通知並回退到該會話的先前版本,而 Foundry 使用者會看到錯誤,因為 Foundry 沒有等效的啟動檢查。

357 478 

358<Warning>479<Warning>

359 在初始設定中將所有三個模型環境變數設定為特定版本 ID。固定讓您控制使用者何時移動到新模型。480 在初始設定中將模型環境變數設定為特定版本 ID。固定讓您控制使用者何時移動到新模型。

360</Warning>481</Warning>

361 482 

362使用以下環境變數搭配您提供者的版本特定模型 ID:483使用以下環境變數搭配您提供者的版本特定模型 ID:


367| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |488| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |

368| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |489| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |

369 490 

370對 `ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 應用相同的模式。有關所有提供者的目前和舊版模型 ID,請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)。若要將使用者升級到新模型版本,請更新這些環境變數並重新部署。491對 `ANTHROPIC_DEFAULT_FABLE_MODEL`、`ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 應用相同的模式。有關所有提供者的目前和舊版模型 ID,請參閱[模型概述](https://platform.claude.com/docs/en/about-claude/models/overview)。若要將使用者升級到新模型版本,請更新這些環境變數並重新部署。

371 492 

372若要為固定模型啟用[擴展 context](#extended-context),請將 `[1m]` 附加到 `ANTHROPIC_DEFAULT_OPUS_MODEL` 或 `ANTHROPIC_DEFAULT_SONNET_MODEL` 中的模型 ID:493若要為固定模型啟用[擴展 context](#extended-context),請將 `[1m]` 附加到 `ANTHROPIC_DEFAULT_OPUS_MODEL` 或 `ANTHROPIC_DEFAULT_SONNET_MODEL` 中的模型 ID:

373 494 


375export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'496export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'

376```497```

377 498 

378`[1m]` 後綴將 1M context window 應用於 `opus` 和 `sonnet` 別名的所有使用。它不會擴展 `opusplan` 的 plan-mode Opus 階段,該階段[仍然上限為 200K](#opusplan-model-setting)499`[1m]` 後綴將 1M context window 應用於 `opus` 和 `sonnet` 別名的所有使用,包括 [`opusplan`](#opusplan-model-setting) 的 plan-mode Opus 階段。

379 500 

380* Claude Code 在將模型 ID 發送到您的提供者之前會移除該後綴。501* Claude Code 在將模型 ID 發送到您的提供者之前會移除該後綴。

381* 只有當基礎模型[支援 1M context](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) 時,才附加 `[1m]`。502* 只有當基礎模型[支援 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,即使另一個變數設定相同的模型並帶有後綴。503* 後綴是按變數讀取的,而不是按模型讀取的。在 Bedrock、Vertex 和 Foundry 上,一個變數中沒有 `[1m]` 的模型 ID 會使用 200K context,即使另一個變數設定相同的模型並帶有後綴。

383 504 

384<Note>505<Note>

385 使用第三方提供者時,`settings.availableModels` 允許清單仍然適用。篩選會根據模型別名(`opus`、`sonnet``haiku`)進行匹配而不是提供者特定的模型 ID506 使用第三方提供者時,`settings.availableModels` 允許清單仍然適用。篩選會根據模型別名(例如 `opus`版本前綴(例如 `claude-opus-4-8`)或完整模型 ID 進行匹配。任何 `[1m]` 後綴會從允許清單項目和請求的模型中移除,因此 `claude-opus-4-8` 的項目允許標準和 1M-context Opus 列。提供者特定的前綴(例如 `us.anthropic.`不會被移除:在 `availableModels` 中列出選擇器顯示的相同形式或透過 [`modelOverrides`](#override-model-ids-per-version) 對應它

386</Note>507</Note>

387 508 

388<h3 id="customize-pinned-model-display-and-capabilities">509<h3 id="customize-pinned-model-display-and-capabilities">


399| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | `/model` 選擇器中固定 Opus 模型的顯示描述。未設定時預設為 `Custom Opus model` |520| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | `/model` 選擇器中固定 Opus 模型的顯示描述。未設定時預設為 `Custom Opus model` |

400| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | 固定 Opus 模型支援的能力的逗號分隔清單 |521| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | 固定 Opus 模型支援的能力的逗號分隔清單 |

401 522 

402相同的 `_NAME`、`_DESCRIPTION` 和 `_SUPPORTED_CAPABILITIES` 後綴可用於 `ANTHROPIC_DEFAULT_SONNET_MODEL`、`ANTHROPIC_DEFAULT_HAIKU_MODEL` 和 `ANTHROPIC_CUSTOM_MODEL_OPTION`。523相同的 `_NAME`、`_DESCRIPTION` 和 `_SUPPORTED_CAPABILITIES` 後綴可用於 `ANTHROPIC_DEFAULT_SONNET_MODEL`、`ANTHROPIC_DEFAULT_HAIKU_MODEL`、`ANTHROPIC_DEFAULT_FABLE_MODEL` 和 `ANTHROPIC_CUSTOM_MODEL_OPTION`。

403 524 

404Claude Code 透過將模型 ID 與已知模式進行匹配來啟用[努力等級](#adjust-effort-level)和[擴展思考](#extended-thinking)等功能。提供者特定的 ID(例如 Bedrock ARN 或自訂部署名稱)通常不符合這些模式,導致支援的功能被禁用。設定 `_SUPPORTED_CAPABILITIES` 以告訴 Claude Code 模型實際支援的功能:525Claude Code 透過將模型 ID 與已知模式進行匹配來啟用[努力等級](#adjust-effort-level)和[擴展思考](#extended-thinking)等功能。提供者特定的 ID(例如 Bedrock ARN 或自訂部署名稱)通常不符合這些模式,導致支援的功能被禁用。設定 `_SUPPORTED_CAPABILITIES` 以告訴 Claude Code 模型實際支援的功能:

405 526 


427 按版本覆蓋模型 ID548 按版本覆蓋模型 ID

428</h3>549</h3>

429 550 

430上述家族級環境變數為每個家族別名配置一個模型 ID。如果您需要將同一家族內的多個版本對應到不同的提供者 ID,請改用 `modelOverrides` 設定。551家族級環境變數上述為每個家族別名配置一個模型 ID。如果您需要將同一家族內的多個版本對應到不同的提供者 ID,請改用 `modelOverrides` 設定。

431 552 

432`modelOverrides` 將個別 Anthropic 模型 ID 對應到 Claude Code 發送到您提供者 API 的提供者特定字串。當使用者在 `/model` 選擇器中選擇對應的模型時,Claude Code 會使用您配置的值而不是內建預設值。553`modelOverrides` 將個別 Anthropic 模型 ID 對應到 Claude Code 發送到您提供者 API 的提供者特定字串。當使用者在 `/model` 選擇器中選擇對應的模型時,Claude Code 會使用您配置的值而不是內建預設值。

433 554 


463| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以僅禁用 Haiku 模型的 prompt caching |584| `DISABLE_PROMPT_CACHING_HAIKU` | 設定為 `1` 以僅禁用 Haiku 模型的 prompt caching |

464| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以僅禁用 Sonnet 模型的 prompt caching |585| `DISABLE_PROMPT_CACHING_SONNET` | 設定為 `1` 以僅禁用 Sonnet 模型的 prompt caching |

465| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以僅禁用 Opus 模型的 prompt caching |586| `DISABLE_PROMPT_CACHING_OPUS` | 設定為 `1` 以僅禁用 Opus 模型的 prompt caching |

587| `DISABLE_PROMPT_CACHING_FABLE` | 設定為 `1` 以僅禁用 Fable 模型的 prompt caching |

466 588 

467若要變更快取 TTL 或瞭解什麼會觸發快取未命中,請參閱 [Claude Code 如何使用 prompt caching](/zh-TW/prompt-caching)。589若要變更快取 TTL 或瞭解什麼會觸發快取未命中,請參閱 [Claude Code 如何使用 prompt caching](/zh-TW/prompt-caching)。

Details

221**`claude_code.tool`**221**`claude_code.tool`**

222 222 

223| 屬性 | 描述 | 由以下控制 |223| 屬性 | 描述 | 由以下控制 |

224| ----------------- | --------------------------------- | ----------------------- |224| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

225| `tool_name` | 工具名稱 | |225| `tool_name` | 工具名稱 | |

226| `duration_ms` | 包括權限等待和執行的牆上時間持續時間 | |226| `duration_ms` | 包括權限等待和執行的牆上時間持續時間 | |

227| `result_tokens` | 工具結果的近似權杖大小 | |227| `result_tokens` | 工具結果的近似權杖大小 | |

228| `agent_id` | 發出請求的子代理或隊友的識別碼。在主工作階段上不存在 | |228| `agent_id` | 發出請求的子代理或隊友的識別碼。在主工作階段上不存在 | |

229| `parent_agent_id` | 產生此代理的代理的識別碼。對於主工作階段和直接從其產生的代理不存在 | |229| `parent_agent_id` | 產生此代理的代理的識別碼。對於主工作階段和直接從其產生的代理不存在 | |

230| `tool_use_id` | 此呼叫的模型 `tool_use` 區塊 id。符合[工具結果](#tool-result-event)和[工具決定](#tool-decision-event)事件上的 `tool_use_id` 以及 hook 承載中的 `tool_use_id`,因此您可以將跨度連結到這些記錄 | |

231| `gen_ai.tool.call.id` | 與 `tool_use_id` 相同的值。OpenTelemetry GenAI 語義慣例 | |

230| `file_path` | Read、Edit 和 Write 工具的目標檔案路徑 | `OTEL_LOG_TOOL_DETAILS` |232| `file_path` | Read、Edit 和 Write 工具的目標檔案路徑 | `OTEL_LOG_TOOL_DETAILS` |

231| `full_command` | Bash 工具的命令字串 | `OTEL_LOG_TOOL_DETAILS` |233| `full_command` | Bash 工具的命令字串 | `OTEL_LOG_TOOL_DETAILS` |

232| `skill_name` | Skill 工具的技能名稱 | `OTEL_LOG_TOOL_DETAILS` |234| `skill_name` | Skill 工具的技能名稱 | `OTEL_LOG_TOOL_DETAILS` |


245**`claude_code.tool.execution`**247**`claude_code.tool.execution`**

246 248 

247| 屬性 | 描述 | 由以下控制 |249| 屬性 | 描述 | 由以下控制 |

248| ------------- | ------------------------------------------------------------- | ----------------------- |250| --------------------- | ------------------------------------------------------------- | ----------------------- |

249| `duration_ms` | 執行工具主體所花費的時間 | |251| `duration_ms` | 執行工具主體所花費的時間 | |

252| `tool_use_id` | 與父 `claude_code.tool` 跨度上的相同值 | |

253| `gen_ai.tool.call.id` | 與 `tool_use_id` 相同的值。OpenTelemetry GenAI 語義慣例 | |

250| `success` | `true` 或 `false` | |254| `success` | `true` 或 `false` | |

251| `error` | 執行失敗時的錯誤類別字串,例如 `Error:ENOENT` 或 `ShellError`。當設定了閘道時包含完整錯誤訊息 | `OTEL_LOG_TOOL_DETAILS` |255| `error` | 執行失敗時的錯誤類別字串,例如 `Error:ENOENT` 或 `ShellError`。當設定了閘道時包含完整錯誤訊息 | `OTEL_LOG_TOOL_DETAILS` |

252 256 


423所有指標和事件共享這些標準屬性:427所有指標和事件共享這些標準屬性:

424 428 

425| 屬性 | 描述 | 控制者 |429| 屬性 | 描述 | 控制者 |

426| ------------------------------------ | ---------------------------------------------------------------------------------- | --------------------------------------------------- |430| ------------------------------------ | ------------------------------------------------------------------------------------------- | --------------------------------------------------- |

427| `session.id` | 唯一的工作階段識別碼 | `OTEL_METRICS_INCLUDE_SESSION_ID`(預設:true) |431| `session.id` | 唯一的工作階段識別碼 | `OTEL_METRICS_INCLUDE_SESSION_ID`(預設:true) |

428| `app.version` | 目前的 Claude Code 版本 | `OTEL_METRICS_INCLUDE_VERSION`(預設:false) |432| `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) |433| `app.entrypoint` | 工作階段的啟動方式,例如 `cli`、`sdk-cli`、`sdk-ts`、`sdk-py` 或 `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT`(預設:false) |

430| `organization.id` | 組織 UUID(已驗證時) | 可用時始終包含 |434| `organization.id` | 組織 UUID(已驗證時) | 可用時始終包含 |

431| `user.account_uuid` | 帳戶 UUID(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |435| `user.account_uuid` | 帳戶 UUID(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |

432| `user.account_id` | 帳戶 ID(採用標籤格式,符合 Anthropic 管理 API),例如 `user_01BWBeN28...`(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |436| `user.account_id` | 帳戶 ID(採用標籤格式,符合 Anthropic 管理 API),例如 `user_01BWBeN28...`(已驗證時) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID`(預設:true) |

433| `user.id` | 匿名裝置/安裝識別碼每個 Claude Code 安裝產生一次 | 始終包含 |437| `user.id` | 在首次執行時產生並保存在 `~/.claude.json` 中的隨機匿名識別碼。它不包含任何個人資訊也不是從您的 Claude 帳戶衍生的。刪除該檔案會在下次執行時產生新的無關值。 | 始終包含 |

434| `user.email` | 使用者電子郵件地址(透過 OAuth 驗證時) | 可用時始終包含 |438| `user.email` | 使用者電子郵件地址(透過 OAuth 驗證時) | 可用時始終包含 |

435| `terminal.type` | 終端機類型,例如 `iTerm.app`、`vscode`、`cursor` 或 `tmux` | 偵測到時始終包含 |439| `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) |440| Keys from `OTEL_RESOURCE_ATTRIBUTES` | 您設定的自訂屬性,例如 `department` 或 `team.id`。詳見[多團隊組織支援](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES`(預設:true) |


484 488 

485* 所有[標準屬性](#standard-attributes)489* 所有[標準屬性](#standard-attributes)

486* `type`:(`"added"`、`"removed"`)490* `type`:(`"added"`、`"removed"`)

491* `model`:進行變更的模型識別碼(例如,"claude-sonnet-4-6")。{/* min-version: 2.1.172 */}需要 Claude Code v2.1.172 或更新版本

487 492 

488<h4 id="pull-request-counter">493<h4 id="pull-request-counter">

489 提取請求計數器494 提取請求計數器


538* `model`:模型識別碼(例如,"claude-sonnet-4-6")543* `model`:模型識別碼(例如,"claude-sonnet-4-6")

539* `query_source`:發出請求的子系統的類別。`"main"`、`"subagent"` 或 `"auxiliary"` 之一544* `query_source`:發出請求的子系統的類別。`"main"`、`"subagent"` 或 `"auxiliary"` 之一

540* `speed`:當請求使用快速模式時為 `"fast"`。否則不存在545* `speed`:當請求使用快速模式時為 `"fast"`。否則不存在

541* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。詳見[成本計數器](#cost-counter)。546* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。詳見[成本計數器](#cost-counter)以了解詳情

542* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`、`mcp_server.name`、`mcp_tool.name`:請求的 Skill、plugin 和代理歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。547* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`、`mcp_server.name`、`mcp_tool.name`:請求的 Skill、plugin、代理和 MCP 歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。

543 548 

544<h4 id="code-edit-tool-decision-counter">549<h4 id="code-edit-tool-decision-counter">

545 程式碼編輯工具決定計數器550 程式碼編輯工具決定計數器


692* `effort`:應用於請求的[努力等級](/zh-TW/model-config#adjust-effort-level)。當模型不支援努力時不存在。697* `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)以了解定義和編輯行為。698* `agent.name`、`skill.name`、`plugin.name`、`marketplace.name`、`mcp_server.name`、`mcp_tool.name`:請求的 Skill、plugin、代理和 MCP 歸屬。詳見[成本計數器](#cost-counter)以了解定義和編輯行為。

694 699 

700<h4 id="api-refusal-event">

701 API 拒絕事件

702</h4>

703 

704當 API 請求傳回 `stop_reason: "refusal"` 時記錄。拒絕會在成功的回應串流上到達,而不是作為 HTTP 錯誤,因此 `api_error` 事件不會為它們觸發。此事件可讓您追蹤拒絕頻率。

705 

706**事件名稱**:`claude_code.api_refusal`

707 

708**屬性**:

709 

710* 所有[標準屬性](#standard-attributes)

711* `event.name`:`"api_refusal"`

712* `event.timestamp`:ISO 8601 時間戳

713* `event.sequence`:單調遞增計數器,用於排序工作階段內的事件

714* `model`:來自請求的模型識別碼

715* `request_id`:來自回應的 `request-id` 標頭的 Anthropic API 請求 ID,例如 `"req_011..."`。僅當 API 傳回時才存在。

716 

695<h4 id="api-request-body-event">717<h4 id="api-request-body-event">

696 API 請求主體事件718 API 請求主體事件

697</h4>719</h4>


823* `server_scope`:伺服器配置的範圍,例如 `"user"`、`"project"` 或 `"local"`845* `server_scope`:伺服器配置的範圍,例如 `"user"`、`"project"` 或 `"local"`

824* `duration_ms`:連線嘗試持續時間(毫秒)846* `duration_ms`:連線嘗試持續時間(毫秒)

825* `error_code`:連線失敗時的錯誤碼847* `error_code`:連線失敗時的錯誤碼

848* `is_plugin`:當伺服器由 plugin 提供時為 `true`,否則為 `false`

849* `plugin_id_hash`(當 `is_plugin` 為 `true` 時):plugin 名稱和市場的穩定雜湊,用於按 plugin 分組事件而不暴露名稱

850* `plugin.name`(當 `is_plugin` 為 `true` 時):提供伺服器的 plugin 名稱。對於第三方 plugin,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則這是字面字串 `"third-party"`;這可保護第三方 plugin 名稱預設不出現在日誌中。來自官方 Anthropic 來源的 Plugin 始終按名稱識別。`plugin_id_hash` 和 `plugin.name` 屬性流向您自己的監控後端,不會傳送給 Anthropic

826* `server_name`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):配置的伺服器名稱851* `server_name`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):配置的伺服器名稱

827* `error`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):連線失敗時的完整錯誤訊息852* `error`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):連線失敗時的完整錯誤訊息

828 853 


885* `plugin_id_hash`:plugin 名稱和市場的確定性雜湊,僅傳送到您配置的匯出器。讓您計算整個環境中載入了多少個不同的第三方 plugin,而無需記錄其名稱910* `plugin_id_hash`:plugin 名稱和市場的確定性雜湊,僅傳送到您配置的匯出器。讓您計算整個環境中載入了多少個不同的第三方 plugin,而無需記錄其名稱

886* `has_hooks`:plugin 是否貢獻 hooks911* `has_hooks`:plugin 是否貢獻 hooks

887* `has_mcp`:plugin 是否貢獻 MCP 伺服器912* `has_mcp`:plugin 是否貢獻 MCP 伺服器

913* `host_owned_mcp`:當 SDK 主機管理此 plugin 的 MCP 連線且 Claude Code 跳過讀取 plugin 的 MCP 伺服器配置時為 `true`,否則為 `false`。{/* min-version: 2.1.172 */}需要 Claude Code v2.1.172 或更新版本

888* `skill_path_count`:plugin 宣告的 skill 目錄數914* `skill_path_count`:plugin 宣告的 skill 目錄數

889* `command_path_count`:plugin 宣告的命令目錄數915* `command_path_count`:plugin 宣告的命令目錄數

890* `agent_path_count`:plugin 宣告的代理目錄數916* `agent_path_count`:plugin 宣告的代理目錄數

917* `safe_mode`:當工作階段以 [`--safe-mode`](/zh-TW/cli-reference) 啟動時為 `"true"`,否則為 `"false"`。在安全模式下,此事件僅報告配置的清單;plugin 的命令、skill、hooks 和 MCP 伺服器不會載入。{/* min-version: 2.1.169 */}需要 Claude Code v2.1.169 或更新版本

891 918 

892<h4 id="skill-activated-event">919<h4 id="skill-activated-event">

893 Skill 已啟動事件920 Skill 已啟動事件


906* `skill.name`:Skill 的名稱。對於使用者定義和第三方 plugin skill,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則值為預留位置 `"custom_skill"`933* `skill.name`:Skill 的名稱。對於使用者定義和第三方 plugin skill,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則值為預留位置 `"custom_skill"`

907* `invocation_trigger`:Skill 的觸發方式(`"user-slash"`、`"claude-proactive"` 或 `"nested-skill"`)934* `invocation_trigger`:Skill 的觸發方式(`"user-slash"`、`"claude-proactive"` 或 `"nested-skill"`)

908* `skill.source`:Skill 的載入位置(例如,`"bundled"`、`"userSettings"`、`"projectSettings"`、`"plugin"`)935* `skill.source`:Skill 的載入位置(例如,`"bundled"`、`"userSettings"`、`"projectSettings"`、`"plugin"`)

936* `skill.kind`:當 skill 是工作流程 skill 時為 `"workflow"`。否則不存在

909* `plugin.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時的擁有 plugin 名稱937* `plugin.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時的擁有 plugin 名稱

910* `marketplace.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時,擁有 plugin 的安裝市場938* `marketplace.name`(當 `OTEL_LOG_TOOL_DETAILS=1` 或 plugin 來自官方市場時):當 skill 由 plugin 提供時,擁有 plugin 的安裝市場

911 939 


964* `hook_event`:hook 事件類型,例如 `"PreToolUse"` 或 `"PostToolUse"`992* `hook_event`:hook 事件類型,例如 `"PreToolUse"` 或 `"PostToolUse"`

965* `hook_type`:hook 實作類型:`"command"`、`"prompt"`、`"mcp_tool"`、`"http"` 或 `"agent"`993* `hook_type`:hook 實作類型:`"command"`、`"prompt"`、`"mcp_tool"`、`"http"` 或 `"agent"`

966* `hook_source`:hook 的定義位置:`"userSettings"`、`"projectSettings"`、`"localSettings"`、`"flagSettings"`、`"policySettings"` 或 `"pluginHook"`994* `hook_source`:hook 的定義位置:`"userSettings"`、`"projectSettings"`、`"localSettings"`、`"flagSettings"`、`"policySettings"` 或 `"pluginHook"`

995* `safe_mode`:當工作階段以 [`--safe-mode`](/zh-TW/cli-reference) 啟動時為 `"true"`,否則為 `"false"`。{/* min-version: 2.1.169 */}需要 Claude Code v2.1.169 或更新版本

967* `hook_matcher`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):hook 配置中的匹配器字串(如果已設定)996* `hook_matcher`(當 `OTEL_LOG_TOOL_DETAILS=1` 時):hook 配置中的匹配器字串(如果已設定)

968* `plugin.name`(當 `hook_source` 是 `"pluginHook"` 時):貢獻 plugin 的名稱。對於官方市場和內建捆綁之外的 plugin,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則值為 `"third-party"`997* `plugin.name`(當 `hook_source` 是 `"pluginHook"` 時):貢獻 plugin 的名稱。對於官方市場和內建捆綁之外的 plugin,除非 `OTEL_LOG_TOOL_DETAILS=1`,否則值為 `"third-party"`

969* `plugin_id_hash`(當 `hook_source` 是 `"pluginHook"` 時):plugin 名稱和市場的確定性雜湊,僅傳送到您配置的匯出器。讓您計算不同的貢獻 plugin,而無需記錄其名稱998* `plugin_id_hash`(當 `hook_source` 是 `"pluginHook"` 時):plugin 名稱和市場的確定性雜湊,僅傳送到您配置的匯出器。讓您計算不同的貢獻 plugin,而無需記錄其名稱


987* `num_hooks`:匹配 hook 命令的數量1016* `num_hooks`:匹配 hook 命令的數量

988* `managed_only`:當僅允許受管原則 hook 時為 `"true"`1017* `managed_only`:當僅允許受管原則 hook 時為 `"true"`

989* `hook_source`:`"policySettings"` 或 `"merged"`1018* `hook_source`:`"policySettings"` 或 `"merged"`

1019* `safe_mode`:當工作階段以 [`--safe-mode`](/zh-TW/cli-reference) 啟動時為 `"true"`,否則為 `"false"`。{/* min-version: 2.1.169 */}需要 Claude Code v2.1.169 或更新版本

990* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含1020* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含

991 1021 

992<h4 id="hook-execution-complete-event">1022<h4 id="hook-execution-complete-event">


1013* `total_duration_ms`:所有匹配 hook 的牆上時間持續時間1043* `total_duration_ms`:所有匹配 hook 的牆上時間持續時間

1014* `managed_only`:當僅允許受管原則 hook 時為 `"true"`1044* `managed_only`:當僅允許受管原則 hook 時為 `"true"`

1015* `hook_source`:`"policySettings"` 或 `"merged"`1045* `hook_source`:`"policySettings"` 或 `"merged"`

1046* `safe_mode`:當工作階段以 [`--safe-mode`](/zh-TW/cli-reference) 啟動時為 `"true"`,否則為 `"false"`。{/* min-version: 2.1.169 */}需要 Claude Code v2.1.169 或更新版本

1016* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含1047* `hook_definitions`:JSON 序列化的 hook 配置。僅當詳細 beta 追蹤和 `OTEL_LOG_TOOL_DETAILS=1` 都啟用時才包含

1017 1048 

1018<h4 id="hook-plugin-metrics-event">1049<h4 id="hook-plugin-metrics-event">


1089| ------------------------------------------------------------- | ------------------------------------------------------------------------ |1120| ------------------------------------------------------------- | ------------------------------------------------------------------------ |

1090| `claude_code.token.usage` | 按 `type`(輸入/輸出)、使用者、團隊、模型、`skill.name`、`plugin.name` 或 `agent.name` 進行細分 |1121| `claude_code.token.usage` | 按 `type`(輸入/輸出)、使用者、團隊、模型、`skill.name`、`plugin.name` 或 `agent.name` 進行細分 |

1091| `claude_code.session.count` | 追蹤一段時間內的採用和參與度 |1122| `claude_code.session.count` | 追蹤一段時間內的採用和參與度 |

1092| `claude_code.lines_of_code.count` | 透過追蹤程式碼新增/移除來衡量生產力 |1123| `claude_code.lines_of_code.count` | 透過追蹤程式碼新增和移除來衡量生產力,按模型進行細分 |

1093| `claude_code.commit.count` & `claude_code.pull_request.count` | 了解對開發工作流程的影響 |1124| `claude_code.commit.count` & `claude_code.pull_request.count` | 了解對開發工作流程的影響 |

1094 1125 

1095<h3 id="cost-monitoring">1126<h3 id="cost-monitoring">


1116* 異常的權杖消耗1147* 異常的權杖消耗

1117* 來自特定使用者的高工作階段量1148* 來自特定使用者的高工作階段量

1118 1149 

1119所有指標都可以按 `user.account_uuid``user.account_id`、`organization.id`、`session.id``model` `app.version` 進行分段1150所有指標都可以按[標準屬性](#standard-attributes)進行分段。`model` 屬性可在 `claude_code.token.usage`、`claude_code.cost.usage` 上使用,以及從 v2.1.172 開始,`claude_code.lines_of_code.count` 上也可使用。提交的按模型細分只能透過在 `session.id` 上與權杖或成本指標進行聯接來近似,因為一個工作階段可以跨越多個模型

1120 1151 

1121<h3 id="detect-retry-exhaustion">1152<h3 id="detect-retry-exhaustion">

1122 偵測重試耗盡1153 偵測重試耗盡


1179 1210 

1180* `tool_result`:保留 `tool_name` 和 `mcp_server_scope`,省略 `mcp_server_name`、`mcp_tool_name` 和引數1211* `tool_result`:保留 `tool_name` 和 `mcp_server_scope`,省略 `mcp_server_name`、`mcp_tool_name` 和引數

1181* `tool_decision`:保留 `tool_name`,省略 `tool_parameters`1212* `tool_decision`:保留 `tool_name`,省略 `tool_parameters`

1182* `mcp_server_connection`:省略 `server_name` 和錯誤訊息1213* `mcp_server_connection`:省略 `server_name` 和錯誤訊息,但保留 `is_plugin`、`plugin_id_hash` 和 `plugin.name`,非 Anthropic plugin 名稱被編輯為字面上的 `"third-party"`,因此 plugin 提供的伺服器在沒有詳細日誌的情況下仍然可以區分

1183 1214 

1184<h3 id="map-security-questions-to-events">1215<h3 id="map-security-questions-to-events">

1185 將安全問題對應到事件1216 將安全問題對應到事件


1193| 權限模式升級 | `permission_mode_changed` | `from_mode`、`to_mode`、`trigger` |1224| 權限模式升級 | `permission_mode_changed` | `from_mode`、`to_mode`、`trigger` |

1194| 原則 hook 阻止了操作 | `hook_execution_complete` | `hook_event`、`num_blocking` |1225| 原則 hook 阻止了操作 | `hook_execution_complete` | `hook_event`、`num_blocking` |

1195| 登入、登出和身份驗證失敗 | `auth` | `action`、`success`、`error_category` |1226| 登入、登出和身份驗證失敗 | `auth` | `action`、`success`、`error_category` |

1196| MCP 伺服器連線或失敗 | `mcp_server_connection` | `status`、`server_name`、`error_code` |1227| MCP 伺服器連線或失敗 | `mcp_server_connection` | `status`、`server_name`、`is_plugin`、`error_code` |

1197| Plugin 已安裝及其來源 | `plugin_installed` | `plugin.name`、`marketplace.name`、`marketplace.is_official` |1228| Plugin 已安裝及其來源 | `plugin_installed` | `plugin.name`、`marketplace.name`、`marketplace.is_official` |

1198| 執行的命令和觸及的檔案 | `tool_result`(已執行)或 `tool_decision`(已拒絕)搭配 `OTEL_LOG_TOOL_DETAILS=1` | `tool_parameters`;`tool_input`(僅限 `tool_result`) |1229| 執行的命令和觸及的檔案 | `tool_result`(已執行)或 `tool_decision`(已拒絕)搭配 `OTEL_LOG_TOOL_DETAILS=1` | `tool_parameters`;`tool_input`(僅限 `tool_result`) |

1199 1230 


1230 1261 

1231* **時間序列資料庫(例如,Prometheus)**:速率計算、聚合指標1262* **時間序列資料庫(例如,Prometheus)**:速率計算、聚合指標

1232* **欄式存儲(例如,ClickHouse)**:複雜查詢、唯一使用者分析1263* **欄式存儲(例如,ClickHouse)**:複雜查詢、唯一使用者分析

1233* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:進階查詢、視覺化、警報1264* **功能完整的可觀測性平台(例如,Honeycomb、Datadog、Grafana Cloud)**:進階查詢、視覺化、警報

1234 1265 

1235<h3 id="for-events/logs">1266<h3 id="for-events/logs">

1236 對於事件/日誌1267 對於事件/日誌


1238 1269 

1239* **日誌聚合系統(例如,Elasticsearch、Loki)**:全文搜尋、日誌分析1270* **日誌聚合系統(例如,Elasticsearch、Loki)**:全文搜尋、日誌分析

1240* **欄式存儲(例如,ClickHouse)**:結構化事件分析1271* **欄式存儲(例如,ClickHouse)**:結構化事件分析

1241* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:指標和事件之間的關聯1272* **功能完整的可觀測性平台(例如,Honeycomb、Datadog、Grafana Cloud)**:指標和事件之間的關聯

1242 1273 

1243<h3 id="for-traces">1274<h3 id="for-traces">

1244 對於追蹤1275 對於追蹤


1247選擇支援分散式追蹤儲存和跨度關聯的後端:1278選擇支援分散式追蹤儲存和跨度關聯的後端:

1248 1279 

1249* **分散式追蹤系統(例如,Jaeger、Zipkin、Grafana Tempo)**:跨度視覺化、請求瀑布圖、延遲分析1280* **分散式追蹤系統(例如,Jaeger、Zipkin、Grafana Tempo)**:跨度視覺化、請求瀑布圖、延遲分析

1250* **功能完整的可觀測性平台(例如,Honeycomb、Datadog)**:追蹤搜尋和與指標和日誌的關聯1281* **功能完整的可觀測性平台(例如,Honeycomb、Datadog、Grafana Cloud)**:追蹤搜尋和與指標和日誌的關聯

1251 1282 

1252對於需要日活躍使用者/週活躍使用者/月活躍使用者 (DAU/WAU/MAU) 指標的組織,請考慮支援高效唯一值查詢的後端。1283對於需要日活躍使用者/週活躍使用者/月活躍使用者 (DAU/WAU/MAU) 指標的組織,請考慮支援高效唯一值查詢的後端。

1253 1284 

Details

57 * 使用者:`~/.claude/output-styles`57 * 使用者:`~/.claude/output-styles`

58 * 專案:`.claude/output-styles`58 * 專案:`.claude/output-styles`

59 * 受管原則:[受管設定目錄](/zh-TW/settings#settings-files)內的 `.claude/output-styles`59 * 受管原則:[受管設定目錄](/zh-TW/settings#settings-files)內的 `.claude/output-styles`

60 

61 專案輸出樣式會從工作目錄和儲存庫根目錄之間的每個 `.claude/output-styles/` 載入。{/* min-version: 2.1.178 */}自 v2.1.178 起,當多個這些巢狀目錄定義同名樣式時,Claude Code 會使用最接近工作目錄的那個。

60 </Step>62 </Step>

61 63 

62 <Step title="添加 frontmatter 和指令">64 <Step title="添加 frontmatter 和指令">

overview.md +3 −3

Details

124 <Tab title="JetBrains">124 <Tab title="JetBrains">

125 IntelliJ IDEA、PyCharm、WebStorm 和其他 JetBrains IDE 的外掛程式,具有互動式差異檢視和選擇內容共享。125 IntelliJ IDEA、PyCharm、WebStorm 和其他 JetBrains IDE 的外掛程式,具有互動式差異檢視和選擇內容共享。

126 126 

127 從 JetBrains Marketplace 安裝 [Claude Code 外掛程式](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-),然後重新啟動您的 IDE。127 從 JetBrains Marketplace 安裝 [Claude Code 外掛程式](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-),然後重新啟動您的 IDE。外掛程式需要單獨安裝的 Claude Code CLI;請參閱 [JetBrains 設定步驟](/zh-TW/jetbrains#installation)。

128 128 

129 [開始使用 JetBrains →](/zh-TW/jetbrains)129 [開始使用 JetBrains →](/zh-TW/jetbrains)

130 </Tab>130 </Tab>


176 <Accordion title="執行代理團隊並建立自訂代理" icon="users">176 <Accordion title="執行代理團隊並建立自訂代理" icon="users">

177 生成[多個 Claude Code 代理](/zh-TW/sub-agents),同時處理任務的不同部分。主導代理協調工作、指派子任務並合併結果。177 生成[多個 Claude Code 代理](/zh-TW/sub-agents),同時處理任務的不同部分。主導代理協調工作、指派子任務並合併結果。

178 178 

179 對於完全自訂的工作流程,[Agent SDK](/zh-TW/agent-sdk/overview) 可讓您建立由 Claude Code 的工具和功能驅動的自己的代理,並完全控制編排、工具存取和權限。179 若要在平行執行多個完整工作階段並從一個螢幕監視它們,請使用[背景代理](/zh-TW/agent-view)。對於完全自訂的工作流程,[Agent SDK](/zh-TW/agent-sdk/overview) 可讓您建立由 Claude Code 的工具和功能驅動的自己的代理,並完全控制編排、工具存取和權限。

180 </Accordion>180 </Accordion>

181 181 

182 <Accordion title="使用 CLI 進行管道、指令碼和自動化" icon="terminal">182 <Accordion title="使用 CLI 進行管道、指令碼和自動化" icon="terminal">


209 209 

210 * 離開您的辦公桌,使用[遠端控制](/zh-TW/remote-control)從您的手機或任何瀏覽器繼續工作210 * 離開您的辦公桌,使用[遠端控制](/zh-TW/remote-control)從您的手機或任何瀏覽器繼續工作

211 * 從您的手機向 [Dispatch](/zh-TW/desktop#sessions-from-dispatch) 傳送任務,並開啟它建立的桌面工作階段211 * 從您的手機向 [Dispatch](/zh-TW/desktop#sessions-from-dispatch) 傳送任務,並開啟它建立的桌面工作階段

212 * 在[網頁](/zh-TW/claude-code-on-the-web)或 [iOS 應用程式](https://apps.apple.com/app/claude-by-anthropic/id6473753684)上啟動長時間執行的任務,然後使用 `claude --teleport` 將其提取到您的終端機中212 * 在[網頁](/zh-TW/claude-code-on-the-web)或 [iOS 應用程式](https://apps.apple.com/app/claude-by-anthropic/id6473753684)上啟動長時間執行的任務,然後使用 `claude --teleport` 將其提取到您的終端機中。Teleport 需要 claude.ai 訂閱。

213 * 使用 `/desktop` 將終端機工作階段交付給[桌面應用程式](/zh-TW/desktop)以進行視覺差異審查213 * 使用 `/desktop` 將終端機工作階段交付給[桌面應用程式](/zh-TW/desktop)以進行視覺差異審查

214 * 從團隊聊天路由任務:在 [Slack](/zh-TW/slack) 中提及 `@Claude` 並提供錯誤報告,然後取回拉取請求214 * 從團隊聊天路由任務:在 [Slack](/zh-TW/slack) 中提及 `@Claude` 並提供錯誤報告,然後取回拉取請求

215 </Accordion>215 </Accordion>

Details

21| [`plan`](#analyze-before-you-edit-with-plan-mode) | 僅讀取 | 在變更前探索程式碼庫 |21| [`plan`](#analyze-before-you-edit-with-plan-mode) | 僅讀取 | 在變更前探索程式碼庫 |

22| [`auto`](#eliminate-prompts-with-auto-mode) | 所有操作,具有背景安全檢查 | 長時間執行的任務、減少提示疲勞 |22| [`auto`](#eliminate-prompts-with-auto-mode) | 所有操作,具有背景安全檢查 | 長時間執行的任務、減少提示疲勞 |

23| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | 僅預先批准的工具 | 鎖定的 CI 和指令碼 |23| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | 僅預先批准的工具 | 鎖定的 CI 和指令碼 |

24| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | 所有操作,具有背景安全檢查 | 隔離容器和 VM 僅 |24| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | 所有操作 | 隔離容器和 VM 僅 |

25 25 

26在除 `bypassPermissions` 外的每種模式中,寫入[受保護路徑](#protected-paths)永遠不會自動批准,保護倉庫狀態和 Claude 自己的配置免受意外損壞。26在除 `bypassPermissions` 外的每種模式中,寫入[受保護路徑](#protected-paths)永遠不會自動批准,保護倉庫狀態和 Claude 自己的配置免受意外損壞。

27 27 

28模式設定基線。在頂部分層[權限規則](/zh-TW/permissions#manage-permissions)以在除 `bypassPermissions` 外的任何模式中預先批准或阻止特定工具`bypassPermissions` 完全跳過權限層28模式設定基線。在頂部分層[權限規則](/zh-TW/permissions#manage-permissions)以預先批准或阻止特定工具。拒絕規則和明確詢問規則適用於每種模式,包括 `bypassPermissions`。允許規則在該模式中無效因為其他所有操作都已經被批准

29 29 

30<h2 id="switch-permission-modes">30<h2 id="switch-permission-modes">

31 切換權限模式31 切換權限模式


95 <Tab title="Web and mobile">95 <Tab title="Web and mobile">

96 在 [claude.ai/code](https://claude.ai/code) 或行動應用中使用提示框旁邊的模式下拉菜單。權限提示出現在 claude.ai 中以供批准。哪些模式出現取決於會話執行的位置:96 在 [claude.ai/code](https://claude.ai/code) 或行動應用中使用提示框旁邊的模式下拉菜單。權限提示出現在 claude.ai 中以供批准。哪些模式出現取決於會話執行的位置:

97 97 

98 * **雲端會話**在 [Claude Code on the web](/zh-TW/claude-code-on-the-web):Auto accept edits 和 Plan mode。Ask permissionsAuto Bypass permissions 不可用。98 * **雲端會話**在 [Claude Code on the web](/zh-TW/claude-code-on-the-web):Accept edits、Plan mode Auto mode。Accept edits 對應於 `default` 模式:雲端環境預先批准檔案編輯,無論模式如何,因此下拉菜單顯示 Accept edits 而不是 Ask permissions。來自設定的 `defaultMode: "acceptEdits"` 仍然被遵守。Auto mode 僅在您的組織允許且選定的模型支援時出現。Bypass permissions 不可用。

99 * **[Remote Control](/zh-TW/remote-control) 會話**在您的本機上:Ask permissions、Auto accept edits 和 Plan mode。Auto 和 Bypass permissions 不可用。99 * **[Remote Control](/zh-TW/remote-control) 會話**在您的本機上:Ask permissions、Auto accept edits 和 Plan mode。Auto 和 Bypass permissions 不可用。

100 100 

101 對於 Remote Control,您也可以在啟動主機時設定啟動模式:101 對於 Remote Control,您也可以在啟動主機時設定啟動模式:


176 Auto mode 需要 Claude Code v2.1.83 或更新版本。176 Auto mode 需要 Claude Code v2.1.83 或更新版本。

177</Note>177</Note>

178 178 

179Auto mode 讓 Claude 執行而不顯示權限提示。單獨的分類器模型在執行前審查操作,阻止任何超出您要求的操作、針對無法識別的基礎設施的操作,或似乎由 Claude 讀到的敵對內容驅動的操作。179Auto mode 讓 Claude 執行而不顯示例行權限提示。單獨的分類器模型在執行前審查操作,阻止任何超出您要求的操作、針對無法識別的基礎設施的操作,或似乎由 Claude 讀到的敵對內容驅動的操作。明確的[詢問規則](/zh-TW/permissions#manage-permissions)仍然會強制提示。

180 180 

181Auto mode 也指示 Claude 繼續工作而不停止以提出澄清問題,儘管當您的提示或技能明確依賴它時,Claude 仍然會提問。若要在保持權限提示的情況下獲得更強的自主行為,請改為設定[主動輸出風格](/zh-TW/output-styles)。181Auto mode 也指示 Claude 繼續工作而不停止以提出澄清問題,儘管當您的提示或技能明確依賴它時,Claude 仍然會提問。若要在保持權限提示的情況下獲得更強的自主行為,請改為設定[主動輸出風格](/zh-TW/output-styles)。

182 182 


193 193 

194如果 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)。

195 195 

196如果您在[設定](/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 v2.1.142 及更新版本忽略來自這些檔案的 `auto`,因此倉庫無法授予自己 auto mode。將其移至 `~/.claude/settings.json`。

197 197 

198<h3 id="enable-auto-mode-on-bedrock-vertex-ai-or-foundry">198<h3 id="enable-auto-mode-on-bedrock-vertex-ai-or-foundry">

199 在 Bedrock、Vertex AI 或 Foundry 上啟用 auto mode199 在 Bedrock、Vertex AI 或 Foundry 上啟用 auto mode

200</h3>200</h3>

201 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。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 Code v2.1.158 及更新版本中有效。這些提供商上僅支援 Claude Opus 4.7 和 Opus 4.8。

203 203 

204若要為一個開發人員啟用它,請將變數添加到 `~/.claude/settings.json` 中的 `env` 區塊:204若要為一個開發人員啟用它,請將變數添加到 `~/.claude/settings.json` 中的 `env` 區塊:

205 205 


293 1. 在子代理啟動前,委派的任務描述被評估,因此看起來危險的任務在生成時被阻止。293 1. 在子代理啟動前,委派的任務描述被評估,因此看起來危險的任務在生成時被阻止。

294 2. 當子代理執行時,它的每個操作都通過分類器,使用與父會話相同的規則,子代理前置事項中的任何 `permissionMode` 都被忽略。294 2. 當子代理執行時,它的每個操作都通過分類器,使用與父會話相同的規則,子代理前置事項中的任何 `permissionMode` 都被忽略。

295 3. 當子代理完成時,分類器審查其完整操作歷史;如果該返回檢查標記了一個問題,安全警告被添加到子代理結果前面。295 3. 當子代理完成時,分類器審查其完整操作歷史;如果該返回檢查標記了一個問題,安全警告被添加到子代理結果前面。

296 

297 步驟 1 需要 Claude Code v2.1.178 或更新版本。較早的版本在步驟 2 和 3 應用分類器,但在子代理啟動前沒有評估任務描述。

296 </Accordion>298 </Accordion>

297 299 

298 <Accordion title="成本和延遲">300 <Accordion title="成本和延遲">


304 使用 dontAsk 模式僅允許預先批准的工具306 使用 dontAsk 模式僅允許預先批准的工具

305</h2>307</h2>

306 308 

307`dontAsk` 模式自動拒絕每個否則會提示的工具呼叫。僅與您的 `permissions.allow` 規則和[唯讀 Bash 命令](/zh-TW/permissions#read-only-commands)相符的操作可以執行;明確的 `ask` 規則被拒絕而不是提示。這使模式完全非互動式,適合 CI 管道或受限環境,您可以在其中預先定義 Claude 可能執行的操作。309`dontAsk` 模式自動拒絕每個否則會提示的工具呼叫。僅與您的 `permissions.allow` 規則和[唯讀 Bash 命令](/zh-TW/permissions#read-only-commands)相符的操作可以執行;明確的 [`ask` 規則](/zh-TW/permissions#manage-permissions)被拒絕而不是提示。這使模式完全非互動式,適合 CI 管道或受限環境,您可以在其中預先定義 Claude 可能執行的操作。Cloud 工作階段在 [Claude Code on the web](/zh-TW/claude-code-on-the-web) 上忽略 `defaultMode: "dontAsk"`;詳見 [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) 以了解詳情。

308 310 

309在啟動時使用標誌設定它:311在啟動時使用標誌設定它:

310 312 


316 使用 bypassPermissions 模式跳過所有檢查318 使用 bypassPermissions 模式跳過所有檢查

317</h2>319</h2>

318 320 

319`bypassPermissions` 模式禁用權限提示和安全檢查,因此工具呼叫立即執行。自 v2.1.126 起,這包括寫入[受保護路徑](#protected-paths),較早版本仍會提示。針對檔案系統根目錄或主目錄的移除操作,例如 `rm -rf /` 和 `rm -rf ~`,仍會作為針對模型錯誤的斷路器而提示。僅在隔離環境(如容器、VM 或 dev container)中使用此模式,沒有網際網路存取,其中 Claude Code 無法損害您的主機系統。321`bypassPermissions` 模式禁用權限提示和安全檢查,因此工具呼叫立即執行。自 v2.1.126 起,這包括寫入[受保護路徑](#protected-paths),較早版本仍會提示。明確的[詢問規則](/zh-TW/permissions#manage-permissions)仍會在此模式中強制提示,針對檔案系統根目錄或主目錄的移除操作,例如 `rm -rf /` 和 `rm -rf ~`,仍會作為針對模型錯誤的斷路器而提示。僅在隔離環境(如容器、VM 或 dev container)中使用此模式,沒有網際網路存取,其中 Claude Code 無法損害您的主機系統。

320 322 

321您無法從未使用啟用標誌啟動的會話進入 `bypassPermissions`;使用其中一個重新啟動以啟用它:323您無法從未使用啟用標誌啟動的會話進入 `bypassPermissions`;使用其中一個重新啟動以啟用它:

322 324 


334 336 

335檢查在識別的沙箱內自動跳過。若要在容器中自主執行,請使用 [dev container](/zh-TW/devcontainer) 配置,該配置以非 root 使用者身份執行 Claude Code。337檢查在識別的沙箱內自動跳過。若要在容器中自主執行,請使用 [dev container](/zh-TW/devcontainer) 配置,該配置以非 root 使用者身份執行 Claude Code。

336 338 

339[Claude Code on the web](/zh-TW/claude-code-on-the-web) 不遵守您設定檔案中的 `defaultMode: "bypassPermissions"` 或 `"dontAsk"`,因此儲存庫的簽入設定無法在略過權限模式下啟動雲端會話。該設定會被無聲地忽略,會話會改為以模式下拉式選單中顯示的模式啟動。請參閱[切換權限模式](#switch-permission-modes)以了解雲端會話提供哪些模式。

340 

337<Warning>341<Warning>

338 `bypassPermissions` 不提供針對提示注入或意外操作的保護。對於沒有提示的背景安全檢查,請改為使用 [auto mode](#eliminate-prompts-with-auto-mode)。管理員可以通過在[受管設定](/zh-TW/permissions#managed-settings)中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來阻止此模式。342 `bypassPermissions` 不提供針對提示注入或意外操作的保護。對於沒有許多提示的背景安全檢查,請改為使用 [auto mode](#eliminate-prompts-with-auto-mode)。管理員可以通過在[受管設定](/zh-TW/permissions#managed-settings)中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來阻止此模式。

339</Warning>343</Warning>

340 344 

341<h2 id="protected-paths">345<h2 id="protected-paths">


351| `dontAsk` | 拒絕 |355| `dontAsk` | 拒絕 |

352| `bypassPermissions` | 允許 |356| `bypassPermissions` | 允許 |

353 357 

358[`permissions.allow`](/zh-TW/permissions#manage-permissions) 設定檔中的規則不會預先批准受保護路徑的寫入。安全檢查在 Claude Code 評估設定中的允許規則之前執行,因此在 `~/.claude/settings.json` 或 `.claude/settings.json` 中的 `Edit(.claude/**)` 之類的項目不會改變上表中的每種模式結果。在提示的模式中,`.claude/` 寫入的提示會提供**是的,並允許 Claude 在此工作階段編輯其自己的設定**,這會在該工作階段中批准後續的 `.claude/` 寫入而不再提示。

359 

354受保護的目錄:360受保護的目錄:

355 361 

356* `.git`362* `.git`


362* `.devcontainer`368* `.devcontainer`

363* `.yarn`369* `.yarn`

364* `.mvn`370* `.mvn`

365* `.claude`,除了 `.claude/commands`、`.claude/agents`、`.claude/skills` 和 `.claude/worktrees`,其中 Claude 例行建立內容371* `.claude`,除了 `.claude/worktrees`,其中 Claude 儲存其自己的 git worktrees

366 372 

367受保護的檔案:373受保護的檔案:

368 374 

permissions.md +80 −8

Details

30* **Ask** 規則在 Claude Code 嘗試使用指定工具時提示確認。30* **Ask** 規則在 Claude Code 嘗試使用指定工具時提示確認。

31* **Deny** 規則防止 Claude Code 使用指定的工具。31* **Deny** 規則防止 Claude Code 使用指定的工具。

32 32 

33規則按順序評估:**deny -> ask -> allow**。第一個符合的規則獲勝,因此 deny 規則始終優先33規則按順序評估:deny、ask,然後 allow。該順序中的第一個符合項決定結果,規則特異性不會改變順序。符合的 deny 規則(例如 `Bash(aws *)`)會阻止每個符合的呼叫包括也符合較窄 allow 規則(例如 `Bash(aws s3 ls)`)的呼叫,因此 deny 規則無法攜帶允許清單例外ask 和 allow 之間也適用相同的優先順序:符合的 ask 規則即使有更具體的 allow 規則也符合相同的呼叫時,也會提示。

34 34 

35Deny 規則的行為取決於它們是否命名工具或在工具內限定模式。像 `Bash` 這樣的裸工具名稱會將工具從 Claude 的上下文中完全移除,因此 Claude 永遠看不到它。像 `Bash(rm *)` 這樣的限定規則會保留工具可用性,並在 Claude 嘗試時阻止符合的呼叫。35Deny 規則的行為取決於它們是否命名工具或在工具內限定模式。像 `Bash` 這樣的裸工具名稱會將工具從 Claude 的上下文中完全移除,因此 Claude 永遠看不到它。像 `Bash(rm *)` 這樣的限定規則會保留工具可用性,並在 Claude 嘗試時阻止符合的呼叫。

36 36 


51| `plan` | Plan Mode:Claude 讀取檔案並執行唯讀 shell 命令以探索,但不編輯您的原始檔案 |51| `plan` | Plan Mode:Claude 讀取檔案並執行唯讀 shell 命令以探索,但不編輯您的原始檔案 |

52| `auto` | 自動批准工具呼叫,並進行背景安全檢查以驗證操作是否符合您的要求。目前為研究預覽版 |52| `auto` | 自動批准工具呼叫,並進行背景安全檢查以驗證操作是否符合您的要求。目前為研究預覽版 |

53| `dontAsk` | 自動拒絕工具,除非透過 `/permissions` 或 `permissions.allow` 規則預先批准 |53| `dontAsk` | 自動拒絕工具,除非透過 `/permissions` 或 `permissions.allow` 規則預先批准 |

54| `bypassPermissions` | 跳過所有權限提示。根目錄和主目錄移除(例如 `rm -rf /`)仍會作為斷路器提示 |54| `bypassPermissions` | 跳過權限提示,但明確的 `ask` 規則強制的提示除外。根目錄和主目錄移除(例如 `rm -rf /`)仍會作為斷路器提示 |

55 55 

56<Warning>56<Warning>

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"` 來防止此模式。57 `bypassPermissions` 模式會跳過權限提示,包括對 `.git`、`.config/git`、`.claude`、`.vscode`、`.idea`、`.husky`、`.cargo`、`.devcontainer`、`.yarn` 和 `.mvn` 的寫入。明確的 `ask` 規則仍會強制提示針對檔案系統根目錄或主目錄的移除(例如 `rm -rf /` 和 `rm -rf ~`仍會作為斷路器提示以防止模型錯誤。僅在隔離環境(如容器或虛擬機)中使用此模式,其中 Claude Code 無法造成損害。管理員可以透過在 [managed settings](#managed-settings) 中將 `permissions.disableBypassPermissionsMode` 設定為 `"disable"` 來防止此模式。

58</Warning>58</Warning>

59 59 

60若要防止 `bypassPermissions` 或 `auto` 模式被使用,請在任何 [settings files](/zh-TW/settings#settings-files) 中將 `permissions.disableBypassPermissionsMode` 或 `permissions.disableAutoMode` 設定為 `"disable"`。這些在 [managed settings](#managed-settings) 中最有用,因為它們無法被覆蓋。60若要防止 `bypassPermissions` 或 `auto` 模式被使用,請在任何 [settings file](/zh-TW/settings#settings-files) 中將 `permissions.disableBypassPermissionsMode` 或 `permissions.disableAutoMode` 設定為 `"disable"`。這些在 [managed settings](#managed-settings) 中最有用,因為它們無法被覆蓋。

61 61 

62<h2 id="permission-rule-syntax">62<h2 id="permission-rule-syntax">

63 權限規則語法63 權限規則語法


91| `Read(./.env)` | 符合讀取目前目錄中的 `.env` 檔案 |91| `Read(./.env)` | 符合讀取目前目錄中的 `.env` 檔案 |

92| `WebFetch(domain:example.com)` | 符合對 example.com 的擷取請求 |92| `WebFetch(domain:example.com)` | 符合對 example.com 的擷取請求 |

93 93 

94<h3 id="match-by-input-parameter">

95 按輸入參數進行符合

96</h3>

97 

98拒絕和詢問規則可以使用 `Tool(param:value)` 符合任何工具上的頂層輸入參數。當 Claude 呼叫該工具且該參數設定為該確切值時,規則會符合。此語法適用於拒絕和詢問規則;單一參數值的允許規則不會確立該呼叫整體是安全的,因此允許規則繼續使用每個工具自己的指定符語法。這適用於工具接受的任何純量參數:

99 

100| 規則 | 符合 |

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

102| `Agent(model:opus)` | 要求 Opus 模型層級的 Agent 呼叫 |

103| `Agent(isolation:worktree)` | 要求 git worktree 的 Agent 呼叫 |

104| `Bash(run_in_background:true)` | 在背景執行的 Bash 呼叫 |

105 

106參數符合遵循這些規則:

107 

108* 參數名稱必須是工具輸入的直接欄位,例如 Agent 工具上的 `model`。巢狀在物件或陣列內的欄位不可符合

109* 每個規則命名一個參數。若要在 `model` 和 `isolation` 上設定閘道,請寫入兩個規則 `Agent(model:opus)` 和 `Agent(isolation:worktree)`,而不是在一個規則中組合它們

110* 值支援 `*` 作為符合任何字元序列的萬用字元,因此 `Agent(isolation:*)` 符合任何明確的隔離值。沒有 `*` 時,符合是確切的

111* 模型省略的參數永遠不會被符合,因此 `Agent(model:*)` 不符合留下 `model` 未設定的呼叫

112* 值與 Claude 傳送的字面輸入進行比較,在任何正規化之前。`Agent(model:opus)` 符合別名 `opus` 但不符合完整模型 ID。使用 [`--verbose`](/zh-TW/cli-reference) 執行以查看每個工具呼叫中的確切參數名稱和值

113* 冒號周圍的空格被忽略

114 

115工具已使用自己的規範化規則符合的欄位不可以這種方式符合:Bash 和 PowerShell 的 `command`、Read、Edit 和 Write 的 `file_path`、Grep 和 Glob 的 `path`、NotebookEdit 的 `notebook_path`,以及 WebFetch 的 `url`。像 `Bash(command:rm *)` 這樣的規則可能會被複合命令繞過,因此 Claude Code 會忽略它並在啟動時發出警告。改用 `Bash(rm *)`、`Read(./path)` 或 `WebFetch(domain:host)`。

116 

94<h3 id="wildcard-patterns">117<h3 id="wildcard-patterns">

95 萬用字元模式118 萬用字元模式

96</h3>119</h3>


118 141 

119當您為命令前綴選擇「是,不要再問」時,權限對話框會寫入空格分隔的形式。`:*` 形式僅在模式末尾被識別。在像 `Bash(git:* push)` 這樣的模式中,冒號被視為字面字元,不會符合 git 命令。142當您為命令前綴選擇「是,不要再問」時,權限對話框會寫入空格分隔的形式。`:*` 形式僅在模式末尾被識別。在像 `Bash(git:* push)` 這樣的模式中,冒號被視為字面字元,不會符合 git 命令。

120 143 

144<h3 id="tool-name-wildcards">

145 工具名稱萬用字元

146</h3>

147 

148拒絕和詢問規則也接受工具名稱位置中的 glob 模式。該模式必須符合完整工具名稱:`"*"` 符合每個工具,而 `"mcp__*"` 符合所有伺服器上的每個 MCP 工具。由裸名稱 glob 拒絕規則符合的工具會從 Claude 的上下文中移除,與裸工具名稱相同。此設定拒絕每個 MCP 工具:

149 

150```json theme={null}

151{

152 "permissions": {

153 "deny": [

154 "mcp__*"

155 ]

156 }

157}

158```

159 

160允許規則僅在字面 `mcp__<server>__` 前綴之後接受工具名稱 glob。伺服器區段必須無 glob,以便規則命名您設定的特定伺服器。`mcp__puppeteer__*` 符合來自 `puppeteer` 伺服器的每個工具,而 `mcp__github__get_*` 符合其 `get_` 工具。未錨定的允許 glob(例如 `"*"`、`"B*"` 或 `"mcp__*"`)會被跳過並顯示警告,不會自動核准任何內容。

161 

162拒絕或詢問規則,其工具名稱不符合任何已知工具,會在啟動時產生警告以捕捉拼寫錯誤。包含 `_` 或 `*` 的工具名稱不受檢查限制。

163 

164工具在文字記錄和權限對話框中顯示的標籤可能與其規範名稱不同。例如,文字記錄中標記為 `Stop Task` 的工具具有規範名稱 `TaskStop`。權限規則和 [hook 匹配器](/zh-TW/hooks)僅符合規範名稱,因此寫成 `Stop Task` 的規則不符合。對於拒絕和詢問規則,上述啟動警告會捕捉不匹配。使用 [工具參考](/zh-TW/tools-reference)中列出的規範名稱。

165 

121<h2 id="tool-specific-permission-rules">166<h2 id="tool-specific-permission-rules">

122 工具特定的權限規則167 工具特定的權限規則

123</h2>168</h2>


266 WebFetch311 WebFetch

267</h3>312</h3>

268 313 

269* `WebFetch(domain:example.com)` 符合對 example.com 的擷取請求314WebFetch 規則使用 `domain:` 前綴,並針對請求 URL 的主機名進行符合。符合不區分大小寫,支援 `*` 萬用字元,並從規則和主機名中移除尾部 `.`,所以 `example.com.` `example.com` 被視為相同。

315 

316* `WebFetch(domain:example.com)` 符合對 `example.com` 的請求

317* `WebFetch(domain:*.example.com)` 符合任何深度的任何子網域,如 `api.example.com` 或 `a.b.example.com`,但不符合 `example.com` 本身

318* `WebFetch(domain:*)` 符合每個網域,等同於裸 `WebFetch` 規則

319 

320在前導 `*.` 或裸 `*` 以外的任何位置,萬用字元僅符合兩個點之間的文字。`WebFetch(domain:example.*)` 符合 `example.org`,其中 `*` 變成 `org`,但不符合 `example.evil.com`,其中 `*` 必須變成 `evil.com` 並跨越一個點。這可防止尾部萬用字元符合攻擊者可以註冊的網域。

270 321 

271<h3 id="mcp">322<h3 id="mcp">

272 MCP323 MCP


296}347}

297```348```

298 349 

350<h3 id="cd">

351 Cd

352</h3>

353 

354`Cd` 規則控制 [`/cd` 命令](/zh-TW/commands) 可以將工作階段移動到哪些目錄。`Cd` 不是模型可呼叫的工具:Claude 無法呼叫它,規則僅在您自己執行 `/cd` 時適用。

355 

356裸 `Cd` deny 規則會完全停用 `/cd`。`Cd(<path-pattern>)` deny 規則會阻止符合的目標。Deny 規則檢查目標的每個拼寫,包括它解析通過的每個符號連結跳躍,所以為一個路徑編寫的規則也會阻止解析到它的目標。

357 

358新增任何 `Cd` allow 規則會將 `/cd` 切換到允許清單模式:已解析的目標目錄必須符合您的其中一個 allow 規則,否則 `/cd` 會拒絕。未設定 `Cd` 規則時,`/cd` 會保持其預設行為並提示您信任不熟悉的目錄。

359 

360路徑模式共享來自 [Read 和 Edit 規則](#read-and-edit) 的 `//`、`~/` 和 `/` 錨點,但符合是錨定到整個目錄路徑而不是 gitignore 風格。`*` 符合恰好一個路徑段,`**` 符合跨段。尾部 `/**` 也符合其命名根。

361 

362| 規則 | 符合 | 不符合 |

363| --------------------- | ------------------------- | ------------------------- |

364| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`、`~/code` |

365| `Cd(~/code/**)` | `~/code` 和其下的任何目錄 | `~/code` 外的目錄 |

366| `Cd(**/node_modules)` | 任何深度的任何 `node_modules` 目錄 | `node_modules/pkg` |

367 

299<h2 id="extend-permissions-with-hooks">368<h2 id="extend-permissions-with-hooks">

300 使用 hooks 擴展權限369 使用 hooks 擴展權限

301</h2>370</h2>


318 387 

319其他目錄中的檔案遵循與原始工作目錄相同的權限規則:它們變成可讀的而無需提示,檔案編輯權限遵循目前的權限模式。388其他目錄中的檔案遵循與原始工作目錄相同的權限規則:它們變成可讀的而無需提示,檔案編輯權限遵循目前的權限模式。

320 389 

390若要改變工作階段的主要工作目錄而不是新增另一個,請使用 [`/cd`](/zh-TW/commands)。`/cd` 命令需要 Claude Code v2.1.169 或更新版本。與 `/add-dir` 不同,它會重新定位工作階段:新目錄的 `CLAUDE.md` 會被載入,而 `--resume` 會從該處找到工作階段。

391 

321<h3 id="additional-directories-grant-file-access-not-configuration">392<h3 id="additional-directories-grant-file-access-not-configuration">

322 其他目錄授予檔案存取權,而非設定393 其他目錄授予檔案存取權,而非設定

323</h3>394</h3>


331| 設定 | 從 `--add-dir` 載入 |402| 設定 | 從 `--add-dir` 載入 |

332| :----------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- |403| :----------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- |

333| `.claude/skills/` 中的 [Skills](/zh-TW/skills) | 是,具有即時重新載入 |404| `.claude/skills/` 中的 [Skills](/zh-TW/skills) | 是,具有即時重新載入 |

405| `.claude/agents/` 中的 [Subagents](/zh-TW/sub-agents) | 是 |

334| `.claude/settings.json` 中的外掛設定 | 僅 `enabledPlugins` 和 `extraKnownMarketplaces` |406| `.claude/settings.json` 中的外掛設定 | 僅 `enabledPlugins` 和 `extraKnownMarketplaces` |

335| [CLAUDE.md](/zh-TW/memory) 檔案、`.claude/rules/` 和 `CLAUDE.local.md` | 僅當設定 `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` 時。`CLAUDE.local.md` 另外需要 `local` 設定來源,預設啟用 |407| [CLAUDE.md](/zh-TW/memory) 檔案、`.claude/rules/` 和 `CLAUDE.local.md` | 僅當設定 `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` 時。`CLAUDE.local.md` 另外需要 `local` 設定來源,預設啟用 |

336 408 

337Subagents、命令和輸出樣式是從目前工作目錄及其父目錄、您在 `~/.claude/` 的使用者目錄和受管理設定發現的。Hooks 和其他 `settings.json` 金鑰從目前工作目錄的 `.claude/` 資料夾載入,沒有父目錄回退,同時也從您的使用者 `~/.claude/settings.json` 和受管理設定載入。若要在專案間共享該設定,請使用以下方法之一:409命令和輸出樣式是從目前工作目錄及其父目錄、您在 `~/.claude/` 的使用者目錄和受管理設定發現的。Hooks 和其他 `settings.json` 金鑰從目前工作目錄的 `.claude/` 資料夾載入,沒有父目錄回退,同時也從您的使用者 `~/.claude/settings.json` 和受管理設定載入。若要在專案間共享該設定,請使用以下方法之一:

338 410 

339* **使用者級別設定**:將檔案放在 `~/.claude/agents/`、`~/.claude/output-styles/` 或 `~/.claude/settings.json` 中,使其在每個專案中可用411* **使用者級別設定**:將檔案放在 `~/.claude/agents/`、`~/.claude/output-styles/` 或 `~/.claude/settings.json` 中,使其在每個專案中可用

340* **外掛**:將設定打包並分發為 [plugin](/zh-TW/plugins),供團隊安裝412* **外掛**:將設定打包並分發為 [plugin](/zh-TW/plugins),供團隊安裝


356* 沙箱中的檔案系統限制結合 [`sandbox.filesystem`](/zh-TW/sandboxing) 設定與 Read 和 Edit deny 規則;兩者都合併到最終沙箱邊界中428* 沙箱中的檔案系統限制結合 [`sandbox.filesystem`](/zh-TW/sandboxing) 設定與 Read 和 Edit deny 規則;兩者都合併到最終沙箱邊界中

357* 網路限制結合 WebFetch 權限規則與沙箱的 `allowedDomains` 和 `deniedDomains` 清單429* 網路限制結合 WebFetch 權限規則與沙箱的 `allowedDomains` 和 `deniedDomains` 清單

358 430 

359當沙箱啟用 `autoAllowBashIfSandboxed: true`(預設值)時,沙箱化 Bash 命令無需提示即可執行,即使您的權限包括 `ask: Bash(*)`。沙箱邊界替代每個命令提示。明確的 deny 規則仍然適用,以及針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發提示。請參閱 [sandbox modes](/zh-TW/sandboxing#sandbox-modes) 以變更此行為。431當沙箱啟用 `autoAllowBashIfSandboxed: true`(預設值)時,沙箱化 Bash 命令無需提示即可執行,即使您的權限包括 bare `Bash` ask 規則,或 [等效的 `Bash(*)` 形式](#match-all-uses-of-a-tool):沙箱邊界替代整個工具提示內容範圍的 ask 規則(如 `Bash(git push *)`)仍然強制提示,明確的 deny 規則仍然適用,以及針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發提示。不會在沙箱中執行的命令(例如排除的命令)會遵守 bare `Bash` ask 規則。請參閱 [sandbox modes](/zh-TW/sandboxing#sandbox-modes) 以變更此行為。

360 432 

361<h2 id="managed-settings">433<h2 id="managed-settings">

362 受管理設定434 受管理設定


415 範例設定487 範例設定

416</h2>488</h2>

417 489 

418此 [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) 包含常見部署情境的入門設定設定。使用這些作為起點並根據您的需求進行調整。490此 [repository](https://github.com/anthropics/claude-code/tree/main/examples/settings) 包含常見部署情境的入門設定。使用這些作為起點並根據您的需求進行調整。

419 491 

420<h2 id="see-also">492<h2 id="see-also">

421 另請參閱493 另請參閱

platforms.md +1 −1

Details

23| [Web](/zh-TW/claude-code-on-the-web) | 不需要太多操控的長時間執行任務,或應該在您離線時繼續進行的工作 | Anthropic 託管雲端、在您斷開連接後繼續 |23| [Web](/zh-TW/claude-code-on-the-web) | 不需要太多操控的長時間執行任務,或應該在您離線時繼續進行的工作 | Anthropic 託管雲端、在您斷開連接後繼續 |

24| Mobile | 在遠離電腦時啟動和監控任務 | iOS 和 Android 版 Claude 應用程式的雲端會話、用於本地會話的 [Remote Control](/zh-TW/remote-control)、Pro 和 Max 上的 [Dispatch](/zh-TW/desktop#sessions-from-dispatch) 到 Desktop |24| Mobile | 在遠離電腦時啟動和監控任務 | iOS 和 Android 版 Claude 應用程式的雲端會話、用於本地會話的 [Remote Control](/zh-TW/remote-control)、Pro 和 Max 上的 [Dispatch](/zh-TW/desktop#sessions-from-dispatch) 到 Desktop |

25 25 

26CLI 是終端原生工作的最完整介面:指令碼和 Agent SDK 僅限 CLI。第三方提供商也可在 [VS Code](/zh-TW/vs-code#use-third-party-providers) 中使用。企業 [Desktop](/zh-TW/desktop) 部署支援 Vertex AI 和閘道提供商;對於 Bedrock 或 Foundry,請改用 CLI 或 VS Code 而不是 Desktop。Desktop 和 IDE 擴充功能用視覺審查和更緊密的編輯器整合來交換一些僅限 CLI 的功能。Web 在 Anthropic 的雲端中執行,因此任務在您斷開連接後會繼續進行。Mobile 是進入這些相同雲端會話或透過 Remote Control 進入本地會話的瘦用戶端,並可以透過 Dispatch 將任務發送到 Desktop。26CLI 是終端原生工作的最完整介面:指令碼和 Agent SDK 僅限 CLI。第三方提供商也可在 [VS Code](/zh-TW/vs-code#use-third-party-providers) 中使用。企業 [Desktop](/zh-TW/desktop) 部署支援 Vertex AI 和閘道提供商;對於 Bedrock 或 Foundry,請改用 CLI 或 VS Code,或 [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview),其在這些提供商上執行 Code 標籤。Desktop 和 IDE 擴充功能用視覺審查和更緊密的編輯器整合來交換一些僅限 CLI 的功能。Web 在 Anthropic 的雲端中執行,因此任務在您斷開連接後會繼續進行。Mobile 是進入這些相同雲端會話或透過 Remote Control 進入本地會話的瘦用戶端,並可以透過 Dispatch 將任務發送到 Desktop。

27 27 

28您可以在同一專案上混合使用介面。配置、專案記憶體和 MCP 伺服器在本地介面之間共享。28您可以在同一專案上混合使用介面。配置、專案記憶體和 MCP 伺服器在本地介面之間共享。

29 29 

plugin-hints.md +7 −4

Details

16 運作方式16 運作方式

17</h2>17</h2>

18 18 

19Claude Code 為透過 Bash 和 PowerShell 工具執行的每個命令,以及 [hook](/zh-TW/hooks) 命令設定 [`CLAUDECODE`](/zh-TW/env-vars) 環境變數為 `1`。當您的 CLI 看到該變數時,它會向 stderr 寫入自閉合的 `<claude-code-hint />` 標籤。在 hook 命令中,提示標籤會被移除並忽略。只有 Bash 和 PowerShell 工具輸出會觸發安裝提示。19Claude Code 為透過 Bash 和 PowerShell 工具執行的每個命令,以及 [hook](/zh-TW/hooks) 命令設定 [`CLAUDECODE`](/zh-TW/env-vars) 環境變數為 `1`。{/* min-version: 2.1.172 */}從 v2.1.172 開始,它也會在這些相同的子程序中將 [`CLAUDE_CODE_CHILD_SESSION`](/zh-TW/env-vars) 設定為 `1`。當您的 CLI 看到其中一個變數時,它會向 stderr 寫入自閉合的 `<claude-code-hint />` 標籤。在 hook 命令中,提示標籤會被移除並忽略。只有 Bash 和 PowerShell 工具輸出會觸發安裝提示。

20 20 

21當 Claude Code 接收到命令輸出時,它會:21當 Claude Code 接收到命令輸出時,它會:

22 22 


31 發出提示31 發出提示

32</h2>32</h2>

33 33 

34 `CLAUDECODE` 環境變數上設定發出條件以便標記永遠不會出現在人類使用者的終端中。然後將標籤寫入 stderr 的單獨一行。34在環境變數上設定發出條件,以便標記不太可能在人類直接執行您的 CLI 時出現,然後將標籤寫入 stderr 的單獨一行。選擇要檢查的變數:

35 35 

36以下範例為官方市場中名為 `example-cli` 的外掛程式發出提示36* `CLAUDECODE`:在每個 Claude Code 版本上設定,因此可以到達最多的工作階段。它也在 Claude Code 啟動的 tmux 工作階段和 stdio MCP 伺服器子程序中設定,IDE 擴充功能在其整合終端中設定它,人類可能在那裡直接執行您的 CLI。

37* {/* min-version: 2.1.172 */}`CLAUDE_CODE_CHILD_SESSION`:僅在 Claude Code 本身產生的子程序中設定,例如工具呼叫、hook 命令和[狀態列](/zh-TW/statusline)命令,因此標籤通常不會到達人類終端。在工作階段內啟動的長期程序(例如 tmux 伺服器)會捕獲該變數,因此稍後從該程序啟動的 shell 仍會顯示原始標籤。需要 Claude Code v2.1.172 或更新版本,因此舊版本上的工作階段會遺漏提示。

38 

39以下範例在 `CLAUDECODE` 上設定條件以達到最大覆蓋範圍,並為官方市場中名為 `example-cli` 的外掛程式發出提示:

37 40 

38<CodeGroup>41<CodeGroup>

39 ```javascript Node.js theme={null}42 ```javascript Node.js theme={null}


147其餘指導是建議的,但不是強制的。Claude Code 無法觀察您的 CLI 是否遵循它:150其餘指導是建議的,但不是強制的。Claude Code 無法觀察您的 CLI 是否遵循它:

148 151 

149* **寫入 stderr**:stderr 將標籤保留在 shell 管道之外,例如 `example-cli deploy | jq`。Claude Code 掃描兩個流,因此 stdout 也有效。152* **寫入 stderr**:stderr 將標籤保留在 shell 管道之外,例如 `example-cli deploy | jq`。Claude Code 掃描兩個流,因此 stdout 也有效。

150* **在 `CLAUDECODE` 上設定條件**:僅在設定 `CLAUDECODE` 環境變數時發出。這可防止標記出現在直接執行您的 CLI 的使用者153* **在環境變數上設定條件**:僅在設定 `CLAUDECODE` `CLAUDE_CODE_CHILD_SESSION` 時發出請參閱[發出提示](#emit-the-hint)以了解這兩個變數的差異。

151 154 

152<h2 id="get-your-plugin-into-the-official-marketplace">155<h2 id="get-your-plugin-into-the-official-marketplace">

153 將您的外掛程式納入官方市場156 將您的外掛程式納入官方市場

Details

171| `plugins` | array | 可用 plugin 的清單 | 請參閱下面 |171| `plugins` | array | 可用 plugin 的清單 | 請參閱下面 |

172 172 

173<Note>173<Note>

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`)也被阻止。174 **保留名稱**:以下 marketplace 名稱保留供 Anthropic 官方使用,第三方 marketplace 無法使用:`claude-code-marketplace`、`claude-code-plugins`、`claude-plugins-official`、`claude-plugins-community`、`claude-community`、`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`)也被阻止。

175</Note>175</Note>

176 176 

177<h3 id="owner-fields">177<h3 id="owner-fields">


203 203 

204`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`。

205 205 

206<h3 id="required-fields">206<h3 id="required-fields-1">

207 必需欄位207 必需欄位

208</h3>208</h3>

209 209 


269 例如,託管在 `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 來源指向不同的儲存庫,並獨立固定。

270</Note>270</Note>

271 271 

272基於 git 的來源類型如下為 `github`、`url` 和 `git-subdir`。當任何一個上同時設定 `ref` 和 `sha` 時,`sha` 是有效的固定。Claude Code 直接取得並簽出固定的提交,因此即使上游的 `ref` 命名的分支或標籤已被刪除,只要提交仍可從儲存庫到達,安裝就會成功。

273 

272<h3 id="relative-paths">274<h3 id="relative-paths">

273 相對路徑275 相對路徑

274</h3>276</h3>


505* **`${CLAUDE_PLUGIN_ROOT}`**:在 hooks 和 MCP server 配置中使用此變數來參考 plugin 安裝目錄內的檔案。這是必要的,因為 plugin 在安裝時被複製到快取位置。對於應在 plugin 更新後保留的相依性或狀態,請改用 [`${CLAUDE_PLUGIN_DATA}`](/zh-TW/plugins-reference#persistent-data-directory)。507* **`${CLAUDE_PLUGIN_ROOT}`**:在 hooks 和 MCP server 配置中使用此變數來參考 plugin 安裝目錄內的檔案。這是必要的,因為 plugin 在安裝時被複製到快取位置。對於應在 plugin 更新後保留的相依性或狀態,請改用 [`${CLAUDE_PLUGIN_DATA}`](/zh-TW/plugins-reference#persistent-data-directory)。

506* **`strict: false`**:由於此設定為 false,plugin 不需要自己的 `plugin.json`。marketplace 項目定義所有內容。請參閱下面的 [Strict mode](#strict-mode)。508* **`strict: false`**:由於此設定為 false,plugin 不需要自己的 `plugin.json`。marketplace 項目定義所有內容。請參閱下面的 [Strict mode](#strict-mode)。

507 509 

510根據預設,plugin 的 skills 從其 `source` 下的 `skills/` 目錄載入,`skills` 下列出的任何路徑都會新增到該掃描中。例外是 marketplace 根目錄來源,例如 `source: "./"` 的情況,其中多個 plugin 項目共享一個 `skills/` 資料夾。在該情況下,在 `skills` 下列出特定子目錄會使該清單成為該項目的完整集合,`skills/` 下的其他目錄不會載入。列出 `skills/` 目錄本身或 plugin 根目錄會保持完整掃描。如果列出的路徑都不存在,則改為執行預設掃描。

511 

508<h3 id="strict-mode">512<h3 id="strict-mode">

509 Strict mode513 Strict mode

510</h3>514</h3>


1074* 檢查 plugin 目錄是否包含必需的檔案1078* 檢查 plugin 目錄是否包含必需的檔案

1075* 對於 GitHub 來源,確保儲存庫是公開的或您有存取權1079* 對於 GitHub 來源,確保儲存庫是公開的或您有存取權

1076* 透過手動複製/下載測試 plugin 來源1080* 透過手動複製/下載測試 plugin 來源

1081* 如果來源同時固定 `ref` 和 `sha`,已刪除的上游分支或標籤不會阻止安裝。如果安裝仍然失敗,請確認固定的提交仍然存在於儲存庫中

1077 1082 

1078<h3 id="private-repository-authentication-fails">1083<h3 id="private-repository-authentication-fails">

1079 私人儲存庫驗證失敗1084 私人儲存庫驗證失敗


1159 另請參閱1164 另請參閱

1160</h2>1165</h2>

1161 1166 

1162* [探索並安裝預先建立的 plugin](/zh-TW/discover-plugins) - 從現有 marketplace 安裝 plugin1167* [探索並安裝預先建立的 plugins](/zh-TW/discover-plugins) - 從現有 marketplace 安裝 plugins

1163* [Plugins](/zh-TW/plugins) - 建立您自己的 plugin1168* [Plugins](/zh-TW/plugins) - 建立您自己的 plugins

1164* [Plugins reference](/zh-TW/plugins-reference) - 完整的技術規格和架構1169* [Plugins reference](/zh-TW/plugins-reference) - 完整的技術規格和架構

1165* [Plugin settings](/zh-TW/settings#plugin-settings) - Plugin 配置選項1170* [Plugin settings](/zh-TW/settings#plugin-settings) - Plugin 配置選項

1166* [strictKnownMarketplaces reference](/zh-TW/settings#strictknownmarketplaces) - 受管 marketplace 限制1171* [strictKnownMarketplaces reference](/zh-TW/settings#strictknownmarketplaces) - 受管 marketplace 限制

plugins.md +3 −1

Details

216| `bin/` | Plugin 根目錄 | 在啟用 plugin 時新增到 Bash tool 的 `PATH` 的可執行檔 |216| `bin/` | Plugin 根目錄 | 在啟用 plugin 時新增到 Bash tool 的 `PATH` 的可執行檔 |

217| `settings.json` | Plugin 根目錄 | 啟用 plugin 時應用的預設[設定](/zh-TW/settings) |217| `settings.json` | Plugin 根目錄 | 啟用 plugin 時應用的預設[設定](/zh-TW/settings) |

218 218 

219只要 plugin 恰好包含一個 skill,就可以直接在 plugin 根目錄放置 `SKILL.md`,而不需要建立 `skills/` 目錄。Claude Code 會將其載入為單一 skill,並使用 frontmatter 的 `name` 欄位作為叫用名稱。對於可能成長為多個 skill 的 plugins,請使用 `skills/` 配置。

220 

219<Note>221<Note>

220 **後續步驟**:準備好新增更多功能?跳至[開發更複雜的 plugins](#develop-more-complex-plugins) 以新增 agents、hooks、MCP servers 和 LSP servers。如需所有 plugin 元件的完整技術規格,請參閱 [Plugins 參考](/zh-TW/plugins-reference)。222 **後續步驟**:準備好新增更多功能?跳至[開發更複雜的 plugins](#develop-more-complex-plugins) 以新增 agents、hooks、MCP servers 和 LSP servers。如需所有 plugin 元件的完整技術規格,請參閱 [Plugins 參考](/zh-TW/plugins-reference)。

221</Note>223</Note>


512| 必須手動複製以共享 | 使用 `/plugin install` 安裝 |514| 必須手動複製以共享 | 使用 `/plugin install` 安裝 |

513 515 

514<Note>516<Note>

515 遷移後,您可以從 `.claude/` 中移除原始檔案以避免重複。載入時,plugin 版本將優先517 遷移後, `.claude/` 中移除原始檔案以避免重複。專案和使用者 `.claude/agents/` 定義會覆蓋同名的 plugin agents因此 plugin 版本只有在移除原始檔案後才會生效

516</Note>518</Note>

517 519 

518<h2 id="next-steps">520<h2 id="next-steps">

Details

14 14 

15**plugin** 是一個自包含的目錄,包含擴展 Claude Code 功能的元件。Plugin 元件包括 skills、agents、hooks、MCP servers、LSP servers 和 monitors。15**plugin** 是一個自包含的目錄,包含擴展 Claude Code 功能的元件。Plugin 元件包括 skills、agents、hooks、MCP servers、LSP servers 和 monitors。

16 16 

17## Plugin 元件參考17<h2 id="plugin-components-reference">

18 Plugin 元件參考

19</h2>

18 20 

19### Skills21<h3 id="skills">

22 Skills

23</h3>

20 24 

21Plugins 將 skills 新增至 Claude Code,建立可由您或 Claude 叫用的 `/name` 快捷方式。25Plugins 將 skills 新增至 Claude Code,建立可由您或 Claude 叫用的 `/name` 快捷方式。

22 26 


42* Claude 可以根據任務上下文自動叫用它們46* Claude 可以根據任務上下文自動叫用它們

43* Skills 可以在 SKILL.md 旁邊包含支援檔案47* Skills 可以在 SKILL.md 旁邊包含支援檔案

44 48 

49如果 plugin 沒有 `skills/` 目錄且沒有 `skills` manifest 欄位,plugin 根目錄中的 `SKILL.md` 會被載入為單一 skill。設定 frontmatter `name` 欄位以控制 skill 的叫用名稱。沒有它的話,Claude Code 會回退到安裝目錄名稱,對於 marketplace 安裝的 plugins,這是一個在每次更新時都會變更的版本字串。對於提供多個 skills 的 plugins,請使用上面所示的 `skills/` 目錄配置。

50 

45如需完整詳細資訊,請參閱 [Skills](/zh-TW/skills)。51如需完整詳細資訊,請參閱 [Skills](/zh-TW/skills)。

46 52 

47### Agents53<h3 id="agents">

54 Agents

55</h3>

48 56 

49Plugins 可以提供專門的 subagents,用於 Claude 在適當時自動叫用的特定任務。57Plugins 可以提供專門的 subagents,用於 Claude 在適當時自動叫用的特定任務。

50 58 


78 86 

79如需完整詳細資訊,請參閱 [Subagents](/zh-TW/sub-agents)。87如需完整詳細資訊,請參閱 [Subagents](/zh-TW/sub-agents)。

80 88 

81### Hooks89<h3 id="hooks">

90 Hooks

91</h3>

82 92 

83Plugins 可以提供事件處理程式,自動回應 Claude Code 事件。93Plugins 可以提供事件處理程式,自動回應 Claude Code 事件。

84 94 


149* `prompt`:使用 LLM 評估提示(使用 `$ARGUMENTS` 佔位符表示上下文)159* `prompt`:使用 LLM 評估提示(使用 `$ARGUMENTS` 佔位符表示上下文)

150* `agent`:執行具有工具的 agentic 驗證器以進行複雜驗證任務160* `agent`:執行具有工具的 agentic 驗證器以進行複雜驗證任務

151 161 

152### MCP servers162<h3 id="mcp-servers">

163 MCP servers

164</h3>

153 165 

154Plugins 可以捆綁 Model Context Protocol (MCP) servers,將 Claude Code 與外部工具和服務連接。166Plugins 可以捆綁 Model Context Protocol (MCP) servers,將 Claude Code 與外部工具和服務連接。

155 167 


185* Server 功能與 Claude 的現有工具無縫整合197* Server 功能與 Claude 的現有工具無縫整合

186* Plugin servers 可以獨立於使用者 MCP servers 進行設定198* Plugin servers 可以獨立於使用者 MCP servers 進行設定

187 199 

188### LSP servers200<h3 id="lsp-servers">

201 LSP servers

202</h3>

189 203 

190<Tip>204<Tip>

191 想要使用 LSP plugins?從官方 marketplace 安裝它們:在 `/plugin` Discover 標籤中搜尋「lsp」。本節記錄如何為官方 marketplace 未涵蓋的語言建立 LSP plugins。205 想要使用 LSP plugins?從官方 marketplace 安裝它們:在 `/plugin` Discover 標籤中搜尋「lsp」。本節記錄如何為官方 marketplace 未涵蓋的語言建立 LSP plugins。


244**選用欄位:**258**選用欄位:**

245 259 

246| 欄位 | 描述 |260| 欄位 | 描述 |

247| :---------------------- | :------------------------------------------ |261| :---------------------- | :------------------------------------------------------------------ |

248| `args` | LSP server 的命令列引數 |262| `args` | LSP server 的命令列引數 |

249| `transport` | 通訊傳輸:`stdio`(預設)或 `socket` |263| `transport` | 通訊傳輸:`stdio`(預設)或 `socket` |

250| `env` | 啟動 server 時要設定的環境變數 |264| `env` | 啟動 server 時要設定的環境變數 |


253| `workspaceFolder` | server 的工作區資料夾路徑 |267| `workspaceFolder` | server 的工作區資料夾路徑 |

254| `startupTimeout` | 等待 server 啟動的最長時間(毫秒) |268| `startupTimeout` | 等待 server 啟動的最長時間(毫秒) |

255| `maxRestarts` | 放棄前的最大重新啟動嘗試次數 |269| `maxRestarts` | 放棄前的最大重新啟動嘗試次數 |

270| `diagnostics` | 是否在編輯後將診斷推送到 Claude 的上下文中(預設 `true`)。設定為 `false` 以保留程式碼導航但抑制自動診斷注入。 |

256 271 

257<Warning>272<Warning>

258 **您必須單獨安裝語言伺服器二進位檔。** LSP plugins 設定 Claude Code 如何連接到語言伺服器,但它們不包括伺服器本身。如果您在 `/plugin` Errors 標籤中看到 `Executable not found in $PATH`,請為您的語言安裝所需的二進位檔。273 **您必須單獨安裝語言伺服器二進位檔。** LSP plugins 設定 Claude Code 如何連接到語言伺服器,但它們不包括伺服器本身。如果您在 `/plugin` Errors 標籤中看到 `Executable not found in $PATH`,請為您的語言安裝所需的二進位檔。


268 283 

269先安裝語言伺服器,然後從 marketplace 安裝 plugin。284先安裝語言伺服器,然後從 marketplace 安裝 plugin。

270 285 

271### Monitors286<h3 id="monitors">

287 Monitors

288</h3>

272 289 

273Plugins 可以宣告背景 monitors,Claude Code 在 plugin 啟用時自動啟動。每個 monitor 執行一個 shell 命令,持續整個工作階段,並將每個 stdout 行傳遞給 Claude 作為通知,以便 Claude 可以對日誌項目、狀態變更或輪詢事件做出反應,而無需被要求自行啟動監視。290Plugins 可以宣告背景 monitors,Claude Code 在 plugin 啟用時自動啟動。每個 monitor 執行一個 shell 命令,持續整個工作階段,並將每個 stdout 行傳遞給 Claude 作為通知,以便 Claude 可以對日誌項目、狀態變更或輪詢事件做出反應,而無需被要求自行啟動監視。

274 291 


320 337 

321在工作階段中途停用 plugin 不會停止已在執行的 monitors。它們在工作階段結束時停止。338在工作階段中途停用 plugin 不會停止已在執行的 monitors。它們在工作階段結束時停止。

322 339 

323### Themes340<h3 id="themes">

341 Themes

342</h3>

324 343 

325Plugins 可以提供顏色主題,這些主題與內建預設值和使用者的本機主題一起出現在 `/theme` 中。主題是 `themes/` 中的 JSON 檔案,具有 `base` 預設值和稀疏的 `overrides` 顏色令牌對應。Themes 是 [experimental component](#experimental-components)。344Plugins 可以提供顏色主題,這些主題與內建預設值和使用者的本機主題一起出現在 `/theme` 中。主題是 `themes/` 中的 JSON 檔案,具有 `base` 預設值和稀疏的 `overrides` 顏色令牌對應。Themes 是 [experimental component](#experimental-components)。

326 345 


340 359 

341***360***

342 361 

343## Plugin 安裝範圍362<h2 id="plugin-installation-scopes">

363 Plugin 安裝範圍

364</h2>

344 365 

345安裝 plugin 時,您選擇一個**範圍**,決定 plugin 的可用位置和誰可以使用它:366安裝 plugin 時,您選擇一個**範圍**,決定 plugin 的可用位置和誰可以使用它:

346 367 


355 376 

356***377***

357 378 

358## Skills 目錄 plugins379<h2 id="skills-directory-plugins">

380 Skills 目錄 plugins

381</h2>

359 382 

360任何 skills 目錄下包含 `.claude-plugin/plugin.json` manifest 的資料夾都會在下一個工作階段中作為名為 `<name>@skills-dir` 的 plugin 載入,無需 marketplace 和無需安裝步驟。使用 [`plugin init`](#plugin-init) 進行搭建。與 marketplace 安裝不同,plugin 是在原地發現的,而不是複製到 plugin 快取中。383任何 skills 目錄下包含 `.claude-plugin/plugin.json` manifest 的資料夾都會在下一個工作階段中作為名為 `<name>@skills-dir` 的 plugin 載入,無需 marketplace 和無需安裝步驟。使用 [`plugin init`](#plugin-init) 進行搭建。與 marketplace 安裝不同,plugin 是在原地發現的,而不是複製到 plugin 快取中。

361 384 


367| `<skills-dir>/foo/.claude-plugin/plugin.json` | 一個 plugin `foo@skills-dir`,可以捆綁自己的 skills、agents、hooks 等 |390| `<skills-dir>/foo/.claude-plugin/plugin.json` | 一個 plugin `foo@skills-dir`,可以捆綁自己的 skills、agents、hooks 等 |

368| `<plugin>/skills/bar/SKILL.md` | 一個 skill `bar`,打包在 plugin 內 |391| `<plugin>/skills/bar/SKILL.md` | 一個 skill `bar`,打包在 plugin 內 |

369 392 

370### 選擇 plugin 載入的位置393<h3 id="choose-where-the-plugin-loads-from">

394 選擇 plugin 載入的位置

395</h3>

371 396 

372| Skills 目錄 | 範圍 | 載入 |397| Skills 目錄 | 範圍 | 載入 |

373| :---------------------- | :------- | :----------------------------------------------- |398| :---------------------- | :------- | :----------------------------------------------- |


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`。411 專案範圍的 `@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>412</Warning>

388 413 

389### 編輯、重新載入和停用 skills 目錄 plugin414<h3 id="edit-reload-and-disable-a-skills-directory-plugin">

415 編輯、重新載入和停用 skills 目錄 plugin

416</h3>

390 417 

391您對 skill 的 `SKILL.md` 所做的變更會立即在目前工作階段中生效。對 plugin 的其他元件(例如 `hooks/`、`.mcp.json`、`agents/` 和 `output-styles/`)的變更則不會。執行 `/reload-plugins` 或重新啟動 Claude Code 以取得這些變更。請參閱 [Live change detection](/zh-TW/skills#live-change-detection)。418您對 skill 的 `SKILL.md` 所做的變更會立即在目前工作階段中生效。對 plugin 的其他元件(例如 `hooks/`、`.mcp.json`、`agents/` 和 `output-styles/`)的變更則不會。執行 `/reload-plugins` 或重新啟動 Claude Code 以取得這些變更。請參閱 [Live change detection](/zh-TW/skills#live-change-detection)。

392 419 


398 425 

399***426***

400 427 

401## Plugin manifest 架構428<h2 id="plugin-manifest-schema">

429 Plugin manifest 架構

430</h2>

402 431 

403`.claude-plugin/plugin.json` 檔案定義您的 plugin 的中繼資料和設定。本節記錄所有支援的欄位和選項。432`.claude-plugin/plugin.json` 檔案定義您的 plugin 的中繼資料和設定。本節記錄所有支援的欄位和選項。

404 433 

405manifest 是選用的。如果省略,Claude Code 會自動探索[預設位置](#file-locations-reference)中的元件,並從目錄名稱衍生 plugin 名稱。當您需要提供中繼資料或自訂元件路徑時,請使用 manifest。434manifest 是選用的。如果省略,Claude Code 會自動探索[預設位置](#file-locations-reference)中的元件,並從目錄名稱衍生 plugin 名稱。當您需要提供中繼資料或自訂元件路徑時,請使用 manifest。

406 435 

407### 完整架構436<h3 id="complete-schema">

437 完整架構

438</h3>

408 439 

409```json theme={null}440```json theme={null}

410{441{


439}470}

440```471```

441 472 

442### 必需欄位473<h3 id="required-fields">

474 必需欄位

475</h3>

443 476 

444如果您包含 manifest,`name` 是唯一必需的欄位。477如果您包含 manifest,`name` 是唯一必需的欄位。

445 478 


449 482 

450此名稱用於命名空間元件。例如,在 UI 中,名稱為 `plugin-dev` 的 plugin 的 agent `agent-creator` 將顯示為 `plugin-dev:agent-creator`。483此名稱用於命名空間元件。例如,在 UI 中,名稱為 `plugin-dev` 的 plugin 的 agent `agent-creator` 將顯示為 `plugin-dev:agent-creator`。

451 484 

452### 無法識別的欄位485<h3 id="unrecognized-fields">

486 無法識別的欄位

487</h3>

453 488 

454Claude Code 會忽略它無法識別的頂層欄位。您可以在 `plugin.json` 中保留來自另一個生態系統的中繼資料,plugin 仍會載入。這使得維護一個 manifest 作為 VS Code 或 Cursor 擴充功能 manifest、npm `package.json` 或 MCPB/DXT bundle manifest 變得實用。489Claude Code 會忽略它無法識別的頂層欄位。您可以在 `plugin.json` 中保留來自另一個生態系統的中繼資料,plugin 仍會載入。這使得維護一個 manifest 作為 VS Code 或 Cursor 擴充功能 manifest、npm `package.json` 或 MCPB/DXT bundle manifest 變得實用。

455 490 


463claude plugin validate ./my-plugin --strict498claude plugin validate ./my-plugin --strict

464```499```

465 500 

466### 中繼資料欄位501<h3 id="metadata-fields">

502 中繼資料欄位

503</h3>

467 504 

468| 欄位 | 類型 | 描述 | 範例 |505| 欄位 | 類型 | 描述 | 範例 |

469| :--------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |506| :--------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |


478| `keywords` | array | 探索標籤 | `["deployment", "ci-cd"]` |515| `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` |516| `defaultEnabled` | boolean | {/* min-version: 2.1.154 */}當使用者未設定時,plugin 是否以啟用狀態啟動。預設為 `true`。請參閱 [Default enablement](#default-enablement)。需要 Claude Code v2.1.154 或更新版本。 | `false` |

480 517 

481### 預設啟用518<h3 id="default-enablement">

519 預設啟用

520</h3>

482 521 

483在 `plugin.json` 中設定 `defaultEnabled: false` 以提供安裝時停用的 plugin。使用者使用 `claude plugin enable <plugin>` 或 `/plugin` 介面將其開啟。對於新增成本或使用者應選擇加入的範圍的 plugins 使用此方法,例如連接到外部服務的 plugin。這需要 Claude Code v2.1.154 或更新版本。較早的版本會忽略該欄位並在安裝時啟用 plugin。522在 `plugin.json` 中設定 `defaultEnabled: false` 以提供安裝時停用的 plugin。使用者使用 `claude plugin enable <plugin>` 或 `/plugin` 介面將其開啟。對於新增成本或使用者應選擇加入的範圍的 plugins 使用此方法,例如連接到外部服務的 plugin。這需要 Claude Code v2.1.154 或更新版本。較早的版本會忽略該欄位並在安裝時啟用 plugin。

484 523 


489 528 

490相同的欄位可以出現在 plugin 的 marketplace 項目中,其優先於 `plugin.json` 中的值。請參閱 [Optional plugin fields](/zh-TW/plugin-marketplaces#optional-plugin-fields)。529相同的欄位可以出現在 plugin 的 marketplace 項目中,其優先於 `plugin.json` 中的值。請參閱 [Optional plugin fields](/zh-TW/plugin-marketplaces#optional-plugin-fields)。

491 530 

492### 元件路徑欄位531<h3 id="component-path-fields">

532 元件路徑欄位

533</h3>

493 534 

494| 欄位 | 類型 | 描述 | 範例 |535| 欄位 | 類型 | 描述 | 範例 |

495| :---------------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |536| :---------------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

496| `skills` | string\|array | 包含 `<name>/SKILL.md` 的自訂 skill 目錄(除了預設 `skills/`| `"./custom/skills/"` |537| `skills` | string\|array | 包含 `<name>/SKILL.md` 的自訂 skill 目錄。新增到預設 `skills/` 掃描。請參閱[路徑行為規則](#path-behavior-rules)以了解 marketplace 根目錄例外 | `"./custom/skills/"` |

497| `commands` | string\|array | 自訂平面 `.md` skill 檔案或目錄(取代預設 `commands/`) | `"./custom/cmd.md"` 或 `["./cmd1.md"]` |538| `commands` | string\|array | 自訂平面 `.md` skill 檔案或目錄(取代預設 `commands/`) | `"./custom/cmd.md"` 或 `["./cmd1.md"]` |

498| `agents` | string\|array | 自訂 agent 檔案(取代預設 `agents/`) | `"./custom/agents/reviewer.md"` |539| `agents` | string\|array | 自訂 agent 檔案(取代預設 `agents/`) | `"./custom/agents/reviewer.md"` |

499| `hooks` | string\|array\|object | Hook 設定路徑或內聯設定 | `"./my-extra-hooks.json"` |540| `hooks` | string\|array\|object | Hook 設定路徑或內聯設定 | `"./my-extra-hooks.json"` |


506| `channels` | array | 訊息注入的頻道宣告(Telegram、Slack、Discord 風格)。請參閱[Channels](#channels) | 請參閱下方 |547| `channels` | array | 訊息注入的頻道宣告(Telegram、Slack、Discord 風格)。請參閱[Channels](#channels) | 請參閱下方 |

507| `dependencies` | array | 此 plugin 需要的其他 plugins,可選擇使用 semver 版本限制。請參閱[Constrain plugin dependency versions](/zh-TW/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |548| `dependencies` | array | 此 plugin 需要的其他 plugins,可選擇使用 semver 版本限制。請參閱[Constrain plugin dependency versions](/zh-TW/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

508 549 

509### 實驗性元件550<h3 id="experimental-components">

551 實驗性元件

552</h3>

510 553 

511`experimental` 金鑰下的元件 `themes` 和 `monitors` 具有在版本之間穩定時可能會變更的 manifest 架構。您宣告它們的位置是一個單獨的遷移:頂層仍然有效,`claude plugin validate` 會發出警告,未來的版本將需要 `experimental.*`。554`experimental` 金鑰下的元件 `themes` 和 `monitors` 具有在版本之間穩定時可能會變更的 manifest 架構。您宣告它們的位置是一個單獨的遷移:頂層仍然有效,`claude plugin validate` 會發出警告,未來的版本將需要 `experimental.*`。

512 555 

513### User configuration556<h3 id="user-configuration">

557 User configuration

558</h3>

514 559 

515`userConfig` 欄位宣告 Claude Code 在啟用 plugin 時提示使用者的值。使用此方法而不是要求使用者手動編輯 `settings.json`。560`userConfig` 欄位宣告 Claude Code 在啟用 plugin 時提示使用者的值。使用此方法而不是要求使用者手動編輯 `settings.json`。

516 561 


545| `multiple` | No | 對於 `string` 類型,允許字串陣列 |590| `multiple` | No | 對於 `string` 類型,允許字串陣列 |

546| `min` / `max` | No | `number` 類型的界限 |591| `min` / `max` | No | `number` 類型的界限 |

547 592 

548每個值都可用於在 MCP 和 LSP server 設定、hook 命令、monitor 命令中替換為 `${user_config.KEY}`,以及(僅適用於非敏感值)skill 和 agent 內容值也會匯出到 plugin 子程序作為 `CLAUDE_PLUGIN_OPTION_<KEY>` 環境變數。593每個值都可用於在 MCP 和 LSP server 設定、hook 命令、monitor 命令中替換為 `${user_config.KEY}`。非敏感值也可以在 skill 和 agent 內容中替換所有值都會匯出到 plugin 子程序作為 `CLAUDE_PLUGIN_OPTION_<KEY>` 環境變數。

549 594 

550非敏感值儲存在 `settings.json` 中的 `pluginConfigs[<plugin-id>].options` 下。敏感值進入系統鑰匙圈(或在鑰匙圈不可用的地方進入 `~/.claude/.credentials.json`)。鑰匙圈儲存與 OAuth 令牌共享,總限制約為 2 KB,因此請保持敏感值較小。595非敏感值儲存在 `settings.json` 中的 `pluginConfigs[<plugin-id>].options` 下。敏感值進入系統鑰匙圈(或在鑰匙圈不可用的地方進入 `~/.claude/.credentials.json`)。鑰匙圈儲存與 OAuth 令牌共享,總限制約為 2 KB,因此請保持敏感值較小。

551 596 

552### Channels597<h3 id="channels">

598 Channels

599</h3>

553 600 

554`channels` 欄位讓 plugin 宣告一個或多個訊息頻道,將內容注入對話中。每個頻道繫結到 plugin 提供的 MCP server。601`channels` 欄位讓 plugin 宣告一個或多個訊息頻道,將內容注入對話中。每個頻道繫結到 plugin 提供的 MCP server。

555 602 


578 625 

579`server` 欄位是必需的,必須與 plugin 的 `mcpServers` 中的金鑰相符。選用的每個頻道 `userConfig` 使用與頂層欄位相同的架構,讓 plugin 在啟用 plugin 時提示輸入機器人令牌或擁有者 ID。626`server` 欄位是必需的,必須與 plugin 的 `mcpServers` 中的金鑰相符。選用的每個頻道 `userConfig` 使用與頂層欄位相同的架構,讓 plugin 在啟用 plugin 時提示輸入機器人令牌或擁有者 ID。

580 627 

581### 路徑行為規則628<h3 id="path-behavior-rules">

629 路徑行為規則

630</h3>

582 631 

583自訂路徑是否取代或擴展 plugin 的預設目錄取決於欄位:632自訂路徑是否取代或擴展 plugin 的預設目錄取決於欄位:

584 633 

585* **取代預設值**:`commands`、`agents`、`outputStyles`、`experimental.themes`、`experimental.monitors`。例如,當 manifest 指定 `commands` 時,預設 `commands/` 目錄不會被掃描。若要保留預設值並新增更多,請明確列出:`"commands": ["./commands/", "./extras/"]`634* **取代預設值**:`commands`、`agents`、`outputStyles`、`experimental.themes`、`experimental.monitors`。例如,當 manifest 指定 `commands` 時,預設 `commands/` 目錄不會被掃描。若要保留預設值並新增更多,請明確列出:`"commands": ["./commands/", "./extras/"]`

586* **新增到預設值**:`skills`。預設 `skills/` 目錄始終被掃描,`skills` 中列出的目錄與其一起載入635* **新增到預設值**:`skills`。預設 `skills/` 目錄始終被掃描,`skills` 中列出的目錄與其一起載入。例外:對於[其 `source` 解析為 marketplace 根目錄的 marketplace 項目](/zh-TW/plugin-marketplaces#advanced-plugin-entries),宣告特定子目錄會取代掃描

587* **自有合併規則**:[hooks](#hooks)、[MCP servers](#mcp-servers) 和 [LSP servers](#lsp-servers)。請參閱每個部分以了解多個來源如何組合636* **自有合併規則**:[hooks](#hooks)、[MCP servers](#mcp-servers) 和 [LSP servers](#lsp-servers)。請參閱每個部分以了解多個來源如何組合

588 637 

589當 plugin 同時具有預設資料夾和相符的 manifest 金鑰時,Claude Code v2.1.140 及更新版本會在 `/doctor`、`claude plugin list` 和 `/plugin` 詳細檢視中標記被忽略的資料夾。plugin 仍會使用 manifest 路徑載入。當 manifest 金鑰指向預設資料夾時不會顯示警告,例如 `"commands": ["./commands/deploy.md"]`,因為在這種情況下資料夾是明確定址的。638當 plugin 同時具有預設資料夾和相符的 manifest 金鑰時,Claude Code v2.1.140 及更新版本會在 `/doctor`、`claude plugin list` 和 `/plugin` 詳細檢視中標記被忽略的資料夾。plugin 仍會使用 manifest 路徑載入。當 manifest 金鑰指向預設資料夾時不會顯示警告,例如 `"commands": ["./commands/deploy.md"]`,因為在這種情況下資料夾是明確定址的。


612}661}

613```662```

614 663 

615### 環境變數664<h3 id="environment-variables">

665 環境變數

666</h3>

616 667 

617Claude Code 提供三個變數用於參考路徑。所有變數都在 skill 內容、agent 內容、hook 命令、monitor 命令以及 MCP 或 LSP server 設定中出現的任何地方內聯替換。所有變數也會匯出為環境變數到 hook 程序和 MCP 或 LSP server 子程序。668Claude Code 提供三個變數用於參考路徑。所有變數都在 skill 內容、agent 內容、hook 命令、monitor 命令以及 MCP 或 LSP server 設定中出現的任何地方內聯替換。所有變數也會匯出為環境變數到 hook 程序和 MCP 或 LSP server 子程序。

618 669 


641}692}

642```693```

643 694 

644#### 持久資料目錄695<h4 id="persistent-data-directory">

696 持久資料目錄

697</h4>

645 698 

646`${CLAUDE_PLUGIN_DATA}` 目錄解析為 `~/.claude/plugins/data/{id}/`,其中 `{id}` 是 plugin 識別碼,其中 `a-z`、`A-Z`、`0-9`、`_` 和 `-` 以外的字元被替換為 `-`。對於安裝為 `formatter@my-marketplace` 的 plugin,目錄是 `~/.claude/plugins/data/formatter-my-marketplace/`。699`${CLAUDE_PLUGIN_DATA}` 目錄解析為 `~/.claude/plugins/data/{id}/`,其中 `{id}` 是 plugin 識別碼,其中 `a-z`、`A-Z`、`0-9`、`_` 和 `-` 以外的字元被替換為 `-`。對於安裝為 `formatter@my-marketplace` 的 plugin,目錄是 `~/.claude/plugins/data/formatter-my-marketplace/`。

647 700 


688 741 

689***742***

690 743 

691## Plugin 快取和檔案解析744<h2 id="plugin-caching-and-file-resolution">

745 Plugin 快取和檔案解析

746</h2>

692 747 

693Plugins 可以透過以下兩種方式之一指定:748Plugins 可以透過以下兩種方式之一指定:

694 749 


701 756 

702Claude 的 Glob 和 Grep 工具在搜尋期間跳過孤立的版本目錄,因此檔案結果不包含過時的 plugin 程式碼。757Claude 的 Glob 和 Grep 工具在搜尋期間跳過孤立的版本目錄,因此檔案結果不包含過時的 plugin 程式碼。

703 758 

704### 路徑遍歷限制759<h3 id="path-traversal-limitations">

760 路徑遍歷限制

761</h3>

705 762 

706已安裝的 plugins 無法參考其目錄外的檔案。遍歷 plugin 根目錄外的路徑(例如 `../shared-utils`)在安裝後將無法運作,因為這些外部檔案不會複製到快取中。763已安裝的 plugins 無法參考其目錄外的檔案。遍歷 plugin 根目錄外的路徑(例如 `../shared-utils`)在安裝後將無法運作,因為這些外部檔案不會複製到快取中。

707 764 

708### 使用 symlinks 在 marketplace 內共享檔案765<h3 id="share-files-within-a-marketplace-with-symlinks">

766 使用 symlinks 在 marketplace 內共享檔案

767</h3>

709 768 

710如果您的 plugin 需要與同一 marketplace 的其他部分共享檔案,您可以在 plugin 目錄內建立符號連結。當 plugin 被複製到快取時,symlink 的處理方式取決於其目標的解析位置:769如果您的 plugin 需要與同一 marketplace 的其他部分共享檔案,您可以在 plugin 目錄內建立符號連結。當 plugin 被複製到快取時,symlink 的處理方式取決於其目標的解析位置:

711 770 


725 784 

726***785***

727 786 

728## Plugin 目錄結構787<h2 id="plugin-directory-structure">

788 Plugin 目錄結構

789</h2>

729 790 

730### 標準 plugin 配置791<h3 id="standard-plugin-layout">

792 標準 plugin 配置

793</h3>

731 794 

732完整的 plugin 遵循此結構:795完整的 plugin 遵循此結構:

733 796 


776 839 

777plugin 根目錄的 `CLAUDE.md` 檔案不會作為專案內容載入。Plugin 透過 skills、agents 和 hooks 貢獻內容,而不是透過 CLAUDE.md。若要提供載入到 Claude 內容中的指示,請將其放在 [skill](#skills) 中。840plugin 根目錄的 `CLAUDE.md` 檔案不會作為專案內容載入。Plugin 透過 skills、agents 和 hooks 貢獻內容,而不是透過 CLAUDE.md。若要提供載入到 Claude 內容中的指示,請將其放在 [skill](#skills) 中。

778 841 

779### 檔案位置參考842<h3 id="file-locations-reference">

843 檔案位置參考

844</h3>

780 845 

781| 元件 | 預設位置 | 用途 |846| 元件 | 預設位置 | 用途 |

782| :---------------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------- |847| :---------------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------- |


795 860 

796***861***

797 862 

798## CLI 命令參考863<h2 id="cli-commands-reference">

864 CLI 命令參考

865</h2>

799 866 

800Claude Code 提供 CLI 命令用於非互動式 plugin 管理,適用於指令碼和自動化。867Claude Code 提供 CLI 命令用於非互動式 plugin 管理,適用於指令碼和自動化。

801 868 

802### plugin init869<h3 id="plugin-init">

870 plugin init

871</h3>

803 872 

804在 `~/.claude/skills/<name>/` 搭建新 plugin。在下一個 Claude Code 工作階段中,它會自動作為 `<name>@skills-dir` 載入,並出現在 `/plugin` 和 `claude plugin list` 中,無需安裝步驟。873在 `~/.claude/skills/<name>/` 搭建新 plugin。在下一個 Claude Code 工作階段中,它會自動作為 `<name>@skills-dir` 載入,並出現在 `/plugin` 和 `claude plugin list` 中,無需安裝步驟。

805 874 


853claude plugin init my-helper --force922claude plugin init my-helper --force

854```923```

855 924 

856### plugin install925<h3 id="plugin-install">

926 plugin install

927</h3>

857 928 

858從可用的 marketplaces 安裝 plugin。929從可用的 marketplaces 安裝 plugin。

859 930 


887claude plugin install formatter@my-marketplace --scope local958claude plugin install formatter@my-marketplace --scope local

888```959```

889 960 

890### plugin uninstall961<h3 id="plugin-uninstall">

962 plugin uninstall

963</h3>

891 964 

892移除已安裝的 plugin。965移除已安裝的 plugin。

893 966 


913 986 

914預設情況下,從最後一個剩餘範圍卸載也會刪除 plugin 的 `${CLAUDE_PLUGIN_DATA}` 目錄。使用 `--keep-data` 保留它,例如在測試新版本後重新安裝時。987預設情況下,從最後一個剩餘範圍卸載也會刪除 plugin 的 `${CLAUDE_PLUGIN_DATA}` 目錄。使用 `--keep-data` 保留它,例如在測試新版本後重新安裝時。

915 988 

916### plugin prune989<h3 id="plugin-prune">

990 plugin prune

991</h3>

917 992 

918移除不再被任何已安裝 plugin 所需的自動安裝 plugin 相依性。Claude Code 為滿足另一個 plugin 的 [`dependencies`](/zh-TW/plugin-dependencies) 欄位而引入的相依性會被移除;您直接安裝的 plugins 永遠不會被觸及。993移除不再被任何已安裝 plugin 所需的自動安裝 plugin 相依性。Claude Code 為滿足另一個 plugin 的 [`dependencies`](/zh-TW/plugin-dependencies) 欄位而引入的相依性會被移除;您直接安裝的 plugins 永遠不會被觸及。

919 994 


938 `claude plugin prune` 需要 Claude Code v2.1.121 或更新版本。1013 `claude plugin prune` 需要 Claude Code v2.1.121 或更新版本。

939</Note>1014</Note>

940 1015 

941### plugin enable1016<h3 id="plugin-enable">

1017 plugin enable

1018</h3>

942 1019 

943啟用已停用的 plugin。如果 plugin 宣告 [dependencies](/zh-TW/plugin-dependencies),Claude Code 會在相同範圍內以傳遞方式啟用它們,當相依性未安裝時命令會失敗。1020啟用已停用的 plugin。如果 plugin 宣告 [dependencies](/zh-TW/plugin-dependencies),Claude Code 會在相同範圍內以傳遞方式啟用它們,當相依性未安裝時命令會失敗。

944 1021 


957| `-s, --scope <scope>` | 要啟用的範圍:`user`、`project` 或 `local` | `user` |1034| `-s, --scope <scope>` | 要啟用的範圍:`user`、`project` 或 `local` | `user` |

958| `-h, --help` | 顯示命令說明 | |1035| `-h, --help` | 顯示命令說明 | |

959 1036 

960### plugin disable1037<h3 id="plugin-disable">

1038 plugin disable

1039</h3>

961 1040 

962停用 plugin 而不卸載它。當另一個已啟用的 plugin [depends on](/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) 目標時失敗。錯誤訊息包含一個鏈式命令,該命令會先停用每個相依項。1041停用 plugin 而不卸載它。當另一個已啟用的 plugin [depends on](/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) 目標時失敗。錯誤訊息包含一個鏈式命令,該命令會先停用每個相依項。

963 1042 


976| `-s, --scope <scope>` | 要停用的範圍:`user`、`project` 或 `local` | `user` |1055| `-s, --scope <scope>` | 要停用的範圍:`user`、`project` 或 `local` | `user` |

977| `-h, --help` | 顯示命令說明 | |1056| `-h, --help` | 顯示命令說明 | |

978 1057 

979### plugin update1058<h3 id="plugin-update">

1059 plugin update

1060</h3>

980 1061 

981將 plugin 更新到最新版本。1062將 plugin 更新到最新版本。

982 1063 


997 1078 

998***1079***

999 1080 

1000### plugin list1081<h3 id="plugin-list">

1082 plugin list

1083</h3>

1001 1084 

1002列出已安裝的 plugins 及其版本、來源 marketplace 和啟用狀態。1085列出已安裝的 plugins 及其版本、來源 marketplace 和啟用狀態。

1003 1086 


1013| `--available` | 包含來自 marketplaces 的可用 plugins。需要 `--json` | |1096| `--available` | 包含來自 marketplaces 的可用 plugins。需要 `--json` | |

1014| `-h, --help` | 顯示命令說明 | |1097| `-h, --help` | 顯示命令說明 | |

1015 1098 

1016### plugin details1099在互動式工作階段中,`/plugin list` 會內嵌列印相同的列表。互動式表單接受 `--enabled` 或 `--disabled` 以僅顯示該狀態中的 plugins,以及 `ls` 作為 `list` 的簡寫。

1100 

1101<h3 id="plugin-details">

1102 plugin details

1103</h3>

1017 1104 

1018顯示 plugin 的元件清單和預計的 token 成本。輸出列出 plugin 貢獻的所有元件,分組為 Skills、Agents、Hooks、MCP servers 和 LSP servers,以及它為每個工作階段新增多少 tokens 的估計。Skills 群組包括 `skills/` 和 `commands/` 項目。1105顯示 plugin 的元件清單和預計的 token 成本。輸出列出 plugin 貢獻的所有元件,分組為 Skills、Agents、Hooks、MCP servers 和 LSP servers,以及它為每個工作階段新增多少 tokens 的估計。Skills 群組包括 `skills/` 和 `commands/` 項目。

1019 1106 


1064 1151 

1065always-on 總計是透過您的作用中模型的 `count_tokens` API 計算的。按元件的數字按比例從該總計縮放。如果 API 無法連線,該命令會回退到基於字元的估計。1152always-on 總計是透過您的作用中模型的 `count_tokens` API 計算的。按元件的數字按比例從該總計縮放。如果 API 無法連線,該命令會回退到基於字元的估計。

1066 1153 

1067### plugin tag1154<h3 id="plugin-tag">

1155 plugin tag

1156</h3>

1068 1157 

1069為目前目錄中的 plugin 建立發行版 git 標籤。從 plugin 的資料夾內執行。請參閱 [Tag plugin releases](/zh-TW/plugin-dependencies#tag-plugin-releases-for-version-resolution)。1158為目前目錄中的 plugin 建立發行版 git 標籤。從 plugin 的資料夾內執行。請參閱 [Tag plugin releases](/zh-TW/plugin-dependencies#tag-plugin-releases-for-version-resolution)。

1070 1159 


1083 1172 

1084***1173***

1085 1174 

1086## 偵錯和開發工具1175<h2 id="debugging-and-development-tools">

1176 偵錯和開發工具

1177</h2>

1087 1178 

1088### 偵錯命令1179<h3 id="debugging-commands">

1180 偵錯命令

1181</h3>

1089 1182 

1090使用 `claude --debug` 查看 plugin 載入詳細資訊:1183使用 `claude --debug` 查看 plugin 載入詳細資訊:

1091 1184 


1096* Skill、agent 和 hook 註冊1189* Skill、agent 和 hook 註冊

1097* MCP server 初始化1190* MCP server 初始化

1098 1191 

1099### 常見問題1192<h3 id="common-issues">

1193 常見問題

1194</h3>

1100 1195 

1101| 問題 | 原因 | 解決方案 |1196| 問題 | 原因 | 解決方案 |

1102| :---------------------------------- | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |1197| :---------------------------------- | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |


1107| 路徑錯誤 | 使用了絕對路徑 | 所有路徑必須是相對的,並以 `./` 開頭 |1202| 路徑錯誤 | 使用了絕對路徑 | 所有路徑必須是相對的,並以 `./` 開頭 |

1108| LSP `Executable not found in $PATH` | 未安裝語言伺服器 | 安裝二進位檔(例如 `npm install -g typescript-language-server typescript`) |1203| LSP `Executable not found in $PATH` | 未安裝語言伺服器 | 安裝二進位檔(例如 `npm install -g typescript-language-server typescript`) |

1109 1204 

1110### 範例錯誤訊息1205<h3 id="example-error-messages">

1206 範例錯誤訊息

1207</h3>

1111 1208 

1112**Manifest 驗證錯誤**:1209**Manifest 驗證錯誤**:

1113 1210 


1121* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`:marketplace.json 中的 `source` 路徑指向不存在的目錄1218* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`:marketplace.json 中的 `source` 路徑指向不存在的目錄

1122* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`:移除重複的元件定義或移除 marketplace 項目中的 `strict: false`1219* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`:移除重複的元件定義或移除 marketplace 項目中的 `strict: false`

1123 1220 

1124### Hook 疑難排解1221<h3 id="hook-troubleshooting">

1222 Hook 疑難排解

1223</h3>

1125 1224 

1126**Hook 指令碼未執行**:1225**Hook 指令碼未執行**:

1127 1226 


11362. 檢查匹配器模式是否與您的工具相符:`"matcher": "Write|Edit"` 用於檔案操作12352. 檢查匹配器模式是否與您的工具相符:`"matcher": "Write|Edit"` 用於檔案操作

11373. 確認 hook 類型有效:`command`、`http`、`mcp_tool`、`prompt` 或 `agent`12363. 確認 hook 類型有效:`command`、`http`、`mcp_tool`、`prompt` 或 `agent`

1138 1237 

1139### MCP server 疑難排解1238<h3 id="mcp-server-troubleshooting">

1239 MCP server 疑難排解

1240</h3>

1140 1241 

1141**Server 未啟動**:1242**Server 未啟動**:

1142 1243 


11512. 驗證 server 是否正確實現 MCP 協定12522. 驗證 server 是否正確實現 MCP 協定

11523. 檢查偵錯輸出中的連接逾時12533. 檢查偵錯輸出中的連接逾時

1153 1254 

1154### 目錄結構錯誤1255<h3 id="directory-structure-mistakes">

1256 目錄結構錯誤

1257</h3>

1155 1258 

1156**症狀**:Plugin 載入但元件(skills、agents、hooks)遺失。1259**症狀**:Plugin 載入但元件(skills、agents、hooks)遺失。

1157 1260 


1176 1279 

1177***1280***

1178 1281 

1179## 發佈和版本控制參考1282<h2 id="distribution-and-versioning-reference">

1283 發佈和版本控制參考

1284</h2>

1180 1285 

1181### 版本管理1286<h3 id="version-management">

1287 版本管理

1288</h3>

1182 1289 

1183Claude Code 使用 plugin 的版本作為快取金鑰,以決定是否有可用的更新。當您執行 `/plugin update` 或自動更新觸發時,Claude Code 會計算目前版本,如果與已安裝的版本相符,則跳過更新。1290Claude Code 使用 plugin 的版本作為快取金鑰,以決定是否有可用的更新。當您執行 `/plugin update` 或自動更新觸發時,Claude Code 會計算目前版本,如果與已安裝的版本相符,則跳過更新。

1184 1291 


1204 1311 

1205***1312***

1206 1313 

1207## 另請參閱1314<h2 id="see-also">

1315 另請參閱

1316</h2>

1208 1317 

1209* [Plugins](/zh-TW/plugins) - 教學和實際使用1318* [Plugins](/zh-TW/plugins) - 教學和實際使用

1210* [Plugin marketplaces](/zh-TW/plugin-marketplaces) - 建立和管理 marketplaces1319* [Plugin marketplaces](/zh-TW/plugin-marketplaces) - 建立和管理 marketplaces

Details

79 79 

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

81 81 

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

83 

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

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

84</h3>86</h3>


101 連接或斷開 MCP 伺服器103 連接或斷開 MCP 伺服器

102</h3>104</h3>

103 105 

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

105 107 

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

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)保持在前面的定義上。109* **載入到前綴中的工具**:對它們的任何變更都會使快取失效。這發生在[工具搜尋不可用或已停用](/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)保持在前面的定義上。


118 120 

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

120 122 

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

122 124 

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

124 126 


128 130 

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

130 132 

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

132 134 

133<h3 id="compacting-the-conversation">135<h3 id="compacting-the-conversation">

134 壓縮對話136 壓縮對話


219 221 

220快取的前綴在一段時間不活動後過期。每個命中快取的請求都會重置計時器,因此只要您繼續工作,快取就會保持溫暖。在足夠長的間隙之後,下一個請求會重新計算完整輸入並重新建立快取,這就是為什麼在步開後回來的第一個轉換可能會明顯變慢。222快取的前綴在一段時間不活動後過期。每個命中快取的請求都會重置計時器,因此只要您繼續工作,快取就會保持溫暖。在足夠長的間隙之後,下一個請求會重新計算完整輸入並重新建立快取,這就是為什麼在步開後回來的第一個轉換可能會明顯變慢。

221 223 

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,您可以使用環境變數覆蓋它。224生存時間 (TTL) 控制快取存活的間隙有多長。API 提供兩個:五分鐘 TTL 和[一小時 TTL](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching#1-hour-cache-duration),它通過更長的中斷保持快取溫暖,但[以更高的速率計費快取寫入](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching#pricing)。Claude Code 根據您如何進行身份驗證為您選擇 TTL,您可以使用環境變數覆蓋它。

223 225 

224<h3 id="on-a-claude-subscription">226<h3 id="on-a-claude-subscription">

225 在 Claude 訂閱上227 在 Claude 訂閱上


233 在 API 金鑰或第三方提供商上235 在 API 金鑰或第三方提供商上

234</h3>236</h3>

235 237 

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`。238在 API 金鑰、Bedrock、Vertex、Foundry 或 Claude Platform on AWS 上,您支付按令牌費率,因此 TTL 預設保持在更便宜的五分鐘。要選擇加入[一小時 TTL](https://platform.claude.com/docs/zh-TW/build-with-claude/prompt-caching#1-hour-cache-duration),設定 `ENABLE_PROMPT_CACHING_1H=1`。

237 239 

238在 Bedrock 上,prompt caching 支援、最小可快取前綴長度和一小時 TTL 可用性都因模型而異。如果快取令牌計數保持為零,請檢查 Bedrock 文件中的[支援的模型、區域和限制](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)。240在 Bedrock 上,prompt caching 支援、最小可快取前綴長度和一小時 TTL 可用性都因模型而異。如果快取令牌計數保持為零,請檢查 Bedrock 文件中的[支援的模型、區域和限制](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models)。

239 241 


251 253 

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

253 255 

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

255 257 

256<h2 id="check-cache-performance">258<h2 id="check-cache-performance">

257 檢查快取效能259 檢查快取效能


290| `DISABLE_PROMPT_CACHING_HAIKU` | 僅為 Haiku 禁用 |292| `DISABLE_PROMPT_CACHING_HAIKU` | 僅為 Haiku 禁用 |

291| `DISABLE_PROMPT_CACHING_SONNET` | 僅為 Sonnet 禁用 |293| `DISABLE_PROMPT_CACHING_SONNET` | 僅為 Sonnet 禁用 |

292| `DISABLE_PROMPT_CACHING_OPUS` | 僅為 Opus 禁用 |294| `DISABLE_PROMPT_CACHING_OPUS` | 僅為 Opus 禁用 |

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

293 296 

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

295 298 

quickstart.md +13 −6

Details

118claude118claude

119```119```

120 120 

121您將看到 Claude Code 歡迎畫面其中包含您的工作階段資訊最近的對話和最新更新。輸入 `/help` 以查看可用命令,或輸入 `/resume` 以繼續之前的對話。121您將看到 Claude Code 提示其中顯示版本目前的模型和工作目錄。輸入 `/help` 以查看可用命令,或輸入 `/resume` 以繼續之前的對話。

122 122 

123<Tip>123<Tip>

124 登入後(步驟 2),您的認證將儲存在您的系統上。在[認證管理](/zh-TW/authentication#credential-management)中了解更多。124 登入後(步驟 2),您的認證將儲存在您的系統上。在[認證管理](/zh-TW/authentication#credential-management)中了解更多。


278 基本命令278 基本命令

279</h2>279</h2>

280 280 

281以下是日常使用中最重要的命令281以下是日常使用中最重要的命令。Shell 命令從您的終端機執行以啟動或繼續 Claude Code。工作階段命令在 Claude Code 啟動後在其內部執行。

282 

283**Shell 命令**

282 284 

283| 命令 | 功能 | 範例 |285| 命令 | 功能 | 範例 |

284| ------------------- | -------------- | ----------------------------------- |286| ------------------- | ------------- | ----------------------------------- |

285| `claude` | 啟動互動模式 | `claude` |287| `claude` | 啟動互動模式 | `claude` |

286| `claude "task"` | 執行一次性任務 | `claude "fix the build error"` |288| `claude "task"` | 執行一次性任務 | `claude "fix the build error"` |

287| `claude -p "query"` | 執行一次性查詢,然後退出 | `claude -p "explain this function"` |289| `claude -p "query"` | 執行一次性查詢,然後退出 | `claude -p "explain this function"` |

288| `claude -c` | 在目前目錄中繼續最近的對話 | `claude -c` |290| `claude -c` | 在目前目錄中繼續最近的對話 | `claude -c` |

289| `claude -r` | 恢復之前的對話 | `claude -r` |291| `claude -r` | 恢復之前的對話 | `claude -r` |

292 

293**工作階段命令**

294 

295| 命令 | 功能 | 範例 |

296| ---------------- | -------------- | -------- |

290| `/clear` | 清除對話歷史 | `/clear` |297| `/clear` | 清除對話歷史 | `/clear` |

291| `/help` | 顯示可用命令 | `/help` |298| `/help` | 顯示可用命令 | `/help` |

292| `exit` 或 Ctrl+D | 退出 Claude Code | `exit` |299| `/exit` 或 Ctrl+D | 退出 Claude Code | `/exit` |

293 300 

294請參閱 [CLI 參考](/zh-TW/cli-reference)以取得完整的命令清單301請參閱 [CLI 參考](/zh-TW/cli-reference)以取得完整的 shell 命令清單,以及 [命令參考](/zh-TW/commands)以取得完整的工作階段命令清單

295 302 

296<h2 id="pro-tips-for-beginners">303<h2 id="pro-tips-for-beginners">

297 初學者的專業提示304 初學者的專業提示


336 </Accordion>343 </Accordion>

337</AccordionGroup>344</AccordionGroup>

338 345 

339<h2 id="what-s-next">346<h2 id="whats-next">

340 接下來呢?347 接下來呢?

341</h2>348</h2>

342 349 

Details

93 /remote-control My Project93 /remote-control My Project

94 ```94 ```

95 95 

96 這啟動一個 Remote Control 會話,該會話會延續您目前的對話歷史記錄,並顯示一個會話 URL 和 QR 碼,您可以使用它從[另一個裝置連接](#connect-from-another-device)`--verbose`、`--sandbox` 和 `--no-sandbox` 旗標不適用於此命令。96 這啟動一個 Remote Control 會話,該會話會延續您目前的對話歷史記錄。

97 

98 此命令不提供 `--verbose`、`--sandbox` 和 `--no-sandbox` 旗標。

97 </Tab>99 </Tab>

98 100 

99 <Tab title="VS Code">101 <Tab title="VS Code">


111 </Tab>113 </Tab>

112</Tabs>114</Tabs>

113 115 

116<h3 id="check-connection-status">

117 檢查連接狀態

118</h3>

119 

120在互動式終端機會話中,當連接啟動時,`/rc active` 指示器會位於輸入框下方的頁尾中,如果終端機太窄無法容納則會隱藏。指示器文字是 claude.ai 上會話的連結。使用向下箭頭鍵選擇它並按 Enter 鍵,或再次執行 `/remote-control`,以開啟狀態面板,其中包含會話 URL 和 QR 碼,您可以使用它從[另一個裝置連接](#connect-from-another-device)。

121 

122如果連接失敗,指示器會變紅並顯示 `/rc failed`。使用向下箭頭鍵選擇它並按 Enter 鍵以查看失敗原因和關閉選項,或再次執行 `/remote-control` 以重試。

123 

114<h3 id="connect-from-another-device">124<h3 id="connect-from-another-device">

115 從另一個裝置連接125 從另一個裝置連接

116</h3>126</h3>


1283. 現有對話歷史記錄中最後一條有意義的訊息1383. 現有對話歷史記錄中最後一條有意義的訊息

1294. 類似 `myhost-graceful-unicorn` 的自動生成名稱,其中 `myhost` 是您機器的主機名稱或您使用 `--remote-control-session-name-prefix` 設定的前綴1394. 類似 `myhost-graceful-unicorn` 的自動生成名稱,其中 `myhost` 是您機器的主機名稱或您使用 `--remote-control-session-name-prefix` 設定的前綴

130 140 

131如果您沒有設定明確名稱,標題會在您發送提示後更新以反映您的提示。從 claude.ai 或 Claude 應用程式重新命名會話也會更新在 `claude --resume` 中顯示的本地標題。141如果您沒有設定明確名稱,標題會在您發送提示後更新以反映您的提示。{/* min-version: 2.1.176 */}自 Claude Code v2.1.176 起,自動生成的標題會符合您對話的語言,或設定的 [`language`](/zh-TW/settings#available-settings) 設定(如果已配置)。從 claude.ai 或 Claude 應用程式重新命名會話也會更新在 `claude --resume` 中顯示的本地標題。

132 142 

133如果環境已經有一個活動會話,您將被詢問是否繼續它或啟動一個新會話。143如果環境已經有一個活動會話,您將被詢問是否繼續它或啟動一個新會話。

134 144 


186 </Step>196 </Step>

187 197 

188 <Step title="在 Claude Code 中啟用推播">198 <Step title="在 Claude Code 中啟用推播">

189 在您的終端機中,執行 `/config` 並啟用**當 Claude 決定時推播**。199 在您的終端機中,執行 `/config` 並啟用**當 Claude 決定時推播**以取得主動通知、**需要操作時推播**以取得權限提示和問題,或兩者

190 </Step>200 </Step>

191</Steps>201</Steps>

192 202 


204* **本地程序必須保持執行**:Remote Control 作為本地程序執行。如果您關閉終端機、退出 VS Code 或以其他方式停止 `claude` 程序,會話結束。214* **本地程序必須保持執行**:Remote Control 作為本地程序執行。如果您關閉終端機、退出 VS Code 或以其他方式停止 `claude` 程序,會話結束。

205* **延長的網路中斷**:如果您的機器處於喚醒狀態但無法在大約 10 分鐘以上的時間內到達網路,會話會逾時並且程序退出。再次執行 `claude remote-control` 以啟動新會話。215* **延長的網路中斷**:如果您的機器處於喚醒狀態但無法在大約 10 分鐘以上的時間內到達網路,會話會逾時並且程序退出。再次執行 `claude remote-control` 以啟動新會話。

206* **Ultraplan 斷開 Remote Control**:啟動 [ultraplan](/zh-TW/ultraplan) 會話會斷開任何活動的 Remote Control 會話,因為兩個功能都佔據 claude.ai/code 介面,一次只能連接一個。216* **Ultraplan 斷開 Remote Control**:啟動 [ultraplan](/zh-TW/ultraplan) 會話會斷開任何活動的 Remote Control 會話,因為兩個功能都佔據 claude.ai/code 介面,一次只能連接一個。

207* **某些命令僅限本地**:在終端機中開啟互動式選擇器的命令,例如 `/mcp`、`/plugin` 或 `/resume`,只能從本地 CLI 使用。產生文字輸出的命令,包括 `/compact`、`/clear`、`/context`、`/usage`、`/exit`、`/usage-credits`、`/recap` 和 `/reload-plugins`,可從行動和網頁使用。217* **某些命令僅限本地**:在終端機中開啟互動式選擇器的命令,例如 `/plugin` 或 `/resume`,只能從本地 CLI 使用。產生文字輸出的命令,包括 `/compact`、`/clear`、`/context`、`/usage`、`/exit`、`/usage-credits`、`/recap` 和 `/reload-plugins`,可從行動和網頁使用。{/* min-version: 2.1.166 */}自 v2.1.166 起,`/mcp` 也可從行動和網頁使用:它會傳回伺服器狀態的文字摘要而不是開啟選擇器,並接受與本地 CLI 相同的 `reconnect`、`enable` 和 `disable` [子命令](/zh-TW/commands#all-commands),但有一個差異:從行動和網頁,`/mcp reconnect` 不帶伺服器名稱會重新連接每個已失敗或需要驗證的伺服器,而本地 CLI 需要伺服器名稱才能執行 `reconnect`。

208 218 

209<h2 id="troubleshooting">219<h2 id="troubleshooting">

210 疑難排解220 疑難排解


232 「Remote Control 尚未為您的帳戶啟用」242 「Remote Control 尚未為您的帳戶啟用」

233</h3>243</h3>

234 244 

235在存在某些環境變數的情況下資格檢查可能會失敗:245Remote Control 推出尚未到達您的帳戶或您的快取權利已過期。如果您最近更改了方案,執行 `claude auth logout` 然後 `claude auth login` 以重新整理它們。執行 `claude doctor` 以查看哪個個別資格檢查失敗。環境變數衝突、無法到達的檢查和組織政策各自產生自己的訊息,因此此錯誤表示推出閘門本身。

236 246 

237* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 或 `DISABLE_TELEMETRY`:取消設定它們並重試。247<h3 id="couldn’t-verify-remote-control-eligibility">

238* `CLAUDE_CODE_USE_BEDROCK`、`CLAUDE_CODE_USE_VERTEX` 或 `CLAUDE_CODE_USE_FOUNDRY`:Remote Control 需要 claude.ai 驗證,不適用於第三方提供者。248 「無法驗證 Remote Control 資格」

249</h3>

239 250 

240如果這些都沒有設定請執行 `/logout` 然後 `/login` 以重新整理251Claude Code 無法到達功能旗標服務以檢查您的帳戶是否啟用了 Remote Control通常是因為您離線或代理阻止了請求。一旦您有網路存取權,請重試,或執行 `claude doctor` 以取得詳細資訊。相關訊息「無法驗證您的組織的 Remote Control 政策」具有相同的原因和相同的修復兩個訊息都在 v2.1.178 中新增。

241 252 

242<h3 id="remote-control-is-disabled-by-your-organization-s-policy">253<h3 id="remote-control-is-disabled-by-your-organizations-policy">

243 「Remote Control 已被您的組織政策停用」254 「Remote Control 已被您的組織政策停用」

244</h3>255</h3>

245 256 

routines.md +1 −1

Details

423 423 

424無論 CLI 如何配置,您始終可以在 [claude.ai/code/routines](https://claude.ai/code/routines) 建立和管理例行程序。424無論 CLI 如何配置,您始終可以在 [claude.ai/code/routines](https://claude.ai/code/routines) 建立和管理例行程序。

425 425 

426<h3 id="routines-are-disabled-by-your-organization-s-policy">426<h3 id="routines-are-disabled-by-your-organizations-policy">

427 "例行程序已被您的組織政策禁用"427 "例行程序已被您的組織政策禁用"

428</h3>428</h3>

429 429 

Details

50 50 

51| 您想要 | 開始使用 |51| 您想要 | 開始使用 |

52| :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------- |52| :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------- |

53| 在您自己的機器上減少日常工作中的權限提示 | [Sandboxed Bash tool](/zh-TW/sandboxing),使用 `/sandbox` 啟用 |53| 在您自己的機器上減少日常工作中的權限提示 | [sandboxed Bash tool](/zh-TW/sandboxing),使用 `/sandbox` 啟用 |

54| 讓 Claude 使用 `--dangerously-skip-permissions` 或自動模式無人值守地工作 | 預配置的 [dev container](/zh-TW/devcontainer)、任何容器或虛擬機,或 [sandbox runtime](#sandbox-runtime) |54| 讓 Claude 使用 `--dangerously-skip-permissions` 或自動模式無人值守地工作 | 預配置的 [dev container](/zh-TW/devcontainer)、任何容器或虛擬機,或 [sandbox runtime](#sandbox-runtime) |

55| 隔離 MCP 伺服器和 hooks 以及 Bash,不使用 Docker | Sandbox runtime |55| 隔離 MCP 伺服器和 hooks 以及 Bash,不使用 Docker | sandbox runtime |

56| 在不受信任的儲存庫上工作 | 專用虛擬機,或如果您有 Claude 訂閱和連接的 GitHub 帳戶,則使用 [Claude Code on the web](/zh-TW/claude-code-on-the-web) |56| 在不受信任的儲存庫上工作 | 專用虛擬機,或如果您有 Claude 訂閱和連接的 GitHub 帳戶,則使用 [Claude Code on the web](/zh-TW/claude-code-on-the-web) |

57| 在整個團隊中標準化沙箱環境 | 預配置的 [dev container](/zh-TW/devcontainer),複製到您的儲存庫中 |57| 在整個團隊中標準化沙箱環境 | 預配置的 [dev container](/zh-TW/devcontainer),複製到您的儲存庫中 |

58| 從沒有本地設定的設備使用 Claude Code | [Claude Code on the web](/zh-TW/claude-code-on-the-web),需要 Claude 訂閱和連接的 GitHub 帳戶 |58| 從沒有本地設定的設備使用 Claude Code | [Claude Code on the web](/zh-TW/claude-code-on-the-web),需要 Claude 訂閱和連接的 GitHub 帳戶 |


65 65 

66[Permission modes](/zh-TW/permission-modes) 決定工具呼叫是否執行以及是否首先提示您。隔離限制命令執行後可以存取的內容。兩者協同工作:當權限模式允許操作在不詢問您的情況下執行時,隔離邊界限制這些操作可以到達的內容。66[Permission modes](/zh-TW/permission-modes) 決定工具呼叫是否執行以及是否首先提示您。隔離限制命令執行後可以存取的內容。兩者協同工作:當權限模式允許操作在不詢問您的情況下執行時,隔離邊界限制這些操作可以到達的內容。

67 67 

68`--dangerously-skip-permissions` 完全移除每個操作的審查,因此隔離邊界是唯一限制 Claude 可以執行的操作的東西。始終在容器、虛擬機或 [sandbox runtime](#sandbox-runtime) 內執行它,以便檔案工具、MCP 伺服器和 hooks 也在邊界內。68`--dangerously-skip-permissions` 移除每個操作的審查除了明確的 [ask rules](/zh-TW/permissions#manage-permissions),因此隔離邊界是唯一限制 Claude 可以執行的操作的東西。始終在容器、虛擬機或 [sandbox runtime](#sandbox-runtime) 內執行它,以便檔案工具、MCP 伺服器和 hooks 也在邊界內。

69 69 

70[Auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 用分類器替換提示,該分類器審查操作並阻止超出請求範圍、針對無法識別的基礎設施或似乎由 Claude 讀取的敵對內容驅動的操作。分類器是每個操作的控制,而不是隔離邊界,因此隔離邊界仍然為無人值守的執行添加深度防禦,並且不像 `--dangerously-skip-permissions` 那樣是必需的。70[Auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 用分類器替換提示,該分類器審查操作並阻止超出請求範圍、針對無法識別的基礎設施或似乎由 Claude 讀取的敵對內容驅動的操作。分類器是每個操作的控制,而不是隔離邊界,因此隔離邊界仍然為無人值守的執行添加深度防禦,並且不像 `--dangerously-skip-permissions` 那樣是必需的。

71 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)。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 73 

74<h2 id="sandboxed-bash-tool">74<h2 id="sandboxed-bash-tool">

75 Sandboxed Bash tool75 Sandboxed Bash tool

sandboxing.md +11 −8

Details

49 </Step>49 </Step>

50 50 

51 <Step title="執行 Bash 命令">51 <Step title="執行 Bash 命令">

52 要求 Claude 執行命令,例如構建或測試套件。預設情況下,沙箱內的命令只能寫入工作目錄。命令首次需要新的網路域時,Claude Code 會提示批准。52 要求 Claude 執行命令,例如構建或測試套件。預設情況下,沙箱內的命令只能寫入工作目錄和工作階段暫存目錄。命令首次需要新的網路域時,Claude Code 會提示批准。

53 53 

54 無法沙箱化執行的命令會回退到常規權限流程。若要擴大或縮小這些邊界,請參閱 [Configure sandboxing](#configure-sandboxing)。54 無法沙箱化執行的命令會回退到常規權限流程。若要擴大或縮小這些邊界,請參閱 [Configure sandboxing](#configure-sandboxing)。

55 </Step>55 </Step>


134 134 

135* 明確的 [deny rules](/zh-TW/permissions) 始終被尊重135* 明確的 [deny rules](/zh-TW/permissions) 始終被尊重

136* 針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發權限提示136* 針對 `/`、您的主目錄或其他關鍵系統路徑的 `rm` 或 `rmdir` 命令仍然會觸發權限提示

137* [Ask rules](/zh-TW/permissions) 適用於回退到常規權限流程的命令137* 內容範圍的 [ask rules](/zh-TW/permissions)(例如 `Bash(git push *)`)仍然會強制提示,即使是沙箱化命令

138* 裸 `Bash` ask 規則,或等效的 `Bash(*)` 形式,對於執行沙箱化的命令會被跳過;它仍然適用於回退到常規權限流程的命令

138 139 

139**常規權限模式**:所有 Bash 命令都通過常規權限流程進行,即使沙箱化也是如此。這提供了更多控制,但需要更多批准。140**常規權限模式**:所有 Bash 命令都通過常規權限流程進行,即使沙箱化也是如此。這提供了更多控制,但需要更多批准。

140 141 

141在兩種模式中,沙箱強制執行相同的檔案系統和網路限制。區別僅在於沙箱化命令是自動批准還是需要明確權限。142在兩種模式中,沙箱強制執行相同的檔案系統和網路限制。區別僅在於沙箱化命令是自動批准還是需要明確權限。

142 143 

144工作階段暫存目錄在沙箱內預設可寫,與工作目錄一起。Claude Code 為沙箱化命令設定 `$TMPDIR` 為此目錄,因此寫入暫存檔案的工具無需額外配置即可工作。未沙箱化命令繼承您的 shell 的 `$TMPDIR` 不變,這意味著沙箱化和未沙箱化命令將 `$TMPDIR` 解析為不同的目錄。若要在兩者之間傳遞暫存檔案,請改為在工作目錄下寫入它們。

145 

143某些命令根本無法在沙箱內執行,例如與其不相容的工具或需要您未允許的主機的工具。與其讓任務失敗或要求您關閉沙箱化,Claude Code 包含一個逃生艙:當命令因沙箱限制而失敗時,Claude 分析失敗,可能使用 `dangerouslyDisableSandbox` 參數重試命令。重試的命令在沙箱外執行,因此它通過常規權限流程進行,需要您的批准。146某些命令根本無法在沙箱內執行,例如與其不相容的工具或需要您未允許的主機的工具。與其讓任務失敗或要求您關閉沙箱化,Claude Code 包含一個逃生艙:當命令因沙箱限制而失敗時,Claude 分析失敗,可能使用 `dangerouslyDisableSandbox` 參數重試命令。重試的命令在沙箱外執行,因此它通過常規權限流程進行,需要您的批准。

144 147 

145您可以通過在 [sandbox settings](/zh-TW/settings#sandbox-settings) 中設定 `"allowUnsandboxedCommands": false` 來禁用此逃生艙。禁用時,`/sandbox` Overrides 標籤顯示為 **Strict sandbox mode**,`dangerouslyDisableSandbox` 參數被完全忽略,所有命令必須沙箱化執行或在 `excludedCommands` 中明確列出。148您可以通過在 [sandbox settings](/zh-TW/settings#sandbox-settings) 中設定 `"allowUnsandboxedCommands": false` 來禁用此逃生艙。禁用時,`/sandbox` Overrides 標籤顯示為 **Strict sandbox mode**,`dangerouslyDisableSandbox` 參數被完全忽略,所有命令必須沙箱化執行或在 `excludedCommands` 中明確列出。


154 157 

155通過您的 `settings.json` 檔案自訂沙箱行為。請參閱 [Settings](/zh-TW/settings#sandbox-settings) 以了解完整的配置參考。158通過您的 `settings.json` 檔案自訂沙箱行為。請參閱 [Settings](/zh-TW/settings#sandbox-settings) 以了解完整的配置參考。

156 159 

157預設情況下,沙箱化命令只能寫入目前工作目錄。如果子流程命令(如 `kubectl`、`terraform` 或 `npm`)需要寫入專案目錄外,請使用 `sandbox.filesystem.allowWrite` 授予對特定路徑的存取:160預設情況下,沙箱化命令只能寫入目前工作目錄和工作階段暫存目錄。如果子流程命令(如 `kubectl`、`terraform` 或 `npm`)需要寫入這些目錄外,請使用 `sandbox.filesystem.allowWrite` 授予對特定路徑的存取:

158 161 

159```json theme={null}162```json theme={null}

160{163{


181 184 

182此語法與 [Read and Edit permission rules](/zh-TW/permissions#read-and-edit) 不同,後者使用 `//path` 表示絕對路徑,`/path` 表示專案相對路徑。沙箱檔案系統路徑使用標準慣例:`/tmp/build` 是絕對路徑。185此語法與 [Read and Edit permission rules](/zh-TW/permissions#read-and-edit) 不同,後者使用 `//path` 表示絕對路徑,`/path` 表示專案相對路徑。沙箱檔案系統路徑使用標準慣例:`/tmp/build` 是絕對路徑。

183 186 

184您也可以使用 `sandbox.filesystem.denyWrite` 和 `sandbox.filesystem.denyRead` 拒絕寫入或讀取存取,並使用 `sandbox.filesystem.allowRead` 重新允許讀取 `denyRead` 區域內的特定路徑187您也可以使用 `sandbox.filesystem.denyWrite` 和 `sandbox.filesystem.denyRead` 拒絕寫入或讀取存取,並使用 `sandbox.filesystem.allowRead` 重新允許讀取被拒絕區域內的特定路徑

185 188 

186下面的範例阻止從整個主目錄讀取,同時仍允許從目前專案讀取。將其放在您的專案的 `.claude/settings.json` 中,因為相對路徑 `.` 僅在配置位於專案設定中時才解析為專案根目錄:189下面的範例阻止從整個主目錄讀取,同時仍允許從目前專案讀取。將其放在您的專案的 `.claude/settings.json` 中,因為相對路徑 `.` 僅在配置位於專案設定中時才解析為專案根目錄:

187 190 


209 212 

210沙箱化 Bash 工具將檔案系統存取限制在特定目錄:213沙箱化 Bash 工具將檔案系統存取限制在特定目錄:

211 214 

212* **預設寫入行為**:對目前工作目錄及其子目錄的讀取和寫入存取215* **預設寫入行為**:對目前工作目錄及其子目錄的讀取和寫入存取,加上 `$TMPDIR` 指向的工作階段暫存目錄

213* **預設讀取行為**:對整個電腦的讀取存取,除了某些被拒絕的目錄。請注意,此預設仍允許讀取認證檔案,例如 `~/.aws/credentials` 和 `~/.ssh/`。將它們新增到 `denyRead` 以阻止它們。216* **預設讀取行為**:對整個電腦的讀取存取,除了某些被拒絕的目錄。請注意,此預設仍允許讀取認證檔案,例如 `~/.aws/credentials` 和 `~/.ssh/`。將它們新增到 `denyRead` 以阻止它們。

214* **被阻止的存取**:無法在沒有明確權限的情況下修改目前工作目錄外的檔案,包括 shell 配置檔案(例如 `~/.bashrc`)和 `/bin/` 中的系統二進位檔案217* **被阻止的存取**:無法在沒有明確權限的情況下修改目前工作目錄和工作階段暫存目錄外的檔案,包括 shell 配置檔案(例如 `~/.bashrc`)和 `/bin/` 中的系統二進位檔案

215* **Git worktrees**:當工作目錄是[連結的 git worktree](/zh-TW/worktrees) 時,沙箱也允許寫入主儲存庫的共享 `.git` 目錄,以便 `git commit` 等命令可以更新 refs 和索引。對該目錄內的 `hooks/` 和 `config` 的寫入仍然被拒絕。218* **Git worktrees**:當工作目錄是[連結的 git worktree](/zh-TW/worktrees)時,沙箱也允許寫入主儲存庫的共享 `.git` 目錄,以便 `git commit` 等命令可以更新 refs 和索引。對該目錄內的 `hooks/` 和 `config` 的寫入仍然被拒絕。

216* **可配置**:通過設定定義自訂允許和拒絕的路徑219* **可配置**:通過設定定義自訂允許和拒絕的路徑

217 220 

218您可以使用設定中的 `sandbox.filesystem.allowWrite` 授予對其他路徑的寫入存取。這些限制在作業系統級別強制執行,因此它們適用於所有子流程命令,包括 `kubectl`、`terraform` 和 `npm` 等工具,而不僅僅是 Claude 的檔案工具。221您可以使用設定中的 `sandbox.filesystem.allowWrite` 授予對其他路徑的寫入存取。這些限制在作業系統級別強制執行,因此它們適用於所有子流程命令,包括 `kubectl`、`terraform` 和 `npm` 等工具,而不僅僅是 Claude 的檔案工具。


416* **子代理**:[subagents](/zh-TW/sub-agents) 在與父工作階段相同的流程中執行,並使用相同的沙箱配置。當在父工作階段中啟用沙箱化時,子代理內的 Bash 命令被沙箱化。419* **子代理**:[subagents](/zh-TW/sub-agents) 在與父工作階段相同的流程中執行,並使用相同的沙箱配置。當在父工作階段中啟用沙箱化時,子代理內的 Bash 命令被沙箱化。

417 420 

418<Warning>421<Warning>

419 有效的沙箱化需要**同時**進行檔案系統和網路隔離。沒有網路隔離,受損的代理可能會洩露敏感檔案,如 SSH 金鑰。沒有檔案系統隔離,受損的代理可能會後門系統資源以獲得網路存取。當您擴大預設值時,檢查 `allowWrite` 路徑、廣泛的 `allowedDomains` 項目或 `excludedCommands` 例外是否不會撤銷另一側的限制。422 有效的沙箱化需要同時進行檔案系統和網路隔離。沒有網路隔離,受損的代理可能會洩露敏感檔案,如 SSH 金鑰。沒有檔案系統隔離,受損的代理可能會後門系統資源以獲得網路存取。當您擴大預設值時,檢查 `allowWrite` 路徑、廣泛的 `allowedDomains` 項目或 `excludedCommands` 例外是否不會撤銷另一側的限制。

420</Warning>423</Warning>

421 424 

422<h2 id="see-also">425<h2 id="see-also">

security.md +4 −4

Details

22 22 

23Claude Code 預設使用嚴格的唯讀權限。當需要額外操作時(編輯檔案、執行測試、執行命令),Claude Code 會請求明確的權限。使用者可以控制是否批准一次性操作或自動允許操作。23Claude Code 預設使用嚴格的唯讀權限。當需要額外操作時(編輯檔案、執行測試、執行命令),Claude Code 會請求明確的權限。使用者可以控制是否批准一次性操作或自動允許操作。

24 24 

25我們設計 Claude Code 以實現透明和安全。例如,我們要求在執行 bash 命令前進行批准,讓您擁有直接控制權這種方法使使用者和組織能夠直接配置權限25Claude Code 在執行可以修改您系統的 Bash 命令前需要批准內建的一組唯讀命令(例如 `ls`、`cat` 和 `git status`)無需提示即可執行這種方法讓使用者和組織能夠直接配置權限

26 26 

27有關詳細的權限配置,請參閱 [Permissions](/zh-TW/permissions)。27有關詳細的權限配置,請參閱 [Permissions](/zh-TW/permissions)。

28 28 


56* **權限系統**:敏感操作需要明確批准56* **權限系統**:敏感操作需要明確批准

57* **上下文感知分析**:通過分析完整請求來檢測潛在有害的指令57* **上下文感知分析**:通過分析完整請求來檢測潛在有害的指令

58* **輸入淨化**:通過處理使用者輸入來防止命令注入58* **輸入淨化**:通過處理使用者輸入來防止命令注入

59* **命令黑名單**:預設阻止從網路獲取任意內容的風險命令 `curl` 和 `wget`。明確允許時請注意 [permission pattern limitations](/zh-TW/permissions#tool-specific-permission-rules)59* **網路命令批准**:從網路獲取內容的命令例如 `curl` 和 `wget`,預設不會自動批准它們會像任何其他非唯讀 Bash 命令一樣提示因此您仍然可以批准一次或添加明確的允許規則,例如 `Bash(curl *)`。若要完全阻止它們,請將它們添加到 [`permissions.deny`](/zh-TW/permissions#tool-specific-permission-rules)

60 60 

61<h3 id="privacy-safeguards">61<h3 id="privacy-safeguards">

62 隱私保護62 隱私保護


77* **網路請求批准**:進行網路請求的工具預設需要使用者批准77* **網路請求批准**:進行網路請求的工具預設需要使用者批准

78* **隔離的上下文視窗**:Web fetch 使用單獨的上下文視窗以避免注入潛在的惡意提示78* **隔離的上下文視窗**:Web fetch 使用單獨的上下文視窗以避免注入潛在的惡意提示

79* **信任驗證**:首次程式碼庫執行和新的 MCP servers 需要信任驗證79* **信任驗證**:首次程式碼庫執行和新的 MCP servers 需要信任驗證

80 * 注意:使用 `-p` 標誌以非互動方式執行時,信任驗證被禁用。例外情況是 [`--worktree`](/zh-TW/worktrees),它仍然要求已接受該目錄的信任80 * 注意:使用 `-p` 旗標以非互動方式執行時,信任驗證被禁用

81 * 注意:當您直接在主目錄中啟動 Claude Code 時,信任接受僅在當前會話期間保持,不會寫入磁碟,因此提示在每次啟動時都會重新出現。沒有設定可以持久化它。改為從專案子目錄啟動 Claude Code,其中信任接受按目錄保存81 * 注意:當您直接在主目錄中啟動 Claude Code 時,信任接受僅在當前會話期間保持,不會寫入磁碟,因此提示在每次啟動時都會重新出現。沒有設定可以持久化它。改為從專案子目錄啟動 Claude Code,其中信任接受按目錄保存

82* **命令注入檢測**:即使之前已允許列表,可疑的 bash 命令也需要手動批准82* **命令注入檢測**:即使之前已允許列表,可疑的 bash 命令也需要手動批准

83* **故障關閉匹配**:不匹配的命令預設需要手動批准83* **故障關閉匹配**:不匹配的命令預設需要手動批准

84* **自然語言描述**:複雜的 bash 命令包括使用者理解的說明84* **自然語言描述**:複雜的 bash 命令包括使用者理解的說明

85* **安全的認證儲存**:API 金鑰和令牌已加密。請參閱 [Credential Management](/zh-TW/authentication#credential-management)85* **安全的認證儲存**:API 金鑰和令牌儲存在可用時的 macOS Keychain 中,並在 Windows 和 Linux 上受檔案權限保護。請參閱 [Credential Management](/zh-TW/authentication#credential-management)

86 86 

87<Warning>87<Warning>

88 **Windows WebDAV 安全風險**:在 Windows 上執行 Claude Code 時,我們建議不要啟用 WebDAV 或允許 Claude Code 存取可能包含 WebDAV 子目錄的路徑,如 `\\*`。[WebDAV 已被 Microsoft 棄用](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated),原因是安全風險。啟用 WebDAV 可能允許 Claude Code 觸發對遠端主機的網路請求,繞過權限系統。88 **Windows WebDAV 安全風險**:在 Windows 上執行 Claude Code 時,我們建議不要啟用 WebDAV 或允許 Claude Code 存取可能包含 WebDAV 子目錄的路徑,如 `\\*`。[WebDAV 已被 Microsoft 棄用](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated),原因是安全風險。啟用 WebDAV 可能允許 Claude Code 觸發對遠端主機的網路請求,繞過權限系統。

Details

10 10 

11安裝後,外掛程式會自動執行。無需調用任何內容,也無需記住任何單獨的命令。11安裝後,外掛程式會自動執行。無需調用任何內容,也無需記住任何單獨的命令。

12 12 

13該外掛程式是 [Code Review](/zh-TW/code-review) 的工作階段內伴侶,Code Review 在拉取請求上執行。此外掛程式減少了進入 PR 的內容。Code Review 捕捉遺漏的內容。有關外掛程式如何與按需審查和 CI 掃描分層的信息,請參閱 [此功能如何與其他安全工具配合](#此功能如何與其他安全工具配合)。13該外掛程式是 [Code Review](/zh-TW/code-review) 的工作階段內伴侶,Code Review 在拉取請求上執行。此外掛程式減少了進入 PR 的內容。Code Review 捕捉遺漏的內容。有關外掛程式如何與按需審查和 CI 掃描分層的信息,請參閱 [此功能如何與其他安全工具配合](#how-this-fits-with-other-security-tools)。

14 14 

15## 先決條件15<h2 id="prerequisites">

16 先決條件

17</h2>

16 18 

17* Claude Code CLI 版本 2.1.144 或更高版本19* Claude Code CLI 版本 2.1.144 或更高版本

18* Python 3.8 或更高版本在您的 `PATH` 上。該外掛程式會依次嘗試 `python3`、`python` 和 `py -3`20* Python 3.8 或更高版本在您的 `PATH` 上。該外掛程式會依次嘗試 `python3`、`python` 和 `py -3`


20 22 

21首次執行時,外掛程式會在 `~/.claude/security/` 下建立虛擬環境,並將 Claude Agent SDK 安裝到其中,這需要 `pip` 和網路存取。如果該安裝失敗,提交審查會回退到單次審查而不是代理審查。在 Windows 上,虛擬環境步驟會被跳過,因此代理提交審查僅在 `claude-agent-sdk` 已經可導入時執行,否則以相同方式回退。23首次執行時,外掛程式會在 `~/.claude/security/` 下建立虛擬環境,並將 Claude Agent SDK 安裝到其中,這需要 `pip` 和網路存取。如果該安裝失敗,提交審查會回退到單次審查而不是代理審查。在 Windows 上,虛擬環境步驟會被跳過,因此代理提交審查僅在 `claude-agent-sdk` 已經可導入時執行,否則以相同方式回退。

22 24 

23## 安裝外掛程式25<h2 id="install-the-plugin">

26 安裝外掛程式

27</h2>

24 28 

25在 Claude Code 工作階段中,從 [官方 Anthropic 市場](/zh-TW/discover-plugins#official-anthropic-marketplace) 安裝:29在 Claude Code 工作階段中,從 [官方 Anthropic 市場](/zh-TW/discover-plugins#official-anthropic-marketplace) 安裝:

26 30 


36/reload-plugins40/reload-plugins

37```41```

38 42 

39### 在雲端工作階段和共享儲存庫中啟用43<h3 id="enable-in-cloud-sessions-and-shared-repositories">

44 在雲端工作階段和共享儲存庫中啟用

45</h3>

40 46 

41使用者範圍的外掛程式不會進入 [網路上的 Claude Code](/zh-TW/claude-code-on-the-web),因為這些工作階段在 Anthropic 基礎設施上執行,而不是在您的機器上。要在那裡啟用外掛程式,或為克隆儲存庫的所有人開啟它,請在專案的簽入設定中聲明它:47使用者範圍的外掛程式不會進入 [網路上的 Claude Code](/zh-TW/claude-code-on-the-web),因為這些工作階段在 Anthropic 基礎設施上執行,而不是在您的機器上。要在那裡啟用外掛程式,或為克隆儲存庫的所有人開啟它,請在專案的簽入設定中聲明它:

42 48 


50 56 

51管理員可以通過在 [受管設定](/zh-TW/admin-setup) 中設定 [`enabledPlugins`](/zh-TW/settings#plugin-settings) 來組織範圍內啟用外掛程式。57管理員可以通過在 [受管設定](/zh-TW/admin-setup) 中設定 [`enabledPlugins`](/zh-TW/settings#plugin-settings) 來組織範圍內啟用外掛程式。

52 58 

53## 外掛程式檢查的內容59<h2 id="what-the-plugin-checks">

60 外掛程式檢查的內容

61</h2>

54 62 

55外掛程式在三個點檢查 Claude 的工作,每個點的深度不同:63外掛程式在三個點檢查 Claude 的工作,每個點的深度不同:

56 64 

57* [在每個檔案編輯上](#在每個檔案編輯上):快速模式匹配危險呼叫,無需模型呼叫65* [在每個檔案編輯上](#on-each-file-edit):快速模式匹配危險呼叫,無需模型呼叫

58* [在每個回合結束時](#在每個回合結束時):對該回合更改的所有內容進行背景模型審查66* [在每個回合結束時](#at-the-end-of-each-turn):對該回合更改的所有內容進行背景模型審查

59* [在 Claude 進行的每次提交或推送上](#-claude-進行的每次提交或推送上):讀取周圍程式碼的更深層代理審查67* [在 Claude 進行的每次提交或推送上](#on-each-commit-or-push-claude-makes):讀取周圍程式碼的更深層代理審查

60 68 

61您可以通過 [添加自己的規則](#添加自己的規則) 擴展每一層。內置檢查無法單獨移除,但您可以 [獨立禁用每一層](#禁用或卸載)。69您可以通過 [添加自己的規則](#add-your-own-rules) 擴展每一層。內置檢查無法單獨移除,但您可以 [獨立禁用每一層](#disable-or-uninstall)。

62 70 

63### 在每個檔案編輯上71<h3 id="on-each-file-edit">

72 在每個檔案編輯上

73</h3>

64 74 

65當 Claude 寫入檔案時,外掛程式會掃描新內容中的已知危險模式。這是一個沒有模型呼叫的模式匹配,因此不會增加使用成本。75當 Claude 寫入檔案時,外掛程式會掃描新內容中的已知危險模式。這是一個沒有模型呼叫的模式匹配,因此不會增加使用成本。

66 76 


73 83 

74檢查在編輯完成後執行,並將警告附加到 Claude 的下一步上下文中。每個警告在每個工作階段中每個檔案每個模式觸發一次,因此同一檔案中的重複匹配不會淹沒對話。84檢查在編輯完成後執行,並將警告附加到 Claude 的下一步上下文中。每個警告在每個工作階段中每個檔案每個模式觸發一次,因此同一檔案中的重複匹配不會淹沒對話。

75 85 

76您可以使用 `security-patterns.yaml` 檔案 [添加自己的模式](#添加自訂的每個編輯模式) 到此層。86您可以使用 `security-patterns.yaml` 檔案 [添加自己的模式](#add-custom-per-edit-patterns) 到此層。

77 87 

78### 在每個回合結束時88<h3 id="at-the-end-of-each-turn">

89 在每個回合結束時

90</h3>

79 91 

80一個回合是 Claude 響應的一輪:您發送一條消息,Claude 工作並回覆,回合結束。在每個回合之後,外掛程式計算工作樹中在回合期間更改的所有內容的 git diff,包括來自 Claude 的編輯工具、Bash 命令和子代理的更改,並將其發送到專注於安全的單獨 Claude 審查。審查在背景中執行,因此 Claude 的回覆不會延遲。如果審查發現問題,Claude 會被重新提示發現的內容,並作為後續行動解決它們。92一個回合是 Claude 響應的一輪:您發送一條消息,Claude 工作並回覆,回合結束。在每個回合之後,外掛程式計算工作樹中在回合期間更改的所有內容的 git diff,包括來自 Claude 的編輯工具、Bash 命令和子代理的更改,並將其發送到專注於安全的單獨 Claude 審查。審查在背景中執行,因此 Claude 的回覆不會延遲。如果審查發現問題,Claude 會被重新提示發現的內容,並作為後續行動解決它們。

81 93 


89 101 

90您可以直接在您的工作階段中看到發現和 Claude 的解決方案。審查涵蓋每個回合最多 30 個更改的檔案,並在最多連續三次後才讓位給您。102您可以直接在您的工作階段中看到發現和 Claude 的解決方案。審查涵蓋每個回合最多 30 個更改的檔案,並在最多連續三次後才讓位給您。

91 103 

92### 在 Claude 進行的每次提交或推送上104<h3 id="on-each-commit-or-push-claude-makes">

105 在 Claude 進行的每次提交或推送上

106</h3>

93 107 

94當 Claude 通過其 Bash 工具執行 `git commit` 或 `git push` 時,外掛程式在背景中執行對變更的更深層代理審查。此審查讀取周圍程式碼,包括呼叫者、清理程式和相關檔案,以決定發現是否真實,然後再報告它。額外的上下文使假陽性在看起來危險但在您的程式碼庫中安全的模式上保持低位。108當 Claude 通過其 Bash 工具執行 `git commit` 或 `git push` 時,外掛程式在背景中執行對變更的更深層代理審查。此審查讀取周圍程式碼,包括呼叫者、清理程式和相關檔案,以決定發現是否真實,然後再報告它。額外的上下文使假陽性在看起來危險但在您的程式碼庫中安全的模式上保持低位。

95 109 

96此層僅在 Claude 通過其 Bash 工具進行的提交和推送上觸發。您從自己的 shell 執行的提交,包括工作階段內的 `!` shell 逃逸,不會被審查。提交和推送審查限制為每滾動小時 20 次。如果提交審查的發現重複了端回合審查已經報告的內容,Claude 不會被重新提示,因此乾淨的提交不會從此層產生可見的輸出。110此層僅在 Claude 通過其 Bash 工具進行的提交和推送上觸發。您從自己的 shell 執行的提交,包括工作階段內的 `!` shell 逃逸,不會被審查。提交和推送審查限制為每滾動小時 20 次。如果提交審查的發現重複了端回合審查已經報告的內容,Claude 不會被重新提示,因此乾淨的提交不會從此層產生可見的輸出。

97 111 

98### 審查獨立性和限制112<h3 id="review-independence-and-limits">

113 審查獨立性和限制

114</h3>

99 115 

100外掛程式不會要求編寫程式碼的同一 Claude 實例對自己進行評分。每個編輯檢查是一個確定性的字符串匹配,不涉及模型。端回合和提交審查作為單獨的 Claude 呼叫執行,具有新鮮的上下文和安全聚焦的提示:審查者從 diff 開始,對原始方法沒有投資,並且僅被指示查找問題。116外掛程式不會要求編寫程式碼的同一 Claude 實例對自己進行評分。每個編輯檢查是一個確定性的字符串匹配,不涉及模型。端回合和提交審查作為單獨的 Claude 呼叫執行,具有新鮮的上下文和安全聚焦的提示:審查者從 diff 開始,對原始方法沒有投資,並且僅被指示查找問題。

101 117 

102沒有任何層阻止寫入或提交。發現作為指令到達編寫 Claude,Claude 在對話中解決它們,審查模型可能會遺漏問題。將外掛程式視為深度防禦的一層,而不是完整的安全解決方案。請參閱 [此功能如何與其他安全工具配合](#此功能如何與其他安全工具配合)。118沒有任何層阻止寫入或提交。發現作為指令到達編寫 Claude,Claude 在對話中解決它們,審查模型可能會遺漏問題。將外掛程式視為深度防禦的一層,而不是完整的安全解決方案。請參閱 [此功能如何與其他安全工具配合](#how-this-fits-with-other-security-tools)。

103 119 

104## 添加自己的規則120<h2 id="add-your-own-rules">

121 添加自己的規則

122</h2>

105 123 

106外掛程式有兩個擴展點:用於模型支持的審查的 Markdown 指導檔案,以及用於每個編輯字符串匹配的 YAML 或 JSON 模式檔案。兩者都是附加的。您可以添加檢查,但無法從這些檔案中禁用內置檢查。124外掛程式有兩個擴展點:用於模型支持的審查的 Markdown 指導檔案,以及用於每個編輯字符串匹配的 YAML 或 JSON 模式檔案。兩者都是附加的。您可以添加檢查,但無法從這些檔案中禁用內置檢查。

107 125 

108### 為模型支持的審查添加指導126<h3 id="add-guidance-for-the-model-backed-reviews">

127 為模型支持的審查添加指導

128</h3>

109 129 

110在您的專案中建立 `.claude/claude-security-guidance.md`,並用純文字描述您的威脅模型和審查清單。模型支持的審查將其作為附加上下文與內置漏洞清單一起載入。130在您的專案中建立 `.claude/claude-security-guidance.md`,並用純文字描述您的威脅模型和審查清單。模型支持的審查將其作為附加上下文與內置漏洞清單一起載入。

111 131 


121 141 

122這些規則是審查者的指導,而不是確定性的護欄。外掛程式將違規作為發現呈現給 Claude 修復,但它不會阻止寫入或保證捕捉每個違規。指導是附加的:說要忽略漏洞類別的規則不會抑制這些發現。對於硬執行,將外掛程式與 [阻止編輯受保護檔案的鉤子](/zh-TW/hooks-guide#block-edits-to-protected-files) 或 CI 檢查配對。142這些規則是審查者的指導,而不是確定性的護欄。外掛程式將違規作為發現呈現給 Claude 修復,但它不會阻止寫入或保證捕捉每個違規。指導是附加的:說要忽略漏洞類別的規則不會抑制這些發現。對於硬執行,將外掛程式與 [阻止編輯受保護檔案的鉤子](/zh-TW/hooks-guide#block-edits-to-protected-files) 或 CI 檢查配對。

123 143 

124### 添加自訂的每個編輯模式144<h3 id="add-custom-per-edit-patterns">

145 添加自訂的每個編輯模式

146</h3>

125 147 

126建立 `.claude/security-patterns.yaml` 以將 regex 或子字符串規則添加到 [每個編輯模式檢查](#在每個檔案編輯上)。這些作為確定性字符串匹配與內置模式一起執行:148建立 `.claude/security-patterns.yaml` 以將 regex 或子字符串規則添加到 [每個編輯模式檢查](#on-each-file-edit)。這些作為確定性字符串匹配與內置模式一起執行:

127 149 

128```yaml .claude/security-patterns.yaml theme={null}150```yaml .claude/security-patterns.yaml theme={null}

129patterns:151patterns:


147 169 

148外掛程式還讀取 `.claude/security-patterns.yml` 和 `.claude/security-patterns.json`,具有相同的架構。JSON 適用於任何 Python 安裝。YAML 形式需要 PyYAML 可導入,外掛程式不會為您安裝。外掛程式載入最多 50 個自訂規則,並跳過看起來容易發生災難性回溯的 regex。170外掛程式還讀取 `.claude/security-patterns.yml` 和 `.claude/security-patterns.json`,具有相同的架構。JSON 適用於任何 Python 安裝。YAML 形式需要 PyYAML 可導入,外掛程式不會為您安裝。外掛程式載入最多 50 個自訂規則,並跳過看起來容易發生災難性回溯的 regex。

149 171 

150### 規則檔案查找位置172<h3 id="rule-file-lookup-locations">

173 規則檔案查找位置

174</h3>

151 175 

152外掛程式在相同位置查找 `claude-security-guidance.md` 和 `security-patterns.yaml`,與外掛程式的啟用方式無關:176外掛程式在相同位置查找 `claude-security-guidance.md` 和 `security-patterns.yaml`,與外掛程式的啟用方式無關:

153 177 


159 183 

160外掛程式載入所有存在的位置並連接它們,指導檔案的組合上限為 8 KB。管理員可以通過設備管理將使用者範圍檔案推送到 `~/.claude/` 來分發組織範圍的規則。相同的路徑適用於 `security-patterns.yaml`。184外掛程式載入所有存在的位置並連接它們,指導檔案的組合上限為 8 KB。管理員可以通過設備管理將使用者範圍檔案推送到 `~/.claude/` 來分發組織範圍的規則。相同的路徑適用於 `security-patterns.yaml`。

161 185 

162## 使用成本186<h2 id="usage-cost">

187 使用成本

188</h2>

163 189 

164[每個編輯模式檢查](#在每個檔案編輯上) 不進行模型呼叫,不增加成本。[端回合](#在每個回合結束時) 和 [提交](#-claude-進行的每次提交或推送上) 審查各自花費額外的模型使用,計入您的 [使用](/zh-TW/costs),就像任何其他 Claude 請求一樣。提交審查是代理性的,每次提交可能需要多個模型回合,限制為每滾動小時 20 次審查。預期大約每個更改檔案的回合進行一次審查呼叫,每次提交進行一次更深層的審查,兩者都受上述上限的限制。190[每個檔案編輯時的模式檢查](#on-each-file-edit) 不進行模型呼叫,不增加成本。[每個回合結束時](#at-the-end-of-each-turn) 和 [每次提交或推送時](#on-each-commit-or-push-claude-makes) 的審查各自花費額外的模型使用,計入您的 [使用](/zh-TW/costs),就像任何其他 Claude 請求一樣。提交審查是代理性的,每次提交可能需要多個模型回合,限制為每滾動小時 20 次審查。預期大約每個更改檔案的回合進行一次審查呼叫,每次提交進行一次更深層的審查,兩者都受上述上限的限制。

165 191 

166兩個模型支持的審查預設使用 Claude Opus 4.7。設定 `SECURITY_REVIEW_MODEL` 為端回合審查選擇不同的模型,設定 `SG_AGENTIC_MODEL` 為提交審查選擇不同的模型。192兩個模型支持的審查預設使用 Claude Opus 4.7。設定 `SECURITY_REVIEW_MODEL` 為端回合審查選擇不同的模型,設定 `SG_AGENTIC_MODEL` 為提交審查選擇不同的模型。

167 193 

168外掛程式在所有計畫上可用。194外掛程式在所有計畫上可用。

169 195 

170## 禁用或卸載196<h2 id="disable-or-uninstall">

197 禁用或卸載

198</h2>

171 199 

172要關閉各個層同時保持其餘層,請設定匹配的環境變數:200要關閉各個層同時保持其餘層,請設定匹配的環境變數:

173 201 

174| 變數 | 效果 |202| 變數 | 效果 |

175| :------------------------------ | :---------------------------------- |203| :------------------------------ | :------------------------------------------------- |

176| `ENABLE_PATTERN_RULES=0` | 禁用 [每個編輯模式檢查](#在每個檔案編輯上) |204| `ENABLE_PATTERN_RULES=0` | 禁用 [每個編輯模式檢查](#on-each-file-edit) |

177| `ENABLE_STOP_REVIEW=0` | 禁用 [端回合 diff 審查](#在每個回合結束時) |205| `ENABLE_STOP_REVIEW=0` | 禁用 [端回合 diff 審查](#at-the-end-of-each-turn) |

178| `ENABLE_COMMIT_REVIEW=0` | 禁用 [提交和推送審查](#-claude-進行的每次提交或推送上) |206| `ENABLE_COMMIT_REVIEW=0` | 禁用 [提交和推送審查](#on-each-commit-or-push-claude-makes) |

179| `ENABLE_CODE_SECURITY_REVIEW=0` | 一次禁用所有模型支持的審查 |207| `ENABLE_CODE_SECURITY_REVIEW=0` | 一次禁用所有模型支持的審查 |

180| `SECURITY_GUIDANCE_DISABLE=1` | 禁用外掛程式而不卸載 |208| `SECURITY_GUIDANCE_DISABLE=1` | 禁用外掛程式而不卸載 |

181 209 


193 221 

194如果外掛程式通過專案的 `.claude/settings.json` 啟用,從 `/plugin` 禁用它會將覆蓋寫入您的 `.claude/settings.local.json`,而不是編輯簽入的檔案,因此外掛程式對您保持關閉,而不影響隊友。如果它通過 [受管設定](/zh-TW/admin-setup) 啟用,只有管理員可以禁用它。222如果外掛程式通過專案的 `.claude/settings.json` 啟用,從 `/plugin` 禁用它會將覆蓋寫入您的 `.claude/settings.local.json`,而不是編輯簽入的檔案,因此外掛程式對您保持關閉,而不影響隊友。如果它通過 [受管設定](/zh-TW/admin-setup) 啟用,只有管理員可以禁用它。

195 223 

196## 外掛程式如何與 Claude Code 整合224<h2 id="how-the-plugin-integrates-with-claude-code">

225 外掛程式如何與 Claude Code 整合

226</h2>

197 227 

198外掛程式完全建立在 [hooks](/zh-TW/hooks) 上,這是在 Claude 迴圈中的特定點執行您自己的程式碼的機制。它註冊:228外掛程式完全建立在 [hooks](/zh-TW/hooks) 上,這是在 Claude 迴圈中的特定點執行您自己的程式碼的機制。它註冊:

199 229 


207 237 

208如果您構建自己的 hooks,[外掛程式的源代碼](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/security-guidance) 是從 hook 執行單獨模型呼叫並將結果反饋到工作階段的工作示例。238如果您構建自己的 hooks,[外掛程式的源代碼](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/security-guidance) 是從 hook 執行單獨模型呼叫並將結果反饋到工作階段的工作示例。

209 239 

210## 此功能如何與其他安全工具配合240<h2 id="how-this-fits-with-other-security-tools">

241 此功能如何與其他安全工具配合

242</h2>

211 243 

212外掛程式是深度防禦方法中的一層。它最早捕捉問題,當程式碼仍在編輯器中時,但它不是保證,也不能替代後來的檢查。典型的堆棧:244外掛程式是深度防禦方法中的一層。它最早捕捉問題,當程式碼仍在編輯器中時,但它不是保證,也不能替代後來的檢查。典型的堆棧:

213 245 


220 252 

221每個後期階段捕捉早期階段遺漏的內容。外掛程式的價值是減少到達它們的數量,而不是消除對它們的需求。253每個後期階段捕捉早期階段遺漏的內容。外掛程式的價值是減少到達它們的數量,而不是消除對它們的需求。

222 254 

223## 故障排除255<h2 id="troubleshooting">

256 故障排除

257</h2>

224 258 

225外掛程式將執行時診斷寫入 `~/.claude/security/log.txt`。如果審查未出現,請先檢查那裡。259外掛程式將執行時診斷寫入 `~/.claude/security/log.txt`。如果審查未出現,請先檢查那裡。

226 260 


230* 工作階段沒有 Anthropic 身份驗證:模型支持的審查會跳過,只有每個編輯模式檢查執行264* 工作階段沒有 Anthropic 身份驗證:模型支持的審查會跳過,只有每個編輯模式檢查執行

231* `security-patterns.yaml` 檔案存在但 PyYAML 不可導入:檔案被忽略。改用 `security-patterns.json`265* `security-patterns.yaml` 檔案存在但 PyYAML 不可導入:檔案被忽略。改用 `security-patterns.json`

232 266 

233## 相關資源267<h2 id="related-resources">

268 相關資源

269</h2>

234 270 

235要深入了解此頁面涉及的部分:271要深入了解此頁面涉及的部分:

236 272 

Details

174 174 

175Claude Code 自動套用設定更新而無需重新啟動,除了進階設定(例如 OpenTelemetry 設定)需要完整重新啟動才能生效。175Claude Code 自動套用設定更新而無需重新啟動,除了進階設定(例如 OpenTelemetry 設定)需要完整重新啟動才能生效。

176 176 

177<h3 id="invalid-entries-in-delivered-settings">

178 傳遞設定中的無效項目

179</h3>

180 

181傳遞的承載會以與其他受管來源相同的規則寬容地解析。當承載包含無法通過結構描述驗證的項目時,Claude Code 會移除該項目、顯示驗證錯誤,並套用每個剩餘的有效設定。請參閱[受管設定中的無效項目](/zh-TW/settings#invalid-entries-in-managed-settings)以了解欄位層級的行為,包括如何處理安全強制欄位。需要 Claude Code v2.1.169 或更新版本。

182 

183伺服器管理的傳遞新增這些行為:

184 

185* `~/.claude/remote-settings.json` 中的快取會儲存已移除無效項目的已修復承載。原始無效承載永遠不會被持續保存。

186* 當承載中沒有欄位可以被修復時,Claude Code 會保留最後接受的快取設定並記錄致命錯誤。

187* [安全核准對話方塊](#security-approval-dialogs)會評估已修復的承載,因此被移除的無效項目永遠不會被呈現以供核准,也永遠不會執行。

188 

189若要偵錯傳遞問題,請執行 `claude --debug-file <path>` 並在日誌中搜尋 `Remote settings`。在將承載變更推出到組織之前,請在測試機器上使用 `claude doctor` 驗證承載變更。

190 

177<h3 id="enforce-fail-closed-startup">191<h3 id="enforce-fail-closed-startup">

178 強制執行失敗關閉啟動192 強制執行失敗關閉啟動

179</h3>193</h3>

sessions.md +2 −2

Details

30| `claude --from-pr <number>` | 恢復連結到該 pull request 的 session |30| `claude --from-pr <number>` | 恢復連結到該 pull request 的 session |

31| `/resume` | 從活躍 session 內切換到不同的對話 |31| `/resume` | 從活躍 session 內切換到不同的對話 |

32 32 

33使用 [`claude -p`](/zh-TW/headless) 或 [Agent SDK](/zh-TW/agent-sdk/overview) 建立的 sessions 不會出現在 session 選擇器中,但您仍然可以透過將其 session ID 傳遞給 `claude --resume <session-id>` 來恢復它。33使用 [`claude -p`](/zh-TW/headless) 或 [Agent SDK](/zh-TW/agent-sdk/overview) 建立的 sessions 不會出現在 session 選擇器中,但您仍然可以透過將其 session ID 傳遞給 `claude --resume <session-id>` 來恢復它。從啟動 session 的目錄執行此命令:session ID 查詢的範圍限於目前專案目錄及其 git worktrees,因此在其他地方建立的 session 會報告 `No conversation found with session ID: <session-id>`。

34 34 

35<h3 id="where-the-session-picker-looks">35<h3 id="where-the-session-picker-looks">

36 session 選擇器查看的位置36 session 選擇器查看的位置

37</h3>37</h3>

38 38 

39Sessions 按專案目錄儲存。預設情況下,session 選擇器顯示來自目前 worktree 的互動式 sessions,以及在其他地方啟動並使用 `/add-dir` 新增目前目錄的 sessions。使用 `Ctrl+W` 擴展到儲存庫的所有 worktrees,或使用 `Ctrl+A` 擴展到此機器上的每個專案。39Sessions 按專案目錄儲存。預設情況下,session 選擇器顯示來自目前 worktree 的互動式 sessions,以及在其他地方啟動並使用 `/add-dir` 新增目前目錄的 sessions。從 v2.1.169 開始,使用 [`/cd`](/zh-TW/commands) 移動 session 會將其重新定位到新目錄的專案儲存空間,因此之後會出現在該目錄的選擇器中。使用 `Ctrl+W` 擴展到儲存庫的所有 worktrees,或使用 `Ctrl+A` 擴展到此機器上的每個專案。

40 40 

41從同一儲存庫的另一個 worktree 選擇 session 會在原地恢復它。從不相關的專案選擇 session 會將 `cd` 和恢復命令複製到您的剪貼簿。41從同一儲存庫的另一個 worktree 選擇 session 會在原地恢復它。從不相關的專案選擇 session 會將 `cd` 和恢復命令複製到您的剪貼簿。

42 42 

settings.md +113 −27

Details

94* **使用者設定**在 `~/.claude/settings.json` 中定義,適用於所有專案。94* **使用者設定**在 `~/.claude/settings.json` 中定義,適用於所有專案。

95* **專案設定**儲存在您的專案目錄中:95* **專案設定**儲存在您的專案目錄中:

96 * `.claude/settings.json` 用於簽入原始碼控制並與您的團隊共享的設定96 * `.claude/settings.json` 用於簽入原始碼控制並與您的團隊共享的設定

97 * `.claude/settings.local.json` 用於未簽入的設定,適用於個人偏好和實驗。Claude Code 將在建立時設定 git 以忽略 `.claude/settings.local.json`。97 * `.claude/settings.local.json` 用於未簽入的設定,適用於個人偏好和實驗。Claude Code 建立 `.claude/settings.local.json` 時,會設定 git 以忽略該檔案如果您自己建立該檔案,請手動將其新增到 gitignore。

98* **Managed 設定**:對於需要集中控制的組織,Claude Code 支援多種 managed 設定的傳遞機制。所有機制都使用相同的 JSON 格式,無法被使用者或專案設定覆蓋:98* **Managed 設定**:對於需要集中控制的組織,Claude Code 支援多種 managed 設定的傳遞機制。所有機制都使用相同的 JSON 格式,無法被使用者或專案設定覆蓋:

99 99 

100 * **伺服器管理的設定**:透過 Claude.ai 管理員主控台從 Anthropic 的伺服器傳遞。請參閱[伺服器管理的設定](/zh-TW/server-managed-settings)。100 * **伺服器管理的設定**:透過 Claude.ai 管理員主控台從 Anthropic 的伺服器傳遞。請參閱[伺服器管理的設定](/zh-TW/server-managed-settings)。


174* `model`:使用 [`/model`](/zh-TW/model-config#setting-your-model) 在工作階段中切換174* `model`:使用 [`/model`](/zh-TW/model-config#setting-your-model) 在工作階段中切換

175* [`outputStyle`](/zh-TW/output-styles):系統提示的一部分,在 `/clear` 或重新啟動時重建175* [`outputStyle`](/zh-TW/output-styles):系統提示的一部分,在 `/clear` 或重新啟動時重建

176 176 

177<h3 id="invalid-entries-in-managed-settings">

178 Managed 設定中的無效項目

179</h3>

180 

181Managed 設定會寬容地解析。當 managed 設定包含驗證架構失敗的項目時,Claude Code 會移除該項目、記錄警告,並強制執行每個剩餘的有效政策。單一拼寫錯誤無法停用組織政策的其餘部分。此行為在所有三種傳遞機制中一致:[伺服器管理的設定](/zh-TW/server-managed-settings)、透過 MDM 部署的 plist 和登錄政策,以及 `managed-settings.json` 檔案。需要 Claude Code v2.1.169 或更新版本。

182 

183安全強制欄位按欄位處理,而不是在存在但無效時被整體移除:

184 

185| 欄位 | 存在但無效時的行為 |

186| :--------------------------- | :------------------------------------------------------------------------------------------------ |

187| `allowedMcpServers` | 作為空白名單強制執行,因此在修復值之前不允許任何 MCP servers。個別無效項目會被移除,有效子集會被強制執行。 |

188| `allowManagedMcpServersOnly` | 視為 `true`。 |

189| `availableModels` | {/* min-version: 2.1.175 */}作為空白名單強制執行,因此在修復值之前僅預設模型可用。個別非字串項目會被移除,有效子集會被強制執行。適用於 v2.1.175 及更新版本。 |

190| `enforceAvailableModels` | {/* min-version: 2.1.175 */}視為 `true`。適用於 v2.1.175 及更新版本。 |

191| `forceLoginOrgUUID` | 在修復值之前,不允許任何組織登入。 |

192| `deniedMcpServers` | 個別無效項目會被移除,有效子集會被強制執行。完全無效的值會被丟棄並出現警告,因為拒絕每個 server 會阻止政策從未命名的 servers。 |

193 

194`requiredMinimumVersion` 和 `requiredMaximumVersion` 設計上會失敗開放:無效的值會被移除而不是強制執行,因此不良的政策推送無法防止 Claude Code 啟動。

195 

196驗證錯誤會在三個地方出現:

197 

198* 互動式工作階段在啟動時顯示列出無效項目的對話框。

199* 使用 `-p` 的無頭執行會將摘要列印到 stderr。

200* [`claude doctor`](/zh-TW/debug-your-config) 列出每個無效項目及其來源和欄位。

201 

202在整個機隊部署政策變更之前,在測試機器上執行 `claude doctor` 以驗證政策變更。

203 

204此寬容性僅適用於 managed 設定。使用者、專案和本機設定檔案保持嚴格:驗證失敗的檔案會被整體拒絕並報告。

205 

177<h3 id="available-settings">206<h3 id="available-settings">

178 可用的設定207 可用的設定

179</h3>208</h3>


181`settings.json` 支援多個選項:210`settings.json` 支援多個選項:

182 211 

183| 金鑰 | 說明 | 範例 |212| 金鑰 | 說明 | 範例 |

184| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |213| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------ |

214| `advisorModel` | {/* min-version: 2.1.98 */}伺服器端[advisor tool](/zh-TW/advisor)的模型。接受模型別名,例如 `"opus"`、`"sonnet"` 或 `"fable"`({/* min-version: 2.1.170 */}v2.1.170+),或完整模型 ID。當您執行 `/advisor` 時自動寫入。取消設定以停用 advisor。需要 Claude Code v2.1.98 或更新版本 | `"opus"` |

185| `agent` | 將主執行緒作為命名 subagent 執行,並為從 `claude agents` 分派的工作階段設定預設 agent。應用該 subagent 的系統提示、工具限制和模型。請參閱[明確叫用 subagents](/zh-TW/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |215| `agent` | 將主執行緒作為命名 subagent 執行,並為從 `claude agents` 分派的工作階段設定預設 agent。應用該 subagent 的系統提示、工具限制和模型。請參閱[明確叫用 subagents](/zh-TW/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

216| `agentPushNotifEnabled` | {/* min-version: 2.1.119 */}當[遠端控制](/zh-TW/remote-control)已連線時,允許 Claude 主動傳送推播通知到您的手機,例如當長時間工作完成時。預設:`false`。在 `/config` 中顯示為**Claude 決定時推播**。請參閱[行動推播通知](/zh-TW/remote-control#mobile-push-notifications)。需要 Claude Code v2.1.119 或更新版本 | `true` |

186| `allowAllClaudeAiMcps` | (Managed 設定僅限)載入 claude.ai connectors 以及部署的 `managed-mcp.json`,否則會取得獨佔控制並抑制它們。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `true` |217| `allowAllClaudeAiMcps` | (Managed 設定僅限)載入 claude.ai connectors 以及部署的 `managed-mcp.json`,否則會取得獨佔控制並抑制它們。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `true` |

187| `allowedChannelPlugins` | (Managed 設定僅限)可能推送訊息的頻道 plugins 白名單。在設定時替換預設 Anthropic 白名單。未定義 = 回退到預設值,空陣列 = 阻止所有頻道 plugins。需要 `channelsEnabled: true`。請參閱[限制哪些頻道 plugins 可以執行](/zh-TW/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |218| `allowedChannelPlugins` | (Managed 設定僅限)可能推送訊息的頻道 plugins 白名單。在設定時替換預設 Anthropic 白名單。未定義 = 回退到預設值,空陣列 = 阻止所有頻道 plugins。需要 `channelsEnabled: true`。請參閱[限制哪些頻道 plugins 可以執行](/zh-TW/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

188| `allowedHttpHookUrls` | HTTP hooks 可能針對的 URL 模式白名單。支援 `*` 作為萬用字元。設定時,具有不匹配 URL 的 hooks 會被阻止。未定義 = 無限制,空陣列 = 阻止所有 HTTP hooks。陣列跨設定來源合併。請參閱 [Hook 設定](#hook-configuration) | `["https://hooks.example.com/*"]` |219| `allowedHttpHookUrls` | HTTP hooks 可能針對的 URL 模式白名單。支援 `*` 作為萬用字元。設定時,具有不匹配 URL 的 hooks 會被阻止。未定義 = 無限制,空陣列 = 阻止所有 HTTP hooks。陣列跨設定來源合併。請參閱 [Hook 設定](#hook-configuration) | `["https://hooks.example.com/*"]` |


190| `allowManagedHooksOnly` | (Managed 設定僅限)僅載入 managed hooks、SDK hooks 和在 managed 設定 `enabledPlugins` 中強制啟用的 plugins 中的 hooks。使用者、專案和所有其他 plugin hooks 被阻止。請參閱 [Hook 設定](#hook-configuration) | `true` |221| `allowManagedHooksOnly` | (Managed 設定僅限)僅載入 managed hooks、SDK hooks 和在 managed 設定 `enabledPlugins` 中強制啟用的 plugins 中的 hooks。使用者、專案和所有其他 plugin hooks 被阻止。請參閱 [Hook 設定](#hook-configuration) | `true` |

191| `allowManagedMcpServersOnly` | (Managed 設定僅限)僅尊重 managed 設定中的 `allowedMcpServers`。`deniedMcpServers` 仍從所有來源合併。使用者仍可新增 MCP servers,但僅適用管理員定義的白名單。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `true` |222| `allowManagedMcpServersOnly` | (Managed 設定僅限)僅尊重 managed 設定中的 `allowedMcpServers`。`deniedMcpServers` 仍從所有來源合併。使用者仍可新增 MCP servers,但僅適用管理員定義的白名單。請參閱 [Managed MCP 設定](/zh-TW/managed-mcp) | `true` |

192| `allowManagedPermissionRulesOnly` | (Managed 設定僅限)防止使用者和專案設定定義 `allow`、`ask` 或 `deny` 權限規則。僅適用 managed 設定中的規則。請參閱 [Managed 專用設定](/zh-TW/permissions#managed-only-settings) | `true` |223| `allowManagedPermissionRulesOnly` | (Managed 設定僅限)防止使用者和專案設定定義 `allow`、`ask` 或 `deny` 權限規則。僅適用 managed 設定中的規則。請參閱 [Managed 專用設定](/zh-TW/permissions#managed-only-settings) | `true` |

193| `alwaysThinkingEnabled` | 為所有工作階段預設啟用[擴展思考](/zh-TW/model-config#extended-thinking)。通常透過 `/config` 命令而不是直接編輯來設定。若要強制思考關閉,無論此設定如何,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_THINKING`](/zh-TW/env-vars) | `true` |224| `alwaysThinkingEnabled` | 為所有工作階段預設啟用[擴展思考](/zh-TW/model-config#extended-thinking)。通常透過 `/config` 命令而不是直接編輯來設定。若要強制思考關閉,無論此設定如何,請在 `env` 中設定 [`MAX_THINKING_TOKENS=0`](/zh-TW/env-vars),這會停用 Anthropic API 上的思考,除了 Fable 5,無法關閉思考。在[第三方提供者](/zh-TW/third-party-integrations)上,這會改為省略 `thinking` 參數,自適應推理模型仍可能思考 | `true` |

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` |225| `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` |

195| `attribution` | 自訂 git 提交和拉取請求的歸屬。請參閱[歸屬設定](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |226| `attribution` | 自訂 git 提交和拉取請求的歸屬。請參閱[歸屬設定](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

227| `autoCompactEnabled` | {/* min-version: 2.1.119 */}當內容接近限制時自動壓縮對話。預設:`true`。在 `/config` 中顯示為**自動壓縮**。若要透過環境變數停用,請在 `env` 中設定 [`DISABLE_AUTO_COMPACT`](/zh-TW/env-vars) | `false` |

196| `autoMemoryDirectory` | [自動記憶](/zh-TW/memory#storage-location)儲存的自訂目錄。接受絕對路徑或 `~/` 前綴的路徑。從專案或本機設定接受,此設定在您接受工作區信任對話後才受尊重,因為複製的儲存庫可能提供此檔案 | `"~/my-memory-dir"` |228| `autoMemoryDirectory` | [自動記憶](/zh-TW/memory#storage-location)儲存的自訂目錄。接受絕對路徑或 `~/` 前綴的路徑。從專案或本機設定接受,此設定在您接受工作區信任對話後才受尊重,因為複製的儲存庫可能提供此檔案 | `"~/my-memory-dir"` |

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` |229| `autoMemoryEnabled` | 啟用[自動記憶](/zh-TW/memory#enable-or-disable-auto-memory)。當為 `false` 時,Claude 不會從自動記憶目錄讀取或寫入。預設:`true`。您也可以在工作階段期間使用 `/memory` 切換此設定。若要透過環境變數停用,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/zh-TW/env-vars) | `false` |

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"]}` |230| `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"]}` |

199| `autoScrollEnabled` | 在[全螢幕渲染](/zh-TW/fullscreen)中,跟隨新輸出到對話的底部。預設:`true`。在 `/config` 中顯示為**自動捲軸**。當此設定關閉時,權限提示仍會捲軸進入檢視 | `false` |231| `autoScrollEnabled` | 在[全螢幕渲染](/zh-TW/fullscreen)中,跟隨新輸出到對話的底部。預設:`true`。在 `/config` 中顯示為**自動捲軸**。當此設定關閉時,權限提示仍會捲軸進入檢視 | `false` |

200| `autoUpdatesChannel` | 遵循更新的發行頻道。使用 `"stable"` 以取得通常約一週舊的版本並跳過有重大迴歸的版本,或 `"latest"`(預設)以取得最新版本。若要完全停用自動更新,請在 `env` 中設定 [`DISABLE_AUTOUPDATER`](/zh-TW/setup#disable-auto-updates) | `"stable"` |232| `autoUpdatesChannel` | 遵循更新的發行頻道。使用 `"stable"` 以取得通常約一週舊的版本並跳過有重大迴歸的版本,或 `"latest"`(預設)以取得最新版本。若要完全停用自動更新,請在 `env` 中設定 [`DISABLE_AUTOUPDATER`](/zh-TW/setup#disable-auto-updates) | `"stable"` |

201| `availableModels` | 限制使用者可透過 `/model``--model` `ANTHROPIC_MODEL` 選擇的模型。不影響預設選項。請參閱[限制模型選擇](/zh-TW/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |233| `availableModels` | 限制使用者可以為主工作階段[subagents](/zh-TW/sub-agents) [advisor](/zh-TW/advisor) 選擇的模型。請參閱[限制模型選擇](/zh-TW/model-config#restrict-model-selection)。另請參閱 `enforceAvailableModels` 以同時限制預設模型 | `["sonnet", "haiku"]` |

202| `awaySummaryEnabled` | 在您離開終端機幾分鐘後返回時顯示單行工作階段摘要。設定為 `false` 或在 `/config` 中關閉工作階段摘要以停用。與 [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/zh-TW/env-vars) 相同 | `true` |234| `awaySummaryEnabled` | 在您離開終端機幾分鐘後返回時顯示單行工作階段摘要。設定為 `false` 或在 `/config` 中關閉工作階段摘要以停用。與 [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/zh-TW/env-vars) 相同 | `true` |

203| `awsAuthRefresh` | 修改 `.aws` 目錄的自訂指令碼(請參閱[進階認證設定](/zh-TW/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |235| `awsAuthRefresh` | 修改 `.aws` 目錄的自訂指令碼(請參閱[進階認證設定](/zh-TW/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

204| `awsCredentialExport` | 輸出包含 AWS 認證的 JSON 的自訂指令碼(請參閱[進階認證設定](/zh-TW/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |236| `awsCredentialExport` | 輸出包含 AWS 認證的 JSON 的自訂指令碼(請參閱[進階認證設定](/zh-TW/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |


213| `disableAgentView` | 設定為 `true` 以關閉[背景代理和代理檢視](/zh-TW/agent-view):`claude agents`、`--bg`、`/background` 和隨選主管。通常在 [managed 設定](/zh-TW/permissions#managed-settings) 中設定。等同於將 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 設定為 `1` | `true` |245| `disableAgentView` | 設定為 `true` 以關閉[背景代理和代理檢視](/zh-TW/agent-view):`claude agents`、`--bg`、`/background` 和隨選主管。通常在 [managed 設定](/zh-TW/permissions#managed-settings) 中設定。等同於將 `CLAUDE_CODE_DISABLE_AGENT_VIEW` 設定為 `1` | `true` |

214| `disableAllHooks` | 停用所有 [hooks](/zh-TW/hooks) 和任何自訂[狀態行](/zh-TW/statusline) | `true` |246| `disableAllHooks` | 停用所有 [hooks](/zh-TW/hooks) 和任何自訂[狀態行](/zh-TW/statusline) | `true` |

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"` |247| `disableAutoMode` | 設定為 `"disable"` 以防止[自動模式](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)被啟用。從 `Shift+Tab` 循環中移除 `auto` 並在啟動時拒絕 `--permission-mode auto`。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |

248| `disableBundledSkills` | 設定為 `true` 以停用隨 Claude Code 一起提供的 [skills](/zh-TW/skills) 和工作流程:bundled skills 和工作流程會被完全移除,而內建斜線命令(如 `/init`)保持可輸入但對模型隱藏。來自 plugins、`.claude/skills/` 和 `.claude/commands/` 的 Skills 不受影響。等同於將 `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` 設定為 `1` | `true` |

216| `disableDeepLinkRegistration` | 設定為 `"disable"` 以防止 Claude Code 在啟動時向作業系統註冊 `claude-cli://` 協議處理程式。[深層連結](/zh-TW/deep-links)讓外部工具透過預先填入的提示開啟 Claude Code 工作階段。在協議處理程式註冊受限或單獨管理的環境中很有用 | `"disable"` |249| `disableDeepLinkRegistration` | 設定為 `"disable"` 以防止 Claude Code 在啟動時向作業系統註冊 `claude-cli://` 協議處理程式。[深層連結](/zh-TW/deep-links)讓外部工具透過預先填入的提示開啟 Claude Code 工作階段。在協議處理程式註冊受限或單獨管理的環境中很有用 | `"disable"` |

217| `disabledMcpjsonServers` | 要拒絕的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["filesystem"]` |250| `disabledMcpjsonServers` | 要拒絕的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["filesystem"]` |

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` |251| `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` |


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"` |255| `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"` |

223| `enableAllProjectMcpServers` | 自動批准專案 `.mcp.json` 檔案中定義的所有 MCP servers | `true` |256| `enableAllProjectMcpServers` | 自動批准專案 `.mcp.json` 檔案中定義的所有 MCP servers | `true` |

224| `enabledMcpjsonServers` | 要批准的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["memory", "github"]` |257| `enabledMcpjsonServers` | 要批准的 `.mcp.json` 檔案中特定 MCP servers 的清單 | `["memory", "github"]` |

258| `enforceAvailableModels` | {/* min-version: 2.1.175 */}當為 `true` 且 `availableModels` 是 managed 或政策設定中的非空清單時,預設模型也受限於白名單。請參閱[限制模型選擇](/zh-TW/model-config#restrict-model-selection)以了解詳細資訊和[合併行為](/zh-TW/model-config#merge-behavior)(當 `availableModels` 在多個層級設定時)。需要 Claude Code v2.1.175 或更新版本 | `true` |

225| `env` | 應用於每個工作階段和 Claude Code 從中產生的子流程的環境變數。{/* min-version: 2.1.143 */}自 v2.1.143 起,此處設定的 `NO_COLOR` 和 `FORCE_COLOR` 會傳遞到子流程,但不會改變 Claude Code 自己的介面顏色。在啟動 `claude` 前在您的 shell 中設定這些以改變介面顏色 | `{"FOO": "bar"}` |259| `env` | 應用於每個工作階段和 Claude Code 從中產生的子流程的環境變數。{/* min-version: 2.1.143 */}自 v2.1.143 起,此處設定的 `NO_COLOR` 和 `FORCE_COLOR` 會傳遞到子流程,但不會改變 Claude Code 自己的介面顏色。在啟動 `claude` 前在您的 shell 中設定這些以改變介面顏色 | `{"FOO": "bar"}` |

260| `fallbackModel` | 當主模型過載或不可用時按順序嘗試的備用模型。Claude Code 會為該輪的其餘部分切換到鏈中的下一個可用模型並顯示通知。`"default"` 擴展為預設模型。鏈限制為三個模型;額外項目會被忽略。與大多數陣列設定不同,此金鑰不跨設定檔案合併:定義它的最高優先順序檔案提供整個鏈。[`--fallback-model`](/zh-TW/cli-reference#cli-flags) 旗標會覆蓋此設定以進行一個工作階段。請參閱[備用模型鏈](/zh-TW/model-config#fallback-model-chains) | `["claude-sonnet-4-6", "claude-haiku-4-5"]` |

226| `fastModePerSessionOptIn` | 當為 `true` 時,快速模式不會跨工作階段持久化。每個工作階段都以快速模式關閉開始,需要使用者使用 `/fast` 啟用它。使用者的快速模式偏好仍會儲存。請參閱[需要每個工作階段的選擇加入](/zh-TW/fast-mode#require-per-session-opt-in) | `true` |261| `fastModePerSessionOptIn` | 當為 `true` 時,快速模式不會跨工作階段持久化。每個工作階段都以快速模式關閉開始,需要使用者使用 `/fast` 啟用它。使用者的快速模式偏好仍會儲存。請參閱[需要每個工作階段的選擇加入](/zh-TW/fast-mode#require-per-session-opt-in) | `true` |

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` |262| `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` |

263| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}在每次編輯前快照檔案,以便 [`/rewind`](/zh-TW/checkpointing) 可以還原它們。預設:`true`。在 `/config` 中顯示為**倒帶程式碼(檢查點)**。若要透過環境變數停用,請在 `env` 中設定 [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/zh-TW/env-vars) | `false` |

228| `fileSuggestion` | 為 `@` 檔案自動完成設定自訂指令碼。請參閱[檔案建議設定](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |264| `fileSuggestion` | 為 `@` 檔案自動完成設定自訂指令碼。請參閱[檔案建議設定](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

229| `forceLoginMethod` | 使用 `claudeai` 限制登入到 Claude.ai 帳戶,`console` 限制登入到 Claude Console 帳戶 managed 設定中設定時,由 API 金鑰`apiKeyHelper` 或第三方提供者驗證的工作階段在啟動時被阻止,因為兩個值都無法在沒有第一方 OAuth 的情況下滿足 | `claudeai` |265| `footerLinksRegexes` | {/* min-version: 2.1.176 */}當 regex 符合輪次輸出時在頁尾中渲染額外的可點擊徽章。每個項目都有一個 `pattern`、一個包含 `{name}` 佔位符的 URL 範本(從命名擷取群組填入),以及一個選用的 `label`僅從使用者設定、`--settings` 旗標和 managed 設定讀取。請參閱[頁尾連結徽章](#footer-link-badges)以了解 URL 限制方案白名單和限制。需要 Claude Code v2.1.176 或更新版本 | `[{"type": "regex", "pattern": "\\b(?<key>PROJ-\\d+)\\b", "url": "https://issues.example.com/browse/{key}", "label": "{key}"}]` |

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"]` |266| `forceLoginMethod` | 使用 `claudeai` 限制登入到 Claude.ai 帳戶`console` 限制登入到 Claude Console 帳戶。在 managed 設定中設定時,由 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 驗證的工作階段在啟動時被阻止因為兩個值都無法在沒有第一方 OAuth 的情況下滿足。第三方提供者工作階段(例如 Bedrock、Vertex 和 Foundry)不被阻止:它們針對您的雲端提供者而不是 Anthropic 進行驗證 | `claudeai` |

267| `forceLoginOrgUUID` | 要求登入屬於特定 Anthropic 組織。接受單一 UUID 字串(也會在登入期間預先選擇該組織),或 UUID 陣列,其中接受任何列出的組織而不預先選擇。在 managed 設定中設定時,如果驗證帳戶不屬於列出的組織,登入會失敗;由 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 驗證的工作階段在啟動時被阻止,因為無法驗證它們的組織成員資格。第三方提供者工作階段(例如 Bedrock、Vertex 和 Foundry)不被阻止:使用您的雲端 IAM 限制可以使用哪些雲端帳戶。空陣列會失敗關閉並使用誤設定訊息阻止登入 | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` 或 `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

231| `forceRemoteSettingsRefresh` | (Managed 設定僅限)阻止 CLI 啟動,直到從伺服器新鮮擷取遠端 managed 設定。如果擷取失敗,CLI 會結束而不是繼續使用快取或無設定。未設定時,啟動會繼續而不等待遠端設定。請參閱[失敗關閉強制執行](/zh-TW/server-managed-settings#enforce-fail-closed-startup) | `true` |268| `forceRemoteSettingsRefresh` | (Managed 設定僅限)阻止 CLI 啟動,直到從伺服器新鮮擷取遠端 managed 設定。如果擷取失敗,CLI 會結束而不是繼續使用快取或無設定。未設定時,啟動會繼續而不等待遠端設定。請參閱[失敗關閉強制執行](/zh-TW/server-managed-settings#enforce-fail-closed-startup) | `true` |

232| `gcpAuthRefresh` | 當 GCP Application Default Credentials 過期或無法載入時重新整理它們的自訂指令碼。請參閱[進階認證設定](/zh-TW/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |269| `gcpAuthRefresh` | 當 GCP Application Default Credentials 過期或無法載入時重新整理它們的自訂指令碼。請參閱[進階認證設定](/zh-TW/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |

233| `hooks` | 設定自訂命令以在生命週期事件執行。請參閱 [hooks 文件](/zh-TW/hooks)以了解格式 | 請參閱 [hooks](/zh-TW/hooks) |270| `hooks` | 設定自訂命令以在生命週期事件執行。請參閱 [hooks 文件](/zh-TW/hooks)以了解格式 | 請參閱 [hooks](/zh-TW/hooks) |

234| `httpHookAllowedEnvVars` | HTTP hooks 可能插入到標頭中的環境變數名稱白名單。設定時,每個 hook 的有效 `allowedEnvVars` 是與此清單的交集。未定義 = 無限制。陣列跨設定來源合併。請參閱 [Hook 設定](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |271| `httpHookAllowedEnvVars` | HTTP hooks 可能插入到標頭中的環境變數名稱白名單。設定時,每個 hook 的有效 `allowedEnvVars` 是與此清單的交集。未定義 = 無限制。陣列跨設定來源合併。請參閱 [Hook 設定](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

235| `includeCoAuthoredBy` | **已棄用**:改用 `attribution`。是否在 git 提交和拉取請求中包含 `co-authored-by Claude` 署名(預設:`true`) | `false` |272| `includeCoAuthoredBy` | **已棄用**:改用 `attribution`。是否在 git 提交和拉取請求中包含 `co-authored-by Claude` 署名(預設:`true`) | `false` |

236| `includeGitInstructions` | 在 Claude 的系統提示中包含內建提交和 PR 工作流程指示和 git 狀態快照(預設:`true`)。設定為 `false` 以移除兩者,例如在使用您自己的 git 工作流程 skills 時。`CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` 環境變數在設定時優先於此設定 | `false` |273| `includeGitInstructions` | 在 Claude 的系統提示中包含內建提交和 PR 工作流程指示和 git 狀態快照(預設:`true`)。設定為 `false` 以移除兩者,例如在使用您自己的 git 工作流程 skills 時。`CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` 環境變數在設定時優先於此設定 | `false` |

237| `language` | 設定 Claude 的首選回應語言(例如 `"japanese"`、`"spanish"``"french"`)。Claude 預設會以此語言回應也設定[語音聽寫](/zh-TW/voice-dictation#change-the-dictation-language)語言 | `"japanese"` |274| `inputNeededNotifEnabled` | {/* min-version: 2.1.119 */}當[遠端控制](/zh-TW/remote-control)已連線時,當權限提示或問題等待您的輸入時傳送推播通知到您的手機。預設:`false`。在 `/config` 中顯示為**需要操作時推播**請參閱[行動推播通知](/zh-TW/remote-control#mobile-push-notifications)。需要 Claude Code v2.1.119 或更新版本 | `true` |

275| `language` | 設定 Claude 的首選回應語言(例如 `"japanese"`、`"spanish"`、`"french"`)。Claude 預設會以此語言回應。也設定[語音聽寫](/zh-TW/voice-dictation#change-the-dictation-language)語言和自動產生的工作階段標題。{/* min-version: 2.1.176 */}自 v2.1.176 起,未設定時,工作階段標題符合您對話的語言 | `"japanese"` |

238| `maxSkillDescriptionChars` | {/* min-version: 2.1.105 */}[skill 清單](/zh-TW/skills#skill-descriptions-are-cut-short)中每個 skill 的字元上限,Claude 每輪看到的 `description` 和 `when_to_use` 文字的組合(預設:`1536`)。超過此長度的文字會被截斷。提高以保持長描述完整,代價是每輪更多內容;降低以在 [`skillListingBudgetFraction`](#available-settings) 下適應更多 skills。需要 Claude Code v2.1.105 或更新版本 | `2048` |276| `maxSkillDescriptionChars` | {/* min-version: 2.1.105 */}[skill 清單](/zh-TW/skills#skill-descriptions-are-cut-short)中每個 skill 的字元上限,Claude 每輪看到的 `description` 和 `when_to_use` 文字的組合(預設:`1536`)。超過此長度的文字會被截斷。提高以保持長描述完整,代價是每輪更多內容;降低以在 [`skillListingBudgetFraction`](#available-settings) 下適應更多 skills。需要 Claude Code v2.1.105 或更新版本 | `2048` |

239| `minimumVersion` | 防止背景自動更新和 `claude update` 安裝低於此版本的版本。當從 `"latest"` 頻道切換到 `"stable"` 時透過 `/config` 提示您保持在目前版本或允許降級。選擇保持設定此值。也適用於[managed 設定](/zh-TW/permissions#managed-settings)以釘選組織範圍的最小值 | `"2.1.100"` |277| `minimumVersion` | 防止背景自動更新和 `claude update` 安裝低於此版本的版本。當從 `"latest"` 頻道切換到 `"stable"` 時透過 `/config` 提示您保持在目前版本或允許降級。選擇保持設定此值。也適用於[managed 設定](/zh-TW/permissions#managed-settings)以釘選組織範圍的最小值。如需完全阻止啟動的硬底線,請參閱 `requiredMinimumVersion` | `"2.1.100"` |

240| `model` | 覆蓋 Claude Code 使用的預設模型。`--model` 和 [`ANTHROPIC_MODEL`](/zh-TW/model-config#environment-variables) 會覆蓋此設定以進行一個工作階段 | `"claude-sonnet-4-6"` |278| `model` | 覆蓋 Claude Code 使用的預設模型。`--model` 和 [`ANTHROPIC_MODEL`](/zh-TW/model-config#environment-variables) 會覆蓋此設定以進行一個工作階段 | `"claude-sonnet-4-6"` |

241| `modelOverrides` | 將 Anthropic 模型 ID 對應到提供者特定的模型 ID,例如 Bedrock 推論設定檔 ARN。每個模型選擇器項目在呼叫提供者 API 時使用其對應的值。請參閱[按版本覆蓋模型 ID](/zh-TW/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |279| `modelOverrides` | 將 Anthropic 模型 ID 對應到提供者特定的模型 ID,例如 Bedrock 推論設定檔 ARN。每個模型選擇器項目在呼叫提供者 API 時使用其對應的值。請參閱[按版本覆蓋模型 ID](/zh-TW/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

242| `otelHeadersHelper` | 產生動態 OpenTelemetry 標頭的指令碼。在啟動時和定期執行。使用 [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/zh-TW/env-vars) 設定重新整理間隔。請參閱[動態標頭](/zh-TW/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |280| `otelHeadersHelper` | 產生動態 OpenTelemetry 標頭的指令碼。在啟動時和定期執行。使用 [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/zh-TW/env-vars) 設定重新整理間隔。請參閱[動態標頭](/zh-TW/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |

243| `outputStyle` | 設定輸出樣式以調整系統提示。請參閱[輸出樣式文件](/zh-TW/output-styles) | `"Explanatory"` |281| `outputStyle` | 設定輸出樣式以調整系統提示。請參閱[輸出樣式文件](/zh-TW/output-styles) | `"Explanatory"` |

244| `parentSettingsBehavior` | {/* min-version: 2.1.133 */}(Managed 設定僅限)控制由嵌入主機流程(例如 Agent SDK 或 IDE 擴充功能)以程式設計方式提供的 managed 設定在同時存在管理員部署的 managed 層級時是否適用。`"first-wins"`:父級提供的設定被丟棄,僅適用管理員層級。`"merge"`:父級提供的設定適用於管理員層級下方,經過篩選以便它們可以收緊政策但不能放鬆政策。當未部署管理員層級時無效。預設:`"first-wins"`。需要 Claude Code v2.1.133 或更新版本 | `"merge"` |282| `parentSettingsBehavior` | {/* min-version: 2.1.133 */}(Managed 設定僅限)控制由嵌入主機流程(例如 Agent SDK 或 IDE 擴充功能)以程式設計方式提供的 managed 設定在同時存在管理員部署的 managed 層級時是否適用。`"first-wins"`:父級提供的設定被丟棄,僅適用管理員層級。`"merge"`:父級提供的設定適用於管理員層級下方,經過篩選以便它們可以收緊 managed 政策但不能放鬆政策。當未部署管理員層級時無效。預設:`"first-wins"`。需要 Claude Code v2.1.133 或更新版本 | `"merge"` |

245| `permissions` | 請參閱下表以了解權限的結構。 | |283| `permissions` | 請參閱下表以了解權限的結構。 | |

246| `plansDirectory` | 自訂 Plan Mode 檔案的儲存位置。路徑相對於專案根目錄。預設:`~/.claude/plans` | `"./plans"` |284| `plansDirectory` | 自訂 Plan Mode 檔案的儲存位置。路徑相對於專案根目錄。預設:`~/.claude/plans` | `"./plans"` |

247| `pluginSuggestionMarketplaces` | (Managed 設定僅限)其 plugins 可以作為內容相關安裝建議出現的 marketplace 名稱,除了官方 marketplace 。建議來自每個 plugin 在其 marketplace 項目中的 `relevance` 宣告。名稱僅在 marketplace 在機器上註冊且其註冊來源也在 managed 設定中宣告時才生效,作為該名稱的 `extraKnownMarketplaces` 項目或 `strictKnownMarketplaces` 的項目。從不同來源在白名單名稱下註冊的 marketplace 會被忽略。 | `["acme-corp-plugins"]` |285| `pluginSuggestionMarketplaces` | (Managed 設定僅限)其 plugins 可以作為內容相關安裝建議出現的 marketplace 名稱。沒有 marketplace 宣告的建議會出現而不需要此白名單;內建第一方前端設計提示不受影響。建議來自每個 plugin 在其 marketplace 項目中的 `relevance` 宣告。名稱僅在 marketplace 在機器上註冊且其註冊來源也在 managed 設定中宣告時才生效,作為該名稱的 `extraKnownMarketplaces` 項目或 `strictKnownMarketplaces` 的項目。從不同來源在白名單名稱下註冊的 marketplace 會被忽略。官方 marketplace 豁免於來源要求:白名單其名稱就足夠了,因為該名稱只能從官方 Anthropic 來源註冊。 | `["acme-corp-plugins"]` |

248| `pluginTrustMessage` | (Managed 設定僅限)在安裝前顯示的 plugin 信任警告中附加的自訂訊息。使用此選項新增組織特定的內容,例如確認來自您內部 marketplace 的 plugins 已經過審查。 | `"All plugins from our marketplace are approved by IT"` |286| `pluginTrustMessage` | (Managed 設定僅限)在安裝前顯示的 plugin 信任警告中附加的自訂訊息。使用此選項新增組織特定的內容,例如確認來自您內部 marketplace 的 plugins 已經過審查。 | `"All plugins from our marketplace are approved by IT"` |

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"}` |287| `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"}` |

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"` |288| `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"` |

251| `prefersReducedMotion` | 減少或停用 UI 動畫(微調器、閃爍、閃光效果)以提高可訪問性 | `true` |289| `prefersReducedMotion` | 減少或停用 UI 動畫(微調器、閃爍、閃光效果)以提高可訪問性 | `true` |

252| `prUrlTemplate` | PR 徽章的 URL 範本,顯示在頁尾和工具結果摘要中。替換 `gh` 報告的 PR URL 中的 `{host}`、`{owner}`、`{repo}`、`{number}` 和 `{url}`。使用以指向內部程式碼審查工具而不是 `github.com`。不影響 Claude 散文中的 `#123` 自動連結 | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |290| `prUrlTemplate` | PR 徽章的 URL 範本,顯示在頁尾和工具結果摘要中。替換 `gh` 報告的 PR URL 中的 `{host}`、`{owner}`、`{repo}`、`{number}` 和 `{url}`。使用以指向內部程式碼審查工具而不是 `github.com`。不影響 Claude 散文中的 `#123` 自動連結 | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

291| `requiredMaximumVersion` | Managed 設定僅限。允許啟動的最大 Claude Code 版本。如果執行中的版本較新,Claude Code 會在啟動時結束並指示使用者透過組織的核准方法安裝核准的版本;`claude install <version>` 也可能有效。背景自動更新和 `claude update` 會跳過高於上限的版本,因此在範圍內的安裝保持在範圍內。`claude update`、`claude install` 和 `claude doctor` 在上限以上保持工作,以便使用者可以恢復。早於此設定的版本會忽略它 | `"2.1.150"` |

292| `requiredMinimumVersion` | Managed 設定僅限。啟動所需的最小 Claude Code 版本。如果執行中的版本較舊,Claude Code 會在啟動時結束並指示使用者透過組織的核准方法更新。`claude update`、`claude install` 和 `claude doctor` 在底線以下保持工作,以便使用者可以恢復。與 `minimumVersion` 不同,後者防止降級但永遠不會阻止啟動。早於此設定的版本會忽略它 | `"2.1.150"` |

253| `respectGitignore` | 控制 `@` 檔案選擇器是否尊重 `.gitignore` 模式。當為 `true`(預設)時,符合 `.gitignore` 模式的檔案會從建議中排除 | `false` |293| `respectGitignore` | 控制 `@` 檔案選擇器是否尊重 `.gitignore` 模式。當為 `true`(預設)時,符合 `.gitignore` 模式的檔案會從建議中排除 | `false` |

254| `showClearContextOnPlanAccept` | 在 Plan Mode 接受畫面上顯示「清除內容」選項。預設為 `false`。設定為 `true` 以還原選項 | `true` |294| `showClearContextOnPlanAccept` | 在 Plan Mode 接受畫面上顯示「清除內容」選項。預設為 `false`。設定為 `true` 以還原選項 | `true` |

255| `showThinkingSummaries` | 在互動式工作階段中顯示[擴展思考](/zh-TW/model-config#extended-thinking)摘要。未設定或 `false`(互動模式中的預設值)時,思考區塊由 API 編輯並顯示為摺疊的存根。編輯只會改變您看到的內容,而不是模型生成的內容:若要減少思考支出,請[降低預算或停用思考](/zh-TW/model-config#extended-thinking)。此設定在非互動模式(`-p`)、Agent SDK 或 IDE 擴充功能(例如 VS Code)中無效 | `true` |295| `showThinkingSummaries` | 在互動式工作階段中顯示[擴展思考](/zh-TW/model-config#extended-thinking)摘要。未設定或 `false`(互動模式中的預設值)時,思考區塊由 API 編輯並顯示為摺疊的存根。編輯只會改變您看到的內容,而不是模型生成的內容:若要減少思考支出,請[降低預算或停用思考](/zh-TW/model-config#extended-thinking)。此設定在非互動模式(`-p`)、Agent SDK 或 IDE 擴充功能(例如 VS Code)中無效 | `true` |


265| `strictKnownMarketplaces` | (Managed 設定僅限)plugin marketplaces 白名單。未定義 = 無限制,空陣列 = 鎖定。在 marketplace 新增和 plugin 安裝、更新、重新整理和自動更新時強制執行,因此在設定政策之前新增的 marketplace 無法用於擷取 plugins。請參閱 [Managed marketplace 限制](/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |305| `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"]` |306| `strictPluginOnlyCustomization` | (Managed 設定僅限)阻止 skills、agents、hooks 和 MCP servers 來自使用者和專案來源,因此它們只能來自 plugins 或 managed 設定。`true` 鎖定所有四個表面;陣列僅鎖定命名的表面。請參閱 [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |

267| `syntaxHighlightingDisabled` | 停用 diffs、程式碼區塊和檔案預覽中的語法醒目提示 | `true` |307| `syntaxHighlightingDisabled` | 停用 diffs、程式碼區塊和檔案預覽中的語法醒目提示 | `true` |

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"` |308| `teammateMode` | [agent team](/zh-TW/agent-teams) 隊友的顯示方式:`auto`(在 tmux 或 iTerm2 中選擇分割窗格,否則為進程內)、`in-process` 或 `tmux`(使用 tmux 或 iTerm2 選擇分割窗格,從您的終端機偵測)。`--teammate-mode` 會覆蓋此設定以進行一個工作階段。請參閱[選擇顯示模式](/zh-TW/agent-teams#choose-a-display-mode) | `"in-process"` |

269| `terminalProgressBarEnabled` | 在支援的終端機中顯示終端機進度條:ConEmu、Ghostty 1.2.0+ 和 iTerm2 3.6.6+。預設:`true`。在 `/config` 中顯示為**終端機進度條** | `false` |309| `terminalProgressBarEnabled` | 在支援的終端機中顯示終端機進度條:ConEmu、Ghostty 1.2.0+ 和 iTerm2 3.6.6+。預設:`true`。在 `/config` 中顯示為**終端機進度條** | `false` |

270| `tui` | 終端機 UI 渲染器。使用 `"fullscreen"` 以取得無閃爍[替代螢幕渲染器](/zh-TW/fullscreen)具有虛擬化捲軸。使用 `"default"` 以取得經典主螢幕渲染器。透過 `/tui` 設定您也可以設定 [`CLAUDE_CODE_NO_FLICKER`](/zh-TW/env-vars) 環境變數 | `"fullscreen"` |310| `theme` | {/* min-version: 2.1.119 */}介面的色彩主題:`"auto"`、`"dark"`、`"light"`、`"dark-daltonized"`、`"light-daltonized"`、`"dark-ansi"`、`"light-ansi"` 或自訂主題參考例如 `"custom:<slug>"` `"custom:<plugin-name>:<slug>"`。預設:`"dark"`。請參閱[建立自訂主題](/zh-TW/terminal-config#create-a-custom-theme)。在 `/config` 中顯示為**主題** | `"dark"` |

311| `tui` | 終端機 UI 渲染器。使用 `"fullscreen"` 以取得無閃爍[替代螢幕渲染器](/zh-TW/fullscreen),具有虛擬化捲軸。使用 `"default"` 以取得經典主螢幕渲染器。透過 `/tui` 設定。您也可以設定 [`CLAUDE_CODE_NO_FLICKER`](/zh-TW/env-vars) 環境變數。背景工作階段從[代理檢視](/zh-TW/agent-view)開啟時,無論此設定如何,始終使用全螢幕渲染器 | `"fullscreen"` |

271| `ultracode` | 為工作階段開啟 [ultracode](/zh-TW/workflows#let-claude-decide-with-ultracode)。僅限工作階段,不從 `settings.json` 讀取。透過 `/effort ultracode`、`--settings` 或 Agent SDK 控制請求設定 | `true` |312| `ultracode` | 為工作階段開啟 [ultracode](/zh-TW/workflows#let-claude-decide-with-ultracode)。僅限工作階段,不從 `settings.json` 讀取。透過 `/effort ultracode`、`--settings` 或 Agent SDK 控制請求設定 | `true` |

272| `useAutoModeDuringPlan` | Plan Mode 在自動模式可用時是否使用自動模式語義。預設:`true`。不從共享專案設定讀取。在 `/config` 中顯示為「在計畫期間使用自動模式」 | `false` |313| `useAutoModeDuringPlan` | Plan Mode 在自動模式可用時是否使用自動模式語義。預設:`true`。不從共享專案設定讀取。在 `/config` 中顯示為「在計畫期間使用自動模式」 | `false` |

314| `verbose` | {/* min-version: 2.1.119 */}顯示完整工具輸出而不是截斷摘要。預設:`false`。在 `/config` 中顯示為**詳細輸出**。`--verbose` 旗標會覆蓋此設定以進行一個工作階段 | `true` |

273| `viewMode` | 啟動時的預設文字記錄檢視模式:`"default"`、`"verbose"` 或 `"focus"`。設定時覆蓋粘性 `/focus` 選擇。`--verbose` 旗標會覆蓋此設定以進行一個工作階段 | `"verbose"` |315| `viewMode` | 啟動時的預設文字記錄檢視模式:`"default"`、`"verbose"` 或 `"focus"`。設定時覆蓋粘性 `/focus` 選擇。`--verbose` 旗標會覆蓋此設定以進行一個工作階段 | `"verbose"` |

274| `voice` | [語音聽寫](/zh-TW/voice-dictation)設定:`enabled` 開啟聽寫,`mode` 選擇 `"hold"` 或 `"tap"`,`autoSubmit` 在保持模式中按鍵釋放時傳送提示。當您執行 `/voice` 時自動寫入。需要 Claude.ai 帳戶 | `{ "enabled": true, "mode": "tap" }` |316| `voice` | [語音聽寫](/zh-TW/voice-dictation)設定:`enabled` 開啟聽寫,`mode` 選擇 `"hold"` 或 `"tap"`,`autoSubmit` 在保持模式中按鍵釋放時傳送提示。當您執行 `/voice` 時自動寫入。需要 Claude.ai 帳戶 | `{ "enabled": true, "mode": "tap" }` |

275| `voiceEnabled` | `voice.enabled` 的舊版別名。偏好 `voice` 物件 | `true` |317| `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` |318| `wheelScrollAccelerationEnabled` | {/* min-version: 2.1.174 */}[全螢幕渲染](/zh-TW/fullscreen#mouse-wheel-scrolling)中,加速滑鼠滾輪捲軸速度在快速捲軸期間。預設:`true`。設定為 `false` 以取得每個滾輪缺口的恆定捲軸速率。需要 Claude Code v2.1.174 或更新版本 | `false` |

319| `workflowKeywordTriggerEnabled` | {/* min-version: 2.1.157 */}提示中的單詞 `ultracode` 是否觸發[動態工作流程](/zh-TW/workflows#ask-for-a-workflow-in-your-prompt)。設定為 `false` 以輸入單詞而不觸發一個。Ultracode 努力設定、`/workflows` 和儲存的工作流程命令不受影響。預設:`true`。在 `/config` 中顯示為**Ultracode 關鍵字觸發**。在 v2.1.160 之前,觸發關鍵字是 `workflow` | `false` |

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` |320| `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` |

278 321 

279<h3 id="global-config-settings">322<h3 id="global-config-settings">


283這些設定儲存在 `~/.claude.json` 中,而不是 `settings.json`。將它們新增到 `settings.json` 將觸發架構驗證錯誤。326這些設定儲存在 `~/.claude.json` 中,而不是 `settings.json`。將它們新增到 `settings.json` 將觸發架構驗證錯誤。

284 327 

285<Note>328<Note>

286 v2.1.119 之前的版本也會在此處儲存 `autoScrollEnabled`、`editorMode`、`showTurnDuration`、`teammateMode` 和 `terminalProgressBarEnabled`,而不是在 `settings.json`329 v2.1.119 之前的版本也會在此處儲存許多 `/config` 偏好金鑰,而不是在 `settings.json` 中,包括 `theme`、`verbose`、`editorMode`、`autoCompactEnabled` 和 `preferredNotifChannel`。

287</Note>330</Note>

288 331 

289| 金鑰 | 說明 | 範例 |332| 金鑰 | 說明 | 範例 |


314 357 

315| 金鑰 | 說明 | 範例 |358| 金鑰 | 說明 | 範例 |

316| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------- |359| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------- |

317| `allow` | 允許工具使用的權限規則陣列。請參閱下面的[權限規則語法](#permission-rule-syntax)以了解模式匹配詳細資訊 | `[ "Bash(git diff *)" ]` |360| `allow` | 允許工具使用的權限規則陣列。工具名稱 globs 僅在字面 `mcp__<server>__` 前綴之後的工具位置支援,例如 `mcp__github__get_*`;server 段必須無 glob。請參閱下面的[權限規則語法](#permission-rule-syntax)以了解模式匹配詳細資訊 | `[ "Bash(git diff *)" ]` |

318| `ask` | 要求在工具使用時確認的權限規則陣列。請參閱下面的[權限規則語法](#permission-rule-syntax) | `[ "Bash(git push *)" ]` |361| `ask` | 要求在工具使用時確認的權限規則陣列。請參閱下面的[權限規則語法](#permission-rule-syntax) | `[ "Bash(git push *)" ]` |

319| `deny` | 拒絕工具使用的權限規則陣列。使用此選項從 Claude Code 存取中排除敏感檔案。請參閱[權限規則語法](#permission-rule-syntax)和 [Bash 權限限制](/zh-TW/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |362| `deny` | 拒絕工具使用的權限規則陣列。使用此選項從 Claude Code 存取中排除敏感檔案。工具名稱接受 glob 模式:`"*"` 拒絕每個工具,`"mcp__*"` 拒絕所有 MCP 工具。請參閱[權限規則語法](#permission-rule-syntax)和 [Bash 權限限制](/zh-TW/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

320| `additionalDirectories` | Claude 有權存取的其他[工作目錄](/zh-TW/permissions#working-directories)。大多數 `.claude/` 設定[未從這些目錄發現](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration) | `[ "../docs/" ]` |363| `additionalDirectories` | Claude 有權存取的其他[工作目錄](/zh-TW/permissions#working-directories)。大多數 `.claude/` 設定[未從這些目錄發現](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration) | `[ "../docs/" ]` |

321| `defaultMode` | 開啟 Claude Code 時的預設[權限模式](/zh-TW/permission-modes)。有效值:`default`、`acceptEdits`、`plan`、`auto`、`dontAsk`、`bypassPermissions`。{/* min-version: 2.1.142 */}自 Claude Code v2.1.142 起,當在專案或本機設定(`.claude/settings.json`、`.claude/settings.local.json`)中設定時,`auto` 會被忽略,因此儲存庫無法授予自己自動模式。改為在 `~/.claude/settings.json` 中設定它。`--permission-mode` CLI 旗標會覆蓋此設定以進行單一工作階段 | `"acceptEdits"` |364| `defaultMode` | 開啟 Claude Code 時的預設[權限模式](/zh-TW/permission-modes)。有效值:`default`、`acceptEdits`、`plan`、`auto`、`dontAsk`、`bypassPermissions`。{/* min-version: 2.1.142 */}自 Claude Code v2.1.142 起,當在專案或本機設定(`.claude/settings.json`、`.claude/settings.local.json`)中設定時,`auto` 會被忽略,因此儲存庫無法授予自己自動模式。改為在 `~/.claude/settings.json` 中設定它。`--permission-mode` CLI 旗標會覆蓋此設定以進行單一工作階段 | `"acceptEdits"` |

322| `disableBypassPermissionsMode` | 設定為 `"disable"` 以防止啟用 `bypassPermissions` 模式。這會停用 `--dangerously-skip-permissions` 旗標。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |365| `disableBypassPermissionsMode` | 設定為 `"disable"` 以防止啟用 `bypassPermissions` 模式。這會停用 `--dangerously-skip-permissions` 旗標。在[managed 設定](/zh-TW/permissions#managed-settings)中最有用,使用者無法覆蓋它 | `"disable"` |


326 權限規則語法369 權限規則語法

327</h3>370</h3>

328 371 

329權限規則遵循 `Tool` 或 `Tool(specifier)` 的格式。規則按順序評估:首先是拒絕規則,然後是詢問,最後是允許。第一個匹配的規則獲勝372權限規則遵循 `Tool` 或 `Tool(specifier)` 的格式。規則按順序評估:首先是拒絕規則,然後是詢問,最後是允許。第一個匹配的規則決定結果,無論規則特異性如何請參閱[權限規則評估順序](/zh-TW/permissions#manage-permissions)以了解詳細資訊。

330 373 

331快速範例:374快速範例:

332 375 


431**預設提交歸屬:**474**預設提交歸屬:**

432 475 

433```text theme={null}476```text theme={null}

434🤖 Generated with [Claude Code](https://claude.com/claude-code)477Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

435 

436 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

437```478```

438 479 

480模型名稱在 trailer 中反映工作階段的使用中模型。

481 

439**預設拉取請求歸屬:**482**預設拉取請求歸屬:**

440 483 

441```text theme={null}484```text theme={null}


491```bash theme={null}534```bash theme={null}

492#!/bin/bash535#!/bin/bash

493query=$(cat | jq -r '.query')536query=$(cat | jq -r '.query')

537# 用您自己的檔案搜尋命令替換 your-repo-file-index

494your-repo-file-index --query "$query" | head -20538your-repo-file-index --query "$query" | head -20

495```539```

496 540 

541<h3 id="footer-link-badges">

542 頁尾連結徽章

543</h3>

544 

545`footerLinksRegexes` 設定在輸入框下方的頁尾中渲染額外的可點擊徽章。使用它將專案 CLI 列印的 ID(例如審查工具和問題追蹤器)轉換為工作階段連結。

546 

547每個項目的 `pattern` regex 與輪次輸出相符:工具結果,包括檔案內容和擷取的頁面,以及 Claude 自己的回應。`url` 和 `label` 中的 `{name}` 佔位符從模式中的命名擷取群組填入。

548 

549以下範例在問題金鑰(如 `PROJ-1234`)出現在輪次輸出中時渲染徽章。`(?<key>...)` 命名群組擷取金鑰,`{key}` 將其替換到 URL 和標籤中:

550 

551```json ~/.claude/settings.json theme={null}

552{

553 "footerLinksRegexes": [

554 {

555 "type": "regex",

556 "pattern": "\\b(?<key>PROJ-\\d+)\\b",

557 "url": "https://issues.example.com/browse/{key}",

558 "label": "{key}"

559 }

560 ]

561}

562```

563 

564設定此項後,當 `PROJ-1234` 出現在工具結果或 Claude 的回覆中時,`PROJ-1234` 晶片會出現在頁尾中,連結到 `https://issues.example.com/browse/PROJ-1234`。

565 

566以下限制適用於每個項目:

567 

568| 限制 | 行為 |

569| :----- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

570| URL 來源 | 擷取的值是 URL 編碼的,構造的 URL 必須共享範本的字面來源。擷取可以填入路徑段或查詢值,但無法改變連結指向的位置 |

571| URL 長度 | 超過 2048 個字元的構造 URL 會被丟棄 |

572| URL 方案 | 必須是 `https`、`http` 或公認的編輯器或工作區深層連結方案:`vscode`、`vscode-insiders`、`cursor`、`windsurf`、`zed`、`jetbrains`、`idea`、`slack`、`linear`、`notion`、`figma` |

573| 標籤 | 預設為符合的文字,截斷為 28 個顯示欄 |

574| 徽章計數 | 最多 5 個徽章渲染。最舊的被較新的符合所取代,`/clear` 會移除它們 |

575| 設定範圍 | 僅從使用者設定、`--settings` 旗標和 managed 設定讀取。在專案 `.claude/settings.json` 和本機 `.claude/settings.local.json` 中被忽略 |

576 

577輪次完成時,Claude Code 在主執行緒上將每個項目的 `pattern` regex 與輪次輸出相符,因此緩慢的 regex 會阻止 UI,直到完成。嵌套量詞(例如 `(a+)+$`)可能針對某些輸入花費指數級長時間並凍結工作階段,因此保持每個 `pattern` 線性並避免嵌套 `+` 或 `*`。

578 

579頁尾徽章與[自訂狀態行](/zh-TW/statusline)並排渲染(當設定一個時);兩者都不替換另一個。使用狀態行用於從工作階段資料計算自己內容的指令碼驅動列,使用頁尾徽章將對話中的 ID 轉換為連結,而無需指令碼。

580 

497<h3 id="hook-configuration">581<h3 id="hook-configuration">

498 Hook 設定582 Hook 設定

499</h3>583</h3>


580 664 

581此階層確保組織政策始終被強制執行,同時仍允許團隊和個人自訂其體驗。無論您從 CLI、[VS Code 擴充功能](/zh-TW/vs-code)或 [JetBrains IDE](/zh-TW/jetbrains) 執行 Claude Code,相同的優先順序都適用。665此階層確保組織政策始終被強制執行,同時仍允許團隊和個人自訂其體驗。無論您從 CLI、[VS Code 擴充功能](/zh-TW/vs-code)或 [JetBrains IDE](/zh-TW/jetbrains) 執行 Claude Code,相同的優先順序都適用。

582 666 

583例如,如果您的使用者設定允許 `Bash(npm run *)`,但專案的共享設定拒絕它則專案設定優先命令被阻止667例如,如果您的使用者設定將 `permissions.defaultMode` 設定為 `acceptEdits`而專案的共享設定將其設定為 `default`則專案值適用下面的範例涵蓋陣列值設定(如權限規則)如何組合的方式。

584 668 

585<Note>669<Note>

586 **陣列設定跨範圍合併。** 當相同的陣列值設定(例如 `sandbox.filesystem.allowWrite` 或 `permissions.allow`)出現在多個範圍中時,陣列會**連接和去重**,而不是替換。這意味著較低優先順序的範圍可以新增項目而不覆蓋由較高優先順序範圍設定的項目,反之亦然。例如,如果 managed 設定將 `allowWrite` 設定為 `["/opt/company-tools"]`,使用者新增 `["~/.kube"]`,則最終設定中包含兩個路徑。670 **陣列設定跨範圍合併。** 當相同的陣列值設定(例如 `sandbox.filesystem.allowWrite` 或 `permissions.allow`)出現在多個範圍中時,陣列會**連接和去重**,而不是替換。這意味著較低優先順序的範圍可以新增項目而不覆蓋由較高優先順序範圍設定的項目,反之亦然。例如,如果 managed 設定將 `allowWrite` 設定為 `["/opt/company-tools"]`,使用者新增 `["~/.kube"]`,則最終設定中包含兩個路徑。唯一的例外是 [`fallbackModel`](#available-settings),一個有序鏈,其中位置具有意義:定義它的最高優先順序檔案提供整個值,以及 {/* min-version: 2.1.175 */}自 v2.1.175 起,[`availableModels`](#available-settings),其中 managed 或政策值完全替換較低優先順序項目。請參閱[合併行為](/zh-TW/model-config#merge-behavior)。

587</Note>671</Note>

588 672 

589<h3 id="verify-active-settings">673<h3 id="verify-active-settings">

590 驗證使用中的設定674 驗證使用中的設定

591</h3>675</h3>

592 676 

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)`。只有當該來源至少載入一個金鑰時,層級才會出現在清單中,因此空清單表示未找到任何設定來源。677在 Claude Code 內執行 `/status` 以查看哪些設定來源是使用中的在功能表內,**Status** 標籤包含 `Setting sources` 行,列出 Claude Code 為目前工作階段載入的每一層,例如 `User settings` 或 `Project local settings`。當[managed 設定](/zh-TW/admin-setup#decide-how-settings-reach-devices)生效時,項目會在括號中顯示傳遞頻道,例如 `Enterprise managed settings (remote)`、`(plist)`、`(HKLM)`、`(HKCU)` 或 `(file)`。層級僅在該來源以至少一個金鑰載入時才出現在清單中,因此空清單表示未找到任何設定來源。

594 678 

595`Setting sources` 行確認正在讀取哪些來源。它不顯示哪一層提供了每個個別金鑰。同一對話框中的 Config 標籤是固定切換集(例如主題和詳細輸出)的編輯器,而不是您 `settings.json` 內容的檢視。如果設定檔案包含錯誤(例如無效的 JSON 或驗證失敗的值),`/status` 會報告問題,以便您可以修復它。679`Setting sources` 行確認正在讀取哪些來源。它不顯示哪一層提供了每個個別金鑰。同一對話框中的 **Config** 標籤是固定切換集(例如主題和詳細輸出)的編輯器,而不是您 `settings.json` 內容的檢視。

680 

681如果設定檔案包含錯誤(例如無效的 JSON 或驗證失敗的值),Claude Code 會在啟動時顯示設定問題通知,`/status` 會列出受影響的檔案。執行 `/doctor` 以查看每個錯誤的詳細資訊。

596 682 

597<h3 id="key-points-about-the-configuration-system">683<h3 id="key-points-about-the-configuration-system">

598 設定系統的關鍵要點684 設定系統的關鍵要點


603* **Skills**:可以使用 `/skill-name` 叫用或由 Claude 自動載入的自訂提示689* **Skills**:可以使用 `/skill-name` 叫用或由 Claude 自動載入的自訂提示

604* **MCP servers**:使用其他工具和整合擴展 Claude Code690* **MCP servers**:使用其他工具和整合擴展 Claude Code

605* **優先順序**:較高層級的設定(Managed)覆蓋較低層級的設定(User/Project)691* **優先順序**:較高層級的設定(Managed)覆蓋較低層級的設定(User/Project)

606* **繼承**:設定會合併更具體的設定新增到或覆蓋更廣泛的設定692* **繼承**:設定會合併跨範圍;較高優先順序範圍中的純量值覆蓋陣列連接。例外:`fallbackModel`,其中最高優先順序範圍提供整個鏈,以及 `availableModels`,其中 managed 或政策值替換較低優先順序項目

607 693 

608<h3 id="system-prompt">694<h3 id="system-prompt">

609 系統提示695 系統提示


645Subagent 檔案定義具有自訂提示和工具權限的專門 AI 助手。在 [subagents 文件](/zh-TW/sub-agents)中深入了解建立和使用 subagents。731Subagent 檔案定義具有自訂提示和工具權限的專門 AI 助手。在 [subagents 文件](/zh-TW/sub-agents)中深入了解建立和使用 subagents。

646 732 

647<h2 id="plugin-configuration">733<h2 id="plugin-configuration">

648 Plugin 設定734 Plugin 配置

649</h2>735</h2>

650 736 

651Claude Code 支援 plugin 系統,可讓您使用 skills、agents、hooks 和 MCP servers 擴展功能。Plugins 透過 marketplaces 分發,可以在使用者和儲存庫層級設定。737Claude Code 支援 plugin 系統,可讓您使用 skills、agents、hooks 和 MCP servers 擴展功能。Plugins 透過 marketplaces 分發,可以在使用者和儲存庫層級設定。


684 770 

685* **使用者設定**(`~/.claude/settings.json`):個人 plugin 偏好設定771* **使用者設定**(`~/.claude/settings.json`):個人 plugin 偏好設定

686* **專案設定**(`.claude/settings.json`):與團隊共享的專案特定 plugins772* **專案設定**(`.claude/settings.json`):與團隊共享的專案特定 plugins

687* **本機設定**(`.claude/settings.local.json`):每台機器的覆蓋(未提交)773* **本機設定**(`.claude/settings.local.json`):每台機器的覆蓋,Claude Code 建立時會被 gitignored

688* **Managed 設定**(`managed-settings.json`):組織範圍的政策覆蓋,在所有範圍阻止安裝並從 marketplace 隱藏 plugin774* **Managed 設定**(`managed-settings.json`):組織範圍的政策覆蓋,在所有範圍阻止安裝並從 marketplace 隱藏 plugin

689 775 

690<Note>776<Note>

setup.md +26 −4

Details

258 258 

259在[受管設定](/zh-TW/permissions#managed-settings)中,這會強制執行使用者和專案設定無法覆蓋的組織範圍最低版本。259在[受管設定](/zh-TW/permissions#managed-settings)中,這會強制執行使用者和專案設定無法覆蓋的組織範圍最低版本。

260 260 

261`minimumVersion` 固定只會限制更新。若要讓 Claude Code 拒絕在版本範圍外啟動,請改為使用受管設定 `requiredMinimumVersion` 和 `requiredMaximumVersion`。更新也會遵守 `requiredMaximumVersion` 上限。請參閱[可用設定](/zh-TW/settings#available-settings)。

262 

261<h3 id="disable-auto-updates">263<h3 id="disable-auto-updates">

262 停用自動更新264 停用自動更新

263</h3>265</h3>


366 使用 Linux 套件管理員安裝368 使用 Linux 套件管理員安裝

367</h3>369</h3>

368 370 

369Claude Code 發佈已簽署的 apt、dnf 和 apk 儲存庫。 `stable` 替換為 `latest` 以使用滾動通道。套件管理員安裝不會透過 Claude Code 自動更新;更新會透過您的正常系統升級工作流程進行。371Claude Code 發佈已簽署的 apt、dnf 和 apk 儲存庫。每個儲存庫提供兩個通道:`stable` 提供通常約一週前的版本,跳過有重大迴歸的發佈,而 `latest` 在每個發佈發行時立即提供。下面的命令配置 `stable` 通道,適合大多數使用者;每個標籤也顯示 `latest` 儲存庫 URL。套件管理員安裝不會透過 Claude Code 自動更新;更新會透過您的正常系統升級工作流程進行。

370 372 

371所有儲存庫都使用 [Claude Code 發佈簽署金鑰](#binary-integrity-and-code-signing)簽署。在信任金鑰之前,請按照每個標籤中的說明驗證它。373所有儲存庫都使用 [Claude Code 發佈簽署金鑰](#binary-integrity-and-code-signing)簽署。在信任金鑰之前,請按照每個標籤中的說明驗證它。

372 374 

373<Tabs>375<Tabs>

374 <Tab title="apt">376 <Tab title="apt">

375 適用於 Debian 和 Ubuntu。若要使用滾動通道,請變更 `deb` 行中的兩個 `stable` 出現次數URL 路徑和套件組合名稱。377 適用於 Debian 和 Ubuntu。下列命令配置 `stable` 通道

376 378 

377 ```bash theme={null}379 ```bash theme={null}

378 sudo install -d -m 0755 /etc/apt/keyrings380 sudo install -d -m 0755 /etc/apt/keyrings


384 sudo apt install claude-code386 sudo apt install claude-code

385 ```387 ```

386 388 

389 若要改用 `latest` 通道,URL 路徑和套件組合名稱都會變更。使用此 `deb` 行:

390 

391 ```bash theme={null}

392 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/latest latest main" \

393 | sudo tee /etc/apt/sources.list.d/claude-code.list

394 ```

395 

387 在信任之前驗證 GPG 金鑰指紋:`gpg --show-keys /etc/apt/keyrings/claude-code.asc` 應該報告 `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`。396 在信任之前驗證 GPG 金鑰指紋:`gpg --show-keys /etc/apt/keyrings/claude-code.asc` 應該報告 `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`。

388 397 

389 若要稍後升級,請執行 `sudo apt update && sudo apt upgrade claude-code`。398 若要稍後升級,請執行 `sudo apt update && sudo apt upgrade claude-code`。

390 </Tab>399 </Tab>

391 400 

392 <Tab title="dnf">401 <Tab title="dnf">

393 適用於 Fedora 和 RHEL:402 適用於 Fedora 和 RHEL。下列命令配置 `stable` 通道

394 403 

395 ```bash theme={null}404 ```bash theme={null}

396 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'405 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'


404 sudo dnf install claude-code413 sudo dnf install claude-code

405 ```414 ```

406 415 

416 若要改用 `latest` 通道,將 `baseurl` 設定為 `latest` 儲存庫:

417 

418 ```ini theme={null}

419 baseurl=https://downloads.claude.ai/claude-code/rpm/latest

420 ```

421 

407 dnf 在首次安裝時下載金鑰,並提示您確認指紋。在接受之前驗證它是否與 `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` 相符。422 dnf 在首次安裝時下載金鑰,並提示您確認指紋。在接受之前驗證它是否與 `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` 相符。

408 423 

409 若要稍後升級,請執行 `sudo dnf upgrade claude-code`。424 若要稍後升級,請執行 `sudo dnf upgrade claude-code`。

410 </Tab>425 </Tab>

411 426 

412 <Tab title="apk">427 <Tab title="apk">

413 適用於 Alpine Linux:428 適用於 Alpine Linux。下列命令配置 `stable` 通道

414 429 

415 ```sh theme={null}430 ```sh theme={null}

416 wget -O /etc/apk/keys/claude-code.rsa.pub \431 wget -O /etc/apk/keys/claude-code.rsa.pub \


419 apk add claude-code434 apk add claude-code

420 ```435 ```

421 436 

437 若要切換至 `latest` 通道,移除 `stable` 儲存庫行並新增 `latest` 儲存庫:

438 

439 ```sh theme={null}

440 sed -i '\|downloads.claude.ai/claude-code/apk/stable|d' /etc/apk/repositories

441 echo "https://downloads.claude.ai/claude-code/apk/latest" >> /etc/apk/repositories

442 ```

443 

422 使用 `sha256sum /etc/apk/keys/claude-code.rsa.pub` 驗證下載的金鑰,應該報告 `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`。444 使用 `sha256sum /etc/apk/keys/claude-code.rsa.pub` 驗證下載的金鑰,應該報告 `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`。

423 445 

424 若要稍後升級,請執行 `apk update && apk upgrade claude-code`。446 若要稍後升級,請執行 `apk update && apk upgrade claude-code`。

skills.md +19 −6

Details

22 捆綁的 skills22 捆綁的 skills

23</h2>23</h2>

24 24 

25Claude Code 包含一組捆綁的 skills,在每個工作階段中都可用,包括 `/code-review`、`/batch`、`/debug`、`/loop` 和 `/claude-api`。與大多數內建命令不同,內建命令直接執行固定邏輯,捆綁的 skills 是基於提示的:它們為 Claude 提供詳細的劇本,並讓它使用其工具來協調工作。您叫用它們的方式與任何其他 skill 相同,輸入 `/` 後跟 skill 名稱。25Claude Code 包含一組捆綁的 skills,在每個工作階段中都可用,除非使用 [`disableBundledSkills`](/zh-TW/settings#available-settings) 設定停用,包括 `/code-review`、`/batch`、`/debug`、`/loop` 和 `/claude-api`。與大多數內建命令不同,內建命令直接執行固定邏輯,捆綁的 skills 是基於提示的:它們為 Claude 提供詳細的劇本,並讓它使用其工具來協調工作。您叫用它們的方式與任何其他 skill 相同,輸入 `/` 後跟 skill 名稱。

26 26 

27捆綁的 skills 在[命令參考](/zh-TW/commands)中與內建命令一起列出,在「目的」欄中標記為 **Skill**。27捆綁的 skills 在[命令參考](/zh-TW/commands)中與內建命令一起列出,在「目的」欄中標記為 **Skill**。

28 28 


117| 專案 | `.claude/skills/<skill-name>/SKILL.md` | 僅此專案 |117| 專案 | `.claude/skills/<skill-name>/SKILL.md` | 僅此專案 |

118| 外掛 | `<plugin>/skills/<skill-name>/SKILL.md` | 啟用外掛的位置 |118| 外掛 | `<plugin>/skills/<skill-name>/SKILL.md` | 啟用外掛的位置 |

119 119 

120當 skills 在各個層級共享相同名稱時,企業會覆蓋個人,個人會覆蓋專案。外掛 skills 使用 `plugin-name:skill-name` 命名空間,因此它們不能與其他層級衝突。如果您在 `.claude/commands/` 中有檔案,它們的運作方式相同,但如果 skill 和命令共享相同名稱,skill 優先。120當 skills 在各個層級共享相同名稱時,企業會覆蓋個人,個人會覆蓋專案。skill 在任何這些層級也會覆蓋具有相同名稱的捆綁 skill。例如,您專案的 `.claude/skills/` 中的 `code-review` skill 會取代捆綁的 `/code-review`。外掛 skills 使用 `plugin-name:skill-name` 命名空間,因此它們不能與其他層級衝突。如果您在 `.claude/commands/` 中有檔案,它們的運作方式相同,但如果 skill 和命令共享相同名稱,skill 優先。

121 

122Skills 也會從您工作目錄下方的巢狀 `.claude/skills/` 目錄載入。當 Claude 讀取或編輯子目錄中的檔案時,該子目錄的 `.claude/skills/` 中的 skills 會變成可用。這讓 monorepo 套件提供自己的 skills,在處理該套件時適用,即使工作階段從儲存庫根目錄開始。

123 

124如果巢狀 skill 與另一個 skill 共享名稱,兩者都保持可用。例如,在專案根目錄和 `apps/web/.claude/skills/` 中都有 `deploy` skill:

125 

126* 巢狀的一個出現在目錄限定的名稱下,`apps/web:deploy`。

127* 其描述說明它適用於哪個目錄。

128* Claude 選擇與它正在處理的檔案相符的變體。

129 

130輸入 `/deploy` 執行專案根目錄 skill。輸入限定名稱 `/apps/web:deploy` 以明確執行巢狀變體。

121 131 

122<Note>132<Note>

123 將 `.claude-plugin/plugin.json` 新增到 skill 資料夾,它會載入為名為 `<name>@skills-dir` 的[外掛](/zh-TW/plugins-reference#skills-directory-plugins),因此它可以捆綁代理、hooks 和 MCP 伺服器。在專案的 `.claude/skills/` 中,這需要先接受工作區信任對話。133 將 `.claude-plugin/plugin.json` 新增到 skill 資料夾,它會載入為名為 `<name>@skills-dir` 的[外掛](/zh-TW/plugins-reference#skills-directory-plugins),因此它可以捆綁代理、hooks 和 MCP 伺服器。在專案的 `.claude/skills/` 中,這需要先接受工作區信任對話。


262下表顯示每個配置的命令名稱來自何處:272下表顯示每個配置的命令名稱來自何處:

263 273 

264| Skill 位置 | 命令名稱來源 | 範例 |274| Skill 位置 | 命令名稱來源 | 範例 |

265| :-------------------------------------------------- | :----------------------------- | :--------------------------------------------------------------------------------------------------------------------- |275| :-------------------------------------------------------------- | :----------------------------- | :--------------------------------------------------------------------------------------------------------------------- |

266| `~/.claude/skills/` 或 `.claude/skills/` 下的 Skill 目錄 | 目錄名稱 | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |276| `~/.claude/skills/` 或 `.claude/skills/` 下的 Skill 目錄 | 目錄名稱 | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

277| [巢狀](#where-skills-live) `.claude/skills/` 目錄,當名稱與另一個 skill 衝突時 | 相對於工作目錄的子目錄路徑,然後是 skill 目錄名稱 | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

267| `.claude/commands/` 下的檔案 | 檔案名稱(不含副檔名) | `.claude/commands/deploy.md` → `/deploy` |278| `.claude/commands/` 下的檔案 | 檔案名稱(不含副檔名) | `.claude/commands/deploy.md` → `/deploy` |

268| 外掛 `skills/` 子目錄 | 目錄名稱,由外掛命名空間 | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review` |279| 外掛 `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) |280| 外掛根目錄 `SKILL.md` | Frontmatter `name`,以外掛目錄名稱作為後備 | `my-plugin/SKILL.md` 搭配 `name: review` → `/my-plugin:review`。請參閱[路徑行為規則](/zh-TW/plugins-reference#path-behavior-rules) |


288 299 

289索引引數使用 shell 風格的引用,因此將多字值包裝在引號中以將其作為單個引數傳遞。例如,`/my-skill "hello world" second` 使 `$0` 擴展為 `hello world`,`$1` 擴展為 `second`。`$ARGUMENTS` 預留位置始終擴展為輸入的完整引數字串。300索引引數使用 shell 風格的引用,因此將多字值包裝在引號中以將其作為單個引數傳遞。例如,`/my-skill "hello world" second` 使 `$0` 擴展為 `hello world`,`$1` 擴展為 `second`。`$ARGUMENTS` 預留位置始終擴展為輸入的完整引數字串。

290 301 

302若要在數字、`ARGUMENTS` 或宣告的引數名稱之前包含字面 `$`,例如散文中的 `$1.00`,請使用反斜線逸出它:`\$1.00`。反斜線在任何其他 `$` 之前保持不變。只有直接在令牌之前的單個反斜線才能逸出它。雙反斜線(例如 `\\$1`)會保留兩個反斜線,`$1` 仍然擴展為引數值。

303 

291**使用替換的範例:**304**使用替換的範例:**

292 305 

293```yaml theme={null}306```yaml theme={null}


395---408---

396```409```

397 410 

398若要阻止 skill 使用某些工具,請在您的[許可設定](/zh-TW/permissions)中新增拒絕規則。411若要在 skill 處於作用中時從 Claude 的可用工具池中移除工具請在 skill 的 frontmatter 中的 `disallowed-tools` 中列出它們。限制在您傳送下一則訊息時清除。若要在所有 skills 和提示中阻止工具,請在您的[許可設定](/zh-TW/permissions)中新增拒絕規則。

399 412 

400<h3 id="pass-arguments-to-skills">413<h3 id="pass-arguments-to-skills">

401 將引數傳遞給 skills414 將引數傳遞給 skills


557 570 

558`agent` 欄位指定要使用的 subagent 設定。選項包括內建代理(`Explore`、`Plan`、`general-purpose`)或來自 `.claude/agents/` 的任何自訂 subagent。如果省略,使用 `general-purpose`。571`agent` 欄位指定要使用的 subagent 設定。選項包括內建代理(`Explore`、`Plan`、`general-purpose`)或來自 `.claude/agents/` 的任何自訂 subagent。如果省略,使用 `general-purpose`。

559 572 

560<h3 id="restrict-claude-s-skill-access">573<h3 id="restrict-claudes-skill-access">

561 限制 Claude 的 skill 存取574 限制 Claude 的 skill 存取

562</h3>575</h3>

563 576 


850 Skill 描述被截斷863 Skill 描述被截斷

851</h3>864</h3>

852 865 

853Skill 描述會載入上下文,以便 Claude 知道可用的內容。所有 skill 名稱始終包含在內,但如果您有許多 skills,描述會被縮短以適應字元預算,這可能會去除 Claude 需要匹配您的請求的關鍵字。預算在模型上下文視窗的 1% 處動態縮放。當預算溢出時,您最少叫用的 skills 的描述會首先被捨棄,因此您實際使用的 skills 會保留其完整文字。執行 `/doctor` 以查看預算是否溢出以及哪些 skills 受到影響。866Skill 描述會載入上下文,以便 Claude 知道可用的內容。所有 skill 名稱始終包含在內,但如果您有許多 skills,描述會被縮短以適應字元預算,這可能會去除 Claude 需要匹配您的請求的關鍵字。預算在模型上下文視窗的 1% 處動態縮放。當預算溢出時,您最少叫用的 skills 的描述會首先被捨棄,因此您實際使用的 skills 會保留其完整文字。執行 `/doctor` 以查看有多少 skill 描述被縮短或捨棄,以及哪些 skills 受到影響。

854 867 

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) 進行設定。868若要提高預算,請設定 [`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) 進行設定。

856 869 

slack.md +3 −3

Details

50 4. 在您的瀏覽器中完成驗證流程50 4. 在您的瀏覽器中完成驗證流程

51 </Step>51 </Step>

52 52 

53 <Step title="配置網路上的 Claude Code">53 <Step title="在網路上配置 Claude Code">

54 確保您的網路上的 Claude Code 已正確配置:54 確保您在網路上的 Claude Code 已正確配置:

55 55 

56 * 訪問 [claude.ai/code](https://claude.ai/code) 並使用您連接到 Slack 的同一帳戶登入56 * 訪問 [claude.ai/code](https://claude.ai/code) 並使用您連接到 Slack 的同一帳戶登入

57 * 如果尚未連接,請連接您的 GitHub 帳戶57 * 如果尚未連接,請連接您的 GitHub 帳戶


182 182 

183此基於頻道的模型允許團隊將 Claude Code 使用限制在特定頻道,提供了超越工作區級別權限的額外存取控制層。183此基於頻道的模型允許團隊將 Claude Code 使用限制在特定頻道,提供了超越工作區級別權限的額外存取控制層。

184 184 

185<h2 id="what-s-accessible-where">185<h2 id="whats-accessible-where">

186 在何處可以存取什麼186 在何處可以存取什麼

187</h2>187</h2>

188 188 

statusline.md +63 −21

Details

15* 您跨多個工作階段工作,需要區分它們15* 您跨多個工作階段工作,需要區分它們

16* 您希望 git 分支和狀態始終可見16* 您希望 git 分支和狀態始終可見

17 17 

18Claude Code 也可以呈現[頁尾連結徽章](/zh-TW/settings#footer-link-badges):當設定的正規表達式符合對話中的文字時,會在頁尾出現的可點擊晶片。這些與狀態列無關,不會與您的指令碼互動;請改用 [`footerLinksRegexes`](/zh-TW/settings#footer-link-badges) 設定來設定它們。

19 

18以下是一個[多行狀態列](#display-multiple-lines)的範例,在第一行顯示 git 資訊,在第二行顯示顏色編碼的 context 列。20以下是一個[多行狀態列](#display-multiple-lines)的範例,在第一行顯示 git 資訊,在第二行顯示顏色編碼的 context 列。

19 21 

20<Frame>22<Frame>


23 25 

24本頁面介紹[設定基本狀態列](#set-up-a-status-line)、說明[資料如何從 Claude Code 流向您的指令碼](#how-status-lines-work)、列出[您可以顯示的所有欄位](#available-data),並提供[常見模式的現成範例](#examples),例如 git 狀態、成本追蹤和進度列。26本頁面介紹[設定基本狀態列](#set-up-a-status-line)、說明[資料如何從 Claude Code 流向您的指令碼](#how-status-lines-work)、列出[您可以顯示的所有欄位](#available-data),並提供[常見模式的現成範例](#examples),例如 git 狀態、成本追蹤和進度列。

25 27 

26## 設定狀態列28<h2 id="set-up-a-status-line">

29 設定狀態列

30</h2>

27 31 

28使用[`/statusline` 命令](#use-the-%2Fstatusline-command)讓 Claude Code 為您產生指令碼,或[手動建立指令碼](#manually-configure-a-status-line)並將其新增到您的設定。32使用[`/statusline` 命令](#use-the-%2Fstatusline-command)讓 Claude Code 為您產生指令碼,或[手動建立指令碼](#manually-configure-a-status-line)並將其新增到您的設定。

29 33 

30### 使用 /statusline 命令34<h3 id="use-the-/statusline-command">

35 使用 /statusline 命令

36</h3>

31 37 

32`/statusline` 命令接受描述您想顯示內容的自然語言指令。Claude Code 在 `~/.claude/` 中產生指令碼檔案並自動更新您的設定:38`/statusline` 命令接受描述您想顯示內容的自然語言指令。Claude Code 在 `~/.claude/` 中產生指令碼檔案並自動更新您的設定:

33 39 


35/statusline show model name and context percentage with a progress bar41/statusline show model name and context percentage with a progress bar

36```42```

37 43 

38### 手動設定狀態列44<h3 id="manually-configure-a-status-line">

45 手動設定狀態列

46</h3>

39 47 

40將 `statusLine` 欄位新增到您的使用者設定(`~/.claude/settings.json`,其中 `~` 是您的主目錄)或[專案設定](/zh-TW/settings#settings-files)。將 `type` 設定為 `"command"`,並將 `command` 指向指令碼路徑或內聯 shell 命令。如需建立指令碼的完整逐步說明,請參閱[逐步建立狀態列](#build-a-status-line-step-by-step)。48將 `statusLine` 欄位新增到您的使用者設定(`~/.claude/settings.json`,其中 `~` 是您的主目錄)或[專案設定](/zh-TW/settings#settings-files)。將 `type` 設定為 `"command"`,並將 `command` 指向指令碼路徑或內聯 shell 命令。如需建立指令碼的完整逐步說明,請參閱[逐步建立狀態列](#build-a-status-line-step-by-step)。

41 49 


66 74 

67可選的 `hideVimModeIndicator` 欄位會隱藏提示下方的內建 `-- INSERT --` 文字。當您的指令碼自行呈現 [`vim.mode`](#available-data) 時,請將此設定為 `true`,以便模式不會顯示兩次。75可選的 `hideVimModeIndicator` 欄位會隱藏提示下方的內建 `-- INSERT --` 文字。當您的指令碼自行呈現 [`vim.mode`](#available-data) 時,請將此設定為 `true`,以便模式不會顯示兩次。

68 76 

69### 停用狀態列77<h3 id="disable-the-status-line">

78 停用狀態列

79</h3>

70 80 

71執行 `/statusline` 並要求它移除或清除您的狀態列(例如 `/statusline delete`、`/statusline clear`、`/statusline remove it`)。您也可以手動從 settings.json 中刪除 `statusLine` 欄位。81執行 `/statusline` 並要求它移除或清除您的狀態列(例如 `/statusline delete`、`/statusline clear`、`/statusline remove it`)。您也可以手動從 settings.json 中刪除 `statusLine` 欄位。

72 82 

73## 逐步建立狀態列83<h2 id="build-a-status-line-step-by-step">

84 逐步建立狀態列

85</h2>

74 86 

75此逐步說明透過手動建立顯示目前模型、工作目錄和 context window 使用百分比的狀態列來展示幕後發生的情況。87此逐步說明透過手動建立顯示目前模型、工作目錄和 context window 使用百分比的狀態列來展示幕後發生的情況。

76 88 

77<Note>使用[`/statusline`](#use-the-statusline-command)和您想要的內容描述會自動為您設定所有這些。</Note>89<Note>使用 [`/statusline`](#use-the-%2Fstatusline-command) 和您想要的內容描述會自動為您設定所有這些。</Note>

78 90 

79這些範例使用 Bash 指令碼,適用於 macOS 和 Linux。在 Windows 上,請參閱 [Windows 設定](#windows-configuration)以取得 PowerShell 和 Git Bash 範例。91這些範例使用 Bash 指令碼,適用於 macOS 和 Linux。在 Windows 上,請參閱 [Windows 設定](#windows-configuration)以取得 PowerShell 和 Git Bash 範例。

80 92 


128 </Step>140 </Step>

129</Steps>141</Steps>

130 142 

131## 狀態列如何運作143<h2 id="how-status-lines-work">

144 狀態列如何運作

145</h2>

132 146 

133Claude Code 執行您的指令碼並透過 stdin 將 [JSON 工作階段資料](#available-data) 傳送給它。您的指令碼讀取 JSON、提取所需內容並將文字列印到 stdout。Claude Code 顯示您的指令碼列印的任何內容。147Claude Code 執行您的指令碼並透過 stdin 將 [JSON 工作階段資料](#available-data) 傳送給它。您的指令碼讀取 JSON、提取所需內容並將文字列印到 stdout。Claude Code 顯示您的指令碼列印的任何內容。

134 148 


150 164 

151<Note>狀態列在本地執行,不消耗 API 令牌。在某些 UI 互動期間,它會暫時隱藏,包括自動完成建議、說明功能表和權限提示。</Note>165<Note>狀態列在本地執行,不消耗 API 令牌。在某些 UI 互動期間,它會暫時隱藏,包括自動完成建議、說明功能表和權限提示。</Note>

152 166 

153## 可用資料167<h2 id="available-data">

168 可用資料

169</h2>

154 170 

155Claude Code 透過 stdin 將以下 JSON 欄位傳送到您的指令碼:171Claude Code 透過 stdin 將以下 JSON 欄位傳送到您的指令碼:

156 172 


297 在您的指令碼中使用條件存取處理遺漏的欄位,並使用後備預設值處理 null 值。313 在您的指令碼中使用條件存取處理遺漏的欄位,並使用後備預設值處理 null 值。

298</Accordion>314</Accordion>

299 315 

300### Context window 欄位316<h3 id="context-window-fields">

317 Context window 欄位

318</h3>

301 319 

302`context_window` 物件描述來自最近 API 回應的即時 context window。自 v2.1.132 起,`total_input_tokens` 和 `total_output_tokens` 反映目前 context 使用情況,而非累積工作階段總計。320`context_window` 物件描述來自最近 API 回應的即時 context window。自 v2.1.132 起,`total_input_tokens` 和 `total_output_tokens` 反映目前 context 使用情況,而非累積工作階段總計。

303 321 


319 337 

320`current_usage` 物件在工作階段中第一次 API 呼叫之前為 `null`,以及在 `/compact` 之後直到下一次 API 呼叫重新填入為止再次為 `null`。338`current_usage` 物件在工作階段中第一次 API 呼叫之前為 `null`,以及在 `/compact` 之後直到下一次 API 呼叫重新填入為止再次為 `null`。

321 339 

322## 範例340<h2 id="examples">

341 範例

342</h2>

323 343 

324這些範例展示常見的狀態列模式。若要使用任何範例:344這些範例展示常見的狀態列模式。若要使用任何範例:

325 345 


329 349 

330Bash 範例使用 [`jq`](https://jqlang.github.io/jq/) 來解析 JSON。Python 和 Node.js 具有內建的 JSON 解析。350Bash 範例使用 [`jq`](https://jqlang.github.io/jq/) 來解析 JSON。Python 和 Node.js 具有內建的 JSON 解析。

331 351 

332### Context window 使用情況352<h3 id="context-window-usage">

353 Context window 使用情況

354</h3>

333 355 

334顯示目前模型和 context window 使用情況,帶有視覺進度列。每個指令碼從 stdin 讀取 JSON,提取 `used_percentage` 欄位,並建立一個 10 字元的列,其中填充的塊(▓)代表使用情況:356顯示目前模型和 context window 使用情況,帶有視覺進度列。每個指令碼從 stdin 讀取 JSON,提取 `used_percentage` 欄位,並建立一個 10 字元的列,其中填充的塊(▓)代表使用情況:

335 357 


396 ```418 ```

397</CodeGroup>419</CodeGroup>

398 420 

399### Git 狀態與顏色421<h3 id="git-status-with-colors">

422 Git 狀態與顏色

423</h3>

400 424 

401顯示 git 分支,帶有暫存和修改檔案的顏色編碼指示器。此指令碼使用 [ANSI 逃逸碼](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors)表示終端顏色:`\033[32m` 是綠色,`\033[33m` 是黃色,`\033[0m` 重設為預設值。425顯示 git 分支,帶有暫存和修改檔案的顏色編碼指示器。此指令碼使用 [ANSI 逃逸碼](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors)表示終端顏色:`\033[32m` 是綠色,`\033[33m` 是黃色,`\033[0m` 重設為預設值。

402 426 


490 ```514 ```

491</CodeGroup>515</CodeGroup>

492 516 

493### 成本和持續時間追蹤517<h3 id="cost-and-duration-tracking">

518 成本和持續時間追蹤

519</h3>

494 520 

495追蹤您的工作階段 API 成本和經過的時間。`cost.total_cost_usd` 欄位累積目前工作階段中所有 API 呼叫的估計成本。`cost.total_duration_ms` 欄位測量自工作階段開始以來的總經過時間,而 `cost.total_api_duration_ms` 僅追蹤等待 API 回應所花費的時間。521追蹤您的工作階段 API 成本和經過的時間。`cost.total_cost_usd` 欄位累積目前工作階段中所有 API 呼叫的估計成本。`cost.total_duration_ms` 欄位測量自工作階段開始以來的總經過時間,而 `cost.total_api_duration_ms` 僅追蹤等待 API 回應所花費的時間。

496 522 


551 ```577 ```

552</CodeGroup>578</CodeGroup>

553 579 

554### 顯示多行580<h3 id="display-multiple-lines">

581 顯示多行

582</h3>

555 583 

556您的指令碼可以輸出多行以建立更豐富的顯示。每個 `echo` 陳述式在狀態區域中產生單獨的行。584您的指令碼可以輸出多行以建立更豐富的顯示。每個 `echo` 陳述式在狀態區域中產生單獨的行。

557 585 


658 ```686 ```

659</CodeGroup>687</CodeGroup>

660 688 

661### 可點擊的連結689<h3 id="clickable-links">

690 可點擊的連結

691</h3>

662 692 

663此範例建立指向您的 GitHub 儲存庫的可點擊連結。它讀取 git 遠端 URL,使用 `sed` 將 SSH 格式轉換為 HTTPS,並將儲存庫名稱包裝在 OSC 8 逃逸碼中。按住 Cmd(macOS)或 Ctrl(Windows/Linux)並點擊以在瀏覽器中開啟連結。693此範例建立指向您的 GitHub 儲存庫的可點擊連結。它讀取 git 遠端 URL,使用 `sed` 將 SSH 格式轉換為 HTTPS,並將儲存庫名稱包裝在 OSC 8 逃逸碼中。按住 Cmd(macOS)或 Ctrl(Windows/Linux)並點擊以在瀏覽器中開啟連結。

664 694 


738 ```768 ```

739</CodeGroup>769</CodeGroup>

740 770 

741### 速率限制使用情況771<h3 id="rate-limit-usage">

772 速率限制使用情況

773</h3>

742 774 

743在狀態列中顯示 Claude.ai 訂閱速率限制使用情況。`rate_limits` 物件包含 `five_hour`(5 小時滾動視窗)和 `seven_day`(每週)視窗。每個視窗提供 `used_percentage`(0-100)和 `resets_at`(Unix 紀元秒,視窗重設時)。775在狀態列中顯示 Claude.ai 訂閱速率限制使用情況。`rate_limits` 物件包含 `five_hour`(5 小時滾動視窗)和 `seven_day`(每週)視窗。每個視窗提供 `used_percentage`(0-100)和 `resets_at`(Unix 紀元秒,視窗重設時)。

744 776 


804 ```836 ```

805</CodeGroup>837</CodeGroup>

806 838 

807### 快取昂貴的操作839<h3 id="cache-expensive-operations">

840 快取昂貴的操作

841</h3>

808 842 

809您的狀態列指令碼在活躍工作階段期間頻繁執行。`git status` 或 `git diff` 等命令可能很慢,特別是在大型儲存庫中。此範例將 git 資訊快取到臨時檔案,並且僅每 5 秒重新整理一次。843您的狀態列指令碼在活躍工作階段期間頻繁執行。`git status` 或 `git diff` 等命令可能很慢,特別是在大型儲存庫中。此範例將 git 資訊快取到臨時檔案,並且僅每 5 秒重新整理一次。

810 844 


935 ```969 ```

936</CodeGroup>970</CodeGroup>

937 971 

938### Windows 設定972<h3 id="windows-configuration">

973 Windows 設定

974</h3>

939 975 

940在 Windows 上,Claude Code 透過 Git Bash 執行狀態列命令(如果已安裝 Git Bash),或在 Git Bash 不存在時透過 PowerShell 執行。若要執行 PowerShell 指令碼作為您的狀態列,請透過 `powershell` 呼叫它。這在任一 shell 中都有效:976在 Windows 上,Claude Code 透過 Git Bash 執行狀態列命令(如果已安裝 Git Bash),或在 Git Bash 不存在時透過 PowerShell 執行。若要執行 PowerShell 指令碼作為您的狀態列,請透過 `powershell` 呼叫它。這在任一 shell 中都有效:

941 977 


986 ```1022 ```

987</CodeGroup>1023</CodeGroup>

988 1024 

989## 子代理狀態列1025<h2 id="subagent-status-lines">

1026 子代理狀態列

1027</h2>

990 1028 

991`subagentStatusLine` 設定為[子代理](/zh-TW/sub-agents)面板中顯示的每個子代理呈現自訂行主體。使用它來用您自己的格式化取代預設的 `name · description · token count` 行。1029`subagentStatusLine` 設定為[子代理](/zh-TW/sub-agents)面板中顯示的每個子代理呈現自訂行主體。使用它來用您自己的格式化取代預設的 `name · description · token count` 行。

992 1030 


1005 1043 

1006適用於 `statusLine` 的相同信任和 `disableAllHooks` 閘門也適用於此。外掛程式可以在其 [`settings.json`](/zh-TW/plugins-reference#standard-plugin-layout) 中提供預設 `subagentStatusLine`。1044適用於 `statusLine` 的相同信任和 `disableAllHooks` 閘門也適用於此。外掛程式可以在其 [`settings.json`](/zh-TW/plugins-reference#standard-plugin-layout) 中提供預設 `subagentStatusLine`。

1007 1045 

1008## 提示1046<h2 id="tips">

1047 提示

1048</h2>

1009 1049 

1010* **使用模擬輸入測試**:`echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`1050* **使用模擬輸入測試**:`echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

1011* **保持輸出簡短**:狀態列寬度有限,因此長輸出可能會被截斷或換行不當1051* **保持輸出簡短**:狀態列寬度有限,因此長輸出可能會被截斷或換行不當


1013 1053 

1014社群專案如 [ccstatusline](https://github.com/sirmalloc/ccstatusline) 和 [starship-claude](https://github.com/martinemde/starship-claude) 提供具有主題和其他功能的預先建立設定。1054社群專案如 [ccstatusline](https://github.com/sirmalloc/ccstatusline) 和 [starship-claude](https://github.com/martinemde/starship-claude) 提供具有主題和其他功能的預先建立設定。

1015 1055 

1016## 疑難排解1056<h2 id="troubleshooting">

1057 疑難排解

1058</h2>

1017 1059 

1018**狀態列未出現**1060**狀態列未出現**

1019 1061 

sub-agents.md +49 −19

Details

61 * **Tools**:唯讀工具(拒絕存取 Write 和 Edit 工具)61 * **Tools**:唯讀工具(拒絕存取 Write 和 Edit 工具)

62 * **Purpose**:用於規劃的程式碼庫研究62 * **Purpose**:用於規劃的程式碼庫研究

63 63 

64 當您處於 plan mode 且 Claude 需要理解您的程式碼庫時,它會將研究委派給 Plan subagent。這樣可以防止無限嵌套(subagents 無法產生其他 subagents)同時仍然收集必要的上下文64 當您處於 plan mode 且 Claude 需要理解您的程式碼庫時,它會將研究委派給 Plan subagent,以便探索輸出保持在單獨的上下文視窗中,而主要對話保持唯讀

65 </Tab>65 </Tab>

66 66 

67 <Tab title="General-purpose">67 <Tab title="General-purpose">


84 </Tab>84 </Tab>

85</Tabs>85</Tabs>

86 86 

87內建 subagents 在互動式工作階段中始終會被註冊。若要封鎖特定的內建類型,請將其新增至 `permissions.deny`,如[停用特定 subagents](#disable-specific-subagents) 中所示。若要防止 Claude 委派給任何 subagent,請使用 [`permissions.deny`](/zh-TW/permissions#tool-specific-permission-rules) 拒絕 `Agent` 工具本身。在[非互動式模式](/zh-TW/headless)和 [Agent SDK](/zh-TW/agent-sdk/overview) 中,設定 [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/zh-TW/env-vars) 以移除所有內建類型,並僅提供您自己的。

88 

87除了這些內建 subagents 之外,您可以建立自己的 subagents,具有自訂提示、工具限制、權限模式、hooks 和 skills。以下部分展示如何開始和自訂 subagents。89除了這些內建 subagents 之外,您可以建立自己的 subagents,具有自訂提示、工具限制、權限模式、hooks 和 skills。以下部分展示如何開始和自訂 subagents。

88 90 

89<h2 id="quickstart-create-your-first-subagent">91<h2 id="quickstart-create-your-first-subagent">


158 使用 /agents 命令160 使用 /agents 命令

159</h3>161</h3>

160 162 

161`/agents` 命令開啟用於管理 subagents 的分頁介面。**Running** 標籤顯示即時 subagents,讓您開啟或停止它們。**Library** 標籤讓您:163`/agents` 命令開啟用於管理 subagents 的分頁介面。**Running** 標籤列出即時和最近完成的 subagents,讓您開啟或停止它們。**Library** 標籤讓您:

162 164 

163* 檢視所有可用的 subagents(內建、使用者、專案和外掛程式)165* 檢視所有可用的 subagents(內建、使用者、專案和外掛程式)

164* 使用引導式設定或 Claude 生成建立新的 subagents166* 使用引導式設定或 Claude 生成建立新的 subagents


184 186 

185**專案 subagents**(`.claude/agents/`)非常適合特定於程式碼庫的 subagents。將它們簽入版本控制,以便您的團隊可以協作使用和改進它們。187**專案 subagents**(`.claude/agents/`)非常適合特定於程式碼庫的 subagents。將它們簽入版本控制,以便您的團隊可以協作使用和改進它們。

186 188 

187專案 subagents 是透過從目前工作目錄向上走來發現的。使用 `--add-dir` 新增的目錄 [僅授予檔案存取權限](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration),不會掃描 subagents。若要跨專案共享 subagents請使用 `~/.claude/agents/` [plugin](/zh-TW/plugins)189專案 subagents 是透過從目前工作目錄向上走來發現的,因此會掃描那裡和儲存庫根目錄之間的每個 `.claude/agents/`。{/* min-version: 2.1.178 */}自 v2.1.178 當這些巢狀目錄中的多個定義相同的 `name` 時,Claude Code 使用最接近工作目錄的定義

190 

191使用 `--add-dir` 新增的目錄也會被掃描:新增目錄內的 `.claude/agents/` 資料夾與專案 subagents 一起載入。請參閱 [Additional directories](/zh-TW/permissions#additional-directories-grant-file-access-not-configuration) 以了解哪些其他配置類型從 `--add-dir` 載入。若要跨專案共享 subagents 而不使用 `--add-dir`,請使用 `~/.claude/agents/` 或 [plugin](/zh-TW/plugins)。

188 192 

189**使用者 subagents**(`~/.claude/agents/`)是在所有專案中可用的個人 subagents。193**使用者 subagents**(`~/.claude/agents/`)是在所有專案中可用的個人 subagents。

190 194 


282| `description` | 是 | Claude 何時應委派給此 subagent |286| `description` | 是 | Claude 何時應委派給此 subagent |

283| `tools` | 否 | [Tools](#available-tools) subagent 可以使用。如果省略,繼承所有工具。若要將 Skills 預載入上下文,請使用 `skills` 欄位而不是在此列出 `Skill` |287| `tools` | 否 | [Tools](#available-tools) subagent 可以使用。如果省略,繼承所有工具。若要將 Skills 預載入上下文,請使用 `skills` 欄位而不是在此列出 `Skill` |

284| `disallowedTools` | 否 | 要拒絕的工具,從繼承或指定的清單中移除 |288| `disallowedTools` | 否 | 要拒絕的工具,從繼承或指定的清單中移除 |

285| `model` | 否 | [Model](#choose-a-model) 使用:`sonnet`、`opus`、`haiku`、完整模型 ID(例如,`claude-opus-4-8`)或 `inherit`。預設為 `inherit` |289| `model` | 否 | [Model](#choose-a-model) 使用:`sonnet`、`opus`、`haiku`、`fable`、完整模型 ID(例如,`claude-opus-4-8`)或 `inherit`。預設為 `inherit` |

286| `permissionMode` | 否 | [Permission mode](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions` 或 `plan`。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |290| `permissionMode` | 否 | [Permission mode](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions` 或 `plan`。針對 [plugin subagents](#choose-the-subagent-scope) 被忽略 |

287| `maxTurns` | 否 | subagent 停止前的最大代理轉數 |291| `maxTurns` | 否 | subagent 停止前的最大代理轉數 |

288| `skills` | 否 | [Skills](/zh-TW/skills) 在啟動時預載入到 subagent 的上下文中。注入完整技能內容,而不僅僅是描述。Subagents 仍然可以透過 Skill 工具呼叫未列出的專案、使用者和外掛程式技能 |292| `skills` | 否 | [Skills](/zh-TW/skills) 在啟動時預載入到 subagent 的上下文中。注入完整技能內容,而不僅僅是描述。Subagents 仍然可以透過 Skill 工具呼叫未列出的專案、使用者和外掛程式技能 |


301 305 

302`model` 欄位控制 subagent 使用的 [AI model](/zh-TW/model-config):306`model` 欄位控制 subagent 使用的 [AI model](/zh-TW/model-config):

303 307 

304* **Model alias**:使用可用的別名之一:`sonnet`、`opus` 或 `haiku`308* **Model alias**:使用可用的別名之一:`sonnet`、`opus`、`haiku` 或 `fable`

305* **Full model ID**:使用完整模型 ID,例如 `claude-opus-4-8` 或 `claude-sonnet-4-6`。接受與 `--model` 標誌相同的值309* **Full model ID**:使用完整模型 ID,例如 `claude-opus-4-8` 或 `claude-sonnet-4-6`。接受與 `--model` 標誌相同的值

306* **inherit**:使用與主要對話相同的模型310* **inherit**:使用與主要對話相同的模型

307* **Omitted**:如果未指定,預設為 `inherit`(使用與主要對話相同的模型)311* **Omitted**:如果未指定,預設為 `inherit`(使用與主要對話相同的模型)


325 329 

326Subagents 預設從主要對話繼承 [internal tools](/zh-TW/tools-reference) 和 MCP 工具。以下工具取決於主要對話的 UI 或工作階段狀態,即使在 `tools` 欄位中列出也不可用於 subagents:330Subagents 預設從主要對話繼承 [internal tools](/zh-TW/tools-reference) 和 MCP 工具。以下工具取決於主要對話的 UI 或工作階段狀態,即使在 `tools` 欄位中列出也不可用於 subagents:

327 331 

328* `Agent`

329* `AskUserQuestion`332* `AskUserQuestion`

330* `EnterPlanMode`333* `EnterPlanMode`

331* `ExitPlanMode`,除非 subagent 的 [`permissionMode`](#permission-modes) 是 `plan`334* `ExitPlanMode`,除非 subagent 的 [`permissionMode`](#permission-modes) 是 `plan`


354 357 

355如果兩者都設定,`disallowedTools` 首先應用,然後 `tools` 針對剩餘的池進行解析。同時列在兩者中的工具會被移除。358如果兩者都設定,`disallowedTools` 首先應用,然後 `tools` 針對剩餘的池進行解析。同時列在兩者中的工具會被移除。

356 359 

360兩個欄位都接受 MCP 伺服器層級的模式,除了確切的工具名稱:`mcp__<server>` 或 `mcp__<server>__*` 授予或移除來自命名伺服器的每個工具。在 `disallowedTools` 中,`mcp__*` 也會移除來自任何伺服器的每個 MCP 工具。此範例移除來自 `github` MCP 伺服器的每個工具,同時保留來自其他伺服器的工具和每個內建工具:

361 

362```yaml theme={null}

363---

364name: local-only

365description: Inherits every tool except those from the github MCP server

366disallowedTools: mcp__github

367---

368```

369 

357<h4 id="restrict-which-subagents-can-be-spawned">370<h4 id="restrict-which-subagents-can-be-spawned">

358 限制可以產生的 subagents371 限制可以產生的 subagents

359</h4>372</h4>


378tools: Agent, Read, Bash391tools: Agent, Read, Bash

379```392```

380 393 

381如果 `Agent` 完全從 `tools` 清單中省略,代理無法產生任何 subagents。此限制僅適用於以 `claude --agent` 作為主執行緒執行的代理。Subagents 無法產生其他 subagents,因此 `Agent(agent_type)` 在 subagent 定義中無效。394如果 `Agent` 完全從 `tools` 清單中省略,代理無法產生任何 subagents。

395 

396`Agent(agent_type)` 允許清單語法僅適用於以 `claude --agent` 作為主執行緒執行的代理。在 subagent 定義中,在 `tools` 中列出 `Agent` 讓該 subagent [產生巢狀 subagents](#spawn-nested-subagents),但括號內的任何類型清單都會被忽略。

382 397 

383<h4 id="scope-mcp-servers-to-a-subagent">398<h4 id="scope-mcp-servers-to-a-subagent">

384 將 MCP 伺服器限定於 subagent399 將 MCP 伺服器限定於 subagent


444| `plan` | Plan mode(唯讀探索) |459| `plan` | Plan mode(唯讀探索) |

445 460 

446<Warning>461<Warning>

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) 以了解詳細資訊。462 謹慎使用 `bypassPermissions`。它跳過權限提示,允許 subagent 執行操作而無需批准,包括寫入 `.git`、`.config/git`、`.claude`、`.vscode`、`.idea`、`.husky`、`.cargo`、`.devcontainer`、`.yarn` 和 `.mvn`。明確的 [`ask` 規則](/zh-TW/permissions#manage-permissions) 和根和主目錄移除(例如 `rm -rf /`)仍然會提示。請參閱 [permission modes](/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode) 以了解詳細資訊。

448</Warning>463</Warning>

449 464 

450如果父級使用 `bypassPermissions` 或 `acceptEdits`,這優先並且無法被覆蓋。如果父級使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),subagent 繼承 auto mode,其 frontmatter 中的任何 `permissionMode` 都會被忽略:分類器使用與父工作階段相同的阻止和允許規則評估 subagent 的工具呼叫。465如果父級使用 `bypassPermissions` 或 `acceptEdits`,這優先並且無法被覆蓋。如果父級使用 [auto mode](/zh-TW/permission-modes#eliminate-prompts-with-auto-mode),subagent 繼承 auto mode,其 frontmatter 中的任何 `permissionMode` 都會被忽略:分類器使用與父工作階段相同的阻止和允許規則評估 subagent 的工具呼叫。


761 776 

762若要禁用所有背景任務功能,請將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 環境變數設定為 `1`。請參閱 [Environment variables](/zh-TW/env-vars)。777若要禁用所有背景任務功能,請將 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 環境變數設定為 `1`。請參閱 [Environment variables](/zh-TW/env-vars)。

763 778 

764當 [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) 設定時,每個 subagent 產生都在背景中執行,無論 `background` 欄位如何。Forks 仍然在您的終端中出現權限提示;命名 subagents 自動拒絕任何會提示的內容,如上所述。779當 [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) 設定為 `1` 時,每個 subagent 產生都在背景中執行,無論 `background` 欄位如何。Forks 仍然在您的終端中出現權限提示;命名 subagents 自動拒絕任何會提示的內容,如上所述。

765 780 

766<h3 id="common-patterns">781<h3 id="common-patterns">

767 常見模式782 常見模式


826 841 

827對於關於對話中已有內容的快速問題,請使用 [`/btw`](/zh-TW/interactive-mode#side-questions-with-%2Fbtw) 而不是 subagent。它看到您的完整上下文,但沒有工具存取,答案被丟棄而不是新增到歷史記錄。842對於關於對話中已有內容的快速問題,請使用 [`/btw`](/zh-TW/interactive-mode#side-questions-with-%2Fbtw) 而不是 subagent。它看到您的完整上下文,但沒有工具存取,答案被丟棄而不是新增到歷史記錄。

828 843 

829<Note>844<h3 id="spawn-nested-subagents">

830 Subagents 無法產生其他 subagents。如果您的工作流程需要嵌套委派,請使用 [Skills](/zh-TW/skills) 或從主要對話 [鏈接 subagents](#chain-subagents)。845 產生嵌套 subagents

831</Note>846</h3>

847 

848{/* min-version: 2.1.172 */}自 Claude Code v2.1.172 起,subagent 可以產生自己的 subagents。當委派的任務本身分裂成並行子任務時使用此功能,例如審查者 subagent 為每個發現分派驗證者,所以中間輸出永遠不會到達您的主要對話。只有頂級 subagent 的摘要返回給您。

849 

850嵌套 subagent 的配置方式與頂級 subagent 相同,並從相同的 [scopes](#choose-the-subagent-scope) 解析。提示輸入下方的 subagent 面板顯示完整樹:每一行顯示後代的 `(+N)` 計數,打開一行會顯示該 subagent 的直接子代,以及返回到 `main` 的路徑。[`/agents`](#use-the-%2Fagents-command) 中的 Running 標籤將執行中的 subagents 列為平面列表。

851 

852深度計算為主要對話下方的 subagent 級別數,無論每個級別是否在 [前景或背景](#run-subagents-in-foreground-or-background) 中執行:

853 

854* **前景 subagents**:可以在任何深度產生。每個級別阻止其父級直到它返回,所以鏈是自限制的:主要對話等待整個鏈。

855* **背景 subagents**:深度五的背景 subagent 不接收 Agent 工具,無法進一步產生。限制是固定的且不可配置,存在是為了防止失控的並行樹。

856 

857若要防止特定 subagent 產生其他 subagents,請從其 [`tools`](#available-tools) 列表中省略 `Agent` 或將其新增到 `disallowedTools`。

858 

859[fork](#fork-the-current-conversation) 仍然無法產生另一個 fork。它可以產生其他 subagent 類型,這些計入深度限制。

832 860 

833<h3 id="manage-subagent-context">861<h3 id="manage-subagent-context">

834 管理 subagent 上下文862 管理 subagent 上下文


860 888 

861恢復的 subagents 保留其完整對話歷史記錄,包括所有先前的工具呼叫、結果和推理。Subagent 從停止的地方精確繼續,而不是從頭開始。889恢復的 subagents 保留其完整對話歷史記錄,包括所有先前的工具呼叫、結果和推理。Subagent 從停止的地方精確繼續,而不是從頭開始。

862 890 

863當 subagent 完成時,Claude 接收其代理 ID。Claude 使用 `SendMessage` 工具,將代理的 ID 作為 `to` 欄位來恢復它。`SendMessage` 工具僅在透過 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 啟用 [agent teams](/zh-TW/agent-teams) 時可用。891當 subagent 完成時,Claude 接收其代理 ID。內建的 Explore 和 Plan 代理是一次性的,不返回代理 ID,所以它們無法被恢復;當您需要繼續工作時,請使用 `general-purpose` 或自訂 subagent。Claude 使用 `SendMessage` 工具,將代理的 ID 作為 `to` 欄位來恢復它。`SendMessage` 工具僅在透過 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 啟用 [agent teams](/zh-TW/agent-teams) 時可用。

864 892 

865若要恢復 subagent,請要求 Claude 繼續先前的工作:893若要恢復 subagent,請要求 Claude 繼續先前的工作:

866 894 


886 自動壓縮914 自動壓縮

887</h4>915</h4>

888 916 

889Subagents 支援使用與主要對話相同的邏輯進行自動壓縮。預設情況下,自動壓縮在大約 95% 容量時觸發。若要更早觸發壓縮請將 `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 設定為較低的百分比(例如,`50`)。請參閱 [environment variables](/zh-TW/env-vars) 以了解詳細資訊917Subagents 支援使用與主要對話相同的邏輯進行自動壓縮。壓縮在相同條件下觸發,`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` 也適用於 subagents。請參閱 [environment variables](/zh-TW/env-vars) 以了解何時覆蓋生效

890 918 

891壓縮事件記錄在 subagent 文字檔案中:919壓縮事件記錄在 subagent 文字檔案中:

892 920 


908</h2>936</h2>

909 937 

910<Note>938<Note>

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` 被接受939 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`。 Claude 本身產生 forks 是實驗性的,可能在未來版本中變更。此功能也可能在互動式工作階段中啟用,作為分階段推出的一部分

912</Note>940</Note>

913 941 

914Fork 是一個 subagent,它繼承到目前為止的整個對話,而不是從頭開始。這會放棄 subagents 否則提供的輸入隔離:fork 看到與主工作階段相同的系統提示、工具、模型和訊息歷史記錄,因此您可以將側面任務交給它,而無需重新解釋情況。Fork 自己的工具呼叫仍然保持在您的對話之外,只有其最終結果返回,因此您的主要上下文視窗保持乾淨。當命名 subagent 需要太多背景才能有用時,或當您想從相同的起點並行嘗試多種方法時,使用 fork。942Fork 是一個 subagent,它繼承到目前為止的整個對話,而不是從頭開始。這會放棄 subagents 否則提供的輸入隔離:fork 看到與主工作階段相同的系統提示、工具、模型和訊息歷史記錄,因此您可以將側面任務交給它,而無需重新解釋情況。Fork 自己的工具呼叫仍然保持在您的對話之外,只有其最終結果返回,因此您的主要上下文視窗保持乾淨。當命名 subagent 需要太多背景才能有用時,或當您想從相同的起點並行嘗試多種方法時,使用 fork。

915 943 

916設定 `CLAUDE_CODE_FORK_SUBAGENT` 以兩種方式改變 Claude Code:944若要控制 fork 模式,無論分階段推出如何,請將 [`CLAUDE_CODE_FORK_SUBAGENT`](/zh-TW/env-vars) 設定為 `1` 以明確啟用它,或設定為 `0` 以停用它。該變數在互動模式中以及透過 SDK 或 `claude -p` 被接受。

945 

946啟用 fork 模式會以兩種方式改變 Claude Code:

917 947 

918* Claude 在它否則會使用 [general-purpose](#built-in-subagents) subagent 時產生 fork。命名 subagents,如 Explore 仍然像以前一樣產生。948* Claude 可以透過明確要求 `fork` subagent 類型來產生 fork。沒有 subagent 類型的產生仍然使用 [general-purpose](#built-in-subagents) subagent,而命名 subagents(例如 Explore仍然像以前一樣產生。

919* 每個 subagent 產生都在 [background](#run-subagents-in-foreground-or-background) 中執行,無論它是 fork 還是命名 subagent。設定 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 為 `1` 以保持產生同步。949* 每個 subagent 產生都在 [background](#run-subagents-in-foreground-or-background) 中執行,無論它是 fork 還是命名 subagent。設定 `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` 為 `1` 以保持產生同步。

920 950 

921您可以使用 `/fork` 後跟指令自己啟動 fork,無論是否設定了變數。Claude Code 從指令的前幾個詞命名 fork。以下範例 forks 對話以在您在主工作階段中繼續實現時草擬測試案例:951您可以使用 `/fork` 後跟指令自己啟動 fork,無論是否設定了變數。Claude Code 從指令的前幾個詞命名 fork。以下範例 forks 對話以在您在主工作階段中繼續實現時草擬測試案例:


953| Permissions | 提示出現在您的終端中 | [Auto-denied](#run-subagents-in-foreground-or-background) 在背景中執行時 |983| Permissions | 提示出現在您的終端中 | [Auto-denied](#run-subagents-in-foreground-or-background) 在背景中執行時 |

954| Prompt cache | 與主工作階段共享 | 單獨的快取 |984| Prompt cache | 與主工作階段共享 | 單獨的快取 |

955 985 

956因為 fork 的系統提示和工具定義與父級相同,其第一個請求重複使用父級的提示快取。這使得 forking 比為需要相同上下文的任務產生新 subagent 更便宜。986因為 fork 的系統提示和工具定義與父級相同,其第一個請求重複使用父級的 [prompt cache](/zh-TW/prompt-caching#subagents-and-the-cache)。這使得 forking 比為需要相同上下文的任務產生新 subagent 更便宜。

957 987 

958當 Claude 透過 Agent 工具產生 fork 時,它可以傳遞 `isolation: "worktree"`,以便 fork 的檔案編輯被寫入單獨的 git worktree 而不是您的簽出。988當 Claude 透過 Agent 工具產生 fork 時,它可以傳遞 `isolation: "worktree"`,以便 fork 的檔案編輯被寫入單獨的 git worktree 而不是您的簽出。

959 989 


961 限制991 限制

962</h3>992</h3>

963 993 

964設定 `CLAUDE_CODE_FORK_SUBAGENT=1` 在互動式工作階段、[non-interactive mode](/zh-TW/headless) 和 Agent SDK 中啟用 fork mode。Fork 無法產生進一步的 forks。994設定 `CLAUDE_CODE_FORK_SUBAGENT=1` 在互動式工作階段、[non-interactive mode](/zh-TW/headless) 和 Agent SDK 中啟用 fork 模式;將其設定為 `0` 會在所有地方停用 fork 模式,包括任何伺服器端推出。Fork 無法產生進一步的 forks。

965 995 

966<h2 id="example-subagents">996<h2 id="example-subagents">

967 範例 subagents997 範例 subagents

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 

9組織可以直接通過 Anthropic 或通過雲端提供商部署 Claude Code。本頁面幫助您選擇正確的配置。79組織可以直接通過 Anthropic 或通過雲端提供商部署 Claude Code。本頁面幫助您選擇正確的配置。

10 80 

81<ContactSalesCard surface="third_party_overview" />

82 

11<h2 id="compare-deployment-options">83<h2 id="compare-deployment-options">

12 比較部署選項84 比較部署選項

13</h2>85</h2>


271 為雲端提供商固定模型版本343 為雲端提供商固定模型版本

272</h3>344</h3>

273 345 

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)。346如果您通過 [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_FABLE_MODEL`、`ANTHROPIC_DEFAULT_OPUS_MODEL`、`ANTHROPIC_DEFAULT_SONNET_MODEL` 和 `ANTHROPIC_DEFAULT_HAIKU_MODEL` 固定特定模型版本。如果不固定,模型別名會解析為 Claude Code 針對該提供商的內建預設值這可能會落後於最新版本,且可能尚未在您的帳戶中啟用。固定讓您控制用戶何時移至新模型。有關每個提供商在預設值不可用時的操作,請參閱 [模型配置](/zh-TW/model-config#pin-models-for-third-party-deployments)。

275 347 

276<h3 id="configure-security-policies">348<h3 id="configure-security-policies">

277 配置安全策略349 配置安全策略

Details

44| `TaskOutput` | (已棄用)檢索背景任務的輸出。建議在任務的輸出檔案路徑上使用 `Read` | 否 |44| `TaskOutput` | (已棄用)檢索背景任務的輸出。建議在任務的輸出檔案路徑上使用 `Read` | 否 |

45| `TaskStop` | 按 ID 終止執行中的背景任務 | 否 |45| `TaskStop` | 按 ID 終止執行中的背景任務 | 否 |

46| `TaskUpdate` | 更新任務狀態、依賴項、詳細資訊或刪除任務 | 否 |46| `TaskUpdate` | 更新任務狀態、依賴項、詳細資訊或刪除任務 | 否 |

47| `TeamCreate` | 建立具有多個隊友的 [agent team](/zh-TW/agent-teams)。僅在設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 時可用 | 否 |

48| `TeamDelete` | 解散 agent team 並清理隊友程序。僅在設定 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 時可用 | 否 |

49| `TodoWrite` | {/* min-version: 2.1.142 */}管理工作階段任務檢查清單。自 v2.1.142 起預設停用,改用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。設定 `CLAUDE_CODE_ENABLE_TASKS=0` 以重新啟用 | 否 |47| `TodoWrite` | {/* min-version: 2.1.142 */}管理工作階段任務檢查清單。自 v2.1.142 起預設停用,改用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。設定 `CLAUDE_CODE_ENABLE_TASKS=0` 以重新啟用 | 否 |

50| `ToolSearch` | 當啟用 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 時,搜尋並載入延遲工具 | 否 |48| `ToolSearch` | 當啟用 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 時,搜尋並載入延遲工具 | 否 |

51| `WaitForMcpServers` | {/* min-version: 2.1.142 */}等待一個或多個仍在背景連接的 [MCP servers](/zh-TW/mcp),以便請求可以使用其工具而無需重新啟動工作階段。當所需的伺服器尚未連接時,Claude 會呼叫它。僅在停用 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 時出現,因為啟用時 `ToolSearch` 會處理等待 | 否 |49| `WaitForMcpServers` | {/* min-version: 2.1.142 */}等待一個或多個仍在背景連接的 [MCP servers](/zh-TW/mcp),以便請求可以使用其工具而無需重新啟動工作階段。當所需的伺服器尚未連接時,Claude 會呼叫它。僅在停用 [tool search](/zh-TW/mcp#scale-with-mcp-tool-search) 時出現,因為啟用時 `ToolSearch` 會處理等待 | 否 |


61在大多數情況下,Claude 會決定何時使用這些工具,您在與 Claude 互動時不需要自己命名它們。當定義權限和其他設定時,您直接參考工具名稱:59在大多數情況下,Claude 會決定何時使用這些工具,您在與 Claude 互動時不需要自己命名它們。當定義權限和其他設定時,您直接參考工具名稱:

62 60 

63* 在設定中的 [`permissions.allow` 和 `permissions.deny`](/zh-TW/settings#available-settings),以及 `/permissions` 介面61* 在設定中的 [`permissions.allow` 和 `permissions.deny`](/zh-TW/settings#available-settings),以及 `/permissions` 介面

62* 在 `--allowedTools` 和 `--disallowedTools` [CLI 旗標](/zh-TW/cli-reference) 中

64* 在 Agent SDK 的 [`allowedTools` 和 `disallowedTools`](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) 選項中63* 在 Agent SDK 的 [`allowedTools` 和 `disallowedTools`](/zh-TW/agent-sdk/permissions#allow-and-deny-rules) 選項中

65* 在 [subagent 的 `tools` 或 `disallowedTools`](/zh-TW/sub-agents#supported-frontmatter-fields) frontmatter 中64* 在 [subagent 的 `tools` 或 `disallowedTools`](/zh-TW/sub-agents#supported-frontmatter-fields) frontmatter 中

66* 在 [skill 的 `allowed-tools`](/zh-TW/skills#frontmatter-reference) frontmatter 中65* 在 [skill 的 `allowed-tools`](/zh-TW/skills#frontmatter-reference) frontmatter 中


69所有這些都接受相同的規則格式 `ToolName(specifier)`。specifier 取決於工具,多個工具共享一種格式:68所有這些都接受相同的規則格式 `ToolName(specifier)`。specifier 取決於工具,多個工具共享一種格式:

70 69 

71| 規則格式 | 適用於 | 詳細資訊 |70| 規則格式 | 適用於 | 詳細資訊 |

72| :----------------------------- | :---------------------- | :--------------------------------------------------------- |71| :----------------------------- | :---------------------- | :----------------------------------------------------------------- |

73| `Bash(npm run *)` | Bash、Monitor | [命令模式匹配](/zh-TW/permissions#bash) |72| `Bash(npm run *)` | Bash、Monitor | [命令模式匹配](/zh-TW/permissions#bash) |

74| `PowerShell(Get-ChildItem *)` | PowerShell | [命令模式匹配](/zh-TW/permissions#powershell) |73| `PowerShell(Get-ChildItem *)` | PowerShell | [命令模式匹配](/zh-TW/permissions#powershell) |

75| `Read(~/secrets/**)` | Read、Grep、Glob、LSP | [路徑模式匹配](/zh-TW/permissions#read-and-edit) |74| `Read(~/secrets/**)` | Read、Grep、Glob、LSP | [路徑模式匹配](/zh-TW/permissions#read-and-edit) |

76| `Edit(/src/**)` | Edit、Write、NotebookEdit | [路徑模式匹配](/zh-TW/permissions#read-and-edit) |75| `Edit(/src/**)` | Edit、Write、NotebookEdit | [路徑模式匹配](/zh-TW/permissions#read-and-edit) |

77| `Skill(deploy *)` | Skill | [Skill 名稱匹配](/zh-TW/skills#restrict-claude's-skill-access) |76| `Skill(deploy *)` | Skill | [Skill 名稱匹配](/zh-TW/skills#restrict-claude%E2%80%99s-skill-access) |

78| `Agent(Explore)` | Agent | [Subagent 類型匹配](/zh-TW/permissions#agent-subagents) |77| `Agent(Explore)` | Agent | [Subagent 類型匹配](/zh-TW/permissions#agent-subagents) |

79| `WebFetch(domain:example.com)` | WebFetch | [網域匹配](/zh-TW/permissions#webfetch) |78| `WebFetch(domain:example.com)` | WebFetch | [網域匹配](/zh-TW/permissions#webfetch) |

80| `WebSearch` | WebSearch | 無 specifier;允許或拒絕整個工具 |79| `WebSearch` | WebSearch | 無 specifier;允許或拒絕整個工具 |


185* 跳轉到符號的定義184* 跳轉到符號的定義

186* 尋找符號的所有參考185* 尋找符號的所有參考

187* 取得位置的型別資訊186* 取得位置的型別資訊

188* 列出檔案或工作區中的符號187* 列出檔案中的符號

188* 在工作區中按名稱搜尋符號

189* 尋找介面的實作189* 尋找介面的實作

190* 追蹤呼叫階層190* 追蹤呼叫階層

191 191 


304* 回應會快取 15 分鐘,因此相同 URL 的重複擷取會快速傳回。304* 回應會快取 15 分鐘,因此相同 URL 的重複擷取會快速傳回。

305* 當 URL 重定向到不同的主機時,WebFetch 傳回文字結果,命名原始 URL 和重定向目標,而不是跟隨它。Claude 然後使用第二個 WebFetch 呼叫擷取新 URL。305* 當 URL 重定向到不同的主機時,WebFetch 傳回文字結果,命名原始 URL 和重定向目標,而不是跟隨它。Claude 然後使用第二個 WebFetch 呼叫擷取新 URL。

306 306 

307在預設和 `acceptEdits` 權限模式中,WebFetch 在首次到達新網域時提示。若要提前允許網域而不提示,請新增像 `WebFetch(domain:example.com)` 這樣的權限規則。`auto` 和 `bypassPermissions` [權限模式](/zh-TW/permissions#permission-modes) 完全跳過提示。307在預設和 `acceptEdits` 權限模式中,WebFetch 在首次到達新網域時提示,但有一組內建的預先核准文件網域除外,這些網域無需提示即可擷取若要提前允許另一個網域而不提示,請新增像 `WebFetch(domain:example.com)` 這樣的權限規則。`auto` 和 `bypassPermissions` [權限模式](/zh-TW/permissions#permission-modes) 完全跳過提示。

308 

309`deny`、`ask` 或 `allow` 中的明確 `WebFetch(domain:...)` 規則優先於預先核准的集合,因此您可以封鎖預先核准的網域或要求提示。

308 310 

309WebFetch 設定以 `Claude-User` 開頭的 `User-Agent` 標頭,以及偏好 Markdown 而不是 HTML 的 `Accept` 標頭,以便支援內容協商的伺服器可以直接傳回 Markdown。[Sandbox](/zh-TW/sandboxing) 網路規則是單獨設定的,因此您希望沙箱程序到達的網域仍需要明確的沙箱權限規則。311WebFetch 設定以 `Claude-User` 開頭的 `User-Agent` 標頭,以及偏好 Markdown 而不是 HTML 的 `Accept` 標頭,以便支援內容協商的伺服器可以直接傳回 Markdown。[Sandbox](/zh-TW/sandboxing) 網路規則是單獨設定的,因此您希望沙箱程序到達的網域仍需要明確的沙箱權限規則。

310 312 


348 350 

349Claude 提供對話摘要。如需確切的 MCP 工具名稱,請執行 `/mcp`。351Claude 提供對話摘要。如需確切的 MCP 工具名稱,請執行 `/mcp`。

350 352 

353<Note>

354 [advisor tool](/zh-TW/advisor) 是一個 [server tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool),由 API 執行,而不是 Claude Code 實作的工具。它沒有您可以在權限規則或 hook 匹配器中參考的名稱。

355</Note>

356 

351<h2 id="see-also">357<h2 id="see-also">

352 另請參閱358 另請參閱

353</h2>359</h2>

Details

24| `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) |

25| `Failed to fetch version` 或無法連線到下載伺服器 | [檢查網路和代理設定](#check-network-connectivity) |25| `Failed to fetch version` 或無法連線到下載伺服器 | [檢查網路和代理設定](#check-network-connectivity) |

26| `irm is not recognized` 或 `&& is not valid` | [在您的 shell 上使用正確的命令](#wrong-install-command-on-windows) |26| `irm is not recognized` 或 `&& is not valid` | [在您的 shell 上使用正確的命令](#wrong-install-command-on-windows) |

27| `Cask 'claude-code' is unavailable: No Cask with this name exists` | [更新 Homebrew](#homebrew-cask-unavailable-or-outdated) |

27| `'bash' is not recognized as the name of a cmdlet` | [使用 Windows 安裝程式命令](#wrong-install-command-on-windows) |28| `'bash' is not recognized as the name of a cmdlet` | [使用 Windows 安裝程式命令](#wrong-install-command-on-windows) |

28| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [安裝 shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |29| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [安裝 shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

29| `Claude Code does not support 32-bit Windows` | [開啟 Windows PowerShell,而非 x86 項目](#claude-code-does-not-support-32-bit-windows) |30| `Claude Code does not support 32-bit Windows` | [開啟 Windows PowerShell,而非 x86 項目](#claude-code-does-not-support-32-bit-windows) |


61curl -sI https://downloads.claude.ai/claude-code-releases/latest62curl -sI https://downloads.claude.ai/claude-code-releases/latest

62```63```

63 64 

65在 PowerShell 中,改為執行 `curl.exe -sI`。PowerShell 將 `curl` 別名為 `Invoke-WebRequest`,它會拒絕 `-sI` 旗標。

66 

64`HTTP/2 200` 行表示您已連線到伺服器。如果您看不到任何輸出、`Could not resolve host` 或連線逾時,您的網路正在阻止連線。常見原因:67`HTTP/2 200` 行表示您已連線到伺服器。如果您看不到任何輸出、`Could not resolve host` 或連線逾時,您的網路正在阻止連線。常見原因:

65 68 

66* 公司防火牆或代理阻止 `downloads.claude.ai`69* 公司防火牆或代理阻止 `downloads.claude.ai`


95 98 

96如果安裝成功但執行 `claude` 時收到 `command not found` 或 `not recognized` 錯誤,安裝目錄不在您的 PATH 中。您的 shell 在 PATH 中列出的目錄中搜尋程式,安裝程式在 macOS/Linux 上將 `claude` 放在 `~/.local/bin/claude`,或在 Windows 上放在 `%USERPROFILE%\.local\bin\claude.exe`。99如果安裝成功但執行 `claude` 時收到 `command not found` 或 `not recognized` 錯誤,安裝目錄不在您的 PATH 中。您的 shell 在 PATH 中列出的目錄中搜尋程式,安裝程式在 macOS/Linux 上將 `claude` 放在 `~/.local/bin/claude`,或在 Windows 上放在 `%USERPROFILE%\.local\bin\claude.exe`。

97 100 

101<Note>

102 [VS Code 擴充功能](/zh-TW/vs-code)不會將 `claude` 放在此位置。它在擴充功能目錄內為其自己的聊天面板捆綁了一份私有的 CLI 副本,並且不會將其新增到 PATH。如果您只安裝了擴充功能,`~/.local/bin/claude` 將不存在。執行[獨立安裝](/zh-TW/setup)以從終端使用 `claude`,然後繼續下面的步驟。

103</Note>

104 

98透過列出您的 PATH 項目並篩選 `local/bin` 來檢查安裝目錄是否在您的 PATH 中:105透過列出您的 PATH 項目並篩選 `local/bin` 來檢查安裝目錄是否在您的 PATH 中:

99 106 

100<Tabs>107<Tabs>


188 ls -la ~/.local/bin/claude195 ls -la ~/.local/bin/claude

189 ```196 ```

190 197 

198 如果任一 `ls` 命令列印 `No such file or directory`,那不是錯誤。這表示該位置沒有安裝任何內容,所以繼續進行下一個檢查。

199 

191 ```bash theme={null}200 ```bash theme={null}

192 ls -la ~/.claude/local/201 ls -la ~/.claude/local/

193 ```202 ```


390 winget install Anthropic.ClaudeCode399 winget install Anthropic.ClaudeCode

391 ```400 ```

392 401 

402<h3 id="homebrew-cask-unavailable-or-outdated">

403 Homebrew cask 無法使用或已過時

404</h3>

405 

406Homebrew 報告 `Error: Cask 'claude-code' is unavailable: No Cask with this name exists` 當您的 Homebrew cask 索引本機副本早於 cask 的發佈時間。重新整理索引並重試:

407 

408```bash theme={null}

409brew update

410brew install --cask claude-code

411```

412 

413如果 Homebrew 安裝的 Claude Code 版本比您預期的舊,通常是相同的過時索引導致的。`claude-code` cask 追蹤穩定通道,通常比最新版本晚約一週;若要取得最新版本,請改為執行 `brew install --cask claude-code@latest`。請參閱[設定發行通道](/zh-TW/setup#configure-release-channel)以了解兩個 cask 之間的差異。

414 

393<h3 id="tls-or-ssl-connection-errors">415<h3 id="tls-or-ssl-connection-errors">

394 TLS 或 SSL 連線錯誤416 TLS 或 SSL 連線錯誤

395</h3>417</h3>


592 614 

593如果您的 Git 安裝在其他地方,透過在 PowerShell 中執行 `where.exe git` 找到路徑,並使用該目錄中的 `bin\bash.exe` 路徑。615如果您的 Git 安裝在其他地方,透過在 PowerShell 中執行 `where.exe git` 找到路徑,並使用該目錄中的 `bin\bash.exe` 路徑。

594 616 

617**如果路徑正確且檔案存在**但 Claude Code 仍然報告找不到它,端點安全軟體(例如 AppLocker、群組原則軟體限制原則或 EDR 代理)可能正在干擾。在 v2.1.116 之前的版本上,Claude Code 生成了一個子程序 (`cmd.exe`) 來驗證路徑,這些原則可以阻止 — 常見的信號是 `cmd.exe /c dir "C:\Program Files\Git\bin\bash.exe"` 在您直接在 PowerShell 中執行時有效,但在由 `claude.exe` 啟動時無聲地失敗。

618 

619Claude Code v2.1.116 及更新版本直接檢查檔案系統,因此請先更新。如果錯誤在目前版本上仍然存在,請要求您的 IT 團隊在您的端點保護原則中將 `claude.exe` 和它生成的程序(包括 `cmd.exe` 和 `bash.exe`)加入允許清單。

620 

595<h3 id="claude-code-does-not-support-32-bit-windows">621<h3 id="claude-code-does-not-support-32-bit-windows">

596 Claude Code 不支援 32 位元 Windows622 Claude Code 不支援 32 位元 Windows

597</h3>623</h3>

Details

9本頁涵蓋 Claude Code 執行後的效能、穩定性和搜尋問題。如需其他問題,請從符合您遇到問題位置的頁面開始:9本頁涵蓋 Claude Code 執行後的效能、穩定性和搜尋問題。如需其他問題,請從符合您遇到問題位置的頁面開始:

10 10 

11| 症狀 | 前往 |11| 症狀 | 前往 |

12| :-------------------------------------------------------------- | :---------------------------------------------------------------- |12| :-------------------------------------------------------------- | :--------------------------------------------------------------------- |

13| `command not found`、安裝失敗、PATH 問題、`EACCES`、TLS 錯誤 | [故障排除安裝和登入](/zh-TW/troubleshoot-install) |13| `command not found`、安裝失敗、PATH 問題、`EACCES`、TLS 錯誤 | [故障排除安裝和登入](/zh-TW/troubleshoot-install) |

14| 登入迴圈、OAuth 錯誤、`403 Forbidden`、「組織已停用」、Bedrock/Vertex/Foundry 認證 | [故障排除安裝和登入](/zh-TW/troubleshoot-install#login-and-authentication) |14| 登入迴圈、OAuth 錯誤、`403 Forbidden`、「組織已停用」、Bedrock/Vertex/Foundry 認證 | [故障排除安裝和登入](/zh-TW/troubleshoot-install#login-and-authentication) |

15| 設定未套用、hooks 未觸發、MCP 伺服器未載入 | [偵錯您的設定](/zh-TW/debug-your-config) |15| 設定未套用、hooks 未觸發、MCP 伺服器未載入 | [偵錯您的設定](/zh-TW/debug-your-config) |

16| `API Error: 5xx`、`529 Overloaded`、`429`、請求驗證錯誤 | [錯誤參考](/zh-TW/errors) |16| `API Error: 5xx`、`529 Overloaded`、`429`、請求驗證錯誤 | [錯誤參考](/zh-TW/errors) |

17| `model not found` 或 `you may not have access to it` | [錯誤參考](/zh-TW/errors#theres-an-issue-with-the-selected-model) |17| `model not found` 或 `you may not have access to it` | [錯誤參考](/zh-TW/errors#there%E2%80%99s-an-issue-with-the-selected-model) |

18| VS Code 擴充功能未連接或未偵測到 Claude | [VS Code 整合](/zh-TW/vs-code#fix-common-issues) |18| VS Code 擴充功能未連接或未偵測到 Claude | [VS Code 整合](/zh-TW/vs-code#fix-common-issues) |

19| JetBrains 外掛程式或 IDE 未偵測到 | [JetBrains 整合](/zh-TW/jetbrains#troubleshooting) |19| JetBrains 外掛程式或 IDE 未偵測到 | [JetBrains 整合](/zh-TW/jetbrains#troubleshooting) |

20| 高 CPU 或記憶體、回應緩慢、掛起、搜尋找不到檔案 | [效能和穩定性](#performance-and-stability)下方 |20| 高 CPU 或記憶體、回應緩慢、掛起、搜尋找不到檔案 | [效能和穩定性](#performance-and-stability)下方 |


361. 定期使用 `/compact` 減少上下文大小361. 定期使用 `/compact` 減少上下文大小

372. 在主要任務之間關閉並重新啟動 Claude Code372. 在主要任務之間關閉並重新啟動 Claude Code

383. 考慮將大型構建目錄新增到您的 `.gitignore` 檔案383. 考慮將大型構建目錄新增到您的 `.gitignore` 檔案

394. 使用 [`claude --safe-mode`](/zh-TW/cli-reference#cli-flags) 重新啟動以檢查外掛程式、MCP 伺服器或 hook 是否為來源。它會停用該工作階段的所有自訂;如果使用量下降,請參閱[偵錯您的設定](/zh-TW/debug-your-config#test-against-a-clean-configuration)以找出是哪一個

39 40 

40如果在這些步驟後記憶體使用仍然很高,請執行 `/heapdump` 以將 JavaScript 堆快照和記憶體分解寫入 `~/Desktop`。在沒有 Desktop 資料夾的 Linux 上,檔案會寫入您的主目錄。41如果在這些步驟後記憶體使用仍然很高,請執行 `/heapdump` 以將 JavaScript 堆快照和記憶體分解寫入 `~/Desktop`。在沒有 Desktop 資料夾的 Linux 上,檔案會寫入您的主目錄。

41 42 


65 66 

66重新啟動不會遺失您的對話。在同一目錄中執行 `claude --resume` 以繼續會話。67重新啟動不會遺失您的對話。在同一目錄中執行 `claude --resume` 以繼續會話。

67 68 

68<h3 id="garbled-or-corrupted-text-in-an-editor-s-integrated-terminal">69<h3 id="garbled-or-corrupted-text-in-an-editors-integrated-terminal">

69 編輯器整合終端中的文字亂碼或損毀70 編輯器整合終端中的文字亂碼或損毀

70</h3>71</h3>

71 72 

ultraplan.md +2 −2

Details

38 38 

39命令和關鍵字路徑在啟動前開啟確認對話框。本機計畫路徑會跳過此對話框,因為該選擇已作為確認。如果 [Remote Control](/zh-TW/remote-control) 處於活動狀態,當 ultraplan 啟動時它會斷開連接,因為兩個功能都佔用 claude.ai/code 介面,一次只能連接一個。39命令和關鍵字路徑在啟動前開啟確認對話框。本機計畫路徑會跳過此對話框,因為該選擇已作為確認。如果 [Remote Control](/zh-TW/remote-control) 處於活動狀態,當 ultraplan 啟動時它會斷開連接,因為兩個功能都佔用 claude.ai/code 介面,一次只能連接一個。

40 40 

41雲端工作階段啟動後,您的 CLI 的提示輸入會顯示狀態指示器,同時遠端工作階段工作41雲端工作階段啟動後,您的 CLI 的提示輸入會顯示狀態指示器,同時雲端工作階段工作

42 42 

43| 狀態 | 含義 |43| 狀態 | 含義 |

44| :----------------------------- | :----------------------- |44| :----------------------------- | :----------------------- |


70 在網路上執行70 在網路上執行

71</h3>71</h3>

72 72 

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) 並從網路介面建立拉取請求。73在瀏覽器中選擇 **Approve Claude's plan and start coding** 以讓 Claude 在同一 Claude Code on the web 工作階段中實施它。您的終端機會顯示確認,狀態指示器會清除,工作會在雲端繼續。實施完成後,[檢視差異](/zh-TW/claude-code-on-the-web#review-changes)並從網路介面建立拉取請求。

74 74 

75<h3 id="send-the-plan-back-to-your-terminal">75<h3 id="send-the-plan-back-to-your-terminal">

76 將計畫發送回您的終端機76 將計畫發送回您的終端機

vs-code.md +35 −9

Details

19安裝前,請確保您擁有:19安裝前,請確保您擁有:

20 20 

21* VS Code 1.98.0 或更高版本21* VS Code 1.98.0 或更高版本

22* Anthropic 帳戶(首次開啟擴充功能時您將登入)。如果您使用第三方提供者(如 Amazon Bedrock 或 Google Vertex AI),請改為參閱[使用第三方提供者](#use-third-party-providers)。22* Anthropic 帳戶:任何付費 Claude 訂閱Pro、Max、Team 或 Enterprise或 Claude Console 帳戶都可以使用,不需要 API 金鑰首次開啟擴充功能時,您將[使用此帳戶登入](/zh-TW/authentication#log-in-to-claude-code)。如果您透過第三方提供者(如 Amazon Bedrock 或 Google Vertex AI)存取 Claude請參閱[使用第三方提供者](#use-third-party-providers)以取得設定說明

23 23 

24<Tip>24<Tip>

25 此擴充功能包含 CLI(命令列介面),您可以從 VS Code 的整合終端機存取它以獲得進階功能。有關詳細資訊請參閱 [VS Code 擴充功能與 Claude Code CLI](#vs-code-extension-vs-claude-code-cli)。25 此擴充功能包含其自有的 CLI(命令列介面)副本供聊天面板使用。若要在 VS Code 的整合終端機中執行 `claude`您還需要[獨立 CLI 安裝](/zh-TW/setup)。詳細資訊請參閱 [VS Code 擴充功能與 Claude Code CLI](#vs-code-extension-vs-claude-code-cli)。

26</Tip>26</Tip>

27 27 

28<h2 id="install-the-extension">28<h2 id="install-the-extension">


36 36 

37或在 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」,然後點擊**安裝**。

38 38 

39擴充功能也會安裝在其他 VS Code 分支中,例如 Devin Desktop 或 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) 安裝。如果您的編輯器無法安裝擴充功能,[安裝 CLI](/zh-TW/quickstart) 並在其整合終端中執行 `claude`。CLI 可在任何終端中運作。

40 40 

41<Note>如果安裝後擴充功能未出現,請重新啟動 VS Code 或從命令面板執行「Developer: Reload Window」。</Note>41<Note>如果安裝後擴充功能未出現,請重新啟動 VS Code 或從命令面板執行「Developer: Reload Window」。</Note>

42 42 


70 70 

71 如果您在 shell 中設定了 `ANTHROPIC_API_KEY` 但仍然看到登入提示,VS Code 可能沒有繼承您的 shell 環境。使用 `code .` 從終端機啟動 VS Code,以便它繼承您的環境變數,或改為使用您的 Claude 帳戶登入。71 如果您在 shell 中設定了 `ANTHROPIC_API_KEY` 但仍然看到登入提示,VS Code 可能沒有繼承您的 shell 環境。使用 `code .` 從終端機啟動 VS Code,以便它繼承您的環境變數,或改為使用您的 Claude 帳戶登入。

72 72 

73 登入後,會出現**學習 Claude Code** 檢查清單。透過點擊**顯示給我**來完成每一項,或用 X 關閉它。若要稍後重新開啟它,請在 VS Code 設定中的'擴充功能''Claude Code'下取消勾選**隱藏入門**。73 登入後,會出現**學習 Claude Code** 檢查清單。透過點擊**顯示給我**來完成每一項,或用 X 關閉它。若要稍後重新開啟它,請在 VS Code 設定中的擴充功能 Claude Code 下取消勾選**隱藏入門**。

74 </Step>74 </Step>

75 75 

76 <Step title="傳送提示">76 <Step title="傳送提示">


131 131 

132點擊 Claude Code 面板頂部的**工作階段歷史記錄**按鈕以存取您的對話歷史記錄。您可以按關鍵字搜尋或按時間瀏覽(今天、昨天、過去 7 天等)。點擊任何對話以使用完整訊息歷史記錄恢復它。新工作階段會根據您的第一條訊息接收 AI 生成的標題。將滑鼠懸停在工作階段上以顯示重新命名和移除操作:重新命名以給它一個描述性標題,或移除以將其從清單中刪除。有關恢復工作階段的更多資訊,請參閱 [Manage sessions](/zh-TW/sessions)。132點擊 Claude Code 面板頂部的**工作階段歷史記錄**按鈕以存取您的對話歷史記錄。您可以按關鍵字搜尋或按時間瀏覽(今天、昨天、過去 7 天等)。點擊任何對話以使用完整訊息歷史記錄恢復它。新工作階段會根據您的第一條訊息接收 AI 生成的標題。將滑鼠懸停在工作階段上以顯示重新命名和移除操作:重新命名以給它一個描述性標題,或移除以將其從清單中刪除。有關恢復工作階段的更多資訊,請參閱 [Manage sessions](/zh-TW/sessions)。

133 133 

134<h3 id="resume-remote-sessions-from-claude-ai">134<h3 id="resume-cloud-sessions-from-claude-ai">

135 從 Claude.ai 恢復遠端工作階段135 從 Claude.ai 恢復遠端工作階段

136</h3>136</h3>

137 137 


155 只有使用 GitHub 儲存庫啟動的網路工作階段才會出現在遠端標籤中。恢復會在本機載入對話歷史記錄;變更不會同步回 claude.ai。155 只有使用 GitHub 儲存庫啟動的網路工作階段才會出現在遠端標籤中。恢復會在本機載入對話歷史記錄;變更不會同步回 claude.ai。

156</Note>156</Note>

157 157 

158<h3 id="check-account-and-usage">

159 檢查帳戶和使用情況

160</h3>

161 

162從命令菜單執行 `/usage` 以開啟「帳戶與使用情況」對話框。它顯示您登入的帳戶、方案,以及目前工作階段和本週的使用情況列,包括每個限制重設的時間。

163 

164該對話框也會分解對您的方案限制有貢獻的內容。它會標記佔最近使用情況 10% 或以上的行為,例如快取未命中、長上下文和子代理程式密集或高度平行的工作階段,每個都有減少它的提示。歸因表顯示每個技能、子代理程式、外掛程式和 MCP server 貢獻了多少使用情況。需要 Claude Code v2.1.174 或更新版本。

165 

166使用「日」和「週」切換以在過去 24 小時和過去 7 天之間切換。這些數字是近似值,並從此機器上的本機工作階段計算,因此不包括來自其他裝置或 claude.ai 的使用情況。有關追蹤和減少使用情況的更多資訊,請參閱 [Track your costs](/zh-TW/costs#track-your-costs)。

167 

158<h2 id="customize-your-workflow">168<h2 id="customize-your-workflow">

159 自訂您的工作流程169 自訂您的工作流程

160</h2>170</h2>


366 VS Code 擴充功能與 Claude Code CLI376 VS Code 擴充功能與 Claude Code CLI

367</h2>377</h2>

368 378 

369Claude Code 既可作為 VS Code 擴充功能(圖形面板)也可作為 CLI(終端機中的命令列介面)使用。某些功能僅在 CLI 中可用。如果您需要 CLI 專用功能,請在 VS Code 的整合終端機中執行 `claude`。379Claude Code 既可作為 VS Code 擴充功能(圖形面板)也可作為 CLI(終端機中的命令列介面)使用。某些功能僅在 CLI 中可用。如果您需要 CLI 專用功能,請在 VS Code 的整合終端機中執行 `claude`。這需要[獨立 CLI 安裝](/zh-TW/setup):擴充功能不會將 `claude` 新增到您的 PATH。請參閱[在 VS Code 中執行 CLI](#run-cli-in-vs-code)。

370 380 

371| 功能 | CLI | VS Code 擴充功能 |381| 功能 | CLI | VS Code 擴充功能 |

372| ------------- | --------------------- | ---------------------------------------- |382| ------------- | --------------------- | ---------------------------------------- |


394 404 

395若要在 VS Code 中使用 CLI,請開啟整合終端機(Windows/Linux 上的 `` Ctrl+` `` 或 Mac 上的 `` Cmd+` ``)並執行 `claude`。CLI 會自動與您的 IDE 整合,以獲得差異檢視和診斷共享等功能。405若要在 VS Code 中使用 CLI,請開啟整合終端機(Windows/Linux 上的 `` Ctrl+` `` 或 Mac 上的 `` Cmd+` ``)並執行 `claude`。CLI 會自動與您的 IDE 整合,以獲得差異檢視和診斷共享等功能。

396 406 

407安裝擴充功能不會將 `claude` 放在您的 shell PATH 上。擴充功能為其聊天面板捆綁了 CLI 的私有副本,但在終端機中輸入 `claude` 需要[獨立 CLI 安裝](/zh-TW/setup)。執行一次安裝,此頁面上的命令(包括 `claude mcp add` 和 `claude --resume`)在任何終端機中都可以運作。如果安裝後仍未找到 `claude`,請[驗證您的 PATH](/zh-TW/troubleshoot-install#verify-your-path)。

408 

397如果使用外部終端機,請在 Claude Code 中執行 `/ide` 以將其連接到 VS Code。409如果使用外部終端機,請在 Claude Code 中執行 `/ide` 以將其連接到 VS Code。

398 410 

399<h3 id="switch-between-extension-and-cli">411<h3 id="switch-between-extension-and-cli">


530 修復常見問題542 修復常見問題

531</h2>543</h2>

532 544 

533<h3 id="extension-won-t-install">545<h3 id="extension-wont-install">

534 擴充功能無法安裝546 擴充功能無法安裝

535</h3>547</h3>

536 548 


5862. 搜尋「Claude Code」5982. 搜尋「Claude Code」

5873. 點擊**卸載**5993. 點擊**卸載**

588 600 

589若要也移除擴充功能資料並重設所有設定601若要也移除擴充功能資料並重設所有設定,請刪除您平台的擴充功能儲存目錄。

602 

603在 macOS 上:

590 604 

591```bash theme={null}605```bash theme={null}

592rm -rf ~/.vscode/globalStorage/anthropic.claude-code606rm -rf ~/Library/"Application Support"/Code/User/globalStorage/anthropic.claude-code

607```

608 

609在 Linux 上:

610 

611```bash theme={null}

612rm -rf ~/.config/Code/User/globalStorage/anthropic.claude-code

613```

614 

615在 Windows 上,在 PowerShell 中:

616 

617```powershell theme={null}

618Remove-Item -Recurse -Force "$env:APPDATA\Code\User\globalStorage\anthropic.claude-code"

593```619```

594 620 

595如需其他幫助,請參閱[故障排除指南](/zh-TW/troubleshooting)。621如需其他幫助,請參閱[故障排除指南](/zh-TW/troubleshooting)。

Details

129 </Step>129 </Step>

130 130 

131 <Step title="選擇權限模式">131 <Step title="選擇權限模式">

132 輸入框旁邊的模式下拉菜單預設為**自動接受編輯**,其中 Claude 進行更改並推送分支而無需停止以獲得批准。如果您希望 Claude 提出方法並在編輯文件前等待您的同意,請切換到 **Plan mode**。雲端會話不提供詢問權限、自動模式或繞過權限。請參閱[權限模式](/zh-TW/permission-modes)以了解完整列表。132 輸入框旁邊的模式下拉菜單預設為**接受編輯**,其中 Claude 進行更改並推送分支而無需停止以獲得批准。如果您希望 Claude 提出方法並在編輯文件前等待您的同意,請切換到 **Plan Mode**。雲端會話不提供詢問權限或繞過權限。請參閱[權限模式](/zh-TW/permission-modes)以了解完整列表。

133 </Step>133 </Step>

134 134 

135 <Step title="描述任務並提交">135 <Step title="描述任務並提交">

whats-new.md +16 −0

Details

8 8 

9每週開發摘要重點介紹最有可能改變您工作方式的功能。每個條目都包含可執行的程式碼、簡短的示範和完整文件的連結。如需每個錯誤修復和次要改進,請參閱 [changelog](/zh-TW/changelog)。9每週開發摘要重點介紹最有可能改變您工作方式的功能。每個條目都包含可執行的程式碼、簡短的示範和完整文件的連結。如需每個錯誤修復和次要改進,請參閱 [changelog](/zh-TW/changelog)。

10 10 

11<Update label="Week 24" description="June 8–12, 2026" tags={["v2.1.166–v2.1.176"]}>

12 **`/cd`**:在對話中途將目前的工作階段移至新的工作目錄,無需重建提示快取。

13 

14 本週還有:**sub-agents 可以產生自己的 sub-agents**(背景鏈最多五層深);**`--safe-mode`** 以所有自訂設定停用的狀態啟動 Claude Code 以進行疑難排解;以及 **`fallbackModel`** 配置最多三個依序嘗試的備用模型。

15 

16 [閱讀 Week 24 摘要 →](/zh-TW/whats-new/2026-w24)

17</Update>

18 

19<Update label="Week 23" description="June 1–5, 2026" tags={["v2.1.158–v2.1.165"]}>

20 **Bedrock、Vertex 和 Foundry 上的 Auto mode**:auto mode 現在可在第三方提供者上用於 Opus 4.7 和 Opus 4.8,用背景安全檢查取代權限提示。

21 

22 本週還有:**更安全的自動編輯**在 `acceptEdits` 模式中寫入可執行程式碼的檔案前提示;**`/plugin list`** 內聯列印您安裝的外掛程式;以及**版本需求**讓受管部署要求核准的 Claude Code 版本範圍。

23 

24 [閱讀 Week 23 摘要 →](/zh-TW/whats-new/2026-w23)

25</Update>

26 

11<Update label="Week 22" description="May 25–29, 2026" tags={["v2.1.150–v2.1.157"]}>27<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`。28 **Claude Opus 4.8**:Max、Team Premium、Enterprise 隨用隨付和 Anthropic API 帳戶的新預設模型,預設具有高努力等級,以及用於最困難任務的 `/effort xhigh`。

13 29 

whats-new/2026-w23.md +100 −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# 第 23 週 · 2026 年 6 月 1–5 日

6 

7> 在 Bedrock、Vertex 和 Foundry 上執行自動模式,在 acceptEdits 模式下提示寫入可執行程式碼的檔案,使用 /plugin list 列出已安裝的外掛程式,以及為受管部署要求已核准的版本範圍。

8 

9<div className="digest-meta">

10 <span>發行版本 <a href="/zh-TW/docs/changelog#2-1-158">v2.1.158 → v2.1.165</a></span>

11 <span>4 項功能 · 6 月 1–5 日</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Bedrock、Vertex 和 Foundry 上的自動模式</span>

17 <span className="digest-feature-pill">v2.1.158</span>

18 </div>

19 

20 <p className="digest-feature-lede">自動模式現已在 Bedrock、Vertex 和 Foundry 上提供,適用於 Opus 4.7 和 Opus 4.8,以第三方提供者的背景安全檢查取代權限提示。透過設定 <code>CLAUDE\_CODE\_ENABLE\_AUTO\_MODE=1</code> 來選擇加入。</p>

21 

22 <p className="digest-feature-try">在第三方提供者上選擇加入,然後使用 Shift+Tab 切換到自動模式:</p>

23 

24 ```bash terminal theme={null}

25 export CLAUDE_CODE_ENABLE_AUTO_MODE=1

26 ```

27 

28 <a className="digest-feature-link" href="/zh-TW/docs/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry">在第三方提供者上啟用自動模式</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">更安全的自動編輯</span>

34 <span className="digest-feature-pill">v2.1.160</span>

35 </div>

36 

37 <p className="digest-feature-lede">Claude Code 現在會在寫入可執行程式碼的檔案前提示,即使在 <code>acceptEdits</code> 模式下也是如此。受保護的集合涵蓋 shell 啟動檔案(例如 <code>.zshenv</code> 和 <code>.bash\_login</code>)、<code>\~/.config/git/</code> 下的 git 設定,以及建置工具設定(例如 <code>.npmrc</code>、<code>.bazelrc</code> 和 <code>.pre-commit-config.yaml</code>)。除了 <code>bypassPermissions</code> 模式外,這些寫入在任何模式下都不會自動核准。</p>

38 

39 <p className="digest-feature-try">在 acceptEdits 模式下工作;Claude 現在會在寫入這些檔案前暫停:</p>

40 

41 ```bash terminal theme={null}

42 claude --permission-mode acceptEdits

43 ```

44 

45 <a className="digest-feature-link" href="/zh-TW/docs/permission-modes#protected-paths">受保護的路徑</a>

46</div>

47 

48<div className="digest-feature">

49 <div className="digest-feature-header">

50 <span className="digest-feature-title">使用 /plugin list 列出已安裝的外掛程式</span>

51 <span className="digest-feature-pill">v2.1.163</span>

52 </div>

53 

54 <p className="digest-feature-lede">新的 <code>/plugin list</code> 命令會內聯列印已安裝的外掛程式,無需開啟 <code>/plugin</code> 選單,也可從 shell 中以 <code>claude plugin list</code> 的形式使用。在互動形式中,新增 `--enabled` 或 `--disabled` 以僅顯示處於該狀態的外掛程式。</p>

55 

56 <p className="digest-feature-try">列出目前開啟的外掛程式:</p>

57 

58 ```text Claude Code theme={null}

59 > /plugin list --enabled

60 ```

61 

62 <a className="digest-feature-link" href="/zh-TW/docs/plugins-reference#plugin-list">外掛程式命令</a>

63</div>

64 

65<div className="digest-feature">

66 <div className="digest-feature-header">

67 <span className="digest-feature-title">受管部署的版本要求</span>

68 <span className="digest-feature-pill">v2.1.163</span>

69 </div>

70 

71 <p className="digest-feature-lede">兩個受管設定 <code>requiredMinimumVersion</code> 和 <code>requiredMaximumVersion</code> 可讓您的組織要求已核准的 Claude Code 版本範圍。超出範圍的用戶端會在啟動時退出,並告知使用者透過組織的方法進行更新。<code>claude update</code>、<code>claude install</code> 和 <code>claude doctor</code> 會繼續運作,以便使用者仍可復原。</p>

72 

73 <p className="digest-feature-try">在受管設定中新增下限,以便較舊的用戶端拒絕啟動:</p>

74 

75 ```json managed-settings.json theme={null}

76 "requiredMinimumVersion": "2.1.163"

77 ```

78 

79 <a className="digest-feature-link" href="/zh-TW/docs/admin-setup#decide-what-to-enforce">決定要強制執行的項目</a>

80</div>

81 

82<div className="digest-wins">

83 <p className="digest-wins-title">其他成果</p>

84 

85 <div className="digest-wins-grid">

86 <div><a href="/zh-TW/docs/workflows">動態工作流程</a>的觸發關鍵字從 <code>workflow</code> 變更為 <code>ultracode</code>;用您自己的話要求工作流程仍然有效,且關鍵字在提示中以紫色突出顯示</div>

87 <div><a href="/zh-TW/docs/hooks">Stop 和 SubagentStop hooks</a> 可以傳回 <code>hookSpecificOutput.additionalContext</code> 以向 Claude 提供回饋並保持回合進行,而不是被視為錯誤</div>

88 <div><code>claude mcp</code> list、get 和 add 不再列印機密:環境變數參考不會展開,認證標頭和 URL 機密會被編輯</div>

89 <div>平行工具批次中失敗的 Bash 命令不再取消其他命令;每個工具獨立傳回自己的結果</div>

90 <div>當您使用單一檔案 <code>grep</code>、<code>egrep</code> 或 <code>fgrep</code> 檢視檔案時,編輯檔案不再需要先進行單獨的 Read</div>

91 <div>在自動完成選單中按一下命令現在會將其填入您的提示中,而不是立即執行;按 Enter 鍵執行</div>

92 <div>在 `--tools` 中列出 <code>Grep</code> 或 <code>Glob</code> 現在會在具有嵌入式搜尋的原生組建上提供專用搜尋工具,而不是無聲地忽略這些名稱</div>

93 <div><code>/effort</code> 現在會確認您選擇的等級是否會保留為新工作階段的預設值</div>

94 <div><code>OTEL\_RESOURCE\_ATTRIBUTES</code> 值現在會作為標籤附加到度量資料點上,因此您可以按自訂維度(例如團隊或儲存庫)切割使用量度量</div>

95 <div>Windsurf 在 <code>/ide</code>、<code>/terminal-setup</code> 和 <code>/scroll-speed</code> 中重新命名為 Devin Desktop,遵循編輯器的重新品牌化</div>

96 <div><code>/btw</code> 獲得 <code>c to copy</code> 快捷鍵,可將原始 markdown 答案複製到剪貼簿</div>

97 </div>

98</div>

99 

100[v2.1.158–v2.1.165 的完整變更日誌 →](/zh-TW/changelog#2-1-158)

whats-new/2026-w24.md +84 −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# 第 24 週 · 2026 年 6 月 8–12 日

6 

7> 使用 /cd 將工作階段移至新目錄、讓子代理程式產生自己的子代理程式,以及使用安全模式對損壞的設定進行故障排除。

8 

9<div className="digest-meta">

10 <span>版本 <a href="/zh-TW/docs/changelog#2-1-166">v2.1.166 → v2.1.176</a></span>

11 <span>3 項功能 · 6 月 8–12 日</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">使用 /cd 移動工作階段</span>

17 <span className="digest-feature-pill">v2.1.169</span>

18 </div>

19 

20 <p className="digest-feature-lede">新的 <code>/cd</code> 命令將目前的工作階段移至不同的工作目錄,而不需重建提示快取:新目錄的 <code>CLAUDE.md</code> 會作為訊息附加,而不是取代系統提示。工作階段會重新定位到新目錄的專案儲存空間,因此 `--resume` 和 `--continue` 會在該處找到它。如果您之前未在該目錄中工作過,Claude 會提示您信任該目錄。</p>

21 

22 <p className="digest-feature-try">將工作階段移至另一個專案而不重新啟動:</p>

23 

24 ```text Claude Code theme={null}

25 > /cd ../other-project

26 ```

27 

28 <a className="digest-feature-link" href="/zh-TW/docs/commands#all-commands">命令參考</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">子代理程式可以產生子代理程式</span>

34 <span className="digest-feature-pill">v2.1.172</span>

35 </div>

36 

37 <p className="digest-feature-lede">子代理程式現在可以產生自己的子代理程式。提示下方的子代理程式面板顯示完整的樹狀結構:每一列都會顯示其後代的計數以及返回 <code>main</code> 的路徑。背景子代理程式的深度上限為五層,以防止失控的並行樹狀結構;前景鏈可以在任何深度產生,並且是自我限制的。</p>

38 

39 <p className="digest-feature-try">開啟代理程式檢視以觀看工作展開時的巢狀樹狀結構:</p>

40 

41 ```text Claude Code theme={null}

42 > /agents

43 ```

44 

45 <a className="digest-feature-link" href="/zh-TW/docs/sub-agents#spawn-nested-subagents">產生巢狀子代理程式</a>

46</div>

47 

48<div className="digest-feature">

49 <div className="digest-feature-header">

50 <span className="digest-feature-title">使用安全模式進行故障排除</span>

51 <span className="digest-feature-pill">v2.1.169</span>

52 </div>

53 

54 <p className="digest-feature-lede">使用 `--safe-mode` 啟動 Claude Code,或設定 <code>CLAUDE\_CODE\_SAFE\_MODE</code>,以在停用所有自訂項目的情況下啟動:<code>CLAUDE.md</code>、skills、plugins、hooks、MCP 伺服器以及自訂命令和代理程式不會載入。驗證、模型選擇、內建工具和權限仍然有效。如果問題在安全模式中消失,則其中一個介面是原因。</p>

55 

56 <p className="digest-feature-try">啟動乾淨的工作階段以隔離損壞的設定:</p>

57 

58 ```bash terminal theme={null}

59 claude --safe-mode

60 ```

61 

62 <a className="digest-feature-link" href="/zh-TW/docs/debug-your-config#test-against-a-clean-configuration">針對乾淨的設定進行測試</a>

63</div>

64 

65<div className="digest-wins">

66 <p className="digest-wins-title">其他成果</p>

67 

68 <div className="digest-wins-grid">

69 <div><a href="/zh-TW/docs/model-config#fallback-model-chains"><code>fallbackModel</code></a> 設定最多三個備用模型,在主要模型過載或無法使用時按順序嘗試,而 `--fallback-model` 現在也適用於互動式工作階段</div>

70 <div>工作階段標題現在以您的對話語言生成;使用 <code>language</code> 設定釘選特定的標題</div>

71 <div>`claude agents --json` 新增 `--all` 以包含已完成的工作階段以及新的 <code>id</code> 和 <code>state</code> 欄位,並且不再省略被阻止或新分派的工作階段</div>

72 <div>在 <code>/plugin</code> 中瀏覽市集的 plugins 現在有搜尋列</div>

73 <div>新的 <code>disableBundledSkills</code> 設定和 <code>CLAUDE\_CODE\_DISABLE\_BUNDLED\_SKILLS</code> 隱藏捆綁的 skills、工作流程和內建命令不讓模型看到</div>

74 <div>拒絕規則在工具名稱位置接受 glob,因此 <code>"\*"</code> 拒絕所有工具,而拒絕規則中的未知工具名稱現在會在啟動時發出警告</div>

75 <div>跨工作階段訊息傳遞已強化:透過 <code>SendMessage</code> 從其他工作階段轉送的訊息不再帶有使用者授權,而自動模式會阻止它們</div>

76 <div>Amazon Bedrock 在 <code>AWS\_REGION</code> 未設定時從 <code>\~/.aws</code> 設定檔讀取 AWS 區域,而 <code>/status</code> 顯示區域的來源</div>

77 <div>新的 <code>enforceAvailableModels</code> 受管設定使 <code>availableModels</code> 允許清單也限制預設模型</div>

78 <div>Chrome 瀏覽器工具中的 Claude 現在在單一批次呼叫中載入,而不是每個工具一次</div>

79 <div><code>claude update</code> 在下載前宣佈目標版本,而不是保持沉默</div>

80 <div>新的 <code>footerLinksRegexes</code> 設定將正規表達式相符的連結徽章新增至頁尾列</div>

81 </div>

82</div>

83 

84[v2.1.166–v2.1.176 的完整變更日誌 →](/zh-TW/changelog#2-1-166)

workflows.md +4 −2

Details

9{/* plan-availability: feature=workflows plans=pro,max,team,enterprise providers=all */}9{/* plan-availability: feature=workflows plans=pro,max,team,enterprise providers=all */}

10 10 

11<Note>11<Note>

12 Dynamic workflows 處於研究預覽階段。它們需要 Claude Code v2.1.154 或更新版本,並在所有付費方案上可用,具有 Anthropic API 存取權限,以及在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上可用。在 Pro 上,從 `/config` 中的 Dynamic workflows 列啟用它們。12 Dynamic workflows 需要 Claude Code v2.1.154 或更新版本,並在所有付費方案上可用,具有 Anthropic API 存取權限,以及在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上可用。在 Pro 上,從 `/config` 中的 Dynamic workflows 列啟用它們。

13</Note>13</Note>

14 14 

15動態工作流程是一個 JavaScript 指令碼,可大規模協調[子代理](/zh-TW/sub-agents)。Claude 為您描述的任務編寫指令碼,執行時期在背景執行它,同時您的工作階段保持回應。15動態工作流程是一個 JavaScript 指令碼,可大規模協調[子代理](/zh-TW/sub-agents)。Claude 為您描述的任務編寫指令碼,執行時期在背景執行它,同時您的工作階段保持回應。


138 138 

139Claude Code 在您的輸入中突出顯示該關鍵字,Claude 為任務編寫工作流程指令碼,而不是逐輪完成它。如果執行執行您想要的操作,您可以之後[將其儲存為命令](#save-the-workflow-for-reuse)。139Claude Code 在您的輸入中突出顯示該關鍵字,Claude 為任務編寫工作流程指令碼,而不是逐輪完成它。如果執行執行您想要的操作,您可以之後[將其儲存為命令](#save-the-workflow-for-reuse)。

140 140 

141如果您沒有打算啟動工作流程,請在 macOS 上按 `Option+W` 或在 Windows 和 Linux 上按 `Alt+W` 以忽略此提示的突出顯示,或在游標位於突出顯示單詞的正後方時按退格鍵。要停止該單詞完全觸發,請在 `/config` 中關閉 Workflow keyword trigger。141如果您沒有打算啟動工作流程,請在 macOS 上按 `Option+W` 或在 Windows 和 Linux 上按 `Alt+W` 以忽略此提示的突出顯示,或在游標位於突出顯示單詞的正後方時按退格鍵。要停止該單詞完全觸發,請在 `/config` 中關閉 Ultracode keyword trigger。

142 142 

143如果您已經以另一種方式建立了協調器,例如子代理提示的資料夾或一個分散工作的技能,您可以指向 Claude 並要求工作流程執行相同的操作。143如果您已經以另一種方式建立了協調器,例如子代理提示的資料夾或一個分散工作的技能,您可以指向 Claude 並要求工作流程執行相同的操作。

144 144 


198 198 

199按 Enter 儲存。工作流程在未來工作階段中從任一位置作為 `/<name>` 執行。199按 Enter 儲存。工作流程在未來工作階段中從任一位置作為 `/<name>` 執行。

200 200 

201{/* min-version: 2.1.178 */}自 v2.1.178 起,儲存到專案位置會寫入您的工作目錄和儲存庫根目錄之間已存在的最接近的 `.claude/workflows/` 目錄,或如果尚不存在則寫入儲存庫根目錄。專案工作流程也從該路徑沿著的每個 `.claude/workflows/` 載入,當多個定義相同名稱時 Claude Code 執行最接近工作目錄的那個。

202 

201如果專案工作流程和個人工作流程共享名稱,則執行專案工作流程。203如果專案工作流程和個人工作流程共享名稱,則執行專案工作流程。

202 204 

203<h3 id="pass-input-to-a-saved-workflow">205<h3 id="pass-input-to-a-saved-workflow">

worktrees.md +3 −1

Details

36 36 

37您也可以在會話期間要求 Claude「在 worktree 中工作」,它將使用 [`EnterWorktree`](/zh-TW/tools-reference) 工具建立一個。進入 worktree 後,Claude 可以透過呼叫 `EnterWorktree` 並指定目標路徑,直接切換到 `.claude/worktrees/` 下的另一個 worktree。前一個 worktree 保持在磁碟上未被觸及。37您也可以在會話期間要求 Claude「在 worktree 中工作」,它將使用 [`EnterWorktree`](/zh-TW/tools-reference) 工具建立一個。進入 worktree 後,Claude 可以透過呼叫 `EnterWorktree` 並指定目標路徑,直接切換到 `.claude/worktrees/` 下的另一個 worktree。前一個 worktree 保持在磁碟上未被觸及。

38 38 

39在第一次在目錄中使用 `--worktree` 之前,請透過在該目錄中執行一次 `claude` 來接受工作區信任對話。如果尚未接受信任,`--worktree` 將以錯誤退出並提示您先在目錄中執行 `claude`,包括與 `-p` 結合時39在第一次在目錄中使用 `--worktree` 之前,請透過在該目錄中執行一次 `claude` 來接受工作區信任對話。如果尚未接受信任,`--worktree` 將以錯誤退出並提示您先在目錄中執行 `claude`。非互動式執行搭配 `-p` 會跳過[信任檢查](/zh-TW/security)因此 `claude -p --worktree` 會在沒有信任檢查的情況下進行

40 40 

41<Tip>41<Tip>

42 將 `.claude/worktrees/` 新增到您的 `.gitignore`,以便 worktree 內容不會在您的主要檢出中顯示為未追蹤的檔案。42 將 `.claude/worktrees/` 新增到您的 `.gitignore`,以便 worktree 內容不會在您的主要檢出中顯示為未追蹤的檔案。


102 102 

103Claude 為子代理和[背景會話](/zh-TW/agent-view#how-file-edits-are-isolated)建立的 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 永遠不會被此掃描移除。

104 104 

105當代理正在執行時,Claude 會在其 worktree 上執行 `git worktree lock`,以便並行清理無法將其移除。當代理完成時,鎖定會被釋放。若要清理掃描保留的 worktree,請執行 `git worktree remove`,如果 worktree 有未提交的變更或未追蹤的檔案,請新增 `--force`。

106 

105<h2 id="manage-worktrees-manually">107<h2 id="manage-worktrees-manually">

106 手動管理 worktrees108 手動管理 worktrees

107</h2>109</h2>

Details

8 8 

9零數據保留 (ZDR) 在通過 Claude for Enterprise 使用 Claude Code 時可用。啟用 ZDR 後,Claude Code 會話期間生成的提示和模型回應會實時處理,並在返回回應後不會由 Anthropic 存儲,除非需要遵守法律或防止濫用。9零數據保留 (ZDR) 在通過 Claude for Enterprise 使用 Claude Code 時可用。啟用 ZDR 後,Claude Code 會話期間生成的提示和模型回應會實時處理,並在返回回應後不會由 Anthropic 存儲,除非需要遵守法律或防止濫用。

10 10 

11<Note>

12 ZDR 不包含在標準 Claude for Enterprise 方案中,也無法從您的管理員設定中啟用。它僅適用於符合條件的帳戶,需要由 Anthropic 進行單獨啟用。如果您的組織需要 ZDR,請[聯絡銷售](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request)或您的 Anthropic 帳戶團隊以確認符合條件。

13</Note>

14 

11Claude for Enterprise 上的 ZDR 使企業客戶能夠使用 Claude Code 並實現零數據保留,同時獲得管理功能:15Claude for Enterprise 上的 ZDR 使企業客戶能夠使用 Claude Code 並實現零數據保留,同時獲得管理功能:

12 16 

13* 每個用戶的成本控制17* 每個用戶的成本控制


31 ZDR 涵蓋的內容35 ZDR 涵蓋的內容

32</h3>36</h3>

33 37 

34ZDR 涵蓋通過 Claude for Enterprise 上的 Claude Code 進行的模型推理調用。當您在終端中使用 Claude Code 時,您發送的提示和 Claude 生成的回應不會由 Anthropic 保留。無論使用哪個 Claude 模型這都適用38ZDR 涵蓋通過 Claude for Enterprise 上的 Claude Code 進行的模型推理調用。當您在終端中使用 Claude Code 時,您發送的提示和 Claude 生成的回應不會由 Anthropic 保留。這適用於 ZDR 組織可用的每個模型。某些模型需要資料保留在 ZDR 下不可用;請參閱 [ZDR 下的模型可用性](#model-availability-under-zdr)

35 39 

36<h3 id="what-zdr-does-not-cover">40<h3 id="what-zdr-does-not-cover">

37 ZDR 不涵蓋的內容41 ZDR 不涵蓋的內容

38</h3>42</h3>

39 43 

40即使對於啟用了 ZDR 的組織,ZDR 也不適用於以下內容。這些功能遵循[標準數據保留政策](/zh-TW/data-usage#data-retention):44即使對於啟用了 ZDR 的組織,ZDR 也不適用於以下內容。這些功能遵循[標準資料保留政策](/zh-TW/data-usage#data-retention):

41 45 

42| 功能 | 詳情 |46| 功能 | 詳情 |

43| -------------- | ---------------------------------------------------------------------------------------- |47| -------------- | ----------------------------------------------------------------------------------------- |

44| claude.ai 上的聊天 | 通過 Claude for Enterprise 網絡界面的聊天對話不受 ZDR 保護。 |48| claude.ai 上的聊天 | 通過 Claude for Enterprise 網頁介面的聊天對話不受 ZDR 保護。 |

45| Cowork | Cowork 會話不受 ZDR 保護。 |49| Cowork | Cowork 會話不受 ZDR 保護。 |

46| Claude Code 分析 | 不存儲提示或模型回應,但收集生產力元數據例如帳戶電子郵件和使用統計信息。對於 ZDR 組織,貢獻指標不可用;[分析儀表板](/zh-TW/analytics)僅顯示使用指標。 |50| Claude Code 分析 | 不存儲提示或模型回應,但收集生產力中繼資料例如帳戶電子郵件和使用統計資訊。對於 ZDR 組織,貢獻指標不可用;[分析儀表板](/zh-TW/analytics)僅顯示使用指標。 |

47| 用戶和座位管理 | 管理數據(例如帳戶電子郵件和座位分配)根據標準政策保留。 |51| 使用者和座位管理 | 管理資料(例如帳戶電子郵件和座位分配)根據標準政策保留。 |

48| 第三方集成 | 由第三方工具、MCP servers 或其他外部集成處理的數據不受 ZDR 保護。請獨立審查這些服務的數據處理實踐 |52| 第三方整合 | 由第三方工具、MCP servers 或其他外部整合處理的資料不受 ZDR 保護。請獨立審查這些服務的資料處理實踐 |

49 53 

50<h2 id="features-disabled-under-zdr">54<h2 id="features-disabled-under-zdr">

51 ZDR 下禁用的功能55 ZDR 下禁用的功能


56| 功能 | 原因 |60| 功能 | 原因 |

57| --------------------------------------------------- | ------------------------ |61| --------------------------------------------------- | ------------------------ |

58| [Web 上的 Claude Code](/zh-TW/claude-code-on-the-web) | 需要服務器端存儲對話歷史記錄。 |62| [Web 上的 Claude Code](/zh-TW/claude-code-on-the-web) | 需要服務器端存儲對話歷史記錄。 |

59| Desktop 應用程序的[遠程會話](/zh-TW/desktop#remote-sessions) | 需要包含提示和完成的持久會話數據。 |63| Desktop 應用程式的[雲端會話](/zh-TW/desktop#cloud-sessions) | 需要包含提示和完成的持久會話資料。 |

60| 反饋提交 (`/feedback`) | 提交反饋會將對話數據發送給 Anthropic。 |64| 反饋提交 (`/feedback`) | 提交反饋會將對話資料發送給 Anthropic。 |

61 65 

62這些功能在後端被阻止,無論客戶端顯示如何。如果您在啟動期間在 Claude Code 終端中看到禁用的功能,嘗試使用它會返回一個錯誤,指示組織的政策不允許該操作。66這些功能在後端被阻止,無論客戶端顯示如何。如果您在啟動期間在 Claude Code 終端中看到禁用的功能,嘗試使用它會返回一個錯誤,指示組織的政策不允許該操作。

63 67 

64如果未來的功能需要存儲提示或完成它們也可能被禁用68未來的功能如果需要存儲提示或完成也可能被禁用

69 

70<h3 id="model-availability-under-zdr">

71 ZDR 下的模型可用性

72</h3>

73 

74Claude Fable 5 不適用於啟用零資料保留的組織。此模型類別[需要資料保留](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements),因此來自 ZDR 組織的請求無法由其提供服務。該模型在 ZDR 組織的 `/model` 選擇器中不存在,或顯示為禁用並附帶需要禁用 ZDR 的通知,且無論客戶端配置如何,伺服器都會拒絕對其的請求。

75 

76其他模型在 ZDR 下仍然可用。Fable 5 不是預設模型,`best` 別名在可用的地方解析為 Fable 5,在不可用的地方(包括 ZDR 組織)解析為 Opus。

65 77 

66<h2 id="data-retention-for-policy-violations">78<h2 id="data-retention-for-policy-violations">

67 政策違規的數據保留79 政策違規的數據保留