本文收录于专栏《AI Agent原理与实战》2026版—— 专栏系统覆盖 AI Agent 的记忆、工具、插件与实战点击订阅可跟踪后续更新。本课定位MCP 连接Agent 与工具那 Agent 与 Agent 之间呢本课讲 A2A 协议、NLWeb并把 MCP/A2A/NLWeb 三个协议的问题域彻底分清——这是面试与架构评审的高频考点。第 23 课多 Agent 框架的通信层多数已向 A2A 靠拢。阶段 3框架与协议 来源【微软课程·11 下】关键字A2A协议、Agent互操作、NLWeb、智能体通信、跨框架协作、MCP对比、协议生态、互操作标准本节目录19.1 为什么有了 MCP 还要 A2A19.2 A2A 核心概念19.3 NLWeb第三个协议19.4 三协议问题域区分本课核心19.5 案例两个 Agent 通过 A2A 风格消息完成一次协作【已实测2026-10-01】概念讲解19.1 为什么有了 MCP 还要 A2AMCP 解决的是一个 Agent 怎么接工具但当任务需要多个独立 Agent 协作——你的客服 Agent 要把退货工单交给供应商的售后 Agent 处理——两个问题 MCP 覆盖不了发现对方 Agent 是谁、能干什么、在哪跨组织/跨框架对等协作对方不是工具是有自己模型、自己工具、自己会话状态的另一个 Agent。任务可能长耗时、需要多轮交换、异步通知。A2AAgent2Agent / Agent-to-Agent协议由此而生Google 2025-04 发起Google Cloud Next 大会联合 50 合作伙伴推出解决跨厂商 Agent 互操作2025-06 捐给 Linux 基金会供应商中立化2026 年 4 月发布1.0 稳定规范签名 Agent Card、多租户、现代安全流。截至 2026-04超过 150 家组织支持AWS/Cisco/IBM/Microsoft/Salesforce/SAP/ServiceNow 等技术指导委员会成员已进入 Google/Microsoft/AWS 主要云平台并有企业生产部署。一句话分工官方口径MCP 装备 Agentagent-to-toolA2A 连接 Agentagent-to-agent互补而非竞争。19.2 A2A 核心概念微软课程思想源自微软原课第 11 课《Using Agentic Protocols》下半——A2A/NLWeb 部分微软讲 A2A 时强调它与 MCP 的互补而非竞争——“MCP 给 Agent 装工具A2A 让 Agent 互相对话”并点出 A2A 的三个独有价值跨厂商/跨框架协作不同技术栈的 Agent 也能组队、模型选择自由每个远端 Agent 自主选自己的 LLM、内建鉴权安全框架集成在协议层。NLWeb 部分微软的愿景是AI Web 的 HTML——每个网站一个自然语言端点且天生是 MCP server。本课 19.1/19.4 的三协议问题域区分正是把微软这个互补论展开成决策表。概念作用类比Agent CardJSON 名片放在/.well-known/agent-card.jsonv0.3.0 起的标准路径v0.2.x 时代是agent.json网上老教程混用需注意声明身份/描述/能力/skills/endpoint网站的 robots.txtTask协作的基本单元有生命周期submitted→working→completed/failed…产出 Artifacts工单Message / Part客户端与远端 Agent 间的通信单元Part 可以是文本/文件/结构化数据聊天消息/附件Agent Executor远端 Agent 内部用自己的 LLM 自己的工具解析请求执行任务后端服务传输层HTTPS JSON-RPC 2.0鉴权直接复用 Web 成熟体系OAuth 2.0 / API key。A2A 明确不管的三件事不管你怎么建 AgentLangGraph/CrewAI/MAF 都行、不管 Agent 内部子 Agent 怎么调度、不管 Agent 怎么接自己的工具那是 MCP 的事。每个 A2A Agent自主选模型——远端 Agent 用什么 LLM 是它的内政这正是与把对方当工具调的本质区别。19.3 NLWeb第三个协议NLWebNatural Language Web微软 2025-05 Build 大会发起的开源项目解决第三个问题域让网站可以被自然语言访问。每个 NLWeb 实例做两件事NLWeb 协议端点网站暴露自然语言问答接口返回 Schema.org 结构化 JSON——目标是做AI Web 的 HTML。同时是一个 MCP server外部 Agent 可用 MCP 的ask方法直接查这个网站。底层是向量检索支持 Qdrant/Milvus/Snowflake/Azure AI Search 等后端。典型场景酒店的 NLWeb 实例让外部旅行 Agent 直接问有没有素食友好餐厅。19.4 三协议问题域区分本课核心协议问题域连接对象一句话MCP工具连接Agent ↔ 工具/数据给 Agent 装手A2AAgent 通信Agent ↔ Agent让 Agent 之间对话协作NLWeb网站访问Agent ↔ 网站让网站对 AI 说人话三者组合的完整图景一个用 LangGraph 构建的交易 Agent框架通过 MCP 连接行情数据库和下单系统工具通过 A2A 把合规审查委托给另一个团队的审查 Agent协作通过 NLWeb 查询供应商网站的商品页信息获取。案例实战19.5 案例两个 Agent 通过 A2A 风格消息完成一次协作【已实测】运行环境实测于 LinuxUbuntu 22.04 / Python 3.10.12纯标准库零第三方依赖、无需 API key。Windows 同构http.server/urllib均为 Python 自带PowerShell 下python a2a_mini_demo.py原样可跑唯一平台差异若 7831 端口被占用换一个端口号代码三处同步改。目标客户端 Agent 发现远端 ResearchAgent → 发送文献调研任务 → 拿回结构化结果。# a2a_mini_demo.py 纯标准库 2026-10-01 实测通过# 远端 Agent HTTP server 暴露 Agent Card message/send演示骨架importjson,threading,http.server,urllib.request,time RESPONSES{调研:已检索 3 篇文献A(2025)、B(2026)、C(2026)结论方向可行。,default:任务已受理。,}classRemoteAgentHandler(http.server.BaseHTTPRequestHandler):deflog_message(self,*a):passdef_send(self,obj):bodyjson.dumps(obj,ensure_asciiFalse).encode()self.send_response(200)self.send_header(Content-Type,application/json)self.end_headers()self.wfile.write(body)defdo_GET(self):# ① Agent CardA2A 的发现机制约定路径ifself.path/.well-known/agent-card.json:self._send({name:ResearchAgent,description:文献检索与调研 Agent演示,url:http://127.0.0.1:7831/,skills:[{id:literature_review,name:文献调研}]})defdo_POST(self):# ② JSON-RPC 2.0 message/sendA2A 的通信层reqjson.loads(self.rfile.read(int(self.headers[Content-Length])))textreq[params][message][content][parts][0][text]key调研if调研intextelsedefaultself._send({jsonrpc:2.0,id:req[id],result:{taskId:task-001,state:completed,artifacts:[{parts:[{type:text,text:RESPONSES[key]}]}]}})threading.Thread(targetlambda:http.server.HTTPServer((127.0.0.1,7831),RemoteAgentHandler).serve_forever(),daemonTrue).start()time.sleep(0.3)# ---- 客户端 Agent 侧 ----cardjson.load(urllib.request.urlopen(http://127.0.0.1:7831/.well-known/agent-card.json))# 发现print([1] 发现远端 Agent:,card[name],-,card[description])payloadjson.dumps({# 委托jsonrpc:2.0,id:req-1,method:message/send,params:{message:{role:user,content:{parts:[{type:text,text:帮我做文献调研}]}}}}).encode()respjson.load(urllib.request.urlopen(urllib.request.Request(http://127.0.0.1:7831/,datapayload,headers{Content-Type:application/json})))print([2] 任务状态:,resp[result][state])print([3] 远端返回:,resp[result][artifacts][0][parts][0][text])实测输出2026-10[1] 发现远端 Agent: ResearchAgent - 文献检索与调研 Agent演示 skills: [literature_review] [2] 任务状态: completed [3] 远端返回: 已检索 3 篇文献A(2025)、B(2026)、C(2026)结论方向可行。读代码的三个要点发现是 GET、协作是 POST——Agent Card 挂在约定路径/.well-known/与 robots.txt 同思路任务走 JSON-RPC。Task 有状态机——state: completed对应 A2A 的任务生命周期长任务可先回working客户端轮询或收推送。返回的是 Artifacts 不是普通文本——结构化产出为多轮/流式/文件交换预留。这是教学骨架示意真实 A2A 生产栈用官方a2a-sdkPython/JS含 Agent Card 校验、任务管理、流式远端是另一个框架LangGraph/MAF实现的 Agent 套上 A2A server 壳。骨架的价值在于把协议两层发现 通信剥到最简——A2A 不神秘就是名片 工单。小结MCP 装手agent-to-tool、A2A 对话agent-to-agent、NLWeb 开门agent-to-website——三个问题域不重叠组合使用。A2A 核心Agent Card发现 Task 生命周期协作单元 HTTPS/JSON-RPC传输1.0 稳定规范 2026-04 发布Linux 基金会托管、150 组织支持。A2A 的对等性每个 Agent 自主选模型、保留内政内部工具/子 Agent 不管——这是协作与当工具调的分界线。NLWeb 网站的自然语言端点 天生 MCP server底层向量检索。实测骨架 60 行跑通发现 委托 结果回传生产用 a2a-sdk。参见第 18 课《MCP 协议深度实战》互补协议的上半、第 21-24 课多 Agent 系统——A2A 的应用主场、第 29 课《Agent 安全》跨组织协作的鉴权与信任。扩展阅读 网络提示github.com 需代理clone 可走 ghproxy 加速、push 优先 SSH框架文档站GitHub Pages/Cloudflare可达性波动打不开时稍后重试。详见总纲附录《国内网络访问与国产适配指南》。A2A 协议官网1.0 规范https://a2a-protocol.org/latest/A2A GitHub含 Python/JS SDKhttps://github.com/a2aproject/A2ALinux 基金会 A2A 一周年公告150 组织https://www.linuxfoundation.org/press/a2a-protocol-surpasses-150-organizations-lands-in-major-cloud-platforms-and-sees-enterprise-production-use-in-first-yearNLWeb 项目https://github.com/microsoft/NLWeb微软原课第 11 课https://github.com/microsoft/ai-agents-for-beginners/tree/main/11-agentic-protocols我的专栏蛋白 / 抗体 / 多肽 / 核酸分子模拟 / 动力学 / 对接药物 / 设计 / 案例AI / Agent / 大模型开源蛋白结构预测分子模拟基础小分子药物设计案例AI Agent系列开源蛋白生成方法实践分子动力学模拟-Amber蛋白药物设计案例化学大模型开源多肽设计模型分子动力学模拟-Gromacs多肽药物设计案例《AI Agent原理与实战》开源多肽性质预测分子动力学模拟-OpenMM开源小分子生成设计CADD中的机器学习模型DNA/RNA药物设计結合自由能高效计算配置《MCP 入门实战》siRNA药物设计模型UCSF DOCK系列我胡师兄说药《AI入门实战2026》ASO药物设计模型rDock系列 LeDock系列 gnina系列《经典机器学习实战》
阅读完成 · 觉得有帮助?