Git: https://github.com/Ychangqing/IGraph
欢迎体验~ 拍砖😂
背景
之前一直在用 CodeGraph 配合 Claude Code 做代码理解,用了几个月发现一个核心问题:CodeGraph 本质上是个结构查询工具,不是语义检索工具。
什么意思呢?比如我想找"处理用户下单的逻辑",CodeGraph 要求你知道函数名叫什么(createOrder),然后它帮你展开调用链。但如果你只知道业务含义、不知道代码里的命名,它就无能为力了。
这就是我做 igraph 的原因——在代码图谱的基础上加了语义层,让你可以用自然语言搜代码。
igraph 和 CodeGraph 的核心区别
说实话两个项目底层技术有不少重合的地方(都用 Tree-sitter 解析、SQLite 存储、MCP 协议对接),但设计思路差别很大:
CodeGraph 的思路:建一张精确的代码结构图 → Agent 按图索骥
igraph 的思路:建图 + 给每个符号加语义摘要 + 向量化 → 支持自然语言检索
几个我觉得比较有价值的设计决策
1. 双通道检索 + RRF 融合
不单独依赖向量检索或全文检索,两个通道各有擅长的场景:
- 向量通道:语义匹配好("获取用户列表" ↔
fetchUserList)
- FTS5 通道:精确匹配好(搜
fetchUser 直接命中)
用 RRF 算法把两个通道的排名融合,只看排名不看原始分数,避免了两种分数量纲不同的问题。实测比单通道 Recall 高不少。
2. 多模态资源挂载
可以把 PRD 文档、数据库 Schema 挂进来。挂载后系统自动通过向量相似度把需求点和代码文件关联起来。
这样 Agent 在理解代码的时候能同时看到"这段代码对应哪个需求"、"操作的是哪张表"。
3. 优雅降级
这个是从实用角度出发的——不是每个人都有 LLM API 或 Embedding 服务。igraph 的策略是:
- 有 LLM → 生成高质量中文摘要
- 没有 → 用函数签名拼接一个启发式摘要,质量差但能用
- 有 Embedding → 向量 + 全文双通道
- 没有 → 纯 FTS5 全文检索
总之不管环境什么条件,igraph build 都能跑通,不会卡在"请先配置 API Key"。
4. 断点续跑
大仓库跑 LLM 摘要可能要几个小时,中途网络断了或者手动 Ctrl+C 了,下次跑会自动跳过已完成的文件,从断点继续。状态存在 SQLite 里,不靠临时文件。
不足和计划
老实说也有明显短板:
- 首次建库比 CodeGraph 慢(因为要跑 LLM + Embedding ,CodeGraph 只做 AST 解析)
- 语言支持目前只有 5 种( TS/JS/Python/Java/Go ),CodeGraph 支持更多
- 没有实时文件监听,增量更新要手动跑
igraph build(计划加)
- 向量检索质量取决于 Embedding 模型,换了模型得重新向量化
后续想做的:
- PRD 里的图片识别(目前只提取文本)
- 实时 watch 模式
- 更多语言支持
感兴趣的可以试试,有问题随时交流。