Codebase Memory:为AI编程助手节省50% Token

jasonzhou1993 发布于 2026-06-30 阅读 11

文章介绍了Codebase Memory MCP工具,它通过快速构建代码图谱(使用C和tree-sitter)来增强AI编程助手对代码库的理解,替代传统grep+read模式。该工具提供get_architecture、search_graph、trace_path等API,并通过hook机制在grep时自动附加结构信息,减少盲目读取文件,可节省约50% token消耗。文章还提供了安装步骤和作者的使用体验。

Image

你可能已经见过几十种这类“索引你的代码库”的工具了。但它们中的大多数并没有被我和我的团队真正采用——要么索引过时了,要么代理忘了调用那些特殊的 MCP 工具。

然而,Codebase Memory MCP 给人的感觉完全不同;它能在几秒钟内通过纯编程构建图来索引整个代码库,再加上 Hook 用法的巧妙设计,使其直接增强了 grep 工具。

在过去一周里,它实际上将某些任务的 token 使用量减少了约 50%,最重要的是,由于代理充分了解了改动的影响范围,我感到更加自信。

grep-and-read 模式及其局限性

1~2 年前,流行的方案是嵌入(embeddings)——将代码库索引为向量,检索与问题相关的片段。Cursor 的代码库索引就是这样工作的,许多 MCP 工具也复制了它。

但在实际使用中,语义检索并不可靠;它会拉出看起来相似的片段,但错过你实际需要的那个,而且无法跟踪跨文件的函数调用。因此,大多数团队最终回到了更简单且有效的模式:先 grep,再读取。这就是 Claude Code 所依赖的方式。

问题在于,一旦代码库变大,grep + read 就会失效。你问一个函数在哪里被使用,grep 返回一大片匹配结果,代理逐个打开文件——每个文件将几百行代码倒入上下文。在一个仓库中这样做是浪费的;而一个真实产品跨越 3-4 个仓库时,甚至无法将它们关联起来,因此代理要么猜测,要么提前停止,从而遗漏调用点。

Image

在几秒钟内映射代码库

但这些关系已经存在于你的代码中。import 表明一个文件依赖于另一个文件;函数调用表明谁调用谁;路由表明哪个处理程序响应哪个请求。你的代码库本身就是一个图——grep 只是将这些边当作纯文本读取,而丢弃了结构。

将这个结构作为上下文提供给代理,它就不必为了回答一个问题而读取 40 个文件。

Image

它的构建方式是纯 C 语言 + tree-sitter,整个过程中没有模型参与。而这正是它在嵌入工具失效时仍然能够发挥作用的原因。

它快得离谱——在约 3 分钟内索引完 Linux 内核(2800 万行代码),普通仓库只需几秒钟。而且由于没有 LLM 重新生成的成本,索引会始终与你的代码保持同步,而不会逐渐过时。

Image

为你的代理提供地图 + 智能 Hook 设计模式

Image

索引之后,代理将获得一个合适的工具包,与其实际工作方式相匹配:

  • get_architecture - 一次调用即可获得代码库结构的概览。
  • search_graph - 通过名称或含义,精确定位函数、类或路由的节点。
  • trace_path - 映射调用链:谁调用了这个,它又接触了哪些。
  • query_graph - 使用 Cypher 对图进行任意查询。我最喜欢的一个:在所有调用 handleOrder 的函数中,哪些还没有测试覆盖——用 grep 试试看能不能做到。
  • get_code_snippet - 获取某个符号的确切源代码。
  • detect_changes - 在 PR 审查期间将差异映射到架构上,以便代理看到变更的影响范围。

我最喜欢的部分:Hook

它处理了这样一个情况:像 Claude Code 或 CodeX 这样的编码Agent可能会忘记调用特殊的 MCP 工具,而回退到使用 grep/glob。

它没有对抗这种行为,而是在 grep 上安装了一个工具使用前的 Hook——因此当代理 grep 某个函数时,grep 正常执行,同时在同一步骤中,Hook 将该查询在图结构中查找,并将结构性的答案合并到结果中。代理永远不必记住一个特殊工具;它执行 grep,而图结构随之而来。

Image

在我自己的一些测试中,它可以节省约 50% 的 token 消耗,因为代理获得了代码库的适当地图,而不是盲目地 grep。

设置

有两种安装选项:基础版或带图可视化 UI 的版本。我选择了带 UI 的版本:

curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash -s -- --ui

这将把 MCP 放入你的编码Agent中。然后只需告诉代理:

Help me use Codebase Memory MCP

它会引导你完成索引,并根据你现有的配置应用合理的过滤器。在我的仓库中,它自动识别了一些生成的文件夹并跳过了它们。我的代码库是一个大型单仓库,包含许多子文件夹,它在几秒钟内就索引了整个代码库。

UI 版本还会在你的浏览器中提供图结构:

codebase-memory-mcp --ui=true --port=9749

我不确定 3D 视图是否真的有用,但看起来确实很酷。

它完全是开源的,因此你可以将其用于 Claude Code 或 Codex,并进行调整。

  • 原文链接: x.com/jasonzhou1993/stat...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论