我做了一个给长期盯屏人群用的开源健康助手
写代码、写文档或做设计时,人很容易连续盯屏很久,忘记休息,也忘记眨眼。于是我做了一个开源的网页端工位健康助手:Desk Health Web。
- 在线体验:https://veniveci.github.io/desk-health-web/
- GitHub:https://github.com/VeniVeci/desk-health-web
- 技术栈:HTML、CSS、JavaScript、MediaPipe、WebRTC、Notification API、Web Speech API、Web Audio API
- 开源协议:MIT

护眼与工作节奏
项目支持 20-20-20 护眼、番茄钟、深度工作和久坐活动等节奏,专注间隔与休息时长可以自定义。
提醒出现后,用户可以选择休息 1 分钟、按设置时长休息、稍后继续或跳过。

高自由度的提醒设置
提醒不是固定的一种模式,而是可以按自己的工作习惯组合:
- 可选系统强提醒,让后台网页也能发送浏览器系统通知;
- 休息开始提示音可以单独开关;
- 休息结束后的"该工作了"语音可以单独开关;
- 可以设置勿扰时段,只保留页面提醒、不播放声音;
- 未处理的休息提醒会继续追提醒,每隔 20 秒更换搞怪文案、语音和通知;
- 点击休息、稍后继续或跳过后,追提醒立即停止。
追提醒不是强制流程,而是对"容易忽略提醒"的一种可选增强。当前内置的文案包括:
你的眼睛发来一封辞职信。
检测到椅子正在绑架你。
屏幕不会趁你休息时逃跑,它连腿都没有。
系统通知的具体表现会受到浏览器权限和操作系统通知设置影响;网页本身无法绕过系统的"请勿打扰"或权限限制。

浏览器本地眨眼监测
项目使用 MediaPipe Face Landmarker 在浏览器本地统计眨眼次数,展示:
- 本次眨眼次数;
- 最近 60 秒眨眼频率;
- 当前闭眼评分;
- 低于设定阈值时的主动眨眼提醒。
低眨眼提醒只显示 1 秒,然后恢复之前的计时状态,尽量减少打断。

干眼护理与语音提醒
干眼护理模式可以帮助记录医生已经给出的护理安排:
- 每日热敷提醒与热敷倒计时;
- 自定义用药名称和时间;
- 今日热敷、用药完成记录;
- 稍后提醒和今日跳过。
提醒语音使用 Web Speech API,提示音使用 Web Audio API,内置 12 种原创风格。休息开始和结束语音可以分别关闭,设置会保存在当前浏览器中。

这里需要特别说明:它不是医疗软件,不做诊断,不提供治疗方案或用药剂量建议,只帮助用户提醒和记录既有安排。
隐私优先的纯前端方案
- 没有后端服务,不需要注册账号;
- 摄像头画面只在当前浏览器中交给 MediaPipe 处理;
- 不上传视频、图片或眨眼统计;
- 设置和今日记录只保存在 LocalStorage;
- 不开摄像头也能使用计时、提醒和干眼护理;
- 可以直接部署到 GitHub Pages 或自己的静态服务器。

技术栈与后续计划
项目使用 HTML、CSS、JavaScript、MediaPipe Face Landmarker、WebRTC、Notification API、Web Speech API、Web Audio API 和 LocalStorage,没有后端,也没有复杂构建流程。
后续计划:
- 支持自定义追提醒间隔和文案;
- 支持导出本地统计;
- 增加 PWA 桌面安装;
- 支持自托管 MediaPipe 模型;
- 继续优化移动端和浏览器兼容性。
欢迎体验和反馈
我想了解:
- 你通常需要哪种提醒:声音、系统通知,还是页面弹窗?
- 你会如何组合专注、休息、眨眼和干眼护理设置?
- 你更希望下一步增加自定义文案、统计导出,还是 PWA 安装?
欢迎在评论区或 GitHub issue 中反馈。如果这个项目对你有帮助,也欢迎点一个 Star。