GitNexus 核心引擎架构与流程深度解析
索引流水线、社区检测与流程追踪、混合搜索与嵌入生成
一、入口类与架构关系
GitNexus 的核心引擎由三个相互协作的子系统构成:索引流水线(Ingestion Pipeline)、社区与流程检测(Community & Process Detection)、混合搜索与嵌入(Hybrid Search & Embeddings)。这三个子系统共同将原始代码库转换为可查询的知识图谱。
1.1 核心类关系图
![图示:核心类关系结构]
1.2 关键数据结构
KnowledgeGraph:知识图谱的核心数据结构,包含节点(Node)和关系(Relationship)集合。节点类型包括 File、Folder、Function、Class、Method、Interface、Community、Process;关系类型包括 CALLS、IMPORTS、EXTENDS、IMPLEMENTS、MEMBER_OF、STEP_IN_PROCESS。
SymbolTable:符号表,用于快速查找符号定义。键为 filePath:name,值为 {nodeId, type}。
ASTCache:AST 缓存,避免重复解析。使用 LRU 策略,默认缓存所有文件。
二、关键流程描述
2.1 索引流水线完整流程
索引流水线是 GitNexus 的心脏,负责把原始代码库'翻译'成知识图谱。整个流程分为 9 个阶段,每个阶段都有明确的职责和进度反馈。
![图示:索引流水线流程]
关键阶段说明:
- 文件扫描(0-15%):
walkRepository遍历文件系统,收集所有可解析文件,建立 File/Folder 节点。 - AST 解析(30-70%):使用 Tree-sitter 并行解析,提取符号定义。支持 Worker 池并行处理,失败时自动降级为顺序处理。
- 导入解析(70-75%):语言感知的导入路径解析。TypeScript/JavaScript 支持相对路径和 node_modules;Go 支持包路径解析;Python 支持相对导入和 sys.path。
- 调用解析(75-80%):通过 Tree-sitter 查询匹配函数调用点,建立 CALLS 关系。置信度计算基于:
- 精确匹配(名称 + 参数数量):90%+
- 模糊匹配(仅名称):50-70%
- 全局匹配(未解析的标识符):30%
- 社区检测(85-90%):使用 Leiden 算法基于 CALLS 边进行功能聚类。构建无向 Graphology 图,运行 Leiden 算法(resolution=1.0),生成社区节点和成员关系。
- 流程追踪(90-95%):从入口点(调用他人但很少被调用的函数)追踪执行流程。使用 BFS 算法,限制深度(maxDepth=10)和分支(maxBranching=4),去重后生成 Process 节点。
2.2 社区检测算法流程
社区检测使用 Leiden 算法,这是一种改进的 Louvain 算法,能够检测更高质量的社区结构。
![图示:社区检测算法流程]
算法关键点:


