指南

如何让网站为 AI 智能体做好准备

「为 AI 智能体做好准备」对三种不同类型的 AI 智能体意味着三件不同的事——而且它们可以叠加使用。以下是我们让本验证器做好准备的完整过程,包含我们发布的代码,供你直接复用这一模式。

共有三个独立层级。你可以单独采用其中任何一个;合在一起,它们涵盖了:爬取你网站的爬虫智能体、在浏览器中操作你界面的智能体,以及通过网络调用你服务的另一个智能体。

第一层 — llms.txt:为爬虫提供上下文

这是基础层。在你的根目录放一个纯文本 llms.txt,按优先级顺序告诉 AI 爬虫你的网站是什么以及哪些页面重要。它在抓取时被读取——无需 JavaScript,无需任何协议。从这里开始:如何创建一个 llms.txt

第二层 — WebMCP:为浏览器内智能体提供工具

WebMCP 让页面向运行在浏览器内的 AI 智能体暴露可调用的工具,从而让智能体调用一个有类型的动作,而不是猜测你的表单。有两种方式,我们两种都使用。

声明式 — 为真实的表单添加注解,由浏览器从中合成一个工具:

<form toolname="open_llms_txt_report"
      tooldescription="Validate a site's llms.txt and open its report.">
  <input name="url" toolparamdescription="Domain or URL to validate">
</form>

命令式 — 在 JavaScript 中注册一个直接返回结构化数据的工具:

navigator.modelContext?.registerTool({
  name: "validate_llms_txt",
  description: "Validate a website's llms.txt; returns a 0-100 score and findings.",
  inputSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"] },
  execute: (input) => fetch("/api/validate?url=" + encodeURIComponent(input.url))
    .then(r => r.json())
    .then(data => ({ content: [{ type: "text", text: JSON.stringify(data) }] }))
});

if (navigator.modelContext) 保护命令式调用,这样在不支持 WebMCP 的环境中它就是一个空操作。目前它是 Chrome 的源试验功能,实际覆盖率很低——将其视为前瞻性信号,而非流量来源。

第三层 — A2A:可被其他智能体调用的智能体

Agent2Agent(A2A)协议让其他智能体能够发现并调用你的服务。你需要发布一个智能体卡片,并用一个 JSON-RPC 端点来支撑它:

// GET /.well-known/agent-card.json
{
  "name": "llms.txt Validator",
  "url": "https://llms-txt-validator.dev/a2a",
  "skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt" }]
}

url 必须指向一个能够处理 A2A 请求的有效端点——我们实现了同步的 message/send 方法,将相同的验证逻辑封装为一个技能。智能体卡片是一份契约,而非一个元标签。

唯一的原则:不要发布你无法兑现的信号

放一个空的智能体卡片或伪造表单注解来让审计变绿,这种做法很诱人。但请不要这样做。一个智能体如果抓取了你的卡片却调用到死端点,或者调用了一个什么都不做的工具,之后它对你的信任度只会下降。这里的每一个信号都应该能解析到真实可用的功能。这正是为什么本验证器只有在有真实实现作为支撑时,才会将 WebMCP 或 A2A 信号报告为「已存在」。

如何验证每个层级

继续阅读

校验你的 llms.txt →