# wbr-agent-auto-project **Repository Path**: work_project_item/wbr-agent-auto-project ## Basic Information - **Project Name**: wbr-agent-auto-project - **Description**: 自主进化 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自主进化任务系统 基于Flask的自主进化任务管理平台,支持多任务并发、实时日志、工具管理和数据管理。 ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置数据库 创建 `.env` 文件,配置数据库连接: ```env DATABASE_URL=mysql+pymysql://user:password@host:port/database PORT=5000 SERVER_HOST=0.0.0.0 ``` ### 3. 初始化数据库 ```bash python migrate_database.py ``` ### 4. 启动服务 ```bash python run.py ``` 访问 `http://localhost:5000` ## 主要功能 - **任务管理**: 启动、停止、删除进化任务,支持多任务并发 - **任务持久化**: 任务信息(目标、状态、数据集、结果等)自动同步到后端数据库 - **独立任务页面**: 支持通过任务ID独立打开任务执行页面(`/task/`) - **实时日志**: SSE实时推送任务执行日志 - **工具管理**: 动态管理工具代码(创建、删除、验证) - **数据管理**: 数据集文件上传、下载、删除 - **实验数据**: 查看执行轮次和最优workflow - **配置管理**: 通过Web界面动态修改系统配置 ## 项目结构 ``` ├── backend/ # 后端代码 │ ├── app.py # Flask应用主文件 │ ├── run_app.py # 任务执行逻辑 │ └── config.py # 配置文件 ├── frontend/ # 前端代码 │ ├── templates/ # HTML模板 │ └── static/ # 静态资源 ├── tools/ # 工具模块 ├── data/ # 数据目录 │ ├── images_all/ # 图像数据 │ ├── video_all/ # 视频数据 │ └── runtime/ # 运行时数据 └── run.py # 启动脚本 ``` ## Docker 部署 ### 基本部署 ```bash cd docker docker compose up -d --build ``` ### 自定义宿主机挂载目录 在 `docker/.env` 中配置 `HOST_DATA_ROOT`,可将所有持久化数据统一挂载到宿主机指定目录: ```env # 设置宿主机数据根目录 HOST_DATA_ROOT=/opt/wbr-agent ``` 容器启动时会自动在该目录下创建完整的子目录结构: ``` /opt/wbr-agent/ ├── data/ │ ├── images_all/ # 图像数据 │ ├── video_all/ # 视频数据 │ ├── videos/ # 视频文件 │ ├── videos_annotations/ # 视频标注 │ └── runtime/ # 运行时数据 │ ├── log/ # 日志 │ ├── tasks/ # 任务数据 │ ├── reports/ # 报告 │ └── visualizations/ # 可视化结果 └── models/ # 模型文件 ``` 如果 `HOST_DATA_ROOT` 留空,则默认使用项目目录下的 `data/` 和 `models/`(与之前行为一致)。 ## 技术栈 - **后端**: Flask + MySQL + SSE - **前端**: HTML + JavaScript + Tailwind CSS (Slate极简风格) - **工具**: OpenCV, Ultralytics, PyTorch ## 任务持久化 任务信息采用**后端为唯一数据源**的架构设计: ### ID体系 - **任务ID(task_id)**: 前端生成的唯一标识符(如 `task_1234567890_1`),作为任务的真正标识 - 持久化存储在后端数据库 - 作为任务的主键,用于查询和更新任务信息 - 可以通过任务ID直接访问任务页面(`/task/`) - **执行ID(execution_id)**: 后端生成的UUID,用于标识每次执行 - 每次启动任务时生成新的执行ID - 用于文件系统隔离(执行目录、日志流等) - 与任务ID一对一关联(一个任务一次执行对应一个执行ID) ### 数据存储策略 - **后端数据库(MySQL)**: - 存储所有任务信息(包括草稿任务) - 任务ID作为主键(task_id字段使用前端生成的ID) - 包含:任务目标、状态、数据集配置、执行结果等 - 跨浏览器、跨设备共享 - **前端存储**: - **不再使用localStorage存储任务信息** - 所有任务信息从后端API获取 - 前端仅维护内存中的任务列表(用于UI展示) ### 数据同步流程 1. **页面初始化**: 从后端API(`/api/tasks`)加载所有任务(包括草稿和已启动的任务) 2. **任务创建**: 前端生成任务ID,调用后端API(`/api/tasks/create`)创建任务记录 3. **任务启动**: 传入任务ID,后端生成执行ID,启动任务执行 4. **任务更新**: 任务的任何更新(goal、dataset等)通过API(`/api/task/`)同步到后端 5. **跨浏览器**: 所有任务在所有浏览器可见(统一从后端加载) ### API接口 - `POST /api/tasks/create`: 创建任务(传入前端任务ID) - `GET /api/tasks`: 获取所有任务列表(包括草稿和已启动的任务) - `GET /api/task/`: 获取单个任务基本信息(task_id为前端任务ID) - `PUT /api/task/`: 更新任务信息(goal、status、selected_dataset、final_result) - `POST /api/start_evolution`: 启动任务执行(传入task_id,返回execution_id) - `GET /api/logs?execution_id=`: SSE日志流(使用execution_id)