Dive into Claude Code 扩展机制详解:Hooks、Skills、Plugins、MCP四大注入点全解
【免费下载链接】Dive-into-Claude-CodeA Systematic Analysis and Discussion of Claude Code for Designing Today's and Future AI Agent Systems项目地址: https://gitcode.com/gh_mirrors/di/Dive-into-Claude-Code
想给 Claude Code "加装备"、"装技能"、"接外部工具",却分不清 Hooks、Skills、Plugins、MCP 各自的分工?Dive-into-Claude-Code 项目对 Claude Code 源码做了系统性架构分析,把它的Claude Code 扩展机制讲得明明白白。本文带你用一篇的时间,读懂 Hooks 钩子、Skills 技能、Plugins 插件、MCP 服务器这四大扩展注入点——它们分别"插"在智能体循环的哪一步、各解决什么问题、新手该如何组合使用。
💡 一句话先记住:4 种扩展机制,只作用于 3 个注入点。搞懂这 3 个点,四种机制就不再是四把散落的钥匙。
一张图看懂:三个注入点与四大扩展机制
智能体循环每一轮都走三步,扩展机制就挂在这三步上:
| 注入点 | 控制什么 | 对应机制 |
|---|---|---|
| assemble() | 模型看到什么 | CLAUDE.md、Skill 描述、MCP 资源、Hook 注入的上下文 |
| model() | 模型能调用哪些工具 | 内置工具、MCP 工具、SkillTool、AgentTool |
| execute() | 动作是否 / 如何执行 | 权限规则、PreToolUse / PostToolUse 钩子、Stop 钩子 |
Hooks、Skills、Plugins、MCP 并不是"四个独立系统",而是分别落在这三个位置上的"可插拔积木"——这正是整个扩展体系的核心心智模型。
扩展机制在整个系统里的位置
从整体看,各入口(CLI、SDK、IDE)最终都汇聚到同一个智能体循环;循环向工具发起请求,经权限系统放行后才进入执行环境(文件 / Shell / Web / MCP)。四大扩展机制正是在"工具 + 权限 + 执行环境"这一段上做文章:它们扩展工具面、改写动作、补充上下文,而不改动循环本身。
注入点一:assemble() —— 决定模型看到什么
模型每一轮"看到"的内容由多个来源拼装而成,扩展机制能往里面塞东西:
- Skills:以"技能描述"常驻上下文,让模型知道"我有这个技能,需要时可调用"。
- MCP 服务器:可推送资源与提示词(非工具类内容)。
- Hooks:
UserPromptSubmit、SessionStart等钩子,可在每轮或会话开始时注入一段上下文。 - Output Style:替换响应格式的系统块。
📌 关键认知:注入上下文 ≠ 强制执行。CLAUDE.md、Skill 描述都走"用户上下文"引导模型,但真正"卡住"动作的是权限检查与沙箱。指令与约束要分开看。
注入点二:model() —— 决定模型能调用什么
这一层扩展的是工具面(tool surface)。工具池按 5 步管道组装:
基础枚举(最多 54 个工具)→ 模式过滤 → 拒绝规则预过滤 → MCP 集成 → 去重
- MCP 服务器是这里的主力:外部工具通过 stdio、SSE、HTTP、WebSocket 等 7 种传输接入,与内置工具放进同一个扁平工具池,模型无感。
- SkillTool是"元工具":模型按名字拉起某个 Skill。
- AgentTool是另一个"元工具":模型派生一个子智能体去干活。
注入点三:execute() —— 决定动作怎么跑
这一步是安全与行为的地盘,也是 Hooks 最显身手的地方。
每次工具调用都先过"策略核心(Policy Core)":规则(Rules)+ 模式(Modes)+ 钩子(Hooks)共同产出 Allow / Ask / Deny 的决策。Hooks 在这里能做:
- PreToolUse 钩子:批准 / 拦截 /改写一次工具调用。
- PostToolUse 钩子:改写输出、或向模型追加上下文。
- Stop / SubagentStop 钩子:模型想停时强制循环继续。
- Notification 钩子:给用户通知挂外部副作用。
Claude Code 共有27 个钩子事件,分 5 类,用4 种执行方式跑起来:shell 命令、LLM 评估、webhook、subagent 验证器——既能纯脚本拦截,也能再叫一个 LLM 来"评审"这次调用。
四大机制逐个拆解
Hooks(钩子):生命周期事件 + 可编程拦截
Hooks 是最底层也最灵活的扩展点——直接在execute()上设卡,适合:审计与改写参数、根据运行时状态改变模型行为、把安全策略从硬编码变成外部化可热插拔。
⚠️ 提醒:能注入上下文的 Hook 会占用 token;会调用模型的 Hook 还会产生一次独立推理开销。按需开启,别全开。
Skills(技能):按需加载的能力包
Skill 是一个SKILL.md文件,带 15+ 个 YAML frontmatter 字段,走"先露脸、再上工"路线:
- 描述常驻上下文——让模型知道有这个技能(低成本);
- 被调用时才注入完整指令——把 SKILL.md 正文塞进上下文执行。
这就是 Skills 相比"把规则全写进 CLAUDE.md"的优势:渐进式上下文成本,用到才加载,不占常驻 token。
SkillTool vs AgentTool是新手最容易混的一对:
| SkillTool(技能) | AgentTool(子智能体) | |
|---|---|---|
| 做法 | 把指令注入当前对话 | 在隔离的新对话里干活 |
| 上下文 | 与主对话共享 | 独立侧链转录稿 |
| 适合 | 给当前任务"加知识 / 加流程" | 把整块子任务委派出去、隔离上下文 |
简单说:Skill 是"教模型怎么做",Agent 是"派别人去做"。
Plugins(插件):把一切打包分发
前三种机制是"零件",Plugins 则是把零件装进同一个盒子一起发货。一个插件清单(manifest)可打包10 种组件类型:
命令、智能体、Skills、Hooks、MCP 服务器、LSP 服务器、输出样式、通道、设置、用户配置。
对新手最实用的价值在于**"一次安装、多机制就位"**:一个插件可同时带上 Skill + Hook + MCP 服务器,省去逐个配置。
MCP(模型上下文协议):连接外部世界的标准协议
MCP 是**最"向外"**的机制,把任何外部服务(数据库、API、浏览器、内部系统)变成模型可直接调用的工具:
- 支持7 种传输类型:stdio、SSE、HTTP、WebSocket、SDK、IDE 等;
- MCP 工具与内置工具进入同一个扁平工具池;
- 除工具外还能推送资源 / 提示词(作用于
assemble())。
🌐 安全提示:MCP 服务器在信任对话框弹出之前就可能已执行——这是 Claude Code 曾暴露的两个 CVE 的共同根因。接入第三方 MCP 时,务必确认来源与版本。
四大机制怎么选?一张速查表
| 机制 | 一句话定位 | 主要注入点 | 典型用途 |
|---|---|---|---|
| Hooks | 生命周期钩子,可编程拦截 | execute() | 审计、改写、强制继续 |
| Skills | 按需加载的能力包 | assemble() | 注入专业知识 / 流程 |
| Plugins | 打包一切的"发行盒" | 三处皆可 | 一次安装多种扩展 |
| MCP | 连接外部世界的标准协议 | model() + assemble() | 接入外部服务 / 工具 |
新手组合拳建议:
- 想改行为 / 加安全→ 先用 Hooks;
- 想加知识 / 加流程→ 用 Skills;
- 想接外部工具 / 服务→ 上 MCP;
- 想把上面几样打包分享给团队→ 打成 Plugin。
延伸阅读与资料来源
想深入源码级细节,推荐按这个顺序读:
- 架构总览(含"可扩展性"章节,四大机制对照表):docs/architecture_zh.md
- 项目主 README(关键亮点与阅读指南):README_zh.md
- 完整论文 PDF:paper/Dive_into_Claude_Code.pdf
- 社区项目与研究索引:docs/related-resources_zh.md
🎯 核心回顾:Claude Code 的扩展不是"四个孤立功能",而是4 种机制 × 3 个注入点的组合矩阵。记住
assemble() / model() / execute(),你就能把任意扩展机制准确归位,不再凭感觉配置。
【免费下载链接】Dive-into-Claude-CodeA Systematic Analysis and Discussion of Claude Code for Designing Today's and Future AI Agent Systems项目地址: https://gitcode.com/gh_mirrors/di/Dive-into-Claude-Code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考