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 分词器进行了优化。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/19d321f586025131.svg)](https://github.com/Topos-Labs/infiniloom/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/Topos-Labs/infiniloom/graph/badge.svg)](https://codecov.io/gh/Topos-Labs/infiniloom) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Crates.io](https://img.shields.io/crates/v/infiniloom.svg)](https://crates.io/crates/infiniloom) [![npm](https://img.shields.io/npm/v/infiniloom.svg)](https://www.npmjs.com/package/infiniloom) [![PyPI](https://img.shields.io/pypi/v/infiniloom.svg)](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, 通知系统