✨步子哥
@steper · 2026年08月06日 22:01 · 0 浏览

当 AI 读完你的代码:code-review-graph 给代码库建了一张持久地图

当 AI 读完你的代码:code-review-graph 给代码库建了一张持久地图

你让 Cursor 帮你改一个函数,它先花 30 秒扫一遍整个仓库。你再让它改隔壁那个函数,它又扫 30 秒。同一个仓库,同样的结构信息,每次都从头读起。

这不是 AI 不够聪明,是它没有地图。

tirth8205/code-review-graph 解决的就是这件事:给你的代码库建一张持久化的结构地图,让 AI 工具只读它真正需要的那一小块。

问题:AI 编程工具的"金鱼记忆"

当前 AI 编程工具(Cursor、Claude Code、Copilot)有一个共同的隐藏成本:每次对话都从零开始理解代码库

典型流程是这样的:你问"这个函数在哪被调用",AI 工具要么 grep 全仓库(慢且噪音多),要么用向量检索找相似文本片段(可能漏掉精确调用关系)。无论哪种方式,每次对话都要重新扫描,每次扫描都要把结果塞进上下文窗口。

一个 10 万行的代码库,AI 工具每次对话可能要消耗 5 万 token 只是为了"理解上下文"。这就像你每次走进办公室都要重新认路——门在哪、工位在哪、会议室在哪,全都要重新摸索。

根本问题是颗粒度错配:AI 工具在"文件+行"颗粒度上工作,但代码的结构信息存在于"函数+调用关系+模块依赖"颗粒度。用错的颗粒度去理解代码,就像用显微镜看地图——放大倍数够了,但你永远看不到整条路。

code-review-graph 的方案:先建地图,再问路

code-review-graph 的核心思路分三步:

第一步:用 Tree-sitter 做结构化解析。 Tree-sitter 是 GitHub 开源的增量解析库,能在毫秒级别把源代码解析成语法树。code-review-graph 不依赖语言特定的 LSP(Language Server Protocol),而是用 Tree-sitter 统一处理所有语言——Python、TypeScript、Rust、Go 都走同一条管道。

第二步:把解析结果存成图。 不是文件树,不是符号表,而是一张关系图:函数 A 调用函数 B,类 C 继承类 D,模块 E 依赖模块 F。这张图存在 SQLite 里,持久化在本地。下次 AI 工具问"这个函数被谁调用",不用扫仓库,直接查图。

第三步:通过 MCP 暴露给 AI 工具。 MCP(Model Context Protocol)是 Anthropic 推出的标准协议,让 AI 工具以统一方式访问外部数据源。code-review-graph 实现了 MCP server,任何支持 MCP 的 AI 工具(Claude Code、Cursor 等)都能直接查询这张代码图。

为什么"地图"比"搜索"快

传统 AI 编程工具的上下文获取方式是搜索驱动:你问一个问题,它搜索相关文件,把搜索结果塞进上下文。每次搜索都是从零开始。

code-review-graph 的方式是地图驱动:它预先建好代码的结构图,AI 工具的问题变成图查询而不是文本搜索。

维度搜索驱动地图驱动
首次查询全仓库扫描查图(毫秒级)
后续查询重新扫描查图(毫秒级)
上下文消耗5万+ token几百 token
调用关系grep 模糊匹配精确图边
增量更新只更新改动部分
关键数据:code-review-graph 的 SQLite 图查询通常在 1-5ms 返回结果,而传统的 grep 全仓库扫描在 10 万行代码库上需要 200-500ms。100 倍速度差不是来自更快的引擎,而是来自更聪明的颗粒度。

这和 RAG 不一样

有人会问:这不就是代码版的 RAG(Retrieval-Augmented Generation)吗?

不一样。RAG 用向量检索找"语义相似"的文本片段,但代码的调用关系不是"语义相似"能捕捉的。函数 A 调用函数 B,可能两个函数名字完全不像、语义完全不同,但调用关系是精确的结构事实。

RAG 的核心假设是"语义相似 ≈ 相关",这个假设在规则世界不成立——Euclid-MCP 的实验已经证明,480B 参数的大模型在 1000 条事实的规则推理上和 8B 模型一样烂。代码调用图就是典型的规则世界:A 调用 B,这是事实,不是概率。

code-review-graph 不做语义检索,做结构查询。它回答的不是"哪些文件和这个问题相关",而是"这个函数的调用者是谁、被调用者是谁、依赖什么模块"。精确事实,不需要概率。

"Local-first" 不是装饰

code-review-graph 强调"local-first"——所有数据存在本地 SQLite,不上传云端。这不只是隐私考量,是性能考量。

云端方案(如 Sourcegraph)的延迟在 100-500ms,本地 SQLite 查询在 1-5ms。对于 AI 编程工具来说,100ms 的查询延迟意味着每次对话多等 0.1 秒,一天累积下来就是几分钟。本地优先不是"隐私友好"的营销话术,是"快 100 倍"的工程选择。

概念谱系:从"暴力搜索"到"结构地图"

code-review-graph 的核心洞察可以放进一个更大的概念谱系:

  • 章鱼 RNA 编辑:DNA 预训练 + RNA 推理时计算,不改蓝图改施工图
  • 黏菌外化记忆:用黏液轨迹外化记忆,不需要神经元
  • 鸟类量子磁感应:放大器和传感器分开,分工比统一更有效
  • Euclid-MCP 推理外包:让 LLM 当诗人,让 Prolog 当会计
  • code-review-graph 结构地图:把代码结构外化成持久地图,AI 工具只查询不扫描
这五个例子指向同一个原则:不是更强地做同一件事,而是换一个层面解决问题。AI 工具不需要更强的搜索能力,需要的是一张预先建好的地图。

谁该用

  • Cursor/Claude Code 用户:如果你的代码库超过 1 万行,每次对话的上下文扫描成本已经显著。code-review-graph 能把上下文消耗降一个数量级。
  • MCP 生态参与者:code-review-graph 是 MCP 协议在代码智能领域的标杆实现,值得研究其接口设计。
  • 代码库维护者:即使不用 AI 工具,code-review-graph 的结构图也能帮你理解大型代码库的依赖关系。

局限

  • 只支持 Tree-sitter 能解析的语言:冷门语言可能不支持
  • 图的质量取决于 Tree-sitter 语法树:语义层面的复杂关系(如设计模式)无法捕捉
  • 增量更新机制还在早期:大型 monorepo 的增量性能未经充分验证

结尾

AI 编程工具的下一个突破不会来自更大的模型,而来自更好的上下文工程。code-review-graph 把"理解代码"这件事从"每次重新搜索"升级到"查一张持久地图",这和人类程序员的工作方式一致——你不会每次走进办公室都重新认路,你有一张内化的地图。

地图比搜索快 100 倍,不是因为地图的引擎更强,而是因为地图不需要每次都重新画。

---

GitHub: https://github.com/tirth8205/code-review-graph 官网: https://code-review-graph.com MCP 协议: https://modelcontextprotocol.io

暂无表态

想参与讨论或点赞?登录后使用完整功能

💬 讨论回复(0)
暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens