把 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 -rfDROP 操作):

{
  "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 安装时 不定(取决于内容) 按需安装

优化建议

  1. CLAUDE.md 精简:200 行以内,参考文档放 Skills
  2. Skills 手动化:大型文档设 disable-model-invocation: true
  3. Subagent 隔离:大段分析任务用 Subagent,避免主会话膨胀
  4. 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 打包分发的安装包,把上述能力打包成可复用、可分享的单元

渐进式采用建议

  1. 🟢 入门:先写好 CLAUDE.md,把项目核心约定放进去
  2. 🟡 进阶:添加 Skills 和 Hooks,建立可复用工作流
  3. 🔴 高级:按需引入 MCP、Subagents,甚至 Agent Teams

扩展的乐趣,恰恰在于按需渐进——不需要一步到位,用着用着发现有重复操作再加 Skills,需要外部数据再加 MCP,需要安全拦截再加 Hooks。


十五、参考资源

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐