Claude Code 现有的 hooks 也在事件上运行,作为 shell 命令、HTTP 请求或在设置文件中配置的提示。Mod 的处理程序是在 Claude Code 内部运行的函数。Claude Code 调用两种类型的 hooks:在这些页面上,“hook” 指的是 mod 的处理程序,而设置文件类型是”设置 hook”。
Mod 可以做什么
设置 hooks、skills、状态行和 MCP 服务器从 Claude Code 外部工作:每一个都运行一个脚本,或给 Claude 文本或工具。Mod 在 Claude Code 内部运行,所以它可以做他们做不了的事情:- 绘制可以使用的界面:在文本记录旁边的窗格或提示上方的带状区域,带有选项卡、按钮和文本字段。请参阅在界面中绘制。
- 重新绘制 Claude Code 自己的界面:替换或重新设置 Claude Code 自己绘制的部分,例如工具调用的行、微调器或 Claude 提出问题的对话框。请参阅更改 Claude Code 已经绘制的内容。
- 进入工具调用或请求:例如,在向用户提出问题时保持工具调用,在不运行工具的情况下回答问题,或将一个请求发送到不同的模型。请参阅保护或更改工具调用和跟随一个转折。
- 在命令上运行自己的代码:一个
/command,立即运行你的函数,没有 Claude 转折,即使 Claude 正在工作。请参阅添加命令或工具。 - 在 hooks 之间共享数据:mod 的 hooks 共享其文件中的变量,所以一个 hook 记录的内容,另一个可以显示。例如,一个 hook 可以计算工具调用,而另一个在微调器旁边显示计数,或者一个可以读取每个请求的令牌使用情况,而另一个在窗格中绘制它。请参阅对事件做出反应。
claude -p 和云会话中。如果设置 hook、skill 或 MCP 服务器已经做了你需要的事情,在编写 mod 之前比较它们。要为组织管理 mods,请参阅为你的组织管理 mods。
获取 mod
你可以通过以下三种方式之一开始使用 mod:- 使用你已经拥有的:Claude Code 的一些自己的功能是 mods,例如
/diff。请参阅内置于 Claude Code 的 Mods。 - 创建一个:在 Claude Code 会话中描述你想要的内容,Claude 会编写 mod。请参阅向 Claude 请求 mod。要了解 mod 代码如何工作,自己编写一个。
- 安装一个:请参阅安装或更新 mod
安装或更新 mod
Mod 作为插件从市场安装。给出插件的名称、一个@ 和市场的名称。这些示例从名为 your-org 的市场安装名为 token-chart 的插件:
- 在 Claude Code 会话中,运行
/plugin install token-chart@your-org。 - 在你的 shell 中,运行
claude plugin install token-chart@your-org。
/reload-plugins 以加载它。否则,它将在下次启动 Claude Code 时加载。
决定是否信任 mod
Mod 是使用你的权限在 Claude Code 内部运行的代码。仅从你信任的作者和市场安装 mods。Mod 可以访问什么
Mod 使用你的权限运行,所以在安装之前,了解它可以访问什么。一旦加载,mod 可以:- 在你的机器上以你的身份行动:读写你的用户账户可以访问的任何地方的文件、启动程序和发出网络请求
- 读取你的秘密:环境变量和设置文件,包括你保存在其中任何一个的 API 密钥
- 查看你的会话:你发送的每个提示和 Claude 进行的每个工具调用
- 更改你的会话:重写提示或工具调用、提交提示就像你输入的一样,或向你的另一个会话发送消息
- 在不询问你的情况下行动:在被询问之前批准工具调用
- 花费你的使用量:在你的计划或 API 密钥上调用模型
ask 规则会提示的工具调用,或你自己的 PreToolUse hooks 阻止的工具调用。使用 hooks 扩展权限列出了这样的 mod 可以批准的内容,包括它何时可以批准 deny 规则拒绝的调用。
Mod 可以重新设置 Claude Code 界面的大部分样式,但不能重新设置权限提示。它不能改变提示显示给你的内容。
在安装 mod 之前列出它做什么
在安装 mod 之前,你可以列出它 hooks 的事件以及它要求 Claude Code 做什么,例如读取文件或发出网络请求,而无需运行它。首先获取插件的文件,例如通过克隆其存储库。然后,在你的 shell 中,在插件的目录上运行claude plugin validate:
hooks: 和 calls: 行列出了 mod 处理的事件以及它要求 Claude Code 做什么。查看 mod 可以做什么显示输出以及要查找的调用。
打开或关闭 mods
Mods 需要 Claude Code v2.1.287 或更高版本,默认情况下它们是打开的。在你的 shell 中,运行claude --version 以检查,如果你的版本较旧,请更新 Claude Code。
要关闭 mods,选择要停止多少个,以及停止多长时间。要重新打开它们,撤销相同的更改:
- 一个 mod:从
/plugin中的已安装选项卡禁用或卸载其插件 - 每个已安装的 mod,对于一个会话:使用
--safe-mode启动 Claude Code,这也会排除你的其他自定义 - 你安装的每个 mod,在每个会话中:在
~/.claude/settings.json中设置"disableAllHooks": true。你的设置 hooks 和自定义状态行也会停止。你的组织管理的内容继续运行。
如果你在早期访问期间设置了
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS,请删除它。Claude Code v2.1.287 及更高版本忽略它,所以将其设置为 0 不会保持 mods 关闭。查看会话加载了哪些 mods
要查看终端会话加载了哪些 mods,在 Claude Code 提示符处运行/plugin。选项卡下的暗线给出计数和名称,例如 1 mod active · first-mod。如果你安装的 mod 没有在那里命名,请参阅找出为什么 mod 什么都不做。
Mod 如何工作
Mod 是一个插件,其代码注册事件处理程序,称为 hooks。Claude Code 在其事件发生时运行 hook,例如当 Claude 调用工具或绘制微调器时。一个小 mod 有三个文件:register.js。它计算 Claude 进行的工具调用,并在 Claude 工作时在微调器旁边显示计数,如 Thinking · tool calls: 3…。
hooks/register.js
calls 变量:
tool.callhook 在 Claude 即将使用工具时运行。它将一个添加到calls,要求 Claude Code 再次绘制界面,并让工具照常运行。ui.renderhook 在 Claude Code 绘制微调器时运行。它保持 Claude Code 自己的微调器,并在单词后添加计数。
Thinking · tool calls: 1…,然后 2…,然后 3…。
Hook 可以对事件做什么
Claude Code 在对事件采取行动之前运行你的 hook,所以 hook 决定接下来会发生什么。它有三个选择:- 观察:注意正在发生的事情并让它继续不变,就像示例中的
tool.callhook 一样 - 重写:在事件继续之前更改事件,就像
ui.renderhook 在向微调器添加计数时所做的那样 - 回答:自己处理事件,所以通常的行为不会运行,例如拒绝命令
Mods 在哪里运行
Mod 的 hooks 在加载插件的每种会话中运行。绘制更窄:只有终端和桌面应用显示 mod 的窗格、带状区域和替换的行。此表列出了你可能运行 Claude Code 的每个地方:
绘制的 mod 可以检查它运行在哪个应用中,并在文本记录中的行或命令的文本回复中回退,其中没有任何内容绘制。
为你的组织控制 mods
管理员通过托管设置决定 mods 是否运行以及哪些运行。为你的组织管理 mods涵盖默认情况下发生的事情、如何查看 mod 以及如何使用你自己的 mod 强制执行策略。比较 mods、设置 hooks、skills 和 MCP 服务器
Mods、设置 hooks、skills 和 MCP 服务器重叠。此表显示每一个是什么以及何时选择它。
其他每一个都有自己的页面:Hooks、Skills 和 MCP。一个插件可以容纳所有四个,所以 mod 可以与 skill 和 MCP 服务器一起在同一个插件中发货。
内置于 Claude Code 的 Mods
Claude Code 的一些自己的功能是 mods。要查看你的会话拥有的,在 Claude Code 提示符处运行/plugin 并转到已安装选项卡,它在内置下列出它们。你不能更新或卸载内置 mod,表的最后一列说明如何关闭每一个。mods active 行排除了内置 mods。
此表按 /plugin 显示的名称列出每个条目:
停止已安装 mods 的设置和标志,例如
disableAllHooks、--bare 和 --safe-mode,不会停止内置 mods。
阅读内置 mods 的源代码
这些 mods 中的四个的源代码在 Claude Code 存储库的mods 目录中是公开的。每一个都是一个完整的插件,带有其 hooks 模块和测试:
diff:/diff窗格,带有绑定到键盘操作的按钮和 mod 自己处理的滚动agents-md:将AGENTS.md加载为项目指令,带有userConfig选项sec-default:了解默认情况下发生的事情中描述的保护,一个强制执行策略的 mod 的模型telemetry:添加其他 mods 可以调用的方法,并发货其类型
后续步骤
- 创建 mod:构建一个计算工具调用、在微调器旁边显示计数并添加命令的 mod,并学习编辑和重新加载循环
- 在界面中绘制:窗格、提示上方的带状区域、按钮、文本字段和状态
- 对事件做出反应:工具调用、提示、转折和 mods 运行的顺序
- 使用 mods API:命令、工具、模型调用、计时器和文件
- 测试 mod:在没有会话的情况下运行的自动化测试
- 对 mod 进行故障排除:mod 什么都不做的原因和调试日志
- 为你的组织管理 mods:默认值、托管设置、查看 mod 和策略 mods
- Mods 参考:每个事件、方法、元素和限制