Claude Code 扩展体系
Claude Code 六大扩展机制深度解析:Plugins、Skills、Agents、Hooks、MCP Servers、LSP Plugins 的区别与使用场景。
# 一、整体架构总览
Claude Code 不仅仅是一个对话式 AI 编辑器,它是一个可深度定制的 AI 开发平台。它的扩展体系可以看成一套从底层协议到上层智能体的六层架构:
Claude Code 核心
↑
Plugins(扩展包 — 安装单元)
↑
├─ Skills(能力模块)
├─ Agents(子代理)
├─ Hooks(生命周期钩子)
├─ MCP Servers(工具协议服务)
└─ LSP Plugins(语言服务插件)
2
3
4
5
6
7
8
9
这六个组件并非互斥关系,而是不同维度、不同粒度的扩展手段。理解它们的分工,才能在实际项目中做出正确的选择。
# 二、六大组件详解
# 2.1 Plugin(插件包)
Plugin 是 Claude Code 的扩展安装单元,可以理解为 Claude Code 的"App Store 应用"。
# 本质
Plugin = 一个自包含的组件目录,可包含多种扩展的打包集合
一个 Plugin 可以同时包含:
- 5 个 Skills
- 10 个 Slash Commands
- 3 个 MCP Servers
- 若干 Hooks
- 若干 Agents
# 安装方式
# 从官方市场安装
claude plugin install <plugin-name>
# 从本地目录安装
claude plugin install ./my-plugin
2
3
4
5
# 类比
| 类比 | 说明 |
|---|---|
| VS Code Extension | 功能扩展的安装包 |
| npm package | 可分发、可版本化的代码包 |
| Chrome Extension | 浏览器功能的扩展集合 |
Plugin 解决的是**"如何分发和安装扩展"**的问题。
# 2.2 Skill(技能模块)
Skill 是 Claude Code 中最轻量、最常用的能力扩展方式,本质是给 AI 提供一段结构化的指令(Prompt + 工作流)。
# 本质
Skill = Prompt + Tool + Workflow
更具体地说:
Skill = SKILL.md(YAML 元数据 + Markdown 指令)
# 目录结构
.claude/skills/
├── deploy-github-pages/
│ └── SKILL.md
├── code-review/
│ └── SKILL.md
├── release/
│ └── SKILL.md
└── ...
2
3
4
5
6
7
8
# SKILL.md 结构示例
---
name: deploy-github-pages
description: 自动构建并部署 VuePress 网站到 GitHub Pages
---
请自动构建并部署当前 VuePress 项目到 GitHub Pages。
## 部署流程
1. 检查 Git 状态
2. 构建静态文件(npm run build)
3. 执行部署(npm run deploy)
4. 清理临时文件
2
3
4
5
6
7
8
9
10
11
12
13
# 核心特性
| 特性 | 说明 |
|---|---|
| 自动触发 | Claude 根据对话内容自动判断是否需要调用某个 Skill |
| 渐进加载 | 元数据常驻内存,正文按需加载,资源随用随取 |
| 参数注入 | 支持 $ARGUMENTS 动态传参和 !command 实时状态注入 |
| 零部署 | 纯文本文件,无需编译,直接生效 |
# 类比
| 类比 | 说明 |
|---|---|
| 函数/方法 | 封装了一段可复用的业务逻辑 |
| 模板 | 预设了标准流程和检查清单 |
| 菜谱 | 按步骤执行的标准操作流程 |
Skill 解决的是**"如何让 Claude 掌握特定领域知识和标准流程"**的问题。
# 2.3 Agent / Subagent(子代理)
Agent(或 Subagent)是 Claude Code 中的独立工作单元,用于并行处理复杂任务或隔离不同上下文。
# 本质
Subagent = 独立上下文的 Claude 会话,可并行运行
当主 Claude 会话遇到一个复杂任务时,可以"派生"一个子代理去独立完成,然后汇总结果。
# 使用方式
# 通过 Task 工具启动(代码中)
Task tool -> 选择 subagent_type -> 分配任务
# 或通过配置定义(.claude/agents/)
2
3
4
# 核心特性
| 特性 | 说明 |
|---|---|
| 上下文隔离 | 每个 Subagent 启动时是干净的上下文,不会继承主会话的历史 |
| 并行执行 | 多个 Subagent 可以同时运行,提升效率 |
| 模型可选 | 可为不同任务选择不同模型(Haiku 做简单任务,Opus 做复杂推理) |
| 权限最小化 | 可限制 Subagent 的工具权限(如只读权限做 Code Review) |
# 常见 Subagent 类型
| 类型 | 用途 | 推荐模型 |
|---|---|---|
code-reviewer | 代码审查 | Sonnet |
task-executor | 执行任务 | Sonnet |
design-agent | 设计方案 | Opus |
general-purpose | 通用研究 | Sonnet |
# 类比
| 类比 | 说明 |
|---|---|
| 线程/协程 | 并发执行的工作单元 |
| 外包团队 | 主控方派出去执行专项任务的团队 |
| Docker 容器 | 环境隔离、资源可控的运行单元 |
Agent 解决的是**"如何将大任务拆解为可并行执行的子任务,并隔离风险"**的问题。
Skill vs Agent 核心区别:Skill 是"能力插件"(在当前会话中执行),Agent 是"独立工作者"(在新会话中独立执行)。Skill 像函数调用,Agent 像启动新进程。
# 2.4 Hook(生命周期钩子)
Hook 是 Claude Code 的"事件监听器",在特定生命周期事件触发时自动执行预设的动作。
# 本质
Hook = 事件 + Matcher + 处理器
# 配置位置
// .claude/settings.json
{
"hooks": [
{
"event": "PreToolUse",
"matcher": "Write|Edit",
"command": "echo '正在修改文件...'"
}
]
}
2
3
4
5
6
7
8
9
10
# 核心组件
| 组件 | 说明 |
|---|---|
| Event(事件) | 触发 Hook 的生命周期节点 |
| Matcher(匹配器) | 正则表达式,过滤哪些工具调用会触发 Hook |
| Handler(处理器) | 触发后执行的动作,有三种类型 |
# Handler 三种类型
| 类型 | 说明 | 适用场景 |
|---|---|---|
| Command | 执行 Shell 命令,通过 exit code 决定通过/阻断 | 格式化、lint、文件检查 |
| Prompt | 发送提示给 LLM 做单轮评估 | 安全分类、模式审查 |
| Agent | 启动 Subagent 做深度分析 | 跨文件验证、复杂审查 |
# 主要生命周期事件
| 事件 | 触发时机 | 能否阻断 | 典型用途 |
|---|---|---|---|
PreToolUse | 工具执行前 | 可以 | 安全门禁、权限检查、保护关键文件 |
PostToolUse | 工具执行后 | 否 | 自动格式化、lint、日志记录 |
Notification | 发送通知时 | 否 | 告警、监控 |
Stop | Claude 完成响应时 | 否 | 最终质量检查 |
SubagentStop | Subagent 完成时 | 否 | 子任务结果验证 |
# 生产级使用案例
// 自动格式化
{
"event": "PostToolUse",
"matcher": "Write|Edit",
"command": "npx prettier --write $FILEPATH"
}
// 保护关键文件
{
"event": "PreToolUse",
"matcher": ".*\\.env.*|.*middleware.*",
"command": "echo '禁止修改关键文件' && exit 1"
}
2
3
4
5
6
7
8
9
10
11
12
13
# 类比
| 类比 | 说明 |
|---|---|
| Git Hooks | 在 git 操作的特定时机执行脚本 |
| 中间件 | 在请求处理流程中插入拦截逻辑 |
| CI/CD Pipeline | 在构建流程的节点执行检查和任务 |
Hook 解决的是**"如何在 Claude Code 的关键节点自动执行规则检查和质量控制"**的问题。
# 2.5 MCP Server(Model Context Protocol)
MCP Server 是 Claude Code 与外部工具/服务通信的标准协议,由 Anthropic 提出,旨在统一 AI 调用外部资源的方式。
# 本质
MCP = AI 世界的 HTTP / 驱动协议
Claude Code → MCP Client → MCP Server → 外部工具/API
# 核心架构
| 角色 | 说明 |
|---|---|
| MCP Client | Claude Code 内置,负责与 MCP Server 通信 |
| MCP Server | 独立进程,封装了具体工具的实现 |
| Tools | Server 暴露给 AI 可调用的具体能力 |
# 使用场景
| 场景 | 示例 |
|---|---|
| 数据库操作 | AI → MCP → PostgreSQL |
| GitHub 集成 | AI → MCP → GitHub API |
| 浏览器自动化 | AI → MCP → Puppeteer |
| 文件系统 | AI → MCP → File System |
| Slack 消息 | AI → MCP → Slack |
# 与 Plugin 中其他组件的区别
Skill = 教 Claude "怎么做"(知识 + 流程)
MCP = 给 Claude "新工具"(新能力 + API)
2
# 类比
| 类比 | 说明 |
|---|---|
| HTTP | Web 通信的标准协议 |
| SQL | 数据库查询的标准语言 |
| USB 驱动 | 操作系统与外设通信的桥梁 |
MCP 解决的是**"如何让 Claude Code 统一、安全地调用外部工具和 API"**的问题。
# 2.6 LSP Plugin(Language Server Protocol)
LSP Plugin 是 Claude Code 与语言服务器通信的插件,提供代码补全、诊断、导航、重构等 IDE 级语言服务。
# 本质
LSP Plugin = Claude Code 中的 IDE 语言支持
Claude Code → LSP Client → LSP Server → 语言分析引擎
# 核心能力
| 能力 | 说明 |
|---|---|
| 代码补全 | 智能提示变量、函数、类名 |
| 错误诊断 | 实时显示语法和类型错误 |
| 跳转定义 | 跳转到符号的定义位置 |
| 查找引用 | 查找符号的所有引用位置 |
| 重命名重构 | 安全地重命名变量、函数、类 |
| 悬停提示 | 显示类型签名和文档 |
# 与其他组件的核心区别
| 组件 | 作用域 | 输入 | 输出 |
|---|---|---|---|
| Skill | 通用任务 | 自然语言指令 | 自然语言回答 / 操作 |
| MCP | 外部工具 | 工具调用参数 | 工具执行结果 |
| LSP | 代码语义 | 代码文件内容 | 代码分析结果(位置、类型、补全) |
LSP 不直接参与 AI 的推理过程,而是增强 Claude Code 对代码的理解能力,让 AI 更准确地操作代码。
# 类比
| 类比 | 说明 |
|---|---|
| VS Code 的语言插件 | 提供特定语言的支持 |
| 编译器前端 | 解析代码、提供语义分析 |
| 代码地图 | 帮助 AI 理解代码结构和关系 |
LSP 解决的是**"如何让 Claude Code 深度理解代码的语义和结构"**的问题。
# 三、六大组件对比总表
| 维度 | Plugin | Skill | Agent | Hook | MCP | LSP |
|---|---|---|---|---|---|---|
| 本质 | 扩展安装包 | 能力指令文件 | 独立工作会话 | 事件监听器 | 工具通信协议 | 语言分析协议 |
| 载体 | 目录 / npm 包 | SKILL.md | 配置文件 / Task | settings.json | 独立进程 | 独立进程 |
| 粒度 | 粗(打包多种扩展) | 细(单一能力) | 中(完整任务) | 细(单一动作) | 中(一组工具) | 中(语言支持) |
| 触发方式 | 安装即生效 | 自动/手动触发 | 显式调用 | 事件自动触发 | 模型决策调用 | 代码编辑时自动 |
| 上下文 | 全局 | 当前会话 | 隔离新会话 | 当前会话 | 外部系统 | 当前工作区 |
| 可并行 | 否 | 否 | 是 | 否 | 是 | 是 |
| 能否阻断 | 否 | 否 | 否 | PreToolUse 可以 | 否 | 否 |
| 适用场景 | 分发扩展 | 标准化流程 | 复杂任务拆解 | 质量门禁 | 外部工具集成 | 代码理解增强 |
# 四、决策矩阵:什么时候用什么
# 4.1 按需求选择
你想给 Claude 装一个新功能?
├─ 这个功能需要用到外部 API/工具?
│ └─ 用 MCP Server
├─ 这个功能是代码语言相关的(补全、诊断)?
│ └─ 用 LSP Plugin
├─ 这个功能是一套标准操作流程?
│ └─ 用 Skill
├─ 这个功能需要在特定时机自动执行?
│ └─ 用 Hook
├─ 这个功能需要独立处理大任务?
│ └─ 用 Agent/Subagent
└─ 以上多个都要,还要分发给别人用?
└─ 打包成 Plugin
2
3
4
5
6
7
8
9
10
11
12
13
# 4.2 具体场景对照
| 你的需求 | 推荐方案 | 原因 |
|---|---|---|
| "帮我按标准流程部署网站" | Skill | 标准化操作流程,可复用 |
| "帮我审查这份代码" | Agent | 需要隔离上下文,专注审查 |
| "修改代码后自动格式化" | Hook | 在 Write/Edit 后自动触发 |
| "帮我查询数据库" | MCP | 需要与外部数据库通信 |
| "帮我补全代码" | LSP | 需要语言级别的语义分析 |
| "把这些能力打包分享" | Plugin | 分发和版本化管理 |
# 五、架构类比(工程理解)
将 Claude Code 扩展体系类比为一个软件公司:
| Claude Code 组件 | 公司角色 | 职责 |
|---|---|---|
| Plugin | 部门/事业部 | 打包多种资源的组织单元 |
| Skill | 标准操作手册(SOP) | 定义具体业务的标准流程 |
| Agent | 外包/临时团队 | 独立执行专项任务,报告结果 |
| Hook | 审计/质检部门 | 在关键节点检查合规性 |
| MCP | 对外合作 API | 与外部系统(客户、供应商)通信 |
| LSP | 技术顾问 | 提供专业领域(代码)的深度知识 |
# 六、实际项目配置案例
以下是一个完整的 VuePress 项目 .claude/ 目录结构,展示了六种组件的协同使用:
.claude/
├── settings.json # Hooks 配置
├── skills/
│ ├── deploy-github-pages/ # Skill: 部署网站
│ │ └── SKILL.md
│ ├── code-review/ # Skill: 代码审查
│ │ └── SKILL.md
│ └── release/ # Skill: 完整发布流程
│ └── SKILL.md
├── agents/
│ └── task-executor.json # Agent: 任务执行器配置
└── mcp/
└── github.json # MCP: GitHub 集成
2
3
4
5
6
7
8
9
10
11
12
13
# 典型工作流
1. 用户输入:"帮我发布网站"
↓
2. Skill 触发:release Skill 加载部署流程
↓
3. Agent 介入:Code Review Agent 并行审查代码
↓
4. Hook 执行:PreToolUse 检查是否有未提交更改
↓
5. MCP 调用:通过 GitHub MCP 查询远程仓库状态
↓
6. 构建执行:运行 npm run build
↓
7. Hook 执行:PostToolUse 自动格式化生成的文件
↓
8. 部署完成:通过 deploy Skill 推送到 GitHub Pages
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 七、核心公式
Claude Code 扩展能力 = Plugin(打包) + Skill(知识) + Agent(并行) + Hook(门禁) + MCP(外部工具) + LSP(代码理解)
| 场景 | 最小必要组合 |
|---|---|
| 标准化开发流程 | Skill + Hook |
| 复杂项目开发 | Skill + Agent + Hook |
| 全栈项目 | Skill + Agent + Hook + MCP |
| 深度代码工程 | Skill + Agent + Hook + LSP |
| 团队共享配置 | Plugin(打包以上全部) |
# 八、总结
Claude Code 的六大扩展机制不是互相替代的关系,而是从安装分发、知识注入、任务并行、质量门禁、外部集成、语义理解六个维度共同构建了一个完整的 AI 开发平台。
理解它们的关键在于记住一句话:
Plugin 解决"怎么装",Skill 解决"怎么做",Agent 解决"谁来做",Hook 解决"何时检查",MCP 解决"用什么做",LSP 解决"理解代码"。