工具附录
附录 C:资产与连续性 Schema 字典#
本章目录
本附录把“人物要一致”“场景不要跳”“道具位置要对”改写为机器可读、团队可审、跨工具可传递的数据契约。Schema 不是为了把创作变成填表,而是为了让创作决定在生成、筛选、补拍和剪辑链路中不丢失。
C.1 六条底层规则#
- 稳定 ID 优先于名称。
char_lin_xia不因角色改名而变化。 - 事实、意图、观察分层。 “愤怒”是意图,“右手握拳”是观察,“刚被罢免”是事实。
- 未知不等于否定。
unknown、not_visible、not_applicable必须与false分开。 - 状态有时间边界。 必须说明由哪个事件生效、何时失效。
- 历史不可覆盖。 修改产生新版本,并保留
supersedes、作者和原因。 - 镜头只消费最小状态。 不把整季资料塞给模型,只编译当前镜头需要的身份、动作、空间和风格约束。
公共元数据:
schema_meta:
schema: continuity.character_state
schema_version: 1.2.0
record_id: state_char_lin_xia_e001_s014_pre_v3
entity_id: char_lin_xia
project_id: prj_backlight_acquisition
valid_from: evt_e001_s013_exit
valid_until: evt_e001_s015_costume_change
status: approved
supersedes: state_char_lin_xia_e001_s014_pre_v2
created_by: continuity_agent
approved_by: human_continuity_lead
source_refs: [script://ep_001/scene_014, frame://ep_001/shot_013c/last]
C.2 基础实体与身份契约#
人物、地点、道具、服装、声音和图形资产继承同一基础实体:
entity:
id: char_lin_xia
type: character
canonical_name: 林夏
aliases: [林总, 夏夏]
lifecycle: active
canonical_version: 7
owner_role: character_supervisor
rights_profile_id: rights_cast_synthetic_001
provenance_ids: [prov_char_design_004, prov_voice_011]
身份契约只记录跨集稳定的辨识锚点,不记录本场临时污渍或情绪:
identity_contract:
character_id: char_lin_xia
identity_version: 3
narrative_age: 29
silhouette: {height_band: 168_172cm, build: slender_athletic}
face_anchors:
face_shape: narrow_oval
brow: straight_soft_arch
eyes: almond_dark_brown
nose: straight_narrow_bridge
distinctive_marks: [tiny_mole_below_left_eye]
hair_default: {color: natural_black, length: below_shoulder, parting: left_30_percent}
immutable_features: [eye_color, mole_position, face_proportion]
controlled_variants:
hair: [down_straight, low_ponytail]
eyewear: [none, thin_black_frame]
forbidden_drift: [mole_switches_side, age_shift_over_3_years]
reference_assets:
hero_front: asset_char_lin_front_v03
three_quarter: asset_char_lin_3q_v03
profile: asset_char_lin_profile_v02
expression_sheet: asset_char_lin_expr_v04
身份锚点以 5 至 9 个为宜。每个锚点必须能被画面检查,“气质强大”不是锚点。反例是用 美女总裁最终版2.png 充当角色身份;正确做法是文件属于资产版本,角色 ID 永远稳定。
C.3 人物镜头状态#
character_state:
character_id: char_lin_xia
at: ep_001/sc_014/shot_014a/in
wardrobe_state_id: wr_lin_boardroom_v2_state_06
hair_state: low_ponytail_intact
makeup_state: office_clean_cool
body_state:
posture: upright_guarded
left_hand: holding_contract_folder
right_hand: free
injury_ids: []
emotional_intent: {dominant: controlled_anger, intensity_0_5: 3, concealment: high}
knowledge_state:
knows: [fact_bid_price_leaked]
does_not_know: [fact_chairman_is_source]
relationship_state: {toward_char_gu_zhou: distrust_rising}
knowledge_state 很关键。角色不能对尚未得知的事实提前反应。连续性不只检查衣服,也检查认知时间线。
C.4 服装、妆发与伤势#
服装写成基础层加覆盖层,不为每种污渍组合复制整套造型:
wardrobe_state:
base_look_id: look_lin_boardroom_charcoal_v2
layers:
inner: ivory_silk_shirt
outer: charcoal_single_breasted_suit
lower: charcoal_straight_trousers
accessories: {left_wrist: silver_watch, ears: small_pearl_studs}
overlays:
- {id: overlay_rain_damp_01, region: shoulders_and_hair_ends, intensity: light}
- {id: overlay_coffee_stain_02, region: right_cuff_outer, mask: asset_stain_mask_02}
continuity_locks: [watch_on_left_wrist, stain_never_mirrored]
physical_condition:
injuries:
- injury_id: inj_lin_palm_cut_01
body_side: right
region: palm
visual_state: fresh_bandage_clean
pain_behavior: avoids_forceful_grip
introduced_by: evt_e002_glass_cut
healed_after: ep_004/sc_006
fatigue: {level_0_5: 4, visible_signs: [slower_blink, slight_under_eye_shadow]}
提示词不应只写“手受伤”,而要编译为:“右手掌有干净的新绷带;拿物时避免用力;绷带不可出现在左手”。这同时给出视觉锚点、行为影响和负向限制。
C.5 地点、机位区与轴线#
location_contract:
location_id: loc_yuancheng_boardroom
canonical_layout_asset: asset_boardroom_plan_v05
fixed_landmarks:
north: floor_to_ceiling_windows
east: double_door
west: display_wall
center: twelve_seat_table
material_palette: [dark_walnut, brushed_steel, clear_glass]
camera_zones:
zone_a_window_side: {allowed: true}
zone_b_door_side: {allowed: true}
zone_c_screen_side: {allowed: conditional, reason: reflection_risk}
screen_direction:
axis_id: axis_lin_gu_table
char_lin_xia_screen_side: left
char_gu_zhou_screen_side: right
crossing_allowed_only_with: [visible_reaxis_move, neutral_insert]
地点一致性还包括门窗方位、人物进出方向、屏幕方向、可用机位和反射风险。先产出简化平面图,镜头包只引用当前机位区。
C.6 道具与所有权事件#
prop_state:
prop_id: prop_red_contract_folder_01
canonical_asset_id: asset_contract_folder_red_v03
owner: company_yuancheng
holder: char_lin_xia
location: loc_yuancheng_boardroom/table_south_edge
orientation: spine_toward_char_lin_xia
open_state: closed
contents: {document_id: doc_acquisition_offer_v08, page_visible: null}
last_event: evt_e001_s013_lin_places_folder
所有权、持有者和空间位置是三件事。公司拥有文件夹,林夏拿着它,它也可能被放在桌边。转移必须写成事件:
continuity_event:
id: evt_e001_s014_gu_takes_folder
type: prop.transfer
subject_id: prop_red_contract_folder_01
from: {holder: char_lin_xia, location: lin_left_hand}
to: {holder: char_gu_zhou, location: gu_right_hand}
caused_by_shot: sh_e001_s014c
effective_at: shot_end
C.7 时间、天气与灯光#
environment_state:
story_time: 2026-10-18T18:12:00+08:00
time_band: blue_hour
elapsed_since_previous_scene_minutes: 7
weather: heavy_rain
exterior_wetness_0_100: 92
key_light_motivation: window_cool_sky
fill_motivation: ceiling_practical
color_temperature: {exterior_k: 7200, interior_k: 4100}
continuity_locks: [rain_visible_on_north_windows, no_direct_sunlight]
C.8 动作契约与跨镜头接力#
动作要拆出起点、峰值和终点:
action_contract:
id: act_e001_s014_folder_handoff
actor: char_lin_xia
receiver: char_gu_zhou
object: prop_red_contract_folder_01
start_state:
lin_left_hand: holds_folder_lower_edge
gu_right_hand: resting_on_table
peak_state:
folder_center: crosses_axis_midpoint
eye_contact: maintained
end_state:
lin_left_hand: released
gu_right_hand: holds_folder_spine
screen_direction: left_to_right
cut_points:
safe: [before_extension, at_dual_grip, after_receiver_secures]
unsafe: [during_single_frame_release]
A 镜头的 end_state 必须等于 B 镜头的 start_state。不相等时阻止精生成,不要指望剪辑师事后遮掩。
C.9 多人物布局与特征归属#
cast_layout:
shot_id: sh_e001_s014_wide
slots:
- {slot: foreground_left, character_id: char_lin_xia, identity_ref: identity_lin_v3}
- {slot: midground_right, character_id: char_gu_zhou, identity_ref: identity_gu_v4}
feature_ownership:
mole_below_left_eye: char_lin_xia
silver_collar_pin: char_gu_zhou
forbidden_swaps: [face_identity, wardrobe_color, signature_accessory]
多人镜头最常见的错误是特征串位。显式声明特征归属,并给每个人固定画面槽位,能降低串脸、串衣和身高漂移。
C.10 声线与音乐状态#
voice_contract:
character_id: char_lin_xia
voice_asset_id: voice_lin_mandarin_v05
register: mid_low
pace_syllables_per_second: 4.2
texture: clean_firm_slight_breath
emotional_limits: {no_shouting_until: ep_006, crying_voice_allowed: false}
pronunciation_lexicon_id: lexicon_project_v08
loudness_target_lufs: -18
music_state:
cue_id: cue_e001_pressure_bed
composition_id: music_pressure_theme_v03
stem_state: {pulse: -8db, low_strings: -12db, percussion: muted, melody: absent}
key: D_minor
tempo_bpm: 92
bar_position_at_shot_in: 17.1
transition_out: hold_tension_no_cadence
音乐连续性保存的不只是曲名,还包括版本、分轨、调性、速度和小节位置。扩镜时应从同一音乐状态继续,不是重生成一首“差不多紧张”的音乐。
C.11 屏幕文字与事实绑定#
graphic_asset:
id: gfx_offer_price_mobile_01
type: diegetic_phone_screen
text_source: fact_offer_price_v3
rendered_text: "收购报价:4.80亿元"
locale: zh-CN
verification:
exact_match_required: true
ocr_threshold: 0.98
compare_against: fact_registry://offer_price/current
合同金额、日期和聊天记录必须绑定事实注册表。生成器可决定字体质感,不能自行改写数字。
C.12 资产注册表与权利#
asset_record:
asset_id: asset_char_lin_front_v03
entity_id: char_lin_xia
asset_type: identity_reference
version: 3
uri: asset://characters/lin_xia/front/v03.png
checksum_sha256: "..."
generator: {provider: openai, model: gpt-image, run_id: run_img_0192}
input_provenance: [prov_prompt_102, prov_sketch_owned_07]
rights_status: cleared_commercial
review_status: approved
supersedes: asset_char_lin_front_v02
生命周期建议:draft → candidate → approved → locked → retired。来源、肖像权或参数缺失的资产进入 quarantined,不得被 Episode Pack 编译器选中。
C.13 状态事件与依赖图#
event:
event_id: evt_01JCONT7YQ9
event_type: continuity.state_changed
event_version: 1
aggregate_id: prop_red_contract_folder_01
aggregate_version_before: 11
aggregate_version_after: 12
idempotency_key: sh_e001_s014c:folder_transfer:v1
causation_id: task_render_sh_e001_s014c_v4
correlation_id: trace_ep001_build_008
payload: {holder: {from: char_lin_xia, to: char_gu_zhou}}
依赖图至少支持:depends_on、derived_from、constrains、appears_in、supersedes、approved_by。角色主参考升级时,依赖图应能回答哪些待发布镜头必须重做,哪些锁定镜头只需登记例外。
C.14 连续性 Lint 规则#
| 规则 ID | 检查 | 严重度 | 自动动作 |
|---|---|---|---|
CONT-001 |
前镜终态与后镜初态不一致 | blocker | 阻止精生成 |
CONT-002 |
左右伤势镜像 | blocker | 隔离候选 |
CONT-003 |
角色使用尚未知晓事实 | blocker | 返回剧本修订 |
CONT-004 |
道具同时被两人持有 | blocker | 状态冲突 |
CONT-005 |
未交代穿越轴线 | major | 插入中性镜头或重做 |
CONT-006 |
妆发完整度无原因回升 | major | 检查时间跳跃 |
CONT-007 |
环境时间与窗外光线冲突 | major | 重做灯光条件 |
CONT-008 |
屏幕文字与事实表不一致 | blocker | 禁止发布 |
CONT-009 |
音乐小节入点断裂 | minor | 重算编辑点 |
CONT-010 |
引用已隔离资产 | blocker | 替换依赖 |
Lint 发现确定性冲突,不判断表演是否动人。可计算规则与审美评审必须分开。
C.15 完整 Shot State Packet#
shot_state_packet:
shot_id: sh_e001_s014c
duration_target_s: 2.8
frame: {aspect_ratio: "9:16", size: medium_two_shot}
camera: {location_zone: zone_a_window_side, lens_equivalent_mm: 50, movement: slow_push_5_percent}
cast_layout_ref: layout_e001_s014c_v2
character_states: [state_char_lin_xia_e001_s014_pre_v3, state_char_gu_zhou_e001_s014_pre_v2]
location_state: loc_yuancheng_boardroom_bluehour_v4
prop_states: [prop_folder_state_11]
action_contract: act_e001_s014_folder_handoff
dialogue_line_ids: [line_e001_014_07]
voice_contracts: [voice_lin_v05, voice_gu_v03]
music_state_in: cue_pressure_v03_bar17_beat1
music_state_out: cue_pressure_v03_bar18_beat2
required_visible: [lin_left_eye_mole, red_folder_dual_grip_at_peak, rain_on_north_window]
forbidden: [mirrored_composition, smiling, readable_random_documents]
acceptance:
identity_score_min: 0.91
action_state_match: exact
dialogue_sync_max_offset_ms: 80
continuity_lint: pass
编译器把状态包翻译成各供应商的提示词和控制参数。供应商格式可以变,语义源头不能变。
C.16 失败模式、版本迁移与 SOP#
常见失败包括:所有信息塞进 notes;直接覆盖状态而没有事件;只写“紧张”而没有可观察行为;把某次提示词当唯一事实源;强迫所有字段必填导致团队编造未知信息。
Schema 版本遵循:Patch 只修文档,Minor 新增兼容字段,Major 改变语义并提供迁移器。迁移至少测试旧 Pack 可读、旧事件可重放、已发布镜头可追溯。生产切换采用双写、读新、停旧三步。
落地顺序:建立稳定 ID;制作主角身份契约和基准图;选择高风险场逐镜写初终态;将伤势污渍改为覆盖层;建立 Action Contract;启用事件日志;先实现十条 Lint;最后用补镜和回滚验证血缘链。
C.17 交付检查表与练习#
- 核心实体有稳定 ID,名称只是显示字段。
- 身份契约区分稳定锚点与临时状态。
- 伤势、污渍、道具转移都有生效事件。
- 跨镜头动作的终态等于下一镜初态。
- 角色知识状态与剧情事实时间线一致。
- 音乐保存版本、分轨、速度与小节位置。
- 屏幕文字绑定事实注册表并经 OCR 校验。
- 资产有来源、权利、校验和与审批状态。
- Schema 变更有迁移策略,发布包可完整追溯。
练习:选择一场包含两人、一个关键道具和一次情绪反转的 30 秒戏,写身份、地点、道具和五个镜头状态;故意制造伤势镜像、越轴和道具瞬移;运行 Lint;修改中间镜头并输出影响分析。
应交付:entity_registry.yaml、identity_contracts.yaml、shot_states.yaml、continuity_events.jsonl、lint_report.json 和一页人工连续性报告。