修:draw-ui / oil-motion 原被当子模块指针收录 ⇒ 改为正常文件入库(两份内容原先对别人是空的)

一、问题(本轮实测)
`draw-ui` 与 `oil-motion` 目录里**各自带一个内嵌 `.git`** ⇒ 上一次提交把它们记成了 **gitlink(子模块指针)**
⇒ 仓库里只存了一个不属于任何远端的 commit id,**别人克隆下来这两份是空的** ✗(`git status` 显示 ` m draw-ui` / ` m oil-motion` = 子模块内容有改动)。

二、处置(可回退)
· 把两处的 `.git` **挪走**(⛔ 不是删除)⇒ `归档/内嵌git-20261008/{draw-ui,oil-motion}.git`;
· `git rm --cached` 掉那两个 gitlink,再 `git add` 两个目录 ⇒ **按正常文件入库**(内容才真的进仓库)。

三、副作用(如实记)
挪走 `.git` 后,这两个技能**不能再原地 `git pull` 取上游更新**(要更新得重新拉一份覆盖);
如需恢复其本地仓库,把 `归档/内嵌git-20261008/` 里的 `.git` 挪回原处即可。
This commit is contained in:
admin committed 2026-10-08 22:29:52 +08:00
1 parent e03465c398
commit 237a09a5b0
161 files changed
+19429 -2

No files matched your search

+482
View File
@@ -0,0 +1,482 @@
# 关键帧、视频提示词与任务提交
本文档是关键帧与视频提示词写法,以及 `image_job.py`、`video_job.py` 提交命令的唯一事实源。
路线选择见 [delivery-selection.md](delivery-selection.md),Pilot 与帧链硬门命令见
[qa.md](qa.md)。
## 目录
- [生成关键帧](#生成关键帧)
- [画幅与尺寸](#画幅与尺寸)
- [写提示词前先决定](#写提示词前先决定)
- [提交视频任务(video_job.py)](#提交视频任务video_jobpy)
- 提示词段落:[身份锁定](#通用身份锁定段)、[固定镜头](#固定镜头段)、[场景背景](#场景背景段baked-路线)、[视频色键](#视频色键段page-路线)
- 按动作类型:[转动与视向](#转动与视向提示词)、[一镜到底](#一镜到底连续镜头提示词)、[产品拆解](#产品拆解与爆炸图)、[镜头穿越](#镜头穿越)、[多段串联](#多段关键帧串联)、[指针二维](#指针二维动画)、[逐帧 scrub](#逐帧-scrub-时间轴)、[分段播放](#分段播放转场)、[离散状态](#离散状态动画)
- [失败修复提示词](#失败修复提示词)、[负面约束](#负面约束)、[分辨率和时长](#分辨率和时长)
## 生成关键帧
生产主流程(先生图、再生视频、逐段串联)见 SKILL.md 主流程。视频提示词只描述两张已验收
关键帧之间如何连续变化,不再承担终点设计;主体身份、产品结构、Logo、构图和风格必须先在
关键帧图片中解决。
关键帧通过凭据入口运行 `image_job.py`:
```bash
node "$OIL_MOTION/scripts/credential-ui/src/profile.ts" run default -- python3 "$OIL_MOTION/scripts/image_job.py" \
--prompt-file source/K0.txt \
--image source/product-reference.png \
--background transparent \
--size 2048x1152 \
--output source/K0-alpha.png
```
- `--background` 必填。`background_owner=page` 传 `transparent`,直接生成真实透明背景 PNG;
脚本检查 Alpha 通道、四角透明和可见主体,不合格的结果另存为 `*.rejected.png` 并以非零状态退出。
`background_owner=video` 传 `opaque`,提示词写明完整场景、光线和地面接触。
- `--image` 可重复。真实产品图、身份参考或上一张已验收关键帧都作为输入;提示词按顺序
写明“图 1 是……”以及哪些部分必须保持不变。没有参考图时才走文生图。
- 不确定参数时先加 `--dry-run`:只校验并打印请求摘要,不计费,也不需要 Key。
- 输出已存在时默认停止;确认要替换后才加 `--force`。
`background_owner=page` 时不要让生图模型画绿色、品红、灰色、白色或棋盘格背景。提交视频前,
再从透明源确定性合成视频模型需要的均匀色键副本:
```bash
python3 "$OIL_MOTION/scripts/composite_alpha_keyframe.py" \
source/K0-alpha.png source/K0-video.png \
--key-color '#00FF00'
```
透明源与视频输入副本必须分开保存。主体含大量绿色时,合成副本改用 `#FF00FF`。
需要同一主体从轨道一端精确移动到另一端时,可以先准备透明主体层,用程序生成身份和尺寸
完全一致的首尾帧,再交给视频模型补全中间形变:
```bash
python3 "$OIL_MOTION/scripts/compose_travel_frames.py" subject.png \
--first-output first-green.png \
--last-output last-green.png \
--size 864x1536 \
--subject-height 0.36 \
--subject-anchor-x 0.535
```
该工具只负责扁平轨道、缩放和精确位移。中间的结构形变、接触关系和前后遮挡仍由首尾帧
约束下的视频模型完成。
## 画幅与尺寸
Concept Contract 锁定 `aspect_ratio` 后,关键帧、视频和编译输出沿用同一比例:
| `aspect_ratio` | 关键帧 `--size` | 视频画幅 | 常见容器 |
| --- | --- | --- | --- |
| `16:9` | `2048x1152` 或 `1536x864` | 从首帧推断为 `16:9` | 横向全屏、Hero、宽幅转场 |
| `9:16` | `1152x2048` 或 `864x1536` | `9:16` | 竖屏全屏、移动端故事 |
| `1:1` | `1024x1024` 或 `2048x2048` | `1:1` | 卡片、头像、方形视窗 |
| `21:9` | `2016x864` | `21:9` | 宽银幕叙事 |
默认图片模型(gpt-image-2 系列)要求宽高都是 16 的倍数、最长边不超过 3840、长短边之比
不超过 3:1、总像素在 655,360 到 8,294,400 之间,脚本会在联网前校验。换用其他模型时以
该模型支持的尺寸为准,并核对脚本报告的实际宽高比。
容器是 16:10、4:3 或其他比例时,选最接近的生成比例,在合同中写明裁切或补边策略,再按
最终视口验收。编译输出宽度由最大 CSS 尺寸乘目标 DPR 决定,见各媒体路线的编译命令。
## 写提示词前先决定
提示词从 Concept Contract 和 Identity Bible 出发,不得加入用户未确认的主体、人数、
风格、情绪或叙事形式;合同中的限制必须原样成为提示词约束。
先写清楚:
1. `time_control` 是逐帧 scrub、分段播放还是自主播放。
2. 时间轴或状态转场的起点、终点和方向。
3. 主体哪些部分允许变化,哪些必须固定(角色照抄 Identity Bible 的身份锚点)。
4. 是否闭环。
5. 背景归属:`background_owner=video` 时写明场景、环境光、地面接触和景深如何保持
连续;`background_owner=page` 时写明关键帧生图使用真实 Alpha、视频输入副本使用
绿色还是洋红色键,以及如何保证视频四角与时间维度均匀。
6. 最终会按时间、角度、二维位置还是状态取帧。
图片模型负责关键帧,`page` 路线直接输出透明通道;视频模型负责动作语义和画面连续性,不负责精确
切帧、Alpha 视频、帧编号、压缩或图集。不要让视频提示词承担透明通道或图集输出。
## 提交视频任务(video_job.py)
`video_job.py` 用于提交、轮询和下载 ZenMux / MiniMax 原生视频任务,把重复的接口
调用、图片编码、状态轮询和结果保存程序化。提交前按 SKILL.md 的“首次配置”检查一次
凭据,命令始终经 `profile.ts run default --` 运行。
模式与参数约束:
- `reference_image` 与 `first_frame` / `last_frame` / `loop_frame` 互斥。混用会触发
MiniMax 接口错误 `2013`,脚本会在联网前阻止提交。
- 首尾帧转场需要锁定身份时,先把身份和风格生成进验收后的首尾关键帧,不能再附加
`reference_image`。
- 闭环动作把同一张已验收构图同时传为首帧和尾帧(`--loop-frame`)。这能加强接缝
约束,但仍需检查首尾差异和运动方向。
- 默认不传 `--model`(固定 `minimax/minimax-h3-max`)和 `--ratio`(按首帧推断画幅)。
- 默认传 5 秒 `duration`。使用 `--frames` 时不传 `duration`,二者不能同时出现;
只有当前接口明确支持帧数控制时才使用 `--frames`。
- 模型支持时用 `--seed` 复现,并保存任务元数据和尾帧;seed 不能替代参考图和首尾帧。
- `generate_audio=false` 不能保证成片没有音轨;编译脚本会统一移除音轨。
- 模型实际输出的时长和帧数可能略多于请求,尾部还可能停顿。先用
`motion_pipeline.py probe` 查看实际值,再按目标尾帧清理,不要把请求值当成成片值。
- 模型或接口拒绝参数时停止并报告具体响应;只有用户同意降级后,才能移除约束或更换
模型,不要静默删掉首尾帧。
- 一条视频只承担一条连续时间轴或一个状态转场,时长和分辨率见[分辨率和时长](#分辨率和时长)。
- `--stage` 必填:第一段为 `pilot`,后续生产段为 `production` 并传
`--pilot-approval`;连续叙事的生产段同时传 `--continuity-mode chain`、
`--previous-tail` 和 `--frame-chain-manifest`。Pilot 批准与帧链校验的规则、
阻断条件和命令见 [qa.md](qa.md)。
第一段 Pilot(单向转场 `K0 → K1`):
```bash
node "$OIL_MOTION/scripts/credential-ui/src/profile.ts" run default -- python3 "$OIL_MOTION/scripts/video_job.py" \
--stage pilot \
--segment-index 1 \
--prompt-file source/segment-01.txt \
--first-frame source/K0.png \
--last-frame source/K1.png \
--resolution 768P \
--duration 5 \
--seed 42 \
--output source/segment-01.mp4 \
--metadata source/segment-01.job.json
```
闭环动作把 `--last-frame source/K1.png` 换成 `--loop-frame`。`background_owner=page`
时,首尾帧传 `composite_alpha_keyframe.py` 合成的色键副本,不传透明源。脚本把实际尾帧
保存为 `<输出名>-last-frame.jpg`,这里是 `source/segment-01-last-frame.jpg`。
第 2 段及之后的连续生产:
```bash
node "$OIL_MOTION/scripts/credential-ui/src/profile.ts" run default -- python3 "$OIL_MOTION/scripts/video_job.py" \
--stage production \
--segment-index 2 \
--pilot-approval pilot/approval.json \
--continuity-mode chain \
--previous-tail source/segment-01-last-frame.jpg \
--first-frame source/segment-01-last-frame.jpg \
--last-frame source/K2.png \
--frame-chain-manifest qa/frame-chain.json \
--prompt-file source/segment-02.txt \
--output source/segment-02.mp4
```
`--first-frame` 与 `--previous-tail` 传同一个文件:续段从上一段真实结束的画面接着走,
尾帧仍是计划关键帧。帧链的校验规则见 [qa.md](qa.md)。
## 通用身份锁定段
有角色时,先把 Identity Bible 的身份锚点(脸型五官、发型发色、服装配色、标志物、
体型比例、风格线条)写进这段,再放在动作描述前,并替换尖括号:
```text
Use the supplied first and last frames as the exact identity and design
references for <SUBJECT>. Preserve the same silhouette, anatomy, face, clothing or product
geometry, colors, line work, texture, and proportions in every frame. The
subject remains the same size and at the same anchored position throughout the
shot. Do not add, remove, duplicate, or redesign any body part, accessory,
feature, logo, control, or prop.
```
如果主体是插画,补充:
```text
Preserve the original illustration style exactly. Keep line thickness,
halftone texture, flat color regions, and edge sharpness consistent. Do not
turn the subject into volumetric CGI, photorealistic, painterly, or glossy imagery.
```
## 固定镜头段
```text
Locked camera and locked framing. No camera pan, tilt, zoom, orbit, shake,
reframing, perspective change, lens change, depth of field, or lighting change.
The body and contact point remain fixed. Only <ALLOWED_PARTS> may move.
```
只有镜头运动本身需要被滚动控制时才删除这段,并明确描述镜头轨迹。
## 场景背景段(baked 路线)
仅当 Concept Contract 锁定 `background_owner: video` 时使用。场景、环境光、地面
接触和景深就是要烧进视频的内容,必须明确锁定,保证多段之间连续:
```text
The scene is <SCENE_ANCHOR> with <LIGHTING> and <GROUND_CONTACT>. Keep the
environment, light direction, color temperature, ground contact, shadows, and
depth of field identical and continuous across the entire shot. The background
is part of the final picture: no chroma key, no flat color backdrop, no
background replacement, and no transparency.
```
多段叙事时,这一段在每条提示词中原样复用,并把上一段验收后的实际尾帧作为下一段
首帧输入。
## 视频色键段(page 路线)
仅当 Concept Contract 锁定 `background_owner: page` 时追加到视频提示词,图集和色键视频两条路线都用它。
首尾关键帧先由 `image_job.py --background transparent` 生成透明 PNG,再由
`composite_alpha_keyframe.py` 合成为视频输入;不要把这段用于图片提示词。默认 `#00FF00`,主体含绿色时改用 `#FF00FF`。
```text
The entire background is one perfectly uniform flat chroma-key <KEY_COLOR>
rectangle in every frame. No gradient, texture, noise, floor plane, horizon,
shadow, reflection, glow, particles, color variation, or lighting falloff on
the background. Keep the subject fully separated from all image borders with
generous padding. No cast shadow. No green/magenta object or reflected spill on
the subject. No text, subtitle, watermark, border, or UI.
```
模型未必严格生成指定色值,所以最重要的是四周和时间维度保持均匀。后续脚本会从边缘采样真实背景色。
## 转动与视向提示词
先按 [concepts.md](concepts.md) 的四种类型确认要转的是什么,再选下面的写法。
### 圆周注视
脸始终朝向镜头,视线沿屏幕前方的一圈顺时针移动,不能转出后脑勺:
```text
Create one continuous clockwise head and gaze rotation cycle. The face and eyes
of <SUBJECT> remain oriented toward the camera at all times; do not rotate around
to show the back of the head. An invisible target moves smoothly clockwise in a
circle on the front screen plane (12 o'clock looking up, 3 o'clock looking
right, 6 o'clock looking down, 9 o'clock looking left, returning cleanly to 12
o'clock). <SUBJECT> follows the target smoothly within a natural cone of vision,
tilting and rolling its head without leaving the front-facing half-sphere. Pass
through every intermediate angle at a constant rate without pausing or snapping.
End exactly at the first frame pose for a seamless loop. Keep torso and position
completely stationary. No blinking, idle sway, or deformation.
```
运行时用 `atan2(y, x)` 把指针方向映射到角度。
### 二维注视
见下文[指针二维动画](#指针二维动画)的二维采样。
### 水平摆头
只绕竖直轴转,不闭环:
```text
Move once continuously from looking left (-60 degrees) through center to
looking right (+60 degrees). Do not loop, do not return to start, and do not
pause at intermediate angles. Head turns only on the horizontal yaw axis; locked
vertical pitch, locked camera, locked scale, locked center anchor.
```
### 展台自转
真实产品的侧面和背面不能交给模型猜。先用产品参考图生成 0°、90°、180°、270° 四张关键帧,
再按 `K0 → K1 → K2 → K3 → K0` 分四段生成,每段转 90°:
```text
Use the supplied first and last frames as the exact geometry, material, color,
logo, control, and proportion references. Rotate the product clockwise around
its vertical center from the angle of the first frame to the angle of the last
frame at a constant angular speed. Locked orthographic-like camera, fixed scale,
fixed center, fixed lighting, no perspective breathing, no added details, no
deformation, no text changes, no logo changes.
```
只有背面不重要的小型物件,才用一张正面图配 `--loop-frame` 一次转完。
## 一镜到底连续镜头提示词
范式和交接关键帧的定法见 [concepts.md](concepts.md)。每段只负责一级变化,首尾帧就是交接关键帧。
所有范式共用一个骨架,只替换镜头句和范式句:
```text
Use the supplied first and last frames as exact composition anchors.
<CAMERA_CLAUSE> <PARADIGM_CLAUSE> No cuts, dissolves, jump pans, rotational
drift, or sudden speed changes. Arrive exactly at the framing, scale, and
alignment of the last frame. Every intermediate frame must read clearly when
playback stops.
```
镜头句:推进用 `The camera moves forward in one uninterrupted dolly at a steady speed toward <TARGET>.`;
机位不动用 `The camera stays completely locked.`
| 范式 | `<PARADIGM_CLAUSE>` |
|---|---|
| 尺度穿透 | `The center subject <TARGET> stays exactly at the center while the surroundings expand past the frame edges, passing through <INTERMEDIATE_LAYERS>.` |
| 遮挡转场 | `A large foreground <OCCLUDER> crosses the lens and fills the entire frame by the last frame. Exposure stays constant.` |
| 形状匹配 | `The <SHAPE> outline keeps exactly the same screen position and size while its surface transforms from <SUBJECT_A> into <SUBJECT_B>.` |
| 时间流转 | `Only materials and lighting change, continuously from <STATE_A> to <STATE_B>; silhouette, geometry, and perspective never change.` |
| 倒影穿越 | `The camera pushes into the reflection on <REFLECTIVE_SURFACE>; the reflected scene grows sharper until it fills the frame as the real scene of the last frame.` |
| 剖切穿墙 | `As the camera reaches the wall of <STRUCTURE>, the surface dissolves into a clean cutaway that reveals <INTERIOR>, without slowing down.` |
## 产品拆解与爆炸图
先根据真实产品参考图分别生成完整态和爆炸态图片。两张图都通过人工验收后,再作为精确首尾帧;
不要让视频模型凭文字发明最终结构。
```text
Use the supplied first and last frames as exact geometry, identity, material,
logo, component-count, alignment, camera, lighting, and composition references.
Create one continuous transformation from the fully assembled <PRODUCT> to the
approved exploded view. Separate the existing shell, display, battery, boards,
connectors, cameras, and fasteners only along their physically plausible axes.
Preserve every component's exact shape, scale, orientation, color, and relative
order. Keep all parts readable and non-overlapping at the final state. No new,
missing, duplicated, melted, or redesigned components. No cuts, camera changes,
scale breathing, motion blur, labels, or unrelated motion. Every intermediate
frame must be a stable reversible assembly state suitable for scroll scrubbing.
```
爆炸方向、间距、部件数量和最终构图必须先在尾帧图片中确定。视频负责从完整态连续过渡到
该尾帧;文字标注、数字和部件高亮在生成后由程序覆盖,避免 AI 视频生成不稳定文字。
## 镜头穿越
镜头运动本身是交互内容时,不使用固定镜头段,改为明确一条可逆轨迹:
```text
Create one continuous forward camera move from <START_VIEW> to <END_VIEW>.
Follow the supplied path through <ORDERED_LANDMARKS> without cuts, orbiting,
sideways drift, speed jumps, focus pumping, or lens changes. Keep product
geometry, lighting, scale relationships, and landmark positions consistent.
Every frame must remain sharp and readable when scroll playback stops. The
reverse frame order must also form a natural backward move.
```
长距离穿越不要只给起点和终点。先生成路径上的中间关键帧,保证主体、空间地标、比例和风格
一致,再把相邻关键帧分别生成短视频。
## 多段关键帧串联
先建立 `K0 → K1 → K2…Kn`:
- 第 `i` 段以 `Ki` 为首帧、`Ki+1` 为尾帧;`chain` 模式下第 2 段起的首帧换成上一段的实际尾帧。
- 所有关键帧复用同一组参考图、画幅、风格约束、主体比例和场景设定。
- 每段只写一个主要变化。
- 拼接后逐帧检查接缝;若接缝不稳,重做对应短片,不重做整条时间轴。
实际尾帧接力、SHA-256 校验和误差累积处理按 [qa.md](qa.md) 的“连续帧链”执行。
## 指针二维动画
二维输入不能只靠一条左右转头视频准确表达。优先选择以下方案:
### 方案 A:角度足够
指针远近不影响姿态时,用[圆周注视](#圆周注视)生成完整方向环。距离只影响平滑速度或回正强度。
### 方案 B:二维采样
生成固定网格中的多个短片或关键姿态,例如:
```text
Generate the same subject and framing for target position <X_POSITION>,
<Y_POSITION>. Keep the exact body anchor, subject scale, lighting, style, and
background used in every other grid sample. Move only <ALLOWED_PARTS> toward
that target and settle naturally. No entrance or exit motion.
```
二维网格至少覆盖左上、上、右上、左、中、右、左下、下、右下。用程序统一锚点和尺寸,再做双线性邻域选择或插值。不要要求模型在一条视频中遍历网格后直接随机访问。
## 逐帧 scrub 时间轴
适合产品拆解、页面叙事、图表展开和场景变换:
```text
Create a single continuous transformation designed for frame-by-frame scroll
scrubbing. At frame 0, <START_STATE>. Over the shot, <ORDERED_CHANGES>. At the
last frame, <END_STATE>. Every intermediate frame must be a meaningful stable
progress state. Use constant visual continuity with no cuts, dissolves, sudden
jumps, duplicated holds, camera shake, motion blur, or unrelated motion. Keep
the composition readable when playback is stopped on any frame.
```
把多个变化写成相对进度阶段,例如 `0–35%` 完成第一阶段、`35–80%` 推进主要关系、
`80–100%` 到达最终状态。要求每个阶段持续变化,并明确禁止模型在前段快速完成主要
动作、后段只保留近重复帧。百分比用于约束节奏,不要求模型输出精确帧编号;实际节奏
仍需通过接触表检查,必要时裁剪或重定时。
scrub 序列的目标帧率由帧密度和画质验收决定。优先生成清晰的语义关键阶段,再按
[optimization.md](optimization.md) 选择保留原帧或插帧。
## 分段播放转场
适合输入触发后按时间完成、并在状态锚点停住的片段:
```text
Create one uninterrupted transition from the exact provided first frame to the
exact provided last frame. Begin the intended motion immediately, preserve all
identity, structure, framing, background, and lighting constraints throughout,
and reach the final state only at the end. No cut, dissolve, unrelated idle
motion, early completion, long final hold, or return motion.
```
每段只描述一个方向的主要变化。运行时反向通常复用同一段;只有倒放违反物理或叙事规律时,才另外生成反向片段。
## 离散状态动画
每个状态单独生成,不让一个长视频同时包含 hover、点击、成功和失败:
```text
Create a short transition from the exact neutral pose to the exact <STATE>
pose. The first frame must match the shared neutral reference exactly. Hold the
final pose only briefly. No camera movement, no unrelated idle motion, and no
return transition.
```
反向状态优先用程序倒放;只有倒放不符合物理规律时再单独生成。
## 失败修复提示词
一次只修一个问题,同时重申所有不变量:
```text
Keep the subject identity, design, style, camera, framing, scale, anchor,
background, lighting, and correct motion unchanged. Fix only this issue:
<ONE_PRECISE_ISSUE>. Do not add any new motion or detail.
```
常见修复:
- `Keep every approved component unchanged; remove the duplicated connector.`
- `Keep the body fixed; eliminate scale pulsing and center drift.`
- `Remove the one-frame brightness flash; lighting is identical in every frame.`
- `Continue through the angle without pausing or snapping.`
- `Make the last frame match the first frame exactly for a seamless loop.`
## 负面约束
按需要加入,不必机械复制全部:
```text
No cuts, morphing, identity drift, scale breathing, position drift, duplicated
limbs, missing limbs, extra objects, blinking, idle sway, motion blur, ghosting,
frame blending, lighting flicker, shadows on the background, camera movement,
text, watermark, border, style change, unnecessary sci-fi circuitry, or plastic AI clutter.
```
用户没有要求科幻题材时,不写 `cyberpunk`、`neon glow`、`intricate circuitry`、
`hyperdetailed 8k` 这类套路词,也不要用满画面的细碎发光线条充当细节。画面冲击力来自镜头、
形态对比和干净的轮廓;细节只服务于叙事焦点,非焦点区域保持干净。需要时追加:
```text
No unnecessary sci-fi circuitry, generic cyberpunk neon clutter, plastic AI
noise, over-detailed artificial lines, or visual noise.
```
## 分辨率和时长
- 单段 3–6 秒,只完成一个主要变化;更长的动作拆成多段,否则容易漂移。
- 默认模型 `minimax/minimax-h3-max` 仅支持 `480P`、`768P`,不支持 `1080P` 或 `2K`,
见 [ZenMux 模型信息](https://zenmux.ai/minimax/minimax-h3-max)。Pilot 与最终母版均用
`768P`;`480P` 可用于动作草案,不能当作更高清的母版。脚本接受大小写并在提交前校验。
- 母版像素至少覆盖最大 CSS 尺寸乘目标 DPR。模型最高分辨率仍不够时,先调整显示目标或
说明取舍,不从低清母版放大。只有 `768P` 母版时,按实际宽高下调预算中的显示尺寸或
目标 DPR;例如 `1344×768` 可覆盖 `1280×720` CSS px、目标 DPR `1.05`,
具体参数与复核方法见 [显示预算取舍](delivery-selection.md#母版像素不足时的显示预算)。
- 是否插帧由 Motion Brief 的 `frame_policy` 决定,提示词不要求模型自行提高帧率。