# 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反馈。 --- **注意**: 首次启动前请确保已完成数据库初始化、环境变量配置和依赖安装。