moonkick64/Izumi

GitHub: moonkick64/Izumi

一款基于 LLM 的 C/C++ 源码分析工具,用于发现开源依赖并生成 SBOM,解决无包管理器项目的组成分析难题。

Stars: 0 | Forks: 0

# Izumi 一款用于检测 C/C++ 源代码树中未知开源软件并协助创建 SBOM 的跨平台 GUI 工具。 面向没有包管理器的项目——例如嵌入式开发——在这些项目中,源代码是直接以文件形式管理,而不是声明依赖。与传统软件组成分析(SCA)工具不同(它们假设存在声明的依赖或需要基于数据库的片段匹配),Izumi 直接使用 LLM 分析源代码,无需任何预构建的数据库。 LLM 的响应被视为提示,而非结论——该工具旨在支持用户的判断。 ## 截图 ### 源代码分析 screenshot ### LLM 扫描结果 screenshot2 ## 功能特性 - **静态分析** — 提取版权声明、SPDX 标签和 LICENSE 文件;将每个文件分类为 CONFIRMED / INFERRED / UNKNOWN - **LLM 辅助的开源软件识别** — 三种选项以满足你的保密要求: - 选项 1:将函数源代码直接发送给本地 LLM(Ollama) - 选项 2:本地汇总 → 审查并编辑 → 将汇总发送给外部 LLM(保护机密代码) - 选项 3:将函数源代码直接发送给外部 LLM - **匹配决策 UI** — 根据 LLM 提示确认组件名称和许可证;结果按项目保存 - **SBOM 导出** — 支持 SPDX 2.3 和 CycloneDX 1.5 - **UI 语言** — 提供英文和日文版本 ## 系统要求 - Python 3.12+ - [uv](https://docs.astral.sh/uv/) - [Ollama](https://ollama.com/)(选项 1 和选项 2 需要) - 外部 LLM API 密钥(选项 2 的第 2 步和选项 3 需要) ## 安装设置 ``` # 安装 uv curl -LsSf https://astral.sh/uv/install.sh | sh source ~/.bashrc # 克隆并安装依赖 git clone https://github.com/moonkick64/Izumi cd izumi uv sync ``` ## 使用方法 ``` uv run python main.py ``` 1. **设置** — 选择要扫描的源代码树;配置本地 LLM(Ollama 端点 + 模型)和/或外部 LLM(模型 + API 密钥) 2. **扫描** — 静态分析对所有文件进行分类;UNKNOWN 文件会被高亮显示 3. **LLM SCA 审查** — 从 UNKNOWN 文件中提取函数,运行 LLM 分析,审查提示,并确认组件与许可证的匹配 4. **SBOM 导出** — 以 SPDX 或 CycloneDX 格式导出最终的 SBOM 分析结果会保存到 `~/.izumi/results//llm_results.json`,并在下次打开时自动重新加载。 ## LLM 配置 | 设置 | 描述 | |------|-------| | 本地 LLM 模型 | Ollama 模型名称,例如 `ollama/codellama` | | 本地 LLM 端点 | Ollama API 端点,默认为 `http://localhost:11434` | | 外部 LLM 模型 | LiteLLM 模型名称,例如 `anthropic/claude-sonnet-4-6` | | 外部 LLM API 密钥 | 外部提供者的 API 密钥(也可通过环境变量设置) | 任何受 [LiteLLM](https://docs.litellm.ai/docs/providers) 支持的外部 LLM 均可使用,例如 Claude、GPT-4、Gemini、DeepSeek 等。
标签:AI风险缓解, C/C++源码分析, CycloneDX, LLM评估, LLM辅助分析, Ollama, SBOM生成, SPDX, 中文界面, 云安全监控, 代码摘要, 外部LLM, 安全合规, 嵌入式开发, 开源软件检测, 文件分类, 无包管理器项目, 日本语界面, 本地LLM, 源代码直检, 版权检测, 组件识别, 网络代理, 置信度标记, 许可证识别, 跨平台GUI工具, 软件供应链安全, 远程方法调用, 逆向工具, 静态分析, 项目依赖分析