Nurysso/eulix

GitHub: Nurysso/eulix

Eulix 利用静态分析和本地 LLM 将代码库转化为结构化知识库,让开发者通过自然语言提问获得基于真实代码的准确回答。

Stars: 14 | Forks: 2

Eulix **将你的代码库变成一本可搜索的书。** [![License: GPLv3](https://img.shields.io/badge/license-Appache-blue.svg?style=for-the-badge)](eulix-embed/LICENSE) [![License: Apachev2](https://img.shields.io/badge/license-GPLv3-blue.svg?style=for-the-badge)](LICENSE) [![Go](https://img.shields.io/badge/Go-00ADD8?style=for-the-badge&logo=go&logoColor=white)](https://go.dev) [![Rust](https://img.shields.io/badge/Rust-orange?style=for-the-badge&logo=rust&logoColor=white)](https://www.rust-lang.org) [![Python](https://img.shields.io/badge/Python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](https://www.python.org/) [概述](#overview) · [安装](#installation) · [用法](#usage) · [文档](docs/)
Eulix 将您的代码库转化为一个结构化、可搜索的知识库。**针对您的代码提出问题——获得准确的答案**,这些答案基于实际的源代码结构,而非幻觉。 使用 **ML 算法和 LLM**,Eulix 会分析代码的架构(符号、调用图、控制流),然后智能地检索相关上下文以精准回答问题。 ## 工作原理 ### 1. 索引您的代码库 Eulix 会分析您的源代码并创建一个结构化的知识库: - **符号索引** — 映射所有函数、类、变量及其位置 - **调用图** — 追踪哪些代码调用了什么(依赖关系、关联关系) _注意:使用 **PRISM**(基于倒排符号图的多语言解析)—— 一种近似算法。调用图对于大多数查询来说足够精确,但可能存在误报。_ - **控制流** — 捕获结构、复杂度和错误处理 - **Embeddings** — 为每个代码单元生成语义向量 结果:您的代码库变成了一本“书”,包含章节(文件)、小节(类)和已索引的内容(函数)。 ### 2. 准确回答问题 当您提出问题时,Eulix 会: 1. 使用多层检索(符号查找 → 关键词搜索 → 语义搜索 → 调用图遍历)**查找相关代码** 2. **构建精确的上下文** — 仅包含重要的代码及其准确的关系 3. **输入给 LLM** — 本地模型基于确凿的事实进行解释,而非猜测 ### 架构 三个协同工作的专用二进制文件: | 组件 | 语言 | 角色 | 协议 | | -------------- | -------- | -------------------------------------------------------------------------------------- | ---------- | | `eulix` | Go | **编排器** — CLI、配置和检索 pipeline | GPLv3 | | `eulix_parser` | Rust | **静态分析器** — 提取符号、调用图和复杂度 | GPLv3 | | `eulix_embed` | Python | **嵌入器** — 通过 PyTorch 运行 transformers 并支持 GPU 加速 (ROCm/CUDA) | Apache 2.0 | ## 为什么选择 Eulix **基于您实际代码的准确答案。** 大多数 AI 代码工具之所以会产生幻觉,是因为它们在猜测上下文。Eulix 首先构建了代码库的结构化知识,因此答案是精确的。 **离线工作,保护您的代码隐私。** 所有解析、embedding 和推理都在本地进行。没有代码泄露风险。 **在小模型上运行迅速。** 凭借精确的上下文,本地的 7B 模型解释代码的效果与 ChatGPT-4 一样好。没有 API 成本,没有延迟,没有速率限制。 **为生产环境而生。** 能够处理数百万行代码。专为大型团队、遗留系统和复杂架构而构建。 ## 功能 - **多语言解析** — Python、Go、C、C++、Rust。提取结构,而不仅仅是文本。 - **PRISM 调用图近似** — 快速的多语言调用图解析(有已知的限制 —— 见[文档](docs/known-issues.md))。 - **本地智能** – 所有分析都在您的机器上运行。无云端依赖(可以使用云端 LLM,但代码将会被发送)。 - **GPU 加速** — 支持 CUDA/ROCm 以实现快速的 embedding 生成。 - **MCP 集成** — 通过 Model Context Protocol (MCP) 插入任何编辑器或工具(即将推出)。 - **抗幻觉设计** — 基于实际代码结构的检索增强回答。 ### 支持的语言 **稳定版:** Python · Go · C · C++ · Rust **即将推出:** TypeScript · JavaScript · Java ### 应用场景 - **新工程师入职** — 几秒钟内解释“这个模块是做什么的?” - **调试不熟悉的代码** — 追踪执行流程和依赖关系 - **重构遗留系统** — 在进行更改之前了解其影响 - **安全审计** — 查找敏感函数的所有调用者 - **架构决策** — 探索组件之间的交互方式 ## 安装 #### 要求 - Go 1.23+ - Rust (稳定版) - Python 3.10-3.11 - `uv` #### Linux/Mac ``` curl -fsSL https://raw.githubusercontent.com/nurysso/eulix/main/install.sh | bash ``` #### Windows ``` Invoke-WebRequest -Uri "https://raw.githubusercontent.com/nurysso/eulix/main/install.ps1" -OutFile "$env:TEMP\install.ps1" ``` ## 或查看[安装文档](docs/installation.md) ## 用法 ### 1. 初始化项目 ``` cd fooProj eulix init ``` ### 2. 分析代码库 ``` eulix analyze ``` 这将触发解析器和 embedding pipeline,生成一个 `.eulix` 文件夹,该文件夹将成为 LLM 的知识库。 ### 3. 与您的代码聊天 ``` eulix chat ``` 开启一个交互式会话,使用多层检索 pipeline 查询您的代码库。 ## CLI 参考 ### `eulix` (Go) - `init` : 在当前目录初始化 eulix - `analyze` : 分析代码库并生成知识库 - `chat` : 启动交互式聊天界面 - `cache` : 管理 cache 条目 - `config` : 管理 eulix 配置 - `history` : 以交互方式查看查询历史 - `embed`: 运行 eulix_embed pipeline (Python venv) - `version` : 显示 eulix、eulix_parser 和 eulix_embed 的版本 - `checksum`: 不运行 analyze 直接创建校验和 - `aspirine` : 尝试修复 `embeddings.bin` 和知识库 (用于测试) - `glados` : 检查知识库中的错误和 embeddings 大小 (测试用) ### `eulix_parser` (Rust) 快速的静态分析工具。 - `-V, --version` : 解析器版本 - `-r, --root` : 项目根目录 - `-o, --output` : 知识库的输出文件 [默认: knowledge_base.json] - `-t, --threads` : 用于并行解析的线程数 [默认: 4] - `-v, --verbose` : 详细输出 - `-l, --languages` : 要解析的语言 (逗号分隔,或 "all") [默认: all] - `--no-analyze` : 跳过分析阶段 (更快,仅解析文件) - `--euignore` : 自定义 .euignore 文件的路径 (默认为 /.euignore) - `-h, --help` : 打印帮助信息 - `-V, --version` : 打印版本信息 ### `eulix_embed` (Python) 通过 PyTorch 生成向量。支持 `sentence-transformers/all-MiniLM-L6-v2`、`BAAI/bge-small-en-v1.5`、`BAAI/bge-base-en-v1.5` 等。原生支持 CUDA/ROCm。 ``` eulix_embed [COMMAND] [OPTIONS] ``` **命令:** - `embed` : 为知识库生成 embeddings(默认) - `query` : 为查询字符串生成 embedding - `compare` : 比较 embeddings.bin 和 vectors.bin **EMBED 选项:** - `-k, --kb-path` : 知识库 JSON 文件的路径 - `-o, --output` : embeddings 的输出目录 - `-m, --model` : HuggingFace 模型名称或本地路径 **QUERY 选项:** - `-q, --query` : 要进行 embedding 的查询文本 - `-m, --model` : HuggingFace 模型名称或本地路径 - `-f, --format` : 输出格式:json (默认) 或 binary - `-h, --help` : 显示帮助信息 - `-v, --version` : 显示版本信息 ## 文档 完整的文档可在 [`docs/`](docs/) 目录中找到: - **[架构概述](docs/architecture/01-system-overview.md)** – 系统设计和数据流 - **[解析器内部机制](docs/architecture/07-parser-internals.md)** – `eulix_parser` 的工作原理 - **[上下文构建器](docs/architecture/context-builder.md)** – 检索和 MMR 选择 - **[分类器](docs/architecture/06-classifier.md)** – 查询意图识别 - **[缓存架构](docs/architecture/05-cache-architecture.md)** – Redis/SQL 缓存 - **[Eulix Embed](docs/eulix-embed/architecture.md)** – embedding pipeline - **[解析器基准测试](docs/eulix-parser/benchmark.md)** – 性能指标 - **[已知问题](docs/known-issues.md)** – 当前的限制(包括 PRISM 调用图近似) - **[安装指南](docs/installation.md)** – 详细的设置说明 - **[可用模型](docs/models-to-use.md)** – 推荐的 embedding/LLM 模型 ## 协议 - **`eulix` (Go CLI) 和 `eulix_parser` (Rust)** – [GNU General Public License v3.0](LICENSE) - **`eulix_embed` (Python embedding 模块)** – [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) **祝您使用 Eulix 愉快地理解代码!**
标签:AI编程助手, DLL 劫持, Ruby, SOC Prime, Vectored Exception Handling, 代码检索, 代码索引, 凭据扫描, 可视化界面, 大语言模型, 开发工具, 搜索引擎查询, 日志审计, 知识库, 系统调用监控, 逆向工具, 通知系统