返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

MCP上下文爆炸怎么办?Anthropic给出了新答案(图文示例)

[复制链接]
链载Ai 显示全部楼层 发表于 前天 22:34 |阅读模式 打印 上一主题 下一主题

前几天,Anthropic 发的一个 MCP 的思考,说明MCP的未来发展

(https://www.anthropic.com/engineering/code-execution-with-mcp)

CleanShot 2025-11-07 at 00.45.21@2x.png


但这篇文章,讲的不是很清晰,我找了文章中的引用,cloudflare 对于 MCP 工程的思考(https://blog.cloudflare.com/code-mode/)


两者结合起来,思路就清晰了很多。我结合一下这两篇的内容,来说一下他们解决了什么问题。


MCP 上下文过长的核心问题

我们平时会接入很多 MCP,比如 chrome devtools MCP、playwright、GitHub、context 7 等等。


每次启动都要加载所有工具定义(名称+描述+参数要求),发起一次对话,上下文消耗就非常惊人。


举个例子:

用户需求:“把飞书文档的会议记录同步到飞书多维表格”

【传统工具调用流程】

CleanShot 2025-11-07 at 12.30.16@2x.png


我们在执行飞书任务的时候,他会把 其他MCP的工具,也告诉AI,导致token消耗很大。


这还只是一个简单任务!如果你要处理更多、更大的任务,执行起来就会很困难。


拆分来看,这里面有两个核心问题

问题1:所有工具定义要预加载

每个工具定义包含:名称、描述、参数说明(类型、是否必需、用途说明)

  • 1个工具 ≈ 150-300 tokens

  • 100 个工具 = 150,00-300,00 tokens


这里需要说明,一个MCP,会有很多工具。比如高德地图MCP,会有搜索工具、查询距离工具、打车工具;像github mcp,有二三十个工具。

CleanShot 2025-11-07 at 12.32.05@2x.png

用户还没说话,上下文就满了!

问题2:数据反复流经 AI

所有中间数据都要过 AI。


数据像接力棒,每次传递都要经过 AI。


解决方案:代码执行模式

针对这两个问题,核心思路是:让 AI 写代码来调用工具,而不是直接调用工具

1. 按需加载工具(解决预加载问题)

核心思路:不要一次全加载,需要时再找。

Anthropic 提出了"渐进式披露"(Progressive Disclosure)的概念——AI 可以主动去"找"需要的工具,而不是提前把所有工具塞给它。

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">实现方式1:文件系统浏览

把所有工具组织成文件夹结构,AI 像浏览文件夹一样查找需要的工具。

CleanShot 2025-11-07 at 15.40.57@2x.png

⚠️ 重要说明:
把MCP转化成工具文件树,claude 暂时没有说功能怎么做,cloudflare 的SDK 文档里,有提供一个工具

CleanShot 2025-11-07 at 16.07.54@2x.png

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">实现方式2:搜索函数

提供一个搜索函数,AI 写代码传入关键词,系统返回相关工具。

示例:

⚠️ 重要说明:

Anthropic 的工程博客提供了代码示例(比如工具文件结构、import 语句),但没说明 Agent 内部如何实现

这些需要:

  1. 等 Anthropic 后续更新 Claude Code 和 MCP 协议

  2. 或者开发者根据代码示例自行设计内部实现

2. 代码在沙箱执行(解决数据流经问题)

核心思路:让 AI 写代码,代码在沙箱里执行,数据在沙箱里流转,不过 AI。

代码执行模式的3个案例:

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">案例1:串联任务流程,一次执行完

传统方式 vs 代码模式:

原来需要AI处理的数据问题,现在用代码去解决,就方便很多。

下图举例了一个同步的案例:

效果:AI 只参与头尾(写代码 + 收结果),中间过程不涉及

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">案例2:处理数据结果,而不是全部获取

传统方式的问题:

工具返回什么,AI 就收到什么,即使只需要一小部分。

代码模式:

AI 写代码,在沙箱里搜索和过滤,只返回需要的部分。

下图为举例:

CleanShot 2025-11-07 at 16.46.05@2x.png

对于最后收到的结果,可以让代码执行过滤。

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">其他优势:敏感信息隔离,防止数据泄露

所有的私密信息,不经过 AI,防止AI泄露信息。

CleanShot 2025-11-07 at 16.52.48@2x.png

AI只能看到处理结果。

⚠️ 重要说明:

沙箱功能,Cloudflare 专门做了一个中间工具叫"隔离区",是用worker(serverless服务,用了才启动)来做的;Claude 暂无实际工具提供

CleanShot 2025-11-07 at 16.10.44@2x.png

补充说明

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">1. 为什么 AI 适合写代码?

AI 在几十亿行代码上训练过,写 TypeScript/Python 代码是强项。

相比让 AI 直接调用工具(需要理解工具的复杂参数和返回格式),写代码反而更简单:

  • 代码有清晰的语法规则

  • AI 见过大量类似代码

  • 可以用注释说明意图

这就像让翻译官写翻译稿(擅长),而不是让他当搬运工(低效)。

ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">2. 代码可以保存成 Skills

写过一次的代码,可以保存到./skills/目录,变成可复用的能力。

AI 的工具箱会越来越强大,常用操作不用每次都重新写。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ