Dify 官方上架 Nacos A2A 插件,补全双向多智能体协作能力
作者:濯光 随着 AI Agent 技术的快速发展,单一智能体已经难以满足复杂业务场景的需求。多智能体协作(Multi-Agent Collaboration)正在成为 AI 应用的主流趋势——让多个具备不同专长的智能体协同工作,共同完成复杂任务。 Google 于 2025 年初发布的 A2A(Agent-to-Agent)协议,为多智能体间的标准化通信提供了重要基础。A2A 协议定义了智能体之间的发现、能力描述和任务交互标准,使得不同来源、不同框架的智能体能够无缝协作。 然而,Dify 平台目前原生并不支持 A2A 协议。这意味着开发者无法直接在 Dify 中发现和调用遵循 A2A 标准的智能体,缺乏与 A2A 生态进行集成的有效途径。具体来说,Dify 开发者面临以下挑战: 这些问题导致 Dify 开发者在构建多智能体应用时,面临协议不通、接入成本高、扩展性差、灵活度低、无法对外互通的困境。 为了解决上述问题,Nacos 官方为 Dify 平台打造了双向 A2A 协议集成方案,通过两个互补的插件填补了 Dify 在 A2A 协议支持上的空白,让 Dify 应用既能调用外部 A2A 智能体,又能作为 A2A 智能体被外部系统调用。 Nacos 3.0 在支持 MCP Registry 的基础上,进一步拓展了对 A2A Agent 的支持能力,推出了 Nacos Agent Registry——一个统一的 AI 智能体注册与发现平台。结合 A2A 插件组合,Dify 开发者可以: 目前,Nacos 官方 A2A 插件已正式上架 Dify 官方插件市场: Nacos 模式(推荐) 通过 Nacos Agent Registry 统一管理和发现智能体。只需在 Nacos 中注册 A2A Agent,Dify 应用即可自动发现并调用。 优势: 配置示例: URL 模式 直接通过 A2A Agent 的标准 URL 进行发现,适合无需 Nacos 的轻量级场景。 配置示例: 获取智能体信息(get_a2a_agent_information) 查询所有配置的 A2A Agent 的详细信息,包括: LLM 通过这些信息了解每个智能体的能力,为后续的智能选择提供依据。 调用智能体(call_a2a_agent) 根据 LLM 的选择,向指定的 A2A Agent 发送查询消息并获取响应。支持: 通过以上两种工具协同配合,Dify 中的 Agent 可以实现: A2A Server 插件让 Dify 应用能够以标准 A2A 协议对外提供服务,使其他智能体能够发现和调用。 A2A Server 支持将以下类型的 Dify 应用暴露为 A2A 智能体: 智能体元数据端点(GET /.well-known/agent.json) 返回符合 A2A 协议的 AgentCard,包含: 外部调用方通过此端点发现智能体的能力和调用方式。 JSON-RPC 调用端点(POST /a2a) 处理 A2A 协议标准的 JSON-RPC 请求。支持: 启用 Nacos 注册后,A2A Server 会在首次收到 AgentCard 请求时自动将 Dify 应用注册到 Nacos Agent Registry。注册后,其他 A2A 智能体可以通过 Nacos 发现并调用该 Dify 应用。 A2A Server 基于 Dify Plugin Storage 实现跨请求的会话上下文管理: 本章将通过两个具体案例,分别演示 A2A Discovery 和 A2A Server 插件的使用方法。 让我们通过一个具体案例,演示如何使用 A2A Discovery 插件构建一个多智能体协作的 AI 助手。 假设我们要构建一个智能客服系统,需要调用以下三个专业智能体: 将 A2A Agent 注册到 Nacos Agent Registry 有两种方式: 方式一:控制台手动注册 方式二:AgentScope 自动注册(推荐) AgentScope [ 1] 是阿里巴巴推出的一款以开发者为核心,专注于多智能体开发的开源框架。它的核心目标是解决智能体在构建、运行和管理中的难题,提供一套覆盖“开发、部署、监控”全生命周期的生产级解决方案。 AgentScope 最新版本中,已经全面支持 A2A 协议,并集成 Nacos 作为 A2A Registry 的默认实现,构建了一套从开发到部署的完整分布式多智能体协作体系。使用 AgentScope 构建的 A2A Agent 可以自动注册到 Nacos,无需手动配置。以下为参考代码: 更多集成方式请参考 AgentScope 官方文档 [ 2] 。 添加 A2A Discovery 插件的两个工具: 部署应用后,尝试以下对话: 用户:请帮我把"How to return the product?"翻译成中文 AI 助手(内部流程): 用户: 我想查询订单 #12345 的物流状态 AI 助手(内部流程): 现在让我们演示如何使用 A2A Server 插件将 Dify 应用暴露为 A2A 智能体,让其他系统能够发现和调用。 假设我们已经在 Dify 中构建了一个强大的「智能客服助手」应用,现在希望将其暴露为 A2A 智能体,让: 保存后,获取生成的 Endpoint ID(如 abc123),然后: 最终的 A2A 端点: 如果希望智能体能被自动发现,可以配置 Nacos 注册: 测试 AgentCard 获取 成功返回示例: 测试消息发送 使用 A2A SDK 或兼容客户端发送消息: AgentScope 配置完成后,AgentScope 应用可以通过 Nacos 自动发现并调用该 Dify 智能体: 更多集成方式请参考 AgentScope 官方文档。 统一注册发现 所有 A2A Agent 集中注册到 Nacos,开发者无需关心智能体的具体部署位置。新增智能体时只需注册到 Nacos,Dify 应用即可自动发现并调用,支持动态上下线。 多租户隔离 基于 Nacos 的命名空间隔离机制,可以将不同环境(开发、测试、生产)或不同业务线的智能体完全隔离,互不影响,满足企业级多租户场景。 健康检查 Nacos 自动监控各智能体的运行状态,当某个 Agent 不可用时自动从服务列表中摘除,避免调用失败,恢复后自动重新上线。 元信息管理 支持在运行时动态更新智能体的描述、技能列表等元信息,无需重启服务。这对于智能体能力迭代升级非常友好。 访问控制 通过 Nacos 的认证鉴权机制,可以精细控制哪些应用可以访问哪些智能体,保障企业级应用的安全性。 生态集成 Nacos Agent Registry 不仅支持 A2A 协议,还与阿里云 AI 网关、AgentScope 等组件无缝对接,构建完整的智能体治理生态。 A2A 插件组合填补了 Dify 平台在 A2A 协议支持上的空白,为 Dify 开发者带来了双向多智能体协作能力: 随着 AI 多智能体技术的持续演进,Nacos 将继续深耕 AI Agent 生态,从 MCP Server 管理到 A2A Agent 协作,与 AgentScope 等主流智能体框架深度集成,为开发者提供更加完善的智能体治理平台。通过 A2A Discovery 和 A2A Server 插件的组合,Dify 开发者现在可以构建真正开放互联的智能体应用——既能调用生态中的各类专业智能体,也能将自己的智能体能力开放给整个 A2A 生态。未来,我们还将支持更多的智能体协议和更丰富的治理能力,助力开发者构建更加强大的 AI 应用。 相关链接: [1] AgentScope https://github.com/modelscope/agentscope [2] AgentScope 官方文档 https://github.com/modelscope/agentscope [3] 插件页面 https://marketplace.dify.ai/plugins/nacos/a2a_discovery?langu... [4] 插件页面 https://marketplace.dify.ai/plugins/nacos/a2a_server?language... 参考链接: [1] A2A 插件源代码(GitHub) https://github.com/nacos-group/nacos-dify-plugins [2] Nacos 官网 [3] Nacos GitHub 仓库 https://github.com/alibaba/nacos [4] Google A2A 协议 [5] Dify 官网 [6] Nacos MCP 插件 https://marketplace.dify.ai/plugins/nacos/nacos_mcp?language=...背景与挑战:多智能体协作中的典型问题

解决方案:Nacos Agent Registry + A2A 插件组合
A2A Discovery 插件(调用外部智能体)
A2A Server 插件(暴露 Dify 应用)
https://marketplace.dify.ai/plugins/nacos/a2a_discovery?langu...
https://marketplace.dify.ai/plugins/nacos/a2a_server?language...整体架构

核心功能详解
3.1 A2A Discovery 插件:调用外部智能体
3.1.1 两种智能体发现模式
discovery_type: nacos
available_agent_names: translator_agent,search_agent,code_agent
namespace_id: publicdiscovery_type: url
available_agent_urls: {
"translator_agent": "http://host1:8080/.well-known/agent.json",
"search_agent": "http://host2:8080/.well-known/agent.json"
}3.1.2 两个核心工具
3.1.3 智能体动态选择工作流

3.2 A2A Server 插件:暴露 Dify 应用
3.2.1 支持的应用类型

3.2.2 两个核心端点
message/send 方法:向智能体发送消息并获取响应3.2.3 Nacos 自动注册
3.2.4 多轮对话支持
实践教程:构建多智能体协作应用
4.1 使用 A2A Discovery 调用外部智能体

场景描述
步骤一:在 Nacos 注册 A2A Agent
from agentscope_runtime.engine.app import AgentApp
from agentscope_runtime.engine.deployers.adapter.a2a import (
AgentCardWithRuntimeConfig,
)
from agentscope_runtime.engine.deployers.adapter.a2a.nacos_a2a_registry import (
NacosRegistry,
)
from v2.nacos import ClientConfigBuilder
# 创建 Nacos Registry 实例
registry = NacosRegistry(
nacos_client_config=ClientConfigBuilder()
.server_address("mse-xxx.nacos.mse.aliyuncs.com:8848")
# 其他可选配置项
.build()
)
app = AgentApp(
app_name="translator_agent",
app_description="TestAgent",
# 在 a2a_config 中配置 registry
a2a_config=AgentCardWithRuntimeConfig(registry=registry),
)步骤二:安装配置 A2A Discovery 插件

步骤三:创建 Dify Agent 应用
get_a2a_agent_informationcall_a2a_agentdiscovery_type: nacos
available_agent_names: translator_agent,search_agent,customer_service_agent
namespace_id: public你是一个智能客服助手,可以调用多个专业智能体来处理用户请求。
工作流程:
1. 首先调用 get_a2a_agent_information 获取所有可用智能体的信息
2. 根据用户的问题类型,选择最合适的智能体
3. 调用 call_a2a_agent 向选中的智能体发送请求
4. 整合响应结果,为用户提供完整的答案
可用的智能体包括翻译、搜索、客服等,请根据任务特点智能选择。步骤四:测试验证
get_a2a_agent_information 获取智能体列表translator_agentcall_a2a_agent 发送翻译请求customer_service_agent4.2 使用 A2A Server 暴露 Dify 应用
场景描述
步骤一:安装 A2A Server 插件
步骤二:创建 Endpoint

步骤三:更新正确的 URL
https://your-domain.com/e/abc123/a2ahttps://your-domain.com/e/{endpoint_id}/a2a/.well-known/agent.jsonhttps://your-domain.com/e/{endpoint_id}/a2a步骤四:配置 Nacos 注册(可选)

步骤五:测试验证
curl https://your-domain.com/e/{endpoint_id}/a2a/.well-known/agent.json{
"name": "smart-service-agent",
"description": "智能客服助手,支持订单查询、售后服务、产品咨询",
"url": "https://your-domain.com/e/abc123/a2a",
"version": "1.0.0",
"capabilities": {
"streaming": false,
"push_notifications": false
},
"skills": [
{
"id": "dify_app",
"name": "smart-service-agent",
"description": "智能客服助手,支持订单查询、售后服务、产品咨询"
}
]
}from a2a.client import A2AClient
client = A2AClient("https://your-domain.com/e/{endpoint_id}/a2a")
response = client.send_message("我想查询订单 #12345 的状态")
print(response.text)与 AgentScope 集成
from agentscope.agent import A2AAgent
from agentscope.a2a import NacosAgentCardResolver
from agentscope.message import Msg
# Python AgentScope v1.0.11以上
# 创建 Nacos AgentCard Resolver
nacos_resolver = NacosAgentCardResolver(
remote_agent_name="my-remote-agent", # Nacos 中注册的智能体名称
nacos_client_config=ClientConfig(
server_addresses="http://localhost:8848", # Nacos 服务器地址
# 其他可选配置项
),
)
# 使用 Resolver 创建 A2AAgent,通过名称从 Nacos 发现 Agent
agent = A2AAgent(
agent_card=await nacos_resolver.get_agent_card()
)Nacos Agent Registry 企业级能力


总结与展望