使用说明
Cerberus MCP
模型上下文协议服务器,用于基于AST的导航和持久会话内存的智能代码探索。
⚠️ 重要通知
Cerberus正处于早期开发阶段,并处于高度实验阶段。 虽然功能齐全,但边缘粗糙:
- 大型项目绩效: 索引时间随代码库大小呈线性变化(启用语义搜索的6200个文件约为8分钟,未嵌入约为45秒)
- 内存使用情况: 语义搜索模型需要~400MB RAM(捆绑全MiniLM-L6-v2)
- 重大变更: 随着我们完善功能,API和工具签名可能会发生变化
- 有限测试: 并非所有边缘案例都涵盖在内;复杂场景中预期的错误
- 资源密集型: FAISS+嵌入生成可以加热大型代码库上的笔记本电脑
使用风险自负。不建议用于生产工作流程。
⚡ 核心功能
| 特性 | 描述 | 实际性能 |
|---|---|---|
| 🔍 基于AST的搜索 | 通过抽象语法树+语义搜索(默认情况下与捆绑模型一起启用)导航代码。语义:相似性得分为0.3-0.5。如果嵌入不可用,则关键字回退。 | |
| 🧠 持久内存 | 双层系统:全局偏好(无处不在)和项目决策(特定于上下文)。 | SQLite支持的FTS5搜索,每次内存上下文加载约50-200个令牌。 |
| 📉 代币效率 | 骨架化剥离了实现,上下文汇编只获取所需的代码。 | 衡量:节省60-75% 与读取完整文件相比(不是90%,这被夸大了)。 |
📊 真实世界基准
在Cerberus上进行了测试 (6206个文件,93643个符号):
| 操作 | 时间 | 令牌 | 注释 |
|---|---|---|---|
| 索引构建(带嵌入) | 约8.3分钟 | 不适用 | 失败+全MiniLM-L6-v2代 |
| 索引构建(无嵌入) | 约45秒 | 不适用 | 仅限SQLite,关键字搜索回退 |
| 语义搜索(5个结果) | <1s | ~450个标记 | 包括相似性得分 |
| 获取符号(仅限代码) | <0.5秒 | 约1300个令牌 | 与完整文件读取相比为75%(约5355个令牌) |
| 上下文(含deps) | <1s | ~2000-4000个令牌 | 取决于符号复杂度 |
令牌效率现实检查:
- 索赔: “节省90%”
- 现实: 节省60-75% 在典型的工作流程中(仍然很重要!)
- 为什么少? 很少需要读取完整文件;比较不是苹果对苹果
🛠️ 技术栈
🚀 快速开始
先决条件: Python 3.10+,~1GB磁盘空间用于索引,500MB RAM用于语义搜索
1.安装MCP服务器
pip install git+https://github.com/proxikal/cerberus-mcp.git
2.配置您的AI代理
添加到您的MCP配置中(例如。, claude_desktop_config.json):
{
"mcpServers": {
"cerberus": {
"command": "cerberus-mcp"
}
}
}
3.安装代理技能(推荐)
# Deploys specialized prompts that help agents use Cerberus effectively
mkdir -p ~/.claude/skills/Cerberus
cp -r skill/Cerberus/* ~/.claude/skills/Cerberus/
4.首轮
# In your AI agent (e.g., Claude Code):
# The agent will automatically call index_build on first use
# Expect 1-10 minutes depending on codebase size
🤖 可选:本地LLM摘要
Cerberus支持 零令牌文件摘要 通过以下方式使用本地LLM llm工具链.
安装
# Install llm-toolchain (optional)
pip install llm-toolchain
# Requires Ollama running locally
# Download from: https://ollama.ai
配置
添加到您的 cerberus.toml:
[summarization]
enabled = true
model = "qwen3:8b" # Best for tool calling (or any Ollama model)
ollama_url = "http://localhost:11434"
它是如何工作的:
- 如果
llm-toolchain安装→ 使用零令牌文件操作 - 如果未安装→ 回退到直接文件读取(标准行为)
- 如果Ollama不在→ 已优雅地禁用摘要
📚 文档门户
我们在我们的 维基.
| 第节 | 内容 |
|---|---|
| 🚀 入门指南 | 安装、配置和第一步。 |
| 🛠️ MCP工具 | 所有56个工具(搜索、分析、内存)的参考。 |
| 🧠 存储器系统 | 双层偏好和决策引擎是如何工作的。 |
| ⚡ 效率 | 真实世界代币储蓄明细。 |
🌐 语言支持
Cerberus支持多种编程语言 具有不同的功能覆盖范围:
✅ 通用功能 (所有语言)
这些工具适用于Python、TypeScript、JavaScript、Go和其他语言:
- 核心导航:
search,get_symbol,context,blueprint,read_range,file_info,skeletonize - 依赖性分析:
deps,call_graph,analyze_impact,test_coverage - 项目工具:
project_summary,smart_update,index_build - 存储系统: 所有记忆工具(
memory_learn,memory_search,memory_context等等)
🔄 多语言支持
find_circular_deps:Python、TypeScript、JavaScript(检测导入周期)
🔄 增强的多语言功能
check_pattern:Python+TypeScript/JavaScript模式(Python更成熟)style_check:Python优化(基本TS/JS支持)related_changes:完全支持TypeScript/JavaScript类型
📝 备注
- 分析器: 使用树形图进行多语言AST解析
- 语义搜索: 语言无关(适用于所有索引代码)
- 导入分辨率: 支持Python导入、ES6模块、CommonJS
🎯 何时使用Cerberus
合身:
- 手动导航速度较慢的大型代码库(>1000个文件)
- 具有复杂依赖关系图的项目
- 需要坚持上下文的多会话工作
- 具有严格代币预算的AI代理工作流程
不适合:
- 小项目(<100个文件)-设置开销不值得
- 首次探索-初始索引需要时间
- 对不熟悉的代码索引进行只读分析可能没有多大帮助
- 文件结构快速变化的项目-频繁重新索引
🤝 贡献
欢迎投稿!看 问题 对于当前的优先事项。
已知问题:
- 语义搜索索引在大型代码库上运行缓慢(正在处理)
- 内存系统需要更好的冲突解决方案
- 对于较新的语言特性,一些树型解析器是不完整的
开发设置:
git clone https://github.com/proxikal/cerberus-mcp.git
cd cerberus-mcp
pip install -e ".[dev]"
pytest tests/ -v
📜 许可证
该项目根据 MIT许可证.
专为AI代理构建。针对效率进行了优化。天生具有实验性。
