CodeGraph:为Claude Code加速,减少94%工具调用、提升77%探索速度!

CodeGraph:为Claude Code加速,减少94%工具调用、提升77%探索速度! CodeGraph用语义代码智能为Claude Code加速减少 94% 的工具调用 · 探索速度提升 77% · 完全本地运行快速开始运行 npx colbymchenry/codegraph交互式安装程序会自动配置 Claude Code。初始化项目cd your-projectcodegraph init -i为何选择 CodeGraphClaude Code 在探索代码库时会生成探索代理使用 grep、glob 和 Read 扫描文件每次工具调用都会消耗令牌。CodeGraph 为这些代理提供了预索引的知识图谱包含符号关系、调用图和代码结构。代理可以直接查询图谱而无需扫描文件。基准测试结果对 6 个真实世界的代码库进行测试比较使用和不使用 CodeGraph 时 Claude Code 探索代理的性能代码库工具调用次数有 CodeGraph工具调用次数无 CodeGraph工具调用减少比例时间有 CodeGraph时间无 CodeGraph速度提升比例VS CodeTypeScript3 次52 次94%17 秒1 分 37 秒82%ExcalidrawTypeScript3 次47 次94%29 秒1 分 45 秒72%Claude CodePython Rust3 次40 次93%39 秒1 分 8 秒43%Claude CodeJava1 次26 次96%19 秒1 分 22 秒77%AlamofireSwift3 次32 次91%22 秒1 分 39 秒78%Swift 编译器Swift/C6 次37 次84%35 秒2 分 8 秒73%所有测试均使用 Claude Opus 4.61M 上下文和 Claude Code v2.1.91。每个测试都使用相同的问题生成一个探索代理。详细测试数据使用 CodeGraph代码库索引文件数索引节点数工具使用次数令牌使用量时间文件读取次数VS CodeTypeScript4,00259,377356.6k17 秒0ExcalidrawTypeScript6269,859357.1k29 秒0Claude CodePython Rust1153,080367.1k39 秒0Claude CodeJava--140.8k19 秒0AlamofireSwift1022,624357.3k22 秒0Swift 编译器Swift/C25,874272,898677.4k35 秒0不使用 CodeGraph代码库工具使用次数令牌使用量时间文件读取次数VS CodeTypeScript5289.4k1 分 37 秒~15ExcalidrawTypeScript4777.9k1 分 45 秒~20Claude CodePython Rust4069.3k1 分 8 秒~15Claude CodeJava2673.3k1 分 22 秒~15AlamofireSwift3252.4k1 分 39 秒~10Swift 编译器Swift/C3799.1k2 分 8 秒~20关键观察结果使用 CodeGraph 时代理无需读取文件完全信任 codegraph_explore 的结果。不使用 CodeGraph 时代理在开始读取相关代码之前大部分时间都花在发现文件find、ls、grep上。Java 代码库只需一次 codegraph_explore 调用就能回答整个问题。跨语言查询Python Rust无缝工作CodeGraph 的图遍历可以跨越语言边界找到连接。Swift 基准测试Alamofire跟踪了从 Session.request() 到 URLSession.dataTask() 的 9 步调用链CodeGraph 的图遍历在深度为 3 时一次探索调用就能捕获完整链。Swift 编译器基准测试是测试的最大代码库25,874 个文件272,898 个节点CodeGraph 在不到 4 分钟内完成索引代理在 35 秒内通过 6 次探索调用和零文件读取回答了一个复杂的跨领域问题。主要特性智能上下文构建一次工具调用即可返回入口点、相关符号和代码片段无需使用昂贵的探索代理。全文搜索借助 FTS5可在整个代码库中即时按名称查找代码。影响分析在进行更改之前跟踪调用者、被调用者以及任何符号的完整影响范围。实时更新文件监视器使用原生操作系统事件FSEvents/inotify/ReadDirectoryChangesW进行去抖自动同步代码图会随着代码编写实时更新无需配置。支持 19 种以上语言包括 TypeScript、JavaScript、Python、Go、Rust、Java、C#、PHP、Ruby、C、C、Swift、Kotlin、Dart、Svelte、Liquid、Pascal/Delphi 等。框架感知路由识别 13 种 Web 框架的路由文件并将 URL 模式与其处理程序关联起来。完全本地运行无需数据上传无需 API 密钥无需外部服务仅使用 SQLite 数据库。框架感知路由CodeGraph 能够检测 Web 框架的路由文件并生成通过引用边链接到其处理程序类或函数的路由节点。查询视图/控制器的调用者时会显示绑定它的 URL 模式。支持的框架包括 Django、Flask、FastAPI、Express、Laravel、Rails、Spring、Gin、chi、gorilla、mux、Axum、actix、Rocket、ASP.NET、Vapor、React Router、SvelteKit 等。快速入门运行安装程序npx colbymchenry/codegraph安装程序将提示全局安装 codegraphMCP 服务器需要。在 ~/.claude.json 中配置 MCP 服务器。为 CodeGraph 工具设置自动允许权限。在 ~/.claude/CLAUDE.md 中添加全局说明。可选地初始化当前项目。重启 Claude Code重启 Claude Code 以加载 MCP 服务器。初始化项目cd your-projectcodegraph init -i完成以上步骤后当项目中存在 .codegraph/ 目录时Claude Code 将自动使用 CodeGraph 工具。手动设置可选全局安装npm install -g colbymchenry/codegraph添加到 ~/.claude.json{mcpServers: {codegraph: {type: stdio,command: codegraph,args: [serve, --mcp]}}}添加到 ~/.claude/settings.json可选用于自动允许{permissions: {allow: [mcp__codegraph__codegraph_search,mcp__codegraph__codegraph_context,mcp__codegraph__codegraph_callers,mcp__codegraph__codegraph_callees,mcp__codegraph__codegraph_impact,mcp__codegraph__codegraph_node,mcp__codegraph__codegraph_status,mcp__codegraph__codegraph_files]}}全局说明参考安装程序会自动将以下说明添加到 ~/.claude/CLAUDE.md如果项目中存在 .codegraph/切勿在主会话中直接调用 codegraph_explore 或 codegraph_context这些工具会返回大量源代码会填满主会话上下文。应始终为任何探索问题生成一个探索代理例如“X 是如何工作的”、“解释 Y 系统”、“Z 在哪里实现”。生成探索代理时在提示中包含以下说明此项目已初始化 CodeGraph.codegraph/ 存在。使用 codegraph_explore 作为主要工具它可以在一次调用中返回所有相关文件的完整源代码部分。**规则**1. 遵循 codegraph_explore 工具描述中的探索调用预算它会根据项目大小自动调整。2. 不要重新读取 codegraph_explore 已经返回源代码的文件这些源代码部分是完整且权威的。3. 仅在需要更多细节或 codegraph 没有返回结果时才使用 grep/glob/read 查找“其他相关文件”列表中的文件。主会话只能直接使用以下轻量级工具用于在编辑前进行有针对性的查找而不是用于探索工具用途codegraph_search按名称查找符号codegraph_callers / codegraph_callees跟踪调用流codegraph_impact在编辑前检查受影响的内容codegraph_node获取单个符号的详细信息如果项目中不存在 .codegraph/在会话开始时询问用户是否要初始化 CodeGraph“我注意到这个项目没有初始化 CodeGraph。你是否希望我运行 codegraph init -i 来构建代码知识图谱”工作原理Claude Code 接收到任务例如“实现用户认证”后会生成探索代理。探索代理向 CodeGraph MCP 服务器发送搜索、调用者和上下文等请求。MCP 服务器查询本地 SQLite 图数据库该数据库包含符号和边的信息可实现即时查找。具体流程提取使用 tree-sitter 将源代码解析为抽象语法树AST通过特定语言查询提取节点函数、类、方法和边调用、导入、继承、实现。存储将所有信息存储在本地 SQLite 数据库.codegraph/codegraph.db中并使用 FTS5 进行全文搜索。解析提取后解析引用关系如函数调用到定义、导入到源文件、类继承和框架特定模式。自动同步MCP 服务器使用原生操作系统文件事件监视项目对更改进行去抖处理2 秒安静窗口仅过滤源文件并进行增量同步代码图会随着代码编写实时更新无需配置。CLI 参考codegraph运行交互式安装程序。codegraph install显式运行安装程序。codegraph init [path]在项目中初始化--index 也可进行索引。codegraph uninit [path]从项目中移除 CodeGraph--force 跳过提示。codegraph index [path]全量索引--force 重新索引--quiet 减少输出。codegraph sync [path]增量更新。codegraph status [path]显示统计信息。codegraph query搜索符号--kind、--limit、--json。codegraph files [path]显示文件结构--format、--filter、--max-depth、--json。codegraph context为 AI 构建上下文--format、--max-nodes。codegraph affected [files...]查找受更改影响的测试文件。codegraph serve --mcp启动 MCP 服务器。codegraph affected 命令用于跟踪导入依赖关系查找受更改源文件影响的测试文件。codegraph affected src/utils.ts src/api.ts # 传递文件作为参数git diff --name-only | codegraph affected --stdin # 从 git diff 管道输入codegraph affected src/auth.ts --filter e2e/* # 自定义测试文件模式选项说明选项描述默认值--stdin从标准输入读取文件列表false-d, --depth最大依赖遍历深度5-f, --filter用于识别测试文件的自定义 glob 模式自动检测-j, --json以 JSON 格式输出false-q, --quiet仅输出文件路径falseCI/钩子示例#!/usr/bin/env bashAFFECTED$(git diff --name-only HEAD | codegraph affected --stdin --quiet)if [ -n $AFFECTED ]; thennpx vitest run $AFFECTEDfiMCP 工具作为 MCP 服务器运行时CodeGraph 向 Claude Code 提供以下工具工具用途codegraph_search在代码库中按名称查找符号codegraph_context为任务构建相关代码上下文codegraph_callers查找调用某个函数的内容codegraph_callees查找某个函数调用的内容codegraph_impact分析更改某个符号会影响哪些代码codegraph_node获取特定符号的详细信息可选包含源代码codegraph_files获取索引文件结构比文件系统扫描更快codegraph_status检查索引健康状况和统计信息库使用import CodeGraph from colbymchenry/codegraph;// 初始化const cg await CodeGraph.init(/path/to/project);// 或者打开现有项目const cg await CodeGraph.open(/path/to/project);// 全量索引await cg.indexAll({onProgress: (p) console.log(${p.phase}: ${p.current}/${p.total})});// 搜索节点const results cg.searchNodes(UserService);// 获取调用者const callers cg.getCallers(results[0].node.id);// 构建上下文const context await cg.buildContext(fix login bug, {maxNodes: 20,includeCode: true,format: markdown});// 获取影响范围const impact cg.getImpactRadius(results[0].node.id, 2);// 监视文件更改cg.watch();// 停止监视cg.unwatch();// 关闭cg.close();配置.codegraph/config.json 文件控制索引{version: 1,languages: [typescript, javascript],exclude: [node_modules/**, dist/**, build/**, *.min.js],frameworks: [],maxFileSize: 1048576,extractDocstrings: true,trackCallSites: true}选项说明选项描述默认值languages要索引的语言为空则自动检测[]exclude要忽略的 glob 模式[node_modules/**, ...]frameworks用于更好解析的框架提示[]maxFileSize跳过大于此大小的文件字节10485761MBextractDocstrings从代码中提取文档字符串truetrackCallSites跟踪调用点位置true支持的语言语言扩展名支持状态TypeScript.ts, .tsx全面支持JavaScript.js, .jsx, .mjs全面支持Python.py全面支持Go.go全面支持Rust.rs全面支持Java.java全面支持C#.cs全面支持PHP.php全面支持Ruby.rb全面支持C.c, .h全面支持C.cpp, .hpp, .cc全面支持Swift.swift全面支持Kotlin.kt, .kts全面支持Scala.scala, .sc全面支持类、特征、方法、类型别名、Scala 3 枚举Dart.dart全面支持Svelte.svelte全面支持脚本提取、Svelte 5 符文、SvelteKit 路由Vue.vue全面支持脚本 脚本设置提取、Nuxt 页面/API/中间件路由Liquid.liquid全面支持Pascal / Delphi.pas, .dpr, .dpk, .lpr全面支持类、记录、接口、枚举、DFM/FMX 表单文件故障排除“CodeGraph 未初始化”首先在项目目录中运行 codegraph init。索引速度慢检查是否排除了 node_modules 等大型目录使用 --quiet 减少输出开销。索引慢 / MCP 数据库被锁定 / WASM 回退激活CodeGraph 附带了一个 WASM SQLite 回退用于无法安装 better-sqlite3原生模块声明为可选依赖的环境。回退比原生后端慢 5 - 10 倍并且使用的日志模式会让写入者阻塞读取者因此在索引运行时 MCP 查询也可能会遇到数据库被锁定的情况。运行 codegraph status 查看后端信息Backend: native表示使用的是快速路径无需处理。Backend: wasm表示使用的是慢速回退。常见原因包括缺少 C 构建工具、预构建二进制文件不适用于当前 Node 版本或安装后 Node 版本发生变化。解决方法如下macOSxcode-select --install安装 C 编译器LinuxDebian / Ubuntusudo apt install build-essential python3 makeLinuxRHEL / Fedorasudo yum groupinstall Development Tools然后在任何平台上重新构建npm rebuild better-sqlite3或者强制将其作为硬依赖包含npm install better-sqlite3 --save修复后codegraph status 应显示 Backend: native。MCP 服务器无法连接确保项目已初始化/索引验证 MCP 配置中的路径并检查 codegraph serve --mcp 是否能从命令行正常工作。缺少符号MCP 服务器会在保存时自动同步等待几秒钟。如有需要手动运行 codegraph sync。检查文件的语言是否受支持并且未被配置模式排除。许可证MIT 许可证专为 Claude Code 社区打造。如有问题请 [报告 Bug](链接待补充) 或 [请求功能](链接待补充)。