# Pixel - AI 视频创作平台 [English Documentation](README.md) Pixel 是一个智能平台,利用 AI 从剧本创作漫画和视频。它简化了从剧本编写到素材管理、分镜生成以及最终视频制作的整个工作流,利用多智能体系统(Multi-Agent Systems)和先进的生成式模型提供强大的创作支持。 ## ✨ 功能特性 - **智能剧本分析**: - 自动解析剧本,识别角色、场景和道具。 - **Agent 工作流**:利用基于 AgentScope 的专用智能体进行深度的剧本理解和拆解。 - **多模型 AI 支持**: - **LLM**: DashScope (通义千问), Google (Gemini), VolcEngine (豆包)。 - **生图**: Flux 1.1 Pro, 通义万相 (Wanx), 可图 (Kolors)。 - **生视频**: 可灵 (Kling 1.5), 海螺 (Hailuo/MiniMax), CogVideoX, 通义万相 2.1。 - **素材管理**:集中的“素材中心”,用于管理和编辑创意素材。 - **AI 分镜**:利用 AI 图像生成技术,根据剧本描述生成可视化分镜,并支持风格一致性控制。 - **视频生成与编辑**: - 将静态分镜转化为动态视频。 - **精细控制**:支持首/尾帧控制、运镜控制(推拉摇移)、以及 Motion Bucket 参数调节。 - **无限画布**:基于节点的自由创作工作区(由 React Flow 驱动),支持多选拖拽、丝滑缩放和灵活的节点连接。 - **项目管理**:在结构化的工作区中组织您的创意作品,支持集(Episode)和场(Scene)管理。 ## 🏗 架构 本项目采用 Monorepo 结构,后端采用清晰的三层架构: - **`frontend/`**: 基于 **Next.js 15** (App Router) 的前端应用,使用 **React 19**、Tailwind CSS 和 `@xyflow/react` 构建画布界面。 - **`backend/`**: 基于 **FastAPI** 的后端服务,采用三层架构(API层、服务层、仓储层)。使用 **AgentScope** 进行智能体编排,并通过插件系统支持多种 AI 模型提供商。 ## 📚 文档 完整的技术文档: - **[ARCHITECTURE.md](ARCHITECTURE.md)**: 完整的系统架构、设计决策和技术栈 - **[backend/README.md](backend/README.md)**: 后端设置、API文档和开发指南 - **[frontend/README.md](frontend/README.md)**: 前端设置、组件结构和开发指南 ## 🚀 快速开始 ### 前置要求 - **Node.js**: v20 或更高版本 (Next.js 15 必需) - **Python**: v3.12 或更高版本 - **包管理器**: `pnpm` (前端), `uv` (后端 - 推荐) - **Redis**: v7+ (可选但推荐用于缓存) - **PostgreSQL**: v15+ (生产环境,开发环境使用 SQLite) - **API Keys**: 根据使用的模型准备 阿里云 DashScope, 火山引擎 VolcEngine 或 Google AI Studio 的 Key ### 安装步骤 #### 1. 克隆仓库 ```bash git clone cd pixel ``` #### 2. 后端设置 ```bash cd backend # 安装 uv(如果尚未安装) pip install uv # 安装依赖 uv sync # 配置环境变量 cp .env.example .env # 编辑 .env 文件,填入您的 API Keys # 运行数据库迁移 alembic upgrade head # 启动后端服务器 ./start.sh # 或手动运行: uv run uvicorn src.main:app --reload --port 8000 ``` 后端将在 http://localhost:8000 运行 #### 3. 前端设置 ```bash cd frontend # 安装依赖 pnpm install # 启动开发服务器 pnpm dev ``` 前端将在 http://localhost:3000 运行 ### 环境配置 在 `backend/` 目录中创建 `.env` 文件: ```env # AI 提供商 DASHSCOPE_API_KEY=your_dashscope_key VOLCENGINE_ACCESS_KEY=your_volcengine_key VOLCENGINE_SECRET_KEY=your_volcengine_secret GOOGLE_API_KEY=your_google_key KLING_API_KEY=your_kling_key # 存储 OSS_ACCESS_KEY_ID=your_oss_key OSS_ACCESS_KEY_SECRET=your_oss_secret # 数据库(可选 - 默认使用 SQLite) DATABASE_URL=postgresql://user:pass@localhost/pixel # Redis(可选但推荐) REDIS_URL=redis://localhost:6379 # 监控 ENABLE_METRICS=true LOG_LEVEL=INFO ``` ### Docker 部署(可选) ```bash # 构建并启动所有服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ## 🔌 API 文档 后端提供完整的 RESTful API 文档: - **[API 文档](docs/API.md)**: 完整的 API 参考和示例 - **交互式文档**: http://localhost:8000/docs (Swagger UI) - **ReDoc**: http://localhost:8000/redoc - **OpenAPI 规范**: http://localhost:8000/openapi.json ### 核心端点 * **生图**: `POST /api/v1/generations/image` * **生视频**: `POST /api/v1/generations/video` * **剧本分析**: `POST /api/v1/script/analyze` * **任务状态**: `GET /api/v1/tasks/{task_id}` * **项目管理**: `/api/v1/projects/*` * **画布操作**: `/api/v1/canvas/*` ### 交互式文档 - **Swagger UI**: http://localhost:8000/docs - **ReDoc**: http://localhost:8000/redoc - **OpenAPI 规范**: http://localhost:8000/openapi.json 所有生成接口均支持 `extra_params` 字段,用于直接向底层 SDK 传递模型特定参数。 ## 🧪 开发 ### 运行测试 **后端:** ```bash cd backend pytest # 运行所有测试 pytest tests/test_integration.py # 运行集成测试 pytest --cov=src # 运行并生成覆盖率报告 ``` **前端:** ```bash cd frontend pnpm test # 运行所有测试 pnpm test:watch # 监听模式运行 pnpm test:coverage # 运行并生成覆盖率报告 ``` ### 代码质量 **后端:** ```bash # 格式化代码 black src/ isort src/ # 代码检查 flake8 src/ mypy src/ ``` **前端:** ```bash # 代码检查 pnpm lint # 类型检查 pnpm type-check # 格式化 pnpm format ``` ### 数据库迁移 ```bash cd backend # 创建新迁移 alembic revision --autogenerate -m "描述" # 应用迁移 alembic upgrade head # 回滚一个迁移 alembic downgrade -1 ``` ### API 类型生成 当后端 API 变更时,重新生成前端类型: ```bash cd frontend pnpm gen:api ``` ## 📊 监控 ### 健康检查 ```bash curl http://localhost:8000/health ``` ### 指标(Prometheus) ```bash curl http://localhost:8000/metrics ``` ### 日志 后端日志采用 JSON 格式,便于解析: ```bash tail -f backend/logs/app.log | jq ``` ## 🤝 贡献 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 开启 Pull Request ### 开发指南 - 遵循三层架构(API层、服务层、仓储层) - 为新功能编写测试 - 更新文档 - 遵循代码风格指南 - 使用约定式提交 ## 🐛 故障排除 ### 后端问题 **Redis 连接错误:** ```bash # 检查 Redis 是否运行 redis-cli ping # 应返回: PONG ``` **数据库连接错误:** ```bash # 检查数据库连接 psql -h localhost -U user -d pixel ``` **导入错误:** ```bash # 重新安装依赖 uv sync --reinstall ``` ### 前端问题 **模块未找到:** ```bash # 清除缓存并重新安装 rm -rf node_modules .next pnpm install ``` **API 类型不匹配:** ```bash # 重新生成 API 类型 pnpm gen:api ``` ## 📦 项目结构 ``` pixel/ ├── backend/ # FastAPI 后端 │ ├── src/ │ │ ├── controllers/ # API 层(HTTP 处理) │ │ ├── services/ # 服务层(业务逻辑) │ │ ├── repositories/ # 仓储层(数据访问) │ │ ├── models/ # 数据模型(实体和模式) │ │ ├── middlewares/ # API 中间件 │ │ └── utils/ # 工具函数 │ ├── tests/ # 测试套件 │ └── alembic/ # 数据库迁移 ├── frontend/ # Next.js 前端 │ ├── src/ │ │ ├── app/ # Next.js 页面(App Router) │ │ ├── components/ # React 组件 │ │ ├── lib/ # 工具和服务 │ │ └── store/ # 状态管理(Zustand) │ └── tests/ # 测试套件 ├── docs/ # 文档 ├── ARCHITECTURE.md # 架构文档 └── docker-compose.yml # Docker 配置 ``` ## 📄 许可证 MIT