AI 时代的 robots.txt:深度解析 llms.txt 规范与项目"AI 原生化"改造实战
摘要:当 LLM 开始接管我们的开发工作流,传统的 HTML 页面已成为它们的"认知噪音"。本文深度拆解 Anthropic 与 Answer.ai 极力推崇的 llms.txt 标准,并提供一套基于 WebMCP 的全自动改造方案,让你的项目在 AI 时代获得"头等舱"待遇。
1. 缘起:谁在定义 AI 时代的"说明书"?
如果说 robots.txt 是给搜索引擎爬虫看的,那么 llms.txt 就是给大模型(LLMs)看的。
这一规范最早由 Answer.ai 团队(由 Fast.ai 创始人 Jeremy Howard 发起)在 2024 年末正式提出。它的诞生逻辑非常硬核:现在的网页太吵了。
一个典型的 HTML 页面充满了广告、侧边栏、复杂的 DOM 嵌套和 JavaScript 渲染逻辑。对于 AI 代理(Agent)来说,为了从这堆乱码中找到一个 API 的定义,可能要消耗成千上万个 Token,且极易产生幻觉。
llms.txt 试图建立一个契约: 网站根目录提供一个极其纯净、结构化的 Markdown 索引,让 AI 一眼就能看清:"你是谁?你能做什么?我该查阅哪个文档?"
2. 标准拆解:llms.txt 的"极简美学"
llms.txt 的格式非常克制,它本质上是一个 增强版 Markdown 索引。
核心结构:
- H1 标题:项目/网站名称。
- Blockquote 引用块:核心价值主张(一句话简介)。
- H2 列表 :功能分区(如
Docs,API,Examples)。 - Markdown 链接 + 简短描述 :每个链接后必须跟一段描述,告知 AI 这个链接里有什么。
变体规范:
llms.txt:全量地图,供模型初步探索。llms-ctx.txt:精华版,仅包含最核心的 Context,适配 Token 极度受限的场景。llms-ctx-full.txt:完全版,甚至会嵌入核心配置文件内容,供长文本模型深度学习。
3. 进阶博弈:llms.txt vs WebMCP,如何取舍?
在进行项目"AI 改造"时,很多开发者会纠结:我是做静态的 llms.txt,还是搞动态的 WebMCP (Model Context Protocol)?
这其实是 "地图" 与 "接口" 的取舍:
| 维度 | llms.txt (静态索引) | WebMCP (动态接口) |
|---|---|---|
| 本质 | 给 AI 看的"说明书" | 给 AI 用的"操控杆" |
| 实现难度 | 极低(纯文本/脚本自动生成) | 中等(需要注入 JS 运行时) |
| 交互性 | 被动检索(RAG 友好) | 主动调用(Tool Use 友好) |
| 适用场景 | 文档库、知识库、静态博客 | SaaS 应用、后台管理系统、交互式网页 |
🛠 决策矩阵:
- 如果你的项目以"信息分发"为主 (如个人大脑、技术文档):llms.txt 是必选项。 它的低成本和高兼容性无出其右。
- 如果你的项目涉及"逻辑执行" (如自动化下单、数据分析):WebMCP 是分山岭。 它可以让 AI 直接控制你的页面 DOM。
最佳实践:双剑合璧。 在根目录放 llms.txt 作为探测入口,在 llms.txt 的 API 章节中声明 WebMCP 接口的入口,实现"发现 -> 交互"的全链路闭环。
4. 实战:5 分钟完成项目"AI 原生化"
为了让这套流程自动化,我开发并开源了一个 Gemini Skill:gemini-skill-ai-native。
这个工具不仅是我的个人效率工具,更是为了让任何开发者都能一键为自己的项目注入"AI 灵魂"。
如何安装?
只要你安装了 Gemini CLI,一行命令即可安装:
bash
gemini skills install https://raw.githubusercontent.com/webkubor/gemini-skill-ai-native/master/ai-modification.skill --scope user
它能为你做什么?
- 全自动同步 :监控你的
docs/,rules/,skills/目录,文档一更新,llms.txt瞬间重绘,无需人工干预。 - 混合驱动 :支持同时注入
llms.txt(静态)与WebMCP(动态)探测桩,让 AI Agent 既能读懂你,又能操作你。 - 极简工程化:内置 Markdown 预处理器,自动提取标题作为描述,消除一切干扰 AI 的噪音。
改造逻辑:
- 自动化扫描 :通过 Node.js 遍历
docs/和skills/目录。 - 提取元数据:自动抓取 Markdown 的 H1 标题作为描述。
- 静默同步:挂载在后台进程中,文档一变,索引立更。
核心脚本参考 (Node.js):
javascript
// scripts/sync-llms.js
import fs from 'fs';
import path from 'path';
// 递归提取 H1 标题
const extractTitle = (filePath) => {
const content = fs.readFileSync(filePath, 'utf-8');
const match = content.match(/^#\\s+(.+)$/m);
return match ? match[1].trim() : path.basename(filePath, '.md');
};
// 生成 llms.txt
let llmsTxt = `# My Project
> Simple description.
## Docs
`;
const docs = fs.readdirSync('./docs').filter(f => f.endsWith('.md'));
docs.forEach(file => {
const title = extractTitle(`./docs/${file}`);
llmsTxt += `- [docs/${file}](docs/${file}): ${title}.
`;
});
fs.writeFileSync('./llms.txt', llmsTxt);
5. 结语:让 AI 成为你的头等舱用户
未来的网页,访问者可能一半是人类,一半是 AI 代理。
实现 llms.txt 或 WebMCP,本质上是在为 AI 建立 "数字盲道" 。当别人还在为 Agent 抓取不到关键信息而苦恼时,你的项目已经通过标准的 llms.txt 优雅地完成了握手。