以下是您要求的英文文章的中文翻译,已按照要求保留原文结构、代码块、技术术语和专有名词,并输出为 Markdown 格式。
colbymchenry / codegraph
CodeGraph 为 Claude Code、Cursor、Codex 和 OpenCode 提供语义级代码智能增强 约节省 35% 成本 · 减少 ~70% 工具调用 · 100% 本地运行
快速开始
npx @colbymchenry/codegraph
交互式安装程序会自动配置您的代理(Claude Code、Cursor、Codex CLI、opencode)
初始化项目
cd your-project
codegraph init -i
为什么选择 CodeGraph?
当 Claude Code 探索代码库时,它会生成 Explore 代理,这些代理使用 grep、glob 和 Read 扫描文件——每次工具调用都会消耗 token。CodeGraph 为这些代理提供了一个预先索引的知识图谱——符号关系、调用图和代码结构。代理可以直接查询图谱,而无需扫描文件。
基准测试结果
在 7 个真实世界的开源代码库(涵盖 7 种语言)上进行测试,比较了代理(Claude Code,无头模式)在有和没有 CodeGraph 的情况下回答一个架构问题的表现。每个单元格是每臂 4 次运行的中位数节省量。
平均:成本降低 35% · token 减少 59% · 速度提升 49% · 工具调用减少 70%
| 代码库 | 语言 | 成本 | Token | 时间 | 工具调用 | |---|---|---|---|---|---| | VS Code | TypeScript · ~10k 文件 | 节省 35% | 减少 73% | 加快 41% | 减少 72% | | Excalidraw | TypeScript · ~600 | 节省 47% | 减少 73% | 加快 60% | 减少 86% | | Django | Python · ~2.7k | 节省 34% | 减少 64% | 加快 59% | 减少 81% | | Tokio | Rust · ~700 | 节省 52% | 减少 81% | 加快 63% | 减少 89% | | OkHttp | Java · ~640 | 节省 17% | 减少 41% | 加快 36% | 减少 64% | | Gin | Go · ~150 | 节省 22% | 减少 23% | 加快 34% | 减少 19% | | Alamofire | Swift · ~100 | 节省 38% | 减少 59% | 加快 51% | 减少 77% |
收益随代码库规模扩大而增加:在大型仓库中,代理只需几次调用就能从索引中回答,零文件读取;而没有 CodeGraph 的代理则需要在 grep/find/Read(及其生成的子代理)之间分散操作。在像 Gin(~150 个文件)这样的小型仓库中,原生搜索已经很便宜,因此差距缩小。
完整基准测试详情
方法:每臂使用 claude -p(Claude Opus 4.7,Claude Code v2.1.145)在无头模式下针对仓库运行,使用 --strict-mcp-config:WITH = 启用 CodeGraph 的 MCP 服务器,WITHOUT = 空的 MCP 配置。内置的 Read/Grep/Bash 对两者都可用。每个仓库相同问题,每臂 4 次运行,报告中位数。
- 成本 = 运行的总成本(美元)
- Token = 处理的总 token(输入包括缓存 + 输出)
- 时间 = 挂钟时间
- 工具调用 = 每次工具调用,包括模型生成的任何子代理内部的调用
仓库以 --depth 1 克隆,并由提供服务的同一 CodeGraph 构建版本索引。
查询:
| 代码库 | 查询 | |---|---| | VS Code | "扩展主机如何与主进程通信?" | | Excalidraw | "Excalidraw 如何渲染和更新画布元素?" | | Django | "Django 的 ORM 如何从 QuerySet 构建并执行查询?" | | Tokio | "Tokio 如何在其运行时上调度和执行异步任务?" | | OkHttp | "OkHttp 如何通过其拦截器链处理请求?" | | Gin | "Gin 如何通过其中间件链路由请求?" | | Alamofire | "Alamofire 如何构建、发送和验证请求?" |
原始中位数——WITH → WITHOUT:
| 代码库 | 成本 | Token | 时间 | 工具调用 | |---|---|---|---|---| | VS Code | $0.42 → $0.64 | 393k → 1.4M | 1m 0s → 1m 43s | 7 → 23 | | Excalidraw | $0.54 → $1.02 | 851k → 3.2M | 1m 17s → 3m 14s | 12 → 83 | | Django | $0.41 → $0.62 | 499k → 1.4M | 1m 0s → 2m 25s | 9 → 48 | | Tokio | $0.50 → $1.04 | 657k → 3.4M | 1m 5s → 2m 56s | 9 → 75 | | OkHttp | $0.36 → $0.44 | 352k → 596k | 45s → 1m 11s | 5 → 14 | | Gin | $0.36 → $0.46 | 431k → 562k | 47s → 1m 11s | 7 → 8 | | Alamofire | $0.61 → $0.99 | 1.1M → 2.6M | 1m 19s → 2m 41s | 15 → 64 |
CodeGraph 为何胜出?
有了索引,代理可以直接回答——使用 codegraph_context 来定位区域,然后使用一次 codegraph_explore 获取相关源代码——然后停止,通常零文件读取。没有它,代理(及其生成的 Explore 子代理)在发现(find/ls/grep)上花费大部分预算,然后才读取正确的代码。
CodeGraph 仅在直接查询时才有帮助,因此其指令引导代理直接回答,而不是将探索委托给读取文件的子代理——否则子代理无论如何都会读取文件,CodeGraph 反而成为开销。
主要功能
智能上下文构建
一次工具调用即可返回入口点、相关符号和代码片段——无需昂贵的探索代理
全文搜索
由 FTS5 驱动,在整个代码库中即时按名称查找代码
影响分析
在进行更改之前,追踪任何符号的调用者、被调用者以及完整的影响范围
始终最新
文件监视器使用原生 OS 事件(FSEvents/inotify/ReadDirectoryChangesW)并带有防抖自动同步——图谱在您编码时保持最新,零配置
支持 19+ 种语言
TypeScript、JavaScript、Python、Go、Rust、Java、C#、PHP、Ruby、C、C++、Swift、Kotlin、Dart、Lua、Luau、Svelte、Liquid、Pascal/Delphi
框架感知路由
识别 Web 框架路由文件,并将 URL 模式链接到其处理程序,覆盖 13 个框架
100% 本地
数据不会离开您的机器。无需 API 密钥。无需外部服务。仅使用 SQLite 数据库
框架感知路由
CodeGraph 检测 Web 框架路由文件,并发出通过引用边链接到其处理程序类或函数的路由节点。查询视图/控制器的调用者现在会显示绑定它的 URL 模式。
识别的框架形状:
- Django:
path()、re_path()、url()、include()在 urls.py 中(CBV.as_view()、点分路径) - Flask:
@app.route('/path', methods=[...])、蓝图路由 - FastAPI:
@app.get(...)、@router.post(...)、所有标准方法 - Express:
app.get(...)、router.post(...)带中间件链 - NestJS:
@Controller+@Get/@Post/...、GraphQL@Resolver+@Query/@Mutation、@MessagePattern/@EventPattern、@SubscribeMessage - Laravel:
Route::get()、Route::resource()、Controller@action、元组语法 - Rails:
get '/x', to: 'users#index'、哈希火箭=>语法 - Spring:
@GetMapping、@PostMapping、@RequestMapping在方法上 - Gin / chi / gorilla / mux:
r.GET(...)、router.HandleFunc(...) - Axum / actix / Rocket:
.route("/x", get(handler)) - ASP.NET:
[HttpGet("/x")]属性在操作方法上 - Vapor:
app.get("x", use: handler) - React Router / SvelteKit:路由组件节点
快速开始
- 运行安装程序:
npx @colbymchenry/codegraph - 在您的项目目录中初始化:
cd your-project && codegraph init -i - 按照交互式提示配置您的代理(Claude Code、Cursor、Codex CLI、opencode)