Topos-Labs/infiniloom
GitHub: Topos-Labs/infiniloom
面向 LLM 和 RAG 系统的 AST 感知代码上下文引擎,将代码库转化为结构化、Token 优化的 AI 可读格式。
Stars: 25 | Forks: 1
# Infiniloom
**面向 RAG、向量数据库和 AI 代码助手的 AST 感知代码上下文引擎**
一个高性能 Rust 库和 CLI,用于为 LLM 生成智能代码上下文。使用 Tree-sitter AST 解析(支持 22 种语言)、PageRank 符号排名和 BLAKE3 内容寻址哈希。可与 Pinecone、Weaviate、Qdrant、ChromaDB 以及任何向量数据库集成。针对 Claude、GPT-5、GPT-4o、Gemini、Llama 及 27 种以上的 LLM 分词器进行了优化。
[](https://github.com/Topos-Labs/infiniloom/actions/workflows/ci.yml)
[](https://codecov.io/gh/Topos-Labs/infiniloom)
[](LICENSE)
[](https://crates.io/crates/infiniloom)
[](https://www.npmjs.com/package/infiniloom)
[](https://pypi.org/project/infiniloom/)
## 立即尝试
```
# 安装
npm install -g infiniloom
# 一条命令生成 AI-ready context
infiniloom pack . --output context.xml
# → 粘贴到 Claude, GPT, 或任何 LLM
# 为您的 vector database 生成 chunks
infiniloom embed . -o chunks.jsonl
# → 导入到 Pinecone, Weaviate, Qdrant, 等
```
## 问题所在
当你请求 AI 协助处理代码时,质量几乎完全取决于你提供的上下文。大多数方法都会失败:
- **粘贴随机文件** 会给 AI 提供缺乏结构或关系的代码片段
- **转储整个仓库** 会让 AI 被噪音和无关代码淹没
- **Token 限制** 迫使你遗漏重要上下文,导致建议不准确
- **AI 并不知道它不知道什么** —— 它无法主动请求所需的文件
- **复制粘贴工作流** 缓慢、易错且无法扩展
- **每次提问都需要从头重新收集上下文**
结果:AI 给出笼统的回答,臆造函数签名,或遗漏关键依赖——这并非因为 AI 差劲,而是因为上下文糟糕。
## Infiniloom 的功能
Infiniloom 读取你的代码库并生成专为 AI 消费设计的结构化摘要。
这样理解:与其递给某人一个文件柜说“自己弄明白”,不如给他们一份组织良好的简报,突出重点内容。
工作原理如下:
1. **分析结构** —— Infiniloom 理解代码的组织方式:存在哪些文件、它们如何关联、使用了哪些语言。
2. **提取含义** —— 它识别重要的部分:函数、类、接口、类型。不仅是文本,而是 AI 可以推理的语义单元。
3. **排名重要性** —— 使用类似于搜索引擎对网页排名的技术,确定哪些代码是项目的核心,哪些是外围。
4. **过滤噪音** —— 自动排除生成文件、构建产物、vendored 依赖项和其他干扰项。
5. **为 AI 格式化** —— 输出采用不同 AI 模型最易理解的格式结构——Claude 用 XML,GPT-4o/GPT-5 用 Markdown,Gemini 用 YAML。
结果是一个上下文包,可帮助 AI 就你的实际代码给出准确、相关的回答。
## 你可以做什么
### 面向开发者
- **AI 辅助代码审查** —— 让你的 AI 理解 Pull Request 实际更改内容的上下文
- **咨询架构问题** —— “身份验证如何在此系统中流转?”
- **生成文档** —— 让 AI 在完全可见依赖项的情况下解释你的代码
- **更快上手** —— 在数小时而非数周内理解新代码库
- **调试复杂问题** —— 为 AI 提供相关代码路径,而不仅是错误消息
### 面向 AI / RAG / Agents
- **构建更好的上下文** —— 为 LLM 应用准备高质量输入
- **减少 Token 使用** —— 发送重要内容,而非全部
- **提高回答准确性** —— 相关上下文产生相关回答
- **启用代码感知代理** —— 为自主系统提供正确行动所需的上下文
## 面向 RAG 与向量数据库
Infiniloom 的 `embed` 命令生成确定性、内容寻址的代码块,专为检索增强生成设计:
```
# 为您的 vector database 生成 chunks
infiniloom embed ./my-repo -o chunks.jsonl
# 仅获取更改的 chunks (incremental updates)
infiniloom embed ./my-repo --diff -o updates.jsonl
```
### RAG 关键特性
| 特性 | 优势 |
|---------|---------|
| **内容寻址 ID** | 相同代码在任何地方生成相同 ID(`ec_a1b2c3d4...`)—— 支持跨仓库去重 |
| **AST 感知分块** | 永不中途拆分函数或类 —— 保留语义边界 |
| **增量更新** | 基于 Manifest 的差异检测新增/修改/移除的块 —— 仅重新嵌入更改的部分 |
| **分层块** | 保留父子关系 —— 容器摘要链接到成员块 |
| **自动生成标签** | 语义标签(`async`、`security`、`database`、`http`)提高检索相关性 |
| **调用图上下文** | `calls` 和 `called_by` 字段支持依赖感知检索 |
### 向量数据库集成
适用于任何接受 JSON/JSONL 的向量数据库:
```
# Pinecone / Weaviate / Qdrant
infiniloom embed . --max-tokens 1500 -o chunks.jsonl
# 使用您的 vector DB 的 bulk import 导入 chunks.jsonl
# ChromaDB / pgvector / Milvus
infiniloom embed . --format json -o chunks.json
# 解析 JSON array 并使用您首选的 client 插入
```
### Chunk 输出格式
每个块包含用于过滤和检索的丰富元数据:
```
{
"id": "ec_a1b2c3d4e5f6g7h8",
"content": "async fn authenticate(token: &str) -> Result
{...}",
"tokens": 245,
"kind": "function",
"source": {
"file": "src/auth.rs",
"symbol": "authenticate",
"fqn": "src::auth::authenticate",
"language": "Rust"
},
"context": {
"docstring": "Validates JWT token and returns authenticated user",
"calls": ["verify_jwt", "find_user_by_id"],
"called_by": ["login_handler", "refresh_token"],
"tags": ["async", "security", "public-api"]
}
}
```
有关完整详情,请参阅 [embed 命令文档](docs/commands/embed.md)。
## 快速开始
**安装:**
```
npm install -g infiniloom
```
**为你的仓库生成上下文:**
```
infiniloom pack . --output context.xml
```
这将生成一个包含代码库结构、关键符号和内容的 XML 文件——可直接粘贴到 Claude、GPT 或任何其他 AI 助手中。
## 核心能力
| 能力 | 为何重要 |
|------------|----------------|
| **仓库分析** | 自动理解项目结构、语言和文件关系 |
| **符号提取** | 识别函数、类和类型 —— AI 推理的单元 |
| **重要性排名** | 突出核心代码,降低工具函数和样板代码的优先级 |
| **噪音削减** | 默认排除生成文件、依赖项和产物 |
| **安全过滤** | 在 API 密钥、令牌和凭据到达 AI 之前检测并编辑它们 |
| **多种输出格式** | XML、Markdown、YAML、JSON —— 针对不同 AI 模型优化 |
| **Token 感知打包** | 遵守上下文限制,以便适应模型约束 |
| **Git 集成** | 理解差异、分支和提交历史,用于变更感知上下文 |
| **22 种语言支持** | 完整解析 Python、JavaScript、TypeScript、Rust、Go、Java、C/C++ 等 |
## CLI 概览
| 命令 | 功能 |
|---------|--------------|
| `pack` | 分析仓库并生成 AI 就绪的上下文 |
| `scan` | 显示仓库统计信息:文件、token、语言 |
| `map` | 生成关键符号的排名概览 |
| `embed` | 为向量数据库 / RAG 系统生成块 |
| `diff` | 构建关注于近期变更的上下文 |
| `index` | 创建用于快速查询的符号索引 |
| `impact` | 分析依赖于某文件或函数的内容 |
| `chunk` | 拆分大型仓库以进行多轮对话 |
| `init` | 创建配置文件 |
有关详细文档,请参阅 [命令参考](docs/commands/)。
## 为什么选择 Infiniloom?
| 特性 | 优势 |
|---------|---------|
| 🎯 **智能排名** | PageRank 算法识别重要符号 —— 优先处理核心业务逻辑而非工具函数 |
| 🔗 **内容寻址** | BLAKE3 哈希生成稳定的块 ID —— 相同代码在任何位置 = 相同 ID,便于去重 |
| 🌳 **AST 感知** | Tree-sitter 解析(22 种语言)保留语义边界 —— 永不中途拆分函数 |
| 🔒 **安全优先** | 自动密钥检测(正则 + NFKC 归一化)防止 API 密钥泄露 |
| 📊 **27+ 分词器** | 通过 tiktoken 精确计算 GPT-5/4o,对 Claude/Gemini/Llama 进行校准估算 |
| 🚀 **极快速度** | 纯 Rust + Rayon 并行 —— 在数秒内处理 10 万+ 文件的仓库 |
| 🔄 **增量更新** | 基于 Manifest 的差异跟踪新增/修改/移除的块 —— 仅重新嵌入更改的部分 |
| 📈 **调用图** | `calls` 和 `called_by` 字段支持依赖感知检索 |
## Infiniloom 对比
### 功能对比矩阵
| 功能 | Infiniloom | Repomix | Aider | Continue | Cursor |
|---------|:----------:|:-------:|:-----:|:--------:|:------:|
| **AST 解析 (Tree-sitter)** | ✅ 22 种语言 | ❌ | ❌ | ❌ | ✅ |
| **PageRank 符号排名** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **内容寻址块** | ✅ BLAKE3 | ❌ | ❌ | ❌ | ❌ |
| **增量更新** | ✅ 基于 Manifest | ❌ | ✅ 基于 Git | ❌ | ✅ |
| **密钥检测/脱敏** | ✅ 15+ 种模式 | ❌ | ❌ | ❌ | ❌ |
| **多模型 Token 计数** | ✅ 27 种模型 | ❌ | ✅ 少数模型 | ❌ | ❌ |
| **调用图提取** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **向量数据库集成** | ✅ 原生 JSONL | ❌ | ❌ | ❌ | ❌ |
| **分层分块** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **CLI 工具** | ✅ | ✅ | ✅ | ❌ | ❌ |
| **库** | ✅ | ✅ | ❌ | ❌ | ❌ |
| **IDE 集成** | 🔜 即将推出 | ❌ | ❌ | ✅ 原生 | ✅ 原生 |
| **价格** | 免费/开源 | 免费/开源 | 免费/开源 | 免费层 | $20/月 |
### 何时使用何工具
| 工具 | 最适合 | 不适合 |
|------|----------|---------------|
| **Infiniloom** | RAG 管道、向量数据库、注重安全的团队、大型代码库、CI/CD 自动化 | 实时 IDE 补全 |
| **Repomix** | 快速一次性上下文转储、小型项目 | 大型仓库、增量更新、安全性 |
| **Aider** | 交互式结对编程、基于 Git 的工作流 | 无头自动化、RAG 系统 |
| **Continue.dev** | IDE 代码补全、行内建议 | 批处理、RAG 管道 |
| **Cursor** | 完整的 AI 驱动开发环境 | 无头/CLI 工作流、自定义管道 |
## 有何不同
**对比“直接粘贴代码”:**
Infiniloom 理解代码结构。它知道核心业务函数与实用工具函数的区别。它理解导入、依赖和关系。粘贴文件给 AI 文本;Infiniloom 给 AI 理解。
**对比通用 RAG 工具:**
大多数 RAG 系统将代码视为文档。它们按字符数分块、嵌入文本并通过相似度检索。这错过了使代码有意义的结构。Infiniloom 保留语义边界——函数保持完整,关系保持不变。
**对比基于嵌入的方法:**
嵌入对于“查找类似于 X 的代码”很有用。它们对于“理解 X 如何工作”则不太有用。Infiniloom 专注于理解:存在什么、如何连接、什么重要。这是关于构建完整的上下文,而不是搜索片段。
**我们的理念:**
上下文质量胜过上下文数量。较小、结构良好的上下文比较大的、嘈杂的上下文产生更好的 AI 响应。Infiniloom 优先考虑信号而非音量。
## 适用人群
**适合:**
- 使用 AI 助手进行代码审查、调试或文档编写的开发者
- 构建 AI 驱动的开发工具或代码分析产品的团队
- 处理大型或陌生代码库的工程师
- 任何需要 AI 理解真实生产代码而非玩具示例的人
**可能不需要:**
- 单文件脚本或小型实用工具(直接粘贴即可)
- 已经拥有完美上下文的项目(罕见,但可能)
- 代码搜索比代码理解更重要的用例
## 项目状态
Infiniloom **稳定且积极维护中**。
**目前已稳固:**
- 跨 22 种语言的核心打包工作流
- **v0.6.0 新增**:用于向量数据库分块的 `embed` 命令
- 所有输出格式(XML、Markdown、YAML、JSON)
- 安全扫描和密钥脱敏
- Git 感知的差异上下文
- Python 和 Node.js 绑定
**即将推出:**
- 用于 Claude Desktop 和其他 MCP 客户端的 MCP 服务器集成
- 超大型仓库的流式输出
- 用于 CICD 工作流的 GitHub Action
- VS Code 扩展
## 安装选项
| 方法 | 命令 |
|--------|---------|
| **npm**(推荐) | `npm install -g infiniloom` |
| **Homebrew** (macOS) | `brew tap Topos-Labs/infiniloom && brew install --cask infiniloom` |
| **Cargo** (Rust 用户) | `cargo install infiniloom` |
| **pip** (Python 库) | `pip install infiniloom` |
| **从源码构建** | `git clone https://github.com/Topos-Labs/infiniloom && cd infiniloom && cargo build --release` |
## Shell 补全
Infiniloom 支持 bash、zsh、fish、PowerShell 和 Elvish 的 Tab 补全。
### Bash
```
infiniloom completions bash > /tmp/infiniloom.bash
sudo mv /tmp/infiniloom.bash /etc/bash_completion.d/
```
### Zsh
```
infiniloom completions zsh > ~/.zfunc/_infiniloom
# 添加到 ~/.zshrc:
fpath=(~/.zfunc $fpath)
autoload -U compinit && compinit
```
### Fish
```
infiniloom completions fish > ~/.config/fish/completions/infiniloom.fish
```
### PowerShell
```
infiniloom completions powershell | Out-String | Invoke-Expression
# 或添加到您的 profile:
infiniloom completions powershell >> $PROFILE
```
### Elvish
```
infiniloom completions elvish > ~/.config/elvish/completions/infiniloom.elv
```
## 贡献
我们欢迎各种形式的贡献:错误报告、功能请求、文档改进和代码。
- **发现错误?** [提交 issue](https://github.com/Topos-Labs/infiniloom/issues)
- **有想法?** 发起一个 [讨论](https://github.com/Topos-Labs/infiniloom/discussions)
- **想贡献代码?** 参阅 [CONTRIBUTING.md](CONTRIBUTING.md)
```
cargo test --workspace # Run tests
cargo clippy --workspace # Lint
cargo fmt --all # Format
```
## 文档
- [参考](docs/REFERENCE.md) — 完整命令参考
- [食谱](docs/RECIPES.md) — 现成的代码模式
- [命令参考](docs/commands/) — 详细 CLI 文档
- [配置指南](docs/CONFIGURATION.md) — 配置文件和选项
- [FAQ](docs/FAQ.md) — 常见问题解答
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
由 [Topos Labs](https://github.com/Topos-Labs) 制作
标签:AI编程助手, AST解析, BLAKE3, ChromaDB, CI/CD安全, Claude, CVE检测, DLL 劫持, Gemini, GPT-4, Linux安全, Llama, LLM, PageRank, Pinecone, Qdrant, RAG, Rust, Tree-sitter, Unmanaged PE, Weaviate, 上下文窗口优化, 代码上下文, 代码分块, 代码分析, 代码库处理, 代码搜索引擎, 代码转文本, 内容寻址, 凭证管理, 可视化界面, 向量数据库, 大语言模型, 威胁情报, 开发者工具, 开源, 提示词工程, 文档结构分析, 暗色界面, 检索增强生成, 知识库构建, 符号排名, 策略决策点, 网络流量审计, 语义Embedding, 通知系统