企业级 Swagger 文件动辄数千行,直接塞给 AI Agent 会导致上下文窗口被噪声淹没、产生幻觉;建议按能力域拆分、按场景动态注入。
你可能遇到过这堵墙:你给 Claude 或 Cursor 一个庞大的 OpenAPI 规范——数百条路径、数千行 JSON——然后一切都崩溃了。
智能体开始产生幻觉。它会遗漏显而易见的端点。更常见的情况是,它直接卡住了,因为大量的文本在它还没弄清楚如何发起一次认证请求之前,就已经耗尽了整个上下文窗口。
你以为解决方案是"用更大的模型"。这是个陷阱。向一个臃肿的规范投入更多 token 并不能解决信噪比问题;只会让模型变慢,更容易失去对真正重要逻辑的注意力。
当我们使用模型上下文协议(Model Context Protocol,MCP)构建 AI 智能体时,我们给它们的不仅仅是信息,而是能力。但当一个 LLM 正在调试支付流程时,它根本不需要知道你的 /healthcheck 端点、不需要知道你那些已废弃的遗留路由,也不需要知道 User schema 的五十种变体。
一个典型的企业 Swagger 文件就是一个巨兽。它包含元数据、安全方案、复杂的嵌套对象,以及数百个根本不会用到的路径。当你就这样把整个庞然大物塞进提示词时,你实际上是把智能体淹没在噪声中。
关键的洞察不在于缩减文本——而在于依赖追踪和确定性剪枝。
大多数人会尝试手动删除 YAML/JSON 文件的某些部分。这既繁琐又脆弱。一个不小心的操作就会破坏文件某处的一个 $ref 指针,导致整个规范对解析器失效。
我仔细研究过,把 OpenAPI 规范当作有向图而非扁平文本文件来处理会发生什么。如果你希望智能体与 /orders/{id} 交互,它需要的是特定的路径以及通过引用链接的某些 schema,仅此而已。其他一切都是累赘。
这正是 OpenAPI Context Window Packer 在底层处理的事情,通过三个特定操作:
Targeted Path Pruning(定向路径剪枝):不发送所有内容,而是定义哪些端点对当前任务真正重要。引擎剥离掉其他所有路径。
Dependency Tracing(依赖追踪):这是大多数手动操作失败的地方。一旦你选定了路径,该工具会执行一次图遍历(使用 trace_schema_dependencies),找出那些路径引用的每一个 schema——包括嵌套的——并只保留这些片段。
Iterative Description Truncation(迭代式描述截断):即使路径已被剪枝,描述文字仍然可能冗长。这里有一个选项可以设置 maxTokenBudget。如果剪枝后规范仍然超出限制,引擎会在保持结构完整性的前提下迭代截断描述字段。
结果呢?你把一个 15,000 token 的巨兽变成了一把 1,800 token 的精密手术刀。
从事智能体工作的工程师经常问我一个问题:"如果我花得起这些 token,为什么要压缩?"
答案在于推理密度。高密度上下文带来更好的工具选择准确性。当智能体不需要为那些根本不会调用的端点解析无关的 JSON 定义时,它的注意力就能保持在它将要使用的工具的参数和约束上。
packer 附带了一个 analyze_endpoint_coverage 工具正是出于这个原因。在你决定将一个智能体部署到你的 API 子集之前,你可以验证你的目标列表没有因为映射错误的 refs 而意外剥离掉必需的功能。
如果你使用我们的 MCPFusion 框架自己构建定制的 MCP 服务器,实现这类专用工具会变得容易得多,因为它们充当原始数据源和 LLM 接口之间的中间件。
你不必在意识到"管理上下文不是支线任务——它本身就是架构的一部分"之后重写核心逻辑。
无论压缩与否,有几件事始终保持不变:结构有效性($ref 完整性)完美保留;通过 token 预算控制输出大小的能力;在现有 schema 内描述依赖关系的可靠性。
你也可以看看我们生态系统中其他相关工具——比如验证引擎或文档发现器——但如果你当前的瓶颈是"智能体说我的 API 不存在,尽管它明明在那里",那么上下文打包就是你的当务之急。
MCP 是 AI 智能体的乐章。我们建了这个目录。去发现 Vinkius MCP Catalog。