返回市场
代码图谱-锈钢

代码图谱-锈钢

作者:Jakedismo10 星标更新:2025-11-20

项目介绍

CodeGraph

将您的代码库转换为由嵌入式模型和大语言模型(LLMs)驱动的可搜索知识图谱。

CodeGraph 将您的源代码索引到图数据库中,创建语义嵌入,并公开一个**模型上下文协议(MCP)**服务器,该服务器可以被AI工具(如Claude Desktop、LM Studio等)查询以获取项目感知的上下文。

✨ 您将获得:

  • 🧩 新功能: SurrealDB 索引现在支持本地嵌入(Ollama + LM Studio)和本地重排序——只需设置环境变量,我们将自动写入正确的HNSW列。
  • 🔍 跨整个代码库的语义代码搜索。
  • 🧠 基于LLM的代码智能和分析。
  • 📊 自动依赖关系图和代码关系。
  • ⚡ 由SurrealDB HNSW支持的快速向量搜索(查询延迟2-5毫秒)。
  • 🔌 MCP服务器用于AI工具集成(标准I/O和流式HTTP)。
  • ⚙️ 易用的命令行界面。
  • ☁️ 新功能: Jina AI云嵌入,具有可修改的模型和维度以及重排序。
  • 🗄️ 新功能: SurrealDB HNSW后端,适用于云原生和本地向量搜索。
  • 📦 新功能: Node.js NAPI绑定,实现零开销TypeScript集成。
  • 🤖 新功能: 具有层级感知多步推理的代理代码工具。
  • 🔄 新功能: 带SHA-256文件变化检测的增量索引——仅重新索引修改过的文件。
  • 🔬 实验性: 自动代理框架集成,以改进代理编排。

本地嵌入与重排序(SurrealDB)

CodeGraph现在将Ollama/LM Studio嵌入直接写入SurrealDB的专用HNSW列。选择您想要的模型并设置匹配的环境变量,然后运行codegraph index

export CODEGRAPH_EMBEDDING_PROVIDER=ollama
export CODEGRAPH_EMBEDDING_MODEL=qwen3-embedding:0.6b   # 或 all-mini-llm, qwen3-embedding:4b, embeddinggemma等
export CODEGRAPH_EMBEDDING_DIMENSION=1024               # 支持384, 768, 1024, 1536, 2048, 2560, 3072或4096维数

# 可选本地重排序(LM Studio暴露了一个兼容OpenAI的重排序器端点)
export CODEGRAPH_RERANKING_PROVIDER=lmstudio

我们自动将嵌入路由到embedding_384embedding_768embedding_1024embedding_2048embedding_2056embedding_4096,除非配置了提供者,否则禁用重排序。


⚠️ 重要:MCP服务器架构变更

MCP服务器中的FAISS+RocksDB支持已弃用,转而采用基于SurrealDB的架构。

变更内容:

  • MCP服务器不再使用FAISS向量搜索或RocksDB图存储。
  • CLI和SDK不再支持FAISS/RocksDB进行本地操作。
  • NAPI绑定仍提供对所有特性的TypeScript访问。
  • 🆕 MCP代理工具现在需要SurrealDB进行图分析。

代理工具所需设置:

新的代理MCP工具(如agentic_code_searchagentic_dependency_analysis等)需要SurrealDB:

选项1:免费云实例(推荐)

  • Surreal Cloud注册。
  • 获取1GB免费实例——非常适合测试和小型项目。
  • 配置连接详情到环境变量。

选项2:本地安装

# 安装SurrealDB
curl -sSf https://install.surrealdb.com | sh

# 本地运行
surreal start --bind 127.0.0.1:3004 --user root --pass root memory

免费云资源:

  • 🆓 SurrealDB Cloud:在surrealdb.com/cloud获取1GB免费实例。
  • 🆓 Jina AI:在jina.ai获取1000万免费API令牌,用于嵌入和重排序。

为什么进行此更改:

  • 内置图能力:SurrealDB提供了内置的图数据库特性。
  • 统一存储:单一数据库用于向量和图关系,并且可以扩展到关系型和文档使用场景!
  • 云原生:更好地支持分布式部署。
  • 减少复杂性:消除了自定义RocksDB集成层。

参见CHANGELOG.md获取详细的迁移指南。


🔬 实验性:AutoAgents框架

CodeGraph现在支持AutoAgents框架作为代理编排的实验性功能。

AutoAgents是什么?

  • 基于现代Rust的代理框架,采用ReAct(推理+行动)模式。
  • 替换约1,200行自定义编排代码。
  • 与现有的7个代理MCP工具保持兼容。
  • 同样的层级感知提示系统(小/中/大/巨大)。

启用AutoAgents

带有实验性功能构建:

# 使用Makefile
make build-mcp-autoagents

# 或直接使用cargo
cargo build --release -p codegraph-mcp --features "ai-enhanced,autoagents-experimental,ollama"

# 带有AutoAgents的HTTP服务器
cargo build --release -p codegraph-mc --features "ai-enhanced,autoagents-experimental,embeddings-ollama,server-http"

不带AutoAgents(默认):

cargo build --release -p codegraph-mcp --features "ai-enhanced,ollama"

状态

  • ✅ 核心实现完成。
  • ⏳ 测试和验证正在进行中。
  • 📝 欢迎通过GitHub问题反馈。
  • 🔄 遗留编排器作为稳定的备用方案。

实验性功能通过构建标志启用,并在禁用时不影响现有功能。


📋 目录


🎯 选择您的设置

选择符合您需求的设置:

选项1:本地设置(免费,私密)🏠

最佳适用: 隐私意识用户,离线工作,无API费用。

提供商:

  • 嵌入式: ONNX或Ollama。
  • LLM: Ollama(Qwen2.5-Coder,CodeLlama等)。

优点: ✅ 免费,✅ 私密,✅ 设置后无需互联网。 缺点: ❌ 较慢,❌ 需要本地GPU/CPU资源。

→ 跳转至本地设置说明


选项2:LM Studio(Mac最佳性能)🚀

最佳适用: Mac用户(Apple Silicon),本地最佳性能。

提供商:

  • 嵌入式: LM Studio(Jina嵌入)。
  • LLM: LM Studio(DeepSeek Coder等)。

优点: ✅ 120嵌入/秒,✅ MLX + Flash Attention 2,✅ 免费。 缺点: ❌ 仅限Mac,❌ 需要LM Studio应用。

→ 跳转至LM Studio设置说明


选项3:云提供商(最佳质量)☁️

最佳适用: 生产用途,最佳质量,不想管理本地模型。

提供商:

  • 嵌入式: Jina(创建账户即可获得1000万免费令牌)。
  • LLM: Anthropic Claude或OpenAI GPT-5.1-*。
  • 后端: SurrealDB图数据库(可获得高达1GB的免费云实例!或完全本地运行)。

优点: ✅ 最佳质量,✅ 快速,✅ 1M上下文(sonnet[1m])。 缺点: ❌ API费用,❌ 需要互联网,❌ 数据发送到云端。

→ 跳转至云设置说明


选项4:混合(混搭)🔀

最佳适用: 平衡成本和质量。

示例组合:

  • 本地嵌入(ONNX)+ 云LLM(OpenAI,Claude,x.ai)。
  • LMStudio嵌入 + 云LLM(OpenAI,Claude,x.ai)。
  • Jina AI嵌入 + 本地LLM(Ollama,LMStudio)。

→ 跳转至混合设置说明


🛠️ 安装

先决条件(所有设置)

# 1. 安装Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

本地设置(ONNX + Ollama)

步骤1:安装Ollama

# macOS/Linux:
curl -fsSL https://ollama.com/install.sh | sh

# 或从:https://ollama.com/download 下载

brew install onnx-runtime

步骤2:拉取模型

# 拉取嵌入模型
hf (cli) download qdrant/all-minillm-onnx

# 拉取代码智能LLM(可选)
ollama pull qwen2.5-coder:14b

步骤3:构建CodeGraph

cd codegraph-rust

# 构建带有ONNX嵌入和Ollama支持
cargo build --release --features "onnx,ollama"

步骤4:配置

创建~/.codegraph/config.toml

[embedding]
provider = "onnx"  # 或 "ollama" 如果您喜欢
model = "qdrant/all-minillm-onnx"
dimension = 384

[llm]
enabled = true
provider = "ollama"
model = "qwen2.5-coder:14b"
ollama_url = "http://localhost:11434"

步骤5:索引和运行

# 索引您的项目
./target/release/codegraph index /path/to/your/project

# 启动MCP服务器
./target/release/codegraph start stdio

完成! 您的本地设置已经准备好。


LM Studio设置

步骤1:安装LM Studio

  • lmstudio.ai下载。
  • 安装并启动应用程序。

步骤2:在LM Studio中下载模型

  • 嵌入模型: jinaai/jina-embeddings-v4
  • LLM模型(可选): lmstudio-community/DeepSeek-Coder-V2-Lite-Instruct-GGUF

步骤3:启动LM Studio服务器

  • 在LM Studio中,进入“本地服务器”标签。
  • 单击“启动服务器”(运行在http://localhost:1234)。

步骤4:构建CodeGraph

cd codegraph-rust

# 构建带有兼容OpenAI的支持(用于LM Studio)
cargo build --release --features "openai-compatible"

步骤5:配置

创建~/.codegraph/config.toml

[embedding]
provider = "lmstudio"
model = "jinaai/jina-embeddings-v4"
lmstudio_url = "http://localhost:1234"
dimension = 2048

[llm]
enabled = true
provider = "lmstudio"
model = "lmstudio-community/DeepSeek-Coder-V2-Lite-Instruct-GGUF"
lmstudio_url = "http://localhost:1234"

步骤6:索引和运行

# 索引您的项目
./target/release/codegraph index /path/to/your/project

# 启动MCP服务器
./target/release/codegraph start stdio

完成! LM Studio设置已完成。


云设置(Anthropic,OpenAI,xAI & Jina AI)

步骤1:获取API密钥

步骤2:构建具有云功能的CodeGraph

cd codegraph-rust

# 构建带有所有云提供商
cargo build --release --features "anthropic,openai-llm,openai"

# 或带有Jina AI云嵌入(Matryoska维度+重排序)
cargo build --release --features "cloud-jina,anthropic"

# 或带有SurrealDB HNSW云/本地向量后端
cargo build --release --features "cloud-surrealdb,openai"

步骤3:运行设置向导(最简单)

./target/release/codegraph-setup

向导将引导您完成配置。

或手动配置 ~/.codegraph/config.toml

对于Anthropic Claude:

[embedding]
provider = "jina" # 或 openai
model = "jina-embeddings-v4"
openai_api_key = "sk-..."  # 或设置OPENAI_API_KEY环境变量
dimension = 2048

[llm]
enabled = true
provider = "anthropic"
model = "claude-haiku"
anthropic_api_key = "sk-ant-..."  # 或设置ANTHROPIC_API_KEY环境变量
context_window = 200000

对于OpenAI(带有推理模型):

[embedding]
provider = "jina" # 或 openai
model = "jina-embeddings-v4"
openai_api_key = "sk-..."
dimension = 2048

[llm]
enabled = true
provider = "openai"
model = "gpt-5-codex-mini"
context_window=200000
openai_api_key = "sk-..."
max_completion_token = 128000
reasoning_effort = "medium"  # 推理模型:"minimal", "medium", "high"

对于Jina AI(云嵌入和重排序):

[embedding]
provider = "jina"
model = "jina-embeddings-v4"
jina_api_key = "jina_..."  # 或设置JINA_API_KEY环境变量
dimension = 2048 # 或matryoshka 1024,512,256 调整schemas/*.surql文件HNSW向量索引以匹配您的嵌入模型维度
jina_enable_reranking = true  # 可选两阶段检索
jina_reranking_model = "jina-reranker-v3"

[llm]
enabled = true
provider = "anthropic"
model = "claude-haiku"
context_window = 200000
max_completion_tokens= 25000
anthropic_api_key = "sk-ant-..."

对于xAI Grok(2M上下文窗口,$0.50-$1.50/M令牌):

[embedding]
provider = "openai"  # 或 "jina"
model = "text-embedding-3-small"
openai_api_key = "sk-..."
dimension = 1536

[llm]
enabled = true
provider = "xai"
model = "grok-4-fast"  # 或 "grok-4-turbo"
xai_api_key = "xai-..."  # 或设置XAI_API_KEY环境变量
xai_base_url = "https://api.x.ai/v1"  # 默认,可以省略
reasoning_effort = "medium"  # 选项:"minimal", "medium", "high"
context_window = 2000000  # 2M令牌!

对于SurrealDB HNSW(具有高级功能的图数据库后端):

[embedding]
provider = "jina"  # 或 "openai"
model = "jina-embeddings-v4"
openai_api_key = "sk-..."
dimension = 2048

[vector_store]
backend = "surrealdb"
surrealdb_url = "ws://localhost:8000"  # 或云实例
surrealdb_namespace = "codegraph"
surrealdb_database = "production"

[llm]
enabled = true
provider = "anthropic"
model = "claude-haiku"

步骤4:索引和运行

#