本专题手工维护。快照 2026-10-12。
★ 本文属 《视频创作导演台》 卷(2026-10-12 从「创作者画布」卷移入 ✓);同卷另有
《快速开始》《导演台的组成与设计思路》《自主成片:dir 指令体系》《门链与批阅》4 篇 ✓
⚠ 蓝图规范正文以 uc_do_gain_blueprint_spec() 现查为准(它带字段表、枚举、默认映射与样例);
本文讲清结构与关系(为什么不漂的部分)+调度与校验链。
1. 两种"计划"其实是同一份数据
| 形态 | 在哪里 | 谁写 |
| 导演台计划 | 画布 canvasGlobals.director | uc_do_write_canvas_globals(人界面改也算) |
| 蓝图文件 | 工作空间里的 .json(人可读、可版本化) | uc_do_save_blueprint / uc_do_author_blueprint |
- 画布 → 文件:
uc_do_save_blueprint(canvasId?, file?)
- 文件 → 画布:
uc_do_load_blueprint(file?, canvasId?)
- ⇒ 同一套字段(assets / shots / engines / ui / title / origin / planId)
2. 蓝图顶层形状(两种都接受)
// 形状 A:直列
{ "version": 1, "title": "…", "assets": [], "shots": [], "engines": [], "ui": {} }
// 形状 B:包一层(便于和别的元数据放一起)
{ "director": { "version": 1, "title": "…", "assets": [], "shots": [], "engines": [], "ui": {} } }
assets / shots / engines 必填(可以是空数组,但要有)
title / ui / origin / planId 可选
3. 三张表:字段 · 枚举 · 必填
3.1 assets[](素材)
| 字段 | 必填 | 说明 |
id | ✓ | 资产 id(引擎/界面引用用) |
name | ✓ | 全局唯一(分镜 refs 按 name 引用它) |
cat | ✓ | character / scene / prop / npc / audio / video / text |
kind | ✓ | image / video / audio / text / '' |
note | | 备注(给人看) |
url / fileName / text | | 素材来源(文件/链接/纯文本) |
states · also · rev 等 | | 状态/别名/版本等(进阶,按需) |
3.2 shots[](分镜)
| 字段 | 必填 | 说明 |
id | ✓ | 分镜 id(唯一) |
no | ✓ | 镜号(唯一;引擎按它升序执行) |
name / title | | 分镜名 |
words | | 台词(走对白模板时必须填进提示词,见 04-…) |
dur | | 时长(秒)⇒ 要声明,别让引擎猜 |
refs / refImgs | | 引用的资产 name 列表 ⇒ 必须都已存在 |
prompts? | | 逐镜提示词(也可放引擎侧) |
3.3 engines[](引擎)
| 字段 | 必填 | 说明 |
id | ✓ | 引擎 id |
kind | ✓ | ⚠ 导演台只开放海螺系:hailuo-gen(图文生视频)/ hailuo-ref(参考生视频)—— 新建只能二选一 ✓;另有 talking / ltx-gen / ltx-sef / ltx-msr / custom-api 在规范枚举里(校验器认得),但它们属画布侧(引擎由用户自定义)⇒ 导演台不开放(见 §4 ✓) |
shots | ✓ | 负责哪些分镜:id / no / "*"(全部) |
prompts? | | 逐镜提示词:{ [shotId]: "…" } |
params? | | 模板参数(⚠ 取值以模板定义现查为准;导演台有默认骨架) |
customPreset? | | custom-api 用:自定义 API 预设 |
done / doneAt / doneSummary | | 执行状态(跑完回填,一般不用手写) |
3.4 ui?
assetOpen / shotOpen / engOpen(三列是否展开)⇒ 纯界面状态,可不写 ✓
4. 引擎 kind ⇄ 模板 / 角色
⚠ 导演台刻意只开放海螺系(收窄复杂度) —— 新建引擎只能在「海螺图文生视频」与「海螺参考生视频」之间
二选一(人界面与 dir.engine.add 同口径;自主 AI 更是全程只许这两支 ✓)。
这是设计选择,不是"暂时没支持":导演台要的是一条顺到底的成片链 ⇒ 引擎越少越不容易走偏 ✓
下表其余 kind 是规范里的枚举(校验器认得)—— 它们属于画布侧(引擎由用户自定义)⇒ 导演台不开放 ✗
| kind | 模板 | 对应角色(媒体节点) | 导演台 |
hailuo-gen | minimax.h3.t2i | video-gen | ✓ 开放(新建二选一) |
hailuo-ref | minimax.h3.ref | video-ref | ✓ 开放(新建二选一) |
talking | ltx.i2v | talking | ✗ 不开放(画布侧可自用) |
ltx-gen | ltx.i2v | ltx-gen | ✗ 不开放(画布侧可自用) |
ltx-sef | ltx2.3.sef | ltx-sef | ✗ 不开放(画布侧可自用) |
ltx-msr | ltx.msr | ltx-msr | ✗ 不开放(画布侧可自用) |
custom-api | custom.provider.custom | custom-api | ✗ 不开放(画布侧可自用;自主模式直接禁) |
现查:uc_do_gain_blueprint_spec()(含 kindTemplateDefaults / kindMediaRoleDefaults)· uc_do_gain_engine_manifest(kind)
5. 调度规则(跑起来之后长什么样)
- 产物标签:
<项目标题>-S<镜号>(如 古宅-S3)⇒ 便于在产出区/资产库辨认 ✓
- 产物文件名:优先
params.filename;留空则按上述标签自动命名
- 执行顺序:同一引擎内按镜号升序串行(不是并行 ✗)⇒ 镜号别乱跳
- 人机协同:
video-edit / poster-design 这类节点沙箱不能跑 ⇒ 交给人在界面完成
6. 校验链(三步走,一步都别省)
① uc_do_validate_blueprint(blueprint) 结构校验:字段/枚举/唯一性/引用是否存在
② uc_do_preflight_engine(…) 逐镜 dry-run 预检:提示词硬规则 + 资产契约 + 能力边界
③ uc_do_director_run(…) 一键执行(内含预检硬门;预检不过会被拦住 ✗)
| 步 | 拦什么 |
| ① 校验 | asset name 唯一、cat/kind 合法;shot id/no 唯一;refs 指向存在的资产;engine kind 合法、shots 指向存在的分镜;海螺提示词段数结构(hailuo-ref 六段 / hailuo-gen 三段) |
| ② 预检 | 逐镜三条闸门(提示词 / 资产契约 / 能力边界)⇒ 逻辑见 《创作者画布》卷的"预检前置"一节(⚠ 规则明细以预检工具返回为准);每条 finding 带依据与修法 |
| ③ 执行 | 预检 errorCount > 0 或有 blocked 镜 ⇒ 直接拦下,先修再跑 ✓ |
工作流建议:先 ② 拿修法建议 → 改提示词/资产 → 再 ② → 全绿才 ③(比"跑了再说"快得多 ✓)
7. 与画布的互操作
| 动作 | 工具 |
| 读计划/全局 | uc_do_gain_canvas_globals(canvasId?) |
写计划(完整 director 对象) | uc_do_write_canvas_globals({ director: {...} }, canvasId?) |
| 计划 → 蓝图文件 | uc_do_save_blueprint(canvasId?, file?) |
| 蓝图文件 → 画布 | uc_do_load_blueprint(file?, canvasId?) |
| 创作向导(自动搭骨架) | uc_do_author_blueprint(…) · uc_do_author_blueprint_resources(…)(补齐未装载资产) |
| 导演项目共享文件(大纲/故事/剧本/资产/台账) | uc_do_gain_project_file(…) |
8. 最小可用骨架(抄这个改,比空白起手快 ✓)
{
"version": 1,
"title": "古宅",
"assets": [
{ "id": "a1", "name": "女主", "cat": "character", "kind": "image", "note": "三视图" },
{ "id": "a2", "name": "古宅门厅", "cat": "scene", "kind": "image" }
],
"shots": [
{ "id": "s1", "no": 1, "name": "推门", "dur": 5, "words": "", "refs": ["女主", "古宅门厅"] }
],
"engines": [
{ "id": "e1", "kind": "hailuo-ref", "shots": [1], "prompts": { "s1": "…六段式提示词…" } }
],
"ui": { "assetOpen": true, "shotOpen": true, "engOpen": true }
}
检查点:refs 里的名字都在 assets.name 里 ✓;engines[].shots 的镜号在 shots[].no 里 ✓;
提示词按该 kind 的段数结构写(海螺 hailuo-ref 六段 / hailuo-gen 三段)✓;
dur 已声明 ✓;画幅/分辨率不与素材冲突 ✓(详见 04-…)。