/llms.txt 是一个指针。它列出 agent 在这个 host 上可用的端点、工具和集合,并链接到按集合切分的索引分片。它不是站点的副本。
抓取它的 agent 用大约一千字节就知道该连去哪里,而不必把站点当成文本读一遍。
抓取
curl -s https://<host>/llms.txt# ArcBlock
> ArcBlock builds decentralized identity, user-owned data, Blocklet
> infrastructure, and AI-native application systems.
## For agents
- MCP (Streamable HTTP): https://<host>/mcp
- Server card: https://<host>/.well-known/mcp.json
- AFS over HTTP (JSON-RPC): POST https://<host>/api/afs/rpc
- Tools: search_content, list_content, get_content
- Collections available to agents: articles, docs, glossary, products
- Anonymous public read; writes require DID-Connect auth
Locales: en, zh, ja, zh-TW (base: en). …
Full-text version (all collections, never truncated): https://<host>/llms-full.txt
## Docs (1268 items)
Index: https://<host>/llms-docs.txt
Full text: https://<host>/llms-docs-full.txt上面这份文档是 1,142 字节。真正起作用的是 For agents 那一块:它交出 MCP 端点、server card 和 JSON-RPC 端点,让能力强于「读文本」的客户端不必去读文本。
分片
每个声明了 llms face 的集合,都有一个索引分片和一个全文分片。
| 路径 | 内容 |
|---|---|
/llms.txt | 上面那份指针,外加每个集合一节,含条目数和分片链接 |
/llms-<collection>.txt | 单个集合的索引 |
/llms-<collection>-full.txt | 单个集合的全文 |
/llms-full.txt | 所有集合的全文 |
没有这个 face 的集合就没有分片:
curl -s -o /dev/null -w '%{http_code} %{size_download}\n' https://<host>/llms-docs.txt # 200 154869
curl -s -o /dev/null -w '%{http_code} %{size_download}\n' https://<host>/llms-articles.txt # 404 9哪些集合有这个 face 由每个 blocklet 自己决定;见声明 agent 能看到什么。
体积并不对称
在一个约 1,300 篇文档的站点上:指针约 1 KB,docs 索引分片约 150 KB,/llms-full.txt 有几个 MB。
分片的存在是为了让 agent 只取它需要的那个集合。llms-full.txt 是为完整性准备的,不是预期的入口 —— 抓它花掉的上下文,比连上 MCP 问一个问题更多。
什么时候用哪个
| 情况 | 用 |
|---|---|
| 客户端会说 MCP | /mcp。去查询,而不是把内容吞下去 |
| 客户端能发 HTTP 但没有工具调用框架 | /api/afs/rpc |
| 客户端只能抓文本 | /llms.txt,然后取它需要的那一个分片 |
llms.txt 里点名了前两者,因此从文本面起步的 agent 可以往上换一个更好的面。