files-to-prompt
files-to-prompt 是一款专为大型语言模型(LLM)设计的命令行工具,它能将指定目录下的多个文件内容快速合并为一个完整的提示词(Prompt)。在处理代码库分析、文档总结或上下文学习等任务时,开发者往往需要让 AI 理解整个项目的结构,但手动复制粘贴大量文件既低效又容易出错。files-to-prompt 完美解决了这一痛点,自动遍历文件夹,按相对路径整理文件内容,并用清晰的分隔符串联输出,让用户能一键生成高质量的输入素材。
这款工具特别适合开发者、AI 研究人员以及需要频繁与代码交互的技术人员使用。它不仅支持通过文件扩展名筛选内容、忽略临时文件或日志,还能灵活处理隐藏文件和 .gitignore 规则,确保只纳入有效信息。其独特的技术亮点在于多样化的输出格式:既支持原生的文本拼接,也能直接生成适配 Claude 模型的 XML 格式或带有语法高亮的 Markdown 代码块,甚至可以为文件内容添加行号以便精准定位。此外,它还兼容标准输入流,方便与其他命令组合使用。通过简单的 pip 安装即可上手,files-to-prompt 以极简的方式打通了本地文件系统与大模型之间的桥梁,显著提升了工作效率。
使用场景
一位全栈开发者正在重构一个遗留的 Python 微服务项目,需要让 AI 助手基于现有代码库生成详细的重构方案和技术文档。
没有 files-to-prompt 时
- 手动复制效率极低:开发者必须逐个打开十几个
.py和.md文件,手动复制粘贴内容到对话框,耗时且容易遗漏关键文件。 - 上下文结构混乱:直接粘贴的代码缺乏文件路径标识,AI 难以区分不同模块的归属,导致生成的建议张冠李戴。
- 干扰信息过多:本地目录混杂着
.log日志文件和__pycache__缓存,人工筛选费时费力,稍不注意就会把这些无用信息喂给 AI,浪费 Token 并干扰判断。 - 格式兼容性问题:纯文本粘贴丢失了代码块标记,AI 识别代码语法的准确率下降,往往需要多次追问才能修正。
使用 files-to-prompt 后
- 一键聚合代码库:只需运行
files-to-prompt src/ -e py -e md --ignore "*.log",瞬间将整个项目核心代码合并为一段结构化文本,直接填入提示词。 - 自动标注文件来源:输出内容自动在每段代码前加上相对路径(如
src/utils/auth.py)并用---分隔,AI 能精准定位每个函数的所属模块。 - 智能过滤噪音:通过扩展名筛选和忽略模式,自动排除日志、缓存等无关文件,确保输入给 AI 的每一个字符都高价值且相关。
- 优化模型解析效果:配合
-m参数输出带围栏的代码块(Markdown fenced blocks),LLM 能立即识别代码语言,生成的重构方案逻辑严密且可直接运行。
files-to-prompt 将繁琐的文件整理工作转化为一条命令,让开发者能轻松将完整的本地代码上下文“喂”给大模型,极大提升了复杂任务的处理效率与准确性。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
files-to-prompt
将一个包含多个文件的目录合并为一个可用于大语言模型的单一提示文本。
有关该项目的背景信息,请参阅 完全使用 Claude 3 Opus 构建 files-to-prompt。
安装
使用 pip 安装此工具:
pip install files-to-prompt
使用方法
要使用 files-to-prompt,请提供您想要处理的一个或多个文件或目录的路径:
files-to-prompt path/to/file_or_directory [path/to/another/file_or_directory ...]
这将输出每个文件的内容,每个文件前面会加上其相对路径,并用 --- 分隔。
选项
-e/--extension <extension>:仅包含具有指定扩展名的文件。可以多次使用。files-to-prompt path/to/directory -e txt -e md--include-hidden:包含以.开头的文件和文件夹(隐藏文件和目录)。files-to-prompt path/to/directory --include-hidden--ignore <pattern>:指定一个或多个要忽略的模式。可以多次使用。模式可以匹配文件名和目录名,除非同时指定了--ignore-files-only。模式语法使用 fnmatch,支持*、?、[anychar]、[!notchars]和[?]用于特殊字符字面量。files-to-prompt path/to/directory --ignore "*.log" --ignore "temp*"--ignore-files-only:包含那些本会被--ignore模式忽略的目录路径。files-to-prompt path/to/directory --ignore-files-only --ignore "*dir*"--ignore-gitignore:忽略.gitignore文件并包含所有文件。files-to-prompt path/to/directory --ignore-gitignore-c/--cxml:以 Claude XML 格式输出。files-to-prompt path/to/directory --cxml-m/--markdown:以带有围栏代码块的 Markdown 格式输出。files-to-prompt path/to/directory --markdown-o/--output <file>:将输出写入文件,而不是打印到控制台。files-to-prompt path/to/directory -o output.txt-n/--line-numbers:在输出中包含行号。files-to-prompt path/to/directory -n示例输出:
files_to_prompt/cli.py --- 1 import os 2 from fnmatch import fnmatch 3 4 import click ...-0/--null:从标准输入读取路径时,使用 NUL 字符作为分隔符。当文件名可能包含空格时非常有用。find . -name "*.py" -print0 | files-to-prompt --null
示例
假设您有一个如下所示的目录结构:
my_directory/
├── file1.txt
├── file2.txt
├── .hidden_file.txt
├── temp.log
└── subdirectory/
└── file3.txt
运行 files-to-prompt my_directory 将输出:
my_directory/file1.txt
---
file1.txt 的内容
---
my_directory/file2.txt
---
file2.txt 的内容
---
my_directory/subdirectory/file3.txt
---
file3.txt 的内容
---
如果您运行 files-to-prompt my_directory --include-hidden,输出还将包括 .hidden_file.txt:
my_directory/.hidden_file.txt
---
.hidden_file.txt 的内容
---
...
如果您运行 files-to-prompt my_directory --ignore "*.log",输出将不包含 temp.log:
my_directory/file1.txt
---
file1.txt 的内容
---
my_directory/file2.txt
---
file2.txt 的内容
---
my_directory/subdirectory/file3.txt
---
file3.txt 的内容
---
如果您运行 files-to-prompt my_directory --ignore "sub*",输出将不包含 subdirectory/ 中的所有文件(除非您还指定了 --ignore-files-only):
my_directory/file1.txt
---
file1.txt 的内容
---
my_directory/file2.txt
---
file2.txt 的内容
---
从标准输入读取
该工具也可以从标准输入读取路径。这可用于将另一个命令的输出通过管道传递进来:
# 查找过去一天内修改过的文件
find . -mtime -1 | files-to-prompt
当使用 --null(或 -0)选项时,路径应以 NUL 字符分隔(处理包含空格的文件名时很有用):
find . -name "*.txt" -print0 | files-to-prompt --null
您可以混合使用命令行参数和标准输入中的路径:
# 包括过去一天内修改过的文件,并且还包括 README.md
find . -mtime -1 | files-to-prompt README.md
Claude XML 输出
Anthropic 提供了 特定指南 来优化提示的结构,以便充分利用 Claude 的扩展上下文窗口。
要以这种方式组织输出,请使用可选的 --cxml 标志,它将生成如下输出:
<documents>
<document index="1">
<source>my_directory/file1.txt</source>
<document_content>
file1.txt 的内容
</document_content>
</document>
<document index="2">
<source>my_directory/file2.txt</source>
<document_content>
file2.txt 的内容
</document_content>
</document>
</documents>
--markdown 围栏代码块输出
--markdown 选项会将文件以围栏代码块的形式输出,这对于粘贴到 Markdown 文档中非常有用。
files-to-prompt path/to/directory --markdown
语言标签将根据文件名自动推断。
如果代码本身包含三重反引号,则其外层将多使用一个反引号。
示例输出:
myfile.py
```python
def my_function():
return "Hello, world!"
```
other.js
```javascript
function myFunction() {
return "Hello, world!";
}
```
file_with_triple_backticks.md
````markdown
这个文件有自己的
```
围栏代码块
```
在里面。
## 开发
要为此工具做出贡献,首先克隆代码库。然后创建一个新的虚拟环境:
```bash
cd files-to-prompt
python -m venv venv
source venv/bin/activate
```
现在安装依赖项和测试依赖项:
```bash
pip install -e '.[test]'
```
运行测试:
```bash
pytest
```
版本历史
0.62025/02/190.52025/02/140.42024/10/160.32024/09/090.2.12024/04/080.22024/04/080.12024/03/22常见问题
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
spec-kit
Spec Kit 是一款专为提升软件开发效率而设计的开源工具包,旨在帮助团队快速落地“规格驱动开发”(Spec-Driven Development)模式。传统开发中,需求文档往往与代码实现脱节,导致沟通成本高且结果不可控;而 Spec Kit 通过将规格说明书转化为可执行的指令,让 AI 直接依据明确的业务场景生成高质量代码,从而减少从零开始的随意编码,确保产出结果的可预测性。 该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程,用户只需通过简单的命令行操作,即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念,支持社区扩展与预设模板,允许用户根据特定技术栈定制开发流程。此外,Spec Kit 强调官方维护的安全性,提供稳定的版本管理,帮助开发者在享受 AI 红利的同时,依然牢牢掌握架构设计的主动权,真正实现从“凭感觉写代码”到“按规格建系统”的转变。