AIDive

實測 10 個爆紅 Claude Code mods:只留 3 個

AIDive · 發布

編碼 agentAI 資安

開場:十個 mods,三個留下

Claude Code mods 是放在 plugin 裡的 TypeScript 函式,可以重繪 Claude Code 的介面,或改寫它的行為。十月初推出後不到一天,三支不同的影片導覽都叫開發者安裝其中十個。其中兩位創作者還在鏡頭前承認,有些 mods 根本省不了什麼,而沒有人真的量過任何一個。這次實測就來量:十個爆紅的 mods 全部在真實的一週工作中跑過,每一個都有負擔、節省量的數字,以及留下或刪除的判決。先講結果:十個裡只有三個值得放進一位實際工作的開發者的機器,而且其中一個還會在每一次回答時默默花掉 tokens。

這波熱潮,以及我們測了什麼

Anthropic 自己的定義一句話就講完:mod 是一個掛在事件上的函式,可以在事件之前、之後或取而代之執行。事件可以是一次工具呼叫、一個送出的 prompt,或是介面正在繪製的某個部分。Mods 就是純 TypeScript,包在 plugin 裡,安裝方式和其他 plugin 一樣。

發表當天的推文在大約一天內突破四百萬次觀看,有兩萬個讚,而收藏數比回覆加轉發的總和還多。上線兩天後,一個社群目錄就已經掃描了數百個儲存庫中超過一千個公開的 mods。

這次測試的基準是真實的一週工作:橫跨四個專案的 85 個 session、近 900 個 prompts,以及不到 6,000 次工具呼叫。每個 mod 都先通過驗證器的稽核,稽核會列出它掛在哪些事件上、能碰到什麼;接著每個 mod 都在同一台機器、最新版本上,與乾淨的基準線跑同一個任務。

整體分布是:十個裡有六個在執行時沒有任何可量測的成本,三個要花上實際的時間或 tokens,還有一個違背了它唯一的承諾。

實測裝飾層

安靜的六個都落在連線雜訊的範圍內。目標計量器、儲存庫熱度圖、飛行記錄器、模型路由器、session 書籤和自動交接,在大約四秒的基準任務上,差距介於省下四分之一秒到多出五分之一秒之間。

Mod 執行時差異 備註
目標計量器 在雜訊範圍內 裝飾面板
儲存庫熱度圖 在雜訊範圍內 檔案被讀取時就會亮起
飛行記錄器 在雜訊範圍內 這一回合的即時時間軸
模型路由器 在雜訊範圍內 對 subagent 有回報,見判決
Session 書籤 在雜訊範圍內 能力範圍很廣
自動交接 閒置時約 70 ms 在 context 達到門檻時寫入一份交接

它們看起來很漂亮,也沒有任何東西壞掉:每一種設定的每一次執行都正確完成了任務。無頭執行時它們不花任何成本,因為沒有東西可畫;在終端機裡,這些面板每秒最多重繪三十次,所以裝飾層真正的代價是注意力,而不是 tokens。

驗證器的稽核就是不好笑的地方。書籤 mod 可以呼叫模型、在你的機器上啟動程序、寫入檔案,還會從環境變數讀取你的設定路徑。這些都沒有被隱藏,也沒有惡意,但對一個書籤來說,權限實在太大。有四個 mods 在這裡出局:目標計量器、熱度圖和飛行記錄器是裝飾,實測沒有任何好處;書籤 mod 則是要的比它賺的多。

主打功能每回合都在計費

建議引擎是每支影片最先示範的 mod:你的回答結束,三個 prompt 建議出現在輸入框上方,你按下一個數字,草稿就自動填好。它的機制由作者自己寫在文件裡:回合結束時,它會分岔這個 session,向模型要那些建議,而這個分岔共用 session 的 prompt cache,所以成本大約是一則簡短的回覆。導覽影片從來沒提過那一行。

在基準測試上量到的是,每個符合條件的回答多約 250 個輸出 tokens,並多出近三秒的實際等待時間,而符合條件的回答幾乎就是每一個回答:只要超過大約八十個字元。這個分岔也沒有任何介面的判斷。建議只會在終端機裡繪製,但分岔在所有地方都會觸發,包括什麼都畫不出來的無頭執行。

Mod 實測成本 何時觸發
建議引擎 每個符合條件的回答約 250 個輸出 tokens + 約 2.9 秒 每個超過約 80 個字元的回答,包括無頭執行
快取維持器 每回合約 1.5 秒,外加暖機模式的模型呼叫 每一回合,暖機長達數小時

快取維持器的形狀一樣:每回合大約一秒半,暖機模式還會連續好幾個小時花掉小額的模型呼叫,只為了不讓你的 prompt cache 變冷。在訂閱方案上,cache 的時間窗本來就是一小時,所以你是在花 ping 的錢去解決方案已經大致解決的問題。兩者都是誠實的設計,成本也都寫在文件裡,但它們都是每一回合的稅,安裝清單上從來沒標價,而兩者都要從機器上移除。

Mod 與 hook,同一份工作

Claude Code 早就有 hooks:設定檔裡的一個 shell 腳本,在同樣的事件上觸發。文件用表格的一列就回答了該怎麼選:mod 用於介面和改寫事件;hook 用於用你已經有的腳本來封鎖、放行或記錄。

可量測的差別在於程序的啟動。設定檔裡的 hook 每一次工具呼叫都會啟動一個全新的程序。在這台機器上計時,什麼都不做的 shell hook 約 8 ms,啟動 Node 的 hook 約 43 ms,每一次呼叫都是如此,而且在腳本開始做任何事之前就先付掉了。以測試那一週的 5,993 次工具呼叫來算,光是直譯器啟動就超過四分鐘。Mod 一毫秒也不用付:它的處理函式在引擎自己的程序內執行,引擎的日誌顯示這一跳大約一毫秒就完成。

處理函式 每次呼叫的成本 一週 5,993 次呼叫
Shell hook(空操作) ~8 ms ~48 秒
Node hook(空操作) ~43 ms ~4.3 分鐘
Mod(程序內) ~1 ms ~6 秒

外面唯一一份真正的遷移報告也說了同樣的事:二十七個 shell hooks 合併成五個 mods,每次呼叫的程序啟動也跟著消失。留下來的規則是:介面或改寫事件,用 mod;用你信任的腳本來封鎖、放行或記錄,用 hook,而程序啟動的成本只有在上千次呼叫時才有意義;一直重複的知識,用 skill。你讀過的 hook,勝過你沒讀過的 mod。

什麼都沒做的守衛

最簡單的安全 mod,就是監看每一個 shell 指令的守衛,而這一個被刻意寫成會當掉。我們請 Claude Code 建立一個標記檔案;守衛丟出了例外;指令還是照樣執行,檔案也出現了。這不是 bug,而是文件寫明的預設行為:當 hook 丟出例外、逾時或回傳了錯誤的格式,Claude Code 會跳過它繼續往下走。壞掉的裝飾不該讓 session 當機,但壞掉的守衛會在無聲無息中放行失敗,只在沒人會看的除錯日誌裡留下一行。

修正方式是一個回傳拒絕的 catch 處理函式。同一個會當掉的守衛加上 catch 後,就會拒絕這個指令並指出失敗原因。一行程式碼決定守衛是放行失敗還是擋下失敗,文件裡就附有這個確切的寫法,但幾乎沒人安裝。

一個社群團隊在最新版本上重跑了這些案例,並且以標記檔案而不是模型說了什麼來判斷。Catch 的寫法三次裡有三次都擋下失敗,但有一條路徑仍然無聲地壞掉:在呼叫已經轉發出去之後才回傳的拒絕,並不會阻止工具。檔案三次裡有三次都寫進去了,而模型卻被告知寫入失敗。

點出這個問題的實地報告中,有一個守衛運作了好幾天,它是啟用的、載入的,卻什麼也沒做,因為一個過期的旗標在底下把它關掉了:三個綠色的狀態標籤,底下卻是一個卡在零的計數器。這種沉默,看起來和健康一模一樣。

碰撞守門員贏得了第一個留下。它解決的是真實的問題,也就是兩個開著的聊天同時編輯同一個檔案,而且它的失敗方式很響亮:它會跳出對話框詢問,絕不會默默放行。它在編輯時大約花半秒,也不會往 prompt 裡加任何東西。裝上它,並且還是替它加上 catch 處理函式。

你貼上去的那一刻交出了什麼

Anthropic 在發表當天就講得很直白:mods 擁有和 Claude Code 本身相同的機器存取權限。它們沒有沙箱;安裝它們的方式,就像安裝你電腦上的任何程式碼。具體來說,mod 可以以你的身分在你的機器上行動:讀取你的環境變數和設定,API 金鑰就放在那裡;看到每一個 prompt 和每一次工具呼叫;改寫它們;在你被詢問之前就先核准一次工具呼叫;還能把你方案的用量花在它自己的模型呼叫上。

有兩個陷阱連小心的使用者也會踩到。權限規則管的是 Claude 的工具呼叫,不是 mod 自己的呼叫:你拒絕 Claude 讀取 env 檔案,mod 仍然可以用它自己的檔案存取直接讀那個檔案,或是啟動一個程式去讀。網路政策也有同樣的缺口:關掉網頁流量後,mod 自己的 fetch 呼叫會被拒絕,但 mod 啟動的子程序卻能以完整的權限連上網路。有一個內建的守衛 mod 會在所有東西之前載入,但只限受管理的機器,以及 Team 或 Enterprise 席位;個人訂閱的單人席位什麼也拿不到。

這些都不是紙上談兵。有位使用者在發表後幾天就公開了一個概念驗證:一個 mod,它的按鈕會啟動一個程式並寫入家目錄,從目錄安裝時沒有任何警告,而他的論點站得住腳:這個目錄看起來像應用程式商店,讓人以為有經過審核,但其實沒有。另外有一個 hook 的 bug 讓 subagent 的隔離失效了一天;維護者稱它是個大失誤,並在下一個版本修好。

目錄自己對一千多個公開 mods 的掃描結果是:超過四百個會啟動主機程序,將近四百個會讀取檔案,超過三百個看得到每一次工具呼叫。目錄自己的但書才是正確的看法:這是足跡,不是判決;PR 追蹤器本來就得執行 git。這套紀律只要兩分鐘:啟用任何東西之前先跑驗證器,並且知道退路:安全模式可以管一個 session,一個設定可以永久停掉所有已安裝的 hook。

留三個,刪七個

十個裡有三個值得留下:碰撞守門員、模型路由器和自動交接。

Mod 判決 背後的數字
碰撞守門員 留下 編輯時 ~0.5 秒,失敗時很響亮,不會往 prompt 加任何東西
模型路由器 留下 subagent 以便宜的模型計費,只要三分之一的價格
自動交接 留下 70 ms 的空轉,在 context 門檻時寫入一次交接
建議引擎 刪除 每個符合條件的回答 ~250 個輸出 tokens + ~2.9 秒
快取維持器 刪除 每回合 ~1.5 秒,對著 1 小時的 cache 時間窗做暖機 ping
錄製模式 刪除 遮住了螢幕,卻沒遮住磁碟
目標計量器 刪除 裝飾,實測沒有任何好處
儲存庫熱度圖 刪除 裝飾,實測沒有任何好處
飛行記錄器 刪除 裝飾,實測沒有任何好處
Session 書籤 刪除 權限範圍遠超出它的工作

模型路由器有收據可以證明:一個在大模型上的 session 產生了一個 subagent,而這次執行自己的用量讀數顯示,subagent 是以便宜的模型計費,同樣的小工作只要三分之一的價格。在 subagent 用得很重的幾週,這就是實實在在的錢。自動交接在它回本之前一毛錢也不花:閒置時的負擔是七十毫秒,而在超過 context 門檻後,它會為冷啟動寫入一份交接,只寫一次。這波熱潮的其中一位創作者承認,手動的交接按鈕其實省不了多少時間;改成自動的門檻寫入,它才真的有用。

經得起這次測試的紀律是:啟用任何東西之前先讀驗證器的稽核,讓每個守衛都有 catch 處理函式,使它擋下失敗,並且在安全模式下錄製示範,而不是相信一個遮罩的 mod。限制是真實存在的:一週、一台機器、一種工作量、小模型上每個數據點跑三次。你的三個可能不同,但現在你知道怎麼找出它們了。

來源

常見問題

什麼是 Claude Code mods?
Mods 是放在 Claude Code plugin 裡的 TypeScript 函式,可以掛在事件上,例如一次工具呼叫、一個送出的 prompt、介面正在繪製的某個部分,並且能在事件之前、之後或取而代之執行。它們可以重繪介面,或改寫 Claude Code 的行為。
哪些 Claude Code mods 真的值得安裝?
在實測的一週真實工作中,十個爆紅的 mods 裡有三個值得留下:碰撞守門員(阻止兩個聊天編輯同一個檔案,失敗時很響亮)、模型路由器(subagent 以三分之一的價格計費)和自動交接(閒置成本 70 ms,只會自動寫入一次交接)。
Claude Code mods 會花 tokens 嗎?
大多數不會,但建議引擎會在每個符合條件的回答後分岔 session,每回合約花 250 個輸出 tokens 和近三秒的實際等待時間,而快取維持器的暖機模式會連續好幾個小時花掉小額的模型呼叫。
安裝 Claude Code mods 安全嗎?
Mods 擁有和 Claude Code 本身相同的機器存取權限,而且沒有沙箱。權限規則管的是 Claude 的工具呼叫,不是 mod 自己的呼叫,所以 mod 可以讀取檔案或啟動程序,即使你的規則不讓 Claude 這麼做。啟用任何東西之前,先跑驗證器的稽核。
Claude Code 的 mod 和 hook 有什麼差別?
兩者在同樣的事件上觸發。Hook 是 shell 腳本,每次工具呼叫都要付一次全新的程序啟動成本(shell 約 8 ms,Node 約 43 ms),而 mod 的處理函式在引擎的程序內執行,約一毫秒就完成。介面或改寫事件用 mod;用你信任的腳本封鎖、放行或記錄用 hook。
Claude Code 的守衛 mod 當掉會怎樣?
預設是放行失敗:Claude Code 會跳過壞掉的處理函式,指令照樣執行,只在除錯日誌裡留下一行。加上一個回傳拒絕的 catch 處理函式,就能讓守衛擋下失敗,文件裡就附有這個確切的寫法。

相關影片