最近在GitHub上瞎逛的时候,发现了两个特别有意思的项目。

一个叫 CodeGraph,56.6k星,3.5k fork,作者是一个叫colbymchenry的老哥。

另一个叫 codebase-memory-mcp,23.2k星,1.7k fork,背后的组织叫DeusData。

两个项目做的事情几乎一模一样,都是给AI编程助手做一个代码知识图谱的MCP服务器。

但是,星数差了一倍多,功能深度也差了一倍多。

有意思的是,星多的那个,功能反而少。

这就让我来了兴趣。

先说说这事儿是干嘛的

你现在用Claude Code也好,用Cursor也好,用Codex也好,让AI帮你改代码的时候,它第一件事是干嘛?

grep,find,read。

一个文件一个文件地翻。

一条函数调用链,它得先grep找到函数定义,再read那个文件,再grep找到调用这个函数的地方,再read那些文件。来来回回,十几二十次工具调用就出去了。

你想想看,一个几千文件的项目,AI光是搞清楚代码结构,就要花掉几千个token,然后才开始干正事。

这就像你雇了一个新员工,给了他一个几十万行的项目,没给文档,没给架构图,就说「你改一下这个bug吧」。

他得先花半天翻代码,搞清楚谁调谁,数据怎么流的,改了这里会不会影响那里。

然后才能动手。

太慢了。

CodeGraphcodebase-memory-mcp干的就是同一件事,就是在AI动手之前,先把整个代码库变成一张知识图谱。

每个函数、每个类、每条调用关系、每个路由,全是图上的节点和边。

AI来了,不用一个文件一个文件翻,直接查图。

「这个函数被谁调用了?」图上一跳就出来了。「改了这个变量会影响哪些地方?」一个查询全出来了。

这就是代码知识图谱的价值。

CodeGraph:消费级的精致体验

先说CodeGraph。

56.6k星,这个体量在GitHub上已经是顶流了。你看那个commit历史,606个commit,维护得非常勤。

装起来特别简单,curl一行命令,不需要你本地有Node.js,它自带打包好的运行时。装完之后cd到你项目目录,codegraph init,完事。它会在你项目下建一个.codegraph目录,把整个代码库的图谱建好。

然后它有一个特别聪明的自动同步机制,这块是我觉得它做得最用心的地方。

你写代码的时候,文件一改,它后台的文件监听器就捕获到了,等个2秒防抖,然后自动重建索引。你的图谱永远是新的,不用手动跑同步。

更骚的是,在重建索引的那个短暂窗口里,如果AI正好来查一个正在更新的文件,它会在这条结果前面插一个⚠️提示,告诉AI「这个文件还在同步中,你直接Read原文吧」。

我第一次看到这个设计的时候,就愣了一下。

这太细了。

它不是假装自己永远是对的,而是大方承认「我可能还没跟上」,然后给AI一个明确的信号。

这种诚实的设计,我特别喜欢。

再说它的语言覆盖,24种语言,TypeScript、Python、Go、Rust、Java这些都支持。

还有一个很骚的能力,它能识别Web框架的路由文件。Django的urls.py、Flask的@app.route、Express的app.get,它都能认出来,然后把URL路由和对应的handler函数连起来。你问「这个接口被哪些URL调用了」,它能直接告诉你。17个框架都认。

说实话,这玩意作为一个工程产品,打磨得是真好。安装丝滑,自动同步细致,框架路由感知贴心。

但是。

如果你看它的MCP工具面,只有一个,叫codegraph_explore。

就一个。

什么调用图、影响分析、全文搜索,全塞在这一个工具里。AI问什么,它自己去判断该返回什么。简洁是简洁,但功能深度上,就有点不够看了。

特别是当你看到另一个选手的时候。

codebase-memory-mcp:工程级的瑞士军刀

DeusData的codebase-memory-mcp。

23.2k星,星数只有CodeGraph的一半不到。但1,103个commit,几乎是CodeGraph的两倍。

1103个commit啊朋友们,这代码量摆在这里。

说实话,我一开始看到它的星数只有CodeGraph一半的时候,是有点没当回事的。星少嘛,潜意识就觉得可能没那么成熟。

结果点进去一看,差点给我椅子坐翻。

这个项目的画风完全不一样。

纯C的单二进制

首先它是纯C写的。

纯C。

单静态二进制,零依赖。macOS、Linux、Windows三个平台,下载下来一个文件,跑install命令,完事。不需要任何运行时,不需要任何包管理器,不需要Docker。

你想想看,一个代码知识图谱引擎,用纯C写,这意味着什么。

快。

真的就是快。

  • Linux内核,28M行代码,75K个文件,3分钟建完索引。4.81M个节点,7.72M条边。
  • Django整个项目,6秒
  • 一个Cypher查询,不到1毫秒
  • 一个名字搜索,不到10毫秒
  • 死代码检测,150毫秒

这些数字是什么概念,你打开一个几百MB的Excel都要转几秒。它扫完整个Linux内核的代码结构,3分钟。

太离谱了。

158种语言

然后是语言覆盖。158种。

CodeGraph是24种,它是158种。

这不是一个数量级的差距。158种语言背后用的是tree-sitter,一个被几乎所有主流编辑器和工具链采用的解析框架。所有语法分析器都打包进了二进制,不用装任何东西。

Hybrid LSP:语义级别的理解

更猛的是,它有一个叫Hybrid LSP的东西。

什么是Hybrid LSP呢,就是tree-sitter做完语法解析之后,它还会对11种主流语言做一层语义类型推断:

Python、TypeScript、PHP、C#、Go、C、C++、Java、Kotlin、Rust。

参数绑定、返回类型推断、泛型替换、JSX组件分派、PHP的命名空间和late-static-binding、C#的LINQ方法语法、Java的类层级和重载、Kotlin的扩展函数、Rust的trait方法。

每一个都是对应语言的标准类型系统问题。

这不只是能解析代码,这是能理解代码。

14个MCP工具

再说工具数。CodeGraph是1个MCP工具,codebase-memory-mcp是14个

14个。

search、trace、architecture、impact analysis、Cypher查询、dead code detection、cross-service HTTP linking、ADR管理,你能想到的代码分析功能它基本都有。

我挑几个特别有意思的说说。

死代码检测

它能把整个代码库里没有任何调用者的函数全找出来,自动排除入口函数。这种功能很多商业静态分析工具都要收钱,它免费给你了。

语义搜索

这个太猛了。它在二进制里内置了一个Nomic嵌入模型,768维int8向量。你不需要API key,不需要Ollama,不需要Docker。它直接做向量语义搜索,11种信号综合打分,TF-IDF、API签名、AST特征、数据流、MinHash近似克隆检测,全都有。

Cypher查询

就是图数据库那种查询语言。

MATCH (f:Function)-[:CALLS]->(g)
WHERE f.name = 'main'
RETURN g.name

你能像查Neo4j一样查你的代码库。

跨服务链接

它能把HTTP路由和调用方连起来,gRPC、GraphQL、tRPC都能检测。还能检测Socket.IO和EventEmitter的通道模式,哪个emit对应哪个listen on,全给你连上。

跨仓库情报

多个repo索引到同一个store里,它会在不同repo的节点之间建CROSS边。你能在多个服务之间看到完整的调用链路。还带一个3D可视化UI,localhost:9749打开就能看。

团队共享图

还有一个东西我觉得特别实用。团队共享图

你在repo里提交一个.graph.db.zst文件,队友clone下来之后不用重新建索引,直接解压用。zstd压缩,8到13倍的压缩比。两级导出,最佳质量和快速增量。

这解决了一个很实际的问题。就是每个开发者都要在自己机器上跑一遍索引。大型项目索引几分钟到几十分钟,每个人跑一遍就是巨大的时间浪费。有了这个共享图,一个人建好,全队直接用。

两个设计哲学的碰撞

看到这里的时候,我已经有点坐不住了。

这两个项目的差距,不是功能多几个少几个的差距。是设计哲学的差距。

CodeGraph是一个工程实用主义产品。

它的信条是,快,简单,开箱即用。一个MCP工具让AI自己去判断该查什么,自动同步做到极致,三重保鲜机制确保图谱永远新鲜,17个Web框架的路由都能认。

它像一个精心打磨的消费产品。你不需要知道里面怎么运作,拿来就能用。

codebase-memory-mcp是一个研究驱动的工程艺术品。

arXiv上有一篇论文专门讲它的设计和基准测试。31个真实仓库评测,83%的答案质量,10倍更少的token,2.1倍更少的工具调用。

纯C单二进制,158种语言,14个MCP工具,语义向量搜索,Cypher查询,死代码检测,跨服务链接,跨仓库情报,团队共享图,3D可视化,SLSA 3安全认证,每个release都过VirusTotal扫描。

它像一把瑞士军刀。什么都有,什么都能干,但你得知道怎么用。

选哪个?

这么说吧,如果CodeGraph是iPhone,codebase-memory-mcp就是一台root过的Android,加上Termux,加上一整套Linux工具链。

你说哪个好?

看你是什么人。

如果你是一个几十人团队的Tech Lead,手下管着一个中等规模的Web项目,CodeGraph够用了,而且体验更好。装上就跑,框架路由都认,自动同步无感,你的团队不需要学习曲线。

如果你是在一个多语言、多仓库、几十万行代码的大型项目里,需要死代码分析、跨服务调用链追踪、团队共享索引、语义搜索,那codebase-memory-mcp给你的东西,是CodeGraph给不了的。

那个关于电力的故事

但是回到最根本的问题,这两个项目都在解决同一件事。

1880年代,电力开始在美国普及。

很多工厂主花大价钱买了发电机和电动机,装在自己的工厂里。但是装完之后,很多人发现生产效率并没有显著提升。

因为他们只是用电动机替代了蒸汽机,整个工厂的布局、流程、管理方式都没有变。

真正吃到电力红利的,不是最早装发电机的那波人,而是最早想明白电力到底能干什么的那波人。流水线、标准化零件、电力驱动的传送带,这些才是电力革命的真正产物。

AI编程助手现在也在这个阶段。

我们有了Claude Code,有了Cursor,有了Codex,有了Gemini CLI。但这些工具理解代码的方式,还是grep加find加read,跟人类工程师手动翻代码没有本质区别。

代码知识图谱做的事情,就是给AI一个结构化的地图,让它不用在文件海洋里捞针,而是直接在图谱上导航。

这就像从蒸汽机到电动机的升级。不是让AI翻代码翻得更快,而是让它根本不需要翻。

CodeGraph和codebase-memory-mcp,就是两种不同的电力方案。

一个是消费品级的,拿来就能用,覆盖你最常用的场景,体验丝滑。

一个是工程级的,功能更全更深,能覆盖更大的代码库、更多的语言、更复杂的分析需求,但需要你花点时间理解它的14个工具。

大时代

大时代啊,朋友们。

AI编程助手从「能用」到「好用」的这个阶段,代码知识图谱这种基础设施,一定会成为标配。

就像今天你不会让一个新员工在没有文档的情况下接手项目一样,明天你也不会让一个AI在没有代码图谱的情况下改你的代码。

那个最先装上发电机的人不是赢家。

最先想明白这玩意到底能干什么的人,才是。