tharunprinz/GITPEN-AI
GitHub: tharunprinz/GITPEN-AI
一款集成多种 AI 模型的全栈 GitHub 仓库分析器,提供架构洞察、代码健康度评分、安全漏洞检测及上下文聊天问答。
Stars: 3 | Forks: 0
# GITPEN AI

**一款由 AI 驱动的代码仓库分析器和架构助手。**
[](https://reactjs.org/)
[](https://vitejs.dev/)
[](https://nodejs.org/)
[](https://www.mongodb.com/)
[](https://ai.google.dev/)
[](https://openrouter.ai/)
## 概述
GITPEN AI 是一个全栈应用程序,用于分析 GitHub 代码仓库,提供架构洞察、代码健康度评分以及可行的改进建议。它利用 **Google Gemini** 进行结构分析,并利用 **OpenRouter** 实现基于代码仓库上下文的自然语言聊天。
该应用程序会获取代码仓库的元数据、文件结构和提交历史,然后通过 AI 模型处理这些数据,以生成摘要、风险评估和贡献者统计信息。结果会被缓存到 MongoDB 中,以优化性能并降低 API 成本。
## 功能
- **代码仓库分析**:自动提取技术栈、文件结构和提交历史
- **🤖 深度代码分析(全新)**:Groq AI 会分析实际的源代码文件,以评估其质量、安全性和性能
- **代码健康度评分**:基于可维护性、结构和代码质量的算法评分(0-100)
- **AI 聊天机器人**:由 OpenRouter(Claude、GPT-4、Llama 3、Nemotron)驱动的上下文感知聊天界面
- **贡献者洞察**:可视化展示顶级贡献者和近期活动
- **可行的改进建议**:AI 生成的建议,会引用具体的文件路径
- **🛡️ 安全分析**:识别安全漏洞,并提供严重程度级别和建议
- **⚡ 性能洞察**:检测性能瓶颈和优化机会
- **🎯 智能文件选择**:Groq AI 会智能识别出 10-15 个最关键的文件进行分析
- **智能缓存**:基于 MongoDB 的缓存策略(24小时),以降低 API 成本
- **动态模型选择**:通过环境变量切换 AI 提供商,无需更改代码
- **响应式 UI**:采用毛玻璃效果设计和紫色主题,针对桌面和移动端进行了优化
- **安全**:API 密钥仅存储在服务端,绝不会暴露给前端
## 前置条件
在开始之前,请确保您具备以下条件:
- **Node.js**(v16 或更高版本)
- **npm** 或 **yarn**
- **MongoDB Atlas 账户**(免费版即可) - [在此注册](https://www.mongodb.com/cloud/atlas)
- **GitHub Personal Access Token** - [在此生成](https://github.com/settings/tokens)(需要 `repo` 权限)
- **Google Gemini API Key** - [在此获取密钥](https://makersuite.google.com/app/apikey)
- **OpenRouter API Key** - [在此获取密钥](https://openrouter.ai/keys)
## 安装说明
### 1. 克隆代码仓库
```
git clone https://github.com/tharunprinz/GITPEN-AI.git
cd GITPEN-AI
```
### 2. 安装依赖项
```
# 安装 backend 依赖
cd backend
npm install
# 安装 frontend 依赖
cd ../frontend
npm install
```
### 3. 配置
#### 后端环境变量
创建一个名为 `backend/.env` 的文件并添加以下内容:
```
# Server 配置
PORT=5001
# MongoDB Atlas 连接
MONGODB_URI=mongodb_url
# GitHub API Token(必需)
GITHUB_TOKEN=ghp_your_github_personal_access_token
# Google Gemini API(用于分析的主要 AI)
GEMINI_API_KEY=your_gemini_api_key_here
# Groq API(新增 - 用于深度代码分析)
GROQ_API_KEY=your_groq_api_key_here
# OpenRouter API(用于 Chat 功能)
OPENROUTER_API_KEY=your_openrouter_api_key_here
# Fallback/custom models(可选)
CHAT_MODEL=meta-llama/llama-3.1-70b-instruct
```
**重要说明:**
- `GITHUB_TOKEN`:在 https://github.com/settings/tokens 生成,需具有 `repo` 权限
- `MONGODB_URI`:从 MongoDB Atlas → Connect → Drivers 获取
- `GEMINI_API_KEY`:可在 Google AI Studio 获取免费版
- `GROQ_API_KEY`:**全新** - 在 https://console.groq.com/keys 获取免费密钥(用于代码分析)
- `OPENROUTER_API_KEY`:聊天功能所必需
#### 前端环境变量
创建一个名为 `frontend/.env` 的文件并添加以下内容:
```
VITE_API_URL=http://localhost:5001
```
## 使用说明
### 1. 启动后端服务器
```
cd backend
npm run dev
```
后端将运行在 **http://localhost:5001**
### 2. 启动前端开发服务器
打开一个新的终端:
```
cd frontend
npm run dev
```
前端将运行在 **http://localhost:5173**
### 3. 分析代码仓库
1. 打开浏览器并导航至 **http://localhost:5173**(或 3000)
2. 输入公开的 GitHub 代码仓库 URL(例如:`https://github.com/expressjs/express`)
3. 点击 **Analyze** 并等待 AI 处理该代码仓库
4. 查看包含洞察、健康度评分和改进建议的仪表板
5. 使用 **AI Chat** 提出有关该代码仓库的问题
## 项目结构
```
GITPEN-AI/
│
├── backend/
│ ├── config/
│ │ └── db.js # MongoDB connection
│ ├── controllers/
│ │ ├── scanController.js # Analysis logic
│ │ └── chatController.js # Chat logic
│ ├── models/
│ │ ├── Scan.js # MongoDB schema for scans
│ │ └── ChatSession.js # MongoDB schema for chat
│ ├── routes/
│ │ ├── scanRoutes.js # Scan API routes
│ │ └── chatRoutes.js # Chat API routes
│ ├── services/
│ │ ├── geminiService.js # Gemini AI service
│ │ ├── githubService.js # GitHub API client
│ │ ├── groqService.js # Groq AI service
│ │ └── openRouterService.js # OpenRouter chat service
│ ├── scratch/ # Scratch test files
│ ├── .env # Environment variables
│ ├── server.js # Express server
│ └── package.json
│
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ │ ├── Home.jsx # Landing page
│ │ │ ├── Dashboard.jsx # Analysis dashboard
│ │ │ └── ScanDetails.jsx # Scan details and chat
│ │ ├── services/
│ │ │ └── api.js # Axios API client
│ │ ├── App.jsx # Main app component
│ │ ├── main.jsx # Entry point
│ │ └── index.css # Main styles
│ ├── .env # Frontend environment
│ ├── tailwind.config.js # Tailwind configuration
│ ├── vite.config.js # Vite configuration
│ └── package.json
│
├── .gitignore
├── package.json # Root dependencies
└── README.md # This file
```
## API Endpoints
### 分析代码仓库
```
POST /api/scan
Content-Type: application/json
{
"repoUrl": "https://github.com/owner/repo"
}
```
### 与代码仓库聊天
```
POST /api/chat/:scanId
Content-Type: application/json
{
"message": "What does this project do?"
}
```
### 获取扫描历史
```
GET /api/scan/history
```
### 获取扫描详情
```
GET /api/scan/:id
```
### 获取文件内容
```
GET /api/scan/:id/file?path=path/to/file.js
```
## 技术栈
### 前端
- React - UI 库
- Vite - 构建工具
- React Router - 路由
- Tailwind CSS - 样式
- Lucide React - 图标
- React Hot Toast - 通知
- Axios - HTTP 客户端
### 后端
- Node.js - 运行时
- Express - Web 框架
- MongoDB + Mongoose - 数据库
- Google Generative AI - Gemini 集成
- OpenRouter SDK - 多模型 AI
- Groq SDK - 快速推理
- Axios - GitHub API 客户端
- CORS - 跨域支持
- dotenv - 环境配置
## 许可证
本项目基于 **MIT License** 授权。
**作者:[tharunprinz](https://github.com/tharunprinz)**
*通过智能代码分析实现安全*
标签:AI代码分析, GNU通用公共许可证, MITM代理, Node.js, React, Syscalls, 架构分析, 自定义脚本