首页›分类文章›人工智能›生成式AI与大模型›从MCP到A2A:LLM智能体协议栈的技术演进与工程选型

从MCP到A2A:LLM智能体协议栈的技术演进与工程选型

人工智能 · 生成式AI与大模型2026-10-020次浏览0 个评论

摘要

大模型应用正在经历第三次范式跃迁。从2022年的Completion API调用,到2023年的Function-Calling原生工具调用,再到2025年的多智能体分布式协作,每一次跃迁都伴随着连接层基础设施的重构。当前阶段的核心矛盾不再是"模型有没有能力",而是"模型如何安全、高效、标准化地连接外部世界与同类智能体"。Anthropic于2024年11月发布的Model Context Protocol(MCP)、Google于2025年4月推出的Agent-to-Agent Protocol(A2A),以及IBM推出后与A2A合并的Agent Communication Protocol(ACP),相继进入主流框架的视野,形成了工具连接层与智能体协作层的分层协议分工。本文系统拆解MCP与A2A的架构设计、安全模型与工程实现差异,梳理ACP与A2A合并的背景与影响,并提供一个基于部署环境、Agent规模与通信延迟的三维选型决策框架。对于正在构建AI原生应用的开发者,理解这组协议的边界与演化方向,是避免重复造轮子和架构债务的前置条件。ACP作为独立协议虽已退出历史舞台,但其在REST原生接口、多模态消息与流式执行等方面的技术理念通过A2A得到了延续,也为后续协议标准化提供了宝贵的实践样本。

第一章:为什么需要智能体协议——从Function Call到分布式Agent生态

大模型落地路径的演进,本质是一部"连接能力"的扩展史。

1.1 应用范式的三次跃迁

第一次跃迁发生在2022至2023年初,以OpenAI的Completion API和Chat Completion API为代表。开发者通过Prompt Engineering将任务封装为文本指令,模型仅作为文本生成器存在。这一阶段的核心局限在于封闭性:模型无法主动获取外部信息,所有上下文必须预先加载到Prompt中,导致幻觉率居高不下。

第二次跃迁由2023年6月的OpenAI Function-Calling触发。模型获得了在生成过程中暂停、调用外部函数、并注入返回结果继续推理的能力。这种工具调用模式迅速成为行业标准,但很快暴露出一个结构性问题:每个模型厂商(OpenAI、Anthropic、Google)都定义了自己的工具描述格式和调用约定,工具开发者被迫为每个模型单独实现适配层。LangChain和LlamaIndex等中间件框架试图通过抽象来弥合这种碎片化,但终究是在SDK层面打补丁,而非协议层面的根治。

第三次跃迁正在2025年加速成型。单一模型调用工具的范式,正在被多智能体协作取代。一个复杂的业务流程——例如招聘自动化——可能涉及简历解析、技能匹配、日程协调、邮件起草、面试评估等多个子任务。将这些能力封装为独立Agent后,问题从"模型如何调用工具"升级为"Agent如何发现彼此、委派任务、交换中间结果、管理生命周期"。这要求一套跨越厂商、跨越运行时的标准化通信协议。

1.2 从SDK到协议的进化逻辑

SDK碎片化带来的直接成本是N×M的适配矩阵:N个工具提供商需要为M个模型/框架各写一套适配器。更隐蔽的成本在于安全与治理的缺失——每个SDK自行处理认证、权限、审计,导致企业级部署时安全模型无法统一审计。

协议化的本质,是将"模型-工具-环境"的交互抽象为四个标准化要素:统一的消息格式(消除厂商差异)、服务发现机制(让模型自动找到可用工具)、认证与权限模型(最小权限原则的可执行表达)、以及生命周期管理(会话、状态、错误传播的标准语义)。当这些要素被协议化后,"一次开发,全模型可用"从口号变为技术现实。

MCP的发布标志着这一转向的成熟。Anthropic没有发布一个新的Python SDK,而是定义了一套基于JSON-RPC 2.0的开放协议。MCP Server可以用任何语言编写,任何兼容MCP的Host(如Claude Desktop、Cursor、Windsurf)都能直接消费其能力。同样,A2A选择基于HTTPS+JSON-RPC 2.0,目的也是跨平台互操作而非绑定特定框架。IBM的ACP曾试图解决Agent间通信问题,但在2025年8月与A2A合并,其技术积累成为A2A生态的一部分。

1.3 协议演进时间线

下图展示了大模型工具调用从厂商私有SDK到标准化协议的技术演进脉络。关键节点包括2023年中Function-Calling的诞生、2024年初LangChain Tools的抽象尝试、2024年11月MCP的发布,以及2025年4月A2A的推出。每一次节点跃迁都对应着一个核心驱动力的切换:从"模型原生化能力"到"中间件抽象",再到"协议层统一"。

flowchart LR
    A["2023.06<br/>OpenAI Function-Calling<br/>[模型原生工具调用]", style A fill:#e1f5e1] --> B["2024.01<br/>LangChain Tools<br/>[中间件抽象层]", style B fill:#fff3cd]
    B --> C["2024.11<br/>MCP (2024-11-25)<br/>[结构化上下文协议]", style C fill:#d1ecf1]
    C --> D["2025.04<br/>A2A Protocol<br/>[智能体互联协议]", style D fill:#f8d7da]
    D --> E["2025.03 (已并入A2A)<br/>ACP Protocol<br/>[原IBM通信协议]", style E fill:#e2e3f3]
    
    A -.->|驱动力| F["模型侧:让LLM学会<br/>暂停-调用-继续的推理模式"]
    B -.->|驱动力| G["开发者侧:用统一API<br/>屏蔽厂商差异"]
    C -.->|驱动力| H["生态侧:一次开发<br/>全模型+全Host可用"]
    D -.->|驱动力| I["系统侧:异构Agent<br/>跨平台协作需求"]
    E -.->|驱动力| J["IBM推出后被弃用<br/>统一到A2A协议栈"]

这张时间线揭示了协议层演进的内在逻辑:问题空间从"单个模型如何扩展能力"逐步外扩为"多个智能体如何在分布式环境中协作"。MCP解决的是纵向集成问题(模型如何接入外部资源),A2A解决的是横向互联问题(智能体之间如何通信)。其中,IBM于2025年3月推出的Agent Communication Protocol(ACP)也瞄准了Agent间通信,但在2025年8月与A2A正式合并,其技术积累被吸收进A2A协议栈。这一纵一横的分工,加之ACP与A2A的合并,构成了新一代AI应用基础设施的骨架。

第二章:MCP——让模型拥有"环境触觉"的结构化上下文协议

2.1 设计哲学

MCP的设计者面临一个核心选择:是继续增大模型参数量来提升知识覆盖,还是让模型获得结构化的、实时的环境感知能力?

Anthropic选择了后者。MCP的核心理念可以概括为"环境触觉"——模型不需要记住所有数据,而是需要一种标准化的方式去"触摸"外部世界:读取本地文件、查询数据库、调用内部API、获取实时代码上下文。这种设计将模型从"知识压缩容器"转变为"具备行动能力的推理引擎"。

这一哲学与Unix的设计哲学有异曲同工之处:MCP Server像是AI时代的Unix工具——每个Server只做一件事,通过标准输入输出(stdio)或网络接口与Host通信,组合起来就能完成复杂任务。

2.2 核心架构:三元拓扑与三种能力原语

MCP的架构由三个核心角色组成:

  • Host:运行LLM的应用程序(如Claude Desktop、Cursor、Windsurf IDE)。Host负责初始化Client、管理用户授权、聚合多个MCP Server的能力。一个Host可以同时连接多个Client。
  • Client:位于Host内部的协议适配器,负责维护与单个MCP Server的长连接,处理消息路由、生命周期管理和错误传播。Client与Server通常是一对一关系。
  • Server:暴露外部能力的进程。Server声明自己提供的Resources、Tools、Prompts,并通过JSON-RPC 2.0协议与Client通信。Server可以用Node.js、Python、Rust等任何语言实现。

MCP定义了三种能力原语:

  1. Resources(资源):提供结构化数据的可读接口,如文件内容、数据库记录、API响应。Resources是只读的,模型可以订阅变更通知(listChanged)。
  2. Tools(工具):可被模型调用的可执行操作,如文件编辑、命令执行、API调用。Tools附带JSON Schema描述其参数结构,模型根据语义自动选择调用哪个Tool。
  3. Prompts(提示模板):预定义的Prompt模板,Server可以向Host注册提示词集合,帮助用户快速启动特定工作流。
flowchart TD
    subgraph Host["Host进程(用户侧)"]
        C1["Client A"]
        C2["Client B"]
        C3["Client C"]
        LLM["LLM推理引擎"]
    end
    
    subgraph Server1["MCP Server: 文件系统"]
        R1["Resources:<br/>*文件列表/内容*"]
        T1["Tools:<br/>read_file / write_file"]
    end
    
    subgraph Server2["MCP Server: 数据库"]
        R2["Resources:<br/>*表结构/查询结果*"]
        T2["Tools:<br/>execute_query / describe_table"]
    end
    
    subgraph Server3["MCP Server: Git"]
        R3["Resources:<br/>*commit history / diff*"]
        T3["Tools:<br/>git_status / git_log"]
    end
    
    C1 <-->|"stdio / HTTP+SSE<br/>JSON-RPC 2.0"| Server1
    C2 <-->|"stdio / HTTP+SSE<br/>JSON-RPC 2.0"| Server2
    C3 <-->|"stdio / HTTP+SSE<br/>JSON-RPC 2.0"| Server3
    
    LLM -->|"1. 发现能力<br/>'initialization'"| C1
    LLM -->|"2. 调用Tool<br/>'tools/call'"| C2
    LLM -->|"3. 读取Resource<br/>'resources/read'"| C3
    
    Server1 -->|"能力声明<br/>capabilities"| C1
    Server2 -->|"Schema约束<br/>JSON Schema"| C2
    
    style Host fill:#e8f4f8,stroke:#333
    style Server1 fill:#f0f8e8,stroke:#333
    style Server2 fill:#f0f8e8,stroke:#333
    style Server3 fill:#f0f8e8,stroke:#333

这幅架构图展示了MCP的核心拓扑关系。Host通过多个Client并发连接多个MCP Server,每个Server在初始化时通过initialize握手声明其capabilities(如支持Resources异步通知、支持Tool调用)。LLM作为Host内的推理引擎,根据当前任务语义选择调用哪个Client的哪个Tool,或读取哪个Resource。这种星型拓扑将能力提供方(Server)与能力消费方(Host)解耦,使得新增的MCP Server可以无需修改Host代码即插即用。

2.3 消息协议细节

MCP基于JSON-RPC 2.0构建,但做了一些关键扩展以适应AI场景的双向通信需求。

初始化握手:Client与Server建立连接后,首先交换initialize请求,协商协议版本(如2025-03-26)、capabilities(如Server支持tools原语、Client支持sampling即反向调用LLM)。握手完成后,Server推送notifications/initialized确认就绪。

消息类型:标准JSON-RPC的请求(request)、响应(response)、通知(notification)三类消息。MCP的通知机制尤其重要——Server可以主动推送resource变更(notifications/resources/updated),而非被动等待轮询。

资源标识:每个Resource通过URI标识(如file:///home/user/project/main.py、postgres://db/users/1)。URI方案(scheme)定义了资源类型,Host可以根据URI权限和来源配置访问控制策略。

传输层:MCP支持三种transport:

  • stdio:Server作为独立进程由Host启动,通过标准输入输出通信。这是本地工具最安全的模式,因为Server运行在Host进程的子进程中,天然具备进程隔离。
  • HTTP with SSE:Server作为独立HTTP服务运行,Client通过Server-Sent Events(SSE)接收Server推送的消息。适合远程或沙箱化部署。
  • WebSocket:双向全双工通信,延迟更低,但实现复杂度高于SSE。

2.4 安全模型

MCP的安全设计围绕三个原则展开:

进程隔离:stdio模式是MCP推荐的安全形态。每个MCP Server作为独立子进程运行,与Host的内存空间隔离。即使Server被攻破,攻击者仍需突破操作系统进程边界才能影响Host。相比之下,在同一进程内加载插件的架构(如传统IDE插件)不具备这种天然隔离。

能力声明(Capabilities):Server在初始化时明确声明自己支持哪些原语(resources、tools、prompts)以及哪些子能力(如是否支持资源订阅变更)。Host可以基于capabilities实施最小权限策略——如果Server没有声明tools能力,Host应拒绝向其发送tools/call请求。

权限粒度:MCP的权限控制可以在两个层面实施。Server-level权限决定Host是否有权连接某个Server;Resource-level权限则控制对Server内具体Resource的访问。例如,文件系统MCP Server可以配置为仅暴露/workspace目录下的文件,而隐藏~/.ssh等敏感路径。

然而,MCP的安全模型仍存在一个未完全解决的难题:Tool调用请求的语义审查。当LLM决定调用execute_command工具并传入rm -rf /workspace时,MCP协议本身不会拦截这一请求——它只负责可靠传递。Host层需要实施额外的输入审查和沙箱策略,这是协议边界与实现责任的灰色地带。

第三章:A2A——Agent跨平台通信的标准化协议

3.1 设计出发点

如果说MCP解决的是"单个Agent如何扩展能力",A2A解决的就是"多个Agent如何协作完成任务"。

Google在2025年4月发布A2A时,其背后的观察是:企业级AI系统不是由单一超级Agent构建的,而是由多个专精Agent(domain-specific agents)组合而成——一个专门解析简历,一个专门排程会议,一个专门起草邮件,一个专门评估技能。这些Agent可能由不同团队用不同框架(LangChain、CrewAI、AutoGen、甚至自研)构建,运行在不同基础设施(本地服务器、GCP、Azure、AWS)上。它们之间缺乏一种厂商无关的、跨平台的通信标准。

A2A的设计目标因此聚焦于三个核心问题:

  1. 发现(Discovery):Agent A如何知道Agent B存在,以及Agent B能解决什么问题?
  2. 委派(Delegation):Agent A如何将一个子任务完整地交给Agent B,并跟踪其执行状态?
  3. 结果交换(Artifact Exchange):Agent B如何将中间产物(如排好的日程、生成的文档)返回给Agent A,支持多轮增量更新?

3.2 技术架构:Agent Card与三个核心对象

A2A协议围绕三个核心对象构建:

Agent Card:每个A2A兼容的Agent必须暴露一个公开的/.well-known/agent.json端点,返回一个JSON格式的Agent Card(遵循JSON Schema规范)。这张"数字名片"包含Agent的标识符、名称、版本、支持的Skills列表、认证要求、端点URL等元数据。Agent Card的发现机制类似于Web的robots.txt或/.well-known/约定,使得Agent可以像浏览网页一样发现彼此的能力。

一个典型的Agent Card结构如下:

json
{
  "name": "resume-parser-agent",
  "description": "提取并结构化简历中的技能与经历",
  "url": "https://agents.company.com/resume-parser",
  "provider": {
    "organization": "HR-Tech-Team",
    "url": "https://company.com"
  },
  "version": "1.0.0",
  "authentication": {
    "schemes": ["OAuth2", "ApiKey"]
  },
  "defaultInputModes": ["text", "file"],
  "defaultOutputModes": ["text", "json"],
  "skills": [
    {
      "id": "parse-pdf",
      "name": "解析PDF简历",
      "description": "从PDF文件中提取结构化信息",
      "tags": ["pdf", "resume", "parsing"],
      "examples": ["解析software-engineer-resume.pdf"],
      "inputModes": ["file"],
      "outputModes": ["json"]
    }
  ]
}

Task(任务):A2A中的基本工作单元。一个Task有明确的生命周期:submitted → working → input-required(可选,表示需要请求方补充信息) → completed/failed/canceled。Task对象包含输入消息(消息可以是text、file、data等多种形式)、输出Artifacts列表、以及元数据(创建时间、更新时间、优先级等)。

Artifact(产物):Task执行过程中产生的可交付物。一个Task可以产生多个Artifact(如一份简历解析结果、一份结构化JSON、一段摘要文本)。Artifact支持增量推送——Agent可以通过streaming events持续向请求方推送部分生成的产物,而非等待整个任务完成。

Skill:Agent Card中声明的Service端点,代表Agent能执行的特定能力。Skills支持参数化,通过JSON Schema定义输入/输出格式。这使得Agent A可以让Agent B以标准化方式执行特定操作,而无需了解B的内部实现。

sequenceDiagram
    autonumber
    participant A as "Agent A<br/>[调度Agent]"
    participant Discovery as "Agent Registry<br/>[或 DNS/目录服务]"
    participant B as "Agent B<br/>[简历解析Agent]"
    
    A->>Discovery: GET /.well-known/agent.json<br/>?query=resume-parsing
    Discovery-->>A: 返回匹配的Agent Cards列表
    
    A->>B: POST /tasks/send<br/>{task: {id: "t-001", message: {parts: [{file: resume.pdf}]}}
    B-->>A: 202 Accepted<br/>{task: {id: "t-001", status: "submitted"}}
    
    Note over B: 解析PDF → 提取结构化数据
    
    B-->>A: SSE stream<br/>{task: {id: "t-001", status: "working", artifacts: [...partial...]}
    
    B-->>A: SSE stream<br/>{task: {id: "t-001", status: "completed",<br/>artifacts: [{type: "json", content: structured_resume}]}
    
    A->>B: POST /tasks/send<br/>{task: {id: "t-002", ...}}
    B-->>A: SSE stream<br/>{task: {id: "t-002", status: "input-required",<br/>message: "请确认候选人姓名拼写"}}
    
    A->>B: POST /tasks/send<br/>{task: {id: "t-002", message: {parts: ["确认:Zhang Wei"]}}
    B-->>A: SSE stream<br/>{task: {id: "t-002", status: "completed"}}

这幅序列图展示了A2A的典型协作流程。调度Agent(Agent A)首先通过目录服务发现拥有"简历解析"能力的Agent B(步骤1-2)。随后,Agent A向B发送一个Task请求(步骤3),B立即返回202 Accepted确认受理。在任务执行过程中,B通过Server-Sent Events(SSE)流式推送状态更新和部分产物(步骤5-6)。如果任务需要补充输入,B将状态设为input-required并等待A的响应(步骤7-9),实现真正的多轮对话式协作。这种异步+流式的通信模型,是A2A区别于同步RPC调用的关键特征。

3.3 通信模型

A2A基于HTTPS上的JSON-RPC 2.0进行通信,但引入了面向流式场景的扩展机制。

同步模式:tasks/send端点,请求方发送Task后等待响应。适合快速完成的子任务(如简历解析在数秒内完成)。

异步+流式模式:tasks/sendSubscribe端点,请求方通过SSE接收增量更新。这是A2A推荐的默认模式,因为它允许Agent在长时间运行的任务中持续发送中间产物和状态更新,同时支持input-required中断点。例如,面试排程Agent在检查三个候选人的日历冲突时,可以分三次推送"候选人A可用""候选人B有冲突""已自动重排到周四"等增量更新。

任务生命周期管理:A2A在协议层定义了完整的Task状态机:submitted(已提交)→ working(执行中)→ input-required(等待输入)→ completed(完成)/failed(失败)/canceled(取消)。请求方可以随时查询Task状态(tasks/get),也可以在任务完成前取消(tasks/cancel)。这种显式状态管理使得分布式调试和任务编排变得更加透明。

3.4 安全与信任

A2A的安全模型建立在两层机制之上:

认证层:支持OAuth 2.0和API Key两种方案。OAuth 2.0用于跨组织场景(Agent A在Google Cloud运行,Agent B在AWS运行),API Key用于同一组织内部的Agent间通信。认证信息在HTTP头中传输,遵循现有Web安全最佳实践。

能力沙箱(Capability-Scoped Endpoints):每个Skill在Agent Card中独立声明其端点URL和所需权限。请求方只能调用目标Agent已明确声明的Skills,而Agent可以在服务端拒绝任何超出声明范围的调用。这种设计与MCP的capabilities声明异曲同工,都遵循"默认拒绝、显式授权"原则。

黑箱交互(Opaque Mode):A2A协议不要求Agent B向其调用方暴露内部推理过程。B可以只返回最终的Artifact,而隐藏中间思考过程、使用的内部工具链、或访问的敏感数据源。这一设计保护了Agent的商业机密和隐私数据,但也对调试和审计提出了挑战——调用方无法深入了解"为什么返回这个结果"。

3.5 与MCP的定位区分

理解A2A与MCP的关系,需要用一个几何比喻:MCP是纵向的"竖线"(Agent向下连接工具和资源),A2A是横向的"横线"(Agent与Agent之间通信)。

在MCP架构中,Host内部的LLM通过MCP Client连接MCP Server,从而访问文件、数据库、API等外部资源。Host-Client-Server三元组解决的是"单个Agent如何获取外部信息"。而在A2A架构中,Agent A通过HTTPS向Agent B发送Task请求,解决的是"Agent A如何调用Agent B的专业能力"。两者是正交关系——一个Agent可以同时是A2A的客户端(向其他Agent发请求)和MCP的Host(向下连接工具Server),也可以同时暴露A2A服务端点(接受其他Agent请求)和充当MCP Server(向其他Host提供资源)。

这种互补性意味着开发者不需要在两者之间二选一。一个合理的设计是:用MCP解决Agent的"手脚"问题(连接外部世界),用A2A解决Agent的"社交"问题(与其他Agent协作)。

第四章:ACP——一段被A2A合并的历史协议

MCP和A2A解决了模型工具连接与Agent广域协作问题,但在A2A定型之前,IBM推出了一款瞄准Agent间通信的协议。本章回顾ACP的设计与后续合并的来龙去脉。

4.1 设计背景

相比本节早期草稿将ACP定位为"边缘低延迟补充"的叙述,ACP的真实定位是面向跨框架、跨组织Agent互操作的通用通信协议。IBM Research于2025年3月推出了Agent Communication Protocol(ACP),用于驱动其开源的BeeAI平台。ACP瞄准的问题与A2A高度重合——让不同团队用不同框架(LangChain、CrewAI、AutoGen、自研框架等)构建的Agent,能够发现彼此、委派任务、交换多模态内容,而无需各自实现私有集成。

其目标用例并非"毫秒级边缘控制",而是跨团队与跨组织的Agent编排:例如企业内部不同部门用异构技术栈实现的Agent,需要协同一项业务流程。ACP认为,一套基于标准HTTP语义、可用OpenAPI描述、任何语言均可调用的协议,是达成这一互操作性的最轻量路径——任何标准的HTTP客户端都能与ACP Agent通信,无需绑定特定SDK。

4.2 核心设计

ACP选择了REST原生的设计路线(不同于MCP/A2A的JSON-RPC),其典型的接口形态包括:

  • Agent发现:GET /agents 返回可用的Agent列表及其元数据(manifest),每个Agent可声明名称、描述、输入输出内容类型等能力信息。
  • 任务执行:POST /runs 创建一个新的执行(run),将任务派发给目标Agent;通过GET /runs/{id}查询状态。
  • 多模态消息:核心数据结构是Message与MessagePart,支持text、image、audio、video及任意MIME类型的多模态内容(而非仅文本JSON)。
  • 同步/异步/流式:同时支持同步返回、异步轮询(async)、以及基于SSE的流式输出(streaming)等多种执行模式。
  • 会话状态:ACP原生支持跨多轮的session状态管理,方便长对话与增量交互。

这种设计让ACP在实践层面"用标准REST栈解决问题"——HTTP动词天然映射到任务生命周期,OpenAPI规格可机器可读,任何语言都能通过通用HTTP客户端接入。在后续与A2A合并时,这些设计理念(尤其是多模态消息与流式执行)被作为输入带入A2A的演进。

4.3 与A2A的差异

ACP与A2A的差异主要体现在设计哲学与接口形态,而非简单的"边缘 vs 云端"分层。

维度A2AACP
传输协议HTTPS + JSON-RPC 2.0HTTP REST(OpenAPI 描述)
消息格式JSON(Message/Artifact 结构)JSON + 多模态(Message/MessagePart,任意 MIME)
执行模型同步 + 异步/流式(SSE)同步 + 异步轮询 + 流式(SSE)
发现机制Agent Card(/.well-known/agent.json)GET /agents manifest / 注册表
会话状态以 Task 为单元,显式生命周期原生 Session 状态管理
适用场景跨云、跨组织、异构Agent协作跨框架/跨组织Agent编排,多模态内容交换

需要强调的是,两者并非"最后一公里"的互补,而是目标高度重叠的同类协议——这恰恰是后来ACP并入A2A的根本原因。由于A2A在生态加速、厂商支持与运维成熟度上迅速占优,ACP作为独立协议选择合并而非继续分叉。

4.4 适用场景

ACP的目标场景延续了IBM在Agent互操作上的定位,可以归纳为三类:

跨框架的Agent团队协作:企业内部不同团队用LangChain、CrewAI、AutoGen或自研框架分别构建的Agent,需要共同完成一条业务流程。ACP用统一的REST接口将这些异构Agent接入同一套编排体系,无需为每种框架重写适配层。

多模态内容的Agent交换:面向图像、音频、视频等富媒体的任务(如设计审查、语音质检、合同扫描),ACP的Message/MessagePart原生支持任意MIME类型,相比纯文本JSON协议更契合这类负载。

开放生态与厂商中立的Agent市场:配合BeeAI平台,ACP支持Agent的发现、共享与部署,面向希望在不同组织间复用第三方Agent的场景。这与A2A瞄准的企业级Agent市场诉求高度一致。

4.5 ACP命运转折:与A2A合并

然而,ACP作为独立协议的发展历程在2025年8月划上句号。2025年3月ACP发布后不久,IBM便将其所在的BeeAI项目(及其中ACP协议)捐赠给Linux基金会;同年8月,ACP正式宣布并入Google的A2A协议,合并工作由Linux Foundation的LFAI & Data基金会牵头。IBM不再独立推进ACP规范,而是将ACP在REST原生接口、多模态消息、流式执行等方面的技术积累贡献给A2A,BeeAI平台也同步迁移为基于A2A构建。

这意味着,ACP作为独立协议的生命周期仅持续了约5个月(2025年3月-2025年8月)。但它留下的技术遗产——特别是REST原生接口设计、多模态消息结构与流式执行模式——将作为输入影响后续A2A的演进。

在后续章节中,本文仍会提及ACP的设计理念及其贡献的技术思路,但不将其视为与MCP/A2A并列的现行协议。读者在2025年底之后的工程实践中,应直接使用A2A标准来实现Agent间通信,而非寻找独立的ACP实现。

第五章:协议栈互补框架——MCP × A2A 的集成架构

理解了两个现行协议和一个历史协议各自解决的问题后,本节将它们整合为一个清晰的分层架构,展示它们在真实系统中如何协同工作。

5.1 分层定位

将现行协议映射到系统分层模型中,可以得到以下双层结构:

  • 工具连接层(Tool Connectivity Layer):MCP负责向下连接外部资源——文件系统、数据库、API、代码仓库。这是智能体的"感官",让它能够读取环境状态并执行物理动作(如写文件、发邮件、调数据库)。
  • 协作层(Agent Collaboration Layer):A2A负责Agent之间的广域协作——跨云、跨团队、跨框架的任务委派与结果交换。这是智能体的"社交网络",让专精Agent组合成更大的解决系统。A2A吸收了ACP在多模态消息与流式执行方面的设计经验,正在持续演进其生态。

说明:本文早期草稿中曾将ACP列为独立的"边缘层"。鉴于ACP已于2025年8月并入A2A,当前现行架构中不再存在独立的"第三层协议"。

5.2 一个完整用例的协议交互全景

通过一个"智能招聘自动化系统"的示例,可以直观理解两层协议(MCP + A2A)的交互方式:

  1. 简历投递触发:候选人在公司Portal上传简历(PDF)。Portal后端将PDF保存至对象存储,并向recruitment.resume.received A2A主题发布一个Task请求。
  2. 调度Agent(A2A协调):运行在Kubernetes集群中的调度Agent订阅了该主题。它首先进行Agent发现——查询Agent Registry,找到具备parse-pdf技能、当前负载最低的两个Agent:内部简历解析Agent和第三方背调Agent。
  3. 简历解析(MCP+上下文):调度Agent将Task派发给内部简历解析Agent。该解析Agent本身是一个MCP Host,启动时连接了三个MCP Server:文件系统Server(访问PDF文件)、NLP模型Server(调用Embedding向量化)、知识图谱Server(查询公司技能库匹配)。解析完成后,结构化结果(技能、经历、匹配分数)作为Artifact返回。
  4. 面试排程(A2A协作或本地协调):匹配分数达标后,调度Agent触发面试排程Agent。排程Agent可能运行在本地企业网内的办公自动化服务器上,通过A2A协议或专用通信通道连接到:日历Agent(通过MCP读取Exchange Server中的会议室和面试官日程)、通知Agent(通过MCP调用企业邮件系统发邀请)、以及备用Agent(在主要面试官冲突时的候补方案)。同局域网内的Agent可以通过A2A的异步+流式模式在数毫秒内完成会议室抢占和冲突检测。
  5. 结果聚合(A2A回传):最终排程结果(时间、地点、面试官名单)作为Artifact通过A2A回传给调度Agent,调度Agent更新招聘Pipeline看板,并向招聘经理推送通知。
flowchart TB
    subgraph Cloud["云端/数据中心"]
        Orchestrator["调度Agent<br/>[A2A Client + Server]"]
        Parser["简历解析Agent<br/>[MCP Host]"]
        Checker["背调Agent<br/>[A2A Server]"]
        
        subgraph MCP_Servers["MCP Server池"]
            FS["文件系统Server<br/>[Resources + Tools]"]
            NLP["Embedding Server<br/>[Resources]"]
            KG["知识图谱Server<br/>[Tools]"]
        end
        
        Parser -->|"stdio"| FS
        Parser -->|"HTTP+SSE"| NLP
        Parser -->|"HTTP+SSE"| KG
    end
    
    subgraph Edge["本地企业网 / 边缘层"]
        Scheduler["面试排程Agent<br/>[A2A Client]"]
        Calendar["日历Agent<br/>[MCP Host]"]
        Notify["通知Agent<br/>[MCP Host]"]
        
        subgraph Local_MCP["本地MCP Server"]
            Exchange["Exchange Server<br/>[日历数据]"]
            Email["邮件系统<br/>[SMTP/IMAP]"]
        end
        
        Calendar -->|"stdio"| Exchange
        Notify -->|"stdio"| Email
    end
    
    subgraph Portal["招聘Portal"]
        Upload["简历上传"]
    end
    
    Upload -->|"触发Task"| Orchestrator
    Orchestrator -->|"A2A: tasks/send"| Parser
    Orchestrator -->|"A2A: tasks/send"| Checker
    Parser -->|"结构化结果<br/>Artifact"| Orchestrator
    Checker -->|"背调报告<br/>Artifact"| Orchestrator
    Orchestrator -->|"A2A: tasks/sendSubscribe"| Scheduler
    Scheduler -->|"A2A: tasks/send"| Calendar
    Scheduler -->|"A2A: tasks/send"| Notify
    
    style Cloud fill:#e8f4f8,stroke:#333
    style Edge fill:#f0f8e8,stroke:#333
    style Portal fill:#fff3cd,stroke:#333

这幅集成架构图展示了MCP与A2A的端到端协作。云端数据中心内,调度Agent作为A2A的客户端向简历解析Agent(MCP Host)和背调Agent(A2A Server)派发任务。简历解析Agent向下通过MCP连接三个独立的Server,分别处理文件系统访问、Embedding计算和知识图谱查询。在本地企业网一侧,面试排程Agent通过A2A与日历Agent、通知Agent协作,各自再通过本地MCP Server连接Exchange和邮件系统。两种协议各司其职、互不重叠:MCP处理向下的资源连接,A2A处理Agent间的任务委派与结果交换。

5.3 网关与桥接器的涌现

两层协议的分层架构带来了一个新问题:协议间的格式转换与路由。MCP的JSON-RPC 2.0与A2A的JSON-RPC存在语义差异。这催生了"Agent Gateway"(Agent网关)这一新兴中间件类别。

Agent Gateway的典型职责包括:

  • 协议转换:将MCP的Resource读取请求代理到A2A的Artifact获取,或将不同的JSON-RPC变体互转。
  • 路由与负载均衡:根据Agent Card中的能力标签和实时负载指标,将A2A请求路由至最合适的后端Agent实例。
  • 安全边界穿越:作为外部网络与内部网络之间的受控边界,实施跨协议认证的传递与验证。
  • 可观测性聚合:将跨协议调用链的日志、指标、追踪信息汇聚为统一的分布式追踪视图。

目前,多个开源项目正在探索这一方向。例如,LangChain的LangGraph团队正在实验协议网关组件,允许LangGraph工作流中的节点既作为MCP Server暴露能力,又作为A2A Agent参与跨平台协作。vLLM团队也在探索在模型服务层内置MCP Client支持,使得模型推理服务可以直接作为MCP Host消费外部工具。

第六章:工程落地的关键权衡

协议选型确定后,工程实现阶段仍有四个关键权衡点值得深入讨论。

6.1 传输层选型

MCP支持stdio、HTTP+SSE和WebSocket三种传输方式,三者在不同场景下各有利弊:

stdio(标准输入输出):

  • 优势:进程隔离天然安全;启动速度快(无需网络握手);适合本地工具(如文件系统、Git操作)。
  • 劣势:Server只能由Host启动,无法独立运行;Server进程的生命周期与Host强绑定;不支持远程连接。
  • 适用场景:AI IDE插件(如Cursor、Windsurf)、本地开发工具链、需要高安全隔离的企业环境。

HTTP+SSE(Server-Sent Events):

  • 优势:Server可以独立部署(本地或远程);标准的HTTP基础设施(负载均衡、认证、日志)可直接复用;SSE支持Server向Client单向推送。
  • 劣势:每次请求有HTTP头开销;SSE是单向通道,Client向Server的请求仍需走独立的HTTP POST;双向通信需要两个HTTP连接。
  • 适用场景:远程MCP服务、微服务架构中的工具服务、需要水平扩展的MCP Server集群。

WebSocket:

  • 优势:全双工双向通信,单连接解决双向消息传输;相比SSE+HTTP POST组合减少了连接数;延迟更低。
  • 劣势:连接管理更复杂(心跳、重连、状态恢复);防火墙/代理可能阻止WebSocket升级;调试工具对WebSocket的支持不如HTTP成熟。
  • 适用场景:高频率双向交互场景(如实时协作编辑、游戏Agent的状态同步)、对延迟敏感的本地连接。

一个常见的工程折中方案是:stdio用于本地Server(安全优先),HTTP+SSE用于远程Server(运维便利性优先),WebSocket用于混合部署中的双向高频交互。

6.2 部署拓扑:每个Agent一个MCP Server还是共享Server pool?

在多Agent系统中,一个架构选择是:每个Agent自带全套MCP Server,还是多个Agent共享一个MCP Server pool?

每个Agent独立:隔离性最强,一个Agent不会干扰另一个Agent的资源访问;但Server进程数量随Agent线性增长,内存和CPU开销大;状态管理复杂(每个Server有自己的连接池、缓存、文件句柄)。

共享Server pool:资源利用率高,适合无状态Server(如提供Embedding计算的NLP Server);但隔离性下降,一个Agent的高频请求可能挤占另一个Agent的配额;权限管理更复杂,需要在Server内部实施多租户隔离。

实践中,无状态计算型Server(如Embedding、数据查询)通常适合共享pool;而状态型Server(如文件系统、数据库事务会话)通常需要每个Agent独立实例或至少独立会话上下文。

6.3 状态管理

MCP协议本身是无状态的:每个JSON-RPC请求是独立的,协议不强制要求Server维护会话状态。但在实际应用中,许多MCP Server必须维护状态才能正常工作。例如:

  • 数据库MCP Server需要维护数据库连接和事务状态。
  • 代码索引MCP Server需要维护构建索引的内存缓存。
  • 对话式MCP Server需要维护与用户的对话历史上下文。

这种"协议无状态、实现有状态"的矛盾,要求开发者在协议层之上设计状态外存与恢复机制。一个常见模式是:MCP Server将状态存储在Redis或本地文件中,Client在重新连接时通过某个Resource URI恢复之前的会话状态。更具挑战性的是长会话场景——当Host进程重启或MCP Server崩溃后,如何恢复一个已经执行了数十步Tool调用的复杂任务上下文?目前这仍是MCP生态中待标准化的开放问题。

6.4 错误处理与重试策略

Agent-to-Agent通信引入了新的故障模式:

部分失败(Partial Failure):任务链中某个中间Agent失败,但之前的步骤已经产生了副作用(如已发送了面试邀请邮件、已预定了会议室)。级联回退(cascading rollback)需要一种分布式补偿机制,但这超出了当前A2A协议的范围——A2A定义了Task的取消语义,但并未定义跨Task的Saga事务模式。

幂等性设计:Agent重试一个Task时,后端Agent需要能够识别"这是同一个Task的重复请求"。A2A在Task对象中包含唯一的id字段,为幂等性提供了基础,但协议并未强制要求Server实现幂等处理。这需要开发者在应用层实现去重逻辑。

级联超时:A2A的嵌套调用链中,Agent A调用Agent B,Agent B又调用Agent C。如果C超时,B如何优雅地处理并向A返回有意义的错误?当前最佳实践是在每个层级设置递减的超时预算(timeout budget),并设计降级(fallback)策略——但这些都属于应用层约定,而非协议层保证。

第七章:安全红线的工程实践

协议安全的设计意图,不等于部署后的实际安全状态。本节讨论四个需要在工程层严肃对待的安全问题。

7.1 权限最小化

Agent Card或MCP capabilities中声明的能力,往往在实际实现中过度授权。一个简历解析MCP Server可能只"需要"读取PDF文件的能力,但开发者为了"方便"赋予其write_file和execute_command权限。这种"权限膨胀"在快速迭代中极易发生。

工程上强制执行最小权限的方法包括:

  • 在CI/CD流水线中静态检查MCP Server源码,扫描是否调用了超出声明范围的系统API。
  • 使用seccomp、AppArmor或gVisor等容器级沙箱,将Server的文件系统访问限制在指定的只读目录。
  • 在A2A的Agent Card审查流程中,要求每个Skill附上所需的最小OAuth Scope列表,并在网关层拒绝任何越权请求。

7.2 隔离与沙箱

Tool调用的沙箱化是MCP生态中的关键防线。MCP协议本身不执行沙箱策略——它是一个通信管道,而非执行环境。Host或部署平台需要为Tool调用提供沙箱隔离。

当前的最佳实践层级包括:

  • 进程级隔离(stdio模式的基础保障):每个MCP Server运行在独立进程,这是最低基线。
  • 容器级隔离:将MCP Server封装在Docker容器内,限制CPU、内存、网络、文件系统访问范围。适用于大多数远程部署场景。
  • Wasm级隔离:将MCP Server编译为WebAssembly模块,运行在Wasm运行时(如WasmTime、WASI)内。Wasm的基于能力的安全模型(capability-based security)天然适合MCP的最小权限哲学,但当前Wasm在I/O密集型MCP Server(如数据库连接器)中的性能仍有瓶颈。

一个需要特别警惕的类别是"毁灭性操作"——任何通过MCP暴露文件删除(rm -rf)、数据库DROP TABLE、或API账户注销的Tool,都应当在沙箱中以"只读/白名单"模式运行,或至少在执行前弹窗请求用户确认。

7.3 审计与可追溯

多Agent系统中的问题诊断远比单体系统复杂。一个最终输出错误(如"面试安排在了非工作时间")可能源于:简历解析Agent的OCR误识别 → 技能匹配Agent的阈值设置过高 → 日历Agent的时区处理问题 → 通知Agent的邮件模板错误。如果没有跨Agent的分布式追踪,定位根因将是一场噩梦。

工程实践要求:

  • 在每个Agent调用中传递trace_id和span_id,使用OpenTelemetry或Jaeger等标准追踪格式。
  • A2A的Task对象中应包含parent_task_id字段,使得跨Agent的子任务可以关联回原始根任务。
  • MCP的每个Tool调用请求应记录调用方client_id、执行时间、参数摘要、以及返回结果的哈希签名,用于事后审计。

7.4 对抗性风险

Agent协议引入了全新的攻击面——一个恶意Agent可以通过A2A协议向其他Agent注入指令或窃取capabilities。

Prompt注入通过A2A传播:Agent A的输入被Prompt注入攻击后,Agent A可能在向Agent B发送的Task消息中嵌套恶意指令。由于A2A的"黑箱交互"特性,Agent B无法区分"任务请求本身"和"注入的嵌套指令"。防御策略包括:

  • 在Agent之间的消息边界处实施输入清洗——剥离或转义Task message中的特殊指令标记。
  • 为每个Agent设定明确的"系统指令边界",拒绝执行任何超出其预设Skill范围的操作。
  • 在关键操作(如邮件发送、会议室预订)前增加人工确认节点,尤其是在跨组织Agent协作场景中。

Capabilities窃取:攻击者可能伪装成一个合法的A2A Agent,向Agent Registry注册伪造的Agent Card,声称自己拥有高价值Skills(如"访问薪资数据库"),从而截获本应派发给真实Agent的请求。防御策略包括:

  • Agent Registry实施身份验证和数字签名验证,确保Agent Card的发布者可信。
  • 高敏感Skill的调用需要多Agent共识机制或人工审批节点,而非自动委派。

第八章:选型决策矩阵——一张图决定你的Agent系统需要哪些协议

面对MCP与A2A两种现行协议,开发者的核心问题不是"哪个最好",而是"我的系统需要哪些协议的组合"。ACP作为独立协议已并入A2A,本文选型仅考虑MCP与A2A。

8.1 决策维度

选型决策可以沿着四个维度展开:

  1. 部署环境:纯云端(Cloud-Native)、纯边缘(Edge/On-Premise)、还是混合云(Hybrid)?
  2. Agent规模:单Agent增强、几个协作Agent、还是数十至数百个Agent的集群?
  3. 通信延迟要求:秒级(容忍HTTP往返)、毫秒级(局域网信道级延迟)、还是微秒级(同主机IPC级延迟)?
  4. 外部工具依赖度:系统是否严重依赖外部文件、数据库、API等工具?还是主要在Agent之间纯粹交换数据?

8.2 纯MCP:单Agent增强场景

如果系统只有单个Agent,且核心需求是让它能访问更多外部工具(如AI IDE插件、个人知识库助手),则纯MCP是最轻量的选择。

典型用例:Cursor/Windsurf IDE通过MCP连接Git、数据库、文档等工具;个人AI助手通过MCP连接日历、邮件、笔记系统。

选型理由:不涉及多Agent协作,不需要A2A;部署在单个终端,不需要ACP。MCP的stdio模式提供了进程隔离,安全模型最简单。

8.3 MCP + A2A:多Agent云原生协作

当系统由多个专精Agent组成,部署在云环境或混合云中,且需要跨团队、跨框架的协作时,MCP与A2A的组合是最小可行架构。

典型用例:前述的招聘自动化系统;多步骤的数据分析流水线(数据采集Agent → 清洗Agent → 建模Agent → 报告生成Agent);跨云的企业服务编排。

选型理由:MCP为每个Agent提供"手脚"(连接外部资源),A2A为Agent群体提供"社交能力"(任务委派与结果交换)。两者正交组合,覆盖绝大多数企业级AI系统的需求。

8.4 MCP + A2A:大规模混合云与边缘协同

当系统同时涉及云端Agent编排和边缘/本地实时协调时,MCP+A2A全栈部署即可满足需求——无需引入独立的第三层协议(ACP已并入A2A)。边缘本地协调完全可以在A2A协议框架内实现。

典型用例:智能制造(云端调度Agent + 边缘产线Agent集群);智慧医疗(云端诊断Agent + 边缘手术辅助Agent);金融混合云(云端风控Agent + 本地交易Agent)。

选型理由:边缘Agent通过A2A实现本地协调,网关Agent再通过A2A将聚合结果上报云端。整套体系仅依赖MCP(连资源)+ A2A(Agent间通信)两种协议,避免了"所有通信都走公有云HTTPS"的额外链路,同时读者无需寻找独立的ACP实现——直接使用A2A标准即可。

flowchart TD
    Start(["开始:评估系统需求"]) --> Q1{"部署环境?"}
    
    Q1 -->|"纯云端/云原生"| Q2{"Agent数量?"}
    Q1 -->|"纯边缘/本地"| Q3{"延迟要求?"}
    Q1 -->|"混合云"| Q4{"需要跨环境协作?"}
    
    Q2 -->|"单Agent"| R1["纯 MCP<br/>[AI IDE插件/个人助手]"]
    Q2 -->|"多Agent"| Q5{"外部工具依赖?"}
    
    Q5 -->|"高"| R2["MCP + A2A<br/>[招聘自动化/数据分析流水线]"]
    Q5 -->|"低"| R2a["A2A 为主<br/>[纯粹Agent协作/数据交换]"]
    
    Q3 -->|"毫秒/微秒"| Q6{"需要连接云端?"}
    Q3 -->|"秒级"| R3["A2A 为主<br/>[同局域网/边缘Agent协作]"]

    Q6 -->|"是"| R4["MCP + A2A<br/>[智能制造/智慧医疗/金融混合云]"]
    Q6 -->|"否"| R5["A2A 为主<br/>[纯本地Agent集群]"]

    Q4 -->|"是"| R4
    Q4 -->|"否"| R2

    R1 --> End1(["实施"])
    R2 --> End1
    R2a --> End1
    R3 --> End1
    R4 --> End1
    R5 --> End1

    style Start fill:#d1ecf1,stroke:#333
    style End1 fill:#d4edda,stroke:#333
    style R1 fill:#fff3cd,stroke:#333
    style R2 fill:#e8f4f8,stroke:#333
    style R4 fill:#f8d7da,stroke:#333

这张选型决策流程图提供了一条清晰的决策路径。系统设计者首先判断部署环境:纯云端场景进一步根据Agent数量和工具依赖度选择纯MCP或MCP+A2A;纯边缘/本地场景根据是否连接云端选择以A2A为主或MCP+A2A;混合云场景几乎总是需要MCP+A2A全栈部署。决策的核心原则不是"尽可能全面",而是"刚好够用"——每一种额外的协议都带来架构复杂度和运维成本的增加,应当在确实满足需求时才引入。需要强调:ACP已并入A2A,选型矩阵中不再出现独立的ACP作为可选项。

第九章:前沿趋势与协议演化

9.1 协议竞争还是互补

MCP与A2A并非零和博弈,ACP的合并恰恰证明了这一点。两者解决的是拼图的不同部分,且设计理念共享同一套底层精神:开放协议、基于能力声明的最小权限模型、以及面向流式/异步场景的通信模式。区别在于MCP与A2A基于JSON-RPC 2.0,而ACP曾采用REST风格接口。

可以预见的演化方向是:MCP的生态将继续在"工具和资源连接"纵深发展,涌现更多标准化的MCP Server实现(如PostgreSQL MCP Server、Slack MCP Server、Salesforce MCP Server);A2A则会在"跨组织Agent市场"方向深化,可能出现类似App Store的Agent Marketplace,让组织之间购买和集成第三方Agent服务。

9.2 从协议到操作系统

一个更深层的趋势是:Agent协议栈可能从"应用层协议"下沉为"系统层原语"。

未来的操作系统(如Google的AI-first OS实验、或开源社区的Agent Native OS探索)可能将MCP Server注册和A2A Agent发现内嵌为内核级服务。这意味着开发者不再需要在应用层手动管理MCP Server的生命周期或A2A的HTTPS端点——这些将成为系统的基础能力,类似于今天的文件系统或网络协议栈。

这种下沉将大幅降低Agent系统的部署门槛,但也对标准化组织提出了更高要求——当协议成为系统原语时,向后兼容性和安全性缺陷的修复成本将呈指数级上升。

9.3 Web 4.0与AGENTS.md

在协议层标准化之外,一个新兴的前端约定正在社区中形成:AGENTS.md。这一约定要求代码仓库在根目录放置一个AGENTS.md文件,描述项目的技术规范、开发流程、测试要求和架构决策,使得AI Agent(如AI Coding Agent)在首次接触项目时就能理解其上下文。

AGENTS.md可以被视为MCP的"认知层"补充——MCP提供"工具与资源的连接",AGENTS.md提供"项目语义的理解"。两者结合,使得Agent不仅能执行项目内的操作(如运行测试、修改代码),还能理解"为什么这样做"以及"项目的整体结构是什么"。

9.4 标准化进展

截至2026年中,两大核心协议的社区采纳度正在加速:

  • MCP:Anthropic将MCP定位为"开放标准",已于2025年12月将其捐赠给Linux Foundation旗下的Agentic AI Foundation(AAIF),与Block、OpenAI共同治理,Google Cloud、Microsoft、AWS等厂商参与支持。据行业统计,截至2026年中已涌现大量活跃公开MCP Server实现(具体数量需核实,以下数字为早期口径:超过5,800个活跃公开Server、GitHub仓库超36,000个——建议以最新官方数据为准),覆盖文件系统、数据库、版本控制、通信、搜索等主流类别。Cursor、Windsurf、Claude Desktop等主流AI IDE均已原生集成MCP Host支持。
  • A2A:Google于2025年4月Google Cloud Next '25上发布后,LangChain、CrewAI、AutoGen等主流Agent框架已经或正在实现A2A兼容层。2025年6月,Google将A2A捐赠给Linux Foundation。IBM的ACP于2025年8月宣布与A2A合并,其技术积累被吸收进A2A规范。Agent Card的JSON Schema规范已发布至v1.0。Google Cloud的Vertex AI平台已提供A2A Agent的托管部署服务。

标准化组织的动向同样值得关注:IETF尚未将任何Agent协议纳入正式标准轨道,但相关工作组(如ASIH,AI Systems for Human-centric applications)已开始讨论智能体通信的标准化需求。W3C的Web Agents Community Group也在探索Agent与Web基础设施的集成方案。

结语

从OpenAI Function-Calling到MCP、从LangChain的Agent抽象到A2A、从云端API调用到边缘Agent协作——大模型连接层基础设施的演进轨迹清晰可见:每一次跃迁都朝着更开放、更标准、更解耦的方向推进。

MCP与A2A组成的协议栈,正在解开Agent生态的"连接之锁"。MCP赋予Agent触摸外部世界的能力,A2A赋予Agent与其他Agent对话以及在毫秒级时间尺度上协作的能力。而ACP虽然作为独立协议已退出舞台,其技术理念在A2A中继续延续。三者不是竞争关系,而是协议标准化进程中自然演化的不同板块。

对于正在构建AI原生应用的开发者,最务实的策略是分阶段拥抱:先用MCP解决即时的工具连接需求——这是目前生态最成熟、回报最立竿见影的一步;当系统中出现多个需要协作的Agent时,再引入A2A解决任务委派与结果交换。MCP + A2A的组合已经覆盖从云端到边缘的绝大多数工程场景。不必求全,但需理解边界——知道每个协议能解决什么、不能解决什么,以及协议生态的演化方向,是避免架构债务的关键。

Agent协议成熟之后,下一个深度话题已经在地平线隐约浮现:Agent之间的经济系统与信任网络。当数百个来自不同组织、运行在不同基础设施上的Agent组成一个开放的市场时,如何定价一个Agent的服务?如何建立跨组织的信任链?如何分配一个协作任务产生的经济价值?这些问题的答案,可能比协议本身更能定义智能体时代的商业版图。

评论

0

评论加载中…

发表评论

0/2000