可撤销的操作可用事后撤销替代事前确认
别名: 事后撤销 · post-hoc undo · 确认替代
概念解释
动作若能在用户还听得见结果的窗口里完整滚回,先做、说出做了什么、听撤销可以替换执行前的那一轮是/否。「正在厨房放爵士,说取消就停」比每次「要在厨房放爵士吗」少一轮,错误只在真错时才付费。前提是撤销是真的,而且错误能被听见。可逆性不够,或错了用户听不出来,事前确认就不能卸。
机制
事前确认的成本打在每一次尝试上,包括那 99% 正确的次。事后撤销的成本打在出错的次上,外加用户必须注意到错。GUI 用视觉变化当注意钩子;语音的结果转瞬即逝,钩子只能是那句结果播报本身。播报太短、被噪声盖住、或说的是套话,用户注意不到,撤销窗口会在无人使用中过期——看起来可逆,操作上等于不可逆。
窗口长度要覆盖「听完结果 + 决定说取消 + 说完」的时间,还要在这段时间里把撤销词保持在识别范围里。窗口太短,等于没有替代;窗口太长,世界可能已被第三人看到(消息已读)。所以「可撤销」不是属性开关,是窗口、可察觉性、识别范围三条一起成立。
怎么研究
同一可逆动作比较两种流程:每次执行前确认,对执行后播报并开启撤销。因变量是任务总时长、未被纠正的错误数、撤销实际被说出口的比例。再改窗口(两秒对十秒)和是否有屏幕。占用手眼的现场比实验室更伤可察觉性:人在开车时可能听漏结果播报。
日志里看撤销词出现时窗口是否已关。关了之后的「不对」会变成下一轮新命令,看起来像识别失败,其实是替代方案的时间设计失败。
边界
钱已清算、邮件已到达对方收件箱,撤销对说话人成立、对世界不成立,不能替代。错成了发音相近的另一个联系人,播报「已发给妈妈」而用户听不出号码已变,可察觉性失败。多用户设备上,执行人离开房间,撤销权落在别人身上。撤销自己还要再确认一次,摩擦叠回去,替代就没了。不可逆格与高代价格本来就不是这条的适用范围。
怎么落地
- 仅对表上可逆且代价可承受的动作启用:执行 → 用一句具体结果播报(含设备、对象)→ 明确可以说的撤销词 → 窗口内保持对该词的监听。
- 撤销词要好说、好猜(「取消」「停下」),不要藏在「还可以说撤销上一步」。
- 结果播报必须能暴露错误:说「已发给张经理」而不是「已发送」。听不出错,就不能卸确认。
- 验证:人为制造一次错误执行。用户在窗口内说撤销,世界应回到执行前。把播报静音再试一次——若错误开始漏网,说明替代依赖那句播报,播报不能再被当成可删的客套。