文章目录
- 前言
-
-
- [🏗️ **整体架构**](#🏗️ 整体架构)
- [💾 **核心技术栈详解**](#💾 核心技术栈详解)
-
- [**一、CLI/Core (`gitnexus/`) - Node.js + TypeScript**](#一、CLI/Core (
gitnexus/) - Node.js + TypeScript) - [**二、Web UI (`gitnexus-web/`) - React + Vite**](#二、Web UI (
gitnexus-web/) - React + Vite) - [**三、共享库 (`gitnexus-shared/`) - TypeScript**](#三、共享库 (
gitnexus-shared/) - TypeScript) - [**四、评估框架 (`eval/`) - Python**](#四、评估框架 (
eval/) - Python) - [**五、DevOps 工具链**](#五、DevOps 工具链)
- [**一、CLI/Core (`gitnexus/`) - Node.js + TypeScript**](#一、CLI/Core (
- [📊 **技术栈总览表**](#📊 技术栈总览表)
- [🔌 **集成点**](#🔌 集成点)
- [🚀 **部署选项**](#🚀 部署选项)
-
- [**1. CLI (本地)**](#1. CLI (本地))
- [**2. Web (WASM)**](#2. Web (WASM))
- [**3. Docker**](#3. Docker)
- [**4. Enterprise (SaaS)**](#4. Enterprise (SaaS))
- [📈 **性能关键点**](#📈 性能关键点)
- [🔐 **安全特性**](#🔐 安全特性)
-
前言
🏗️ 整体架构
GitNexus (Monorepo)
├── CLI/Core (Node.js)
├── Web UI (React + Vite)
├── Shared Types (TypeScript)
├── Evaluation Framework (Python)
└── Editor Integrations (Static Config)
💾 核心技术栈详解
一、CLI/Core (gitnexus/) - Node.js + TypeScript
核心依赖
json
{
"Runtime": {
"node": ">=22.0.0",
"type": "module (ESM)"
},
"CodeParsing": {
"@huggingface/transformers": "^4.1.0", // 向量化 + 语义搜索
"tree-sitter": "^0.21.1", // 核心 AST 解析器
"tree-sitter-*": [
"typescript", "javascript", "python",
"java", "kotlin", "c#", "go", "rust",
"php", "ruby", "c", "c++", "dart"
]
},
"GraphDatabase": {
"@ladybugdb/core": "^0.16.1" // 知识图谱存储 (WASM 友好)
},
"GraphProcessing": {
"graphology": "^0.26.0", // 图数据结构
"graphology-indices": "^0.17.0", // 图算法库
"graphology-utils": "^2.3.0", // 图工具
"mnemonist": "^0.40.3", // 高效数据结构
"pandemonium": "^2.4.0" // 并发工具
},
"ML/Embeddings": {
"onnxruntime-node": "^1.24.0", // 运行 ONNX 模型 (本地推理)
"@huggingface/transformers": "^4.1.0" // Hugging Face 模型库
},
"ServerFramework": {
"express": "^5.2.1", // HTTP API (serve 命令)
"express-rate-limit": "^8.4.1", // 速率限制
"cors": "^2.8.5" // 跨域支持
},
"MCP(AgentInterface)": {
"@modelcontextprotocol/sdk": "^1.0.0" // Model Context Protocol
},
"CLI": {
"commander": "^14.0.3", // CLI 参数解析
"cli-progress": "^3.12.0", // 进度条
"pino": "^10.3.1", // 日志库
"pino-pretty": "^13.1.3" // 美化日志输出
},
"Utilities": {
"js-yaml": "^4.1.1", // YAML 解析
"jsonc-parser": "^3.3.1", // JSON with Comments
"uuid": "^14.0.0", // UUID 生成
"lru-cache": "^11.0.0", // 缓存
"glob": "^13.0.6", // 文件匹配
"ignore": "^7.0.5" // gitignore 支持
}
}
开发工具
json
{
"TypeScript": "^5.4.5",
"Vitest": "^4.0.18", // 单元 + 集成测试
"tsx": "^4.0.0", // TypeScript 直接执行
"Coverage": "@vitest/coverage-v8"
}
可选依赖 (native addon)
json
{
"tree-sitter-kotlin": "^0.3.8", // 可选 Kotlin 支持
"node-gyp-build": "^4.8.0", // 原生模块编译
"node-addon-api": "^8.0.0"
}
二、Web UI (gitnexus-web/) - React + Vite
前端框架
json
{
"Runtime": {
"react": "^19.2.5", // 最新 React
"react-dom": "^19.2.6"
},
"BuildTool": {
"vite": "^8.0.11", // 闪电快速构建
"typescript": "^5.4.5",
"@vitejs/plugin-react": "^5.1.4" // React JSX 支持
},
"Styling": {
"tailwindcss": "^4.2.4", // Utility-first CSS
"@tailwindcss/vite": "^4.3.0" // Vite 集成
},
"GraphVisualization": {
"sigma": "^3.0.2", // WebGL 图可视化引擎
"@sigma/edge-curve": "^3.1.0", // 弧形边
"graphology": "^0.26.0", // 图数据结构
"graphology-indices": "^0.17.0",
"graphology-layout-force": "^0.2.4", // 力导向布局
"graphology-layout-forceatlas2": "^0.10.1", // ForceAtlas2 算法
"graphology-layout-noverlap": "^0.4.2", // 防重叠布局
"graphology-utils": "^2.3.0",
"d3": "^7.9.0" // 数据可视化
},
"AIAgent": {
"@langchain/anthropic": "^1.3.29", // Claude 集成
"@langchain/openai": "^1.4.5", // GPT 集成
"@langchain/google-genai": "^2.1.30", // Gemini 集成
"@langchain/ollama": "^1.2.6", // 本地 Ollama
"@langchain/langgraph": "^1.2.9", // 多步骤代理
"@langchain/core": "^1.1.44", // 核心库
"langchain": "^1.3.5", // 完整工具箱
"zod": "^4.4.3" // 数据验证 (LangChain)
},
"MarkdownRendering": {
"react-markdown": "^10.1.0", // Markdown → React
"remark-gfm": "^4.0.1", // GitHub Flavor 支持
"react-syntax-highlighter": "^16.1.1" // 代码高亮
},
"i18n": {
"i18next": "^26.2.0", // 国际化框架
"react-i18next": "^17.0.8", // React 绑定
"i18next-browser-languagedetector": "^8.2.1" // 语言检测
},
"Utils": {
"axios": "^1.16.0", // HTTP 客户端
"lru-cache": "^11.2.4", // 缓存
"uuid": "^14.0.0", // UUID
"dompurify": "^3.4.3", // HTML 清理 (安全)
"mermaid": "^11.15.0", // 图表生成
"react-zoom-pan-pinch": "^4.0.3", // 图交互
"lucide-react": "^1.14.0" // 图标库
}
}
测试工具
json
{
"UnitTesting": "vitest ^4.1.5",
"E2ETesting": "@playwright/test ^1.58.2",
"Testing": [
"@testing-library/react ^16.3.2",
"@testing-library/jest-dom ^6.9.1",
"@testing-library/user-event ^14.6.1"
]
}
三、共享库 (gitnexus-shared/) - TypeScript
json
{
"Role": "类型定义 + 常量共享",
"Dependencies": ["typescript ^6.0.3"],
"Exports": [
"./dist/index.js → 主类型",
"./dist/test-helpers.js → 测试工具"
]
}
四、评估框架 (eval/) - Python
依赖
toml
[dependencies]
mini-swe-agent = ">=2.0.0" # SWE-bench 代理基础
litellm = ">=1.83.7" # 多 LLM 提供商支持
datasets = ">=3.0.0" # SWE-bench 数据集
typer = ">=0.12.0" # CLI 工具
rich = ">=13.0.0" # 美化输出
pyyaml = ">=6.0" # YAML 配置
pandas = ">=2.0.0" # 数据分析
tabulate = ">=0.9.0" # 表格输出
python-dotenv = ">=1.2.2" # .env 支持
[dev-dependencies]
pytest = ">=9.0.3"
ruff = ">=0.5.0" # 代码检查
hypothesis = ">=6.88.0" # 属性测试
coverage = ">=7.6.0" # 覆盖率
Python 版本 : >=3.11
五、DevOps 工具链
代码质量
json
{
"Linting": {
"eslint": "^9.39.4",
"@typescript-eslint/eslint-plugin": "^8.57.2",
"@typescript-eslint/parser": "^8.57.2",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-unused-imports": "^4.4.1"
},
"Formatting": {
"prettier": "^3.8.0",
"prettier-plugin-tailwindcss": "^0.7.0" // Tailwind 类排序
},
"GitHooks": {
"husky": "^9.1.7",
"lint-staged": "^15.5.0" // 提交前检查
}
}
容器化
dockerfile
# CLI/Server (Node.js)
Dockerfile.cli
├── 基础镜像: node:22+
├── Python 支持
└── Tree-sitter 原生模块编译
# Web UI (Static)
Dockerfile.web
├── 构建: gitnexus-shared + gitnexus-web
└── Nginx 服务静态文件
# Orchestration
docker-compose.yaml (2 个服务)
📊 技术栈总览表
按层级分类
| 层 | 技术 | 版本 | 用途 |
|---|---|---|---|
| 编程语言 | TypeScript, JavaScript, Python | TS 5.4, Py 3.11+ | 类型安全、数据处理 |
| 运行时 | Node.js | >=22.0 | CLI 执行 |
| 代码解析 | Tree-sitter | 0.21.1 | 14 种语言 AST |
| 图数据库 | LadybugDB | 0.16.1 | 知识图谱持久化 |
| 图处理 | Graphology | 0.26.0 | 社区检测、路径查询 |
| 向量化 | Hugging Face + ONNX | 4.1.0 | 本地语义搜索 |
| 前端框架 | React | 19.2.5 | UI 组件 |
| 构建工具 | Vite | 8.0.11 | 高性能打包 |
| 图可视化 | Sigma.js | 3.0.2 | WebGL 渲染 |
| API 框架 | Express.js | 5.2.1 | HTTP 服务器 |
| Agent 接口 | MCP SDK | 1.0.0 | 代理通信 |
| AI 集成 | LangChain | 1.3.5 | 多模型支持 |
| 日志 | Pino | 10.3.1 | 结构化日志 |
| 测试 | Vitest, Playwright | 4.0.18, 1.58.2 | 单元 + E2E |
| CSS | Tailwind | 4.2.4 | 原子化样式 |
| 包管理 | npm | - | monorepo 管理 |
| CI/CD | GitHub Actions | - | 自动化工作流 |
🔌 集成点
编辑器支持
| 编辑器 | 集成方式 | 配置文件 |
|---|---|---|
| Claude Code | MCP + 钩子 | .claude/ + 动态 |
| Cursor | MCP + 钩子 | ~/.cursor/mcp.json + .cursor/hooks.json |
| Windsurf | MCP | .windsurf/ 或全局 |
| Codex | MCP | 全局配置 |
| OpenCode | MCP | ~/.config/opencode/config.json |
🚀 部署选项
1. CLI (本地)
- 依赖: Node.js 22+
- 命令:
npm install -g gitnexus - 存储: LadybugDB 原生 (
.gitnexus/)
2. Web (WASM)
- 浏览器: 现代浏览器 (Chrome/Firefox/Safari)
- 存储: LadybugDB WASM (内存)
- 无需后端
3. Docker
bash
# CLI 镜像
docker run ghcr.io/abhigyanpatwari/gitnexus:latest
# Web UI 镜像
docker run ghcr.io/abhigyanpatwari/gitnexus-web:latest
# Compose 编排
docker-compose up -d
4. Enterprise (SaaS)
- Hosted at akonlabs.com
- 附加功能: OCaml, 自动重索引, PR 审查
📈 性能关键点
解析管道:
├─ Tree-sitter 原生绑定 (C++)
├─ Worker threads (并行处理)
├─ 增量解析 (缓存策略)
└─ LadybugDB 优化索引
搜索:
├─ BM25 (关键词)
├─ 向量化 (ONNX 本地推理)
└─ RRF (排名融合)
API:
├─ Express.js (轻量快速)
├─ 连接池 (多仓库)
└─ 缓存 (LRU + 图查询结果)
🔐 安全特性
✅ 本地优先 : 所有数据在本地存储
✅ 开源 : 可自审计代码
✅ 没有 LLM 调用 : 索引过程离线
✅ Cosign 签名 : Docker 镜像验证
✅ SBOM 报告: 供应链透明