扩展 Claude Code
CLAUDE.md、Skill、子智能体、Hooks、MCP、插件各自解决什么问题,什么时候该用哪一个。
内置工具覆盖了大多数编码任务。本页讲的是扩展层:用来定制 Claude 知道什么、连接外部服务、自动化工作流的功能。
刚开始用的话,先从 CLAUDE.md 写项目约定,其他扩展在遇到具体触发场景时再加。
扩展在智能体循环的哪个位置
- CLAUDE.md:每次会话都加载的持久上下文
- 输出风格(Output styles):设定 Claude 在整个会话里的角色、语气和回复格式
- Skill:可复用的知识和可调用的工作流
- 代码智能:接入语言服务器,实现符号级导航和实时类型错误
- MCP:连接外部服务和工具
- 子智能体:在隔离的上下文里运行自己的循环,只返回摘要
- 动态工作流:由 Claude 写的脚本在后台运行大量子智能体,返回一个结果
- 跨会话消息:让 Claude 把一个会话的消息传给另一个会话
- Hooks:Claude Code 到达某个生命周期事件时,运行你的脚本、HTTP 请求、MCP 工具调用、提示词或子智能体
- 插件与市场:把以上功能打包、分发
Skill 是最灵活的扩展:一个包含知识、工作流或指令的 markdown 文件。你可以用 /deploy 这样的命令调用,Claude 也可以在相关时自动加载。
按目标选功能
| 功能 | 作用 | 何时使用 | 例子 |
|---|---|---|---|
| CLAUDE.md | 每次对话都加载的持久上下文 | 项目约定、「总是做 X」的规则 | 「用 pnpm,不用 npm。提交前跑测试」 |
| 输出风格 | 设定整个会话的角色、语气、格式 | 每次回复都想要的某种声音、长度或格式 | 内置的 Concise 风格让回复更短 |
| Skill | Claude 可使用的指令、知识和工作流 | 可复用内容、参考文档、重复任务 | /deploy 执行部署检查清单 |
| 子智能体 | 隔离的执行上下文,返回摘要结果 | 上下文隔离、并行任务、专门化的工作者 | 读很多文件、只返回关键发现的调研任务 |
| 动态工作流 | Claude 写的脚本,在后台跑许多子智能体 | 任务超出少数几个子智能体,或想让结论被交叉验证 | 审计整个代码库,由另一批智能体验证每条发现 |
| 跨会话消息 | Claude 把一个会话的消息送到另一个会话 | 你自己开的多个会话需要在任务中互通发现 | 一个会话提醒另一个:我的改动会让你依赖的东西出问题 |
| MCP | 连接外部服务 | 需要外部数据或操作 | 查数据库、发 Slack、控制浏览器 |
| Hook | 由事件触发的脚本、HTTP 请求、MCP 调用、提示词或子智能体 | 必须在每次匹配事件时执行的自动化 | 每次改文件后运行 ESLint |
| Artifact | 把会话产出发布成私有的交互网页 | 想可视化查看或分享的产出 | 随调查推进而更新的故障时间线 |
插件是打包层:把 Skill、Hooks、子智能体和 MCP 服务器打包成一个可安装单元。插件里的 Skill 带命名空间(如 /my-plugin:review),多个插件可以共存。想在多个仓库复用同一套配置、或分发给别人时用插件。
逐步搭建你的配置
不需要一开始就全配齐。每个功能都有可识别的触发信号,大多数团队大致按这个顺序添加:
| 触发信号 | 添加 |
|---|---|
| Claude 把某个约定或命令搞错了两次 | 写进 CLAUDE.md |
| 你总要求 Claude 更简短、多解释、或用固定格式回答 | 设置输出风格 |
| 你总是输入同一段提示词来开始任务 | 存成用户可调用的 Skill |
| 第三次把同一份操作手册粘进对话 | 整理成 Skill |
| 你总要从 Claude 看不到的浏览器标签里复制数据 | 把那个系统接成 MCP 服务器 |
| Claude 为了找符号定义要读很多文件 | 安装对应语言的代码智能插件 |
| 某个旁支任务的输出淹没了对话,而你之后用不上 | 交给子智能体 |
| 你想让某件事每次都发生,不必再问 | 写 Hook |
| 第二个仓库需要同样的配置 | 打包成插件 |
同样的触发信号也告诉你何时更新已有内容:反复出现的错误或评审意见,应该改 CLAUDE.md,而不是在对话里一次次纠正;你总是手工微调的工作流,就是一个需要再改一版的 Skill。
相似功能怎么区分
Skill 和子智能体:Skill 是可以加载到任何上下文里的可复用内容;子智能体是和主对话隔离的独立工作者。Skill 会占用主上下文窗口,子智能体使用自己的窗口,工作过程不占主上下文,只返回摘要。需要上下文隔离、或上下文窗口快满时用子智能体;两者可以组合:子智能体可以预加载 Skill(skills: 字段),Skill 也可以用 context: fork 在隔离上下文里运行。
CLAUDE.md 和 Skill:CLAUDE.md 每次会话自动加载,适合「总是做 X」的规则;Skill 按需加载,适合偶尔需要的参考资料或用 /<name> 触发的工作流。经验法则:CLAUDE.md 保持在 200 行以内,变长了就把参考内容移到 Skill,或拆到 .claude/rules/ 文件里(带 paths 前置信息的规则只在处理匹配文件时才加载,更省上下文)。
CLAUDE.md 和输出风格:CLAUDE.md 承载关于项目的事实和规则;输出风格设定回复的角色、语气和格式。两者可以叠加,但都只是指令,并不保证强制执行。
子智能体和动态工作流:子智能体是 Claude 一回合一回合决定下一步的工作者;工作流则由脚本决定做什么。需要一个快速聚焦的工作者(调研问题、验证说法、审查一个文件)时用子智能体;任务超出少数几个子智能体、或想在你看到之前先交叉验证结论时(全库审计、大规模迁移)用动态工作流。
MCP 和 Skill:MCP 让 Claude 连上外部服务,提供工具和数据访问;Skill 提供如何有效使用这些工具的知识和工作流。两者配合得很好——比如一个 Skill 里放你们团队的数据库结构和查询模式。
Hook 和 Skill:Hook 在生命周期事件触发时运行,确定性地每次都触发;Skill 是 Claude 阅读并自行理解、结果可能有变化的指令。动作必须每次以同样方式发生、不需要 Claude 思考时用 Hook(保存时格式化、拒绝 rm -rf /、会话结束发 Slack 消息);需要 Claude 判断如何应用步骤,或内容是知识而非脚本时用 Skill。
护栏要放在 Hook 里。 在 CLAUDE.md 或 Skill 里写「不要编辑
.env」只是请求,不是保证;用PreToolUseHook 拦截这次编辑才是强制执行。