Skip to content

Repository files navigation

AI Director

一句创意,一部短剧。

AI Director 是一个多 Agent 协作的 AI 漫剧创作平台:用户输入一句创意(或剧本、分镜),由 14 个专业 Agent 按确定性管线协作,完成从安全审查、故事架构、剧本、角色、分镜、视频提示词到成片组装的全流程创作。

特性

  • 多 Agent 确定性编排:14 个专业 Skill 按前置依赖图调度,调度决策由纯函数引擎给出,不依赖 LLM 自主路由
  • 产物契约与血缘:每个 Skill 输出经技能名 + 语义化契约版本双重校验,所有产物版本化、可追溯,用户源素材不可变
  • 安全门禁:Safety Guardian 在创作入口与视频生成前两次审查;AUTO 模式下角色视觉确认与生成前终审仍强制执行
  • 修改计划(Change Plan):修改已有产物前必须先确认影响范围,受保护镜头自动排除,生产进行中冻结调度
  • 安全工程:PostgreSQL 行级安全(RLS + FORCE)与应用层归属断言双保险,DB 层滑动窗口限流与并发租约,全链路令牌哈希存储
  • 视频作业状态机:幂等提交、失败语义分类(可重试 / 结果未知禁止自动重提,防重复计费)、供应商结果转存私有素材库

多 Agent 创作管线

flowchart TD
    SAFETY[SAFETY_GUARDIAN<br/>创作入口安全审查] --> PLANNER[DIRECTOR_PLANNER<br/>导演规划]
    PLANNER --> ARCH[STORY_ARCHITECT<br/>故事架构]
    ARCH --> SCR[SCREENPLAY_WRITER<br/>结构化剧本]
    ARCH --> CHAR[CHARACTER_DESIGNER<br/>角色设定]
    SCR --> CONSIS
    CHAR --> CONSIS[CHARACTER_CONSISTENCY<br/>跨镜头角色一致性]
    CONSIS --> CONT[CONTINUITY<br/>剧情连续性]
    CONT --> BOARD[STORYBOARD_PLANNER<br/>分镜规划]
    BOARD --> CINE[CINEMATIC_DIRECTOR<br/>镜头语言方案]
    BOARD --> VOICE[VOICE_AND_SUBTITLE<br/>配音与字幕]
    CINE --> STYLE[VISUAL_STYLE<br/>视觉执行方案]
    STYLE --> PROMPT[VIDEO_PROMPT_ENGINEER<br/>视频提示词简报]
    PROMPT --> FINAL[SAFETY_GUARDIAN<br/>生成前安全终审]
    FINAL --> VIDEO[视频生成<br/>Seedance]
    VIDEO --> QC[QUALITY_CONTROL<br/>质检]
Loading
  • 三种创作模式:灵感创作(IDEA_CREATION)/ 剧本导演(SCREENPLAY_DIRECTOR)/ 专业分镜(PRO_STORYBOARD)
  • 两种执行策略:AUTO(门禁通过自动推进)/ PROFESSIONAL(关键节点需用户确认)
  • 9 个用户审批点:导演设定、故事架构、剧本草案、角色视觉、分镜、镜头语言、视觉风格、预视频、配音字幕

架构

┌────────────────────────────────────────────────────────┐
│                  Next.js App Router(全栈)                │
│  ┌────────────┐   ┌──────────────────────────────────┐  │
│  │  页面/组件   │   │   API Routes(35 个端点)          │  │
│  └────────────┘   └──────────┬───────────────┬───────┘  │
│                              │               │           │
│                 ┌────────────▼───┐  ┌────────▼───────┐  │
│                 │  API 守卫       │  │  Agent 实现     │  │
│                 │  频控/并发租约   │  │  11 个 Skill    │  │
│                 └────────────┬───┘  └────────┬───────┘  │
│                              │               │           │
│                 ┌────────────▼───────────────▼───────┐  │
│                 │          Director Runtime          │  │
│                 │   contracts / orchestrator /       │  │
│                 │   validation / character-lineage   │  │
│                 └──────────┬───────────────┬─────────┘  │
│                            │               │             │
│               ┌────────────▼────┐  ┌───────▼─────────┐  │
│               │  Qwen 适配器     │  │  Seedance 适配器 │  │
│               │  (LLM 调用)    │  │  (视频生成)    │  │
│               └────────────────┘  └─────────────────┘  │
│                            │               │             │
│               ┌────────────▼───────────────▼─────────┐  │
│               │     PostgreSQL(原生 SQL + RLS)       │  │
│               └──────────────────────────────────────┘  │
└────────────────────────────────────────────────────────┘
  • Director Runtime 是自研的编排核心:调度引擎(evaluateDispatch)以纯函数形式校验前置依赖、安全门禁、审批点与锁定保护,每次 Skill 调用前后均执行
  • 模型只负责起草:调度顺序、产物版本、用户确认节点与安全决策全部由应用代码管控,模型输出经过契约校验后才可持久化

技术栈

技术
全栈框架 Next.js 15(App Router)+ React 19
语言 TypeScript(strict)
数据库 PostgreSQL(pg 原生驱动,无 ORM,RLS 行级隔离)
LLM 通义千问 Qwen(OpenAI 兼容接口,JSON 模式)
视频生成 即梦 Seedance(Volcengine Ark Content Generation)
媒体处理 FFmpeg(本地成片渲染)
测试 Node.js 原生 test runner

快速开始

环境要求

  • Node.js 20+
  • PostgreSQL 14+

安装与启动

# 1. 安装依赖
npm install

# 2. 配置环境变量
cp .env.example .env.local
# 编辑 .env.local,至少填写 QWEN_API_KEY、QWEN_BASE_URL、QWEN_MODEL、DATABASE_URL

# 3. 执行数据库迁移
npm run db:migrate

# 4. 启动开发服务器
npm run dev
# 打开 http://localhost:3000

环境变量

变量 必填 说明
QWEN_API_KEY 通义千问 API Key
QWEN_BASE_URL 兼容 OpenAI 接口的 API 地址(须 HTTPS)
QWEN_MODEL 模型名
QWEN_REQUEST_TIMEOUT_MS 请求超时,默认 170000(上限受路由 180s 限制)
QWEN_ENABLE_JSON_MODE JSON 输出模式,默认 true
QWEN_ENABLE_THINKING 思维链输出,默认 false
SEEDANCE_API_KEY 视频生成 API Key(不配置则视频作业只入队不派发)
SEEDANCE_BASE_URL 默认 https://ark.cn-beijing.volces.com/api/v3
SEEDANCE_MODEL 视频生成模型
SEEDANCE_REQUEST_TIMEOUT_MS 默认 60000
DATABASE_URL PostgreSQL 连接串(仅服务端使用)
DATABASE_SSL_CA_PATH SSL 模式下的 CA 证书路径,默认 certs/rds-ca.pem
ASSET_STORAGE_PROVIDER 默认 LOCAL_PRIVATE
ASSET_LOCAL_ROOT 私有素材根目录,默认 .asset-storage
TRUST_PROXY_HEADERS 仅在可信反代后置 true(信任 X-Forwarded-For 做限流分桶)

所有凭据仅允许服务端环境变量,代码会在检测到 NEXT_PUBLIC_ 前缀的敏感变量时直接报错。

项目结构

├── app/                        # Next.js 页面与 API 路由
│   ├── api/                    # 35 个 API 端点(认证/项目/AI 管线/视频作业/素材/后期)
│   └── app/                    # 创作空间(项目工作台、回收站)
├── components/                 # React 组件(认证/项目/原型存储/基础 UI)
├── lib/
│   ├── agent/                  # 11 个 Agent 实现(prepare → LLM → finalize)
│   ├── director-runtime/       # 自研编排核心:契约、调度引擎、结果校验、角色血缘
│   ├── qwen/                   # Qwen 适配器(调用、配置、Prompt 加载)
│   ├── seedance/               # Seedance 适配器(提交/轮询/结果转移)
│   ├── projects/               # 仓储层(repository.ts,全部工作流持久化)
│   ├── api/                    # 请求校验、守卫(限流/并发租约)、响应约定
│   ├── auth/                   # 会话认证(scrypt 密码哈希、不透明令牌)
│   ├── db/                     # PostgreSQL 连接池与事务封装
│   ├── assets/                 # 私有素材存储与上传策略
│   └── post-production/        # 后期制作时序校验
├── db/migrations/              # 数据库迁移(10 个,含 RLS 策略)
├── docs/                       # 设计文档(状态机、数据协议、记忆架构、Prompt 契约)
├── scripts/                    # 迁移执行、库验证、本地渲染、离线 TTS、集成测试
└── certs/                      # 数据库 CA 证书(不入库,见 .gitignore)

常用命令

命令 说明
npm run dev 启动开发服务器
npm run build 生产构建
npm run lint ESLint 检查
npm run typecheck TypeScript 类型检查
npm run test:runtime 运行时单元测试(调度引擎、契约校验、适配器、资源策略等)
npm run test:integration API 集成测试(需本地服务运行在 3000 端口)
npm run db:migrate 执行数据库迁移
npm run db:verify 数据库验证(表结构、RLS 隔离、限流原子性、并发租约)

设计文档

架构与设计决策见 docs/

当前状态

  • 创作管线(故事架构 → 视频提示词)、视频作业状态机、私有素材库、后期编排草案均已实现
  • 本地无费用子集已落地:FFmpeg 本地成片渲染、Windows 离线语音合成
  • 真实 Seedance 付费调用尚未执行:供应商适配层与作业语义已按契约实现并测试,端到端视频生成待合同验证
  • Agent 记忆架构 Phase A(数据表与 RLS)已落地,Phase B(记忆卡填充与上下文构建器)未实现

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages