# 可验证性

底层只有一条规则：**在成片上检查不了的指令，出问题时也调不了。** 把意图改写成可观察的结果。

这不是要你写得更啰嗦。可观察的写法通常**比它替换掉的形容词堆更短**，因为它承诺了一种读法，而不是在几种之间含糊。

## 末态

全套方法里杠杆最大的一条。不要要求「保持一致」，直接写这一段结束时**可见的**状态。

```text
弱：  两个人继续弄那束花
强：  末态：花艺师左手持花束；剪刀回到工作台右侧
```

末态必须**看得见**。「她感到释然」不是末态；「她的肩膀落下、皱起的眉松开」是。

### 同一件事的三种形态

末态不只是文字手法，每种输入模态都有它的对应形式，而且可以组合：

| 形态 | 载体 | 什么时候用 |
|---|---|---|
| 分段末态 | 文字 | 默认。多事件片子 |
| 关键帧序列 | 图像——每张图**就是**某一段的末态 | 你能画出或生成这些阶段 |
| 边界帧 | 视频——源片与延长段的接缝 | 延长或续写已有素材 |

关键帧序列要**明写顺序**，每张图一个角色：

```text
按顺序使用 @image1 到 @image4 作为关键帧。
@image1 是首帧：<开场构图与主体状态>。
@image2 是第二个关键帧：<第一段的可见末态>。
@image3 是第三个关键帧：<第二段的可见末态>。
@image4 是尾帧：<收束构图与主体状态>。
视频按顺序经过这些状态，各段之间用连续动作过渡。
```

分开的图比几段拼进一张网格更容易对齐。关键帧控的是**阶段顺序与关键状态**，不是逐帧复刻。

### 延长的边界要写在正确的一侧

**向前延长**（接在源片之后）：先写源片**尾帧**的延续状态，再写接下来发生什么。

**向后延长**（接在源片之前）：先写新内容，再把源片的**首帧写成你正在生成这一段的明确末态**。只写「然后接上源视频」是已知的翻车写法——它会让后段才出现的角色和效果提前露面，或者画面到达目标状态之后继续变。

还要写明什么**不许提前出现**：`属于源片开始之后的素材，不得在向后延长段中提前出现`。

## 情绪要落到可观察线索

情绪词只给方向，表演层面是敞开的。把它钉住：

```text
弱：  她不愿意让他走
强：  她的视线从他脸上移开，落到他身旁的空处；眼睑垂下；
      嘴角短暂上扬又落回；胸口起伏一次，被压住
```

**一次情绪转折，2–4 个线索就够。** 把每个面部细节都列出来不会增加控制力，线索之间会互相打架。可选：视线方向与移动、眉的张力、嘴部动作、呼吸、喉部、手、体态。

多次转折时，用**事件**触发而不是时间点：

```text
当<第一个事件>发生，<第一个可观察反应>。
当<第二个事件>发生，<视线、呼吸或表情的变化>。
在确认<关键信息>之后，<主体>一直压着的情绪通过<可观察行为>显露出来。
```

事件触发比时间触发更能跨模型存活，因为它不依赖时序遵循度。

## 挑那条真正承载概念的属性

让一行字变得可检查是必要的，但不够。**一条锁可以被完全满足、同时完全失效。**

实例。一条手绘 VFX 片子需要它的手绘层保持手绘感，于是锁写成：

```text
手绘形体保持平面图形，绝不渲染成写实生物
```

可检查、毫不含糊，而且**两个不同的模型都严格照做了**——给出的是光滑的矢量霓虹描边加均匀填充。平面？是的。手绘？完全不是。锁测的是**平面性**，但真正让这个概念成立的属性是**看得见工具痕迹**。改成命名工具就对了：

```text
蜡笔、粉笔、彩铅、粗笔刷；看得见排线方向、涂色不均、毛边
```

信任一条锁之前先问：**模型能不能满足这句话、同时把我要的东西丢掉？** 能，那这条锁瞄的是副作用而不是成因。

这类失败有明显特征：**输出逐条对得上 spec，但懂参考的人一眼就知道不对。** 遇到这种别加更多锁，去找那条真正承载概念的属性，用具体的词命名它。

## 写明机制，不只写效果

一个主观效果通常有不止一条物理实现路径。只写效果，模型会自己挑一条——往往不是你要的那条。

实例。末段需要一张巨大的手绘嘴显出压迫感。两个版本：

```text
A：张开的上下颚横跨整片天顶
B：头颅在大厅正中浮现，正面朝向摄影机，上下颚大张，獠牙从画面上下两侧逼近
```

B 听起来更凶，结果**更差**：手绘的嘴变成了写实立体头骨。删掉 `横跨整片天顶` 等于删掉画面里唯一的**尺度参照**，模型只能改走另一条通向压迫感的路——**体积**，而体积需要实体感，于是把整条片子依赖的平面手绘锁撞碎了。

同一个效果，两种机制：

| 想要的效果 | 机制 A | 机制 B |
|---|---|---|
| 压迫感 | **尺度**：占满画面／横跨某个已知结构 | **体积**：立体、朝你逼近 |
| 宏大 | 主体小 vs 已知参照物 | 广角、高机位 |
| 亲密 | 紧构图 | 浅景深、柔光 |
| 速度 | 运动模糊、物体掠过画面 | 镜头晃动、剪辑节奏 |

写效果词之前问：**这个效果有几种实现方式？** 超过一种、且其中一种会跟别处的锁冲突，就必须写明用哪一种。

**⚠️ 机制依赖的参照结构必须真的存在于场景里。** 同一句 `横跨整片天顶`，在模型给了圆形穹顶的场景里生效，在给了方形吊顶的场景里落空——它会自动切到次优路径。锚点要么写进全局场景设定，要么别指望它。

这类失败的特征很特别：**一条锁悄悄取消了另一条锁。** 片子满足了效果、违反了别处的约束，而那两行字面上毫无关系——尺度与体积那次，末段一句话的改写破掉了三段之后才写的质感规则。

## 用画面写，规格定义作保险

上面三节共有一个底层原因，值得直接说，因为它决定每一行字怎么措辞。

**模型的训练数据是被描述的画面，不是被规定的需求。** 读起来像镜头描述的句子能落地；读起来像规格书的句子，模型得先把它翻译成画面，而翻译过程就是出错的地方。

| 写成画面——能落地 | 写成规格——需要翻译 |
|---|---|
| `蜡笔、彩铅，看得见排线方向、毛边` | `保持平面图形质感` |
| `穹顶被画成一只巨大的手绘恐龙头颅轮廓` | `贴在穹顶上的平面图形，不是有体积的立体头骨` |
| `白色三角獠牙沿着穹顶边缘一排排展开` | `宽度横跨整片天顶，几乎和穹顶一样大` |
| `她的视线移开，落到他身旁的空处` | `传达出不情愿` |

左栏承载的是同一份信息，只是被装在**一个被描述的画面里**，模型直接读得懂。

### 但规格定义没有被禁止——它是保险

别把上面读成「永远不要写定义」。那个末段最强的版本**两者都用了**：

```text
穹顶被画成一只巨大的手绘恐龙头颅轮廓，张开的上下颚横跨整片天顶，白色三角獠牙
沿着穹顶边缘一排排展开。……嘴的线条保持蜡笔的毛边和逐帧抖动，始终是贴在穹顶上
画出来的平面图形，不是一个有体积的立体头骨。
```

画面把镜头立起来，规格定义钉住那条绝不能滑的属性。三种写法实测过：

| 写法 | 结果 |
|---|---|
| 只有规格定义，没有画面锚点 | 写实立体头骨——失败 |
| 规格定义为主，画面锚点缺失 | 对了，但话很长 |
| **画面先行，规格定义追加** | **所有版本里最好的质感** |

所以这是**优先顺序，不是排除**：**默认描述画面；当某个效果必须保住、且单靠描述可能被误读时，追加一句显式定义。**

### 一行字该不该留，只有一条判据

**这句话是加了一个新约束，还是在陈述已有约束的推论？** 只有后者是噪音。

```text
留：  骨架缝隙之间钻出好几只白色的小手绘恐龙
删：  ……衬得大骨架格外巨大
```

尺度对比是「小生物在大骨架上」的必然结果，写出来只增加长度、不增加约束。实测：删掉之后毫无变化——那几只小恐龙照样分布在肋骨、脚爪、地面。

**这就是为什么「越短越好」是错的总结。** 同一条片子里有三处恰恰是**因为写长了才成立**：按工具命名的媒介、救回某个模型质感的逐段复述、明写的「开放式展台、没有玻璃罩」。**噪音不是长度，噪音是重述。**

### 什么该留给模型

| 你自己定 | 留给模型 |
|---|---|
| 媒介、配色、尺度锚点、主体姿态、每段发生什么 | 宿主结构长什么形状、次要元素具体落在哪、在既定意图内怎么构图 |

指定实现细节会压掉让模型变好的先验。把化石展板写成「竖立的长方形」，效果**不如**不写形状——模型自己读成拱门形壁龛，跟建筑结构呼应得更好。跟「喂故事板网格不如纯文字 staging」是同一个机制：**交出「要什么」，别交「怎么做」。**

## 手艺术语：保留术语，追加描述

任何识别度不确定的术语——冷僻词、行业用法不统一的词、以电影／导演／平台风潮命名的词——都写两遍：

```text
<术语> + <目标主体> + <可见变化> + <前后景关系> + <方向或速度>
```

```text
rack focus：焦点从前景的叶片移到它身后的人。叶片转虚，人脸由虚转实。
bullet time：冻结球棒击中球的瞬间；镜头顺时针绕接触点环绕，碎屑悬在空中。
```

认识术语的模型走捷径，不认识的走描述。一份提示词通吃，这也是它优于维护逐模型词表的原因。

**通常可以不加限定的**：景别、基础运镜（推、拉、摇、跟、环绕、手持）、基础机位（低角度、俯拍、第一人称）。

**通常需要加描述的**：dolly zoom、bullet time、speed ramp、bounce ramp、rack focus、whip-pan 转场、match cut。

光圈、焦段、快门值可以写，但**说明想要的可见结果通常比单给数值更可控**。

## 参考素材：永远写两半

一条素材角色说明，不写"不许拿什么"就是不完整的：

```text
@image1 控角色的脸、发型和外套。不要用它的背景或构图。
@video1 控运动路径、走位和切点。不要用它的外观、材质或场景。
@audio1 控旁白的音色。不要继承它的房间声。
```

当参考视频已经准确定义了运动，**只写要继承哪些属性**。在文字里把同一段运动再描述一遍，会跟参考素材打架。

## 反模式

| 别写 | 为什么失败 | 改写成 |
|---|---|---|
| `保持一致` | 没有可检查的东西 | 可见的末态 |
| `电影感`、`高质量`、`杰作` | 没有视觉承诺 | 具体的光、配色、质感 |
| `她看起来很难过` | 表演没有约束 | 2–4 个可观察线索 |
| `@image1 到 @image4 分别定义四个角色` | 等于没说映射 | 一个主体一行绑定 |
| `做出史诗感` | 无法falsify | 尺度线索：画面里有什么，主体在它旁边有多小 |
| `完美唇形同步` | 不是指令 | 提供音频，写明说话人 |
| `不要坏手、不要伪影、不要模糊……` | 抄来的黑名单，跟这条片子无关 | 这条片子真正有的两三个风险 |
| `一秒内完成三个动作` | 不可能的节奏要求 | 每个动作各占一段 |

## 该诚实说明的限制

可验证的写法提高命中概率，但不会让生成变成确定性的。

- 时间戳分配的是**时间预算**，**不是**帧精确的剪辑点，动作可能落在边界前后
- 边界帧在视觉上衔接，不是逐像素的剪辑拼接
- 多素材创作是为每个时刻**选对素材并组合**，不是让每份素材同时出现
- 必须完全准确的内容——字幕、公式、招牌、产品规格、帧级时序——应当来自准备好的素材加后期，而不是提示词文字

## 关联

- [spec-format.zh-CN.md](spec-format.zh-CN.md) — 每一行该放在哪个桶
- [portability.zh-CN.md](portability.zh-CN.md) — 哪些写法能跨模型存活
- [checklist.zh-CN.md](checklist.zh-CN.md) — 提交前检查
