三、Claude Code 的七个扩展点
把 Claude Code 从一个聪明的编程助手,变成一套可定制的智能开发平台。
一、前言
用过 Claude Code 的人大概都有这种感觉:它本身已经足够强大——能读代码、搜文件、跑命令,甚至直接访问网页。但真正让它变得"无所不能"的,是围绕它搭建的扩展层。
如果把 Claude Code 比作一位聪明的工程师,那它的内置工具就是这位工程师的双手和大脑。而扩展层,则是给他配上的专属工具箱、外部连接器,甚至是一整支可协作的团队。
Claude Code 的扩展生态由七个角色组成,各司其职、按需组合:
| 序号 | 扩展点 | 一句话定位 | 加载时机 | 上下文成本 |
|---|---|---|---|---|
| 1 | CLAUDE.md | 项目"宪法" | 每次会话自动加载 | 高(每个请求都带) |
| 2 | Skills | 按需调用的技能卡 | 按需加载 | 低(描述常驻) |
| 3 | Subagents | 隔离执行的专项工作者 | 任务时生成 | 零(与主会话隔离) |
| 4 | Agent Teams | 多智能体协作网络 | 独立实例 | 高(每个 Agent 独立) |
| 5 | MCP | 连接外部世界的插头 | 会话开始时 | 中(工具定义) |
| 6 | Hooks | 事件驱动的自动化触发器 | 事件触发时 | 零(不占上下文) |
| 7 | Plugins | 打包分发的安装包 | 安装时 | 取决于内容 |
核心原则:将"始终需要"放 CLAUDE.md,"偶尔需要"放 Skills,"大段分析"用 Subagents,"确定性操作"用 Hooks。
二、扩展机制全景图
理解这七个扩展点的关键,在于理解它们在 Agent Loop(智能体循环) 中的插入点。Claude Code 的核心工作方式是一个循环:模型分析代码 → 调用工具完成操作 → 获取结果 → 继续推理。每个扩展点都在这个循环的不同阶段发挥作用。
各阶段插入的机制:
| 阶段 | 插入机制 | 作用 |
|---|---|---|
| Claude 推理前 | CLAUDE.md、Skills、Subagents | 注入上下文和知识 |
| 工具调用前 | Hooks (PreToolUse) | 拦截、验证、记录 |
| 执行结果后 | Hooks (PostToolUse)、MCP | 后处理、触发外部动作 |
按加载时机又可以分成四类:
| 加载时机 | 机制 | 特点 |
|---|---|---|
| 会话开始 | CLAUDE.md、MCP | 自动加载,常驻上下文 |
| 按需调用 | Skills、Subagents | 手动触发或智能匹配 |
| 事件触发 | Hooks | 响应特定生命周期事件 |
| 安装时 | Plugins | 打包复用,跨项目分发 |
理解了全景图,下面我们逐一深入每个扩展点。
三、CLAUDE.md:项目的"宪法"
3.1 定位
CLAUDE.md 是 Claude Code 最简单也最核心的扩展。它本质上是一个 Markdown 文件,里面写着**“永远记住这些规矩”**。Claude 每次启动会话时,都会自动把这些内容读进上下文,成为它行动的底层准则。
3.2 加载机制
Claude 会从当前工作目录向上遍历,收集所有层级的 CLAUDE.md。子目录中的文件在进入该目录工作时动态加载。
/project/CLAUDE.md ← 项目级约定(全局生效)
/project/frontend/CLAUDE.md ← 前端特定约定(进入 frontend/ 时加载)
/project/backend/CLAUDE.md ← 后端特定约定(进入 backend/ 时加载)
此外,CLAUDE.md 还有三级作用域:
| 级别 | 位置 | 作用域 | 版本控制 |
|---|---|---|---|
| 项目级 | .claude/CLAUDE.md 或项目根目录 |
团队共享 | 提交到 Git |
| 用户级 | ~/.claude/CLAUDE.md |
个人所有项目 | 不提交 |
| 托管级 | 由组织管理员配置 | 全组织 | 集中管理 |
3.3 与 Memory 的区别
| 维度 | CLAUDE.md | Memory |
|---|---|---|
| 位置 | 项目根目录 | 用户目录 |
| 作用域 | 团队共享 | 个人偏好 |
| 版本控制 | 提交到 Git | 不提交 |
| 内容性质 | 技术规范、架构约定 | 用户偏好、决策记录 |
3.4 上下文成本
每个请求都会带上 CLAUDE.md 的内容。200 行的 CLAUDE.md 意味着每次交互都持续消耗 token。
3.5 最佳实践
- 保持精简:控制在 200 行以内
- 内容膨胀时:将参考性文档迁移到 Skills,或拆分到
.claude/rules/目录 - 支持
@path导入:可以引用外部文件,减少重复编写
示例 CLAUDE.md:
## 技术栈
Next.js 14 + TypeScript + Prisma + PostgreSQL
## 目录结构
- /app — 页面和 API 路由
- /components — UI 组件
- /lib — 工具函数
- /prisma — 数据库 schema
## 编码规范
- 使用命名导出,不用默认导出
- 组件用函数组件 + hooks
- API 路由必须有错误处理
## 禁止
- 不要修改 /lib/auth.ts
- 不要在组件里直接 fetch
## 测试
npm test / npm run test:e2e
3.6 适用场景
- 项目编码规范、构建命令
- 项目结构说明
- "禁止执行"类规则(如禁止硬编码密钥)
- 团队约定俗成的工作流
四、Skills:按需调用的"技能卡"
4.1 定位
如果说 CLAUDE.md 是每次开会都带着的笔记本,那 Skills 就是一本本按需翻阅的参考手册。每个 Skill 也是一个 Markdown 文件,里面可以放知识、工作流程或操作指南。
4.2 两种形态
| 类型 | 示例 | 触发方式 |
|---|---|---|
| 参考型 | API 风格指南、数据库 Schema 文档 | Claude 自动匹配(对话涉及相关话题时加载) |
| 操作型 | /deploy、/audit、/tdd |
手动执行 /name 命令 |
4.3 配置结构
~/.claude/skills/
└── code-review/
├── SKILL.md ← 技能定义
└── references/
└── checklist.md ← 参考资料
SKILL.md 示例:
---
name: code-review
description: Review code for security and performance
allowed-tools: Read, Bash
context: fork # 在隔离上下文中执行
---
审查代码变更,重点关注安全性和性能。
流程:
1. 获取 diff:git diff
2. 逐文件审查
3. 输出审查报告
参考资料:参见 checklist.md
4.4 关键配置项
| 配置 | 作用 |
|---|---|
disable-model-invocation: true |
Claude 不会自动调用,仅支持手动 /skill-name |
context: fork |
在隔离上下文中执行,避免污染主会话 |
allowed-tools |
限制该 Skill 可使用的工具 |
4.5 与 CLAUDE.md 的核心区别
| 维度 | CLAUDE.md | Skills |
|---|---|---|
| 加载时机 | 每次会话自动加载 | 按需加载 |
| 内容性质 | “始终遵循 X” | “有时参考 X” |
| 可触发工作流 | ❌ | ✅ |
| 上下文成本 | 高 | 低(仅描述常驻) |
4.6 适用场景
- 部署流程(
/deploy) - API 设计规范文档
- 代码审查清单
- 常用代码片段模板
- 重复性任务的标准化操作
五、Subagents:隔离执行的"专项工作者"
5.1 定位
Subagents 是在隔离上下文环境中运行的独立执行单元。它们的核心价值在于——处理完任务后,只把最终摘要结果带回主会话,中间过程不占用主上下文。
主会话 (200K token)
├── 用户对话
├── CLAUDE.md
└── Subagent 返回的摘要 (~2K token)
Subagent (独立上下文)
├── 读取 50 个文件
├── 深度分析过程
└── 生成摘要 → 返回给主会话
5.2 核心价值
- 上下文隔离:Subagent 可以读取数十个文件进行深度分析,主会话只接收结论
- 并行执行:可以同时派出多个 Subagent,分别做不同的事
- 成本优势:仅返回摘要,token 消耗远低于在主会话中处理
5.3 配置示例
创建 .claude/agents/reviewer.md:
---
description: "Expert code reviewer. Triggers after code changes."
tools:
- Read
- Grep
- Glob
- Bash
model: sonnet
---
You are a senior code reviewer with expertise in TypeScript.
When reviewing code:
1. Read the git diff first
2. Check each modified file for type safety, error handling, performance
3. Be specific: reference exact file paths and line ranges
4. Output: APPROVE / REQUEST_CHANGES / COMMENT
5.4 与 Agent Teams 的区别
| 特性 | Subagents | Agent Teams |
|---|---|---|
| 上下文 | 依附主会话(隔离但汇报) | 完全独立 |
| 通信方式 | 单向汇报给主 Agent | 队友间可直接通信 |
| 协调方式 | 主 Agent 管理 | 自我协调 |
| 成本 | 低 | 高(每个 Agent 独立实例) |
5.5 适用场景
- 大范围代码调研(遍历整个项目返回关键发现)
- 并行代码审查(安全/性能/风格各派一个)
- 构建错误修复
- 假设验证(独立验证技术方案可行性)
六、Agent Teams:协同作战的"团队"
6.1 定位
Agent Teams 比 Subagents 更进一步——它协调多个完全独立的 Claude Code 会话,各会话(队友)可以点对点通信、共享任务列表,像一支真正的团队那样分工协作。
⚠️ 注意:Agent Teams 目前为实验性功能,默认禁用。
6.2 适用场景
- 并行代码审查:安全审查员、性能审查员、风格审查员同时工作后交叉验证
- 多模块开发:不同 Agent 负责不同模块
- 复杂研究:需要多轮讨论和观点碰撞的研究任务
- 竞争假设调试:多个假设并行验证
6.3 配置方式
agents:
security-reviewer:
skills: [security-guidelines, owasp-checklist]
context: fork
performance-reviewer:
skills: [performance-patterns, profiling-guide]
context: fork
6.4 成本警告
每个 Agent Team 成员都是独立的 Claude 实例,token 成本累加。仅在确实需要并行独立工作且需要互相通信时才使用。如果只需要隔离执行,Subagents 是更经济的选择。
6.5 何时从 Subagents 升级到 Agent Teams
当 Subagent 需要:
- 相互通信(不只是汇报给主 Agent)
- 多轮讨论(不只是执行一次就返回)
- 共享状态(不只是各自独立工作)
七、MCP:连接外部世界的"插头"
7.1 定位
MCP(Model Context Protocol)是一个标准化协议层,让 Claude 能够连接到外部服务和工具。它把 Claude 的能力从"代码世界"延伸到了"外部世界"——可以直接查询数据库、往 Slack 发消息、控制浏览器。
7.2 与 Skills 的协同关系
MCP 和 Skills 经常被混淆,但它们的定位完全不同:
MCP 提供"能力":数据库连接、API 调用、浏览器控制
↓
Skill 提供"知识":Schema 文档、查询模式、消息格式
↓
用户说"分析销售趋势" → Claude 知道查哪张表、怎么查
| 维度 | MCP | Skill |
|---|---|---|
| 定位 | 连接能力 | 使用说明 |
| 类比 | “能连上数据库” | “数据库表结构是什么、怎么查最顺手” |
| 搭配使用 | 经常配合 Skill 一起使用 | 经常配合 MCP 一起使用 |
7.3 配置示例
在 ~/.claude/settings.json 中配置:
{
"mcpServers": {
"postgres": {
"command": "uvx",
"args": ["mcp-server-postgres", "postgresql://localhost/mydb"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-key"
}
}
}
}
7.4 安全检查清单
添加 MCP 前必须检查:
- ✅ GitHub stars > 50
- ✅ 最近 30 天有提交
- ✅ 无
--dangerous-*标志 - ✅ 版本锁定(不用
latest) - ✅ 验证 npm 包哈希
7.5 何时添加 MCP
不要一开始就配置 MCP。 推荐的渐进顺序:
CLAUDE.md → Skills → Hooks → 有明确需求时才加 MCP
八、Hooks:事件驱动的"自动化触发器"
8.1 定位
Hooks 是完全独立于 LLM 之外运行的脚本。它们不经过模型推理,而是由特定事件直接触发,执行一些确定性操作。这意味着它们零上下文成本。
8.2 触发时机
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
| PreToolUse | Claude 调用工具前 | 拦截危险操作、参数校验 |
| PostToolUse | Claude 调用工具后 | 自动格式化、发送通知 |
| Notification | 通知事件 | 自定义通知渠道 |
| Stop | 任务完成时 | 收尾清理、生成报告 |
8.3 典型用例
自动格式化(每次 Claude 写入文件后自动执行 Prettier):
{
"hooks": {
"PostToolUse": [{
"matcher": "Write",
"hooks": [{
"type": "command",
"command": "prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
}]
}]
}
}
危险命令拦截(阻止 rm -rf 和 DROP 操作):
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|DROP'; then echo 'Blocked'; exit 1; fi"
}]
}]
}
}
Slack 通知(文件变更时自动通知团队):
{
"hooks": {
"PostToolUse": [{
"matcher": "Write",
"hooks": [{
"type": "command",
"command": "curl -X POST -d '{\"text\":\"File updated: '\"$CLAUDE_FILE_PATH\"'\"}' YOUR_SLACK_WEBHOOK"
}]
}]
}
}
8.4 核心优势
- 零上下文成本:Hooks 作为外部脚本运行,不占用 Claude 的上下文窗口
- 确定性执行:不经过模型推理,结果完全可预测
- 高执行效率:直接调用系统命令,无 LLM 推理开销
九、Plugins:打包分发的"安装包"
9.1 定位
Plugin 是前面所有扩展能力的打包层。一个 Plugin 可以把 Skills、Hooks、Subagents、MCP 服务器全部打包成一个可安装的单元,方便跨项目复用和分享。
9.2 目录结构
my-plugin/
├── .claude-plugin/
│ └── plugin.json ← 插件清单
├── skills/ ← 技能定义
├── agents/ ← 子 Agent 定义
├── hooks/
│ └── hooks.json ← 事件钩子
├── .mcp.json ← MCP 服务器配置
├── .lsp.json ← LSP 语言服务配置
└── monitors/
└── monitors.json ← 后台监控配置
9.3 命名空间隔离
Plugin 里的 Skills 有命名空间(如 /my-plugin:review),这样不同插件之间即使有同名功能也不会冲突。
9.4 分发方式
- 通过 Plugin Marketplace 分享给社区
- 通过 Git URL 安装
- 通过本地路径安装
9.5 与其他扩展的关系
Plugin 不是一个独立的扩展类型,而是一个打包容器:
Plugin = Skills + Hooks + Subagents + MCP + LSP + Monitors
十、上下文成本管理
七个扩展点的上下文成本差异巨大,合理的成本管理是高效使用 Claude Code 的关键。
各机制开销汇总:
| 机制 | 加载时机 | 成本级别 | 优化策略 |
|---|---|---|---|
| CLAUDE.md | 会话开始 | 高(每次请求都带) | 保持精简,拆分到 Rules |
| Skills | 按需 | 低(描述常驻) | 大型文档设 disable-model-invocation |
| MCP | 会话开始 | 中(工具定义) | 工具延迟加载 |
| Subagents | 任务时 | 零(与主会话隔离) | 天然隔离 |
| Hooks | 触发时 | 零(不占上下文) | 控制返回内容 |
| Agent Teams | 独立实例 | 高(每个 Agent 独立) | 仅在必要时启用 |
| Plugins | 安装时 | 不定(取决于内容) | 按需安装 |
优化建议:
- CLAUDE.md 精简:200 行以内,参考文档放 Skills
- Skills 手动化:大型文档设
disable-model-invocation: true - Subagent 隔离:大段分析任务用 Subagent,避免主会话膨胀
- MCP 谨慎添加:有明确需求时才加,不要一开始就配置
十一、功能组合模式
七个扩展点不是孤立使用的,它们之间可以灵活组合,形成强大的协作模式:
模式 1:Skill + MCP(知识 + 能力)
MCP:PostgreSQL 数据库连接
Skill:数据模型文档 + 查询模板
效果:用户说"分析销售趋势" → Claude 知道查哪张表、怎么查
模式 2:Skill + Subagents(流程 + 并行执行)
Skill:定义审查流程
Subagent A:检查安全性
Subagent B:检查性能
Subagent C:检查代码风格
主会话:汇总报告
模式 3:CLAUDE.md + Skills(宪法 + 手册)
CLAUDE.md:"遵循 RESTful API 约定"
Skill:完整的 API 设计规范文档
模式 4:Hook + MCP(事件 + 外部动作)
Hook:监听文件写入事件
MCP:发送 Slack 通知
效果:团队实时收到代码变更提醒
模式 5:Plugin 全包(一键安装)
Plugin 包含:
- 项目规范 CLAUDE.md
- 3 个 Skills(review / deploy / test)
- 2 个 Hooks(格式化 + 安全检查)
- 1 个 MCP(数据库连接)
效果:新成员一键安装,立即可用
十二、选型决策树
面对具体需求时,如何选择合适的扩展方式?
决策流程:
需要持久化到每个会话?
├── 是 → CLAUDE.md 或 .claude/rules/
│ └── 针对特定目录?
│ ├── 是 → .claude/rules/ + paths
│ └── 否 → CLAUDE.md
└── 否 → 需要连接外部服务?
├── 是 → MCP
└── 否 → 需要并行/隔离执行?
├── 是 → 需要互相通信?
│ ├── 是 → Agent Teams
│ └── 否 → Subagents
└── 否 → Skills
需要事件自动化? → Hooks
需要跨项目复用? → Plugins
十三、容易混淆的概念对比
13.1 Skill vs Subagent
| 维度 | Skill | Subagent |
|---|---|---|
| 本质 | “内容”——知识或流程 | “工人”——独立执行者 |
| 运行方式 | 加载到当前对话 | 独立上下文运行 |
| 可复用性 | 可以被任何对话加载 | 每次任务生成 |
| 配合使用 | Skill 可以派生出 Subagents 去并行执行 | Subagent 可以预加载 Skill |
13.2 CLAUDE.md vs Skill
| 维度 | CLAUDE.md | Skill |
|---|---|---|
| 加载 | 每次都带着 | 需要时才翻出来 |
| 适合 | 必须时刻遵守的规矩 | 厚厚的技术文档和操作流程 |
13.3 Subagent vs Agent Team
| 维度 | Subagent | Agent Team |
|---|---|---|
| 类比 | 单个独立工人 | 一群可以互相通信的团队 |
| 通信 | 只向主 Agent 汇报 | 队友间可以直接通信 |
| 成本 | 较低 | 较高 |
13.4 MCP vs Hook
| 维度 | MCP | Hook |
|---|---|---|
| 触发方式 | 模型决定调用 | 事件自动触发 |
| 是否经过 LLM | 是(模型选择调用工具) | 否(确定性脚本) |
| 用途 | 获取外部数据/操作外部服务 | 自动格式化/安全检查/通知 |
十四、总结
Claude Code 的扩展体系设计得相当有层次感,七个扩展点各有其不可替代的定位:
| 扩展点 | 一句话总结 |
|---|---|
| CLAUDE.md | 永远在线的项目宪法,适合放"每次都必须记得"的规矩 |
| Skills | 按需调用的知识库,适合放"有时需要翻阅"的手册和可复用工作流 |
| Subagents | 隔离执行的专项工作者,适合"读多写少"的密集型分析任务 |
| Agent Teams | 多智能体协作网络,适合需要互相通信的复杂协作任务 |
| MCP | 外部世界的连接器,让 Claude 能操作数据库、API、浏览器等外部服务 |
| Hooks | 事件驱动的自动化脚本,零上下文成本,适合确定性操作 |
| Plugins | 打包分发的安装包,把上述能力打包成可复用、可分享的单元 |
渐进式采用建议:
- 🟢 入门:先写好 CLAUDE.md,把项目核心约定放进去
- 🟡 进阶:添加 Skills 和 Hooks,建立可复用工作流
- 🔴 高级:按需引入 MCP、Subagents,甚至 Agent Teams
扩展的乐趣,恰恰在于按需渐进——不需要一步到位,用着用着发现有重复操作再加 Skills,需要外部数据再加 MCP,需要安全拦截再加 Hooks。
十五、参考资源
更多推荐


所有评论(0)