跨镜一致性方法论 (Consistency Engineering)
SkillMediaA methodology for tackling the three chronic problems of AI video: same character changing faces, same props changing form, and same scenes changing look across shots — covering five-dimension consistency checks, reference-image anchoring, in-scene state tables, and inter-segment continuity. Use as
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the 跨镜一致性方法论 (Consistency Engineering) skill
What this skill tells your AI
The instructions your AI receives, as published by aqm857886159/nomi in skills/director-consistency/SKILL.md and read by ahel’s review.
AI 视频生成的头号敌人不是「画面不好看」,而是同一个人看起来不像同一个人。多镜头、多段的片子若不解决一致性,观众看两三镜就出戏。本文不发明技术,而是把业界已验证的一致性手段整理成拆镜头与生成时的强制动作。
在 Nomi 里落地的方式:凡是「跨镜头要保持一致」的东西,都建成画布上的 anchor 节点(kind:character 角色 / scene 场景 / prop 道具 / style 风格)。视觉锚(carrier: visual)会先生成一张参考图锁住长相;文本锚(carrier: text)把特征词拼进每个引用它的镜头。镜头用 anchorIds 引用哪些锚,系统据此给视觉锚连参考边、把文本锚描述拼进 prompt。所以下文凡说「@引用某素材」,在 Nomi 里就是在该镜的 anchorIds 里点名那个 anchor,不是把提示词复制到外部工具。
一、一致性的五个维度
每个镜头产出前,逐维度自检——哪一维会漂移,就为它建/引用对应的锚:
| 维度 | 盯什么 | 失控表现 | 在 Nomi 的锚定手段 |
|---|---|---|---|
| 角色 | 脸、身材、发型、肤色、瞳色 | 换脸、身高忽高忽低 | character 视觉锚(参考图含面部特写 + 三视图)+ 镜头 anchorIds 引用 |
| 服化 | 服装版型、配色、质地、饰品、武器 | 同场戏换衣、纽扣数变化 | 视觉锚定妆图锁版型 + 文本锚补服装色卡/关键细节词 |
| 道具 | 关键道具的造型、材质、铭文 | 道具外形每镜不同、设备换型 | prop 视觉锚(多角度 + 材质特写 + 比例参照)+ anchorIds 引用 |
| 场景 | 空间布局、光源位置、装饰细节 | 同一房间家具搬家、窗户消失 | scene 视觉锚(空场景全景 + 光位)+ 镜头复述主光方向 |
| 时序 | 同场戏内动作连续性、伤痕、服装残损 | 上一镜干净下一镜染血(或反之) | 场内状态表(见 §三),锚管不了「同一场内的状态推进」 |
前四维靠锚(跨镜「这一个特定实例」保持不变),第五维靠状态表(同场景内状态只增不倒退)——两套机制互补,别混用。
二、三级锚定体系
一致性靠三层由强到弱的绑定,越靠上越硬:
Level 1 · 参考图锚定(源头)
主要角色、关键道具、固定场景都建成视觉锚,让系统先生成一张参考图作为「唯一真相」。参考图质量直接决定后面所有镜头的下限,所以定妆/定景描述要中性、干净:
- 角色:
面部特写 + 全身三视图(正/侧/背) + 干净背景,全身中性站姿、不带剧情动作、光影不过强。 - 道具:
多角度(至少 3 个视角) + 材质特写 + 比例参照(放一只手或常见物体作尺度)。 - 场景:
空场景全景 + 关键光位,不带人物、不带剧情。
一元素一锚,不要合成:人物、场景、道具各自独立建锚、各自独立参考图,绝不把人物和场景塞进同一张参考图——合成会同时拉低场景和人物的 identity 精度。这正是 Nomi「每个跨镜元素一个 anchor 节点」的设计初衷:系统会把多张参考图分别喂给生成,不需要、也不要你手动拼成一张。
Level 2 · anchor 引用(镜头层)
镜头只引用锚,不在 prompt 里重描锚的静态外貌。外貌交给参考图/文本锚,镜头 prompt 只写这一镜独有的运镜与动作:
- 良例:
anchorIds: [角色A, 指挥舱];prompt =「角色A背部直挺,右手食指缓慢从面板抬起后放下」。 - 劣例:不引用锚,prompt 里从头描述「一个穿制服的男人在飞船舱桥中……」→ 每镜重描 = 每镜重掷骰子 = 必漂移。
硬规则:出现在某镜里的每个角色 / 所在场景 / 用到的道具 / 整片风格,都要列进这一镜的 anchorIds;只出现一次的一次性元素(群演、路过的物件)不建锚,直接写进那一镜 prompt。
Level 3 · 段间承接(handoff)
段与段之间(一场戏拆成多个连续镜头,或一整段接下一段)的视觉连续性,靠首尾帧承接:上一镜的尾帧状态(角色位置/朝向/姿态/环境/光位)明确传给下一镜的起点。Nomi 里对应「用上一镜产物做下一镜的首帧(first_frame)」或在下一镜 prompt 里显式承接尾帧状态。承接分三级:
| 级别 | 何时用 | 怎么接 |
|---|---|---|
| L1 强锚定(同场景跨镜) | 尾帧和下一镜起点必须严格一致 | 下一镜用上一镜尾帧做首帧,或 prompt 明确承接「角色位置/朝向/姿态/环境」 |
| L2 软锚定(换场景但情绪连续) | 位置不必对齐,但色调/光位/角色朝向要匹配 | 下一镜 prompt 保持「同色调 + 同主光方向 + 朝向匹配」 |
| L3 硬切(叙事跳转/时间跳跃/蒙太奇) | 视觉不需连续 | 下一镜独立起帧,连续性交后期剪辑 |
判断口诀:同一场戏内的相邻镜头默认 L1(拆条只为绕过单条时长上限,画面本应无缝);换地点但情绪不断用 L2;闪回/跳时间/蒙太奇用 L3。
三、场内状态表 (State Table)
同一场戏内的连续性问题(染血、服装残损、伤痕、手持道具的有无)靠状态表管理——它管的是「同一场景里随剧情推进的状态变化」,是锚管不到的那一维。编写多镜头场戏前,先列一张表把每镜的关键状态钉死:
## 指挥舱对峙 · 状态表
| 镜号 | 角色A 状态 | 角色B 状态 | 关键道具 |
|------|--------------------|------------------|-------------|
| 镜12 | 制服整洁 | 站立,面无表情 | 控制台完好 |
| 镜13 | 制服整洁 | 身体微倾,瞳孔收缩| 控制台完好 |
| 镜14 | 右颊划伤 | 后退一步 | 控制台裂纹 |
| 镜15 | 右颊划伤 + 衣领扯开 | 倒地 | 控制台裂纹 |
硬规则(状态只进不退):一旦某镜出现血 / 伤 / 衣破 / 湿身,后续所有同场镜头的 prompt 必须继承该状态,直到场景结束或剧本明确有清洗/换装动作。倒回「干净」= 穿帮。
四、段与段的承接检查
一段接下一段(尤其角色/道具/场景跨段复用)时,过一遍承接:
- 末状态对齐:下一段首镜的角色状态(伤痕/服装/情绪残留)要接上一段末镜的状态,除非剧情明确跳了时间。
- 道具延续:跨段出现的同一道具(飞船、关键物件)复用同一个 anchor,不要为它重新建锚、重新生成参考图。
- 场景复用:跨段复用的场景沿用原来那个
scene锚,不重新生成参考图——重生成 = 家具搬家。 - 重大外观变化才拆锚:只有「少年↔成年 / 伤前↔伤后 / 彻底换装」这种认不出是同一个的变化,才把同一角色拆成两个锚并在
description写清差异;普通情绪/小动作变化不拆锚。
五、常见一致性陷阱与规避
这些是 AI 生成的系统性弱点,属硬约束——重掷骰子基本无用,必须靠「换画面结构」绕过,别指望多抽几次能好:
| 陷阱 | 典型表现 | 规避 |
|---|---|---|
| 群演脸 | 同一群演相邻镜头脸变了 | 群演/一次性配角不建锚,用去个性化描述(戴头盔/背影/远景),避免特写 |
| 手部 | AI 普遍画不好手,多指/缺指 | 握物/操作镜头避免手部特写;非给不可时用参考图明确指法 |
| 文字/铭文 | 招牌字、飞船编号、徽章文字反复变且乱码 | prompt 不写要渲染的文字;用图形符号代替字母,片名/字幕一律后期叠 |
| 比例漂移 | 同一物体(飞船/建筑)尺寸在不同镜头不一致 | 与参照物同框(人、标准箱体),禁止纯空镜比例;关键道具用比例参照建锚 |
| 光位变异 | 同场戏光源方向乱跳 | 场景锚参考图标注光位,每一镜 prompt 复述主光方向 |
| 口型对白 | 正脸对白口型对不上 | 侧脸 / 画外音 / 不露正脸,配音交后期 |
六、拆镜头 / 审镜头时的一致性核对清单
拆完镜头、或复核一份分镜方案时,逐条打勾:
- 出现在某镜里的角色 / 场景 / 道具 / 全片风格,是否都进了这一镜的
anchorIds?(漏引用 = 漏锚 = 会漂) - 镜头 prompt 里有没有重复描述锚的静态外貌?(应交参考图/文本锚,prompt 只写运镜+动作)
- 同一个人是否只建了一个角色锚?(别名/职称/「他」都归并成一个,别一人两锚)
- 同场戏内的状态(伤/血/衣破/湿身)是否与状态表一致、只进不退?
- 相邻/跨段镜头的承接级别(L1/L2/L3)是否想清楚,L1 是否用尾帧做了首帧或 prompt 承接?
- 有没有踩 §五 的硬约束(手部/文字/比例/光位/口型),并已用画面结构规避?
任一未满足就回去改——一致性是拆镜头阶段一次性想清楚的事,等生成出来才发现漂移,返工成本高得多。
Signals
- GitHub stars
- 507
- Forks
- 109
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
director-consistency- Source
- github.com/aqm857886159/nomi