GitLab 存储库到文本:您的 LLM 可以实际读取的一个文件
将代码一次一个文件粘贴到聊天窗口中是花费一个下午的糟糕方法。型号 用项目的钥匙孔视图来回答每个问题,你不得不说“等等,这是 它导入的其他文件”,当上下文完成时,对话已经偏离了方向。 这个修复是无聊而有效的:预先给它存储库的整个相关部分,在一个 文本块。
这就是这个页面的作用。这是从 GitLab 存储库到 LLM 上下文的最短路径:粘贴
https://gitlab.com/... 项目 URL,该工具读取
通过 GitLab 的 API 存储库树,您将获得每个文件的复选框树。勾选重要的事情,
取消勾选没有的,点击生成。输出一个目录映射,后跟文件的完整内容
您选择了,并带有令牌计数,以便您知道它是否合适。复制它,以文本形式下载,或者抓取
所选文件为 ZIP。
粘贴您已经查看的 URL
没有要查找的项目 ID,也没有单独的命名空间字段。从浏览器的 URL 中复制 URL
地址栏并将其粘贴进去。嵌套子组起作用 - GitLab 将项目埋藏三四个的习惯
深层次 company/platform/services/billing 已处理,因为项目路径
在到达 API 之前进行 URL 编码。
如果您复制的 URL 包含分支或标签,则使用该引用。如果只是裸露的项目 URL,
项目的默认分支是自动解析的,所以你不需要记住这个特定的分支是否是
回购协议已确定 main, master, 或 develop。树已获取
递归和分页,这比听起来更重要——大量 GitLab monorepos 运行到
数千个文件,一个未分页的请求就会悄悄地给你一个被截断的项目。
私人项目以及您的代币的具体去向
公共项目不需要任何东西。对于私人访问令牌,请添加 GitLab 个人访问令牌,并将其作为
PRIVATE-TOKEN 请求头
GitLab 的 API。
将令牌粘贴到网络工具中时保持谨慎是正确的本能,所以这里是简单的版本:
该令牌存储在您的浏览器中 localStorage 且仅用于调用
gitlab.com 直接从您的浏览器。它不会发送到我们的任何服务器,因为
请求不会通过其中之一进行路由。
只读范围就足够了 - read_api 或 read_repository。别递给它
写访问它永远不会使用,并在您处于令牌屏幕时设置到期时间。也值得
甚至为公共存储库添加令牌:对 GitLab API 的未经身份验证的调用受到速率限制,因此如果
您正在拉取一个大型项目或重新运行相同的转换几次,这是一个经过身份验证的请求
是顺利获取和错误之墙之间的区别。
自我管理GitLab:诚实的答案
该工具与 gitlab.com 并且只有 gitlab.com。没有自定义字段
实例 URL,并粘贴 gitlab.yourcompany.internal 行不通的。如果您使用的是自托管
或自我管理的实例,这是一个直接的否定。
好消息是,对于自我管理实例来说,更好的答案永远不是 API 调用。克隆 存储库 - 您已经拥有凭据 - 并指向 本地目录转换器 在文件夹中。 它通过浏览器的文件 API 读取文件,因此不会上传任何内容,也不会离开您的计算机。 对于位于公司防火墙后面的私有实例,这是您的安全团队将使用的版本 已要求不管。相同的复选框树、相同的输出、相同的标记计数。它还需要一个 ZIP 如果 您宁愿导出存档而不是克隆。
选择什么,放弃什么
一切都从检查开始,这对于几乎每个实际项目来说都是错误的选择。当本能 将 GitLab 存储库转换为文本就是将其全部转换为文本;抵制那个。一个有用的回购转储 是一个策划的——你花在生成噪声上的代币预算是模型不会花在你的噪声上的预算 实际代码。首先取消勾选这些:
- 供应和安装的依赖项 —
node_modules,vendor,.venv,从包注册表签入的任何内容。该模型已经知道 Express 是什么 看起来像。 - 锁文件。
package-lock.json,yarn.lock,poetry.lock,Gemfile.lock。一个锁文件可以是数万个令牌 哈希值和版本引脚无法回答任何人提出的问题。保留清单,放下锁。 - 构建输出并缩小资产 —
dist,build,.next、编译包、源映射。这是你自己的代码,以一种任何人都无法做到的形式重述 原因. - 快照和固定装置。 大型测试装置和快照文件是重复的 设计。几个有代表性的人击败了全部四百名。
- 主要是迁移。 具有六年增量迁移的模式目录是 仅当问题涉及移民历史本身时才值得包括在内。
保留解释意图的东西:源文件、自述文件、清单和
.gitlab-ci.yml。最后一个是真正的 GitLab 风格的技巧 — CI 配置位于何处
构建步骤、测试命令、部署目标和环境假设都集中在一处。包括它
并且模型可以回答“为什么这在 CI 中失败但在本地通过”而不是猜测。
目录视图切换是另一半。切换到 满,输出包括
完整的存储库结构,并标记了您选择的文件,因此模型可以看到
payments 即使你没有包含它,模块仍然存在——有用的上下文,便宜的令牌。
切换到 已过滤,仅显示您选择的内容。完整通常是更好的默认值
当您从单一存储库中选择一项服务时;当您发送有针对性的内容时,过滤会更整洁
少数文件。
这实际上是擅长的工作
- 登陆一个陌生的项目。 选择源目录、README 和 CI 配置,然后询问入口点以及请求到达后流向的位置。 二十分钟的定向,压缩为一个提示。
- 检查合并请求及其周围环境。 diff 告诉您发生了什么变化;它 没有告诉您还有什么调用更改的函数。导出触及的目录及其 邻居,将差异粘贴到它旁边,您会得到有关后果的评论意见,而不是 风格。
- 编写没人写的文档。 输入模块并索要 README, 架构说明,或与代码现有约定相匹配的文档字符串,而不是发明 新的。
- 生成测试。 包括该模块以及两个或三个现有测试文件。的 第二部分是使输出可用的部分——模型复制你的装置、命名和断言 风格而不是生产不适合套件的东西。
- 迁移和升级工作。 框架版本颠簸、语言重写、交换 ORM。这些需要整个代码库的可见性来捕获每个调用站点,这正是单个 文本导出为您提供。
- 审计。 询问秘密在哪里被读取,哪些端点跳过身份验证,或者什么仍然命中 已弃用的内部 API。像这样广泛的问题是逐个文件无法回答的。
在其中的大多数中,有趣的部分是一个服务目录而不是整个组。选择那个
子树,保留其余部分,并在粘贴之前检查令牌计数 - 它是使用
gpt-tokenizer 库,因此这是一个真实的计数,您可以与模型的上下文进行比较
窗口而不是猜测。无论您导出 AI 审核通过的 GitLab 代码还是导出 GitLab 代码,输出都是相同的
将 GitLab 项目转换为 ChatGPT、Claude 或 Gemini 的文本文件 — 一个文件,您可以读取它
在您发送之前。
代码旁边的文件
存储库不仅仅是源文件。配置、模式、种子数据和规范一起提交,并且 其中一些在原始转储时读起来很糟糕。结构化格式更适合 Markdown: JSON 到 Markdown 对于配置和 API 有效负载, XML 到 Markdown 为了 从未消失的 Maven、Android 和遗留 SOAP 文件, CSV 到 Markdown 对于种子数据和 出口,以及 HTML 到 Markdown 为了 模板和生成的文档。规格作为 PDF 也转换,并且 ZIP 存档 可以直接压扁 进入文本。 File2Txt 处理批次 如果您不想选择页面。
常见问题解答
如何将 GitLab 存储库转换为文本文件?
粘贴上面的项目 URL,文件树将作为复选框列表加载。选择所需的文件并导出一个文本文件,其中目录结构位于顶部,每个文件位于下方,以其路径为开头。免费,无需安装,无需注册。
它可以与自托管 GitLab 一起使用吗?
自我管理实例公开与 gitlab.com 相同的 REST API,因此可访问实例的行为方式相同。问题是网络访问——企业 VPN 或专用网络后面的实例无法从浏览器选项卡访问,并且任何令牌都不会改变这一点。对于这些,克隆项目并使用 本地文件夹转换器。
如何转换私有 GitLab 项目?
提供个人访问令牌 read_repository 范围。在“首选项”→“访问令牌”下创建它,为其指定覆盖您的会话的最短到期时间,然后将其删除。只读就是所有这些需求——具有写入或 API 范围范围的令牌比任务所需的暴露更多。
为什么使用它而不是克隆存储库?
克隆会给你带来一棵工作树,但它的形状不适合这项工作。模型想要的是一份包含结构和内容的文档,并且去除了噪音。克隆还会提取完整的历史记录和每个依赖项——通常比您实际想要推理的源多得多的字节。
它是否处理子组和嵌套项目路径?
是的。 GitLab 的嵌套组结构意味着项目路径可以深入多个段,并且完整路径是标识项目的内容 - 从浏览器地址栏中粘贴完整的 URL,而不是手动组装,查找就会正确解析。
我可以转换合并请求差异而不是整个项目吗?
不是来自此页面 - 它适用于给定引用的存储库树。对于审核工作,通常的模式是转换合并请求涉及的文件,将其粘贴为上下文,然后将差异本身粘贴到下面。模型需要周围的代码来判断更改,而 diff 本身很少提供它。
工具包中的其他所有内容
而是在 GitHub 上编码?的 GitHub 存储库到文本 转换器 以同样的方式工作。仅在您的计算机上,还是在您克隆的自我管理实例上?使用 的 本地目录转换器。需要的 文档站点而不是生成它的源代码? Web2Txt 将 URL 抓取到 Markdown 中。
对于这一切背后的较长争论,有一个指南 将存储库输入人工智能模型, 一对一 将代码库转换为 LLM-ready 文件, 一个 LLM 存储库转换的完整指南, 以及更广泛的内容 为 AI 工具准备文件。
Repo2Txt 由以下人员构建和维护 v12hero, 一位独立开发人员,构建隐私优先的本机和网络应用程序。