智能体资源发现 (ARD) 是一种用于对智能体资源进行编目的规范。ard.json 清单描述了网域中的智能体资源(例如 MCP 服务器、A2A 智能体和智能体技能),以便 AI 智能体和注册服务能够找到这些资源。
Lighthouse 审核的工作原理
发现流程:审核会根据 ARD 规范 (§5.1) 中的发现机制查找清单:
- 正在检查
robots.txt中是否存在Agentmap:指令。 - 正在扫描 HTML,查找
<link rel="ard" href="...">标记。 - 正在检查 HTTP
Link: <...>; rel="ard"标头响应。 - 正在从已知端点
/.well-known/ard.json提取。
如果主要发现失败,Lighthouse 会检查旧版路径(例如 rel="ai-catalog" 或 /.well-known/ai-catalog.json)。虽然此处找到的内容仍会经过验证,但系统会发出警告,因为标准 ARD 客户端没有义务支持已弃用的路由。
验证规则:使用 ARD v0.91 一致性套件的 JavaScript 端口执行验证,测试以下条件:
一致性和验证错误:
- 语法和架构:清单是有效的 JSON,与 ARD 清单架构匹配,并且每个条目都与 ARD 条目架构匹配。Lighthouse 不会提取或验证条目指向的工件(例如,
url处的 MCP 服务器卡片)。 - 必填字段:清单包含一个
entries数组,每个条目都包含identifier、displayName和type。 - 网域锚定 URN:每个
identifier都遵循urn:air:<publisher>:<namespace>:<name>格式。 - 位置定义:每个条目都只定义
url或内嵌data,绝不会同时定义两者或两者都不定义。 - 信任清单结构:如果包含
trustManifest,则它是一个具有identity属性的对象。
最佳实践警告:
- 代表性查询:每个条目都有一个
representativeQueries数组,其中包含 2-5 个示例查询。注册表会根据这些信息构建搜索索引,因此不包含这些信息的条目不会显示在搜索结果中。(如果存在,则必须是字符串数组;任何其他内容都是错误。) - 媒体类型:
type必须是格式正确的媒体类型。Lighthouse 会针对已弃用的类型(例如,application/mcp-server+json到application/mcp-server-card+json)、缺少参数或包含额外参数的标准类型以及application/*之外无法识别的类型发出警告。允许使用自定义application/*类型。 - 集合:标记顶级
collections字段。它不再是 ARD 的一部分,会被忽略;模型层次结构现在位于entries中。 - 旧版端点:标记仅通过旧版
ai-catalog位置找到的清单。 - 损坏的广告位置:标记在其他位置找到清单时无法加载的任何广告位置(
Agentmap:、rel="ard"或rel="ai-catalog"链接,或Link标头)。
不需要:
specVersion和其他额外的顶级字段不会影响得分。capabilities为选答题,不计分。如果您的资源公开了命名的工具或技能,请考虑列出这些工具或技能(例如["WeatherTool", "ForecastTool"]),以便注册表可以根据这些工具或技能进行过滤,而无需提取完整工件。如果包含,则必须是字符串数组。
解读结果表
如果清单整体存在问题,“元素”列会显示 Root。对于条目问题,它会显示条目的 displayName,回退到其 identifier,如果两者都不可用,则显示 Entry #n。一个架构问题可能会出现两次,一次出现在 Root 下,另一次出现在条目下,这与官方一致性测试的输出一致。
了解您的得分
审核结果会通过以下方式反映:
- 通过 (1):清单已找到,且没有任何错误或警告。
- 部分得分 (0.9):清单有效,但至少有一条最佳实践警告。
- 失败 (0):任何一致性错误,例如 JSON 格式错误、违反架构、URN 无效,或者
url/data均存在或均不存在。如果清单已通告(通过robots.txt、rel="ard"或rel="ai-catalog"链接或Link标头),但无法加载,则审核也会失败。 - 不适用:未通过任何方法找到清单。这不会影响您的 Lighthouse 得分。
解决方法
如需通过审核,请按照以下可行的步骤操作:
- 请通过
/.well-known/ard.json提供清单,或使用rel=ard关联清单。如果您使用的是ai-catalog.json或rel=ai-catalog,请改用新名称。 - 修复审核表中列出的所有错误,使清单与 ARD 架构相匹配。
- 为每个条目提供一个
urn:air:...标识符,以及url或data之一。 - 在
type中使用标准 ARD 媒体类型(如果适用)。 - 为每个条目添加 2 到 5 个
representativeQueries,即可获得满分。