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个结果) | \1000个文件) |
- 具有复杂依赖关系图的项目
- 需要坚持上下文的多会话工作
- 具有严格代币预算的AI代理工作流程
不适合:
- 小项目(\<100个文件)-设置开销不值得
- 首次探索-初始索引需要时间
- 对不熟悉的代码索引进行只读分析可能没有多大帮助
- 文件结构快速变化的项目-频繁重新索引
______________________________________________________________________
🤝 贡献
欢迎投稿!看 问题 对于当前的优先事项。
已知问题:
- 语义搜索索引在大型代码库上运行缓慢(正在处理)
- 内存系统需要更好的冲突解决方案
- 对于较新的语言特性,一些树型解析器是不完整的
开发设置:
git clone https://github.com/proxikal/cerberus-mcp.git
cd cerberus-mcp
pip install -e ".[dev]"
pytest tests/ -v______________________________________________________________________
📜 许可证
该项目根据 MIT许可证.
______________________________________________________________________
专为AI代理构建。针对效率进行了优化。天生具有实验性。
