Repomix 使用指南:将整个代码仓库打包成单一 AI 友好文件,高效喂给 Claude、ChatGPT 与 Gemini
【免费下载链接】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 是当前仓库(GitHub_Trending/rep/repomix)的核心工具:它能将本地或远程的整个代码仓库压缩打包为单个XML、Markdown、JSON 或纯文本文件,专为大语言模型(LLM)消费而设计。本文将完整讲解 Repomix 的核心特性、CLI 安装与常用命令、Docker 用法、输出格式与配置文件写法,并结合仓库源码深入解释其 Secretlint 安全扫描、Git 兼容、远程仓库处理与 Token 计数等底层实现。读完你即可把 Repomix 接入自己的 AI 编码工作流,让 LLM 在完整代码上下文中完成代码审查、重构、Bug 排查与文档生成。
Repomix 是什么:为 LLM 而生的代码打包器
Repomix 是一个将整个代码库打包进单个 AI 友好文件的强大工具。无论你正在进行代码审查、重构,还是需要让 AI 助手辅助你的项目,Repomix 都能轻松地将仓库的全部上下文共享给 AI 工具(Claude、ChatGPT、Gemini、Grok 等)。
它的核心能力体现在四个设计目标上(见 首页文档 的 feature 定义):
- 为 AI 优化:将代码库格式化得易于 AI 理解与处理;
- Git 兼容:自动遵守你的
.gitignore规则; - 聚焦安全:内置集成 Secretlint,检测匹配已知凭据格式的文件并将其排除在输出之外;
- Token 计数:提供每个文件及整个仓库的 Token 数量统计,帮助你评估 LLM 上下文窗口的占用情况。
对应到源码,这四个特性分别落在 文件收集与忽略处理、Secretlint 安全检测、Token 计数 与 输出生成 等模块中。
快速开始:把代码库交给 AI 的完整流程
使用 Repomix 生成打包文件(默认repomix-output.xml)后,你可以把它发送给 AI 助手(如 ChatGPT、Claude),并附上一条这样的指令:
此文件包含仓库中的所有文件,合并为一个文件。 我想对代码进行重构,请先审查它。AI 将分析你的整个代码库并给出详细结论:
当你讨论具体修改时,AI 可以帮你生成代码。借助 Claude Artifacts 等功能,你甚至能一次性获得多个相互依赖的文件:
为什么选择 Repomix
Repomix 的优势在于:它能够与 ChatGPT、Claude、Gemini、Grok 等订阅制服务协同工作而无需顾虑成本,同时提供完整的代码库上下文,消除了逐一浏览文件的必要,让分析更快、往往也更精准。
有了完整代码库作为上下文,Repomix 可以支撑大量应用场景,包括:实现规划、Bug 调查、第三方库安全检查、文档自动生成等。
使用 CLI 工具
Repomix 可作为一个命令行工具使用,提供强大的功能与丰富的自定义选项。CLI 工具可以访问私有仓库,因为它使用的是你本地安装的 Git。
安装与快速启动
可以在项目目录中不安装、即刻体验:
npx repomix@latest或者全局安装以便重复使用:
# 使用 npm 安装 npm install -g repomix # 或使用 yarn yarn global add repomix # 或使用 bun bun add -g repomix # 或使用 Homebrew(macOS/Linux) brew install repomix # 然后在任意项目目录中运行 repomix就这么简单!Repomix 会在当前目录生成repomix-output.xml文件,其中包含整个仓库、且格式适合 AI 消费的内容。
环境前提:根据 package.json 的
engines字段,运行 Repomix 需要 Node.js >= 22.0.0(或 yarn >= 1.22.22)。
常用操作命令
打包整个仓库:
repomix打包指定目录:
repomix path/to/directory使用 glob 模式只打包特定的文件或目录(glob 语法遵循 fast-glob 规范):
repomix --include "src/**/*.ts,**/*.md"排除特定文件或目录:
repomix --ignore "**/*.log,tmp/"打包远程仓库:
# 使用缩写格式 npx repomix --remote yamadashy/repomix # 使用完整 URL(支持指定分支与路径) npx repomix --remote https://github.com/yamadashy/repomix npx repomix --remote https://github.com/yamadashy/repomix/tree/main # 使用某个 commit 的 URL npx repomix --remote https://github.com/yamadashy/repomix/commit/836abcd7335137228ad77feb28655d85712680f1初始化新的配置文件(repomix.config.json):
repomix --init生成打包文件后,即可配合 Claude、ChatGPT、Gemini 等生成式 AI 工具使用。
使用 Docker
如果你希望在隔离环境中运行,或偏好容器方式,也可以用 Docker:
基本用法(当前目录):
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix打包指定目录:
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix path/to/directory处理远程仓库并保存到output目录:
docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix --remote https://github.com/yamadashy/repomixCLI 选项的源码视角
所有 CLI 选项都在 src/cli/cliRun.ts 中使用 Commander 注册,并按“基础选项 / 输入输出选项 / 输出选项 / 文件选择选项 / 远程仓库选项 / 配置选项 / 安全选项 / Token 计数选项 / MCP / Skill 生成 / 监听模式”等分组。值得注意的细节:
--output支持-表示直接输出到 stdout;--stdout与--output互斥;--token-count-tree [threshold]可附带阈值,只显示 Token 数不低于该值的文件;--token-budget <number>是 CI/Agent 场景下的硬性守卫:当打包输出超过 N 个 Token 时以非零退出码失败;- 输入错误选项时,Repomix 会给出语义化建议(例如输入
exclude会提示--ignore、输入format会提示--style),映射表同样位于 src/cli/cliRun.ts。
选择输出格式
Repomix 支持四种输出风格,默认是 XML:
# XML 格式(默认) repomix --style xml # Markdown 格式 repomix --style markdown # JSON 格式 repomix --style json # 纯文本格式 repomix --style plain从 配置 Schema 可以看到,每种格式对应的默认输出文件名也不同:xml → repomix-output.xml、markdown → repomix-output.md、plain → repomix-output.txt、json → repomix-output.json。各格式的具体生成实现位于 输出样式模块(如 markdownStyle.ts、xmlStyle.ts 等)。
使用配置文件进行个性化定制
创建repomix.config.json可保存持久化设置:
{ "output": { "style": "markdown", "filePath": "custom-output.md", "removeComments": true, "showLineNumbers": true, "topFilesLength": 10 }, "ignore": { "customPatterns": ["*.test.ts", "docs/**"] } }配置项与默认值详解
结合 src/config/configSchema.ts 中的默认 Schema,各配置分组的含义与默认值如下:
| 配置分组 | 键 | 默认值 | 说明 |
|---|---|---|---|
input | maxFileSize | 50MB | 单个文件的大小上限(字节),超过则跳过 |
output | filePath | repomix-output.xml | 输出文件路径 |
output | style | xml | 输出格式:xml / markdown / json / plain |
output | filePathStyle | target-relative | 输出中文件路径的展示方式 |
output | removeComments | false | 打包前剥离所有代码注释 |
output | removeEmptyLines | false | 删除所有文件中的空行 |
output | compress | false | 使用 Tree-sitter 解析提取核心结构(类、函数、接口) |
output | showLineNumbers | false | 为输出中的每行添加行号前缀 |
output | topFilesLength | 5 | 摘要中展示的最大文件数量 |
output | fileSummary | true | 是否包含文件摘要部分 |
output | directoryStructure | true | 是否包含目录树可视化 |
output | git.includeDiffs | false | 添加 Git diff 区块(工作区与暂存区变更) |
output | git.includeLogs | false | 添加 Git 提交历史 |
output | git.includeLogsCount | 50 | 随--include-logs包含的最近提交数 |
include | (数组) | [] | 仅包含匹配这些 glob 模式的文件 |
ignore | useGitignore | true | 使用.gitignore规则过滤文件 |
ignore | useDotIgnore | true | 使用.ignore规则过滤文件 |
ignore | useDefaultPatterns | true | 应用内置忽略模式(node_modules、.git、构建目录等) |
ignore | customPatterns | [] | 额外的自定义排除模式 |
security | enableSecurityCheck | true | 是否扫描 API 密钥、密码等敏感数据 |
tokenCount | encoding | o200k_base | Token 计数的分词器模型(如cl100k_base对应 GPT-3.5/4) |
仓库根目录下现成的 repomix.config.json 就是一份真实配置示例,你可以对照它理解每个字段的写法——它开启了git.includeDiffs、git.includeLogs,并设置了instructionFilePath(自定义指令文件,见 repomix-instruction.md)与headerText(输出头部自定义文本)。
自定义指令与输出结构控制
除上述字段外,CLI 与配置还支持更多输出控制能力:
headerText:在输出开头加入自定义文本(如仓库背景说明、使用注意事项);instructionFilePath:指向一个包含自定义指令的文件,指令会被包含进输出,引导 AI 如何理解代码库;--no-file-summary/--no-directory-structure/--no-files:分别省略文件摘要、目录树、或只生成元数据(适合仓库分析场景);--include-full-directory-structure:即使使用了--include过滤,也在“目录结构”部分展示完整仓库树;--parsable-style:当输出中的代码破坏格式时,转义特殊字符以保证 XML/Markdown 合法;--split-output <size>:按大小(如500kb、2mb)将输出拆分为多个编号文件(repomix-output.1.xml、repomix-output.2.xml);--include-empty-directories:在目录结构中包含空文件夹。
内置安全机制:Secretlint 凭据扫描
Repomix 默认开启安全扫描(对应配置security.enableSecurityCheck: true)。它的实现是:在打包前将每个文件的文本内容交给 Secretlint 进行规则匹配,凡是命中已知凭据格式(如 API Key、密码)的文件都会被标记为可疑并从输出中排除。
从源码看,src/core/security/securityCheck.ts 会把普通文件、Git diff 内容、Git log 历史三类内容统一成SecurityCheckItem,以 50 个为一批分发到 worker 线程并行扫描(最多 2 个安全 worker,见 securityCheck.ts)。真正的匹配逻辑位于 securityCheckWorker.ts:它加载@secretlint/secretlint-rule-preset-recommend规则集,对每个文件执行lintSource,一旦产生 message 即返回可疑结果——注意日志中不会输出具体 message,以防泄露敏感信息本身(见 securityCheckWorker.ts)。
远程仓库处理的底层原理
当使用--remote时,remoteAction.ts 会先在临时目录获取仓库,再对其执行常规打包流程。获取策略有两条路径:
- GitHub 归档下载优先:对于 GitHub 仓库且支持归档下载时,优先通过归档 API 下载(带 60 秒超时与 2 次重试,进度实时显示百分比或已下载 MB),失败后自动回退到 Git clone;
- Git clone 兜底:非 GitHub 仓库或归档下载失败时,使用本机 Git 做浅克隆(需要 Git 已安装且在 PATH 中),并支持通过
--remote-branch指定分支、标签或 commit。
处理完成后,输出文件会被复制回当前目录,临时目录随即清理(见 remoteAction.ts)。出于安全考虑,远程模式下--config必须使用绝对路径,避免从克隆下来的仓库加载未审阅的配置;远程仓库自带的配置文件默认不被信任,只有在交互终端确认(或显式传入--remote-trust-config)后才会加载。
真实用例
社区中已有开发者将 Repomix 应用在实际工作流中,以下是文档记载的两类典型场景:
- LLM 代码生成工作流:开发者使用 Repomix 从现有代码库提取代码上下文,再借助 Claude、Aider 等 LLM 进行增量改进、代码审查与文档自动化生成;
- 为 LLM 制作“知识包”:作者将博客、文档和书籍等原创内容用 Repomix 打包成 LLM 兼容格式,让读者通过 AI 驱动的问答系统与其经验进行交互。
更多场景可阅读 用例指南。
进阶用户指南
Repomix 为高级用例提供了大量强大功能,以下是官网首页重点推荐的进阶路线:
- MCP Server 指南 —— 集成 Model Context Protocol,让 AI 助手直接调用打包能力;
- GitHub Actions 指南 —— 在 CI/CD 工作流中自动化打包代码库;
- 代码压缩指南 —— 基于 Tree-sitter 的智能压缩,可减少约 70% 的 Token;
- 作为库使用 —— 在 Node.js 应用中集成 Repomix;
- 自定义指令指南 —— 向输出中添加自定义提示词与指令;
- 安全功能指南 —— 深入了解内置 Secretlint 集成与安全检查;
- 最佳实践指南 —— 用经过验证的策略优化你的 AI 工作流。
如果还需要更多帮助,可以查阅完整的 指南索引(含安装、命令行选项、远程仓库处理、监听模式等全部章节),或直接阅读仓库内的 README.md 与 官方 CLAUDE.md 获取更多示例与源码说明。
【免费下载链接】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),仅供参考