A2A Protocol 协议规范

Agent-to-Agent通信协议的完整技术规范

本规范基于A2A Protocol概念设计,用于技术研究和学习目的

1. A2A Protocol 协议概览

1.1 协议目标

A2A (Agent-to-Agent) Protocol 旨在提供一个标准化的通信框架,使不同的AI Agent能够:

🤝 标准化通信

统一的消息格式和交互协议,确保跨平台兼容性

🔍 能力发现

动态发现和注册Agent能力,支持智能任务分配

⚡ 高效协作

优化的通信机制,支持高并发和低延迟交互

🔒 安全可靠

内置身份验证和消息完整性保护机制

1.2 核心设计原则

原则 说明 实现方式
互操作性 跨平台、跨语言支持 JSON消息格式,标准HTTP/WebSocket
可扩展性 支持新能力和消息类型 插件化架构,版本兼容机制
容错性 处理网络故障和Agent异常 重试机制,优雅降级
透明性 可观测和可调试 详细日志,性能指标

2. A2A 消息格式规范

2.1 基础消息结构

标准A2A消息格式:

{
  "version": "1.0",
  "messageId": "uuid-v4-string",
  "timestamp": "2024-12-19T10:30:00.000Z",
  "source": {
    "agentId": "sender-agent-id",
    "agentType": "customer-service",
    "instanceId": "instance-123"
  },
  "target": {
    "agentId": "target-agent-id",
    "agentType": "knowledge-base",
    "routingStrategy": "direct|broadcast|load-balance"
  },
  "message": {
    "type": "REQUEST|RESPONSE|EVENT|HEARTBEAT",
    "subType": "query|command|notification",
    "correlationId": "original-message-id",
    "priority": "low|normal|high|urgent"
  },
  "payload": {
    "action": "specific-capability-name",
    "parameters": {
      // 具体的参数内容
    },
    "metadata": {
      "timeout": 5000,
      "retryCount": 3,
      "encoding": "utf-8"
    }
  },
  "security": {
    "signature": "digital-signature",
    "timestamp": "message-creation-time",
    "nonce": "random-value"
  }
}

2.2 消息类型详解

REQUEST 请求消息

Agent向其他Agent请求服务或信息

示例用途:
• 查询知识库
• 执行计算任务
• 获取Agent状态

RESPONSE 响应消息

对REQUEST消息的回复

包含内容:
• 处理结果
• 错误信息
• 状态码

EVENT 事件消息

异步事件通知,无需响应

典型场景:
• 状态变更通知
• 任务完成事件
• 系统告警

HEARTBEAT 心跳消息

维持连接和监控Agent健康状态

功能:
• 连接保活
• 性能监控
• 故障检测

2.3 实际消息示例

知识库查询请求示例:

{
  "version": "1.0",
  "messageId": "req_kb_001",
  "timestamp": "2024-12-19T10:30:00.000Z",
  "source": {
    "agentId": "customer-service-01",
    "agentType": "customer-service"
  },
  "target": {
    "agentId": "knowledge-base-01",
    "agentType": "knowledge-base"
  },
  "message": {
    "type": "REQUEST",
    "subType": "query",
    "priority": "normal"
  },
  "payload": {
    "action": "search",
    "parameters": {
      "query": "退款政策相关信息",
      "category": "customer-service",
      "language": "zh-CN",
      "maxResults": 5
    },
    "metadata": {
      "timeout": 3000,
      "retryCount": 2
    }
  }
}

对应的响应消息示例:

{
  "version": "1.0",
  "messageId": "resp_kb_001",
  "timestamp": "2024-12-19T10:30:01.500Z",
  "source": {
    "agentId": "knowledge-base-01",
    "agentType": "knowledge-base"
  },
  "target": {
    "agentId": "customer-service-01",
    "agentType": "customer-service"
  },
  "message": {
    "type": "RESPONSE",
    "correlationId": "req_kb_001",
    "priority": "normal"
  },
  "payload": {
    "status": "success",
    "results": [
      {
        "id": "policy_001",
        "title": "退款政策说明",
        "content": "商品在未使用的情况下,7天内可申请退款...",
        "confidence": 0.92,
        "source": "official_policy"
      }
    ],
    "metadata": {
      "processingTime": 1200,
      "totalResults": 3
    }
  }
}

3. Agent Card 规范

3.1 Agent Card 概念

Agent Card是A2A Protocol中的核心概念,类似于"名片",用于描述Agent的身份、能力和访问方式。每个Agent必须提供一个标准化的Agent Card。

标准Agent Card格式:

{
  "agentInfo": {
    "id": "knowledge-base-agent-01",
    "name": "智能知识库Agent",
    "type": "knowledge-base",
    "version": "2.1.0",
    "description": "企业知识库智能检索和问答服务Agent",
    "vendor": "A2A Protocol Demo",
    "license": "MIT"
  },
  "capabilities": [
    {
      "name": "search",
      "displayName": "知识检索",
      "description": "在知识库中搜索相关信息",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {"type": "string", "description": "搜索关键词"},
          "category": {"type": "string", "enum": ["FAQ", "policy", "technical"]},
          "language": {"type": "string", "default": "zh-CN"}
        },
        "required": ["query"]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {"type": "string"},
                "content": {"type": "string"},
                "confidence": {"type": "number", "minimum": 0, "maximum": 1}
              }
            }
          }
        }
      },
      "performance": {
        "averageResponseTime": 800,
        "maxConcurrentRequests": 100,
        "reliability": 0.99
      }
    }
  ],
  "endpoints": {
    "primary": "wss://kb-agent.example.com/ws",
    "backup": "https://kb-agent.example.com/api",
    "healthCheck": "https://kb-agent.example.com/health"
  },
  "security": {
    "authMethods": ["bearer-token", "mutual-tls"],
    "requiredPermissions": ["read:knowledge-base"],
    "dataClassification": "internal"
  },
  "constraints": {
    "rateLimits": {
      "requestsPerMinute": 1000,
      "concurrentConnections": 50
    },
    "availability": {
      "schedule": "24/7",
      "maintenanceWindows": ["Sunday 02:00-04:00 UTC"]
    }
  },
  "metadata": {
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-12-19T10:00:00Z",
    "tags": ["nlp", "search", "enterprise"],
    "documentation": "https://docs.example.com/kb-agent"
  }
}

3.2 能力定义最佳实践

✅ 推荐做法

  • • 使用清晰的能力命名
  • • 提供详细的输入/输出Schema
  • • 包含性能指标和限制
  • • 定义明确的错误处理
  • • 提供使用示例

❌ 避免做法

  • • 模糊的能力描述
  • • 缺失必要的参数说明
  • • 过于宽泛的能力定义
  • • 不切实际的性能承诺
  • • 忽略安全考虑

4. A2A 能力模型

4.1 能力分类体系

信息处理类

  • • 文本搜索与检索
  • • 语义理解与分析
  • • 数据筛选与过滤
  • • 信息抽取与整理

计算处理类

  • • 数学运算与统计
  • • 机器学习推理
  • • 图像/音频处理
  • • 算法优化计算

交互服务类

  • • 用户对话管理
  • • 外部API调用
  • • 消息路由转发
  • • 状态同步服务

4.2 能力组合模式

管道式组合 (Pipeline Composition)

多个Agent按顺序处理任务,前一个Agent的输出作为下一个Agent的输入。

示例场景:智能客服处理流程
用户问题 → 意图识别Agent → 知识库Agent → 答案生成Agent → 用户

并行式组合 (Parallel Composition)

多个Agent同时处理不同方面的任务,最后聚合结果。

示例场景:多维度数据分析
数据输入 → [统计Agent + 趋势Agent + 异常Agent] → 结果聚合

5. A2A 通信流程规范

标准通信生命周期

1
发现阶段:通过Agent Registry发现可用的目标Agent
2
连接阶段:建立安全的通信连接,进行身份验证
3
协商阶段:交换Agent Card,确认能力匹配
4
执行阶段:发送请求消息,处理任务,返回结果
5
清理阶段:关闭连接,清理资源,记录日志

快速参考

消息模板

常用的A2A消息格式模板和示例

查看模板 →

开发工具

Agent开发和调试工具集

获取工具 →

学习教程

从入门到进阶的完整学习路径

开始学习 →