Claude Code 既有的 hooks 也會在事件發生時執行,其形式是您在設定檔中設定的 shell 命令、HTTP 請求或提示詞。相對地,mod 的處理常式則是在 Claude Code 內部執行的函式,而非上述形式。Claude Code 將這兩種都稱為 hook:在這些頁面中,「hook」指的是 mod 的處理常式,而設定檔中的那種則稱為「設定 hook」。
Mod 可以做什麼
設定 hooks、skills、狀態行和 MCP 伺服器從 Claude Code 外部運作:每一個都執行指令碼,或為 Claude 提供文字或工具。Mod 在 Claude Code 內執行,因此它可以做他們無法做的事情:- 繪製您可以使用的介面:文字記錄旁邊的窗格或提示上方的帶狀區域,具有標籤、按鈕和文字欄位。請參閱在介面中繪製。
- 重新繪製 Claude Code 自己的介面:取代或重新設定 Claude Code 自己繪製的部分,例如工具呼叫的列、微調器或 Claude 提出問題的對話框。請參閱變更 Claude Code 已繪製的內容。
- 進入工具呼叫或請求:例如,在您詢問使用者問題時保留工具呼叫、在不執行工具的情況下回答,或將一個請求傳送到不同的模型。請參閱保護或變更工具呼叫和跟隨一個回合。
- 在命令上執行您自己的程式碼:一個
/command,立即執行您的函式,沒有 Claude 回合,即使 Claude 正在工作。請參閱新增命令或工具。 - 在 hooks 之間共享資料:mod 的 hooks 共享其檔案中的變數,因此一個 hook 記錄的內容,另一個可以顯示。例如,一個 hook 可以計算工具呼叫,而另一個在微調器旁邊顯示計數,或一個可以讀取每個請求的權杖使用量,而另一個在窗格中繪製它。請參閱對事件做出反應。
claude -p 和雲端工作階段中。如果設定 hook、skill 或 MCP 伺服器已經做了您需要的事情,在您編寫 mod 之前比較它們。若要為組織管理 mod,請參閱為您的組織管理 mod。
取得 mod
若要開始使用 mod:- 使用您已經擁有的:Claude Code 的某些功能是 mods,例如
/diff。請參閱內建於 Claude Code 的 Mods。 - 建立一個:在 Claude Code 工作階段中描述您想要的內容,Claude 會編寫 mod。請參閱向 Claude 要求 mod。若要了解 mod 程式碼的運作方式,自己編寫一個。
- 安裝一個:請參閱安裝或更新 mod,或試用範例 mod
安裝或更新 mod
Mod 作為外掛程式從市集安裝。提供外掛程式的名稱、@ 和市集的名稱。這些範例從名為 your-org 的市集安裝名為 token-chart 的外掛程式:
- 在 Claude Code 工作階段中,執行
/plugin install token-chart@your-org。 - 在您的 shell 中,執行
claude plugin install token-chart@your-org。
/reload-plugins 以載入它。否則,它會在您下次啟動 Claude Code 時載入。
試用範例 mod
Anthropic 在claude-code-playground 儲存庫的 claude-code/mods 目錄中分享範例 mods。每一個都是完整的外掛程式,其 README 說明了它的建構方式。該儲存庫按原樣分享這些範例,不提供支援。
token-weather:在提示詞上方繪製您上下文視窗的預報blast-radius:暫停有風險的 shell 命令(例如rm -rf或強制推送),並顯示它會變更的內容,附有繼續或取消的按鈕replay-theater:新增/replay命令,逐步檢視 Claude 在上一個回合中所做的檔案編輯
--plugin-dir 在單一工作階段中載入 mod 的目錄。若要確認 mod 已載入,請檢查工作階段載入了哪些 mods。
若要保留它,請將複製的 claude-code/mods 目錄新增為市集,然後從 claude-code-playground-mods 安裝該 mod。該市集指向您的複製,因此如果您移動或刪除它,mod 就會停止載入。
決定是否信任 mod
Mod 是使用您的權限在 Claude Code 內執行的程式碼。僅從您信任的作者和市集安裝 mods。Mod 可以存取什麼
Mod 使用您的權限執行,因此在您安裝一個之前,請了解它可以存取什麼。載入後,mod 可以:- 在您的機器上以您的身份行動:讀取和寫入您的使用者帳戶可以存取的任何地方的檔案、啟動程式和發出網路請求
- 讀取您的機密:環境變數和設定檔,包括您保留在任一個中的 API 金鑰
- 查看您的工作階段:您傳送的每個提示詞和 Claude 進行的每個工具呼叫
- 變更您的工作階段:重寫提示詞或工具呼叫、提交提示詞,就像您輸入的一樣,或傳送訊息到您的另一個工作階段
- 在不詢問您的情況下行動:在詢問您之前核准工具呼叫
- 花費您的使用量:在您的計畫或 API 金鑰上呼叫模型
ask 規則會提示的呼叫,或您自己的 PreToolUse hook 阻止的呼叫。使用 hook 擴展權限列出此類 mod 可以核准的內容,包括何時可以核准 deny 規則拒絕的呼叫。
Mod 可以重新設定 Claude Code 介面的大部分,但不能重新設定權限提示。它無法變更提示顯示給您的內容。
在安裝 mod 之前列出它的功能
在您安裝 mod 之前,您可以列出它處理的事件以及它要求 Claude Code 執行的操作,例如讀取檔案或發出網路請求,而無需執行它。首先取得外掛程式的檔案,例如透過複製其儲存庫。然後,在您的 shell 中,在外掛程式的目錄上執行claude plugin validate:
hooks: 和 calls: 行列出 mod 處理的事件以及它要求 Claude Code 執行的操作。檢查 mod 可以做什麼顯示輸出以及要查找的呼叫。
開啟或關閉 mods
mod 預設為開啟。在終端機中,請使用 Claude Code v2.1.287 或更新版本。Desktop 應用程式內含自己的 Claude Code 副本,mod 從 v2.1.286 起即可在其中運作。請在您使用 mod 的地方檢查版本:- 終端機:在您的 shell 中執行
claude --version。如果您的版本較舊,請更新 Claude Code。 - Desktop 應用程式:在 Code 標籤的本機工作階段中,輸入
/status並查看 Claude Code 列,其中會顯示版本,例如2.1.286。如果您的版本較舊,請更新 Desktop 應用程式。
- 一個 mod:從
/plugin中的已安裝標籤停用或解除安裝其外掛程式 - 每個已安裝的 mod,一個工作階段:使用
--safe-mode啟動 Claude Code,這也會停用您的其他自訂 - 您安裝的每個 mod,在每個工作階段中:在
~/.claude/settings.json中設定"disableAllHooks": true。您的設定 hook 和自訂狀態列也會停止。您的組織管理的內容會繼續執行。
disableAllHooks 和您組織的 allowManagedModsOnly 會停止 mod,並保留其外掛的其餘部分:外掛會維持安裝狀態,其 skill、命令、agent 和 MCP 伺服器都會載入。其他設定和旗標的影響範圍更廣。disableAllHooks 和在 allowManagedHooksOnly 下執行的內容列出了每一項對外掛及其設定 hook 的影響。
若要了解 mods 是否可以為您載入,請參閱檢查 mods 是否可以載入。
如果您在早期存取期間設定了
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS,請移除它。Claude Code v2.1.287 及更新版本會忽略它,因此將其設定為 0 不會保持 mods 關閉。查看工作階段載入了哪些 mods
若要查看終端機工作階段載入了哪些 mods,請在 Claude Code 提示處執行/plugin。標籤下的暗行提供計數和名稱,例如 1 mod active · first-mod。如果您安裝的 mod 未在那裡命名,請參閱找出為什麼 mod 不執行任何操作。
Mod 的運作方式
Mod 是一個外掛程式,其程式碼註冊事件處理程式,稱為 hook。Claude Code 在其事件發生時執行 hook,例如當 Claude 呼叫工具或繪製微調器時。一個小 mod 有三個檔案:register.js。它計算 Claude 進行的工具呼叫,並在 Claude 工作時在微調器旁邊顯示計數,如 Thinking · tool calls: 3…。
hooks/register.js
calls 變數:
tool.callhook 在 Claude 即將使用工具時執行。它將calls加一,要求 Claude Code 再次繪製介面,並讓工具照常執行。ui.renderhook 在 Claude Code 繪製微調器時執行。它保留 Claude Code 自己的微調器,並在單詞後面新增計數。
Thinking · tool calls: 1…,然後 2…,然後 3…。
Hook 可以對事件做什麼
Claude Code 在對事件採取行動之前執行您的 hook,因此 hook 決定接下來會發生什麼。它可以:- 觀察:注意正在發生的事情並讓它繼續不變,如範例中的
tool.callhook 所做的 - 重寫:在事件繼續之前變更事件,如
ui.renderhook 在將計數新增到微調器時所做的 - 回答:自己處理事件,因此通常的行為不會執行,例如拒絕命令
Mods 執行的位置
Mod 的 hook 在載入外掛程式的每種工作階段中執行,無論由哪個供應商提供模型,包括 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry。繪製的範圍較窄:mod 繪製的內容會出現在終端機、Desktop 應用程式和 VS Code 擴充功能中。此表列出您可能執行 Claude Code 的每個位置:
會繪製內容的 mod 可以檢查它在哪個應用程式中執行,並在無法繪製的地方改為在逐字稿中顯示一行文字或使用命令的文字回覆。
為您的組織控制 mods
管理員透過受管設定決定 mods 是否執行以及哪些執行。為您的組織管理 mods涵蓋預設情況、如何檢查 mod 以及如何使用您自己的 mod 強制執行原則。比較 mods、設定 hook、skills 和 MCP 伺服器
Mods、設定 hook、skills 和 MCP 伺服器的功能有所重疊。此表顯示每一個是什麼以及何時選擇它。
其他每一個都有自己的頁面:Hooks、Skills 和 MCP。外掛程式可以包含上述所有項目,因此 mod 可以與 skill 和 MCP 伺服器一起在同一個外掛程式中發布。
內建於 Claude Code 的 Mods
Claude Code 的某些功能是 mods。若要查看您的工作階段擁有的功能,請在 Claude Code 提示處執行/plugin 並前往已安裝標籤,該標籤在內建下列出它們。您無法更新或解除安裝內建 mod,表格的最後一欄說明如何關閉每一個。mods active 行排除內建 mods。
此表按 /plugin 顯示的名稱列出每個項目:
停止已安裝 mods 的設定和旗標,例如
disableAllHooks、--bare 和 --safe-mode,不會停止內建 mods。
讀取內建 mods 的來源
這些 mods 中部分 mod 的來源在 Claude Code 儲存庫的mods 目錄中是公開的。每一個都是一個完整的外掛程式,具有其 hooks 模組和測試:
diff:/diff窗格,具有綁定到鍵盤動作的按鈕和 mod 自己處理的捲動agents-md:將AGENTS.md載入為專案指令,具有userConfig選項sec-default:了解預設情況下會發生什麼中描述的保護,強制執行原則的 mod 的模型telemetry:新增其他 mods 可以呼叫的方法,並發送其類型
後續步驟
- 建立 mod:建立一個計算工具呼叫、在微調器旁邊顯示計數並新增命令的 mod,並了解編輯和重新載入迴圈
- 在介面中繪製:窗格、提示詞上方的帶狀區域、按鈕、文字欄位和狀態
- 對事件做出反應:工具呼叫、提示詞、回合以及 mods 執行的順序
- 使用 mods API:命令、工具、模型呼叫、計時器和檔案
- 測試 mod:在沒有工作階段的情況下執行的自動化測試
- 對 mod 進行故障排除:mod 不執行任何操作的原因以及偵錯日誌
- 為您的組織管理 mods:預設值、受管設定、檢查 mod 和原則 mods
- Mods 參考:事件、方法、元素和限制