这篇博文将围绕Agent 四大协议(MCP/ACP/A2A/ANP)展开讲解

🎍思考:智能体之间怎么才能安全、顺畅地沟通和协作?

一、协议背景与核心价值

🎍在 AI Agent 生态中,不同 Agent 系统间的交互缺乏统一标准,导致互操作性差。四大协议旨在建立 Agent 通信、协作、能力对接的标准化框架,推动 Agent 生态的开放与协同。

二、MCP(Multi-Agent Communication Protocol)多智能体通信协议₊˚༉‧✰༶🌿
1. 协议定位₊˚༉‧✰༶🌿

MCP定义 Agent 之间消息传递的格式、规范及通信流程,解决异构 Agent 间的语义理解与交互问题。

有了它,各种应用可以方便地把数据、功能模块插到大模型里,让AI可以动态调用新工具、读取实时数据,而不用每次都重新写代码。

MCP的核心优势是上下文注入,不管是文件、数据库、还是API的实时响应,都能通过标准接口直接喂给AI。

不用把所有信息一次性塞进提示词里,只给AI最关键的内容,既节省算力,也提升输出质量。

另外,MCP支持企业常用的安全认证,比如OAuth2,兼容API网关。

比如,企业可以安全地让AI接入SAP、Salesforce等内部系统,读写结构化数据,又不会暴露底层API。

一句话总结: MCP就是大模型和外部世界之间的数据桥梁,让AI能随时获取新鲜信息,输出更聪明的结果。

2. 核心组成₊˚༉‧✰༶🌿
  • 消息结构:包含header(元数据)、body(内容)、context(上下文)
  • 通信原语:请求 - 响应(Request-Response)、发布 - 订阅(Publish-Subscribe)、广播(Broadcast)
  • 语义层:基于 JSON Schema 的消息格式规范,支持自定义扩展字段
# MCP消息基础结构
class MCPMessage:
    def __init__(self, msg_id, sender, receiver, type, content, context=None):
        self.header = {
            "msg_id": msg_id,
            "sender": sender,  # Agent唯一标识
            "receiver": receiver,
            "type": type,  # 请求/响应/事件等类型
            "timestamp": datetime.now().isoformat()
        }
        self.body = content
        self.context = context or {}  # 对话历史、上下文参数
        
    def to_json(self):
        return json.dumps({
            "header": self.header,
            "body": self.body,
            "context": self.context
        })
        
    @classmethod
    def from_json(cls, json_str):
        data = json.loads(json_str)
        return cls(
            data["header"]["msg_id"],
            data["header"]["sender"],
            data["header"]["receiver"],
            data["header"]["type"],
            data["body"],
            data.get("context", {})
        )
  • 序列化与反序列化:通过 JSON 格式实现跨语言消息解析
  • 消息路由机制:基于 Receiver 标识实现 Agent 寻址
  • 上下文管理:维护对话状态以支持多轮交互
  • 协议扩展点:通过context字段支持自定义业务属性

三、ACP(Agent Capability Protocol)能力协议₊˚༉‧✰༶🌿
1. 协议定位₊˚༉‧✰༶🌿

ACP标准化 Agent 能力的描述、注册、发现及调用流程,解决能力对接的复杂性问题。

它解决的是本地环境下多智能体之间如何协作。

假设你有一批机器人、无人机或者物联网设备,它们全都在同一个局域网或边缘计算节点上。

这时候,就需要ACP来当邮政局,统一消息格式和投递方式。

每个AI都能广播自己的身份和能力,大家互通有无,低延迟、效率高,没网络也能用。

ACP的消息传递方式多样,可以用本地总线、进程间通信(IPC)、甚至自定义的轻量协议。这样即使断网,机器人团队也能自如协作。

适合场景比如:工厂自动化、无人机编队、离线物联网等,只要不靠云端、对延迟敏感、对隐私有高要求,ACP就是最佳选择。

2. 核心模块₊˚༉‧✰༶🌿
  • 能力描述模型
    {
      "capability_id": "text-generation-v1",
      "name": "文本生成",
      "description": "基于大语言模型生成自然语言文本",
      "input_spec": {
        "type": "object",
        "properties": {
          "prompt": {"type": "string", "description": "输入提示词"}
        },
        "required": ["prompt"]
      },
      "output_spec": {
        "type": "string",
        "description": "生成的文本内容"
      },
      "metadata": {
        "provider": "openai",
        "version": "1.0.0",
        "tags": ["nlp", "generation"]
      }
    }
  • 能力注册中心:维护 Agent 能力目录,支持基于标签、功能的检索
  • 调用协议:定义参数校验、格式转换、错误处理的标准流程
class ACPCapability:
    def __init__(self, capability_desc):
        self.desc = capability_desc  # 能力描述JSON
        self.endpoint = capability_desc.get("endpoint")  # 服务端点
        
    async def call(self, params):
        # 参数校验
        if not self._validate_params(params):
            raise ValueError("参数不符合能力规范")
            
        # 格式转换(适配目标服务)
        request_data = self._convert_to_service_format(params)
        
        # 调用能力
        response = await http_client.post(
            self.endpoint,
            json=request_data,
            headers={"Content-Type": "application/json"}
        )
        
        # 响应解析
        return self._parse_response(response.json())
        
    def _validate_params(self, params):
        # 基于JSON Schema校验参数
        return jsonschema.validate(params, self.desc["input_spec"])
        
    def _convert_to_service_format(self, params):
        # 示例:将通用格式转换为OpenAI API格式
        if self.desc["capability_id"] == "text-generation-v1":
            return {
                "model": "gpt-3.5-turbo",
                "messages": [{"role": "user", "content": params["prompt"]}]
            }
四、A2A(Agent-to-Agent Protocol)交互协议₊˚༉‧✰༶🌿
1. 协议定位₊˚༉‧✰༶🌿

A2A协议规范 Agent 之间的协作流程,包括任务分配、结果汇总、冲突解决等协同机制。

有点像AI版的企业微信+项目管理。每个智能体都有一张Agent Card,把自己的技能、接口、认证方式等信息用JSON描述出来。别的AI只要读这个卡片,就知道你能干嘛、怎么找你办事。

A2A基于HTTP/HTTPS、JSON-RPC2.0等通用Web协议,非常web-native,也支持OAuth2等常用安全标准。

智能体既可以是客户机(发起任务),也可以是服务器(接任务),甚至可以两者兼有。这样,跨平台、跨团队、跨行业的AI协作生态系统就有了统一的任务语言。

2. 核心流程₊˚༉‧✰༶🌿
  • 任务分解:主 Agent 将复杂任务拆分为子任务
  • 子 Agent 调用:通过 MCP 协议发送任务请求
  • 结果聚合:收集子 Agent 返回结果并整合
  • 异常处理:子任务失败时的重试、降级策略
3. 实现示例(任务协作流程)₊˚༉‧✰༶🌿
async def a2a_collaboration(main_agent, sub_agents, task_description):
    # 1. 任务分解
    sub_tasks = main_agent.decompose_task(task_description)
    
    # 2. 分配任务给子Agent
    tasks = []
    for sub_task in sub_tasks:
        # 根据子任务类型选择合适的子Agent
        agent = select_agent_by_capability(sub_agents, sub_task["capability"])
        if agent:
            # 构建MCP请求消息
            msg = MCPMessage(
                msg_id=uuid.uuid4().hex,
                sender=main_agent.id,
                receiver=agent.id,
                type="TASK_REQUEST",
                content=sub_task
            )
            tasks.append(agent.receive_message(msg))
    
    # 3. 并行调用子Agent
    results = await asyncio.gather(*tasks, return_exceptions=True)
    
    # 4. 结果聚合与异常处理
    final_result = []
    for i, result in enumerate(results):
        if isinstance(result, Exception):
            # 子任务失败处理(重试/替换Agent/跳过)
            final_result.append({
                "sub_task_id": sub_tasks[i]["id"],
                "status": "FAILED",
                "error": str(result)
            })
        else:
            # 解析MCP响应消息
            if isinstance(result, MCPMessage) and result.header["type"] == "TASK_RESPONSE":
                final_result.append({
                    "sub_task_id": sub_tasks[i]["id"],
                    "status": "SUCCESS",
                    "data": result.body
                })
    
    return main_agent.aggregate_results(final_result)
  • 任务分解策略:基于领域知识将复杂任务拆解为原子操作
  • 并行计算:利用asyncio实现多 Agent 协同的高效并发
  • 容错机制:处理子 Agent 调用失败、超时等异常场景
  • 结果聚合逻辑:根据业务需求合并多源数据
五、ANP(Agent Network Protocol)网络协议₊˚༉‧✰༶🌿
1. 协议定位₊˚༉‧✰༶🌿

定义 Agent 网络的拓扑结构、节点通信规则及资源调度机制,构建可扩展的 Agent 生态网络。

2. 核心组件₊˚༉‧✰༶🌿
  • 节点模型
    • 核心节点(Core Node):维护网络元数据、提供注册中心服务
    • 普通节点(Normal Node):承载具体 Agent 实例
  • 通信拓扑:支持星型、网状、分层等多种拓扑结构
  • 资源调度:节点负载均衡、Agent 实例弹性扩缩容
3. 网络节点实现示例₊˚༉‧✰༶🌿
class ANPNode:
    def __init__(self, node_id, node_type, core_node_address=None):
        self.node_id = node_id
        self.node_type = node_type  # "CORE" 或 "NORMAL"
        self.core_node = core_node_address  # 核心节点地址(普通节点使用)
        self.agents = {}  # 本节点承载的Agent实例 {agent_id: agent_instance}
        self.network_status = {
            "online": True,
            "load": 0,  # 节点负载率
            "agent_count": 0
        }
        
    async def register_to_core(self):
        """向核心节点注册本节点信息"""
        if self.node_type == "NORMAL" and self.core_node:
            registration_data = {
                "node_id": self.node_id,
                "type": "NORMAL",
                "address": self.address,
                "capabilities": self.get_supported_capabilities()
            }
            await http_client.post(
                f"{self.core_node}/register",
                json=registration_data
            )
    
    def add_agent(self, agent):
        """在节点中添加Agent实例"""
        self.agents[agent.id] = agent
        self.network_status["agent_count"] += 1
        self._update_load()  # 更新节点负载
    
    def remove_agent(self, agent_id):
        """移除Agent实例"""
        if agent_id in self.agents:
            del self.agents[agent_id]
            self.network_status["agent_count"] -= 1
            self._update_load()
    
    def _update_load(self):
        """更新节点负载(简化示例,实际需考虑CPU/内存/网络等指标)"""
        self.network_status["load"] = self.network_status["agent_count"] / self.max_agent_capacity
六、四大协议的协同工作流程₊˚༉‧✰༶🌿
  1. 能力注册阶段

    • 各 Agent 通过 ACP 协议将能力描述注册到核心节点
    • 核心节点维护能力目录(ANP 协议)
  2. 任务协作阶段

    • 主 Agent 通过 A2A 协议分解任务,调用具备对应能力的子 Agent
    • 通过 MCP 协议传递任务请求与结果响应
  3. 网络管理阶段

    • ANP 协议负责节点发现、负载均衡及故障转移
    • ACP 协议支持能力版本更新与兼容性管理
七、协议的扩展性与应用场景₊˚༉‧✰༶🌿
  • 扩展性设计

    • 所有协议均支持通过metadata字段自定义扩展属性
    • 采用插件机制支持新协议版本的无缝升级
  • 典型应用场景

    • 企业级智能助手网络:不同部门的 Agent 通过协议协同完成复杂业务
    • 开放 Agent 市场:开发者通过标准化协议接入第三方能力
    • 跨平台智能交互:手机、智能家居、车载设备等 Agent 的互联互通

致谢˚༉‧✰༶🌿

谢谢大家的阅读,本篇文章是笔者的第一篇文章,还有很多不足支出,欢迎大家在评论区指出,如果我的内容对你有帮助,可以点赞 , 收藏 ,大家的支持就是我坚持下去的动力!

”请赐予我平静,去接受我无法改变的 ;赐予我勇气,去改变我能改变的。”

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐