是什么

Claude Code 的扩展体系由六类机制组成,各自解决不同问题:CLAUDE.md 提供持久上下文,Skills 封装可复用工作流,MCP 连接外部服务,Subagents 隔离执行,Hooks 自动化生命周期事件,Plugins 打包分发。选择哪种扩展取决于触发场景,而非功能偏好。

核心机制

六类扩展对比:

扩展作用触发时机上下文开销
CLAUDE.md每次会话自动加载的持久指令会话启动每次请求都加载
Skills可复用的知识和工作流按需(/name 或 Claude 自动匹配)描述常驻,内容按需
MCP连接外部服务和数据源会话启动(工具名),使用时加载 schema低(延迟加载)
Subagents隔离上下文的独立工作者按需派生完全隔离
Hooks生命周期事件触发的脚本自动(事件驱动)零(除非返回输出)
Plugins打包上述功能的分发单元安装后生效取决于内容

渐进式构建原则:不需要一次配置所有扩展,按需添加:

  • Claude 同一错误犯了两次 → 加入 CLAUDE.md
  • 重复输入同一提示词 → 保存为 Skill
  • 反复从浏览器复制 Claude 看不到的数据 → 接入 MCP
  • 侧任务产生大量不需要保留的输出 → 用 Subagent
  • 某个动作必须每次都执行 → 写 Hook
  • 多个仓库需要同一套配置 → 打包成 Plugin

Skill vs Subagent 区别:

  • Skill 是可加载到任意上下文的可复用内容
  • Subagent 是在独立上下文中运行的隔离工作者,只返回摘要

Hook vs Skill 区别:

  • Hook 保证每次触发,适合必须执行的动作(格式化、阻止危险命令)
  • Skill 由 Claude 解读执行,适合需要推理的工作流

关键细节

  • CLAUDE.md 建议控制在 200 行以内,超出后移到 Skills 或 rules/
  • Skills 的 disable-model-invocation: true 可让 Claude 看不到该 Skill,直到用户手动调用
  • MCP 工具 schema 默认延迟加载,只有工具名常驻上下文
  • Subagents 有独立上下文窗口,不继承主会话的对话历史
  • Hooks 的 stdout 默认不进入上下文,需要通过 additionalContext JSON 字段传递给 Claude

关联

实践要点

  • 先用 CLAUDE.md,其他扩展按需添加,不要过度配置
  • CLAUDE.md 里的规则是建议,Hooks 里的规则是强制——安全关键规则用 Hook
  • Skills 的描述决定 Claude 何时自动调用,描述要清晰具体
  • 多个扩展可以组合:MCP 提供连接,Skill 教 Claude 如何使用
  • 用 /context 监控上下文占用,避免扩展配置过多导致性能下降