C
ChaoBro

Codegraph:给 Claude Code 建一个本地知识图谱,token 和工具调用双双减少

Codegraph:给 Claude Code 建一个本地知识图谱,token 和工具调用双双减少

Claude Code 在大型项目里有个老大难问题:它得一遍又一遍地扫描文件树、读取文件内容、搜索代码引用。每次对话,token 消耗像流水一样。

Codegraph 的思路很直接——提前把项目结构建成知识图谱,存在本地,Claude 用的时候直接查,不用每次重新读。

核心思路

传统的 Claude Code 工作流是这样的:

  1. 收到问题
  2. 读目录结构
  3. 根据目录决定读哪些文件
  4. 搜索特定符号的引用
  5. 反复迭代

Codegraph 把它变成了:

  1. 项目初始化时建好索引(只做一次)
  2. Claude 直接查询图谱,拿到文件关系和符号引用
  3. 省掉了反复扫描和搜索的步骤

最近一个 commit 很有意思:「refactor: Remove semantic search and vector embedding functionality」。作者删掉了语义搜索和向量嵌入功能,转向纯粹的结构化知识图谱。这个选择值得琢磨。

语义搜索听起来高大上,但在代码场景下其实不太实用。代码之间的关系是确定的——函数 A 调用函数 B,类 C 继承类 D。这种关系不需要「语义相似度」来判断,直接查图谱就行。砍掉向量搜索,减少了复杂度和维护成本,也降低了 token 消耗。

实测数据

项目文档里提到的核心收益:

  • 更少的 token:不需要反复传输文件内容给模型
  • 更少的工具调用:图谱查询一次到位,不用多轮搜索
  • 100% 本地:所有索引数据存在本地,不经过任何外部服务

256 次提交,18 小时前还在更新。最近在做 Rust resolver 的 workspace crate resolution 支持,说明项目在扩展语言覆盖范围。目前支持的语言应该不止一种(CLAUDE.md 里提到了 Svelte language support)。

适用场景

特别适合:

  • 大型代码库(几千个文件以上)
  • 需要频繁在 Claude Code 里做跨文件分析的场景
  • 对 API 调用成本敏感的团队

不太需要:

  • 小型项目(几十到几百个文件,Claude Code 原生的工具调用已经够快)
  • 项目结构变化极其频繁的场景(索引需要重建)

和其他方案的对比

Cline 有自己的一套上下文管理机制,但它是通用的,没有针对代码结构做专门优化。Codegraph 的差异化就在这里——它只做一件事:把代码结构变成图谱,让 Agent 查得更快。

这个思路对不对?我觉得大方向没问题。代码理解的核心是理解关系,不是理解「语义」。知识图谱天然适合表达关系,用在代码场景上比用在通用文本上更合理。

1300 多个 star,11 个 open issues,29 个 PR。项目处于活跃开发期,但还没到稳定 release 的阶段。如果你想用,建议先在小项目上试试水。

主要来源: