一、背景
前排都散开,让我来守护程序员的健康!
了解我的都知道之前做了一个久坐提醒方案。
全新TRAE助力我颠覆传统久坐提醒方案——懒癌晚期也能有救了! - 互动交流 - TRAE 官方中文社区
久坐这件事,知道要起身的人很多,真的起身的人很少。手环、App、弹窗、都用过,最后大多习惯后随手关掉了。最后思考很久,改为震动提醒,让我的注意力不得不集中到久坐上来,形成真实干预,必须让"忽略提醒"的成本高于"执行提醒"。。
拉了几个朋友来试了下,都说这个方案比普通的手表提醒强多了!
而这周,我又使用trae全新升级了整体体态监控方案:一个塞进椅子的震动装置,一个打开就能用的体态网页。
椅子负责让你起身,网页负责告诉你坐姿哪里不对。两样都不联网,数据只在这台电脑上。
二、痛点:方案的简洁与提醒的平衡艺术
手环震一下,抬腕划掉。弹窗弹出来,半秒关掉。常驻横幅看久了,变成背景。
它们共同的问题是:你什么都不做,提醒就失效了。弹窗关掉只要半秒,起身要三秒,但只有后者算数。
所以这次没有做「更强的提醒」,而是把停止提醒的动作变贵:想停震动,只能站起来。同时方案做到极简,这才是程序员们最喜欢的感受
三、产品哲学:七大原则造就
体验
1. 不弹窗:想停只能站起来
震动只走触觉,不打扰别人,也没法一键关掉。椅子把终止动作从「点一下」换成「站起来」,继续工作和停止提醒变成互斥的。
装置装进椅子,而不是做成 App。49E 线性霍尔贴在坐垫下,非接触、没有机械磨损跟体重无关,装上去就不用管它。
2. 斜前方 20–40°:最佳单摄像头方案
摄像头不要求正对。真实的桌子是斜的,显示器是偏的,人也会歪。正对脸时,头前伸在二维画面里被压扁,反而最不准;屏幕斜前方 20–40° 能同时看到耳、肩、膝,测头前倾和歪肩更稳。
腿被桌子挡住,页面就写「这条我看不到」;髋部不可见,躯干维度直接灰掉,不参与总分。看不到的地方不猜。
3. 适配多屏:上下左右正常转头识别兼容
写代码的人经常看左右甚至上下副屏。我也是,所以算法逻辑是头相对基线转 25° 以上,头前倾暂停计时;肩中点 3 秒位移 RMS 超过 3%,判定在调整姿势,三个场景都暂停累计。回正 3 秒以内不清零,超过 3 秒才开始衰减。
三个场景各自计时、各自冷却,含胸不会把肩线也算上。进入和退出用 0.35 / 0.20 双阈值,来回晃不跳。支持可配置
4. 标定错误姿势:最简洁稳定的算法
标定不是录一个「标准坐姿」,是把你自己的坏姿势录进去。
-
基线:坐直 5 秒,取中位数和 MAD,抗瞬时抖动。
-
示教:头前倾、含胸驼背、肩线不对称,各录 3 秒。含胸就真含胸,不用客气。
-
出阈值:
(坏姿势中位数 − 基线) × 0.6,夹在下限和「偏差 × 0.85」之间。 -
验收:重放刚录的数据,看每段命中率,80% 以上算通过。
没录的场景继续用默认阈值;录得不好只影响那一个场景。灵敏度有低/标准/高三档,统一缩放三个场景的阈值。自适应基线默认开,只在这一帧坐姿良好且没有场景触发时,按 1.2% 缓慢跟随;每项都有漂移上限,防止把驼背学成正常。标定结果可以导出 JSON、换机器导入。
5. 聚焦最关键 3 个场景
根据我多年的养生和对解剖学的自学经验,只需要做3个关键场景就可以:头前倾、含胸驼背、肩线不对称。
下面放下我最推荐的解剖列车,推荐每个被脊椎问题困扰的朋友阅读!
总分还在,但只决定圆环颜色。红屏和告警只看三个场景。总分低于 60 且持续 5 秒也会变红,避免「45 分却显示轻度偏差」。
6. 更多场景识别
支持识别眨眼、哈欠、皱眉、视线、俯仰、歪头等 8 项人脸指标。更有疲劳度/专注度识别!
7. 数据不出本机:离线 + 隐私模式
33 个姿态点、478 个人脸点。人脸模型顺带给了 52 个 blendshape,眨眼、张嘴、皱眉、视线方向直接取值
数据放在本地,断网照跑;5fps 推理,骨架用 rAF 插到 60fps;头前伸用米制 3D,不受远近影响;角度在像素空间算,避免 16:9 下 2.25 倍的偏差;GPU 不可用时自动降 CPU,不弹错误。
不想露脸可以开隐私模式,只画骨架如图。
四、TRAE 是怎么把这两样东西做出来的
1. 项目深度研究和文字处理能力升级
开新任务时,我没贴需求、没贴目录结构、没解释引脚约定。我让它直接读项目里的需求文档和固件源码,它自己定位到采样、去抖、状态机各在哪,知道既有的参数命名习惯,我只圈改动边界。
针对人脸和脊椎模型,我自己肯定做不出来,于是让TRAE的深度研究助手帮我处理,调研结果又快又规整,无需我和以前一样过多的干预就可以。
2. 拆完直接切 IDE,改一行烧一次
方案在 Agent 里确认完,直接切 IDE 模式写代码,不用把文件路径和结论抄一遍。
「改 → 烧 → 看 → 再改」在同一个任务里闭环,固件就这么一个模块一个模块写下来的
参数全部做成在线可改、写进 NVS 不用重编译,所以调阈值不用等编译。需要真机验证时把 testTimeScale 开到 60,30 分钟压成 30 秒。
配套的网页工具箱也是在这个循环里做完的:设置向导、一键烧录、高级调参、使用说明四页。一键烧录不需要装 PlatformIO;向导里画实时电压曲线,拿着磁铁在坐垫下晃,线跟着动就说明硬件通了。
3. 全新浏览器操作模式是真香
网页做完,我没自己点。让它打开页面,点开始、等标定、开设置、改数值、导出报告、进回放,摄像头授权那一步它停下来交还给我,点完继续。
效率实在太goal,回来三个具体的坑:归一化坐标直接算角度,16:9 下偏 2.25 倍;serve.mjs 没配 application/wasm,模型加载直接失败;窄屏下右栏被挤,页面出了横向滚动条。这三条都是我自己点一遍大概率会漏掉的。
以前我是产品的第一个用户,也是唯一一个测试机。这次它先跑一轮,我只处理必须人来的部分——摄像头授权、真人姿势、坐感和震动强度。
4. SIDE CHAT模式是我最惊喜的
改需求中不用等它跑完。回归在跑的时候,我直接去修改文案,研究新的方向探索,可以继承左侧主对话流的上下文,这个太强了吧!
椅子标定就是这么迭代出来的。第一版只录「坐直」和「含胸」两组算阈值,后来发现不同人驼背幅度差很多,改成基线 + 三个场景各录 3 秒坏姿势,阈值按 (坏姿势中位数 − 基线) × 0.6 算,夹在下限和偏差 × 0.85 之间,再重放刚录的数据看命中率,80% 以上才算通过。这套流程不是一次想好的,是一句一句补出来的。
五、演示和开源
项目清单
-
一把装在椅子上的装置,5V 供电,坐感零改变;
-
固件:四状态机、在线参数、三套配置档案、时间加速、OTA 双分区;
-
网页工具箱:设置向导、一键烧录、高级调参、使用说明;
-
设备看板:AP 热点、今日统计、7 天历史、200 条会话、CSV;
-
体态网页:3 个场景、29 项指标、人格卡、证据墙、报告导出、回放;
-
若干文件手册。
来玩:
-
报误判:打字、拿杯子、伸懒腰、看副屏,哪种姿势没有识别到误报了?说清楚动作,我来优化。
-
点场景:你希望它盯住哪个姿势——探颈、塌腰、翘腿、歪头看手机?说一个,我评估能不能做成第四个场景。
-
骨架竞猜:发骨架图,猜分数和人格
-
机位挑战:同一个姿势,找找有没有更好用的位置,看分数准确度差多少。
DEMO源码
坐姿健康-1024特别版.zip (9.5 MB)
随便想了个slogen哈哈:
提醒的终点不是更强的提醒,是不再需要提醒。











