MCP、A2A、OAMS——Agent协议栈到底有几层?一个做集成的人的困惑

最近在尝试把几个不同来源的agent串成一条工作流,踩了不少协议层的坑。最大的感受是:大家都在说”互操作性”,但真正动手接的时候才发现,协议和协议之间有一大片空白地带没人管。
这篇把我理解的agent协议栈整理一下。不是学术综述,就是一个实际在做集成的人试图搞清楚”到底有几层、每层管什么、中间缺了什么”。

先从最底下说起:MCP——agent到工具的连接层
MCP(Model Context Protocol)是Anthropic搞的,解决的问题很具体:agent怎么调用外部工具。
在没有MCP之前,每个agent框架自己定义一套工具调用的接口。LangChain有LangChain的tool schema,AutoGen有AutoGen的function call格式,你换一个框架就得重写一遍工具接入层。
MCP做的事情是定义了一套标准化的协议:agent通过MCP连接到工具服务器,工具服务器暴露自己的能力(能做什么、参数是什么、返回什么),agent按照统一格式去调用。
打个比方:MCP像USB接口。不管你是键盘、鼠标还是U盘,只要符合USB协议,插上就能用,不用关心电脑是Dell还是联想。
MCP解决得很好的问题:agent-to-tool的标准化连接。
MCP不管的问题:agent和agent之间怎么找到对方、怎么协商能力、怎么交易。
往上一层:A2A——agent到agent的发现和协商
A2A(Agent-to-Agent Protocol)是Google去年推的,解决的问题是:agent之间怎么互相发现,怎么知道对方能干什么。
场景是这样的:我有一个agent负责数据分析,我想找一个能做可视化的agent帮我出图表。在没有A2A之前,我得自己去各个平台搜,看文档,手动对接。
A2A定义了一套agent之间的发现和能力协商协议。一个agent可以发布自己的”能力卡片”(我能做什么、接受什么格式的输入、输出什么格式),其他agent可以查询和匹配。
继续用刚才的比方:如果MCP是USB接口,A2A就是蓝牙配对协议。两个设备要通信,先得互相发现、协商能力、建立连接。
A2A解决得好的问题:agent的发现和能力匹配。
A2A不管的问题:发现了之后呢?任务怎么路由?执行过程谁来验证?完了怎么结算?
中间的空白地带:从”连上了”到”交易完成”
我在实际做集成的时候发现,MCP + A2A解决了”怎么连接工具”和”怎么找到agent”,但整个交易的生命周期里有一大段是空的。
完整的一次agent交易长这样:
任务发起 → 发现合适的agent → 路由任务 → agent执行 → 验证执行结果 → 归因(谁干了什么) → 结算(谁拿多少钱)
MCP管的是执行阶段agent调用工具的那一步。A2A管的是发现阶段。
那中间的路由、验证、归因、结算呢?
路由: 多agent工作流里,任务从A到B到C,消息怎么传?传的过程中怎么保证没被篡改?(这个在第二篇详细写过)
验证: agent说它在500ms内响应了,真的吗?它说返回的数据符合约定的schema,真的吗?谁来独立验证?
归因: 一个多agent pipeline里,最终结果是三个agent协作产出的,每个agent的贡献怎么量化?这直接影响结算。
结算: 用户付了一笔钱,按什么规则分给参与的各个agent?特别是跨平台的情况下,谁来做中间结算方?
这一整段,MCP不管,A2A也不管。
OAMS——有人在试图填这个空白
最近翻资料的时候看到一套叫OAMS(Operon Agent Messaging Standard)的协议定义,它试图覆盖的就是上面这段空白。
OAMS的定位很明确:不替代MCP,也不替代A2A,而是在它们之上加一层交易生命周期协议。
用之前的比方来说:MCP是USB(agent-to-tool连接),A2A是蓝牙配对(agent-to-agent发现),OAMS是支付协议(交易从发起到结算的全流程)。你用蓝牙配对上了、用USB连上了,但如果你们之间要产生交易,还需要一套管”下单、验货、开发票、付款”的协议。
从它公开的spec来看,OAMS覆盖的环节包括:

消息路由与完整性校验——多agent工作流里的消息在转发过程中逐跳做哈希签名,保证上游输出没被篡改。
协议合规性attestation——由独立节点对交易做确定性校验(响应时间、schema合规、数据包大小),签名后上链。
交易计量——多节点独立计数交易量和费用,链上可查。
归因和结算——记录每个agent在工作流中的参与情况,为结算提供链上证据。

看到这你可能会想:这不就是之前几篇文章里反复讨论的那四件事吗?
没错。我前面几篇从不同角度拆解的那些问题——消息完整性、链上验证、轻量级节点——OAMS把它们打包成了一套协议标准。
这套协议栈拼起来大概长这样
┌─────────────────────────────┐
│ OAMS(交易生命周期层) │ 路由 · 验证 · 归因 · 结算
├─────────────────────────────┤
│ A2A(agent发现与协商层) │ 发现 · 能力匹配 · 协商
├─────────────────────────────┤
│ MCP(工具连接层) │ agent调用工具的标准接口
├─────────────────────────────┤
│ 底层传输(HTTP/gRPC/WS) │ 实际的网络通信
└─────────────────────────────┘
每一层解决不同的问题,互相不替代。这跟互联网协议栈的TCP/IP分层逻辑是一样的——TCP不替代HTTP,HTTP不替代应用层协议,各管各的。
几个我还在想的问题
第一,OAMS能不能真的做到框架无关?
MCP之所以能推开,一个关键原因是它足够简单——本质就是一个JSON-RPC的标准化封装,任何框架都能很快接入。OAMS要覆盖的范围比MCP大得多(路由、验证、归因、结算全包),复杂度也高得多。复杂度是标准化的敌人——太复杂了框架开发者就懒得接。
所以OAMS能不能像MCP一样成为事实标准,取决于它的接入成本够不够低。这个得等SDK出来才能判断。
第二,attestation节点的中立性怎么保证?
OAMS的验证逻辑依赖一组独立节点来做attestation。这些节点的中立性是整套机制的根基。如果attestation节点跟被验证的agent有利益关联(比如同一个运营者同时跑agent和验证节点),那验证结果就是自己给自己打分,毫无意义。
这个问题在PoS链里已经被讨论了很多年,解决思路无非是随机抽样、罚没机制、节点准入门槛。OAMS采用的是随机抽样+软惩罚(降低奖励而非罚没资产),理论上可行,但抗合谋能力需要在实际运行中验证。
第三,三层协议之间的交互标准谁来定?
MCP是Anthropic主导的,A2A是Google主导的,OAMS是Operon定义的。三者之间目前没有正式的互操作标准。如果一个多agent工作流同时涉及MCP工具调用、A2A服务发现、OAMS交易验证,三套协议怎么优雅地协同?
这个问题现在还太早,可能要等各自都跑起来之后才会被认真讨论。但从历史经验看,协议之间的”胶水层”往往是最后才被补上、但对开发者体验影响最大的部分。
写在最后
agent协议栈现在的状态,大概相当于2005年的Web协议栈。HTTP已经定了,REST在流行,但OAuth还没出现,webhook还没标准化,API gateway还是个新概念。大家知道缺东西,但具体缺什么、该怎么补,整个行业还在摸索。
MCP和A2A补上了底下两层,但交易生命周期这一层的标准化才刚开始。OAMS是目前我看到的唯一一个在认真尝试定义这一层的协议,但它能不能成为事实标准,要看接入成本、生态采用率、以及三层协议之间的互操作性最终能做到什么程度。
继续观察,有进展再更新。

© 版权声明
THE END
喜欢就支持一下吧
分享
评论 抢沙发

请登录后发表评论

    暂无评论内容