010. 這不是換皮膚|Mods 改的是 Claude Code 的執行流程

Claude 官方這支短片只有 3 分 21 秒,但它比一般功能展示更關鍵。因為它講的不是「Claude Code 又多了一個 UI 小功能」,而是 Claude Code 開始提供一層可以被開發者攔截與改寫的內部事件系統。

來源影片:Mods in Claude Code: change how Claude Code works,Claude 官方頻道,2026 年 10 月 5 日上傳。

影片開場說,Mods 可以直接改變 Claude Code 本身怎麼工作。你可以改它 render 什麼、什麼內容會進 prompt、它會呼叫哪些 tool,甚至可以加上自己的 UI、skills 與 commands。這句話的重點在「直接改變 Claude Code 本身」,不是只替輸出加顏色。

影片展示了幾個直觀例子:有人想看見 context 的即時 breakdown,於是做了一個把 context 狀態渲染在 prompt 上方的 Mod;有人想看見專案裡所有 agents,而不是只看正在跑的那一個,於是做了一個側邊面板,可以單擊啟動 agent;講者錄影時不想讓 email 出現在畫面上,就做了一個 hover 才顯示 email 的 Mod。

這三個例子剛好涵蓋 Mods 的三種能力:顯示狀態、增加操作介面、改變畫面輸出。

圖 01:Claude Code Mod 的運作方式

021. Mod 本質上是 plugin|差別在 hook.json 多了 modules

影片接著拆開 Mod 的技術形狀。它說 Mod 本質上就是 plugin:同樣有 plugin.json,同樣有 hook.json。差別是 hook.json 多了一個 key:modules。

這個 modules 會指向一個 TypeScript 檔案,而那個檔案就是實際的 Mod。也就是說,Claude Code Mods 不是完全獨立的新封裝格式,而是把既有 plugin 系統往「可執行內部擴充」推進一步。

這個設計有兩個含義。

第一,Mods 可以沿用 plugin 的分享與安裝邏輯。影片最後也說,Mod 可以作為 plugin 分享,放進 marketplace repo,讓其他人像安裝一般 plugin 一樣安裝。

第二,Mod 的能力邊界比一般靜態設定大得多。因為它不是只宣告 metadata,而是執行 TypeScript function。這些 function 會在 Claude Code 內部事件觸發時被呼叫。

對開發者來說,這比較像在 Claude Code 裡寫一層 middleware,而不是單純寫一份設定檔。

032. 事件系統|tool call、permission check、message、prompt emit

影片提到 Claude Code 有幾十種內部事件,例如 tool call、permission check、running a message、emitting a prompt。你可以把 function 註冊到其中一個事件上,當事件發生時,function 就會在 Claude Code 執行原本行為之前先跑。

這個「之前」很重要。因為它代表 Mod 不只是事後看 log,而是可以在事情真正發生前檢查、修改或接手。

以 tool call 來說,Mod 可以在工具呼叫前檢查參數、改寫命令、記錄行為,甚至阻止某些操作。以 permission check 來說,Mod 可以加入自己的安全規則,讓某些高風險行為需要額外確認。以 prompt emit 來說,Mod 可能在提示詞送出前補 context、刪掉不該送出的資訊,或加上團隊規範。

這就是為什麼影片把它類比成 Express middleware。你不是在 Claude Code 外面包一個殼,而是在 Claude Code 內部流程的節點上放入一段可執行邏輯。

043. 三個參數|$、event、next

每個 Mod function 都會拿到三個值:$、event、next。

$ 是你和 Claude Code 溝通的物件。影片說,render UI、calling the model、reading the files 等能力都在這裡。換句話說,它是 Mod 的能力入口;你不能隨便在環境裡亂碰所有東西,而是透過這個物件與 Claude Code 互動。

event 是當下發生事情的資料。假設現在是 render event,event 裡可能會有即將顯示到畫面上的文字;假設是 tool call event,event 裡可能會有工具名稱與參數。Mod 可以讀它,也可以在 function body 裡修改它。

next 則是 middleware 的核心。你把資料傳給 next,Claude Code 就會拿你傳回去的版本繼續執行。如果你改了 command,Claude Code 實際執行的就是改過後的 command。如果你不呼叫 next,而是自己 return 結果,那就等於你接手了這個事件,Claude Code 會採用你的結果,而不是跑原本流程。

這三個參數合在一起,就是 Mods 的核心能力模型:$ 讓你和 Claude Code 溝通,event 告訴你現在發生什麼,next 決定 Claude Code 最後要怎麼做。

054. 載入與熱重載|terminal 用 flag,desktop 寫 global settings

影片也交代了怎麼載入 Mod。終端機版本可以用 plugin dir flag 指向那個資料夾;桌面 app 不能帶 flag,所以要把資料夾加到 global settings file 裡。

更方便的是,資料夾會被 watch。當你儲存檔案時,目前 session 會直接 pick up change。這代表開發 Mod 時可以快速調整、馬上看到結果,不需要每次都重新啟動整套環境。

這點對 Mod 生態很重要。若每次改一行都要重新安裝、重新開 session,大家只會做很簡單的東西;有 hot reload,才可能真的把 Claude Code 當作可實驗的工作台。

065. Email 遮罩範例|只改畫面,不改模型知道的內容

影片後半段用 email 遮罩當作具體範例。需求是:當 Claude 回覆裡出現 email address 時,畫面上先隱藏,只有 hover 時才顯示。

實作邏輯是註冊 render event,因為 render event 發生在 Claude Code 把文字顯示到畫面上之前。Mod 會拿到即將顯示的文字,找出 email address,透過 $ 物件建立一個 hover 才顯示完整文字的小區塊。接著它不呼叫 next,而是直接 return 自己產生的版本,讓 Claude Code 渲染這個修改後的畫面。

影片特別強調一個關鍵細節:這只改變螢幕上看到的內容,不改變模型本身拿到的資料。當講者請 Claude 寫信時,Claude 仍然能使用真實 email address,因為 render 層只是顯示層,模型沒有看到被遮罩後的版本。

圖 02:Email 遮罩範例

這個範例很適合理解 Mods,但也要小心不要誤讀。UI mask 不等於資料刪除,也不等於完整隱私保護。它適合錄影、demo、分享畫面、避免截圖中露出敏感資訊;但如果資料本身不應該進入模型上下文,那就不能只靠 render 階段遮罩,而要在 prompt、context 或資料載入階段就處理。

換句話說,這個 Mod 的價值是「畫面安全」,不是「資料安全」。兩者很接近,但不是同一件事。

076. 魚塘觀點|AI 編輯器開始有自己的插件執行層

這支官方短片真正值得注意的,是 Claude Code 不再只是一個接收 prompt、呼叫 tool、改檔案的 agent shell。它開始暴露內部事件,讓使用者或開發者可以在流程中插入自己的邏輯。

這對 AI coding tools 的演化很關鍵。過去我們談擴充性,多半想到 IDE extension:新增一個 sidebar、補一個 command、支援一種語言。但 Claude Code Mods 更接近「agent runtime extension」。它可以碰到 prompt、tool call、permission、render 這些 AI 工作流特有的節點。

這也會帶來新的責任。Mod 可以讓工作流更透明、更順手、更安全;但如果寫壞,也可能改錯 prompt、放過危險指令、誤導使用者對狀態的理解,或在不該呼叫模型的地方增加成本。

因此,好的 Mod 不只是「能跑」。它應該清楚標示自己介入哪個事件、會不會改 prompt、會不會改 tool call、會不會呼叫模型、會不會讀檔,以及使用者如何關閉它。

如果把前一篇九個 Mods 清單看成「有哪些現成玩法」,這支官方短片就是「為什麼這些玩法能成立」。答案不是 Claude Code 多了一排裝飾,而是它多了一層可被開發者塑形的 middleware。