CodeGraph 将您的代码库构建成一个强大的知识图谱,旨在通过 AI 赋能提升代码理解和开发效率。它能索引您的源代码,生成语义嵌入,并集成图数据库来存储代码的结构和关系。通过 Model Context Protocol (MCP) 服务器,CodeGraph 能向各种 AI 工具(如 Claude Desktop, LM Studio 等)提供与项目相关的上下文信息和执行代码智能分析功能。
主要功能点
- 智能代码图谱: 将代码库转化为语义可搜索的知识图谱,包含代码文件、函数、变量、依赖关系等实体。
- 语义代码搜索: 支持通过自然语言查询进行代码搜索,快速定位相关的代码片段和逻辑。
- LLM 驱动的代码智能: 提供由大型语言模型驱动的代码理解和分析能力,支持复杂代码问答、依赖分析、架构分析等高级功能。
- 自动依赖分析: 自动构建代码的依赖关系图,揭示模块间的耦合和调用关系。
- 多传输协议支持: MCP 服务器支持标准输入/输出 (Stdio) 和 HTTP/SSE 流式传输协议,方便集成到各种 AI 应用中。
- 灵活的模型集成: 支持集成 Ollama, LM Studio 等本地运行的 LLM 和嵌入模型,以及 Anthropic Claude, OpenAI GPT, Jina AI 等云端服务。
- 增量索引: 能够检测文件变更并仅重新索引修改过的文件,显著提高索引效率。
- Node.js NAPI 绑定: 提供 Node.js NAPI 绑定,方便 TypeScript/JavaScript 项目无缝集成 CodeGraph 的原生性能功能。
- 代理式代码代理工具 (Agentic Tools): 提供多种多步骤推理的智能工具,包括代码搜索、依赖分析、调用链分析、架构分析、API 表面分析、上下文构建和语义问答等。
安装步骤
- 安装 Rust: 访问 rustup.rs 遵循指引安装 Rust 开发环境。
- 安装 FAISS (可选,用于本地向量搜索):
- macOS: 在终端运行 'brew install faiss'
- Ubuntu/Debian: 在终端运行 'sudo apt-get install libfaiss-dev'
- Arch Linux: 在终端运行 'sudo pacman -S faiss'
- 构建 CodeGraph 可执行文件:
在终端中进入 'codegraph-rust' 仓库目录,然后根据您的需求选择构建命令。例如,若要构建支持本地 Ollama LLM 和嵌入以及 Agentic Tools 的版本:
cargo build --release --features "ollama,faiss,ai-enhanced,autoagents-experimental"- '--release' 用于构建优化后的版本。
- '--features' 后面的参数用于启用特定功能,例如 'ollama' 支持 Ollama 模型,'faiss' 提供本地向量搜索,'ai-enhanced' 和 'autoagents-experimental' 启用代理式工具。更多特性请参考仓库 README.md。
- 配置 CodeGraph:
在您的用户主目录下创建一个 '.codegraph' 文件夹,并在其中创建 'config.toml' 文件 ('~/.codegraph/config.toml')。根据您的 LLM 和嵌入提供商配置该文件。例如,使用 Ollama:
[embedding] provider = "ollama" # 嵌入模型提供商,可选 "onnx", "lmstudio", "openai", "jina" model = "qwen3-embedding:0.6b" # 嵌入模型名称 dimension = 1024 # 嵌入维度 [llm] enabled = true # 是否启用 LLM provider = "ollama" # LLM 提供商,可选 "anthropic", "openai", "lmstudio", "xai" model = "qwen2.5-coder:14b" # LLM 模型名称 ollama_url = "http://localhost:11434" # Ollama 服务器地址- 如果您计划使用 Agentic Tools,需要配置 SurrealDB 作为后端。请在 '.env' 文件或 'config.toml' 中设置 'SURREALDB_URL', 'SURREALDB_NAMESPACE', 'SURREALDB_DATABASE' 等环境变量。具体配置请参考仓库的 README.md 文档。
服务器配置 (用于 MCP 客户端集成)
CodeGraph MCP 服务器可以通过两种主要方式启动:Stdio (标准输入/输出) 或 HTTP (通过 WebSocket)。您的 MCP 客户端需要根据您启动服务器的方式进行配置。
1. Stdio (标准输入/输出) 模式 (推荐用于桌面应用,如 Claude Desktop)
此模式下,CodeGraph 服务器作为子进程启动,并通过标准输入/输出与 MCP 客户端通信。
- MCP 客户端配置示例 (JSON 格式):
您需要在客户端的配置中添加类似以下 JSON 格式的服务器信息。请根据您 CodeGraph 可执行文件的实际路径进行调整:
{ "mcpServers": { "codegraph": { "command": "/path/to/your/codegraph-rust/target/release/codegraph", "args": ["start", "stdio"], "env": { "RUST_LOG": "warn" }, "description": "CodeGraph MCP 服务器,通过标准输入输出提供代码智能分析和上下文服务。", "protocol": "stdio" } } }- '"command"': CodeGraph 可执行文件的绝对路径。例如,'/Users/youruser/codegraph-rust/target/release/codegraph'。
- '"args"': 启动 MCP 服务器的参数。'["start", "stdio"]' 表示以 Stdio 模式启动。
- '"env"': 可选,用于设置服务器运行时的环境变量,例如 'RUST_LOG' 可用于控制日志级别('warn', 'info', 'debug', 'trace')。
- '"description"': 服务器的简短描述,MCP 客户端通常会显示此信息。
- '"protocol"': 通信协议类型,这里是 '"stdio"'。
2. HTTP/WebSocket 模式 (实验性,用于 Web 或多客户端场景)
此模式下,CodeGraph 服务器将作为一个独立的 HTTP 服务运行,MCP 客户端通过 WebSocket 连接到它。
- 启动服务器:
首先,您需要以 HTTP 模式启动 CodeGraph 服务器。假设您的二进制路径已配置正确且已构建时包含了 'server-http' 特性:
服务器将在 'http://127.0.0.1:3000/mcp' 监听 MCP 请求。/path/to/your/codegraph-rust/target/release/codegraph start http --port 3000 - MCP 客户端配置 (WebSocket URL):
您的 MCP 客户端需要直接连接到此 WebSocket URL。例如,如果客户端使用 'mcp-sdk',配置可能是这样的(具体取决于客户端实现,通常仅需提供 URL):
客户端通常会处理 WebSocket 连接的细节,您只需提供正确的 URL 即可。WebSocket URL: ws://127.0.0.1:3000/mcp
基本使用方法
- 索引您的代码项目:
在启动 MCP 服务器之前,您需要先使用 CodeGraph 索引您的代码库,以便服务器能够提供项目上下文。在终端中运行(替换为您的 CodeGraph 二进制路径和项目路径):
例如: '~/codegraph-rust/target/release/codegraph index ~/my-awesome-repo'/path/to/your/codegraph-rust/target/release/codegraph index /path/to/your/project - 启动 MCP 服务器:
- Stdio 模式: 如果您的 MCP 客户端是桌面应用(如 Claude Desktop),并且您已在客户端配置中指定了 CodeGraph 的 'command' 和 'args',那么客户端在启动时会自动拉起 CodeGraph MCP 服务器,您无需手动启动。
- HTTP 模式: 如果您使用的是基于 HTTP/WebSocket 的客户端,您需要手动启动 CodeGraph 服务器(如上所述)。
- 在 AI 客户端中使用: 启动您已配置 CodeGraph MCP 服务器的 Claude Desktop 或 LM Studio 等 MCP 兼容的 AI 客户端。如果一切配置正确,CodeGraph 提供的工具(如 'agentic_code_search', 'agentic_dependency_analysis' 等)将出现在客户端的工具列表中。您可以通过自然语言与 AI 交互,让 AI 调用这些工具来分析和理解您的代码。
信息
分类
开发者工具