场景是一种隐性模式
别名: 隐性模式 · mode confusion · 场景与模式状态
概念解释
场景给了一组设备状态一个名字,但没有给家里一个模式状态:系统知道「睡眠场景被执行过」,不知道「家里现在处于睡眠模式」。模式与场景的区别在持续性——场景是一次性设置动作,模式是持续成立的状态区间。用户按场景的方式使用它,心智上却按模式理解它(「现在是观影模式」),这个错位就是「隐性模式」问题。
「隐性」指:模式存在于用户的理解里,不存在于系统的模型里。它没有状态变量记录进入与退出,没有对「现在是什么模式」的查询,没有模式间的互斥与仲裁——所有模式该有的机制都不在。
机制
三个后果都从「模式在系统侧缺位」直接掉出来。
状态漂移。 场景执行后,任何手动改动都不惊动场景:睡眠场景开的小夜灯被家人关掉后,「场景」还是那个场景,现实已经不是那个现实。模式标签与设备状态从此各走各路,且没有任何机制对账——因为模式根本没有被表示。
叠加没有语义。 连续执行「观影」和「会客」两个场景是什么效果?答案是逐设备后写覆盖(last-write-wins):两份目标清单按执行顺序混合,交集设备取后者,其余各留各的。没有模式层的互斥与仲裁,用户预期「切换模式」,系统做的是「合并清单」。
模式混淆。 用户不确定「现在到底处于哪个模式」时,就会对接下来每个操作的后果失去预期——这正是人机交互里的经典问题模式错误(mode error):同一个操作在不同模式下后果不同,用户以错误的模式理解操作。模式错误研究的老结论在此完全适用:错误不在用户记性差,而在系统没有把当前模式以可感知的方式持续呈现。隐性模式把这个问题原样搬进了家里,还放大了规模——一个家有十几个「模式」,全都没有指示。
怎么研究
模式错误有成熟的研究传统:Sellen、Kurtenbach 与 Buxton 1990 年的经典工作确立了模式错误的发生机制与感官反馈的预防作用——模式错误率随「模式呈现的显著性」下降,而不随用户训练显著下降。这个范式可直接迁移到场景:操纵「当前场景可见性」(无指示 / 应用内可查 / 环境中持续可感知),测量用户对「现在处于什么状态」的判断正确率与误操作率。
智能家居纵向研究中也有间接证据:用户给场景起生活化的名字、把场景当作家中「时期」谈论(「晚上开那个老人模式」),语言层已经把它模式化,与系统的无状态实现形成错位。
边界
- 不是所有场景都需要模式化。 「一键离家」这类执行后即终结的场景,用户不期待它持续存在,无模式语义是正确的简洁。需要模式化的是「持续一段时间、期间行为不同」的场景(睡眠、勿扰、度假)——识别标准是用户会不会问「现在还在这个场景里吗」。
- 模式化有代价。 给场景加模式状态就要回答互斥、嵌套、并发问题,复杂度从产品侧回来。对不需要的场景强行模式化,是拿模式的成本买不到模式的收益。
- 环境线索可部分代偿。 现实中的模式线索(灯的亮度、窗帘开合)让用户多数时候能推断当前「模式」;代偿失效恰恰发生在线索被遮蔽的场景(夜间、离家远程查看),这也是模式混淆的高发处。
怎么落地
- 对持续型场景显式引入模式语义:进入后系统记录「当前模式」并展示;再次执行视为重新进入;给出明确的「结束模式」操作(见同组关于退出路径的讨论)。
- 执行第二个场景时询问模式意图:「已在睡眠模式,切换到会客将关闭小夜灯——切换/叠加?」不要静默合并清单。
- 把当前模式放到环境里而不只在应用里:勿扰模式点亮一颗指示灯、改变灯的响应行为——模式错误的解药是持续可感知的模式呈现,不是更详细的设置页。
- 模式与设备状态对账可见:进入「离家」模式但门没锁成功时,模式界面上直接标出冲突项。
- 验证办法:随机时刻询问家庭任一成员「现在家里处于什么状态」,看成员间一致率与系统记录的一致率;两处不一致高的地方就是漂移与混淆的现场。