
第一部分:痛点与破局
有没有用WHOOP手环的朋友和我一样糟心?辛辛苦苦攒的健康数据全存在官方服务器,高级功能要充会员才能用,想自定义分析数据还要走复杂的导出流程,连离线查看都受限?
今天给大家挖到的开源项目Goose就是专门解决这个痛点的,它是一款完全本地优先的WHOOP 5.0专属伴侣工具,不需要对接官方API,直接通过蓝牙连接手环读取数据,所有健康信息都存在你自己的设备上,支持查看睡眠、恢复、应变、压力等全维度指标,还能自定义分析。
注意:目前Goose还处于Alpha概念验证阶段,仅面向开发者评估可行性,不适合普通用户当日常健康 tracking 工具用,普通用户可以等2026年6月13日的TestFlight公开公测版。
第二部分:核心功能深挖
1. 分层清晰的全栈原生架构
Goose采用Swift+Rust的混合架构,兼顾了iOS端的原生体验和数据处理的性能、安全性:
- 上层是
SwiftUI开发的iOS应用,包含首页、健康、教练、更多4个核心Tab,还支持运动实时活动小组件 - 中间层是
CoreBluetooth模块,负责WHOOP 5.0设备的扫描、连接、数据同步全流程 - 底层是Rust编写的核心静态库,通过JSON-over-C桥接和Swift层通信,负责数据解析、存储、计算
- 所有健康数据默认完全本地存储,未来如果新增后端/AI功能,会单独走用户同意的授权流程,不会私自上传数据
- 支持和苹果
HealthKit联动,可导入HealthKit的睡眠数据,也能将运动记录写入HealthKit
项目核心代码结构如下:
GooseSwift/ SwiftUI app source
GooseWorkoutLiveActivityExtension/ Live Activity widget extension
Rust/ iOS static library, headers, per-platform outputs
Scripts/build_ios_rust.sh Xcode build phase for the Goose Rust core
docs/goose-swift-mvp/ MVP plans, contracts, and data-readiness docs
GooseSwift.xcodeproj Xcode project
Swift层核心入口也做了明确标注,方便二次开发:
GooseSwiftApp.swift: app生命周期和 deep-link 处理RootView.swift: 引导页和全局同步提示宿主AppShellView.swift: Tab框架和共享健康存储绑定GooseAppModel.swift: app状态、BLE控制权、生命周期、桥接摘要GooseBLEClient.swift: 蓝牙扫描/连接/同步逻辑GooseRustBridge.swift: Rust C桥接的Swift封装HealthView.swift等健康相关文件:健康仪表盘、指标页、趋势页CoachView.swift等教练相关文件:教练UI和聊天支持MoreView.swift: 操作/调试/设置页面
2. 全覆盖的健康指标体系
Goose已经实现了WHOOP核心健康指标的解析和展示:
- 支持睡眠、恢复、应变、压力、心肺负荷、能量储备等核心健康指标展示
- 所有指标支持溯源,可查看数据的具体来源
- 缺失数据会明确显示为空、过期、不可用状态,不会生成虚假推断数据
- 原始蓝牙数据包仅在Debug/导出流程展示,日常健康界面不会出现冗余的技术信息
- 内置本地教练功能,基于本地存储的指标生成分析建议,不需要调用外部大模型服务
3. 完全开放的可扩展结构
项目源码完全开放,没有包含任何WHOOP官方私有代码,仅通过设备公开的蓝牙服务通信,可扩展性极强:
- 项目结构清晰,所有核心模块都有明确的文档说明
- 提供完善的MVP开发文档,包含各模块的待办事项、实现规范、验收标准
- 支持自定义指标计算规则,可基于原始数据开发自己的健康分析模型
- 配套Debug工具,可查看设备状态、同步进度、原始数据包等底层信息,方便开发调试
第三部分:实战演示
想要本地构建运行Goose,你需要先准备好以下环境:
- 安装了Xcode的macOS设备
- iOS 26 SDK + 支持iOS 26的模拟器/真机
- 配置好Apple Developer签名,bundle ID为
com.goose.swift - 安装了Rust和Cargo环境
第一步:安装iOS Rust编译目标
rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
第二步:构建项目
克隆项目后可以直接用Xcode打开GooseSwift.xcodeproj构建,也可以用命令行构建:
模拟器构建命令:
xcodebuild \
-project GooseSwift.xcodeproj \
-scheme GooseSwift \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-derivedDataPath /tmp/goose-swift-deriveddata \
build
真机构建:
首先查询你的真机设备ID:
xcrun devicectl list devices
替换命令中的<device-id>后执行构建:
xcodebuild \
-project GooseSwift.xcodeproj \
-scheme GooseSwift \
-configuration Debug \
-destination 'platform=iOS,id=<device-id>' \
-derivedDataPath /tmp/goose-swift-deriveddata-device \
-allowProvisioningUpdates \
build
真机重装运行:
构建成功后可以用以下命令直接安装到真机并启动:
xcrun devicectl device uninstall app \
--device <device-id> \
com.goose.swift
xcrun devicectl device install app \
--device <device-id> \
/tmp/goose-swift-deriveddata-device/Build/Products/Debug-iphoneos/GooseSwift.app
xcrun devicectl device process launch \
--device <device-id> \
--terminate-existing \
com.goose.swift
💡 小提示:正常情况下不需要手动编译Rust核心,Xcode的构建阶段会自动执行脚本编译对应平台的静态库,如果你已经提前编译过,可以设置环境变量GOOSE_SKIP_RUST_CORE_BUILD=1跳过Rust编译步骤,加快构建速度。
第四部分:避坑指南与总结
避坑提示
- 当前是Alpha版本,性能优化做得很少,APP卡顿会非常明显,不要作为日常健康跟踪工具使用
- 目前仅支持WHOOP 5.0手环,其他WHOOP型号完全不兼容
- 数据处理管道还在迭代中,部分指标显示为空属于正常现象,后续版本会逐步补齐
- 不要提交编译后的Rust
.a静态库到代码仓库,这些文件是本地生成的,不需要版本控制 - 所有健康相关的文案不要做医疗相关的宣称,避免误导用户
总结
Goose是非常有潜力的开源健康硬件伴侣项目,完美解决了商用可穿戴设备数据不开放、不本地化的痛点。当前阶段适合iOS开发者、Rust开发者、WHOOP 5.0硬核用户尝鲜折腾,普通用户可以蹲2026年6月的TestFlight公测版。如果对项目感兴趣也可以参与贡献,小的聚焦性变更会更容易被合并。
GitHub开源地址:https://github.com/b-nnett/goose
夜雨聆风