Code Mode 為實驗性功能,預設為關閉。它可能會在任何版本中變更或移除。如需分享意見回饋,請執行
/feedback。Code Mode 的運作方式
在 Code Mode 工作階段中,您仍然在提示詞中描述您的任務,而 Claude 會撰寫 JavaScript 來執行它。一段程式碼可以平行執行命令、在下一次呼叫中使用某個結果,並傳回 Claude 需要讀取的那部分輸出。 例如,如果您請 Claude 提高重試上限,Claude 可能會撰寫以下程式碼來尋找檔案、編輯檔案並執行測試。最後一行會將檔案路徑和測試輸出傳回給 Claude:Ctrl+O 開啟逐字稿檢視器。每段程式碼都會在其中顯示為收合的 Code 列,並附有如何展開的提示。
何時使用 Code Mode
請在需要許多相關工具呼叫的任務上試用 Code Mode,例如:- 在許多檔案中重複進行的變更
- 在 Claude 讀取結果之前需要先篩選結果的搜尋
- 可以同時執行的數個獨立命令
Code Mode 的限制
在開啟 Code Mode 之前,請確認您可以接受以下限制:- 繼續工作階段:您只能在終端機中、且在 Code Mode 開啟的情況下繼續 Code Mode 工作階段
- 自動模式:自動模式的分類器會審查程式碼,而非每個工具呼叫
- 長時間執行的程式碼:除非程式碼可以在背景執行,否則您需要等待它完成,且它會在十分鐘後停止
- Hook:當
PreToolUsehook 無法執行或逾時時,您可能會看到工具呼叫被拒絕,也可能會看到程式碼輸出被UserPromptSubmithook 阻擋 - 無法使用的功能:您無法使用 Remote Control、Claude in Chrome 或電腦操作
- 移動工作階段:您無法將工作階段移至 Desktop 應用程式或將其轉為背景工作階段,且
/fork無法啟動背景副本
需求
- 版本:Claude Code v2.1.323 或更新版本,任一發布通道皆可。較舊的版本啟動時不會啟用 Code Mode,可能會也可能不會顯示原因
it isn't open to your account yet - 帳戶:Claude 訂閱或 Console 帳戶。您無法透過閘道、Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry 使用 Code Mode
- 組織:您的組織未使用 HIPAA 設定,也未使用零資料保留
- 模型:Claude Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 5.2
- 使用介面:在終端機中的互動式
claude工作階段。Code Mode 無法搭配-p、Agent SDK、VS Code 面板、Desktop 應用程式或雲端工作階段使用 - 安裝:Claude Code 的原生建置
- Windows:已安裝 Git for Windows
DISABLE_TELEMETRY。各項的修正方式請參閱 Code Mode 無法啟動。
試用 Code Mode
開啟 Code Mode,交給 Claude 一項任務,然後查看 Claude 撰寫的程式碼。1
檢查您的版本
執行
claude --version。如果版本早於 v2.1.323,請執行 claude update。如果您使用的是 stable 通道,且更新後未達到 v2.1.323,請等待 stable 跟上,或切換至 latest。2
在開啟 Code Mode 的情況下啟動 Claude Code
將
CLAUDE_CODE_EXPERIMENTAL_CODE_MODE 環境變數設為 1。若要試用 Code Mode,請在您的 shell 中設定。若要為每個新的工作階段開啟 Code Mode,請在您的使用者設定中設定。- macOS, Linux, WSL
- Windows PowerShell
- settings.json
3
確認您要使用 Code Mode
在您的第一個 Code Mode 工作階段之前,Claude Code 會請您確認。請選取 Yes, turn on Code Mode。Claude Code 會重新啟動,並在工作階段頂端附近顯示這一行:如果您看到不同的一行或沒有看到任何一行,請參閱 Code Mode 無法啟動。
4
交給 Claude 一項需要許多工具呼叫的任務
在您熟悉的專案中,傳送如下的提示詞:
5
閱讀 Claude 撰寫的程式碼
按
Ctrl+O 並展開 Code 列,即可查看工具呼叫背後的 JavaScript。再按一次 Ctrl+O 即可返回對話。關閉 Code Mode
從您的 shell 和~/.claude/settings.json 中移除 CLAUDE_CODE_EXPERIMENTAL_CODE_MODE,然後啟動新的工作階段。您也可以保留該變數,並在任一處將其值改為 0。只要其中一處為 0,即使您在另一處設定了 1,Code Mode 仍會保持關閉。
為您的組織封鎖 Code Mode
將值為0 的 CLAUDE_CODE_EXPERIMENTAL_CODE_MODE 加入您的受管設定,讓您組織中的任何人都無法使用 Code Mode:
0 生效期間無法繼續他們的 Code Mode 工作階段。您無法從受管設定為您的使用者開啟 Code Mode。
權限與長時間執行的程式碼
您的權限模式決定了 Claude 的程式碼如何接受檢查,以及在程式碼執行期間您是否能與 Claude 交談。權限檢查
Claude 的程式碼所進行的每個工具呼叫,都會經過您的deny 和 ask 權限規則以及您的 PreToolUse hook。您不需要為 Bash 等工具變更規則或 matcher。除了規則和 hook 之外,在自動模式下會由分類器審查程式碼,而在會詢問的模式下則由您回應權限提示:
- 自動模式:分類器會在每段程式碼執行前審查該段程式碼,而不是審查每個工具呼叫。它看不到在執行時計算出的值,例如取自搜尋輸出的路徑,因此對於您必須控管的呼叫,請保留規則或 hook。在先前的程式碼執行期間有新的程式碼啟動時,您仍可能收到權限提示
- 其他權限模式:程式碼會在未經審查的情況下啟動,而對於在該模式下會提示您的每個工具呼叫,您都會收到權限提示
REPL(執行 Claude 程式碼的工具)的 PreToolUse hook,並從 tool_input.code 讀取 JavaScript。
長時間執行的程式碼
當程式碼執行長時間的建置或測試時,Claude 會等待它,或讓它在背景繼續執行:- 等待:Claude 會在程式碼完成後回覆,且程式碼會在十分鐘後停止,其中包括您在權限提示上花費的時間
- 背景:您可以繼續與 Claude 交談,且程式碼最多可執行兩小時
bypassPermissions 模式啟動您的工作階段。如果 Claude 仍然等待,請檢查您目前的模式以及您啟動工作階段的方式:
- 您切換到了其他模式:按
Shift+Tab,直到回到您啟動時的模式 - 您以其他模式啟動,或從
claude --resume清單中選取了工作階段:如果您可以使用自動模式,請結束,然後在 Code Mode 開啟的情況下執行claude --continue --permission-mode auto - 您將工具名稱傳給了
--tools:以自動模式重新啟動,且不使用該旗標
疑難排解
Code Mode 無法啟動
工作階段頂端附近出現Code Mode (experimental) isn't available,表示 Claude Code 啟動時未啟用 Code Mode。原因會接在同一行後面,/status 也會顯示。請在此表中找到原因,進行變更,然後啟動新的工作階段。如果原因未列在表中,請檢查需求。
如果您沒有看到任何關於 Code Mode 的行,請執行
claude --version。如果您的版本早於 v2.1.323,請更新。接著確認您的 shell 或使用者設定中的 CLAUDE_CODE_EXPERIMENTAL_CODE_MODE 為 1,並從這些位置以及任何 --settings 檔案中移除所有 0。
附有倒數計時的權限提示
在自動模式下,當先前的程式碼仍在執行時 Claude 又啟動了更多程式碼,先前的程式碼就會失去分類器審查。Claude Code 接著會針對先前程式碼中需要審查的剩餘呼叫詢問您。在未連接 IDE 的情況下,權限提示會顯示倒數計時:工具呼叫被 hook 拒絕
如果 Claude 回報工具呼叫被拒絕,請向它詢問錯誤文字。以下錯誤表示PreToolUse hook 未提供決定,即使未設定 onFailure,這也會拒絕該呼叫:
the hook failed:在來自 Claude 程式碼的呼叫上,您的 hook 無法啟動、被終止、以 126、127 或大於 128 的代碼結束,或傳回 HTTP 錯誤或無效輸出。請修正該 hookthe hook did not finish:您的 hook 在來自 Claude 程式碼的呼叫上逾時,或在 Claude 於工作階段中執行過程式碼後,於任何其他工具呼叫上逾時。請提高該 hook 的timeout
command 或 http hook 失敗或逾時時讓呼叫繼續進行,請在該 hook 上設定 "onFailure": "continue"。如果 command hook 以 1 之類的一般代碼結束,除非您設定了 "onFailure": "block",否則該呼叫會繼續進行。
程式碼輸出被 hook 攔截
如果 Claude 在您預期看到 Claude 程式碼輸出的地方回報了 hook 的阻擋原因,請檢查您的UserPromptSubmit hook。當程式碼可以在背景執行時,該事件上的 command、http 和 mcp_tool hook 也會在程式碼輸出上執行。若要讓輸出通過,請變更該 hook,使其在輸入中的 source 為 poll_event 時不進行阻擋。