技术知识库 · 工具评测 · · 国科智飞 Gavin

代码知识图谱的两条路线:Understand-Anything 与 CodebaseMemory MCP

同一个问题,两条路线:一个把代码库变成可提交 Git 的交互图谱,一个把它装进毫秒级查询的 MCP 外挂大脑。

让 AI 写代码已经不难,难的是让它看懂一个十万行的遗留系统——逐个文件 grep 会让 Token 爆炸,向量检索又会丢掉调用链和类型关系。围绕"给 AI 一副代码结构大脑",开源社区出现了两条不同路线:Understand-Anything 做人和 Agent 都能用的理解前台,Codebase-Memory-MCP 做给 Agent 高频查询的图引擎。它们共享同一个判断:代码库需要的不是"更多搜索",而是一张预先建好的结构地图。

Understand-Anything:可提交 Git 的交互图谱

Understand-Anything(GitHub:Egonex-AI/Understand-Anything,MIT)是 Claude Code 原生插件,同时兼容 12+ 种 AI 编程工具,包括 Cursor、VS Code Copilot、Codex、OpenCode、Gemini CLI、Cline、KIMI CLI、Trae 等。仓库 2026 年 3 月创建,三个月内 Star 突破 5.5 万,是今年 AI Coding 工具栈里增速最猛的项目之一。

它的方法可以概括为"确定性的 Tree-sitter + 语义的 LLM":Tree-sitter 负责解析源码,抽取 imports/exports、函数、类、调用点与继承关系,生成同输入同输出的 importMap,并用指纹做增量变更检测;LLM 在解析结果之上生成自然语言摘要、标签、架构层归属、业务域映射和引导学习路线。结构边 100% 可复现,语义边体现意图——这个分工是它区别于纯 LLM 分析和老式静态图工具的关键。其知识库视图的灵感来自 Karpathy 提出的 LLM Wiki 模式。

工程上还有三点值得注意。一是多个专职 Agent 编排(扫描、文件分析、架构分析、导览生成、图校验、业务域与知识库分析),文件分析并行执行、每批 20–30 个文件,且只重算变更文件。二是产物可协作:图谱落在 .understand-anything/knowledge-graph.json,可以提交 Git 让团队共享,不必每个新人重跑一遍分析;10MB 以上的大图建议用 git-lfs 跟踪,否则容易养出胖仓库。三是一组命令覆盖真实场景:结构图、业务流图、Wiki 知识图三种视图,配合 /understand、/understand-dashboard、/understand-onboard、/understand-diff、/understand-explain、/understand-knowledge 等命令,从新人上手的引导路线到变更影响分析都有入口,输出支持中文等多语言。

部署与集成上有几点要提前知道:开发与运行依赖 Node.js >= 22 和 pnpm >= 10;安装脚本采用 curl-pipe 方式,属常见做法但仍需信任上游;README 里引用的个人账号路径已经 404,主仓在组织账号下,新人容易走错;演示仓库是 fork,效果需自查;可用性最终受制于它所依赖的 AI 编程 CLI。仓库有 180+ 个 open issue,说明迭代快的同时稳定性仍在打磨,放进主流程前建议先在小仓库试跑。

它的输出也不只是一张静态图:系统会生成按依赖顺序的 Guided Tour(新人引导路线),仪表盘支持模糊搜索与语义搜索,按角色调整细节层级——初级工程师看到解释,产品经理看到业务流;/understand-diff 给出改动的涟漪影响,post-commit hook 可以保持图谱增量更新。这些能力叠加起来,它更像一份"代码库的交互式说明书",而不是一张截图。与之对照的 Karpathy LLM Wiki 模式提供的是理念,Understand-Anything 提供的是工程化实现——先理解前者,再评估后者,顺序会更顺。

适合:需要 onboarding 材料和代码地图的团队,要把遗留系统讲给非技术决策者听的场景,以及愿意把图谱当作团队资产维护的团队。两个典型场景:新人入职第一周,用 /understand-onboard 生成带依赖顺序的阅读路线,比丢给他一份 wiki 链接有效得多;架构评审之前,用 /understand-domain 把业务流画出来,非技术决策者也能参与讨论。反过来,如果团队不做代码评审分享、也不维护图谱,它生成的资产会很快过期——图谱保持新鲜的前提是每次提交后增量更新,这一点需要流程配合,而不只是装个插件。

Codebase-Memory-MCP:给 Agent 的毫秒级代码图

Codebase-Memory-MCP(GitHub:DeusData/codebase-memory-mcp,MIT)是另一条路线:纯 C 加 tree-sitter 的单一静态二进制,把代码库索引进知识图谱,再通过 MCP 协议暴露给 AI 编程 Agent。底层论文标题为 Tree-Sitter-Based Knowledge Graphs for LLM Code Exploration via MCP(arXiv:2603.27277)。项目在 GitHub 上有约 6.7k Star。

它把代码拆成 13 种节点(Project、Package、Folder、File、Module、Class、Function、Method、Interface、Enum、Type、Route、Resource)和 15 种边(CONTAINS、DEFINES、IMPORTS、CALLS、HTTP_CALLS、IMPLEMENTS、HANDLES、WRITES、FILE_CHANGES_WITH 等),通过 14 个 MCP 工具供 Agent 调用:索引管理、图查询、Cypher 风格只读查询、调用链追踪、git diff 爆炸半径分析、架构决策记录(ADR)管理等。官方称覆盖 158 种语言,其中 Python/TS/JS/JSX/TSX/PHP/C#/Go/C/C++/Java/Kotlin/Rust 这 9 种额外接 LSP 补语义类型,其余走纯 tree-sitter AST。工程实现上是 RAM-First 流水线:LZ4 HC 压缩加内存 SQLite,索引完一次性 dump 再释放内存,这也是它敢做成单二进制零依赖的底气。

分发渠道也能说明它的工程野心:GitHub release、npm、PyPI、Homebrew、Scoop、Winget、Chocolatey、AUR、Nix flake 和 go install 都有入口,macOS / Linux / Windows 三端提供静态二进制,可选的 Graph UI 在 localhost:9749 提供 3D 图谱。项目还自称维护 5600 多项测试——这个数字来自官方 badge,未经独立验证,但方向可信。更值得留意的是 ingest_traces 工具:它能用运行时 trace 反查图谱里的 HTTP_CALLS 边是否与真实调用一致。图谱会过期是静态分析的通病,项目自己承认这一点,并给了一个校验手段。

性能数字全部来自官方 README 自测(单机为 Apple M3 Pro):Linux 内核 2800 万行、7.5 万文件约 3 分钟索引完,Django 6 秒;Cypher 查询低于 1ms,调用链追踪低于 10ms;自报 Token 节省 99.2%(412k → 3.4k)但未给方法学。论文摘要另有回答质量 83%、工具调用减少 2.1 倍的说法。这些数字有方向性参考价值,选型前建议在自己的仓库上复测——不同硬件上的真实耗时会差出数倍。

安全姿态是它最特别的地方:8 层构建期审计、SLSA-3 来源证明、Sigstore 签名、CycloneDX SBOM、SHA-256 校验与 70+ 杀毒引擎扫描,SECURITY.md 主动邀请白帽并给出响应承诺。但信任边界必须讲明白:它需要读整个代码库、写 Agent 配置文件、起后台进程——这是工具设计本身,不是 bug;默认 auto_index_limit 为 5 万文件,超大 monorepo 会被截断;Windows 上可能触发 SmartScreen 警告;项目经历过从 Go 到 C 的重写,C 版本的考验期还不长;维护者高度集中,存在单点风险。

适合:代码库大、Agent Token 成本敏感、需要结构化查询和变更影响分析的工程团队。不适合:不愿授权一个读全库、写配置的工具的团队,或者代码量小、人工翻两下就够用的小项目。放到竞争格局里看,它的位置也比较清楚:企业级代码搜索偏 SaaS 与自托管重量级方案,AI 编程 CLI 关注"写代码"本身,老牌静态分析工具没有 MCP 层——"MCP server 即代码库大脑"这个细分方向,它目前没有直接对位的开源竞品。

怎么选

两条路线并不冲突。Understand-Anything 偏"人机共读":图谱可看、可提交、可做新人培训,输出是一份团队资产;Codebase-Memory-MCP 偏"机器查询":索引快、查询毫秒级、接口标准化,目标是在 Agent 的一次任务里省掉几万 Token。一个交付物是图谱文件,一个交付物是运行时能力。条件允许的话,可以先用前者生成图谱作为团队底稿,再用后者给 Agent 接上高频查询。

如果只能选一个,判断标准是"这张图主要给谁看":人看的多,选 Understand-Anything;Agent 查的多,选 Codebase-Memory-MCP。这也是两条路线背后真正的分野——代码理解的消费者到底是人,还是机器。想清楚这一点,选型就不再纠结;而只要代码库还在增长,这两类能力迟早都会成为刚需。

落地上,建议先选一个中等规模的仓库做全量索引,记录索引耗时、查询延迟和 Token 消耗的变化,再决定是否推广到主仓库。两个工具都不需要一次性全量投入:Understand-Anything 可以从一个子目录开始,Codebase-Memory-MCP 也可以先只索引一个服务,验证收益后再扩大范围。

最后是数据边界:Understand-Anything 的图谱落在仓库内的 JSON 文件,随代码托管平台走;Codebase-Memory-MCP 强调 100% 本地索引、代码不出机器。对代码不能出内网的团队,这个差异比性能数字更重要——选型前先问清楚安全团队的看法。