A2A协议:解决AI Agent生态碎片化问题,实现智能体无缝协作!
A2A是Agent间互操作的标准协议,解决AI生态碎片化问题。它提供标准化自我介绍、有状态任务管理、多轮对话和实时流式输出四大能力,让不同厂商Agent能直接协作而不需定制集成。A2A与MCP互补,前者连接智能体,后者连接资源工具。遵循Agent非工具、不透明执行、任务不可变三原则,A2A正催生Agent互联网,让AI开发进入智能体协作新阶段。

场景:
企业智能助手接到指令:“帮我订会议室并通知参会人”
让开发者头疼的是:
- 日程 Agent、会议室预订 Agent、邮件通知 Agent 来自不同供应商
- 有各自不同的认证方式、消息格式、错误处理
- 每个对接都要写新代码,还怕服务商更新接口导致调用不通
上面这个问题听起来偏技术,我们换个更日常的场景来说明“Agent 协作”到底解决了什么问题。
一、为什么我们需要 A2A?
周五下午,你和朋友聊天时突然嘴馋:“要不明天去汕头吃牛肉火锅?” 说干就干,你打开手机对 AI 助手说:
“明天去汕头吃牛肉火锅,订高铁、找餐厅、顺便推荐景点。”
没有 A2A 的世界
你的 AI 助手尴尬地卡住了:
助手:我只能查高铁时刻表…需要我为每个系统专门对接吗?
为什么会这样? 问题在于:
- 订高铁 → 铁路 Agent
- 找火锅 → 餐饮 Agent
- 推荐景点 → 旅游 Agent
各自独立、互不理解、格式互不兼容
有了 A2A
AI 助手(协调者) ├─→ 铁路 Agent(查/订票) ├─→ 餐饮 Agent(找牛肉火锅) └─→ 攻略 Agent(必玩景点) ↓“明日9:15 D7406,午餐伟记牛肉,下午南澳岛,晚上8点返程,一切已经安排好!”
所有 Agent 说同一种语言 → A2A
二、A2A 到底是什么?
一句话总结
A2A = Agent 之间互操作的标准协议,用于多轮对话、有状态任务协作
为什么需要 A2A?
核心痛点:AI Agent 生态的协议不通困局
当前 AI 开发现状:
- Google 有 Agent Development Kit (ADK)
- OpenAI 有 Agents
- 创业公司用 LangGraph / AutoGPT / CrewAI…
- 企业内部有自研 Agent 系统
这些 Agent 无法直接对话,就像人类说不同语言却没有翻译。
要解决的核心痛点:
| 现状 | 痛点 |
|---|---|
| 各厂商 Agent 各自为政 | 互不兼容、重复对接 |
| REST / 工具调用 | 无法处理协商式交互 |
| 长流程/多 Agent 协作 | 状态难管理 |
| AI 应用生态碎片化 | 不能自动发现彼此 |
A2A 的诞生就是为了:
- 消除定制集成:不需要为每对 Agent 写专门的连接代码
- 打破生态孤岛:不同厂商的 Agent 可以直接协作
- 保护代理自治性:Agent 不需要暴露内部逻辑就能合作

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

A2A 有什么作用?
A2A 提供了 四个关键能力:
能力 1:标准化的"自我介绍"机制
每个 Agent 都有一张 Agent Card(代理卡片),就像数字名片:
{ "id": "railway-agent", "name": "12306 高铁助手", "type": "agent", "serviceUrl": "https://12306xxx.cn/a2a", "authenticationSchemes": ["bearer"], "skills": [ { "id": "search-trains", "name": "搜索高铁", "inputSchema": { "type": "object", "properties": { "origin": {"type": "string"}, "destination": {"type": "string"}, "date": {"type": "string"} } }, "outputSchema": { "type": "array", "items": {"type": "string"} } } ]}
这张卡片回答了三个问题:
- 我是谁?(身份信息)
- 我能做什么?(技能列表)
- 怎么找到我?(服务地址和认证方式)
能力 2:有状态的任务管理
A2A 支持 Task(任务) 概念,用于追踪长时间运行的复杂操作。
以预订高铁票为例:
客户端:"帮我订明天早上去汕头的高铁票" ↓12306 Agent 创建任务 (task-123)状态: pending → processing → input-required ↓"找到 5 趟车次,推荐 8:35 的 D7156(二等座 ¥236),要这趟吗?" ↓客户端:"可以,就这趟"(继续任务 task-123) ↓状态: processing → auth-required"需要支付 ¥236,请授权微信支付" ↓客户端:提供支付凭证(继续任务 task-123) ↓状态: completed"预订成功!电子票已发送到您手机,明天 8:00 到广州东站检票口"
任务的生命周期状态:
pending → processing → completed ↓ input-required ↺ ↓ auth-required ↓ completed / failed / canceled / rejected
- 进行中:
pending,processing - 需要交互:
input-required,auth-required - 已完成:
completed,canceled,rejected,failed
能力 3:多轮对话和上下文管理
通过 contextId(上下文 ID),Agent 可以记住整个对话历史:
[contextId: shantou-foodtrip-20251101] ├─ task-001: 订高铁票 ✓ ├─ task-002: 推荐牛肉火锅 ✓ ├─ task-003: 规划景点路线 (进行中) └─ task-004: 查询天气 (待开始)
所有任务共享同一个 contextId,Agent 能理解:“这次景点规划要考虑之前选的火锅店位置,安排顺路的行程”。
能力 4:实时流式输出
支持三种交互方式:
- 轮询:客户端定期询问"完成了吗?"
- SSE 流式传输:Agent 实时推送进度(就像 ChatGPT 的打字效果)
- 推送通知:Agent 主动调用客户端的 webhook(“任务完成啦!”)
怎么使用 A2A?
A2A 的使用流程分为 四个步骤:
步骤 1:Agent 发现(Discovery)
客户端需要找到可用的 Agent。有三种方式:
方式一:Well-Known URI(推荐)
# 访问标准路径获取 Agent CardGET https://xxx.com/.well-known/agent-card.json
方式二:中心化注册表
# 查询企业内部的 Agent 目录GET https://company-registry.com/agents?skill=railway-booking
方式三:直接配置
# 在配置文件中硬编码 Agent 地址RAILWAY_AGENT_URL=https://xxx.com/a2a
步骤 2:身份验证
A2A 使用标准的 HTTP 认证(如 OAuth 2.0 或 Bearer Token):
Authorization: Bearer <token>Content-Type: application/json
步骤 3:发送消息 使用 JSON-RPC 2.0 格式发送请求
步骤 4:处理响应
Agent 可以返回 Message(即时消息) 或 Task(任务):
- 情况 A:即时响应 → message
- 情况 B:需要多轮 → task
三、A2A vs MCP:二者是协作关系
如果你已经了解 MCP,可能会问:“A2A 和 MCP 有什么区别?”

核心区别:工具 vs 合作伙伴
| 对比项 | MCP | A2A |
|---|---|---|
| 连接对象 | Agent ↔ 工具 | Agent ↔ Agent |
| 交互方式 | 结构化输入输出、无状态调用 | 多轮对话、有状态协作 |
| 典型场景 | 查询数据库、调用 API、读取文件 | 任务委派、协商谈判、复杂决策 |
| 关系定位 | 单向调用 | 协作关系 |
MCP 负责连接资源和工具,A2A 负责连接智能体,这俩配合,构建完整智能系统。
四、深入理解:A2A 的三个设计原则
原则 1:Agent 不是工具
错误做法:把其他 Agent 当成函数调用
# 错误示例:把 Agent 包装成工具result = railway_agent.search(origin="广州", dest="汕头", date="2025-11-01")
为什么不行?
- Agent 有自主决策能力,不是简单的输入→输出映射
- Agent 需要多轮对话(“您要二等座还是一等座?”)
- Agent 可能需要你的授权(支付、确认实名信息)
正确做法:用 A2A 进行平等对话
result = await a2a_client.send( method="messages.receive", params={ "contextId": "shantou-trip", "messages": [ { "role": "user", "messageId": str(uuid.uuid4()), "timestamp": datetime.utcnow().isoformat() + "Z", "parts": [{"type": "text", "text": "帮我查明天去汕头的高铁"}] } ] })# 如果需要用户输入,则继续任务task = result.get("task")if task and task["state"] == "input-required": # 再次调用 messages.receive 继续协商
原则 2:不透明执行
Agent 无需暴露内部实现就能协作。
以酒店预订 Agent 为例:
客户端只需知道: - Agent 能做什么(Agent Card 声明的技能) - 如何发送请求(A2A 协议) - 如何接收结果(Task 状态)客户端不需要知道: - Agent 内部用什么 LLM(GPT-5 还是 Claude?) - Agent 怎么访问数据库 - Agent 的决策逻辑 - Agent 使用了哪些 MCP 工具
好处:
- 保护商业机密和专有算法
- Agent 可以自由升级内部实现
- 降低系统间的耦合度
原则 3:任务不可变性
一旦任务到达终止状态(completed/failed/canceled),就不能重启,只能创建新任务。
场景:图像生成
[第一次请求]用户:"生成一艘海上的帆船图片"Agent 创建 task-001 ↓task-001 完成,生成 artifact-v1.png(蓝色帆船)[修改请求]用户:"把帆船改成红色"Agent 创建 task-002(新任务!) ↓task-002 完成,生成 artifact-v2.png(红色帆船)
为什么这样设计?
- 清晰的输入→输出映射,便于追溯
- 每个任务的产出物(Artifact)独立可追踪
- 避免状态混乱(“这个任务是第一次执行还是重试?”)
五、Q&A
Q1: 什么时候用 Message,什么时候用 Task?
使用 Message 的场景(即时响应):
- 简单查询:“汕头明天的天气如何?”
- 信息检索:“告诉我 A2A 协议是什么”
- 状态确认:“任务 123 完成了吗?”
使用 Task 的场景(需要追踪):
- 长时间操作:预订高铁票、生成视频
- 多轮交互:需要用户多次确认的流程
- 并发协作:多个 Agent 协同完成复杂任务
Q2: 如何确保安全性?
A2A 的安全措施:
- 传输加密:强制使用 HTTPS
- 身份验证:支持 OAuth 2.0、Bearer Token、mTLS
- 授权控制:Agent Card 可以声明访问限制
- 不透明执行:Agent 不暴露内部实现,减少攻击面
- 审计日志:通过 contextId 和 taskId 追踪所有操作
最佳实践:
# 不要在代码中硬编码密钥auth_token = os.getenv("AGENT_AUTH_TOKEN")# 使用短期令牌而非长期凭证token = await get_temporary_token(expires_in=3600)# 验证 Agent Card 的签名(如果支持)if not verify_agent_card_signature(card): raise SecurityError("Agent Card 签名无效")
Q3: 如何优化性能?
- 技巧 1:并行请求多个 Agent
- 技巧 2:缓存 Agent Card
未来已来
A2A 标准协议的出现,让 AI Agent 开发进入了一个新阶段:
- 过去:我们专注于让单个 Agent 变得更聪明
- 现在:我们开始关注如何让 Agent 之间高效协作
- 未来:会出现由数百个专业 Agent 组成的复杂生态系统
就像互联网的协议(HTTP、TCP/IP),A2A 协议可能会催生一个 Agent 互联网,想象一下:
- 每个公司提供专业的 Agent 服务
- Agent 可以自主发现和调用其他 Agent
- 用户通过一个入口 Agent 访问全球的 AI 能力
这不是遥远的未来,而是正在发生的现实。
六、如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
02.大模型 AI 学习和面试资料
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)






第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐
所有评论(0)