讲透Agent三件套:MCP、Skill、Hook如何给大模型装上护栏

让Agent会干活不难,难的是让它干得安全、可控、有迹可循。提示词约束是软的,Agent一旦“自信”起来就会绕过;真正的安全边界,要靠工程架构来保障。MCP、Skill、Hook三件套正是为Agent装上护栏的工程密码——MCP解决“能做什么”,Skill定义“该怎么做”,Hook确保“不能做什么”,三者协同构建起大模型从“灵感工具”到“稳定产线”的完整安全体系。

第一章 MCP:Agent连接外部世界的标准协议
1.1 什么是MCP
MCP(Model Context Protocol,模型上下文协议)是由Anthropic于2024年11月25日发布的一个开放标准协议。它旨在解决AI应用与外部系统之间的标准化连接问题——在没有共享协议的情况下,每一对模型与工具都需要单独的连接器,形成N×M的集成困境。MCP的价值在于提供了一套统一的“插头标准”:任何遵循MCP规范的工具,都可以被任何支持MCP的Agent直接调用,无需定制接口。
截至2026年,MCP已被Anthropic Claude(Claude Desktop、Claude.ai网页版、Claude Code)、OpenAI Agents SDK和ChatGPT桌面版、Cursor、Windsurf、Zed、JetBrains AI等主流平台原生支持。2025年12月,Anthropic将MCP捐赠给Linux基金会下属的Agentic AI Foundation,标志着它正式成为行业基础设施。目前MCP月下载量已达1亿次,成为连接AI与工具数据的行业标准。
1.2 MCP的核心架构与参与者
MCP遵循经典的客户端-服务器架构。整个体系包含三个核心参与者:
- MCP Host(宿主) :AI应用,如Claude Desktop、Cursor、VS Code等,负责发起连接并协调多个MCP客户端。
- MCP Client(客户端) :宿主内部的连接器,与单个MCP服务器通过单一传输通道通信。
- MCP Server(服务器) :暴露工具(Tools)、资源(Resources)和提示词模板(Prompts)的程序,提供上下文给客户端使用。
MCP由两层构成:数据层定义了基于JSON-RPC 2.0的协议,包括生命周期管理、核心原语(工具、资源、提示词)和通知机制;传输层管理客户端与服务器之间的通信通道和认证。
1.3 MCP的三种核心原语
MCP Server向Client暴露三种核心原语:Tools、Resources、Prompts。理解这三种原语在Agent运行时如何被加载和使用,是理解MCP作为护栏基础的关键。
Tools(工具) :启动时批量注册,注入system prompt。Agent启动时,框架向所有已配置的MCP Server发送tools/list请求,拿到完整的工具清单。每个工具包含名称、功能描述和输入参数的JSON Schema,这些定义被注入到LLM的system prompt中——LLM“看到”的不是函数指针,而是一段文本描述。Tools是唯一能修改外部状态的通道,代表Agent的“行动能力”。
Resources(资源) :惰性拉取,按需查询。Resources不像Tools那样启动时一次性拉取,它们的加载是惰性的——Agent在对话中根据需求主动发起resources/read请求。例如,MCP Server暴露了150多张数据表作为Resources,Agent不会在启动时把所有表的schema都拿到,而是等用户说“查一下某表的字段”时才去请求对应的Resource URI。这套按需加载机制避免了启动时的通信风暴,也避免了system prompt被大量无用信息填满。Resources是只读的,代表Agent的“知识来源”。
Prompts(提示词模板) :Server端预定义的、可参数化的提示词模板。Agent通过prompts/list查看可用模板,通过prompts/get获取具体模板并填入参数。与Tools不同,Prompts没有副作用,纯粹是帮助Agent更好地理解“在特定场景下该怎么做”。Prompts代表Agent的“意图引导”。
1.4 MCP的护栏机制
MCP本身在协议层面就内置了多重安全护栏。首先,所有工具调用都通过MCP Server这个统一边界——每个工具调用都可以被记录、限流和授权。安全团队可以获得单一的审计边界,合规负责人可以通过查询MCP Server日志回答“哪些Agent访问了哪些资源”。
其次,MCP 2026年7月28日的重大更新进一步强化了护栏能力。此次更新是MCP推出以来最大规模的架构修订,主要变化包括:
| 更新维度 | 变更内容 | 护栏价值 |
|---|---|---|
| 架构模式 | 从有状态会话转为无状态核心 | 简化水平扩展和负载均衡,降低运维风险 |
| 交互机制 | 新增多往返请求(MRTR)机制 | Agent可主动请求额外输入,减少错误决策 |
| 路由能力 | 新增可路由传输标头 | 支持速率限制和安全策略的精细执行 |
| 授权框架 | 基于OAuth 2.1和OpenID Connect重构 | 强化身份认证与权限控制 |
| 缓存机制 | 工具和资源列表的确定性缓存 | 提高提示缓存命中率,节省Token成本 |
| 功能弃用 | 弃用Sampling、Roots、日志等遗留功能 | 重新建立信任边界,服务器直接调用模型提供商 |
其中,Sampling的弃用影响最大——它改变了谁负责与基础模型互动。此前Sampling允许MCP Server通过客户端调用LLM,服务器拥有回调模型的通道但不拥有连接本身。弃用意味着重新建立信任边界:服务器现在直接调用模型提供商。这一变更从根本上改变了网络架构、身份验证模型和计费流程,是对安全护栏的一次全面升级。
值得注意的是,MCP 2026-07-28版本提供了12个月的过渡期,依赖遗留功能的团队需要在此期间完成架构调整。
第二章 Skill:Agent的行为宪法
2.1 什么是Skill
Skill是Agent的行为规范层,它用自然语言定义了Agent“应该怎么做”——包括执行某类任务时遵循的逻辑流程、输入输出的格式契约、需要遵守的业务规则,以及遇到异常时的降级策略。Skill本质上是一种结构化的指令封装,它不直接执行任何操作,而是告诉Agent在特定情境下如何思考和行动。
截至2026年2月,公开Skill数量已突破28万个,被20多个平台采纳。Skill已成为LLM Agent将计划转化为行动的能力层。2025年10月,Anthropic正式推出Skills。
2.2 Skill的核心设计思想:渐进式披露
在Skills出现之前,MCP承担了大量本应由Skills完成的技能封装工作。但Skills引入的渐进式披露思想,有效解决了MCP在复杂场景下容易出现的Token爆炸问题。
所谓渐进式披露,是指Skill不会一次性将所有指令加载到上下文中,而是根据任务进展按需展开。这一设计让Agent在处理复杂任务时不会因为上下文过载而“失忆”或“偷懒”。一个写得好的Skill就像一份岗位说明书:它不关心员工通过什么渠道获取信息,也不关心工作是什么时候被触发的,它只规定这项工作的标准做法是什么。
2.3 Skill的安全风险与护栏挑战
Skill在赋予Agent强大能力的同时,也引入了新的安全风险。2026年2月,OpenSourceMalware记录了一次真实的恶意Skill攻击活动,攻击目标包括Claude Code、Clawdbot、Moltbot、OpenClaw用户,涉及30多个恶意Skill。360发布的《AI Skill生态安全报告(2026上半年)》对近7万个公开Skill样本完成全面检测分析,结果显示近四成Skill存在不同程度的安全缺陷。
Skill的安全风险主要体现在以下几个维度:
| 风险类型 | 具体表现 | 潜在后果 |
|---|---|---|
| Skill投毒 | 攻击者通过恶意Skill注入指令 | 劫持Agent行为逻辑,绕过安全审批 |
| 指令注入 | Skill通过自然语言指令直接操控Agent行为 | 静默窃取代码、凭据、环境信息并外传 |
| 权限越界 | Skill执行超出声明权限的操作 | 数据泄露、未授权操作、工具滥用 |
| 组合风险 | 单个Skill安全但组合后产生危害 | 难以事前检测的复合型攻击 |
这些风险揭示了一个事实:Skill的安全问题已经不是“理论上可能”,而是已经出现在真实生态里。单独依靠Skill自身的善意设计无法保证安全——需要在Skill之外建立护栏层。
2.4 Skill如何成为护栏的一部分
尽管Skill本身可能成为风险入口,但当它与MCP和Hook协同运作时,恰恰构成了护栏体系的关键环节。Skill通过以下机制为Agent装上护栏:
第一,行为规范化。 Skill用明确的结构化指令约束Agent的行为边界。例如,一个“数据库查询Skill”会明确规定:必须先验证权限、再构造查询、最后脱敏输出。Agent不能跳过这些步骤——因为它“看到”的Skill指令明确规定了流程。
第二,格式契约强制。 Skill定义输入输出的格式契约。Agent必须按照契约执行,否则流程无法继续。这相当于在Agent的行为路径上设置了检查点。
第三,异常降级策略。 好的Skill会定义遇到异常时的降级策略。当Agent遇到意外情况时,不会“自作主张”地冒险操作,而是按照预定的安全路径处理。
第四,可审计性。 Skill的执行过程可以被记录和追踪。当出现问题时,可以回溯是哪个Skill、哪个步骤导致了问题——而不是面对一个“黑箱”行为。
Skill、MCP、Hooks分别对应Agent系统中的不同维度:行为规范、能力接入和事件驱动。搞混这三个维度,是导致Agent系统设计失当的最常见原因。
第三章 Hook:Agent运行时的安全闸门
3.1 什么是Hook
Hook是回调函数,在Agent事件(如工具被调用、会话启动或执行停止)发生时运行自定义代码。通过Hook,开发者可以在关键执行点拦截和控制Agent行为。
Hook的核心价值在于提供了一个“切面”——在Agent执行路径的关键节点插入检查逻辑,而无需修改Agent本身的代码或工具的实现。这相当于在Agent的“血管”里安装了阀门:平时血液正常流动,一旦检测到异常就立即截断。
3.2 Hook的工作机制
Hook的完整执行流程如下:
第一步:事件触发。 Agent执行过程中发生某个事件——工具即将被调用(PreToolUse)、工具返回结果(PostToolUse)、子Agent启动或停止、Agent空闲、执行结束等。
第二步:Hook收集。 SDK检查为该事件类型注册的所有Hook。
第三步:匹配过滤。 如果Hook配置了匹配器(matcher)模式,SDK将其与事件目标进行匹配。没有匹配器的Hook对每个该类型的事件都会执行。
第四步:回调执行。 每个匹配的Hook回调函数接收事件详情:工具名称、参数、会话ID等。
第五步:决策返回。 回调函数执行完毕后返回一个决策对象,告诉Agent接下来该做什么:允许操作、阻止操作、修改输入、或向对话注入上下文。
3.3 Hook的核心能力:四重护栏
Hook为Agent提供了四重安全护栏能力:
第一重:阻止危险操作。 在破坏性操作执行前进行拦截——如危险的shell命令或未授权的文件访问。例如,一个PreToolUse Hook可以检测到Agent试图修改.env文件并直接拒绝该操作。
第二重:日志与审计。 记录和审计每个工具调用,用于合规、调试或分析。这使得Agent的每一次操作都有迹可循,满足企业级审计要求。
第三重:输入输出转换。 对输入输出进行清洗、注入凭证或重定向文件路径。这可以防止敏感信息泄露或确保操作在正确的环境中执行。
第四重:人工审批门禁(HITL)。 对敏感操作(如数据库写入或API调用)要求人工批准。这是最严格的一道护栏——将最终决策权交给人。
3.4 Hook在护栏体系中的独特定位
与MCP和Skill不同,Hook是Agent系统的事件驱动层。和Skills的主动调用不同,Hooks是被动响应的——当某个预设条件满足时,Hooks机制自动触发对应的行为。
在实际生产环境中,Hook的价值尤为突出。以腾讯DECO数仓Agent的实践为例:Agent在处理长SQL时会出现“偷懒”(截断、略写)、对生产环境的“越权”(未确认发布)、上下文传递中的“失忆”(改了表不查风险)等问题。这些问题不是模型能力不够,而是模型被训练成用最短路径完成任务——额外一次工具调用意味着多一步推理,模型倾向于跳过“看起来不必要”的检查步骤。
在提示词里多写几句“禁止”根本管不住——长SQL是物理上超出Token预算,危险操作是模型无法区分“查询”和“发布”的可逆性差异。唯一的解法是在Agent框架层,让偷懒和越权的路径在代码级强制走不通,让失忆的已知盲区确定性补齐。这正是Hook的核心价值:它不是靠“劝说”模型守规矩,而是从架构上让违规路径走不通。
现代Agent运行时普遍在关键生命周期点暴露Hook——工具运行前、运行后、会话启动、会话停止等。这些Hook点构成了Agent安全护栏的物理基础。
第四章 三件套协同:从单点防护到系统护栏
4.1 三者的分工与边界
要理解三者的协同,首先要理解三者的边界。Skills、MCP、Hooks分别对应Agent系统中的不同维度:行为规范、能力接入和事件驱动。
| 维度 | MCP | Skill | Hook |
|---|---|---|---|
| 核心定位 | 能力接入层 | 行为规范层 | 事件驱动层 |
| 解决什么问题 | Agent能做什么 | Agent该怎么做 | 什么情况下触发什么行为 |
| 交互模式 | 主动调用 | 主动遵循 | 被动响应 |
| 作用时机 | 工具发现与调用时 | 任务规划和执行中 | 关键事件发生时 |
| 典型形式 | Tools/Resources/Prompts | 结构化自然语言指令 | 回调函数/脚本 |
| 护栏角色 | 统一边界与审计 | 流程规范化 | 实时拦截与门禁 |
| 提出者 | Anthropic (2024.11) | Anthropic (2025.10) | 社区生态 |
三者并非可以相互替代的不同方案,而是同一个系统里分工明确的三个层次。搞混这三个维度,是导致Agent系统设计失当的最常见原因。
4.2 三者的协同机制:一个专业厨房的比喻
理解三者在运行时如何配合,一个形象的比喻胜过千言万语——把企业Agent系统想象成一个正在运转的专业厨房。
Skill是菜谱:每一道菜的制作标准、步骤顺序、摆盘规范都写在菜谱上。厨师(Agent)按照菜谱工作,不会因为今天换了一个厨师就做出完全不同风格的菜。
MCP是食材供应通道:无论是新鲜蔬菜(实时数据库数据)、进口香料(第三方API)、还是冷藏肉类(内部文件系统),都通过标准化的供应通道送达。厨师不需要知道每种食材从哪家供应商来的——只需要知道通过什么标准接口获取。
Hook是计时器和质检员:食材入锅前检查是否过期(PreToolUse拦截)、出锅时品尝咸淡(PostToolUse验证)、发现违规操作立刻拉闸(阻止危险操作)。
在这个厨房里,菜谱(Skill)规定了做什么菜、怎么做;供应通道(MCP)提供了做菜所需的所有材料;计时器和质检员(Hook)确保每一步都按标准执行、不出事故。三者缺一不可。
4.3 协同的实战场景
以一个典型的企业Agent场景为例:用户要求Agent“生成一份Q3销售数据报告并发送给团队”。
MCP层:Agent通过MCP协议发现并调用三个工具——数据库查询工具(获取销售数据)、报表生成工具(制作报告)、邮件发送工具(发送报告)。MCP确保这些工具以标准化方式被调用,所有调用经过统一边界。
Skill层:Agent加载“销售报告生成Skill”,其中明确规定:第一步查询数据(需指定时间范围和维度)、第二步生成报表(需包含同比和环比)、第三步发送邮件(需抄送相关方、需用户确认收件人)。Agent按照Skill规定的流程执行,不能跳过任何步骤。
Hook层:在每一步执行前,Hook进行拦截检查——PreToolUse检查数据库查询是否包含敏感字段(如用户个人信息)、报表生成是否包含未经脱敏的数据、邮件发送是否经过用户确认。任何一步触发了安全规则,Hook立即阻止并记录日志。
这三层协同工作的结果是:Agent不仅“会干活”,而且“干得安全、干得规范、干得有迹可循”。
4.4 三件套如何构建完整的护栏体系
MCP、Skill、Hook三件套从三个不同层面为Agent构建了完整的护栏体系:
第一层:连接层护栏(MCP) ——统一所有外部调用的入口和出口,提供单一的审计边界。任何工具调用都必须经过MCP Server,在这里可以被记录、限流、授权。这相当于在企业网络边界部署了防火墙。
第二层:行为层护栏(Skill) ——通过结构化指令约束Agent的思维和行动路径。Agent不能随意发挥,必须按照Skill规定的流程执行。这相当于给员工发了标准作业手册。
第三层:执行层护栏(Hook) ——在关键执行点进行实时拦截和门禁控制。即使Agent“自作主张”或“图省事”,Hook也能在最后一刻阻止危险操作。这相当于在每个操作按钮上装了“确认弹窗”。
三层护栏各司其职、层层递进:MCP管“入口出口”,Skill管“该走哪条路”,Hook管“路上有没有违规”。三者协同,才真正构成了一个生产级可靠的Agent安全体系。
第五章 生产实践:三件套的落地指南
5.1 架构设计原则
在设计基于三件套的Agent系统时,应遵循以下原则:
分层清晰,各司其职。 MCP负责工具接入,不承载业务逻辑;Skill负责流程定义,不直接调用工具;Hook负责安全拦截,不改变业务规则。每一层只做自己该做的事。
渐进增强,从核心开始。 不必一开始就三件套全部到位。可以从MCP开始建立工具接入标准,再逐步引入Skill规范行为,最后用Hook加固安全。
可观测性优先。 每一层都应产生可观测的日志——MCP记录工具调用、Skill记录流程执行、Hook记录拦截事件。没有可观测性的护栏等于没有护栏。
5.2 常见的落地误区
误区一:用Skill替代MCP。 有人认为有了Skill就不需要MCP,但Skill定义的是“怎么做”,MCP解决的是“能做什么”——两者维度不同,不可替代。
误区二:用Hook替代所有安全措施。 Hook是最后一道防线,但不应该成为唯一一道防线。最好的安全是让危险根本不会发生(通过Skill规范行为),而不是等危险发生再拦截(通过Hook)。
误区三:三件套各自为政。 最糟糕的实践是MCP、Skill、Hook三套系统各自独立运行、互不知道对方的存在。三件套必须协同——Skill定义的流程应该通过MCP调用工具,Hook应该在Skill执行的各个环节进行拦截。
5.3 成熟度评估
一个Agent系统的护栏成熟度可以分为三个等级:
L1 - 基础级:仅使用MCP进行工具接入,无Skill规范,无Hook拦截。Agent可以调用工具,但行为不可控、操作不可审计。
L2 - 规范级:MCP + Skill。Agent按照Skill规定的流程执行任务,但执行过程中的异常行为和越权操作无法被实时拦截。
L3 - 企业级:MCP + Skill + Hook 三件套完整部署。Agent既能规范执行任务,又能在每一步接受实时检查和门禁控制,所有操作可审计、可追溯。
目前大多数企业Agent处于L1到L2之间,真正达到L3的还不多。但随着MCP 2026-07-28企业级规范发布,L3将成为企业级Agent的标配。
第六章 未来趋势:护栏体系的演进方向
6.1 MCP成为Agent基础设施
随着MCP 2026-07-28版本的发布,MCP正在从“可选协议”变为“必选基础设施”。无状态架构使其能够像其他云应用一样水平扩展,企业级安全规范使其满足生产环境要求。MCP被定位为“AI时代的USB-C接口”,正在成为Agent互联互通的事实标准。
6.2 Skill生态的安全治理
Skill数量从2026年初快速增长,但安全问题同样突出——近四成Skill“带病上岗”。未来Skill生态的安全治理将成为重点方向,包括Skill的安全扫描、签名验证、权限声明和运行时监控。NVIDIA的SkillSpector等工具已经开始提供MCP装前扫描能力。
6.3 Hook体系的标准化
Hook正在从各框架的自定义实现走向标准化。Claude Agent SDK、Dapr Agents、CrewAI等主流框架都在提供标准化的Hook接口。未来Hook可能成为Agent框架的标配能力,就像现代Web框架的中间件一样普及。
6.4 三件套的深度融合
未来的趋势不是三件套各自独立演进,而是深度融合。MCP Server可能会内置Hook能力,Skill可能会声明自己依赖哪些Hook,Hook可能会根据Skill的上下文做出更智能的拦截决策。三件套将从“三个独立组件”演变为“一个统一的护栏系统”。
结语
让Agent会干活不难,难的是让它干得安全、可控、有迹可循。提示词约束是软的——你可以在提示词里写一百遍“不要做危险操作”,但Agent一旦“自信”起来,照样会绕过。真正的安全边界,要靠工程架构来保障。
MCP、Skill、Hook三件套正是这套工程架构的核心。MCP为Agent装上“标准化接口”的护栏——所有外部调用经过统一边界,可记录、可审计、可管控。Skill为Agent装上“行为规范”的护栏——用结构化指令约束Agent的思维和行动路径,不让它随意发挥。Hook为Agent装上“实时闸门”的护栏——在每一个关键执行点进行检查和拦截,让违规路径在代码级走不通。
三层护栏,缺一不可。MCP管“入口出口”,Skill管“该走哪条路”,Hook管“路上有没有违规”。三者协同,才真正让大模型从“灵感工具”变成了“稳定产线”——让Agent既聪明,又可靠。
常见问题(FAQ)
Q1:MCP、Skill、Hook三者是什么关系?可以只用其中一两个吗?
三者分别对应Agent系统的不同维度:MCP是能力接入层(解决“能做什么”),Skill是行为规范层(解决“该怎么做”),Hook是事件驱动层(解决“什么情况下触发什么”)。三者是互补而非替代关系。只使用其中一两个也可以工作,但无法构成完整的护栏体系。MCP是基础,Skill是进阶,Hook是加固——建议根据实际需求逐步引入。
Q2:MCP和传统的Function Call有什么区别?
传统的Function Call是每个框架各自实现的工具调用方式——LangChain有Tools、OpenAI有function calling、CrewAI有自己的实现,每接入一个外部系统都需要写一个适配器。MCP提供了一个统一标准:写一个MCP Server,任何支持MCP的Client都可以直接调用。MCP把N×M的集成问题变成了N+M。
Q3:Skill会不会让Agent变得死板、缺乏灵活性?
好的Skill设计恰恰相反。Skill定义的是“标准做法”和“必须遵守的规则”,而不是“唯一做法”。在遵守安全规范和流程的前提下,Agent仍然可以灵活决策。渐进式披露的设计也确保了Skill不会一次性锁死所有可能性。
Q4:Hook会影响Agent的性能吗?
Hook确实会引入额外的执行开销——每个Hook都是一次额外的函数调用或脚本执行。但现代Agent框架的Hook设计通常很轻量,且可以通过匹配器(matcher)精确控制哪些事件触发Hook。建议对性能敏感的操作使用轻量Hook,对安全敏感的操作使用完整Hook。
Q5:MCP 2026-07-28版本有哪些重要变化?我需要做什么?
2026-07-28版本是MCP推出以来最大规模的架构修订,核心变化包括:从有状态会话转为无状态核心、新增多往返请求机制、基于OAuth 2.1的授权框架重构、弃用Sampling等遗留功能。该版本提供了12个月的过渡期,建议团队在此期间审计对遗留功能的依赖并制定迁移计划。
Q6:如何评估我的Agent系统护栏成熟度?
可以参考三个等级:L1基础级(仅MCP,无Skill无Hook)、L2规范级(MCP+Skill)、L3企业级(MCP+Skill+Hook完整部署)。大多数企业Agent处于L1到L2之间。达到L3需要三件套完整协同——MCP统一工具接入、Skill规范行为流程、Hook实时拦截门禁。
Q7:Skill的安全风险如何防范?
Skill的安全风险包括投毒、指令注入、权限越界等。防范措施包括:对Skill来源进行安全扫描和验证、建立Skill的权限声明和最小权限原则、通过Hook对Skill执行过程进行实时监控和拦截。三件套协同本身就是防范Skill风险的有效手段——Skill定义行为,Hook拦截异常。

