用户需求
目标用户:同时用两台以上睡眠设备、工作节奏不规律、愿意每周花 5 分钟复盘的知识工作者。我自己就是第一个用户。
「两台设备说法不一样,我该信谁?」
同一晚手表和床垫的总睡眠、深睡、入睡时间经常对不上,最后两个都不信,或者挑好看的信。
「睡得差,但不知道为什么。」
设备只看夜晚。白天开会到几点、几点喝的咖啡、喝没喝酒、心情怎样,都没接上。
「建议要么太泛,要么越界。」
「保持规律作息」谁都知道;另一头 AI 随口建议吃多少褪黑素,那已经是医疗决定了。
设计理念
按「同一晚」对齐,每个指标定一个主来源:入睡、总睡眠信手表,上床时间信床垫;两台设备的 HRV 算法不同(SDNN 和 RMSSD),所以不拿来相减。
日程、咖啡、酒、运动、心情、生活事件,和当晚睡眠放在一条时间线上,看「哪种白天对应哪种夜晚」。只说「像」,样本少就标「不确定」。
两周基线、两周试验,自动比较前后,同时检查两段的白天是否可比。周复盘只做一个决定:下周试什么。
通用生活建议,可以直接说。例:每天同一时间起床。
结合个人数据,只用「研究发现……你的数据像……可以试两周」,不说「你应该」。
诊断、用药、补剂剂量(含褪黑素)、停药换药:一律不答,请问医生。红旗症状直接建议就医。
每条建议都标证据档位(A 指南或系统综述 / B 随机对照 / C 观察研究 / D 专家观点)和可点开的原文。本地证据库 16 条,逐条核对过 DOI;其中 5 条读了全文,11 条只读了摘要,页面上如实标注。
产品 Demo
SwiftUI 原生开发,iOS 模拟器实测通过。以下五张是真实运行截图,数据是模拟的 5 周。







模拟数据
先设定好真相(例如 14 点后的咖啡让入睡变晚、喝酒让 HRV 降低),再按两台设备各自的偏差生成 4 周数据,看对账和关联分析能不能把它们找回来。
断开的地方 = 那晚手表没戴或出差。
床垫把「安静躺着」算成睡着,总睡眠稳定偏多约 20 分钟:这是口径差,不是某一晚出错,所以不天天报警。
绿 = 比自己平时好,红 = 比平时差。28 天、n=1,只能说「像」。


设计过程



核实 Eight Sleep 能同步到 Apple 健康,但官方没公开写哪些类型;两家 HRV 算法不同。不用非官方接口,不碰账号密码。
16 条文献逐条打开核对 DOI、作者和年份,标注读了全文还是只读摘要。建议卡只能引用库里的条目,引用不存在的条目程序直接报错。
对账、白天→夜晚、小实验、周复盘、建议卡、床头设备、数据与证据。做到一半发现「天天标黄」,改成只在比平时多出一截时才提醒。
没买硬件,先把固件原样编译进虚拟开发板,在网页上拖传感器、拔线、断网。仿真找出两个固件问题并修掉(v0.2 / v0.3),自检 13/13 通过。
发现 Eight Sleep 实际没往 Apple 健康写 HRV,于是改了取数规则;还发现自动同步文件里有重复、午睡、重叠三个坑,补了清洗和回归测试。真实数据只在本机处理,这里不展示。
用历史数据回测三档阈值:单晚就提醒太吵,连续 3 晚太迟钝,选了「连续 2 晚」。
规则引擎从 Python 移植到 Swift,10 个单元测试;模拟器实测时修了首屏被权限弹窗挡住、白屏、凌晨提前预判日照等问题。
硬件
ESP32 + 温湿度(SHT31)+ 光照(BH1750)+ 麦克风(MAX4466)+ 三个按键(咖啡 / 喝酒 / 情绪差)。物料约 ¥65–125,还没下单。


作者
做复杂业务系统出身(ERP、SCRM),现在用一组 AI agent 分工协作,做自己的软硬件产品。睡眠实验室是我给自己出的一道题:在健康这个容易说过头的领域,能不能做一个既有用、又知道自己边界的产品。
更多作品和完整的设计过程:关于我 →
先收敛,再搭建;稳定优先,能每天跑才算数;把迭代交还给用的人;只写已经发生的,不知道就写「未知」;隐私优先,数据尽量留在本机。
内测
留一个邮箱。只用于通知睡眠实验室的内测和更新,不转给任何第三方,随时可以回信要求删除。