【每天学习一个新项目】colbymchenry/codegraph
🔥 26-05-22 今日 GitHub Trending 精选
🥇 最火新秀
| 项目 | Stars (今日) | 简介 |
|---|---|---|
| colbymchenry/codegraph | 13.9k (🔥+4,294) | 代码预索引知识图谱,给 Claude Code/Codex/Cursor/OpenCode 用的——减少 token 消耗、减少工具调用、100% 本地运行 |
| multica-ai/andrej-karpathy-skills | 143k (🔥+2,614) | Karpathy 的 LLM 编程避坑指南做成一个 CLAUDE.md |
| obra/superpowers | 201k (🔥+1,576) | Agentic skills 框架,可以和 Hermes 对比着玩 |
| multica-ai/multica | 30.8k | 开源 managed agents 平台——把 AI 编程代理变成真正的队友 |
今天明显是 "AI Agent 技能 / 插件生态大爆发" 的一天。codegraph 今天暴涨 4,294 star 拿到头名,说明大家都在找让 AI 编程更省 token 的方案。
🔍 CodeGraph — 给你的 AI 编程助手装上代码地图
你的痛点 vs CodeGraph 的方案
「vibe coding 的时候大模型很难理解整个项目零零散散的代码」
这就是 CodeGraph 作者说的 "探索税" (The Exploration Tax)。每次你开一个新 session 让 Claude/Cursor/Codex 干活,它会:
- 先 spawn 一堆 Explore 子代理
- 这些子代理用
grep/glob/Read满项目乱翻 - 大量 token 烧在了"找到文件"而不是"写代码"上
CodeGraph 的解法:提前给你的项目建一张语义知识图谱,AI 不再盲目扫描文件,而是直接查询图谱。
传统方式:AI → grep/glob 扫文件 → 读文件 → 理解 → 写代码
CodeGraph:AI → 查询图谱(毫秒级) → 直接拿到完整上下文 → 写代码
📊 实打实的 benchmark 数据
作者在 7 个真实开源项目(VS Code、Django、Tokio 等)上跑了对照实验,每个跑 4 次取中位数:
| 指标 | 提升 |
|---|---|
| 成本 | ↓ 35% |
| Token 消耗 | ↓ 59% |
| 速度 | ↑ 49% |
| 工具调用次数 | ↓ 70% |
以 VS Code(~1 万文件)为例——不用 CodeGraph 要 23 次工具调用、1 分 43 秒;用了只要 7 次、1 分钟搞定,连一个文件读取都没有。
🧠 它到底怎么工作的?
┌──────────────────────────────────────────────┐
│ Claude Code / Hermes │
│ "帮我加一个用户认证功能" │
│ │ │
│ codegraph_context("user auth") │
│ │ │
│ ▼ │
│ ┌─────────────────────────────┐ │
│ │ CodeGraph MCP Server │ │
│ │ ┌───────┐ ┌────────┐ │ │
│ │ │Search │ │Callers │ ... │ │
│ │ └───┬───┘ └───┬────┘ │ │
│ │ │ │ │ │
│ │ ┌───┴─────────┴──────┐ │ │
│ │ │ SQLite 图谱数据库 │ │ │
│ │ │ · 387 symbols │ │ │
│ │ │ · 1,204 edges │ │ │
│ │ │ · FTS5 全文搜索 │ │ │
│ │ └────────────────────┘ │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────────────────┘
四个步骤:
- Extraction — tree-sitter 解析源码 AST,提取符号(函数、类、方法)和边(调用、导入、继承、实现)
- Storage — 存进本地 SQLite(
.codegraph/codegraph.db),带 FTS5 全文搜索 - Resolution — 解析引用关系:函数调用 → 定义、import → 源文件、类继承、框架路由
- Auto-Sync — 文件监听器(FSEvents/inotify),改代码后 2 秒内自动增量更新,零配置
🛠 8 个 MCP 工具
| 工具 | 用途 |
|---|---|
codegraph_search | 按名称搜索符号 |
codegraph_context | 根据任务描述自动返回相关代码上下文(核心!) |
codegraph_callers | 谁调用了这个函数 |
codegraph_callees | 这个函数调用了谁 |
codegraph_impact | 改动前看影响范围 |
codegraph_node | 查单个符号详情 + 源码 |
codegraph_files | 索引化的文件结构(比文件系统扫描快) |
codegraph_status | 索引健康状态 |
🎯 特别香的功能:codegraph affected
改了代码想知道要跑哪些测试?一行搞定:
git diff --name-only | codegraph affected --stdin
# 输出: 被你的改动影响到的所有测试文件
能直接嵌进 CI / git hook,只跑受影响的测试,省 CI 时间。
🌍 支持 21 种语言 + 14 个 Web 框架路由
语言覆盖:TS/JS/Python/Go/Rust/Java/C#/PHP/Ruby/C/C++/Swift/Kotlin/Scala/Dart/Svelte/Vue/Lua/Luau/Liquid/Pascal
框架路由识别:Django / Flask / FastAPI / Express / NestJS / Laravel / Rails / Spring / Gin / Axum / ASP.NET / React Router / SvelteKit / Vue Router —— 能把 URL 路径和 handler 函数直接关联起来!
📦 想装一个试试?
安装超简单,不需要 Node.js(它自带运行时):
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex
装完在你项目里:
cd your-project
codegraph init -i # 建索引
第一步:运行安装器,自动配置 Agent
# 在 PowerShell 里跑(项目目录下或任意位置都行)
codegraph install

安装器会交互式问你:
- 要配置哪些 Agent → 选 Claude Code 和 Codex CLI(它会自动检测到已安装的)
- 全局还是仅本项目 → 建议选
global,这样所有项目有.codegraph/的都自动生效 - 自动授权 → 对 Claude Code 会提示加到 auto-allow 列表,选 Yes
如果你想一键跳过交互:
codegraph install --target=claude,codex --yes
第二步:安装器帮你做了什么
| Agent | 写入的配置 | 作用 |
|---|---|---|
| Claude Code | ~/.claude.json 加 MCP server 配置 | 启动 Claude Code 时自动加载 CodeGraph 工具 |
| Claude Code | ~/.claude/CLAUDE.md 加 instructions | 教 Claude 什么时候用图谱、什么时候 spawn Explore 子代理 |
| Claude Code | ~/.claude/settings.json 加 auto-allow | 允许 Claude 自动调用 CodeGraph 工具,不用每次弹确认 |
| Codex CLI | ~/.codex/AGENTS.md 加 instructions | 教 Codex 使用图谱 |
第三步:重启 Agent → 开用
Claude Code:
# 在项目目录下启动
claude
进去后可以直接验证:
"用 codegraph_status 看看当前项目的索引状态"
如果能返回 21,124 nodes, 20,183 edges,说明配通了。
Codex CLI:
codex
第四步:实际使用——你什么都不用改
配好后,Agent 检测到项目根有 .codegraph/ 目录就会自动切换行为。举个例子:
你:帮我看看这个项目的用户认证流程是怎么实现的
Claude Code 内部(有 CodeGraph):
→ codegraph_context("user authentication") // 一次调用拿到所有相关代码
→ 直接回答,0 次 grep,0 次盲读
Claude Code 内部(没有 CodeGraph):
→ spawn Explore 子代理
→ grep "auth" → 读 8 个文件
→ grep "login" → 读 5 个文件
→ grep "token" → 读 6 个文件
→ 拼出答案,烧掉一堆 token
⚠️ Windows 特别注意
-
CodeGraph MCP server 路径:安装器会把
codegraph加到 PATH 或写入绝对路径。确认一下:where.exe codegraph应该能找到一个路径。
-
如果 Agent 启动时报
codegraph: command not found:手动把 CodeGraph 安装目录加到 PATH,或者用完整路径:# 找到 codegraph 在哪 npm list -g @colbymchenry/codegraph # 或者 where.exe npx -
Claude Code 的 MCP 配置路径在 Windows 上是
%USERPROFILE%\.claude.json,可以用:notepad $env:USERPROFILE\.claude.json确认里面有
"codegraph"的 MCP server 条目。
🧪 验证是否生效
启动 Claude Code 后,试这几个命令:
# 1. 搜索一个你确定存在的类
"用 codegraph_search 搜索 XXXService"
# 2. 查调用关系
"用 codegraph_callers 看 XXXService.init() 被谁调用了"
# 3. 直接做实际任务
"帮我给 XXXController 加一个参数校验"
如果 Agent 直接调了 CodeGraph 工具而没有疯狂 grep,就说明配通了 ✅
安装器会自动检测你装了哪些 AI 工具(Claude Code / Cursor / Codex / Hermes Agent 全支持!),然后自动配好 MCP server 和 CLAUDE.md 之类的 instructions。
重点——支持 Hermes Agent! 你现在的 Hermes 就能直接用。
当项目很大的时候会有性能问题吗?
✅ 先说结论:设计上就是为大型项目优化的,且收益随项目规模递增
📊 自有 benchmark — 最大测试了 VS Code(~10,000 文件)
| 项目 | 规模 | Cost 节省 | Token 减少 | 工具调用减少 |
|---|---|---|---|---|
| Gin (Go) | ~150 文件 | 22% | 23% | 19% |
| Alamofire (Swift) | ~100 文件 | 38% | 59% | 77% |
| OkHttp (Java) | ~640 文件 | 17% | 41% | 64% |
| Excalidraw (TS) | ~600 文件 | 47% | 73% | 86% |
| Django (Python) | ~2,700 文件 | 34% | 64% | 81% |
| Tokio (Rust) | ~700 文件 | 52% | 81% | 89% |
| VS Code (TS) | ~10,000 文件 | 35% | 73% | 72% |
关键结论在 README 里直接写了:
"The gains scale with codebase size" — 项目越大,收益越明显。VS Code 这种万文件级项目,Agent 从图谱直接回答,零文件读取;而裸奔的 Agent 在那疯狂 spawn Explore 子代理 grep/find/Read。
🛡 三层防护避免性能陷阱
1. 自动排除脏数据
- 完全遵循
.gitignore——node_modules、dist、build、.env等从不索引 - 单个文件 > 1MB 直接跳过(minified bundle、generated code、vendor blobs)
- 只索引源码文件(按扩展名匹配 21 种语言)
2. SQLite + WAL 模式
- 数据库是普通 SQLite 文件(
.codegraph/codegraph.db) - WAL 模式:并发读永远不会被写阻塞——你在改代码触发 auto-sync 时,Agent 的查询不受影响
3. 增量更新 + 防抖
- 首次
codegraph init -i是全量索引(一次性成本) - 之后用原生 OS 文件事件(macOS 用 FSEvents)监听变更
- 2 秒防抖窗口:你保存文件后等 2 秒再增量同步
- SHA-256 增量:只重新处理内容真正变了的文件
⚠️ 潜在瓶颈(诚实地说)
| 场景 | 风险 | 实际情况 |
|---|---|---|
| 首次索引 10k+ 文件 | 耗时长 | 一次性成本,tree-sitter 逐文件解析,预计几分钟到十几分钟 |
| 超大 monorepo(100k+ 文件) | 数据库体积 | SQLite 能轻松 handle 百万级符号,但 .codegraph/ 目录可能膨胀到几百 MB |
| 索引时内存 | OOM 风险 | tree-sitter 是文件级解析,做完一个释放一个,内存可控;但极端大型文件(接近 1MB 的源文件)可能 spike |
| 频繁切分支 | 大量文件变动触发全量重索引 | 目前增量是基于文件 hash 的,大范围变动时需要较多 CPU |
好消息是 GitHub Issues 里搜不到任何关于大项目性能/内存问题的投诉(38 个 issue 里 0 个性能相关),侧面说明现有设计对常见项目规模够用。
🔄 还有一个 Rust 替代品:codemap
Graham Brooks 用 Rust 重写了一个叫 codemap 的版本,思路几乎一样,区别是:
- 编译成单一二进制,不需要 Node 运行时(但 CodeGraph 现在已经自带 Node 了所以没差)
- 17 个 MCP 工具(比 CodeGraph 的 8 个更细粒度)
- 支持
codemap-unused找死代码、codemap-path查两个符号间的调用链
如果遇到 CodeGraph 的性能瓶颈(比如数据库锁——但 WAL 模式已经解决了),codemap 可以当备选。
🎯 总结
对于你这种 vibe coding 场景,CodeGraph 在越大的项目上价值越大。小项目(<200 文件)可能感知不强,但一旦上百个文件、跨模块调用关系复杂,它能直接把 AI 的"理解成本"砍掉一半以上。
唯一需要注意的是首次索引时间——建议午饭前跑 codegraph init -i,回来就好了 😄
