🧠 图解记忆: Agent Card 负责被发现,Task 状态机负责可追踪委托,认证与超时保证生产可靠。
💡 答案要点
A2A多Agent编排完整流程:
┌─────────────────────────────────────────────────────────┐
│ A2A多Agent发现与委托流程 │
└─────────────────────────────────────────────────────────┘
Step 1: Agent注册
Agent启动 → 发布Agent Card → 注册到A2A Registry/Directory
Step 2: 任务到达主Agent
用户请求 → 主Agent接收 → 任务分解
Step 3: 查找合适Agent
主Agent查询Registry → 匹配能力 → 发现目标Agent
Step 4: 任务委托
发送任务描述(JSON) → 目标Agent确认接受
Step 5: 执行与监控
支持流式返回进度 → 主Agent可随时查询状态
Step 6: 结果返回
异步/同步获取结果 → 整合输出给用户A2A关键特性:
| 特性 | 说明 | 面试加分点 |
|---|---|---|
| 语言无关 | 任何编程语言实现的Agent可互相协作 | 跨团队技术栈不同也能协作 |
| 安全通信 | TLS加密 + 身份验证 | 企业级安全必须 |
| 异步支持 | 长时间任务可挂起,结果回调 | 不阻塞主流程 |
| 错误处理 | 超时重试、失败回退 | 生产级可靠性 |
企业级A2A实现示例:
展开 Python 代码示例(37 行)
python
# A2A Registry 实现
class A2ARegistry:
def __init__(self):
self.agents = {} # agent_id -> AgentCard
def register(self, agent_card: AgentCard):
self.agents[agent_card.agent_id] = agent_card
def discover(self, required_capabilities: list[str]) -> list[AgentCard]:
"""根据能力需求发现合适的Agent"""
return [
agent for agent in self.agents.values()
if all(cap in agent.capabilities for cap in required_capabilities)
]
# A2A Gateway 实现
class A2AGateway:
def __init__(self, registry: A2ARegistry):
self.registry = registry
async def delegate_task(self, task: Task, target_agent_id: str):
# 1. 权限校验
if not self.check_permissions(task):
raise PermissionError("权限不足")
# 2. 路由到目标Agent
agent = self.registry.agents.get(target_agent_id)
if not agent:
raise AgentNotFoundError(f"Agent {target_agent_id} 不存在")
# 3. 发送任务(支持流式)
result = await agent.receive_task(task)
# 4. 审计日志
self.audit_log.log(task, agent, result)
return result多Agent协作场景示例:开发电商网站
用户:"帮我开发一个电商网站"
主Agent(规划者)
↓ A2A委托
┌─────────────────────────────────────────┐
│ 前端Agent → React/Vue代码生成 │
│ 后端Agent → Node.js API开发 │
│ 数据库Agent → Schema设计 │
│ 部署Agent → Docker容器化部署 │
└─────────────────────────────────────────┘
↓ A2A交换数据(API接口定义、Schema文档)
主Agent整合 → 完整项目交付给用户面试话术:
"A2A协议的核心是解决'多Agent发现不了、调度不动、管不好'的问题。Registry像公司通讯录,每个Agent注册自己的能力;Gateway像前台调度中心,负责路由和鉴权;Client负责实际的通信。我用A2A实现过一个客服平台,客服Agent发现无法处理技术问题后,自动通过A2A委托给SRE Agent,整个过程对用户透明,用户感知不到背后是多个Agent在协作。"
📚 参考:A2A 协议:Agent 发现与任务委托
版本: v2.5 | 更新: 2026-04-06 | by 二狗子 🐕
