
关键词:Python教程、LLM上下文生成、llms.txt解析、AI上下文工程、Claude context、Python CLI工具、Prompt工程

最近在研究 LLM上下文工程(Context Engineering) 时,发现一个非常实用的小工具:llms-txt。 它的作用非常明确:把 llms.txt 文件转换成适合大模型使用的 XML 上下文文档。
这类工具在做 AI Agent、RAG、Claude 项目、Prompt工程 时非常实用,可以把项目文档自动整理成模型可理解的结构化上下文。
本文将完整介绍:
一句话理解:
llms.txt 是专门给大模型看的 README
它使用 Markdown 描述项目,并把 文档、示例、知识链接 按结构组织。
示例:
# 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 | Docs / Examples / Optional |
pip install llms-txt安装完成后会得到 CLI 命令:
llms_txt2ctxllms_txt2ctx -hllms_txt2ctx llms.txt > llms.md如果需要包含 Optional 区块:
llms_txt2ctx llms.txt --optional True > llms.md生成的内容就是 可直接喂给 Claude / GPT 的上下文文档。
除了 CLI,它还提供 Python 模块,适合在项目中自动化生成上下文。
from llms_txt import *
from pathlib import Path读取 llms.txt:
samp = Path('llms-sample.txt').read_text()parsed = parse_llms_file(samp)解析后得到结构:
list(parsed)输出:
['title', 'summary', 'info', 'sections']查看标题和摘要:
parsed.title, parsed.summary输出:
('FastHTML', 'FastHTML is a python library...')查看所有 section:
list(parsed.sections)输出:
['Docs', 'Examples', 'Optional']查看某条链接:
parsed.sections.Optional[0]返回结构:
{
"desc": "A subset of the Starlette documentation useful...",
"title": "Starlette full documentation",
"url": "https://..."
}最关键一步:
ctx = create_ctx(samp)
print(ctx[:300])生成结果类似:
<project title="FastHTML" summary="...">
Remember:
- Use serve() for running uvicorn
...这一步就是 CLI 背后的核心逻辑。
官方给了一个 无依赖 20 行解析器,非常值得学习。
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 = '-\s*\[(?P<title>[^\]]+)\]\((?P<url>[^\)]+)\)(?::\s*(?P<desc>.*))?'
return [re.search(link_pat, l).groupdict()
for l in re.split(r'\n+', links.strip()) if l.strip()]
start,*rest = re.split(fr'^##\s*(.*?$)', txt, flags=re.MULTILINE)
sects = {k: _p(v) for k,v in dict(chunked(rest, 2)).items()}
pat = '^#\s*(?P<title>.+?$)\n+(?:^>\s*(?P<summary>.+?$)$)?\n+(?P<info>.*)'
d = re.search(pat, start.strip(), (re.MULTILINE|re.DOTALL)).groupdict()
d['sections'] = sects
return d技术 | 用途 |
|---|---|
正则分块解析 | 拆分 Markdown 区块 |
groupdict() | 直接生成结构化字典 |
itertools.islice | 两两分组 section |
无第三方依赖 | 轻量可嵌入 |
这是一个非常典型的 结构化文本解析器。
这个工具非常适合:
llms-txt = LLM时代的 README 生成器
核心价值:
如果正在做 AI 项目,这个工具值得加入工具链。