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 配对流程

  1. 打开 GooseSwift,进入 onboarding
  2. App 通过 CoreBluetooth 扫描附近 WHOOP 5.0 设备
  3. 点击连接,输入配对码(设备屏幕显示)
  4. 数据同步自动开始,结果显示在 Health Tab

指标说明(部分)

  • Recovery:基于 HRV + 心率变异性计算的每日恢复分
  • Strain:当日运动压力负荷
  • Sleep:睡眠阶段(浅睡/深睡/REM)及睡眠效率
  • Cardio Load:心血管训练负荷

⚠️ 当前 alpha 阶段,部分指标在缺少数据源时显示为空或不可用;数据管道仍在演进。


典型适用场景

  1. WHOOP 订阅到期但不想续费:设备还能用,数据还在,只需 Goose
  2. 研究人员/开发者:获取原始传感器数据做二次分析,不受官方 App 限制
  3. 隐私敏感用户:数据完全不经过 WHOOP 服务器,完全本地
  4. Hackathon / 独立开发者:参考 Goose 的 Rust + Swift 跨语言架构快速原型

坑与注意

⚠️ 极度早期阶段:README 明确写明"not ready to use as an app for tracking personal health data yet"。性能未优化,App 会有明显卡顿。

  1. 仅支持 WHOOP 5.0:旧版 WHOOP 设备(4.0 及之前)不兼容
  2. 需要 Xcode + Rust 技能:不会用 Xcode 或不懂 Rust 的用户无法自行构建
  3. iOS 26 才支持:目前需要 iOS 26 SDK,主流稳定版 iOS 用户暂时无法使用
  4. HealthKit 为单向写入:支持向 HealthKit 写入睡眠和运动数据,但不支持从 HealthKit 读取
  5. PDF 暗黑模式基于 CSS filter:性能较差,这是已知的工程权衡
  6. 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)或等性能优化后再日常使用,当前阶段只适合开发者和早期测试玩家。