使用说明
DevInsight-基于AI的代码分析MCP服务器
DevInsight是一个全面的AI驱动的开发人员助手,可以使用以下工具在本地分析、解释和重构代码 模型上下文协议(MCP) 和 RAG(检索增强生成).
🎯 特性
- 代码分析:分析代码复杂性、易出错问题和代码异味
- 代码说明:获取代码行为的自然语言解释
- Bug检测:将错误追踪映射到可能的根本原因
- 代码重构:建议按照样式指南进行重构
- 测试执行:运行测试并总结故障
- RAG驱动搜索:使用向量相似度检索相关代码片段
- Git历史分析:总结Git提交和更改
- 交互式聊天界面:漂亮的基于React的聊天界面
🏗️ 技术栈
后端
- Node.js 随着 快车 框架
- 模型上下文协议(MCP) 软件开发工具包
- ESLint & escomplex 用于代码分析
- 更漂亮 用于代码格式化
- 玩笑 用于测试执行
- 节点号 用于Git操作
- SQLite (better squelite3)用于矢量存储
- 拥抱脸 或 开放人工智能 用于嵌入和AI
前端
- React.js 随着 维特
- TailwindCSS 用于造型
- React Markdown 用于呈现AI响应
- 阿西奥斯 用于API调用
📦 安装
-
克隆或导航到项目目录
-
安装后端依赖项:
cd backend npm install -
安装前端依赖项:
cd ../frontend npm install -
设置环境变量:
cp .env.example .env编辑
.env并添加您的API密钥:OPENAI_API_KEY(适用于OpenAI)或- 如果使用本地LLM,请配置Ollama
🚀 运行应用程序
后端服务器
cd backend
npm run dev
后端将于启动 http://localhost:8000
前端开发服务器
cd frontend
npm run dev
前端将从开始 http://localhost:3000
📖 用法
1.为您的存储库建立索引
在使用RAG功能之前,请对代码库进行索引:
# Via API (after starting backend)
curl -X POST http://localhost:8000/api/rag/index \
-H "Content-Type: application/json" \
-d '{"repoPath": "./data/sample_repo"}'
2.使用聊天界面
打开 http://localhost:3000 并与DevInsight进行交互:
- 分析代码:“分析backend/index.js中的代码”
- 解释代码:“解释身份验证的工作原理”
- 查找bug:粘贴错误回溯
- 重构代码:“重构后端/mcp/tools/analyzeCode.js”
- 运行测试:“运行测试”
- Git历史记录:“显示git历史记录”或“git关于身份验证的提交”
3.API终点
所有MCP工具都可以通过REST API获得:
| 方法 | 路线 | 描述 |
|---|---|---|
POST |
/api/mcp/analyze |
分析文件 |
POST |
/api/mcp/explain |
解释文件 |
POST |
/api/mcp/find-bug |
调试错误 |
POST |
/api/mcp/refactor |
重构代码 |
GET |
/api/mcp/git-history |
获取Git摘要 |
POST |
/api/mcp/run-tests |
运行Jest并总结 |
POST |
/api/rag/index |
索引存储库 |
GET |
/api/rag/stats |
获取索引统计信息 |
🧩 项目结构
devinsight/
├── backend/
│ ├── index.js # Fastify server entry point
│ ├── mcp/
│ │ ├── mcpServer.js # MCP server implementation
│ │ ├── config.js # Configuration
│ │ ├── tools/ # MCP tools
│ │ │ ├── analyzeCode.js
│ │ │ ├── explainCode.js
│ │ │ ├── findBug.js
│ │ │ ├── refactor.js
│ │ │ ├── runTests.js
│ │ │ └── gitHistory.js
│ │ ├── rag/ # RAG engine
│ │ │ ├── indexer.js
│ │ │ ├── retriever.js
│ │ │ └── embedder.js
│ │ └── utils/ # Utilities
│ │ ├── parseTrace.js
│ │ ├── diffFormatter.js
│ │ ├── logger.js
│ │ └── ai.js
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── ChatWindow.jsx
│ │ │ ├── MessageBubble.jsx
│ │ │ ├── CodeDiffViewer.jsx
│ │ │ ├── Loader.jsx
│ │ │ └── Header.jsx
│ │ ├── services/
│ │ │ └── api.js # API client
│ │ ├── App.jsx
│ │ └── main.jsx
│ └── package.json
├── data/
│ ├── docs/ # Documentation files
│ ├── logs/ # Application logs
│ └── sample_repo/ # Sample code for testing
├── .env.example
├── .gitignore
└── README.md
🔧 配置
编辑 backend/mcp/config.js 或设置环境变量:
PORT:后端服务器端口(默认值:8000)AI_PROVIDER:openai或ollamaOPENAI_API_KEY:您的OpenAI API密钥REPO_PATH:要分析的存储库路径VECTOR_DB_PATH:矢量数据库的路径
🧪 工作流示例
-
启动两台服务器 (后端和前端)
-
为您的存储库建立索引:
POST /api/rag/index { "repoPath": "./data/sample_repo" } -
在聊天中提问:
- “分析data/sample_repo/example.js中的代码”
- “解释calculateTotal的工作原理”
- “查找错误:TypeError:无法读取未定义的属性'price'”
-
查看结果 在带有格式化响应的聊天界面中
🛠️ 发展
添加新的MCP工具
- 在中创建新的工具文件
backend/mcp/tools/ - 导出实现工具逻辑的异步函数
- 将工具添加到
backend/mcp/mcpServer.js - 在中添加API路由
backend/index.js - 更新前端以处理新工具
测试
cd backend
npm test
📝 备注
- AI 提供商:配置OpenAI或Ollama。如果没有API键,某些功能将显示占位符响应。
- RAG索引:在使用代码解释功能之前,请对存储库进行索引,以获得最佳结果。
- Git操作:Git功能需要指定路径中的有效Git存储库。
- 测试执行:Jest必须安装在您正在测试的项目中。
🤝 贡献
这是一个本地开发工具。您可以随时使用其他功能对其进行扩展:
- 支持更多语言
- 其他代码分析指标
- 与更多AI提供商集成
- 增强的UI组件
📄 许可证
麻省理工学院
🙏 致谢
- Anthropic的模型上下文协议(MCP)
- Fastify快速web框架
- 前端使用React和Vite
- 所有使这成为可能的开源库
建于❤️ 对于开发者