b-nnett/goose · 上手攻略
- 仓库:b-nnett/goose
- 链接:https://github.com/b-nnett/goose
- 分类:健康可穿戴 / 本地优先
- 作者:Tom
- 更新:2026-08-20
这是什么
Goose 是一个本地优先的 WHOOP 5.0 数据项目,核心目标是绕过 WHOOP 昂贵的订阅费($199+/年),直接从设备蓝牙获取原始数据并在本地解析为健康指标。2026 年 6 月 2 日由独立开发者 Bennett(@b_nnett)用 24 小时倒计时挑战从零构建,随后快速获得关注——发布 23.5 小时内已有可用的 app,累计 2,500+ Stars(截至 2026-08,周增稳定)。
技术架构:SwiftUI iOS 前端 + Rust 核心库(编译为 iOS 静态库),通过 JSON-over-C bridge 连接,CoreBluetooth 负责与 WHOOP 5.0 设备通信。数据完全本地处理,不走云端。
⚠️ 重要声明:此项目与 WHOOP 官方无任何关联,仅通过蓝牙服务枚举和设备公开数据实现数据读取,不涉及逆向 WHOOP 专有协议或代码。
解决什么问题
WHOOP 健身手环以高精度生理数据(HRV、SpO2、皮肤温度、呼吸等)著称,但数据访问强制绑定 $199+/年订阅。Goose 让用户:
- 零订阅访问原始传感器数据:HR、HRV、SpO2、温度、运动、恢复、睡眠等
- 数据完全本地存储:不经过任何第三方服务器
- 绕过设备"变砖"问题:已过期订阅的 WHOOP 设备可重新启用
快速安装
环境要求
- macOS(需安装 Xcode)
- iOS 26 SDK + iOS 26 模拟器或实体设备
- Apple Developer 签名(com.goose.swift bundle ID)
- Rust + Cargo(via rustup)
- iOS Rust 目标平台:
bash rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
构建步骤
方式一:Xcode GUI
# 克隆仓库
git clone https://github.com/b-nnett/goose.git
cd goose
# 用 Xcode 打开项目
open GooseSwift.xcodeproj
# 选择 GooseSwift scheme,按 ⌘B 构建
方式二:命令行(模拟器)
xcodebuild \
-project GooseSwift.xcodeproj \
-scheme GooseSwift \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-derivedDataPath /tmp/goose-swift-deriveddata \
build
方式三:命令行(实体设备) ⚠️ 需自行替换 <device-id>
# 列出已连接设备
xcrun devicectl list devices
# 实体机构建
xcodebuild \
-project GooseSwift.xcodeproj \
-scheme GooseSwift \
-configuration Debug \
-destination 'platform=iOS,id=<device-id>' \
-derivedDataPath /tmp/goose-swift-deriveddata-device \
-allowProvisioningUpdates \
build
Rust 核心手动构建(一般由 Xcode build phase 自动触发,也可手动:
# Apple Silicon 模拟器
PLATFORM_NAME=iphonesimulator CURRENT_ARCH=arm64 Scripts/build_ios_rust.sh
# 实体 iPhone
PLATFORM_NAME=iphoneos CURRENT_ARCH=arm64 Scripts/build_ios_rust.sh
首次公开测试
作者预告 2026 年 6 月 13 日 发布 TestFlight 公开测试版,届时非开发者用户可直接安装体验,无需手动编译。
核心用法
应用界面结构
GooseSwift App 包含四个主要 Tab:
| Tab | 内容 |
|---|---|
| Home | 设备连接状态、整体健康摘要、同步通知 |
| Health | 睡眠、恢复、压力、心血管负荷、能量银行等详细指标 |
| Coach | AI 教练视图,基于本地数据给出健康建议 |
| More | 操作调试、设备状态、包输入、算法参考、校准等 |
关键 Swift 入口点
GooseSwiftApp.swift— App 生命周期与 deep-link 处理GooseBLEClient.swift— 蓝牙扫描/连接/同步逻辑GooseRustBridge.swift— Swift ↔ Rust C bridge 封装HealthView.swift及相关文件 — 健康指标仪表板
WHOOP 5.0 配对流程
- 打开 GooseSwift,进入 onboarding
- App 通过 CoreBluetooth 扫描附近 WHOOP 5.0 设备
- 点击连接,输入配对码(设备屏幕显示)
- 数据同步自动开始,结果显示在 Health Tab
指标说明(部分)
- Recovery:基于 HRV + 心率变异性计算的每日恢复分
- Strain:当日运动压力负荷
- Sleep:睡眠阶段(浅睡/深睡/REM)及睡眠效率
- Cardio Load:心血管训练负荷
⚠️ 当前 alpha 阶段,部分指标在缺少数据源时显示为空或不可用;数据管道仍在演进。
典型适用场景
- WHOOP 订阅到期但不想续费:设备还能用,数据还在,只需 Goose
- 研究人员/开发者:获取原始传感器数据做二次分析,不受官方 App 限制
- 隐私敏感用户:数据完全不经过 WHOOP 服务器,完全本地
- Hackathon / 独立开发者:参考 Goose 的 Rust + Swift 跨语言架构快速原型
坑与注意
⚠️ 极度早期阶段:README 明确写明"not ready to use as an app for tracking personal health data yet"。性能未优化,App 会有明显卡顿。
- 仅支持 WHOOP 5.0:旧版 WHOOP 设备(4.0 及之前)不兼容
- 需要 Xcode + Rust 技能:不会用 Xcode 或不懂 Rust 的用户无法自行构建
- iOS 26 才支持:目前需要 iOS 26 SDK,主流稳定版 iOS 用户暂时无法使用
- HealthKit 为单向写入:支持向 HealthKit 写入睡眠和运动数据,但不支持从 HealthKit 读取
- PDF 暗黑模式基于 CSS filter:性能较差,这是已知的工程权衡
- Built .a 归档不上传:Rust 核心库由本地 Xcode build phase 编译,不随 git 提交
与同类对比
| 项目 | 订阅 | 平台 | 数据存储 | 支持设备 |
|---|---|---|---|---|
| Goose | 免费开源 | iOS(macOS 构建) | 完全本地 | WHOOP 5.0 |
| WHOOP 官方 App | $199+/年 | iOS/Android | 云端 | 所有 WHOOP |
| Athlytic | 免费+IAP | iOS | 云端 | Apple Watch + WHOOP |
| Bevel | 订阅制 | iOS | 云端 | 多设备聚合 |
| Fitbit(Google) | 部分免费 | iOS/Android | 云端 | Fitbit 全系 |
Goose 的核心优势是零成本 + 完全本地 + 原始数据访问,代价是极早期状态和仅支持单一设备型号。
一句话推荐结论
如果你有 WHOOP 5.0 设备且受够了年费,Goose 是目前唯一开源、免费、数据完全本地的解决方案——但请等到 TestFlight 公测(2026-06-13)或等性能优化后再日常使用,当前阶段只适合开发者和早期测试玩家。