将任意代码仓库索引为知识图谱,追踪依赖、调用链、聚类和执行流,并通过MCP协议暴露给AI Agent使用,补全Agent的代码上下文缺失。
⚠️ 重要提示:GitNexus 没有官方的加密货币、代币或硬币。任何在 Pump.fun 或其他平台上使用 GitNexus 名称的代币/硬币均与本项目或其维护者无任何关联,亦非由其创建。请勿购买任何声称与 GitNexus 有关联的加密货币。
智能体的神经系统。
将任何代码库索引为知识图谱——每一条依赖、调用链、集群和执行流——然后通过智能 MCP 工具暴露给 AI 智能体,让它们永不遗漏代码。
💬 Discord · 🌐 Web UI · 🏢 企业版(SaaS 及自托管)
像 DeepWiki,但更深入。DeepWiki 帮助你理解代码。GitNexus 让你能够分析代码——知识图谱追踪每一条关系,而不仅仅是描述。
概述:CLI + MCP 让你的 AI 智能体变得可靠——它赋予 Cursor、Claude Code、Antigravity、Codex 等工具对你代码库的深层架构视角,使它们不再遗漏依赖、不再破坏调用链、不再盲目编辑就发布。即使较小的模型也能获得完整的架构清晰度。Web UI 是一种在浏览器中快速与任何仓库对话的便捷方式。
# 1. 索引你的仓库(从仓库根目录运行)
npx gitnexus analyze
# 2. 连接你的编辑器(一次性操作,自动检测 Claude Code、Cursor、Codex 等)
npx gitnexus setup
就这样。analyze 一条命令完成代码库索引、安装智能体技能、注册 Claude Code 钩子、创建 AGENTS.md / CLAUDE.md 上下文文件。setup 写入 MCP 配置,使你的 AI 智能体能够使用这个图谱。
使用 npm 11.x?npx 在安装时可能会因 Cannot destructure property 'package' of 'node.target'(npm/arborist 的 bug,在 GitNexus 运行之前)而崩溃。请改用 pnpm——它会显式构建原生依赖:
pnpm --allow-build=@ladybugdb/core --allow-build=gitnexus --allow-build=tree-sitter dlx gitnexus@latest analyze
或者全局安装(npm install -g gitnexus@latest)然后运行 gitnexus analyze。参见 #1939。
最快的 MCP 启动方式:运行 gitnexus setup 之前先全局安装(npm i -g gitnexus)——这样会写入绝对路径的 MCP 配置,完全绕过 npx。在冷缓存情况下,基于 npx 的 MCP 安装可能超过 Claude Code 的 MCP_TIMEOUT 默认值(约 30 秒)。
没有 C++ 工具链?在 npm install -g gitnexus 之前设置 GITNEXUS_SKIP_OPTIONAL_GRAMMARS=1,以跳过 tree-sitter-dart、tree-sitter-proto、tree-sitter-swift 和 tree-sitter-kotlin 的 vendored grammar materialize/build——这四种语言将不会被解析,但安装可在几秒内完成,无需 python3/make/g++。严格为 =1——任何其他值都会回退到重建流程。
身处 HTTP 代理 / 区域防火墙之后?onnxruntime-node 的 postinstall 从 api.nuget.org 下载可选的 CUDA 二进制文件,且会忽略 HTTP_PROXY/HTTPS_PROXY(#2370)。嵌入栈是一个可选依赖,所以下载失败不再破坏安装——而且它能自愈:首次运行 gitnexus analyze --embeddings(或 gitnexus embeddings install)会通过你的 npm registry 配置(镜像/代理都适用,不需要 NuGet)将栈拉到 ~/.gitnexus/embedding-runtime(可用 GITNEXUS_EMBEDDING_RUNTIME_DIR 覆盖)。按需前缀需要 Node 带 module.registerHooks(22.x 版本 ≥ 22.15,23.x 版本 ≥ 23.5);在旧版 Node 上,用 ONNXRUNTIME_NODE_INSTALL=skip npm install -g gitnexus 将栈保留在安装本身中(适用于所有支持的 Node 版本)。
关于 tree-sitter-kotlin:与 Dart/Proto/Swift 一样,Kotlin 也是一个 vendored grammar(在 gitnexus/vendor/tree-sitter-kotlin 下)。上游仅发布源码(无预编译二进制文件),所以 GitNexus 自行交叉构建平台预编译文件(通过 build-tree-sitter-prebuilds GitHub Actions workflow)并将其 vendored——这与 Dart、Proto 和 Swift 使用的统一流程相同。node-gyp-build 在 require 时选择正确的 .node,因此不需要 C/C++ 工具链。如果没有与你的平台-架构匹配的任何预编译文件,只有 Kotlin(.kt/.kts)解析不可用;gitnexus 的其余部分不受影响。
一键部署 GitNexus:
Blueprint 会创建两个服务。gitnexus-server 以私有服务方式运行 gitnexus serve:无公开 URL,仅通过 Render 的私有网络可达,并为索引和克隆的仓库提供持久磁盘。gitnexus-web 是公开的那个。它提供 UI 并将 /api/* 反向代理到服务器,这样浏览器只与单一源通信。
按 Blueprint 的默认配置,这大约花费 $35/月:服务器标准实例 $25,Web 服务入门实例 $7,以及 10 GB 磁盘 $2.50。参见 Render 的定价页面了解其他方案。
部署会生成一个访问令牌,UI 在首次使用时要求输入:
在 Render 仪表板中打开 gitnexus-web 服务。
从其 Environment 选项卡复制 GITNEXUS_SERVE_AUTH_TOKEN。
加载站点并将令牌粘贴到提示中(或设置面板中)。
每个 /api/* 请求都携带该令牌作为头部,没有它代理会返回 401。浏览器将其保存在 sessionStorage 中,所以新标签页会再次询问。要轮换它,编辑环境变量并重新部署。
代理在转发前会剥离 Origin,所以服务器的 CSRF 保护对代理流量无效;它按设计让无 Origin 的请求通过。在这种部署中,令牌是唯一的控制手段,而不是护栏后面的第二层。持有令牌的任何人都可以读取每个已索引的仓库。参见 SECURITY.md。
索引受内存约束。如果 gitnexus-server 在大型仓库上内存耗尽,请升级其套餐,这会设置可用 RAM:标准版是 2 GB,专业版是 4 GB。仅在磁盘被克隆和索引填满时才增大 sizeGB。
两种使用 GitNexus 的方式
桥接模式:gitnexus serve 连接两者——Web UI 自动检测本地服务器,可以浏览所有你通过 CLI 索引的仓库,无需重新上传或重新索引。
为什么需要知识图谱?
像 Cursor、Claude Code、Codex、Cline、Roo Code 和 Windsurf 这样的工具很强大——但它们并不真正了解你的代码库结构。于是这种情况就会发生:
AI 编辑了 UserService.validate()
不知道有 47 个函数依赖它的返回类型
破坏性变更就这么发布了
传统 Graph RAG 给 LLM 提供原始图谱边并希望它充分探索。GitNexus 在索引时预计算结构——聚类、追踪、打分——这样工具在一次调用中返回完整上下文:
flowchart TB
subgraph Traditional["Traditional Graph RAG"]
direction TB
U1["User: What depends on UserService?"]
U1 --> LLM1["LLM receives raw graph"]
LLM1 --> Q1["Query 1: Find callers"]
Q1 --> Q2["Query 2: What files?"]
Q2 --> Q3["Query 3: Filter tests?"]
Q3 --> Q4["Query 4: High-risk?"]
Q4 --> OUT1["Answer after 4+ queries"]
end
subgraph GN["GitNexus Smart Tools"]
direction TB
U2["User: What depends on UserService?"]
U2 --> TOOL["impact UserService upstream"]
TOOL --> PRECOMP["Pre-structured response:
8 callers, 3 clusters, all 90%+ confidence"]
PRECOMP --> OUT2["Complete answer, 1 query"]
end
核心创新:预计算关系智能
可靠性——LLM 不会遗漏上下文;它已经在工具响应中了
Token 效率——理解一个函数不需要 10 次查询链
模型民主化——较小的 LLM 也能工作,因为工具承担了繁重的工作
你的 AI 智能体获得什么
17 个 MCP 工具(15 个按仓库 + 2 个分组)
Per-repo 工具接受一个可选的 repo 参数(当只有一个仓库被索引时省略),以及一个可选的 branch 参数(适用于使用 gitnexus analyze --branch 创建的索引)。省略 branch 会查询工作区索引,该索引跟随你当前签出的工作树——切换分支并重新运行 gitnexus analyze 会增量更新它。explain 和 pdg_query 需要使用 gitnexus analyze --pdg 构建的索引。
即时上下文资源
2 个 MCP 提示词,用于引导工作流
安装到 .claude/skills/ 和 .agents/skills/(如果存在 .agents/ 的话)的 Agent 技能
探索(Exploring) — 使用知识图谱导航陌生的代码库
调试(Debugging) — 通过调用链追踪 Bug
影响分析(Impact Analysis) — 在修改前分析爆炸半径
重构(Refactoring) — 使用依赖映射规划安全的重构
指南(Guide) — GitNexus 工具/资源/模式的参考,供 Agent 使用
CLI — 按需运行 analyze/status/clean/wiki 命令
PDG 查询(PDG Query) — 语句级的控制/数据依赖查询(需要 --pdg 索引)
污点分析(Taint Analysis) — 源到汇的数据流发现(需要 --pdg 索引)
计划(Plan)(/gitnexus-plan)— 基于图谱和 PDG 切片的可实施工程计划
工作(Work)(/gitnexus-work)— 以影响检查为后盾、以 detect_changes 为门控的原子提交方式执行计划
审查(Review)(/gitnexus-review)— 基于图谱的 PR/分支/范围/本地差异审查,包含污点检查和按领域专家视角的审查
LFG(/gitnexus-lfg)— 完整流水线:计划 → 用户门控 → 工作 → 审查
仓库特定技能(Repo-specific skills) — 运行 gitnexus analyze --skills,GitNexus 会通过 Leiden 社区检测算法识别你代码库的功能区域,并为每个区域生成一个直接的项目技能,置于 .claude/skills/gitnexus-area-<name>/。每个技能描述一个模块的关键文件、入口点、执行流和跨区域连接,并在每次 --skills 运行时重新生成以保持最新。
当仓库包含 .agents/ 目录时,标准技能和生成技能也会镜像到 .agents/skills/(例如 .agents/skills/gitnexus-cli/、.agents/skills/gitnexus-area-<name>/),以便读取仓库本地的 .agents/skills/ 的 Agent(如 Codex)保持同步。
gitnexus setup 自动检测你的编辑器并写入正确的全局 MCP 配置。运行一次即可。如需仅配置选定的集成,可传入 --coding-agent/-c 参数并用逗号分隔,例如 gitnexus setup -c cursor,codex。
Claude Code 和 Codex 获得最深入的集成:MCP 工具 + Agent 技能 + PreToolUse 钩子(用图谱上下文丰富搜索结果)+ PostToolUse 钩子(检测提交后索引是否过期并提示 Agent 重新索引)。
¹ Antigravity 钩子遵循 Gemini CLI 钩子参考规范(Antigravity 2.0 是 Gemini CLI 的有文档记录的后续版本)。Augmentation 在 AfterTool 中运行,因为 BeforeTool 在 Gemini 契约中没有上下文注入通道——Agent 通过 hookSpecificOutput.additionalContext 将图谱上下文附加到工具结果中。过时的索引提示在成功的 git commit/merge/rebase/cherry-pick/pull 后也进入同一通道。如果 Antigravity 专用钩子文档偏离 Gemini CLI,模式可能会演进;实现将跟踪这些变化。
Claude Code(完整支持 — MCP + 技能 + 钩子):
# macOS / Linux
claude mcp add gitnexus -- npx -y gitnexus@latest mcp
# Windows
claude mcp add gitnexus -- cmd /c npx -y gitnexus@latest mcp
Codex(完整支持 — MCP + 技能 + 钩子):
codex mcp add gitnexus -- npx -y gitnexus@latest mcp
或通过 ~/.codex/config.toml(系统范围)/ .codex/config.toml(项目范围):
[mcp_servers.gitnexus]
command = "npx"
args = ["-y", "gitnexus@latest", "mcp"]
Codex 钩子(PreToolUse 图谱丰富 + PostToolUse 过期索引检测,位于 ~/.codex/hooks.json,与 Claude Code 的模式相同)需要捆绑的适配器脚本,因此由 gitnexus setup -c codex 安装,而非手动安装。
或者,将所有内容作为 Codex 插件安装(MCP + 技能 + 钩子一步到位):
codex plugin marketplace add abhigyanpatwari/GitNexus
# 然后在 Codex 内:/plugins → 安装 "GitNexus"
Codex 注意事项:SessionStart 有意不被注册——Codex 原生读取 AGENTS.md,其中已携带 GitNexus 上下文块。新安装的钩子需要在 Codex 中通过 /hooks 一次性批准后才能运行。选择一种安装方式(gitnexus setup -c codex 或插件):插件钩子会与 ~/.codex/hooks.json 一起加载,因此同时安装两者可能导致每个工具调用触发重复钩子。
Cursor(~/.cursor/mcp.json — 全局,适用于所有项目):
{
"mcpServers": {
"gitnexus": {
"command": "npx",
"args": ["-y", "gitnexus@latest", "mcp"]
}
}
}
Antigravity(Google)— ~/.gemini/antigravity/mcp_config.json:
{
"mcpServers": {
"gitnexus": {
"command": "npx",
"args": ["-y", "gitnexus@latest", "mcp"]
}
}
}
gitnexus setup 还会将一个 AfterTool 条目合并到 ~/.gemini/settings.json(位于规范的 Gemini CLI 钩子模式下),并将技能安装到 ~/.gemini/antigravity/skills/。现有用户钩子会被保留。钩子适配器的路径在安装时重写,因此请运行 gitnexus setup 而不是手动编辑。
OpenCode(~/.config/opencode/config.json):
{
"mcp": {
"gitnexus": {
"type": "local",
"command": ["gitnexus", "mcp"]
}
}
}
CodeBuddy(腾讯)— 优先级链,编辑第一个存在的文件:~/.codebuddy/.mcp.json(推荐)→ ~/.codebuddy/mcp.json(已废弃)→ ~/.codebuddy.json(旧版)。CodeBuddy 只读取第一个存在的文件,因此向比当前使用文件更高优先级的文件添加服务器会导致下方服务器被隐藏。仅在不存在任何文件时创建 ~/.codebuddy/.mcp.json:
{
"mcpServers": {
"gitnexus": {
"command": "npx",
"args": ["-y", "gitnexus@latest", "mcp"]
}
}
}
Qoder(阿里巴巴)— ~/.qoder.json:
{
"mcpServers": {
"gitnexus": {
"command": "npx",
"args": ["-y", "gitnexus@latest", "mcp"]
}
}
}
在启动 MCP 服务器前设置 GITNEXUS_MCP_READ_ONLY=1,可仅暴露经过验证的单仓库只读表面。原始 cypher、重命名和分组工具、分组路由以及分组资源将从发现和后端调度前被省略。当需要截断时,响应以 … 结尾,并保持有效的 UTF-8。
默认值在变量未设置或为 0 时保持不变。设置任何其他值会导致服务器启动失败,而不是静默弱化策略。
设置 GITNEXUS_MCP_ALLOWED_REPOS 为逗号分隔的规范注册表名称或绝对索引路径列表。条目在启动时会被裁剪、针对注册表解析并去重。当恰好允许一个仓库时,它成为隐式默认值;当允许多个仓库时,调用方必须选择一个,除非也设置了 GITNEXUS_MCP_DEFAULT_REPO。
默认仓库必须解析为允许的仓库。无效、模糊、空白或不匹配的配置会在 stdio 或 HTTP 开始服务前导致启动失败。允许列表适用于工具、别名、发现、资源、模板、隐式解析和嵌入式 HTTP;隐藏的仓库详情不包含在选择错误中。仅设置 GITNEXUS_MCP_DEFAULT_REPO 会在不限制显式仓库选择的情况下选择默认值。注册表中名称重复的允许仓库必须通过路径配置,其上下文资源仅服务于唯一名称形式。
query、context 和 impact 工具接受可选的正整数 maxTokens 参数。它使用每个 token 4 个 UTF-8 字节的确定性估算来限制完整格式化的 MCP 响应(包括提示和错误文本)。当需要截断时,响应以 … 结尾,并保持有效的 UTF-8。
设置 GITNEXUS_MCP_DEFAULT_MAX_TOKENS 可在调用方未发送 maxTokens 时应用相同的护栏。显式工具参数优先。两者都未设置时保留现有响应字节对字节的原样;这是一个传输护栏,而非语义分页或精确的特定模型 tokenizer 限制。
gitnexus setup # 为检测到的编辑器配置 MCP(一次性的;用 -c 选择)
gitnexus analyze [path] # 为仓库建立索引(或更新过时的索引)
gitnexus mcp # 启动 MCP 服务器(stdio)— 服务于所有已索引的仓库
gitnexus serve # 启动本地 HTTP 服务器(多仓库)用于 Web UI 连接
gitnexus eval-server # 启动轻量级评估 HTTP 工具(默认仅限回环地址)
gitnexus list # 列出所有已索引的仓库
gitnexus status # 显示当前仓库的索引状态
gitnexus clean # 删除当前仓库的索引
gitnexus wiki [path] # 从知识图谱生成仓库 wiki
gitnexus uninstall # 预览移除 GitNexus MCP/技能/钩子(--force 生效)
还可以直接从终端查询图谱——gitnexus query、context、impact、trace、cypher、detect-changes 和 check 与同名的 MCP 工具功能一致,gitnexus doctor 则打印运行时平台能力。
gitnexus eval-server 默认绑定到 127.0.0.1。回环绑定不需要认证。任何非回环绑定(包括 0.0.0.0、LAN 地址或解析到 LAN IPv4 的主机名)都需要 GITNEXUS_AUTH_TOKEN。此后每个端点都需要精确的 Authorization: Bearer <token> 头。
GITNEXUS_AUTH_TOKEN='replace-me' gitnexus eval-server --host 0.0.0.0
令牌可以设置在 shell、.env.local 或工作目录的 .env 中。优先级为 shell > .env.local > .env。这些文件只读取 GITNEXUS_AUTH_TOKEN,其他值不会添加到进程环境。保持令牌文件不提交。
gitnexus analyze --force # 完整重建:重新解析 + 图谱重建 + FTS 重建
gitnexus analyze --repair-fts # 快速路径:在现有索引数据上仅重建/校验 FTS 索引
gitnexus analyze --skills # 从检测到的社区生成仓库特定的 skill 文件
gitnexus analyze --skip-embeddings # 跳过嵌入生成(更快)
gitnexus analyze --embeddings [limit] # 启用嵌入生成(更慢,搜索效果更好)
gitnexus analyze --skip-agents-md # 保留自定义 AGENTS.md/CLAUDE.md 的 gitnexus 部分编辑
gitnexus analyze --skip-skills # 跳过在 .claude/skills/ 和 .agents/skills/ 下安装标准 skill 文件
gitnexus analyze --skip-git # 索引不是 Git 仓库的文件夹
gitnexus analyze --default-branch develop # 生成的回归对比示例中使用的分支(base_ref)
gitnexus analyze --verbose # 当解析器不可用时记录跳过的文件
gitnexus analyze --worker-timeout 60 # 增加慢速解析的 worker 空闲超时时间
gitnexus analyze --workers <n> # 解析 worker 池大小(>=1;默认:cores-1,上限 16,
# 自动适配仓库大小)。0 会被拒绝——没有顺序模式。
gitnexus analyze --wal-checkpoint-threshold 67108864 # LadybugDB WAL 自动检查点阈值,单位字节
#(默认 67108864 = 64 MiB;-1 保持 Ladybug 默认约 16 MiB)
如果 analyze 报告大型或特殊仓库上的 worker 解析超时,它会继续运行并安全降级。要给慢速 worker 作业更多时间,可以使用 --worker-timeout 60 或设置 GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS=60000。对于非常大的文件,GITNEXUS_WORKER_SUB_BATCH_MAX_BYTES 控制 worker 任务的字节预算。
嵌入节点限制——gitnexus analyze --embeddings 生成语义搜索向量,默认 50,000 节点安全上限,保护大型仓库的内存:
gitnexus analyze --embeddings # 默认 50,000 节点安全上限
gitnexus analyze --embeddings 0 # 完全禁用上限
gitnexus analyze --embeddings 100000 # 自定义上限
如果在大仓库上跳过了嵌入生成,索引图很可能已超过默认上限——请使用 --embeddings 0 或更高的限制重新运行。
gitnexus group create <name> # 创建仓库组
gitnexus group add <group> <groupPath> <registryName> # 添加仓库。<groupPath> 是层级路径
#(如 hr/hiring/backend);<registryName> 是
# 来自注册表的仓库名(见 `gitnexus list`)
gitnexus group remove <group> <groupPath> # 按层级路径移除仓库
gitnexus group list [name] # 列出组,或显示一个组的配置
gitnexus group sync <name> # 提取合同并在 repos/services 间匹配
gitnexus group contracts <name> # 检查提取的合同和跨链接
gitnexus group query <name> <q> # 在组内所有 repos 中搜索执行流程
gitnexus group impact <name> --target <symbol> --repo <groupPath> # 跨仓库 blast radius
在仓库根目录提交 .gitnexusrc JSON 文件来预配置每个项目的 recurring analyze 选项,而不用每次运行都重新传递相同的标志。它从解析后的仓库根目录读取(不是 .gitnexus/,那是 gitignored 的索引存储)。CLI 标志总是覆盖 .gitnexusrc。
{
// 生成的回归对比示例中使用的默认分支(base_ref)。
// 使用这个选项,这样使用 `develop`/`master` 的项目不会在每次 analyze 时
// 都把 "main" 重写到它的修复上。(别名:"branch"。)
"defaultBranch": "develop",
"skipContextFiles": true, // skipAgentsMd 的别名:保留你自己的 AGENTS.md/CLAUDE.md
"skipSkills": true, // 不在 .claude/skills/ 和 .agents/skills/ 下安装标准 skill 文件
"embeddings": true, // 默认生成嵌入
"workerTimeout": 60,
}
也接受嵌套的 analyze 块(且会覆盖平铺键的同一选项):
{ "analyze": { "defaultBranch": "develop", "skipSkills": true } }
默认分支解析顺序为:--default-branch > .gitnexusrc defaultBranch/branch > 自动检测的 origin/HEAD > main。
skipContextFiles / skipAiContext 是 skipAgentsMd 的别名——它们只跳过 AGENTS.md / CLAUDE.md 块。它们不暗示 skipSkills。indexOnly 是更强的选项,会跳过所有文件注入。
支持的键:defaultBranch(branch)、skipAgentsMd(skipContextFiles、skipAiContext)、skipSkills、indexOnly、stats/noStats、embeddings、dropEmbeddings、name、allowDuplicateName、maxFileSize、workerTimeout、walCheckpointThreshold、workers、embeddingThreads、embeddingBatchSize、embeddingSubBatchSize、embeddingDevice。
该文件仅支持 JSON。未知键和无效值会在分析开始前快速失败,并给出可操作的错误提示。
大多数 analyze 旋钮也是 CLI 标志(--workers、--worker-timeout、--max-file-size、--verbose)。当你不想在每次运行中都重复相同的标志时,或当你从已管理好自己环境的长驻主机(MCP 服务器、eval-server、CI shell)调用 GitNexus 时,可以使用环境变量形式。CLI 标志优先于环境变量;环境变量优先于内置默认值。
gitnexus uninstall 反向执行 gitnexus install 的操作。