泥人剧场是一个面向竖屏短剧生产的全栈 AI 应用。系统覆盖从一句话创意、剧本生成、分镜拆解、角色与场景管理、首帧生成、图生视频、配音合成、视频合成到发布前质检的完整流程,目标输出适合抖音短剧、红果短剧等平台的 9:16 竖屏内容。
本项目同时包含一个研究型算法 Demo:CASR(Continuity-Aware Self-Repair,连续性感知自修复)。CASR 用于对短剧生产线中的生成后失败进行诊断、归因、策略搜索和可解释展示,适合作为生成式视频生产可靠性研究的系统案例。
检索关键词:AI 短剧生产、AI 视频生成、竖屏短剧、短剧生产线、ComfyUI、Wan2.2、LTX、图生视频、角色一致性、生成后修复、CASR、连续性感知自修复、成本敏感策略搜索、可解释 AI。
Search keywords: AI short-drama production, AI video generation, vertical short drama, ComfyUI, Wan2.2, LTX, image-to-video, character consistency, post-generation repair, CASR, Continuity-Aware Self-Repair, cost-aware policy search, explainable AI.
- 用户认证:注册、登录、验证码、JWT 鉴权和前端路由守卫。
- 项目管理:项目创建、编辑、删除、题材设置、集数和单集时长配置。
- 剧本生成:基于项目题材和生产目标生成短剧方案、分集大纲和正文。
- 分镜制作:将剧本拆解为镜头序列,生成图像提示词和动态镜头建议。
- 角色与场景管理:维护角色设定、场景设定、定妆照、背景图和一致性信息。
- AI 服务配置:支持文本、图像、视频和 TTS 多类 OpenAI 兼容服务配置。
- 生产线工作台:集中展示镜头状态、任务进度、质量问题、资产快照和发布包检查。
- 视频合成:基于 FFmpeg 完成镜头合成、字幕、音频对齐和竖屏成片导出。
- CASR 自修复实验室:展示连续性诊断、失败归因、成本敏感策略搜索和修复路径解释。
CASR 的定位不是重复实现“角色一致性生成”或“脚本转分镜”,而是在生成完成后的生产线阶段解决通用问题:生成失败如何被发现、如何归因、如何在成本和质量之间选择修复路径。
CASR 输入包括项目、分镜、角色和场景一致性条目、任务记录、资产状态以及已有质检问题。算法输出包括:
qualityScore:结构质量分,覆盖素材缺失、9:16 发布约束、时长异常、黑屏、冻结、任务失败和陈旧任务。continuityScore:连续性分,覆盖角色锚点、服装锚点、场景锚点、首帧和视频提示词继承风险。failureTypes:可执行的失败类型,例如缺首帧、身份漂移风险、场景漂移风险、黑屏、时长异常、视频任务失败等。repairPlan:候选修复路径,例如保存快照、切换 Wan2.2、重跑指定镜头、再次质检。explanation:解释为什么推荐该路径,并展示预计成本、耗时、成功率、风险和收益。
第一版 CASR 采用可运行的 cost-aware policy search:
reward = scoreGain - costPenalty - timePenalty - riskPenalty
后续可以接入视觉评估模型,例如 CLIP、视频帧相似度、人脸一致性检测和光流分析,用于进一步增强状态评估与策略搜索。
CASR 的核心领域模型、诊断器、奖励模型和策略搜索器已经抽取到独立算法仓库 TwoOxygenH2O/casr-core。当前项目通过 Maven 依赖 com.twooxygen.casr:casr-engine:0.1.0-SNAPSHOT 引用算法核心,NirenCasrInputAdapter 只负责把生产线实体转换为算法输入。推荐的仓库边界是:casr-core 负责可复用算法库与轻量独立 Demo,本项目负责真实短剧生产系统中的落地集成。
Maven 引用方式:
<dependency>
<groupId>com.twooxygen.casr</groupId>
<artifactId>casr-engine</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>本地开发时需要先在同级目录 ../casr-core 执行:
mvn clean install安装完成后,当前项目后端即可解析 casr-engine 依赖。
Java 调用示例:
import com.twooxygen.casr.domain.CasrInput;
import com.twooxygen.casr.domain.CasrRunResult;
import com.twooxygen.casr.engine.CasrDemoFixtures;
import com.twooxygen.casr.engine.CasrEngine;
CasrEngine engine = new CasrEngine();
CasrInput input = CasrDemoFixtures.shortDramaCase();
CasrRunResult result = engine.run(input);
System.out.println(result.getPlan().getRecommendedOption().getId());Python 和 Go 等非 JVM 语言建议通过 casr-core 的轻量 HTTP Demo 服务调用算法:
cd ../casr-core
mvn -pl casr-demo-server -am spring-boot:runPython 示例:
import requests
base_url = "http://localhost:8090/api"
case = requests.get(f"{base_url}/demo-case", timeout=10).json()
plan = requests.post(f"{base_url}/plan", json=case, timeout=10).json()
print(plan["recommendedOption"]["id"])Go 示例:
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
baseURL := "http://localhost:8090/api"
resp, err := http.Get(baseURL + "/demo-case")
if err != nil {
panic(err)
}
defer resp.Body.Close()
var input map[string]any
if err := json.NewDecoder(resp.Body).Decode(&input); err != nil {
panic(err)
}
payload, _ := json.Marshal(input)
planResp, err := http.Post(baseURL+"/plan", "application/json", bytes.NewReader(payload))
if err != nil {
panic(err)
}
defer planResp.Body.Close()
var plan map[string]any
if err := json.NewDecoder(planResp.Body).Decode(&plan); err != nil {
panic(err)
}
fmt.Println(plan["recommendedOption"])
}项目提供一键创建 CASR 研究 Demo 的入口。登录后进入 Dashboard,点击“创建 CASR 研究 Demo”,系统会生成一个内置 7 个镜头、典型失败样例和一致性锚点的演示项目。进入生产线工作台后,可以查看 CASR 如何发现问题、生成策略树,并解释推荐修复路径。
论文草稿、DOCX、预印本打包脚本和投稿辅助材料默认只在本地忽略目录维护,不进入公开仓库。公开 README 只保留算法说明、可运行 Demo、接口与复现实验入口;正式预印本发布后可在本节补充 arXiv 或会议页面链接。
| 技术 | 用途 |
|---|---|
| Spring Boot 3.2 | 后端主框架 |
| Java 17 | 运行环境 |
| Maven | 构建与测试 |
| MyBatis-Plus | ORM 与数据库访问 |
| MySQL 8.0 | 主数据库 |
| Spring Security + JWT | 认证与鉴权 |
| Spring @Async | 长任务异步执行 |
| Knife4j / Swagger | API 文档 |
| FFmpeg | 视频合成与本地质检 |
| Jackson | JSON 序列化 |
说明:Redis 不是当前运行必需组件。当前后端运行、登录验证码、CASR 和生产线质检均不依赖 Redis。
| 技术 | 用途 |
|---|---|
| Vue 3 | 前端主框架 |
| TypeScript | 类型安全 |
| Vite | 构建工具 |
| Element Plus | UI 组件 |
| Pinia | 状态管理 |
| Vue Router | 路由管理 |
| Axios | HTTP 客户端 |
niren-drama/
├── backend/
│ ├── src/main/java/com/niren/drama/
│ │ ├── ai/ # AI Provider 抽象与实现
│ │ ├── config/ # Spring、MyBatis、Swagger、迁移配置
│ │ ├── controller/ # REST API
│ │ ├── dto/ # 请求和响应 DTO
│ │ ├── entity/ # 数据库实体
│ │ ├── mapper/ # MyBatis-Plus Mapper
│ │ ├── security/ # JWT 与安全过滤器
│ │ └── service/ # 业务服务、AI 任务、CASR 算法
│ └── src/main/resources/
│ ├── application.yml
│ └── db/init.sql
├── frontend/
│ └── src/
│ ├── api/
│ ├── components/
│ ├── router/
│ ├── stores/
│ └── views/
├── docs/ # 项目说明与工程记录
├── docker-compose.yml
└── README.md
要求:JDK 17、Maven 3.8+、MySQL 8.0+。
cd backend
mysql -u root -p < src/main/resources/db/init.sql
mvn spring-boot:run后端默认地址:
http://localhost:8080
API 文档:
http://localhost:8080/api/doc.html
要求:Node.js 18+。
cd frontend
npm install
npm run dev前端默认地址:
http://localhost:5173
前端开发服务器会将 /api 请求代理到后端。
docker-compose up -dDocker Compose 用于本地一键体验。MySQL、后端、前端等组件会按编排启动;当前编排不需要 Redis。
所有接口统一返回:
{
"code": 200,
"message": "success",
"data": {}
}CASR 相关接口:
POST /api/production/{projectId}/casr/analyze
POST /api/production/{projectId}/casr/plan
POST /api/production/{projectId}/casr/execute
POST /api/production/demo/casr
生产线相关接口:
GET /api/production/{projectId}/workspace
POST /api/production/{projectId}/repair
POST /api/production/{projectId}/quality-check
POST /api/production/{projectId}/snapshots
POST /api/production/{projectId}/export-package
常用环境变量:
| 变量 | 说明 |
|---|---|
DB_HOST |
MySQL 地址 |
DB_PORT |
MySQL 端口 |
DB_NAME |
数据库名 |
DB_USER |
数据库用户名 |
DB_PASSWORD |
数据库密码 |
JWT_SECRET |
JWT 签名密钥,生产环境必须替换 |
NIREN_CONFIG_ENCRYPTION_KEY |
AI 服务 API Key 的数据库加密密钥;为空时回退到 JWT_SECRET |
AI_TEXT_API_KEY |
文本模型 API Key |
AI_TEXT_BASE_URL |
OpenAI 兼容文本接口地址 |
AI_IMAGE_API_KEY |
图像模型 API Key |
UPLOAD_PATH |
本地上传目录 |
FFMPEG_PATH |
FFmpeg 可执行文件路径 |
AI Key 也可以在 Web 端的 AI 配置页面中维护,并按用户隔离保存。
后端测试:
cd backend
mvn test前端构建:
cd frontend
npm run buildCASR 相关测试覆盖:
- 缺首帧、视频失败、黑屏、时长异常和连续性风险诊断。
- 策略搜索在相同输入下稳定选择成本收益最高的路径。
- Demo 服务创建项目、分镜、问题、一致性条目和 CASR run。
- 策略生成不执行修复;执行接口只运行用户确认的动作。
本项目可以作为生成式视频生产可靠性研究案例展示:
- 完整产品闭环:从创意到生产线工作台,再到成片导出。
- 后端工程能力:Spring Boot 分层架构、MyBatis-Plus、JWT、异步任务、FFmpeg 集成。
- 前端工程能力:Vue 3、TypeScript、Element Plus、状态管理和复杂工作台 UI。
- 算法工程能力:CASR 的质量评估、失败归因、成本敏感策略搜索和可解释展示。
- 文档表达能力:README、研究说明、Demo 流程和工程验证记录。
本项目遵循 MIT License。
说明:本项目通过 Maven 引用的独立算法仓库 TwoOxygenH2O/casr-core 遵循 Apache License 2.0。应用层代码与算法核心保持仓库和许可证边界清晰,便于工程复用、研究引用和后续公开发布。