MCP代码执行与Agent Skills深度解析:从15万token压缩到2000

MCP规模化面临token超载问题,代码执行与Agent Skills是两大解法
MCP协议在大规模部署时面临工具定义超载(15万token)和中间结果重复传输两大瓶颈。Anthropic提出两套解法:一是将MCP工具暴露为代码API,通过渐进式发现将token消耗降低98.7%;二是推出Agent Skills标准,采用三层渐进加载设计将工作流封装为可复用的能力单元。MCP负责连接工具,Skills负责打包工作流,共同推动Agent基础设施从连接层走向能力层。
MCP规模化的瓶颈:工具定义超载与重复传输
MCP(Model Context Protocol)是 Anthropic 在 2024 年 11 月发布的开放协议,目标很简单——让 AI Agent 以统一的方式连接外部工具。不管是 GitHub、Slack、Salesforce,还是自定义 API,对 Agent 来说接口都是一样的。
值得注意的是,MCP 建立在 JSON-RPC 2.0 协议之上,采用客户端-服务器架构,其设计哲学借鉴了 LSP(Language Server Protocol)的成功经验——LSP 通过统一接口让各种 IDE 能够对接任意编程语言的语言服务器,MCP 则试图为 AI Agent 复制这一模式。协议定义了三种核心原语:Tools(工具调用)、Resources(资源读取)和 Prompts(提示模板),覆盖了 Agent 与外部世界交互的主要场景。
发布一年后,社区已经构建了数以千计的 MCP 服务器。但随着规模变大,两个严峻的问题浮出水面:工具定义超载和中间结果重复传输。Anthropic 先后发布了两篇文章,分别提出了「代码执行」和「Agent Skills」两套解法,描绘了 MCP 从工具标准化走向能力单元化的演进路径。

15万token的工具定义超载问题
当一个 Agent 同时连接 GitHub、Slack、Sentry、Grafana、Splunk 等多个服务时,每个工具的定义都要在对话开始前加载进上下文。真实数据显示:仅工具定义就能吃掉 15 万个 token,而任务还没开始。
这一数字背后有真实的经济代价。以 Claude 3.5 Sonnet 为例,输入 token 的单价约为 $3/百万 token,15 万 token 的工具定义意味着每次对话开始前就产生约 $0.45 的固定成本,在高频调用场景下这是不可忽视的开销。更关键的是,研究表明模型在超长上下文中存在「迷失在中间」(Lost in the Middle)现象——对上下文首尾信息的关注度显著高于中间部分。
这正是上下文腐化(Context Corruption)最直接的触发器——大量无关的工具描述挤占了有限的上下文窗口,导致模型对真正重要的信息关注度下降。
中间结果的重复传输问题
假设你要让 Agent 把一份两小时的会议录音从 Google Drive 下载下来,附到 Salesforce 里的一条销售记录上。传统 MCP 调用方式下,这份录音文稿要进两次上下文:第一次是 Agent 读取它,第二次是 Agent 把它作为参数传给 Salesforce 工具。
两次传输,两次 token 消耗,而你真正需要的只是让数据从 A 搬到 B。
核心解法:把MCP工具暴露成代码API
解法出乎意料地优雅:把 MCP 工具暴露成代码 API,让 Agent 写代码来调用它,而不是直接调用工具。

具体做法是在 Agent 的执行环境里,把每个 MCP 服务器的工具函数映射成一组 TypeScript 文件,放在 Servers/ 目录下。Agent 需要调用工具时,先浏览文件系统找到相关的工具定义,然后直接写代码来调用。
效果是量级上的改变:相同任务,传统方案 15 万 token,代码执行方案仅 2000 token,减少了 98.7%。
为什么差距这么大?这里的核心设计思想是渐进式发现(Progressive Disclosure)——一个源自 UX 设计领域的概念,核心思想是按需展示信息而非一次性全量呈现。在软件工程中,这一思想体现为懒加载(Lazy Loading)和按需导入(Dynamic Import)。将其应用于 Agent 系统,本质上是把工具发现从「编译时」推迟到「运行时」:Agent 不再需要预先加载所有工具定义,它先看到的只是文件目录,只有当它判断某个工具有用时,才去读具体的函数签名。这与操作系统的虚拟内存管理有异曲同工之妙——不是把所有程序都加载进物理内存,而是按需换页。
代码执行带来的四大能力提升
1. 执行层数据过滤
比如你需要查一张有 1 万行的电子表格里的待处理订单。传统方式是把 1 万行全部推进上下文,Agent 再从里面找。代码执行的方式是 Agent 写代码在执行环境里过滤掉已完成的行,只把符合条件的 5 条结果返回。模型看到的是 5 行,而不是 1 万行。
2. 代码级控制流
轮询、循环、条件判断这些逻辑都可以直接写在代码里执行,不需要每一步都走一次模型推理。

文章举了一个例子:等待 Slack 频道里出现某条消息。传统方式要不断调用工具再让模型判断;代码方式就是一个 while 循环,只有条件满足才返回,大幅减少了不必要的模型调用和首次 token 的等待延迟。
3. PII数据保护
在执行环境里,可以自动把中间结果里的敏感数据(邮件地址、电话号码、姓名)替换成 [EMAIL]、[PHONE] 这样的占位符,只有实际数据流转需要时才替换回来。模型全程看到的都是脱敏数据。
这解决了一个真实的企业合规问题。PII(Personally Identifiable Information,个人可识别信息)保护是企业级 AI 部署的核心合规要求——GDPR(欧盟通用数据保护条例)和 CCPA(加州消费者隐私法案)均明确规定,个人数据的处理必须遵循最小必要原则。在 AI Agent 场景中,Agent 需要访问包含 PII 的数据才能完成任务,但同时不应将原始 PII 暴露给语言模型,因为模型的推理日志存在数据泄露风险。在执行层自动脱敏,是将数据标记化(Tokenization)实践引入 Agent 架构的自然延伸。
4. 代码即技能——可复用的工作流
代码本身可以保存下来成为可复用的技能。Agent 成功实现了一个工作流后,可以把这段代码存成 TypeScript 文件,附上 Skill.md 说明。下次遇到类似任务,直接复用,不需要重新推理。
这就自然引出了第二个核心概念——Agent Skills。
Agent Skills:给Agent装上肌肉记忆
Skills(技能)是 Anthropic 发布的一套能力封装标准。定义很简单:一个目录,里面有一个 Skill.md 文件,可以包含说明、脚本和其他资源。

把它理解成给 Agent 的「岗位培训手册」——不是构建一个全新的专用 Agent,而是给通用 Agent 装上一份新的技能包,让它能做特定领域的事情。从软件工程视角看,Skills 更接近于插件系统(Plugin System)而非传统的函数库:每个 Skill 是一个自包含的能力单元,携带自己的文档、脚本和元数据,遵循关注点分离(Separation of Concerns)的设计原则。
三层渐进加载设计
Skills 最核心的设计是三层渐进加载:
- 第一层:元数据——技能的名字和一行描述,在 Agent 启动时就加载进系统提示词
- 第二层:完整 Skill.md——当 Agent 判断某个技能和当前任务相关时,再加载全文
- 第三层:引用文件——只有 Agent 执行到需要它们的步骤时才去读取
这个设计的妙处在于:无论你给 Agent 装多少技能,第一层的开销是固定的,每个技能只有一行描述。这种机制与 HTTP 的内容协商(Content Negotiation)类似——先交换元数据确认双方能力,再按需传输完整内容,使得 Skills 的数量可以线性增长而不带来二次方的上下文开销,是解决 Agent 能力扩展性问题的关键架构决策。
实例:PDF操作技能
文章给出了一个具体的例子——PDF 技能。Claude 本来能理解 PDF 内容,但没有直接操作 PDF 的能力(比如填写 PDF 表单)。PDF 技能把这个能力打包进来:
- 核心
Skill.md里有基本的 PDF 操作说明 - 单独的
Forms.md文件专门讲表单填写 - 附带一个 Python 脚本用来精确提取表单字段

这比让语言模型去猜快得多,也准确得多。当 Agent 需要填写 PDF 表单时,它读 Skill.md,再读 Forms.md,执行 Python 脚本——整个过程里只有必要的上下文被加载。
MCP与Skills的关系:触手与肌肉记忆
Skills 的定位很清晰:它不是 MCP 的竞争者,而是 MCP 的上层。
- MCP 负责连接工具——标准化外部服务的接口
- Skills 负责打包工作流——封装完整的任务执行能力
一个完整的技能可以同时包含「怎么用 MCP 调用外部服务」的说明,以及处理结果的本地脚本。用一个形象的比喻:MCP 给 Agent 延伸了触手,Skills 给 Agent 装上了肌肉记忆。
MCP生态的三层演进逻辑
把这两篇文章放在一起,可以看到 MCP 生态清晰的三层演进逻辑:
- 协议标准化——MCP 统一了工具接口,解决了连接问题
- 代码执行——通过将工具暴露为代码 API,解决了大规模部署下的效率问题,实现了 98.7% 的 token 缩减
- 能力单元化——Skills 把工作流封装成可组合的能力单元,实现了知识和经验的复用
Anthropoc 已将 Agent Skills 发布为开放标准,这意味着整个生态都可以围绕这套框架构建可复用的 Agent 能力。从「能连接什么工具」到「能做什么事情」,这是 Agent 基础设施从连接层走向能力层的关键一步。
对于开发者而言,核心启示是:不要让 Agent 在每次对话中重新发现世界,而是让它站在已有技能的肩膀上。 渐进式发现、按需加载、代码化执行——这三个设计原则,值得在任何 Agent 系统的架构设计中认真考虑。
核心要点
- MCP大规模部署面临工具定义超载(15万token)和中间结果重复传输两大问题
- 通过将MCP工具暴露为代码API实现渐进式发现,token消耗从15万降至2000,减少98.7%
- 代码执行方式带来数据过滤、控制流优化、PII保护和技能复用四大能力提升
- Agent Skills采用三层渐进加载设计,将工作流封装为可组合的能力单元
- MCP负责连接工具(触手),Skills负责打包工作流(肌肉记忆),二者互补而非竞争
相关推荐
深度解读OpenClaw开源小龙虾AI Agent运作原理深度解析
深度解析OpenClaw(开源小龙虾)AI Agent的底层运作原理,涵盖System Prompt、工具调用、SubAgent分身、Skill系统、记忆机制与Context Engineering等核心概念,帮你彻底理解AI Agent与普通语言模型的本质区别。
深度解读Transformer本质解析:一个被拆解的文字接龙函数
用文字接龙的视角理解Transformer本质。将复杂的语言生成任务拆解为Embedding、Transformer Block、概率输出三大模块,帮助深度学习初学者快速建立直觉。
深度解读Claude Code与普通AI对话的五大核心差异
详细对比Claude Code与普通AI对话工具在交互方式、上下文理解、执行力、记忆能力和工具调用五个维度的核心差异,帮你理解AI编程助手的真正价值。