# wbr-ai-coding-project
**Repository Path**: work_project_item/wbr-ai-coding-project
## Basic Information
- **Project Name**: wbr-ai-coding-project
- **Description**: ai codeBox 编码
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-16
- **Last Updated**: 2026-02-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PyCode Pro - AI驱动的Python IDE
一个功能强大的AI驱动Python代码编辑和执行平台,支持Docker沙箱环境、代码版本管理和AI代码助手。
## 📋 项目简介
PyCode Pro是一个现代化的Python开发环境,集成了以下核心功能:
- 🐍 **Python代码编辑**: 基于Monaco Editor的强大代码编辑器
- 🐳 **Docker沙箱执行**: 在隔离的Docker容器中安全执行Python代码
- 🤖 **AI代码助手**: 集成阿里千问和Google Gemini,提供智能代码建议和优化
- 📦 **包管理**: 可视化Python包安装和管理
- 📝 **版本控制**: 代码版本历史和差异对比
- 🚀 **HTTP服务**: 支持将脚本部署为HTTP服务
- 📊 **执行日志**: 详细的代码执行日志和统计
## 🏗️ 项目架构
```
aiCoding/
├── backend/ # FastAPI后端服务
│ ├── app/
│ │ ├── config.py # 配置管理
│ │ ├── database.py # 数据库连接
│ │ ├── models.py # 数据模型
│ │ ├── routers/ # API路由
│ │ └── services/ # 业务服务
│ ├── database/
│ │ └── init.sql # 数据库初始化脚本
│ ├── main.py # 应用入口
│ └── requirements.txt # Python依赖
│
└── fronted/ # React前端应用
├── components/ # React组件
├── services/ # 前端服务
├── index.tsx # 应用入口
└── package.json # Node.js依赖
```
## 🚀 快速开始
### 前置要求
- **Python 3.11+**
- **Node.js 18+**
- **MySQL 8.0+**
- **Docker** (用于代码沙箱执行)
### 1. 数据库配置
首先创建MySQL数据库:
```sql
CREATE DATABASE pycode_sandbox CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
或者直接执行初始化脚本:
```bash
mysql -u root -p < backend/database/init.sql
```
### 2. 后端配置
进入后端目录并创建环境配置文件:
```bash
cd backend
```
创建 `.env` 文件:
```env
# 数据库配置
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_USER=root
DATABASE_PASSWORD=your_password
DATABASE_NAME=pycode_sandbox
# Docker配置(默认)
DOCKER_HOST=unix:///var/run/docker.sock
DOCKER_PYTHON_IMAGE=python:3.11-slim
# 后端存储根目录(服务自动创建其需要的项目子目录)
SCRIPTS_PATH=./data/scripts
# 阿里千问配置(可选)
QWEN_API_KEY=your_qwen_api_key
# 服务配置
SERVER_HOST=0.0.0.0
SERVER_PORT=8000
```
安装Python依赖:
```bash
pip install -r requirements.txt
```
启动后端服务:
```bash
python main.py
```
后端服务将在 `http://localhost:8000` 启动。
### 3. 前端配置
进入前端目录:
```bash
cd fronted
```
(可选)创建 `.env.local` 文件配置Gemini API:
```env
GEMINI_API_KEY=your_gemini_api_key
```
安装依赖:
```bash
npm install
```
启动前端开发服务器:
```bash
npm run dev
```
前端应用将在 `http://localhost:3000` 启动。
## 🔐 远程Docker服务器配置
### 在远程服务器上配置Docker Remote API
#### 方式1:TCP连接(不推荐用于生产环境)
1. 编辑 `/etc/docker/daemon.json`:
```json
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
```
2. 重启Docker服务:
```bash
sudo systemctl restart docker
```
#### 方式2:TCP TLS连接(推荐)
1. 生成TLS证书(在Docker服务器上):
```bash
# 创建证书目录
mkdir -p /etc/docker/certs
cd /etc/docker/certs
# 生成CA私钥
openssl genrsa -aes256 -out ca-key.pem 4096
# 生成CA证书
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
# 生成服务器私钥
openssl genrsa -out server-key.pem 4096
# 生成服务器证书请求
openssl req -subj "/CN=服务器IP或域名" -sha256 -new -key server-key.pem -out server.csr
# 生成服务器证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -out server-cert.pem
# 生成客户端证书(用于客户端连接)
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile-client.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -out cert.pem -extfile extfile-client.cnf
```
2. 配置Docker守护进程:
```json
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"],
"tls": true,
"tlscert": "/etc/docker/certs/server-cert.pem",
"tlskey": "/etc/docker/certs/server-key.pem",
"tlsverify": true,
"tlscacert": "/etc/docker/certs/ca.pem"
}
```
3. 重启Docker服务:
```bash
sudo systemctl restart docker
```
4. 将证书文件复制到本地机器:
- `ca.pem` → 配置 `DOCKER_TLS_CA_CERT`
- `cert.pem` → 配置 `DOCKER_TLS_CLIENT_CERT`
- `key.pem` → 配置 `DOCKER_TLS_CLIENT_KEY`
#### 方式3:SSH连接(最简单,推荐)
使用SSH连接不需要在远程服务器上配置Docker Remote API,只需要:
1. 确保SSH密钥已配置(推荐使用密钥认证):
```bash
# 生成SSH密钥对(如果没有)
ssh-keygen -t rsa -b 4096
# 将公钥复制到远程服务器
ssh-copy-id user@remote-server-ip
```
2. 在本地配置文件中设置:
```env
DOCKER_CONNECTION_TYPE=ssh
DOCKER_HOST_ADDRESS=remote-server-ip
DOCKER_SSH_USER=your-username
DOCKER_SSH_KEY_FILE=~/.ssh/id_rsa
```
### 在PyCode Pro中配置远程Docker
1. 启动应用后,进入 **设置页面**
2. 选择 **远程执行环境** 部分
3. 选择连接类型:
- **本地 (Unix Socket)**: 用于本地Docker
- **TCP**: 用于内网未加密连接
- **TCP TLS**: 用于远程加密连接(需要证书)
- **SSH**: 最简单的方式,推荐使用
4. 填写相应的配置信息
5. 点击 **保存所有设置**
## 📚 API文档
后端服务启动后,可以访问以下地址查看API文档:
- **Swagger UI**: http://localhost:8000/docs
- **ReDoc**: http://localhost:8000/redoc
## 🔧 配置说明
### 后端配置 (`backend/app/config.py`)
#### 数据库配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `DATABASE_HOST` | MySQL数据库主机 | - |
| `DATABASE_PORT` | MySQL数据库端口 | 3306 |
| `DATABASE_USER` | 数据库用户名 | - |
| `DATABASE_PASSWORD` | 数据库密码 | - |
| `DATABASE_NAME` | 数据库名称 | pycode_sandbox |
#### Docker配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `DOCKER_CONNECTION_TYPE` | 连接类型:local/tcp/tcp_tls/ssh | local |
| `DOCKER_HOST` | Docker守护进程地址(本地Unix Socket) | unix:///var/run/docker.sock |
| `DOCKER_HOST_ADDRESS` | 远程主机地址(远程连接时使用) | - |
| `DOCKER_HOST_PORT` | 远程端口(2375/2376) | 2376 |
| `DOCKER_TLS_VERIFY` | 是否验证TLS证书 | true |
| `DOCKER_TLS_CA_CERT` | CA证书路径 | - |
| `DOCKER_TLS_CLIENT_CERT` | 客户端证书路径 | - |
| `DOCKER_TLS_CLIENT_KEY` | 客户端私钥路径 | - |
| `DOCKER_SSH_USER` | SSH用户名(SSH连接时使用) | - |
| `DOCKER_SSH_PASSWORD` | SSH密码(可选,推荐使用密钥) | - |
| `DOCKER_SSH_KEY_FILE` | SSH私钥文件路径 | - |
| `DOCKER_PYTHON_IMAGE` | Python Docker镜像 | python:3.11-slim |
| `SCRIPTS_PATH` | 后端存储根目录(服务自动创建其需要的项目子目录) | /data/scripts |
| `QWEN_API_KEY` | 阿里千问API密钥 | - |
| `SERVER_PORT` | 后端服务端口 | 8000 |
#### Docker远程连接配置示例
**1. TCP连接(未加密)- 仅用于内网测试**
```env
DOCKER_CONNECTION_TYPE=tcp
DOCKER_HOST_ADDRESS=192.168.1.100
DOCKER_HOST_PORT=2375
```
**2. TCP TLS连接(推荐用于远程服务器)**
```env
DOCKER_CONNECTION_TYPE=tcp_tls
DOCKER_HOST_ADDRESS=192.168.1.100
DOCKER_HOST_PORT=2376
DOCKER_TLS_VERIFY=true
DOCKER_TLS_CA_CERT=/path/to/ca.pem
DOCKER_TLS_CLIENT_CERT=/path/to/cert.pem
DOCKER_TLS_CLIENT_KEY=/path/to/key.pem
```
**3. SSH连接**
```env
DOCKER_CONNECTION_TYPE=ssh
DOCKER_HOST_ADDRESS=192.168.1.100
DOCKER_SSH_USER=root
DOCKER_SSH_KEY_FILE=~/.ssh/id_rsa
```
### 前端配置 (`fronted/vite.config.ts`)
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 前端端口 | Vite开发服务器端口 | 3000 |
| `GEMINI_API_KEY` | Google Gemini API密钥 | - |
## 🎯 主要功能
### 1. 脚本管理
- 创建、编辑、删除Python脚本
- 支持普通脚本、HTTP服务和MCP服务三种类型
- 脚本分类和标签管理
### 2. 代码执行
- 在Docker容器中安全执行代码
- 实时输出执行结果
- 错误处理和日志记录
### 3. AI代码助手
- 代码优化建议
- Bug修复建议
- 代码生成和补全
- 支持阿里千问和Gemini模型
### 4. 版本管理
- 自动版本备份
- 版本历史查看
- 代码差异对比
- 版本回滚功能
### 5. 包管理
- 可视化包搜索和安装
- 已安装包列表
- 包版本管理
### 6. 容器管理
- Docker容器生命周期管理
- 容器状态监控
- 端口映射管理
## 🔌 API端点
### 脚本管理
- `GET /api/scripts` - 获取脚本列表
- `POST /api/scripts` - 创建新脚本
- `GET /api/scripts/{id}` - 获取脚本详情
- `PUT /api/scripts/{id}` - 更新脚本
- `DELETE /api/scripts/{id}` - 删除脚本
### 代码执行
- `POST /api/execute/run/{id}` - 执行脚本
- `GET /api/execute/logs/{id}` - 获取执行日志
### 容器管理
- `GET /api/containers` - 获取容器列表
- `POST /api/containers/{id}/start` - 启动容器
- `POST /api/containers/{id}/stop` - 停止容器
- `DELETE /api/containers/{id}` - 删除容器
### 包管理
- `GET /api/packages/{id}` - 获取已安装包
- `POST /api/packages/{id}/install` - 安装包
- `DELETE /api/packages/{id}/{package_name}` - 卸载包
### AI服务
- `POST /api/ai/chat` - AI对话
- `POST /api/ai/code-review` - 代码审查
### 配置管理
- `GET /api/config` - 获取系统配置
- `PUT /api/config` - 更新系统配置
### 外部系统集成
- `GET /api/external/open` - 外部系统重定向接口(GET方式,302跳转)
- `POST /api/external/open` - 外部系统重定向接口(POST方式,302跳转)
- `POST /api/external/script` - 创建脚本并返回重定向URL(JSON响应)
**详细文档**:请查看 [外部系统集成接口文档](./EXTERNAL_API_DOC.md)
## 🛠️ 开发指南
### 后端开发
后端使用FastAPI框架,遵循以下结构:
```
backend/app/
├── routers/ # API路由处理
├── services/ # 业务逻辑服务
├── models.py # 数据库模型
├── schemas.py # Pydantic数据模式
└── config.py # 配置管理
```
### 前端开发
前端使用React + TypeScript + Vite,主要组件:
- `App.tsx` - 主应用组件
- `components/AIChat.tsx` - AI聊天组件
- `components/ScriptManagement.tsx` - 脚本管理组件
- `components/ManagementDashboard.tsx` - 管理仪表板
## 📝 数据库表结构
- **scripts**: 脚本基本信息
- **script_versions**: 脚本版本历史
- **run_logs**: 执行日志
- **installed_packages**: 已安装的Python包
- **system_config**: 系统配置
- **ai_config**: AI服务配置
详细表结构请查看 `backend/database/init.sql`。
## 🔒 安全说明
- 所有代码在Docker容器中隔离执行
- 数据库连接使用环境变量管理敏感信息
- API密钥存储在环境变量中,不提交到代码库
- CORS已配置,仅允许特定来源访问
## 🐛 故障排查
### 后端无法启动
1. 检查MySQL数据库是否正常运行
2. 确认`.env`文件配置正确
3. 检查Docker服务是否运行
4. 查看后端日志输出
### 前端无法连接后端
1. 确认后端服务已启动(http://localhost:8000)
2. 检查CORS配置是否正确
3. 查看浏览器控制台错误信息
### Docker容器执行失败
1. 确认Docker服务正常运行
2. 检查Docker镜像是否存在(python:3.11-slim)
3. 查看容器日志:`docker logs `
## 📄 许可证
本项目仅供学习和个人使用。
## 🤝 贡献
欢迎提交Issue和Pull Request!
## 📞 联系方式
如有问题或建议,请通过Issue反馈。
---
**注意**: 首次启动前请确保已完成数据库初始化、环境变量配置和依赖安装。