Agent 发现机制

A2A Protocol 通过 AgentCard 标准化了在发现过程中共享的数据格式。然而,发现这些 AgentCard 的具体方式是多种多样的,这也是一个开放讨论的话题。

以下是目前设想的几种主要发现机制:

开放发现 (Open Discovery)

我们推荐企业在其服务的域名下托管 AgentCard,并遵循一个"众所周知"的路径约定:

https://<DOMAIN>/.well-known/agent.json

客户端可以通过 DNS 解析找到或已知的域名,然后向该路径发送简单的 HTTP GET 请求即可获取 AgentCard。

这种方式使得 Web 爬虫和应用程序能够轻松发现已知或已配置域名的 Agent,有效地将发现过程简化为"找到域名"。

示例请求

curl https://example.com/.well-known/agent.json

示例响应

{
  "name": "ExampleAgent",
  "description": "这是一个示例Agent",
  "url": "https://example.com/agent",
  "provider": {
    "organization": "Example Org",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  }
}

策展发现 (Curated Discovery / 基于注册表)

可以预见,企业级应用程序会通过目录接口提供经过策展的 Agent 注册表。这将支持更多企业场景,例如由管理员维护的公司特定或团队特定的 Agent 注册表。

社区正在考虑是否将注册表支持添加到协议标准中。欢迎提供您的意见和想法。

私有发现 (Private Discovery / 基于 API)

毫无疑问,会出现私有的"Agent 商店"或专有 Agent,其 AgentCard 通过自定义 API 进行交换。

目前,私有发现 API 不被视为 A2A Protocol 本身需要解决的问题。如果您认为将其标准化有价值,也欢迎提出意见。

AgentCard 安全性

AgentCard 可能包含敏感信息。实现者可以选择使用访问控制来保护其 AgentCard,要求进行身份验证和授权。

例如,在一个组织内部,即使是遵循 .well-known 路径的开放发现,也可以通过 mTLS 进行保护,并限制只有特定的客户端才能访问。注册表和私有发现 API 应当 要求身份验证,并根据不同的身份返回不同的内容。

重要提示: 实现者可能会在 AgentCard 中包含凭证信息(如 API 密钥)。强烈建议 永远不要 在未经身份验证的情况下暴露这些信息。