95 範例95 範例
96</h2>96</h2>
97 97
98這些範例突出顯示常見的 CLI 模式。對於命名檔案(例如 `auth.py` 或 `build-error.txt`)的命令,請替換您自己專案中的檔案。在 CI 或其他指令碼環境中,新增 [`--bare`](#start-faster-with-bare-mode) 以便 Claude Code 啟動時不會載入主機的 hooks、外掛程式、自動記憶或 `CLAUDE.md`。98這些範例突出了常見的 CLI 模式。如果命令指定了檔案(例如 `auth.py` 或 `build-error.txt`),請替換為您自己專案中的檔案。在 CI 或其他指令碼環境中,添加 [`--bare`](#start-faster-with-bare-mode),以便 Claude Code 啟動時不載入主機的 hooks、plugins、自動記憶或 `CLAUDE.md`。
99 99
100<h3 id="pipe-data-through-claude">100<h3 id="pipe-data-through-claude">
101 透過 Claude 管道傳送資料101 透過 Claude 傳輸資料
102</h3>102</h3>
103 103
104非互動模式讀取 stdin,因此您可以像任何其他命令列工具一樣管道傳送資料並重新導向回應。104非互動模式讀取 stdin,因此您可以像任何其他命令列工具一樣透過管道傳入資料並重新導向回應。
105 105
106此範例將建置日誌管道傳送至 Claude 並將說明寫入檔案:106此範例將建置日誌傳輸到 Claude 並將說明寫入檔案:
107 107
108```bash theme={null}108```bash theme={null}
109cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt109cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt
110```110```
111 111
112使用 `--output-format json`,回應承載包括 `total_cost_usd` 和每個模型的成本明細,因此指令碼呼叫者可以追蹤每次叫用的支出,而無需查詢 [使用儀表板](/docs/zh-TW/costs)。兩個數字都是 [用戶端估計](/docs/zh-TW/agent-sdk/cost-tracking),可能與您的實際帳單不同。112使用 `--output-format json` 時,回應承載包括 `total_cost_usd` 和按模型的成本明細,因此指令碼呼叫者可以追蹤每次調用的支出,而無需查詢[使用儀表板](/docs/zh-TW/costs)。這兩個數字都是[用戶端估計](/docs/zh-TW/agent-sdk/cost-tracking),可能與您的實際帳單不同。
113 113
114<Note>114<Note>
115 管道傳送的 stdin 上限為 10MB。如果超過上限,Claude Code 會以清晰的錯誤和非零狀態代碼退出。若要處理更大的輸入,請將內容寫入檔案,並在提示中參考檔案路徑,而不是管道傳送它。115 管道 stdin 的上限為 10MB。如果超過上限,Claude Code 會以清晰的錯誤訊息退出並返回非零狀態。若要處理更大的輸入,請將內容寫入檔案,並在提示中參考檔案路徑,而不是透過管道傳輸。
116</Note>116</Note>
117 117
118如果 Claude Code 無法讀取 stdin(例如因為啟動它的程序斷開了其端點),Claude Code 會列印警告至 stderr 並繼續使用命令列中的提示。在 v2.1.211 之前,Windows 上無法讀取的 stdin 會導致工作階段當機或以無輸出的方式無聲退出。118如果 Claude Code 無法讀取 stdin(例如因為啟動它的程序斷開了其端點),Claude Code 會向 stderr 列印警告並繼續使用命令列中的提示。在 v2.1.211 之前,Windows 上無法讀取的 stdin 會導致工作階段崩潰或無輸出地無聲退出。
119 119
120<h3 id="add-claude-to-a-build-script">120<h3 id="add-claude-to-a-build-script">
121 將 Claude 新增至建置指令碼121 將 Claude 添加到建置指令碼
122</h3>122</h3>
123 123
124您可以在指令碼中包裝非互動呼叫,以將 Claude 用作專案特定的 linter 或審查者。124您可以在指令碼中包裝非互動呼叫,以將 Claude 用作專案特定的 linter 或審查者。
125 125
126此 `package.json` 指令碼將針對 `main` 的差異管道傳送至 Claude,並要求它報告拼寫錯誤。管道傳送差異意味著 Claude 不需要 Bash 權限來讀取它,而逸出的雙引號使指令碼可移植到 Windows:126此 `package.json` 指令碼將針對 `main` 的差異傳輸到 Claude,並要求它報告拼寫錯誤。傳輸差異意味著 Claude 不需要 Bash 權限來讀取它,而轉義的雙引號使指令碼可移植到 Windows:
127 127
128```json theme={null}128```json theme={null}
129{129{
139 取得結構化輸出139 取得結構化輸出
140</h3>140</h3>
141 141
142使用 `--output-format` 控制回應的傳回方式:142使用 `--output-format` 控制回應的返回方式:
143 143
144* `text`(預設):純文字輸出144* `text`(預設):純文字輸出
145* `json`:包含結果、工作階段 ID 和中繼資料的結構化 JSON145* `json`:包含結果、工作階段 ID 和中繼資料的結構化 JSON
146* `stream-json`:用於即時串流的換行分隔 JSON146* `stream-json`:用於即時串流的換行分隔 JSON
147 147
148此範例以 JSON 格式傳回專案摘要及工作階段中繼資料,文字結果在 `result` 欄位中:148此範例以 JSON 格式返回專案摘要及工作階段中繼資料,文字結果在 `result` 欄位中:
149 149
150```bash theme={null}150```bash theme={null}
151claude -p "Summarize this project" --output-format json151claude -p "Summarize this project" --output-format json
152```152```
153 153
154若要取得符合特定結構描述的輸出,請使用 `--output-format json` 搭配 `--json-schema` 和 [JSON Schema](https://json-schema.org/) 定義。回應包含關於請求的中繼資料(工作階段 ID、使用情況等),結構化輸出在 `structured_output` 欄位中。154若要取得符合特定結構描述的輸出,請使用 `--output-format json` 搭配 `--json-schema` 和 [JSON Schema](https://json-schema.org/) 定義。回應包括關於請求的中繼資料(工作階段 ID、使用情況等),結構化輸出在 `structured_output` 欄位中。
155 155
156此範例從 auth.py 提取函式名稱並將其作為字串陣列傳回:156此範例從 auth.py 提取函式名稱並將其作為字串陣列返回:
157 157
158```bash theme={null}158```bash theme={null}
159claude -p "Extract the main function names from auth.py" \159claude -p "Extract the main function names from auth.py" \
161 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'161 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'
162```162```
163 163
164如果值不是有效的 JSON Schema,`claude` 會以 `Error: --json-schema is not a valid JSON Schema` 退出,後面跟著驗證器的診斷。Claude Code 接受使用 `format` 關鍵字的結構描述,例如 `"format": "email"`,但將 `format` 視為註解,不強制執行它。在 v2.1.205 之前,Claude Code 會以無聲方式忽略無效的結構描述並傳回非結構化文字,並將任何包含 `format` 的結構描述視為無效。164如果值不是有效的 JSON Schema,`claude` 會以 `Error: --json-schema is not a valid JSON Schema` 退出,後面跟著驗證器的診斷。Claude Code 接受使用 `format` 關鍵字的結構描述,例如 `"format": "email"`,但將 `format` 視為註解,不強制執行。在 v2.1.205 之前,Claude Code 無聲地忽略無效的結構描述並返回非結構化文字,並將任何包含 `format` 的結構描述視為無效。
165 165
166<Tip>166<Tip>
167 使用 [jq](https://jqlang.org/) 之類的工具來解析回應並提取特定欄位:167 使用 [jq](https://jqlang.org/) 之類的工具來解析回應並提取特定欄位:
182 串流回應182 串流回應
183</h3>183</h3>
184 184
185使用 `--output-format stream-json` 搭配 `--verbose` 和 `--include-partial-messages` 以在產生令牌時接收它們。每一行都是代表事件的 JSON 物件:185使用 `--output-format stream-json` 搭配 `--verbose` 和 `--include-partial-messages` 以在產生令牌時接收它們。每一行都是代表一個事件的 JSON 物件:
186 186
187```bash theme={null}187```bash theme={null}
188claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages188claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages
190 190
191串流的最後一行是包含最終回應文字、成本和工作階段中繼資料的 `result` 訊息。191串流的最後一行是包含最終回應文字、成本和工作階段中繼資料的 `result` 訊息。
192 192
193如果您的消費者緩慢讀取串流,Claude Code 會等待佇列中的輸出排出後再退出,根據仍在佇列中的數量調整等待時間,上限為 30 秒。在 v2.1.214 之前,退出等待上限約為 2 秒,這可能會截斷大型回應的結尾。193如果您的消費者緩慢讀取串流,Claude Code 會等待佇列中的輸出排出後再退出,根據仍在佇列中的數量調整等待時間,上限為 30 秒。在 v2.1.214 之前,退出等待上限約為 2 秒,這可能會截斷大型回應的末尾。
194 194
195下列範例使用 [jq](https://jqlang.org/) 篩選文字差異並僅顯示串流文字。`-r` 旗標輸出原始字串(無引號),`-j` 不帶換行符號的聯結,因此令牌會連續串流:195以下範例使用 [jq](https://jqlang.org/) 篩選文字增量並僅顯示串流文字。`-r` 旗標輸出原始字串(無引號),`-j` 不帶換行符連接,因此令牌連續串流:
196 196
197```bash theme={null}197```bash theme={null}
198claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \198claude -p "Write a poem" --output-format stream-json --verbose --include-partial-messages | \
199 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'199 jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'
200```200```
201 201
202如需具有回呼和訊息物件的程式化串流,請參閱 Agent SDK 文件中的 [即時串流回應](/docs/zh-TW/agent-sdk/streaming-output)。202如需具有回呼和訊息物件的程式化串流,請參閱 Agent SDK 文件中的[即時串流回應](/docs/zh-TW/agent-sdk/streaming-output)。
203 203
204<h4 id="follow-subagent-messages">204<h4 id="follow-subagent-messages">
205 追蹤子代理訊息205 追蹤子代理訊息
206</h4>206</h4>
207 207
208來自 [子代理](/docs/zh-TW/sub-agents) 的訊息在串流中顯示為 `assistant` 和 `user` 訊息,其 `parent_tool_use_id` 欄位是產生子代理的工具呼叫的 ID。來自主要對話的訊息在該欄位中帶有 `null`。208來自[子代理](/docs/zh-TW/sub-agents)的訊息在串流中顯示為 `assistant` 和 `user` 訊息,其 `parent_tool_use_id` 欄位是產生子代理的工具呼叫的 ID。來自主要對話的訊息在該欄位中帶有 `null`。
209 209
210來自在 [前景](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 執行的子代理的第一條訊息是帶有驅動它的提示的 `user` 訊息。在該第一條訊息之後,Claude Code 發出:210來自在[前景](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)中執行的子代理的第一條訊息是 `user` 訊息,帶有驅動它的提示。在該第一條訊息之後,Claude Code 發出:
211 211
212* **預設情況下**:子代理的 `tool_use` 和 `tool_result` 區塊。212* **預設情況下**:子代理的 `tool_use` 和 `tool_result` 區塊。
213* **使用 [`--forward-subagent-text`](/docs/zh-TW/cli-reference#cli-flags) 或 [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/zh-TW/env-vars)**:子代理的文字和思考區塊也是,因此您可以重建每個子代理的文字記錄。這需要 Claude Code v2.1.211 或更新版本。213* **使用 [`--forward-subagent-text`](/docs/zh-TW/cli-reference#cli-flags) 或 [`CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`](/docs/zh-TW/env-vars)**:子代理的文字和思考區塊,因此您可以重建每個子代理的文字記錄。這需要 Claude Code v2.1.211 或更新版本。
214 214
215當您啟用任一選項時,Claude Code 從 [每個巢狀深度的子代理](/docs/zh-TW/sub-agents#let-subagents-spawn-their-own-subagents) 轉發訊息:當子代理產生其自己的子代理時,巢狀子代理的訊息在 `parent_tool_use_id` 中帶有產生它的 Agent 工具呼叫的 ID,因此您可以透過追蹤這些 ID 來重建完整的巢狀樹。在 v2.1.219 之前,來自巢狀子代理的訊息未出現在串流中。215當您啟用任一選項時,Claude Code 從[每個巢狀深度的子代理](/docs/zh-TW/sub-agents#let-subagents-spawn-their-own-subagents)轉發訊息:當子代理產生自己的子代理時,巢狀子代理的訊息在 `parent_tool_use_id` 中帶有產生它的 Agent 工具呼叫的 ID,因此您可以透過追蹤這些 ID 來重建完整的巢狀樹。在 v2.1.219 之前,來自巢狀子代理的訊息不會出現在串流中。
216 216
217[在子代理中執行](/docs/zh-TW/skills#run-skills-in-a-subagent) 的 Skills 在串流中以相同方式出現:分叉的 skill 的第一條訊息是帶有驅動執行的 skill 內容的 `user` 訊息。如果您啟用任一選項,串流也會帶有分叉的 skill 的文字和思考區塊。在 v2.1.265 之前,只有分叉的 skill 的 `tool_use` 和 `tool_result` 區塊出現在串流中。217[在子代理中執行](/docs/zh-TW/skills#run-skills-in-a-subagent)的 Skills 在串流中以相同方式出現:分叉的 skill 的第一條訊息是 `user` 訊息,帶有驅動執行的 skill 內容。如果您啟用任一選項,串流也會帶有分叉的 skill 的文字和思考區塊。在 v2.1.265 之前,只有分叉的 skill 的 `tool_use` 和 `tool_result` 區塊出現在串流中。
218 218
219<h4 id="handle-api-retries">219<h4 id="handle-api-retries">
220 處理 API 重試220 處理 API 重試
221</h4>221</h4>
222 222
223當 API 請求因可重試錯誤而失敗時,Claude Code 在重試前發出 `system/api_retry` 事件。在 v2.1.246 或更新版本上,當 `401` 或 `403` 拒絕 [`apiKeyHelper`](/docs/zh-TW/settings-reference#apikeyhelper) 認證時,Claude Code 以無聲方式進行前兩次重試,沒有事件,然後從第三次連續重試開始照常發出事件。無聲重試仍計入 `attempt`。您可以使用事件在您自己的介面中顯示重試進度。223當 API 請求因可重試的錯誤而失敗時,Claude Code 在重試前發出 `system/api_retry` 事件。在 v2.1.246 或更新版本上,當 `401` 或 `403` 拒絕 [`apiKeyHelper`](/docs/zh-TW/settings-reference#apikeyhelper) 認證時,Claude Code 無聲地進行前兩次重試,沒有事件,然後從第三次連續重試開始照常發出事件。無聲重試仍計入 `attempt`。您可以使用該事件在自己的介面中顯示重試進度。
224 224
225| 欄位 | 類型 | 描述 |225| 欄位 | 類型 | 說明 |
226| ---------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |226| ---------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
227| `type` | `"system"` | 訊息類型 |227| `type` | `"system"` | 訊息類型 |
228| `subtype` | `"api_retry"` | 將此識別為重試事件 |228| `subtype` | `"api_retry"` | 將此識別為重試事件 |
229| `attempt` | 整數 | 目前嘗試次數,從 1 開始 |229| `attempt` | 整數 | 目前嘗試次數,從 1 開始 |
230| `max_retries` | 整數 | 允許的總重試次數,對於此失敗的原因可能少於工作階段範圍的預算 |230| `max_retries` | 整數 | 此失敗原因允許的總重試次數,可能少於工作階段範圍的預算 |
231| `retry_delay_ms` | 整數 | 毫秒直到下一次嘗試 |231| `retry_delay_ms` | 整數 | 下次嘗試前的毫秒數 |
232| `error_status` | 整數或 null | 失敗嘗試的 HTTP 狀態碼,或 `null` 表示當嘗試未從 API 獲得 HTTP 回應時 |232| `error_status` | 整數或 null | 失敗嘗試的 HTTP 狀態碼,或當嘗試未從 API 獲得 HTTP 回應時為 `null` |
233| `no_response` | 物件,選用 | 僅當失敗的嘗試 [未及時獲得回應標頭](/docs/zh-TW/errors#no-response-from-api) 時出現。`waited_ms` 是該嘗試等待的時間,`retry_wait_ms` 是重試將等待的時間。在這些事件中,`max_retries` 反映此原因通常獲得的一次重試,而不是工作階段範圍的預算。需要 Claude Code v2.1.261 或更新版本 |233| `no_response` | 物件,選用 | 僅當失敗的嘗試[未及時獲得回應標頭](/docs/zh-TW/errors#no-response-from-api)時出現。`waited_ms` 是該嘗試等待的時間,`retry_wait_ms` 是重試將等待的時間。在這些事件中,`max_retries` 反映此原因通常獲得的一次重試,而不是工作階段範圍的預算。需要 Claude Code v2.1.261 或更新版本 |
234| `error` | 字串 | 錯誤類別:`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`rate_limit`、`overloaded`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |234| `error` | 字串 | 錯誤類別:`authentication_failed`、`oauth_org_not_allowed`、`account_on_hold`、`billing_error`、`rate_limit`、`overloaded`、`invalid_request`、`model_not_found`、`server_error`、`max_output_tokens`、`cloud_credential_error` 或 `unknown` |
235| `uuid` | 字串 | 唯一事件識別碼 |235| `uuid` | 字串 | 唯一事件識別碼 |
236| `session_id` | 字串 | 事件所屬的工作階段 |236| `session_id` | 字串 | 事件所屬的工作階段 |
239 讀取工作階段中繼資料239 讀取工作階段中繼資料
240</h4>240</h4>
241 241
242`system/init` 事件報告工作階段中繼資料,包括模型、工具、MCP 伺服器和載入的外掛程式。除非啟動事件在其前面,否則它是串流中的第一個事件:242`system/init` 事件報告工作階段中繼資料,包括模型、工具、MCP 伺服器和載入的 plugins。除非啟動事件在其前面,否則它是串流中的第一個事件:
243 243
244* `plugin_install` 事件,當設定了 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/zh-TW/env-vars) 時。244* `plugin_install` 事件,當設定 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/zh-TW/env-vars) 時。
245* [`hook_started`、`hook_progress` 和 `hook_response` 事件](/docs/zh-TW/agent-sdk/typescript#sdkhookstartedmessage),當設定的 [`SessionStart`](/docs/zh-TW/hooks#sessionstart) 或 [`Setup`](/docs/zh-TW/hooks#setup) hook 執行時。這些會在 hook 產生時串流。Claude Code v2.1.169 至 v2.1.203 在 hook 完成後以一個批次傳遞它們,仍在 `system/init` 之前;v2.1.204 恢復了即時傳遞。245* [`hook_started`、`hook_progress` 和 `hook_response` 事件](/docs/zh-TW/agent-sdk/typescript#sdkhookstartedmessage),當配置的 [`SessionStart`](/docs/zh-TW/hooks#sessionstart) 或 [`Setup`](/docs/zh-TW/hooks#setup) hook 執行時。這些在 hook 產生時作為串流。Claude Code v2.1.169 至 v2.1.203 在 hook 完成後以一個批次傳遞它們,仍在 `system/init` 之前;v2.1.204 恢復了即時傳遞。
246 246
247該事件也包含一個選用的 `capabilities` 字串陣列,命名此 Claude Code 版本實施的協定行為,例如 `interrupt_receipt_v1` 或 `interrupt_cancel_queued_v1`。檢查它以進行功能偵測,而不是比較版本字串,並忽略您不認識的值。該欄位需要 Claude Code v2.1.205 或更新版本,在較早版本中不存在。請參閱 [`SDKSystemMessage`](/docs/zh-TW/agent-sdk/typescript#sdksystemmessage) 以取得功能清單。247該事件還帶有一個選用的 `capabilities` 字串陣列,命名此 Claude Code 版本實現的協議行為,例如 `interrupt_receipt_v1` 或 `interrupt_cancel_queued_v1`。檢查它以進行功能偵測,而不是比較版本字串,並忽略您不認識的值。該欄位需要 Claude Code v2.1.205 或更新版本,在較早版本中不存在。有關功能清單,請參閱 [`SDKSystemMessage`](/docs/zh-TW/agent-sdk/typescript#sdksystemmessage)。
248 248
249<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">249<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">
250 當外掛程式或 MCP 伺服器未載入時使 CI 失敗250 當 plugin 或 MCP 伺服器未載入時使 CI 失敗
251</h4>251</h4>
252 252
253使用 `system/init` 事件中的外掛程式欄位來捕捉未載入的外掛程式:253使用 `system/init` 事件中的 plugin 欄位來捕捉未載入的 plugin:
254 254
255| 欄位 | 類型 | 描述 |255| 欄位 | 類型 | 說明 |
256| --------------- | -- | ----------------------------------------------------------------------------------------------------------------------------------- |256| --------------- | -- | ----------------------------------------------------------------------------------------------------------------------------------------- |
257| `plugins` | 陣列 | 成功載入的外掛程式,每個都有 `name` 和 `path` |257| `plugins` | 陣列 | 成功載入的 plugins,每個都有 `name` 和 `path` |
258| `plugin_errors` | 陣列 | 外掛程式載入時間錯誤,每個都有 `plugin`、`type` 和 `message`。包括不滿足的相依性版本和 `--plugin-dir` 載入失敗,例如遺失的路徑或無效的封存。受影響的外掛程式被降級並從 `plugins` 中缺失。當沒有錯誤時,金鑰被省略 |258| `plugin_errors` | 陣列 | plugin 載入時錯誤,每個都有 `plugin`、`type` 和 `message`。包括不滿足的依賴版本和 `--plugin-dir` 載入失敗,例如遺失的路徑或無效的存檔。受影響的 plugins 被降級並從 `plugins` 中移除。當沒有錯誤時,該鍵被省略 |
259 259
260以相同方式使用 MCP 伺服器欄位。當您使用 `-p` 傳遞 [`--mcp-config`](/docs/zh-TW/cli-reference#cli-flags) 時,Claude Code 在執行第一次轉換前等待仍在待處理的伺服器,最多達 [`MCP_TIMEOUT`](/docs/zh-TW/env-vars) 啟動逾時,預設 30 秒。具有 [快取工具清單](/docs/zh-TW/agent-sdk/mcp#connection-timing) 的遠端伺服器跳過等待,在 `system/init` 中顯示 `pending`,並在其第一次工具呼叫時連接。等待需要 Claude Code v2.1.221 或更新版本。260以相同方式使用 MCP 伺服器欄位。當您使用 `-p` 傳遞 [`--mcp-config`](/docs/zh-TW/cli-reference#cli-flags) 時,Claude Code 在執行第一個回合前等待仍在等待的伺服器,最多等待 [`MCP_TIMEOUT`](/docs/zh-TW/env-vars) 啟動逾時,預設為 30 秒。具有[快取工具清單](/docs/zh-TW/agent-sdk/mcp#connection-timing)的遠端伺服器跳過等待,在 `system/init` 中顯示 `pending`,並在其第一次工具呼叫時連接。等待需要 Claude Code v2.1.221 或更新版本。
261 261
262Claude Code 在啟動時驗證每個 `--mcp-config` 項目,並跳過驗證失敗的項目,例如沒有 `type` 的 `url` 項目。執行繼續並乾淨地退出,因此檢查這些欄位以捕捉未載入的伺服器:262Claude Code 在啟動時驗證每個 `--mcp-config` 項目,並跳過驗證失敗的項目,例如沒有 `type` 的 `url` 項目。執行繼續並乾淨地退出,因此檢查這些欄位以捕捉未載入的伺服器:
263 263
264| 欄位 | 類型 | 描述 |264| 欄位 | 類型 | 說明 |
265| ------------------- | -- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |265| ------------------- | -- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
266| `mcp_servers` | 陣列 | 工作階段中的 MCP 伺服器,每個都有 `name` 和 `status` |266| `mcp_servers` | 陣列 | 工作階段中的 MCP 伺服器,每個都有 `name` 和 `status` |
267| `mcp_server_errors` | 陣列 | 由設定驗證跳過的 `--mcp-config` 項目,每個都有 `name`、`type` 和 `message`。`type` 是跳過類別,例如 `unknown_type`、`url_missing_type`、`invalid_config` 或 `reserved_name`;將您不認識的值視為通用跳過。受影響的伺服器從 `mcp_servers` 中缺失。當沒有錯誤時,金鑰被省略,因此 CI 閘道可以在非空陣列上失敗。需要 Claude Code v2.1.219 或更新版本 |267| `mcp_server_errors` | 陣列 | 由配置驗證跳過的 `--mcp-config` 項目,每個都有 `name`、`type` 和 `message`。`type` 是跳過類別,例如 `unknown_type`、`url_missing_type`、`invalid_config` 或 `reserved_name`;將您不認識的值視為通用跳過。受影響的伺服器從 `mcp_servers` 中移除。當沒有錯誤時,該鍵被省略,因此 CI 閘道可以在非空陣列上失敗。需要 Claude Code v2.1.219 或更新版本 |
268 268
269當您在終端機中手動執行命令時,Claude Code 也會列印啟動警告至 stderr,例如 `Warning: 1 MCP server skipped due to invalid config:`,後面跟著每個跳過項目的原因。當您重新導向 stderr,或當程式(例如 CI 執行器或 SDK 主機)捕捉它時,Claude Code 不列印警告,並僅在 `mcp_server_errors` 欄位中報告跳過的項目。警告需要 Claude Code v2.1.219 或更新版本。269當您在終端中手動執行命令時,Claude Code 也會向 stderr 列印啟動警告,例如 `Warning: 1 MCP server skipped due to invalid config:`,後面跟著每個跳過項目的原因。當您重新導向 stderr 或當 CI 執行器或 SDK 主機等程式捕捉它時,Claude Code 不列印警告,僅在 `mcp_server_errors` 欄位中報告跳過的項目。警告需要 Claude Code v2.1.219 或更新版本。
270 270
271<h4 id="track-plugin-installs">271<h4 id="track-plugin-installs">
272 追蹤外掛程式安裝272 追蹤 plugin 安裝
273</h4>273</h4>
274 274
275當設定了 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/zh-TW/env-vars) 時,Claude Code 在第一次轉換前發出 `system/plugin_install` 事件,同時市場外掛程式安裝。使用這些在您自己的 UI 中顯示安裝進度。275當設定 [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/zh-TW/env-vars) 時,Claude Code 在第一個回合前安裝 marketplace plugins 時發出 `system/plugin_install` 事件。使用這些在您自己的 UI 中顯示安裝進度。
276 276
277| 欄位 | 類型 | 描述 |277| 欄位 | 類型 | 說明 |
278| ------------ | ---------------------------------------------------- | ------------------------------------------------------------ |278| ------------ | ---------------------------------------------------- | ----------------------------------------------------------------------- |
279| `type` | `"system"` | 訊息類型 |279| `type` | `"system"` | 訊息類型 |
280| `subtype` | `"plugin_install"` | 將此識別為外掛程式安裝事件 |280| `subtype` | `"plugin_install"` | 將此識別為 plugin 安裝事件 |
281| `status` | `"started"`、`"installed"`、`"failed"` 或 `"completed"` | `started` 和 `completed` 括住整體安裝;`installed` 和 `failed` 報告個別市場 |281| `status` | `"started"`、`"installed"`、`"failed"` 或 `"completed"` | `started` 和 `completed` 括住整體安裝;`installed` 和 `failed` 報告個別 marketplaces |
282| `name` | 字串,選用 | 市場名稱,在 `installed` 和 `failed` 上出現 |282| `name` | 字串,選用 | marketplace 名稱,在 `installed` 和 `failed` 上出現 |
283| `error` | 字串,選用 | 失敗訊息,在 `failed` 上出現 |283| `error` | 字串,選用 | 失敗訊息,在 `failed` 上出現 |
284| `uuid` | 字串 | 唯一事件識別碼 |284| `uuid` | 字串 | 唯一事件識別碼 |
285| `session_id` | 字串 | 事件所屬的工作階段 |285| `session_id` | 字串 | 事件所屬的工作階段 |
286 286
287<h3 id="auto-approve-tools">287<h3 id="auto-approve-tools">
288 自動核准工具288 自動批准工具
289</h3>289</h3>
290 290
291使用 `--allowedTools` 讓 Claude 使用某些工具而無需提示。此範例執行測試套件並修復失敗,允許 Claude 執行 Bash 命令和讀取/編輯檔案而無需請求許可:291使用 `--allowedTools` 讓 Claude 使用某些工具而無需提示。此範例執行測試套件並修復失敗,允許 Claude 執行 Bash 命令和讀取/編輯檔案而無需請求權限:
292 292
293```bash theme={null}293```bash theme={null}
294claude -p "Run the test suite and fix any failures" \294claude -p "Run the test suite and fix any failures" \
295 --allowedTools "Bash,Read,Edit"295 --allowedTools "Bash,Read,Edit"
296```296```
297 297
298若要為整個工作階段設定基準而不是列出個別工具,請傳遞 [權限模式](/docs/zh-TW/permission-modes)。對於 `-p`,[內建啟動權限模式](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in) 在每個計畫上都是 Manual,因此傳遞您想要的權限模式:298若要為整個工作階段設定基準而不是列出個別工具,請傳遞[權限模式](/docs/zh-TW/permission-modes)。對於 `-p`,[內建啟動權限模式](/docs/zh-TW/permission-modes#which-mode-a-session-starts-in)在每個計畫上都是 Manual,因此傳遞您想要的權限模式:
299 299
300* **`auto`**:傳遞 `--permission-mode auto` 以讓分類器檢查大多數動作而不是您300* **`auto`**:傳遞 `--permission-mode auto` 以讓分類器審查大多數操作,而不是您
301* **`dontAsk`**:Claude Code 拒絕每個會提示的呼叫,這對於鎖定的 CI 執行很有用。在 Manual 模式中不需要核准的動作仍然執行,例如您工作目錄中的檔案讀取和 [唯讀命令集](/docs/zh-TW/permissions#read-only-commands),以及您的 `--allowedTools` 項目或 `permissions.allow` 規則涵蓋的動作。`AskUserQuestion`、連接器工具 [您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 和標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具即使當允許規則符合時也被拒絕301* **`dontAsk`**:Claude Code 拒絕每個會提示的呼叫,這對鎖定的 CI 執行很有用。在 Manual 模式中不需要批准的操作仍會執行,例如在您的工作目錄中讀取檔案和[唯讀命令集](/docs/zh-TW/permissions#read-only-commands),以及您的 `--allowedTools` 項目或 `permissions.allow` 規則涵蓋的操作。`AskUserQuestion`、connector 工具[您的組織設定為 `ask`](/docs/zh-TW/mcp#organization-controls-on-connector-tools) 和標記為 [`requiresUserInteraction`](/docs/zh-TW/mcp#require-approval-for-a-specific-tool) 的 MCP 工具即使在允許規則匹配時也被拒絕
302* **`acceptEdits`**:Claude 寫入檔案而無需提示,Claude Code 自動核准常見的檔案系統命令,例如 `mkdir`、`touch`、`mv` 和 `cp`。[任何模式都不自動核准的動作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves) 仍然適用。除了唯讀命令集,其他 shell 命令和網路請求仍然需要 `--allowedTools` 項目或 `permissions.allow` 規則。請參閱 [`acceptEdits` 自動核准的內容](/docs/zh-TW/permission-modes#auto-approve-file-edits-with-acceptedits-mode) 以取得完整清單302* **`acceptEdits`**:Claude 寫入檔案而無需提示,Claude Code 自動批准常見的檔案系統命令,例如 `mkdir`、`touch`、`mv` 和 `cp`。[沒有模式自動批准的操作](/docs/zh-TW/permission-modes#actions-no-mode-auto-approves)仍然適用。除了唯讀命令集,其他 shell 命令和網路請求仍需要 `--allowedTools` 項目或 `permissions.allow` 規則。請參閱[`acceptEdits` 自動批准的內容](/docs/zh-TW/permission-modes#auto-approve-file-edits-with-acceptedits-mode)以取得完整清單
303 303
304此範例以 `acceptEdits` 作為基準應用 lint 修復:304此範例使用 `acceptEdits` 作為基準應用 lint 修復:
305 305
306```bash theme={null}306```bash theme={null}
307claude -p "Apply the lint fixes" --permission-mode acceptEdits307claude -p "Apply the lint fixes" --permission-mode acceptEdits
311 在無人值守執行中關閉權限提示311 在無人值守執行中關閉權限提示
312</h3>312</h3>
313 313
314當沒有人可用於回答權限提示時,傳遞 `--permission-prompts none`,例如在排程工作中。當您的執行有權限主機時,旗標最重要:具有 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input) 的 Agent SDK 應用程式,或您使用 [`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 傳遞的 MCP 工具。沒有旗標,您的執行會等待該主機回答每個權限請求。314當沒有人可用於回答權限提示時,傳遞 `--permission-prompts none`,例如在排程工作中。當您的執行有權限主機時,該旗標最重要:具有 [`canUseTool` 回呼](/docs/zh-TW/agent-sdk/user-input)的 Agent SDK 應用程式,或您使用 [`--permission-prompt-tool`](/docs/zh-TW/cli-reference#cli-flags) 傳遞的 MCP 工具。沒有該旗標,您的執行會等待該主機回答每個權限請求。
315 315
316使用旗標,您的執行不會查詢主機或等待它。任何會提示的內容都被拒絕,除非 `PermissionRequest` hook 允許它,Claude 被告知沒有人可以核准請求且不要重試它,執行繼續。在沒有主機的 `-p` 執行中,這些請求無論如何都被拒絕,旗標也告知 Claude 不要重試它們。權限規則、[`PermissionRequest` hooks](/docs/zh-TW/hooks#permissionrequest) 和您設定的權限模式仍然首先決定每個呼叫;Claude Code 僅拒絕其他任何內容都未解決的請求。316使用該旗標,您的執行不會查詢主機或等待它。任何會提示的內容都被拒絕,除非 `PermissionRequest` hook 允許它,Claude 被告知沒有人可以批准請求且不應重試它,執行繼續。在沒有主機的 `-p` 執行中,這些請求無論如何都被拒絕,該旗標也告知 Claude 不要重試它們。權限規則、[`PermissionRequest` hooks](/docs/zh-TW/hooks#permissionrequest) 和您設定的權限模式仍然首先決定每個呼叫;Claude Code 僅拒絕其他任何內容都無法解決的請求。
317 317
318此範例在 [auto 模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 中執行無人值守任務。分類器照常檢查每個動作,Claude Code 拒絕任何會回退到提示的內容:318此範例在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中執行無人值守的任務。分類器照常審查每個操作,Claude Code 拒絕任何會回退到提示的內容:
319 319
320```bash theme={null}320```bash theme={null}
321claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none321claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none
322```322```
323 323
324使用 `--permission-prompts none`,Claude Code 移除需要來自人員的答案的工具,例如 [`AskUserQuestion`](/docs/zh-TW/tools-reference#askuserquestion-tool-behavior),因此 Claude 無法呼叫它們。任何沒有 [`Elicitation` hook](/docs/zh-TW/hooks#elicitation) 回答的 [MCP 引出請求](/docs/zh-TW/mcp#respond-to-mcp-elicitation-requests) 都被取消。324使用 `--permission-prompts none`,Claude Code 移除需要來自人員的答案的工具,例如 [`AskUserQuestion`](/docs/zh-TW/tools-reference#askuserquestion-tool-behavior),因此 Claude 無法呼叫它們。任何沒有 [`Elicitation` hook](/docs/zh-TW/hooks#elicitation) 回答的 [MCP 引出請求](/docs/zh-TW/mcp#respond-to-mcp-elicitation-requests)都被取消。
325 325
326使用 `--output-format stream-json`,拒絕顯示為 `permission_denied` 系統訊息,最終結果訊息在 `permission_denials` 中列出它們。326使用 `--output-format stream-json`,拒絕顯示為 `permission_denied` 系統訊息,最終結果訊息在 `permission_denials` 中列出它們。
327 327
333 建立提交333 建立提交
334</h3>334</h3>
335 335
336此範例檢查暫存的變更並建立具有適當訊息的提交:336此範例審查暫存的變更並建立具有適當訊息的提交:
337 337
338```bash theme={null}338```bash theme={null}
339claude -p "Look at my staged changes and create an appropriate commit" \339claude -p "Look at my staged changes and create an appropriate commit" \
340 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"340 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"
341```341```
342 342
343`--allowedTools` 旗標使用 [權限規則語法](/docs/zh-TW/settings-reference#permission-rule-syntax)。尾部的 ` *` 啟用前綴匹配,因此 `Bash(git diff *)` 允許任何以 `git diff` 開頭的命令。空格在 `*` 之前很重要:沒有它,`Bash(git diff*)` 也會符合 `git diff-index`。343`--allowedTools` 旗標使用[權限規則語法](/docs/zh-TW/settings-reference#permission-rule-syntax)。尾部的 ` *` 啟用前綴匹配,因此 `Bash(git diff *)` 允許任何以 `git diff` 開頭的命令。空格在 `*` 之前很重要:沒有它,`Bash(git diff*)` 也會匹配 `git diff-index`。
344 344
345<Note>345<Note>
346 使用者叫用的 [skills](/docs/zh-TW/skills) 和自訂命令在 `-p` 模式中運作:在提示字串中包含 `/skill-name`,Claude Code 會在執行前展開它。開啟互動對話的內建命令,例如 `/login`,在 `-p` 模式中不可用。`/model`、`/effort`、`/fast`、`/color` 和 `/rename` 接受值作為引數,例如 `/model sonnet`,`/mcp` 不帶引數會列印伺服器狀態的文字摘要;這些形式需要 Claude Code v2.1.205 或更新版本,並遵循每個命令的 [可用性注意事項](/docs/zh-TW/commands#all-commands)。若要從 `-p` 叫用變更設定,請將 `key=value` 傳遞至 `/config`,例如 `/config thinking=false`。346 命令支援在 `-p` 模式中有所不同:
347
348 * 使用者調用的 [skills](/docs/zh-TW/skills) 和自訂命令有效。在提示字串中包含 `/skill-name`,Claude Code 在執行前展開它。
349 * 僅在終端介面中執行的內建命令,例如 `/login`,不可用。
350 * `/model`、`/effort`、`/fast`、`/color` 和 `/rename` 接受值作為引數,例如 `/model sonnet`,`/mcp` 不帶引數列印伺服器狀態的文字摘要。這些形式需要 Claude Code v2.1.205 或更新版本,並遵循每個命令的[可用性注意事項](/docs/zh-TW/commands#all-commands)。
351 * 若要變更設定,將 `key=value` 傳遞給 `/config`,例如 `/config thinking=false`。
352 * `/output-style <style>` 切換[輸出樣式](/docs/zh-TW/output-styles),`/output-style` 單獨列出它們。需要 Claude Code v2.1.269 或更新版本。
347</Note>353</Note>
348 354
349<h3 id="customize-the-system-prompt">355<h3 id="customize-the-system-prompt">
350 自訂系統提示356 自訂系統提示
351</h3>357</h3>
352 358
353使用 `--append-system-prompt` 新增指示同時保持 Claude Code 的預設行為。此範例將 PR 差異管道傳送至 Claude 並指示它檢查安全漏洞。將其儲存為 shell 指令碼,例如 `review.sh`:359使用 `--append-system-prompt` 添加指示同時保持 Claude Code 的預設行為。此範例將 PR 差異傳輸到 Claude 並指示它審查安全漏洞。將其儲存為 shell 指令碼,例如 `review.sh`:
354 360
355```bash theme={null}361```bash theme={null}
356gh pr diff "$1" | claude -p \362gh pr diff "$1" | claude -p \
358 --output-format json364 --output-format json
359```365```
360 366
361在指令碼中,`"$1"` 代表您在命令列上傳遞的第一個引數。執行 `bash review.sh 123`,shell 將 `"$1"` 替換為 `123`,因此指令碼會擷取 PR 123 的差異。Claude Code 將檢查列印為 JSON,文字在 `result` 欄位中。367在指令碼中,`"$1"` 代表您在命令列上傳遞的第一個引數。執行 `bash review.sh 123`,shell 將 `"$1"` 替換為 `123`,因此指令碼會擷取 PR 123 的差異。Claude Code 以 JSON 格式列印審查,文字在 `result` 欄位中。
362 368
363請參閱 [系統提示旗標](/docs/zh-TW/cli-reference#system-prompt-flags) 以取得更多選項,包括 `--system-prompt` 以完全取代預設提示。369有關更多選項,請參閱[系統提示旗標](/docs/zh-TW/cli-reference#system-prompt-flags),包括 `--system-prompt` 以完全替換預設提示。
364 370
365<h3 id="continue-conversations">371<h3 id="continue-conversations">
366 繼續對話372 繼續對話
367</h3>373</h3>
368 374
369使用 `--continue` 繼續最近的對話,或使用 `--resume` 搭配工作階段 ID 以繼續特定對話。在 Claude Code v2.1.257 或更新版本上,當您傳遞 `--continue` 時,Claude Code 會開啟已完成的[背景工作階段](/docs/zh-TW/sessions#resume-a-session),但不會開啟仍在執行的背景工作階段。此範例執行檢查,然後傳送後續提示:375使用 `--continue` 繼續最近的對話,或使用 `--resume` 搭配工作階段 ID 繼續特定對話。在 Claude Code v2.1.257 或更新版本上,當您傳遞 `--continue` 時,Claude Code 開啟已完成但未仍在執行的[背景工作階段](/docs/zh-TW/sessions#resume-a-session)。此範例執行審查,然後傳送後續提示:
370 376
371```bash theme={null}377```bash theme={null}
372# First request378# First request
377claude -p "Generate a summary of all issues found" --continue383claude -p "Generate a summary of all issues found" --continue
378```384```
379 385
380如果您執行多個對話,請擷取工作階段 ID 以繼續特定對話:386如果您執行多個對話,擷取工作階段 ID 以繼續特定對話:
381 387
382```bash theme={null}388```bash theme={null}
383session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')389session_id=$(claude -p "Start a review" --output-format json | jq -r '.session_id')
384claude -p "Continue that review" --resume "$session_id"390claude -p "Continue that review" --resume "$session_id"
385```391```
386 392
387您可以從不同的目錄執行兩個命令:Claude Code [按其 ID 找到工作階段](/docs/zh-TW/sessions#resume-a-session) 在此機器上的任何專案中。在 v2.1.223 之前,Claude Code 僅在目前專案目錄及其 git worktrees 中查詢 ID,因此您必須從同一目錄執行兩個命令。393您可以從不同的目錄執行這兩個命令:Claude Code [按其 ID 找到工作階段](/docs/zh-TW/sessions#resume-a-session)在此機器上的任何專案中。在 v2.1.223 之前,Claude Code 僅在目前專案目錄及其 git worktrees 中尋找 ID,因此您必須從同一目錄執行兩個命令。
388 394
389代替工作階段 ID,您可以傳遞 `--resume` 工作階段的 `.jsonl` [文字記錄檔案](/docs/zh-TW/sessions#where-transcripts-are-stored) 的絕對路徑,Claude Code 繼續儲存在該檔案中的對話。395代替工作階段 ID,您可以將 `--resume` 傳遞工作階段的 `.jsonl` [文字記錄檔案](/docs/zh-TW/sessions#where-transcripts-are-stored)的絕對路徑,Claude Code 繼續儲存在該檔案中的對話。
390 396
391<h2 id="next-steps">397<h2 id="next-steps">
392 後續步驟398 後續步驟