### 前言 `llms-txt` 的核心价值一句话就能说清楚:**将 Markdown 格式的项目描述,转化为 LLM 可以直接使用的结构化上下文**。 它主要完成三件事: - 解析 `llms.txt` 的区块结构 - 提取标题、摘要、文档链接、示例链接等信息 - 输出一个整洁的 XML 文档,直接喂给 Claude、GPT 等模型作为背景知识 接下来完整介绍:CLI 如何使用、Python API 如何调用、核心解析原理(附 20 行实现),以及适合在哪些场景落地。
### 一、什么是 llms.txt 简单来说,它是一种用 Markdown 描述项目的方式——把文档、示例、知识链接按照固定结构组织起来。 下面是一个典型示例: ```ja vascript # FastHTML > FastHTML is a python library which... When writing FastHTML apps remember to: - Thing to remember ## Docs - [Surreal](https://host/README.md): Tiny jQuery alternative - [FastHTML quick start](https://host/quickstart.html.md) ## Examples - [Todo app](https://host/adv_app.py) ## Optional - [Starlette docs](https://host/starlette-sml.md) ``` 核心区块只有四个: | 区块 | 含义 | |------|------| | Title | 项目名称 | | Summary | 项目简介(`>` 引用的文字) | | Info | 额外说明(标题和摘要之后、第一个 `##` 之前的内容) | | Sections | 文档、示例、可选等分类链接,每类下放一个列表 |
### 二、安装 llms-txt ```ja vascript pip install llms-txt ``` 安装完成后,命令行就会多出 `llms_txt2ctx` 命令。 ```ja vascript llms_txt2ctx ```
### 三、CLI 使用教程 查看帮助: ```ja vascript llms_txt2ctx -h ``` 将 `llms.txt` 转换为 XML 上下文(默认不包含 Optional 区块): ```ja vascript llms_txt2ctx llms.txt > llms.md ``` 如果需要包含 Optional 区块: ```ja vascript llms_txt2ctx llms.txt --optional True > llms.md ``` 生成的内容可以直接交给 Claude 或 GPT,无需额外处理。
### 四、Python API 使用 除了命令行,它还提供 Python 模块,适合在项目中实现自动化。 #### 导入模块 ```ja vascript from llms_txt import * from pathlib import Path ``` 读取 `llms.txt`: ```ja vascript samp = Path('llms-sample.txt').read_text() ```
#### 1️⃣ 解析 llms.txt ```ja vascript parsed = parse_llms_file(samp) ``` 解析后,得到的 `parsed` 是一个命名元组,包含四个字段: ```ja vascript list(parsed) # ['title', 'summary', 'info', 'sections'] ``` 查看标题和摘要: ```ja vascript parsed.title, parsed.summary # ('FastHTML', 'FastHTML is a python library...') ``` 查看所有 section 名称: ```ja vascript list(parsed.sections) # ['Docs', 'Examples', 'Optional'] ``` 查看某条链接的具体内容: ```ja vascript parsed.sections.Optional[0] # {"desc": "A subset of the Starlette documentation useful...", # "title": "Starlette full documentation", # "url": "https://..."} ```
#### 2️⃣ 生成 LLM XML 上下文 最关键的一步——把解析结果转成 XML 文档: ```ja vascript ctx = create_ctx(samp) print(ctx[:300]) ``` 输出的内容类似: ```ja vascript
### 五、核心实现原理(重点) 官方给出了一个**无依赖、20 行的解析器**,非常值得学习。 #### 完整解析器 ```ja vascript from pathlib import Path import re, itertools def chunked(it, chunk_sz): it = iter(it) return iter(lambda: list(itertools.islice(it, chunk_sz)), []) def parse_llms_txt(txt): "Parse llms.txt file contents in `txt` to a `dict`" def _p(links): link_pat = r'- \[(?P
### 六、适用场景 这个工具在以下几个场景中尤其顺手: #### AI Agent 项目 自动将项目文档整理成 Claude / GPT 可理解的上下文,省去手工拼接 Prompt 的麻烦。 #### RAG 系统 把知识库统一转为 XML 格式,方便批量更新和索引。 #### 开源项目 为项目提供一个“AI Readme”,告诉模型从哪读文档、看哪些示例,大幅提升代码理解效率。
### 七、总结 `llms-txt` 堪称 **LLM 时代的 README 生成器**。它的核心价值: - 把 Markdown 文档 → LLM 可读的 XML - 提供 CLI 和 Python API 两种使用方式 - 可嵌入 AI Agent、RAG、自动文档系统 - 核心实现极为轻量(20 行即可实现) 如果你的工作涉及 AI 相关项目,这个工具值得加入你的工具链。
