> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Mods 概述

> 使用 mod 為 Claude Code 新增窗格、命令和工具呼叫規則。了解 mod 的功能、如何建立或安裝 mod，以及 mod 的執行位置。

Mod 是一個[外掛程式](/docs/zh-TW/plugins/overview)，可改變 Claude Code 的外觀和行為。它由 JavaScript 或 TypeScript 事件處理程式組成：Claude Code 在事件發生時呼叫一個，例如工具呼叫、已提交的提示或介面的一部分被繪製，處理程式可以監視事件、變更事件或接管事件。使用 mod 為 Claude Code 新增您自己的功能，例如在每個請求後繪製您的內容有多滿的窗格。如需 mod 中的檔案和完整範例，請參閱[Mod 的運作方式](#how-a-mod-works)。

<Note>
  Claude Code 現有的 [hooks](/docs/zh-TW/hooks) 也在事件上執行，作為 shell 命令、HTTP 請求或您在設定檔中設定的提示。Mod 的處理程式是在 Claude Code 內執行的函式。Claude Code 呼叫兩種 hooks：在這些頁面上，「hook」表示 mod 的處理程式，而設定檔類型是「設定 hook」。
</Note>

<h2 id="what-a-mod-can-do">
  Mod 可以做什麼
</h2>

設定 hooks、skills、狀態行和 MCP 伺服器從 Claude Code 外部運作：每一個都執行指令碼，或為 Claude 提供文字或工具。Mod 在 Claude Code 內執行，因此它可以做他們無法做的事情：

* **繪製您可以使用的介面**：文字記錄旁邊的窗格或提示上方的帶狀區域，具有標籤、按鈕和文字欄位。請參閱[在介面中繪製](/docs/zh-TW/plugins/mods/interface)。
* **重新繪製 Claude Code 自己的介面**：取代或重新設定 Claude Code 自己繪製的部分，例如工具呼叫的列、微調器或 Claude 提出問題的對話框。請參閱[變更 Claude Code 已繪製的內容](/docs/zh-TW/plugins/mods/interface#change-what-claude-code-already-draws)。
* **進入工具呼叫或請求**：例如，在您詢問使用者問題時保留工具呼叫、在不執行工具的情況下回答，或將一個請求傳送到不同的模型。請參閱[保護或變更工具呼叫](/docs/zh-TW/plugins/mods/events#guard-or-change-a-tool-call)和[跟隨一個回合](/docs/zh-TW/plugins/mods/events#follow-a-turn)。
* **在命令上執行您自己的程式碼**：一個 `/command`，立即執行您的函式，沒有 Claude 回合，即使 Claude 正在工作。請參閱[新增命令或工具](/docs/zh-TW/plugins/mods/api#add-a-command-or-a-tool)。
* **在 hooks 之間共享資料**：mod 的 hooks 共享其檔案中的變數，因此一個 hook 記錄的內容，另一個可以顯示。例如，一個 hook 可以計算工具呼叫，而另一個在微調器旁邊顯示計數，或一個可以讀取每個請求的權杖使用量，而另一個在窗格中繪製它。請參閱[對事件做出反應](/docs/zh-TW/plugins/mods/events)。

Mods 在 Claude Code CLI 和 Claude Desktop 應用程式的 Code 標籤中運作。請參閱[Mods 執行的位置](#where-mods-run)以了解它們在其他地方的行為，例如在 VS Code 擴充功能、`claude -p` 和雲端工作階段中。如果設定 hook、skill 或 MCP 伺服器已經做了您需要的事情，在您編寫 mod 之前[比較它們](#compare-mods-settings-hooks-skills-and-mcp-servers)。若要為組織管理 mods，請參閱[為您的組織管理 mods](/docs/zh-TW/plugins/mods/admin)。

<h2 id="get-a-mod">
  取得 mod
</h2>

您可以透過以下三種方式之一開始使用 mod：

* **使用您已經擁有的**：Claude Code 的某些功能是 mods，例如 `/diff`。請參閱[內建於 Claude Code 的 Mods](#mods-built-into-claude-code)。
* **建立一個**：在 Claude Code 工作階段中描述您想要的內容，Claude 會編寫 mod。請參閱[向 Claude 要求 mod](/docs/zh-TW/plugins/mods/create#ask-claude-for-a-mod)。若要了解 mod 程式碼的運作方式，[自己編寫一個](/docs/zh-TW/plugins/mods/create#write-a-mod-yourself)。
* **安裝一個**：請參閱[安裝或更新 mod](#install-or-update-a-mod)

<h3 id="install-or-update-a-mod">
  安裝或更新 mod
</h3>

<Warning>
  Mod 是使用您的權限執行的程式碼。它可以讀取和寫入您的檔案、啟動程序和發出網路請求。僅從您信任的作者和市場安裝 mods。請參閱[決定是否信任 mod](#decide-whether-to-trust-a-mod)。
</Warning>

Mod 作為外掛程式從市場安裝。提供外掛程式的名稱、`@` 和市場的名稱。這些範例從名為 `your-org` 的市場安裝名為 `token-chart` 的外掛程式：

* 在 Claude Code 工作階段中，執行 `/plugin install token-chart@your-org`。
* 在您的 shell 中，執行 `claude plugin install token-chart@your-org`。

[安裝外掛程式](/docs/zh-TW/plugins/install)涵蓋市場、範圍、VS Code 擴充功能和 Desktop 應用程式，以及[保持外掛程式更新](/docs/zh-TW/plugins/install#keep-plugins-updated)，所有這些都適用於包含 mod 的外掛程式，無需變更。

如果您在工作階段開啟時從 shell 安裝或更新 mod，請在該工作階段中執行 `/reload-plugins` 以載入它。否則，它會在您下次啟動 Claude Code 時載入。

<h2 id="decide-whether-to-trust-a-mod">
  決定是否信任 mod
</h2>

Mod 是使用您的權限在 Claude Code 內執行的程式碼。僅從您信任的作者和[市場](/docs/zh-TW/plugins/security)安裝 mods。

<h3 id="what-a-mod-can-reach">
  Mod 可以存取什麼
</h3>

Mod 使用您的權限執行，因此在您安裝一個之前，請了解它可以存取什麼。載入後，mod 可以：

* **在您的機器上以您的身份行動**：讀取和寫入您的使用者帳戶可以存取的任何地方的檔案、啟動程式和發出網路請求
* **讀取您的機密**：環境變數和設定檔，包括您保留在任一個中的 API 金鑰
* **查看您的工作階段**：您傳送的每個提示和 Claude 進行的每個工具呼叫
* **變更您的工作階段**：重寫提示或工具呼叫、提交提示，就像您輸入的一樣，或傳送訊息到您的另一個工作階段
* **在不詢問您的情況下行動**：在詢問您之前核准工具呼叫
* **花費您的使用量**：在您的計畫或 API 金鑰上呼叫模型

核准工具呼叫的 mod 可以核准 `ask` 規則會提示的呼叫，或您自己的 `PreToolUse` hooks 阻止的呼叫。[使用 hooks 擴展權限](/docs/zh-TW/permissions#extend-permissions-with-hooks)列出此類 mod 可以核准的內容，包括何時可以核准 `deny` 規則拒絕的呼叫。

Mod 可以重新設定 Claude Code 介面的大部分，但不能重新設定權限提示。它無法變更提示顯示給您的內容。

<h3 id="list-what-a-mod-does-before-you-install-one">
  在安裝 mod 之前列出它的功能
</h3>

在您安裝 mod 之前，您可以列出它掛接的事件以及它要求 Claude Code 執行的操作，例如讀取檔案或發出網路請求，而無需執行它。首先取得外掛程式的檔案，例如透過複製其儲存庫。然後，在您的 shell 中，在外掛程式的目錄上執行 `claude plugin validate`：

```bash theme={null}
claude plugin validate ./some-mod
```

輸出中的 `hooks:` 和 `calls:` 行列出 mod 處理的事件以及它要求 Claude Code 執行的操作。[檢查 mod 可以做什麼](/docs/zh-TW/plugins/mods/admin#review-what-a-mod-can-do)顯示輸出以及要查找的呼叫。

<h2 id="turn-mods-on-or-off">
  開啟或關閉 mods
</h2>

Mods 需要 Claude Code v2.1.287 或更新版本，預設情況下它們是開啟的。在您的 shell 中，執行 `claude --version` 以檢查，如果您的版本較舊，請更新 Claude Code。

若要關閉 mods，請選擇要停止多少個，以及停止多長時間。若要將它們重新開啟，請撤銷相同的變更：

* **一個 mod**：從[`/plugin` 中的**已安裝**標籤](/docs/zh-TW/plugins/install#manage-installed-plugins)停用或解除安裝其外掛程式
* **每個已安裝的 mod，一個工作階段**：使用 [`--safe-mode`](/docs/zh-TW/cli-reference#cli-flags) 啟動 Claude Code，這也會排除您的其他自訂
* **您安裝的每個 mod，在每個工作階段中**：在 `~/.claude/settings.json` 中設定 [`"disableAllHooks": true`](/docs/zh-TW/settings-reference#disableallhooks)。您的設定 hooks 和自訂狀態行也會停止。您的組織管理的內容會繼續執行。

如果您透過組織使用 Claude Code，管理員也可以限制哪些 mods 載入。管理員從[停止使用者安裝的 mods 載入](/docs/zh-TW/plugins/mods/admin#stop-user-installed-mods-from-loading)開始。

若要了解 mods 是否可以為您載入，請參閱[檢查 mods 是否可以載入](/docs/zh-TW/plugins/mods/troubleshoot#check-whether-mods-can-load)。

<Note>
  如果您在早期存取期間設定了 `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS`，請移除它。Claude Code v2.1.287 及更新版本會忽略它，因此將其設定為 `0` 不會保持 mods 關閉。
</Note>

<h3 id="see-which-mods-a-session-loaded">
  查看工作階段載入了哪些 mods
</h3>

若要查看終端機工作階段載入了哪些 mods，請在 Claude Code 提示處執行 `/plugin`。標籤下的暗行提供計數和名稱，例如 `1 mod active · first-mod`。如果您安裝的 mod 未在那裡命名，請參閱[找出為什麼 mod 不執行任何操作](/docs/zh-TW/plugins/mods/troubleshoot#find-out-why-a-mod-does-nothing)。

<h2 id="how-a-mod-works">
  Mod 的運作方式
</h2>

Mod 是一個[外掛程式](/docs/zh-TW/plugins/overview)，其程式碼註冊事件處理程式，稱為 hooks。Claude Code 在其事件發生時執行 hook，例如當 Claude 呼叫工具或繪製微調器時。一個小 mod 有三個檔案：

```text theme={null}
first-mod/
├── .claude-plugin/
│   └── plugin.json
└── hooks/
    ├── hooks.json
    └── register.js
```

* **`plugin.json`**：外掛程式的[清單](/docs/zh-TW/plugins/manifest-reference)
* **`hooks.json`**：[指向您的程式碼檔案](/docs/zh-TW/plugins/mods/reference#files)
* **`register.js`**：[您的程式碼](/docs/zh-TW/plugins/mods/create#write-a-mod-yourself)，稱為 hooks 模組。它告訴 Claude Code 在哪些事件上執行您的函式。

這是一個完整的 `register.js`。它計算 Claude 進行的工具呼叫，並在 Claude 工作時在微調器旁邊顯示計數，如 `Thinking · tool calls: 3…`。

```javascript hooks/register.js theme={null}
// The count, shared by the two hooks below
let calls = 0

// Claude Code calls this once when the mod loads
export function register(on) {
  // Runs each time Claude is about to use a tool
  on('tool.call', async ($, e, next) => {
    calls += 1
    // Ask Claude Code to draw the interface again, so the new count shows
    $.ui.invalidate('ui.render')
    // Let the tool run as usual
    return next(e)
  })

  // Runs each time Claude Code draws the spinner
  on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
    // Keep Claude Code's spinner, with the count added after its word
    return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
  })
}
```

該檔案註冊了兩個 hooks，兩者都使用頂部的 `calls` 變數：

* **[`tool.call`](/docs/zh-TW/plugins/mods/reference#tools) hook** 在 Claude 即將使用工具時執行。它將一個加到 `calls`，要求 Claude Code 再次繪製介面，並讓工具照常執行。
* **[`ui.render`](/docs/zh-TW/plugins/mods/reference#interface) hook** 在 Claude Code 繪製微調器時執行。它保留 Claude Code 自己的微調器，並在單詞後面新增計數。

此記錄顯示 mod 的運作。觀看提示框上方的微調器行：當 Claude 列出目錄並讀取兩個檔案時，它讀取 `Thinking · tool calls: 1…`，然後 `2…`，然後 `3…`。

<Frame>
  <video autoPlay muted loop playsInline controls className="w-full dark:hidden" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-light.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=00a18aa0743b59a700f0275ce226e6d1" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. While Claude works, the spinner reads 'Thinking · tool calls: 1', then 2, then 3, as Claude lists the files and reads two of them." data-path="images/mods-overview-light.mp4" />

  <video autoPlay muted loop playsInline controls className="w-full hidden dark:block" src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-overview-dark.mp4?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=d5223da2fef16ceaaa214a36d72c0536" aria-label="In a Claude Code session, the prompt 'list the files here and read the README' is typed and sent. While Claude works, the spinner reads 'Thinking · tool calls: 1', then 2, then 3, as Claude lists the files and reads two of them." data-path="images/mods-overview-dark.mp4" />
</Frame>

<h3 id="what-a-hook-can-do-with-an-event">
  Hook 可以對事件做什麼
</h3>

Claude Code 在對事件採取行動之前執行您的 hook，因此 hook 決定接下來會發生什麼。它有三個選擇：

* **觀察**：注意正在發生的事情並讓它繼續不變，如範例中的 `tool.call` hook 所做的
* **重寫**：在事件繼續之前變更事件，如 `ui.render` hook 在將計數新增到微調器時所做的
* **回答**：自己處理事件，因此通常的行為不會執行，例如拒絕命令

若要在其自己的程式碼之外執行任何操作，例如繪製、新增命令、呼叫模型、讀取檔案、啟動程序或發出網路請求，hook 會呼叫 mods API。Hook 沒有其他方式來執行這些操作，這就是為什麼 Claude Code 可以在您安裝之前[列出 mod 的功能](#list-what-a-mod-does-before-you-install-one)。

如需每個選擇背後的程式碼，請參閱[對事件做出反應](/docs/zh-TW/plugins/mods/events#how-a-hook-handles-an-event)。如需 hook 可以呼叫的內容，請參閱[使用 mods API](/docs/zh-TW/plugins/mods/api)。

<h3 id="where-mods-run">
  Mods 執行的位置
</h3>

Mod 的 hooks 在載入外掛程式的每種工作階段中執行。繪製更窄：只有終端機和 Desktop 應用程式顯示 mod 的窗格、帶狀區域和取代的列。此表列出您可能執行 Claude Code 的每個位置：

| 您執行 Claude Code 的位置 | Hooks 執行 | Mod 繪製的內容出現 |
| :- | :- | :- |
| 終端機中的 `claude`，包括編輯器的整合終端機和 JetBrains 外掛程式 | 是 | 是 |
| Desktop 應用程式的 Code 標籤，除了 WSL 工作階段外 | 是 | 是，除了[元素表](/docs/zh-TW/plugins/mods/reference#elements)標記為僅限終端機的元素 |
| Desktop 應用程式中的 [WSL 工作階段](/docs/zh-TW/desktop-wsl) | 否，因為外掛程式在 WSL 工作階段中不可用 | 否 |
| VS Code 擴充功能的聊天面板 | 是 | 否 |
| `claude -p` 和 [Agent SDK](/docs/zh-TW/agent-sdk/overview) | 是 | 否 |
| 從 claude.ai 或行動應用程式的[遠端控制](/docs/zh-TW/remote-control) | 是，在您機器上的工作階段中 | 在您機器上的終端機中 |
| [雲端工作階段](/docs/zh-TW/claude-code-on-the-web) | 是，對於[到達雲端工作階段](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)的外掛程式 | 否 |

繪製的 mod 可以檢查它執行的應用程式，並在文字記錄中的行或命令的文字回覆中回退，其中沒有任何內容繪製。

<h2 id="control-mods-for-your-organization">
  為您的組織控制 mods
</h2>

管理員透過[受管設定](/docs/zh-TW/managed-settings)決定 mods 是否執行以及哪些執行。[為您的組織管理 mods](/docs/zh-TW/plugins/mods/admin)涵蓋預設情況、如何檢查 mod 以及如何使用您自己的 mod 強制執行原則。

<h2 id="compare-mods-settings-hooks-skills-and-mcp-servers">
  比較 mods、設定 hooks、skills 和 MCP 伺服器
</h2>

Mods、設定 hooks、skills 和 MCP 伺服器重疊。此表顯示每一個是什麼以及何時選擇它。

| | Mod | 設定 hook | Skill | MCP 伺服器 |
| :- | :- | :- | :- | :- |
| 它是什麼 | Claude Code 在其自己的程序中呼叫的外掛程式中的函式 | Claude Code 在生命週期事件上執行的 shell 命令、HTTP 請求或提示 | Claude 讀取的 `SKILL.md` 檔案指令 | 提供 Claude 工具的外部程序或服務 |
| 它可以變更什麼 | 工具呼叫、提示、命令、回合以及介面繪製的內容 | 工具呼叫或提示是否繼續進行、工具呼叫的引數和結果，以及為 Claude 新增的內容 | Claude 知道和執行的內容 | Claude 擁有的工具 |
| 它可以在介面中繪製嗎 | 是 | 否 | 否 | 否 |
| 您編寫什麼 | JavaScript 或 TypeScript | 指令碼和 `settings.json` 項目 | Markdown | 任何語言的伺服器 |
| 在以下情況下選擇它 | 您想要窗格、提示上方的帶狀區域、自訂命令或重寫事件 | 您想要使用您已經擁有的指令碼來阻止、允許或記錄事件 | 您不斷將相同的指令貼到聊天中 | Claude 需要到達外部系統 |

其他每一個都有自己的頁面：[Hooks](/docs/zh-TW/hooks)、[Skills](/docs/zh-TW/skills) 和 [MCP](/docs/zh-TW/mcp)。外掛程式可以保留所有四個，因此 mod 可以與 skill 和 MCP 伺服器一起在同一外掛程式中發送。

<h2 id="mods-built-into-claude-code">
  內建於 Claude Code 的 Mods
</h2>

Claude Code 的某些功能是 mods。若要查看您的工作階段擁有的功能，請在 Claude Code 提示處執行 `/plugin` 並前往**已安裝**標籤，該標籤在**內建**下列出它們。您無法更新或解除安裝內建 mod，表格的最後一列說明如何關閉每一個。[`mods active` 行](#see-which-mods-a-session-loaded)排除內建 mods。

此表按 `/plugin` 顯示的名稱列出每個項目：

| `/plugin` 中的名稱 | 它的功能 | 它在哪裡開啟 | 如何關閉它 |
| :- | :- | :- | :- |
| `cc-plugin-agents-md` | 將 `AGENTS.md` 載入為專案指令 | 每個工作階段，除了[無法讀取 `AGENTS.md` 的工作階段](/docs/zh-TW/memory#when-agents-md-support-is-unavailable) | 在 `/plugin` 中停用它，或[選擇哪些指令檔案載入](/docs/zh-TW/memory#choose-which-instruction-files-load) |
| `cc-plugin-diff` | 接管 [`/diff`](/docs/zh-TW/interactive-mode#review-changes-with-%2Fdiff) 並繪製其窗格 | 互動式終端機工作階段 | 在 `/plugin` 中停用它。`/diff` 保留，Claude Code 的內建版本的命令回答它。 |
| `cc-plugin-plugin-authoring` | 為 Claude 提供[`plugin-authoring` skill](/docs/zh-TW/plugins/mods/create#ask-claude-for-a-mod)以編寫 mods。它保留 skill 且沒有 mod 程式碼。 | 除非 Anthropic 已遠端關閉已安裝的 mods | 在 `/plugin` 中停用它 |
| `cc-plugin-sec-default` | 保護您的組織管理的內容免受使用者安裝的 mods | [保護載入的位置](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default) | 您無法。管理員在受管設定中[設定順序](/docs/zh-TW/plugins/mods/admin#install-your-organizations-mods) |
| `cc-plugin-telemetry` | 傳送 Claude Code 及其內建 mods 記錄的分析記錄 | 無論 Claude Code 自己的分析在哪裡開啟 | 在 `/plugin` 中停用它，或關閉分析，例如使用 [`DISABLE_TELEMETRY`](/docs/zh-TW/env-vars) |
| `cc-plugin-you-should-know` | 執行一個側邊代理，在 Claude 處理較長的任務時監視您的背景。當它發現值得了解的東西而您可能會錯過時，它會在提示上方顯示一個備註。 | 預設停用。如果可供您的組織使用，列在 `/plugin` -> **已安裝** -> **顯示已停用**。使用 [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/zh-TW/plugins/cli-reference#plugin-in-a-session) 啟用。 | 在 `/plugin` 中停用它 |

停止已安裝 mods 的設定和旗標，例如 `disableAllHooks`、`--bare` 和 `--safe-mode`，不會停止內建 mods。

<h3 id="read-the-source-of-built-in-mods">
  讀取內建 mods 的來源
</h3>

這些 mods 中的四個的來源在 [Claude Code 儲存庫的 `mods` 目錄](https://github.com/anthropics/claude-code/tree/main/mods)中是公開的。每一個都是一個完整的外掛程式，具有其 hooks 模組和測試：

* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff)：`/diff` 窗格，具有綁定到鍵盤動作的按鈕和 mod 自己處理的捲動
* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md)：將 `AGENTS.md` 載入為專案指令，具有 [`userConfig`](/docs/zh-TW/plugins/components#user-configuration) 選項
* [`sec-default`](https://github.com/anthropics/claude-code/tree/main/mods/sec-default)：[了解預設情況下會發生什麼](/docs/zh-TW/plugins/mods/admin#know-what-happens-by-default)中描述的保護，強制執行原則的 mod 的模型
* [`telemetry`](https://github.com/anthropics/claude-code/tree/main/mods/telemetry)：新增其他 mods 可以呼叫的方法，並發送其類型

<h2 id="next-steps">
  後續步驟
</h2>

* [建立 mod](/docs/zh-TW/plugins/mods/create)：建立一個計算工具呼叫、在微調器旁邊顯示計數並新增命令的 mod，並了解編輯和重新載入迴圈
* [在介面中繪製](/docs/zh-TW/plugins/mods/interface)：窗格、提示上方的帶狀區域、按鈕、文字欄位和狀態
* [對事件做出反應](/docs/zh-TW/plugins/mods/events)：工具呼叫、提示、回合以及 mods 執行的順序
* [使用 mods API](/docs/zh-TW/plugins/mods/api)：命令、工具、模型呼叫、計時器和檔案
* [測試 mod](/docs/zh-TW/plugins/mods/test)：在沒有工作階段的情況下執行的自動化測試
* [對 mod 進行故障排除](/docs/zh-TW/plugins/mods/troubleshoot)：mod 不執行任何操作的原因以及偵錯記錄
* [為您的組織管理 mods](/docs/zh-TW/plugins/mods/admin)：預設值、受管設定、檢查 mod 和原則 mods
* [Mods 參考](/docs/zh-TW/plugins/mods/reference)：每個事件、方法、元素和限制
