---
layout: single
title:  "/llms.txt 文件"
date:   2026-02-26 08:00:00 +0800
categories: [AI 与大模型, 编程开发]
tags: [Agent, llms.txt, LLM, Website]
---

关于标准化使用 `/llms.txt` 文件以提供信息，帮助大语言模型（LLM）在推理阶段使用网站内容的提案。

**Jeremy Howard**
2024-09-03

<!-- more -->

## 背景

大型语言模型（LLM）越来越依赖网站信息，但面临一个关键限制：**上下文窗口（Context Windows）太小**，无法处理大多数完整的网站内容。将包含导航、广告和 JavaScript 的复杂 HTML 页面转换为 LLM 友好的纯文本内容既困难又不精确。

虽然网站同时服务于人类读者和 LLM，但 LLM 受益于在单一可访问位置收集的更简洁、专业级别的信息。这在开发环境等用例中尤为重要，LLM 需要快速访问编程文档和 API。

## 提案

<figure>
<img src="https://llmstxt.org/logo.png" class="lightbox floatr" width="150"
alt="llms.txt logo" />
<figcaption aria-hidden="true">llms.txt logo</figcaption>
</figure>

我们建议在网站上添加一个 `/llms.txt` Markdown 文件，以提供 LLM 友好的内容。该文件提供简要的背景信息、指导和指向详细 Markdown 文件的链接。

llms.txt Markdown 既可以被人类阅读，也可以被 LLM 读取，同时具有精确的格式，允许使用固定的处理方法（即经典的编程技术，如解析器和正则表达式）。

我们进一步建议，网站上可能对 LLM 有价值的信息页面应提供该页面的干净 Markdown 版本，URL 与原始页面相同，但附加 `.md` 扩展名。（没有文件名的 URL 应附加 `index.html.md` 代替。）

[FastHTML 项目](https://fastht.ml) 的文档遵循了这两个建议。例如，这里是 [FastHTML 文档的 llms.txt](https://www.fastht.ml/docs/llms.txt)。这里还有一个 [常规 HTML 文档页面](https://www.fastht.ml/docs/tutorials/by_example.html) 的示例，以及完全相同的 URL 但带有 [.md 扩展名的版本](https://www.fastht.ml/docs/tutorials/by_example.html.md)。

本提案不包括如何处理 llms.txt 文件的具体建议，因为这将取决于应用程序。例如，FastHTML 项目选择使用适合 Claude 等 LLM 使用的基于 XML 的结构，自动将 llms.txt 扩展为两个包含链接 URL 内容的 Markdown 文件。这两个文件是：[llms-ctx.txt](https://fastht.ml/docs/llms-ctx.txt)（不包含可选 URL）和 [llms-ctx-full.txt](https://fastht.ml/docs/llms-ctx-full.txt)（包含可选 URL）。它们是使用 [`llms_txt2ctx`](https://llmstxt.org/intro.html#cli) 命令行应用程序创建的，FastHTML 文档包含了用户如何使用它们的信息。

llms.txt 文件的多功能性意味着它们可以用于多种用途——从帮助开发人员了解软件文档，到为企业提供概述其结构的方法，甚至为利益相关者分解复杂的法规。它们同样适用于个人网站（帮助回答有关某人简历的问题）、电子商务网站（解释产品和政策）或学校和大学（提供课程信息和资源的快速访问）。

请注意，所有 [nbdev](https://nbdev.fast.ai/) 项目现在默认都会创建所有页面的 .md 版本。所有使用 nbdev 的 Answer.AI 和 fast.ai 软件项目都已重新生成了包含此功能的文档。例如，参见 [fastcore 的 docments 模块](https://fastcore.fast.ai/docments.html) 的 [Markdown 版本](https://fastcore.fast.ai/docments.html.md)。

## 格式

目前，语言模型最广泛且最容易理解的格式是 Markdown。简单地显示关键 Markdown 文件的位置是一个很好的第一步。提供一些基本结构有助于语言模型找到所需信息的来源。

`llms.txt` 文件的不同之处在于它使用 Markdown 来组织信息，而不是经典的结构化格式（如 XML）。这样做的原因是，我们期望这些文件中的许多会被语言模型和智能体读取。尽管如此，llms.txt 中的信息遵循特定格式，可以使用标准的程序化工具读取。

llms.txt 文件规范适用于位于网站根路径 `/llms.txt`（或可选地位于子路径）的文件。符合规范的文件包含以下 Markdown 部分，顺序特定：

- 一个包含项目或网站名称的 H1 标题。这是唯一必填部分
- 一个包含项目简短摘要的块引用，包含理解文件其余部分所需的关键信息
- 零个或多个 Markdown 部分（例如段落、列表等），类型不限，但不包括标题，包含有关项目的更多详细信息以及如何解释所提供的文件
- 零个或多个由 H2 标题分隔的 Markdown 部分，包含"文件列表"，其中包含进一步详细信息的 URL
  - 每个"文件列表"是一个 Markdown 列表，包含一个必填的 Markdown 超链接 `[name](url)`，然后可选地是一个 `:` 和关于该文件的注释。

以下是一个模拟示例：

``` markdown
# 标题

> 可选描述内容

可选详细信息内容

## 部分名称

- [链接标题](https://link_url): 可选链接详细信息

## Optional（可选）

- [链接标题](https://link_url)
```

请注意，"Optional"（可选）部分具有特殊含义——如果包含该部分，则在需要较短上下文时可以跳过其中提供的 URL。将其用于通常可以跳过的次要信息。

## 现有标准

llms.txt 旨在与当前的 Web 标准共存。虽然 sitemap 列出了搜索引擎的所有页面，但 `llms.txt` 为 LLM 提供了精选的概述。它可以补充 robots.txt，为允许的内容提供上下文。该文件还可以引用网站上使用的结构化数据标记，帮助 LLM 在上下文中理解如何解释这些信息。

为文件标准化路径的方法遵循了 `/robots.txt` 和 `/sitemap.xml` 的方法。robots.txt 和 `llms.txt` 具有不同的用途——robots.txt 通常用于让自动化工具知道对网站的哪些访问被视为可接受的，例如用于搜索索引爬虫。另一方面，`llms.txt` 信息通常会在用户明确请求有关某个主题的信息时使用，例如在项目中包含编码库的文档，或者向具有搜索功能的聊天机器人询问信息时。我们期望 `llms.txt` 主要用于 *推理*，即在用户寻求帮助时，而不是用于 *训练*。但是，如果 `llms.txt` 的使用变得广泛，未来的训练运行可能也会利用 `llms.txt` 文件中的信息。

sitemap.xml 是网站上所有可索引的人类可读信息的列表。它不能替代 `llms.txt`，因为：

- 通常不会列出页面的 LLM 可读版本
- 不包含外部网站的 URL，即使它们可能有助于理解信息
- 通常会包含总体上太大而无法放入 LLM 上下文窗口的文档，并会包含许多理解网站不需要的信息。

## 示例

以下是 `llms.txt` 的示例，这是 FastHTML 项目使用的文件的简化版本（另请参见 [完整版本](https://www.fastht.ml/docs/llms.txt)）：

``` markdown
# FastHTML

> FastHTML 是一个 Python 库，它将 Starlette、Uvicorn、HTMX 和 fastcore 的 `FT` "FastTags" 结合在一起，用于创建服务器渲染的超媒体应用程序。

重要说明：

- 尽管其 API 的某些部分受到 FastAPI 的启发，但它*不*与 FastAPI 语法兼容，也不针对创建 API 服务
- FastHTML 与原生 JavaScript 网页组件和任何 vanilla JS 库兼容，但与 React、Vue 或 Svelte 不兼容。

## 文档

- [FastHTML 快速入门](https://fastht.ml/docs/tutorials/quickstart_for_web_devs.html.md): FastHTML 许多功能的简要概述
- [HTMX 参考](https://github.com/bigskysoftware/htmx/blob/master/www/content/reference.md): 所有 HTMX 属性、CSS 类、标题、事件、扩展、JS 库方法和配置选项的简要描述

## 示例

- [待办事项列表应用程序](https://github.com/AnswerDotAI/fasthtml/blob/main/examples/adv_app.py): FastHTML 中完整 CRUD 应用程序的详细演练，展示了 FastHTML 和 HTMX 模式的惯用用法。

## Optional（可选）

- [Starlette 完整文档](https://gist.githubusercontent.com/jph00/809e4a4808d4510be0e3dc9565e9cbd3/raw/9b717589ca44cedc8aaf00b2b8cacef922964c0f/starlette-sml.md): Starlette 文档中对 FastHTML 开发有用的子集。
```

要创建有效的 `llms.txt` 文件，请考虑以下准则：

- 使用简洁明了的语言。
- 链接资源时，包含简要且信息丰富的描述。
- 避免使用模糊术语或未解释的行话。
- 运行一个工具，将您的 `llms.txt` 文件扩展为 LLM 上下文文件，并测试多个语言模型，以查看它们是否能回答有关您内容的问题。

## 目录

以下是一些列出 Web 上可用 `llms.txt` 文件的目录：

- [llmstxt.site](https://llmstxt.site/)
- [directory.llmstxt.cloud](https://directory.llmstxt.cloud/)

## 集成

有各种工具和插件可帮助将 llms.txt 规范集成到您的工作流程中：

- [`llms_txt2ctx`](https://llmstxt.org/intro.html#cli) - 用于解析 llms.txt 文件和生成 LLM 上下文的 CLI 和 Python 模块
- [JavaScript 实现](./llmstxt-js.html) - JavaScript 示例实现
- [`vitepress-plugin-llms`](https://github.com/okineadev/vitepress-plugin-llms) - VitePress 插件，可自动为网站生成符合 llms.txt 规范的 LLM 友好文档
- [`docusaurus-plugin-llms`](https://github.com/rachfop/docusaurus-plugin-llms) - Docusaurus 插件，用于生成符合 llmtxt.org 标准的 LLM 友好文档
- [Drupal LLM 支持](https://www.drupal.org/project/llm_support) - 一个 Drupal 模块，为任何 Drupal 10.3+ 站点提供对 llms.txt 提案的完整支持
- [`llms-txt-php`](https://github.com/raphaelstolt/llms-txt-php) - 用于编写和读取 llms.txt Markdown 文件的 PHP 库
- [`VS Code PagePilot 扩展`](https://dmux.github.io/pagepilot) - PagePilot 是一个 VS Code Chat 参与者，可自动加载外部上下文（文档、API、README 文件）以提供增强的响应。

## 下一步

`llms.txt` 规范对社区输入开放。[GitHub 仓库](https://github.com/AnswerDotAI/llms-txt) 托管了 [这个非正式概述](https://github.com/AnswerDotAI/llms-txt/blob/main/nbs/index.qmd)，允许进行版本控制和公开讨论。[社区 Discord 频道](https://discord.gg/aJPygMvPEN) 可供分享实现经验和讨论最佳实践。


## 参考资料
- [The /llms.txt file](https://llmstxt.org)
- [The /llms.txt file (markdown)](https://llmstxt.org/index.md)
