KMC · kais-movie-pipeline · P09 → P11 prep

三种 iframe_mode,
没有一种是 P09 选的。

P09 写作层只生产原料——帧描述与转场设计;mode 是 gen_iframes 从原料里确定性推导出来的结果。 决策权分布在四处:LLM 写什么(创作判断),代码判什么(工程判断),中间没有任何人显式地说「这个镜头用 chained」。

derive_frame_chain() · gen_iframes.py:79  /  三值: paired | chained | single_ref

PAIRED
LAST
✂
FST
独立镜头
首尾帧各自生成,两端都是 dreamina 的火
CHAINED
FST
连续镜头
前镜尾帧 = 本镜首帧,像素级拷贝焊死接缝
SINGLE_REF
—
✂
—
无条件帧
槽位空置,靠 ref2va + prompt 级锚定兜底
REEL 01

决策权分布

谁真正做了决定,谁只是提供了原料。四个工位,两种颜色:琥珀 = LLM 创作判断,青 = 确定性代码。

P09 · 写作层
LLM 写 shot-list
delegate · 创作判断
  • 写 start/end_frame_description
  • 写转场 12-enum + hook + 6-enum
  • 顺手写误读排除 / delta / 物理规则
  • 不判 mode——甚至不知道 mode 存在
WRITES RAW MATERIAL
P09 · 后处理
确定性 Python
零 LLM · 兜底与盖章
  • 漏写帧描述 → 自动派生薄描述
  • 打标 derived_frame_desc
  • atmosphere_lock 场景级盖章
  • prompt_richness 三档定级
NEVER TRUSTS, ALWAYS BACKFILLS
P09c · 构图层
白模分镜板
clay maquette · 被动消费
  • 单格 crop → 去色 + 边缘强调
  • 作 i2i 第 3 优先参考图(构图锁)
  • 不参与 mode 决策
  • chained 的拷贝帧用不上它
MODE-AGNOSTIC SUPPLIER
P11 prep · 推导
gen_iframes.py
derive_frame_chain() · 工程判断
  • 3 条固定规则判 continuous
  • 缺描述 → single_ref
  • continuous + 前帧在盘 → chained
  • 其余一律 → paired(兜底)
DERIVES, NEVER ASKS
REEL 02

剪辑台 · 判定模拟器

左边是 P09 真实产出的字段——随便改。右边是 gen_iframes 的确定性反应:规则芯片按求值顺序点亮,接缝实时重焊。这就是全部决策逻辑,JS 逐行复刻 derive_frame_chain,没有隐藏状态。

首尾帧描述start/end_frame_description

缺失时 P09 后处理会派生薄描述打标;此处模拟彻底缺失 → single_ref

转场方法transition_method · 12-enum
运镜连续camera_continuity · 6-enum
视觉钩子visual_hook · 自由文本

仅当 hard_cut 时做子串匹配:13 词 = 承接 顺接 接续 继续 接着 紧接着 紧接 顺势 顺着 延续 接上 跟上 惯性

前镜尾帧已落盘prev last_frame.png

continuous 但前帧缺失 → 并行回退,退化为 paired 重新生成

首帧已存在且像素不同drift 场景

手写渲染路径先落了独立首帧 → 幂等设计使它静默收敛 paired。2026-08-17 起有审计

S04_B03
前镜
✂
S05_B01
本镜
R1 camera_continuity ∈ 连续集 R2 transition_method ∈ 连续集 R3 hard_cut + hook 关键词 independent → 求值序 R1→R2→R3,短路
—
—
first_frame
—
last_frame
—
i2i refs
—
—
REEL 03

判定规则备查

全部来自 gen_iframes.py 的常量与 p09_shot_breakdown.py 的 instruction——没有任何一处是"LLM 觉得"。

R1 — CONTINUOUS_CAMERA(先判)

运镜连续,胶片物理上没断

pan_tozoom_todolly_through whip_panmatch_cut_on_motion

R2 — CONTINUOUS_TRANSITIONS

连续性转场

dissolvematch_cut_shared_object match_cut_shared_landscapemotion_vector_match color_matchwhip_pan

R3 — hard_cut + visual_hook 关键词

硬切但动作承接(2026-08-17 扩表 4 → 13 词)

承接顺接接续继续 接着紧接着紧接顺势 顺着延续接上跟上惯性

其余 12-enum 值

命中以下任一 → independent → paired

hard_cutwipefadej_cutl_cutnone
MODE触发条件first_frame 来源last_frame 来源渲染路径
chained frame_chain = continuous 且前镜 last_frame 在盘 shutil.copy2(prev.last_frame) 像素级复用,拼接零跳变 dreamina 生成 H3 i2va
paired 有帧描述,且不满足 chained 条件(independent,或 continuous 但前帧缺失的并行回退) dreamina i2i:scene_ref + TR1 + storyboard_crop(cap 3) dreamina i2i:scene_ref + TR1 ——不参考首帧(#0:参考即坍缩) H3 i2va
single_ref 缺 start 或 end 帧描述(P09 兜底派生后理论值为 0) — — H3 ref2va + [FRAME-0 ANCHOR] prompt 锚定
REEL 04

实证 · 两个 episode 的真实分布

决策链的可靠性不是设计出来的,是跑出来的——包括它曾经静默失败的地方。

ep-shencongshenyuan-ep01
2026-08 · HG v2 全链 · 15 shots
paired × 15 chained × 0 single_ref × 0

td 里有 4 条 camera-continuous 设计(match_cut / pan / dolly×2),shot_id 对齐、前帧在盘——但 4 处首帧与尾帧 md5 全不同:帧由手写渲染路径生成,meta 缺失,幂等设计使其静默收敛 paired。0 chained 是漂移,不是设计。

runs/demo1-xiaojianghu-ep01
2026-07 · 兜底未加前 · 26 shots
paired × 12 chained × 9 single_ref × 5

判定链当时正常工作(9 chained)。13 条 continuous 链中 8 条像素一致、1 条 drift(S4_2)、4 条前帧缺失不可比。5 个 single_ref 是 P09 派生兜底加入前的漏写。

$ python3 templates/gen_iframes.py --workdir episodes/ep-shencongshenyuan-ep01 --audit-only chain drift audit (read-only): 15 shot(s) scanned, 4 drift(s) found ⚠ CHAIN DRIFT: S01_B02 expected chained from S01_B01 but first_frame pixels differ (camera_continuity=match_cut_on_motion) ⚠ CHAIN DRIFT: S01_B04 expected chained from S01_B03 but first_frame pixels differ (camera_continuity=pan_to) ⚠ CHAIN DRIFT: S01_B05 expected chained from S01_B04 but first_frame pixels differ (camera_continuity=dolly_through) ⚠ CHAIN DRIFT: S05_B01 expected chained from S04_B03 but first_frame pixels differ (camera_continuity=dolly_through) chain drift summary: 4 drift(s) — advisory only; repair is an explicit content decision (--enforce-chain) exit=0
b423289 chain drift 审计 — --audit-only 只读检测 / --enforce-chain 显式修复 / manifest chain_drift 字段
b5032c0 hook 关键词扩表 4 → 13 词  ·  986aee2 p09 delegate schema 枚举对齐  ·  2cda032 derived_frame_desc 兜底打标