Claude Code 的出现确实让 CLI 编程体验上了一个台阶,但“开箱即用”的功能往往只能覆盖通用需求。每个开发者或团队都有自己的特定工作流:可能是按照公司规范快速生成组件脚手架,或者是提交代码前必须运行的 Lint 检查,亦或是需要快速访问特定的私有文档。
插件(Plugins)就是解决这些个性化需求的钥匙。通过插件,你可以将一系列扩展功能打包,像分享代码库一样在团队间分发。
了解 Claude Code 插件的“三驾马车”
一个 Claude Code 插件本质上是多种功能的集合包,它通常包含以下三种核心组件:
- 技能 (Skills):这是最常见的扩展方式。你可以创建自定义命令(如
/deploy),或者提供一段上下文相关的 Prompt,让 Claude 在处理特定任务时自动“想起”这些规则。 - MCP 服务 (Model Context Protocol):这属于进阶玩法,通过 MCP 协议连接外部服务(如 GitHub、Slack 或公司内部 API),让 Claude 拥有实时获取外部数据的能力。
- 钩子 (Hooks):这是一种确定性的脚本。与 Skills 不同,Hooks 不需要 Claude “决定”是否运行,而是在特定事件(如文件编辑后、提交代码前)发生时由系统强制触发。
一个插件可以只包含其中一种,也可以三者兼备。比如一个“部署插件”可以包含 /deploy 技能、检查服务器状态的 MCP,以及部署前运行测试的 Hook。
如何安装与管理插件
安装插件非常直接,主要取决于插件的存放位置:
# 从官方目录安装
claude plugin add @anthropic/deploy-helper
# 直接从 GitHub 仓库安装
claude plugin add github:username/repo-name
# 安装本地正在开发的插件
claude plugin add ./my-plugin
在安装时,你可以选择“用户级别”或“项目级别”。默认是用户级别(存放在 ~/.claude/plugins/),全系统通用。如果你希望某个插件只在特定的 Git 仓库中生效,加上 --project 标志即可。
深度对比:Skills 与 MCP 的 Token 博弈
在设计扩展功能时,选择 Skills 还是 MCP 需要权衡资源消耗,尤其是 Token。
MCP 的代价
传统的 MCP 服务会在会话启动时将所有工具的定义(名称、描述、参数 Schema)一次性塞进上下文。一个包含 GitHub、Slack、Sentry 等 5 个服务的典型配置,在没写一行代码前就可能吃掉约 5.5 万个 Token,接近上下文窗口的四分之一。
Skills 的“懒加载”策略
相比之下,Skills 采用的是渐进式加载。启动时,Claude 只会看到 Skill 的名称和一行简介(约 100 Token)。只有当 Claude 觉得“这个任务需要用到这个技能”时,完整的指令和参考文件才会被载入。这种设计极大地节省了宝贵的上下文空间。
注:Anthropic 在 2025 年底推出的 Tool Search 功能也为 MCP 引入了类似的“按需加载”机制,将大型工具库的 Token 消耗显著降低。
怎么选?
- 如果你的任务需要 Claude 发挥判断力、遵循特定的自然语言流程,优先选 Skills。
- 如果需要与 Slack、数据库等外部实时数据打交道,或者需要企业级的审计日志和权限控制,MCP 是不二之选。
- 如果是一定要执行的操作(如禁止修改
.config目录),不要指望 AI 的自觉性,直接用 Hooks。
实战:从零构建一个会话日志插件
我们来动手写一个名为 session-logger 的插件。它的功能很简单:当你输入 /session-logger:summarize 时,Claude 会总结当前会话的成果,并追加到 SESSION_LOG.md 文件中。
1. 创建插件结构
在本地创建一个工作目录:
mkdir -p session-logger/.claude-plugin
mkdir -p session-logger/skills/summarize
插件的灵魂在于 .claude-plugin/plugin.json。
2. 编写 Manifest(清单文件)
在 session-logger/.claude-plugin/plugin.json 中写入:
{
"name": "session-logger",
"description": "将绘画摘要记录到 Markdown 文件",
"version": "1.0.0"
}
注意:这里的 name 会成为你命令的前缀。
3. 定义 Skill 逻辑
在 session-logger/skills/summarize/SKILL.md 中定义具体的行为逻辑。文件名必须是 SKILL.md:
---
description: 总结当前会话并记录到 SESSION_LOG.md
disable-model-invocation: true
---
被调用时,请回顾之前的对话并生成包含以下部分的摘要:
- **日期/时间**: 当前时间戳
- **完成的任务**: 实现了哪些功能
- **修改的文件**: 列出新建或更改的文件
- **技术决策**: 架构或实现上的选择
将摘要追加到项目根目录的 SESSION_LOG.md 中。如果文件不存在则创建它。
这里 disable-model-invocation: true 非常关键。它意味着这个命令只能由你手动输入触发,防止 Claude 在它觉得“该总结了”的时候自作主张运行。
4. 本地测试
进入你想要试用插件的项目目录,启动 Claude Code 时指向你的插件路径:
cd ~/my-project
claude --plugin-dir ~/path/to/session-logger
现在输入 /session-logger:summarize,你会发现 Claude 乖乖地开始分析你们的对话并写日志了。
总结
插件的真正魅力不在于它能写多么复杂的代码,而在于它能把原本碎片化的、需要反复叮嘱 AI 的规则转化为标准化的工具。
如果你经常发现自己在反复教 Claude 同样的背景知识,或者在重复同样的检查步骤,那可能就是该写个插件的时候了。建议去 GitHub 的 awesome-claude-code 库转转,看看别人是怎么组织逻辑的。很多时候,一个精巧的插件只需要几个 Markdown 文件和几行配置,就能省下你每天大把的“调教”时间。
关于
关注我获取更多资讯