Skip to main content
當 Claude 忽略您的指令或您設定的功能沒有出現時,通常是因為檔案沒有載入、從您預期以外的位置載入,或被另一個檔案覆蓋。本指南展示如何檢查 Claude Code 實際載入的內容,以便您縮小範圍。 如需安裝、驗證和連線問題的協助,請改為參閱 Troubleshoot installation and login。

查看載入上下文的內容

/context 命令會顯示目前工作階段中佔用上下文視窗的所有內容,並依類別細分:系統提示詞、系統工具、MCP 工具、自訂 subagent(含各自的載入來源)、記憶檔案、skill 以及對話訊息。請先執行此命令,確認您的 CLAUDE.md、規則或 skill 描述是否確實存在。/context 中的 skill 區段也包含 隨附 skill,而這些是 /skills 不會列出的。 若要查看特定類別的詳細資訊,請接著使用對應的專用命令: 如果某個記憶檔案未出現在 /context 的細分結果中,請對照 CLAUDE.md 檔案的載入方式 檢查其位置。子目錄中的 CLAUDE.md 檔案是按需載入,而非在工作階段開始時載入,因此不會出現在該細分結果中。 如果 /context 確認檔案已載入,但 Claude 仍未遵循某項特定指令,問題很可能出在指令的撰寫方式,而非是否已載入。CLAUDE.md 很適合用於您會提供給新進團隊成員的各類指引,例如專案慣例、建置命令,以及檔案應放置的位置。 當指令模糊到可有多種解讀方式、兩個檔案給出互相衝突的指示,或檔案變得過長以致個別規則所受的關注降低時,遵循程度就會下降。撰寫有效的指令 說明了能維持高遵循程度的具體性、篇幅與結構模式。
CLAUDE.md 與權限解決的是不同的問題。CLAUDE.md 告訴 Claude 您的專案如何運作,讓它做出良好的決策。權限 與 hook 則無論 Claude 做出何種決定都會強制執行限制。請將 CLAUDE.md 用於「我們這裡是這樣做的」這類情況。對於安全邊界以及任何絕不能發生的事情,也就是您需要的是保證而非指引時,請使用權限或 hook。

檢查已解析的設定

設定在受管、使用者、專案和本機範圍之間合併。受管設定在存在時始終優先。在其餘的設定中,較近的範圍會按本機、專案、使用者的順序覆蓋較廣的範圍。某些設定也可以由命令列旗標或 環境變數 設定,這些變數充當另一個覆蓋層。當設定似乎不適用時,您設定的值通常被另一個範圍或環境變數覆蓋。 若要找出無效的設定檔案,請從您的終端機執行 claude doctor。它會列印唯讀的安裝和設定診斷,而不會啟動工作階段。如需完整檢查,也會提議修正並在套用前詢問,請在工作階段內執行 /doctor。 執行 /status 以查看哪些設定來源處於作用中,包括是否啟用了受管設定。若要瞭解 Claude Code 對於給定鍵使用哪個範圍,請參閱 設定優先順序。

檢查 MCP servers

執行 /mcp 以查看每個已設定的 server、其連線狀態,以及您是否已為目前專案核准它。server 可以定義正確但仍然不提供 tools,原因有幾個常見的:
  • .mcp.json 中的專案範圍 servers 需要一次性核准。如果提示被關閉,server 將保持停用狀態,直到您從 /mcp 核准它。
  • 啟動失敗的 server 在 /mcp 中顯示為失敗。command 或 args 中的相對檔案路徑是常見原因,因為它們相對於您啟動 Claude Code 的目錄而不是 .mcp.json 的位置進行解析。
  • 顯示為已連線但列出零個 tools 的 server 已成功啟動但未返回 tool 清單。從 /mcp 選擇 Reconnect。如果計數保持為零,執行 claude --debug=mcp 並在 ~/.claude/debug/<session-id>.txt 的偵錯日誌中讀取 server 的 stderr。
如需設定位置和範圍規則,請參閱 MCP。

檢查 hooks

執行 /hooks 以列出為目前工作階段註冊的每個 hook,按事件分組。如果您定義的 hook 沒有出現,表示 Claude Code 未載入它。請檢查以下原因:
  • hook 定義在獨立檔案中。hook 應位於設定檔中的 "hooks" 鍵下。
  • matcher 值是陣列而不是單一字串。當您啟動互動式工作階段時以及在 claude doctor 中,Claude Code 會將該項目列為無效設定。如果該陣列位於 PreToolUse 或 PermissionRequest 下,該檔案的其他 hook 也都不會載入。
如果 hook 出現但不觸發,通常是 matcher 的問題。檢查它是否有這些錯誤:
  • matcher 欄位是一個使用 | 匹配多個 tool 名稱的單一字串,例如 "Edit|Write"。, 分隔符是等效的,因此 "Edit,Write" 匹配相同的 tools。在 v2.1.191 之前,逗號會進入正規表達式評估,matcher 永遠不會匹配,因此如果您不在 v2.1.191 版本上,請使用 |。
  • 拼寫錯誤的 tool 名稱會產生一個不匹配任何內容的 matcher,因此 hook 會無聲地失敗。
對 settings.json 的編輯在短暫的檔案穩定延遲後在執行中的工作階段中生效,即使您在工作階段開始後才建立檔案或專案的 .claude/ 資料夾。您不需要重新啟動。在 v2.1.257 之前,Claude Code 沒有偵測到在工作階段開始後建立的 .claude/ 資料夾中的編輯。 如果在保存後幾秒鐘 /hooks 仍顯示舊定義,請再次執行 /hooks 以重新整理檢視。 如果 /hooks 顯示 hook 但它仍然不觸發,下一步是即時監視 hook 評估。使用 claude --debug 啟動工作階段並觸發 tool 呼叫。偵錯日誌記錄每個事件、檢查了哪些 matchers 以及 hook 的結束代碼和輸出。如需日誌格式,請參閱 Debug hooks,如需常見失敗模式,請參閱 hooks 疑難排解。

針對乾淨的設定進行測試

使用 claude --safe-mode 開始,它會啟動一個停用您自訂項目的工作階段,包括:
  • CLAUDE.md
  • Skills、外掛和 hook
  • MCP 伺服器
  • 自訂命令和 agent
  • 自訂輸出風格
  • 自訂快捷鍵
身分驗證、模型選擇、內建工具和權限正常運作。如果問題在安全模式中消失,表示您已將原因縮小到您關閉的其中一個項目。若要找出是哪一個,請使用該項目對應的檢查,例如查看載入到上下文中的內容、檢查 MCP 伺服器或檢查 hook。 安全模式仍然會套用來自您組織的受管 hook 和設定原則。受管外掛、skills、CLAUDE.md 和 MCP 伺服器會被關閉。 如果問題在安全模式中持續存在,或您的設定本身令人懷疑,請啟動一個完全不含您自己設定的工作階段,並檢查問題是否仍然出現。
1

建立空目錄並切換到該目錄

在沒有執行任何 Claude Code 工作階段的情況下,於您的 shell 中建立目錄並移至其中:
2

使用乾淨的設定目錄啟動 Claude Code

在同一個 shell 中,將 CLAUDE_CONFIG_DIR 設定為一個新的目錄來取代 ~/.claude,並傳入 --setting-sources user 以關閉專案設定,例如 .claude/settings.json、CLAUDE.md 和 .mcp.json:
此變數僅適用於這一次啟動。
首次啟動時,您會再次經歷首次執行設定畫面,這表示乾淨的設定目錄已生效。受管設定仍然適用,而且如果您使用 claude.ai 帳戶登入,連接器仍會載入。
3

重現問題

在乾淨的工作階段中重複觸發問題的操作:
  • 問題消失:原因在於您的使用者或專案設定。將 ~/.claude.json 和 ~/.claude 中的檔案一次一個地複製到 ~/claude-clean/config。如果沒有任何一個讓問題重新出現,請在同一個 shell 中前往您的專案目錄,並在不使用 --setting-sources user 的情況下啟動 Claude Code。在 Bash 或 Zsh 中,執行 CLAUDE_CONFIG_DIR=~/claude-clean/config claude。在 PowerShell 中,該變數仍然已設定,因此執行 claude 即可。
  • 問題持續存在:原因在於您的使用者和專案設定之外。在工作階段中執行 /status 以檢查是否有受管設定,檢查您 shell 中的環境變數,然後參閱疑難排解。

檢查常見原因

大多數設定問題都可以追溯到一小組位置和語法規則。在假設有錯誤之前,請先檢查這些項目: 如需每個設定表面的完整參考,請參閱專用頁面: