将 Git 仓库转换为 LLM 就绪文本:快速指南
你想让 AI 审查你的代码库、解释一个遗留模块,或者帮你规划重构。于是你打开 ChatGPT 或 Claude,却立即遇到了一个难题:如何真正把代码输入进去?逐个文件复制粘贴太繁琐。上传 zip 文件通常帮助不大。直接指向 GitHub URL 通常也无法为聊天模型提供足够有用的上下文。
答案是将你的 Git 仓库转换为 LLM 就绪的代码库——一个单一的、结构化的文本表示,可以整齐地放入提示词中。
核心要点
- 在大多数聊天界面中,LLM 无法直接检查仓库,因此代码库通常被转换为结构化的、经过过滤的文本,以适应模型的上下文窗口。
- Gitingest、Repomix 和 repo2txt 等工具通过排除噪音并将相关源文件连接成单个输出来自动化此转换过程。
- 激进的过滤——移除测试、依赖项和构建产物——可以显著减少 token 使用量并提升模型响应质量。
- 在将代码输入任何 LLM 之前,务必扫描敏感信息,无论是通过内置检查还是使用 truffleHog 等专用工具。
为什么原始仓库无法作为 LLM 输入
在正常的聊天工作流中,LLM 不会浏览文件系统或直接检查仓库。它们在具有硬性 token 限制的上下文窗口内读取文本。一个典型的 JavaScript 项目可能包含数百个文件,但其中大多数——node_modules、锁文件、构建产物、source map——都是噪音。将所有这些内容输入模型会浪费 token,模糊信号,并且往往完全超出限制。
模型真正需要的是选择性的、结构化的文本:相关的源文件,清晰组织,具有足够的上下文来整体推理代码。这正是 Git 仓库到提示词文本转换所产生的结果。
为 LLM 转换 Git 仓库的工具
有几个工具可以自动化此过程。以下是最实用的选项:
Gitingest 是最快的零配置选项。将任何 GitHub URL 中的 hub 替换为 ingest,你就能获得仓库的单一文本摘要,经过过滤并格式化以供 LLM 输入。它现在还支持使用个人访问令牌访问私有仓库。
Repomix 是一个 CLI 工具,可将你的代码库打包成 Markdown、XML、JSON 或纯文本。它为你提供对包含哪些文件的细粒度控制,支持自定义忽略模式,并具有内置的安全检查功能,可在生成输出前标记硬编码的敏感信息。
repo2txt 完全在浏览器中运行。粘贴 GitHub URL,选择你想要的文件,然后下载一个可直接粘贴到任何 LLM 的纯文本文件。它通过个人访问令牌支持私有仓库,该网站称代码在你的浏览器中运行。
这三个工具都遵循相同的核心模式:克隆或获取仓库,使用忽略规则过滤文件,然后将文件路径和内容连接成单个可读输出。
良好的 AI 模型仓库上下文是什么样的
一个准备充分的输出通常包括:
- 显示整体结构的目录树
- 每个文件内容前的文件路径标题
- 仅源文件——没有二进制文件、没有生成的代码、没有依赖项
================================================
FILE: src/components/Header.tsx
================================================
import React from 'react'
...
这种格式帮助模型在读取单个文件之前进行定位,这显著提高了其响应质量。
Discover how at OpenReplay.com.
转换前的实际考虑因素
激进地过滤。 对于 React 或 Next.js 项目,你可能只需要 src/、package.json,也许还有一两个配置文件。仅排除测试文件就可以明显减少 token 使用量。
首先扫描敏感信息。 在为 LLM 提示词准备代码库之前——尤其是使用第三方工具时——确保源文件中没有 API 密钥、令牌或凭据。Repomix 会自动执行此操作。对于其他工具,首先使用 git-secrets 或 truffleHog 进行快速扫描。
使输出大小与模型的上下文窗口匹配。 现代模型通常支持 100K-200K+ token 范围的上下文窗口,当你重用相同的大型代码上下文时,某些工作流还受益于提示词缓存。一个中等规模的前端仓库在过滤后通常完全在范围内。
重用你的打包上下文
一旦生成了干净的文本快照,就保存它。许多团队每个冲刺打包一次 LLM 就绪的代码库,并在多个提示词中重用它——用于代码审查、文档草稿、入职问题和架构讨论。这是实用上下文工程工作流的基础,在某些设置中,它现在与模型上下文协议和工具驱动的仓库访问等模式重叠。
结论
将完整代码库输入 LLM 不需要复杂的工具或自定义脚本。Gitingest、Repomix 和 repo2txt 等工具处理繁重的工作:过滤噪音、结构化输出,并生成适合模型上下文窗口的单个文本文件。关键是要激进地过滤、扫描敏感信息,并使输出大小与你使用的模型匹配。选择其中一个工具,在你当前的项目上运行它,看看当模型真正掌握全貌时能做什么。
常见问题
可以。Repomix 在本地工作,因此无论可见性如何,它都能处理你机器上的任何仓库。repo2txt 通过个人访问令牌支持私有 GitHub 仓库。Gitingest 现在也通过个人访问令牌支持私有仓库,尽管一些团队对于敏感代码库可能仍然更喜欢本地优先的工具。
大多数转换工具会报告生成输出的总大小。你可以通过将字符数除以大约 4(对于英文文本和代码)来估算 token 数量。现代模型通常支持 100K-200K+ token 范围的上下文窗口。如果你的输出超出限制,可以通过排除测试、配置或不太相关的模块来更激进地过滤。
这取决于模型和提供商。发送到云托管 LLM 的代码可能会被记录或保留,除非提供商明确声明不会这样做。在转换前始终扫描敏感信息,并查看提供商的数据保留政策。对于敏感代码库,考虑使用本地托管的模型。
一个好的节奏是每个冲刺一次或在任何重大合并之后。快照应该反映代码的当前状态,以便模型给出相关答案。一些团队在 CI 流水线中自动化此步骤,在每次发布或主要分支更新时生成新的文本输出。
Understand every bug
Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.