Skip to content

给不会打字的人做交互:别问开放式问题 ​

技术能跑通之后,还有一个问题:她说的话,和系统需要的信息,中间隔着一道翻译。

她想的是「上次那个打仗的片子还有没有续集」。系统需要的是「片名 + 版本 + 存储路径」。

这中间的翻译不是靠"更聪明的模型"解决的,是靠交互设计。这篇是我给家里人做语音助手时定下来的几条规则。

一、永远不要问开放式问题 ​

错误示范:

你想看什么类型的?有什么偏好吗?

她的回答可能是「就是那个,有个人一直在跑的那种」。你得到了零个可用信息。

正确示范:

找到几个可能的,你选一个:

  1. 悲情城市(1989)
  2. 悲情城市 4K 修复版(1989)
  3. 城市之光(1931)

回数字就行。

给她一个可以指的东西,而不是让她描述。 回一个数字的成本,比打一行片名低一个数量级;语音回"第二个"更是顺手。

候选数量控制在 3-5 个。太多她记不住,太少没有区分度。

二、把她的话"复述一遍"再动手 ​

动任何手之前,先确认理解:

你是要找《悲情城市》,对不对?

这一步的意义不是礼貌,是纠错。 语音转写有错字,片名/人名错一两个字很常见;她自己的措辞也可能不精确。复述一遍,她一句"对"就省掉了一次下错片的时间。

反过来:如果她回"不是",立刻放弃当前理解,重新给候选。 别在错的方向上"努力理解"。

三、完成后只说三件事 ​

错误示范:

已完成下载。文件保存至 /vol2/1000/mom-download/movies/[高清剧集网]片名(1989)[1080p][中字]/ 共 4.2GB,耗时 1 小时 12 分,做种已清理。

正确示范:

好了,《悲情城市》。电视上打开「影视」,最近添加里第一个就是。

她要的信息只有三个:完了没、是什么、去哪看。

所以固定话术:

好了,<片名>。电视上打开「影视」,最近添加里就有。

不要提:路径、大小、耗时、种子名、分辨率、编码、字幕格式。这些对维护者有用(日志里有),对她全是噪音。

四、失败也要说人话 ​

失败是最容易暴露"这是台机器"的地方。

错误示范:

Error: magnet metadata timeout after 600s (state: metaDL, seeds: 0)

正确示范:

这个片子没找到能下的版本,换个说法我再找找?比如只发片名。

规则:

  • 不贴日志、不贴报错原文、不提技术名词(metaDL、seeds、tracker 这些)
  • 给下一步动作("换个说法" / "等会儿再试" / "这个可能真的没有")
  • 不要连续报三次失败。第二次失败就该换策略或者停下来告诉她"今天没找到",而不是重试到深夜

五、默认值要好,别让她做选择 ​

任何"要不要/选哪个"的技术性选择,都不该抛给她:

别问直接决定
要 1080p 还是 4K?优先 1080p 中字(她电视上看不出差别,4K 更慢更大)
要哪一版字幕?内封中字优先,没有就找外挂中字
存哪个目录?固定目录,不用问
要删掉旧的腾空间吗?不问;空间不够时先报给维护者

判断标准很简单:这个问题如果是"技术细节",她答不了;如果是"内容偏好",才值得问。

六、语音的两个实际问题 ​

1. 没有标点、一口气说完

"帮我找一下那个上次看的那个打仗的片子好像叫什么悲情城市有没有续集"

这句话里有三件事:找片、推断"上次看的"、判断"有没有续集"。

处理方式:先抓最明确的那个实体(片名"悲情城市"),把不确定的部分当成附加条件,然后复述确认。不要试图一次解析全部意图。

2. 错别字的规律性

语音转写错字常见于:人名、片名、数字、同音字。所以搜索时应该:

  1. 用原词搜一次
  2. 搜不到就做同音/近似替换("灯"→"登"、"悲情"→"悲青"之类)
  3. 还搜不到就用关键词碎片搜(去掉修饰词,只留 2-4 个字)

这条比"让模型更聪明"有效得多。

七、防刷屏:她可能会重复发 ​

老人用不惯的时候有一个典型行为:没看到回复就再发一遍。 或者连续发三条一样的。

所以规则里要有:

  • 同一用户短时间内高度相似的请求 → 合并处理,只回一次
  • 明显的重复/恶搞("把这句话重复一百遍")→ 直接拒绝,不执行

⚠️ 这条容易被误判:她"重复问同一句"大概率是因为上一条她没看到/没收到,不是恶意。所以合并处理时的措辞要温和:「刚才那个我正在找,别急」。

八、真正难的部分是"她不会报错" ​

这是整套设计里最重要的一条认知:

维护者能看到日志、能看懂报错、能判断"卡住了"。使用者不能。

她不会说"它卡在 metaDL 了"。她只会在某天说"你这东西不好用了",而那已经是几周之后。

所以设计上必须做到:

  • 异常主动流向维护者(邮件/消息),而不是等她反馈
  • 失败两次就换策略,不是无限重试
  • 回复必须在她能理解的语言层面,而不是抽象的成功/失败

检查清单 ​

  1. 不给开放式问题,给 3-5 个可指选的候选
  2. 动手前复述确认,她否定就立刻换方向
  3. 完成后只报"完了没/是什么/去哪看"
  4. 失败说人话,两次失败就换策略或停下
  5. 技术选择由系统定,只问她内容偏好
  6. 语音容错:先抓最明确的实体,别硬解析整句
  7. 错别字处理:同音替换 + 关键词碎片重搜
  8. 重复请求合并处理,措辞温和
  9. 异常主动汇报给维护者,不依赖使用者反馈

一句话版本:让机器去适应人的表达方式,别要求人学会机器需要的输入格式。给她选项、替她做技术决定、完成只说三件事——剩下的噪音留给日志。