Anthropic 在 10 月 1 日為 Claude Code 加入一套名為 mods 的擴充機制。依照官方部落格的說法,mod 是一小段 TypeScript 函式,掛在 Claude Code 的事件上,可以改寫提示詞、加入介面元素、取代內建功能,或是直接加一個新功能。CLI 和桌面版都支援,需要 Claude Code 2.1.287 或更新的版本。
發行走現有的外掛體系:從 Claude 外掛市集安裝,或是在工作階段中執行 /plugin。想把自己寫的 mod 分享給別人用,打包成外掛送到市集即可。
mod 能碰到哪些環節
Claude Code 裡呼叫工具、要求權限、繪製畫面的某一塊,每個動作都會發出事件,mod 可以在事件之前、之後執行,也可以整個取代掉它。官方列出的能力包括:
- 改寫送達模型的提示詞;
- 攔截、改寫或重試工具呼叫;
- 批准或拒絕權限請求;
- 在 Claude 讀到工具輸出之前,刪改其中的部分內容;
- 在介面上加按鈕和輸入框。
開發者部落格的入門教學由 Addy Osmani 執筆,把處理模型的部分講得更細。每個 Hook 是中介軟體鏈上的一環,寫法有三種:先呼叫 next(e) 放行,拿到結果再看,叫觀察;把改過欄位的事件往下傳,叫改寫;不呼叫 next(),直接回傳 {deny: "reason"},叫即答。涵蓋的事件有工具呼叫、送出提示詞、回合的開始與結束、斜線指令和介面繪製。
教學的範例是一個大約 80 行的 mod,名叫 Token Weather。它在輸入框上方畫一條「上下文天氣預報」:依上下文視窗的占用比例切換天氣圖示,顯示目前的 token 數和百分比,附上一條最近 12 回合的迷你折線圖,再標出比上一回合漲了多少。介面部分用的是 AbovePrompt 元件。
從 hooks 到 mods
Claude Code 原本就有 settings hooks,做法是每個事件啟動一次 shell 指令,靠 stdin 和 stdout 傳遞 JSON。這種寫法簡單,代價是每次都要開一個新的行程,記不住上一次發生了什麼事。
mods 在工作階段開始時載入一次,之後就一直常駐。教學裡列出的差異有三點:能保存狀態,能繪製會變化的介面,能呼叫 Claude Code 自己的功能,例如開啟面板、註冊指令。Token Weather 要畫 12 回合的折線圖,就是靠這份常駐狀態,換成 shell hook 的話,得自己把紀錄寫到磁碟上。
把這條線往前串起來看,Claude Code 的可擴充性是一層層疊上去的:先有 CLAUDE.md 和 settings hooks,後來有了 /plugin 外掛市集,前幾天對 AGENTS.md 的支援也是用一個內建外掛實現的。mods 把 Hook 從「外掛一個腳本」變成「在行程裡跑一段程式碼」,可以改動的範圍一下子大了很多。
安全邊界
範圍變大,風險也跟著變大。官方部落格的原話很直接:
Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed, and you should only install mods from sources you trust.
(mod 對你機器的存取權限和 Claude Code 本身一樣。它們不在沙盒裡執行,應該只從你信任的來源安裝 mod。)
教學裡另外有一句描述執行環境:模組跑在自己的隔離環境裡,沒有 DOM,也沒有 Node,所有對外的操作都要透過 $ 這個介面。把兩處說法放在一起看,被隔離的是執行環境,不是權限。一個 mod 只要拿到權限事件,就能代替使用者按下「同意」。
Team 和 Enterprise 方案,以及裝了受管理設定的機器,會先載入一個內建 mod,叫 sec-default,用來擋住使用者自行安裝的 mod 的高風險動作,例如覆寫權限拒絕規則;管理員還可以在企業控制台裡限定能安裝哪些外掛市集。個人帳號預設沒有這層保障。對中國大陸的團隊來說,Claude Code 的帳號和網路門檻本來就高,mods 短期內更像是給已經在用的團隊多一個客製化工具,第三方 mod 生態能長多快,要看市集審核放得多寬。
參考來源:Anthropic Claude 官方部落格、Claude 開發者部落格入門教學、CocoLoop;官方教學核對版本需求、事件類型與範例程式碼行數。