# ep-mv-guangdexiaoxi MV 终片两缺陷根因深查报告

**工单**: /tmp/glm-mv-defect-analysis/prompt.md
**分析日期**: 2026-10-14 | **分析者**: 架构分析(GCC) | **性质**: 只读侦查,零 repo 改动
**对象**: `$EP = /data/workspace/kais-hermes-skills/skills/kais-movie-pipeline/episodes/ep-mv-guangdexiaoxi/`
**结论速览**: 缺陷A根因 = **给增强 LLM 看的「输出协议骨架」模板被原样作为内容 prompt 提交给 H3,其原生 audio VAE 把占位词「原文」当人声唱出**(22/22 镜污染,8/8 抽样镜头音轨仪器实证);缺陷B根因 = **两镜文本先验(真实动物摄影式取景)压过 ref2va 弱参考先验导致风格/身份漂移,且 p11c QC 已判 fail(17/22)却被自动放行**。

仪器与方法:本地 whisper large-v3-turbo CPU(R2T2 pilot venv `/data/workspace/r2t2-t3po-pilot/Confucius4-R2T2/.venv`,复用已缓存模型,零 GPU 占用);抽帧 ffmpeg;vision 仪器复核(mcp analyze_image);ComfyUI `127.0.0.1:8188/history` 只读考古。所有中间产物(抽帧/16k 音轨/ASR JSON)在 `/tmp/glm-mv-defect-analysis/`。

---

## T1 「原文」复读全链追踪

### T1-1 模板为什么进了最终 prompt —— **设计如此(默认路径),非 fallback、非 LLM 抄写**

**现象**: 22/22 镜 `assets/P11/S*_A*_meta.json` 的 `prompt` 字段逐字包含模板标记 `【提示词模版(本地)】` / `输出协议骨架(API增强模式将按系统提示词细化执行)` / `字段值不允许为空` / 「原文」(python 扫描实测,22/22 命中,见附录 A1)。

**证据链(文件:行号)**:
1. **模板真源**: `skills/movie-experts/video-engine-adapter/scripts/h3_prompt_enhancer.py`
   - L255-261 `LOCAL_TEMPLATE_PROTOCOL_NOTES` 五条协议注记,**L257 =「对白/歌词必须逐字保留,写入 `<d>[Language] 原文</d>`;说话者按首次发声顺序编号 (S1)、(S2),跨镜保持相同编号。」**
   - L264-322 `build_local_template()` — L301-322 拼装:`"【提示词模版(本地)】"` 头(L302)+ 任务说明 + 用户需求 + **L317 `"输出协议骨架(API增强模式将按系统提示词细化执行):"` + L318 `notes`(含 L257 原文行)** + 六字段骨架。
   - 同族措辞另见 L105(I2VA 系统提示词)、L148/L155(全参考系统提示词)——**系统提示词层的「原文」是给增强 LLM 看的,合规;本地模板层的「原文」会直进内容 prompt,是病灶**。KAP 镜像 `/data/workspace/kais-aigc-platform/src/routes/production/minimax-h3/references/te-h3-prompt-enhancer-strings.txt` L319/L565 与本仓逐字同源(已比对,只读)。
2. **调用方**: `skills/kais-movie-pipeline/pipeline/phases/p11b_final_render.py`
   - L119-129 import `build_local_template`;L953 `_h3_enhance_prompt()`;
   - **L961 注释「本地模板模式(默认)零 LLM 成本,纯规则拼装协议骨架」**;
   - L1061-1063 `enhance_mode = shot.get(...) or cfg.get(...) or "本地模板"` — episode 未配 `h3_enhance_mode`(requirement.json 无此键,实测),全员默认本地模板;
   - **L1066-1073: 即使配了「API增强」,管线运行时也降级为本地模板**(API 增强设计上由 agent 经 hermes_llm 执行,本轮 log 全程只有建议日志无实际 API 增强);
   - L1075-1080 调用 `_h3_build_local_template(...)` → L1089 返回 `enhanced`(即模板全文)。
   - L1090-1095 的异常回落(返回裸 raw_prompt)**未触发**——log 22 条 `H3 提示词增强成功 (... enhancer=local-template)`(如 `/tmp/pipeline_ep-mv-guangdexiaoxi.log` L2296/L2359/L2392 等)。
3. **落盘**: 模板返回值即 `meta.prompt`(S1_A01 实测 2340 字,含完整骨架段)。
4. **提交**: `plugins/kais_aigc/video_engine.py` L1086-1094 — multipart `("prompt", (None, resolved_prompt))`,`_resolve_prompt` L1035-1042 直通 caller 传入的增强 prompt。
5. **H3 实际消费(考古实锤)**: ComfyUI `127.0.0.1:8188/history` 留存提交体 — `977ad727`(S1_A04 final)node 20 `MiniMaxH3ReferenceToVideo.prompt` = 模板原文(len=2462,含「输出协议骨架…<d>[Language] 原文</d>」段);`587bec33`(S4_A01)同构(len=1768)。**音频通路**: 该 workflow 含 `audio_vae`(node 13)+ `VAEDecodeAudio` — H3 原生音频由文本 prompt 直接驱动生成,无 negative 通道(H3 CFG=1.0,p11b L1020-1021 注释「negative_prompt ineffective」)。

**根因**: 本地模板把「给增强 LLM 的协议说明书」与「给 H3 的内容载荷」拼在同一文本里,且本地模板是管线运行时唯一确定性路径 → 协议说明(含字面占位词「原文」)22/22 全量直送 H3。
**严重度**: **P0**(直接产生用户可闻缺陷,污染全部镜头)。
**修复建议**: 见 T4 P0-1/P0-2。

### T1-2 「原文」被唱出的机制通路定谳 —— **通路①(H3 native 音频流)为主;②③排除**

三通路逐条仪器裁决:

| 通路 | 假设 | 裁决 | 证据 |
|---|---|---|---|
| ② P10 TTS wav 文本含「原文」 | TTS 念了脏文本 | **排除** | P10 state `voice_clips` 21 条 `text` 全量扫描零「原文」(附录 A2);P12 `voice_track.wav`(纯旁白 stem)whisper ASR 全文零「原文」,21 句与 P10 文本一致(附录 A3) |
| ③ p12b 混音把 bed 带进 master | 混音结构问题 | **结构成立但非源头** | `mix_a.wav`(P12 终混,**无 BGM**)ASR 已含「原文」≈20 段且与 master 同模式(附录 A4)→ BGM underlay 无关;但「native bed 全量保留」是①到达用户耳的放大器:p12a log L4260「rebuilt sample-accurate bed (22 clips)→native_audio.wav」,p12b log L4332-4334 voice-track 拼装 + assembly,P13 provenance(state)master 音轨 = P12 master audio(de-clicked)+ BGM@0.6 |
| ① H3 native 音频流唱出模板字 | 模型把 prompt 里的 `<d>[Language] 原文</d>` 当对白/歌词 | **实锤(主因)** | **逐镜音轨 ASR 8/8 抽样全部含「原文」或协议词吟诵**(附录 A5):S1_A04「字幕志愿者 杨茜茜」(「字幕」=模板注记 L259「画面中可见的招牌、字幕…」的字面词!);S2_A02「欲散联演成金口样 郭登原文」;S2_A03「有原文 原管」;S3_A01「…原文」;S5_A04「原文×2」;S6_A02「原文原文」;S6_A03「原文」;S6_A04「慈善想上原文」。胡话短语跨文件一致(S2_A02.wav 与 master 13.0-14.5s 同为「×散脸/联演成金口样」)→ 是真实音频内容而非转写噪声 |

**注意**: native bed 单独整段 ASR 时 whisper 对纯音乐段产生「明镜与点点栏目」经典幻觉环路(附录 A4 注)——即 native bed 人声被音乐掩蔽时 ASR 不可靠,但逐镜短文件 + master/mix_a 双重交叉已锁定。另:H3 返回片音轨**不含旁白**(S1_A04.wav 无「瓦太滑了」)→ 引擎虽按 `voice_clip_path` 上传了 ttsAudio(p11b L2927 → video_engine.py L1203-1204),KAP final-shot 的「TTS 混音」未落到返回片音轨上(KAP 侧处置 = **待验证**,超出本仓可见面);旁白实际只由 p12b voice_track 单独供给。

### T1-3 为什么 22/22 全带但不是每镜同等可闻

- **prompt 层**: 22/22 全带模板(A1)→ 全部镜头的 H3 音频生成都见过「原文」与协议文本。
- **音频层**: 抽样 8/8 镜头自带人声化 → 推定 22/22 的 native 音轨普遍带(未逐镜全测,标「抽样推定」)。可闻度差异来自:①每镜 H3 人声化强度不同(有的唱「原文」有的只哼协议词);②旁白 stem 覆盖窗口(0-12s 旁白密集,「原文」从旁白稀疏区 12s 起开始裸露;S6 段旁白短促 → 44.6-54s 密集爆发);③BGM/foley 掩蔽。Kai 听感「反复出现」与 master ASR ≈20 段命中一致。

### T1-4 master「原文」出现时间点清单(仪器:whisper large-v3-turbo,附录 A4/A6)

镜头窗口按 p11b 实际 concat 时长(state video_clips 累加,总 54.73s;master 54.17s,尾窗 ±0.5s 容差):

| master 时间 | 镜头 | ASR 文本 |
|---|---|---|
| 9.00-10.34 | S1_A04 | 「一文」(≈原文,该镜音轨另测出「字幕志愿者」) |
| 12.00-13.02 | S2_A01 | 原文 |
| 14.50-16.14 | S2_A02 | 过等原文 / 用原文 |
| 19.56-22.24 | S3_A01 | 原文 / 而这思雨去她薰和原文 |
| 22.24-23.68 | S3_A02 | 原文 |
| 23.68-26.76 | S3_A03 | 原文(跨 S3_A04 窗) |
| 26.76-28.46 | S3_A04 | …相当原文 |
| 31.02-31.48 | S4_A02 | 原文 |
| 33.40-35.36 | S4_A03 | 原文 ×2 |
| 35.36-39.74 | S5_A01 | 「一文」 |
| 39.74-41.80 | S5_A02 | 原文 |
| 44.66-45.56 | S5_A04 | 原文 |
| 47.40-49.44 | S6_A01 | 正会于是原文 / 原文 |
| 49.44-52.54 | S6_A02 | 原文 ×2 |
| 52.54-53.90 | S6_A03 | 死闪向上原文 |
| 53.90-54.17+ | S6_A04 | 原文(ASR 时间戳 >54.17 段为 whisper 拉伸伪影,音频已到片尾) |

另: 12.0s 前旁白干净可辨,与 voice_track ASR 逐句吻合 → 缺陷纯出自 native bed,旁白轨无罪。

### T1-5 QC 漏门记录(确认 skip)

- 最终交付母带(P13 master.mp4, mtime 10-14 06:10)的听审: log L4632 `P13 master-audio-qc skipped: kais-ear LLM call failed: empty content (status=200)`(06:11:57)。
- 此前两轮: L4441 verdict=pass(05:22,v1 母带)/ L4501 verdict=fail + L4503 gate 打回「爆音/电流声/整段数字静音」(05:36)→ p12b re-mix(numpy declick,/tmp/repair_fixed.wav,P13 provenance 记载 18 簇 >0.25FS 插值)→ 重跑 p13 → **最终轮 QC skip,仅 loudnorm+silencedetect 自测兜底** → 「原文」类人声内容缺陷漏过门 = 符合预期机制(skip 不是静默:有 WARNING 台账)。
- 关联:kais-ear GPU 侧当日多次被 KAP 队列拒绝(log L1880/L1980/L2075「allocate refused by KAP queue — no bypass start」),听审基础设施全天处于降级边缘。

---

## T2 写实狐两镜(S1_A04 / S3_A04)取证

### T2-1 视觉定谳(抽帧 + vision 仪器)

| 位置 | 帧 | 仪器描述(附录 B1) |
|---|---|---|
| master 9.9s(S1_A04 窗 8.22-10.55) | frames/m_9.9s.png | **3D 皮克斯/迪士尼式 CG 幼狐**,逐根毛发渲染+次表面散射,暖黄发光+**灰蓝袖(身份保持)**,冷青瓦屋顶雨夜 |
| master 24.6s(S3_A04 窗 24.19-27.23) | frames/m_24.6s.png | **photoreal 赤狐**(照片级毛发/湿润反光),日式瓦屋顶阴雨,无发光无服装(**身份+风格双漂移**) |
| 对照 master 1.5s(S1_A01) | frames/m_1.5s.jpg | 2D 手绘水彩吉卜力,水彩笔触发光小狐狸 ✓ |
| 对照 master 14.2s(S2_A02) | frames/m_14.2s.jpg | 2D 水彩吉卜力乌云 ✓ |
| **P11 原始镜头**(排除 P13 调色) | shot_S1_A04_f0.jpg / shot_S3_A04_f1.jpg | 同样 3D CG 拟人狐 / photoreal 红狐 → **渲染原始镜头即病,与 P12/P13 后期无关**(P13 provenance:video stream = P14-approved grade,`-c:v copy` 位保真) |

盲测两点位(9.9s/24.6s)与镜头窗口精确吻合;其余 20 镜风格正常(盲测 35/50 + 抽帧对照)。

### T2-2 锚图/refImages 槽位对比

| 维度 | S1_A04(病) | S3_A04(病) | S1_A01(健) | S2_A02(健) |
|---|---|---|---|---|
| P09 `character_refs` | 2(发光小狐狸+淘气乌云,均指向 `turnaround_sheets/*_scene_S01_costume_i2i.png`) | **空** | 2(同 S1_A04) | 空 |
| `scene_ref` | S01_attic_angle_left.png | S03_first_rain_angle_right.png | S01_attic_front.png | S02_wet_ridge_angle_left.png |
| 引擎 refImages(p11b L2841-2892: turnarounds+scene;video_engine L1191-1199 ≤9 张) | 3 张 | **1 张** | 3 张 | 1 张 |
| ComfyUI history 直接证据 | `977ad727` node20 `ref_image_0/1/2` ×3 ✓ | 未留存(history 仅 26 条已轮转);由 P09 state(空 refs)+引擎代码推定 1 张场景图(**推定,高置信**) | `09d40bc4…` ×3 | 未留存(S2 段仅 S2 无条目,同推定) |
| 锚图风格 | turnaround=水彩吉卜力(vision 复核 ref_turnaround_fox.jpg) | **场景图本身水彩且含奔跑发光小狐狸**(vision 复核 ref_S03_first_rain_angle_right.jpg)→ 不是「锚图写实」 | 同左 | — |
| iframe_mode / first_frame | single_ref / null | single_ref / null | single_ref / null | single_ref / null |
| take 次数 | 1(take-log) | 1(take-log) | 1 | 1 |

### T2-3 prompt 差异

- S1_A04 用户需求正文 = 「特写插入:小狐狸的前爪踏上檐口最湿的一排瓦面…浅景深聚焦爪部」——**爪部微距**;PHYSICS「前爪五指结构/湿瓦青灰反光」;无显式画风词。
- S3_A04 正文 = 「全景跟随:小狐狸…四爪翻飞沿瓦浪向画面右侧狂奔…雨点砸起细小水花」——**雨中屋脊狂奔**;同样无显式画风词。
- 两镜共享 [ATMOSPHERE LOCK]「soft natural painterly light」(光照措辞,非渲染风格锁)。
- **注意:显式「水彩/手绘」token 不是判别因子**——22 镜正文里只有 S1_A03/S2_A02/S6_A04 三镜显式携带,其余 19 镜(含 18 健镜)同样没有却未漂移(附录 A7 扫描表)。
- **S3_A04 含虚假 [CONTINUITY-IN]**:「起始画面(已由首帧图像锁定 = 上一镜头尾帧)…」但 `iframe_mode=single_ref`、`frame_chain_from=None`、`first_frame_path=null` —— 文本承诺了不存在的图像锁(p11b L2863-2868:spec_firstframes 全 22 镜缺失,WARN ×22,log L2294 等)。

### T2-4 漂移环节定位

「漫画→写实」漂移发生在 **H3 生成环节本身**(原始镜头即病,T2-1),机制分解:

1. **两镜取景 = 真实动物摄影 trope**(爪部微距 / 雨中屋脊狂奔)——该文本先验域中 photoreal 野生动物影像占主导,H3 文本先验压过 ref2va 参考先验;
2. **ref2va 的参考是弱先验**: 模板任务说明自述「普通参考图片默认只用于人物、物体、场景、风格、构图或动作参考,不是目标视频时间线中的首帧」(h3_prompt_enhancer L238);S3_A04 仅 1 张场景图(无角色 turnaround)→ 角色外观纯靠文本;S1_A04 虽有 3 张 ref 仍风格漂移(身份保住、画风丢)→ 证明 ref2va 风格锚定力在该类构图下不敌文本;
3. **无图像级首帧锁兜底**: 22 镜 spec_firstframes 全缺(L2863-2868 注释明言该机制正是为「ref2va 图像先验覆盖 prompt 景别/运镜」而设,本轮全量缺失)。

**为什么恰好这两镜**(其余 18 个无角色 ref 镜头未漂):机位/动作 trope 差异是唯一稳定区分点(附录 A7);更深层的逐镜先验权重分析 = **待验证**。

### T2-5 QC 为什么没拦住(p11c 已看见病,门失灵)

- p11c per-shot(state `.pipeline-assets/video-qc.json`): **S1_A04 verdict=fail,content_match=false,理由「主体为狗而非SPEC隐含的拟人橘猫角色」,obs 逐帧描述「3D动画风格的小狗(柴犬/博美)…灰色长袖上衣」**;**S3_A04 verdict=fail,obs「红褐色狐狸…像 3D 动画角色,毛发质感细腻」**(判由落 composition,风格未被单列维度)。
- **汇总: 17/22 fail**(camera 14/composition 12/content_match 4),整体 status=「ok」。
- **Gate 15(p11c-gate)按设计是 MANDATORY 人工阻塞门**(`plugins/review_gates/gates.yaml` L330-336:default_mode blocking,timeout 4h;`p11c_video_qc.py` L706-708「fail 明细直接送人工」)。**实际: log L4237 p11c complete 04:15:25.121 → L4238 p12a start 04:15:26.465,间隔 1.3 秒**;hermes review-outcomes(`/home/kai/.hermes/.pipeline-assets/review-outcomes.json`)与本 episode blackboard 均无 p11c 审批记录 → **17 个 fail(含两病镜)未经人工即放行**。放行机制身份(非阻塞 trigger_gate 的 DEGRADED_AUTO 自动 approve,runner_hooks.py L343-358,抑或 gate 未接线 `L711 if GATE_ID and _gate_fn is not None`)= **待验证**;「无人审核即过门」这一事实由时间戳差钉死。

---

## T3 一致性面整体评估(22 镜 ref 完整性表)

数据源:P09 state shot_list + p11b state video_clips + P11 目录实测(附录 A8):

| 镜头 | character_refs | refImages 张数 | scene_ref | iframe_mode | 正文显式画风词 | 判 |
|---|---|---|---|---|---|---|
| S1_A01-A04 | 2(双 turnaround) | 3 | S01_attic_*.png | single_ref | A01 有 | A04 **病**(3D CG) |
| S2_A01-A03 | **0** | 1 | S02_wet_ridge_*.png | single_ref | A02 有 | 健 |
| S3_A01-A03 | **0** | 1 | S03_first_rain_*.png | single_ref | 无 | 健 |
| S3_A04 | **0** | 1 | S03_first_rain_angle_right | single_ref | 无 | **病**(photoreal) |
| S4_A01-A03 | **0** | 1 | S04_clothesline_*.png | single_ref | 无 | 健 |
| S5_A01-A04 | **0** | 1 | S05_clocktower_*.png | single_ref | 无 | 健 |
| S6_A01-A04 | **0** | 1 | S06_rainbow_eave_*.png | single_ref | A04 有 | 健 |

**系统性弱点(修机制,不止修两镜)**:
1. **S2-S6 全部 18 镜无角色 turnaround ref**(P09 shot_list `character_refs` 空)——但 per-scene L2 变体资产其实**已存在**(`turnaround_sheets/l2_fox_S2_wet_ridge.png`…`l2_fox_S6_rainbow_eave.png`、`l2_wuyun_S03/S04/S06.png`)——是引用缺失不是资产缺失。
2. **22/22 无图像级首帧锁**: `spec_firstframes/` 目录不存在,22× WARN「spec 首帧缺失,回落 ref2va 参考图直出」(log L2294/L2357/L2390/L2501/…);iframe_mode 全 single_ref,frame_chain 全 None。
3. **CONTINUITY-IN 文本虚假承诺 ×6**: S2_A02/S2_A03/S3_A01/S3_A04/S4_A01/S4_A02 六镜 prompt 均含「已由首帧图像锁定 = 上一镜头尾帧」措辞(目录 grep 实测 6/6),而全 22 镜 `first_frame_path=null` 且 spec_firstframes 全缺——**声明与机制脱节**,既误导下游 QC 也误导模型。
4. **风格一致性单点依赖场景背景图先验**,prompt 层无全局风格锁(仅 ATMOSPHERE 光照措辞);显式画风词仅 3/22 镜偶发。
5. 次要: S5_A02/S6_A04 缺 `_creative_meta.json` + `_prompt_refined.txt`(p11b-creative-metadata 子流程未覆盖 2 镜,P11 目录实测;与本两缺陷无直接关联,机制覆盖洞)。

---

## T4 修复优先级矩阵

| # | 优先级 | 修哪层 | 最小修复方案 | 回归风险 |
|---|---|---|---|---|
| 1 | **P0** | 模板(h3_prompt_enhancer) | `build_local_template` 输出剥离协议注记段(L317-318 notes)或改写为不含 `<d>[Language] 原文</d>` 字面占位的表述;协议说明只留在 `get_system_prompt()`(API 增强侧) | 低——本地模板本就自称「骨架」;527 测试中 p11 enhance 用例(`tests/test_p11_h3_enhance.py`)需同步;KAP 镜像 txt 同步 |
| 2 | **P0** | 出仓 sanitizer(p11b) | 复用 fullinfo gate 扫描面基建(p11b L2893-2900 `_fullinfo_gate_h3`):提交前扫描最终 prompt 命中 `输出协议骨架`/`【提示词模版`/`原文</d>` 即剥离骨架段只留载荷(或 reject) | 低;纯 additive 门 |
| 3 | **P0** | QC 门(p11c Gate 15) | 修复放行失灵:确认 blocking wiring;fail>0 且无人工 outcome 时 fail-closed(runner_hooks L317-321 strict 语义已备);本轮 17 fail 1.3s 过门必须不再可能 | 中——会真阻塞无人值守跑批,需配 operator 通知/豁免通道(waived_shot_ids 机制已有,L776-780) |
| 4 | **P1** | QC 维度(p11c) | 增加 style-fingerprint 维度(首帧 vs turnaround/场景图 2D/3D 判别)——本轮 S1_A04 靠 content_match 侥幸命中,S3_A04 风格漂移仅以 composition 附带发现 | 低 |
| 5 | **P1** | P09 引用 | S2-S6 shot_list 补 `character_refs` 指向已有 l2_*.png per-scene turnaround(资产在盘);模板化「凡角色出镜镜必挂角色 ref」 | 低 |
| 6 | **P1** | audio QC(P13) | master-audio-qc skip 时降级跑本地 whisper 兜底(而非只 loudnorm 自测);ASR 命中「原文/协议词/字幕」黑名单即 fail;kais-ear 空返回重试 ≥2 | 低 |
| 7 | **P1** | 单镜重渲 | S1_A04/S3_A04 重渲:补 spec 首帧或角色 ref + prompt 加显式画风锁(「2D手绘水彩,吉卜力风,禁 3D 写实渲染」)+ CONTINUITY-IN 仅在真实帧链时注入 | 低 |
| 8 | **P2** | prompt 卫生(p11b) | CONTINUITY-IN 措辞与 iframe_mode 联动:single_ref 时删「已由首帧图像锁定」句;spec_firstframes 批量生成纳入 p11b 前置(gen_spec_firstframes.py 已在) | 低 |
| 9 | **P2** | 混音(p12b) | native bed 过 vocal-filter/ducking(旁白窗压床电平),给「native 人声意外」兜底 | 中——改变全片听感,需盲测 |

**ClassD 1011 纪律(对白镜走 ttsAudio stem 不走 native 直出)评估**: 本 MV 引擎层已上传 ttsAudio(21/22 镜,video_engine L1203),但 H3 返回片音轨**不含旁白且含 native 人声污染**(S1_A04.wav 实测)→ 等效于「native 直出 + 外挂旁白」。**应当改走该纪律的落地形态**: 有 TTS 的镜,native bed 仅作环境声(剔人声或深度 duck),旁白/对白唯一真源 = P10 stem;S6_A01 类无 TTS 镜保留 native 但 prompt 已修后不再产「原文」。此路由变更与 P0-1/P0-2 正交,建议同批落地(修 prompt 是根,路由是带)。

---

## 证据附录

**A. 音频/ASR 证据**(均在 /tmp/glm-mv-defect-analysis/):
- A1 模板标记扫描:22/22 meta.prompt 命中 4 标记(本报告 T1-1 引用的实测输出)
- A2 P10 voice_clips 21 条 text 全文(T1-2 表;零「原文」)
- A3 asr_voicetrack/voice_track16k.json — 旁白 stem 全文转写(零「原文」)
- A4 asr_mixa/mix_a16k.json — P12 终混(无 BGM)≈20 段「原文」;asr_native/native_audio16k.json — 纯 native bed 全程幻觉环路(「明镜与点点栏目」×2,证明无清晰可转写人语=音乐掩蔽)
- A5 逐镜:asr_shot_S1_A04/S2_A02/S2_A03/S3_A01/S5_A04/S6_A02/S6_A03/S6_A04/*.txt(8/8 含「原文」或协议词)
- A6 asr_master/master_audio16k.json — master 时间点清单源(T1-4 表)
- A7 注: 正文画风词扫描用「严格保持\n\n…\[PHYSICS\]」正则,对 S01 场景的六行式 ATMOSPHERE 格式不匹配(S1_A01 body_len=0 为正则盲区;人工读 S1_A01 正文实含「手绘水彩质感」,T3 表按人工读校正)。

**B. 视觉证据**(frames/):
- B1 m_9.9s.png(3D 皮克斯幼狐+灰袖)/ m_24.6s.png(photoreal 赤狐)/ m_1.5s.jpg / m_14.2s.jpg(健镜吉卜力)/ shot_S1_A04_f0.jpg / shot_S3_A04_f1.jpg(P11 原始镜头即病)/ ref_turnaround_fox.jpg(水彩 turnaround)/ ref_S03_first_rain_angle_right.jpg(水彩场景图含奔跑狐)
- B2 comfy_history.json — ComfyUI 提交考古(S1_A04 node20 prompt len=2462 + 3 ref;各镜 ref 图张数表)

**C. 日志/状态证据**:
- C1 /tmp/pipeline_ep-mv-guangdexiaoxi.log: L2202(TTS duration 21/22)、L2294 等(22× spec 首帧缺失)、L2296 等(22× local-template)、L4237-4238(p11c→p12a 1.3s)、L4260(native bed)、L4332-4334(voice-track/assembly)、L4441/L4501/L4503(听审 pass→fail→打回)、L4632(最终轮 skip)
- C2 .pipeline-state.json: p11b video_clips(ref/iframe/tts/duration)、p13 provenance(混音公式)、p11c 汇总 17 fail
- C3 .pipeline-assets/: video-qc.json(S1_A04/S3_A04 fail + 3D 主体观察)、failed-shots.json、take-log.json(单 take)
- C4 代码: h3_prompt_enhancer.py L255-261/L301-322;p11b_final_render.py L953-1095/L2841-2931;p11c_video_qc.py L640-780;runner_hooks.py L317-358;gates.yaml L330-336;video_engine.py L1086-1208

**D. 待验证清单**: ①Gate 15 自动放行的确切代码身份(blocking 未接线 vs DEGRADED_AUTO vs 哨兵自动批);②KAP final-shot「TTS 混音」为何未落到返回片音轨;③22 镜逐镜全量 ASR(本轮 8 镜抽样);④S2-S6 其余 16 镜为何未漂移的先验权重分析;⑤native bed 单独可听化验证(whisper 幻觉环路下的掩蔽量化)。

---

## ≤300 字摘要

**缺陷A根因**: `h3_prompt_enhancer.py` L257/L317 的「输出协议骨架」模板段(含 `<d>[Language] 原文</d>` 字面)被本地模板默认路径(p11b L1061)原样拼进 22/22 镜最终 prompt 直送 H3,其原生 audio VAE 把「原文」及协议词当人声唱出(8/8 抽样镜头音轨 ASR 实证);P10 文本与旁白 stem 干净、BGM 无关,master ≈20 段命中,P13 听审最终轮 skip 漏门。
**缺陷B根因**: S1_A04(爪部微距)/S3_A04(雨中狂奔)的真实动物摄影式取景文本先验压过 ref2va 弱参考(S3_A04 仅 1 张场景图、无角色 ref;22 镜全无首帧锁)致风格漂移;p11c 已观察到 3D 主体并判 fail(17/22 fail)却被 1.3 秒自动放行。
**P0 清单**: ①模板剥离协议段 ②出仓 sanitizer 扫协议标记 ③Gate 15 失灵修复。
**修复 Top3**: P0-1 模板改造 → P0-3 人工门 fail-closed → P1 两镜重渲(补 l2 角色 ref+画风锁)。建议同批落地「有 TTS 镜 native bed 只作环境声」路由(ClassD 1011)。
