<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>A2A on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/a2a/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Sun, 26 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/a2a/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Agents 互联！A2A/MCP/ANP/ACP 四大协议详解，还有一张看不见的攻击面地图！</title>
        <link>https://www.yesmiracle.net/post/20260726-agent-to-agent-protocol-guide/</link>
        <pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20260726-agent-to-agent-protocol-guide/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20260726-agent-to-agent-protocol-guide/cover.svg" alt="Featured image of post Agents 互联！A2A/MCP/ANP/ACP 四大协议详解，还有一张看不见的攻击面地图！" /&gt;&lt;p&gt;如果你关注 AI Agent 生态，过去一年半你一定被三个字母的协议缩写轰炸过：MCP、A2A、ACP、ANP、AGORA……&lt;/p&gt;
&lt;p&gt;坦白说，我刚接触时也是一脸懵——它们到底有什么不同？是不是互相竞争？选哪个才对？&lt;/p&gt;
&lt;p&gt;这个问题的答案其实很简单：&lt;strong&gt;它们不是「哪个更好」的关系，而是「不同层」的关系。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;打个比方：如果把多 Agent 系统想象成一个软件公司——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP&lt;/strong&gt; 是员工和工具的关系（我怎么用数据库、怎么调 API）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A2A&lt;/strong&gt; 是员工和员工的关系（项目经理怎么把任务派给你）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ANP&lt;/strong&gt; 是公司和公司的关系（跨组织怎么协作）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACP&lt;/strong&gt; 曾经是个独立方案，现在基本被 A2A 吸收了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇文章会带你从零理清 Agent 通信协议的版图，并且——作为一个做了 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/20260717-ai-agent-attack-surface-four-layers/&#34; &gt;AI Agent 攻击面全景&lt;/a&gt; 的人——我还会聊聊那些协议文档里不会写的安全隐患。&lt;/p&gt;
&lt;h2 id=&#34;为什么需要-agent-通信协议&#34;&gt;为什么需要 Agent 通信协议？&lt;/h2&gt;
&lt;p&gt;先把时间拨回 2024 年底。&lt;/p&gt;
&lt;p&gt;当时的主流 AI 应用还是「一个模型 + 一个 Chat UI」的形态。Agent 这个概念虽然火，但大多数 Agent 都是单兵作战——一个 Agent 调几个工具，完成任务。&lt;/p&gt;
&lt;p&gt;到了 2025-2026 年，情况变了。企业开始部署 &lt;strong&gt;多 Agent 系统&lt;/strong&gt;：一个采购 Agent、一个库存 Agent、一个物流 Agent，它们需要协作完成「帮用户下单」这么一件简单的事。&lt;/p&gt;
&lt;p&gt;问题来了：这三个 Agent 可能是不同团队用不同框架开发的。采购 Agent 用的是 LangGraph，库存 Agent 用的是 Google ADK，物流 Agent 是 Claude Code 写的脚本……没有统一协议，它们根本没法对话。&lt;/p&gt;
&lt;p&gt;这就是 Agent 通信协议要解决的核心问题。&lt;/p&gt;
&lt;h2 id=&#34;五大协议速览一张表看懂&#34;&gt;五大协议速览：一张表看懂&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;要素&lt;/th&gt;
          &lt;th&gt;MCP&lt;/th&gt;
          &lt;th&gt;A2A&lt;/th&gt;
          &lt;th&gt;ANP&lt;/th&gt;
          &lt;th&gt;ACP&lt;/th&gt;
          &lt;th&gt;AGORA&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;创造者&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Anthropic（2024.11）&lt;/td&gt;
          &lt;td&gt;Google（2025.4）&lt;/td&gt;
          &lt;td&gt;社区（2024-2025）&lt;/td&gt;
          &lt;td&gt;IBM（2024）&lt;/td&gt;
          &lt;td&gt;社区&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;治理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Linux Foundation&lt;/td&gt;
          &lt;td&gt;Linux Foundation&lt;/td&gt;
          &lt;td&gt;社区&lt;/td&gt;
          &lt;td&gt;Linux Foundation（已合并）&lt;/td&gt;
          &lt;td&gt;社区&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Agent → 工具&lt;/td&gt;
          &lt;td&gt;Agent ↔ Agent&lt;/td&gt;
          &lt;td&gt;去中心化 Agent 网络&lt;/td&gt;
          &lt;td&gt;企业消息（已并入 A2A）&lt;/td&gt;
          &lt;td&gt;自然语言元协议&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;消息格式&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;JSON-RPC 2.0&lt;/td&gt;
          &lt;td&gt;JSON-RPC 2.0&lt;/td&gt;
          &lt;td&gt;JSON-LD + DID&lt;/td&gt;
          &lt;td&gt;Multipart MIME&lt;/td&gt;
          &lt;td&gt;NL 指令&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;发现机制&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;手动/静态配置&lt;/td&gt;
          &lt;td&gt;Agent Card（.well-known）&lt;/td&gt;
          &lt;td&gt;DID + DPKI&lt;/td&gt;
          &lt;td&gt;注册中心&lt;/td&gt;
          &lt;td&gt;无标准化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;传输&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;HTTP/SSE&lt;/td&gt;
          &lt;td&gt;HTTP/SSE/gRPC&lt;/td&gt;
          &lt;td&gt;HTTPS P2P&lt;/td&gt;
          &lt;td&gt;REST + 消息队列&lt;/td&gt;
          &lt;td&gt;LLM 推理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;安全模型&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;OAuth 2.1 + PKCE&lt;/td&gt;
          &lt;td&gt;OAuth 2.0/mTLS/OIDC&lt;/td&gt;
          &lt;td&gt;DPKI 零信任&lt;/td&gt;
          &lt;td&gt;ACL + Broker auth&lt;/td&gt;
          &lt;td&gt;隐式信任&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;容错&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;低（依赖中心服务）&lt;/td&gt;
          &lt;td&gt;中（Peer reconnection）&lt;/td&gt;
          &lt;td&gt;高（P2P 冗余）&lt;/td&gt;
          &lt;td&gt;中高（Broker 集群）&lt;/td&gt;
          &lt;td&gt;中（依赖 LLM）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;逐个拆解每个协议做什么&#34;&gt;逐个拆解：每个协议做什么&lt;/h2&gt;
&lt;h3 id=&#34;mcpagent-的usb-c-接口&#34;&gt;MCP：Agent 的「USB-C 接口」&lt;/h3&gt;
&lt;p&gt;MCP（Model Context Protocol）是四个协议中最早、最成熟的一个。它的定位非常清晰：&lt;strong&gt;让 Agent 能调用外部工具&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个 Agent 想查数据库、发邮件、读文件，不需要为每个工具写自定义集成代码，只要工具暴露一个 MCP Server，Agent 就能通过标准化的 JSON-RPC 调用它。&lt;/p&gt;
&lt;p&gt;MCP 定义了三种核心原语：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt;：可调用的函数，有类型化的输入输出 schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resources&lt;/strong&gt;：只读数据端点（文件、数据库行、API 响应）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompts&lt;/strong&gt;：可复用的提示模板&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;2024 年刚发布时 MCP 还是个简陋的协议，到 2025 年底的 spec（2025-11-25）已经相当成熟，加入了 Streaming、Sampling（服务端主动发起 LLM 推理请求）、Tool Use 支持等关键能力。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;典型场景&lt;/strong&gt;：Cursor/Claude Code 里 Agent 调 MCP Server 查询数据库、读取文件、操作 GitHub。&lt;/p&gt;
&lt;h3 id=&#34;a2aagent-的协作框架&#34;&gt;A2A：Agent 的「协作框架」&lt;/h3&gt;
&lt;p&gt;Google 在 2025 年 4 月发布的 A2A（Agent-to-Agent Protocol），是&lt;strong&gt;真正意义上的「Agent 对 Agent」通信协议&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;A2A 的核心设计理念是「不透明协作」（opacity）——Agent 之间通过声明能力来合作，但不需要暴露内部推理过程、记忆或工具实现。&lt;/p&gt;
&lt;p&gt;A2A 有四个核心组件：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent Card&lt;/strong&gt;：每台 Agent 的「数字名片」，是一个 JSON 文档，声明了 Agent 的名称、描述、能力列表、支持的认证方案等。Agent Card 通常放在 &lt;code&gt;/.well-known/agent-card.json&lt;/code&gt;，供其他 Agent 发现。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;库存管理Agent&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;管理商品库存和库存水平&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://agent.example.com/&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;capabilities&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;streaming&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;pushNotifications&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;skills&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;check_stock&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;查询库存&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;查询任意商品的当前库存&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;securitySchemes&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;oauth2&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;oauth2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;flows&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clientCredentials&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;tokenUrl&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://auth.example.com/token&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Task&lt;/strong&gt;：任务单元，定义了请求者（Client Agent）和工作者（Remote Agent）之间的工作契约。任务有完整的状态机：&lt;code&gt;submitted → working → completed/failed/canceled&lt;/code&gt;，还支持 &lt;code&gt;input_required&lt;/code&gt;（需要用户输入）和 &lt;code&gt;auth_required&lt;/code&gt;（需要凭证交接）等中间状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Message &amp;amp; Part&lt;/strong&gt;：消息体被拆分成「Part」，每个 Part 可以有不同的媒体类型（text、image、audio 等），支持多模态通信。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transport&lt;/strong&gt;：支持三种传输绑定——JSON-RPC over HTTPS（默认）、gRPC、HTTP+REST。流式更新用 SSE，长任务用 Webhook（Push Notification）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A2A v1.0 在 2026 年初正式发布，现已托管到 Linux Foundation，拥有 50+ 企业合作伙伴包括 Salesforce、SAP、ServiceNow、Workday 等。IBM 的 ACP 在 2025 年 8 月宣布并入 A2A，基本宣告了 A2A 在企业级 Agent 协作领域的领先地位。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;典型场景&lt;/strong&gt;：一个「采购 Agent」发现库存不足，通过 A2A 把补货任务委派给「供应商 Agent」。「供应商 Agent」执行完后，通过 A2A 返回结果。&lt;/p&gt;
&lt;h3 id=&#34;anp去中心化的-agent-互联网&#34;&gt;ANP：去中心化的 Agent 互联网&lt;/h3&gt;
&lt;p&gt;ANP（Agent Network Protocol）是社区驱动的协议，目标更大——它想做一个&lt;strong&gt;去中心化的 Agent 网络&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果说 A2A 是企业内部或跨企业的 Agent 协作协议，ANP 想做的是类似「Agent 版的互联网」：任何 Agent 可以不需要中心化注册中心就能发现、认证、通信。&lt;/p&gt;
&lt;p&gt;ANP 的架构分三层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;身份层&lt;/strong&gt;：基于 DID（去中心化标识符）和 DPKI，每个 Agent 有密码学身份，不需要 CA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;元协议层&lt;/strong&gt;：动态协商通信协议——两个 Agent 可以先握手，再决定用什么协议说话&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用层&lt;/strong&gt;：基于语义的能力描述（JSON-LD）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ANP 的容错性极好——因为它用 gossip 协议广播发现消息，没有单点故障。但代价是延迟较高，不适合对实时性要求高的场景。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;典型场景&lt;/strong&gt;：IoT 场景中，数以万计的 Agent 设备自动发现和协作，没有中央服务。&lt;/p&gt;
&lt;h3 id=&#34;acp-和-agora&#34;&gt;ACP 和 AGORA&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ACP（Agent Communication Protocol）&lt;/strong&gt; 是 IBM 在 2024 年推出的协议，定位很务实：企业级、可靠消息、多模态。ACP 的设计基于成熟的 MIME 标准和消息队列（MQTT/AMQP/Kafka），在金融、保险等对消息可靠性要求极高的行业有一定市场。但 2025 年 8 月 IBM 宣布将 ACP 的核心概念和技术合并到 A2A 中，ACP 不再作为独立协议发展。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AGORA&lt;/strong&gt; 比较特殊——它不是一个标准化的协议，而是一套基于自然语言的「元协议」。Agent 之间不用严格的 JSON schema 约束，而是用自然语言指令直接对话。好处是灵活，坏处是依赖 LLM 的能力和安全加固。适合需要高度协商能力的场景（如商务谈判 Agent），但离生产级还有距离。&lt;/p&gt;
&lt;h2 id=&#34;常见实战场景&#34;&gt;常见实战场景&lt;/h2&gt;
&lt;h3 id=&#34;场景一ai-编程助手&#34;&gt;场景一：AI 编程助手&lt;/h3&gt;
&lt;p&gt;一个 AI 编程 Agent（Claude Code 或 Copilot）需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过 &lt;strong&gt;MCP&lt;/strong&gt; 读取代码仓库、查询数据库 schema、调 Git API&lt;/li&gt;
&lt;li&gt;通过 &lt;strong&gt;A2A&lt;/strong&gt; 把代码审查任务委派给另一个专门做安全审查的 Agent&lt;/li&gt;
&lt;li&gt;安全审查 Agent 审查完后，通过 A2A 返回漏洞报告&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;场景二企业客服升级&#34;&gt;场景二：企业客服升级&lt;/h3&gt;
&lt;p&gt;某电商公司的客服系统：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下单 Agent：通过 MCP 访问订单数据库&lt;/li&gt;
&lt;li&gt;库存 Agent：通过 MCP 查询 WMS 系统&lt;/li&gt;
&lt;li&gt;物流 Agent：通过 MCP 调用快递 API&lt;/li&gt;
&lt;li&gt;当用户问「我的单为什么还没发货」：下单 Agent 通过 A2A 向库存 Agent 查询备货状态，再向物流 Agent 查询配送信息，最后汇总给用户&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;场景三供应链跨企业协作&#34;&gt;场景三：供应链跨企业协作&lt;/h3&gt;
&lt;p&gt;A 公司的采购 Agent 通过 A2A 发现 B 公司的供应商 Agent，查询原材料报价、库存量和交货时间，然后通过 A2A 发起采购订单。B 公司的物流 Agent 接单后，通过 ANP 在物流联盟网络中寻找最便宜的运输方案。&lt;/p&gt;
&lt;h3 id=&#34;场景四企业内部安全编排&#34;&gt;场景四：企业内部安全编排&lt;/h3&gt;
&lt;p&gt;一个 SOC（安全运营中心）的多个 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;威胁检测 Agent：通过 MCP 读 SIEM 数据&lt;/li&gt;
&lt;li&gt;漏洞扫描 Agent：通过 MCP 调扫描器&lt;/li&gt;
&lt;li&gt;当威胁检测 Agent 发现可疑行为，通过 A2A 通知漏洞扫描 Agent 做针对性扫描，再通过 A2A 通知隔离 Agent 执行隔离操作&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安全隐患协议文档不会告诉你的五件事&#34;&gt;安全隐患：协议文档不会告诉你的五件事&lt;/h2&gt;
&lt;p&gt;这是我做 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/20260720-owasp-agentic-top-10-2026/&#34; &gt;OWASP Agentic Top 10 解读&lt;/a&gt; 时反复强调的一点：&lt;strong&gt;任何通信协议在引入便利性的同时，都打开了新的攻击面&lt;/strong&gt;。A2A 和 MCP 也不例外。&lt;/p&gt;
&lt;h3 id=&#34;1-agent-card-注入攻击&#34;&gt;1. Agent Card 注入攻击&lt;/h3&gt;
&lt;p&gt;Agent Card 是 A2A 的核心发现机制。但协议的 Agent Card 签名是可选的（虽然 spec 推荐了 JWS 签名，但没强制）。&lt;/p&gt;
&lt;p&gt;这意味着：攻击者可以伪造一个 Agent Card，声明自己「精通库存管理」，但实际 Skill Description 里塞了 prompt injection payload。Client Agent 在读取这个描述后，会被注入恶意指令。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真实案例&lt;/strong&gt;：2025 年 arXiv 上有人发表了针对 Agent Card 的攻击论文，展示了如何通过精心构造的 skill description，让 orchestrator Agent 执行非预期的操作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;防御&lt;/strong&gt;：强制 Agent Card 签名验证、用 DNSSEC 保护发现过程、对 Card 内容做注入检测。&lt;/p&gt;
&lt;h3 id=&#34;2-凭证代理泄漏credential-delegation-leak&#34;&gt;2. 凭证代理泄漏（Credential Delegation Leak）&lt;/h3&gt;
&lt;p&gt;A2A 的 &lt;code&gt;auth_required&lt;/code&gt; 状态设计上是为了在任务执行过程中实现凭证交接。但问题在于：&lt;strong&gt;Agent 不是人类，它的凭证生命周期和人类完全不同&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果一个 Client Agent 把自己的 OAuth token 委派给了 Remote Agent，而这个 Remote Agent 是恶意的或被攻陷的——这个 token 可以被用来冒充 Client Agent 做其他操作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;防御&lt;/strong&gt;：短生命周期 token（TTL &amp;lt; 15 分钟）、作用域声明、每次任务单独授权而非会话级委派。&lt;/p&gt;
&lt;h3 id=&#34;3-webhook-ssrf&#34;&gt;3. Webhook SSRF&lt;/h3&gt;
&lt;p&gt;A2A 的 Push Notification 机制允许 Client Agent 注册一个 Webhook URL，供 Remote Agent 在任务完成后回调。&lt;/p&gt;
&lt;p&gt;攻击者可以注册一个内网地址（如 &lt;code&gt;http://169.254.169.254/latest/meta-data/&lt;/code&gt;）作为 Webhook，诱导 A2A Server 向该地址发起请求，获取云实例的元数据（即经典的 SSRF 攻击）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;防御&lt;/strong&gt;：Webhook URL 域名白名单、域所有权验证（challenge-response）、网络层封禁内网 IP 和元数据服务地址。&lt;/p&gt;
&lt;h3 id=&#34;4-replay-攻击&#34;&gt;4. Replay 攻击&lt;/h3&gt;
&lt;p&gt;A2A 的 Task 请求如果没有时间戳和 nonce 验证，攻击者可以截获一个合法的「创建补货订单」请求，然后在系统里回放多次，导致重复下单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;防御&lt;/strong&gt;：请求签名 + timestamp + nonce 三重验证，idempotency key，签名有效期控制在 30-60 秒。&lt;/p&gt;
&lt;h3 id=&#34;5-mcp-tool-poisoning&#34;&gt;5. MCP Tool Poisoning&lt;/h3&gt;
&lt;p&gt;MCP Server 向 Agent 暴露的 Tools/Resources/Prompts，如果配置不当，攻击者可以注入恶意工具描述，诱导 Agent 调用「看起来无害但实际上危险」的工具操作。&lt;/p&gt;
&lt;p&gt;这一点我在 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/20260717-ai-agent-attack-surface-four-layers/&#34; &gt;AI Agent 攻击面全景&lt;/a&gt; 中已经详细拆解过——MCP 的 Tool 层是 Agent 攻击面的「第三层防线」，也是最容易被忽视的一层。&lt;/p&gt;
&lt;h2 id=&#34;协议选择决策树&#34;&gt;协议选择决策树&lt;/h2&gt;
&lt;p&gt;看到这里你可能会问：「那我到底该用哪个？」&lt;/p&gt;
&lt;p&gt;简单的决策指南：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;只想让 Agent 调工具&lt;/strong&gt; → MCP（无脑选，已经是行业标准）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要让多个 Agent 协作完成任务&lt;/strong&gt; → A2A（企业级首选，50+ 合作伙伴）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要在去中心化场景下跨组织协作&lt;/strong&gt; → ANP（尚在早期，适合探索）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要可靠的消息投递、金融级容错&lt;/strong&gt; → 以前的选 ACP，现在可以选 A2A + 消息队列&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;想做实验性的全自然语言 Agent 网络&lt;/strong&gt; → AGORA（非生产级）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真实的生产环境中，&lt;strong&gt;你会同时用多个协议&lt;/strong&gt;。最常见的组合是 MCP + A2A：MCP 负责工具层，A2A 负责协作层。这两个协议由同一个基金会（Linux Foundation）治理，互操作性在持续演进。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;Agent 通信协议的发展，很像 1990 年代互联网协议的诞生：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP 是 HTTP（标准化了工具调用）&lt;/li&gt;
&lt;li&gt;A2A 是 SMTP + HTTP（标准化了 Agent 间的通信和协作）&lt;/li&gt;
&lt;li&gt;ANP 是 DNS + PGP（标准化了去中心化身份和发现）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有人会问「HTTP 和 SMTP 谁更好」——因为它们解决的问题不同。同样，MCP、A2A、ANP 不是竞争关系，它们是构建 Agent 互联网的 TCP/IP 协议栈。&lt;/p&gt;
&lt;p&gt;但别忘了：&lt;strong&gt;协议越开放，攻击面越大&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当你开始部署多 Agent 系统时，安全不是后置考虑。Agent Card 签名、凭证生命周期管理、Webhook 白名单、请求防重放——这些应该在你写第一行 Agent 代码时就想好，而不是等到被攻击之后。&lt;/p&gt;
&lt;p&gt;毕竟，我写 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/20260724-openai-agent-rogue-huggingface-breach/&#34; &gt;OpenAI 的 Agent 逃出沙箱自主攻击 Hugging Face&lt;/a&gt; 那篇时说过：&lt;strong&gt;Agent 的能力越强，它出问题时造成的破坏也越大。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
