使用说明
CodeGraph
作为MCP服务器的代码库智能。原生锈。次秒级索引。零运行时依赖关系。
这是什么?
CodeGraph构建代码库的完整语义图——跨代码库的每个函数、类、导入和调用关系 32种编程语言 --并通过 模型上下文协议 (MCP)。
当Claude Code、Codex或任何与MCP兼容的代理进入您的项目时,CodeGraph会让它立即深入了解您的整个代码库:什么叫什么,什么取决于什么,如果您更改了什么,什么会中断。不是文件级grep-- 图感知、语义排序、令牌预算上下文.
v0.2.5 添加了git集成、安全扫描(OWASP/CWE)、调用图分析、数据流分析、YAML配置系统、结构化日志记录和强大的多字节字符处理。
入门指南
两个步骤。就这样
步骤1:安装二进制文件
选择一个:
curl -fsSL https://raw.githubusercontent.com/suatkocar/codegraph/main/install.sh | bash
brew tap suatkocar/codegraph && brew install codegraph
npx @suatkocar/codegraph init
cargo build --release --no-default-features
步骤2:初始化项目
codegraph init
这个命令为您的代码库建立索引,注册MCP服务器,安装生命周期挂钩,生成CLAUDE.md,并设置git挂钩。
打开Claude Code,您的项目已经具有图形感知能力。
init之后会发生什么?
每次会话开始时
SessionStart钩子触发增量重新索引(当没有任何变化时约为12ms)。你的图表总是很新鲜。
在您发送的每一个提示中
UserPromptSubmit钩子在图中搜索与您的消息相关的上下文,并自动注入。代理甚至在开始思考之前就看到了正确的代码。
每次工具调用前
PreToolUse钩子在Edit、Write、Read、Grep、Glob和Bash调用之前注入相关的代码库上下文。代理在打开文件之前就知道文件中有哪些符号。
克劳德编辑的每个文件
PostToolUse钩子会立即重新索引修改后的文件。图表在变化发生时保持同步。
当工具出现故障时
PostToolUseFailure钩子提供了纠正上下文-如果函数被重命名或移动,CodeGraph会告诉代理现在在哪里找到它。
当子代理产卵时
SubgentStart钩子将紧凑的项目概述(顶部符号、框架、文件计数)注入到每个子代理中。他们从一开始就全面了解代码库。
在压缩对话之前
PreCompact挂钩保存最重要符号的PageRank摘要。即使对话历史被压缩,结构意识仍然存在。
在代理停止之前
Stop挂钩检查图不一致(未解决的引用率高),并建议代理在停止之前继续解决这些问题。
当任务完成时
TaskCompleted挂钩运行一个质量门——重新索引项目,并报告任务期间引入的任何新的死代码或未解决的引用。
会话结束时
SessionEnd钩子运行最终的增量重新索引并记录会话级诊断(文件计数、节点计数、边计数、未解析的引用)。
演出
| 度量 | 无CodeGraph | 有CodeGraph | 改进 |
|---|---|---|---|
| 每个任务的令牌 | ~5000 | ~1550 | 减少68% |
| 检查的文件 | 11(全部) | 3个平均值 | 减少73% |
| 索引54个文件 | 不适用 | 230毫秒 | 亚秒级 |
| 增量无操作 | N/A | 13毫秒 | 即时 |
| CPU利用率 | N/A | 600%+ | 通过人造丝进行并行解析 |
代币减少基准
在一个真实的11文件TypeScript项目上进行测量,并进行真实性评估:
| 任务查询 | 基线令牌 | CodeGraph令牌 | 缩减 |
|---|---|---|---|
| 身份验证登录 | 4962 | 1997 | 59.8% |
| 数据库连接 | 4962 | 1305 | 73.7% |
| 用户存储库 | 4962 | 2108 | 57.5% |
| API路由处理程序 | 4962 | 935 | 81.2% |
| 密码哈希 | 4962 | 1522 | 69.3% |
| 平均 | 68.3% |
质量指标(评估框架)
| 类别 | 精确度 | 召回率 | F1得分 |
|---|---|---|---|
| 呼叫者检测 | 1.00 | 1.00 | 1.00 |
| 死码检测 | 0.75 | 1.00 | 0.86 |
| 搜索相关性 | 0.27 | 0.58 | 0.37 |
呼叫者检测实现了完美的精确度和召回率——CodeGraph从不错过呼叫者,也从不产生幻觉。
支持的语言(32)
| 语言 | 扩展 | 语言 | 扩展 |
|---|---|---|---|
| TypeScript | .ts |
哈斯克尔 | .hs .lhs |
| TSX | .tsx |
灵丹妙药 | .ex .exs |
| JavaScript | .js .mjs .cjs |
Groovy | .groovy .gradle |
| JSX | .jsx |
PowerShell | .ps1 .psm1 |
python .py |
Perl | .pl .pm |
|
| 去吧 | .go |
Clojure | .clj .cljs |
| 生锈 | .rs |
朱莉娅 | .jl |
Java .java R .R .r |
|||
C .c .h |
二郎 | .erl .hrl |
|
C .cpp .cc .hpp |
榆树 | .elm |
|
C .cs |
Fortran | .f90 .f95 |
|
| PHP | .php |
尼克斯 | .nix |
| 红宝石 | .rb |
Bash | .sh .bash |
| Swift | .swift |
Scala | .scala .sc |
| Kotlin | .kt .kts |
飞镖 | .dart |
| Verilog | .v .sv |
齐格 | .zig |
| Lua | .lua |
所有语法在编译时都通过原生树保姆0.25静态链接。无WASM,无运行时下载,无初始化延迟。
MCP工具(44)
核心(13)
| 工具 | 目的 |
|---|---|
codegraph_query |
混合关键字+语义搜索(FTS5+sqlite-vec+RRF) |
codegraph_dependencies |
前向依赖遍历(递归CTE) |
codegraph_callers |
反向调用图 |
codegraph_callees |
正向调用图 |
codegraph_impact |
爆炸半径分析及风险分类 |
codegraph_structure |
PageRank排名符号的项目概述 |
codegraph_tests |
测试覆盖率发现 |
codegraph_context |
LLM上下文组装(4层令牌预算) |
codegraph_node |
使用关系进行直接符号查找 |
codegraph_diagram |
美人鱼图生成 |
codegraph_dead_code |
查找未使用的符号 |
codegraph_frameworks |
检测项目框架(18+) |
codegraph_languages |
语言细分统计 |
Git集成(9)
| 工具 | 目的 |
|---|---|
codegraph_blame |
逐行git责备 |
codegraph_file_history |
文件提交历史记录 |
codegraph_recent_changes |
最近的存储库提交 |
codegraph_commit_diff |
提交差异细节 |
codegraph_symbol_history |
符号修改历史 |
codegraph_branch_info |
分行状态和跟踪信息 |
codegraph_modified_files |
工作树更改(阶段性/非阶段性) |
codegraph_hotspots |
基于切换的热点检测 |
codegraph_contributors |
贡献者统计 |
安全(9)
| 工具 | 目的 |
|---|---|
codegraph_scan_security |
基于YAML规则的漏洞扫描 |
codegraph_check_owasp |
2021年OWASP Top 10扫描 |
codegraph_check_cwe |
CWE Top 25扫描 |
codegraph_explain_vulnerability |
CWE解释+补救指导 |
codegraph_suggest_fix |
修正对调查结果的建议 |
codegraph_find_injections |
通过污点分析进行SQL/XSS/命令注入 |
codegraph_taint_sources |
识别代码中的污染源 |
codegraph_security_summary |
综合风险评估 |
codegraph_trace_taint |
从源到汇的数据流跟踪 |
存储库与分析(7)
| 工具 | 目的 |
|---|---|
codegraph_stats |
索引统计(节点、边、文件) |
codegraph_circular_imports |
循环检测(Tarjan SCC) |
codegraph_project_tree |
带有符号计数的目录树 |
codegraph_find_references |
交叉引用搜索 |
codegraph_export_map |
模块导出列表 |
codegraph_import_graph |
导入图形可视化 |
codegraph_file |
文件符号列表 |
调用图和数据流(6)
| 工具 | 目的 |
|---|---|
codegraph_find_path |
两个函数之间的最短调用路径(BFS) |
codegraph_complexity |
每个函数的圈动+认知复杂性 |
codegraph_data_flow |
变量定义使用链 |
codegraph_dead_stores |
作业从不阅读 |
codegraph_find_uninitialized |
初始化前使用的变量 |
codegraph_reaching_defs |
达成定义分析 |
安全扫描
CodeGraph包括一个内置的安全扫描程序,其中包含基于YAML的规则:
- 4个捆绑规则集:OWASP Top 10、CWE Top 25、加密弱点、秘密检测
- 50+条规则 涵盖SQL注入、XSS、命令注入、硬编码秘密、弱加密等
- 污点分析:注入漏洞的源到汇数据流跟踪
- 自定义规则:使用正则表达式模式、严重性、CWE/OWASP映射编写自己的YAML规则
codegraph scan-security # Full scan with all rules
codegraph check-owasp # OWASP Top 10 only
codegraph check-cwe # CWE Top 25 only
配置
CodeGraph支持分层YAML配置:
# .codegraph.yaml (project-level) or ~/.config/codegraph/config.yaml (user-level)
version: "1.0"
preset: balanced # minimal | balanced | full | security-focused
tools:
overrides:
codegraph_dead_code:
enabled: false
reason: "Too noisy for this project"
performance:
exclude_tests: true
4个预设: minimal (15个工具), balanced (30个工具), full (全部44个), security-focused
自动编辑器检测:克劳德代码→ 完整,VS代码→ 平衡,Zed→ 最小
环境覆盖: CODEGRAPH_PRESET, CODEGRAPH_DISABLED_TOOLS
建筑
Source Files ──→ tree-sitter ──→ Extractor ──→ SQLite DB
(32 langs) (native parse) (nodes+edges) ├── FTS5 (keyword index)
├── sqlite-vec (vector index)
└── edges (graph structure)
↓
Query Engine
├── Hybrid Search (BM25 + cosine + RRF)
├── Graph Traversal (recursive CTEs)
├── PageRank (symbol importance)
└── Context Assembly (4-tier budget)
↓
MCP Server (stdio)
├── 44 tools via rmcp
└── 10 Claude Code hooks
模块布局
src/
main.rs CLI entry point (16 commands, clap derive)
mcp/server.rs MCP server — 44 tools via rmcp #[tool] macros
db/schema.rs SQLite schema — FTS5 + sqlite-vec + unresolved_refs
indexer/
parser.rs 32 tree-sitter grammars, statically linked
extractor.rs AST → nodes, edges, qualified names for all languages
pipeline.rs Parallel indexing with rayon + incremental SHA-256 hashing
embedder.rs Jina v2 Base Code embeddings (768-dim, ONNX)
graph/
store.rs CRUD operations with prepare_cached
traversal.rs Dependency/caller/callee traversal via recursive CTEs
ranking.rs PageRank, personalized PageRank, blast radius
search.rs Hybrid FTS5 + vector search, RRF fusion (k=60)
complexity.rs Cyclomatic + cognitive complexity analysis
dataflow.rs Def-use chains, reaching definitions, dead stores
context/
assembler.rs 4-tier token-budgeted LLM context assembly
budget.rs Token estimation, truncation, signature extraction
resolution/
imports.rs Cross-file import resolution + path alias support
routes.rs Framework-specific route/component resolvers
frameworks.rs Framework detection (18+ frameworks from manifests)
dead_code.rs Unused symbol detection via edge analysis
git/
blame.rs Git blame integration
history.rs File/symbol history, commit diffs
analysis.rs Hotspots, contributors, branch info
security/
scanner.rs Directory/file scanning engine
rules.rs YAML rule parser + bundled rule loader
taint.rs Source-to-sink taint analysis
config/
schema.rs Configuration data model + validation
loader.rs Layered config loading (user → project → env → CLI)
preset.rs 4 presets with tool/category filtering
observability/
mod.rs Structured logging (tracing), path validation, secret redaction
eval/
harness.rs Evaluation framework (precision/recall/F1)
token_benchmark.rs Token reduction measurement vs baseline
cli/
installer.rs Interactive installer with ASCII banner + progress bars
hooks/
install.rs .mcp.json + .claude/settings.json + shell scripts
handlers.rs 10 runtime handlers with catch_unwind safety
git_hooks.rs Git post-commit hook (idempotent, marker-based)
claude_template.rs CLAUDE.md generation with tool instructions
CLI参考
codegraph init <dir> Full interactive setup (banner, prompts, progress bars)
codegraph init <dir> --yes Non-interactive setup (CI/scripting)
codegraph index <dir> Index a codebase (incremental by default)
codegraph index <dir> --force Force full re-index
codegraph serve Start MCP server (stdio transport)
codegraph query <text> Search the code graph
codegraph impact <target> Blast radius analysis
codegraph stats Show index statistics
codegraph dead-code Find potentially unused symbols
codegraph frameworks <dir> Detect frameworks and libraries
codegraph languages Language breakdown
codegraph install-hooks <dir> Install Claude Code hooks
codegraph git-hooks install Install git post-commit hook
codegraph git-hooks uninstall Remove git post-commit hook
从源头构建
# Prerequisites: Rust 1.75+, C compiler (for tree-sitter + SQLite)
# Full build with embeddings
cargo build --release
# Without embeddings (keyword-only search, leaner binary)
cargo build --release --no-default-features
# Run the test suite (2065 tests)
cargo test
卸载
# Remove the binary
rm ~/.local/bin/codegraph
# Remove project data (run inside each project you initialized)
rm -rf .codegraph/
codegraph git-hooks uninstall
# Remove Claude Code integration files (optional, check before deleting)
rm .mcp.json
rm -rf .claude/
设计决策
- 同步核心,仅在MCP边界异步。 树保姆和rusqlite是同步的。Tokio仅用于rmcp stdio传输。
- 当地的树保姆,不是WASM。 32个语法静态链接。无初始化延迟,无运行时下载。
- 代码特定嵌入。 Jina v2基础代码(768 dim)理解编程语言语义,而不仅仅是自然语言。
- 特征门控嵌入。 构建于
--no-default-features对于只进行关键字搜索的更精简的二进制文件。 - 胡克从不惊慌。 每个处理程序都使用
catch_unwind并且总是返回有效的JSON。CodeGraph永远不会阻止您的代理。 - 我放弃一切。 跑步
init两次产生相同的结果。钩子是基于标记的。配置合并是累加的。 - 按遏制措施列出的合格名称。
Class.method名称来源于行范围外壳,适用于所有32种语言,无需特定语言的逻辑。 - 结构化日志记录。 使用
tracing板条箱RUST_LOG支持。所有MCP工具输入/输出上的路径遍历保护和秘密编校。
许可证
麻省理工学院
使用原生Rust、树保姆构建,并坚信AI编码代理应该比grep有更好的上下文。
