文章目录
在 Claude(尤其 Claude Code)的扩展生态中,Hook、Agent Skill、SubAgent、Plugin 是四个高频出现但极易混淆的核心概念。很多同学在尝试自定义 Claude 能力时,常常分不清它们的定位、作用和使用场景,导致无法高效利用扩展功能。
今天这篇博客,将基于官方定义和实操场景,用“一句话总结+详细拆解+对比表格+适用场景”的方式,帮你彻底分清这四个概念,看完就能快速上手选用,轻松解锁 Claude 高级扩展能力。
先给大家一个核心总结,记牢这一句,快速建立认知:
- Hook = 事件触发的自动化脚本(拦截器/中间件)
- Agent Skill = 可自动调用的领域专家“说明书”
- SubAgent = 独立上下文的专业“子助理”
- Plugin = 打包上述所有能力的“扩展包”
一、逐个拆解:每个概念的核心逻辑与实操示例
1. Hook(钩子):事件驱动的“自动化检查站”
定义:事件驱动的自动化脚本/命令,在 Claude 执行特定操作(事件)前后自动运行,核心作用是拦截、校验、增强或控制流程,相当于给 Claude 的操作加了“自动触发的规则”。
核心特点:
-
本质:强制规则、自动检查站、拦截器,不是“建议”,是“必须执行”
-
触发方式:事件驱动(特定操作触发,无需手动调用)
-
执行特性:静默、自动、必执行,不干扰用户操作
-
核心价值:流程控制、安全校验、日志记录、自动化操作、外部集成
常见触发事件:
-
PreToolUse:工具调用前(比如执行危险命令前拦截,避免误操作)
-
PostToolUse:工具调用后(比如写文件后自动格式化、自动测试)
-
Stop:回复结束时(比如自动保存会话日志)
-
SessionStart/SessionEnd:会话开始/结束(比如会话开始时自动加载配置)
实操示例:每次 Claude 写文件后,自动执行 ESLint 修复代码格式
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [{
"type": "command",
"command": "eslint --fix ${FILE_PATH}"
}]
}
]
}
}
Claude Code 使用命令:Hook 无需手动触发,核心是通过配置文件注册,命令主要用于配置生效和管理,常用2个核心命令:
- 注册/加载 Hook 配置:
/hook load ./hooks.json(指定 Hook 配置文件路径,加载后自动生效) - 查看已加载 Hook:
/hook list(查看当前会话中所有已激活的 Hook 及触发事件)
补充:若需临时禁用某个 Hook,可使用/hook disable 事件名(如/hook disable PostToolUse),启用则替换为enable。实际开发中,团队常通过 PostToolUse hook 对生成代码进行格式化,避免 CI 报错。

2. Agent Skill(技能):可自动激活的“专家说明书”
定义:模块化、可自动激活的专业知识包,包含任务指令、最佳实践、脚本、资源等内容,Claude 会根据用户需求的语义,自动判断何时加载并使用这个技能。
核心特点:
-
本质:永久技能包、AI 专家说明书、可复用 Prompt 集合
-
触发方式:语义匹配自动激活(也可手动调用)
-
结构:由 SKILL.md(包含 YAML 头 + 具体指令)+ 脚本/资源组成
-
核心价值:让 Claude 具备专业化能力、标准化操作流程,减少重复输入 Prompt
实操示例:安全审计技能,当用户询问代码安全性时,自动加载并按流程审计
---
name: security-auditor
description: 安全审计,检查SQL注入、XSS、CSRF
auto-activate: true
allowed-tools: [Read, Grep]
---
# 安全审计技能
## 使用场景
- 用户要求安全检查
- 提到漏洞/风险
## 审查要点
1. SQL注入防范:检查是否使用参数化查询,避免拼接SQL
2. XSS防护:检查是否对用户输入进行转义处理
3. CSRF令牌:检查关键接口是否携带CSRF令牌
...
当你问“这段代码安全吗”,Claude 会自动匹配语义,加载这个安全审计技能,按照预设的审查要点完成审计。
Claude Code 使用命令:Agent Skill 支持自动激活和手动调用,核心命令如下:
- 手动加载指定 Skill:
/skill load ./skills/security-auditor(指定 Skill 所在目录,加载后立即生效) - 手动触发已加载 Skill:
/skill run security-auditor(直接调用指定名称的 Skill,无需语义匹配) - 查看已加载 Skill:
/skill list(显示所有已加载的 Skill 及激活状态) - 卸载 Skill:
/skill unload security-auditor(移除指定 Skill,停止生效)
补充:若 Skill 配置了auto-activate: true,无需手动加载,Claude 会根据语义自动触发,手动调用可强制执行技能逻辑。

3. SubAgent(子代理):独立上下文的“专属子助理”
定义:独立、隔离的 AI 实例,有自己的 System Prompt、工具权限,以及完全独立的上下文窗口,主 Agent 可以将复杂任务委派给它,它完成后只返回结果给主 Agent。
核心特点:
-
本质:专业团队成员、独立沙箱助理、任务工人
-
触发方式:主 Agent 手动或自动委派任务
-
核心优势:上下文完全隔离(不污染主对话)、防上下文爆炸、角色清晰、可并行处理、权限可控
-
核心价值:拆分复杂任务、处理大量文档阅读、执行长耗时任务,保持主对话简洁
实操示例:
-
创建一个「CodeReviewer」子代理:让它读取整个项目代码,只返回“3个核心Bug+修复建议”的总结,主对话不会被大量代码细节撑爆。
-
创建一个「Researcher」子代理:让它读取50篇行业文档,只提炼核心结论和关键数据,主Agent无需处理中间阅读过程。
Claude Code 使用命令:SubAgent 核心是创建、委派任务和管理,常用命令如下:
- 创建 SubAgent:
/agent create CodeReviewer --system "你的System Prompt"(指定子代理名称和系统提示,定义其角色) - 委派任务给 SubAgent:
/agent delegate CodeReviewer "读取整个项目代码,返回3个核心Bug+修复建议"(指定子代理和任务指令) - 查看 SubAgent 状态/结果:
/agent status CodeReviewer(查看子代理执行进度、结果) - 终止 SubAgent:
/agent stop CodeReviewer(停止子代理执行,释放资源) - 接管子代理(应急):
Shift+Up/Down或tmux(可直接接管任何子代理的执行过程)
补充:主Agent可同时委派多个子代理并行处理任务,子代理的执行结果会同步反馈给主Agent,不污染主对话上下文。

4. Plugin(插件):打包所有能力的“扩展工具箱”
定义:一个容器/包,能够将 Hook、Agent Skill、SubAgent、Commands、MCP 等组件打包成一个可安装、可分享、可复用的单元,相当于 Claude 的“应用程序”。
核心特点:
-
本质:扩展包、功能合集,类似 npm 包或应用商店里的 App
-
结构:由 plugin.json 清单(记录插件信息)+ 各组件目录(skills、agents、hooks 等)组成
-
核心价值:一键安装、跨项目复用、团队共享、功能分发,无需重复配置多个组件
标准插件结构:
my-plugin/
├── .claude-plugin/plugin.json # 插件清单(记录插件名称、描述、版本等)
├── skills/ # 存放该插件包含的所有Agent Skill
├── agents/ # 存放该插件包含的所有SubAgent
├── hooks.json # 存放该插件包含的所有Hook
└── commands/ # 存放该插件包含的斜杠命令
Claude Code 使用命令:Plugin 核心是安装、启用和管理,常用命令如下:
- 安装本地插件:
/plugin install ./my-plugin(指定插件所在目录,一键安装所有组件) - 安装远程插件:
/plugin install https://github.com/xxx/my-plugin(通过远程链接安装,无需手动下载) - 启用/禁用插件:
/plugin enable my-plugin//plugin disable my-plugin(启用后插件内所有组件自动生效) - 查看已安装插件:
/plugin list(显示所有已安装插件的状态、包含组件) - 卸载插件:
/plugin uninstall my-plugin(彻底移除插件,删除所有相关组件)
补充:插件安装后,其包含的 Hook、Skill、SubAgent 会自动注册,无需单独执行加载命令,团队可通过插件实现扩展能力的统一共享和分发。

二、核心区别对比:一张表格分清四者
很多同学混淆四者,核心是没抓住“本质、驱动方式、上下文、价值”这四个关键维度。下面这张表格,清晰对比四者的核心差异,建议收藏备用:
| 对比维度 | Hook(钩子) | Agent Skill(技能) | SubAgent(子代理) | Plugin(插件) |
|---|---|---|---|---|
| 本质 | 自动化脚本/拦截器 | 专业知识/指令包 | 独立AI实例 | 组件容器/扩展包 |
| 驱动方式 | 事件触发(必执行) | 语义匹配(自动/手动) | 主Agent委派 | 手动安装 |
| 上下文 | 共享主上下文 | 共享主上下文 | 完全独立隔离 | 包含前三者,无独立上下文 |
| 执行主体 | 外部命令/脚本 | Claude 按指令执行 | 独立 Claude 实例 | 无执行能力(仅为容器) |
| 核心价值 | 流程控制、安全、自动化 | 专业能力、标准化 | 上下文隔离、任务拆分 | 打包、分发、复用 |
| 粒度 | 细粒度(操作节点) | 中粒度(领域能力) | 粗粒度(独立任务) | 最粗(功能集) |
| 形象比喻 | 智能门铃/安检 | 专业手册/技能卡 | 专属员工/团队 | 工具箱/软件套装 |
三、四者的关系与层级:一句话理清逻辑
理解四者的关系,能帮你更高效地组合使用它们,核心逻辑如下:
-
Plugin 是最大的容器,一个 Plugin 可以包含多个 Hook、Agent Skill 和 SubAgent,相当于“把一套相关功能打包成一个工具包”。
-
SubAgent 内部可以使用多个 Agent Skill,也可以触发 Hook(比如 SubAgent 执行工具后,触发 PostToolUse Hook 进行后续处理)。
-
Agent Skill 是“方法和知识”,SubAgent 是“执行这些方法的独立单元”,两者结合可以完成专业且复杂的任务。
-
Hook 是全局或局部的自动化规则,贯穿所有执行流程(无论是主 Agent、SubAgent,还是 Plugin 中的组件,都能被 Hook 拦截和增强)。
四、实操选型指南:什么时候用哪个?
看完拆解和对比,最核心的问题是:实际开发中,该如何选择使用这四个扩展?结合场景总结如下,直接对号入座即可:
-
用 Hook:需要自动校验、拦截操作、格式化内容、发送通知,或者强制控制流程(比如禁止危险操作)。
-
用 Agent Skill:需要 Claude 具备某一领域的专业能力(比如安全审计、代码优化),或者需要标准化的操作流程,减少重复 Prompt。
-
用 SubAgent:任务复杂、需要处理大量文档(容易撑爆上下文)、需要独立角色(比如专门的代码审查员),或者需要并行处理多个子任务。
-
用 Plugin:需要将一组相关能力(比如“代码开发+安全审计+自动测试”)打包,方便自己跨项目复用,或者分享给团队成员一键安装。
补充:Claude Code 通用命令(必记):
- 查看所有扩展相关命令:
/help extensions(获取 Hook、Skill、SubAgent、Plugin 的所有可用命令及用法) - 权限管理(避免频繁弹窗):
/permissions allow 命令名(预先放行常用命令,无需每次确认权限) - 重置所有扩展配置:
/extensions reset(恢复默认状态,用于排查配置错误)
五、总结
其实这四个概念的核心逻辑很简单:Hook 管“自动化规则”,Agent Skill 管“专业能力”,SubAgent 管“独立执行”,Plugin 管“打包复用”。
记住一句话:Plugin 是容器,SubAgent 是执行者,Agent Skill 是执行者的“技能手册”,Hook 是贯穿全程的“自动化规则”。
掌握它们的区别和用法,你就能灵活自定义 Claude 的能力,无论是简单的自动化操作,还是复杂的专业任务,都能高效完成。
下一篇,我们将实操演示如何创建一个简单的 Hook 和 Agent Skill,帮你快速上手 Claude 扩展开发,记得关注哦~
669

被折叠的 条评论
为什么被折叠?



