yamadashy/repomix · 上手攻略
- 仓库:yamadashy/repomix
- 链接:https://github.com/yamadashy/repomix
- 分类:ai
- 作者:Jay
- 更新:2026-07-08
这是什么
Repomix 是一款将整个代码仓库打包为单个 AI 友好文件的工具(MIT 协议,TypeScript),Stars 26956,周增+140。它解决的核心问题是:当你需要把一个完整项目喂给 LLM(如 Claude、ChatGPT、DeepSeek)时,如何高效、结构化地传递所有代码,同时控制 token 用量、规避敏感信息泄露。
输出格式支持 XML(默认)、Markdown、JSON 三种,内含文件摘要、目录结构、分文件内容和自定义指令区域,AI 读取后能清晰理解项目全貌。
解决什么问题
- LLM context 溢出:大型项目动辄数万 token,直接复制粘贴会超出上下文窗口,Repomix 用压缩和结构化输出大幅提升效率。
- 手动复制易遗漏:人工复制文件容易漏掉关键文件或误操作,Repomix 自动扫描尊重
.gitignore等规则。 - 敏感信息泄露:内置 Secretlint 安全检查,运行后自动检测是否包含 API Key、Token 等敏感内容。
- 远程仓库无法 clone:可直接处理 GitHub URL,无需本地 clone 即可打包任意公开仓库。
- Token 用量可视化:输出包含每个文件及总体的 token 计数,便于在喂给 LLM 前估算成本。
- 代码压缩(Tree-sitter):
--compress选项使用 Tree-sitter 提取关键代码元素,减少 token 但保留结构,对大仓库效果显著。
快速安装
npx 免安装(最快捷)
npx repomix@latest
无需预先安装,在任意项目目录直接运行,生成 repomix-output.xml。
全局安装
# npm
npm install -g repomix
# yarn
yarn global add repomix
# bun
bun add -g repomix
# Homebrew (macOS/Linux)
brew install repomix
安装后全局可用 repomix 命令。
Docker 方式
# 打包当前目录
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix
# 打包远程仓库,输出到本地 output 目录
docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix \
--remote https://github.com/yamadashy/repomix
在线使用
访问 https://repomix.com,无需安装,直接输入仓库地址即可使用,适合临时查看公开项目。
核心用法
基础打包
# 打包整个仓库(当前目录)
repomix
# 打包指定目录
repomix path/to/directory
# 打包指定文件(glob 模式)
repomix --include "src/**/*.ts,**/*.md"
排除文件
# 排除特定文件或目录
repomix --ignore "**/*.log,tmp/,node_modules/"
Repomix 默认尊重 .gitignore、.ignore 和 .repomixignore 文件规则。
远程仓库打包
# GitHub 简写
repomix --remote yamadashy/repomix
# 指定分支
repomix --remote https://github.com/yamadashy/repomix --remote-branch main
# 指定 commit
repomix --remote https://github.com/yamadashy/repomix --remote-branch 935b695
管道输入(stdin)
# 用 find 筛选文件
find src -name "*.ts" -type f | repomix --stdin
# 用 git ls-files 取得已跟踪的 TypeScript 文件
git ls-files "*.ts" | repomix --stdin
# 用 ripgrep 搜索包含 TODO 的文件
rg -l "TODO|FIXME" --type ts | repomix --stdin
# 用 fzf 交互式选择
find . -name "*.ts" | fzf -m | repomix --stdin
--stdin 接收文件路径列表,与 --include 行为合并,忽略规则仍然生效。
输出格式
# XML 格式(默认)
repomix
# Markdown 格式
repomix --style markdown
# JSON 格式
repomix --style json
代码压缩(Tree-sitter)
repomix --compress
# 结合远程仓库
repomix --remote yamadashy/repomix --compress
压缩模式对大仓库(>100 文件)效果明显,token 减少约 40-60%。
包含 Git Log
# 默认 50 条 commit
repomix --include-logs
# 指定 commit 数量
repomix --include-logs --include-logs-count 10
# 包含文件 diff
repomix --include-logs --include-diffs
初始化配置文件
repomix --init
生成 repomix.config.json,可预设常用参数、输出格式、忽略规则等。
配置 AI 指令
在配置文件中指定 output.instructionFilePath,可在输出末尾注入自定义提示词:
{
"output": {
"instructionFilePath": "./ai-instructions.txt"
}
}
AI 读取时会看到这段指令,可引导 AI 按特定方式分析代码。
典型使用场景
| 场景 | 怎么用 |
|---|---|
| 让 LLM 做代码审查 | repomix 后发给 Claude:"请审查整体结构并提出改进建议" |
| 生成项目文档 | 打包后让 LLM 基于代码生成 README、API 文档 |
| 生成单元测试 | 让 AI 分析主要函数并生成测试用例 |
| 理解陌生项目 | clone 不下来时直接 repomix --remote 快速了解全貌 |
| 迁移/重构辅助 | 打包后让 AI 分析依赖关系、提出重构方案 |
| 代码风格审查 | 让 AI 检查是否符合最佳实践、提出改进点 |
| Codebase Q&A | 将整个项目喂给 LLM,进行架构层面的问答 |
坑与注意
-
Token 上限依然存在:Repomix 负责打包,但 LLM 上下文窗口仍有限。对于极大仓库(>1000 文件),建议先用
--include筛选关键模块,或使用--compress压缩。 -
敏感信息只是提示,非完全过滤:Secretlint 检测到敏感内容时会报警,但不会自动删除。运行后务必检查输出文件,发现 API Key 等内容手动处理后再发给 LLM。
-
.repomixignore是独立规则:除了.gitignore外,Repomix 还有自己的忽略文件.repomixignore,需单独维护。 -
隐私仓库不要直接用在线版:repomix.com 会处理你的代码,上传前确认仓库隐私级别。对于私有代码,用
npm install -g repomix本地运行更安全。 -
Tree-sitter 依赖:代码压缩依赖 Tree-sitter,部分语言支持可能不完整,极少数情况下压缩后语义可能略有差异。
-
输出文件命名固定:默认生成
repomix-output.xml(或对应格式),不会自动覆盖已有文件,再次运行前需删除旧文件或指定其他路径。 -
Windows 路径问题:在 Windows 上使用
--stdin时注意换行符差异,建议用 Git Bash 或 WSL。 -
中文项目名/路径:实测对中文路径支持良好,但建议用英文项目名避免潜在问题。
与同类对比
| 工具 | 核心定位 | 输出格式 | Token 控制 | 安全检查 | Stars |
|---|---|---|---|---|---|
| Repomix | 仓库→AI友好文件 | XML/MD/JSON | Tree-sitter压缩 + Token计数 | ✅ Secretlint | 27k |
| Gitingest | 同上,针对 Python/数据科学 | 结构化文本 | 简单压缩 | ❌ | 9k |
| GitHub Copilot | IDE 内代码补全 | - | - | - | 内嵌 |
| Continue / CodeGPT | IDE 内 RAG | - | - | - | 内嵌 |
Repomix 定位是独立 CLI 工具,不依赖 IDE,可在任何环境使用。Gitingest 更偏 Python 生态,Repomix 功能更全面(多种格式、安全检查、远程打包、stdin 管道)。
一句话推荐结论
当你需要把一个完整项目交给 LLM 分析、审查或生成代码时,Repomix 是目前最省心的选择——一条命令搞定,中文文档友好,不装 IDE 也能用。
来源:GitHub README(yamadashy/repomix)、repomix.com 官方文档、repo_cards 采集于 2026-07-08