夜雨聆风学习资料网

ARTICLE · 1135870

给 AI 一张代码地图:CodeGraph 上手指南

给 AI 一张代码地图:CodeGraph 上手指南
技术折腾局 · 工具笔记2026.10.07

给 AI 一张代码地图 · CodeGraph

上手指南

让 AI 改代码之前,先把调用关系查清楚。

本地图谱MCP

把一个项目交给 AI,问它“登录流程是怎么走的”,它往往要先找入口、读文件,再顺着函数调用往下查。一个问题还没回答,工具已经调用了好几轮。

CodeGraph 想减少的,就是这段找代码、拼关系的过程。它先为项目建立本地代码图谱,让 AI 能按问题取到相关源码和调用路径。

01

PART

为什么 AI 读代码也需要地图

WHY CODEGRAPH

单看一个函数,AI 通常不难解释。真正费事的是把它放回项目里:谁调用它,参数从哪来,结果交给谁,改了以后会影响哪些地方。

 接手一个陌生项目 

想知道请求从接口入口怎么走到数据库,需要跨过路由、业务逻辑、数据访问等多个文件。文件找到了,调用链还得重新拼起来。

 准备改一个公共函数 

搜到它的定义只是开始,还要查调用方、引用关系,以及可能受影响的模块。只改眼前这一处,很容易漏掉其他使用位置。

 换个会话继续工作 

上一次梳理过的关系,如果没有可复用的索引,新会话往往又要从搜索和读文件开始。

CodeGraph 把这些结构信息提前整理出来。AI 再遇到“这段逻辑在哪”“这个函数会影响谁”一类问题,就有一份现成的地图可以查。

02

PART

源码怎样变成一张图谱

BUILD THE GRAPH

这里介绍的是 colbymchenry/codegraph,一个采用 MIT 许可证的开源项目。它会解析本地源码,提取函数、类、方法等符号,以及调用、导入、继承等关系,保存到项目里的 SQLite 数据库。

这里的“图谱”可以拆成两样东西:节点记录代码里的对象,边记录对象之间的关系。一个函数是节点,另一个函数调用它,就形成一条调用边。文件、类、方法,以及框架中的路由,也可以成为节点。

这张图不是把文件内容换个地方存起来。它的作用在于把分散在不同文件里的结构连接起来。建立图谱,大致经过下面三步。

NOTE 01提取符号:先知道代码里有什么

CodeGraph 使用 tree-sitter 等解析能力,把源码解析成语法树,再从中提取符号。函数或方法对应的记录中,会保留名字、类型、所属文件、起止行号,以及签名、注释等信息。

例如,两个文件里都定义了 login,只存名字就容易混淆。节点还需要带上文件和限定名称,才能区分“用户服务的 login”和“后台管理的 login”。这也是为什么查询时附上文件路径,通常比只说一个函数名更明确。

NOTE 02解析关系:知道一个名字实际指向谁

读到 auth.login(),还不能直接确定它调用了哪个实现。需要继续追踪 auth 的来源:它从哪个文件导入,是否改过名字,是否经过路径别名,方法属于哪个类。

因此,提取符号之后还有一层引用解析。CodeGraph 会结合导入、名称等信息,把调用连接到对应定义,也会处理继承、接口实现等关系。对支持的框架,还能把路由节点连接到处理函数。

这里要区分关系的含义:路由“引用”一个处理函数,类“继承”另一个类,函数“调用”另一个函数,三者都能帮助找代码,却不是同一种联系。沿调用链分析执行逻辑时,不能把所有连线都当成函数调用。

NOTE 03存进本地数据库:后续查询不用从头拼关系

提取出来的节点、关系和文件信息,保存在项目的 .codegraph/codegraph.db 中。这是 SQLite 数据库,查询入口可以先找到符号,再沿已有关系查相关实现。

其中的 FTS5 全文索引用于检索符号名、限定名称、注释和签名等字段。“本地代码图谱”保存的是项目结构,不会自动保存上一轮对话中讨论过的业务背景或决策。

这份图谱来自源码解析和关系解析,建索引的过程不依赖大模型为整个仓库逐个生成摘要。TypeScript、JavaScript、Python、Go、Java、Rust 等多种语言都在项目的支持范围内。

工作流示意,非产品界面截图

03

PART

一次查询,AI 会拿到什么

QUERY & CONTEXT

接入 AI 时,CodeGraph 提供 MCP 服务。当前默认开放的查询工具是 codegraph_explore。AI 把问题或相关符号、文件名交给它,工具会组织与问题相关的源码和关系信息。

可以把这个过程理解为:先找入口,再沿图谱查相关节点,最后选取需要阅读的源码。这是一种便于理解的概括,具体选取范围还会受查询内容、相关性和输出预算影响。

返回内容中,主要是按文件组织、带原始行号的源码,以及调用路径和可能的影响范围信息。比如 AI 查到认证服务时,不必只拿着一个函数名继续猜,可以直接看到实现,并顺着路径找到密码校验或令牌生成的位置。

它不会把整个仓库一次塞进上下文。关系较多时,相关代码的展示可能有详有略;一个较宽泛的问题,也不保证把所有关联位置都列全。发现某个分支没有展开,可以带着具体符号和文件范围继续查。

读到这些上下文后,AI 才继续解释流程、提出修改方案或编辑代码。代码图谱负责提供线索,后续的理解和判断仍由 AI 完成。

NOTE 01和搜索代码、向量检索有什么区别

假设你想弄清“登录失败后为什么没有返回错误”。关键词搜索、向量检索和图谱查询,能提供的线索有所不同。

检索方式
怎样帮助找到代码
关键词搜索
找出 `login`、错误信息等字面命中的位置。知道具体名字时很好用,但命中结果之间的联系还需要梳理。
向量检索
将内容转换成向量,按语义相似度找片段。适合寻找意思相关的实现,但“内容相似”本身不能证明两段代码存在调用关系。
CodeGraph 图谱查询
结合符号检索和已解析的结构关系,找入口、调用方及关联实现,再提供相应源码。适合追踪跨文件的联系。

CodeGraph 的这条查询路线以符号检索和图关系为基础,建索引不要求先给整个仓库生成向量。它也不排斥其他搜索方式:搜索可以帮助找线索,图谱帮助连接线索,阅读源码则用来确认具体行为。

所以,不能仅凭“登录”“认证”两段代码意思接近,就认定它们属于同一条调用链;也不能因为图谱里有一条边,就认为已经证明了所有运行时行为。

04

PART

快速上手

GET STARTED

官方流程可以分成三件事:安装命令行工具、接入自己的 AI 工具、为项目建立索引。下面走 npm 这条安装路径,以 Windows 的命令提示符 CMD 为例,电脑上需要先有 Node.js 和 npm。

STEP 01安装 CodeGraph

打开 CMD,执行:

CMD

npm install -g @colbymchenry/codegraph

安装完成后,重新打开一个终端,再进行下一步。没有 Node.js 的读者,也可以使用 README 提供的独立安装方式;本文先按同一条路径往下操作。

STEP 02接入你使用的 AI 工具

执行:

CMD

codegraph install

安装向导会让你选择要配置的 AI 工具,以及配置作用于所有项目还是当前项目。以 Claude Code 为例,选择它并按提示完成即可;使用 Cursor、Codex CLI、Gemini CLI、OpenCode 等工具时,选择对应目标。

这一步会写入所选工具的 MCP 配置及相关使用指引。完成后,重新启动 AI 工具,让配置生效。

注意,这一步只是完成接入,还没有给项目建立代码索引。

STEP 03为项目建立索引

回到 CMD,把下面的路径换成自己的项目目录,再执行:

CMD

cd /d "E:\projects\your-project"

codegraph init

codegraph init 会在当前项目创建 .codegraph/ 目录,并建立代码图谱。换一个项目,需要在那个项目里再执行一次。

完成后,可以查看索引状态:

CMD

codegraph status

只执行 codegraph install,却没有执行 codegraph init,是两回事。官方说明中,没有索引的工作区会让 MCP 服务保持未激活状态,并且不列出查询工具。

05

PART

用一条登录流程看懂查询结果

FOLLOW THE FLOW

在刚才建立索引的项目里打开 AI 工具。第一次使用,挑一个你知道入口的功能,让它查清完整流程,比直接要求“分析整个项目”更容易看出效果。

假设项目里有登录功能,可以这样问。下面的路径是示例,使用时换成自己的入口位置;如果还不知道入口,也可以先让 AI 查找:

对 AI 说

请用 CodeGraph 梳理这个项目的登录流程。

以 src/routes/auth.ts 中的 POST /login 为入口,列出关键函数、文件位置和调用路径。

说明密码校验与登录态生成分别在哪一步发生。

先分析,暂不修改代码。

NOTE 01从入口向下查:这个功能依赖哪些实现

为了说明怎样读结果,下面用一条简化的登录关系举例。这是讲解用的示意,不是某个仓库的实际查询输出:

调用关系示例

POST /login

  → loginHandler

    → AuthService.login

      → UserRepository.findByEmail

      → PasswordHasher.verify

      → TokenService.issue

路由节点关联到 loginHandler,处理函数再调用认证服务;认证服务关联到用户查询、密码校验和令牌生成。这些位置跨了几个文件,但有了关系和源码,AI 就能逐段说明它们如何配合。

这里还有一个容易忽略的区别:关系图展示连接,执行顺序要看源码。上面三个服务方法是否按顺序调用,密码校验失败后有没有提前返回,异常在哪里处理,必须读 AuthService.login 的实现才能确定。

因此,一个有用的分析不应该只给出箭头,还应该指出:校验失败的判断在哪一行,哪一个分支阻止了令牌生成,错误最终由谁返回。图谱帮 AI 找到要读的地方,源码给出答案。

NOTE 02反过来查调用方:改这个函数会影响谁

如果准备把密码校验函数的返回值从布尔值改成一个结果对象,就需要从 PasswordHasher.verify 反过来查调用方。下面的符号和路径同样是示例:

对 AI 说

我准备把 src/security/password.ts 中 PasswordHasher.verify

的返回值从 boolean 改为 { valid: boolean, reason?: string }。

请用 CodeGraph 查找直接调用方及向上关联的调用路径。

结合调用处源码,说明哪些判断需要修改,哪些上层行为需要验证。

列出需要核对的测试;如果关系是推断出来的,请单独说明。

暂不修改代码。

这时需要分清两类位置。直接调用方可能要修改条件判断,例如原来的 if (!verify(...)) 不能照搬到返回对象的版本中;更上层的登录接口则未必需要改代码,但要验证失败响应、成功登录等行为是否仍然正确。

如果密码重置等流程也调用了同一个校验函数,它们同样需要检查。相反,用户查询函数虽然和校验函数出现在同一条业务链上,也不能仅凭“有关联”就认定它必须修改。

这就是查影响范围的意义:先整理候选位置,再看每一处怎样使用结果,形成具体修改和测试清单。图谱提供关联范围,代码和测试决定哪些影响真正成立。

NOTE 03代码改了,图谱会不会过时

AI 工具启动 CodeGraph 的 MCP 服务后,会监听源码变化,自动增量更新索引。正常使用时,不必每改一个文件就手动同步。

更新需要一个短暂的处理窗口。官方文档说明,查询结果涉及尚未同步的文件时,会提示 AI 直接读取最新文件;服务重新连接时,也会检查会话关闭期间的代码变化。需要排查索引状态时,再用 codegraph status 查看。

06

PART

本地图谱,也有使用边界

PRIVACY & LIMITS

NOTE 01本地保存,不等于整个 AI 工作流都离线

源码解析、关系查询和索引存储在本机完成,数据库位于项目的 .codegraph/ 中。CodeGraph 的索引和查询不需要额外配置模型 API Key。

但 AI 助手拿到查询结果后,如果使用的是云端模型,这些源码片段仍可能作为模型上下文发出去。处理公司代码时,需要同时看 AI 工具的数据使用设置和组织要求。

另外,当前项目提供匿名使用统计,官方说明涉及命令、工具、语言等使用情况,不包含源码、路径或查询内容。不想参与,可以执行:

CMD

codegraph telemetry off

安装、升级和版本检查也可能联网。因此,“图谱保存在本地”不能直接理解为运行过程中完全没有网络请求。

NOTE 02少找文件,不代表每次都更省钱

项目公布了工具调用次数、耗时和 Token 等指标的对比测试。结果会受问题类型、模型和仓库结构影响,不能把某个平均节省比例直接套到自己的项目。

官方还专门讨论了上下文占用:一次返回较完整的源码,可能减少反复查询,却让更多检索内容留在会话里。长时间连续追问时,这部分内容也会占据上下文窗口。

先用自己熟悉的一条调用链做对照:它是否更快找到入口,是否少漏调用方,结果能否帮你做决定。这样的比较比只盯一个节省百分比更实用。

NOTE 03调用关系查到了,修改仍要验证

代码图谱主要描述能从源码中解析出的结构关系。有些联系比较直接,有些则需要推断。官方文档提到,回调注册、事件通道、接口到实现等部分关系,会通过专门的规则补充,并标记为 provenance: 'heuristic',同时记录相关的连接位置。

推断关系是排查线索,不是实际运行记录。 例如,通过事件名称找到生产者和消费者,可以提示 AI 去检查对应代码;至于消费者这次有没有被注册、当前配置是否启用、实际传入了什么数据,还需要结合环境确认。

动态加载、反射、运行时配置,以及外部系统的响应,也可能超出静态关系能确定的范围。再加上检索结果可能只展开相关的一部分,AI 没有看到某个调用方,不等于它一定不存在。

影响范围适合用来列检查清单,修改完成后依然要跑相关测试。先挑一个常用项目,把“找入口、查调用链、再动手修改”这条流程用顺,CodeGraph 的价值就比较容易看出来。

参考资料

SOURCE

资料核对:2026 年 10 月 7 日;截至核对日,最新发布版本:v1.6.2。

〔01〕CodeGraph 项目与 README

https://github.com/colbymchenry/codegraph

〔02〕官方快速上手

https://github.com/colbymchenry/codegraph/blob/main/site/src/content/docs/getting-started/quickstart.md

〔03〕安装与 AI 工具接入

https://github.com/colbymchenry/codegraph/blob/main/site/src/content/docs/getting-started/installation.md

〔04〕MCP 工具说明

https://github.com/colbymchenry/codegraph/blob/main/site/src/content/docs/reference/mcp-server.md

〔05〕图谱中的节点与关系

https://github.com/colbymchenry/codegraph/blob/main/site/src/content/docs/core-concepts/knowledge-graph.md

〔06〕引用解析与推断关系

https://github.com/colbymchenry/codegraph/blob/main/site/src/content/docs/core-concepts/resolution.md

〔07〕节点类型与符号信息

https://github.com/colbymchenry/codegraph/blob/main/src/types.ts

〔08〕本地数据库与 FTS5 索引

https://github.com/colbymchenry/codegraph/blob/main/src/db/schema.sql

〔09〕查询输出与代码选取设计

https://github.com/colbymchenry/codegraph/blob/main/docs/design/adaptive-explore-sizing.md

〔10〕MCP 查询实现

https://github.com/colbymchenry/codegraph/blob/main/src/mcp/tools.ts

〔11〕向量检索概念:Qdrant 官方文档

https://qdrant.tech/documentation/manage-data/vectors/

〔12〕索引与自动同步说明

https://github.com/colbymchenry/codegraph/blob/main/site/src/content/docs/guides/indexing.md

〔13〕匿名统计与关闭方式

https://github.com/colbymchenry/codegraph/blob/main/TELEMETRY.md

〔14〕检索结果的上下文占用

https://github.com/colbymchenry/codegraph/blob/main/docs/benchmarks/residual-context-occupancy.md

〔15〕v1.6.2 发布记录

https://github.com/colbymchenry/codegraph/releases/tag/v1.6.2

相关学习资料