GitNexus
面向 AI Agent 的预计算架构知识图谱平台,除调用图外还提前计算功能社区、执行流程、API 路由与可选 PDG/污点分析。
[!info] related notes
- 所属 MOC: AI MOC, Coding Agent MOC
- 对比关系: CodeGraph vs GitNexus
- 竞品: CodeGraph
- 背景: Knowledge Graph, MCP 协议
GitNexus
这是什么
GitNexus 是面向 AI Agent 的预计算架构知识图谱平台。它不只存函数和调用边,还提前计算功能社区(Leiden)、执行流程(Process)、API 路由、变更影响,甚至可以选择构建 PDG、控制依赖和污点传播图。
- 版本与许可证:
v1.6.9,PolyForm Noncommercial 1.0.0(非商业许可证,商业用途需注意) - 仓库:
abhigyanpatwari/GitNexus
定位是“面向 AI Agent 的静态分析平台和代码架构数据库”——让图数据库在索引阶段先理解架构,而不是每次查询时临时推导。
工作方式 / 架构
15 阶段 DAG
GitNexus 的索引过程不是简单的“解析 → 入库”,而是一个包含 15 个阶段的 DAG:
scan → structure → markdown / cobol → parse → routes / tools / orm → crossFile
→ scopeResolution → pruneLocalSymbols → mro → di → communities → processes
大致分五层:
- 文件和目录结构
- 语法和符号提取
- 跨文件语义解析
- 架构和流程推断
- 检索、图查询和 Agent 工具
语义 scope resolution
GitNexus 不只是匹配函数名,还会处理:变量作用域、类成员归属、方法重载、返回类型传播、跨文件类型传播、继承和 MRO、接口实现、依赖注入、callable value、参数中传递的函数、属性分发、导入别名、框架路由。
例如:
const parser = factory.createParser();
parser.parse(url);
它会尽量通过 createParser() 的返回类型,推断 parser 的真实类型,然后把 当前函数 → Parser.parse 连接起来。其 scope-resolution 流水线依次处理:receiver-bound calls、free calls、references、property dispatch、callable-value flow、imports。
真正的属性图数据库 LadybugDB
GitNexus CLI 使用 LadybugDB(而不是普通 SQLite 表模拟图),采用多个节点表:
File, Folder, Function, Class, Interface, Method, Route, Tool, Community, Process, BasicBlock ...
所有关系统一放在 CodeRelation 中,通过 type 区分:
MATCH (f:Function)-[r:CodeRelation {type: 'CALLS'}]->(g:Function)
RETURN f, g
Function 节点直接保存文件路径、开始和结束行、源代码内容、描述。Community / Process / Route / Tool / BasicBlock 都直接建模为一等节点,因此可以直接用 Cypher 查询复杂关系。
预计算功能社区(Leiden)
GitNexus 使用 Leiden 社区发现算法,将图中联系紧密的符号分组:
下载任务社区 / Bilibili API 社区 / 媒体处理社区 / 配置社区 / CLI 社区
社区不是源代码中真实存在的模块,而是根据调用关系、文件关系、导入关系、图连接密度计算出来的功能聚类。Community 节点保存 label、keywords、description、cohesion、symbolCount。默认使用 Graphology 的 Leiden 实现,也提供实验性的 Icebug 路径。
适合回答:
- 这个陌生项目可以划分为哪些功能模块?
- 哪些函数实际上属于同一个业务领域?
- 项目中最核心的功能聚类是什么?
预计算执行流程(Process)
在社区分析之后,GitNexus 还会检测执行流程,并创建 Process 节点、STEP_IN_PROCESS 边、ENTRY_POINT_OF 边。例如:
Process: Download Bilibili Video
Step 1: parseUrl
Step 2: resolveVideoId
Step 3: fetchVideoInfo
Step 4: fetchPlayUrl
Step 5: downloadVideoStream
Step 6: downloadAudioStream
Step 7: mergeWithFFmpeg
Routes 和 MCP Tools 还可以与相应流程入口连接:
Route POST /download → ENTRY_POINT_OF → Process Download Video
这对生成架构文档和业务流程图非常有价值。但要注意:Process 是静态图上的推断流程,不是真实运行时 Trace。存在动态分发、配置驱动、反射或条件分支时,可能漏路径或生成近似路径。
检索:BM25 + 可选 Embedding + RRF
GitNexus 的查询可以同时执行 BM25 关键词搜索与向量语义搜索,然后用 Reciprocal Rank Fusion 合并:
RRF score = 1 / (60 + rank)
一个结果如果同时被 BM25 和语义搜索命中,分数会叠加。因此即使代码里没有 cleanup download failure 这种明确名称,Embedding 也可能找到 removeTemporaryFiles / rollbackTask / disposeStreams / cleanupOnError。
Embedding 是可选能力,需要 gitnexus analyze --embeddings;默认基础能力仍依赖 BM25 和图关系。
17 个 MCP 工具
GitNexus 默认提供 17 个 MCP 工具,例如:
query:混合搜索context:一个符号的完整上下文impact:影响范围trace:两个符号之间的最短路径detect_changes:Git diff 影响分析cypher:原始 Cypherroute_map:API 路由图tool_map:MCP / RPC 工具图shape_check:API 响应形状检查api_impact:接口修改影响explain:污点传播解释pdg_query:控制和数据依赖group_sync:跨仓库契约图
它还把 Community 和 Process 作为 MCP Resource:
gitnexus://repo/{name}/clusters
gitnexus://repo/{name}/processes
gitnexus://repo/{name}/process/{name}
Agent 可以直接读取“已经计算好的架构知识”,而不需要每次重新推导。
可选 PDG
使用 gitnexus analyze --pdg,GitNexus 可以额外建立 CFG(控制流图)、REACHING_DEF(定义到使用的数据流)、CDG(控制依赖图)、TAINTED、SANITIZES、TAINT_PATH。这能回答更细的问题:
- 这个外部 URL 最后流向了哪个 HTTP 请求?
- 这个用户输入是否可能进入 shell 命令?
- FFmpeg 参数在哪里被净化?
- 哪个 if 条件控制了下载失败分支?
这已经超出普通调用图,进入静态程序分析领域。注意:--pdg 当前并非所有语言都拥有同等覆盖,不应把结果当成完整运行时事实。
核心能力
- 功能社区(Leiden)与执行流程(Process)预计算
- BM25 + 可选 Embedding + RRF 混合检索
- Cypher 查询复杂图关系
- API 路由图、工具图、接口影响分析
- 可选 CFG / PDG / 污点分析
- 跨仓库契约图(Repo Group / Contract Registry / 跨仓库 trace)
优势与局限
优势:
- 架构理解强(社区、流程、route map、architecture map)
- Cypher 灵活,可选 PDG 深入
- 适合生成架构文档与 Mermaid 图
- 对“陌生项目有哪些模块 / 核心流程 / 扩展点”极强
局限:
- 部署复杂度高(LadybugDB 属性图、多阶段索引)
- 更新靠
analyze与 hooks 检测陈旧,非文件监听自动同步 - Token 消耗可能更大
- PDG 语言覆盖不均
- 非商业许可证限制商业用途
适用场景
- 初次系统研究陌生项目、生成详细架构文档
- 还原 URL → 下载文件的完整流程
- 找后续功能扩展位置、评估跨模块影响
- 需要社区 / 流程 / API 契约 / 污点分析
官方入口
- GitHub:https://github.com/abhigyanpatwari/GitNexus
- 初始化:
npx gitnexus analyze --embeddings --skills
npx gitnexus setup
- 追加数据流分析(注意
--pdg语言覆盖不均):
npx gitnexus analyze --pdg --embeddings --skills --force