algodesigner/codeloom

GitHub: algodesigner/codeloom

为 AI 编程 agent 构建本地优先的代码知识图谱,通过混合搜索和调用关系分析让 agent 真正理解代码库结构。

Stars: 2 | Forks: 0

codeloom

"借助 codeloom,你的编程 agent 知道该阅读什么。"

CI PyPI License Python 3.10+ MIT

codeloom visualization

AI 编程 agent 功能强大,但从根本上对代码库的结构一无所知。当你的 agent 修改 `validate_token()` 时,它完全不知道有 47 个调用方依赖于它的返回类型。当它搜索 "database connection" 时,它只能盲目地在每个文件中 grep。没有代码图谱,你的 agent 就像外科医生在没有 X 光的情况下进行手术,医术精湛但只能猜测内部的情况。 **codeloom** 从你的整个代码库构建可查询的代码图谱——从 **55 种语言和格式**中提取结构,包括每个函数、类、导入、调用和文档——并将其暴露给你的 AI agent。一次安装,你的 agent 就会停止盲目 grep,开始真正理解代码。 ## 快速开始 ``` pip install codeloom cd your-project/ codeloom install opencode # for OpenCode # 或:codeloom install claude # 用于 Claude Code ``` 然后告诉你的 agent: 就这样。当你的会话结束时,图谱会自动重建。无需额外的 token,无需额外的命令,一切 100% 在本地运行。 ## 改变了什么 | 之前 | 之后 | |---|---| | 只能找到精确的字符串,错失语义关联 | 通过向量 + 关键词 + 图谱找到概念相关的代码 | | 返回扁平的文件匹配列表 | 返回种子**以及展示它们如何连接的子图** | | 无法知道什么依赖于什么 | `codeloom impact "validate_token"`,瞬间找到所有 47 个调用方 | | Agent 盲目操作,猜测代码关系 | Agent 在进行修改前能看到全貌 | 每次搜索都会返回如下结果: ``` seeds: codeloom/core/pipeline.py:71 │ def run_pipeline(source_dir: Path, ...) -> PipelineResult: │ """Run the full code graph build pipeline.""" storage/store.py:20 │ class KnowledgeStore: edges: codeloom/core/pipeline.py:71 -calls-> storage/store.py:20 codeloom/core/pipeline.py:0 -defines-> codeloom/core/pipeline.py:71 ``` 种子告诉你相关代码在*哪里*。边告诉你它们*如何连接*。两者结合为你的 agent 提供了完整的信息,无需单独调用 Read。 ## 16 个 MCP 工具一览 三大类,一个 MCP 服务器。 ### 搜索 | 工具 | 功能描述 | |------|-------------| | `search` | 5 信号 HybridRAG,将向量 + 关键词 + 图谱 + 社区融合为一个排名 | | `search_keyword` | 仅限 FTS5 关键词 (BM25),针对已知名称提供即时结果 | | `search_vector` | 仅限语义向量,查找概念相似的代码 | ### 分析 | 工具 | 功能描述 | |------|-------------| | `impact` | 影响范围分析,找出每个依赖于某 symbol 的调用方 | | `dependencies` | 上游依赖项,查找某个 symbol 运行所需的内容 | | `context` | 某个 symbol 的 360 度全景视图,包含元数据、社区、所有边、源代码片段 | | `detect_changes` | 将未暂存的 git 更改映射到受影响的图谱节点 | | `explain_flow` | 通过调用链追踪执行路径 | | `stats` | 节点/边数量、类型分布、超级节点统计 | | `communities` | 浏览功能集群 | | `node` | 通过模糊名称匹配获取特定 symbol 的详细信息 | ### 重构与管理 | 工具 | 功能描述 | |------|-------------| | `rename` | 查找所有位置和引用,实现安全的多文件重命名 | | `export_subgraph` | 将围绕某 symbol 的聚焦子图导出为 D3.js JSON | | `list_repos` | 列出带有陈旧状态的可用代码图谱 | | `build` | 构建或重建代码图谱 | | `watch` | 监视文件更改并自动重建 | 所有工具均可通过 MCP (stdin/stdout) 使用,无需 HTTP 服务器、网络或配置。 ## 语言与格式 ### 结构提取(函数、类、调用、导入) 针对 17+ 种核心语言提供完整的基于 tree-sitter tags.scm 的解析。所有 56 种语言均支持模块级索引、源代码片段和 embeddings——结构细节取决于可选的 `tree-sitter-` 包。 | | | | | | | | | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | Ada | C | C# | C++ | Common Lisp | Elixir | Fortran | Go | | Groovy | Haskell | Java | JavaScript | Julia | Kotlin | Lua | Nix | | Objective-C | OCaml | Perl | PHP | PowerShell | Python | R | Ruby | | Rust | Scala | Shell | Solidity | Swift | Terraform | TypeScript | Zig | | Assembly | | | | | | | | ### 文档与配置提取 | | | | | | | |:---:|:---:|:---:|:---:|:---:|:---:| | CMake | CSV | CSS | DjVu | Dockerfile | DOCX | | GraphQL | HCL | HTML | JSON | Make | Markdown | | ODP | ODS | ODT | Org | PDF | RST | | SQL | TOML | XLSX | XML | YAML | | 另外,通过 multilingual-e5-small embeddings 支持 **100 多种自然语言**的搜索查询。你可以使用任何语言进行搜索,并获取任何语言的结果。 ## AI Agent 集成 每个平台只需一条命令: | Agent | 安装命令 | |-------|---------| | **Claude Code** | `codeloom install claude` | | **OpenCode** | `codeloom install opencode` | | **Codex CLI** | `codeloom install codex` | | **Gemini CLI** | `codeloom install gemini` | | **Cursor IDE** | `codeloom install cursor` | | **Windsurf IDE** | `codeloom install windsurf` | | **Cline** | `codeloom install cline` | | **Aider CLI** | `codeloom install aider` | | **任何 MCP 客户端** | `claude mcp add codeloom -- codeloom mcp` | 每个 `install` 命令都会写入上下文规则,并在支持的平台上注册 hooks。对于 OpenCode,它还会安装一个插件,该插件会**在调用 grep/glob 之前自动注入图谱上下文**,你的 agent 无需主动请求即可获得结果。使用 `codeloom uninstall ` 进行卸载。 ## 功能特性 ### 搜索优先于 Grep 5 信号 HybridRAG 将代码向量搜索、文本向量搜索、图谱扩展、FTS5 关键词和社区信号融合为一个带子图边的排名结果集。`--kind`、`--file` 和 `--include-tests` 过滤器可以在不重新运行的情况下缩小结果范围。 ### 自信修改 在修改前运行 `impact` 以查找每个调用方。运行 `context` 获取完整的 symbol 概览、社区、所有关系以及源代码片段。修改后运行 `detect_changes` 查看哪些节点受到影响。 ### 自动上下文 OpenCode 插件会挂钩到 grep/glob 调用中,使用查询语句运行 `codeloom search`,并将结果直接注入到 agent 的会话中,图谱上下文会自动出现,无需显式调用。 ### 自动重建 Stop/SessionEnd hooks 通过 `git diff` 检测更改的文件并触发增量重建。锁文件可防止并发重建。完全无需人工干预,每次会话后图谱都能保持最新。 ### 增量与高速 SHA-256 内容哈希会跳过未更改的文件。热启动 PageRank 会重用之前的重要性得分。**并行提取** (ProcessPoolExecutor) 将全量构建速度提升了 24-64%。典型的增量构建:**无更改约 0.4 秒,有更改约 4 秒**,比全量构建快 95% 以上。**模型预热** (`--warmup`,默认开启) 会在 MCP 服务器启动时预加载 embedding 模型,从而使首次搜索极快——使用 `--no-warmup` 禁用可节省约 150MB RAM。 ### 100% 本地 + MIT 协议 没有云服务,没有 API 密钥,没有遥测。使用 SQLite + FAISS 进行存储,使用 sentence-transformers 进行 embedding。所有数据都保留在你的机器上。采用 MIT 许可协议,没有商业限制,没有许可摩擦。 ## 性能表现 基准测试在 2023 款 MacBook Pro (M2 Pro, 32GB RAM) 上进行。所有构建均使用 并行提取(默认:`os.cpu_count()` 个工作进程)。 ### codeloom 自身的代码库(约 3,500 行代码,90 个文件,1,300 个节点) | 操作 | 耗时 | |-----------|------| | 全量构建 | ~14s | | 增量构建(有更改) | ~4s | | 增量构建(无更改) | ~0.4s | | 冷搜索(双模型) | ~2.8s | | 冷搜索(`--fast`) | ~0.2s | | 热搜索 | ~0.08s | | 缓存搜索 | <1ms | ### 合成压力测试(不含 embeddings) | 数据集 | 文件数 | 节点数 | 构建时间 | 峰值内存 | |---------|-------|-------|-----------|-------------| | 微型 | 10 | 119 | **0.7s** | 14 MB | | 小型 | 100 | 4,109 | **2.3s** | 16 MB | | 中型 | 1,000 | 101,009 | **53.1s** | 393 MB | | 大型 | 5,000 | 205,009 | **164.9s** | 814 MB | 并行提取使构建速度提升了 24-64%。紧凑的节点存储 (路径驻留、跳过空属性、持久化后无内存占用的源代码片段)将峰值内存降低了 10-22%。详细 分析请参阅 `docs/SCALING.md`。 - **Embedding 模型**:约 180MB,下载一次后缓存于 `~/.codeloom/models/` - **数据库**:约 2MB (SQLite + FTS5 + FAISS 索引) ## 完整 CLI 参考 默认情况下,所有命令都会输出紧凑的文本(专为供 AI agent 读取而设计)。 ### CLI 命令 | 命令 | 描述 | |---------|-------------| | `build ` | 构建代码图谱 (`--incremental`, `--git`) | | `watch ` | 实时文件系统监视器 | | `search ` | 包含子图和代码片段的 5 信号 HybridRAG | | `search-keyword ` | 仅限 FTS5 关键词匹配 | | `search-vector ` | 仅限向量相似度匹配 | | `search-graph ` | 仅限图谱扩展(从向量种子进行 BFS) | | `search-community ` | 仅限社区集群匹配 | | `stats` | 图谱统计信息 | | `node ` | 支持模糊匹配的节点详细信息 | | `communities` | 列出或搜索社区 | | `query` | 交互式搜索 REPL | | `export` | 导出为 JSON、GraphML 或 D3.js | | `visualize` | 交互式 HTML 可视化 | | `install [agent]` | 为 AI agent 安装 codeloom 集成 | | `uninstall [agent]` | 为 AI agent 卸载 codeloom 集成 | | `doctor` | 检查安装健康状态 | | `clean` | 删除 `.codeloom/` 数据库 | | `mcp` | 启动 MCP 服务器 | | `help [command]` | 显示分类帮助和使用示例 | ### 仅供 MCP 使用的工具 这些可通过 `codeloom mcp` 使用——请参阅上方的 [MCP 工具部分](#15-mcp-tools-at-a-glance): `impact` · `dependencies` · `context` · `detect_changes` · `rename` · `explain_flow` · `export_subgraph` · `list_repos` ## 环境要求 - Python 3.10+ - 约 180MB 磁盘空间用于存放 embedding 模型(首次使用时缓存) ``` # 可选:PDF、DOCX、XLSX、ODF 提取 pip install codeloom[docs] ``` ## 开发 ``` pip install -e ".[dev]" pytest ruff check codeloom/ ``` ## 许可协议 MIT 许可协议。详情请参阅 [LICENSE](LICENSE)。 ## 贡献 欢迎提交贡献!请查阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。
标签:AI编程助手, MCP, SOC Prime, 云安全监控, 代码图谱, 开发工具, 本地优先, 逆向工具, 静态分析