把家里那台路由器再挖一层:它本来就在「看」你。
不靠摄像头、不戴手环、不掏手机。你坐在沙发上看电视,孩子在隔壁房间睡觉,老人半夜翻身——这些动作本身就会扰动空气里的 WiFi 信号,被一个 9 美元的 ESP32 模块收下来,再用本地小模型解一解,就能告诉你:「这间屋子现在有几个人、谁刚进来、呼吸是快是慢、心率到多少了」。
最近 GitHub 上冒出这么个项目叫 π RuView(repo:ruvnet/RuView,MIT,87k+ stars,Rust 主写,主分支昨天还在推),属于那种让人看完 README 会愣三秒钟的方案:把商规 WiFi 当雷达用。我把它跑了一遍,确实能做到一些事;但作为一个在「自托管这摊事」里折腾了好几年的人,我也得说几个真坑。
它到底干了什么
家用 WiFi 不只是给你传数据用的,它本身就是一片连续的无线电波。屋子里有人走过、呼吸、甚至坐着不动,都会让墙壁/家具/人体对无线电波的反射发生微小变化——学名叫「信道状态信息」(CSI)。
RuView 的玩法分三层:
- 采集层:便宜 ESP32-S3(9 美元一棵)跑固件抓 CSI 流,多棵串成 mesh 可以跨房间覆盖;也可以单独一棵 + 你家现有路由器。
- 本地模型层:Hugging Face 上的
ruvnet/wifi-densepose-pretrained是一颗预训练的对比学习编码器,4-bit 量化后只有 8 KB,Pi 5 上 8.4 ms 冷启动。能在 30 秒内学会你这间屋子的「无线电指纹」。 - 应用层:105 个预制模块(Cog),覆盖健康(呼吸/心率/跌倒/睡眠分期)、安防(入侵/玻璃碎/徘徊)、楼宇(会议室占用/电梯计数/HVAC)、零售(客流/排队)四大类。
跑起来的可视化长这样——左图是实时 3D 体征热力图,右图是只用 WiFi 就能画出来的人体骨架:

没有任何摄像头数据输入。骨架是从 CSI 时序里反推出来的。
它解决了什么具体问题
我自己最关心的几个场景:
- 老人看护:家里长辈独居,能不能不戴手表就知道他夜里呼吸顺不顺、起夜频率、心率有没有异常趋势?穿戴设备最大的问题是「忘记充电」「不舒服就摘了」,这种无感监测的好处就是「不存在被拒绝的可能」。
- 婴儿监护:很多新手父母不想在卧室装摄像头——那种带夜视+联网的摄像头本身就是安全隐患。CSI 监测完全不会成像。
- 智能家居联动:Home Assistant、Apple Home、Google Home、Alexa、Matter——它原生都接得上。人进屋自动开灯、半夜起床走廊灯亮到 30%、检测到「长时间无活动」就给你推送预警,这些自动化以前都依赖人体传感器或者摄像头。
- 呼吸/心率趋势:跑一夜就能拿到睡眠期间的呼吸/心率时序,理论上一周的数据就能看出趋势变化——这玩意儿不能替代医疗诊断,但作为「异常预警」够用了。
第二个图是一个更直观的体征视图——蓝色是呼吸段能量、绿色是变异度,你能直接看出「房间里现在的活动水平」:

怎么把它跑起来
三种入门姿势,从 0 到全栈:
① 没硬件,先看效果
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
# 打开 http://localhost:3000 看模拟数据
这是用合成数据跑的可视化,方便你判断这东西值不值得你下单硬件。
② 真的想玩,最低门槛
一棵 ESP32-S3 DevKit(约 9 美元,淘宝/立创商城都有),按官方 firmware/esp32-csi-node/provision.py 烧固件、配你家 WiFi、填桥接主机的 IP。然后主机装 Python 包:
pip install "ruview[client]"
# 或
pip install "wifi-densepose[client]"
PyPI 上的 ruview 和 wifi-densepose 是同一个 PyO3 编译产物(~250 KB,跨 Linux/macOS/Windows),可以直接 from ruview import BreathingExtractor, HeartRateExtractor。一颗 ESP32 就能跑 presence、呼吸、心率、跌倒这几项。
③ 想覆盖多个房间
建议 3-6 颗 ESP32-S3 串成 mesh(整套约 54 美元),每颗负责一个房间;进阶再上 Cognitum Seed(专用网关设备,约 140 美元 BOM)做持久化向量存储 + Ed25519 见证链 + MCP 代理。这套才能解锁完整的 105 个 cog 模块。
接 Home Assistant
最丝滑的联动方式——主机跑起来后挂一个 --mqtt 参数就完事,HA 里自动发现 21 个实体:11 个原始信号 + 10 个推断语义状态(someone-sleeping / possible-distress / room-active / elderly-inactivity-anomaly / meeting-in-progress / bathroom-occupied / fall-risk-elevated / bed-exit / no-movement / multi-room-transition)。三个开箱即用的 Blueprint 自动化直接装上就能用。
五个真坑
这是我必须告诉你、官方 README 也明确承认的几件事:
1. 模型的「真/假/半成品」要分清。README 自己在「Model weights: what’s real, what’s not」里专门写了一段——Hugging Face 上 wifi-densepose-pretrained(presence 检测)是 82.3% held-out temporal-triplet accuracy,可发表、可复现;wifi-densepose-mmfi-pose(17 关键点 pose,MM-Fi 基准)是 82.69% PCK@20,SOTA 论文级;但本地设备上跑的 cog-pose-estimation/pose_v1.safetensors 是「first-cut on-device model」——PCK@20 = 3.0%,远低于 35% 目标,运行时还是个 stub 返回 confidence=0。你看到的「单 ESP32 画骨架」那张演示图,跑的不是这个本地模型,是用 HF 权重离线后处理的。换句话说:你今天下单,单颗 ESP32 能给你靠谱的存在检测 + 呼吸 + 心率;但「画人体骨架」目前只能做 demo,离真产品还差一两个迭代。
2. 「100% presence」是撤稿过的数字。早期 README 写过单类录制 100% 存在检测,后来被作者撤回——现在老老实实标注是 82.3% temporal-triplet。这才是诚实现状。
3. JSONL RVF 权重 vs binary RVF 容器错配。Hugging Face 上下载下来的模型是 model.rvf.jsonl,但 sensing-server 的 --model 参数目前只认 binary RVF(RVFS magic)。直接挂载会报错、live pipeline 会降级到空输出而不是回退启发式。短期方案:Python 路径直接 safetensors.torch.load_file;live server 不带 --model 跑。
4. 「不戴设备 = 不准」是物理规律。单天线 + 56 子载波 + 20 帧窗口的 CSI 流,本身就缺乏多天线 NIC 研究依赖的细粒度空间信息。这就是为什么 pose 估计 distal/face 关节点基本是随机的——它不是 bug,是物理上限。要突破要么上多天线 mesh、要么上研究级 NIC(Intel 5300 / Atheros AR9580,50-100 美元)。
5. 邻居的路由器是「免费雷达照射源」也是「电磁环境噪声」。系统可以借邻居的 6 个信道的路由器当雷达照射源——好处是无需自己铺发射端,坏处是你的测量会被邻居的路由器配置变化影响。mesh 多频段跳频(ADR-029)能缓解,但不能完全消除。密集公寓楼里的体验可能比独栋差。
一个意外发现
把模型拉到本地以后,archive/v1/data/proof/verify.py 这条命令会做一次确定性信号处理回放,输出 SHA-256 对照作者发布的 hash——作者把这玩意叫做 Trust Kill Switch,意思是「我没法偷偷换模型权重骗你,你跑一遍就知道」。这种态度我很久没在 GitHub 上见过了。
适合谁
- 家里有老人小孩、想无感监测但拒绝摄像头的人
- 折腾 Home Assistant / Matter / Apple Home 自动化、对「房间级状态」有刚需的人
- 喜欢研究 CSI / RF sensing 这种「无线电当雷达」玩法的人
- 愿意为本地隐私买单、不介意手焊/烧固件的人
不适合:想装上就出医学级睡眠报告的人(它做趋势、做预警,不做诊断);怕折腾的人(生态成熟度还在快速变化,每周都有 breaking 改动)。
小结
RuView 是那种「让现有 WiFi 路由器多干一件事」的聪明方案——它不解决什么医疗问题,但把「房间里有谁、他们在干什么、身体状态大概如何」这件事变得 无摄像头、不联网、不戴设备。模型诚实地标注了什么是真的什么是 demo、官方默认就支持 Home Assistant / Matter / Apple Home / Google Home / Alexa。87k stars 是虚是实自己判断,但「9 美元一棵 ESP32 就能本地感知存在和体征」这件事本身,已经足够让我下单了。
先跑 Docker demo,再决定要不要焊板子。