# NOOP：基于蓝牙协议研究构建的离线 WHOOP 手环客户端

> 以离线的 macOS、Android 和 iOS 客户端取代 WHOOP 官方配套应用：通过蓝牙与 WHOOP 4.0 及 5.0/MG 手环配对，解析其厂商自定义 GATT 帧，将手环中的历史数据转存到本地 SQLite，并在设备上计算恢复度、负荷、HRV 和睡眠。按手环型号分版本编写的协议参考记录了帧格式、校验、命令和传感器记录，建立在社区项目 my-whoop 与 goose 的成果之上。WHOOP 4.0 是受支持的路径；WHOOP 5.0/MG 的深层指标和 Oura 戒指支持仍属实验性。

- 类型：案例
- 目标：应用 · 协议
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-10-31
- 原始资源：<https://github.com/ryanbr/noop>
- 一手来源：<https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/noop-whoop-ble-client-case/>
- 记录 JSON：<https://awesomerea.org/resources/noop-whoop-ble-client-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/noop-whoop-ble-client-case/index.md)

## 使用条件与局限

- README 称 NOOP 是独立的实验性互操作项目；所审 main 快照晚于 2026-10-04 发布的 v12.0.0。WHOOP 4.0 是经过测试的路径；在 WHOOP 5.0/MG 上，实时心率已确认可用，恢复度、负荷和睡眠所需的输入仍在解析中，README 还列出 SpO₂ 及多项夜间输入尚不可用或不完整。各项评分依据已发表的方法计算，属于近似值，并非复现 WHOOP 的模型；项目说明自己不是医疗设备。
- 实时使用需要使用者自己的 WHOOP 手环；5.0/MG 手环同一时间只与一台设备保持加密绑定，因此配对可能使其脱离官方应用。没有手环时，也可导入 WHOOP 的 CSV 导出或 Apple 健康的 export.xml。README 声明 NOOP 不含 WHOOP 的专有代码、固件、标志或素材；ATTRIBUTION.md 说明部分协议事实是从对厂商应用的反编译或静态分析中重新推导的，并作为未经验证的候选值提供，实现代码和字符串均未复制。
- docs/BUILD.md 列出 macOS 参考应用所需的 macOS 13+、Xcode 26.x（Swift 6.3）和 XcodeGen 2.45+；各 Swift 包仅用 swift build 即可构建，BUILD.md 还说明了其中四个包在 CI 之外于 Linux 上运行测试的方法。Android 应用（Jetpack Compose，Android 8+）在 CI 中以 Gradle 和 JDK 17 构建；iOS 版可从源码构建，或以未签名 .ipa 侧载安装。更新检查默认开启，不发送健康数据；可选的 AI 教练和导出功能只有在使用者配置后才会发送数据。
- CI 构建并测试每个 Swift 包，其中包括 WhoopProtocol 的帧格式和解码器测试，并构建 Android 调试版 APK、运行其单元测试。协议约定注明了观察所依据的固件版本（WHOOP 4 为 41.17.6.0，WHOOP 5/MG 以 50.42.1.0 为基准）。docs/VALIDATION_PROTOCOL.md 规定了声称评分改进时须遵守的规则。
- LICENSE 对 NOOP 自身的代码和文档适用 PolyForm Noncommercial 1.0.0，GitHub 将其识别为 NOASSERTION；随附的 GRDB.swift 和 ZIPFoundation 采用 MIT。README 称 github.com/ryanbr/noop 是正式主页，但 GitHub 将其列为 muftiarfan/noop 的分叉。NOOP 声明与 WHOOP 或 Oura 无关联；AGENTS.md 面向人类与 AI 智能体贡献者，可选的教练功能使用使用者自备的模型。

## 一手来源

1. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/README.md>
2. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/docs/PROTOCOL.md>
3. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/docs/BLE_REVERSE_ENGINEERING.md>
4. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/ATTRIBUTION.md>
5. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/docs/BUILD.md>
6. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/docs/VALIDATION_PROTOCOL.md>
7. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/.github/workflows/swift-packages.yml>
8. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/.github/workflows/android.yml>
9. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/AGENTS.md>
10. <https://github.com/ryanbr/noop/blob/8e4b0c16e7640607600fa6bde5424095eba6034e/LICENSE>
11. <https://github.com/ryanbr/noop/releases/tag/v12.0.0>

## 同分区更多条目：应用

- [NiimBlue：NIIMBOT 标签打印机的独立网页客户端](https://awesomerea.org/zh/resources/niimblue-niimbot-printer-client-case/index.md) · 案例
- [open_oura：基于逆向 BLE 协议、无需云端的 Oura Ring 客户端](https://awesomerea.org/zh/resources/open-oura-ring-protocol-case/index.md) · 案例
- [Sony Headphones Client：Sony 耳机控制协议的桌面客户端](https://awesomerea.org/zh/resources/sony-headphones-client-case/index.md) · 案例
- [cbyge：重建 C by GE 智能灯泡云端协议](https://awesomerea.org/zh/resources/cbyge-c-by-ge-protocol-case/index.md) · 案例
- [Clickwill：重建 iPod 音乐库数据库编辑功能](https://awesomerea.org/zh/resources/clickwill-case/index.md) · 案例
- [Spark Mail：借助 Wine 兼容层在 Linux 上运行 Windows 桌面应用](https://awesomerea.org/zh/resources/spark-mail-linux-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
