解鎖 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: 使用updatedInput或updatedPermissions以程式化方式允許或拒絕。
Hook 執行控制
除了標準的 type 和 command 欄位外,三個未公開的旗標從根本上改變了 hook 的行為:
once: true: Hook 會執行一次後自動移除。非常適合一次性的環境設定(例如:從模板建立.env檔案)。async: true: 在背景執行 hook 而不阻斷模型。非常適合稽核日誌或遙測。asyncRewake: true: Hook 會在非同步方式執行,但如果以 code 2 結束,則可以「喚醒」模型並阻斷操作。這允許進行非阻斷式的安全掃描(例如:金鑰偵測),僅在發現違規時才中斷流程。
擴展技能與代理 (Agents)
.claude/ 中的技能 (Skills) 與代理 (Agents) 支援超出基本文件的 frontmatter 欄位。
進階技能配置
model: 為特定技能覆蓋模型(例如:使用haiku進行快速 linting,使用opus進行深度架構審查)。effort: 控制推理深度,值包括:low、medium、high或max。hooks: 定義僅限於該技能活動期間的 hooks。這些會在技能開始時註冊,並在結束時註銷。agent: 將技能的執行委派給特定的自定義代理。disable-model-invocation: true: 防止模型自動調用技能;只能透過/skill-name觸發。
自定義代理增強功能
自定義代理位於 .claude/agents/ 中,可以透過以下欄位進一步微調:
color: 設定 UI 色彩(例如:red、blue、green)以視覺化區分不同的代理。memory: 啟用跨調用的持久性記憶。選項包括user(全域)、project(專案級別)和local(專案私有)。這允許代理記住程式碼庫模式與過去的發現。omitClaudeMd: true: 跳過載入CLAUDE.md指令層級結構,允許代理根據行業標準而非專案特定慣例進行不偏不倚的審查。criticalSystemReminder_EXPERIMENTAL: 一條會在每一輪對話中重新注入的訊息,確保在對話壓縮過程中不會遺禁失關鍵的安全規則。
"YOLO Classifier" 與自動模式
在內部,Claude Code 的自動模式權限系統被稱為 "YOLO Classifier"。雖然您可以定義 allow 和 soft_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,因此它們可能會在不經通知的情況下發生變動。此外,一些使用者指出,雖然功能集非常龐大,官方模型仍偶爾會對複雜任務「放棄」,這顯示單靠配置可以無法解決所有的可靠性問題。
權限模式語言摘要
對於正在配置 permissions 或 hooks 匹配器的人來說,原始碼揭示了一種類似 glob 的模式語言:
| Pattern | Description |
|---|---|
Bash(npm *) |
"npm " 之後的萬用字元 |
Read(src/**/*.ts) |
對 TypeScript 檔案的遞迴目錄匹配 |
mcp__slack__post_message |
特定 MCP 伺服器上的特定工具 |
mcp__slack__* |
Slack 伺服器上的所有工具 |
透過利用這些隱藏的配置,開發者可以超越標準的聊天體驗,並建立一個真正自主、自我學習的開發代理,專為其特定的程式碼庫與安全要求量身打造。