Module 1

你的 AI 助手在代码里是盲人

你让 Claude Code 帮你修一个 bug,它改好了——然后你发现另外三个地方也用了同样的模式,全部悄悄坏掉了。AI 不是不聪明,而是它根本看不见代码之间的关系。GitNexus 就是为了解决这个问题而生的。

GitNexus 是什么? 一个把代码库变成知识图谱的工具。它索引每一个函数调用、每一条依赖链、每一个执行流——然后通过MCP 把这些"视力"传给 Claude Code、Cursor、Codex 等 AI 工具。

假设你按下"提交 PR"——幕后正在崩塌的东西

你修改了 userService.getProfile() 的返回值结构。看起来只是一个小改动。但在那个 3 万行的代码库里:

GitNexus 让 AI 在修改前就能看到这整张图,而不是等 CI 失败了才发现。

两种使用方式

GitNexus 就像一把瑞士军刀,根据你的需求选择不同的工具面:

CLI + MCP 模式
日常开发首选。本地索引,AI 工具(Claude Code、Cursor)通过 MCP 查询。一切在本地,零隐私风险。
🌐
Web UI 模式
可视化探索首选。打开 gitnexus.vercel.app,上传代码,在浏览器里看交互式图谱和 AI 对话。零安装。
🔗
Bridge 模式
运行 gitnexus serve,Web UI 自动检测本地服务器——把两种模式的优点合并。

三分钟上手:从安装到第一次查询

真实命令 README.md → CLI 使用
# 1. 安装 GitNexus CLI
npm install -g gitnexus

# 2. 索引你的代码库
cd /path/to/your/project
gitnexus analyze .

# 3. 查询:谁调用了这个函数?
gitnexus context getUserProfile

# 4. 影响分析:改这个函数会炸哪里?
gitnexus impact userService.ts
这段代码在说什么
npm install -g gitnexus -g 表示全局安装,装一次,在任何项目目录都能用
gitnexus analyze . 分析当前目录的整个代码库,建立知识图谱。. 表示"当前目录"。这一步可能要几分钟
gitnexus context getUserProfile 查询 getUserProfile 这个函数的 360° 视图:谁调用了它,它调用了谁,它在哪些流程里出现
gitnexus impact userService.ts 如果修改 userService.ts,会影响代码库里的哪些地方?生成"爆炸半径"报告

模块测验

你要重构一个核心工具函数 formatCurrency(),这个函数在代码库里被很多地方用到。在没有 GitNexus 的情况下,AI 可能最容易犯什么错误?
你的团队有 5 万行代码,你想让 Claude Code 更可靠,但不想把代码上传到任何服务器(隐私考量)。GitNexus 的哪种模式最适合?
Module 2

知识图谱:
代码关系的地铁地图

每座城市的地铁线路图,用清晰的线条和节点,展示了成百上千个站点之间的关系。GitNexus 为你的代码库建造了同样的地图——每个函数是一个站,每次调用是一条线。

图谱里有什么:节点与边

GitNexus 用图数据库 LadybugDB 存储代码结构。理解它的两个核心概念:

节点(Symbol)
代码里的每个"实体":函数、类、接口、变量、文件。每个节点有名字、类型、所在文件和行号。
边(Relationship)
节点之间的关系:CALLS(调用)、IMPORTS(导入)、EXTENDS(继承)、IMPLEMENTS(实现)。
🌊
Process(执行流)
从起点到终点的一条完整执行路径——GitNexus 的独特概念,让 AI 能理解"这段代码在干什么"。
📦
Module(功能区)
将相关函数归类到同一个功能区——帮助 AI 理解代码的业务边界,而不只是文件层级。

代码实录:查询图谱的 context 工具

真实代码 gitnexus/src/mcp/tools.ts
{
  name: 'context',
  description: `Callers, callees,
    and processes for one symbol.

  WHEN TO USE: Understanding how
  code works together.

  Returns:
  - callers: who calls this symbol
  - callees: what this symbol calls
  - processes: execution flows
    this symbol belongs to
  `,
}
这段代码在说什么
name: 'context' 这个 MCP 工具的名字是 context,AI 可以调用它查询任意函数的"360度视图"
callers: who calls this symbol 谁调用了这个函数?找到所有上游依赖——修改函数前必须知道这些
callees: what this symbol calls 这个函数调用了什么?找到所有下游依赖——了解它的内部工作链条
processes: execution flows 这个函数属于哪些业务流程?让 AI 理解"这段代码在完成什么业务目标"

混合搜索:BM25 + 向量的强强联合

当 AI 问"找一下处理用户认证的代码",GitNexus 如何在 5 万行代码里精准定位?答案是两种搜索技术的融合:

query: "user authentication login flow"
关键词匹配:找到 auth、login、authenticate、session... 12 个结果
语义匹配:找到"验证身份"相关代码,包括 validateToken、checkPermission... 8 个结果
互倒排名融合:合并两组结果,用相关性加权排序...
Top 结果:authService.ts → validateUser() [执行流: LoginProcess] 相关性: 0.94
💡 为什么需要两种搜索? BM25 擅长找精确匹配,向量搜索擅长找语义相似。结合起来,既不会漏掉拼写精确匹配的结果,也不会错过概念相似但用词不同的代码。

模块测验

你想知道"如果我删除 PaymentGateway 类,代码库里有哪些地方会报错"。应该用 GitNexus 的哪个工具?
GitNexus 的 Process(执行流)概念,相比普通的"函数列表",对 AI 有什么核心优势?
Module 3

摄取管道:
代码库是如何被"读懂"的

当你运行 gitnexus analyze .,你的代码库经历了一次彻底的"CT 扫描"。12 个阶段组成的DAG 管道,把普通代码文件变成可查询的知识图谱。

12 阶段管道概览

Tree-sitter:代码的 CT 机

Tree-sitter 是 GitNexus 的核心解析引擎。它不把代码当普通文本读——它真正"理解"代码结构,就像 CT 机看到的不是皮肤表面而是内部骨骼:

你的代码 → AST 结构
// 你的源代码
async function getUserById(id: string) {
  const user = await db.users.findOne(id);
  return user;
}

// Tree-sitter 看到的(简化)
// function_declaration
//   name: "getUserById"
//   params: [{name: "id", type: "string"}]
//   body: [
//     await_expression → db.users.findOne
//   ]
//   async: true
这代表什么
function_declaration Tree-sitter 识别出这是一个函数声明,不只是"有 function 这个词的一行"
name: "getUserById" 函数名被提取为一个有意义的节点——GitNexus 可以用这个名字建立图谱关系
await_expression → db.users.findOne 识别出这个函数调用了 db.users.findOne——这就是"边",两个节点之间的关系

新鲜度检测:图谱不会过期

代码每天都在变,知识图谱如何保持最新?GitNexus 有一个陈旧度检测机制:

给我查 checkoutService 的影响范围
🔍 检查索引状态... 上次索引:commit abc123f
⚠️ 当前 HEAD:def456a(差 34 次提交) 部分结果可能已过期,建议运行 gitnexus analyze . 更新
好的,我会注意告诉用户:这些结果基于 34 次提交前的快照。要继续查询还是先重建索引?
💡 为什么不自动重建? 大型代码库重建索引可能需要几分钟。GitNexus 选择"告知"而不是"自动重建"——让你决定是否值得等待,而不是偷偷阻塞你的工作流。

模块测验

你的代码库刚做了一次重大重构,500 个文件发生了变更。GitNexus 的知识图谱现在反映的是旧代码。你应该怎么做?
GitNexus 在摄取管道中使用 Tree-sitter 而非简单的文本搜索(如 grep)。这带来的核心优势是?
Module 4

MCP 工具层:
给 AI 装上真正的代码眼睛

MCP 是 GitNexus 与 AI 工具通信的桥梁。GitNexus 暴露了 13 个 MCP 工具,覆盖从简单查询到复杂影响分析的所有场景。

13 个 MCP 工具:全面的代码视力

🔍
query
混合搜索:BM25 + 向量。用自然语言找相关代码,返回执行流和符号列表。
🔭
context
360° 函数视图:谁调用了它(callers),它调用了谁(callees),属于哪些执行流。
💥
impact
爆炸半径分析:修改这个符号,会影响代码库里的哪些地方?生成带风险评级的报告。
🔄
rename
图辅助多文件重命名,支持 dry_run 预览——改名前知道有多少个地方需要同步修改。
🗺️
route_map
API 路由 → 处理函数 → 调用者的完整映射。修改 API 前了解影响链。
📡
detect_changes
把 Git diff 翻译成"受影响的符号和流程"——从行级别变化理解业务级别影响。

MCP 的工作架构

配置 MCP:让 Claude Code 认识 GitNexus

真实代码 .mcp.json(Claude Code 配置)
{
  "mcpServers": {
    "gitnexus": {
      "command": "gitnexus",
      "args": ["mcp"],
      "env": {}
    }
  }
}
这段代码在说什么
"mcpServers": { "gitnexus": ... } 告诉 Claude Code:有一个叫 gitnexus 的 MCP 服务器可以用
"command": "gitnexus" 启动 MCP 服务器的命令——就是我们安装的 gitnexus CLI 工具
"args": ["mcp"] 传入 mcp 参数,告诉 gitnexus 以 MCP 服务器模式启动,而不是普通 CLI 模式
💡 关键洞察: 这个小小的 .mcp.json 文件,让 Claude Code 从"不知道你的代码库结构"变成"拥有完整代码图谱视野"。这就是为什么 AI 工具集成往往只需要几行配置,却能带来质的飞跃。

模块测验

你要把函数 processOrder() 重命名为 fulfillOrder(),代码库里有 47 处引用。用 GitNexus 的哪个工具能在修改前看清楚所有影响?
Claude Code 通过 MCP 调用 GitNexus 的 impact 工具时,GitNexus 是如何实际执行查询的?
Module 5

当代码改变时:
知道"改这里会炸哪里"

最贵的 bug 不是你一按保存就报错的那种——而是悄悄在生产环境跑了三天,直到用户投诉才发现的那种。GitNexus 的影响分析让你在按下"提交"之前,就看到改动的全部后果。

爆炸半径分析:改动的多米诺效应

每次代码改动都像在池塘里扔石头——不只是落点激起涟漪,整个水面都会震动。GitNexus 的 impact 工具计算这个"爆炸半径":

我要修改 OrderService.calculateTotal(),帮我分析影响
正在分析上游依赖(调用者)...
📊 影响分析报告: • 直接调用者:CheckoutController(高风险⚠️)、CartService(中风险) • 间接影响:EmailNotificationService、AnalyticsTracker(通过 CheckoutController) • 受影响测试:checkout.test.ts(17 个测试用例需要验证) • 影响范围:8 个文件,估计修改工作量:中等
好的,我会先更新 CheckoutController 的调用,同步修改相关测试,再提交。

detect_changes:把 Git Diff 翻译成业务影响

你提交前的 Git Diff
--- a/src/services/userService.ts
+++ b/src/services/userService.ts
@@ -24,7 +24,8 @@ export class UserService {
   async getProfile(userId: string) {
     const user = await this.db.findOne(userId);
-    return { name: user.name, email: user.email };
+    return { name: user.name, email: user.email,
+             avatarUrl: user.profile?.avatarUrl };
   }
 }
GitNexus 看到的业务影响
getProfile() 返回值增加字段 这不只是加一行代码,这是一次接口变更——所有调用这个函数并解构其返回值的地方都可能受影响
受影响符号:5个 ProfileCard.tsx(展示头像)、UserMenu.tsx(菜单头像)、EmailTemplate(邮件格式)等 5 处
风险评级:中等 新增字段而非修改现有字段,不会立即破坏旧调用者,但需要更新使用了 avatar 字段的 UI 组件

Wiki 生成:代码自动写文档

GitNexus 还有一个隐藏能力:基于知识图谱自动生成代码 Wiki。不是人工写的 README——是从代码结构里提取出来的、永远与代码同步的文档。

📖
模块概述
每个功能模块的职责摘要,自动提取自执行流分析。
🔗
依赖图
可视化模块间的调用关系,新成员快速理解代码架构。
🔄
自动更新
代码变更,Wiki 自动刷新——告别"文档比代码晚三个月"的噩梦。
💡 对你意味着什么: 用 GitNexus 武装的 AI 助手,相当于拥有一个"读过整个代码库,记住了所有依赖关系"的同事。不再是"在我的文件夹里瞎翻",而是"知道整个地图再精准行动"。

终极测验:整合所有模块

你是团队技术负责人,接到一个需求:把旧版支付系统(PaymentV1)替换成新系统(PaymentV2),需要保证不遗漏任何调用点。描述一个使用 GitNexus 的最优工作流程。
你的 AI 助手说"我已经更新了 userProfile 函数,应该没问题了",但你隐约觉得有遗漏。用 GitNexus 的哪个工具最快速验证?