第 23 章 人物状态机

第五部 人物、空间、动作连续性工程

第 23 章 人物状态机#

本章目录
23.1 连续性是状态继承23.2 状态快照23.3 事件修改状态23.4 左右手是高频故障源23.5 情绪有进入、峰值和离开23.6 知识状态防止角色“读过剧本”23.7 关系状态也会传播23.8 时间跳跃与状态压缩23.9 状态冲突优先级23.10 只把相关状态送给模型23.11 状态 Lint23.12 状态机 SOP23.13 故障树23.14 检查表、练习与交付物23.15 字段语义必须比字段数量更清楚23.16 事件溯源、回滚与分支23.17 项目事实、角色认知与观众认知23.18 一条状态从剧本到成片的完整生命线研究依据说明

23.1 连续性是状态继承#

“记得她穿灰西装”不是系统。每个镜头进入时读取上一镜离开状态,执行事件,再产生新的离开状态。只要没有事件修改,状态应自动继承。

人物状态至少包括身份版本、服装与覆盖、妆发、伤口、情绪、姿态、左右手、道具、屏幕位置、视线目标、知识和关系。并非每镜全部可见,但事实仍存在。

图 23-1 人物状态沿场景同步推进

图 23-1 同一个场景中,服装、道具、情绪和知识是四条同步但变化速度不同的状态轨。镜头只展示人物,系统却必须同时知道钢笔何时失去、情绪何时失控、秘密何时被理解。

读图时要从纵向和横向同时检查。纵向确认一个时刻的四类状态是否互相兼容;横向确认每类状态是否由明确事件改变。人物离开画面并不会自动清空状态,下一场仍要继承她已经知道的秘密与尚未找回的钢笔。

23.2 状态快照#

character_state:
  shot: E001_S08
  character: CH_LINYUN
  identity: CH_LINYUN_FACE@v03
  wardrobe: WD_LINYUN_GREY_SUIT@v02
  appearance:
    hair: neat_center_part
    makeup: office_neutral
    injury: none
  body:
    position: boardroom_door_zone
    orientation: facing_table_east
    posture: upright
  hands:
    left: holding_PROP_OLD_PEN
    right: touching_PROP_AUTHORIZATION_on_table
  screen:
    position: left_third
    eyeline: CH_LINWEI_right
  emotion:
    in: restrained
    out: controlled_dominance
  knowledge:
    gained: 董事长已核验授权签名

状态字段使用枚举或资产 ID,减少“差不多”的自由文本。

23.3 事件修改状态#

状态只能通过明确事件变化:拿起、放下、交接、受伤、换衣、得知、进入、离开。事件记录旧值、新值和证据镜头。

state_event:
  id: EVT_E001_S09_AUTH_PICKUP
  entity: CH_LINYUN
  field: hands.right
  from: touching_PROP_AUTHORIZATION_on_table
  to: holding_PROP_AUTHORIZATION_chest_height
  visible_in: E001_S09

若下一镜右手出现手机,而没有事件放下文件、拿起手机,连续性检查应报错。

23.4 左右手是高频故障源#

镜像、反打和生成随机性会交换手。规定角色世界坐标中的左/右手,不以画面左右命名。镜像翻转素材会让痣、纽扣和文字一起错误,不能只看构图。

关键道具交互记录握持方式、朝向和是否可见。简单镜头可以标记手在画外,但状态仍需继承。

23.5 情绪有进入、峰值和离开#

每镜只写“愤怒”会导致表演跳变。记录 emotion_in、触发、峰值和 emotion_out。下一镜从上一镜离开强度开始,除非有时间跳跃或调节动作。

emotion_transition:
  in: controlled_anger_2
  trigger: 屏幕显示父亲姓名
  peak: shock_4_suppressed
  regulation: 停止转笔,吸气,不看周岚
  out: fear_and_focus_3

情绪连续不等于表情不变,而是变化有触发和调节过程。

23.6 知识状态防止角色“读过剧本”#

角色只能依据已经获得的信息行动。秘密揭露后更新 knows;谎言则分别记录角色相信什么和事实是什么。

林筠在 E001 只知道父亲姓名出现在账户,不知道本人活着。让她直接说“我父亲还活着”是知识连续性错误,即使画面连续。

23.7 关系状态也会传播#

信任、债务、称谓和公开关系在重要事件后更新。人物可能表面维持原称谓,但动作应反映变化。

E003 证明陈默未删除记录后,林筠信任从 1 到 2;她不必立即拥抱他,但下一场不应继续用完全相同的敌对语气。

23.8 时间跳跃与状态压缩#

跨日时不是清空状态。伤口、知识、关系和持有物继续;服装、妆发和地点可能通过更衣或移动事件变化。建立时间跳跃规则:哪些自动保持,哪些必须重置,哪些需要可见解释。

“第二天”可合理更衣,不能合理让伤口消失或忘记秘密。

23.9 状态冲突优先级#

当剧本、资产、分镜和已批准成片冲突,必须确定权威来源。通常事实账和最新批准变更最高;已拍成片若与事实冲突,要修片或批准剧情改动,不能悄悄让错误成为真相。

状态解析器输出冲突,而不是自行猜测。

23.10 只把相关状态送给模型#

完整项目状态很大。生成 E001_S09 时,只需当前人物可见状态、动作相关历史和下一镜交接,不需要整季秘密。上下文编译器从总状态提取最小切片。

过多状态会稀释重要约束,甚至把未来伤口或服装提前带入当前镜头。

23.11 状态 Lint#

可自动发现:道具凭空出现或消失;左右手交换;服装版本改变无事件;伤口越界;人物在离场后仍出现;知识提前;时间倒退;情绪强度无触发跳跃;屏幕位置与已定轴线冲突。

Lint 只报告事实不一致,不判断角色是否“应该更伤心”。情绪合理性仍需表演审核。

23.12 状态机 SOP#

第一步,为每个场景建立人物进入状态。第二步,每镜继承上镜离开状态。第三步,只通过 State Event 修改。第四步,记录手、道具、位置、视线和情绪。第五步,在揭露后更新知识与关系。第六步,跨时间按字段规则继承。第七步,为模型编译最小相关状态。第八步,运行 Lint 并由连续性负责人处理冲突。第九步,将批准镜头的真实状态回写。

23.13 故障树#

**症状:道具每镜换手。**没有左右手字段或素材被镜像。锁定世界左右,禁止未经审计翻转。

**症状:表演忽然从平静到崩溃。**只有目标情绪,没有进入和触发。补情绪过渡。

**症状:角色知道尚未揭露的信息。**知识状态未管理,模型接收整季资料。只发送当前已知切片。

**症状:换场后伤口消失。**把地点变化错误当状态重置。按字段继承。

**症状:剧本和成片各自为真。**缺少权威来源和回写。建立批准状态与变更流程。

23.14 检查表、练习与交付物#

检查状态是否有进入和离开;变化是否由事件触发;左右手是否世界坐标;情绪是否连续;知识是否按揭露更新;跨日是否正确继承;模型是否只接收相关状态;批准成片是否回写。

练习一:为六镜文件交接写完整状态。练习二:找出一段剧本的知识提前错误。练习三:模拟跨夜后服装、伤口、关系和道具继承。练习四:为五类状态冲突规定权威来源。

本章交付物:Character State Snapshot、State Event Log、Emotion Transition、Knowledge Ledger、Relationship Update、State Lint、镜头状态回写记录。

23.15 字段语义必须比字段数量更清楚#

状态表最常见的失败不是字段少,而是不同工位对同一字段理解不同。location 究竟是场景名、房间分区还是画面位置;emotion 保存内心状态、外显表演还是导演目标;wardrobe 指服装套装还是包含解扣、湿度、污渍的当前穿着状态。每个字段都需要类型、单位、枚举范围、默认继承规则、修改权限和证据来源。

field_definition:
  name: prop_possession
  type: map[prop_id, possession_state]
  allowed: [not_present, visible_unheld, held_left, held_right, concealed, transferred]
  inheritance: carry_forward_until_event
  writers: [continuity_agent, approved_human_override]
  required_evidence: shot_or_script_event
  render_scope: only_visible_props

状态 Schema 要区分 unknownnot_applicablenot_visible。角色的右手在画外不等于右手没有持物;观众尚不知道母亲是否存活,不等于项目事实未知;远景看不清伤口,不等于伤口消失。错误地把不可见当成空值,是道具和伤痕突然重置的重要来源。

23.16 事件溯源、回滚与分支#

不要反复覆盖一份“当前状态”而丢失历史。项目保存初始快照和按顺序发生的 State Event,当前状态由事件重放得到。这样可以回答:林筠何时拿到手机、哪一镜把文件交给周岚、伤口从何时出现、某次剧本修改影响哪些后续镜头。

图 23-2 状态事件修改当前快照并使依赖镜头失效

图 23-2 初始状态经过道具、位置和情绪事件形成当前快照。上游事件一旦改变,引用旧状态的依赖镜头不能继续冒充有效资产,必须标记失效、重编译并重新验证。

图中的红色镜头不是“画面不好”,而是依据已经过期。即使它们视觉上非常漂亮,也不能直接保留;只有证明变化不影响该镜头,或经过批准的适配和回归,它们才能重新变绿。这正是状态系统区别于文件夹管理的地方:文件存在不等于文件仍然有效。

剧本改稿时尤其需要分支。若 E006 删除“林筠手机被抢走”,旧分支中后续所有 phone_absent 都应失效;系统从删除点重放事件,生成影响清单。已经批准的镜头不会被静默改写,而被标记为“依据过期”,由制片决定重做、修改剧情或保留例外。

回滚不是删除历史。错误事件保留状态、原因和替代事件,便于复盘智能体为何产生错误。Agentic 系统若只看到最终快照,无法学习哪个规则失效;保留事件链才能定位是输入事实、解析、生成还是人工批准出了问题。

23.17 项目事实、角色认知与观众认知#

知识状态至少有三层:项目事实是什么,角色相信什么,观众目前知道什么。同一时刻三者可以完全不同。项目事实是林父仍活着;林筠只知道账户出现父亲姓名;观众可能看到一个模糊背影,因此怀疑但没有确认。编剧、演员和剪辑分别依赖不同层,混在一个 knows 列表中会制造剧透式表演。

谎言还需要记录来源和置信度。林薇声称林父已死,林筠可能“暂时接受但怀疑”,不是简单的 true/false。人物行为由其认知状态驱动,镜头信息分配则由观众认知驱动。生成上下文只发送角色当下可用于表演的信息,不能把项目真相全部塞入提示词,再期待模型自行假装不知道。

每次揭露都应产生两类事件:事实曝光事件更新哪些角色和观众知道什么;关系解释事件更新他们如何理解说话者。例如授权书为真,不仅让众人知道林筠有资格,也让周岚重新评估林薇此前的说法。后一层决定下一场的称谓、距离和协作意愿。

23.18 一条状态从剧本到成片的完整生命线#

以“林筠右手持授权书”为例:剧本动作创建预期事件;分镜决定动作在哪个镜头完成;关键帧包把右手和文件朝向编译为可见约束;视频生成输出候选;连续性审核观察实际结果;批准后,成片事实回写为 held_right。若候选实际上左手持有,系统不能为了让审核通过而修改预期状态,而应生成差异并路由。

只有导演批准改动作时,才创建新的变更事件,将预期从右手改为左手,并检查后续握手、手机操作和构图是否受影响。这条规则阻止“模型生成成什么,故事事实就跟着变成什么”。生成结果可以提出变化,不能未经批准成为权威。

状态包还应注明有效区间。文件在 E001_S08 被拿起,在 S14 被放到桌面,后续镜头不再继承持有状态。没有结束事件的状态会像内存泄漏一样无限传播;每个临时状态都要么有明确结束条件,要么由新事件覆盖。

研究依据说明#

固定提示词只能描述角色,状态机才能描述角色经历了什么。本章将影视场记方法结构化,使智能体和生成工位共享同一时刻的事实。