在 Discourse 中启用原生 LLMs.txt 支持

:bookmark: 本指南介绍如何通过 llms.txt 标准,让您的社区能够被 AI 智能体和 LLM 爬虫发现和使用。内容涵盖自动生成的默认文档以及自定义上传的文件。

:person_raising_hand: 所需用户权限:管理员

摘要

Discourse 原生支持 llms.txt 标准,这是一种旨在为大型语言模型(LLM)提供网站概览的提议规范。可以将其视为“面向 AI 的 robots.txt”:位于 /llms.txt 的一个小型 Markdown 文件,帮助大型语言模型(LLM)和 AI 智能体了解您的网站内容以及如何负责任地访问它。

您可以选择以下两种方法之一,或结合使用:

  1. 让 Discourse 自动从站点设置生成默认文档
  2. 上传您自己的自定义 llms.txt 文件,以完全控制内容

自定义上传的文件始终优先于生成的文档。

什么是 llms.txt?

llms.txt 是一个提议的标准,提供了一个经过整理的、便于智能体使用的网站地图。它部署在站点根目录(/llms.txt),并遵循严格的 Markdown 格式:

  • 一个带有站点名称的 H1 标题(这是唯一必需的章节)
  • 一个包含简短摘要的引用块
  • 可选的 Markdown 章节,提供更多细节
  • 包含有用链接列表的、由 H2 分隔的章节

与为搜索引擎列出页面的 sitemap.xml 不同,llms.txt 是一个旨在适应 LLM 上下文窗口的简洁概览。详细信息隐藏在链接背后,仅在需要时才会被获取。

Discourse v2026.1.0 开始,Discourse 可以从站点根目录提供 llms.txt

Discourse 如何提供 /llms.txt

Discourse 按以下顺序处理对 /llms.txt 的请求:

  1. 如果您上传了自定义文件,Discourse 会将其作为 text/plain 原样提供
  2. 如果没有上传自定义文件且启用了生成的默认文档,Discourse 将生成并提供该文档
  3. 否则,Discourse 返回 404

生成的文档对于匿名访问者和已登录用户是相同的,并且不受 login required(需要登录)重定向的影响。

生成的默认文档

当没有上传自定义文件且该功能已启用时,Discourse 会使用您站点现有的设置和站点的默认语言环境构建一个简洁的文档。它包括:

  • 站点标题(来自 title 设置),如果未设置则回退到主机名
  • 一个使用您的 site_description摘要引用块,如果未设置则回退到 short_site_description
  • 一项人类社区政策,声明该站点用于人类讨论,且智能体仅应在人类明确要求时才进行写入操作
  • 一项智能体访问政策,要求智能体仅获取所需内容,尊重 robots.txt 和爬虫控制,并遵守带有 Retry-After 间隔的 HTTP 429 响应
  • 一个 Discourse MCP 引用,指向 Discourse MCP 服务器 作为首选的、具备权限感知能力的接口
  • 一个首选智能体接口章节,包含 Discourse MCP 设置链接
  • 一个公共 Web 访问章节,包含指向 /search/filter/latest/categories 的链接,如果 enable_sitemap 设置开启,还包括 /sitemap.xml
  • 一个可选章节,包含指向 /about/guidelines/tos/privacy 的链接

如果您的站点启用了 login_required,文档将添加一条说明,指出内容仅对经过身份验证的成员可用,并省略上述公共发现链接。链接具有基础路径感知能力,因此在子文件夹安装中也能正确工作。

您可以在 自动生成的 llms.txt 中查看公告并讨论生成的模板。Meta 本身目前提供一个自定义的、特定于站点的文件

启用生成的默认文档

生成的默认文档通过 即将推出的更改 系统作为 beta 更改提供,管理员可以选择加入或退出。

  1. 前往 管理 → 配置 → 即将推出的更改,或访问 /admin/config/upcoming-changes
  2. 找到在未上传自定义文件时生成默认 /llms.txt 的更改项
  3. 启用对象 下拉菜单中,选择 所有人 以对所有访问者启用
  4. 若要关闭,请选择

当更改项准备就绪时,它们会自动出现在这里,并且管理员会在仪表板上收到通知。如果您希望完全不提供 llms.txt 文件,请将此更改设置为 ,或上传一个最小的自定义文件。

上传自定义 llms.txt

如果您希望精确控制内容,可以上传您自己的文件。

  1. 准备一个 .txt.md 格式的 llms.txt 文件(最大文件大小为 512 KB)
  2. 前往 管理 → 设置 → 安全,或访问 /admin/config/security,并搜索 LLMs TXT
  3. 上传您的文件并保存配置

配置完成后,Discourse 将在以下位置原样提供您的文件:

https://yourforum.com/llms.txt

有关语法和格式指南,请参阅 llmstxt.org。自定义上传始终覆盖生成的文档。作为参考,您可以查看 Meta 的文件

验证您的设置

您可以通过在浏览器中请求该文件或使用 curl 来检查智能体将看到的内容:

curl https://yourforum.com/llms.txt

最佳实践

  • 保持文件简洁llms.txt 是一张地图,而不是清单;每个 token 都会消耗上下文,过大的文件会导致智能体困惑并产生更差的结果
  • 仅在其内容符合您的政策时才提供生成的默认文档。如果您需要不同的措辞,请复制生成的文本,根据社区需求进行编辑,然后作为自定义文件上传
  • 按照规范结构自定义文件:H1 标题,引用块摘要,然后是包含链接列表的 H2 章节,使用 Optional 章节放置次要链接
  • llms.txt 与爬虫控制相结合。为了调整自动化访问,请配置 slow_down_crawler_user_agentsslow_down_crawler_rate 设置(管理 → 设置 → 安全)
  • 请记住,llms.txt 描述您的站点,而 robots.txt 控制访问权限。它们的目的不同,但相辅相成

常见问题及解决方案

我在 /llms.txt 处收到 404 错误

这发生在没有上传自定义文件且未启用生成的默认文档时。请上传自定义文件,在 管理 → 即将推出的更改 中启用生成的默认文档,或两者都做。

我使用了 llms.txt 生成器插件,但主文件停止工作了

核心 Discourse 提供 /llms.txt 路径,因此其优先级高于生成该路径的插件。如果您依赖插件动态生成的文件(例如完整的主题索引),一个实用的变通方法是上传一个最小的自定义 llms.txt,将智能体指向插件生成的内容,例如:

# [您的站点标题]

请访问 https://yourforum.com/llms-full.txt

插件生成的按类别、按主题和按标签的文件不受影响。

我上传了文件,但 /llms.txt 返回 404

如果上传的文件无法从存储中读取(例如,它缺失于外部对象存储中),Discourse 将返回 404,并且不会回退到生成的文档。请重新上传文件以解决此问题。

我的站点需要登录,这会如何表现?

生成的文档仍然有效:它包含需要账户的通知,并省略公共发现链接。自定义上传的文件始终原样提供。如果您希望智能体访问内容,请考虑您的登录设置如何影响可爬取性。

常见问题解答

Discourse 是否会在 llms.txt 中自动列出我所有的主题?

生成的默认文档有意不列出单个主题。它是一个描述您的站点、说明访问政策并将智能体指向 Discourse MCP 接口和几个发现路由的最小地图。

生成的文档使用哪种语言?

它使用您站点的默认语言环境(default_locale 设置)生成,无论请求的语言如何。

我可以退出吗?

可以。在 管理 → 即将推出的更改 中将更改设置为 。或者,上传一个包含您自己内容的自定义文件。

为什么生成的文档引用 Discourse MCP?

Discourse MCP 服务器为帖子、回复、搜索、用户、类别和受支持的社区操作提供了具备权限感知能力的工具。这是智能体与您的社区交互的首选方式,因此在可用时,“首选智能体接口”章节中会链接到本地 MCP 设置。

额外资源

14 个赞

Discourse 无法为站点动态生成 llms.txt 吗?这似乎是一个更有用的功能,并且能与 🤖 Discourse llms.txt Generator Plugin - #2 by Ivan_Rapekas 保持一致。而这项新功能却与之冲突,覆盖了 /llms.txt 路径,即使插件配置正确,也会返回 404 错误。

这项功能扩展是否已在路线图中的某个位置?

5 个赞

我针对此问题的变通方法如下:

  • 在 VS Code 中创建一个仅包含以下内容的 llms.txt 文件:

    请前往 [https://<YOUR-BASEURL>/llms-full.txt](https://<YOUR-BASEURL>/llms-full.txt)
    
  • 将此文件上传至 Discourse 核心 llms.txt 部分的 admin/config/security?filter=LLMs%20TXT 设置中。保存。

  • 测试 https://<YOUR-BASEURL>/llms.txt 是否显示上述文本文件的内容。

  • 现在,希望访问 llms.txt 的大语言模型(LLM)会被引导至 llms-full.txt,该文件由 🤖 Discourse llms.txt Generator Plugin 动态生成。

1 个赞

指南已更新,以反映在自动生成的 llms.txt中宣布的变更。

3 个赞