## 问题 `CharacterStance` 这条门禁在生产中**从来没有触发过,也不可能触发** —— 因为 `stance` 从没被采集过。 ``` windup_character.character_data 顶层键: version / templates / outfits ← 96/96 个角色 一次都没存过 stance windup_generation_task.input_payload: stance = (未传) × 558 ← 558/558 个任务 ``` `CreateActionInput.stance` 缺省 `None`,`CharacterCard.stance` 缺省 `BIPED`。**生产中每一个角色都被当成双足。** ## 为什么这是个问题 `stance` 不是可有可无的元数据,它是三处判据的唯一输入: 1. **`stance_mismatch` 提示词门禁**(`ai_engine.prompt.lint`)。非双足角色的描述里出现"手臂 / 手肘",模型会给它凭空接上一对人的上肢来调和文图矛盾 —— 而帧数、时长、成色全部正常,没有一道会红。这道门禁现在恒不触发。#839 让用户写的细节句也走这道门,但同样落在这个空档里。 2. **攻击模板的人形假设**。`build_attack_prompt` 缺省 `THRUST`,四支的正文都在描述人的肢体(弓步、后脚承重、腰侧收招、直线突刺、收回架式)。它的注释只回避了「断言持械」(#195),没回避「断言人形」。要按体型分流,先得知道体型。 3. **自动绑骨**(`web/api/render3d.py`)。那条路的 `stance` 是**必填、无默认**,注释写着「自动绑骨只支持双足,四足/无肢从模型几何判不出来」。也就是说三渲二那条线已经承认这个字段必须由人给 —— 而动作生成这条线还在猜。 三处判据共用一个从没被写过的字段,等于三道门都虚掩着。 ## 已知的真实后果 #564:蓝色史莱姆(无肢)被当成双足,套了人形攻击模板,出片是个金发人形武者。诊断见 #838。 ## 要做什么 - [ ] 前端在创建角色时采集 `stance`(三选一:双足 / 四足 / 无肢),或从已有的角色描述里让用户确认一次。 - [ ] 存进 `character_data`,并在创建动作任务时随 `CreateActionInput.stance` 一起发。 - [ ] 存量 96 个角色的回填口径:默认 `biped` 是现状、不算回归;但至少要能让用户改。 - [ ] 补一条端到端测试:非双足角色 + 含人体部位词的描述 → 4xx,而不是照常出片。 ## 相关 - #838 / #839:写死动作丢弃用户细节(同一处代码,但那是另一个缺陷,已修) - #195:提示词里不写装备名词 —— 同一类「提示词断言了母版里没有的东西」
问题
CharacterStance这条门禁在生产中从来没有触发过,也不可能触发 —— 因为stance从没被采集过。CreateActionInput.stance缺省None,CharacterCard.stance缺省BIPED。生产中每一个角色都被当成双足。为什么这是个问题
stance不是可有可无的元数据,它是三处判据的唯一输入:stance_mismatch提示词门禁(ai_engine.prompt.lint)。非双足角色的描述里出现"手臂 / 手肘",模型会给它凭空接上一对人的上肢来调和文图矛盾 —— 而帧数、时长、成色全部正常,没有一道会红。这道门禁现在恒不触发。fix(prompt): 写死动作不再丢弃用户写的动作细节 #839 让用户写的细节句也走这道门,但同样落在这个空档里。攻击模板的人形假设。
build_attack_prompt缺省THRUST,四支的正文都在描述人的肢体(弓步、后脚承重、腰侧收招、直线突刺、收回架式)。它的注释只回避了「断言持械」(提示词库把某个原型角色的装备写死成默认值,导致所有角色被加上斗篷与武器(Refs #171) #195),没回避「断言人形」。要按体型分流,先得知道体型。自动绑骨(
web/api/render3d.py)。那条路的stance是必填、无默认,注释写着「自动绑骨只支持双足,四足/无肢从模型几何判不出来」。也就是说三渲二那条线已经承认这个字段必须由人给 —— 而动作生成这条线还在猜。三处判据共用一个从没被写过的字段,等于三道门都虚掩着。
已知的真实后果
#564:蓝色史莱姆(无肢)被当成双足,套了人形攻击模板,出片是个金发人形武者。诊断见 #838。
要做什么
stance(三选一:双足 / 四足 / 无肢),或从已有的角色描述里让用户确认一次。character_data,并在创建动作任务时随CreateActionInput.stance一起发。biped是现状、不算回归;但至少要能让用户改。相关