本文对齐当前前三天新手教程主线。Day 2 不再演示屏幕分享入口;屏幕分享入口如需保留,应放在 Day 1 主线或后续支线中处理。Day 2 的首句承接台词保持不变,后续直接演示设置入口、设置侧边栏和主动搭话入口,最后三句收尾。
相关文档:
docs/design/avatar-floating-guide-feature-tree.mddocs/design/avatar-floating-7day-complete-guide-dev.mddocs/design/avatar-floating-pc-global-overlay-migration-plan.mddocs/design/home-yui-guide-lifecycle-modularization.md
Day 2 的 scene 和台词按本文落地;导演硬约束以 avatar-floating-7day-complete-guide-dev.md 为准:
- Day 2 必须使用统一教程生命周期,不在本日 scene 中重写接管、skip、打断、临时切模或高光清理。
day2_intro_context的文案、text key 和 voice key 保持原样;只播放承接台词,不恢复“现在说一句 / 继续打字”选项,也不补高亮语音按钮。- 设置入口、设置侧边栏和主动搭话入口都必须写清楚真实目标、Ghost Cursor 移动方式、是否点击和是否修改配置;不得只写“沿用某日流程”。
- 设置相关 scene 不保存用户设置,不打开深层页面,不触发主动搭话。
- 收尾三句期间重新高亮胶囊输入框;最终句约 70% cue 同步隐藏 Ghost Cursor、清理所有高光并写入 Day 2 完成态。
| 顺序 | scene | 台词 | 高光与 Ghost Cursor |
|---|---|---|---|
| 1 | day2_intro_context |
昨天你一直在噼里啪啦打字,我还没听过你说话呢。今天如果愿意,就轻轻叫我一声吧。一句就好,让我把文字背后的你也认识一点点。 | 播放期间高亮聊天窗;外置聊天窗模式使用 window kind。Ghost Cursor 移到聊天窗中心或输入区附近并停留,不左右晃动。台词结束后清理聊天窗高光,保留上一段可见 cursor 锚点,供下一句平滑移动使用。 |
| 2 | day2_personalization_space |
在这个只属于我们的小空间里,你可以由着自己的心意,慢慢描绘出最希望能一直陪着你的那个我。 | 收起前一段聊天窗高光后,圆形高亮设置按钮 #${p}-btn-settings。Ghost Cursor 从聊天窗锚点平滑移动到设置按钮并停留;到达打开设置的 cue 时播放点击动画,同时调用设置面板打开 API。设置弹窗出现后清理设置按钮主高光,等待面板稳定;本句不展开【角色设置】按钮侧边栏。 |
| 3 | day2_personalization_detail |
不管是说话的温度、相处的小脾气,还是我每天那些细腻的小心思,都可以一点一点调成你喜欢的样子。 | 圆角矩形高亮【角色设置】按钮;Ghost Cursor 平滑移动到【角色设置】按钮,播放完整模拟点击动画,点击动画完成后才触发【角色设置】按钮侧边栏显示。侧边栏出现后,圆角矩形高亮从【角色设置】按钮过渡到【角色设置】按钮侧边栏,且【角色设置】按钮自身作为 persistent 高光继续保留;Ghost Cursor 平滑移动到侧边栏,并在侧边栏内做椭圆运动直到本句台词播放完毕;本句播放完后隐藏【角色设置】按钮侧边栏,并同步清理【角色设置】按钮和侧边栏上的所有高光。不保存临时配置。 |
| 4 | day2_proactive_chat |
这个小按钮也很重要哦,只要你轻轻点一下,我就能在合适的时候跑过去找你啦。 | primary 平滑切到主动搭话开关 #${p}-toggle-proactive-chat 本体,不再保留【角色设置】按钮 persistent 高光。Ghost Cursor 平滑移动到该开关并停留指认,不左右晃动;不点击,不打开 interval-proactive-chat 侧边栏,不改变用户配置。台词播放完后清理主动搭话开关高光,并关闭教程临时打开的【设置】面板和设置侧边栏。 |
| 5 | day2_wrap_intro |
今天的教程到这里就结束了呢。 | 收尾开始前关闭临时面板,恢复按钮原状态;随后圆角矩形高亮胶囊输入框 chat-input。Ghost Cursor 从上一句主动搭话开关位置平滑移动回胶囊输入框中间并停留,不左右晃动。 |
| 6 | day2_wrap_companion |
其实只要能这样陪着你,听听你的声音,或者静静看着你分享的画面,我就已经觉得很幸福了。 | 继续圆角矩形高亮胶囊输入框;Ghost Cursor 保持在胶囊输入框附近,不左右晃动,不触发花瓣。 |
| 7 | day2_wrap |
我们不需要着急,每天都多了解彼此一点点就好。今天接下来的时间,你想让我陪你做点什么呢? | 继续圆角矩形高亮胶囊输入框;台词约 70% cue 同步启动花瓣层、隐藏 Ghost Cursor、清理内置/外置胶囊输入框高光和所有 spotlight,随后写入 Day 2 完成态。 |
Day 2 启动链路:
UniversalTutorialManager.startAvatarFloatingGuideRound(2)
└─ YuiGuideDirector.playAvatarFloatingRound(2)
└─ window.YuiGuideDailyGuides[2].round
核心代码锚点:
static/yui-guide-director.jsgetYuiGuideDailyGuide(2)resolveAvatarFloatingSceneText()resolveAvatarFloatingSceneEmotion()playAvatarFloatingScene()runAvatarFloatingSceneOperation()
static/yui-guide-day2-screen-voice-guide.js- Day 2 scene 配置、台词、voice key、收尾
petalTransition。
- Day 2 scene 配置、台词、voice key、收尾
- 设置与主动搭话目标:
#${p}-btn-settings- 设置弹窗侧边栏容器 /
[data-neko-sidepanel-type] #${p}-toggle-proactive-chat
- 外置聊天窗同步:
TutorialInteractionTakeover.setExternalizedChatSpotlight()TutorialInteractionTakeover.setExternalizedChatCursor()
外置聊天窗 / PC 全局 overlay 模式下,Day 2 需要保存并复用 Ghost Cursor 的目标锚点,避免跨 scene 或跨窗口切换时从默认点硬跳。建议入口 API:
saveCursorAnchor(anchor):在播放结束、目标移动完成或收到 settled anchor 后保存{ sceneId, kind, x, y, settled, updatedAt }。readCursorAnchor(sceneId):scene 进入时优先读取同 scene / 同 kind 的未过期 anchor;可用时平滑移动到该 anchor,不可用时再走默认目标解析和 fallback jump。invalidateCursorAnchor(sceneId):目标 DOM 消失、窗口关闭、尺寸变化过大或教程结束/跳过/生气退出时失效对应 anchor。syncAnchorAcrossWindows(windowId, anchor):外置聊天窗回传 anchor 后同步到首页和 PC overlay;窗口 id 不匹配或 anchor 过期时丢弃。
锚点必须有过期时间;外置窗口传播时只传坐标、目标 kind、sceneId 和 settled 状态,不携带点击 effect。播放结束保存,下一 scene 进入先读;读不到或目标不可信时使用当前默认目标重新解析。
- Day 2 不再包含
day2_screen_entry/day2_screen_entry_invite。 - 首句承接台词不变,不等待用户选择,不展示选项按钮。
- 设置入口只允许打开教程临时设置面板;设置侧边栏只展示区域,不点击或保存配置。
- 主动搭话开关只展示入口,不点击、不打开子侧栏、不改变开关状态。
- 收尾前必须关闭 Day 2 临时打开的设置面板和侧边栏;收尾三句必须圆角矩形高亮胶囊输入框;最终句 cue 必须同步清理高光、Ghost Cursor 和外置聊天窗状态。
- 外置聊天窗 / PC 全局 overlay 模式下,设置按钮和主动搭话开关的高光与 Ghost Cursor 必须由同一个 overlay 状态包同时携带;cursor 移动、spotlight refresh 或目标矩形重算都不得只发送其中一半,避免远端渲染层交替清空高亮或光标造成闪烁。
- Day 2 scene 顺序与本文一致。
day2_intro_context文案、text key 和 voice key 保持原样。- 设置按钮、设置侧边栏、主动搭话入口都有明确高光目标、Ghost Cursor 路径和禁止点击/保存约束。
- Day 2 主线不触发屏幕分享、主动搭话或用户配置保存。
- Day 2 主线普通指认统一使用平滑移动和停留。
- Day 2 完成、skip、destroy 和 angry exit 的结束态语义不变。