最近在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吧」。
他得先花半天翻代码,搞清楚谁调谁,数据怎么流的,改了这里会不会影响那里。
然后才能动手。
太慢了。
CodeGraph和codebase-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在没有代码图谱的情况下改你的代码。
那个最先装上发电机的人不是赢家。
最先想明白这玩意到底能干什么的人,才是。