用 Claude Code Mods 打造你的專屬小幫手

先從大同電鍋說起

家裡的大同電鍋,煮好飯會「啪」一聲跳起來。你不用一直盯著它,聽到聲音再去盛飯就好。

用 Claude Code 寫程式時,常常也是這種情境:丟一個大任務給 Claude,它要跑個一兩分鐘。你轉頭去回 LINE、倒杯咖啡,結果忘了回來看,它早就做完在等你了。

如果 Claude Code 也能像電鍋一樣「啪」一聲提醒你,是不是很棒?這篇文章就用 Claude Code 新推出的 mods(模組) 功能,親手幫它裝上這個「電鍋跳起來」提醒。

Mods 是什麼?把它想成「手機殼」

Mod 就是一個小小的 JavaScript 或 TypeScript 檔案,會在你的 Claude Code 工作階段裡執行。就像給手機套個殼、貼個指環支架:手機還是那支手機,但用起來更順手。

它能做的事情主要有三種:

動作生活比喻實際用途
觀察(Observe)管理員看監視器,只看不動手記錄每次檔案修改、每回合結束後讀數據
改寫(Rewrite)秘書幫你潤飾信件再寄出在指令傳下去之前先加工一下
直接回答(Answer)門口警衛說「這個不能進」擋下危險指令,或自己提供一個斜線指令

它的運作方式像工廠的輸送帶:事件(例如「Claude 要執行一個指令」、「一個回合結束了」)會依序經過你的 mod、其他外掛,最後才到 Claude Code 本身。你可以在自己那一站看一眼、改一下,或直接把件抓下來。

Mod 還能畫自己的介面,例如提示列上方的一條資訊帶、右側的面板、或一個彈出的小通知(toast)。需要 Claude Code 2.1.287 以上版本,預設就是開啟的。

動手做:「電鍋跳起來」提醒 mod

目標很簡單:Claude 做一件事超過 30 秒,做完時就彈出一個小通知。太短的任務不吵你,就像煩泡麵不需要開鐘一樣。

懶人做法:用說的就好

你不必先學 API。開啟 claude,貼上這段話:

幫我做一個 Claude Code mod,叫做 rice-cooker。
當主要回合花超過 30 秒才完成時,用 toast 彈出提醒:
「♨ 飯煮好了!Claude 忙了 N 秒」。
子代理(subagent)的回合不要提醒。

Claude 會問你是否開啟「熱重載(hot reload)」,按允許。這回合結束後 mod 就生效了。之後想改成 60 秒、想換文字,繼續用說的就好。

自己動手:看懂背後怎麼運作

想知道 Claude 幫你寫了什麼,或想自己寫,只要四步。

  1. 建立資料夾。一個 mod 就是一個普通的外掛(plugin)資料夾:
rice-cooker/
├── .claude-plugin/
│   └── plugin.json
└── hooks/
    ├── hooks.json
    └── rice-cooker.mjs

plugin.json 是外掛的身分證:

{
  "name": "rice-cooker",
  "version": "0.1.0",
  "description": "長任務完成時,像電鍋一樣提醒你。"
}

hooks.json 告訴 Claude Code 要載入哪個程式檔:

{ "modules": ["./rice-cooker.mjs"] }
  1. 寫主程式。只要監聽「回合結束」這個事件,看花了多久,時間夠長就「啪」一聲:
// hooks/rice-cooker.mjs
const LONG_MS = 30_000; // 超過 30 秒才提醒

export function register(on) {
  on("turn.complete", async ($, e, next) => {
    const result = await next(e);        // 先讓 Claude Code 照常收尾
    if (e.agentId) return result;        // 子代理的回合不理它
    if ((e.durationMs ?? 0) >= LONG_MS) {
      const sec = Math.round(e.durationMs / 1000);
      await $.ui.toast({ text: `♨ 飯煮好了!Claude 忙了 ${sec} 秒` });
    }
    return result;
  });
}

這就是前面說的「觀察」:先呼叫 next(e) 讓事情照常發生,再回頭看一眼結果,完全不干擾 Claude 做事。

  1. 載入測試。用這個外掛開一個工作階段:
claude --plugin-dir ./rice-cooker

資料夾會被監看,每次存檔就自動重載,不用重開。叫 Claude 跑個大一點的任務,例如「幫我整理整個專案的 README」,等它做完就會看到提醒。

  1. 檢查一下。claude plugin validate 會讀你的程式,列出它掛了哪些事件、呼叫了哪些 API:
claude plugin validate ./rice-cooker

小提醒:$.ui.toast 的參數格式可能隨版本調整。Claude Code 每次載入 mod,都會把你這個版本的型別宣告寫進 .claude-plugin/types/,以那裡的定義為準。

進階玩法與四個好習慣

電鍋提醒只是開胃菜。照著同樣的套路,你還可以做這些:

  • 油表「剩多少油」:用 $.session.usage() 讀出上下文用了多少,在提示列上方畫一條油表。官方範例 Token Weather 就是用「晴、陰、雨、暴風雨」來表示。
  • 牆上的「小心地滑」:用 tool.call 攔截 rm -rf、git reset --hard 這類危險指令,先問你一句再執行。
  • 團隊家規:用 prompt.submit 在每次提問自動附上團隊的程式風格規範。
  • 自訂斜線指令:用 $.command.register 加一個 /午餐 之類的小指令。

寫 mod 時,有四個習慣會讓你少踩坑:

  1. 資料放 $.state,不放一般變數。熱重載會重跑一次程式,普通變數會歸零,就像白板被擦掉。
  2. 元件屬性在 e.props 裡,例如可用寬度 bodyColumns。
  3. 以自動產生的型別為準,放在 .claude-plugin/types/,編輯器也能直接提示。
  4. 畫不出來就看 log:用 claude --debug 開啟,找錯誤訊息。

做好了想分享? mod 就是外掛,放到 GitHub 加上 marketplace 檔案,別人用三行指令就能安裝:

/plugin marketplace add your-name/my-mods
/plugin install rice-cooker@my-mods
/reload-plugins

反過來安裝別人的 mod 時要小心:mod 跟 Claude Code 有一樣的權限,安裝前先看過程式碼,只裝信任的來源。

結語:你想幫 Claude Code 加什麼?

官方的三個範例,各自來自一個問題:「我的上下文還剩多少?」「這個指令會刪掉什麼?」「Claude 剛剛改了哪裡?」我們的電鍋提醒也一樣,只是「做完了叫我一聲」。

下次用 Claude Code 覺得「要是能…就好了」,就是你的下一個 mod 題目。直接用中文跟 Claude 說,讓它幫你做出來。

參考資料:Getting started with Claude Code mods(claude.dev Blog,Addy Osmani,2026 年 10 月 1 日)

AI Coding 不只是幫你寫程式!Claude Code 與 Codex CLI 最新更新解析:Agent 更聰明、執行更安全,附 .NET 實戰範例

過去我們使用 AI 寫程式,最常做的事情大概就是問它:「這段 C# 能不能幫我重構一下?」

現在的 AI Coding 工具,已經開始負責閱讀整個專案、修改多個檔案、執行測試、操作 Git,甚至與其他 Agent 合作完成一個開發任務。

但企業真正需要的,並不是一個寫程式速度很快的 AI,而是一個能被控制、能夠追蹤、發生錯誤可以恢復,而且不會隨便把程式碼弄丟的 AI 開發助手。

2026 年 10 月 15 日(UTC),Anthropic 與 OpenAI 分別推出:

  • Claude Code v2.1.301
  • Codex CLI v0.163.0

這兩次更新有一個非常值得關注的共同方向:AI Coding 工具正逐漸從「互動式程式碼助手」,進化成「具有流程控制與安全機制的自主開發代理人」。

以下用實際開發情境,說明這次到底更新了什麼,以及 .NET 工程師該如何應用。


一、Claude Code v2.1.301:開始把「執行可靠性」當成重點

這次 Claude Code 沒有推出什麼令人眼花撩亂的新介面,但其中幾項功能,對長時間執行的 Agent 開發流程相當重要。

1. Git Worktree 保護:避免 AI 把未推送的程式碼清掉

如果使用 AI 同時處理多個 Issue,Git Worktree 是非常實用的技術。

例如同一個 ASP.NET Core 專案,需要同時處理:

  • Issue #101:新增訂單查詢 API
  • Issue #102:修復庫存計算錯誤
  • Issue #103:重構 JWT 驗證

我們不希望三個 Agent 同時修改相同的工作目錄,因此可以利用 Git Worktree 建立彼此隔離的開發環境。

這次 Claude Code 修正了一個重要問題:透過 WorktreeCreate Hook 建立的 Worktree,在結束工作階段時,如果存在未推送的 Commit,先前可能會被直接移除,而沒有經過適當確認。

新版本修正了這個情況。

要注意,這項修正特別針對 Claude Code Hook 所建立的 Worktree,並不是宣稱所有 Git Worktree 操作都會自動備份。

實作範例:建立獨立工作目錄

在 Git Repository 目錄執行:

git worktree add -b feature/order-api ../OrderApi-feature
cd ../OrderApi-feature
claude

接著在 Claude Code 輸入:

請分析目前 ASP.NET Core 專案,新增訂單查詢 API,要求:

  1. 保留現有架構與 Coding Style。
  2. 使用 Dependency Injection。
  3. 補上必要的 Unit Tests。
  4. 修改完成後執行 dotnet test。
  5. 提供 Git Diff 摘要。
  6. 不要自行 Commit、Push 或刪除 Worktree。

這是一個非常典型的企業開發情境:讓 AI 執行工作,但不把版本控制的最終決策權完全交出去。

2. Workflow Agent 修正:避免「事情沒做完卻回報完成」

以前使用多代理人時,有時最麻煩的不是執行失敗,而是 Agent 明明沒有完成指定步驟,卻回報整個任務成功。

Claude Code v2.1.301 修正了一種 Workflow Agent 可能跳過步驟、但執行結果仍被視為成功的狀況。

這對企業自動化尤其重要。

例如,我們安排以下工作:

需求分析 → 程式開發 → 單元測試 → 安全檢查 → 產出報告

如果測試 Agent 跳過測試,卻讓整個流程呈現成功,後續 CI/CD 就可能將未驗證的程式碼交付出去。

這次修正降低了特定情境下發生誤報成功的風險。不過企業仍應自行建立驗收關卡,例如測試 Exit Code、測試報告存在性、Code Review 與必要的人工作業核准。

3. OpenTelemetry 加強:開始追蹤 Agent 為什麼執行工具

這是我認為此次非常值得企業關注的功能。

Claude Code 在 OpenTelemetry tool_decision 事件中,新增了:

欄位作用
classifier_verdict記錄分類器做出的工具存取判斷
permission_mode記錄當時使用的權限模式
classifier_category在啟用詳細工具記錄時,標示命中的內建規則分類

第三個欄位需要設定 OTEL_LOG_TOOL_DETAILS=1,並搭配既有的 OpenTelemetry 匯出設定。

這讓企業可以進一步分析,Agent 的某次工具操作是如何被許可、限制或阻擋。

例如在 PowerShell 啟動 Claude Code 前:

$env:OTEL_LOG_TOOL_DETAILS = "1"
claude

此設定不會單獨啟用完整的 OpenTelemetry 匯出,仍需先依照官方文件完成 Telemetry 設定。

如果企業有 Azure Monitor、OpenTelemetry Collector 或其他監控平台,可以研究如何將 Agent 工具事件與應用程式 Trace 整合。

未來的 AI Agent 管理平台,除了觀察 Token 消耗、Latency 和 Error Rate,也需要知道:Agent 做了什麼、為什麼被允許執行,以及是否符合權限政策。

4. 無人值守任務:避免無止境等待使用額度恢復

新版新增環境變數:

`CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT