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

查看載入到 context 的內容

/context 命令顯示佔用目前工作階段 context 視窗的所有內容,按類別細分:系統提示、記憶檔案、skills、MCP tools 和對話訊息。首先執行它以確認您的 CLAUDE.md、規則或 skill 描述是否存在。 如需特定類別的詳細資訊,請使用專用命令進行後續操作:
命令顯示
/memory載入了哪些 CLAUDE.md 和規則檔案,加上自動記憶項目
/skills來自專案、使用者和外掛程式來源的可用 skills
/agents已設定的子代理及其設定
/hooks作用中的 hook 設定
/mcp已連線的 MCP servers 及其狀態
/permissions目前生效的已解析允許和拒絕規則
/doctor設定診斷:無效的鍵、schema 錯誤、安裝健康狀況
/status作用中的設定來源,包括是否啟用了受管設定
如果記憶檔案在 /memory 中遺失,請根據 CLAUDE.md 檔案如何載入 檢查其位置。子目錄 CLAUDE.md 檔案在 Claude 使用 Read 工具讀取該目錄中的檔案時按需載入,而不是在工作階段開始時載入。 如果 /memory 確認檔案已載入但 Claude 仍未遵循特定指令,問題可能在於指令的編寫方式,而不是是否載入。CLAUDE.md 適用於您會給新隊友的指導類型,例如專案慣例、建置命令和檔案所在位置。 當指令模糊到可以多種方式解釋時、當兩個檔案給出衝突的方向時,或當檔案變得足夠長以至於個別規則獲得較少關注時,遵循度會下降。編寫有效的指令 涵蓋保持遵循度高的特異性、大小和結構模式。
CLAUDE.md 和 permissions 解決不同的問題。CLAUDE.md 告訴 Claude 您的專案如何運作,以便它做出良好決策。Permissionshooks 無論 Claude 決定什麼,都會強制執行限制。使用 CLAUDE.md 表示「我們在這裡這樣做」。使用 permissions 或 hooks 表示安全邊界和任何必須永遠不會發生的事情,其中您需要保證而不是指導。

檢查已解析的設定

設定在受管、使用者、專案和本機範圍之間合併。受管設定在存在時始終優先。在其餘的設定中,較近的範圍會按本機、專案、使用者的順序覆蓋較廣的範圍。某些設定也可以由命令列旗標或 環境變數 設定,這些變數充當另一個覆蓋層。當設定似乎不適用時,您設定的值通常被另一個範圍或環境變數覆蓋。 執行 /doctor 以驗證您的設定檔案並顯示無效的鍵或 schema 錯誤。執行 /status 以查看哪些設定來源處於作用中,包括是否啟用了受管設定。若要瞭解給定鍵的哪個範圍優先,請參閱 範圍如何互動

檢查 MCP servers

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

檢查 hooks

執行 /hooks 以列出為目前工作階段註冊的每個 hook,按事件分組。如果您定義的 hook 沒有出現,則它未被讀取:hooks 位於設定檔案中的 "hooks" 鍵下,而不是在獨立檔案中。 如果 hook 出現但不觸發,通常是 matcher 的問題。matcher 欄位是一個使用 | 匹配多個 tool 名稱的單一字串,例如 "Edit|Write"。拼寫錯誤的 tool 名稱會無聲地失敗,因為 matcher 永遠不會匹配。陣列值是 schema 錯誤:Claude Code 顯示設定錯誤通知,/doctor 報告驗證失敗,hook 項目被刪除,因此不會出現在 /hooks 中。 settings.json 的編輯在短暫的檔案穩定延遲後在執行中的工作階段中生效。您不需要重新啟動。如果在保存後幾秒鐘 /hooks 仍顯示舊定義,請再次執行 /hooks 以重新整理檢視。 如果 /hooks 顯示 hook 但它仍然不觸發,下一步是即時監視 hook 評估。使用 claude --debug hooks 啟動工作階段並觸發 tool 呼叫。偵錯日誌記錄每個事件、檢查了哪些 matchers 以及 hook 的結束代碼和輸出。如需日誌格式,請參閱 Debug hooks,如需常見失敗模式,請參閱 hooks 疑難排解

常見原因

大多數設定意外可以追溯到一小組位置和語法規則。在假設有 bug 之前檢查這些:
症狀原因修正
Hook 永遠不觸發matcher 是 JSON 陣列而不是字串使用單一字串搭配 | 來匹配多個 tools,例如 "Edit|Write"。請參閱 matcher 模式
Hook 永遠不觸發matcher 值是小寫,例如 "bash"匹配區分大小寫。Tool 名稱是大寫的:BashEditWriteRead
Hook 永遠不觸發Hooks 在獨立的 .claude/hooks.json 檔案中沒有獨立的 hooks 檔案。在 settings.json 中的 "hooks" 鍵下定義 hooks。請參閱 hook 設定
全域設定的 Permissions、hooks 或 env 被忽略設定已新增到 ~/.claude.json~/.claude.json 保存應用程式狀態和 UI 切換。permissionshooksenv 屬於 ~/.claude/settings.json。這是兩個不同的檔案。
settings.json 值似乎被忽略相同的鍵在 settings.local.json 中設定settings.local.json 覆蓋 settings.json,兩者都覆蓋 ~/.claude/settings.json。請參閱 settings 優先順序
Skill 不出現在 /skillsSkill 檔案位於 .claude/skills/name.md 而不是在資料夾中使用包含 SKILL.md 的資料夾:.claude/skills/name/SKILL.md
Skill 出現在 /skills 中但 Claude 永遠不呼叫它Skill 在其 frontmatter 中有 disable-model-invocation: true,或其描述與您表述請求的方式不符檢查 /skills 中的徽章:「user-only」標籤表示 Claude 不會自動觸發它。請參閱 skill 呼叫
子目錄 CLAUDE.md 指令似乎被忽略子目錄檔案按需載入,而不是在工作階段開始時載入它們在 Claude 使用 Read 工具讀取該目錄中的檔案時載入,而不是在啟動時,也不是在寫入或建立檔案時。請參閱 CLAUDE.md 檔案如何載入
子代理忽略 CLAUDE.md 指令子代理不總是繼承專案記憶將關鍵規則放在代理檔案主體中,該主體成為子代理的系統提示。請參閱 子代理設定
清理邏輯在工作階段結束時永遠不執行未設定 SessionEnd hookSessionStartSessionEnd 都存在。請參閱 hook 事件清單
.mcp.json 中的 MCP servers 永遠不載入檔案位於 .claude/ 下或使用 Claude Desktop 的設定格式專案 MCP 設定位於儲存庫根目錄為 .mcp.json,而不是在 .claude/ 內。請參閱 MCP 設定
新增的專案 MCP server 但不出現一次性核准提示被關閉專案範圍 servers 需要核准。執行 /mcp 以查看狀態並核准。
MCP server 從某些目錄啟動失敗commandargs 使用相對檔案路徑對本機指令碼使用絕對路徑。您 PATH 上的可執行檔(如 npxuvx)可以按原樣使用。
MCP server 啟動時沒有預期的環境變數變數在 settings.json env 中,不會傳播到 MCP 子程序改為在 .mcp.json 內設定每個 server 的 env
Bash(rm *) 拒絕規則不阻止 /bin/rmfind -delete前綴規則匹配字面命令字串,而不是基礎可執行檔為每個變體新增明確模式,或使用 PreToolUse hooksandbox 以獲得硬保證。

相關資源

如需每個設定表面的完整參考,請參閱專用頁面: