Agent 每次「乱改代码」,根子都是同一个

你让 Coding Agent 改 UserService.validate() 的返回类型,它痛快改完,跑了测试,全绿。然后 CI 崩了——因为仓库里有 47 个函数依赖这个方法的返回类型,它一个都不知道。

这不是模型笨。Cursor、Claude Code、Codex 这些 agent 的默认工具就是 grep + read file,它们对代码库结构没有「空间感」:不知道谁调了谁、谁继承了谁、改这里会炸哪里。于是要么多问几轮(token 烧完),要么瞎改(CI 炸完)。过去一年大家想了很多办法——我们写过的 gortex、codedb、codegraph、serena 都是这个赛道,核心思路一致:先建索引,再让 Agent 查图

但 GitNexus 的答案不太一样。它 2025 年 8 月 2 日建仓,一年不到 45,284 Star(这个速度比我们写过的 CodeGraph 还猛),README 里自称「The nervous system for agent context」——Agent 上下文的神经系统。它的卖点不是「建图」,而是把「图查询」这件事替你做到位了。

它到底是什么:把「图 RAG」的活,从 LLM 手里抢回索引期

一句话:GitNexus 是一个零服务器、纯本地运行的代码知识图谱引擎,把整个代码库索引成图,然后通过 17 个 MCP 工具把「预计算好的答案」喂给你的 Agent——Claude Code、Cursor、Codex、Antigravity 全支持,装完自动接上。

关键在「预计算」三个字。传统 Graph RAG 的玩法是:把图塞给 LLM,让模型自己沿着边探索——「谁调用了 UserService?」模型得先查调用者,再查调用者的文件,再筛测试……四五轮工具调用是常事,而且模型很可能探一半就放弃。GitNexus 反着来:索引的时候就把聚类、调用链、置信度全算好存进图数据库,Agent 调用一次 impact 工具,拿回来的就是「8 个调用者、3 个功能簇、全部 90%+ 置信度」的完整答案。

环节传统 Graph RAGGitNexus(Precomputed Relational Intelligence)
「谁依赖 UserService?」LLM 拿原始图边,自己规划 4+ 次查询一次 impact 调用,返回完整上游依赖
上下文完整性依赖模型「探索得够不够」,会漏索引期算好,工具响应里全带上,漏不了
Token 成本多轮查询烧 token一次调用,响应自带预算上限
小模型可用性推理能力不足就抓瞎重活在工具里做完了,小模型也能用
一句话把作业留给模型把作业在索引期做完

「模型民主化」是它最狠的一条:因为重活(解析、解析关联、聚类、打分)全在工具层做完了,哪怕你用的是一个很弱的模型,只要它会调工具,就能拿到架构级视野。这对想用便宜模型的团队是实打实的降本。

三个最值得拆的设计

1. 索引管线:六步走,14 种语言,Leiden 社区检测

管线是 Structure → Parsing → Resolution → Clustering → Processes → Search 六段:Tree-sitter 解析出函数/类/接口(14 种语言,含 TS/JS/Python/Java/Kotlin/C#/Go/Rust/PHP/Ruby/Swift/C/C++/Dart),语言感知的解析器做跨文件 import 解析、继承解析、构造函数推断 receiver 类型,然后用 Leiden 社区检测算法把相关符号聚成「功能社区」,再追执行流(从入口点沿调用链),最后建 BM25 + 语义向量混合检索索引(RRF 融合)。

「社区」这个概念很妙:analyze --skills 会基于检测出的社区,自动给仓库生成「分区技能」——每个模块一张技能卡,写明关键文件、入口点、执行流、跨区连接,装进 .claude/skills/。等于 Agent 一进仓库就有人给它画好了地图。

存储用的是 LadybugDB(嵌入式图数据库,就是改名前的 KuzuDB),索引存在仓库里的 .gitnexus/(自动 gitignore),全局注册表在 ~/.gitnexus/registry.json,一个 MCP 服务端就能服务多个仓库。增量更新:切分支后重跑 analyze 只重算变更部分。

2. 17 个 MCP 工具:重点不是多,是「一次给全」

最常用的几个:

还有针对前后端联调的 route_map(哪个组件请求哪个 API、handler 是谁)、shape_check(校验 API 响应结构是否符合消费方的属性访问)、api_impact(改 API 路由 handler 前的影响报告)——这是给「Agent 改接口不炸前端」专门做的。另外 explainpdg_query 是语句级控制/数据依赖(PDG,可选 --pdg 索引),目前 TS/JS,能查 taint 流。

3. Hooks:不是等 Agent 来问,是主动塞上下文

Claude Code 和 Codex 拿到的是完整集成:MCP + skills + hooks。两个 hook 是精髓:

这套「主动喂」的机制,比让 Agent 自己记得调工具可靠得多——Agent 不记得,hook 记得

和已经写过的几个代码智能项目比一比

维度GitNexus(45.3K★)gortex(1.1K★,7月12日)CodeDB(1.4K★,7月19日)CodeGraph(64.5K★,8月5日)
语言TypeScript + 原生绑定Go 单二进制Zig 单二进制Rust
形态CLI + MCP + Web UI(WASM)+ hooksMCP 服务端MCP 服务端MCP + 预索引
差异化预计算智能:社区聚类 + 置信度 + 执行流,一次调用给全257 语言解析广度极致速度(符号查询 0.1ms)预索引 + 增量更新,工具调用省 89%
零服务器是(本地 + 浏览器 WASM 双形态)否(常驻服务)否(MCP 进程)
Agent 集成深度MCP + skills + 双向 hooks,8 个编辑器MCP 工具21 个 MCP 工具8 个 agent 支持
Web 可视化有(Sigma.js WebGL 图浏览器)
许可证PolyForm Noncommercial(商用要授权)MITMITMIT

一句话:gortex 赢在语言覆盖,CodeDB 赢在快,CodeGraph 赢在省工具调用,GitNexus 赢在「把答案算好再给你」和全链路集成——它是最接近「给 Agent 装个大脑」的那个。注意许可证:GitNexus 是 PolyForm Noncommercial,个人和开源随便用,商业公司要买授权,这点跟其他几个 MIT 的完全不一样。

上手:十分钟跑起来(实测)

# 0. 我建议直接全局安装(别用 npx 跑 MCP,见下面的坑)
npm install -g gitnexus

# 1. 在仓库根目录建索引
cd your-repo
gitnexus analyze          # 首次全量索引,第二次起增量

# 2. 一次性配置你检测到的编辑器(Claude Code / Cursor / Codex / Antigravity ...)
gitnexus setup

# 3. 直接命令行查图(不需要开 agent 也能玩)
gitnexus impact UserService            # 谁依赖它?炸了谁?
gitnexus context validate              # 360° 视图(注意:方法名用短名,不带类前缀)
gitnexus trace handleLogin createSession  # 两个符号间的调用路径
gitnexus query "authentication middleware"  # 进程分组搜索
gitnexus status                        # 索引新鲜度

# 4. 浏览器模式:本地起服务,Web UI 自动接上
gitnexus serve
# 打开 https://gitnexus.vercel.app 即可浏览本地索引的仓库

# 5. 不想装?直接浏览器里拖一个 GitHub 仓库/ZIP 进去
#    (WASM 版索引,代码不出浏览器)

我拿一个 6 个 TS 文件的 demo 项目实测(UserService + 两个 API handler + controller + 路由),gitnexus --version 显示 1.6.9,analyze 4.9 秒建完索引:29 nodes | 42 edges | 5 clusters | 0 flows。然后跑 gitnexus impact UserService,返回 JSON:

{
  "target": { "id": "Class:src/services/user.ts:UserService", "name": "UserService", "type": "Class" },
  "direction": "upstream",
  "impactedCount": 3,
  "risk": "LOW",
  "epistemic": "exact",
  "byDepthCounts": { "1": 2, "2": 1 },
  "byDepth": {
    "1": [
      { "name": "user.ts", "filePath": "src/controllers/user.ts", "relationType": "CALLS", "confidence": 0.85 },
      { "name": "auth.ts", "filePath": "src/api/auth.ts", "relationType": "CALLS", "confidence": 0.85 }
    ]
  }
}

depth 1 的 CALLS 置信度 0.85、depth 2 还有一个 import 依赖,risk: LOWepistemic: exact——图是真的,不是 demo 数据。改 UserService 之前先跑这一下,哪些调用方会炸一目了然。另外 context validate 能正确列出谁调用了这个方法(handleLogin / handleRegister / UserController.update),trace handleLogin createSession 返回 hopCount 1 的直达路径。

实际体验的几个坑

跟我们有关的一件事

这个工坊已经写过五六个「代码知识图谱」项目了——gortex(7月12日)、serena(7月6日)、codedb(7月19日)、code-review-graph(7月27日)、CodeGraph(8月5日)。GitNexus 值得单独写一篇,是因为它把这条赛道的终点往前推了一格:别的项目解决「Agent 查得到」,它解决「Agent 不用查」——hooks 自动喂上下文 + 预计算答案,这是从「给 Agent 一个工具」到「给 Agent 一个神经系统」的转变。

如果你已经在用 Claude Code 或 Codex:装完 analyze + setup 两条命令,然后让 Agent 改一个核心函数前先跑 impact,对比一下改完的 CI 通过率,比看任何 benchmark 都直观。跟 CodeGraph 怎么选?你主要用 Claude Code/Codex 想要深度集成(hooks 自动喂)→ GitNexus;你要的是极致速度和极简部署 → CodeGraph;你要扫 257 种语言 → gortex。

要不要我帮你把 GitNexus 和 CodeGraph 装到同一个仓库里,跑同一批「改核心函数」任务,对比实际工具调用次数和 CI 结果?

适合谁用

总结

GitNexus 一年 45K Star 是实打实冲出来的:预计算关系智能(不是让 LLM 自己爬图)、17 个工具覆盖从爆炸半径到 API shape 校验、hooks 主动喂上下文、浏览器 WASM 零服务器形态——每一层都在回答同一个问题:怎么让 Agent 改代码之前真的「知道」代码库

唯一要掂量的是许可证(商用要买)和安装链路的几个坑(npm 11、C++ 工具链、embedding 上限)。但如果你是 Claude Code / Codex 用户,花十分钟装上,让 Agent 改核心代码前先跑一次 impact,你会立刻理解为什么它叫「神经系统」。

项目地址:github.com/abhigyanpatwari/GitNexus(Web UI:gitnexus.vercel.app · 企业版:akonlabs.com)