WHOOP 4.0 无需订阅

Lobsters Hottest 工具

摘要

OpenStrap/Edge 是一款开源应用,通过逆向工程 WHOOP 4.0 的蓝牙协议,提供健康追踪功能,无需官方订阅,所有计算均在设备本地完成,支持 iOS 和 Android。

<p><a href="https://lobste.rs/s/55rpwn/whoop_4_0_without_subscription">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/16 13:56

OpenStrap/edge 源码:https://github.com/OpenStrap/edge

Openstrap Edge

一款让 WHOOP 4.0 在没有 WHOOP 订阅的情况下依然有用的应用。通过蓝牙连接手环,在手机上本地计算所有数据,支持 iOS 和 Android。

与 WHOOP 无关联。并非其应用或评分的克隆 — 详见下文。

为什么会构建这个应用

我的订阅到期了,一个本来好端端的传感器就变成了一条手镯。硬件从未停止工作,只是那个让它变得有用的应用停止了。于是,我逆向工程了手环的蓝牙协议,足以与它自行通信,基于已发表的研究从零编写了分析算法(而非猜测 WHOOP 的公式),并围绕结果构建了一个应用。现在,它无需 WHOOP 也能工作,任何遇到同样“抽屉手镯”问题的人都可以使用,或者自行深入钻研代码。

注意事项

  • 仅限 WHOOP 4.0。 未接触过 WHOOP 5,不知道它是否使用相同协议。
  • 与 WHOOP 无关联,不与他们的服务器通信。
  • 不是他们算法的克隆 — 使用不同数学方法、已发表且引用了来源的研究,详见分析库。不要期望与应用显示的数字相同。
  • 存在 Bug。有些我知道,可能更多我不知道。发现异常请提 issue。
  • 不要在本应用与官方 WHOOP 应用之间来回切换。 官方应用的固件推送可能会更改本应用依赖的记录,且这里无法修复。选择其中一个并一直使用。

截图

今日睡眠心率
压力呼吸身体
步数锻炼记录
周报个人资料

iOS 还提供主屏小组件、锁屏/灵动岛实时活动以及几个 Siri 快捷方式。

小组件电池小组件实时活动

以上每张截图均来自 WHOOP 4.0 的真实输出。

已支持功能

健康 — 心率、HRV、睡眠分期、恢复/准备度、应变、压力、HRV 快速检测、实时呼吸协调性。

活动 — 自动检测的锻炼、带 GPS 路径的实时锻炼追踪、心率区间。

其他所有 — 趋势/历史、带设备端相关洞察的日志(“什么真正影响了你的数据”)、周期追踪、确定性教练、可分享的每周回顾、自备密钥 AI 助手、主屏小组件、iOS 实时活动、Siri 快捷方式。

尚不支持功能(或可能永远不支持)

  • iOS 后台同步为尽力而为。Apple 并未给予第三方应用真正的后台服务选项,因此长时间未打开应用时的同步是“通常”而非“总是”。
  • 指标基于已发表研究的近似值 — 非医疗级,未在实验室验证,不要将其视为诊断。
  • 目前仅支持侧载 — 不在 App Store 或 Play Store。您需要直接从 Releases 安装 APK 或未签名的 IPA。Android 只需“允许未知来源”即可。iOS 需要额外工具 — 如果您只想使用应用而不打算自行构建,请参阅 guides/IOS_SIDELOAD.md

运行

git clone https://github.com/OpenStrap/edge.git
cd edge
cp .env.example .env
flutter pub get
flutter run --dart-define-from-file=.env

配对前退出官方 WHOOP 应用 — 蓝牙一次只允许一个应用连接手环。iOS 签名以及小组件/实时活动的 App Group 设置略为复杂 — 详见 guides/IOS_INSTALLATION.md

工作原理

WHOOP 手环 → 蓝牙 → 协议解码器 → 本地存储 → 分析引擎 → UI
  • openstrap_protocol 将手环的字节转换为记录。
  • openstrap_analytics 将这些记录转换为指标,每个指标附带置信度评分 — 当数据缺失时绝不伪造。
  • 本仓库是粘合剂:蓝牙可靠性、本地存储(有版本控制,算法更新不会静默覆盖旧结果)、后台同步、UI。
  • 所有重要数据均保留在手机上。

复杂的蓝牙协议

手环没有标准的公开 API — 它是一个专有协议,让其稳定工作花了些时间。简而言之:时钟初始未设置(跳过设置会导致时间戳全乱);历史数据以批次形式获取,需要精确回传 8 字节令牌,否则手环会不断重复发送相同数据;本地保存必须在回传确认之前完成,这样同步过程中崩溃才不会丢失任何数据。完整的详细说明见协议库的 README(https://github.com/OpenStrap/protocol)— 如果您对此类内容感兴趣,那才是真正有趣的阅读。

您的数据保留在手机上

所有计算和存储均在本地完成。无需云账户,日常使用无需后端。该应用发出的网络调用仅限于三个可选且范围极窄的功能:一次性旧账户导入(如果您有旧云账户)、OTA/公告指针、以及用于 AI 助手的自备密钥 LLM 代理。这些都不是应用正常运行所必需的。

仓库结构

lib/ble/         蓝牙 + 同步
lib/data/        本地存储 + UI 读取的仓库层
lib/compute/     运行分析管线,写入结果
lib/state/       应用状态,唯一真相来源
lib/ui/          所有界面

协议解码和分析引擎位于各自的仓库 — 协议(https://github.com/OpenStrap/protocol),分析引擎(https://github.com/OpenStrap/analytics)。

贡献

发现问题?提 issue。发现问题并修复了?更好,发送 PR。协议级别的内容(新记录类型、操作码)归属协议库,指标/公式更改归属分析库,任何与应用本身相关的内容 — 蓝牙、存储、UI — 归属此仓库。

相似文章

Garmin CIRQA™ Smart Band

Product Hunt

Garmin 推出 CIRQA Smart Band,一款无需订阅的无屏幕健康与健身追踪器。