M2.07.2no absorbing dialogue state设计研究

每个状态都需要退出路径

别名: 陷阱状态 · absorbing state · 状态死胡同

概念解释

对话图里的每一个节点都要有离开这个节点的路,包括用户没按剧本说话的时候。问「几点出发」的节点如果只接受时钟表达式,用户说「还没定」「嗯……」或一直不说话,就会被留在原地反复追问——这是吸收态,不是「还在收集」。整段任务有成功/失败/退出三种终点,并不自动保证中间每个提问节点都走得出来。

机制

有限状态对话把「当前在问什么」编成节点,合法填充是一条出边。非法输入、沉默、答非所问如果没有出边,图论上就是吸收:无论再来什么,还停在同一节点。设计师以为「再问一遍」是在服务,实际是把重试做成了自环且没有环的上限。语音里用户看不见自己被卡在哪一格,只能听见同一问换着说法出现,于是提高音量或放弃。

出边不必等于立刻成功。可以去「降级提问」、去「跳过此槽」、去「任务失败」、去「挂起等待」。关键是事件被消费掉,状态改变。自环只在有计数器时合法:第三次仍填不上,必须离开。把「取消」当成唯一逃生口也不够——用户不一定会说那个词,沉默和「不知道」同样需要出口。

怎么研究

把对话规格编成有向图,对每个非终点节点检查四类事件是否都有后继:合法填充、沉默/超时、域外话语、「不知道/跳过」。因变量是无后继的节点数、带无界自环的节点数,以及日志里在同一提示停留超过 N 轮的会话占比。

模型检测可以找吸收态;现场更便宜的做法是对每个节点做探针话轮:在该节点注入沉默和一句明显不相关的话,看是否离开或有限次后离开。不要用任务完成率代替:完成的人根本没进过陷阱节点。

边界

等待后端返回的短暂自旋是过渡态,不是提问态;它的出口是超时去失败,而不是接受用户话语。法定必须听完的播报,中途插话可能被规定为无效,出口被延后到播报结束——要明示,不要假装在听。测验、验证码这类「必须答对才能走」的节点,出口是次数用尽后的失败,而不是无限猜。单轮无状态命令几乎没有中间节点,这条约束主要落在多轮填槽。

怎么落地

  • 给每个提问节点列一张四格表:听懂了去哪、沉默去哪、听不懂去哪、用户说不知道去哪。缺一格就补边,不要靠「再问一次」顶上。
  • 自环必须带次数:同一节点第几次重问后离开,离开后去失败、跳槽还是转人工,写进表里。
  • 「再问一遍」如果措辞完全不变,用户无法判断系统是否还活着;变换问法不算新出口,出口是状态迁移。
  • 验证:从每个节点各打三条探针(沉默、域外、「跳过」)。仍停在原节点超过设定次数,这个节点就还是吸收态。

延伸

  • 同组M2.07.1 流程需覆盖成功、失败与中途退出 · M2.07.3 流程图不能替代真实语料验证 · M2.07.4 槽位填充顺序应允许乱序 · M2.07.5 取消、重来与帮助在任何状态下可用 · M2.07.6 状态数量增长会超出可测试范围
  • 相邻M1.07 沉默与超时 · M1.11 沉默、超时与重提示 · M2.02 开放式与封闭式提问
  • 站内检索absorbing state · dialogue trap · state exit

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/M2.07.2