加载中
加载中

插件

当您信任的配置在整个团队中运行起来后,它的价值会大得多。 问题在于如何把它传递出去。您构建了一个出色的 .claude 目录,里面有 技能、子代理和钩子,然后呢?每个人都在机器之间复制粘贴 文件,并祈祷它们能保持同步。插件解决了这个问题。插件是 Claude Code 打包配置并将其从一个人传递给下一个人的方式。

这件事有两个方面,我们都会讲到。第一,使用其他人发布的插件。 第二,当您构建出值得分享的东西后,将其打包。

什么是插件

插件是一个可安装的单元。它打包了您原本需要手动分享的所有内容:技能、子代理、钩子和 MCP 服务器配置,以及更长尾的内容,比如语言服务器协议(language server protocol)服务器、后台监视器、主题,还有 settings.json 的一部分。一个版本,一次安装。

插件所在的位置决定了您如何安装它。在会话中,您可以直接按名称安装一个插件:

/plugin install github@claude-plugins-official

该命令会先打开插件的详情,以便您查看并选择作用域。然后 Claude Code 会安装它,并打印一份简短的摘要。摘要要么说明该插件在此会话中已经处于激活状态,要么提到 /reload-plugins,并由 Claude Code 为您运行该重新加载操作。只有当重新加载警告您的下一条消息将重新读取整个对话时,您才需要介入:运行 /reload-plugins --force 以强制激活该插件。

为您的团队添加市场

对于团队来说,更好的做法是一次性添加一个私有市场(marketplace)。市场是插件解析所依赖的共享来源:

/plugin marketplace add your-org/claude-plugins

您可以随意命名它。一旦添加完成,之后的每次安装都会通过它来解析。这样您就能在一个地方获得集中式的发现、版本跟踪和更新,而不是分散在每个人的笔记本电脑上。

您可以从"发现"(Discover)标签页浏览可用的内容。它会列出您各个市场中的插件,方便您搜索和选择。

安装前先阅读

这是最重要的部分。插件会以您的权限在您的机器上运行代码。它的钩子会在每次匹配的工具调用时触发。因此,如果您为了某个插件的技能而安装它,无论您是否阅读过,您也会同时获得它的 PreToolUse 和 Stop 钩子。

想想这意味着什么。一个社区插件可能附带一个每次都会调用某个网络端点的 Stop 钩子,而您的配置中不会有任何提示警告您这一点。这并不是要您避免使用插件的理由,而是要您先查看清楚的理由。

在安装之前,请查看插件的详情。Claude Code 会向您展示它将安装的内容,并估算上下文成本,同时附带一条明确的提示:Anthropic 并不控制第三方插件内部的内容。

关于插件的来源,有两点值得了解:

  • 插件之所以能进入社区市场,是因为编写它的人将其提交给了 Anthropic。
  • 官方市场则是通过另一条独立的流程进行审核筛选的。

但被列出并不等于值得信任。因此规则依然成立:只从您真正信任的来源安装插件和添加市场,并在启用插件之前检查它实际会做什么。

组件与您自己的组件并行运行

插件不会覆盖您的配置。它的组件会与您自己的组件并行运行。这大体上是好事,但也有一些您应该了解的后果。

钩子会叠加。插件的 PreToolUse 钩子和您自己的 PreToolUse 钩子都会在每次工具调用时触发。两者互不替代。这正是为什么您要先阅读详情的原因。

技能、代理和命令都以插件名称作为命名空间,因此它们永远不会与您自己的发生冲突。插件也可以附带一个 settings.json 文件,但只能是一个范围很窄的文件。Claude Code 只会遵循其中的两个键:agent 键和 subagent 状态栏键。

这个 agent 键值得停下来说一说。设置它会将插件的某个子代理提升为主线程,同时带上它的系统提示、工具限制和模型。换句话说,启用插件可能会改变 Claude Code 的默认行为方式。这正是您在启用插件之前就要先查看的主要原因之一。

插件安装后,您可以在插件面板中查看它添加的所有内容、管理它,并将其卸载。

打包您自己的插件

现在来看另一面。一旦您构建出一个可用的 .claude 目录,就不要让您的团队在机器之间复制粘贴它了,而是应该将其打包。

好消息是您不需要重新组织任何结构。插件使用的正是您已经在用的那种 .claude 结构:

  • 每个技能一个文件夹。
  • 每个子代理在 agents 下对应一个 markdown 文件。
  • hooks/hooks.json 和 .mcp.json,位于插件根目录。

目录结构完成了大部分工作。Claude Code 通过约定来发现组件。

清单(manifest)

除此之外,还有一个可选的清单文件。它位于 .claude-plugin/plugin.json,保存着名称、版本、描述和作者信息:

json
{
  "name": "svg-splitter-review",
  "version": "0.1.0",
  "description": "Reviews the SVG Splitter repo",
  "author": {
    "name": "Lewis Menelaws"
  }
}

清单是可选的。省略它,Claude Code 仍然会通过目录约定发现您的组件。但有几个细节值得了解:

  • 名称是唯一必填的字段。 它会将您的技能命名空间化为 /plugin-name:skill-name,因此该插件中的某个技能会以 /svg-splitter-review:<skill-name> 的形式运行。这样可以避免您的技能与其他人的发生冲突。
  • 像对待其他依赖一样对其进行版本管理。 这正是让更新和版本跟踪能够在您的团队中正常工作的原因。

要点总结

两条简单的规则涵盖了这里的大部分内容:

  • 当您使用插件时,先阅读再安装。插件会以您的权限运行代码,所以要先查看它的钩子、代理和 MCP 服务器。
  • 当您构建插件时,一旦它能正常工作,就立即打包您的 .claude。一份清单,一次安装。

这就是全部要点。一个可安装的单元,让您信任的配置能够触达您的整个团队。