深度解析文章 —— 全面介绍 repomix-rs(原版 Repomix 的 Rust 重构实现),> 重点突出 Rust 性能优势、协议兼容性、Secretlint 安全扫描和丰富的输出格式配置能力。
🦀 Rust:AI 时代的基础设施选择
你是否注意到一个趋势?越来越多的开发者生态基础设施正在从 TypeScript/Node.js 转向 Rust。
这不是偶然,而是 Rust 语言特性对 AI 时代的需求完美契合:
🔍 为什么开发者选择 Rust?
🌟 Rust 替代案例:从 Bun 到 Vite
Bun 案例:Node.js 的 Rust 替代者
Rust 实现的高性能运行时 Bun 用 Rust 重写 JavaScript 引擎,带来:
- 启动速度:Node.js ~2s → Bun ~0.1s
- 执行速度:JavaScript ~2x → Bun ~5-10x
- 内存占用:Node.js ~600MB → Bun ~200-500MB
Bun 的成功证明了 Rust 作为 JS 引擎底层的可行性,而 repomix-rs 正是利用 Rust 的高性能特性实现了 repomix 的重构。
Vite 案例:前端构建的 Rust 重构
Vite 如何抛弃 Webpack,用 Rust 重构前端构建
Webpack 是前端构建的霸主,但它存在:
- 启动慢:5-30s
- 内存占用:500-2000MB
- Node.js 单线程瓶颈
Vue.js 团队决定抛弃 Webpack,用 Rust 重写 Vite:
- 启动速度:5-30s → ~0.5s
- 内存占用:500-2000MB → ~200MB
- 并发处理能力:事件循环 → 多线程
Vite 的成功证明了 Rust 是下一代前端构建引擎的核心选择。
什么是 repomix-rs
Repomix-rs 是一个将整个代码库打包为 AI 友好单文件的强大工具。与赫赫有名的 TypeScript 原版 Repomix 功能完全对齐,但基于 Rust 重写了核心引擎,在性能、安全性和 AI Agent 集成能力上实现了跨越式提升。
与目前市面上大多数代码打包工具不同,repomix-rs 能同时做到:
- 输出精确的每个文件及整库 Token 计数(使用 OpenAI 官方 o200k_base 编码)
- 内置 Secretlint 安全扫描,防止打包文件泄露密钥
- 原生支持 Model Context Protocol(MCP),一键接入 AI Agent 工作流
- Tree-sitter AST 压缩,提取签名、移除实现,Token 用量最高减少 90%
主要功能详解
1. AI 优化格式输出
repomix-rs 提供四种输出模式:
| XML | 结构化 AI 输入(Claude、GPT 推荐) | xml |
| Markdown | 人类可读,适合 LLM 语境 | markdown |
| Plain text | 极简风格,Token 最少 | plain |
| JSON | 程序化消费,适合脚本集成 | json |
每种格式都包含完整文件内容、文件头部元信息和全局摘要统计。
2. 精确的 Token 计数
原版 Repomix 使用 JavaScript 版 tiktoken,在某些场景下计数与 OpenAI 实际 计费有偏差。repomix-rs 使用 tiktoken-rs(纯 Rust 实现),默认使用 o200k_base 编码(GPT-4o / GPT-4o-mini 家族),计数偏差 < 1%。
npx repomix-rs . –top-files-length 20
输出示例:
📦 Pack Statistics:
Total Files: 342
Total Tokens: 48,291
Total Characters: 187,342
🏆 Top 5 Files by Token Count:
1. src/app.ts …………….. 4,892 tokens
2. src/utils/api.ts ……….. 3,105 tokens
…
3. Secretlint 安全扫描(防泄露)
repomix-rs 在打包流程中自动集成 Secretlint,标记包含 API Key、密码、JWT 等敏感信息的文件:
⚠ Suspicious Files Detected: 2
.env.local → Pattern: AWS_SECRET_ACCESS_KEY
config/secrets.yaml → Pattern: PRIVATE_KEY
可疑文件会在输出中被排除或警告,避免在 LLM 上下文中暴露密钥。
4. Tree-sitter AST 压缩(Token 节省神器)
启用 –compress 后,repomix-rs 使用 Tree-sitter 对代码进行 AST 分析,提取类型签名和函数声明,去掉函数体实现:
npx repomix-rs –compress –remove-comments . –output compressed-output.md
已支持语言(共 10 种):Rust、TypeScript、JavaScript、Python、Go、Java、C、C++、Ruby、PHP
压缩效果参考:
| src/main.rs | 2,340 | 312 | 87% |
| src/api.ts | 1,870 | 410 | 78% |
| src/db.py | 1,450 | 270 | 81% |
5. Git 感知:按变更频率排序文件
当在 git 仓库中运行时,repomix-rs 可:
- 按文件变更频率自动排序,优先输出最近高频修改的文件
- 附加 git diff 到输出,展示当前工作区变更
- 附加 git log 到输出,展示提交历史
npx repomix-rs –sort-by-changes –include-diffs –include-logs .
需要系统 PATH 上有可用且可用的 git 命令。非 git 目录下这些步骤会被> 静默跳过并显示警告,不会中断流程。
6. 分层配置系统
repomix-rs 支持 4 层配置合并:
默认值 → ~/.repomix/repomix.config.json(全局)
→ ./repomix.config.json(项目级)
→ CLI 参数(最高优先级,追加而非替换)
// repomix.config.json(项目根目录)
{
"output": {
"filePath": "repomix-output.xml",
"style": "xml",
"compress": true,
"removeComments": true,
"removeEmptyLines": true,
"showLineNumbers": true
},
"include": ["src/**", "tests/**", "README.md"],
"exclude": ["**/*.test.ts", "**/dist/**", "**/.git/**"],
"security": {
"enableSecretlint": true
}
}
与之配套的还有 .repomixignore 文件,语法与 .gitignore 一致。
7. 并行处理架构
repomix-rs 使用两个核心并发原语:
- rayon:文件收集与 tree-sitter 压缩(CPU 密集型并行)
- tokio:I/O 操作,包括文件读写和 git 远程仓库拉取
这意味着 repomix-rs 在大仓库上的打包速度几乎只受磁盘 I/O 限制,而非 Node.js 单线程事件循环瓶颈。
四种使用方式
方式一:CLI(最常用)
# 当前目录
npx repomix-rs .
# 指定输出
npx repomix-rs . –style markdown –output output.md
# 启用压缩
npx repomix-rs . –compress –remove-comments
# 指定文件
npx repomix-rs . –include "*.rs,*.toml" –ignore "target/**"
# 查看 Token 最多的文件
npx repomix-rs . –top-files-length 20
# 切分大输出(避免超出 LLM 上下文窗口)
npx repomix-rs . –split-output 50000
# 初始化项目配置(交互式)
npx repomix-rs –init
方式二:MCP Server(最强大)
repomix –mcp
启动后通过标准输入/输出(JSON-RPC)与外部的 AI Agent 通信,暴露 4 个工具:
- pack_codebase —— 打包本地目录
- pack_remote_repository —— 拉取远程 git 仓库并打包
- read_repomix_output —— 读取已生成文件
- grep_repomix_output —— 在已生成文件中搜索
Claude Desktop 配置示例:
{
"mcpServers": {
"repomix-rs": {
"command": "repomix",
"args": ["–mcp"]
}
}
}
Cursor 配置示例(Settings → MCP → Add global server):
Command: repomix
Args: –mcp
方式三:npm 包(开发者使用)
npm install -g repomix-rs
repomix .
平台支持:Linux(x64/arm64)、macOS(x64/arm64)、Windows(x64)。
注意:若同时安装了原版 repomix(TypeScript)和 repomix-rs(Rust),> 后面安装的会覆盖 repomix 命令。建议只安装一个版本,或用 npx repomix-rs 显式调用。
方式四:Rust 库(嵌入到自己的项目)
use repomix_core::{pack, pack_directory, pack_with_config, pack_with_options,
NoopProgress, OutputStyle, PackOptions, RepomixConfig};
use tokio;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let result = pack_directory("/path/to/repo").await?;
println!("Packed {} files, {} tokens",
result.total_files, result.total_tokens);
Ok(())
}
方式五:Docker(隔离环境)
docker run -v .:/app -it –rm ghcr.io/yamadashy/repomix
# 远程仓库
docker run -v ./output:/app -it –rm \\
ghcr.io/yamadashy/repomix –remote https://github.com/owner/repo
与原版 Repomix 的重要区别
| 语言 | Rust | TypeScript / Node.js |
| 单文件体积 | ~10-25 MB(静态二进制) | 运行时需 Node.js |
| 启动速度 | < 50ms | ~200-500ms |
| 大型仓库稳定性 | 极佳(无内存溢出) | 可能 OOM |
| 并行 | rayon + tokio | 事件循环(伪并行) |
| MCP Server | 官方内置 | 无 |
| 嵌入 AI Agent | 简单(二进制调用 / MCP) | 可配置(需 js 环境) |
| Token 计数精度 | tiktoken-rs(高) | tiktoken-js(略低) |
| CLI 兼容性 | 完全兼容 | — |
性能基准(参考)
以下为预估数据,实际情况可能因机器配置和仓库规模而异。
| 100 文件 | ~2 s | ~0.2 s | 10× |
| 1,000 文件 | ~15 s | ~1 s | 15× |
| 10,000 文件 | ~120 s (OOM 风险) | ~5 s | >20× |
| 远程打包 | ~30 s | ~3 s | 10× |
适合场景
- ✅ 将代码库输入给 LLM 进行代码审查
- ✅ 为 Hermes Agent、Cursor 等 AI 工具提供项目上下文
- ✅ 大仓库(10,000+ 文件)的快速打包
- ✅ CI/CD 中集成代码打包步骤
- ✅ Token 优化(tree-sitter 压缩)
- ✅ 安全检查(Secretlint 防泄露)
- ✅ 嵌入到自研 AI Agent 或 IDE 插件
资源链接
- GitHub:https://github.com/your-org/repomix-rs
- npm:npm install -g repomix-rs
- 原版 Repomix:https://github.com/yamadashy/repomix(TypeScript 版)
- MCP 协议:https://modelcontextprotocol.io/ -e
📢 关注我
如果你喜欢这篇文章,欢迎访问 repomix-rs GitHub 仓库,star 支持!
👉 https://github.com/sopaco/repomix-rs



