在无限画布上编排 AI 短剧的剧本与分镜(影策)

影策(open-ai-canvas)是 ddcat-ai 开源的 AI 影视创作工作台,把自由画布、剧本与分镜工作流、图片/视频/音频生成任务、时间线剪辑和渠道管理放进同一个后端。这篇文章梳理它的功能边界、部署命令与关键环境变量,也整理了用户实际踩过的部署与渠道坑,帮你在自建之前判断它是否匹配手上的短剧或影视项目。

影策(open-ai-canvas)是面向 AI 影视创作的开源无限画布工作台,用画布组织剧本、角色、场景与分镜,并统一调度图片、视频、音频与文本生成任务。

它接的是一条完整链路:项目从一段文字故事开始,拆出剧本结构,定义角色与场景,画出分镜,再逐个镜头生成图片和视频,配上音频,最后在时间线上拼成片。这些动作原先散在文档、聊天窗口和各类生成网站里,哪版素材对应哪一镜、哪个任务还在排队、额度花了多少,都靠人工记。影策把它们收进同一块画布和同一个任务系统。

输入是文字和素材,输出是画布上的节点图、生成好的图片/视频/音频文件,以及时间线导出的成片。前端以 TypeScript 为主(51.7%),后端用 Go(33.2%),本地开发跑 SQLite,正式部署换成 PostgreSQL 加 Redis,许可证为 MIT。这是一个二次开发项目,上游是 basketikun/infinite-canvas 的早期版本。

输入是文字和素材,输出是画布上的节点图、生成好的图片/视频/音频文件,以及时间线导出的成片

它解决的是什么问题

AI 影视创作最难的部分不在单张图好不好看,而在一致性:同一个角色出现在几十个镜头里,服装、脸型、场景光线要保持;分镜改了,后面生成的素材得跟着改;一批任务排队时,谁在跑、谁失败、重试花了多少额度,都要有账可查。

交给文件夹和表格管理,规模一大就会失控。影策的做法是把每个创作对象变成画布上的节点:角色是一个节点,场景是一个节点,一个镜头也是一个节点,节点之间的连线表达依赖关系。生成任务挂在节点上,进度、日志、取消和重试由任务系统统一处理。素材库负责引用校验,删除素材前会检查还有没有业务在引用它。

典型使用场景

  • 个人的 AI 短剧制作:一个人同时管剧本、角色一致性和几十个镜头,把角色卡和分镜挂在同一块画布上,改设定时能直接看出影响哪些镜头。
  • 影视或广告的前期预演:用 3D 预演台摆机位、画走位与运镜路径,导出白膜 MP4,再把构图回写到画布卡片,给后面的实拍或生成环节留参考。
  • 自建服务对外提供生成能力:管理员配好系统渠道与逻辑模型,设置用量与积分,用管理后台看用户、配额和系统性能。
  • 已有画布想加 Agent 能力:在技能页安装技能包,让画布 Agent 读取场景、创建场景,或者对已有内容打语义补丁。

几个常见疑问

一键部署卡在拉镜像这一步,是什么原因?

仓库里曾出现过这个情况:一键部署配置直接用 ghcr.io/ddcat-ai/open-ai-canvas-web 和 ghcr.io/ddcat-ai/open-ai-canvas-backend 两个镜像,镜像发布工作流是成功的,但当时的容器包不允许匿名拉取,全新服务器照 README 和 scripts/install-server.sh 走就会失败。这条 Issue 已标记为已解决。用 GHCR 镜像部署时,脚本会先按指定 Release 拉取镜像,再解析并写入 CANVAS_BACKEND_IMAGE、CANVAS_WEB_IMAGE 的 digest,生产 Compose 不接受缺失 digest 的默认镜像或 latest。

配好第三方 OpenAI 兼容渠道,为什么模型测试报「连接模型服务失败」?

有用户反馈过完整流程:后台新增渠道填名称、baseURL、API Key,拉模型列表能成功,配置模型并启用后,测试却失败,画布调用同样不通。这条 Issue 已解决。需要一并注意的是后端的默认策略:它会拒绝本机、私网和链路本地模型地址。开发阶段只通过 CANVAS_ALLOWED_PRIVATE_UPSTREAM_HOSTS 精确放行可信主机,不要用全量放行开关。

云端 Agent 的上下文超预算时会怎么处理?

早期实现是直接结束本轮:cloud_agent_runtime.go 在估算 token 超过 contextBudget.InputBudgetTokens 时调用 failCloudAgent 收尾。社区讨论过改成压缩成检查点后继续跑,这条 Issue 已标记为已解决。另外从 v1.5.9 起,画布 Agent 改为独立 yingce-agent 容器运行,配置 YINGCE_AGENT_URL 后只走独立容器,失败不会回退到内嵌进程。

主要功能

  • 自由画布:节点、连线、框选、缩放、小地图、撤销重做、导入导出和只读分享。项目内容以节点图的形式呈现,而不是文件列表。
  • 影视创作工作流:剧本、角色、场景、风格板、参考素材、结构化分镜和 3D 导演台。3D 预演台在 v1.6.1 重构,分摆场、姿态、动画、摄影机四种工作模式,时间轴、关键帧与 Auto Key 只在动画模式开放,渲染视图按模式过滤;新建场景先选模板(空场景、单人对白、双人对话、人物走位、产品/道具镜头)。
  • 多媒体生成:文本、图片、视频、音频任务,支持参考图、首尾帧、运镜、续写、局部修改和批量生成。音频生成支持 IndexTTS2 情感控制,并保留多条音频结果。
  • 任务与素材管理:异步队列、进度与日志、取消与重试、素材库、资源引用校验,登录后可跨设备同步。
  • 时间线剪辑:片段编排、拆分、修剪、字幕转写和服务端成片导出,编辑面板支持插件化。
  • 云端 Agent 与技能生态:持久化对话、画布摘要、流式事件回放;README 说明当前为只读阶段,真实环境能力以文档和验收清单为准。社区技能库 judian-skills 提供 34 个场景域包索引,在技能页选「安装技能」→ GitHub 标签,仓库地址填 https://github.com/itsWyatt-K/judian-skills,子目录填 skills/drama/story-structure-engine 这类域包路径。
  • 管理与渠道:系统渠道、逻辑模型、用量与积分、功能开关、对象存储、响应拦截和管理后台。后台可设置 Agent 同时对话上限,默认 30,范围 1 到 64,降低上限不会中断已开始的对话。

安装与最短示例

环境要求写在 README 里:Bun 用于前端和文档站,Go 1.25 用于后端,Docker Compose 只在容器开发或部署时需要。

git clone https://github.com/ddcat-ai/open-ai-canvas.git
cd open-ai-canvas

mkdir -p .local/project-workbench-debug .local/cache/go-build .local/cache/go-mod

# 终端一:后端
cd backend
CANVAS_BACKEND_ADDR=127.0.0.1:8080 \
CANVAS_BACKEND_DATA_DIR=../.local/project-workbench-debug \
GOCACHE=../.local/cache/go-build \
GOMODCACHE=../.local/cache/go-mod \
go run ./cmd/server

# 终端二:前端
cd ../web
bun install --frozen-lockfile
bun run dev

打开 http://localhost:3000,首次使用注册管理员账号,并在设置中配置模型渠道。前端默认把 /api 代理到 http://127.0.0.1:8080。Windows PowerShell 用户可以在仓库根目录执行 .\scripts\start-local.ps1。

Linux 云服务器走源码构建脚本,会安装 Docker、拉取源码、生成受保护的 .env,再启动 PostgreSQL、Redis、后端和网页,默认访问 http://服务器IP:3000:

curl -fsSL https://raw.githubusercontent.com/ddcat-ai/open-ai-canvas/main/scripts/install-server.sh | sudo bash

关键参数

  • CANVAS_BACKEND_ADDR、CANVAS_BACKEND_DATA_DIR:后端监听地址与数据目录,本地开发时指向 .local/project-workbench-debug。
  • VITE_API_PROXY_TARGET:前端开发服务器的 API 代理目标,默认 http://127.0.0.1:8080。
  • CANVAS_WEB_HOST_PORT、CANVAS_BACKEND_HOST_PORT:覆盖默认的前端 3000 与后端 8080 端口。
  • CANVAS_REGISTRATION_ENABLED:公网部署应保持 false,首次管理员注册要在受控网络完成。
  • CANVAS_CORS_ORIGINS:设置准确来源,公网不要用 *。
  • CANVAS_ALLOWED_PRIVATE_UPSTREAM_HOSTS:精确放行可信的私网模型地址,后端默认拒绝本机、私网与链路本地地址。
  • YINGCE_AGENT_URL:配置后画布 Agent 只走独立的 yingce-agent 容器。
  • CANVAS_IMAGE_TAG、CANVAS_BACKEND_IMAGE、CANVAS_WEB_IMAGE:镜像部署与 Compose 用的标签和镜像地址。

结果在哪里看

生成任务的进度与日志在画布的任务中心,失败的任务可以取消或重试。生成的图片、视频与音频落在素材库,删除前会做引用校验。成片由时间线走服务端导出,字幕转写也在这一环节。用量、积分、用户筛选和 Agent 服务健康状态在管理后台查看,系统性能页展示进行中与排队的 Agent 数量。画布本身的预演缩略图会显示在卡片上,白膜 MP4 从 3D 预演台导出。

实际使用中的坑

  • 演示站曾被用户投诉充了钱之后 Agent 根本没法用,节点工具创建失败或任务执行不下去。这条 Issue 已解决,但反馈本身说明线上环境的生成链路依赖渠道配置与计费状态,自建时先跑通一条最小链路再放量。
  • 渲染性能有过两处具体问题:Safari 下无限画布拖动卡顿,以及 Windows 11 的 1080 分辨率下分镜放大后文字模糊。两条都已解决。
  • 大模型定价模式仍有待优化。用户提出 Seedance 视频生成需要区分含视频输入和不含视频输入两种计价,DeepSeek 还分高峰期与非高峰期计价,当前实现覆盖不了这些情况,这条 Issue 状态为待解决。
  • 升级路径上出现过一次 Compose 校验失败:从 v1.5.8.x 在线更新时缺少 CANVAS_YINGCE_AGENT_IMAGE。v1.5.9.1 已修复,v1.5.8.x 的服务器直接在线更新到 v1.5.9.1 即可,不需要手动改配置。

和同类的差别在哪

影策处在「无限画布」和「影视生产工作流」的交叉位置,所以对比对象分成两类:一类是只做画布本体的项目,一类是围绕它的 Agent 技能生态。下面三行里,只有第一行是影策自己。

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
open-ai-canvas想在自有服务器上跑短剧或影视前期生产、需要把剧本到分镜到素材串成一条链的个人与团队Docker Compose,用 install-server.sh 源码构建或 install-server-image.sh 拉 GHCR 镜像;本地开发用 Bun 加 Go 1.25,SQLite 起步README 明确标注项目仍在快速开发,数据结构和外部接口可能调整;未经安全配置不要直接当公网多人服务用需求集中在剧本、分镜、画布编排与多模态生成任务的统一调度上open-ai-canvas
basketikun/infinite-canvas只想拿一块通用无限画布做节点编排、不需要影视工作流的开发者仓库没有说明它提供的是画布本体,影策的剧本、角色、场景、结构化分镜、任务队列、渠道与计费都不在其中你要的是画布基础能力,业务层准备自己往上搭basketikun/infinite-canvas
judian-skills已经装好影策、想给画布 Agent 补场景化技能包的用户在影策技能页按 GitHub 方式安装,仓库没有说明独立部署方式它是 Agent 技能与协议层的内容,不提供画布、渲染或生成后端,和影策要解决的问题不在同一层你不想换工作台,只想扩展 Agent 在剧本结构等场景上的技能覆盖judian-skills

影策不如上游项目的地方在体量。仓库体积 294144 KB,正式部署要同时起 PostgreSQL、Redis、后端和网页,还要配管理员、系统渠道和逻辑模型。你只要一块画布,用 basketikun/infinite-canvas 更省事,没有账号体系、渠道配置和数据库迁移这些负担,代价是影视工作流和任务系统得自己写。反过来,如果项目本身就需要角色库、分镜和生成任务的统一管理,从上游起步意味着重复实现影策已经做完的那一层。

合规前提

影策本身不是扫描或抓取工具,它的合规风险集中在部署与素材来源上。自建实例只应服务自有团队或已获授权的用户,首次管理员注册在受控网络完成,公网保持 CANVAS_REGISTRATION_ENABLED=false,后端 8080 端口留在 Compose 网络内,不要直接暴露。接入的第三方模型渠道要有合法授权,用户的 API Key 不应出现在 URL、日志、错误上报或服务端长期明文存储中。上传的剧本、参考图和生成素材要确认版权与肖像授权,把未经许可的素材喂进生成流程,或者拿生成内容去做未经授权的商业发行,风险由部署方承担。

影策适合已经有明确短剧或影视项目、愿意自己维护一台服务器和一整套渠道配置的团队,也适合想拿它做二次开发底座的人。只想试一次图片生成、不想碰数据库和模型渠道的读者,用现成的在线服务更合适。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.3 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)10.0 / 10
社区响应(权重 15%)5.3 / 10
文档质量(权重 15%)9.9 / 10
发布节奏(权重 10%)10.0 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

把剧本、角色、分镜、生成任务与时间线剪辑收进同一画布和任务系统的开源工作台,附了部署命令、环境变量和已解决问题的 Issue 线索,可以据此判断它是否值得自建。适合已经有明确短剧或影视项目、愿意自己维护服务器与模型渠道的团队,只想试一次图片生成的人不必。项目自述仍在快速开发,数据结构与外部接口可能调整;

仓库体积、语言占比、许可证、评分维度等数据来自原作者与焚.com 的公开披露,诀.com 未独立验证;部署命令、环境变量与脚本说明取自项目 README,本站未在真实环境执行,结果不保证复现。

项目来源与说明

开源项目:ddcat-ai(ddcat-ai)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库