解鎖 Claude Code:未公開的配置與隱藏強大功能

Claude Code 被設計為一個強大的 AI 編碼助手,但其官方文件僅觸及皮毛。透過分析原始碼(特別是 2.1.87 版本),我們發現了大量未公開的配置與功能——從透過 hooks 實現的可程式化中間件層,到自我改進的記憶系統。

這些功能將 Claude Code 從一個簡單的聊天介面轉變為一個可自定義的開發環境。本指南將探索最具影響力的隱藏設定,以及如何在您的專案中實施它們。

可程式化中間件:進階 Hooks

雖然文件提到 hooks 會在 stdin 接收 JSON 並能透過 exit code 2 阻斷操作,但原始碼顯示 hooks 實際上可以透過 stdout 回傳 JSON,以即時修改 Claude 的行為。

特定事件的響應欄位

根據 hook 的類型,您可以回傳特定的欄位來改變執行流程:

  • PreToolUse:
    • updatedInput: 在工具執行前重寫工具的輸入(例如:在 git 指令中加入 --dry-run)。
    • permissionDecision: 強制執行「允許」或「拒絕」而無需詢問使用者。
    • permissionDecisionReason: 提供決策原因,以便在 UI 中顯示。
    • additionalContext: 直接將文字注入到對話上下文中。
  • SessionStart:
    • watchPaths: 設定自動檔案監控以觸發 FileChanged 事件。
    • initialUserMessage: 在第一條使用者訊息前加上內容。
    • additionalContext: 注入會話範圍的持久性上下文。
  • PostToolUse:
    • updatedMCPToolOutput: 修改 Claude 從 MCP 工具接收到的輸出。
    • additionalContext: 在工具執行後立即注入上下文。
  • PermissionRequest:
    • decision: 使用 updatedInputupdatedPermissions 以程式化方式允許或拒絕。

Hook 執行控制

除了標準的 typecommand 欄位外,三個未公開的旗標從根本上改變了 hook 的行為:

  1. once: true: Hook 會執行一次後自動移除。非常適合一次性的環境設定(例如:從模板建立 .env 檔案)。
  2. async: true: 在背景執行 hook 而不阻斷模型。非常適合稽核日誌或遙測。
  3. asyncRewake: true: Hook 會在非同步方式執行,但如果以 code 2 結束,則可以「喚醒」模型並阻斷操作。這允許進行非阻斷式的安全掃描(例如:金鑰偵測),僅在發現違規時才中斷流程。

擴展技能與代理 (Agents)

.claude/ 中的技能 (Skills) 與代理 (Agents) 支援超出基本文件的 frontmatter 欄位。

進階技能配置

  • model: 為特定技能覆蓋模型(例如:使用 haiku 進行快速 linting,使用 opus 進行深度架構審查)。
  • effort: 控制推理深度,值包括:lowmediumhighmax
  • hooks: 定義僅限於該技能活動期間的 hooks。這些會在技能開始時註冊,並在結束時註銷。
  • agent: 將技能的執行委派給特定的自定義代理。
  • disable-model-invocation: true: 防止模型自動調用技能;只能透過 /skill-name 觸發。

自定義代理增強功能

自定義代理位於 .claude/agents/ 中,可以透過以下欄位進一步微調:

  • color: 設定 UI 色彩(例如:redbluegreen)以視覺化區分不同的代理。
  • memory: 啟用跨調用的持久性記憶。選項包括 user(全域)、project(專案級別)和 local(專案私有)。這允許代理記住程式碼庫模式與過去的發現。
  • omitClaudeMd: true: 跳過載入 CLAUDE.md 指令層級結構,允許代理根據行業標準而非專案特定慣例進行不偏不倚的審查。
  • criticalSystemReminder_EXPERIMENTAL: 一條會在每一輪對話中重新注入的訊息,確保在對話壓縮過程中不會遺禁失關鍵的安全規則。

"YOLO Classifier" 與自動模式

在內部,Claude Code 的自動模式權限系統被稱為 "YOLO Classifier"。雖然您可以定義 allowsoft_deny 模式,但 settings.json 中的 environment 陣列允許您提供您環境設定的英文描述。

透過加入如 "This is a local dev machine with no production database access""The test suite is safe to run repeatedly" 等字串,您可以為分類器提供上下文,讓它在面對模糊指令時能根據這些資訊做出安全決策,有效地對您的環境風險等級進行「簡報」。

自我改進:自動記憶與夢境 (Dreaming)

兩個設定可以啟用一個複合學習迴圈,讓 Claude Code 可以進化,而無需重新訓練模型:

  • autoMemoryEnabled: true: 背景代理會從會話中提取持久性記憶(偏好、模式、決策)並將其儲存在專案記憶中。
  • autoDreamEnabled: true: 每 24 小時,如果累積了足夠的會話,背景代理會審查轉錄文本以整合記憶、合併重複項並修剪過時的條目。

技術注意事項與社群觀點

雖然這些功能提供了巨大的力量,但它們也伴隨著風險。Hacker News 上的社群成員指出了一些關鍵考量:

"Claude package has ten new versions published per week... one should definitely not rely on some undocumented tricks around it: it'll change, it'll break deep ultra-specific configurations."

由於這些功能是透過原始碼分析發現的,且部分功能被明確標記為 EXPERIMENTAL,因此它們可能會在不經通知的情況下發生變動。此外,一些使用者指出,雖然功能集非常龐大,官方模型仍偶爾會對複雜任務「放棄」,這顯示單靠配置可以無法解決所有的可靠性問題。

權限模式語言摘要

對於正在配置 permissionshooks 匹配器的人來說,原始碼揭示了一種類似 glob 的模式語言:

Pattern Description
Bash(npm *) "npm " 之後的萬用字元
Read(src/**/*.ts) 對 TypeScript 檔案的遞迴目錄匹配
mcp__slack__post_message 特定 MCP 伺服器上的特定工具
mcp__slack__* Slack 伺服器上的所有工具

透過利用這些隱藏的配置,開發者可以超越標準的聊天體驗,並建立一個真正自主、自我學習的開發代理,專為其特定的程式碼庫與安全要求量身打造。

Sources