DailyPresence 里有一块叫 Observer 的东西。它的职责只有一个:决定什么时候打扰用户。
第一版做得很简单——早上八点一次,晚上十点一次。我当时的想法是:固定时间省事,用户也容易形成预期。
上线第四天,我自己把通知关掉了。那天八点我在开会,晚上十点已经睡了。
问题不在时间,在假设
关掉通知之后我才想清楚:定时提醒背后藏着一个假设,假设人每天有空的时间是固定的。
这个假设从来不成立,只是被大多数产品默认接受了。
更麻烦的是,一旦发现「这个提醒不适合我」,用户的处理方式不是调整时间,而是直接关闭通知。
而通知一关,这个产品就死了——它的核心价值完全依赖那一次打扰。
改成打分器
重写的方向是把「什么时候提醒」从规则改成评估。Observer 现在只做一件事:给当前时刻打一个分。
- 空闲概率——基于历史行为推断你现在大概是不是在忙。
- 交互距离——距离你上一次打开的时间。太近会烦,太远会陌生。
- 完成度——今天已经完成了几段。已经够了就不再打扰,这比提醒更重要。
三个量相乘,超过阈值才触发。很简单,但性质完全变了:它从「到点就说话」变成了「挑时候说话」。
写完之后我意识到,这个改动的本质是:把「打扰用户」从一种权利变成了一种需要挣来的东西。
一个反直觉的结果
上线之后最意外的数据是:通知被关掉的比率明显下降,而平均响应时间几乎没有变差。
我原本以为减少打扰会降低响应速度——人更容易忘。但实际上,被更少地打断,反而让人更愿意回应。
因为每一次通知都变得更可信了。
还没解决的
Observer 对「非常规的日子」完全失效。出差、假期、生病——这些日子里我的行为模式和历史完全不符,
于是打分器给出的判断也基本上是错的。
下一步大概需要让它能识别「今天不太一样」,而不是试图在异常日子里继续做精确预测。