架构总览
分层架构
┌────────────────────────────────────────────┐
│ 表现层 (Presentation) │
│ Vue 3 前端 + HTML5 + CSS3 │
├────────────────────────────────────────────┤
│ 接口层 (API) │
│ FastAPI RESTful API (:8000) │
│ CORS 中间件 / Pydantic 校验 │
├────────────────────────────────────────────┤
│ 业务层 (Business) │
│ 5 步管线编排(GenerationManager) │
│ 项目/场景/任务管理 + SQLite 持久化 │
├────────────────────────────────────────────┤
│ 引擎层 (AI Engine) │
│ ScriptWriter │ ImageCreator │
│ VideoCreator │ VideoComposer │
├────────────────────────────────────────────┤
│ 服务层 (Services) │
│ LLMClient │ ComfyUIImgClient │
│ ComfyUIVidClient │ VoiceActor │
│ DB(SQLite DAO) │ FFmpegUtils │
├────────────────────────────────────────────┤
│ 基础设施层 (Infrastructure) │
│ FFmpeg/FFprobe(video-platform/bin 内置)│
│ 文件系统 I/O │ SQLite │ .venv 环境 │
└────────────────────────────────────────────┘5 Agent 管线
| Agent | 文件 | 职责 |
|---|---|---|
| ScriptWriter | agents/script_writer.py | 调用 LLM 生成多分镜剧本 |
| ImageCreator | agents/image_creator.py | ComfyUI 文生图(z-image-turbo) |
| VideoCreator | agents/video_creator.py | ComfyUI 图生视频(Wan2.2 I2V) |
| VoiceActor | services/voice_actor.py | IndexTTS 配音 |
| VideoComposer | agents/video_composer.py | FFmpeg 拼接 + 字幕合成 |
数据流
用户请求 → POST /api/projects(写 SQLite + 配置快照)
→ POST /generate → 后台线程 GenerationManager.run()
→ ScriptWriter → ImageCreator → VideoCreator → VoiceActor → VideoComposer
→ 每步完成写库(短事务)→ 前端 3s 轮询 status
→ status=completed → 结果页预览/下载关键设计
- SQLite 唯一数据源:V2.0 起废除 script.json,全部数据以数据库为准;
- 创建时快照:
config_snapshot保存 settings 全量 + 视频配置,进行中任务不受配置修改影响; - 单并发创作:全局互斥锁,同一时间仅 1 个项目生成;
- FFmpeg 内置:
video-platform/bin/随项目分发,无需单独安装; - ComfyUI 拆分:文生图(comfyui.aivideo.site)与图生视频(wan.aivideo.site)独立服务与客户端。