desk-health-web-community-post

我做了一个给长期盯屏人群用的开源健康助手

写代码、写文档或做设计时,人很容易连续盯屏很久,忘记休息,也忘记眨眼。于是我做了一个开源的网页端工位健康助手:Desk Health Web。

护眼与工作节奏

项目支持 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 模型;
  • 继续优化移动端和浏览器兼容性。

欢迎体验和反馈

我想了解:

  1. 你通常需要哪种提醒:声音、系统通知,还是页面弹窗?
  2. 你会如何组合专注、休息、眨眼和干眼护理设置?
  3. 你更希望下一步增加自定义文案、统计导出,还是 PWA 安装?

欢迎在评论区或 GitHub issue 中反馈。如果这个项目对你有帮助,也欢迎点一个 Star。

相关推荐
Java后端的Ai之路4 小时前
06-React-Props
前端·react.js·前端框架
Flynt5 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
Csvn5 小时前
渲染管线
前端
程序员大阳5 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角
志尊宝6 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金6 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
柳杉6 小时前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化
IMPYLH7 小时前
HTML 的 <wbr> 元素
前端·html
Dovis(誓平步青云)7 小时前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
IT_陈寒8 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端