# 模型执行与交付

> **触发**：用户确认画布分镜后，读取最终分镜并开始生成。

本文件只负责把已确认的创意编译到当前模型、维护跨 clip 一致性、处理声音并把结果交到画布。不要在这里重新设计 Hook、人设或口播。

## 1. 编译边界

用户确认的分镜与 `script-and-shots.md` 定义 Prompt 内容。模型适配只根据当前能力摘要选择可用的模型路线、参考素材和时长，不增加、删除或重排镜头、动作、人物、场景、台词与声音设计。

能力说明只用于判断可执行范围，不是创意来源；不要读取私有实现资料。

当前模型无法执行已确认方案时返回上游调整，不在生成阶段静默改变内容。超过单次时长上限时拆成多个可执行 clip，精确累加到用户确认时长。能力变化只更新能力摘要，不回写本 Skill。

## 2. 生成前 refs 检查

所选模型路线必须能承载分镜需要的已声明人物、角色、产品、场景与跨 clip 连续性。参考素材类型、数量和顺序按当前能力摘要选择；通用图片参考、首尾帧、视频续写等能力不能互相代用。用户指定的模型无法承载已确认方案时，在生成前说明差异并征得换模型或调整方案的确认。

同一条视频持续使用已确认的角色资产与产品事实。角色资产的身份锚只负责对应身份、稳定造型和拍摄质感；当前场景、拍摄者关系、人物动作和起始状态由本 clip 的分镜建立。只服务某个动作的交互图或场景首帧只用于对应 clip。其它 ref 只在承担明确职责时加入，避免长期身份 ref 把后续片段拉回同一背景、姿势和产品关系，也避免一组素材传递相互冲突的身份、场景或结构。

多视角、三视图和 sheet 仅在所选模式允许且职责明确时作为结构参考，不把参考板布局带入成片。产品原图负责产品事实，不用生成锚替代原图证明结构或尺寸。

生成前再次检查：

- 每个角色资产和具体产品都有可用 ref；需要人物锚时已确认；每个 clip 的 refs 与分镜引用的角色资产一一对应；穿戴类没有第二个不同真人锚。
- 每张 ref 都有身份、产品事实、交互关系或当前关键帧中的明确职责；当前 clip 的起始状态和主要动作来自确认分镜，不由普通 reference 的构图或姿态代替。
- 本条开场在 0–3 秒可见，后续动作或观察承接它，且产品主张有对应的可见证明。
- 分镜说话人与 prompt 指代一致。
- 每段人声与 speech plan 的 `speaker`、`source` 和 `voice_identity` 一致；画外旁白明确为不出镜的叙述，画面人物不说该段台词或对口型。
- 同一 `voice_identity` 的 `voice_signature` 在所有相关 clip prompt 中逐字一致；不同说话人的可听见区分不得在编译时丢失。
- 每句逐字口播只出现一次，clip 边界不截断句子或动作。
- 每张 ref 的职责与 prompt 描述一致。

## 3. 视频生成

每个 clip 只使用 `script-and-shots.md` 已确认的画面、动作、逐字台词、speech plan 和声音。保持同一 `voice_identity` 的 Voice Lock 逐字一致，并让当前能力摘要决定可用模型路线、参考素材、时长、画幅、分辨率和声音设置。文件命名沿用 `KOC-{方案}-clip-{NN}-{秒数}s.mp4`；单片可用 `KOC-{方案}-{秒数}s.mp4`。

一个 clip 可以是一条连续镜头，也可以包含有理由的切镜。不要把分镜表每一行机械翻译成一次切镜。多 clip 可以改变场景，但角色资产、产品和叙事关系必须继续；新场景不能只是复制人物锚背景。

## 4. 声音

口播与环境声默认随视频模型 native 直出，逐字台词和场景声音写入 video prompt，不创建 standalone TTS。只有用户明确要求外部旁白 / 替换音轨，或当前模型不支持可用 native speech 时才切换方案；默认不走 lip-sync。

Native speech 的逐字要求是生成约束，不代表成片必然逐字准确。用户把口型或逐字准确作为硬要求时，生成前说明模型边界；没有试听或转写核验时，不宣称已经逐字验证。

speech plan 不创建新的配音资产或默认切换到 TTS；它只把 native speech 的发言归属、镜头内/外来源和声音连续性编译成可执行 prompt。若当前模型不能可靠区分同一 clip 中计划出现的多个原生说话人，回到上游把该段拆成可独立生成的发言单元，或向用户说明当前能力边界；不得静默把不同角色压成同一声音。

BGM 必须做一次内部判断，但不因时长自动添加：

- 能明确承担开场节奏、情绪或跨 clip 连续性，且不削弱口播和现场声时加入。
- 口播、现场声或有意静默已经形成完整声音设计，或找不到贴合方向时不加。
- 使用时只生成一条贯穿全片的音乐，风格、能量和节奏跟随人物、场景与剪辑；口播主导时优先无人声音乐。
- 后期以固定低音量混入，不做 ducking、音量自动化或人声 / 总轨 fade-out。遮挡口播时降低整条音乐、换音乐或去掉。

用户确认版只写最终听感，例如“轻快音乐轻轻铺底，不盖住口播”，不展示混音术语和内部禁令。

字幕默认不加。用户明确需要字幕时再生成并烧录。Hook 依赖准确评论、价格或短文案时，只制作已确认的文字 overlay；这不自动开启全片字幕。

## 5. 多 clip 与终剪

各 clip 可以并行生成，但必须使用确认后的各自 prompt，并按所选模式维持同一人物与产品。生成完成后用 media assembly 按画布分镜顺序拼接：

- 同一动作或相近场景按内容节奏直接切换。
- 跨时间或场景时使用与内容相符的过渡，不默认黑场。
- 片头第一帧已有内容；片尾不截断口播或动作。
- 使用 BGM 时只在终剪混入一条完整音乐。

跨 clip 的承接方式由当前模式决定：无续写能力时从稳定起点独立生成并在剪辑中承接；支持视频续写或首尾帧控制时按能力摘要选择对应输入。无论采用哪种方式，都不改变已确认的叙事、动作和台词。

## 6. 画布与交付

| 产物 | 画布方式 |
|---|---|
| 分镜表 | writing to canvas text node |
| 人物 / 产品 / 试穿锚 | 图像生成返回的 image node，或用户上传图 |
| 视频 clip | video generation 返回的 video node |
| BGM | music generation 返回的 audio node |
| 拼接、文字叠加或字幕成片 | path-only 文件用 writing to canvas 写入 video node |

生成结果落到画布后即作为交付凭证。数量由用户确认的方案决定：默认一个开场生成一条视频，不为显得丰富而复制相似成片。

交付时只报告成片与可用资产，不复述 prompt、模型参数和内部检查过程。

## 7. 失败处理

- 内容安全拦截：改写表达，不改变已确认创意。
- 物理关系崩坏：保留完整使用动作链，把复杂中间变化拆成可独立生成的 coverage，并从稳定起点或动作完成后的状态重试。
- 台词截断：缩短台词或调整 clip 边界，更新分镜并重新确认。
- 同 model 失败：先换更清楚的 prompt；连续失败后再按现有授权纪律考虑换模型。
- 画布写入失败：重试一次，仍失败则明确告知用户。

人物身份漂移时，回到角色资产表、该 clip 的 refs 和 prompt 映射重新编译；不要在失败 prompt 尾部继续叠加禁令。其它失败回到产生问题的阶段修正。

## 完成条件

- 参数符合当前 capability summary。
- 每个 clip 的 refs、已声明主体、指代、逐字台词和 speech plan 一致；同一声音身份的 Voice Lock 没有漂移。
- 成片没有句子被切断或重复，片头和片尾完整。
- BGM、字幕和准确文字按已确认策略执行。
- 用户能在画布找到锚图、分镜、视频 clip 与最终成片。
