SpyBara
Go Premium

plugins/mods/create.md 2026-11-11 22:59 UTC to 2026-11-12 22:01 UTC

No changes for this document in this history range.

2026
Tue 10 21:57

创建一个 mod

让 Claude 从描述中编写一个 Claude Code mod,或者自己编写一个来计算工具调用并添加命令。学习重新加载和验证循环。

Mod 是一个 Claude Code 插件,具有一个入口文件,称为 hooks 模块:一个 JavaScript 或 TypeScript 文件,其函数在事件发生时由 Claude Code 调用。创建方式如下:

  • 让 Claude 编写它:在 Claude Code 会话中描述你想要的内容
  • 自己编写:按照教程学习 mod 代码的工作原理。你不需要 Node.js、打包工具或构建步骤,因为 Claude Code 直接加载 .js 和 .ts 文件。

如果你还没有决定 mod 是否是合适的工具,请先阅读概述中的比较。

[!NOTE]

请使用 Claude Code v2.1.287 或更高版本。在 shell 中运行 claude --version 进行检查。要查看 mod 是否可以为您加载,请参阅检查 mod 是否可以加载。

让 Claude 为你编写一个 mod

在交互式 Claude Code 会话中描述你想要的 mod,Claude 会编写它。Claude 使用一个名为 plugin-authoring 的内置技能,它告诉 Claude 在哪里编写 mod、你的版本有哪些事件和方法,以及 mod 如何被加载。当你请求一个 mod 时,Claude 可以加载该技能,或者你可以通过在 Claude Code 提示符处运行 /plugin-authoring 来自己加载它。

在 auto 和 bypassPermissions 权限模式下,mod 可以在轮次结束时运行。在其他模式下,mod 会在您批准后运行,但Claude 编写的 mod 无法加载的会话除外。

1. 描述 mod

用你自己的话请求 mod,例如 make a mod that shows the current git branch above the prompt。Claude 在会话的 mods 文件夹中的自己的目录中编写 mod,该文件夹是 ~/.claude/dev-mods/ 后跟会话的 ID。mod 的完整路径看起来像 ~/.claude/dev-mods/3f2a9c1e-5b7d-4e8a-9c21-6d0f4b8a7e13/git-branch/。

[!NOTE]

在 default 和 acceptEdits 权限模式中,Claude Code 会在 Claude 创建 mod 的每个文件之前请求您批准,因为 mods 文件夹是一个受保护的路径。请在每个文件出现时批准它。

2. 批准 mod

当 Claude 保存第一个文件时,Claude Code 会询问是否为会话启用热重新加载。热重新加载会运行此会话中 Claude 编写的 mod,并应用之后的每次更改。如果没有出现该询问,请跳过此步骤。

选择以下答案之一:

  • Turn them on:会话的 mods 文件夹中的 mod 会在轮次结束时加载,并在每个更改它们的轮次结束时重新加载。您的答案在整个会话中有效,包括在您恢复会话之后。
  • Not now:暂时不加载任何内容。文件保留在 Claude 编写的位置,mod 会在该会话下次启动时加载。要让 mod 永远不加载,请删除其目录。

3. 检查 mod 是否已加载

在 Claude Code 提示符处运行 /plugin,然后按 Tab 直到选中已安装选项卡。它列出了 mod,你可以在那里关闭它。

4. 尝试 mod

使用您请求的功能。对于示例提示词,当前分支名称会显示在输入框上方。如果 mod 没有按您的预期工作,请告诉 Claude 需要更改什么。mod 会在每个更改其文件的轮次结束时重新加载,因此 Claude 完成后您就可以立即尝试该更改。

如果会话记录中以该 mod 名称开头的某一行显示更改未加载,请在向 Claude 请求修复时将该行粘贴到您的下一条消息中。除非您粘贴,否则 Claude 看不到该行。

在其他会话中使用 mod

Claude 编写的 mod 仅在创建它的会话中加载,一旦 Claude Code 的会话比 cleanupPeriodDays 更旧,它就会删除该会话的 mods 文件夹。要保留 mod,请将其目录从 mods 文件夹复制到你自己的位置,例如 ~/mods/git-branch。然后选择如何加载它:

  • 在你启动的会话中:在你的 shell 中,运行 claude --plugin-dir ~/mods/git-branch
  • 对于其他人:将其添加到市场,以便他们可以安装它

Claude 编写的 mod 无法加载的会话

Claude 编写的 mod 会在允许 mod 运行的受信任工作区中加载;在需要询问的模式下,须经您批准后才会加载。在以下会话中它不会加载:

  • 没有人可以批准:会话无法向您显示提示,例如在 auto 和 bypassPermissions 模式之外的 claude -p 运行中,或在 dontAsk 模式中
  • 工作区不受信任:你还没有接受目录的信任提示
  • mod 已被禁用:您使用 --safe-mode 或 --bare 启动,您设置了 disableAllHooks,或者您组织的托管设置阻止了它

自己编写一个 mod

在本教程中,你构建一个名为 first-mod 的 mod,它计算 Claude 进行的工具调用,在 Claude 工作时在微调器旁边显示计数,并添加一个 /tally 命令来打印它。然后你读取 Claude Code 在你的 mod 旁边写入的类型声明,并运行 claude plugin validate。它们一起向你展示你的版本提供的事件和方法,以及 Claude Code 从你的代码中读取的内容。

这个录制显示了完成的 mod。微调器计算工具调用,/tally 打印计数,对代码的编辑在会话运行时生效: