本地文件夹转文本工具

将计算机上的文件夹转换为一个 LLM-ready 文本文件。不会上传任何内容 - 文件完全在您的浏览器中读取。免费,无需安装,无需注册。

本地文件夹到文本:将您的代码库放入一个文件中,无需上传

将其指向计算机上的一个文件夹,您将得到一个文本文件:位于 顶部,然后是您选择的每个文件,每个文件都由标题及其路径分隔。不管你怎么称呼它 — 将代码库合并到一个文件中、连接源文件、将目录合并到一个文件中 文档——这就是整个想法。这是 LLM 处理最好的格式,因为模型可以看到 同时了解项目的形状和内容,并且可以推断出一个文件如何关联 到另一个。

它是免费的,无需注册,也无需安装任何东西。选择一个文件夹,取消型号 不需要,并将项目导出为可以粘贴到任何地方的单个文本文件。

大多数人关心的部分: 没有上传任何内容。这里没有服务器 管道。您的文件在浏览器中读取,在内存中组装,然后交还给您。如果你有 一直在避免在线转换器,因为代码库属于客户,或者处于 NDA 之下,或者只是 不是您的,无法粘贴到第三方服务中,该反对意见不适用于此处 - 以及下一个 部分准确解释了原因,因为“相信我们,它是安全的”不是任何人都应该接受的答案。

私有代码库到文本转换器如何在不上传的情况下实际工作

现代浏览器可以从磁盘读取文件,而无需将它们发送到任何地方。当您选择文件夹时, 浏览器向页面提供文件句柄列表。每一篇都是按照标准来阅读的 FileReader API,它将字节解码为选项卡自己的内存中的字符串。的 目录树、令牌计数、串联——所有这些都发生在您的 JavaScript 中 机。没有 fetch,没有 XHR,没有 API 端点,没有第三方分析调用 携带文件内容。转换时打开浏览器的网络选项卡,您将看到它保持不变 空的。

除了隐私之外,该机制还有一些有用的副作用:

  • 它可以离线工作。 页面加载后,拉动以太网电缆。转换 仍在运行。在气隙机器或锁定的公司网络上很有用。
  • 没有上传限制或速率限制。 没有 API 配额可以达到,因为没有 API。唯一的上限是您的浏览器的内存和您的耐心。
  • 它适用于从未提交的代码。 一个临时分支,一个未跟踪的分支 实验,一个从未见过的文件夹 git init — 的 GitHub 存储库到文本转换器 不能 触摸其中任何一个,因为它从 GitHub API 读取。这个从磁盘读取,所以它不会 关心你的版本控制情况。
  • 什么都没有保留。 关闭选项卡,状态就消失了——没有历史记录可以清除, 没有帐户持有您的来源副本。

获得项目的三种方法

使用目录选择器浏览到文件夹,或直接从 Finder 或资源管理器拖动文件夹 到下降区。两者都递归地遍历树,因此您可以获得整个项目,包括嵌套的 子目录,而不仅仅是顶层。

您还可以放置 ZIP 存档,它会在浏览器中解压 - 当有人向您发送电子邮件时很方便 项目,或者您根本不想提取它。值得了解的一个区别:当 档案馆拥有 代码项目,因为您需要目录树和每个文件的路径标头。 如果是一堆文档——报告、电子表格、PDF—— 压缩为文本压缩至 Markdown 更适合, 因为它们从每个文档中提取可读内容,而不是将文件视为源。

任何 IDE、任何编辑器 — 它只需要一个文件夹

无需安装插件,也无需批准扩展,因为这不与您的集成 编辑器根本。它需要一个目录。该目录是否恰好是 VS Code 工作区、 IntelliJ IDEA 或 PyCharm 项目、Visual Studio 解决方案、Android Studio 模块、Xcode 项目、Eclipse 工作区或您仅在 Neovim 中打开过的文件夹,它是同一组 文件在同一磁盘上。将选择器指向它即可完成。

值得详细说明,因为“将我的 VS Code 项目导出为单个 TXT”和“导出 IntelliJ 项目到一个文件”是人们首先会问编辑的问题。编辑通常是 看错地方了。他们出口 文件,一次一个。一些有市场延伸 只能解决一半问题,大多数都不能解决,而且每个解决方案都不同,所以针对一个 IDE 的答案是没有用的 当你切换的那一刻。文件夹是共同点。

这也是比压缩项目并发送更好的举措。存档是开发人员很好的选择 开发人员,但聊天模型需要文本,而不是容器,审阅者必须先提取它 读一行。综合 .txt 是可读的 内联:将其粘贴到对话中、将其附加到票证中、将其放入电子邮件线程中。如果 有人已经发送了 一个 ZIP,您可以直接将其拖放到此页面上,而不是 首先拆开包装。

在生成之前进行严格修剪

这是人们跳过的步骤,也是决定输出是否可用的步骤。一切 开始在复选框树中打勾,这意味着默认情况下您将包含很多内容 模型需要看。

这里有一件事对你有利。如果该文件夹包含 .gitignore,它被读取并且 它的规则被应用 - 包括树中更深处的嵌套规则,范围仅限于它们自己的目录,以及 注释行被跳过。在一个正常的回购协议中,会悄悄地删除您之前的大多数最严重的违规者 触摸任何东西,因为使转储膨胀的东西通常与你已经告诉 git 的东西相同 独自离开。的 .git 目录本身始终被排除。

不过,不要完全依赖它。一个文件夹没有 .gitignore — 提取的 ZIP、 供应商切换(vendor handoff),一个从来都不是存储库的目录——没有得到任何保护。还有很多吵闹的地方 事情在 git 中被合法地跟踪。扫描树并取消勾选这些:

  • node_modules, vendor, .venv, site-packages 依赖树非常庞大,而且没有一个是您的代码。安 未修剪的 node_modules 光是别人的代币就可以是几十万个 来源。它将淹没实际项目,模型的答案将转向图书馆 内部结构。
  • 构建输出dist, build, .next, target, out,报道报道。这是你自己的代码,缩小或 转译、复制。纯粹的噪音。
  • 锁文件。 package-lock.json, yarn.lock, poetry.lock, Cargo.lock。数千行哈希几乎没有携带 语义信息。保留清单(package.json, pyproject.toml)— 这部分告诉模型你所在的堆栈。
  • 生成的代码和装置 — protobuf 输出、GraphQL 代码生成、数据库 迁移、大型种子或快照文件。
  • 任何有秘密的事情。 没有传输任何内容,但输出文件将进入 最终出现一个聊天窗口。离开 .env 出来。

为您处理二进制文件:图像、字体、编译的工件等都被过滤掉 在它们到达树之前进行扩展,任何漏掉的东西都会被空字节捕获 扫描并用短占位符替换,而不是作为垃圾转储。超过 1 MB 的文件会被 占位符也注明了大小,这可以防止一个杂散的 CSV 耗尽您的整个上下文预算。

输出顶部还有一个目录树切换: 过滤的 节目 只有您选择的内容, 显示完整结构并标记您的选择。 当您询问架构时,完整是更好的选择,因为模型可以看到 tests/ 即使您没有包含该目录,该目录也存在。过滤效果更好,当您 希望模型的关注范围狭窄,别无其他。

留在上下文窗口内

生成的输出带有真实的令牌计数,由 gpt-tokenizer 图书馆 而不是字符除以四的猜测。在粘贴之前根据您的模型检查它。这是一个 比粘贴、等待和获取长度错误要好得多的工作流程。

关于发送多少的粗略指导。发送 整个项目 当它足够小 舒适地贴合,你的问题是架构性的——“身份验证实际上在哪里得到执行”, “如果我更改此接口会破坏什么”,“解释从请求到数据库的数据流”。的 模型需要完整的图片来诚实地回答这些问题,而部分转储会产生自信的猜测 关于它从未见过的文件。

发送一个 切片 当问题是本地问题时——一个模块加上涵盖它的测试, 加上它导入的两个或三个文件。较小的上下文意味着更清晰的答案和更少的漂移,并且 通常,从 5,000 个精心挑选的令牌中获得比 200,000 个不加选择的令牌更好的结果。

莫诺回购 需要一种深思熟虑的方法。不要转换存储库根目录。转换一个包 一次,如果该包依赖于共享的内部库,请包括该库的公共 表面在它旁边。如果您需要跨包上下文,一个好技巧是运行两次传递:一次完整传递 几乎没有选择任何文件的树 - 这为模型提供了一个地图 - 然后是第二个文件密集型传递 您实际使用的包。

为什么不直接跑 cat 或者外壳脚本?

公平的问题,有时诚实的答案是你应该这样做。如果你想要三个已知文件 联合起来, cat auth.py models.py routes.py > out.txt 比打开一个更快 浏览器。没有人试图说服你不要这么做。

当你把它瞄准整个项目的时候,它就停止了回报。运行 find . -type f -exec cat {} + 在真实的回购协议上,你会得到以下结果:

  • 源代码中间的二进制文件。 PNG、字体、编译对象、杂散 SQLite 固定装置 — 所有这些都被解码为文本,所有这些都是 mojibake。然后你开始维护一个 扩展程序白名单。
  • 整个依赖树。 node_modules, .venv, vendor, target,以及内容 .git 本身。排除 这意味着编写修剪表达式并使其在您从事的每个项目中保持最新状态。 在这里,你的 .gitignore 已经准确描述了这一点,包括嵌套文件,并且它 为您申请。
  • 不知道它有多大。 连接给你的是字节,而不是标记,并且除法 四个字符是一个在两个方向上都是错误的猜测。当你发现它不适合时 模型拒绝它。
  • 选择性控制会花费更多的脚本。 “下面的一切 src 除了 生成的 API 客户端,加上根目录下的两个配置文件”是另一个标志,另一个 正则表达式。复选框树只需单击大约四次即可完成此操作。
  • 上面没有地图。 原始串联是没有结构标题的文本墙, 因此模型无法判断一个文件在哪里结束以及下一个文件在哪里开始,或者项目的布局是什么 看起来像。路径分隔的部分和目录树是使转储清晰易读的主要因素。

所有这些都是可建造的,并且很多人已经建造了它。这是一个下午的脚本编写,然后是 您维护的小工具。交易是你想要脚本还是输出。

人们实际上用它做什么

  • 您刚刚继承的代码库。 有人离开,现在4万线服务 你的。转换它,粘贴它,并询问入口点、主要抽象和三个 最让新维护者感到惊讶的事情。这是比任何移交更快的定位 您将获得的文件。
  • 来自真实来源的文档。 自述文件会腐烂,因为它们只写一次。生成 它们来自现在存在的代码——架构概述、模块摘要、准确的 应用程序实际读取的环境变量列表。
  • 测试未测试的代码。 包含该模块以及一个现有的测试文件作为一种样式 参考。该模型与您的框架、您的命名、您的夹具模式相匹配,而不是 发明一个你不使用的测试约定。
  • 迁移和重构规划。 类组件到钩子,JavaScript 到 TypeScript,一种 ORM 到另一种。可以看到每个呼叫站点的模型为您提供了一个真正的计划,而不是 比通用清单。
  • RAG 和嵌入。 具有路径分隔部分的单个干净文本文件是 直接对这些分隔符进行分块并推入向量存储中。

完成后,将输出复制到剪贴板或将其下载为 .txt 文件——价值 如果您要在多个对话中重复使用相同的上下文,请保留。

代码只是上下文的一半

关于项目的大多数实际问题还涉及非源文件的内容。该规范位于 PDF、JSON 文件中的架构、XML 中的配置、CSV 中的数据。分别转换它们并 将它们粘贴到代码库转储旁边: PDF 至 Markdown 对于规格和 供应商文档, 文字到 Markdown 为了 需求文档, JSON 到 Markdown 用于API 有效负载和模式, XML 到 Markdown 为了遗产 配置, CSV 到 Markdown 样品 数据,以及 HTML 到 Markdown 对于导出的页面。如果您不想选择格式, File2Txt 接受你扔的任何东西 在它。

常见问题解答

如何将文件夹转换为文本文件?

选择上面的目录,您将获得其树作为复选框列表。勾选所需的文件并导出单个文本文件 - 首先是目录结构,然后是标题下的每个文件及其路径。免费,无需注册,无需安装。

我的代码是否上传到服务器?

不。这个管道中根本没有服务器。该文件夹在浏览器中读取,输出在浏览器中组装,并且没有任何内容穿过网络 - 您可以打开开发工具并观看,或者在页面加载后断开与互联网的连接,它仍然可以工作。这就是这个和那个的区别 GitHub 转换器,它必须调用 API。

在线转换公司代码库安全吗?

此页面是用机制而不是承诺来回答该问题的版本:文件永远不会离开机器,因此没有什么可以信任我们的。仍然重要的是您下一步要做什么 - 将输出粘贴到托管模型中,将其发送给该提供商,因此在执行之前检查您组织的策略并删除机密。

我可以转换整个项目(包括子文件夹)吗?

是的,整棵树都会被遍历,并且每个级别都是可选的。取消选择文件夹会一键删除其下的所有内容,这就是您删除的方式 node_modules.git 无需通过儿童进行狩猎。令牌计数器会随着您的操作而更新,因此您可以立即看到效果。

哪些浏览器可以选择整个文件夹?

文件夹选择使用 Chrome、Edge、Firefox 和 Safari 多年来都支持的目录上传属性,因此任何当前的桌面浏览器都可以使用。移动浏览器是一个差距——iOS 和 Android 都没有公开文件夹选择器。在手机上,压缩目录并使用 压缩为文本 相反。

文件大小限制是多少?

没有上传功能,因此没有上传限制 - 限制是您机器的内存以及之后您可以在任何地方粘贴的有用文本量。实际上,令牌计数器早在浏览器之前就成为了真正的限制。一旦取消选择依赖项,有用源在兆字节以下的存储库就可以覆盖大多数项目。

工具包的其余部分

如果代码是托管的而不是本地的, GitHub 到文本转换器GitLab 到文本转换器 做同样的事情 针对远程存储库的作业,包括带有令牌的私有存储库。仅适用于文档 存在于网络上, Web2Txt 刮伤一个 URL 到干净的 Markdown — 将抓取的 API 参考与本地源和编码助手配对 可以同时看到双方。

如果您想进一步了解,博客上还写了更多内容: 将代码库转换为 LLM-ready 文件, 的演练 文件夹到文本转换器, 指南 将整个存储库输入人工智能, 和将军 文件到文本转换指南 对于所有非代码的东西。

Repo2Txt 由以下人员构建和维护 v12hero, 一位独立开发人员,构建隐私优先的本机和网络应用程序。