先说几个核心判断:代码仓库打包这个场景,在AI Agent时代正在变得越来越重要。而repomix-rs的出现,把这个工具的执行效率拉到了一个新的量级。

repomix-rs 是什么
简单来说,repomix-rs 就是专门干这个的:把整个代码库打包成一个对 AI 格外友好的单文件。无论是 Hermes Agent、Claude、ChatGPT 还是 Gemini,这些主流的大模型都能直接消化这个文件。通过它,你可以把代码库的结构、内容、Token 用量全部控制住,让 AI 更精准地做代码审查、生成文档或者排查漏洞。
值得一提的是,虽然它和原版的 Repomix(TypeScript 版)功能完全一致,但 repomix-rs 的核心逻辑是用 Rust 从头写了一遍。这意味着在性能、安全性、以及嵌入能力上,它已经完全不同了。
| 特性 | repomix-rs(Rust) | 原版 Repomix(TypeScript) |
|---|---|---|
| 核心语言 | Rust | TypeScript |
| 运行速度 | 毫秒级(并行文件扫描) | 秒级(单线程 Node.js) |
| 内存安全 | 编译期保证 | 运行时检查 |
| MCP 内置支持 | ✅ 官方提供 MCP Server | ❌ 需额外配置 |
| Secretlint 集成 | ✅ | ✅ |
| Tree-sitter | ✅ 10 语言 | ✅ 10 语言 |
| Token 计数 | tiktoken-rs(o200k_base) | tiktoken(JS) |
| 远程仓库打包 | ✅ git clone + 清理 | ✅ |
| 并行处理 | rayon + tokio | 无并行 |
看完这张对比表,结论就一目了然了。
Rust:AI 时代的基础设施选择
你有没有注意到一个明确的趋势?越来越多的开发者生态基础设施,正在从 TypeScript/Node.js 转向 Rust。
这背后的逻辑并不复杂,完全是 Rust 语言特性对 AI 时代需求的完美回应。
为什么开发者选择 Rust?
- 编译期性能保障 —— 零成本抽象,没有 GC 停顿的烦恼。
- 内存安全保障 —— 编译期就能把 BufferOverflow 和 Use-After-Free 这类问题挡在门外。
- 跨平台单二进制 —— 一次编译,随处运行,部署省心。
- MCP 时代的核心选择 —— AI Agent 生态正在形成新的技术标准,Rust 天然契合。
Rust 替代案例:从 Bun 到 Vite
Bun 案例:Node.js 的 Rust 替代者
Bun 用 Rust 重写了 Ja vaScript 引擎,带来的提升是实打实的:
- 启动速度:Node.js 大约 2 秒,Bun 直接压到 0.1 秒
- 执行速度:Ja vaScript 大约 5-10 倍的差距
- 内存占用:从 600MB 降到了 200-500MB
Bun 的成功其实证明了一件事:Rust 作为 JS 引擎底层是完全可行的。而 repomix-rs 干的正是同样的事情——利用 Rust 的高性能重新实现 repomix。
Vite 案例:前端构建的 Rust 重构
Webpack 是前端构建的霸主,但问题也很明显:启动慢(5-30秒),内存占用高(500-2000MB),被 Node.js 的单线程瓶颈卡住。
Vue.js 团队果断抛弃了 Webpack,用 Rust 重写了 Vite。结果呢?
- 启动速度从 5-30 秒直接跳到约 0.5 秒
- 内存占用从 500-2000MB 降到了约 200MB
- 并发处理能力从事件循环变成了真正的多线程
Vite 的故事同样说明了一个事实:Rust 已经是下一代前端构建引擎的核心选择。
快速启动:不用装,直接跑
进入项目根目录,打开终端,直接敲下面任意一行就行:
# 方式 1:npx 运行(无需全局安装) npx repomix-rs . # 方式 2:全局安装后直接运行 repomix npm install -g repomix-rs repomix . # 终端出现输出后发送给 Hermes 并写上:"请先读一下"
运行结束后,当前目录下会生成一个文件(默认叫 repomix-output.xml),把它拖进 Hermes Agent 的聊天窗口,然后发送:"请先读一下这个项目结构文件"。
这里有个技术选择的考量。在 Hermes Agent 这样的 AI Agent 场景里,为什么更推荐用 Rust 版?
- 更小的镜像体积:Rust 二进制约 15MB,而 Node.js 运行时需要 50+MB
- 更快的启动速度:Rust 约 0.05 秒,Node.js 约 200 毫秒
- 更小的内存占用:Rust 约 50MB,Node.js 约 150MB
- 更好的 MCP 原生支持:repomix-rs 直接内置了 MCP Server
Bun 和 Vite 的成功已经给出了答案:在 AI 时代,Rust 是更好的基础设施选择。
远程仓库直打
不需要手动克隆,一行命令就能直接打包远程 GitHub 仓库:
npx repomix-rs --remote https://github.com/用户名/项目名
指定分支会更稳妥:
npx repomix-rs --remote https://github.com/用户名/项目名 --branch main
注意,它的远程打包是基于系统的 git 命令实现的。首次运行会完整拉取仓库快照。如果系统里的 git 不可用,这步会跳过并给个警告,但不会中断主流程。
精细控制:哪些文件该进,哪些该砍
创建一个 .repomixrc 配置文件:
{
"include": ["src/**/*", "tests/**/*", "pyproject.toml", "README.md"],
"exclude": ["**/*.log", "**/dist/**", "**/.git/**", "node_modules/**"]
}
想要压缩得更狠一些?可以启用压缩模式,提取函数签名后压缩率能达到 50%-90%:
npx repomix-rs --compress --remove-comments --remove-empty-lines .
如果只想包含某些特定语言的文件,并且忽略测试目录:
npx repomix-rs --include "*.rs,*.toml,Cargo.*" --ignore "target/**,tests/**" .
输出格式选择
repomix-rs 支持四种输出格式,用 --style 参数切换就好:
npx repomix-rs --style markdown --output output.md .
npx repomix-rs --style json --output output.json .
npx repomix-rs --style plain --output output.txt .
如何接入 Hermes Agent(关键步骤)
有个常见的误解,很多人以为 Hermes Agent 会自动扫描附件内容。实际上它不会,必须手动触发。正确的流程是这样的:
- 运行
npx repomix-rs .生成打包文件 - 将
repomix-output.xml(或.md/.txt)拖入 Hermes Agent 聊天窗口 - 发送提示:"请先读一下这个项目结构文件"
- 等 Hermes 回复"已加载上下文"后,再提出具体需求
提醒一句:Hermes 只支持纯文本格式的 .md / .xml / .txt 文件。如果误发了压缩包或二进制文件,AI 端是无法解析的。
作为 MCP Server 运行(推荐给高级用户)
repomix-rs 内置了 MCP Server,可以直接嵌入任何支持 Model Context Protocol 的 AI Agent,包括 Hermes Agent、Cursor、Claude Desktop:
repomix --mcp
启动后会暴露以下 MCP 工具:
| 工具名称 | 用途 |
|---|---|
pack_codebase | 打包本地代码库目录 |
pack_remote_repository | 拉取并打包远程 Git 仓库 |
read_repomix_output | 读取已生成的 repomix 输出文件 |
grep_repomix_output | 在输出文件中搜索内容 |
Cursor / Claude Desktop 配置
Claude Desktop(macOS)
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"repomix": {
"command": "repomix",
"args": ["--mcp"]
}
}
}
Cursor
进入 Settings → MCP → Add new global MCP server:
Command: repomix Args: --mcp
性能对比:原版 vs repomix-rs
数字不会说谎,看完下面这张对比表,你就知道差距在哪儿了:
| 场景 | 原版 Repomix(Node.js) | repomix-rs(Rust) | 加速比 |
|---|---|---|---|
| 中小型项目(< 500 文件) | 约 3-8 秒 | 约 0.3-0.8 秒 | 5-10× |
| 中型项目(500-5000 文件) | 约 30-120 秒 | 约 2-8 秒 | 15-40× |
| 大型项目(5000+ 文件) | 存在内存溢出风险 | 稳定完成 | 不限 |
| 远程仓库打包 | 慢(Node.js clone) | 极快(git + rayon) | 10-20× |
为什么推荐 repomix-rs 而不是原版 Repomix?
理由其实很清晰:
- 速度无可比拟 —— Rust 的零成本抽象加上 rayon 并行处理和 tokio 异步 I/O,同样的仓库,打包时间能降到原来的十分之一甚至更低。
- 原生 MCP 支持 —— 一行命令
repomix --mcp,直接接入 Hermes、Claude、Cursor,不需要额外包装层。 - 更安全的依赖树 —— Rust 二进制不需要 Node.js 运行时,部署简单,CVE 风险更低。
- 完全兼容原版 CLI —— 参数名、配置文件格式、输出格式几乎没差别,切换零学习成本。
- Token 计数更精确 ——
tiktoken-rs用的是 OpenAI 官方的o200k_base编码,与 GPT-4o 完全一致,计数偏差远低于 JS 版。
常见问题
Q: npx repomix-rs 和 npx repomix 有什么区别?
A: npx repomix-rs 调用的是 Rust 实现的版本,更快更稳定;npx repomix 调用的是原版 TypeScript 实现。两者的命令行参数基本兼容,放心切换。
Q: 我的 Node.js 项目能用 repomix-rs 吗?
A: 完全没问题,这个工具和语言无关。它通过文件扩展名和 glob 规则来识别文件类型,不管你的项目是 Node.js、Python、Go 还是 Rust,都能用。
Q: 如何验证 exclude 规则是否生效?
A: 一个好习惯是生成输出后做一次 grep 检查:grep -i "secrets|password|API_KEY" repomix-output.xml。如果发现了敏感词,回头看看 glob 规则,比如是否该用 **/.env 而不是 .env。
Q: repomix-rs 支持 Windows 吗?
A: 支持,Windows x64 已经发布了预编译二进制。npm 包也覆盖了 Linux、macOS 和 Windows。
