生活助手接进聊天以后,最先暴露的问题不是功能本身,而是它处理命令时过于安静。
试 /today、记一条事项、加一条购物、建一个提醒、写一个学习计划,这些功能单独看都不大。麻烦在于,每个命令都发生在聊天流里。
聊天流不会等系统慢慢处理。
如果机器人沉默三分钟,用户不知道它是没看见、正在处理、写入失败,还是已经处理完但消息丢了。哪怕最后结果是对的,这种体验也会让人不放心。
因此对生活助手的核心要求是:响应可以慢,但不能缺少状态回包。
第一阶段别急着直接执行
日常命令很容易越写越猛。
用户说一句“提醒我”,系统就直接建提醒;用户说一句“买完了”,系统就直接改购物清单;用户说一句“今天安排”,系统就直接读日历、读任务、读记忆,再拼一段综合回答。
这些都可以做,但第一阶段不该把能力全部放开。
更稳的入口是先整理动作:机器人先理解意图,给出明确计划或状态回包,再由固定脚本或受控命令处理确定动作。模型不应直接用一句聊天去修改真实状态,而要先把请求收敛为一个可检查的小对象。
这听起来多绕了一步,但对生活助手很重要。
因为生活场景里有很多模糊表达:
今天还有什么记一下这个买完了提醒我晚点处理这件事有风险吗给我排个学习计划这些句子都很轻,也都容易误解。这种一句话入口最好先保守一点,别让模型直接改提醒、清单或日历。
先回一句“我接到了”
很多自动化会等任务完成才返回消息。但在聊天场景里,更合理的做法是先返回一句确认:收到了。
它可以很短:
收到,正在整理今天事项。收到,准备写入购物清单。收到,先按一次性提醒处理。这条回包不代表最后完成。它只是告诉用户:消息已经进入系统,后面会有结果或错误。
这一步在慢链路里尤其重要。如果底层模型、远程服务、日历接口或数据库写入需要几十秒甚至几分钟,用户至少知道系统没有无声失败。
没有这条回包,所有延迟都会变成“不知道发生了什么”。
最后回包要能核对
接收消息之后,最终回包也不能只说“好了”。
好的回包要能核对:
- 写入了哪一类对象。
- 标题或摘要是什么。
- 时间被理解成哪一天哪一刻。
- 是否只是草稿或建议。
- 下一步如何查看、修改、取消或清理。
比如购物清单不该只回“已记录”。更好的回包是告诉用户记录了哪一项、放在哪个清单里、有没有发现重复项。
提醒也一样。用户说“晚点提醒我”,如果系统直接创建了一个含糊时间,后面一定会出问题。它应该把解析结果写出来,让人能看见刚才那句话被系统理解成了什么。
生活助手不是后台批处理。它面对的是人,每次返回的内容,基本就是用户判断系统是否出错的依据。
少打扰默认设置比功能丰富更重要
生活助手进入聊天场景以后,默认设置要轻。
优先保留以下默认设置:
- 不主动扩权。
- 不把每条聊天都写入长期记忆。
- 不因为一个命令去读取无关上下文。
- 不私聊催促别人。
- 不把建议说成已经执行。
- 能先 dry-run 或生成草稿时,不直接改真实状态。
设计这个助手的目标不是显得全能,而是减少买菜、提醒、计划这类小事的遗漏。如果它每次都长篇解释、主动追问、记录过多内容,很快就会变得烦人。
可清理路径要从一开始存在
测试生活助手时,还会遇到一个很实际的问题:测试数据怎么办。
提醒测试、购物测试、学习计划测试,如果都写入真实状态,事后就需要清理。如果清理动作没有事先设计,系统很快会被自己的测试痕迹污染。
因此测试一开始就要规划好删除方式,避免数据堆积后再补清理脚本。
至少要能做到:
能列出刚刚创建的对象能按测试标记清理能撤销最近一次写入能区分草稿和正式状态日常自动化最忌讳“能写不能删”。只要能写入真实清单、真实提醒、真实计划,就必须有对应的清理方式。
慢的时候也要有交代
如果一次命令要等三分钟,不能简单地把它归咎于“模型慢”。
延迟不能只当成后端问题,它会直接影响用户还敢不敢继续用。
系统要决定:
- 多久没有回包就算失败。
- 中间是否要发处理中状态。
- 最后结果迟到以后还要不要发。
- 用户重复发送命令时是否去重。
- 后台写入成功但回消息失败时怎么补偿。
这些问题不解决,生活助手就会让人不放心。它可能最终结果正确,但用户已经重新发送了一次、手动记录了一次,或者干脆不再信任它。
因此优先把状态机定义清楚,再追求更快的响应。
宁可它响应慢但始终有反馈,也不要它沉默几分钟后突然返回一个结果。
先把回包做稳定
生活助手的第一阶段,不是把所有日常动作都自动化。
它更像是在聊天入口和真实状态之间,先搭一层可靠回包:
接到请求说明理解谨慎执行返回结果提供清理只要这层稳定,后面再扩购物、提醒、会议、邮件、健康记录和学习计划,都能复用同一套回包和清理方式。
初期响应慢可以接受,不能接受的是:用户发出一句生活命令后,系统长时间沉默,最终也无法得知具体改动。
应先把“收到、处理中、已完成、在哪里撤销”这几点说清楚,再讨论更多自动化能力。
继续读