网易首页 > 网易号 > 正文 申请入驻

手把手教你用Claude Code打造本地代码知识图谱

0
分享至

你有没有遇到过这种情况:在 Claude Code 里问一句「这个认证流程是怎么跑的?」、「我改这个类会影响哪里?」或者「帮我 review 一下最近的改动」,它就开始一轮又一轮地搜索、读取、拼上下文。

在小项目里,这种方式问题不大。文件数量少,调用链简单,AI 临时读几轮也能凑出答案。但只要项目变成 monorepo,或者后端服务开始拆成多个模块,AI 每次重新理解上下文的成本就会变得非常明显。

时间一长,你会发现一个很现实的问题: AI 对代码库的理解,很难持续积累。

本文要讲的,就是如何用 code-review-graph 给本地代码仓库建立一张知识图谱,再通过 MCP 接入 Claude Code。这样 Claude code 不再只会反复读文件,而是能像查地图一样查询代码结构、依赖关系、核心节点和影响范围。


为什么 AI 需要一张代码地图 反复读代码,是 AI 编程的隐形成本

现在的 AI 编程工具很强,但它们在处理代码库时,仍然有一个天然短板:缺少稳定、结构化、可复用的项目记忆。

你让 Claude Code 改一个接口,它需要先理解相关文件;你让它做一次 Code Review,它也需要先判断哪些文件可能受影响。这个过程本质上就是不断把代码重新塞进上下文,让模型现场理解。

对于小项目,这种方式可以接受。可一旦项目有几千、上万个文件,问题就来了:每次任务都重新扫描,既慢,也贵,还容易把注意力带偏。

最典型的情况是,你只改了一个底层函数,AI 却读了一堆无关页面、配置、脚手架代码。上下文窗口看起来被填满了,但真正有用的信息并不多。

本地知识图谱 + MCP 解决了什么

所谓本地代码知识图谱,本质上是把仓库里的代码、文档、图片、模块关系、调用关系、语义关系,抽象成节点和边。

函数是节点,类是节点,文档可以是节点,截图也可以是节点。调用关系、继承关系、导入关系、文档引用、功能关联,则变成节点之间的边。

这样一来,Claude Code 面对的就不再是一堆散落的文件,而是一张可以查询、遍历、聚类、追踪路径的图。

MCP,也就是 Model Context Protocol,则负责把这张图暴露给 Claude Code。你可以把它理解成:AI 工具连接本地能力的一套标准接口。

流程大概是这样:

本地仓库

code-review-graph 构建图谱

本地图数据

MCP Server

Claude Code 查询节点、关系、影响范围

有了这层能力之后,Claude Code 就可以先问图谱:

  • • 谁调用了这个函数?

  • • 这个类被哪些文件引用?

  • • 改这里会影响哪些路径?

  • • 最近一次提交的风险点在哪里?

  • • 哪些测试可能需要一起看?

这和传统的「搜索关键词 → 读取文件 → 猜测关系」完全不是一个工作方式。

code-review-graph 工作原理

要理解 code-review-graph 的价值,先要理解它到底把代码变成了什么。


它不是简单做全文搜索,也不是给项目建一个普通索引。它做的是把代码库解析成一张结构化图谱:函数在哪里,类在哪里,谁调用了谁,哪些测试覆盖了哪些逻辑,这些关系都会被记录下来。

这样一来,Claude Code 不再只能靠「读文件」理解项目,而是可以先通过图谱判断:这次任务真正需要看的代码在哪里。

从代码到图谱:Tree-sitter、AST、节点与边

当你运行 code-review-graph build 时,它会先用 Tree-sitter 解析代码。


Tree-sitter 是一个解析器生成器,可以把源代码转成抽象语法树,也就是 AST。相比普通文本搜索,AST 能理解代码结构:哪里是函数定义,哪里是函数调用,哪里是类,哪里是导入语句。

code-review-graph 会从 AST 里提取这些信息,并构造成图谱里的节点和边:

  • 节点 :函数、类、导入语句、测试函数等代码实体。

  • :调用关系、继承关系、测试覆盖关系等结构联系。

比如 A 函数调用了 B 函数,这就是一条调用边;某个测试文件覆盖了某个业务函数,这也是一条测试覆盖边。

这个图谱的意义在于,它把「代码长什么样」进一步变成了「代码之间有什么关系」。而代码评审最需要的,恰恰就是这种关系。

本地 SQLite 图谱:代码不离开你的机器

解析完成后,图谱会存储在项目本地的 .code-review-graph/ 目录里,底层使用 SQLite。

这点很关键。它不需要你把代码上传到云端,也不依赖外部服务。对于企业内网项目、私有仓库、敏感业务代码来说,这种本地化设计会让使用成本低很多。

你的代码始终留在自己的机器上,Claude Code 只是通过 MCP 拿到经过筛选的上下文。

这也是它和很多「云端代码理解服务」最大的区别:它更像是给本地开发环境补了一层结构化索引,而不是把代码交给另一个平台托管。

blast-radius:让 AI 获取最小必要上下文

code-review-graph 最核心的能力,是 blast-radius 分析。


所谓 blast-radius,可以理解为一次改动会影响到的范围。你改了一个函数,它的调用者可能受影响;它依赖的函数可能需要一起看;相关测试也应该进入评审上下文。

一次影响范围分析大致会做这几件事:

  1. 1. 找到发生变更的文件和函数。

  2. 2. 追踪所有调用这个函数的地方。

  3. 3. 追踪这个函数调用的依赖。

  4. 4. 找到相关测试文件和测试函数。

  5. 5. 计算出受影响的最小文件集合。

最后,这份结果会通过 MCP 协议交给 Claude Code。Claude Code 拿到的就不再是整个项目,而是一份更聚焦的评审上下文。

这就是它的核心思路: 先用图谱缩小问题范围,再让 AI 在正确范围内做判断。

增量更新:让图谱跟着代码走

图谱如果每次都要全量重建,那体验也不会好。


code-review-graph 的做法是增量更新:每次保存文件或发生 git commit 时,它会计算变更文件的 SHA-256 哈希,只重新解析变化的文件,再根据图谱关系局部更新相关节点。

根据实际使用经验,一个 2,900 文件的项目,重新索引可以在 2 秒内完成

这意味着它不是一个「用一次就过期」的静态分析结果,而是可以随着你的开发过程持续更新。对 Claude Code 来说,这张图谱始终尽量接近当前代码状态。

快速上手指南

理解原理之后,我们进入实操。

1. 安装前准备

code-review-graph 需要 PYTHON 3.10 或更高版本。

建议先在终端确认一下版本:

python --version

如果版本低于 3.10,先升级 Python。包管理工具可以用 pip ,也可以用 pipx 做隔离安装;如果你习惯 uv ,也可以继续沿用自己的 Python 工具链。

2. 快速安装与构建图谱

最简单的上手方式是三步:安装、配置、构建。

# 安装
pip install code-review-graph

# 或者用 pipx 隔离安装
pipx install code-review-graph

# 自动检测并配置支持的平台
code-review-graph install

# 在当前项目构建代码图谱
code-review-graph build

install 命令会自动检测你本机安装了哪些 AI 编程工具,并尝试为它们写入配置。

目前素材中列出的支持平台包括:

  • • Claude Code

  • • Cursor

  • • Codex

  • • Gemini CLI

  • • Kiro

  • • GitHub Copilot(VS Code)

  • • GitHub Copilot CLI

配置完成后,记得重启编辑器或 AI 工具,让 MCP 配置生效。

3. 只接入 Claude Code

如果你只想给 Claude Code 配置,可以直接指定平台:

code-review-graph install --platform claude-code

它会做几件事:

  1. 1. 写入 Claude Code 的 MCP 配置。

  2. 2. 注入图谱感知的规则和提示。

  3. 3. 安装平台原生 hooks 或 skills,如果当前环境支持。

配置文件通常会落在 ~/.claude.json 或项目内的 .claude/settings.json

重启 Claude Code 后,可以直接对它说:

Build the code review graph for this project

Claude Code 会通过 MCP 调用对应工具,在当前项目里构建图谱。首次构建 500 个文件左右的项目,大约需要 10 秒。

4. 验证是否真的生效

配置写完,并不代表已经接入成功。

最直接的方法,是重新开一个 Claude Code 会话,然后问它:

如果我修改认证模块,会影响哪些调用路径?

如果 Claude Code 开始调用 get_impact_radius_toolquery_graph_toolsemantic_search_nodes 这类 MCP 工具,说明图谱已经正常接入了。

如果它还是大量使用 Grep、Read 之类的方式扫文件,那大概率是 MCP 没有正确加载,或者图谱本身没有构建成功。

常用技巧与最佳实践 Claude Code 里的 Slash Commands

安装完成后,在 Claude Code 里可以使用几个快捷命令。

命令

功能

/code-review-graph:build-graph

构建或重建代码图谱

/code-review-graph:review-delta

评审自上次 commit 以来的变更

/code-review-graph:review-pr

完整 PR 评审,包含 blast-radius 分析

这几个命令的价值在于,不需要你手动判断该查哪些文件。Claude Code 会通过 MCP 触发图谱查询,再把结果用于评审。

实际使用时,我更建议先从 /code-review-graph:review-delta 开始。它的范围比较明确,适合日常开发中检查当前改动有没有影响其他调用链。

常用 CLI 工作流

除了 Claude Code 里的斜杠命令,你也可以直接使用 CLI。

# 构建图谱
code-review-graph build

# 增量更新,只解析变化的文件
code-review-graph update

# 查看图谱统计
code-review-graph status

# 监听模式,文件改动时自动更新
code-review-graph watch

# 生成交互式可视化图谱
code-review-graph visualize

# 导出为其他格式
code-review-graph visualize --format graphml
code-review-graph visualize --format svg
code-review-graph visualize --format obsidian
code-review-graph visualize --format cypher

# 风险评分的变更影响分析
code-review-graph detect-changes

# 启动 MCP 服务器
code-review-graph serve

其中 watch 很适合长期打开。它会监听文件变化,自动保持图谱更新,避免每次手动执行 update

如果你只是临时体验,可以先用 buildstatus ;如果你准备长期使用,就建议把 watch 或 daemon 模式纳入日常工作流。

MCP Tools 怎么理解

code-review-graph 暴露了不少 MCP 工具,但日常使用不需要记住全部。

你只需要理解几个核心工具的定位:

  • get_minimal_context_tool :获取极简上下文,适合快速定位相关代码。

  • get_impact_radius_tool :计算某个变更的 blast radius。

  • get_review_context_tool :生成经过 token 优化的代码评审上下文。

  • query_graph_tool :查询调用者、被调用者、测试、导入、继承关系。

  • detect_changes_tool :对当前变更做风险评分和影响分析。

  • semantic_search_nodes_tool :按名称或语义搜索代码实体。

进阶一点,还可以用:

  • traverse_graph_tool :从某个节点开始做 BFS 或 DFS 遍历。

  • get_architecture_overview_tool :生成架构概览。

  • get_hub_nodes_tool / get_bridge_nodes_tool :寻找架构热点和关键连接点。

  • get_knowledge_gaps_tool :识别孤立节点、未测试热点等结构弱点。

不过在 Claude Code 里,大多数时候你不需要手动调用这些工具。你只要描述任务,Claude Code 会根据任务选择合适的 MCP 工具。

排除不需要索引的文件

如果项目里有生成文件、第三方代码、vendor 目录,可以用 .code-review-graphignore 排除。

在项目根目录创建:

.code-review-graphignore

示例内容:

generated/**
*.generated.ts
vendor/**
node_modules/**

如果当前项目是 git 仓库, code-review-graph 默认只索引被 git 追踪的文件,也就是 git ls-files 能看到的文件。 .gitignore 里的内容通常会自动跳过。

.code-review-graphignore 更适合用来排除那些已经被 git 追踪,但你不希望进入图谱的文件。

Windows 排障与配置示例

如果你在 Windows 上使用 Claude Code,遇到下面这类错误:

Invalid JSON: EOF while parsing
MCP error -32000: Connection closed

可以优先检查四件事:

  1. 1. 确保 fastmcp 版本 ≥ 3.2.4。

  2. 2. 不要在 MCP 配置里使用 cmd /c wrapper。

  3. 3. 直接调用 .exe 文件。

  4. 4. 设置 PYTHONUTF8=1 环境变量。

配置示例:

{
"mcpServers": {
"code-review-graph": {
"command": "C:\\path\\to\\venv\\Scripts\\code-review-graph.exe",
"args": ["serve"],
"env": { "PYTHONUTF8": "1" }
}
}
}

这个问题本质上通常不是图谱本身的问题,而是 MCP 服务器启动方式、编码环境或 Windows shell wrapper 导致连接提前关闭。

如果配置后还不稳定,可以先在终端直接运行:

code-review-graph serve

确认 MCP 服务器能正常启动,再回到 Claude Code 里排查配置路径。

多仓库与长期使用

如果你维护多个项目,可以使用 daemon 模式统一管理。

# 注册仓库
crg-daemon add ~/project-a --alias proj-a
crg-daemon add ~/project-b

# 启动守护进程
crg-daemon start

# 查看状态
crg-daemon status

# 查看日志
crg-daemon logs --repo proj-a -f

# 停止守护进程
crg-daemon stop

Daemon 会持续监听多个仓库的变化,自动更新图谱。对于同时维护多个服务、多个包、多个仓库的团队,这种方式会比每个项目手动 build 更省心。

结语

Claude Code 这类 AI 编程工具的问题,不是不会读代码,而是太依赖临时读取。

当项目越来越大,临时读取就会变成一种隐形成本:慢、贵、不稳定,而且很难稳定复用上一次理解过的上下文。

它不一定适合所有场景。

如果你只是改一个很小的单文件脚本,或者项目本身只有几十行代码,图谱构建带来的结构元数据可能反而显得多余。

但只要项目进入多文件、多模块、多调用链阶段,它的价值就会变得明显。

AI 编程的下一步,不只是让模型更强,而是让它拥有更好的项目记忆和结构化上下文。

如果你也在大项目里遇到过 Claude Code 反复读文件、上下文爆掉、代码审查成本过高的问题,可以先试着给仓库建一张图谱。

GitHub 地址 :https://github.com/tirth8205/code-review-graph

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
一座天坛,横跨51年:美国总统再次踏上中美交往的历史现场

一座天坛,横跨51年:美国总统再次踏上中美交往的历史现场

澎湃新闻
2026-05-14 13:34:30
特朗普走下车一瞬间,一只喜鹊忽然从天而降,稳稳的落在了旁边

特朗普走下车一瞬间,一只喜鹊忽然从天而降,稳稳的落在了旁边

漫川舟船
2026-05-14 16:49:29
看是御姐,脸还能打,肉却 “软趴趴” 了

看是御姐,脸还能打,肉却 “软趴趴” 了

飛娱日记
2026-03-13 11:31:29
释永信被一女子爆料:她们姐妹住少林寺3天,争着往释永信房间跑

释永信被一女子爆料:她们姐妹住少林寺3天,争着往释永信房间跑

江山挥笔
2026-03-23 15:40:31
白鹿迎来全网骂潮,是因为她踩中了,中国观众最讨厌的3个雷区

白鹿迎来全网骂潮,是因为她踩中了,中国观众最讨厌的3个雷区

阿凫爱吐槽
2026-05-14 02:15:54
一个地方官员看追觅“崩老头”

一个地方官员看追觅“崩老头”

无忌财谈
2026-05-13 20:32:36
河北一火锅店发生刑案,当地警方:36岁男子因琐事持刀杀害46岁女子,已被刑拘,请广大网民不信谣、不传谣

河北一火锅店发生刑案,当地警方:36岁男子因琐事持刀杀害46岁女子,已被刑拘,请广大网民不信谣、不传谣

都市快报橙柿互动
2026-05-14 14:56:31
河南一家公司员工上班借给公司128万,其中2名男子帮老板担保贷80万,现在名下财产被查封;公司老板:将与银行协商,尽可能不牵扯到员工

河南一家公司员工上班借给公司128万,其中2名男子帮老板担保贷80万,现在名下财产被查封;公司老板:将与银行协商,尽可能不牵扯到员工

潇湘晨报
2026-05-14 13:08:12
没有美国,泽连斯基为何依然能赢得战争?

没有美国,泽连斯基为何依然能赢得战争?

高博新视野
2026-05-14 07:30:18
【社论】中国AI企业背后的创新密码

【社论】中国AI企业背后的创新密码

澎湃新闻
2026-05-13 17:08:27
热刺已追平上赛季积分,还剩两轮比赛

热刺已追平上赛季积分,还剩两轮比赛

懂球帝
2026-05-14 15:58:14
哈佛提醒:防肌肉流失别只补蛋白!这6种营养才是关键

哈佛提醒:防肌肉流失别只补蛋白!这6种营养才是关键

橘子约定
2026-05-05 20:49:53
美国万万没想到,别国军备是为了打仗,中国军工却为以防万一?

美国万万没想到,别国军备是为了打仗,中国军工却为以防万一?

栗子熟了呀
2026-05-14 08:37:30
炸了!奥尼尔评 NBA 历史前十巨星 詹皇仅第 3

炸了!奥尼尔评 NBA 历史前十巨星 詹皇仅第 3

澜归序
2026-05-14 04:07:21
刘震云:如果你一听到伴侣说话就烦躁,有股无名火,真正的原因不是你讨厌他,也不是你脾气不好,而是条件反射

刘震云:如果你一听到伴侣说话就烦躁,有股无名火,真正的原因不是你讨厌他,也不是你脾气不好,而是条件反射

脆皮先生
2026-05-13 19:42:42
华谊兄弟得罪了这个大佬

华谊兄弟得罪了这个大佬

蓝钻故事
2026-05-13 15:35:51
四级应急响应!江苏,大暴雨要来了!

四级应急响应!江苏,大暴雨要来了!

南通攻略
2026-05-14 10:46:58
因违反金融统计管理规定 浙江开化农商行被罚290.09万元

因违反金融统计管理规定 浙江开化农商行被罚290.09万元

IPO参考
2026-05-14 09:42:17
突发新政!事关南京全体小区业主!

突发新政!事关南京全体小区业主!

住在南京
2026-05-14 12:34:23
马斯克2个月连发26条种族帖,只为攻击诺兰2.5亿新片选角

马斯克2个月连发26条种族帖,只为攻击诺兰2.5亿新片选角

热搜摘要官
2026-05-14 06:45:33
2026-05-14 17:23:00
侃故事的阿庆
侃故事的阿庆
几分钟看完一部影视剧,诙谐幽默的娓娓道来
822文章数 8443关注度
往期回顾 全部

科技要闻

马斯克说会谈很顺利 黄仁勋点赞 库克比耶

头条要闻

重庆一栋百年古建筑以399万公开拍卖 仅限中国人竞买

头条要闻

重庆一栋百年古建筑以399万公开拍卖 仅限中国人竞买

体育要闻

登海报!哈登30+8+6创多项纪录 第8次赢天王山

娱乐要闻

何九华官宣当爸!全程不提孩子妈

财经要闻

习近平同美国总统特朗普会谈

汽车要闻

新时代传统豪华是什么样? 上汽奥迪E7X给出了自己的答案

态度原创

教育
本地
时尚
游戏
艺术

教育要闻

华罗庚竞赛题,解法太巧妙了,学霸想不到

本地新闻

用苏绣的方式,打开江西婺源

T恤+低腰阔腿裤、衬衫+低腰半裙,今年夏天最时髦的搭配,谁穿谁好看!

索尼紧急撤回!PS5重大功能惨遭下架 原因成谜

艺术要闻

充满光感的花卉油画 | 亚历山大·沙巴德伊

无障碍浏览 进入关怀版