4 4
5# 工具參考5# 工具參考
6 6
7> Claude Code 可以使用的工具的完整參考,包括權限要求和各工具行為。7> Claude Code 可以使用的工具完整參考,包括權限要求和各工具行為。
8 8
9Claude Code 可以存取一組內建工具,幫助它理解和修改您的程式碼庫。工具名稱是您在 [權限規則](/docs/zh-TW/permissions#tool-specific-permission-rules)、[subagent 工具清單](/docs/zh-TW/sub-agents) 和 [hook 匹配器](/docs/zh-TW/hooks) 中使用的確切字串。若要完全停用工具,請將其名稱新增到您的 [權限設定](/docs/zh-TW/permissions#tool-specific-permission-rules) 中的 `deny` 陣列。9Claude Code 可以存取一組內建工具,幫助它理解和修改您的程式碼庫。工具名稱是您在[權限規則](/docs/zh-TW/permissions#tool-specific-permission-rules)、[子代理工具清單](/docs/zh-TW/sub-agents)和[hook 匹配器](/docs/zh-TW/hooks)中使用的確切字串。
10 10
11若要新增自訂工具,請連接 [MCP server](/docs/zh-TW/mcp)。若要使用可重複使用的提示型工作流程擴展 Claude,請撰寫 [skill](/docs/zh-TW/skills),它透過現有的 `Skill` 工具執行,而不是新增工具項目。11若要控制 Claude 可以使用哪些工具以及何時要求先詢問,請在您的設定、[hooks](/docs/zh-TW/hooks) 或[子代理的工具清單](/docs/zh-TW/sub-agents#supported-frontmatter-fields)中設定[權限規則](/docs/zh-TW/permissions#tool-specific-permission-rules)。請參閱[使用權限規則和 hooks 設定工具](#configure-tools-with-permission-rules-and-hooks)以了解接受工具名稱的各個位置。
12 12
13Permission required 欄位顯示工具是否在預設權限模式下針對工作目錄內的路徑進行提示。標記為「否」的檔案存取工具(包括 `Read`、`Grep` 和 `Glob`)仍會針對 [工作目錄和其他目錄](/docs/zh-TW/permissions#working-directories) 外的路徑進行提示。`Bash` 標記為「是」,但執行內建的 [唯讀命令](/docs/zh-TW/permissions#read-only-commands) 集合,無需提示。13若要新增自訂工具,請連接 [MCP 伺服器](/docs/zh-TW/mcp)。若要使用可重複使用的提示詞型工作流程擴展 Claude,請撰寫[技能](/docs/zh-TW/skills),它透過現有的 `Skill` 工具執行,而不是新增工具項目。
14 14
15| 工具 | 描述 | 需要權限 |15<Info>
16| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- |16 在 Pro、Max 和 Team 方案上,Claude Code 在[自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)中啟動工作階段,其中分類器決定大多數這些提示,而不是您。「需要權限」欄顯示工具是否在[手動模式](/docs/zh-TW/permission-modes)中針對工作目錄內的路徑提示。標記為「否」的檔案存取工具,包括 `Read`、`Grep` 和 `Glob`,仍會針對[工作目錄和其他目錄](/docs/zh-TW/permissions#working-directories)外的路徑提示。`Bash` 標記為「是」,但執行內建的[唯讀命令](/docs/zh-TW/permissions#read-only-commands)而不提示。
17| `Agent` | 生成一個具有自己 context window 的 [subagent](/docs/zh-TW/sub-agents),以處理任務。請參閱 [Agent 工具行為](#agent-tool-behavior) | 否 |17</Info>
18| `Artifact` | 將 HTML 或 Markdown 檔案發佈為 [artifact](/docs/zh-TW/artifacts):一個私人的互動式頁面,在 claude.ai 上。在 Team 和 Enterprise 計畫上,您可以在組織內部分享。需要 Pro、Max、Team 或 Enterprise 計畫和 `/login` 驗證;請參閱 [可用性](/docs/zh-TW/artifacts#availability) | 是 |18
19| `AskUserQuestion` | 提出多選題以收集需求或澄清歧義。問題會保持開啟直到您回答:預設情況下沒有閒置逾時。若要讓閒置對話框自動繼續,請將 [`askUserQuestionTimeout`](/docs/zh-TW/settings#available-settings) 設定設為 `60s`、`5m` 或 `10m`,可在您的使用者 `settings.json` 中或從 `/config` 中的**問題自動繼續逾時**列進行設定。一旦經過所選的閒置時間且沒有輸入,對話框會自動關閉:它會提交您已選擇的任何選項,並告訴 Claude 您可能離開了鍵盤,因此 Claude 會根據自己的判斷進行,稍後可以重新提問。最後 20 秒會出現倒數計時。任何按鍵都會重新啟動計時器,報告焦點的終端機上的焦點視窗也會。逾時僅適用於 `AskUserQuestion` 的多選題;權限提示(包括計畫批准)在閒置時永遠不會自動解決。在 v2.1.198 和 v2.1.199 中,對話框預設在 60 秒閒置後自動繼續,[`CLAUDE_AFK_TIMEOUT_MS`](/docs/zh-TW/env-vars#variables) 是唯一改變該行為的方式 | 否 |19| 工具 | 說明 | 需要權限 |
20| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- |
21| `Agent` | 生成一個[子代理](/docs/zh-TW/sub-agents),具有自己的內容視窗來處理任務。啟用[代理團隊](/docs/zh-TW/agent-teams)後,帶有 `name` 的呼叫可以啟動[隊友](/docs/zh-TW/agent-teams#how-claude-starts-agent-teams)。請參閱 [Agent 工具行為](#agent-tool-behavior) | 否 |
22| `Artifact` | 將 HTML 或 Markdown 檔案發佈為[成品](/docs/zh-TW/artifacts):claude.ai 上的私人互動頁面。您可以與公開連結分享,或在 Team 和 Enterprise 方案上在您的組織內分享,其中公開分享需要擁有者[啟用它](/docs/zh-TW/artifacts#control-public-sharing)。需要 Pro、Max、Team 或 Enterprise 方案和 `/login` 驗證;請參閱[可用性](/docs/zh-TW/artifacts#availability) | 是 |
23| `AskUserQuestion` | 詢問多選題以收集需求或澄清歧義。預設情況下,問題保持開放直到您回答。請參閱 [AskUserQuestion 工具行為](#askuserquestion-tool-behavior) | 否 |
20| `Bash` | 在您的環境中執行 shell 命令。請參閱 [Bash 工具行為](#bash-tool-behavior) | 是 |24| `Bash` | 在您的環境中執行 shell 命令。請參閱 [Bash 工具行為](#bash-tool-behavior) | 是 |
21| `CronCreate` | 在目前工作階段內排程定期或一次性提示。任務的範圍限於工作階段,並在 `--resume` 或 `--continue` 時恢復(如果未過期)。請參閱 [排程任務](/docs/zh-TW/scheduled-tasks) | 否 |25| `CronCreate` | 在目前工作階段內排程重複或一次性提示。任務的範圍限於工作階段,如果未過期,在 `--resume` 或 `--continue` 時會復原。請參閱[排程任務](/docs/zh-TW/scheduled-tasks) | 否 |
22| `CronDelete` | 按 ID 取消排程任務 | 否 |26| `CronDelete` | 按 ID 取消排程任務 | 否 |
23| `CronList` | 列出工作階段中的所有排程任務 | 否 |27| `CronList` | 列出工作階段中的所有排程任務 | 否 |
24| `Edit` | 對特定檔案進行目標編輯。請參閱 [Edit 工具行為](#edit-tool-behavior) | 是 |28| `Edit` | 對特定檔案進行目標編輯。請參閱 [Edit 工具行為](#edit-tool-behavior) | 是 |
25| `EnterPlanMode` | 切換到 Plan Mode 以在編碼前設計方法 | 否 |29| `EndConversation` | 結束工作階段,在持續濫用輸入的罕見情況下或當您要求 Claude 演示該工具時。需要 Claude Code v2.1.213 或更新版本。請參閱 [EndConversation 工具行為](#endconversation-tool-behavior) | 否 |
26| `EnterWorktree` | 建立隔離的 [git worktree](/docs/zh-TW/worktrees) 並切換到其中。傳遞 `path` 以切換到現有 worktree,而不是建立新的。首次進入時,目標可能是目前儲存庫的 worktree,或在多儲存庫工作區中,是其中嵌套的儲存庫的 worktree。在 v2.1.203 之前,嵌套儲存庫的 worktree 會被拒絕。`.claude/worktrees/` 外的 `path` 會在進入前提示您的批准,因為它會移動工作階段的工作目錄和寫入存取權限到該位置。新 worktree 建立和 `.claude/worktrees/` 下的路徑不會提示。在 v2.1.206 之前,Claude 進入 `.claude/worktrees/` 外的路徑時不會提示。從 worktree 工作階段內,或從具有固定工作目錄的 subagent(例如 [`isolation: worktree`](/docs/zh-TW/sub-agents#supported-frontmatter-fields))中,只有 `path` 形式可用,且目標必須在工作階段儲存庫的 `.claude/worktrees/` 下 | 是 |30| `EnterPlanMode` | 切換到計畫模式以在編碼前設計方法 | 否 |
27| `ExitPlanMode` | 提出計畫以供批准並退出 Plan Mode | 是 |31| `EnterWorktree` | 建立隔離的 [git worktree](/docs/zh-TW/worktrees) 並切換到它。傳遞 `path` 以切換到現有 worktree,而不是建立新的。首次進入時,目標可能是目前儲存庫的 worktree,或在多儲存庫工作區中,是其中嵌套的儲存庫的 worktree。在 v2.1.203 之前,嵌套儲存庫的 worktree 被拒絕。`.claude/worktrees/` 外的 `path` 會在進入前提示您的批准,因為它會移動工作階段的工作目錄和寫入存取權限到該位置。新 worktree 建立和 `.claude/worktrees/` 下的路徑不會提示。在 v2.1.206 之前,Claude 進入 `.claude/worktrees/` 外的路徑而不提示。從 worktree 工作階段內,或從具有固定工作目錄的子代理(例如 [`isolation: worktree`](/docs/zh-TW/sub-agents#supported-frontmatter-fields)),只有 `path` 形式可用,目標必須在工作階段儲存庫的 `.claude/worktrees/` 下 | 是 |
28| `ExitWorktree` | 退出 worktree 工作階段並返回原始目錄。不適用於已在自己的工作目錄中執行的 subagents,例如使用 [`isolation: worktree`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) | 否 |32| `ExitPlanMode` | 呈現計畫以供批准並退出計畫模式 | 是 |
29| `Glob` | 根據模式匹配查找檔案。請參閱 [Glob 工具行為](#glob-tool-behavior) | 否 |33| `ExitWorktree` | 退出 worktree 工作階段並返回原始目錄。不適用於已在自己的工作目錄中執行的子代理,例如 [`isolation: worktree`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) | 否 |
34| `Glob` | 根據模式匹配尋找檔案。請參閱 [Glob 工具行為](#glob-tool-behavior) | 否 |
30| `Grep` | 在檔案內容中搜尋模式。請參閱 [Grep 工具行為](#grep-tool-behavior) | 否 |35| `Grep` | 在檔案內容中搜尋模式。請參閱 [Grep 工具行為](#grep-tool-behavior) | 否 |
31| `ListMcpResourcesTool` | 列出連接的 [MCP servers](/docs/zh-TW/mcp) 公開的資源 | 否 |36| `ListAgents` | 列出 Claude 可以使用 `SendMessage` 傳訊的代理:工作階段中的子代理、[代理團隊](/docs/zh-TW/agent-teams)隊友、您的其他本機 Claude Code 工作階段,以及當此工作階段連接到[遠端控制](/docs/zh-TW/remote-control)時,您的 [Claude Code on the web](/docs/zh-TW/claude-code-on-the-web) 工作階段和您在其他機器上的遠端控制工作階段。支援 `/list-agents` 命令。請參閱[跨工作階段傳訊](/docs/zh-TW/cross-session-messaging)。需要 Claude Code v2.1.224 或更新版本,且僅在[啟用跨工作階段傳訊](/docs/zh-TW/cross-session-messaging#availability)的工作階段中出現。隊友列和顯示此工作階段自己名稱的第一行需要 v2.1.239 或更新版本 | 否 |
32| `LSP` | 透過語言伺服器進行程式碼智慧:跳轉到定義、尋找參考、報告型別錯誤和警告。請參閱 [LSP 工具行為](#lsp-tool-behavior) | 否 |37| `ListMcpResourcesTool` | 列出連接的 [MCP 伺服器](/docs/zh-TW/mcp)公開的資源 | 否 |
33| `Monitor` | 在背景執行命令,並將每個輸出行回饋給 Claude,以便它可以對日誌項目、檔案變更或輪詢狀態做出反應。也可以開啟 WebSocket 並將每個傳入訊息視為事件。請參閱 [Monitor 工具](#monitor-tool) | 是 |38| `LSP` | 透過語言伺服器的程式碼智慧:跳到定義、尋找參考、報告型別錯誤和警告。請參閱 [LSP 工具行為](#lsp-tool-behavior) | 否 |
39| `Monitor` | 在背景執行命令並將每個輸出行回饋給 Claude,以便它可以對日誌項目、檔案變更或輪詢狀態做出反應。也可以開啟 WebSocket 並將每個傳入訊息視為事件。請參閱 [Monitor 工具](#monitor-tool) | 是 |
34| `NotebookEdit` | 修改 Jupyter notebook 儲存格。請參閱 [NotebookEdit 工具行為](#notebookedit-tool-behavior) | 是 |40| `NotebookEdit` | 修改 Jupyter notebook 儲存格。請參閱 [NotebookEdit 工具行為](#notebookedit-tool-behavior) | 是 |
35| `PowerShell` | 原生執行 PowerShell 命令。請參閱 [PowerShell 工具](#powershell-tool) 以了解可用性 | 是 |41| `PowerShell` | 原生執行 PowerShell 命令。請參閱 [PowerShell 工具](#powershell-tool)以了解可用性 | 是 |
36| `PushNotification` | 傳送桌面通知,以及當 [Remote Control](/docs/zh-TW/remote-control) 已連接時傳送手機推播,以便長時間執行的任務或 [排程任務](/docs/zh-TW/scheduled-tasks) 可以在您離開時聯繫您。推播傳遞透過 Anthropic 託管的基礎設施執行,無法從 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 存取 | 否 |42| `PushNotification` | 傳送桌面通知,以及當[遠端控制](/docs/zh-TW/remote-control)連接時的手機推播,以便長時間執行的任務或[排程任務](/docs/zh-TW/scheduled-tasks)可以在您離開時聯繫您。推播傳遞透過 Anthropic 託管的基礎設施執行,無法從 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 存取 | 否 |
37| `Read` | 讀取檔案的內容。請參閱 [Read 工具行為](#read-tool-behavior) | 否 |43| `Read` | 讀取檔案的內容。請參閱 [Read 工具行為](#read-tool-behavior) | 否 |
38| `ReadMcpResourceTool` | 按 URI 讀取特定 MCP 資源 | 否 |44| `ReadMcpResourceTool` | 按 URI 讀取特定 MCP 資源 | 否 |
39| `RemoteTrigger` | 在 claude.ai 上建立、更新、執行和列出 [Routines](/docs/zh-TW/routines)。支援 `/schedule` 命令。Routines 位於 claude.ai 上,需要 Pro、Max、Team 或 Enterprise 計畫,因此此工具無法從 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 存取 | 否 |45| `RemoteTrigger` | 在 claude.ai 上建立、更新、執行和列出[例行程序](/docs/zh-TW/routines)。支援 `/schedule` 命令。[`RemoteTrigger` 輸入參考](/docs/zh-TW/agent-sdk/typescript#remotetrigger)記錄每個動作和移除工具的組織政策。例行程序位於 claude.ai 上並需要 Pro、Max、Team 或 Enterprise 方案,因此此工具無法從 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 存取 | 否 |
40| `ReportFindings` | 將程式碼審查結果報告為結構化清單,每個結果包含檔案、摘要和失敗情景,以便 Claude Code 可以呈現它們而不是將其列印為文字。當有效的程式碼審查指示告訴它時,Claude 會呼叫它。需要 Claude Code v2.1.196 或更新版本。自 v2.1.199 起,結果也可以攜帶選擇性的 `category` slug,例如 `correctness` 或 `test-coverage`,顯示在呈現清單中的檔案位置旁邊 | 否 |46| `ReportFindings` | 將程式碼審查發現報告為結構化清單,每個發現都有檔案、摘要和失敗情景,以便 Claude Code 可以呈現它們而不是將其列印為文字。當活躍的程式碼審查指示告訴它時,Claude 會呼叫它。需要 Claude Code v2.1.196 或更新版本。從 v2.1.199 開始,發現也可以帶有可選的 `category` slug,例如 `correctness` 或 `test-coverage`,顯示在呈現清單中的檔案位置旁邊 | 否 |
41| `ScheduleWakeup` | 重新排程 [自主進行的 `/loop`](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval) 的下一次迭代。Claude 在每次迭代結束時呼叫此工具,以選擇下一次執行的時間,範圍在一分鐘到一小時之間;您不需要直接呼叫它。若要改為結束迴圈,Claude 會以 `stop: true` 呼叫它,這會取消待處理的喚醒。`stop` 欄位需要 Claude Code v2.1.202 或更新版本。待處理的喚醒會出現在 [Stop hook input](/docs/zh-TW/hooks#stop-input) 的 `session_crons` 中。在 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用,其中沒有間隔的 `/loop` 提示會改為按固定時間表執行 | 否 |47| `ScheduleWakeup` | 重新排程[自我調整 `/loop`](/docs/zh-TW/scheduled-tasks#let-claude-choose-the-interval)的下一次迭代。Claude 在每次迭代結束時呼叫此項以選擇下一次執行的時間,介於一分鐘到一小時之間;您不直接呼叫它。若要改為結束迴圈,Claude 使用 `stop: true` 呼叫它,這會取消待處理的喚醒。`stop` 欄位需要 Claude Code v2.1.202 或更新版本。待處理的喚醒出現在[停止 hook 輸入](/docs/zh-TW/hooks#stop-input)中的 `session_crons` 中 | 否 |
42| `SendMessage` | 傳送訊息給 [agent team](/docs/zh-TW/agent-teams) 隊友,或按 agent ID 或名稱 [恢復 subagent](/docs/zh-TW/sub-agents#resume-subagents)。已完成的 subagent 會在背景中自動恢復;您從 `/tasks` 停止的 subagent 不會,且呼叫會傳回拒絕。結構化的團隊協議訊息需要 agent teams。接收者永遠不會將來自另一個 agent 的訊息視為您的同意或批准。自 v2.1.198 起,subagent 將來自啟動它的 agent 的訊息視為正常任務指示,而不是對等請求。自 v2.1.199 起,傳送到現在解析為與對話中較早時間不同的 agent 的名稱會被拒絕而不是傳遞;請參閱 [恢復 subagents](/docs/zh-TW/sub-agents#resume-subagents) | 否 |48| `SendFeedback` | 起草關於 Claude Code 的回饋報告,涵蓋產品問題或 Claude 在工作階段中的自身行為,並在您的機器上排隊供您審查。Claude Code 在您選擇傳送草稿之前不會傳送任何內容。請參閱 [SendFeedback 工具行為](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更新版本 | 否 |
43| `SendUserFile` | 將工作階段中的檔案傳送給您,並附上選擇性標題,以便生成的報告、圖表、螢幕擷取畫面或建置的成品可以到達您的裝置,而不是只在文字記錄中提及。自 v2.1.196 起,選擇性的 `display` 輸入控制呈現方式:`render` 在用戶端中內聯開啟檔案,`attach` 僅顯示下載卡片,未設定時用戶端會根據檔案類型決定。當連接了 [Remote Control](/docs/zh-TW/remote-control) 用戶端或工作階段在受管雲端環境(例如 [Claude Code on the web](/docs/zh-TW/claude-code-on-the-web))中執行時可用。傳遞透過 Anthropic 託管的基礎設施執行,因此該工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |49| `SendMessage` | 傳送訊息給另一個代理:[代理團隊](/docs/zh-TW/agent-teams)隊友、[它按代理 ID 或名稱復原的子代理](/docs/zh-TW/sub-agents#resume-subagents),或 您的其他 Claude Code 工作階段之一,在此機器上或超越它。傳訊其他工作階段需要 Claude Code v2.1.224 或更新版本。[跨工作階段傳訊](/docs/zh-TW/cross-session-messaging)涵蓋 Claude 可以到達的工作階段、[訊息到達時的樣子](/docs/zh-TW/cross-session-messaging#what-a-message-looks-like)以及 [Claude 如何在另一個工作階段閒置時收到通知](/docs/zh-TW/cross-session-messaging#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可選的 `summary` 輸入,通常 5-10 個字,Claude Code 顯示為單行預覽。當 Claude 在[純文字訊息](/docs/zh-TW/cross-session-messaging#limitations)上省略它時,Claude Code 使用訊息的第一行作為摘要。Claude Code 使用省略號截斷超過 200 個字元的摘要 | 否 |
44| `ShareOnboardingGuide` | 上傳 `ONBOARDING.md` 並傳回隊友可以在 Claude Code 中開啟的分享連結。在撰寫指南後從 `/team-onboarding` 呼叫。適用於 Pro、Max、Team 和 Enterprise 計畫上的 claude.ai 訂閱者 | 是 |50| `SendUserFile` | 從工作階段傳送檔案給您,帶有可選的標題,以便生成的報告、圖表、螢幕擷取畫面或內建成品到達您的裝置,而不是僅在文字記錄中提及。從 v2.1.196 開始,可選的 `display` 輸入控制呈現:`render` 在用戶端中內聯開啟檔案,`attach` 僅顯示下載卡,未設定時用戶端根據檔案型別決定。當[遠端控制](/docs/zh-TW/remote-control)用戶端連接或工作階段在受管雲端環境(例如 [Claude Code on the web](/docs/zh-TW/claude-code-on-the-web))中執行時可用。傳遞透過 Anthropic 託管的基礎設施執行,因此該工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |
45| `Skill` | 在主對話中執行 [skill](/docs/zh-TW/skills#control-who-invokes-a-skill) | 是 |51| `ShareOnboardingGuide` | 上傳 `ONBOARDING.md` 並返回隊友可以在 Claude Code 中開啟的分享連結。在指南寫入後從 `/team-onboarding` 呼叫。適用於 Pro、Max、Team 和 Enterprise 方案上的 claude.ai 訂閱者 | 是 |
46| `TaskCreate` | 在任務清單中建立新任務 | 否 |52| `Skill` | 在主對話中執行[技能](/docs/zh-TW/skills#control-who-invokes-a-skill) | 是 |
47| `TaskGet` | 檢索特定任務的完整詳細資訊 | 否 |53| `TaskCreate` | 在任務清單中建立新任務。Claude Code 在[任務工具可用性](#task-tool-availability)下列出的模型上將其排除,除非您選擇加入 | 否 |
48| `TaskList` | 列出所有任務及其目前狀態 | 否 |54| `TaskGet` | 檢索特定任務的完整詳細資訊。Claude Code 在[任務工具可用性](#task-tool-availability)下列出的模型上將其排除,除非您選擇加入 | 否 |
49| `TaskOutput` | 檢索背景任務的輸出。已在任務的輸出檔案路徑上使用 `Read` 取代。當沒有任務符合 ID 時,錯誤會列出執行中的背景 agents(按 ID 和描述)。在 v2.1.203 之前,錯誤只命名遺失的 ID | 否 |55| `TaskList` | 列出所有任務及其目前狀態。Claude Code 在[任務工具可用性](#task-tool-availability)下列出的模型上將其排除,除非您選擇加入 | 否 |
50| `TaskStop` | 按 ID 終止執行中的背景任務。它也接受 [agent-team 隊友](/docs/zh-TW/agent-teams) 或按 agent ID 或名稱的具名背景 agent。在 v2.1.198 之前,它只接受背景任務 ID。當沒有任務符合 ID 時,錯誤會列出執行中的背景 agents(按 ID 和描述),包括另一個 agent 生成的 agents。在 v2.1.203 之前,錯誤列出執行中的隊友和具名 agents,但不包括另一個 agent 生成的背景 agents,因此無法從主對話中識別或停止這些 agents | 否 |56| `TaskOutput` | 檢索來自背景任務的輸出。已棄用,改為在任務的輸出檔案路徑上使用 `Read`。當沒有任務符合 ID 時,錯誤會列出執行中的背景代理(按 ID 和說明)。在 v2.1.203 之前,錯誤僅命名遺失的 ID | 否 |
51| `TaskUpdate` | 更新任務狀態、依賴項、詳細資訊或刪除任務 | 否 |57| `TaskStop` | 按 ID 停止執行中的背景任務。它也接受[代理團隊隊友](/docs/zh-TW/agent-teams)或按代理 ID 或名稱命名的背景代理。在 v2.1.198 之前,它僅接受背景任務 ID。當沒有任務符合 ID 時,錯誤會列出執行中的背景代理(按 ID 和說明),包括另一個代理生成的代理。在 v2.1.203 之前,錯誤列出執行中的隊友和命名代理,但不列出另一個代理生成的背景代理,因此無法從主對話中識別或停止它們 | 否 |
52| `TodoWrite` | 管理工作階段任務檢查清單。自 v2.1.142 起預設停用,改用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。設定 `CLAUDE_CODE_ENABLE_TASKS=0` 以重新啟用 | 否 |58| `TaskUpdate` | 更新任務狀態、依賴項、詳細資訊或刪除任務。Claude Code 在[任務工具可用性](#task-tool-availability)下列出的模型上將其排除,除非您選擇加入 | 否 |
53| `ToolSearch` | 當啟用 [tool search](/docs/zh-TW/mcp#scale-with-mcp-tool-search) 時,搜尋並載入延遲工具 | 否 |59| `TodoWrite` | 管理工作階段任務檢查清單。預設情況下禁用,改為使用 `TaskCreate`、`TaskGet`、`TaskList` 和 `TaskUpdate`。設定 `CLAUDE_CODE_ENABLE_TASKS=0` 以在[具有任務追蹤工具的工作階段](#task-tool-availability)中重新啟用它 | 否 |
54| `WaitForMcpServers` | 等待一個或多個仍在背景連接的 [MCP servers](/docs/zh-TW/mcp),以便請求可以使用其工具而無需重新啟動工作階段。Claude 會在所需的伺服器尚未連接時呼叫它。僅在停用 [tool search](/docs/zh-TW/mcp#scale-with-mcp-tool-search) 時出現,因為啟用時 `ToolSearch` 會處理等待 | 否 |60| `ToolSearch` | 當[工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)啟用時,搜尋並載入延遲工具 | 否 |
55| `WebFetch` | 從指定 URL 擷取內容。請參閱 [WebFetch 工具行為](#webfetch-tool-behavior) | 是 |61| `WaitForMcpServers` | 等待一個或多個仍在背景連接的 [MCP 伺服器](/docs/zh-TW/mcp),以便請求可以使用它們的工具而無需重新啟動工作階段。當需要的伺服器尚未連接時,Claude 會呼叫它。僅在[工具搜尋](/docs/zh-TW/mcp#scale-with-mcp-tool-search)禁用時出現,因為啟用時 `ToolSearch` 處理等待 | 否 |
62| `WebFetch` | 從指定的 URL 擷取內容。請參閱 [WebFetch 工具行為](#webfetch-tool-behavior) | 是 |
56| `WebSearch` | 執行網路搜尋。請參閱 [WebSearch 工具行為](#websearch-tool-behavior) | 是 |63| `WebSearch` | 執行網路搜尋。請參閱 [WebSearch 工具行為](#websearch-tool-behavior) | 是 |
57| `Workflow` | 執行 [dynamic workflow](/docs/zh-TW/workflows):一個在背景協調許多 subagents 並傳回一個統一結果的指令碼 | 是 |64| `Workflow` | 執行[動態工作流程](/docs/zh-TW/workflows):一個在背景協調許多子代理並返回一個統一結果的指令碼 | 是 |
58| `Write` | 建立或覆寫檔案。請參閱 [Write 工具行為](#write-tool-behavior) | 是 |65| `Write` | 建立或覆寫檔案。請參閱 [Write 工具行為](#write-tool-behavior) | 是 |
59 66
60<h2 id="configure-tools-with-permission-rules-and-hooks">67<h2 id="configure-tools-with-permission-rules-and-hooks">
61 使用權限規則和 hooks 設定工具68 使用權限規則和 hooks 設定工具
62</h2>69</h2>
63 70
64在大多數情況下,Claude 會決定何時使用這些工具,您在與 Claude 互動時不需要自己命名它們。當定義權限和其他設定時,您直接參考工具名稱:71在大多數情況下,Claude 會決定何時使用這些工具,您在與 Claude 互動時不需要自己命名它們。您在定義權限和其他設定時直接參考工具名稱:
65 72
66* 在設定中的 [`permissions.allow` 和 `permissions.deny`](/docs/zh-TW/settings#available-settings),以及 `/permissions` 介面73* 在設定中的 [`permissions.allow`](/docs/zh-TW/settings-reference#permissions-allow) 和 [`permissions.deny`](/docs/zh-TW/settings-reference#permissions-deny),以及 `/permissions` 介面
67* 在 `--allowedTools` 和 `--disallowedTools` [CLI 旗標](/docs/zh-TW/cli-reference) 中74* 在 `--allowedTools` 和 `--disallowedTools` [CLI 旗標](/docs/zh-TW/cli-reference)
68* 在 Agent SDK 的 [`allowedTools` 和 `disallowedTools`](/docs/zh-TW/agent-sdk/permissions#allow-and-deny-rules) 選項中75* 在 Agent SDK 的 [`allowedTools` 和 `disallowedTools`](/docs/zh-TW/agent-sdk/permissions#allow-and-deny-rules) 選項
69* 在 [subagent 的 `tools` 或 `disallowedTools`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) frontmatter 中76* 在 [subagent 的 `tools` 或 `disallowedTools`](/docs/zh-TW/sub-agents#supported-frontmatter-fields) frontmatter
70* 在 [skill 的 `allowed-tools`](/docs/zh-TW/skills#frontmatter-reference) frontmatter 中77* 在 [skill 的 `allowed-tools`](/docs/zh-TW/skills#frontmatter-reference) frontmatter
71* 在 hook 的 [`if` 條件](/docs/zh-TW/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) 中78* 在 hook 的 [`if` 條件](/docs/zh-TW/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field)
72 79
73所有這些都接受相同的規則格式 `ToolName(specifier)`。specifier 取決於工具,多個工具共享一種格式:80所有這些都接受相同的規則格式 `ToolName(specifier)`。specifier 取決於工具,多個工具共享一種格式:
74 81
83| `WebFetch(domain:example.com)` | WebFetch | [網域匹配](/docs/zh-TW/permissions#webfetch) |90| `WebFetch(domain:example.com)` | WebFetch | [網域匹配](/docs/zh-TW/permissions#webfetch) |
84| `WebSearch` | WebSearch | 無 specifier;允許或拒絕整個工具 |91| `WebSearch` | WebSearch | 無 specifier;允許或拒絕整個工具 |
85 92
86此處未列出的工具,例如 `ExitPlanMode` 或 `ShareOnboardingGuide`,僅接受不帶 specifier 的裸工具名稱。93此處未列出的工具,例如 `ExitPlanMode` 或 `ShareOnboardingGuide`,只接受不帶 specifier 的裸工具名稱。
87 94
88`Edit(...)` 允許規則也授予對相同路徑的讀取存取權,因此您不需要匹配的 `Read(...)` 規則。`Read(...)` 拒絕規則也會在相同路徑上阻止 Edit 工具,包括在該處建立新檔案,因為編輯需要讀取結果。Edit 上的 `Read` 拒絕檢查需要 Claude Code v2.1.208 或更新版本。95`Edit(...)` 允許規則也會授予對相同路徑的讀取存取權,因此您不需要匹配的 `Read(...)` 規則。`Read(...)` 拒絕規則也會在相同路徑上阻止 Edit 和 Write 工具,包括在該處建立新檔案,因為兩個工具都會變更 Claude 必須能夠讀回的內容。`Read` 拒絕檢查需要 Claude Code v2.1.208 或更新版本進行編輯,以及 v2.1.228 或更新版本進行寫入。
89 96
90Hook `matcher` 欄位使用裸工具名稱,而不是括號括起的規則格式。請參閱 [matcher 模式](/docs/zh-TW/hooks#matcher-patterns) 以了解匹配規則。如需每個工具在 hooks 中傳遞給 `tool_input` 的欄位名稱,請參閱 [PreToolUse 輸入參考](/docs/zh-TW/hooks#pretooluse-input)。97Hook `matcher` 欄位使用裸工具名稱,而不是括號化的規則格式。請參閱 [matcher 模式](/docs/zh-TW/hooks#matcher-patterns) 以了解匹配規則。如需每個工具在 hooks 中傳遞給 `tool_input` 的欄位名稱,請參閱 [PreToolUse 輸入參考](/docs/zh-TW/hooks#pretooluse-input)。
91 98
92<h2 id="agent-tool-behavior">99<h2 id="agent-tool-behavior">
93 Agent 工具行為100 Agent 工具行為
94</h2>101</h2>
95 102
96Agent 工具在單獨的 context window 中生成一個 subagent。subagent 自主地完成其任務,然後將單個文字結果傳回父對話。父對話看不到 subagent 的中間工具呼叫或輸出,只看到最終結果。103Agent 工具在獨立的內容視窗中生成一個子代理。子代理自主地完成其任務,然後向父對話返回單一文字結果。父對話看不到子代理的中間工具呼叫或輸出,只能看到最終結果。啟用 [agent teams](/docs/zh-TW/agent-teams) 時,帶有 `name` 的呼叫可以啟動一個 [teammate](/docs/zh-TW/agent-teams#how-claude-starts-agent-teams),它透過團隊訊息而不是返回結果來報告。
97 104
98若要限制 subagent 執行的轉數,請在 [subagent 定義](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 中設定 `maxTurns`。105若要限制子代理執行的回合數,請在 [subagent definition](/docs/zh-TW/sub-agents#supported-frontmatter-fields) 中設定 `maxTurns`。當子代理達到限制時,Claude Code 會將返回的結果標記為部分輸出,Claude 可以 [resume the subagent](/docs/zh-TW/sub-agents#resume-subagents) 以繼續。
99 106
100相同的 Agent 工具也會在啟用 fork 模式時啟動 [forked subagents](/docs/zh-TW/sub-agents#fork-the-current-conversation)。fork 繼承完整的父對話,而不是從頭開始,始終在背景執行,並仍在您的終端中顯示權限提示。本節的其餘部分描述命名的 subagents。107同一個 Agent 工具也會在 [fork mode](/docs/zh-TW/sub-agents#turn-fork-mode-on-or-off) 開啟的地方啟動 [forked subagents](/docs/zh-TW/sub-agents#fork-the-current-conversation)。fork 會繼承完整的父對話而不是從頭開始,在背景中執行,除了 [cases that stay in the foreground](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 外,並且仍會在您的終端中顯示權限提示。本節的其餘部分描述非 fork 子代理。
101 108
102命名的 subagent 可以使用哪些工具取決於 [subagent 定義](/docs/zh-TW/sub-agents) 中的 `tools` 和 `disallowedTools` 欄位:109非 fork 子代理可以使用哪些工具取決於 [subagent definition](/docs/zh-TW/sub-agents) 中的 `tools` 和 `disallowedTools` 欄位:
103 110
104* **兩個欄位都未設定**:subagent 繼承父對話可用的每個工具。111* **兩個欄位都未設定**:子代理繼承每個 [tool available to subagents](/docs/zh-TW/sub-agents#available-tools)。
105* **僅 `tools`**:subagent 僅獲得列出的工具。112* **僅設定 `tools`**:子代理只獲得列出的工具。
106* **僅 `disallowedTools`**:subagent 獲得除列出的工具外的每個父工具。113* **僅設定 `disallowedTools`**:子代理獲得除了列出的工具外的每個父工具。
107* **兩者都設定**:`disallowedTools` 優先。同時列在兩者中的工具會被移除。114* **兩者都設定**:`disallowedTools` 優先。同時列在兩者中的工具會被移除。
108 115
109當 subagent 的 `tools` 清單解析為完全沒有工具時,例如因為每個項目都拼寫錯誤或命名了一個對 subagents 不可用的工具,Agent 工具會傳回一個錯誤,列出這些項目,而不是啟動 subagent。在 v2.1.208 之前,subagent 會以無工具的方式啟動,並可能傳回空白或令人困惑的結果。116在每種情況下,解析的集合都限於 [tools available to subagents](/docs/zh-TW/sub-agents#available-tools):不可用於子代理的工具永遠不會被授予,即使在 `tools` 中列出也是如此。
117
118如果子代理的 `tools` 列表中的每個項目都無法匹配可用工具,Agent 工具通常會返回一個錯誤,命名這些項目而不是啟動子代理;請參閱 [Agent would be spawned with zero tools](/docs/zh-TW/errors#agent-would-be-spawned-with-zero-tools) 以了解訊息和如何修復每個項目。
119
120啟動子代理本身不會提示權限。Claude Code 在執行時根據您的權限規則檢查子代理自己的工具呼叫。
121
122您看到子代理權限提示的位置取決於它是在前景還是背景中執行。Claude Code 預設在背景中執行子代理,除了 [cases that run in the foreground](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background) 外。
123
124* **前景子代理**顯示您在主對話中會看到的相同權限提示,在每個工具呼叫發生時。
125* **背景子代理** 自 v2.1.186 起在您的主工作階段中顯示權限提示。提示會命名哪個子代理在詢問,按 Esc 會拒絕該工具呼叫而不停止子代理。在 v2.1.186 之前,背景子代理會自動拒絕任何否則會提示的工具呼叫,並在沒有該工具的情況下繼續。
126
127若要 [limit what a subagent can reach](/docs/zh-TW/sub-agents#control-subagent-capabilities),請首先縮小其 `tools` 欄位,例如透過將 Bash 留在列表之外,或在您的設定中設定拒絕規則。
128
129<h2 id="askuserquestion-tool-behavior">
130 AskUserQuestion 工具行為
131</h2>
132
133Claude 使用 `AskUserQuestion` 在需要決策或澄清時向您提出多選題。透過選擇選項來回答,或透過 `Other` 列或備註欄位輸入您自己的文字。
110 134
111啟動 subagent 本身不會提示權限。Claude Code 在執行時會根據您的權限規則檢查 subagent 自己的工具呼叫。135當您透過輸入自己的文字來回答時,Claude Code 會以中立的措辭轉達答案,以便 Claude 遵循您所寫的內容,包括等待或先解釋的請求。
136
137<h3 id="question-auto-continue-timeout">
138 問題自動繼續逾時
139</h3>
112 140
113自 v2.1.198 起,subagents 預設在背景執行;當 Claude 需要結果才能繼續時,會在前景執行一個。141問題會保持開啟,直到您回答為止。如果您想讓未回答的問題最終關閉並讓 Claude 在沒有您的情況下繼續,請在您的使用者 `settings.json` 中或從 `/config` 中的 **Question auto-continue timeout** 列設定 [`askUserQuestionTimeout`](/docs/zh-TW/settings-reference#askuserquestiontimeout) 設定為 `60s`、`5m` 或 `10m`。
114 142
115* **前景 subagents** 顯示您在主對話中會看到的相同權限提示,在每個工具呼叫發生時。143問題閒置該時間長度而沒有輸入後,對話框會自動關閉:它會提交您已選擇的任何選項,並告訴 Claude 您可能離開了鍵盤,因此 Claude 會根據自己的判斷進行,稍後可以重新提問。您會看到最後 20 秒的倒數計時。按任何鍵重新啟動計時器;在報告焦點的終端上,切換到視窗也會重新啟動它。
116* **背景 subagents** 自 v2.1.186 起在您的主要工作階段中顯示權限提示。提示會指出哪個 subagent 在要求,按下 Esc 會拒絕該單一工具呼叫,而不會停止 subagent。在 v2.1.186 之前,背景 subagents 會自動拒絕任何否則會提示的工具呼叫,並在沒有該工具的情況下繼續。
117 144
118若要首先限制 subagent 可以到達的內容,請縮小其 `tools` 欄位、將 Bash 排除在清單之外,或在您的設定中設定拒絕規則,如 [控制 subagent 功能](/docs/zh-TW/sub-agents#control-subagent-capabilities) 中所述。如需有關選擇前景或背景的更多資訊,請參閱 [在前景或背景中執行 subagents](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)。145逾時僅適用於 `AskUserQuestion` 的多選題;權限提示(包括計畫批准)在閒置時永遠不會自動解決。
119 146
120<h2 id="bash-tool-behavior">147<h2 id="bash-tool-behavior">
121 Bash 工具行為148 Bash 工具行為
122</h2>149</h2>
123 150
124Bash 工具在單獨的程序中執行每個命令,具有以下持久性行為:151Bash 工具在單獨的程序中執行每個命令。
152
153<h3 id="what-persists-between-commands">
154 命令之間保留的內容
155</h3>
156
157* 當 Claude 在主工作階段中執行 `cd` 時,新的工作目錄會延續到後續的 Bash 命令,只要它保持在專案目錄或您使用 `--add-dir`、`/add-dir` 或設定中的 `additionalDirectories` 新增的[額外工作目錄](/docs/zh-TW/permissions#working-directories)內。這包括 Claude 為回應您後續訊息而執行的命令。
158 * 子代理工作階段永遠不會延續工作目錄變更。
159 * 如果 `cd` 落在這些目錄之外,Claude Code 會重設為專案目錄,並在工具結果中附加 `Shell cwd was reset to <dir>`。
160 * 若要停用此延續功能,使每個 Bash 命令都在專案目錄中啟動,請設定 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`。
161* 環境變數不會保留。一個命令中的 `export` 在下一個命令中將無法使用。
162* 在您的 shell 啟動檔案中定義的別名和 shell 函式可用。在工作階段啟動時,Claude Code 會根據您的 shell 來源 `~/.zshrc`、`~/.bashrc` 或 `~/.profile`,擷取產生的別名、函式和 shell 選項,並將其套用到每個 Bash 命令。
163
164在啟動 Claude Code 之前啟動您的 virtualenv 或 conda 環境。若要使環境變數在 Bash 命令之間保留,請在啟動 Claude Code 之前將 [`CLAUDE_ENV_FILE`](/docs/zh-TW/env-vars) 設定為 shell 指令碼,或使用 [SessionStart hook](/docs/zh-TW/hooks#persist-environment-variables) 動態填入它。
165
166<h3 id="timeout-and-output-limits">
167 逾時和輸出限制
168</h3>
169
170每個命令都在逾時限制下執行,Claude 管理它:當它需要比命令的預設值更長的時間時,它會使用該呼叫傳遞 `timeout` 參數 — 您永遠不會設定每個命令的逾時。兩個[環境變數](/docs/zh-TW/env-vars)限制 Claude 獲得的內容:
171
172* `BASH_DEFAULT_TIMEOUT_MS` — 當 Claude 不傳遞逾時時的預設值;預設為兩分鐘
173* `BASH_MAX_TIMEOUT_MS` — 使用預設值時,設定上限以限制 Claude 要求的任何內容:有效上限是兩者中較大的,預設為十分鐘
174
175<h4 id="output-limits">
176 輸出限制
177</h4>
178
179Claude Code 在命令執行時將命令的輸出串流到工作檔案;輸出超過 5 GB 的命令會被終止。命令完成後,Claude Code 從該檔案讀回輸出,最多到下面描述的讀回視窗。輸出有多少到達 Claude 內聯取決於 Claude Code 是否將結果視為失敗:
180
181| 結果 | Claude 獲得的內容 |
182| :- | :-------------------------------------------------------------------------------------- |
183| 有效 | 內聯最多約 30,000 個字元(預設);超過該值,會儲存到工作階段目錄的檔案路徑並在 64 MiB 後截斷,加上開頭的簡短預覽,Claude 在需要其餘部分時讀取或搜尋檔案 |
184| 失敗 | 內聯最多約 10,000 個字元;超過該值,從讀回視窗中切割的該大小的頭尾摘錄,沒有檔案路徑 |
185
186命令退出代碼為 1 只有在 Claude Code 將退出代碼 1 識別為該命令的良性結果時,才算作 Bash 工具的有效結果:`grep`、`rg`、`egrep`、`fgrep`、`find`、`diff`、`test` 和 `[`,加上 `git diff` 和 `git grep`。每個其他退出代碼為 1 的命令都算作失敗,即使退出代碼 1 是良性的資訊結果:`pgrep` 和 `jq -e` 沒有符合項,`cmp` 的檔案不同。
187
188[`BASH_MAX_OUTPUT_LENGTH`](/docs/zh-TW/env-vars) 設定 Claude Code 從工作檔案讀回到命令結果中的輸出字元數:預設 30,000,最多硬上限 150,000。當您的命令經常超過該視窗時提高它,例如詳細的建置或完整的測試套件日誌。提高它會擴大讀回視窗,這也是失敗命令的摘錄被切割的視窗。它不會提高內聯上限:超過內聯上限的有效結果會作為檔案路徑加預覽到達,無論此變數如何。
189
190若要變更有效結果中 Claude 內聯接收的數量,請改為設定 [`bashOutputMaxChars`](/docs/zh-TW/settings-reference#bashoutputmaxchars) 設定,最多 128,000 個字元。它同時調整內聯上限和讀回視窗的大小,Claude Code 隨後會忽略 `BASH_MAX_OUTPUT_LENGTH`。需要 Claude Code v2.1.261 或更新版本。
191
192<h3 id="background-commands">
193 背景命令
194</h3>
195
196對於長時間執行的程序(例如開發伺服器或監視建置),Claude 可以設定 `run_in_background: true` 以將命令作為背景工作啟動並在其執行時繼續工作。使用 `/tasks` 列出並停止背景工作。在您從那裡停止一個後,或從連接的用戶端(例如桌面應用程式)停止後,Claude 會繼續而不是等待。如果子代理啟動了命令,則是該子代理繼續。
197
198[前景子代理](/docs/zh-TW/sub-agents#run-subagents-in-foreground-or-background)啟動的命令在該子代理給出最終回應時停止。主對話或背景子代理啟動的命令在最終回應後繼續執行。在使用 `-p` 旗標的非互動模式中,[背景命令在執行的最終結果後不久結束](/docs/zh-TW/headless#background-tasks-at-exit)。
199
200當命令在未完成的情況下達到其逾時時,Claude Code 會將其移至背景而不是停止它。Claude 在命令繼續時繼續工作。Claude Code 將相同的生命週期規則套用到移動的命令,就像任何其他背景命令一樣,因此它仍然在該子代理的最終回應時結束前景子代理的命令。設定 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/zh-TW/env-vars#variables) 會停用自動背景化以及其餘的背景工作功能。
201
202Claude Code 永遠不會自動背景化三種命令。它在逾時時停止它們:
203
204* 以 `sleep` 開頭的命令。
205* 在其中任何地方執行 `git` 的命令。
206* Claude Code 無法完全解析為簡單命令的複合命令。Claude Code 將參數擴展(例如 `${VAR}`)視為無法解析,因此它會在逾時時停止以 `; exit "${PIPESTATUS[0]}"` 結尾的命令,即使該命令的其餘部分可解析。
207
208移至背景的命令的結果說明發生了什麼:
209
210* 當逾時觸發移動時,結果明確報告它:`Command did not complete within its 120s timeout and was moved to the background`,秒數與應用的逾時相符,後跟工作 ID 和輸出正在寫入的檔案路徑。
211* 移至背景的命令內的 `cd`、`pushd`、`popd` 或 `chdir` 永遠不會延續:結果說明 `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`,所以 Claude 不會對未發生的目錄變更採取行動。
125 212
126* 當 Claude 在主工作階段中執行 `cd` 時,只要新的工作目錄保持在專案目錄內或您使用 `--add-dir`、`/add-dir` 或設定中的 `additionalDirectories` 新增的 [額外工作目錄](/docs/zh-TW/permissions#working-directories) 內,新的工作目錄就會延續到後續的 Bash 命令。Subagent 工作階段永遠不會延續工作目錄變更。213<h3 id="memory-limit-on-linux-and-wsl">
127 * 如果 `cd` 落在這些目錄之外,Claude Code 會重設為專案目錄,並將 `Shell cwd was reset to <dir>` 附加到工具結果。214 Linux 和 WSL 上的記憶體限制
128 * 若要停用此延續,使每個 Bash 命令都在專案目錄中啟動,請設定 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`。215</h3>
129* 環境變數不持久化。一個命令中的 `export` 在下一個命令中將不可用。216
130* 在您的 shell 啟動檔案中定義的別名和 shell 函式可用。在工作階段開始時,Claude Code 會來源 `~/.zshrc`、`~/.bashrc` 或 `~/.profile`(取決於您的 shell),擷取產生的別名、函式和 shell 選項,並將其應用於每個 Bash 命令。217在 Linux 和 WSL 上,將 [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/zh-TW/env-vars#variables) 設定為大小(例如 `4G`)以限制 Bash、PowerShell 和 [Monitor](#monitor-tool) 工具命令可以使用的記憶體,使一個失控的建置無法佔用工作階段其餘部分需要的記憶體。需要 Claude Code v2.1.233 或更新版本。在 v2.1.246 之前,Monitor 工具命令在上限之外執行。
131 218
132在啟動 Claude Code 之前啟動您的 virtualenv 或 conda 環境。若要讓環境變數在 Bash 命令之間持久化,請在啟動 Claude Code 之前將 [`CLAUDE_ENV_FILE`](/docs/zh-TW/env-vars) 設定為 shell 指令碼,或使用 [SessionStart hook](/docs/zh-TW/hooks#persist-environment-variables) 動態填充它。219* 將大小寫成位元組數或帶有 `K`、`M`、`G` 或 `T` 後綴。設定 `0`、`off`、`false`、`no` 或 `none` 以關閉上限。Claude Code 會忽略任何無法讀取為大小的其他值,例如 `4e9`。
220* Claude Code 將工作階段的所有 Bash、PowerShell 和 Monitor 命令計入一個上限,而不是每個命令各自計入。
221* Claude Code 使用記憶體 cgroup 套用上限。當無法設定 cgroup 時,命令在沒有上限的情況下執行,來自 `claude --debug` 的偵錯日誌會說明原因。
222* 在 Claude Code 啟動的第一個程序已開啟上限或因為關閉值或失敗的 cgroup 設定而關閉上限後,Claude Code 會保留該結果直到您重新啟動。若要套用已變更或移除的值或固定的設定,請再次啟動 `claude`。
223* 當命令無法保持在上限以下時,核心會終止命令,其結果中沒有任何內容命名上限。
133 224
134兩個限制限制每個命令:225Claude Code 也可以將它啟動的其他類型的程序計入相同的限制。將 [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/zh-TW/env-vars#variables) 設定為要從上限中豁免的類型的逗號分隔清單;Claude Code 將上限套用到不在您清單上的每種類型。將其設定為 `none` 以限制每種類型,或設定為 `all-new` 以僅限制 Bash、PowerShell 和 Monitor 工具命令。需要 Claude Code v2.1.246 或更新版本。您可以命名的類型:
135 226
136* **逾時**:預設為兩分鐘。Claude 可以使用 `timeout` 參數要求每個命令最多 10 分鐘。使用 [`BASH_DEFAULT_TIMEOUT_MS` 和 `BASH_MAX_TIMEOUT_MS`](/docs/zh-TW/env-vars) 覆寫預設值和上限。227* `mcp`: 本機 [MCP 伺服器](/docs/zh-TW/mcp)
137* **輸出長度**:預設為 30,000 個字元。當命令產生超過該值的輸出時,Claude Code 會將完整輸出儲存到工作階段目錄中的檔案,並給予 Claude 檔案路徑加上開始處的簡短預覽。Claude 在需要其餘部分時讀取或搜尋該檔案。使用 [`BASH_MAX_OUTPUT_LENGTH`](/docs/zh-TW/env-vars) 提高限制,最高可達 150,000 個字元的硬上限。228* `lsp`: [語言伺服器](#lsp-tool-behavior)
229* `hooks`: [hook](/docs/zh-TW/hooks) 命令
230* `plugin`: [外掛程式](/docs/zh-TW/plugins)執行的命令
231* `helper`: Claude Code 自己的協助程式命令,例如 `git`
232* `agent`: 子 Claude Code 程序,例如[代理隊友](/docs/zh-TW/agent-teams)
138 233
139對於長時間執行的程序(例如開發伺服器或監視建置),Claude 可以設定 `run_in_background: true` 以將命令作為背景任務啟動,並在其執行時繼續工作。使用 `/tasks` 列出和停止背景任務。在使用 `-p` 旗標的非互動模式中,[背景任務在執行的最終結果後不久結束](/docs/zh-TW/headless#background-tasks-at-exit)。234無論您列出什麼,這些規則都適用:
235
236* **未知名稱**:Claude Code 會忽略它不識別的名稱
237* **Bash、PowerShell 和 Monitor**:Claude Code 無論您列出什麼,都會將 Bash、PowerShell 和 Monitor 工具命令保持在上限以下
238* **變數未設定**:Claude Code 從 Anthropic 從伺服器傳遞的設定中取得其他限制類型的集合,該集合可能隨時間變化,因此當您需要不變的集合時設定變數
239* **權限閘控 hook**:即使每種類型都受限,Claude Code 也會從上限中排除可以阻止或變更動作結果的 hook,以及任何此類 hook 呼叫的 MCP 伺服器,因此核心終止權限閘控 hook 無法允許它正在阻止的動作
140 240
141<h2 id="edit-tool-behavior">241<h2 id="edit-tool-behavior">
142 Edit 工具行為242 Edit 工具行為
143</h2>243</h2>
144 244
145Edit 工具執行確切的字串替換。它採用 `old_string` 和 `new_string` 並用第二個替換第一個。它不使用正規表達式或模糊匹配。245Edit 工具執行精確的字串替換。它接受 `old_string` 和 `new_string`,並用後者替換前者。它不使用正規表達式或模糊匹配。
246
247編輯要應用必須通過三項檢查。在任何檢查之前,由 [`Read` 拒絕規則](/docs/zh-TW/permissions#tool-specific-permission-rules)匹配的路徑會被拒絕,包括在該處建立新檔案。拒絕需要 Claude Code v2.1.208 或更新版本。
146 248
147三個檢查必須通過才能應用編輯。在任何檢查之前,由 [`Read` 拒絕規則](/docs/zh-TW/permissions#tool-specific-permission-rules) 匹配的路徑會被拒絕,包括在該處建立新檔案。此拒絕需要 Claude Code v2.1.208 或更新版本。249* **編輯前讀取**:Claude 在編輯檔案前在目前對話中讀取該檔案,而以 [`PARTIAL view` 通知](#read-tool-behavior)中斷的讀取不計算在內。Claude Opus 4.6、Claude Haiku 4.5 和較舊的模型始終需要讀取。較新的模型可以在讀取不需要權限提示且 Read 工具可用時編輯未讀檔案。
250* **匹配**:`old_string` 必須在檔案中完全按照書寫方式出現。單一個空白字元或縮排差異足以導致不匹配。
251* **唯一性**:`old_string` 必須恰好出現一次。當它出現多次時,Claude 要麼提供更長的字串,其中包含足夠的周圍內容以確定一個出現位置,要麼設定 `replace_all: true` 以替換所有出現位置。
148 252
149* **編輯前讀取**:Claude 在目前對話中讀取檔案後才編輯它,且以 [`PARTIAL view` 通知](#read-tool-behavior) 中斷的讀取不計算。Claude Opus 4.6、Claude Haiku 4.5 和更舊的模型始終需要讀取。較新的模型可以在讀取不需要權限提示且 Read 工具可用時編輯未讀檔案。253在 Claude 最後讀取檔案後,磁碟上變更的檔案仍然可以編輯,當 `old_string` 與目前內容完全且明確匹配,且 Claude Code 可以讀取檔案而無需提示時。針對檔案的目前內容進行匹配可保持安全,結果會注意到檔案包含其他變更,因此 Claude 在依賴周圍內容的編輯前重新讀取它。在任何其他情況下,例如過時的 `old_string` 或不使用 `replace_all` 而匹配多次的情況,Claude 在編輯前再次讀取檔案。未讀和已變更檔案的寬鬆處理需要 Claude Code v2.1.208 或更新版本;在此之前,Claude Code 拒絕對它在對話中未讀過或在讀取後在磁碟上變更的任何檔案進行編輯。
150* **匹配**:`old_string` 必須在檔案中完全按照撰寫方式出現。單個空白字元或縮排差異足以導致不匹配。
151* **唯一性**:`old_string` 必須恰好出現一次。當它出現多次時,Claude 要麼提供更長的字串,其周圍有足夠的上下文來確定一個出現,要麼設定 `replace_all: true` 以替換所有出現。
152 254
153在 Claude 最後讀取檔案後在磁碟上變更的檔案仍然可以編輯,當 `old_string` 與目前內容完全且明確匹配,且 Claude Code 可以讀取檔案而不提示時。針對檔案的目前內容進行匹配可保持安全,結果會注意到檔案包含其他變更,因此 Claude 在依賴周圍內容的編輯之前重新讀取它。在任何其他情況下,例如過時的 `old_string` 或不使用 `replace_all` 匹配多次的情況,Claude 在編輯前重新讀取檔案。未讀和已變更檔案的寬鬆處理需要 Claude Code v2.1.208 或更新版本;在此之前,Claude Code 拒絕對它在對話中未讀過或在讀取後在磁碟上變更的任何檔案進行編輯。255使用 Bash 檢視檔案也滿足編輯前讀取要求,當命令是 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 或 `rg` 在單一檔案上且沒有管道或重新導向時。管道輸出和其他 Bash 命令不計入編輯前讀取檢查。
256
257使用 Bash 檢視檔案僅影響編輯資格,不影響權限。請參閱 [Read 和 Edit 權限規則](/docs/zh-TW/permissions#read-and-edit),了解您的 `Read` 和 `Edit` 拒絕規則涵蓋哪些 Bash 命令。
258
259<h2 id="endconversation-tool-behavior">
260 EndConversation 工具行為
261</h2>
154 262
155使用 Bash 檢視檔案也滿足編輯前讀取要求,當命令是 `cat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep` 或 `fgrep` 在單個檔案上,沒有管道或重定向時。管道輸出和其他 Bash 命令不計算編輯前讀取檢查。263EndConversation 工具會結束目前的工作階段。Claude 只在兩種情況下使用它:
156 264
157這僅影響編輯資格,不影響權限。[Read 和 Edit 拒絕規則](/docs/zh-TW/permissions#tool-specific-permission-rules) 也適用於 Claude Code 在 Bash 中識別的檔案命令,例如 `cat`、`head`、`tail`、`sed` 和 `grep`,但不適用於間接讀取或寫入檔案的任意子程序,例如自己開啟檔案的 Python 或 Node 指令碼。識別用於拒絕規則的命令集與上述編輯前讀取清單不同:例如,`egrep` 和 `fgrep` 計算編輯前讀取但不針對 Read 拒絕規則進行檢查。如需涵蓋每個程序的作業系統級別強制執行,請 [啟用沙箱](/docs/zh-TW/sandboxing)。265* 作為對持續濫用輸入的最後手段,在嘗試重新導向對話失敗且在較早的訊息中發出明確警告之後
266* 當您明確要求查看工具演示並確認您想要結束工作階段時
267
268一般的挫折感、粗言穢語或任務進行不順利都不符合條件,對有害內容的請求也不符合,Claude 會拒絕這些請求而不是結束工作階段。Claude Code 遵循與 claude.ai 相同的方法,後者可以[結束少數聊天](https://www.anthropic.com/research/end-subset-conversations)。
269
270Claude 結束互動式工作階段後,工作階段會被鎖定。新的提示和大多數命令會傳回 `Claude ended this conversation. Start a new session (or /clear) to continue.`,只有 `/clear`、`/resume`、`/help`、`/exit` 和 `/feedback` 仍然可以執行。Claude Code 會在工作階段的文字記錄中記錄結束,因此恢復已結束的工作階段會恢復鎖定;工作階段的歷史記錄不會被刪除。
271
272在[非互動模式](/docs/zh-TW/headless)中使用 `-p` 旗標恢復已結束的工作階段會出錯並以代碼 1 結束,因此指令碼不會將已結束的執行讀取為成功。
273
274該工具永遠不會提示要求權限,[PreToolUse hooks](/docs/zh-TW/hooks#pretooluse) 也不會為其執行。只要任何其他工具仍然存在,您就無法阻止它:命名 `EndConversation` 的[拒絕和要求規則](/docs/zh-TW/permissions#tool-specific-permission-rules)無效,`--disallowedTools` 和 `--tools` 清單都無法移除它。此豁免是刻意的:該工具除了結束對話外什麼都不做,永遠不會讀取或修改檔案或資料,這種保障措施只有在應用它的工作階段無法將其關閉時才能成立。當您的拒絕規則移除所有其他工具並且也符合 `EndConversation` 時(如 `"*"` 所做的那樣),Claude Code 也會移除它,而不是將其作為唯一的工具,除非允許規則明確命名 `EndConversation`。移除所有其他工具但不符合 `EndConversation` 的拒絕清單會將其保留在原位。
275
276[子代理](/docs/zh-TW/sub-agents)永遠不會獲得該工具。共享主對話工具清單的背景工作會看到它,但在那裡呼叫它不會結束任何東西。
277
278該工具只在以下所有條件都成立時才會出現:
279
280* **版本**:Claude Code v2.1.213 或更新版本。
281* **模型**:工作階段的模型是 Claude Opus 4.8、Claude Sonnet 5、Claude Fable 5 或這些系列之一的更新版本。
282* **介面**:互動式終端工作階段,包括 IDE 整合終端中的 `claude` 工作階段,這是 [JetBrains 外掛程式](/docs/zh-TW/jetbrains)執行它的方式。其他介面不包括該工具,例如:
283 * 非互動式 `-p` 執行
284 * 透過 [Agent SDK](/docs/zh-TW/agent-sdk/overview) TypeScript 和 Python 套件的工作階段
285 * [VS Code 擴充功能](/docs/zh-TW/vs-code)面板,它包含自己的 CLI
286 * [GitHub Actions](/docs/zh-TW/github-actions)
287 * [網路上的 Claude Code](/docs/zh-TW/claude-code-on-the-web)
288* **啟動模式**:不是 [`--bare`](/docs/zh-TW/headless#start-faster-with-bare-mode) 工作階段。裸機模式只載入 shell 和檔案工具,因此該工具永遠不會在那裡註冊。
289* **提供者**:在 [Amazon Bedrock](/docs/zh-TW/amazon-bedrock)、[AWS 上的 Claude Platform](/docs/zh-TW/claude-platform-on-aws)、[Google Cloud 的 Agent Platform](/docs/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 上不可用,或在透過[雲端閘道](/docs/zh-TW/claude-apps-gateway)登入的工作階段上不可用。
158 290
159<h2 id="glob-tool-behavior">291<h2 id="glob-tool-behavior">
160 Glob 工具行為292 Glob 工具行為
161</h2>293</h2>
162 294
163Glob 工具按名稱模式查找檔案。它支援標準 glob 語法,包括 `**` 用於遞迴目錄匹配:295Glob 工具按名稱模式尋找檔案。它支援標準 glob 語法,包括 `**` 用於遞迴目錄匹配:
164 296
165* `**/*.js` 匹配任何深度的所有 `.js` 檔案297* `**/*.js` 符合任何深度的所有 `.js` 檔案
166* `src/**/*.ts` 匹配 `src/` 下的所有 `.ts` 檔案298* `src/**/*.ts` 符合 `src/` 下的所有 `.ts` 檔案
167* `*.{json,yaml}` 匹配目前目錄中的 `.json` 和 `.yaml` 檔案299* `*.{json,yaml}` 符合目前目錄中的 `.json` 和 `.yaml` 檔案
168 300
169結果按修改時間排序,並限制為 100 個檔案。如果達到上限,Claude 會在結果中看到截斷標誌,並可以縮小模式。301結果按修改時間排序,上限為 100 個檔案。如果達到上限,Claude 會在結果中看到截斷旗標,並可以縮小模式。
170 302
171Glob 預設不尊重 `.gitignore`,因此它會找到 gitignored 檔案以及追蹤的檔案。這與 [Grep](#grep-tool-behavior) 不同,後者跳過 gitignored 檔案。若要讓 Glob 尊重 `.gitignore`,請在啟動 Claude Code 之前設定 `CLAUDE_CODE_GLOB_NO_IGNORE=false`。303Glob 預設不遵守 `.gitignore`,因此它會找到被 gitignore 的檔案以及追蹤的檔案。這與 [Grep](#grep-tool-behavior) 不同,後者會跳過被 gitignore 的檔案。若要讓 Glob 遵守 `.gitignore`,請在啟動 Claude Code 前設定 `CLAUDE_CODE_GLOB_NO_IGNORE=false`。
304
305Claude Code 在檢查搜尋目錄是否存在之前,會先決定 Glob 呼叫的權限。它仍會對 [工作目錄](/docs/zh-TW/permissions#working-directories) 外遺失的 `path` 執行讀取權限檢查,因此路徑的權限提示並不表示該路徑存在。
172 306
173包含空位元組的 `pattern` 或 `path` 值會傳回錯誤,要求 Claude 移除它。307包含空位元組的 `pattern` 或 `path` 值會傳回錯誤,要求 Claude 移除它。
174 308
176 Grep 工具行為310 Grep 工具行為
177</h2>311</h2>
178 312
179Grep 工具在檔案內容中搜尋模式。其中 [Glob](#glob-tool-behavior) 按名稱查找檔案,Grep 在其中查找行。313Grep 工具搜尋檔案內容中的模式。[Glob](#glob-tool-behavior) 按名稱尋找檔案,而 Grep 在檔案內尋找行。
180 314
181Grep 建立在 [ripgrep](https://github.com/BurntSushi/ripgrep) 上,使用 ripgrep 的正規表達式語法,而不是 POSIX grep。包含正規表達式元字元的模式需要轉義。例如,在 Go 程式碼中查找 `interface{}` 需要模式 `interface\{\}`。315Grep 是基於 [ripgrep](https://github.com/BurntSushi/ripgrep) 建立的,並使用 ripgrep 的正規表達式語法,而不是 POSIX grep。包含正規表達式元字元的模式需要逃脫。例如,在 Go 程式碼中尋找 `interface{}` 需要使用模式 `interface\{\}`。
182 316
183一個模式、glob 或檔案類型若被 ripgrep 拒絕,會返回包含 ripgrep 診斷的錯誤,以便 Claude 可以更正輸入並再次搜尋。在 v2.1.208 之前,Claude Code 將被拒絕的輸入報告為 `No files found`,而不是錯誤,即使搜尋的文字存在於目標檔案中。317ripgrep 拒絕的模式、glob 或檔案類型會傳回包含 ripgrep 診斷的錯誤,以便 Claude 可以更正輸入並再次搜尋。在 v2.1.208 之前,Claude Code 將被拒絕的輸入報告為 `No files found`,而不是錯誤,即使搜尋的文字存在於目標檔案中。
184 318
185三個輸出模式控制返回的內容:319三種輸出模式控制傳回的內容:
186 320
187* `files_with_matches`:僅檔案路徑,無行內容。這是預設值。321* `files_with_matches`:僅檔案路徑,無行內容。這是預設值。
188* `content`:匹配的行,帶有檔案和行號。322* `content`:匹配的行及檔案和行號。當工具的 `offset` 參數指向模式的最後一個匹配項之後(該模式有匹配項時),Grep 會傳回 `No entries at this offset`,因此 Claude 會擴大或重設 offset,而不是得出模式不匹配的結論。
189* `count`:每個檔案的匹配計數,後面跟著所有匹配檔案的總計。總計涵蓋每個匹配,即使工具的 `head_limit` 或 `offset` 參數截斷了列出的每個檔案項目。在 v2.1.208 之前,總計只加總列出的項目。323* `count`:每個檔案的匹配計數,後面是所有匹配檔案的總計。總計涵蓋每個匹配項,即使工具的 `head_limit` 或 `offset` 參數截斷了列出的每個檔案項目。在 v2.1.208 之前,總計只加總列出的項目。
324
325Claude 可以使用 `glob` 參數(例如 `**/*.tsx`)按檔案範圍限制結果,或使用 `type` 參數(例如 `py` 或 `rust`)按語言限制結果。預設情況下,模式在單一行內匹配。Claude 可以設定 `multiline: true` 以跨越行邊界進行匹配。
190 326
191Claude 可以使用 `glob` 參數(例如 `**/*.tsx`)按檔案限制結果,或使用 `type` 參數(例如 `py` 或 `rust`)按語言限制結果。預設情況下,模式在單行內匹配。Claude 可以設定 `multiline: true` 以跨行邊界匹配。327Grep 遵守 `.gitignore`,因此被 gitignore 的檔案會被跳過。若要搜尋被 gitignore 的檔案,Claude 會直接傳遞其路徑。
192 328
193Grep 尊重 `.gitignore`,因此 gitignored 檔案會被跳過。若要搜尋 gitignored 檔案,Claude 直接傳遞其路徑。329Claude Code 在檢查搜尋 `path` 是否存在之前決定 Grep 呼叫的權限。它仍會對 [工作目錄](/docs/zh-TW/permissions#working-directories) 外的遺失 `path` 執行讀取權限檢查,因此路徑的權限提示並不意味著該路徑存在。
194 330
195<h2 id="lsp-tool-behavior">331<h2 id="lsp-tool-behavior">
196 LSP 工具行為332 LSP tool 行為
197</h2>333</h2>
198 334
199LSP 工具從執行中的語言伺服器為 Claude 提供程式碼智慧。在每次檔案編輯後,它會自動報告型別錯誤和警告,以便 Claude 可以在沒有單獨建置步驟的情況下修復問題。Claude 也可以直接呼叫它來導航程式碼:335LSP tool 從執行中的語言伺服器為 Claude 提供程式碼智慧。在每次檔案編輯後,它會自動報告型別錯誤和警告,讓 Claude 可以在沒有單獨建置步驟的情況下修復問題。Claude 也可以直接呼叫它來導覽程式碼:
200 336
201* 跳轉到符號的定義337* 跳至符號的定義
202* 尋找符號的所有參考338* 尋找符號的所有參考
203* 取得位置的型別資訊339* 取得位置的型別資訊
204* 列出檔案中的符號340* 列出檔案中的符號
206* 尋找介面的實作342* 尋找介面的實作
207* 追蹤呼叫階層343* 追蹤呼叫階層
208 344
209該工具在您安裝您的語言的 [程式碼智慧外掛](/docs/zh-TW/discover-plugins#code-intelligence) 之前處於非作用中狀態。該外掛包含語言伺服器設定,您需要單獨安裝伺服器二進位檔。345Claude Code 會保持 tool 為非作用中狀態,直到您為您的語言安裝[程式碼智慧 plugin](/docs/zh-TW/discover-plugins#code-intelligence)。在[雲端工作階段](/docs/zh-TW/claude-code-on-the-web)中,Claude Code 不會啟動 plugin 語言伺服器,所以 LSP tool 在那裡保持非作用中。Claude Code 從 plugin 取得語言伺服器的設定,您需要自行安裝伺服器二進位檔。
346
347Claude Code 會針對無法啟動其語言伺服器的檔案上的每個 LSP 呼叫傳回錯誤結果。
210 348
211<h2 id="monitor-tool">349<h2 id="monitor-tool">
212 Monitor 工具350 Monitor 工具
213</h2>351</h2>
214 352
215Monitor 工具讓 Claude 在背景監視某些內容,並在其變更時做出反應,而無需暫停對話。要求 Claude:353Monitor 工具讓 Claude 在背景中監視某些內容,並在其變更時做出反應,而無需暫停對話。請要求 Claude:
216 354
217* 追蹤日誌檔案並在錯誤出現時標記355* 追蹤日誌檔案並在錯誤出現時標記
218* 輪詢 PR 或 CI 工作,並在其狀態變更時報告356* 輪詢 PR 或 CI 工作,並在其狀態變更時報告
219* 監視目錄以查看檔案變更357* 監視目錄中的檔案變更
220* 追蹤您指向的任何長時間執行指令碼的輸出358* 追蹤您指向的任何長時間執行指令碼的輸出
221* 連接到 WebSocket 摘要並在每條訊息到達時報告359* 連接到 WebSocket 摘要並在每條訊息到達時報告
222 360
223對於大多數監視,Claude 會編寫一個小指令碼,在背景執行它,並在每行到達時接收它。對於已經推送事件的伺服器,Claude 可以開啟 [WebSocket](#websocket-source) 而不是執行指令碼。361對於大多數監視,Claude 會編寫一個小指令碼,在背景中執行它,並在每行輸出到達時接收。對於已經推送事件的伺服器,Claude 可以開啟 [WebSocket](#websocket-source) 而不是執行指令碼。
224 362
225您可以在同一工作階段中繼續工作,Claude 會在事件發生時插入。透過要求 Claude 取消監視或結束工作階段來停止監視。363您可以在同一工作階段中繼續工作,Claude 會在事件到達時插入。
226 364
227當 Monitor 執行命令時,它使用與 [Bash 相同的權限規則](/docs/zh-TW/permissions#tool-specific-permission-rules),因此您為 Bash 設定的 `allow` 和 `deny` 模式也適用於此處。[WebSocket 來源](#websocket-source)有其自己的核准提示。365透過要求 Claude 取消監視或結束工作階段來停止監視。當您停止啟動監視的 [子代理](/docs/zh-TW/sub-agents)(例如來自 `/tasks`)時,這些監視會隨之停止。
366
367當 Monitor 執行命令時,它使用與 [Bash 相同的權限規則](/docs/zh-TW/permissions#tool-specific-permission-rules),因此您為 Bash 設定的 `allow` 和 `deny` 模式也適用於此處。當 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 處於活動狀態時,Claude Code 會擱置命名 `Monitor` 本身的允許規則,以及它捨棄的其他 [廣泛允許規則](/docs/zh-TW/permission-modes#how-the-classifier-evaluates-actions),因此分類器以與檢查 Bash 命令相同的方式檢查 Monitor 命令。
368
369[WebSocket 來源](#websocket-source) 有其自己的核准提示,分類器也會在自動模式中決定。
228 370
229該工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用。當設定 `DISABLE_TELEMETRY` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 時,它也不可用。371該工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用。當設定 `DISABLE_TELEMETRY` 或 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 時,它也不可用。
230 372
231外掛可以宣告在外掛啟用時自動啟動的監視,而不是要求 Claude 啟動它們。請參閱 [外掛監視](/docs/zh-TW/plugins-reference#monitors)。373外掛程式可以宣告在外掛程式處於活動狀態時自動啟動的監視,而不是要求 Claude 啟動它們。請參閱 [外掛程式監視](/docs/zh-TW/plugins-reference#monitors)。
232 374
233<h3 id="websocket-source">375<h3 id="websocket-source">
234 WebSocket 來源376 WebSocket 來源
247 389
248WebSocket 監視採用 `ws` 輸入代替 `command`,單一 Monitor 呼叫無法結合兩者。`ws` 輸入有兩個欄位:390WebSocket 監視採用 `ws` 輸入代替 `command`,單一 Monitor 呼叫無法結合兩者。`ws` 輸入有兩個欄位:
249 391
250| 欄位 | 必需 | 說明 |392| 欄位 | 必要 | 說明 |
251| :---------- | :- | :-------------------------------------------------------- |393| :---------- | :- | :---------------------------------------------------------- |
252| `url` | 是 | 要連接的端點。必須是 `ws://` 或 `wss://` URL,不含嵌入的認證或空白,僅使用 ASCII 字元 |394| `url` | 是 | 要連接的端點。必須是 `ws://` 或 `wss://` URL,不含嵌入的認證或空白字元,僅使用 ASCII 字元 |
253| `protocols` | 否 | 在握手期間提供的 WebSocket 子協議名稱。每個項目必須是有效的子協議令牌,清單不能包含重複項 |395| `protocols` | 否 | 在握手期間提供的 WebSocket 子協議名稱。每個項目必須是有效的子協議權杖,且清單不能包含重複項 |
254 396
255`timeout_ms` 和 `persistent` 輸入的行為與它們對命令的行為相同:監視在截止時間結束,除非設定 `persistent`,`TaskStop` 會提前取消它。397`timeout_ms` 和 `persistent` 輸入的行為與它們對命令的行為相同:監視在截止時間結束,除非設定 `persistent`,且 `TaskStop` 會提前取消它。
256 398
257開啟 WebSocket 會提示核准,提示不提供跳過相同主機的未來提示的選項。399開啟 WebSocket 會提示核准;在 [自動模式](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode) 中,分類器會改為決定。提示不提供跳過相同主機的未來提示的選項。
258 400
259Claude Code 拒絕指向私有、連結本地或雲端中繼資料位址的 URL,包括解析為該位址的主機名稱。它也拒絕 `sandbox.network.deniedDomains` 中的主機,以及當在受管設定中設定 [`allowManagedDomainsOnly`](/docs/zh-TW/settings#sandbox-settings) 時,受管允許清單外的任何主機。401Claude Code 拒絕指向私人、連結本機或雲端中繼資料位址的 URL,包括解析為該位址的主機名稱。它也拒絕 `sandbox.network.deniedDomains` 中的主機,以及當在受管設定中設定 [`allowManagedDomainsOnly`](/docs/zh-TW/settings-reference#sandbox-network-allowmanageddomainsonly) 時,任何在受管允許清單外的主機。
260 402
261<h2 id="notebookedit-tool-behavior">403<h2 id="notebookedit-tool-behavior">
262 NotebookEdit 工具行為404 NotebookEdit 工具行為
276 PowerShell 工具418 PowerShell 工具
277</h2>419</h2>
278 420
279PowerShell 工具讓 Claude 原生執行 PowerShell 命令。在 Windows 上,這表示命令在 PowerShell 中執行,而不是透過 Git Bash 路由。該工具的可用方式取決於您的平台:421PowerShell 工具讓 Claude 能夠原生執行 PowerShell 命令。在 Windows 上,這表示命令在 PowerShell 中執行,而不是透過 Git Bash 路由。工具的可用性取決於您的平台:
422
423* **Windows 未安裝 Git Bash**:工具會自動啟用。
424* **Windows 已安裝 Git Bash**:工具在 claude.ai 和 Console 帳戶上預設為開啟;在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 工作階段中,設定 `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` 以啟用它,或設定 `0` 以關閉它。
425* **Linux、macOS 和 WSL**:工具是選擇性加入。
280 426
281* **沒有 Git Bash 的 Windows**:該工具會自動啟用。427您的 [PreToolUse hooks](/docs/zh-TW/hooks#powershell) 在 `tool_input.command` 中接收工具的命令字串,欄位與 Bash 工具相同。
282* **安裝了 Git Bash 的 Windows**:該工具正在逐步推出。428
283* **Linux、macOS 和 WSL**:該工具是選擇加入的。429在檢查 shell 命令的 hooks 中比對 `Bash|PowerShell`;[PowerShell hook 輸入部分](/docs/zh-TW/hooks#powershell)說明為什麼單獨比對 `Bash` 是不夠的。
284 430
285<h3 id="enable-the-powershell-tool">431<h3 id="enable-the-powershell-tool">
286 啟用 PowerShell 工具432 啟用 PowerShell 工具
296}442}
297```443```
298 444
299在 Windows 上,將變數設定為 `0` 以選擇退出推出。在 Linux、macOS 和 WSL 上,該工具需要 PowerShell 7 或更新版本:安裝 `pwsh` 並確保它在您的 `PATH` 上。445在 Windows 上,將變數設定為 `0` 以關閉工具。在 Linux、macOS 和 WSL 上,工具需要 PowerShell 7 或更新版本:安裝 `pwsh` 並確保它在您的 `PATH` 中。
300 446
301在 Windows 上,Claude Code 自動偵測 `pwsh.exe`(PowerShell 7+),並回退到 `powershell.exe`(PowerShell 5.1)。啟用該工具時,Claude 將 PowerShell 視為主要 shell。當安裝了 Git Bash 時,Bash 工具仍可用於 POSIX 指令碼。447在 Windows 上,Claude Code 會自動偵測 PowerShell 7+ 的 `pwsh.exe`,並回退到 PowerShell 5.1 的 `powershell.exe`。啟用工具時,Claude 會將 PowerShell 視為主要 shell。當安裝了 Git Bash 時,Bash 工具仍可用於 POSIX 指令碼。
302 448
303Claude Code 使用 `-ExecutionPolicy Bypass` 在程序範圍內生成 PowerShell,因此 `.ps1` 指令碼和模組匯入可在預設 Windows 安裝上運作,無需變更機器的原則。程序範圍的略過不會覆蓋群組原則 `MachinePolicy` 或 `UserPolicy`,因此企業原則仍然適用。若要改為尊重機器的有效執行原則,請設定 `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1`。449Claude Code 以程序範圍只啟動 PowerShell 搭配 `-ExecutionPolicy Bypass`,因此 `.ps1` 指令碼和模組匯入可在預設 Windows 安裝上運作,無需變更機器的原則。程序範圍略過不會覆寫群組原則 `MachinePolicy` 或 `UserPolicy`,因此企業原則仍然適用。若要改為遵守機器的有效執行原則,請設定 `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1`。
304 450
305<h3 id="shell-selection-in-settings-hooks-and-skills">451<h3 id="shell-selection-in-settings-hooks-and-skills">
306 設定、hooks 和 skills 中的 shell 選擇452 設定、hooks 和 skills 中的 shell 選擇
308 454
309三個額外的設定控制 PowerShell 的使用位置:455三個額外的設定控制 PowerShell 的使用位置:
310 456
311* [`settings.json`](/docs/zh-TW/settings#available-settings) 中的 `"defaultShell": "powershell"`:透過 PowerShell 路由互動式 `!` 命令。需要啟用 PowerShell 工具。457* [`settings.json`](/docs/zh-TW/settings-reference#all-settings) 中的 `"defaultShell": "powershell"`:透過 PowerShell 路由互動式 `!` 命令。需要啟用 PowerShell 工具。
312* 個別 [command hooks](/docs/zh-TW/hooks#command-hook-fields) 上的 `"shell": "powershell"`:在 PowerShell 中執行該 hook。Hooks 直接生成 PowerShell,因此無論 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 如何,這都有效。458* 個別 [command hooks](/docs/zh-TW/hooks#command-hook-fields) 上的 `"shell": "powershell"`:在 PowerShell 中執行該 hook。Hooks 直接啟動 PowerShell,因此無論 `CLAUDE_CODE_USE_POWERSHELL_TOOL` 為何都能運作。
313* [skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) 中的 `shell: powershell`:在 PowerShell 中執行 `` !`command` `` 區塊。需要啟用 PowerShell 工具。459* [skill frontmatter](/docs/zh-TW/skills#frontmatter-reference) 中的 `shell: powershell`:在 PowerShell 中執行 `` !`command` `` 區塊。需要啟用 PowerShell 工具。
314 460
315Bash 工具部分中描述的相同主工作階段工作目錄重設行為適用於 PowerShell 命令,包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 環境變數。461Bash 工具部分所述的相同主工作階段工作目錄重設行為適用於 PowerShell 命令,包括 `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` 環境變數。
462
463自 v2.1.196 起,來自 `grep`、`rg`、`egrep`、`fgrep`、`findstr` 和 `git grep` 的結束代碼 1 表示無符合項目。來自 `git diff` 的結束代碼 1 表示存在差異。這兩個結果都不會向 Claude 報告為命令失敗。對於 `robocopy`,結束代碼 0 到 7 是資訊性結果,例如複製的檔案或偵測到的額外檔案。結束代碼 8 或更高視為失敗。
464
465<h3 id="windows-encoding-and-exit-codes">
466 Windows 編碼和結束代碼
467</h3>
316 468
317自 v2.1.196 起,PowerShell 工具符合 Bash 工具對搜尋和 diff 結束代碼的處理方式。來自 `grep`、`egrep`、`fgrep` 和 `git grep` 的結束代碼 1 表示沒有符合項目,來自 `git diff` 的結束代碼 1 表示存在差異,因此這些結果不會作為命令失敗報告給 Claude。469在 Windows 上,下列 PowerShell 編碼和結束代碼行為需要 Claude Code v2.1.214 或更新版本:
470
471* 使用 `>` 和 `>>` 的重新導向在 PowerShell 5.1 上寫入 UTF-8 檔案
472* Claude Code 將管道傳送到原生命令標準輸入的文字編碼為 UTF-8
473* Claude Code 擷取錯誤輸出而不含 ANSI 逸出序列
474* 其子程序等待標準輸入的命令會收到檔案結尾而不是掛起
475* 來自 `where.exe` 的結束代碼 1 表示無符合項目,來自 `fc.exe` 和 `diff.exe` 的結束代碼 1 表示檔案不同,因此當命令產生輸出時,Claude Code 會將該結束代碼視為有效的否定答案,而不是命令錯誤。Claude Code 仍會將靜音形式(例如 `where.exe /Q` 或重新導向至 `$null`)報告為結束代碼 1 時的失敗
476
477在 v2.1.214 之前,PowerShell 5.1 上的 `>` 寫入 UTF-16LE 檔案,非 ASCII 管道輸入到達為 `?`,而 Python 指令碼在列印非 ASCII 字元時可能會因 `UnicodeEncodeError` 而當機。
318 478
319<h3 id="preview-limitations">479<h3 id="preview-limitations">
320 預覽限制480 預覽限制
321</h3>481</h3>
322 482
323PowerShell 工具在預覽期間有以下已知限制:483PowerShell 工具在預覽期間有下列已知限制:
324 484
325* PowerShell 設定檔未載入485* PowerShell 設定檔未載入
326* 在 Windows 上,不支援 sandboxing486* 在 Windows 上,不支援沙箱化
327 487
328<h2 id="read-tool-behavior">488<h2 id="read-tool-behavior">
329 Read 工具行為489 Read 工具行為
330</h2>490</h2>
331 491
332Read 工具採用檔案路徑並傳回帶有行號的內容。Claude 被指示始終傳遞絕對路徑。492Read 工具接受檔案路徑並傳回包含行號的內容。Claude 被指示始終傳遞絕對路徑。
333 493
334預設情況下,Read 從開始傳回檔案。當整個檔案讀取超過令牌限制時,Read 傳回第一頁並附帶 `PARTIAL view` 通知,告訴 Claude 它收到了多少檔案內容以及如何使用 `offset` 和 `limit` 讀取更多內容。傳遞明確的 `offset` 或 `limit` 且仍然超過令牌限制的讀取會傳回錯誤。494根據預設,Read 從檔案開始處傳回內容。當整個檔案讀取超過權杖限制時,Read 會傳回第一頁並顯示 `PARTIAL view` 通知,告訴 Claude 它收到了多少檔案內容,以及如何使用 `offset` 和 `limit` 讀取更多內容。傳遞明確 `offset` 或 `limit` 的讀取操作如果仍然超過權杖限制,會傳回錯誤。
335 495
336具有明確 `limit` 的讀取會在選定的行超過令牌限制可能容納的內容時立即停止,並傳回錯誤而不載入其餘範圍。該錯誤告訴 Claude 使用較小的 `limit`,或在單一行非常大時改用 [Grep](#grep-tool-behavior) 搜尋特定內容。在 v2.1.208 之前,Claude Code 在拒絕前會將整個範圍載入記憶體,因此具有極長單一行的檔案可能會耗盡記憶體。496具有明確 `limit` 的讀取操作會在選定的行數超過權杖限制可能容納的內容時立即停止,並傳回錯誤而不載入其餘範圍。錯誤會告訴 Claude 使用較小的 `limit`,或者當單一行非常大時,改為使用 [Grep](#grep-tool-behavior) 搜尋特定內容。在 v2.1.208 之前,Claude Code 會在拒絕前將整個範圍載入記憶體,因此讀取具有極長單一行的檔案可能會導致記憶體不足。
337 497
338讀取空檔案會傳回通知,表示檔案存在但其內容為空,而超過最後一行的 `offset` 會傳回通知,提供檔案的行數。在 v2.1.208 之前,讀取空檔案會傳回超過末尾的通知。498讀取空檔案會傳回通知,說明檔案存在但內容為空,而超過最後一行的 `offset` 會傳回通知,提供檔案的行數。在 v2.1.208 之前,讀取空檔案會傳回超過末尾的通知。
339 499
340Read 處理純文字以外的多種檔案類型:500Read 處理純文字以外的多種檔案類型:
341 501
342* **影像**:PNG、JPG 和其他影像格式作為 Claude 可以看到的視覺內容傳回,而不是原始位元組。Claude Code 在傳送前調整大小並重新壓縮大型影像以適應模型的影像大小限制,因此 Claude 可能會看到大型螢幕截圖的縮小版本。自 v2.1.196 起,在調整大小後仍然大於 500KB 的影像會以降低品質的 JPEG 重新編碼,其像素尺寸保持不變。如果 Claude 在大型影像中遺漏細微的像素級詳細資訊,請要求它先裁剪感興趣的區域,例如使用 ImageMagick 透過 Bash。502* **影片**:PNG、JPG 和其他影片格式會以 Claude 可以看到的視覺內容形式傳回,而不是原始位元組。Claude Code 會在傳送前調整大小並重新壓縮大型影片以符合模型的影片大小限制,因此 Claude 可能會看到大型螢幕擷取畫面的縮小版本。自 v2.1.196 起,在調整大小後仍大於 500KB 的影片會以降低品質的 JPEG 格式重新編碼,其像素尺寸保持不變。如果 Claude 在大型影片中遺漏了細微的像素級細節,請要求它先裁剪感興趣的區域,例如透過 Bash 使用 ImageMagick。
343* **PDF**:Claude 完整讀取短 `.pdf` 檔案。對於超過 10 頁的 PDF,它使用 `pages` 參數(例如 `"1-5"`)按範圍讀取,一次最多 20 頁。503* **PDF**:Claude 會完整讀取短 `.pdf` 檔案。對於超過 10 頁的 PDF,它會使用 `pages` 參數(例如 `"1-5"`)按範圍讀取,一次最多 20 頁。
344* **Jupyter notebooks**:`.ipynb` 檔案傳回所有儲存格及其輸出,包括程式碼、markdown 和視覺化。504* **Jupyter 筆記本**:`.ipynb` 檔案會傳回所有儲存格及其輸出,包括程式碼、markdown 和視覺化。Claude Code 拒絕讀取超過 100 MB 的筆記本檔案;錯誤會告訴 Claude 如何改為讀取筆記本的一部分,例如使用 shell 命令讀取儲存格的切片。
505
506Read 只讀取檔案,不讀取目錄。Claude 使用 shell 命令(例如 `ls`)列出目錄內容。
507
508<h2 id="sendfeedback-tool-behavior">
509 SendFeedback 工具行為
510</h2>
511
512Claude 起草的回饋是 Claude 為您撰寫的關於 Claude Code 的回饋報告。它需要 Claude Code v2.1.238 或更新版本。Claude Code 會將每份草稿保存在您的機器上的 `~/.claude/feedback/drafts/` 下,在您發送之前,任何內容都不會到達 Anthropic。Claude 在以下情況下會使用 SendFeedback 工具起草一份:
513
514* 工具或命令持續失敗
515* 它無法幫助您要求的事項
516* 您指出它犯的錯誤,或它自己發現了一個
517* 您要求它提交回饋
518
519<h3 id="what-you-see-when-claude-drafts">
520 當 Claude 起草時您看到的內容
521</h3>
522
523Claude 將草稿加入佇列後,您會在提示上方看到一張卡片,顯示草稿的標題。按 `1` 查看草稿,按 `2` 兩次以按原樣發送,或按 `0` 關閉它。已關閉的草稿會保留在您的佇列中。關閉卡片後,Claude Code 會詢問是否關閉 Claude 起草的回饋。一旦您拒絕兩次,它就會停止詢問。
345 524
346Read 僅讀取檔案,不讀取目錄。Claude 使用透過 Bash 工具的 `ls` 列出目錄內容。525預設情況下,您在一個工作階段中最多看到三張卡片;Anthropic 可以從伺服器調整該限制,無需發佈。超過限制後,以及每當您將 [`feedbackDrafts`](/docs/zh-TW/settings-reference#feedbackdrafts) 設定為 `quiet` 時,您只會在提示頁尾看到佇列中草稿的計數。
526
527<h3 id="review-and-edit-a-draft">
528 查看和編輯草稿
529</h3>
530
531執行不帶引數的 `/feedback` 以開啟您的佇列。它列出來自所有工作階段的每份佇列中的草稿,包括您關閉或從未看到其卡片的草稿。選擇一份草稿以開啟它進行查看,您可以:
532
533* 編輯標題、區域和詳細資訊
534* 將 **Send transcript** 設定為 `yes` 或 `no`。當 Claude 將草稿加入佇列的工作階段中的文字記錄仍然可用時,它會以 `yes` 開始,這會將該對話發送給 Anthropic;`no` 只發送報告
535* 發送草稿、捨棄它,或將其保留在佇列中以供稍後使用
536
537若要自己撰寫報告,請按 `w` 以開啟標準回饋對話框。`/feedback` 後面跟著文字,以及 `/bug`,會直接開啟該對話框。
538
539<h3 id="send-a-draft">
540 發送草稿
541</h3>
542
543當您發送草稿時,Claude Code 會以與 `/feedback` 報告相同的方式提交它,具有相同的[保留期](/docs/zh-TW/data-usage#feedback-using-the-%2Ffeedback-command),並從您的機器中刪除草稿。當您從卡片發送時,它會顯示 `✓ Sent`;當您從佇列發送時,它會關閉並顯示收據 ID。
544
545報告包含:
546
547* 您的標題、區域和詳細資訊
548* 環境資訊,例如您的 Claude Code 版本、作業系統和模型
549* 最近 API 請求的 ID
550* 對話文字記錄,當您在查看畫面上將 **Send transcript** 保留為 `yes` 時。從卡片發送永遠不會包含文字記錄
551
552Claude Code 會將您的工作目錄保留在本機草稿中,以便它可以找到文字記錄,並且不會發送該目錄。
553
554在[零資料保留的組織](/docs/zh-TW/zero-data-retention#features-disabled-under-zdr)中,Claude Code 會將該工具排除在外,就像它對 `/feedback` 所做的那樣。如果此類組織中的工作階段仍然提供該工具,草稿會保留在您的機器上,發送會失敗並顯示 `Feedback collection is not available for organizations with custom data retention policies.`
555
556<h3 id="discard-or-keep-a-draft">
557 捨棄或保留草稿
558</h3>
559
560當您捨棄草稿時,Claude Code 會從您的機器中刪除它。您在佇列中保留的草稿會在 30 天後過期,或在 [`cleanupPeriodDays`](/docs/zh-TW/settings-reference#cleanupperioddays) 更短時過期。佇列在所有工作階段中最多保留 10 份草稿,當 Claude 將第 11 份加入佇列時,Claude Code 會刪除最舊的。當您執行 `/exit` 且工作階段中的草稿仍在佇列中時,Claude Code 會詢問您是否在退出前查看或捨棄它們。
561
562<h3 id="turn-claude-drafted-feedback-off">
563 關閉 Claude 起草的回饋
564</h3>
565
566在 `/config` 中將 **Claude-drafted feedback** 設定為 `off`,這會寫入 [`feedbackDrafts`](/docs/zh-TW/settings-reference#feedbackdrafts) 設定,或為一個工作階段設定 [`CLAUDE_CODE_SEND_FEEDBACK=0`](/docs/zh-TW/env-vars)。使用任一方式,Claude 都無法將草稿加入佇列。若要在沒有卡片的情況下繼續起草,請改為將 `feedbackDrafts` 設定為 `quiet`。管理員可以在[受管設定](/docs/zh-TW/managed-settings)中設定 `feedbackDrafts`,這優先於您自己的設定。
567
568<h3 id="sessions-without-claude-drafted-feedback">
569 沒有 Claude 起草回饋的工作階段
570</h3>
571
572Claude Code 在使用 Claude API 而非雲端提供者的您自己機器上的互動式終端工作階段中包含該工具。它將該工具排除在外:
573
574* 非互動式 `-p` 執行和[代理 SDK](/docs/zh-TW/agent-sdk/overview) 工作階段,這些沒有螢幕來查看佇列
575* 雲端工作階段,例如 [Claude Code on the web](/docs/zh-TW/claude-code-on-the-web),無法寫入您機器上的佇列
576* [Amazon Bedrock](/docs/zh-TW/amazon-bedrock)、[Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws)、[Google Cloud's Agent Platform](/docs/zh-TW/google-vertex-ai) 或 [Microsoft Foundry](/docs/zh-TW/microsoft-foundry) 上的工作階段
577* 您設定 [`CLAUDE_CODE_SEND_FEEDBACK=0`](/docs/zh-TW/env-vars) 或 [`DISABLE_FEEDBACK_COMMAND=1`](/docs/zh-TW/env-vars) 的工作階段,將 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 設定為任何非空值,或關閉[功能旗標擷取](/docs/zh-TW/env-vars#features-that-need-feature-flag-fetching)
578* 已關閉產品回饋的組織,以及[零資料保留的組織](/docs/zh-TW/zero-data-retention#features-disabled-under-zdr)
579
580<h2 id="task-tool-availability">
581 Task 工具可用性
582</h2>
583
584在 Claude Code v2.1.233 及更新版本中,除非您選擇加入,否則以下工具在 Opus 4.8、Sonnet 5、Fable 5、Mythos 5 或這些系列的更新版本上不可用:`TodoWrite`、`TaskCreate`、`TaskGet`、`TaskUpdate` 和 `TaskList`。這些模型可以在沒有書面檢查清單的情況下追蹤多步驟工作,而工具的定義和提醒會佔用上下文,因此 Claude Code 會將其排除。沒有這些工具,Claude 在工作時不會向[任務清單](/docs/zh-TW/interactive-mode#task-list)添加任何內容。在任何其他模型上,例如 Opus 4.7,Claude Code 預設提供四個 Task 工具,只有當您設定 [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/zh-TW/env-vars) 時才提供 `TodoWrite`。
585
586如果您想在列出的其中一個模型上使用這些工具,請執行以下其中一項操作:
587
588* 在啟動 Claude Code 之前匯出 [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/zh-TW/env-vars),例如 `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`。Claude Code 隨後會在每個模型和每個提供者上提供相同的工具
589* 在 [`--allowedTools`](/docs/zh-TW/cli-reference#cli-flags) 中命名其中一個工具,例如 `claude --allowedTools TaskCreate`
590* 在 [`--tools`](/docs/zh-TW/cli-reference#cli-flags) 中列出工具,這會將工作階段的內建工具限制為其命名的工具。將您想要的工具與您使用的其他內建工具一起包含
591* 在 Agent SDK 中,[`allowedTools` 和 `tools` 選項](/docs/zh-TW/agent-sdk/todo-tracking#model-availability)的工作方式與這兩個旗標相同
592
593在[背景工作階段](/docs/zh-TW/agent-view)和[網路上的 Claude Code](/docs/zh-TW/claude-code-on-the-web) 中,Claude Code 在每個模型上提供相同的工具,無論是否列出。
594
595Claude Code 只有在您的工作階段具有工具時才會向子代理提供工具,即使子代理執行不同的模型也是如此。同程序[代理團隊](/docs/zh-TW/agent-teams)隊友會以相同方式跟隨您的工作階段,而在其自己的[分割窗格](/docs/zh-TW/agent-teams#choose-a-display-mode)中的隊友會作為單獨的 Claude Code 程序執行,因此其自己的模型會決定。沒有 Task 工具,代理會透過訊息而不是[共用任務清單](/docs/zh-TW/agent-teams#assign-and-claim-tasks)與其團隊協調。
347 596
348<h2 id="webfetch-tool-behavior">597<h2 id="webfetch-tool-behavior">
349 WebFetch 工具行為598 WebFetch 工具行為
350</h2>599</h2>
351 600
352WebFetch 採用 URL 和描述要提取內容的提示。它擷取頁面,當伺服器傳回 HTML 時將回應轉換為 Markdown,並使用小型快速模型針對內容執行提示。對於大多數擷取,Claude 會收到該模型的答案,而不是原始頁面。轉換步驟不可設定。601WebFetch 接受一個 URL 和一個描述要提取內容的提示。它會擷取頁面,當伺服器返回 HTML 時將回應轉換為 Markdown,並使用一個小型、快速的模型針對內容執行提示。對於大多數擷取,Claude 會收到該模型的答案,而不是原始頁面。轉換步驟無法設定。
353 602
354這使 WebFetch 在設計上是有損的。提取提示決定了到達 Claude 的內容,因此說頁面未提及某事的結果可能只是意味著提示未詢問它。要求 Claude 使用更具體的提示再次擷取,或使用透過 Bash 的 `curl` 獲取未處理的頁面。603這使得 WebFetch 在設計上是有損的。提取提示決定了什麼內容會到達 Claude,因此說頁面未提及某事的結果可能只是意味著提示沒有詢問該內容。要求 Claude 使用更具體的提示再次擷取,或透過 Bash 使用 `curl` 來取得未處理的頁面。
355 604
356一些行為塑造了 Claude 接收的回應:605有幾個行為會影響 Claude 收到的回應:
357 606
358* HTTP URL 會自動升級為 HTTPS。607* HTTP URL 會自動升級為 HTTPS。
359* 大型頁面在處理前被截斷為固定字元限制。608* 大型頁面會在處理前被截斷至固定字元限制。
360* 回應會快取 15 分鐘,因此相同 URL 的重複擷取會快速傳回。609* WebFetch 預設會快取每個回應 15 分鐘,因此重複擷取相同 URL 會快速返回。在 Claude Code v2.1.233 或更新版本上,設定 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/zh-TW/env-vars#variables) 以變更 WebFetch 保留每個回應的時間長度。
361* 當 URL 重定向到不同的主機時,WebFetch 傳回文字結果,命名原始 URL 和重定向目標,而不是跟隨它。Claude 然後使用第二個 WebFetch 呼叫擷取新 URL。610* 當 URL 重新導向至不同的主機時,WebFetch 會返回一個文字結果,命名原始 URL 和重新導向目標,而不是跟隨它。Claude 隨後會使用第二個 WebFetch 呼叫擷取新 URL。
611* 當提取步驟遇到超載的 API 時,Claude Code 會使用退避策略重試;仍然失敗的擷取會返回錯誤結果。在 v2.1.212 之前,API 錯誤文字可能會作為提取的頁面內容到達 Claude。
612
613在手動和 `acceptEdits` [權限模式](/docs/zh-TW/permission-modes)中,WebFetch 會在擷取前提示,除非您的 [權限規則](/docs/zh-TW/permissions#manage-permissions)已允許或拒絕該網域,以及一組內建的預先核准文件網域可以在不提示的情況下擷取。無論您的規則允許什麼,擷取也必須先通過 [WebFetch 網域安全檢查](/docs/zh-TW/data-usage#webfetch-domain-safety-check);該部分涵蓋檢查發送的內容和跳過它的設定。提示提供三個選項:
362 614
363在預設和 `acceptEdits` 權限模式中,WebFetch 在首次到達新網域時提示,但有一組內建的預先核准文件網域除外,這些網域無需提示即可擷取。若要提前允許另一個網域而不提示,請新增像 `WebFetch(domain:example.com)` 這樣的權限規則。`auto` 和 `bypassPermissions` [權限模式](/docs/zh-TW/permissions#permission-modes) 完全跳過提示。615* **是**:僅核准此擷取。下一個 WebFetch 呼叫會再次提示,即使是針對相同網域。
616* **是,且不再詢問 `<domain>`**:核准擷取並將 `WebFetch(domain:...)` 允許規則儲存至該儲存庫的 `.claude/settings.local.json` 以供該網域使用。請參閱 [已儲存的核准如何持續](/docs/zh-TW/permissions#permission-system)。當您的組織設定 [`allowManagedPermissionRulesOnly`](/docs/zh-TW/permissions#managed-only-settings) 時,Claude Code 會隱藏此選項。
617* **否,並告訴 Claude 應該如何不同地進行**:拒絕擷取。
618
619若要事先允許網域而不提示,請新增允許規則,例如 `WebFetch(domain:example.com)`;`WebFetch(domain:*)` 允許每個網域。`auto` 和 `bypassPermissions` [權限模式](/docs/zh-TW/permissions#permission-modes)會跳過提示,除非明確的 `ask` 規則符合網域。
364 620
365`deny`、`ask` 或 `allow` 中的明確 `WebFetch(domain:...)` 規則優先於預先核准的集合,因此您可以封鎖預先核准的網域或要求提示。621`deny`、`ask` 或 `allow` 中的明確 `WebFetch(domain:...)` 規則優先於預先核准的集合,因此您可以封鎖預先核准的網域或要求提示。
366 622
367WebFetch 設定以 `Claude-User` 開頭的 `User-Agent` 標頭,以及偏好 Markdown 而不是 HTML 的 `Accept` 標頭,以便支援內容協商的伺服器可以直接傳回 Markdown。您可以單獨設定 [sandbox](/docs/zh-TW/sandboxing) 網路規則,因此您希望沙箱程序到達的網域仍需要明確的沙箱權限規則。623WebFetch 設定一個以 `Claude-User` 開頭的 `User-Agent` 標頭,以及一個 `Accept` 標頭,優先選擇 Markdown 而不是 HTML,以便支援內容協商的伺服器可以直接返回 Markdown。
624
625沙箱化命令不會繼承 WebFetch 的內建預先核准文件網域集合。若要讓沙箱化命令在不提示的情況下到達網域,請將網域新增至 [`allowedDomains`](/docs/zh-TW/settings-reference#sandbox-network-alloweddomains) 或使用 `WebFetch(domain:...)` 規則允許它,[沙箱也會遵守](/docs/zh-TW/sandboxing#network-isolation)。WebFetch 不會反過來讀取沙箱允許清單,因此將網域新增至沙箱或組織網路允許清單不會阻止 WebFetch 提示它。
368 626
369<h2 id="websearch-tool-behavior">627<h2 id="websearch-tool-behavior">
370 WebSearch 工具行為628 WebSearch 工具行為
371</h2>629</h2>
372 630
373WebSearch 針對 Anthropic 的 [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) 後端執行查詢,並傳回結果標題和 URL。它不擷取結果頁面。若要讀取 Claude 在搜尋結果中找到的頁面,它會跟進 [WebFetch](#webfetch-tool-behavior)。631WebSearch 針對 Anthropic 的[網路搜尋](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool)後端執行查詢,並傳回結果標題和 URL。它不會擷取結果頁面。若要讀取 Claude 在搜尋結果中找到的頁面,它會後續使用 [WebFetch](#webfetch-tool-behavior)。
632
633該工具每次呼叫最多可發出八個後端搜尋,在傳回結果前在內部精煉搜尋。Claude 可以使用 `allowed_domains` 限制結果範圍以僅包含特定主機,或使用 `blocked_domains` 排除它們。這兩個清單無法在單一呼叫中結合。
374 634
375該工具可能在傳回結果之前發出最多八個後端搜尋,在內部精煉搜尋。Claude 可以使用 `allowed_domains` 限制結果以僅包含某些主機,或使用 `blocked_domains` 排除它們。這兩個清單不能在單個呼叫中組合。635當搜尋請求擊中過載的 API 時,Claude Code 會以退避方式重試;仍然失敗的呼叫會傳回錯誤結果。在 v2.1.212 之前,API 錯誤文字可能會作為搜尋結果傳達給 Claude。
376 636
377搜尋後端不可設定。若要使用不同的提供者進行搜尋,請新增公開搜尋工具的 [MCP server](/docs/zh-TW/mcp)。637WebSearch 權限規則不採用指定符。`allow` 或 `deny` 中的單純 `WebSearch` 項目是唯一形式。
378 638
379WebSearch 權限規則不採用 specifier。`allow` 或 `deny` 中的裸 `WebSearch` 項目是唯一的形式。639搜尋後端不可設定。若要使用不同的提供者進行搜尋,請新增公開搜尋工具的 [MCP 伺服器](/docs/zh-TW/mcp)。
380 640
381<Note>641<Note>
382 WebSearch 在 Claude API、[Claude Platform on AWS](/docs/zh-TW/claude-platform-on-aws) 和 Microsoft Foundry 上可用。在 Google Cloud 的 Agent Platform 上,它適用於 Claude 4 及更新版本的模型,包括 Opus、Sonnet 和 Haiku。Amazon Bedrock 不公開伺服器端 web search 工具。642 WebSearch 在 Claude API 和 [AWS 上的 Claude Platform](/docs/zh-TW/claude-platform-on-aws) 上可用。在 Microsoft Foundry 上,它需要[部署在 Anthropic 上](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options):部署在 Azure 上的部署不支援伺服器端工具,因此 WebSearch 呼叫失敗。在 Google Cloud 的 Agent Platform 上,它適用於 Claude 4 及更新版本的模型,包括 Opus、Sonnet 和 Haiku。Amazon Bedrock 不公開伺服器端網路搜尋工具。
383</Note>643</Note>
384 644
645<h3 id="session-search-limit">
646 工作階段搜尋限制
647</h3>
648
649一個工作階段最多可進行 200 次 WebSearch 呼叫,計算跨越主對話和它產生的每個[子代理](/docs/zh-TW/sub-agents),因此平行研究展開所進行的搜尋會計入相同的限制。該限制需要 Claude Code v2.1.212 或更新版本。當 Claude 達到限制時,進一步的呼叫會傳回通知,告訴 Claude 繼續使用它已經收集的資訊,而不是會邀請重試的錯誤。您看不到通知:受限的呼叫在對話中顯示為未執行任何操作的搜尋,如果 Claude 需要更多搜尋,通知會告訴它要求您提高限制。
650
651設定 [`CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`](/docs/zh-TW/env-vars) 環境變數以變更上限;它接受正整數,因此上限可以提高但無法關閉。執行 [`/clear`](/docs/zh-TW/commands#all-commands) 會重設計數。如果仍然可以產生[子代理](/docs/zh-TW/sub-agents)的工作(例如執行中的工作流程)在清除後存留,計數會改為進行。
652
385<h2 id="write-tool-behavior">653<h2 id="write-tool-behavior">
386 Write 工具行為654 Write 工具行為
387</h2>655</h2>
388 656
389Write 工具建立新檔案或使用提供的完整內容覆寫現有檔案。它不附加或合併。657Write 工具會建立新檔案或以提供的完整內容覆寫現有檔案。它不會附加或合併。
658
659Claude 是否必須在目前對話中讀取現有檔案後才能覆寫該檔案,取決於模型和檔案:
660
661* Claude Opus 4.6、Claude Haiku 4.5 和較舊的模型始終需要讀取,因此對未讀取的現有檔案進行 Write 會失敗並出現錯誤。
662* 較新的模型可以在與[讀取前編輯](#edit-tool-behavior)相同的條件下覆寫他們在此工作階段中從未讀取的檔案:讀取它不需要權限提示,且 Read 工具可用。
663* Jupyter 筆記本和 Claude 僅部分讀取且帶有[`PARTIAL view` 通知](#read-tool-behavior)的檔案,在每個模型上都需要讀取。
390 664
391如果目標路徑已存在,Claude 必須在目前對話中至少讀取過該檔案一次才能覆寫它。寫入未讀的現有檔案會失敗並出現錯誤。此限制不適用於新檔案。665此限制不適用於新檔案。在 v2.1.228 之前,每個模型都需要在覆寫現有檔案前進行讀取。
392 666
393使用 Bash 檢視檔案也滿足此要求,如 [Edit 工具行為](#edit-tool-behavior) 中所述的相同規則。667使用 Bash 檢視檔案也滿足此要求,遵循[編輯工具行為](#edit-tool-behavior)中描述的相同規則。
394 668
395對於現有檔案的部分變更,Claude 使用 Edit 而不是 Write。669對於現有檔案的部分變更,Claude 使用 Edit 而不是 Write。
396 670