Files
pixel/README_zh-CN.md
张鹏 f9f4560459 Initial commit: Pixel AI comic/video creation platform
- FastAPI backend with SQLModel, Alembic migrations, AgentScope agents
- Next.js 15 frontend with React 19, Tailwind, Zustand, React Flow
- Multi-provider AI system (DashScope, Kling, MiniMax, Volcengine, OpenAI, etc.)
- All HTTP clients migrated from sync requests to async httpx
- Admin-managed API keys via environment variables
- SSRF vulnerability fixed in ensure_url()
2026-04-29 01:20:12 +08:00

337 lines
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <repository-url>
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