@oh-story/dsh 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +5 -3
  2. package/lib/client.js +27 -11
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +141 -136
  5. package/lib/drama/skills/short-drama/SKILL.md +55 -122
  6. package/lib/drama/skills/short-drama/references/audience-reveal.md +14 -67
  7. package/lib/drama/skills/short-drama/references/contract-and-ownership.md +24 -78
  8. package/lib/drama/skills/short-drama/references/creator-documents.md +79 -0
  9. package/lib/drama/skills/short-drama/references/creator-workflow.md +51 -77
  10. package/lib/drama/skills/short-drama/references/knowhow-index.md +2 -0
  11. package/lib/drama/skills/short-drama/references/look-development.md +2 -3
  12. package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +14 -48
  13. package/lib/drama/skills/short-drama/references/production-form-profiles.md +1 -1
  14. package/lib/drama/skills/short-drama/references/reference-roles.md +29 -135
  15. package/lib/drama/skills/short-drama/references/runtime-preflight.md +13 -19
  16. package/lib/drama/skills/short-drama-assets/SKILL.md +40 -161
  17. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +18 -25
  18. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +13 -15
  19. package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +11 -14
  20. package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -12
  21. package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -11
  22. package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +2 -2
  23. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +10 -105
  24. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +12 -32
  25. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +41 -155
  26. package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +12 -13
  27. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +10 -12
  28. package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +39 -51
  29. package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +3 -4
  30. package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +15 -14
  31. package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +11 -15
  32. package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +1 -1
  33. package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +4 -7
  34. package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +23 -23
  35. package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +6 -65
  36. package/lib/drama/skills/short-drama-produce/SKILL.md +26 -10
  37. package/lib/drama/skills/short-drama-review/SKILL.md +61 -123
  38. package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -15
  39. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +15 -16
  40. package/lib/drama/skills/short-drama-review/references/project-calibration.md +7 -9
  41. package/lib/drama/skills/short-drama-review/references/review-method.md +8 -9
  42. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +9 -13
  43. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +104 -4
  44. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -19
  45. package/lib/drama/skills/short-drama-review/references/stage-contract.md +4 -63
  46. package/lib/drama/skills/short-drama-storyboard/SKILL.md +49 -240
  47. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +9 -34
  48. package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
  49. package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +5 -10
  50. package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +8 -7
  51. package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +24 -62
  52. package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +16 -25
  53. package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +5 -23
  54. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -10
  55. package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +9 -13
  56. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +11 -71
  57. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +44 -219
  58. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +10 -8
  59. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +3 -5
  60. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +2 -2
  61. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +13 -23
  62. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +8 -11
  63. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +2 -3
  64. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +34 -63
  65. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +13 -72
  66. package/lib/drama/skills/short-drama-write/SKILL.md +73 -268
  67. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +7 -0
  68. package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +17 -43
  69. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +15 -15
  70. package/lib/drama/skills/short-drama-write/references/script-craft.md +208 -21
  71. package/lib/drama/skills/short-drama-write/references/stage-contract.md +11 -70
  72. package/lib/index.js +107 -14
  73. package/lib/index.js.map +4 -4
  74. package/lib/oh-story/manifest.json +26 -26
  75. package/lib/oh-story/roles/character-designer.md +4 -4
  76. package/lib/oh-story/roles/narrative-writer.md +11 -11
  77. package/lib/oh-story/roles/story-architect.md +20 -14
  78. package/lib/oh-story/roles/story-explorer.md +8 -5
  79. package/lib/oh-story/skills/story-import/SKILL.md +5 -1
  80. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +1 -1
  81. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +1 -1
  82. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
  83. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +1 -1
  84. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +1 -0
  85. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +11 -5
  86. package/lib/oh-story/skills/story-setup/SKILL.md +12 -9
  87. package/lib/types/client/file-activity.d.ts +5 -0
  88. package/lib/types/client/file-activity.d.ts.map +1 -1
  89. package/lib/types/client/index.d.ts.map +1 -1
  90. package/lib/types/index.d.ts +2 -1
  91. package/lib/types/index.d.ts.map +1 -1
  92. package/lib/types/reference-tool.d.ts +6 -0
  93. package/lib/types/reference-tool.d.ts.map +1 -0
  94. package/lib/types/role-provider.d.ts.map +1 -1
  95. package/lib/types/role-tool.d.ts +3 -1
  96. package/lib/types/role-tool.d.ts.map +1 -1
  97. package/lib/types/skill-provider.d.ts.map +1 -1
  98. package/package.json +3 -2
  99. package/lib/drama/skills/short-drama/references/lifecycle-commands.md +0 -130
@@ -1,245 +1,70 @@
1
1
  ---
2
2
  name: short-drama-video-prompts
3
- description: 为已接受的短剧镜头和关键帧编写或修改可复制的通用视频提示词与运动规格,也负责跨镜时间线配乐/主题曲的 provider-neutral 音乐规格。用户提到视频提示词、文生视频、图生视频动作、人物表演过程、运镜、对白口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词、写主题曲/配乐提示词或校验时间线音乐规格时直接使用;视频部分只描述单个已编镜头内的运动、表演、摄影与声音,音乐部分只投影已接受剧情/导演意图和创作者提供的歌词;不生成媒体,不调用供应商,不创作歌词,也不改写分镜边界。
3
+ description: 把短剧分镜和冻结关键帧写成可直接复制的视频提示词 Markdown,也可按用户要求写时间线配乐/主题曲意图。用户提到文生/图生视频动作、人物表演、运镜、口型、环境运动、镜头时长、起止状态、把分镜转成视频提示词或写配乐提示词时使用;不生成媒体、不创作歌词、不改分镜边界。
4
4
  license: MIT
5
5
  ---
6
6
 
7
7
  # 短剧视频与时间线音乐提示词
8
8
 
9
- 把分镜已经决定的一个镜头,写成按时间执行的动作、表演、摄影和声音。运动说明只实现起止边界,不能改写边界。
10
- 当音乐承担跨镜、跨场或主题曲职责时,本技能拥有独立的 provider-neutral 时间线音乐规格;
11
- 它不替创作者写词,也不把配乐为了某个供应商方便而烘焙进每镜。
12
-
13
- 预览、末端报告与补拍说明是创作者读的:项目内跟随 `short-drama.json#/language`,独立运行时
14
- 跟随用户使用的语言。送给视频生成器的**提示词正文**在项目内跟随
15
- `#/format/prompt_language`,独立运行时由用户指定、未指定则为 `en`。改了描述语言
16
- 不等于改了画面里说什么或写什么——那来自已接受的资产记录与文字政策。
17
-
18
- ## 开始前
19
-
20
- 本技能可独立安装和执行。先读取用户明确提供的镜头、关键帧与本任务直接输入;若当前目录是
21
- `short-drama` 项目且项目工具可用,可以读取 `status` 并使用其发布生命周期,但缺少 core
22
- 或任何其他技能都不是视频提示词工作的阻断条件。[阶段契约](references/stage-contract.md)
23
- 给出本阶段边界、制作形态输入与规则表,无需读取其他技能的文件。
9
+ 把已确认镜头和起始帧写成有边界、可生成、可直接复制的 `剧集/<EP>/视频提示词.md`。
10
+ 每镜使用 `MOTION-...` 标题并引用对应 `SHOT-...`。
24
11
 
25
12
  ## Quick Start
26
13
 
27
- 校验一个独立的时间线音乐规格,不调用供应商或生成媒体:
28
-
29
- ```bash
30
- python3 {技能目录}/scripts/music_spec_check.py examples/minimal-music-specs.jsonl
31
- python3 {技能目录}/scripts/selftest.py
14
+ ```text
15
+ 用 $short-drama-video-prompts 把 EP001 分镜逐镜写成可直接复制的视频提示词
32
16
  ```
33
17
 
34
- ## 进入条件与权属
35
-
36
- - 可从已接受的镜头、关键帧或创作者直接提供的等价输入进入,无需重新开发故事或安装主技能。
37
- - 所有权或直接输入影响不清楚时,读
38
- [阶段契约](references/stage-contract.md) 的所有权边界;需要定位规则 ID
39
- 或解释审查问题时,读同一文件的本阶段规则表。
40
- - 输入至少包含当前已确认的镜头、起始关键帧/边界、时长、连续性终点与对白/声音引用;需要更新时退回 `$short-drama-storyboard`。
41
- - 若创作者明确要求全链预览,可对状态为 `provisional`、但没有 `unresolved` 问题的镜头/关键帧
42
- 写候选运动说明;明确标为待确认,禁止声称已接受或已通过。
43
- - 镜头的起点、终点、时长、对白、资产绑定和下一镜状态全部只读。运动规格只负责有序动作、表演过程、摄影与声音实现,以及派生的结束报告。
44
- - 视觉、声音和口型等审美选择读取 `short-drama.json#/creator_authority/{visual_direction,production_profile}`;
45
- 直接从本环节开始的项目若为 `unset`,就保留选择,不把默认配置写成已接受事实。
46
- - 先写不绑定供应商的通用文本。不得生成视频或音频、上传参考帧、创建远程执行任务、调用模型接口、轮询状态或宣称成片质量。
47
-
48
- ## 按任务加载资料
49
-
50
- | 任务 | 必读资料 |
51
- |---|---|
52
- | 任意镜头运动说明/提示词 | [起点—变化—终点配方](references/motion-recipe.md) |
53
- | 单人/多人表演、注意交接、节奏或超载 | [表演弧与动作预算](references/performance-action-timing.md) |
54
- | 运镜、环境、对白、声音、边界冲突 | [摄影声音与连续性](references/camera-audio-continuity.md) |
55
- | 自检、独立复核、正反案例 | [审查量表与合成案例](references/review-and-fixtures.md) |
56
- | 生产端提示词写法、台词绑定、负面清单 | [生产提示词语法惯例](references/production-prompt-grammar.md) |
57
- | 项目由生成模型承担画面,要判断动作能不能被生成 | [动作的可生成性](references/generability.md) |
58
- | 分段交付、槽位职责、时长分配、交付路由与执行触发词 | [交付档案与槽位语义](references/delivery-profile.md) |
59
- | 多张参考图的用途、补拍或替代版范围 | [阶段契约](references/stage-contract.md) 的参考媒体与补拍 |
60
- | 时间线主题曲或配乐意图 | [音乐规格模板](assets/music-spec.jsonl.md) |
61
-
62
- 规格使用 [运动规格模板](assets/motion-spec.jsonl.md);末镜或下一集记录尚未建立时参考
63
- [末镜定位示例](assets/motion-terminal.example.jsonl);可复制交付使用
64
- [Markdown 模板](assets/video-prompts.md)。只加载本次问题需要的资料。
65
-
66
- ## 每轮的工作单元
67
-
68
- 一轮处理一个场次或一段连续镜头范围。整集请求按这些边界拆成若干轮,每轮:
69
-
70
- 1. 只读这个范围的直接输入,写它的逐镜运动规格,跑本地结构检查;
71
- 2. 落盘这个范围,其余范围保持原样;
72
- 3. 报告已覆盖范围、剩余范围、未决 motion 字段和下一个值得做的范围;
73
- 4. 交还控制权,等创作者的下一次请求。
74
-
75
- 生产、重新打包和审查各自是独立的工作单元,由创作者明确请求时开始。
76
-
77
- ## 工作流
78
-
79
- ### 1. 先写“不能动的边框”
80
-
81
- 建立只读的起止边界清单:
82
-
83
- - 镜头/关键帧引用:文件头 `sources` 声明的快照 key(`src`)加准确的 `record_id`/`field`;
84
- - 时长,以及起点姿态、重心、目光、双手、持物和空间关系;
85
- - 分镜负责的结束姿态/状态与连续性终点;
86
- - 准确的对白、画外音、音效和声音引用;
87
- - 镜头目的、信息/情绪变化和下一镜交接(只用于核对)。
88
-
89
- 任何来源冲突先停止。如果创作者要求延长时长、换结尾站位、删对白或改变下一镜开场,
90
- 就向负责该内容的技能提出修改请求;不要在运动规格中覆盖。
91
-
92
- ### 2. 决定这个镜头真正发生什么变化
18
+ ## 入口与边界
93
19
 
94
- 用一句话写镜头内的运动目的:“观众在这几秒内看到或感到什么变化?”然后选择少量有因果顺序的事件:主体行动 → 可见反应或注意转移 → 到达终点。只加活动会冲淡表演。
20
+ 有当前分镜、冻结关键帧和必要视觉事实即可开始;图片提示词不是前置门槛。运动提示词拥有从已确认
21
+ 起点到终点的变化:表演动作、道具状态、运镜、节奏和声音提示;静态身份、造型、地点和构图仍由
22
+ 参考帧与视觉设定拥有。
95
23
 
96
- 写逐镜文本前,跨镜头重读完整来源顺序,把每个有语义的动作、接收、声音变化和道具状态只放到
97
- 它应发生的位置;上游串行事件不得因压缩而并发,也不得把后发生的事件挪到较早镜头。
24
+ 创作者可读说明跟随项目语言;可复制正文跟随 `short-drama.json#/format/prompt_language`。没有
25
+ `short-drama.json` 时正文默认
26
+ 使用 `en`,并在同一任务中保持一致;不能从创作者说明语言推断提示词语言。
98
27
 
99
- - `reviewed_invariant`:动作量必须让演员有时间完成镜头的故事变化;是否能完成由审查者结合当前资料判断,不用动词数或固定秒/动作公式硬挡。
100
- - `craft_default`:短镜头优先一个主要动作,加一个必要反应;复杂过程请求分镜拆镜或延长。
101
- - `taste_option`:克制、爆发、停顿、喜剧节奏等取决于角色和导演意图。
102
-
103
- ### 3. 按七部分编写运动说明
104
-
105
- 1. **起点 `start_anchor`**:只重述开动所需的姿态、重心、目光、手、持物和空间关系。
106
- 2. **有序动作 `ordered_subject_motion`**:谁先做什么、方向/路径、物理接触与先后;不要用一串“同时”。
107
- 3. **表演过程 `performance_arcs[]`(按需)**:只有承担可见变化的人进入;根据本镜实际需要写
108
- trigger、receive、mask/visible leak、choice 或 landing,不把六项变成必填拍表。空镜、道具细节、
109
- 纯空间转场或只有物理动作时省略这两个字段;需要时从
110
- [表演/注意交接片段](assets/performance.fragment.json) 插入统一结构,多人物注意真正交接时才写
111
- `attention_handoffs[]`。
112
- 4. **摄影机 `camera`**:一次有动机的移动,写起点、速度/节奏和终点;或明确固定机位。
113
- 5. **环境与声音 `environment_motion/audio`**:只写有剧情和连续性依据的环境运动、对白、画外音、
114
- 环境声、音效和音乐意图;本镜 `shot_ref` 指向的 accepted scene plan 有 `sound_strategy` 时,
115
- 才逐镜投影其进入、撤出、距离、留白和 bridge,不在 motion 再保存第二条 plan ref。
116
- 6. **时间 `timing_plan`**:用阶段/顺序为主;需要精确时间时,明确段落总和必须正好等于镜头时长——超出会被截断,不足的余量会被执行端用未经批准的动作填满。
117
- 7. **结束报告 `end_report`**:说明当前描述怎样到达分镜负责的连续性终点;终点要求可见完成时,
118
- 写清动作接触、物件归属、位置或可观察结果,抽象的“处理、履行、完成”不能替代这些事实;
119
- 终点若只要求过程开始,也不得擅自推进到完成。结束报告只用于比较,不是新的权威来源。
120
-
121
- ### 4. 不重复参考帧已经说明的内容
122
-
123
- 如果绑定的参考帧已经说明人物外貌、服装、场景构图和光线,正文就聚焦“从此刻开始怎么变”。只重复动作执行中容易出错的局部事实,如“右手仍握住铜夹”。不要复制完整人物/场景设定,也不要用“与参考一致”替代必要的起点信息。
124
-
125
- 每条参考绑定还要声明稳定 `slot_id`、显式 `order` 与 `role / may_control / must_not_control`。
126
- 数组重排或插入参考不得改变已有槽位用途。身份参考不自动决定
127
- 构图,构图或尺度参考不自动带入图中人物、服装、文字、道具和故事状态;先做像素/文字
128
- 检查,再使用允许参考的内容。只有创作者/参考图权利人的可核对说明,或运行环境获授权
129
- 后形成的输入参考图检查记录,才能给出结论;说明记录写 `creator_described`,视觉检查写
130
- `visually_inspected`,两者都没有时保持 `unverified`。这不是媒体生成
131
- 或成片验收。
132
-
133
- ### 5. 检查冲突与单镜头边界
134
-
135
- - `structural_invariant`:明确时间段相加正好用完镜头时长(既不超出也不留余量);同一时间区间不能既固定机位又摇、移、手持,除非写清切换;引用必须可解析;`end_report` 必须匹配来源终点。
136
- - `reviewed_invariant`:动作物理可行、存在表演变化时弧线可见、摄影有动机、没有语义发明。
137
- - `craft_default`:环境和摄影只支持注意、压力、揭示、结盟或转场,不用来装饰每一镜。
138
- - `taste_option`:固定或移动机位、焦段语汇、口型精度和音乐密度由项目配置决定。
28
+ ## 工作流
139
29
 
140
- 最后串读整场:上一镜结束边界与下一镜冻结首帧逐项相等;所有切换继续沿用已接受工作侧、
141
- 屏幕方向与可命名空间锚点。同一句对白在相邻镜头中的开始、延续、停顿与结束也必须接得上,
142
- 不能在前镜结束后又无依据续说。同一句跨过多镜时,每镜显式说明画内/画外延续、停顿或结束,
143
- 中间镜不能省略声音状态。任一处不一致先退回修正,不靠流畅措辞掩盖。
30
+ 1. 写不能动的边框:起始帧锁定的身份、造型、空间、持物、光态和构图不可漂移。
31
+ 2. 确定本镜唯一主要变化和可验证终点。
32
+ 3. 写“起点 → 触发 → 主体动作 → 次级反应 → 运镜 → 声音 → 终点”,必要时用秒数分段。
33
+ 4. 删除参考帧已经说明的静态外观,只保留防漂移约束。
34
+ 5. 检查不跨下一镜、不要求互斥动作、不让人物或道具瞬移变形。
35
+ 6. 用户要整集就完成整集,镜头组只是内部批次。
144
36
 
145
- 一个已经设计好的镜头只保持一个剪辑边界。不要在镜头内部偷藏未声明的切镜;打包也不改变源镜头可以单独审查的要求。
37
+ ## 提示词要求
146
38
 
147
- 预览时从现有 shot/keyframe/boundary/dialogue/reference/config refs **派生**文本准备度,
148
- 逐镜按实际声明的 scope 分别显示 `ready | blocked` 与真实 `blocking_gaps`;不把它写回 motion spec
149
- 形成第二套状态。
150
- 准备度只说明文本是否足以交给外部执行,绝不保证生成后的身份、表演、口型、混音、剪辑或市场效果。
151
- 逐字台词缺失时,只阻断逐字台词时序、台词表演/口型可行性及“具体总时长可演”的判断;
152
- 仍可预览不依赖逐字语速的候选构图、动作先后和相对节奏,不得自编台词。其他缺口同样只阻断
153
- 其实际支持的交付判断。只有全部适用 scope 都为 `ready`,才可声称整体 `delivery-ready`。
39
+ - 从可见起点开始,以可验证终点结束。
40
+ - 主体、动作对象、方向、幅度、速度和先后关系明确。
41
+ - 表演写动作与反应,不写无法执行的抽象结果。
42
+ - 运镜与人物动作不争夺注意力;复杂运镜必须有叙事理由。
43
+ - 声音只写该镜需要的对白、画外音、环境或转场职责,不擅自补歌词。
44
+ - 正文可直接复制,不含占位符、流程说明、文件路径或 QA 结论。
154
45
 
155
- 本环节新增的动作/表演、摄影、声音与相对节奏选择也按类别总括,不逐镜复述;只单列会改变
156
- 信息时机、因果顺序、观众立场或表演所有权、可读文字、场尾落点、制作成本或回退路径的高影响例外。
157
- 未被总括的新增选择要么删除,要么补入接受摘要。
46
+ ## 按需知识
158
47
 
159
- 若创作者声明了多镜交付容器,一个容器可以按来源顺序承载若干连续镜头:此时切换只允许出现在成员镜头边界上,容器时长必须等于成员镜头已接受时长之和,镜头目的与逐镜可审查性不变。容器分层、成员资格与两级算术见 [delivery-profile.md](references/delivery-profile.md)。
48
+ 默认只读本 SKILL、当前分镜和必要视觉事实。遇到对应问题时只打开一份:
160
49
 
161
- 写完容器记录后用 [container_check.py](scripts/container_check.py) 做一次**全集对账**:
50
+ - 阶段边界与规则分级:[阶段契约](references/stage-contract.md)
51
+ - 单镜运动正文的最小配方:[运动配方](references/motion-recipe.md)
52
+ - 外部执行需要的明确动作语法:[生产提示词语法](references/production-prompt-grammar.md)
53
+ - 多人表演、口型和精确时序:[表演与动作时序](references/performance-action-timing.md)
54
+ - 运镜、声音和相邻镜头连续性:[摄影与声音连续性](references/camera-audio-continuity.md)
55
+ - 动作负载、形变和生成风险:[可生成性](references/generability.md)
56
+ - 多镜容器或静态漫剧的交付方式:[交付形态](references/delivery-profile.md)
57
+ - 完成前的边界检查:[审查与示例](references/review-and-fixtures.md)
162
58
 
163
- ```bash
164
- python3 <skill-dir>/scripts/container_check.py \
165
- 剧集/EP001/storyboard/delivery-containers.jsonl \
166
- --shots 剧集/EP001/storyboard/shots.jsonl
167
- ```
59
+ 用户明确要求时间线音乐时,在本文档增加独立章节,写使用区间、剧情功能、进入/退出、动态曲线和
60
+ 禁用项;歌词必须来自用户提供或明确接受的文本。静态漫剧只需要关键帧切换与配音时可以跳过逐镜
61
+ 视频运动提示词,直接进入生产预览。
168
62
 
169
- 逐个容器都正确不代表全集的账是对的:一个镜头同时进两个容器会让全集时长凭空多一段,
170
- 一个镜头谁都没装会让它无声消失——**两种错误在单容器视角下都看不见**。脚本做的是集合
171
- 与算术比对:成员是否重复认领、成员是否属于本集、容器时长是否等于成员之和、容器加散镜
172
- 是否正好等于全集总时长。
63
+ ## 完成与投产
173
64
 
174
- 未装容器的散镜是合法的,脚本只报告不判错;时长尚未确定的镜头列在 `unmeasured_shots`
175
- 并排除在总和之外,这样"还没做完"不会被当成"做错了"。
65
+ 每个点名镜头都有明确起点、主变化、时序、运镜/声音边界和可验证终点,且与相邻镜头连续,即完成。
66
+ 实际生成转 `$short-drama-produce`,先展示精确 job 并取得显式确认;本技能不调用外部服务。
176
67
 
177
- 若 `timing_plan` 写的是显式秒段,再用
178
- [motion_timing_check.py](scripts/motion_timing_check.py) 核 `VID-04` 的算术:
179
-
180
- ```bash
181
- python3 <skill-dir>/scripts/motion_timing_check.py \
182
- 剧集/EP001/storyboard/motion-specs.jsonl \
183
- --shots 剧集/EP001/storyboard/shots.jsonl
184
- ```
68
+ ## 安装维护
185
69
 
186
- 超出与不足都算违约,且不足的后果更重:未分配的余量不会渲染成静止画面,执行端会用
187
- 没有上游来源的动作、表情或运镜把它填满。脚本还会报未声明的区间重叠、`declared_total`
188
- 与实际覆盖不一致,以及 `boundary_refs.duration` 相对镜头已接受时长过期。
189
- `relative` 计时不做算术断言,列在 `relative_plans` 里报告而不是判过。
190
-
191
- 若当前版本是局部补拍或替代实现,才增加 `coverage_scope` 并标明 `pickup | alternate`,
192
- 按 [补拍/替代范围片段](assets/coverage-scope.fragment.json) 用同一文件内稳定的运动记录 ID
193
- 说明母版和补充关系;每项原文要求都要对应到
194
- 当前运动字段或说明去向。补拍默认只补充、不替代母版;运动规格只能提出替代请求,
195
- reviewer 在下游审查结论中决定,不能回写运动规格形成循环引用。
196
-
197
- 若收到绑定准确 prompt/spec/reference/config 的项目生产观察,只修改诊断涉及的运动字段,并在
198
- 修订提案中列出 `change_set`、`preserve_set` 和仍未知结果;不能把重复提交相同文本当修复,
199
- 也不能把一次配置下的观察提升为通用动作、表演或运镜规则。
200
-
201
- ### 6. 预览、接受与发布
202
-
203
- 先向创作者展示起止边界摘要、动作/表演顺序、摄影/声音选择、时长警告和可复制提示词。接受后写:
204
-
205
- - `剧集/<EP>/storyboard/motion-specs.jsonl`:首行 `sources` 声明本文件引用的上游快照,
206
- 其后每行一条运动规格,字段与只读来源引用见
207
- [motion-spec.jsonl.md](assets/motion-spec.jsonl.md);
208
- - `剧集/<EP>/storyboard/delivery-containers.jsonl`:**仅当项目声明了多镜交付容器时**,
209
- 记录容器成员顺序、各成员已接受时长的只读引用与容器时长,模板见
210
- [delivery-container.jsonl.md](assets/delivery-container.jsonl.md);
211
- - `剧集/<EP>/storyboard/video-prompts.md`:由已接受规格与容器记录生成的文本版本,元信息写明用的是哪个配方。
212
-
213
- `generic_prompt` 与派生文本是同一段交付文本,写成执行端可以直接下单的画面描述:从已接受起点的
214
- 姿态与持物说起,逐条写动作、接触、摄影机行为与终点状态。写满的样子见
215
- [生产提示词语法惯例](references/production-prompt-grammar.md),那里有成稿与一段合成反例。
216
- 它只含要被拍出来的内容(`VID-22`)——把规格字段名、规则原文或约束清单复述进去,
217
- 读起来很规范,但执行端拿不到任何可以画出来的名词。
218
-
219
- 自然语言改提示词时,先展示规格字段怎样变化和重新生成的文本预览;若改动触碰分镜或
220
- 剧本负责的内容,保持当前文件不变,并把修改请求交给对应技能。项目工具可用时用 `publish`
221
- 发布跨文件产物并声明直接输入;独立运行时直接写出本阶段文件。
222
-
223
- ## 完成标准
224
-
225
- - 提示词从准确的 `start_anchor` 出发,以明确顺序实现已确认终点,不改变时长、对白或下一镜;
226
- - 若本镜确有表演变化,表演有触发、处理与可见结果;动作量可行,摄影与环境/声音服务镜头目的;
227
- - 参考帧已知外观不被重复描述淹没,通用提示词可独立复制;
228
- - 交付文本只含要拍出来的画面内容:没有参考图文件名、版本号、内部标记、草图指代或任务备注;同一角色的参考绑定在每次提及处一致,不出现只绑一半的写法;
229
- - 已完成当前批次的本地结构检查;需要内容 verdict 时另行请求 `$short-drama-review`;
230
- - 没有媒体文件、供应商接口或远程任务字段、远端 ID 或“视频已生成”声明。
231
-
232
- ## 投产交接
233
-
234
- 用户要求把已接受运动规格真正生成视频时,交给 `$short-drama-produce`。传递准确的 motion
235
- spec、起止帧/参考文件、时长、画幅、声音要求和目标路径;生产技能必须展示完整预览并取得
236
- 本次任务的明确确认后才可调用外部 adapter。本技能本身仍只负责规格和提示词。
237
-
238
- 环境声与事件音随镜头走,写在各自运动规格的 `audio` 里;已被镜头认领的 `[SFX]` 剧本块,
239
- 它声明的那个声音要出现在这一镜的 `audio` 里,否则这条已接受的事实到交付时就消失了。
240
-
241
- 音乐承担跨镜、跨场或主题曲职责时,写独立的 provider-neutral
242
- `剧集/<EP>/storyboard/music-specs.jsonl`,并用
243
- [music_spec_check.py](scripts/music_spec_check.py) 校验。音乐是时间线层,不能为了某个
244
- 供应商方便而复制进每镜视频提示词。生成时把已接受的 prompt、歌词(如有)、引用和目标路径
245
- 作为独立 `music` job 交给 `$short-drama-produce`。
70
+ 只有安装、升级或排障时运行 `python3 scripts/selftest.py`。
@@ -103,17 +103,17 @@ pan 同时微调焦点、handheld 带自然呼吸、dolly 配合轻微 tilt 未
103
103
 
104
104
  ## 4. 对白、口型与声音
105
105
 
106
- 若上游有 accepted `scene_visual_plan.sound_strategy`,先把整场主导声源、撤出/恢复、距离变化、
106
+ 若分镜已经明确整场声音策略,先把主导声源、撤出/恢复、距离变化、
107
107
  主动留白与 sound bridge 分配到准确镜头,再写本镜 audio。逐镜实现必须能与相邻镜接上,不能
108
108
  让每镜各自重新启动一套环境音。场次计划没有登记的故事声源不得由本层发明;音乐仍服从下文的
109
109
  时间线边界,也不能替代表演或转向。
110
110
 
111
111
  ### 精确引用
112
112
 
113
- Motion spec 存 dialogue/VO/SFX/audio 的引用:`src` 指向文件头 `sources` 声明的那个快照,
114
- 再加记录与字段;copyable prompt 可呈现 exact accepted line 或引用标记,取决于交付需要,但不得改字、增删、交换说话人或把对白改 VO。
113
+ 每个 `MOTION-...` 直接引用 `剧本.md` 的场景 ID、准确对白/VO/OS/SFX 和对应 `SHOT-...`。可复制正文
114
+ 按交付需要呈现逐字台词或声源说明,但不得改字、增删、交换说话人或把对白改成 VO。
115
115
 
116
- 同一句 accepted dialogue 跨镜延续时,把相邻提示词串读,说明它在本镜是开始、画外延续、
116
+ 同一句对白跨镜延续时,把相邻提示词串读,说明它在本镜是开始、画外延续、
117
117
  被打断还是到此结束;不得在前镜声称已经说完,后镜又让同一句继续。没有逐字原句时只保留
118
118
  准确引用和延续关系,不为填满节奏补写台词。
119
119
 
@@ -225,16 +225,18 @@ Resolvable ref/显式否定可结构检查;delivery 是否语义背离则要 r
225
225
 
226
226
  ```markdown
227
227
  - **请求 owner**:`storyboard | write | assets`
228
- - **source evidence**:src + 记录/字段,以及该 `sources` 条目的 artifact
228
+ - **来源证据**:文件、场景/镜头 ID 与必要短引文
229
229
  - **当前边界**:精确值
230
230
  - **motion 需要**:期望变化与原因
231
231
  - **影响**:purpose/feasibility/continuity
232
232
  - **建议**:split | extend | reblock | amend dialogue | reconcile asset
233
- - **未执行**:列明保持 byte-identical 的 owner files
233
+ - **未执行**:列明本轮没有修改的 owner 文件
234
234
  ```
235
235
 
236
- Video-prompts 可以提议,不能应用。若 reported end 不同于 source end:先判断是 prompt 没实现(video-prompts 修)还是创作确需新边界(storyboard 修);无论哪种都不把 reported end 当成下一镜 authority。
236
+ Video-prompts 可以提议,不能替 owner 应用。若实际终点不同于分镜终点:先判断是提示词没实现
237
+ (video-prompts 修)还是创作确需新边界(storyboard 修);无论哪种都不把观察到的终点当成下一镜权威。
237
238
 
238
239
  ### Handoff 核对
239
240
 
240
- 逐字段比较 motion end report 与 shot continuity out;next shot 仍直接读取 storyboard-owned start。Match 才是实现证据,不能用一句“保持连续”代替 position/gaze/hands/prop 等关键字段核对。
241
+ 逐字段比较运动终点与镜头终点;下一镜仍直接读取分镜拥有的起点。匹配才是实现证据,不能用一句
242
+ “保持连续”代替位置、目光、双手、持物等关键事实核对。
@@ -81,11 +81,9 @@
81
81
  **`structural_invariant`**:容器只能承载已接受镜头;容器时长等于其成员镜头已接受时长
82
82
  之和;镜头边界、镜头目的与逐镜独立可审查性不因打包发生变化(VID-13)。
83
83
 
84
- 这条不变式必须**可本地校验**,所以多镜容器要有一条 canonical 记录承载成员顺序、各成员
85
- 已接受时长的只读引用与容器时长——字段、校验点与所有权见
86
- [delivery-container.jsonl.md](../assets/delivery-container.jsonl.md)。渲染出来的交付文本
87
- 是它的缓存,不是权威;只写在文本里的容器无法被引用、无法标 `stale`,也无法复审。
88
- 单镜交付不需要这条记录,本节的算术由运动规格自身的镜头时长满足。
84
+ 这条不变式必须**可本地核对**,所以需要多镜打包时,在 `视频提示词.md` 增加“交付分组”章节:
85
+ 用稳定组 ID 依次列出成员 `MOTION-...` / `SHOT-...`、各镜时长、容器总时长,以及同场、连续、
86
+ 同一地理/资产链的理由。单镜交付不需要额外章节。
89
87
 
90
88
  ### 双向和不变式
91
89
 
@@ -11,8 +11,8 @@
11
11
 
12
12
  ## 1. 什么时候适用
13
13
 
14
- **只在项目声明的制作形态由生成模型承担画面时适用**(见 `short-drama.json` 的
15
- `creator_authority.production_profile`)。实拍项目不受本文件约束——演员能完成的精细动作,
14
+ **只在项目声明的制作形态由生成模型承担画面时适用**(见 `视觉设定.md` 的制作形态)。实拍项目
15
+ 不受本文件约束——演员能完成的精细动作,
16
16
  生成模型不一定能。形态未声明时保持未决,不要预先按生成条件裁剪动作。
17
17
 
18
18
  本文件不否定任何动作的戏剧价值,只判断**它能不能被当前交付方式实现**。同一个动作,
@@ -48,36 +48,26 @@
48
48
 
49
49
  ### 参考图用途与补拍范围
50
50
 
51
- 每个 `reference_bindings` 条目声明准确的产物引用、用途 `role`、`may_control`、
52
- `must_not_control` 与检查状态。`start_frame` 可以决定本镜起始构图和可见状态,却不能
51
+ 每张参考声明准确的可见 ID、用途、允许控制、不得控制与观察状态。起始帧可以决定本镜起始构图和
52
+ 可见状态,却不能
53
53
  提供尚未发生的终点;构图、尺度、效果参考也不能带入图中没有来源的人物、文字、
54
54
  道具或事件。只有创作者/参考图权利人的可核对说明,或运行环境获授权后形成的准确
55
- `reference_observation_ref` 才能支持像素/文字结论;只有文本记录时保持 `unverified`。
56
-
57
- **`VID-12 · reviewed_invariant`**:普通母版省略 `coverage_scope`;只有局部补拍或替代实现才增加
58
- 该对象,并按 [`coverage-scope.fragment.json`](../assets/coverage-scope.fragment.json) 的统一结构,
59
- 用 `mode: pickup | alternate` 区分。补拍版/替代版用同一文件内的 `master_motion_id` /
60
- `supplements_motion_ids` 说明它补什么,避免让文件引用自身;
61
- `source_obligations` 把动作、反应、对白、揭示、结束边界与已确认的项目要求分别绑定来源,
62
- 并把 `disposition` 对到当前 `motion_field`。运动规格只能提交 `replacement_intent`;reviewer
63
- 在下游审查结论中指名替代版或母版的记录后作出决定,不能把审查引用回写运动规格
64
- 造成循环引用。未承担的内容保留在母版/其他补拍版本,或退回分镜修改,不能随更短的
65
- 提示词消失。
55
+ 观察说明才能支持像素/文字结论;只有文本引用时保持“未验证”。
66
56
 
67
- ## 末镜交接
57
+ **`VID-12 · reviewed_invariant`**:普通母版不写覆盖清单;只有局部补拍或替代实现才在同一
58
+ `MOTION-...` 章节下写“版本关系”。用稳定 ID 指明母版与补拍,逐项列出动作、反应、对白、揭示、
59
+ 结束边界和项目要求由本版本、母版、另一补拍承担,还是必须退回分镜。运动提示词只能提出替代;
60
+ reviewer 结合完整故事义务决定,不能让未承担内容随更短提示词消失。
68
61
 
69
- **`VID-09 · structural_invariant`**:下一镜起点要么引用已经存在的记录,
70
- 要么使用明确的 `provisional` 定位信息,不得伪造记录或 `sources` 条目。
62
+ ## 末镜交接
71
63
 
72
- `next_start` 只有在目标已经存在时,才能写成引用:`src` 指向本文件 `sources` 里声明的那个
73
- 快照,`record_id` 指向该快照里已存在的记录。最后一镜可对照已有的
74
- 单集卡或分集表交接;若下一集尚未建立,就写 `next_start_locator` 和 `provisional`
75
- 状态。不得伪造 `EP002-START` 记录并声称匹配。
64
+ **`VID-09 · structural_invariant`**:下一镜存在时直接引用真实 `SHOT-...` 起点。最后一镜可对照
65
+ 已有分集规划;下一集尚未建立时明确写“下一集起点未定”,不得伪造一个不存在的 ID 并声称匹配。
76
66
 
77
67
  ## 1. 目的、输入与权属
78
68
 
79
- 视频提示词不负责“想一个更精彩的镜头”,而是把已接受镜头的变化写成能按时间执行的过程。
80
- 输入包括:镜头与关键帧快照、准确的资产引用、时长、镜头目的、起止边界、对白、画外音、音效和声音引用、
69
+ 视频提示词不负责“想一个更精彩的镜头”,而是把已确认镜头的变化写成能按时间执行的过程。
70
+ 输入包括:镜头与关键帧、准确的资产引用、时长、镜头目的、起止边界、对白、画外音、音效和声音引用、
81
71
  进出连续性、视觉/声音方向和可选的制作能力配置。
82
72
 
83
73
  分镜负责地点/时间、资产版本、构图意图、时长、对白、起止姿态/位置/目光/双手/持物、
@@ -88,7 +78,7 @@
88
78
  写提示词前先做内部卡片:
89
79
 
90
80
  ```text
91
- 镜头/关键帧:文件头 `sources` 声明的快照 key(`src`)加准确的记录与字段
81
+ 镜头/关键帧:准确的 `SHOT-...` 与它引用的 `IMG-...`
92
82
  镜头目的:观众的注意、信息或情绪要怎样改变
93
83
  时长:已确认时长
94
84
  起点:姿态 / 重心 / 目光 / 双手 / 持物 / 空间关系
@@ -87,7 +87,7 @@
87
87
  表演与台词的说话方式都应当从这一个括注派生;三者互相矛盾时以剧本括注为准,需要改动
88
88
  就发修订请求,不在提示词里自行折中。
89
89
 
90
- ### 单人或多人 `performance_arcs[]`
90
+ ### 单人或多人表演弧
91
91
 
92
92
  每个真正承担本镜可见变化的角色才写一条;状态未变的旁观者不因字段完整度进入主表演通道。
93
93
  以下是可选词汇,不是六项必填拍表:
@@ -97,26 +97,23 @@
97
97
  3. **mask**:角色确实在掩饰、继续或压住什么时才写;
98
98
  4. **visible_leak**:掩饰漏出的目光、尾音、手部、距离或物件动作,且当前景别读得到;
99
99
  5. **choice**:说、做或刻意不做一个有方向的选择;
100
- 6. **landing**:选择落在 accepted end 状态。
100
+ 6. **landing**:选择落在分镜明确的终点状态。
101
101
 
102
- 需要时从 [`performance.fragment.json`](../assets/performance.fragment.json) 复制统一结构;
103
- `actor_ref`、触发和注意交接对象都写成引用:`src` 指向文件头 `sources` 声明的那个快照,
104
- `record_id` 指向该快照里的记录;不写裸角色名或另造引用形状。注意归属方所在的产物
105
- (设定集、分镜或剧本)也在同一个 `sources` 里声明一个 key。
102
+ 需要时在对应 `MOTION-...` 下按人物分条写;人物使用 `视觉设定.md` 的稳定 ID,触发与注意交接指向
103
+ 场景或镜头的可见 ID,不靠同名猜身份。
106
104
  只保留能让本镜更可演、更可读的字段。例如角色认出桌上印章后仍试图把原句说完,尾音降低、
107
105
  右手离桌,最后停止阻拦并让出通道;若没有掩饰,就删除 `mask` / `visible_leak`,不要填 `none`。
108
106
 
109
107
  若本镜只需要“听见门响后停止翻页”,写触发和可见动作即可,不必把其余字段补成同义句。
110
108
 
111
109
  空镜、道具细节、纯空间转场、无人物镜头,或只有物理动作而没有可见内在处理的镜头,省略
112
- `performance_arcs[]`。单人镜也不因人数自动生成 arc;多人镜更不是给每个人复制同一“震惊”。不同人物可以早认出但继续说、
110
+ 表演弧。单人镜也不因人数自动生成;多人镜更不是给每个人复制同一“震惊”。不同人物可以早认出但继续说、
113
111
  晚半拍才让路、故意制造噪声掩饰,或看见别人停顿后才理解变化。所有差异都要来自角色立场、
114
112
  已接受信息和空间关系。
115
113
 
116
- 只在注意真正交接时,用 `attention_handoffs[]` 简写“谁/什么拥有注意 → 哪个可见或可听触发 →
117
- 注意转给谁/什么”;没有交接时省略该字段。
118
- 交接两端可以是角色、道具、证据、声源或已建立的空间区域;分别指向拥有该事实的那个产物的
119
- `src` 与记录,不要为了套片段把道具或空间伪装成 `CHAR-*`。
114
+ 只在注意真正交接时,简写“谁/什么拥有注意 → 哪个可见或可听触发 → 注意转给谁/什么”;没有交接
115
+ 就不补这一段。交接两端可以是角色、道具、证据、声源或已建立的空间区域;使用它们在
116
+ `视觉设定.md` / `分镜.md` 中的可见 ID,不要为了套人物格式把道具或空间伪装成角色。
120
117
  交接不是全员同步转头:例如说话者尾音降低 → 最近的听者先停手 → 群体让路 → 主角获得空间。
121
118
  每一跳说明为何当前景别、遮挡和声音能读到;细微眼神在远景不可读时,改成视线转移加手部停顿,
122
119
  而不是只增加情绪形容词。
@@ -214,9 +214,8 @@
214
214
  4. **台词负载**:从所选时长、语速、表演动作和口型能力反推;放不下就删减、拆镜或
215
215
  请求剧本修订,不用固定字数替代试听。
216
216
  5. **收到生产反馈后的修订要可解释**:只改变当前诊断所需变量(拆元素、补关键状态
217
- 或换措辞);必须联动的变量一起记录。若形成补拍或替代版,保留修改前后版本、
218
- `coverage_scope` 与逐项 `source_obligations` 和 `disposition` 记录;普通母版不增加这层账目。
219
- 本技能不负责重投。
217
+ 或换措辞);必须联动的变量一起记录。若形成补拍或替代版,在 `视频提示词.md` 中写明它与母版
218
+ 的关系、修改前后差异,以及每项原文义务由哪一版承担;普通母版不增加版本账目。本技能不负责重投。
220
219
  6. **生产预算不由本技能猜**:可读取创作者提供的项目观察来收窄文本,但不移植
221
220
  无来源的通用成本比例,也不从文字规格声称模型效果。
222
221
 
@@ -4,80 +4,51 @@
4
4
 
5
5
  1. 审查顺序
6
6
  2. 证据量表
7
- 3. 诊断目录
7
+ 3. 完成前结构检查
8
8
  4. 合成正例
9
9
  5. 合成反例
10
10
 
11
11
  ## 1. 审查顺序
12
12
 
13
- 先验证 refs、显式时长、camera interval、音频否定与 end equality,再由审查者看 performability、action feasibility、camera motivation 和 semantic invention。Reviewer 写 finding,不改 motion、shot 或 screenplay。
13
+ 先核对可见 ID、显式时长、摄影机区间、声音来源和终点一致,再由审查者判断表演可执行性、动作负载、
14
+ 运镜动机与语义发明。Reviewer 写 finding,不替 motion、shot 或 screenplay owner 修改来源。
14
15
 
15
- Finding 必须含被引用快照的 artifact(从该文件 `sources` 声明里读出)、引用片段、影响、
16
- required fix、owner、severity、status。禁止用 prompt 长度、动词数量、固定动作/秒或“AI 味”替代证据。
16
+ Finding 必须含文件与 `MOTION-...` / `SHOT-...`、必要短引文、影响、修订结果、owner、严重程度和状态。
17
+ 禁止用提示词长度、动词数量、固定动作/秒或“AI 味”替代证据。
17
18
 
18
19
  ## 2. 证据量表
19
20
 
20
21
  | 维度 | 核心问题 | 必须引用 |
21
22
  |---|---|---|
22
- | Start fidelity | 第一动作是否从 keyframe/shot start 真正可接上? | start 字段与 prompt 起始句 |
23
- | Ordered action | actor、方向、接触、先后和结果是否清楚? | action stages |
24
- | Performance | 触发、处理、选择、landing 是否可见且符合 agenda? | source beat/shot purpose + motion |
25
- | Action budget | duration 内能否保留故事动作、对白与 reaction? | duration、距离、台词、动作、camera |
26
- | Camera | lock/move 是否一致,且因注意/压力/揭示而发生? | camera interval + shot purpose |
27
- | Environment | 是否只动了有依据的环境,未发明天气/事件? | accepted continuity + environment |
28
- | Dialogue/audio | exact refs、`speaker_ref`、可选 `voice_direction_ref`、VO/OS/SFX 与本场 delivery 是否分别保持? | source audio fields + character voice direction + prompt |
29
- | End fidelity | reported end 是否逐项等于 continuity out? | end report + source end |
30
- | Economy | frame 已承载外观是否被无谓倾倒? | reference contents + copy block |
31
- | Shot boundary | 是否偷改 duration/end/next shot,或在单个镜头内部藏未声明的 cut? | source shot + motion |
32
- | Segment integrity | 每个计时段是否只有一个连续视角?各段相加是否正好等于**所属镜头**的已接受时长? | segment 列表 + accepted shot duration |
33
- | Container arithmetic | 容器承载了哪些已接受镜头?容器时长是否等于成员时长之和?成员是否顺序连续、同一绑定链、不跨场次、各自可单独审查? | container 成员列表 + 各镜 accepted duration |
34
- | Deliverable text | 交付文本里是否只剩要拍的画面内容,没有文件名、版本号、锁定标记、草图指代或任务备注? | prompt 正文 |
35
-
36
- 语义 finding 的修复应指出删/改哪一段 motion,或该向哪个 owner 发 revision request,而不是笼统说“动作自然一点”。
37
-
38
- ## 3. 诊断目录
39
-
40
- | code | classification | enforcer | 默认 severity | owner | 含义 |
41
- |---|---|---|---|---|---|
42
- | VID_SOURCE_REF_UNRESOLVED | structural_invariant | validator | error | video-prompts | shot/keyframe/dialogue/audio ref 未解析:`src` 在本文件 `sources` 里没有对应条目、引用没有给出任何上游绑定,或解析出的记录/字段在目标快照里不存在 |
43
- | VID_EXPLICIT_TIMING_OVERFLOW | structural_invariant | validator | error | video-prompts | 显式时间终点/非重叠总量超 duration |
44
- | VID_EXPLICIT_TIMING_SHORTFALL | structural_invariant | validator | error | video-prompts | 裁剪到镜头长度内的分段并集短于 duration;开头留空、中间留空与结尾留空都算,余量会被无来源动作填满 |
45
- | VID_TIMING_MODE_INCONSISTENT | structural_invariant | validator | error | video-prompts | `timing_plan.mode` 写 `relative` 却有分段标 `explicit`,两种计时同时声明 |
46
- | VID_EXPLICIT_TIMING_UNDECLARED_OVERLAP | structural_invariant | validator | error | video-prompts | 分段区间重叠但未声明重叠关系,合计无法判定 |
47
- | VID_EXPLICIT_TIMING_UNPARSEABLE | structural_invariant | validator | error | video-prompts | 声明 explicit 却没有可读秒区间,无法做 VID-04 算术 |
48
- | VID_DECLARED_TOTAL_MISMATCH | structural_invariant | validator | error | video-prompts | `declared_total_or_endpoint_seconds` 与分段实际覆盖不一致 |
49
- | VID_DURATION_PROJECTION_STALE | structural_invariant | validator | error | video-prompts | `boundary_refs.duration.value_seconds` 与镜头已接受时长不一致 |
50
- | VID_CAMERA_INTERVAL_CONFLICT | structural_invariant | validator | error | video-prompts | 同一区间 lock 与 move 等显式冲突 |
51
- | VID_END_REPORT_MISMATCH | structural_invariant | validator | error | video-prompts | reported end 不等于 storyboard continuity out |
52
- | VID_BOUNDARY_OVERRIDE | structural_invariant | validator | error | video-prompts | motion 写入 duration/end/next-shot override |
53
- | VID_ACTION_INFEASIBLE | reviewed_invariant | reviewer | error | video-prompts/storyboard | 一般动作负载不可行或掩盖故事变化 |
54
- | VID_SEMANTIC_INVENTION | reviewed_invariant | reviewer | error | video-prompts | 新造故事、关系、知识、状态或音频事实 |
55
- | VID_CAMERA_UNMOTIVATED | craft_default | reviewer | warning | video-prompts | movement 无助于目的/注意变化 |
56
- | VID_REFERENCE_DUMP | craft_default | reviewer | warning | video-prompts | bound frame 已带外观却重复整本 设定集 |
57
- | VID_HIDDEN_CUT_IN_SEGMENT | reviewed_invariant | reviewer | error | video-prompts | 单个计时段内藏入视角或空间跳变,等于一次未申报的剪辑 |
58
- | VID15_SHOT_PACKED_TWICE | structural_invariant | validator | error | video-prompts | 同一镜头被两个容器认领,全集时长凭空多一段 |
59
- | VID15_MEMBER_IS_NOT_AN_EPISODE_SHOT | structural_invariant | validator | error | video-prompts | 容器成员不属于本集镜头集合 |
60
- | VID15_MEMBER_SHOT_HAS_NO_DURATION | structural_invariant | validator | error | video-prompts | 被装箱的镜头没有数值时长,容器时长无从成立 |
61
- | VID15_CONTAINER_DURATION_IS_NOT_THE_SUM | structural_invariant | validator | error | video-prompts | 容器时长不等于成员已接受时长之和 |
62
- | VID15_EPISODE_TOTAL_DOES_NOT_RECONCILE | structural_invariant | validator | error | video-prompts | 容器加散镜不等于全集镜头时长总和 |
63
- | VID15_MEMBER_ORDER_IS_NOT_A_SEQUENCE | structural_invariant | validator | error | video-prompts | 成员 `order` 不是从 1 开始、升序、无重复无跳号 |
64
- | VID15_MEMBER_HAS_NO_ACCEPTED_DURATION | structural_invariant | validator | error | video-prompts | 成员没有投影它所装镜头的时长 |
65
- | VID15_MEMBER_DURATION_IS_STALE | structural_invariant | validator | error | video-prompts | 成员的 `accepted_duration` 与它所装镜头的值不一致 |
66
- | VID15_MEMBERSHIP_BASIS_MISSING | structural_invariant | validator | error | video-prompts | 容器没有记录成员为何同属一个容器 |
67
- | VID15_MEMBERSHIP_BASIS_INCOMPLETE | structural_invariant | validator | error | video-prompts | `membership_basis` 三项里有结论留空 |
68
- | VID15_CONTAINER_HAS_NO_ID | structural_invariant | validator | error | video-prompts | 容器记录没有 `container_id` |
69
- | VID15_CONTAINER_HAS_NO_MEMBERS | structural_invariant | validator | error | video-prompts | 容器没有成员 |
70
- | VID15_CONTAINER_DURATION_MISSING | structural_invariant | validator | error | video-prompts | `container_duration` 缺失或不是秒数 |
71
- | VID15_MEMBER_HAS_NO_SHOT_REF | structural_invariant | validator | error | video-prompts | 成员没有点名它所装的镜头 |
72
-
73
- `VID15_*` 由 [container_check.py](../scripts/container_check.py) 执行。未装容器的散镜与
74
- 时长尚未确定的镜头**只报告不判错**:前者是合法的打包选择,后者是上游还没做完,把它们
75
- 写成缺陷会让"进行中"和"做错了"无法区分。
76
- | VID_UNEXECUTABLE_MICRO_METRIC | craft_default | reviewer | warning | video-prompts | 亚秒偏移、厘米位移、角度数等读起来精确却无法执行也无法验证的计量 |
77
- | VID_INNER_MONOLOGUE_ONLY | craft_default | reviewer | warning | video-prompts | 绝大多数段落只有内心活动,没有可拍的可见事件或有来源的声音 |
78
- | VID_STYLE_ALTERNATIVE | taste_option | reviewer | note | video-prompts | 表演/摄影/声音风格的非阻断选择 |
79
-
80
- 语义问题只能由 reviewer 证据化判断;不要写正则把“缓慢”“同时”或动词数量变成错误。
23
+ | Start fidelity | 第一动作是否从关键帧/镜头起点真正可接上? | 起点事实与正文起始句 |
24
+ | Ordered action | 人物、方向、接触、先后和结果是否清楚? | 动作阶段 |
25
+ | Performance | 触发、处理、选择和落点是否可见且符合人物目标? | 剧本节拍、镜头职责与运动正文 |
26
+ | Action budget | 时长内能否保留故事动作、对白与反应? | 时长、距离、台词、动作、运镜 |
27
+ | Camera | 固定/运动是否一致,且因注意、压力或揭示而发生? | 运镜区间与镜头职责 |
28
+ | Environment | 是否只动了有依据的环境,未发明天气或事件? | 连续性与环境动作 |
29
+ | Dialogue/audio | 逐字台词、说话人、VO/OS/SFX 与本场声音策略是否保持? | 场景 ID、声音事实与正文 |
30
+ | End fidelity | 运动终点是否逐项等于分镜终点? | 终点说明与来源终点 |
31
+ | Economy | 参考帧已承载的外观是否被无谓重复? | 参考内容与可复制正文 |
32
+ | Shot boundary | 是否偷改时长/终点/下一镜,或在单镜内藏切? | `SHOT-...` 与 `MOTION-...` |
33
+ | Segment integrity | 每个计时段是否只有一个连续视角,时间并集是否正好覆盖本镜? | 分段与镜头时长 |
34
+ | Delivery grouping | 多镜分组是否连续、同场、同一地理/资产链,时长是否等于成员之和? | 分组章节与成员时长 |
35
+ | Deliverable text | 可复制正文是否只剩要生成的内容? | 提示词正文 |
36
+
37
+ 语义 finding 的修复应指出删/改哪一段运动,或该向哪个 owner 提出什么修订,不笼统说“动作自然一点”。
38
+
39
+ ## 3. 完成前结构检查
40
+
41
+ - 每个 `MOTION-...` 唯一对应真实 `SHOT-...`,并继承相同时长;
42
+ - 起点、主要变化、分段时序、声音、运镜和终点没有互相冲突;
43
+ - 显式分段的并集既不超时,也不留下由模型自行填充的空白;重叠必须说明;
44
+ - 固定和运动摄影机不在同一区间同时生效;
45
+ - 终点逐项对齐分镜,下一镜仍读取分镜自己的起点;
46
+ - 同一镜头最多进入一个交付分组;分组加散镜恰好覆盖点名范围一次;
47
+ - 静态漫剧只做关键帧切换加配音时可以没有逐镜运动正文;
48
+ - 可复制正文不含文件名、版本号、ID、状态、哈希或任务备注。
49
+
50
+ 未分组的散镜和时长尚未确定的镜头只报告为当前状态,不伪装成质量缺陷。动作可行性、隐藏剪辑、
51
+ 语义发明和无动机运镜仍需 reviewer 结合剧情判断。
81
52
 
82
53
  ## 4. 合成正例
83
54