Skip to content

[Bug]: stance 从没被采集过,三处按体型分流的判据全部恒不触发 #840

Description

@johnnyzhang-eng

问题

CharacterStance 这条门禁在生产中从来没有触发过,也不可能触发 —— 因为 stance 从没被采集过。

windup_character.character_data 顶层键:   version / templates / outfits    ← 96/96 个角色
                                           一次都没存过 stance

windup_generation_task.input_payload:     stance = (未传) × 558           ← 558/558 个任务

CreateActionInput.stance 缺省 NoneCharacterCard.stance 缺省 BIPED生产中每一个角色都被当成双足。

为什么这是个问题

stance 不是可有可无的元数据,它是三处判据的唯一输入:

  1. stance_mismatch 提示词门禁ai_engine.prompt.lint)。非双足角色的描述里出现"手臂 / 手肘",模型会给它凭空接上一对人的上肢来调和文图矛盾 —— 而帧数、时长、成色全部正常,没有一道会红。这道门禁现在恒不触发。fix(prompt): 写死动作不再丢弃用户写的动作细节 #839 让用户写的细节句也走这道门,但同样落在这个空档里。

  2. 攻击模板的人形假设build_attack_prompt 缺省 THRUST,四支的正文都在描述人的肢体(弓步、后脚承重、腰侧收招、直线突刺、收回架式)。它的注释只回避了「断言持械」(提示词库把某个原型角色的装备写死成默认值,导致所有角色被加上斗篷与武器(Refs #171) #195),没回避「断言人形」。要按体型分流,先得知道体型。

  3. 自动绑骨web/api/render3d.py)。那条路的 stance必填、无默认,注释写着「自动绑骨只支持双足,四足/无肢从模型几何判不出来」。也就是说三渲二那条线已经承认这个字段必须由人给 —— 而动作生成这条线还在猜。

三处判据共用一个从没被写过的字段,等于三道门都虚掩着。

已知的真实后果

#564:蓝色史莱姆(无肢)被当成双足,套了人形攻击模板,出片是个金发人形武者。诊断见 #838

要做什么

  • 前端在创建角色时采集 stance(三选一:双足 / 四足 / 无肢),或从已有的角色描述里让用户确认一次。
  • 存进 character_data,并在创建动作任务时随 CreateActionInput.stance 一起发。
  • 存量 96 个角色的回填口径:默认 biped 是现状、不算回归;但至少要能让用户改。
  • 补一条端到端测试:非双足角色 + 含人体部位词的描述 → 4xx,而不是照常出片。

相关

Metadata

Metadata

Assignees

No one assigned

    Labels

    MiniSpec小改动的精简规格bugSomething isn't working

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions