阅读时长:约 12 分钟
适合人群:用过 AI 工具想深入了解、或正在构建 AI 应用的你
上一章我们聊了上下文工程,知道了"把什么信息喂给 AI"很重要。
但还有一个问题没解决:AI 怎么去调用外部工具?多个 AI 怎么互相合作?
这就是本章的主题——智能体通信协议。
一个具体的痛点
假设你想构建一个 AI 研究助手,它需要:
• 读取本地文件 • 查 GitHub 上的代码 • 发 Slack 消息 • 访问公司内部数据库
传统做法是为每个服务手写一个适配器类,每次接入新服务都要重写一堆 HTTP 请求、认证、错误处理代码。
这是在造重复的轮子,而且很难维护。
更麻烦的是,你用 OpenAI 写的工具,换成 Claude 就得重写格式——不同模型的 Function Calling 接口不一样。
通信协议就是来解决这个问题的。
它就像互联网的 TCP/IP 协议——无论你用什么设备,只要遵守同一套标准,就能互联互通。
三种协议,三个场景
目前业界主流的智能体通信协议有三种,分别解决不同的问题:

MCP(Model Context Protocol)Anthropic 提出。解决"智能体怎么访问外部工具"的问题。类比:USB-C 接口 —— 统一了所有设备的连接方式。
A2A(Agent-to-Agent Protocol)Google 提出。解决"多个智能体怎么互相合作"的问题。类比:点对点对话 —— 智能体之间可以直接交流,不需要中间人协调。
ANP(Agent Network Protocol)开源社区维护。解决"大规模智能体网络怎么互相发现"的问题。类比:互联网 DNS —— 你不需要记住每个服务的 IP,只需要说"我要找能做自然语言处理的智能体"。
怎么选?
• 智能体需要访问外部服务(文件、数据库、API)→ 用 MCP • 需要多个智能体协作完成任务 → 用 A2A • 构建大规模智能体生态,需要动态发现服务 → 用 ANP
MCP:智能体的"万能插头"
核心思路
MCP 定义了三层架构:
• Host(宿主):用户直接交互的界面,比如 Claude Desktop • Client(客户端):负责与外部服务通信的中间层 • Server(服务器):提供具体功能的服务,比如文件系统、GitHub API
当你问 Claude "我桌面有哪些文档",背后发生的是:Claude → MCP Client → 文件系统 MCP Server → 返回文件列表 → Claude 生成回答。
MCP 提供三类能力
| Tools | ||
| Resources | ||
| Prompts |
怎么用?
用 HelloAgents 框架接入 GitHub MCP 服务只需几行代码:
from hello_agents import SimpleAgentfrom hello_agents.tools import MCPToolagent = SimpleAgent(name="助手", ...)# 一行接入 GitHub 工具github_tool = MCPTool( name="gh", server_command=["npx", "-y", "@modelcontextprotocol/server-github"])agent.add_tool(github_tool)# 智能体自动获得所有 GitHub 能力response = agent.run("搜索关于 AI agents 的 Python 项目,前 5 个")MCP 的"自动展开"机制:当你添加一个 MCP 工具到智能体,它会自动把服务器提供的所有工具展开为独立工具。比如一个 GitHub MCP 服务器,会自动展开为 gh_search_repositories、gh_create_issue、gh_get_file 等十几个工具,智能体可以像调用普通函数一样使用它们。
MCP vs Function Calling
很多人会问:我已经在用 Function Calling 了,为什么还需要 MCP?
它们不是竞争关系,而是互补的:
• Function Calling 是模型的能力:理解"什么时候该调用函数,怎么生成参数" • MCP 是工程基础设施:定义"工具怎么描述、怎么调用、怎么返回结果"
类比:Function Calling 是你学会了"打电话"这项技能,MCP 是全球统一的"电话通信标准"。
丰富的社区生态
MCP 最大的优势是社区生态。你不用自己写工具适配器,直接用现成的:
• 官方服务器:文件系统、GitHub、PostgreSQL、Slack、Google Drive... • 社区服务器:Playwright(浏览器自动化)、Obsidian、Jira、Notion...
超过数百个 MCP 服务器可以直接使用,覆盖绝大多数常见场景。
A2A:智能体之间的"对话"
为什么需要 A2A?
当任务复杂到需要多个专家协作——比如"研究员收集资料 → 撰写员写文章 → 编辑审阅优化"——传统的"星型拓扑"(所有请求都经过一个中心协调器)会产生三个问题:
• 单点故障:协调器挂了,整个系统瘫痪 • 性能瓶颈:所有流量都走中心节点 • 扩展困难:加个新智能体就要改中心逻辑
A2A 采用点对点(P2P)架构,智能体之间直接通信,没有中心节点。
核心抽象:任务 + 工件
A2A 的核心是两个概念:
• Task(任务):一个有生命周期的工作单元,从创建 → 执行中 → 完成/失败 • Artifact(工件):任务产出的成果,比如一篇文章、一份分析报告
这让多个智能体可以协商任务、追踪进度、传递成果。
实战:三智能体客服系统
# 技术专家智能体(运行在 6000 端口)tech_expert = A2AServer(name="tech_expert")@tech_expert.skill("answer")def answer_tech(text): ...# 销售顾问智能体(运行在 6001 端口)sales_advisor = A2AServer(name="sales_advisor")# 接待员智能体:接到问题,自动判断转给谁receptionist = SimpleAgent(name="接待员", ...)receptionist.add_tool(A2ATool(agent_url="http://localhost:6000"))receptionist.add_tool(A2ATool(agent_url="http://localhost:6001"))客户问技术问题 → 接待员调用技术专家;问价格 → 转给销售顾问。每个智能体专注自己的领域,互不干扰。
ANP:智能体的"互联网"
场景:成百上千个智能体
当一个系统里有几百个智能体(自然语言处理、图像识别、数据分析、任务调度...),每次启动都手动配置"谁能连谁"是不现实的。
ANP 提供了:
• 服务注册:智能体启动时把自己的能力注册到网络 • 服务发现:需要某种能力时,动态查找谁能提供 • 智能路由:多个智能体都能处理时,选负载最低的那个
工作机制
ANP 的核心是 DID(去中心化身份标识)。每个智能体有自己的 DID,就像每个人有身份证。
整个流程:
1. 智能体 A 通过发现服务找到能处理任务的智能体 B 2. A 用私钥签名请求,B 用 A 的公钥验证身份 3. 验证通过后,双方按标准格式交换数据
这套机制让智能体可以在互联网上安全、自主地寻找合作伙伴,不需要预先配置所有连接。
把三层协议组合起来

三种协议构成完整的智能体通信栈:
在 HelloAgents 框架里,三种协议统一封装成 Tool 接口:
from hello_agents.tools import MCPTool, A2ATool, ANPTool# 三种协议,统一的 add_tool 接口agent.add_tool(MCPTool(...)) # 接入外部服务agent.add_tool(A2ATool(...)) # 连接其他智能体agent.add_tool(ANPTool(...)) # 接入智能体网络动手:创建自己的 MCP 服务器
你不只是协议的消费者——也可以自己创建 MCP 服务器,让全世界的智能体使用你封装的能力。
一个天气查询 MCP 服务器
from hello_agents.protocols import MCPServerweather_server = MCPServer(name="weather-server")def get_weather(city: str) -> str: """获取指定城市的当前天气""" # 调用天气 API... return json.dumps(weather_data)def list_supported_cities() -> str: """列出支持的城市""" return json.dumps({"cities": ["北京", "上海", ...]})weather_server.add_tool(get_weather)weather_server.add_tool(list_supported_cities)weather_server.run()写完后,可以上传到 Smithery(MCP 服务器的官方市场),其他开发者可以一键安装你的服务。
这就像开源社区的精髓——你贡献一个 MCP 工具,全世界的 AI 应用都可以使用。
小结
本章介绍了智能体通信的三层架构:

从"手写适配器"到"标准化协议",是 AI 应用工程化的必经之路。
• MCP:给智能体装上"USB-C 万能接口",一次适配,到处可用 • A2A:让多个智能体像团队一样点对点协作,没有单点瓶颈 • ANP:在大规模网络中自动发现和路由,构建智能体的"互联网"
下一章,我们将进入多智能体系统,学习如何构建更复杂的协作网络——让多个专业智能体像人类团队一样协同工作。
本文内容整理自 Datawhale《Hello Agents》
觉得有收获?点个赞告诉我 👇
夜雨聆风