## 当前 VRM 动画系统架构

两条独立线路，仅在 `_speakingEmotion` 处交汇

线路 A：LLM 情绪
`LLM 输出 [情绪:joy/0.7]
你好！`
↓ EmotionParser 解析
`emit chat:emotion`
{emotion:"joy", intensity:0.7}
↓ applyEmotion()
blendshape
happy = 0.7 ✅
_speakingEmotion
"joy" ✅
⚠️ thinking/idle/listening 状态：emotion 被忽略
线路 B：状态驱动
`后端 emit pet:state:change
"speaking"`
↓ watch(petState)
setState()
保留 blendshape
applyStateAnimation()
celebrate.vrma
状态→动画（硬编码）
idle → waiting
thinking → waiting
speaking → hand_talk 或 emotion覆盖
listening → curious
error → embarrassed

### 核心问题

状态 | emotion 影响 blendshape | emotion 影响动画 | 理应是？
--- | --- | --- | ---
idle | 设置 target 但切换时清零 | ❌ 永不 | emotion 驱动表情
thinking | ✅ 保留 | ❌ 永不 | emotion 驱动思考动画
speaking | ✅ 保留 | ✅ 仅此状态 | ✅ 已正常
listening | 设置 target 但切换时清零 | ❌ 永不 | emotion 驱动表情