Skip to content
🔗 分享本题
查看我的学习进度 →

A2A 通过 Agent Card 注册发现并以可查询可流式更新的任务状态机完成委托

🧠 图解记忆: 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 二狗子 🐕