Repomix 快速入门:把整个代码仓库打包成单个 AI 友好文件
2026/9/12 7:10:26 网站建设 项目流程

Repomix 快速入门:把整个代码仓库打包成单个 AI 友好文件

【免费下载链接】repomix📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.项目地址: https://gitcode.com/GitHub_Trending/rep/repomix

Repomix 是一款把整个代码仓库打包成单个 AI 友好文件的命令行工具,专为向 ChatGPT、Claude、Gemini、Grok、DeepSeek、Perplexity、Gemma、Llama 等大语言模型(LLM)投喂代码上下文而设计。读完本文,你将掌握 Repomix 的安装、快速上手、核心特性与高频 CLI 用法,并了解其打包流水线在源码层面的实现原理,可直接把整个仓库"喂"给任意 AI 助手做重构评审、缺陷排查与文档生成。

Repomix 是什么,为什么要用它

Repomix 的核心定位是解决一个真实痛点:让 LLM 理解你的代码,往往需要在多个文件间来回翻找、手动复制粘贴,既费时又容易遗漏关键上下文。Repomix 将整个仓库合并为单一文件,把完整代码库作为上下文一次性交给 AI,让分析更快、结果通常也更准确。

从源码结构看,项目的核心入口在 src/index.ts:对外导出pack(核心打包函数)、collectFiles(文件收集)、searchFiles(文件搜索)、runSecurityCheck(安全检测)、TokenCounter(Token 计数)、loadFileConfig/mergeConfigs(配置加载)等能力,CLI 入口runCli也由此导出。这意味着 Repomix 既是一个开箱即用的 CLI,也是一套可编程调用的打包库。

Repomix 的典型适用场景包括:

  • 实现规划:让 AI 基于完整代码库输出改动方案;
  • 缺陷排查:AI 在完整上下文中定位 bug 根因;
  • 第三方库安全检查:把依赖源码喂给 AI 做审计;
  • 文档生成:基于真实代码结构自动撰写说明文档。

快速开始:一条命令打包整个仓库

在项目目录中直接执行:

npx repomix@latest

npx会自动下载并运行最新版 Repomix,无需预先安装。命令执行完成后,当前目录会生成repomix-output.xml——整个仓库以 AI 友好的 XML 格式被合并进这一个文件(默认输出文件名与格式的映射关系定义在 src/config/configSchema.ts 的defaultFilePathMap中:xml →repomix-output.xml、markdown →repomix-output.md、plain →repomix-output.txt、json →repomix-output.json)。

接下来,把该文件发送给 AI 助手,并配上类似这样的提示词:

该文件包含合并为一个文件后的仓库全部内容。 我想重构代码,请先全面评审。

AI 会分析整个代码库并给出整体洞察:

讨论具体改动时,AI 可以结合完整上下文直接生成代码;配合 Claude 的 Artifacts 等能力,你甚至能一次性拿到多个相互依赖的文件:

核心特性

Repomix 的五大核心特性各有对应的源码实现支撑:

  • AI 优化的输出格式:将代码库组织为便于 AI 解析的结构化文本。输出样式由 src/core/output/outputStyles/ 下的markdownStyle.tsplainStyle.tsxmlStyle.ts分别实现,可在 XML、Markdown、JSON、纯文本间切换;
  • Token 计数:跟踪 token 用量,帮助估算 LLM 上下文窗口占用。实现位于 src/core/metrics/TokenCounter.ts,通过tokenCount.encoding配置可切换不同分词模型(默认o200k_base,对应 GPT-4o);
  • Git 感知:默认尊重.gitignore.git/info/exclude规则,配合--no-gitignore--no-dot-ignore等开关可调整过滤行为(见 src/cli/cliRun.ts 中 File Selection Options 分组);
  • 安全优先:基于 Secretlint 检测 API 密钥、密码等敏感信息(详见下文"安全检测"小节);
  • 多种输出格式:纯文本(plain)、XML、Markdown,以及 JSON。

安装方式

根据使用习惯可选多种安装方式(详见 安装指南):

使用 npx(免安装,最快上手)

npx repomix@latest

全局安装

# npm npm install -g repomix # yarn yarn global add repomix # pnpm pnpm add -g repomix # bun bun add -g repomix # Homebrew brew install repomix

使用 Docker

docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix

验证安装

repomix --version

从根目录 package.json 可以看到,项目声明了node >= 22.0.0的运行环境要求,并同时维护了 Node 与 Bun 两条构建/基准测试脚本(buildtime-nodetime-bun),说明 CLI 在 Node 生态内通用。

常用命令行用法

以下高频用法均来自 印尼语使用指南,并结合 src/cli/cliRun.ts 中的实际 CLI 定义逐一核对。

打包指定目录

repomix path/to/directory

只包含指定文件

使用 glob 模式:

repomix --include "src/**/*.ts,**/*.md"

排除指定文件

repomix --ignore "**/*.log,tmp/"

将输出拆分为多个文件

大代码库的打包输出可能超出某些 AI 工具的单文件大小上限(例如 Google AI Studio 的 1MB 限制)。使用--split-output自动拆分:

repomix --split-output 1mb

生成带编号的文件:

  • repomix-output.1.xml
  • repomix-output.2.xml
  • repomix-output.3.xml

尺寸支持500kb1mb2mb1.5mb等十进制数值(CLI 中通过parseHumanSizeToBytes解析,见 src/cli/cliRun.ts)。需要说明的是:文件按顶层目录分组以保持上下文完整,单个文件或目录绝不会被切分到多个输出文件中。

打包远程仓库

# 使用 GitHub URL repomix --remote https://github.com/user/repo # 使用 owner/repo 简写 repomix --remote user/repo # 省略 --remote(自动检测) repomix user/repo # 指定 branch/tag/commit repomix --remote user/repo --remote-branch main repomix --remote user/repo --remote-branch 935b695

关于简写自动检测,src/cli/cliRun.ts 的实现值得注意:当位置参数形如owner/repo且本地不存在该路径时,会先通过git ls-remote探测 GitHub 上是否真实存在该仓库,只有探测成功才走远程打包分支,避免把拼错的本地路径误判为远程仓库。

通过 stdin 输入文件列表

--stdin允许你把文件路径列表管道给 Repomix,获得最大的文件选择灵活性:

# find 查找 find src -name "*.ts" -type f | repomix --stdin # git 跟踪文件 git ls-files "*.ts" | repomix --stdin # ripgrep 查找文件 rg --files --type ts | repomix --stdin # grep 按内容筛选 grep -l "TODO" **/*.ts | repomix --stdin # fd 查找 fd -e ts | repomix --stdin # fzf 交互选择 fzf -m | repomix --stdin # 从文件列表文件读取 cat file-list.txt | repomix --stdin # 直接 echo 输入 echo -e "src/index.ts\nsrc/utils.ts" | repomix --stdin

使用--stdin时,指定的文件会被视为追加到 include 模式中,因此 include/ignore 的既有规则依然生效(例如命中了 ignore 模式的 stdin 文件仍会被排除);文件路径支持相对或绝对路径,Repomix 会自动处理路径解析与去重。

代码压缩

在保留代码结构的同时减少 token 数量:

repomix --compress # 也可与远程仓库配合 repomix --remote yamadashy/repomix --compress

从 src/cli/cliRun.ts 的选项说明看,--compress使用 Tree-sitter 解析提取类、函数、接口等核心结构(对应 src/core/treeSitter/ 下的解析策略目录),详见 代码压缩指南。

Git 集成

为 AI 分析补充开发上下文:

# 包含 git diff(未提交的改动) repomix --include-diffs # 包含 git 提交日志(默认最近 50 条) repomix --include-logs # 指定提交数量 repomix --include-logs --include-logs-count 10 # 同时包含 diff 与日志 repomix --include-diffs --include-logs

这些信息为 AI 提供了:

  • 近期改动:git diff 展示未提交的修改;
  • 开发模式:git log 揭示哪些文件通常一起变更;
  • 提交历史:最近的提交信息反映开发重点;
  • 文件关联:理解同一提交中共同修改的文件。

Token 分布可视化

--token-count-tree可查看整个项目的 token 分布:

repomix --token-count-tree

输出示例:

🔢 Token Count Tree: ──────────────────── └── src/ (70,925 tokens) ├── cli/ (12,714 tokens) │ ├── actions/ (7,546 tokens) │ └── reporters/ (990 tokens) └── core/ (41,600 tokens) ├── file/ (10,098 tokens) └── output/ (5,808 tokens)

还可以设置最小 token 阈值,只关注大文件:

repomix --token-count-tree 1000 # 只显示 token 数 ≥ 1000 的文件/目录

从源码看,这一功能与打包流水线深度集成:pack()在文件搜索阶段之后即启动指标 worker 池预初始化(见 src/core/packager.ts),Token 统计基于tokenCount.encoding指定的分词模型计算,结果还支持按目录汇总并持久化 token 计数缓存以加速后续运行。

输出格式选择

# XML(默认) repomix --style xml # Markdown repomix --style markdown # JSON repomix --style json # 纯文本 repomix --style plain

不同格式适配不同场景:XML 结构化强、适合 Claude 等偏好结构化解析的模型;Markdown 适合 ChatGPT 会话中的可读性;JSON 适合自动化处理;纯文本兼容性最好。完整对比见 输出格式指南。

其他实用选项

# 移除代码注释(支持语言列表见注释移除指南) repomix --remove-comments # 输出中显示行号 repomix --output-show-line-numbers # 复制到剪贴板 repomix --copy # 关闭安全检查(一般不建议) repomix --no-security-check

完整 CLI 参考见 命令行选项指南。

配置文件初始化

需要可重复、项目级的配置时,可初始化配置文件:

repomix --init

这将生成repomix.config.json。从 src/config/configSchema.ts 的 valibot schema 可以看到配置文件覆盖的完整字段:input.maxFileSize(默认 50MB)、output.style/filePath/parsableStyle/compress/removeComments/topFilesLength(默认 5)等,以及includeignore(含useGitignoreuseDefaultPatternscustomPatterns)、security.enableSecurityChecktokenCount.encoding等分组。详细说明见 配置指南。

安全检测机制

Repomix 内置基于 Secretlint 的安全扫描,用于检测 API 密钥、密码等敏感信息。src/core/security/securityCheck.ts 展示了其实现细节:文件内容、git diff 内容与 git log 内容会合并为统一的安全检查条目,以每批 50 项的粒度分发给 worker 线程(最多 2 个安全 worker,与并行的指标 worker 池错峰),检查出的可疑文件会被自动从最终输出中过滤掉。需要说明的是,虽然 Repomix 会在打包时自动执行安全检查,但向任何 AI 服务分享私有代码前,仍建议你人工复核生成的输出。详见 安全特性指南。

底层打包流水线

要深入理解 Repomix,可以阅读 src/core/packager.ts 中pack()的主流程,它清晰地呈现了完整流水线:

  1. 文件搜索searchFiles):按 include/ignore/gitignore 规则收集文件路径,同时支持空目录记录;
  2. 路径排序sortPaths):对去重后的路径排序;
  3. 并行收集与 Git 处理collectFiles读取文件内容,同时getGitDiffs/getGitLogs通过子进程获取 Git 信息,二者互不依赖,可并行执行;
  4. 安全检查与文件处理并行:安全扫描在 worker 线程运行,文件处理(含压缩、注释移除)在主线程运行,随后过滤可疑文件;
  5. 输出生成与指标计算并行produceOutput生成并写出输出文件,calculateMetrics同时统计 token、字符数等指标;
  6. Token 缓存持久化:为后续运行加速。

整个流水线大量使用并发与缓存优化(token 计数缓存预加载、Git 排序数据预取、指标 worker 预热等),体现了对大型仓库性能的针对性设计。

下一步与社区

继续深入可阅读以下指南:

  • 安装指南:更多安装方式
  • 使用指南:基础与进阶特性
  • 输出格式:为你的 AI 模型选择最佳格式
  • 配置指南:按需定制 Repomix
  • 安全特性:了解安全检查细节
  • MCP 服务器:将 Repomix 直接集成到 AI 助手中
  • 命令行选项:完整 CLI 参数参考
  • 代码压缩:Token 压缩的详细机制
  • 注释移除:支持的语言与细节

遇到 bug 或需要帮助时,可以在 GitHub 仓库提交 issue,或加入项目的 Discord 社区与其他用户交流。

【免费下载链接】repomix📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.项目地址: https://gitcode.com/GitHub_Trending/rep/repomix

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询