两台设备,
一本睡眠账。

睡眠实验室是一个多设备睡眠助手。同一晚,Apple Watch 说你睡了 7 小时,Eight Sleep 说 7 小时 20 分,深睡还差了半小时。睡眠实验室把两台设备对到同一晚,接上白天发生的事,再用两周一次的小实验,找到真正对你有用的改变。

睡眠实验室 iPhone App 今天页、Apple Watch 提醒和床头设备

截图来自真实运行的 iPhone App,数据是模拟的;不涉及任何人的真实健康数据。

用户需求

问题不是「数据不够」,是三件事

目标用户:同时用两台以上睡眠设备、工作节奏不规律、愿意每周花 5 分钟复盘的知识工作者。我自己就是第一个用户。

01

「两台设备说法不一样,我该信谁?」

同一晚手表和床垫的总睡眠、深睡、入睡时间经常对不上,最后两个都不信,或者挑好看的信。

02

「睡得差,但不知道为什么。」

设备只看夜晚。白天开会到几点、几点喝的咖啡、喝没喝酒、心情怎样,都没接上。

03

「建议要么太泛,要么越界。」

「保持规律作息」谁都知道;另一头 AI 随口建议吃多少褪黑素,那已经是医疗决定了。

设计理念

一个闭环,加一套护栏

统一口径

按「同一晚」对齐,每个指标定一个主来源:入睡、总睡眠信手表,上床时间信床垫;两台设备的 HRV 算法不同(SDNN 和 RMSSD),所以不拿来相减。

接上白天

日程、咖啡、酒、运动、心情、生活事件,和当晚睡眠放在一条时间线上,看「哪种白天对应哪种夜晚」。只说「像」,样本少就标「不确定」。

一次只改一件事

两周基线、两周试验,自动比较前后,同时检查两段的白天是否可比。周复盘只做一个决定:下周试什么。

绿区

通用生活建议,可以直接说。例:每天同一时间起床。

黄区

结合个人数据,只用「研究发现……你的数据像……可以试两周」,不说「你应该」。

红区

诊断、用药、补剂剂量(含褪黑素)、停药换药:一律不答,请问医生。红旗症状直接建议就医。

每条建议都标证据档位(A 指南或系统综述 / B 随机对照 / C 观察研究 / D 专家观点)和可点开的原文。本地证据库 16 条,逐条核对过 DOI;其中 5 条读了全文,11 条只读了摘要,页面上如实标注。

产品 Demo

iPhone App:早上看懂,晚上被提醒,周末复盘

SwiftUI 原生开发,iOS 模拟器实测通过。以下五张是真实运行截图,数据是模拟的 5 周。

今天页:昨晚睡眠和四个圆环
今天:对账后的昨晚
今天页:昨天的时间线和建议卡
昨天发生了什么 + 1 条建议
记录页:心情、生活事件、咖啡和酒
记录:5 秒内完成
提醒页:为什么提醒我
提醒:点开看为什么
周复盘:哪种白天对应哪种夜晚
复盘:下周只试一件事
模拟使用场景插画:21:30 手表轻震提醒入睡在往后漂
模拟使用场景(插画):连续两晚偏离平时,21:30 手表轻震一下。
Mac 端每晚对账页
Mac 端「每晚对账」:两台设备逐项对比,标出主来源和理由。
34 秒卡点宣传视频:画面来自真实运行的 App 和网页(模拟数据),场景为插画;配乐由 ElevenLabs 生成。

模拟数据

用一份「知道答案」的假数据,检验产品能不能找到答案

先设定好真相(例如 14 点后的咖啡让入睡变晚、喝酒让 HRV 降低),再按两台设备各自的偏差生成 4 周数据,看对账和关联分析能不能把它们找回来。

● Eight Sleep● Apple Watch(主来源)
28 晚两台设备总睡眠折线

断开的地方 = 那晚手表没戴或出差。

系统性偏差(Eight Sleep − Apple Watch)

入睡、总睡眠、深睡、REM 的平均偏差

床垫把「安静躺着」算成睡着,总睡眠稳定偏多约 20 分钟:这是口径差,不是某一晚出错,所以不天天报警。

哪种白天,对应哪种夜晚

白天类型和夜晚指标的热力图

绿 = 比自己平时好,红 = 比平时差。28 天、n=1,只能说「像」。

小实验页:床温调低 1 档的前后对比
小实验「床温调低 1 档」:结论是「看不出差别」,并指出试验期多喝了 4 次酒,两段不可比。会说「不知道」,比硬给结论更重要。
建议卡:绿区黄区、证据档位和原文链接
建议卡:分区、证据档位、DOI 和核验程度。

设计过程

从草稿到软硬件,每一步都留了证据

草稿:核心闭环
草稿 1:核心闭环和护栏
草稿:iPhone 低保真线框
草稿 2:iPhone 低保真线框
草稿:床头设备和提醒阈值
草稿 3:床头设备和提醒阈值
01 · 查证

先查清能拿到什么数据

核实 Eight Sleep 能同步到 Apple 健康,但官方没公开写哪些类型;两家 HRV 算法不同。不用非官方接口,不碰账号密码。

02 · 证据库

建一个不许编的证据库

16 条文献逐条打开核对 DOI、作者和年份,标注读了全文还是只读摘要。建议卡只能引用库里的条目,引用不存在的条目程序直接报错。

03 · 模拟数据 + 网页原型

用假数据跑通 7 个页面

对账、白天→夜晚、小实验、周复盘、建议卡、床头设备、数据与证据。做到一半发现「天天标黄」,改成只在比平时多出一截时才提醒。

04 · 硬件仿真

真固件跑在虚拟 ESP32 上

没买硬件,先把固件原样编译进虚拟开发板,在网页上拖传感器、拔线、断网。仿真找出两个固件问题并修掉(v0.2 / v0.3),自检 13/13 通过。

05 · 真实数据

用自己的历史数据校准

发现 Eight Sleep 实际没往 Apple 健康写 HRV,于是改了取数规则;还发现自动同步文件里有重复、午睡、重叠三个坑,补了清洗和回归测试。真实数据只在本机处理,这里不展示。

06 · 提醒回测

上线前先算「会被打扰几次」

用历史数据回测三档阈值:单晚就提醒太吵,连续 3 晚太迟钝,选了「连续 2 晚」。

07 · iPhone App

SwiftUI 原生 App

规则引擎从 Python 移植到 Swift,10 个单元测试;模拟器实测时修了首屏被权限弹窗挡住、白屏、凌晨提前预判日照等问题。

硬件

床头「环境 + 上下文」小设备

ESP32 + 温湿度(SHT31)+ 光照(BH1750)+ 麦克风(MAX4466)+ 三个按键(咖啡 / 喝酒 / 情绪差)。物料约 ¥65–125,还没下单。

硬件仿真台:一晚剧本
仿真台跑「一晚」剧本:熄灯、降温、打鼾、闹钟,120 倍速约 4 分钟。
硬件仿真台:拔掉温湿度模块
故障注入:拔掉温湿度模块,其他读数照常上报。
接线图
接线图。麦克风用 ADC1 引脚,因为 Wi-Fi 打开时 ADC2 不能用;温湿度模块离板 10cm,避免芯片发热把室温读高。

作者

Ryan

做复杂业务系统出身(ERP、SCRM),现在用一组 AI agent 分工协作,做自己的软硬件产品。睡眠实验室是我给自己出的一道题:在健康这个容易说过头的领域,能不能做一个既有用、又知道自己边界的产品。

更多作品和完整的设计过程:关于我 →

我做产品的几条原则

先收敛,再搭建;稳定优先,能每天跑才算数;把迭代交还给用的人;只写已经发生的,不知道就写「未知」;隐私优先,数据尽量留在本机。

内测

想在内测时收到通知?

留一个邮箱。只用于通知睡眠实验室的内测和更新,不转给任何第三方,随时可以回信要求删除。