压力提醒:宁可漏,不可骗
智能提醒不是一律去重,而是先分清手表平时采得疏还是密:低频沿用逐条提醒,高频才收拢密集读数。
提醒太多,但坏的不是「太多」
有用户说:一个下午连着收到好几条压力提醒。
技术上一切正常。Apple Watch 在某些设备、某些日子里会把心率变异性(HRV)写得更密,而我们的提醒原本跟着样本走——样本翻倍,提醒就翻倍。
最省事的做法是加个冷却时间,一小时最多一条。但那只是把「太多」压下去:真正的变化会和重复播报一起被削掉。
真正坏掉的也不是频率。用户分不清哪条值得看,于是开始怀疑这东西还有没有用——而这才是致命的。一个人决定关掉提醒,不是少收几条通知,是我们彻底说不上话了。坏的是信噪比,以及由它决定的信任。
所以方向不是一律少发,而是先弄清手表近期正常的采样习惯:平时采得疏,就保留每条有效更新;确实进入高频采样,才收拢重复打扰。
有几件事我们不动
数据不藏。图表、小组件、表盘照常更新,我们过滤的只是「值不值得打断你」,不是「值不值得记录」。
话不说重。不用「危险」「异常」,也不在横幅上甩出分数——语言一旦过度,就是在暗示一种我们其实没有的确定性。
不假装精确。HRV 只是压力的间接线索。宁可说得含糊一点,也不把推断包装成测量。
底线其实就一句:宁可漏,不可骗。
少说,是因为说错的代价更大
漏掉一次真实的变化,后果很轻——它还在图里,你随时能看见。
说错一次,代价重在两个地方。一是信任:每一次「我明明很放松,你却说我在紧张」,都在扣同一个有限的额度,扣完了,真有事的时候也没人抬头。二是更隐蔽的那层——它自己就会制造压力。一个人被反复告知自己在紧张,身体是会有反应的。医学上叫反安慰剂效应,ICU 里叫警报疲劳,说的是同一件事:警报响得太勤,人就开始连真的也不信了。
一款健康产品最坏的失败不是测不准,是让用它的人变得更焦虑。那条线我们不想跨。
所以有几样东西是我们主动放弃的:一部分灵敏度——边缘的、轻微的变化不再通知你;一部分可解释性——我们用你自己的基线判断,而不是一条「掉了 15 毫秒」的全球阈值,人和人的基线能差好几倍,那条线是假精确;还有一部分存在感——通知一少,产品就显得没那么「活跃」,这我们认了,健康产品不该靠打扰来证明自己在工作。
怎么才算「有变化」
原则说完了,落到实现上先要判断采样习惯,再做状态判断。
智能提醒会先从近期历史里学习什么是你的正常采样节奏;Workout 和 Mindful Session 不参与这份画像。低频画像沿用旧版行为,每条有效 HRV 更新都可以提醒,即使状态和上一条相同。只有高频画像才会合并密集读数、要求同一级别连续确认,并限制 30 分钟最多一次。历史还不够时,则从实时出现的第 3 条密集读数起开始合并。「每次更新」以及 60/120 分钟选项的含义都不变。
高频路径会把短时间内连续写入的读数视为同一次观察,避免同一波数据变成通知风暴;低频路径不会被这套合并误伤。
第二道是跟谁比。不和人群平均值比,也不跟昨天的你比,跟你最近这段时间自己形成的分布比。做法是在滚动窗口里取分位:你的 HRV 长期落在哪段区间,明显掉出去才算偏低。为什么不用「低于均值两个标准差」——HRV 的分布是偏的,长尾很长,正态那套假设在这里不成立,硬套上去会把天生波动大的人判成长期紧张。
第三道是要求一致。单次读数跳一下说明不了什么,可能是没戴稳,可能是刚站起来。要连续若干个点朝同一个方向偏,我们才认它是状态变了,而不是抖动。这一道直接决定灵敏度:要几个点、偏多少,是整条链路里唯一真正需要拍板的数。我们把它往保守那头调,代价就是边缘的、短暂的变化不再通知你——前面说的放弃灵敏度,说的就是这里。
第四道是运动。心率升、HRV 降,这在跑步和紧张时几乎一模一样。区分靠别的信息:心率上升的斜率、同时段有没有运动记录、持续了多久。认出来还不算完,运动结束之后 HRV 会低一阵,那是身体在恢复,不是压力,这段时间也不出声。
四道合起来是个状态机:正常 → 偏离中 → 触发 → 恢复 → 回到正常。恢复也告知,因为「好了」这个消息同样有用——只在变差时才出声,等于把身体训练成坏消息的来源。
别人是怎么做的
市面上的做法大致四类,没有哪类是错的,只是各自默认了一件事。
定时提醒。 到点叫你深呼吸、站起来、喝口水、记一笔心情。它默认压力是可以排班的——每天下午三点你会紧张,那我三点提醒你。压力不是这样发生的。这类产品真正卖的也不是准确,是习惯养成;提醒只是把人拉回 App 的方式,所以它必须稳定地响,响得少反而算它失职。
固定阈值。 低于某个数就报警。它默认所有人共用一条线。前面说过,人和人的基线能差好几倍,同一条线切下去,得到的是武断,不是客观。硬件厂商偏爱这招,因为它好解释,客服也好回答。
每天一个分数。 压力分、身体电量、恢复度,一天一推。它默认你需要的是天天可比较的一个数字。麻烦在于这个数字必须天天变,不然用户会觉得产品没在干活——于是噪声被包装成了波动。这类产品的北极星通常是日活和打开率,而通知是拉日活最省力的手段,你很难指望它主动少发。
全量播报。 检测到就推,一条不漏。它默认信息的价值等于完整性。这个默认在服务器监控里是对的,在手腕上是错的——那几十条读数说的是同一件事。
我们走的是第五条:先归段,再比你自己最近的分布,要求方向一致、持续够久,才出声。代价前面都写过了——灵敏度、可解释性、存在感。
这些做法在各自的场景里都站得住。定时提醒对刚开始练正念的人有用,分数对看长期趋势的人有用。区别只在于它们优化的是参与度,我们优化的是信任。参与度掉了还能想办法拉回来;信任掉了,用户只是把开关关上,你甚至不知道他是哪个下午关的。
大多数人和少数人
大多数人要的是同一件事:别烦我,但真有事告诉我。上面那套判断的阈值,就是照这个取向调的。
覆盖不到的,交给设置:智能提醒、每次更新、低打扰、极少打扰。需要每一条的人——在做自我观察、在调作息——选「每次更新」,那是真实需求,不是我们懒得判断。只想被叫醒一次的人,往安静那头选。
至于基线本身特殊的人(年龄、用药、心律状况、长期训练),我们没给他们加开关,让基线自己适应。让用户亲手校准一条生理基线,等于把我们的不确定性转嫁给他。
开关也不是越多越好。每加一个,都是把本该我们做的判断推回给用户;选项一多,看着就像我们自己也没想清楚。所以只在真正有分歧的地方开:打扰频率。
还没做好的部分
基线需要时间,刚用几天时它很薄,判断会更保守,这是设计选择不是缺陷。误报源也没清完——除运动之外,咖啡因、饮酒、时差、生理周期都会动 HRV,目前只覆盖了最主要的一批。它替代不了你的判断,也不是医疗建议。
做得对不对,我们不看「通知条数下降了多少」,那只要少发就行。看的是还有多少人愿意开着提醒、通知被点开的比率有没有升,以及最诚实的那个反向指标:有多少人手动关掉了它。
说到底,健康产品最贵的资源不是算力,是它开口时你还愿意听。该逐条说时不漏掉,该收拢时别重复。
上面这些判断都建立在个人基线之上。这一篇已经写了:个人基线——为什么你的正常不是人群均值。
继续阅读
在 Stress HRV 里体验这些想法
App Store 下载这些笔记分享个人健康工具的产品思考,不构成医疗建议。