Phoenixrr2113/codebase-graph
GitHub: Phoenixrr2113/codebase-graph
一个面向 AI 代理的代码知识图谱与搜索系统,通过 tree-sitter 解析、向量检索和双时态知识图谱,让大模型能够深度理解和检索代码库。
Stars: 2 | Forks: 0
# CodeGraph
一个面向 AI 代理的代码知识图谱与搜索系统。它将您的代码库索引到图数据库中,对符号和文档进行嵌入,并通过 Model Context Protocol (MCP) 服务器暴露搜索接口。
## 功能特性
- **按语义搜索代码** — vector embeddings 结合 cross-encoder reranking 能够找到您描述的函数、类或接口,即使您不知道它们的名称。内部基准测试:在一个包含约 2.3K 节点的项目中,MRR 为 0.969,Success@1 为 94%,Success@5 为 100%,延迟约为 447ms。
- **理解结构** — tree-sitter 解析器可跨 5 种一等语言(TypeScript, Python, Go, Rust, Markdown)提取 Functions, Classes, Interfaces, Variables 和 Types,并通过 generic plugin 提供对其他语言的 tree-sitter 覆盖支持。
- **追踪时间维度上的决策** — bitemporal knowledge graph(双时态知识图谱)使用 `valid_at` / `invalid_at` 时间戳存储事实,支持时间点查询(“3月1日时的情况是什么?”)。
- **接入 AI 代理** — 暴露 4 个 MCP 工具组(`search`、`knowledge`、`codebase`、`query`),可应用于 Claude Desktop、Cursor、Claude Code 或任何 MCP 客户端。
## 快速开始
```
git clone https://github.com/Phoenixrr2113/codebase-graph.git
cd codebase-graph
pnpm install
pnpm build
# 选项 A — embedded database (无需 Docker)
brew install redis # macOS — FalkorDBLite needs redis-server
echo "CODEGRAPH_DRIVER=falkordblite" > .env
echo "CODEGRAPH_DB_PATH=.codegraph/falkordb" >> .env
# 选项 B — 通过 Docker 运行 FalkorDB
# pnpm docker:db
# echo "CODEGRAPH_DRIVER=falkordb" > .env
# 索引项目
pnpm --filter @codegraph/cli start configure --projects /path/to/your/project
pnpm --filter @codegraph/cli start reindex
# 运行 MCP server (stdio transport)
pnpm --filter @codegraph/mcp-server start
```
## 与 MCP 客户端配合使用
### Claude Desktop
添加至 `~/Library/Application Support/Claude/claude_desktop_config.json`:
```
{
"mcpServers": {
"codegraph": {
"command": "node",
"args": ["/absolute/path/to/codebase-graph/packages/mcp-server/dist/index.js"],
"env": {
"VOYAGE_API_KEY": "your-key",
"JINA_API_KEY": "your-key"
}
}
}
}
```
### Claude Code
```
claude mcp add codegraph node /absolute/path/to/codebase-graph/packages/mcp-server/dist/index.js
```
## MCP 工具
默认提供四个基于角色(persona)的工具组。设置 `CODEGRAPH_RAW_TOOLS=1` 可单独暴露底层处理程序。
| 工具 | 功能 |
|------|--------------|
| **search** | 按名称或语义查找代码/符号;获取文件或符号的上下文 |
| **knowledge** | 存储和检索实体、关系及事实(支持双时态查询) |
| **codebase** | 配置项目、重新索引、检查状态/统计信息、读取源代码 |
| **query** | 对图执行只读 Cypher 查询(面向高级用户) |
有关完整的工具参考(参数、示例、工作流),请参阅 [CLAUDE.md](./CLAUDE.md)。
## 架构
- **图存储:** FalkorDB (Docker) 或 FalkorDBLite (embedded),每个节点类型带有 HNSW vector indexes。
- **Embeddings:** 可插拔设计 — 支持 Voyage AI (`voyage-code-3`, 1024维)、OpenRouter,或通过 `@huggingface/transformers` 运行的本地 nomic-embed (768维,可在 CPU 上运行)。
- **Reranker:** 通过 Jina (`jina-reranker-v2-base-multilingual`) 或 Voyage 实现的 cross-encoder。
- **Indexer:** 使用 tree-sitter 进行 AST 解析,基于 SHA-256 文件哈希的增量变更检测。
- **MCP 服务器:** 默认提供 4 个 persona 工具;raw mode 可暴露底层处理程序。
## 配置
环境变量(在仓库根目录的 `.env` 文件中设置):
```
# Embedding provider (从 API keys 自动检测)
CODEGRAPH_EMBEDDING_PROVIDER=voyage # voyage | local | openrouter
VOYAGE_API_KEY=...
# Reranker provider (从 API keys 自动检测)
CODEGRAPH_RERANK_PROVIDER=jina # jina | voyage
JINA_API_KEY=...
# LLM (用于 knowledge extraction + chain-of-thought search)
LLM_PROVIDER=cerebras
CEREBRAS_API_KEY=...
# Graph driver
CODEGRAPH_DRIVER=falkordblite # falkordblite | falkordb
CODEGRAPH_DB_PATH=.codegraph/falkordb # for falkordblite
```
## 包
| 包 | 描述 |
|---------|-------------|
| [`@codegraph/core`](packages/core/) | Indexer、搜索管道、服务层、git 同步 |
| [`@codegraph/graph`](packages/graph/) | Graph DB driver 抽象、知识操作、Cypher 模板 |
| [`@codegraph/plugin-nlp`](packages/plugin-nlp/) | Embeddings、reranker、实体解析、会话/文档摄取 |
| [`@codegraph/mcp-server`](packages/mcp-server/) | 包含 4 个 persona 工具的 MCP 服务器 |
| [`@codegraph/api`](packages/api/) | 用于仪表盘的 Express REST API |
| [`@codegraph/cli`](packages/cli/) | 围绕核心服务的 CLI 包装器 |
| [`@codegraph/plugin-typescript`](packages/plugin-typescript/) | TS/JS/JSX tree-sitter 插件 |
| [`@codegraph/plugin-python`](packages/plugin-python/) | Python tree-sitter 插件 |
| [`@codegraph/plugin-go`](packages/plugin-go/) | Go tree-sitter 插件 |
| [`@codegraph/plugin-rust`](packages/plugin-rust/) | Rust tree-sitter 插件 |
| [`@codegraph/plugin-markdown`](packages/plugin-markdown/) | Markdown 解析器 |
| [`@codegraph/plugin-generic`](packages/plugin-generic/) | 用于其他语言的 Tree-sitter 备用方案 |
| [`@codegraph/plugin-common`](packages/plugin-common/) | 共享的提取工具(复杂度、AST 辅助函数) |
| [`@codegraph/plugin-languages`](packages/plugin-languages/) | 插件注册中心协调 |
| [`@codegraph/logger`](packages/logger/) | 结构化日志 + tracing 装饰器 |
| [`@codegraph/types`](packages/types/) | 共享的 TypeScript 类型定义 |
此外还包含 `apps/web`(Next.js 仪表盘,在 `localhost:3000` 提供 Graph Explorer 和 Operations 标签页)。
## 开发
```
pnpm install # Install dependencies
pnpm build # Build all packages
pnpm dev # Start dev mode
pnpm test # Run all tests
pnpm docker:db # Start FalkorDB via Docker
```
## 状态
正在积极开发中。于 2026-04-25 公开发布。目前尚未发布正式版本——请从源码安装。
## 许可证
MIT — 详见 [LICENSE](./LICENSE)。
标签:Claude Desktop, Cursor, FalkorDB, GNU通用公共许可证, Graph Database, LLM辅助编程, MCP服务器, Model Context Protocol, Node.js, pnpm, Reranker, Tree-sitter, TypeScript, 二进制发布, 代码分析, 代码库管理, 代码检索, 代码理解, 代码知识图谱, 代码索引, 代码解析, 凭证管理, 双时态知识图谱, 向量检索, 大模型工具, 威胁情报, 安全插件, 开发者工具, 开源工具, 搜索引擎, 搜索引擎查询, 源码分析, 自动化攻击, 语义化检索, 语义搜索, 请求拦截, 跨编码器, 重排序