6 6
7> 使用 mod 向 Claude Code 添加窗格、命令和工具调用规则。了解 mod 可以做什么、如何创建或安装 mod,以及 mod 在哪里运行。7> 使用 mod 向 Claude Code 添加窗格、命令和工具调用规则。了解 mod 可以做什么、如何创建或安装 mod,以及 mod 在哪里运行。
8 8
9Mod 是一个[插件](/docs/zh-CN/plugins/overview.md),它改变 Claude Code 的外观和行为。它由 JavaScript 或 TypeScript 事件处理程序组成:Claude Code 在事件发生时调用一个处理程序,例如工具调用、提交的提示或界面的一部分被绘制,处理程序可以观察事件、更改事件或接管事件。使用 mod 向 Claude Code 添加自己的功能,例如一个窗格,在每个请求后显示上下文有多满。有关 mod 中的文件和完整示例,请参阅[Mod 如何工作](#how-a-mod-works)。9Mod 是一个[插件](https://code.claude.com/docs/zh-CN/plugins/overview.md),它改变 Claude Code 的外观和行为。它由 JavaScript 或 TypeScript 事件处理程序组成:Claude Code 在事件发生时调用一个处理程序,例如工具调用、提交的提示或界面的一部分被绘制,处理程序可以观察事件、更改事件或接管事件。使用 mod 向 Claude Code 添加自己的功能,例如一个窗格,在每个请求后显示上下文有多满。有关 mod 中的文件和完整示例,请参阅[Mod 如何工作](#how-a-mod-works)。
10 10
11> [!NOTE]11> [!NOTE]
12>12>
13> Claude Code 现有的 [hooks](/docs/zh-CN/hooks.md) 也在事件上运行,作为 shell 命令、HTTP 请求或在设置文件中配置的提示。Mod 的处理程序是在 Claude Code 内部运行的函数。Claude Code 调用两种类型的 hooks:在这些页面上,"hook" 指的是 mod 的处理程序,而设置文件类型是"设置 hook"。13> Claude Code 现有的 [hooks](https://code.claude.com/docs/zh-CN/hooks.md) 也在事件上运行,作为 shell 命令、HTTP 请求或在设置文件中配置的提示。Mod 的处理程序是在 Claude Code 内部运行的函数。Claude Code 调用两种类型的 hooks:在这些页面上,"hook" 指的是 mod 的处理程序,而设置文件类型是"设置 hook"。
14 14
15## Mod 可以做什么15## Mod 可以做什么
16 16
17设置 hooks、skills、状态行和 MCP 服务器从 Claude Code 外部工作:每一个都运行一个脚本,或给 Claude 文本或工具。Mod 在 Claude Code 内部运行,所以它可以做他们做不了的事情:17设置 hooks、skills、状态行和 MCP 服务器从 Claude Code 外部工作:每一个都运行一个脚本,或给 Claude 文本或工具。Mod 在 Claude Code 内部运行,所以它可以做他们做不了的事情:
18 18
19* **绘制可以使用的界面**:在文本记录旁边的窗格或提示上方的带状区域,带有选项卡、按钮和文本字段。请参阅[在界面中绘制](/docs/zh-CN/plugins/mods/interface.md)。19* **绘制可以使用的界面**:在文本记录旁边的窗格或提示上方的带状区域,带有选项卡、按钮和文本字段。请参阅[在界面中绘制](https://code.claude.com/docs/zh-CN/plugins/mods/interface.md)。
20* **重新绘制 Claude Code 自己的界面**:替换或重新设置 Claude Code 自己绘制的部分,例如工具调用的行、微调器或 Claude 提出问题的对话框。请参阅[更改 Claude Code 已经绘制的内容](/docs/zh-CN/plugins/mods/interface.md#change-what-claude-code-already-draws)。20* **重新绘制 Claude Code 自己的界面**:替换或重新设置 Claude Code 自己绘制的部分,例如工具调用的行、微调器或 Claude 提出问题的对话框。请参阅[更改 Claude Code 已经绘制的内容](https://code.claude.com/docs/zh-CN/plugins/mods/interface.md#change-what-claude-code-already-draws)。
21* **进入工具调用或请求**:例如,在向用户提出问题时保持工具调用,在不运行工具的情况下回答问题,或将一个请求发送到不同的模型。请参阅[保护或更改工具调用](/docs/zh-CN/plugins/mods/events.md#guard-or-change-a-tool-call)和[跟随一个转折](/docs/zh-CN/plugins/mods/events.md#follow-a-turn)。21* **进入工具调用或请求**:例如,在向用户提出问题时保持工具调用,在不运行工具的情况下回答问题,或将一个请求发送到不同的模型。请参阅[保护或更改工具调用](https://code.claude.com/docs/zh-CN/plugins/mods/events.md#guard-or-change-a-tool-call)和[跟随一个转折](https://code.claude.com/docs/zh-CN/plugins/mods/events.md#follow-a-turn)。
22* **在命令上运行自己的代码**:一个 `/command`,立即运行你的函数,没有 Claude 转折,即使 Claude 正在工作。请参阅[添加命令或工具](/docs/zh-CN/plugins/mods/api.md#add-a-command-or-a-tool)。22* **在命令上运行自己的代码**:一个 `/command`,立即运行你的函数,没有 Claude 转折,即使 Claude 正在工作。请参阅[添加命令或工具](https://code.claude.com/docs/zh-CN/plugins/mods/api.md#add-a-command-or-a-tool)。
23* **在 hooks 之间共享数据**:mod 的 hooks 共享其文件中的变量,所以一个 hook 记录的内容,另一个可以显示。例如,一个 hook 可以计算工具调用,而另一个在微调器旁边显示计数,或者一个可以读取每个请求的令牌使用情况,而另一个在窗格中绘制它。请参阅[对事件做出反应](/docs/zh-CN/plugins/mods/events.md)。23* **在 hooks 之间共享数据**:mod 的 hooks 共享其文件中的变量,所以一个 hook 记录的内容,另一个可以显示。例如,一个 hook 可以计算工具调用,而另一个在微调器旁边显示计数,或者一个可以读取每个请求的令牌使用情况,而另一个在窗格中绘制它。请参阅[对事件做出反应](https://code.claude.com/docs/zh-CN/plugins/mods/events.md)。
24 24
25mod 可在 Claude Code CLI、Claude Desktop 应用的 Code 选项卡以及 VS Code 扩展中工作。请参阅[mod 在哪里运行](#where-mods-run)以了解它们在其他地方的行为,例如在 `claude -p` 和云端会话中。如果设置 hook、skill 或 MCP 服务器已经能满足您的需要,请在编写 mod 之前先[比较它们](#compare-mods-settings-hooks-skills-and-mcp-servers)。要为组织管理 mod,请参阅[为您的组织管理 mod](/docs/zh-CN/plugins/mods/admin.md)。25mod 可在 Claude Code CLI、Claude Desktop 应用的 Code 选项卡以及 VS Code 扩展中工作。请参阅[mod 在哪里运行](#where-mods-run)以了解它们在其他地方的行为,例如在 `claude -p` 和云端会话中。如果设置 hook、skill 或 MCP 服务器已经能满足您的需要,请在编写 mod 之前先[比较它们](#compare-mods-settings-hooks-skills-and-mcp-servers)。要为组织管理 mod,请参阅[为您的组织管理 mod](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md)。
26 26
27## 获取 mod27## 获取 mod
28 28
29要开始使用 mod:29要开始使用 mod:
30 30
31* **使用您已经拥有的**:Claude Code 自身的一些功能就是 mod,例如 `/diff`。请参阅[内置于 Claude Code 的 mod](#mods-built-into-claude-code)。31* **使用您已经拥有的**:Claude Code 自身的一些功能就是 mod,例如 `/diff`。请参阅[内置于 Claude Code 的 mod](#mods-built-into-claude-code)。
32* **创建一个**:在 Claude Code 会话中描述您想要的内容,Claude 会编写 mod。请参阅[向 Claude 请求 mod](/docs/zh-CN/plugins/mods/create.md#ask-claude-for-a-mod)。要了解 mod 代码如何工作,[自己编写一个](/docs/zh-CN/plugins/mods/create.md#write-a-mod-yourself)。32* **创建一个**:在 Claude Code 会话中描述您想要的内容,Claude 会编写 mod。请参阅[向 Claude 请求 mod](https://code.claude.com/docs/zh-CN/plugins/mods/create.md#ask-claude-for-a-mod)。要了解 mod 代码如何工作,[自己编写一个](https://code.claude.com/docs/zh-CN/plugins/mods/create.md#write-a-mod-yourself)。
33* **安装一个**:请参阅[安装或更新 mod](#install-or-update-a-mod),或[试用示例 mod](#try-a-sample-mod)33* **安装一个**:请参阅[安装或更新 mod](#install-or-update-a-mod),或[试用示例 mod](#try-a-sample-mod)
34 34
35### 安装或更新 mod35### 安装或更新 mod
43* 在 Claude Code 会话中,运行 `/plugin install token-chart@your-org`。43* 在 Claude Code 会话中,运行 `/plugin install token-chart@your-org`。
44* 在您的 shell 中,运行 `claude plugin install token-chart@your-org`。44* 在您的 shell 中,运行 `claude plugin install token-chart@your-org`。
45 45
46[安装插件](/docs/zh-CN/plugins/install.md)涵盖市场、作用域、VS Code 扩展和桌面应用,以及[保持插件更新](/docs/zh-CN/plugins/install.md#keep-plugins-updated),所有这些都适用于包含 mod 的插件,无需更改。46[安装插件](https://code.claude.com/docs/zh-CN/plugins/install.md)涵盖市场、作用域、VS Code 扩展和桌面应用,以及[保持插件更新](https://code.claude.com/docs/zh-CN/plugins/install.md#keep-plugins-updated),所有这些都适用于包含 mod 的插件,无需更改。
47 47
48如果在会话打开时从 shell 安装或更新 mod,请在该会话中运行 `/reload-plugins` 以加载它。否则,它将在下次启动 Claude Code 时加载。48如果在会话打开时从 shell 安装或更新 mod,请在该会话中运行 `/reload-plugins` 以加载它。否则,它将在下次启动 Claude Code 时加载。
49 49
57 57
58示例 mod 使用您的权限运行。要在加载之前查看它的作用,请[列出其 hook 和调用](#list-what-a-mod-does-before-you-install-one)。58示例 mod 使用您的权限运行。要在加载之前查看它的作用,请[列出其 hook 和调用](#list-what-a-mod-does-before-you-install-one)。
59 59
60要试用某个示例,请克隆该仓库,并使用 `--plugin-dir` [为单个会话加载该 mod 的目录](/docs/zh-CN/plugins/create.md#load-a-directory-or-archive-for-one-session)。要确认 mod 已加载,请[检查会话加载了哪些 mod](#see-which-mods-a-session-loaded)。60要试用某个示例,请克隆该仓库,并使用 `--plugin-dir` [为单个会话加载该 mod 的目录](https://code.claude.com/docs/zh-CN/plugins/create.md#load-a-directory-or-archive-for-one-session)。要确认 mod 已加载,请[检查会话加载了哪些 mod](#see-which-mods-a-session-loaded)。
61 61
62要保留某个示例,请[将克隆中的 `claude-code/mods` 目录添加为市场](/docs/zh-CN/plugins/install#add-a-marketplace),然后从 `claude-code-playground-mods` 安装该 mod。该市场指向您的克隆,因此如果您移动或删除该克隆,mod 将停止加载。62要保留某个示例,请[将克隆中的 `claude-code/mods` 目录添加为市场](https://code.claude.com/docs/zh-CN/plugins/install#add-a-marketplace),然后从 `claude-code-playground-mods` 安装该 mod。该市场指向您的克隆,因此如果您移动或删除该克隆,mod 将停止加载。
63 63
64## 决定是否信任 mod64## 决定是否信任 mod
65 65
66Mod 是使用您的权限在 Claude Code 内部运行的代码。仅从您信任的作者和[市场](/docs/zh-CN/plugins/security.md)安装 mod。66Mod 是使用您的权限在 Claude Code 内部运行的代码。仅从您信任的作者和[市场](https://code.claude.com/docs/zh-CN/plugins/security.md)安装 mod。
67 67
68### Mod 可以访问什么68### Mod 可以访问什么
69 69
76* **在不询问您的情况下行动**:在询问您之前批准工具调用76* **在不询问您的情况下行动**:在询问您之前批准工具调用
77* **消耗您的使用量**:使用您的计划或 API 密钥调用模型77* **消耗您的使用量**:使用您的计划或 API 密钥调用模型
78 78
79Mod 不在沙箱中运行。如果您启用[沙箱隔离](/docs/zh-CN/sandboxing.md),沙箱会隔离 Claude 运行的 Bash 命令,而 mod 启动的进程在沙箱之外运行。79Mod 不在沙箱中运行。如果您启用[沙箱隔离](https://code.claude.com/docs/zh-CN/sandboxing.md),沙箱会隔离 Claude 运行的 Bash 命令,而 mod 启动的进程在沙箱之外运行。
80 80
81当存在[托管设置](/docs/zh-CN/settings.md#check-what-your-organization-enforces),或以 Team 或 Enterprise [`/login`](/docs/zh-CN/authentication#authentication-precedence) 作为会话凭据时,默认情况下 mod 的批准无法让调用绕过您的 `ask` 规则或 `PreToolUse` hook。如果两者都不存在,mod 可以批准 `ask` 规则会提示确认的调用,或您的 `PreToolUse` hook 已阻止的调用。要了解 mod 何时还可以批准 `deny` 规则拒绝的调用,请参阅[使用 hook 扩展权限](/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。81当存在[托管设置](https://code.claude.com/docs/zh-CN/settings.md#check-what-your-organization-enforces),或以 Team 或 Enterprise [`/login`](https://code.claude.com/docs/zh-CN/authentication#authentication-precedence) 作为会话凭据时,默认情况下 mod 的批准无法让调用绕过您的 `ask` 规则或 `PreToolUse` hook。如果两者都不存在,mod 可以批准 `ask` 规则会提示确认的调用,或您的 `PreToolUse` hook 已阻止的调用。要了解 mod 何时还可以批准 `deny` 规则拒绝的调用,请参阅[使用 hook 扩展权限](https://code.claude.com/docs/zh-CN/permissions.md#precedence-among-rules-hooks-and-mods)。
82 82
83Mod 可以重新设置 Claude Code 界面的大部分样式,但不能重新设置权限提示。它无法改变权限提示向您显示的内容。83Mod 可以重新设置 Claude Code 界面的大部分样式,但不能重新设置权限提示。它无法改变权限提示向您显示的内容。
84 84
90claude plugin validate ./some-mod90claude plugin validate ./some-mod
91```91```
92 92
93输出中的 `hooks:` 和 `calls:` 行列出了 mod 处理的事件以及它要求 Claude Code 做什么。[查看 mod 可以做什么](/docs/zh-CN/plugins/mods/admin.md#review-what-a-mod-can-do)展示了输出内容以及需要留意的调用。93输出中的 `hooks:` 和 `calls:` 行列出了 mod 处理的事件以及它要求 Claude Code 做什么。[查看 mod 可以做什么](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#review-what-a-mod-can-do)展示了输出内容以及需要留意的调用。
94 94
95## 打开或关闭 mods95## 打开或关闭 mods
96 96
97mod 默认处于打开状态。在终端中,请使用 Claude Code v2.1.287 或更高版本。Desktop 应用包含其自带的 Claude Code 副本,mod 从 v2.1.286 起即可在其中使用。请在您使用 mod 的地方检查版本:97mod 默认处于打开状态。在终端中,请使用 Claude Code v2.1.287 或更高版本。Desktop 应用包含其自带的 Claude Code 副本,mod 从 v2.1.286 起即可在其中使用。请在您使用 mod 的地方检查版本:
98 98
99* **终端**:在您的 shell 中运行 `claude --version`。如果您的版本较旧,请[更新 Claude Code](/docs/zh-CN/setup.md#update-claude-code)。99* **终端**:在您的 shell 中运行 `claude --version`。如果您的版本较旧,请[更新 Claude Code](https://code.claude.com/docs/zh-CN/setup.md#update-claude-code)。
100* **Desktop 应用**:在 Code 选项卡的本地会话中输入 `/status`,查看 **Claude Code** 一行,其中会显示 `2.1.286` 之类的版本号。如果您的版本较旧,请[更新 Desktop 应用](/docs/zh-CN/desktop.md#claude-code-version-in-the-code-tab)。100* **Desktop 应用**:在 Code 选项卡的本地会话中输入 `/status`,查看 **Claude Code** 一行,其中会显示 `2.1.286` 之类的版本号。如果您的版本较旧,请[更新 Desktop 应用](https://code.claude.com/docs/zh-CN/desktop.md#claude-code-version-in-the-code-tab)。
101 101
102要关闭 mods,选择要停止多少个,以及停止多长时间。要重新打开它们,撤销相同的更改:102要关闭 mods,选择要停止多少个,以及停止多长时间。要重新打开它们,撤销相同的更改:
103 103
104* **一个 mod**:从[`/plugin` 中的**已安装**选项卡](/docs/zh-CN/plugins/install#manage-installed-plugins)禁用或卸载其插件104* **一个 mod**:从[`/plugin` 中的**已安装**选项卡](https://code.claude.com/docs/zh-CN/plugins/install#manage-installed-plugins)禁用或卸载其插件
105* **每个已安装的 mod,对于一个会话**:使用 [`--safe-mode`](/docs/zh-CN/cli-reference#cli-flags) 启动 Claude Code,这也会禁用您的其他自定义105* **每个已安装的 mod,对于一个会话**:使用 [`--safe-mode`](https://code.claude.com/docs/zh-CN/cli-reference#cli-flags) 启动 Claude Code,这也会禁用您的其他自定义
106* **您安装的每个 mod,在每个会话中**:在 `~/.claude/settings.json` 中设置 [`"disableAllHooks": true`](/docs/zh-CN/settings-reference#disableallhooks)。您的设置 hook 和自定义状态栏也会停止。您的组织管理的内容继续运行。106* **您安装的每个 mod,在每个会话中**:在 `~/.claude/settings.json` 中设置 [`"disableAllHooks": true`](https://code.claude.com/docs/zh-CN/settings-reference#disableallhooks)。您的设置 hook 和自定义状态栏也会停止。您的组织管理的内容继续运行。
107 107
108如果您通过组织使用 Claude Code,管理员也可以限制哪些 mods 加载。管理员从[停止用户安装的 mods 加载](/docs/zh-CN/plugins/mods/admin.md#stop-user-installed-mods-from-loading)开始。108如果您通过组织使用 Claude Code,管理员也可以限制哪些 mods 加载。管理员从[停止用户安装的 mods 加载](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#stop-user-installed-mods-from-loading)开始。
109 109
110`disableAllHooks` 和您组织的 `allowManagedModsOnly` 会停止 mod,但保留其插件的其余部分:插件保持安装状态,其 skill、命令、Agent 和 MCP 服务器照常加载。其他设置和标志的影响范围更广。[`disableAllHooks`](/docs/zh-CN/settings-reference#disableallhooks) 和[`allowManagedHooksOnly` 下运行的内容](/docs/zh-CN/settings-reference#what-runs-under-allowmanagedhooksonly)列出了每一项对插件及其设置 hook 的影响。110`disableAllHooks` 和您组织的 `allowManagedModsOnly` 会停止 mod,但保留其插件的其余部分:插件保持安装状态,其 skill、命令、Agent 和 MCP 服务器照常加载。其他设置和标志的影响范围更广。[`disableAllHooks`](https://code.claude.com/docs/zh-CN/settings-reference#disableallhooks) 和[`allowManagedHooksOnly` 下运行的内容](https://code.claude.com/docs/zh-CN/settings-reference#what-runs-under-allowmanagedhooksonly)列出了每一项对插件及其设置 hook 的影响。
111 111
112要了解 mods 是否可以为您加载,请参阅[检查 mods 是否可以加载](/docs/zh-CN/plugins/mods/troubleshoot.md#check-whether-mods-can-load)。112要了解 mods 是否可以为您加载,请参阅[检查 mods 是否可以加载](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md#check-whether-mods-can-load)。
113 113
114> [!NOTE]114> [!NOTE]
115>115>
117 117
118### 查看会话加载了哪些 mods118### 查看会话加载了哪些 mods
119 119
120要查看终端会话加载了哪些 mods,在 Claude Code 提示符处运行 `/plugin`。选项卡下的暗色行给出计数和名称,例如 `1 mod active · first-mod`。如果您安装的 mod 没有在那里列出,请参阅[找出为什么 mod 什么都不做](/docs/zh-CN/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)。120要查看终端会话加载了哪些 mods,在 Claude Code 提示符处运行 `/plugin`。选项卡下的暗色行给出计数和名称,例如 `1 mod active · first-mod`。如果您安装的 mod 没有在那里列出,请参阅[找出为什么 mod 什么都不做](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing)。
121 121
122## Mod 如何工作122## Mod 如何工作
123 123
124Mod 是一个[插件](/docs/zh-CN/plugins/overview.md),其代码注册事件处理程序,称为 hook。Claude Code 在相应事件发生时运行 hook,例如当 Claude 调用工具或绘制微调器时。一个小 mod 有三个文件:124Mod 是一个[插件](https://code.claude.com/docs/zh-CN/plugins/overview.md),其代码注册事件处理程序,称为 hook。Claude Code 在相应事件发生时运行 hook,例如当 Claude 调用工具或绘制微调器时。一个小 mod 有三个文件:
125 125
126```text theme={null}126```text theme={null}
127first-mod/127first-mod/
132 └── register.js132 └── register.js
133```133```
134 134
135* **`plugin.json`**:插件的[清单](/docs/zh-CN/plugins/manifest-reference.md)135* **`plugin.json`**:插件的[清单](https://code.claude.com/docs/zh-CN/plugins/manifest-reference.md)
136* **`hooks.json`**:[指向您的代码文件](/docs/zh-CN/plugins/mods/reference.md#files)136* **`hooks.json`**:[指向您的代码文件](https://code.claude.com/docs/zh-CN/plugins/mods/reference.md#files)
137* **`register.js`**:[您的代码](/docs/zh-CN/plugins/mods/create.md#write-a-mod-yourself),称为 hooks 模块。它告诉 Claude Code 在哪些事件上运行您的函数。137* **`register.js`**:[您的代码](https://code.claude.com/docs/zh-CN/plugins/mods/create.md#write-a-mod-yourself),称为 hooks 模块。它告诉 Claude Code 在哪些事件上运行您的函数。
138 138
139这是一个完整的 `register.js`。它统计 Claude 进行的工具调用次数,并在 Claude 工作时在微调器旁边显示计数,如 `Thinking · tool calls: 3…`。139这是一个完整的 `register.js`。它统计 Claude 进行的工具调用次数,并在 Claude 工作时在微调器旁边显示计数,如 `Thinking · tool calls: 3…`。
140 140
163 163
164该文件注册了两个 hook,两者都使用顶部的 `calls` 变量:164该文件注册了两个 hook,两者都使用顶部的 `calls` 变量:
165 165
166* **[`tool.call`](/docs/zh-CN/plugins/mods/reference#tools) hook** 在 Claude 每次即将使用工具时运行。它将 `calls` 加一,要求 Claude Code 再次绘制界面,并让工具照常运行。166* **[`tool.call`](https://code.claude.com/docs/zh-CN/plugins/mods/reference#tools) hook** 在 Claude 每次即将使用工具时运行。它将 `calls` 加一,要求 Claude Code 再次绘制界面,并让工具照常运行。
167* **[`ui.render`](/docs/zh-CN/plugins/mods/reference#interface) hook** 在 Claude Code 每次绘制微调器时运行。它保留 Claude Code 自己的微调器,并在其文字后添加计数。167* **[`ui.render`](https://code.claude.com/docs/zh-CN/plugins/mods/reference#interface) hook** 在 Claude Code 每次绘制微调器时运行。它保留 Claude Code 自己的微调器,并在其文字后添加计数。
168 168
169这段录屏展示了 mod 的工作过程。请观察输入框上方的微调器行:当 Claude 列出目录并读取两个文件时,它显示 `Thinking · tool calls: 1…`,然后是 `2…`,然后是 `3…`。169这段录屏展示了 mod 的工作过程。请观察输入框上方的微调器行:当 Claude 列出目录并读取两个文件时,它显示 `Thinking · tool calls: 1…`,然后是 `2…`,然后是 `3…`。
170 170
180 180
181要做任何超出其自身代码的事情,例如绘制、添加命令、调用模型、读取文件、启动进程或发出网络请求,hook 需要调用 mods API。Hook 没有其他方式来做这些事情,这就是为什么 Claude Code 可以在您安装之前[列出 mod 会做什么](#list-what-a-mod-does-before-you-install-one)。181要做任何超出其自身代码的事情,例如绘制、添加命令、调用模型、读取文件、启动进程或发出网络请求,hook 需要调用 mods API。Hook 没有其他方式来做这些事情,这就是为什么 Claude Code 可以在您安装之前[列出 mod 会做什么](#list-what-a-mod-does-before-you-install-one)。
182 182
183有关每种选择背后的代码,请参阅[对事件做出反应](/docs/zh-CN/plugins/mods/events.md#how-a-hook-handles-an-event)。有关 hook 可以调用什么,请参阅[使用 mods API](/docs/zh-CN/plugins/mods/api.md)。183有关每种选择背后的代码,请参阅[对事件做出反应](https://code.claude.com/docs/zh-CN/plugins/mods/events.md#how-a-hook-handles-an-event)。有关 hook 可以调用什么,请参阅[使用 mods API](https://code.claude.com/docs/zh-CN/plugins/mods/api.md)。
184 184
185### Mods 在哪里运行185### Mods 在哪里运行
186 186
189| 您运行 Claude Code 的地方 | Hook 是否运行 | Mod 绘制的内容是否出现 |189| 您运行 Claude Code 的地方 | Hook 是否运行 | Mod 绘制的内容是否出现 |
190| :- | :- | :- |190| :- | :- | :- |
191| 终端中的 `claude`,包括编辑器的集成终端和 JetBrains 插件 | 是 | 是 |191| 终端中的 `claude`,包括编辑器的集成终端和 JetBrains 插件 | 是 | 是 |
192| 桌面应用的代码选项卡,WSL 会话除外 | 是 | 是,[元素表](/docs/zh-CN/plugins/mods/reference.md#elements)标记为仅限终端的元素除外 |192| 桌面应用的代码选项卡,WSL 会话除外 | 是 | 是,[元素表](https://code.claude.com/docs/zh-CN/plugins/mods/reference.md#elements)标记为仅限终端的元素除外 |
193| 桌面应用中的 [WSL 会话](/docs/zh-CN/desktop-wsl.md) | 否,因为插件在 WSL 会话中不可用 | 否 |193| 桌面应用中的 [WSL 会话](https://code.claude.com/docs/zh-CN/desktop-wsl.md) | 否,因为插件在 WSL 会话中不可用 | 否 |
194| VS Code 扩展的聊天面板 | 是 | 是,需使用扩展版本 2.1.299 或更高版本。[不获取功能标志](/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话(例如 Amazon Bedrock 上的会话)需要 2.1.304 或更高版本。[渲染位置](/docs/zh-CN/plugins/mods/reference.md#render-sites)表和[元素](/docs/zh-CN/plugins/mods/reference.md#elements)表标出了该面板绘制的内容。 |194| VS Code 扩展的聊天面板 | 是 | 是,需使用扩展版本 2.1.299 或更高版本。[不获取功能标志](https://code.claude.com/docs/zh-CN/env-vars.md#features-that-need-feature-flag-fetching)的会话(例如 Amazon Bedrock 上的会话)需要 2.1.304 或更高版本。[渲染位置](https://code.claude.com/docs/zh-CN/plugins/mods/reference.md#render-sites)表和[元素](https://code.claude.com/docs/zh-CN/plugins/mods/reference.md#elements)表标出了该面板绘制的内容。 |
195| `claude -p` 和 [Agent SDK](/docs/zh-CN/agent-sdk/overview.md) | 是 | 否 |195| `claude -p` 和 [Agent SDK](https://code.claude.com/docs/zh-CN/agent-sdk/overview.md) | 是 | 否 |
196| 从 claude.ai 或移动应用使用 [Remote Control](/docs/zh-CN/remote-control.md) | 是,在您机器上的会话中 | 在您机器上的终端中 |196| 从 claude.ai 或移动应用使用 [Remote Control](https://code.claude.com/docs/zh-CN/remote-control.md) | 是,在您机器上的会话中 | 在您机器上的终端中 |
197| [云端会话](/docs/zh-CN/claude-code-on-the-web.md) | 是,适用于[可进入云端会话](/docs/zh-CN/cloud-environments.md#what-carries-over-from-your-setup)的插件 | 否 |197| [云端会话](https://code.claude.com/docs/zh-CN/claude-code-on-the-web.md) | 是,适用于[可进入云端会话](https://code.claude.com/docs/zh-CN/cloud-environments.md#what-carries-over-from-your-setup)的插件 | 否 |
198 198
199会绘制内容的 mod 可以检查自己运行在哪个应用中,并在无法绘制的地方回退为会话记录中的一行或命令的文本回复。199会绘制内容的 mod 可以检查自己运行在哪个应用中,并在无法绘制的地方回退为会话记录中的一行或命令的文本回复。
200 200
201## 为你的组织控制 mods201## 为你的组织控制 mods
202 202
203管理员通过[托管设置](/docs/zh-CN/managed-settings.md)决定 mods 是否运行以及哪些运行。[为你的组织管理 mods](/docs/zh-CN/plugins/mods/admin.md)涵盖默认情况下发生的事情、如何查看 mod 以及如何使用你自己的 mod 强制执行策略。203管理员通过[托管设置](https://code.claude.com/docs/zh-CN/managed-settings.md)决定 mods 是否运行以及哪些运行。[为你的组织管理 mods](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md)涵盖默认情况下发生的事情、如何查看 mod 以及如何使用你自己的 mod 强制执行策略。
204 204
205## 比较 mod、设置 hook、skill 和 MCP 服务器205## 比较 mod、设置 hook、skill 和 MCP 服务器
206 206
214| 您编写什么 | JavaScript 或 TypeScript | 脚本和 `settings.json` 条目 | Markdown | 任何语言的服务器 |214| 您编写什么 | JavaScript 或 TypeScript | 脚本和 `settings.json` 条目 | Markdown | 任何语言的服务器 |
215| 何时选择它 | 您想要一个窗格、输入框上方的带状区域、自定义命令或重写事件 | 您想用已有的脚本阻止、允许或记录事件 | 您不断将相同的指令粘贴到聊天中 | Claude 需要访问外部系统 |215| 何时选择它 | 您想要一个窗格、输入框上方的带状区域、自定义命令或重写事件 | 您想用已有的脚本阻止、允许或记录事件 | 您不断将相同的指令粘贴到聊天中 | Claude 需要访问外部系统 |
216 216
217其他每一种都有自己的页面:[Hooks](/docs/zh-CN/hooks.md)、[Skills](/docs/zh-CN/skills.md) 和 [MCP](/docs/zh-CN/mcp.md)。一个插件可以容纳所有这些,因此 mod 可以与 skill 和 MCP 服务器放在同一个插件中发布。217其他每一种都有自己的页面:[Hooks](https://code.claude.com/docs/zh-CN/hooks.md)、[Skills](https://code.claude.com/docs/zh-CN/skills.md) 和 [MCP](https://code.claude.com/docs/zh-CN/mcp.md)。一个插件可以容纳所有这些,因此 mod 可以与 skill 和 MCP 服务器放在同一个插件中发布。
218 218
219## 内置于 Claude Code 的 Mods219## 内置于 Claude Code 的 Mods
220 220
224 224
225| `/plugin` 中的名称 | 它做什么 | 它在哪里打开 | 如何关闭它 |225| `/plugin` 中的名称 | 它做什么 | 它在哪里打开 | 如何关闭它 |
226| :- | :- | :- | :- |226| :- | :- | :- | :- |
227| `cc-plugin-agents-md` | 将 `AGENTS.md` 加载为项目指令 | 每个会话,除了[无法读取 `AGENTS.md` 的会话](/docs/zh-CN/memory#when-agents-md-support-is-unavailable) | 在 `/plugin` 中禁用它,或[选择哪些指令文件加载](/docs/zh-CN/memory.md#choose-which-instruction-files-load) |227| `cc-plugin-agents-md` | 将 `AGENTS.md` 加载为项目指令 | 每个会话,除了[无法读取 `AGENTS.md` 的会话](https://code.claude.com/docs/zh-CN/memory#when-agents-md-support-is-unavailable) | 在 `/plugin` 中禁用它,或[选择哪些指令文件加载](https://code.claude.com/docs/zh-CN/memory.md#choose-which-instruction-files-load) |
228| `cc-plugin-diff` | 接管 [`/diff`](/docs/zh-CN/interactive-mode#review-changes-with-%2Fdiff) 并绘制其窗格 | 交互式终端会话 | 在 `/plugin` 中禁用它。`/diff` 保持,Claude Code 的内置版本的命令回答它。 |228| `cc-plugin-diff` | 接管 [`/diff`](https://code.claude.com/docs/zh-CN/interactive-mode#review-changes-with-%2Fdiff) 并绘制其窗格 | 交互式终端会话 | 在 `/plugin` 中禁用它。`/diff` 保持,Claude Code 的内置版本的命令回答它。 |
229| `cc-plugin-plugin-authoring` | 给 Claude [`plugin-authoring` skill](/docs/zh-CN/plugins/mods/create#ask-claude-for-a-mod) 用于编写 mods。它持有一个 skill,没有 mod 代码。 | 除非 Anthropic 已远程关闭已安装的 mods | 在 `/plugin` 中禁用它 |229| `cc-plugin-plugin-authoring` | 给 Claude [`plugin-authoring` skill](https://code.claude.com/docs/zh-CN/plugins/mods/create#ask-claude-for-a-mod) 用于编写 mods。它持有一个 skill,没有 mod 代码。 | 除非 Anthropic 已远程关闭已安装的 mods | 在 `/plugin` 中禁用它 |
230| `cc-plugin-sec-default` | 保护您的组织管理的内容免受用户安装的 mods | [保护加载的地方](/docs/zh-CN/plugins/mods/admin.md#know-what-happens-by-default) | 您不能。管理员在托管设置中[设置顺序](/docs/zh-CN/plugins/mods/admin.md#install-your-organizations-mods) |230| `cc-plugin-sec-default` | 保护您的组织管理的内容免受用户安装的 mods | [保护加载的地方](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#know-what-happens-by-default) | 您不能。管理员在托管设置中[设置顺序](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#install-your-organizations-mods) |
231| `cc-plugin-telemetry` | 发送 Claude Code 及其内置 mods 记录的分析记录 | 无论 Claude Code 自己的分析在哪里打开 | 在 `/plugin` 中禁用它,或关闭分析,例如使用 [`DISABLE_TELEMETRY`](/docs/zh-CN/env-vars) |231| `cc-plugin-telemetry` | 发送 Claude Code 及其内置 mods 记录的分析记录 | 无论 Claude Code 自己的分析在哪里打开 | 在 `/plugin` 中禁用它,或关闭分析,例如使用 [`DISABLE_TELEMETRY`](https://code.claude.com/docs/zh-CN/env-vars) |
232| `cc-plugin-you-should-know` | [You should know](/docs/zh-CN/interactive-mode.md#you-should-know-suggestions):一个侧边 Agent 在发现您可能错过的内容时,会在输入框上方显示一条注释 | 默认关闭,直到您[将其打开](/docs/zh-CN/interactive-mode.md#you-should-know-suggestions) | 在 `/plugin` 中禁用它 |232| `cc-plugin-you-should-know` | [You should know](https://code.claude.com/docs/zh-CN/interactive-mode.md#you-should-know-suggestions):一个侧边 Agent 在发现您可能错过的内容时,会在输入框上方显示一条注释 | 默认关闭,直到您[将其打开](https://code.claude.com/docs/zh-CN/interactive-mode.md#you-should-know-suggestions) | 在 `/plugin` 中禁用它 |
233 233
234停止已安装 mods 的设置和标志,例如 `disableAllHooks`、`--bare` 和 `--safe-mode`,不会停止内置 mods。234停止已安装 mods 的设置和标志,例如 `disableAllHooks`、`--bare` 和 `--safe-mode`,不会停止内置 mods。
235 235
238其中一些 mods 的源代码在 [Claude Code 仓库的 `mods` 目录](https://github.com/anthropics/claude-code/tree/main/mods)中是公开的。每一个都是一个完整的插件,带有其 hooks 模块和测试:238其中一些 mods 的源代码在 [Claude Code 仓库的 `mods` 目录](https://github.com/anthropics/claude-code/tree/main/mods)中是公开的。每一个都是一个完整的插件,带有其 hooks 模块和测试:
239 239
240* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff):`/diff` 窗格,带有绑定到键盘操作的按钮和 mod 自己处理的滚动240* [`diff`](https://github.com/anthropics/claude-code/tree/main/mods/diff):`/diff` 窗格,带有绑定到键盘操作的按钮和 mod 自己处理的滚动
241* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md):将 `AGENTS.md` 加载为项目指令,带有 [`userConfig`](/docs/zh-CN/plugins/components#user-configuration) 选项241* [`agents-md`](https://github.com/anthropics/claude-code/tree/main/mods/agents-md):将 `AGENTS.md` 加载为项目指令,带有 [`userConfig`](https://code.claude.com/docs/zh-CN/plugins/components#user-configuration) 选项
242* [`sec-default`](https://github.com/anthropics/claude-code/tree/main/mods/sec-default):[了解默认情况下发生的事情](/docs/zh-CN/plugins/mods/admin.md#know-what-happens-by-default)中描述的保护,一个强制执行策略的 mod 的模型242* [`sec-default`](https://github.com/anthropics/claude-code/tree/main/mods/sec-default):[了解默认情况下发生的事情](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md#know-what-happens-by-default)中描述的保护,一个强制执行策略的 mod 的模型
243* [`telemetry`](https://github.com/anthropics/claude-code/tree/main/mods/telemetry):添加其他 mods 可以调用的方法,并提供其类型243* [`telemetry`](https://github.com/anthropics/claude-code/tree/main/mods/telemetry):添加其他 mods 可以调用的方法,并提供其类型
244 244
245## 后续步骤245## 后续步骤
246 246
247* [创建 mod](/docs/zh-CN/plugins/mods/create.md):构建一个计算工具调用、在微调器旁边显示计数并添加命令的 mod,并学习编辑和重新加载循环247* [创建 mod](https://code.claude.com/docs/zh-CN/plugins/mods/create.md):构建一个计算工具调用、在微调器旁边显示计数并添加命令的 mod,并学习编辑和重新加载循环
248* [在界面中绘制](/docs/zh-CN/plugins/mods/interface.md):窗格、输入框上方的带状区域、按钮、文本字段和状态248* [在界面中绘制](https://code.claude.com/docs/zh-CN/plugins/mods/interface.md):窗格、输入框上方的带状区域、按钮、文本字段和状态
249* [对事件做出反应](/docs/zh-CN/plugins/mods/events.md):工具调用、提示词、轮次和 mods 运行的顺序249* [对事件做出反应](https://code.claude.com/docs/zh-CN/plugins/mods/events.md):工具调用、提示词、轮次和 mods 运行的顺序
250* [使用 mods API](/docs/zh-CN/plugins/mods/api.md):命令、工具、模型调用、计时器和文件250* [使用 mods API](https://code.claude.com/docs/zh-CN/plugins/mods/api.md):命令、工具、模型调用、计时器和文件
251* [测试 mod](/docs/zh-CN/plugins/mods/test.md):在没有会话的情况下运行的自动化测试251* [测试 mod](https://code.claude.com/docs/zh-CN/plugins/mods/test.md):在没有会话的情况下运行的自动化测试
252* [对 mod 进行故障排除](/docs/zh-CN/plugins/mods/troubleshoot.md):mod 什么都不做的原因和调试日志252* [对 mod 进行故障排除](https://code.claude.com/docs/zh-CN/plugins/mods/troubleshoot.md):mod 什么都不做的原因和调试日志
253* [为您的组织管理 mods](/docs/zh-CN/plugins/mods/admin.md):默认值、托管设置、查看 mod 和策略 mods253* [为您的组织管理 mods](https://code.claude.com/docs/zh-CN/plugins/mods/admin.md):默认值、托管设置、查看 mod 和策略 mods
254* [Mods 参考](/docs/zh-CN/plugins/mods/reference.md):事件、方法、元素和限制254* [Mods 参考](https://code.claude.com/docs/zh-CN/plugins/mods/reference.md):事件、方法、元素和限制