
大家好,我是 Immerse
专注分享 AI 玩法、独立开发与AI 出海的 AGI 实践者,更多干货欢迎关注公众号 #沉浸式AI 或访问 yaolifeng.com
让 AI 读代码库,说简单也简单,说麻烦也真麻烦。
简单是因为你只要把代码贴给 AI 就行;麻烦是因为文件一多,复制粘贴根本搞不定,贴完了 AI 的上下文窗口也不够用,还容易把密钥文件一起发出去。
Repomix 就是来解决这个问题的。它把整个代码库打包成一个结构化文件,附带目录树、token 统计、安全检查,还能压缩代码减少 token 占用。
一条命令跑完,直接把输出文件丢给 Claude、ChatGPT、DeepSeek 就行。
GitHub:https://github.com/yamadashy/repomix 官网:https://repomix.com

手动复制代码给 AI 的几个痛点:
.env、密钥、配置文件容易被一起贴出去Repomix 打包的时候会自动处理这些问题。它尊重 .gitignore 规则过滤不需要的文件,用 Secretlint 扫描敏感信息,按 XML/Markdown/JSON 结构化输出,最后告诉你总 token 数。
最快的方式是不用安装:
npx repomix@latest
当前目录下会生成 repomix-output.xml,包含所有代码文件。如果你想反复用,可以全局安装:
npm install -g repomix
# 或
brew install repomix
Docker 也行:
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix
打包指定目录:
repomix path/to/directory
打包完的文件结构大概长这样(XML 格式):
<file_summary>
元数据和 AI 使用说明
</file_summary>
<directory_structure>
src/
cli/
index.ts
utils/
config.ts
</directory_structure>
<files>
<file path="src/index.ts">
// 文件内容
</file>
</files>
AI 读这个格式比读一堆零散代码要清楚得多,因为文件边界、目录关系都是显式标注的。
repomix --token-count-tree
输出每个目录的 token 占用:
🔢 Token Count Tree:
────────────────────
└── src/ (70,925 tokens)
├── cli/ (12,714 tokens)
└── core/ (41,600 tokens)
这个信息很有用。当你发现某个目录占了几万 token,就可以决定是压缩它还是单独处理。对于大型项目,先扫一遍 token 分布再决定打包策略,能省很多上下文空间。
repomix --compress
用 Tree-sitter 提取函数签名、类结构、接口定义,去掉具体实现。token 减少约 70%,但代码结构完整保留。适合大体量项目,让 AI 先把握架构,有需要再深入具体文件。
比如这段代码:
const calculateTotal = (items: ShoppingItem[]) => {
let total = 0;
for (const item of items) {
total += item.price * item.quantity;
}
return total;
}
压缩后变成:
const calculateTotal = (items: ShoppingItem[]) => {
⋮----
}
AI 知道有这个函数、参数是什么、返回什么,但不需要看具体实现。如果 AI 需要具体实现,你可以再打包一次不加 --compress。
打包前自动用 Secretlint 扫描敏感信息:API key、密码、token 等。如果发现可疑文件,会在输出里警告:
🔍 Security Check:
──────────────────
2 suspicious file(s) detected:
1. src/utils/test.txt
2. config/secrets.json
你可以检查这些文件,确认没问题后再打包。也可以跳过检查(不推荐):
repomix --no-security-check
不用 clone 就能分析别人的项目:
repomix --remote yamadashy/repomix
支持 GitHub shorthand、分支、commit hash。临时想看看某个库的实现,不用占本地磁盘。对做代码审计、学习开源项目、对比不同实现方案都很方便。
# 只打包 src 目录的 TypeScript 文件
repomix --include "src/**/*.ts"
# 排除测试文件
repomix --ignore "**/*.test.ts,**/node_modules/**"
# 从 stdin 读取文件列表
git ls-files "*.ts" | repomix --stdin
灵活控制打包范围,避免把不需要的内容塞进上下文。
repomix --split-output 1mb
如果打包后的文件超过 1MB,自动拆成多个文件。适合有文件大小限制的 AI 工具(比如 Google AI Studio 的 1MB 限制)。拆分的时候保证单个文件不会被切到两个部分里。
默认 XML,也可以用其他格式:
repomix --style markdown # 人类可读
repomix --style json # 程序化处理,可用 jq
repomix --style plain # 纯文本
XML 是 Anthropic 推荐的方式,用标签分隔不同文件,AI 解析更准。JSON 适合你的脚本二次处理。Markdown 适合直接阅读。
Repomix 不只是一个 CLI 工具,它提供了多种使用方式:
网站 repomix.com
不用装任何东西,填仓库名直接打包。支持自定义格式、token 估算。适合临时用一次的场景。
浏览器插件
Chrome 和 Firefox 都有。装完后 GitHub 仓库页面会多一个 Repomix 按钮,点一下直接打包当前仓库。
VSCode 扩展
Repomix Runner,右键点击文件夹就能打包,输出直接显示在编辑器里。
GitHub Actions
- uses: yamadashy/repomix/.github/actions/repomix@main
with:
output: repomix-output.xml
compress: true
CI 流程里自动生成打包文件,方便在自动化流程中使用。
Node.js 库
import { runCli } from 'repomix';
const result = await runCli(['.'], process.cwd(), options);
可以集成进自己的工具链,做更复杂的处理逻辑。
这是最实用的功能之一。Repomix 可以作为 MCP server 运行:
repomix --mcp
配置进 Claude Code:
claude mcp add repomix -- npx -y repomix --mcp
装完之后 Claude 能直接调用这些功能:
pack_codebase:打包本地代码pack_remote_repository:打包远程仓库read_repomix_output:读取输出文件的指定行范围grep_repomix_output:在输出里搜索内容file_system_read_file:安全读取单个文件这意味着你不需要手动准备材料,直接跟 Claude 说"帮我看看这个项目的结构",Claude 自己会调用 Repomix 打包、分析、给你结果。
除了 MCP server,Repomix 还提供了三个 Claude Code 插件:
repomix-mcp:MCP server 基础功能repomix-commands:斜杠命令,比如 /repomix-commands:pack-localrepomix-explorer:AI 探索代理,用自然语言分析代码库repomix --skill-generate
自动生成 .claude/skills/ 目录,包含:
SKILL.md:项目元数据和文档references/summary.md:用途、格式、统计references/project-structure.md:目录树和行数references/files.md:所有文件内容,grep 友好references/tech-stacks.md:技术栈和依赖这相当于把你的代码库变成一个可复用的 AI 技能。从远程仓库生成也可以:
repomix --remote user/repo --skill-generate
适合把别人的优秀实现当作参考库,需要时让 AI 引用。
Repomix 支持多种配置格式:repomix.config.ts、repomix.config.js、repomix.config.json。
TypeScript 配置有完整的类型检查和 IDE 自动补全:
import { defineConfig } from 'repomix';
export default defineConfig({
output: {
filePath: 'output.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});
主要配置项:
output.filePath:输出文件名output.style:输出格式output.compress:是否压缩include:包含的文件模式ignore.customPatterns:额外的忽略规则security.enableSecurityCheck:安全检查开关tokenCount.encoding:token 计算编码配置支持 JSON5 语法,可以写注释和拖尾逗号。
代码评审
打包成 markdown,丢给 Claude 做全面评审。目录结构让 AI 先理解项目架构,再逐文件分析。
学习开源项目
repomix --remote facebook/react --compress
压缩后的 React 源码结构清晰,token 可控,适合快速理解架构而不陷入实现细节。
生成文档
打包后让 AI 根据代码生成 README、API 文档。AI 有完整代码上下文,生成的文档更准确。
找 bug
repomix --include "src/**/*.ts" | llm "分析这段代码的潜在问题"
配合 simonw/llm 等工具,整条流水线在命令行里跑完。
CI 集成
GitHub Actions 里自动打包,上传 artifact,供后续 AI 分析步骤使用。
Gitingest 是 Python 生态的类似工具,更适合 Python 项目和数据科学工作流。Repomix 是 Node.js 生态,功能更丰富(MCP、Agent Skills、浏览器插件等),对前端/全栈开发者更友好。两个工具理念一样,选哪个看你用什么语言。
Repomix 把"让 AI 读代码"这件事从手工操作变成了标准化流程。打包、过滤、压缩、统计、安全检查,一条龙处理完。多种入口(CLI、网站、插件、MCP)覆盖不同使用场景。
这个项目最近获了 JSNation Open Source Awards 2025 "Powered by AI" 提名。MIT 开源,可以直接用、改、分发。