草案声明
本文为草案,正式发布前须经法律审阅。文中的技术性描述已与代码核实;标为「待填」的条款只有运营方能确定,尚未填写,不代表默认为空或默认从宽。
按 Haiku 实际的技术实现逐条说明:账号如何鉴权、令牌存在哪、备份文件是否加密、客户端有没有埋遥测。可核实的照实写,只有运营方知道的留成可见占位。
目录
Haiku 使用邮箱验证码登录。首次用某个邮箱登录即视为自动注册,不需要单独的注册步骤。
服务端 API 以 /api/v1 为根路径,鉴权方式是 Bearer token。客户端会用到的端点包括 /auth/code(申请验证码)、/auth/login(登录)、/auth/refresh(刷新令牌)、/auth/logout(登出)、/me(账号信息)、/me/subscription(订阅状态)、/plans(订阅方案)。
移动端仅在本机一个登录凭据都没有时才会强制要求登录;桌面端不强制登录——添加来源、播放本地文件都不需要先登录账号。
/me/subscription 返回 { active, is_permanent, subscription_end, expires_in_days } 四个字段。客户端只以 active 作为是否具备会员权限的唯一判据,不会自行按到期日期换算是否仍在有效期内。
本机只缓存这份订阅状态快照的一份副本,用于离线场景下的权限判定。
每个插件自己管理自己的登录凭据,落盘位置是 <AppSupport>/cjrt_plugins/<id>/storage.json。
明文存储
这份文件是明文——不加密、不脱敏。插件升级(覆写 manifest.json 与 plugin.js)时,这份 storage.json 会被保留,不受影响,所以升级插件不需要重新登录。
歌单、喜欢、播放历史、下载记录存放在本机 <AppSupport>/haiku_state/。
媒体缓存存放在 <AppSupport>/haiku_media_cache/objects/,按 LRU 策略自动淘汰,是可丢弃的临时文件;歌词缓存走 MMKV 存储。
下载的音乐文件落在用户自己选择的目录,是写好标签的正经音乐文件,不是应用私有的中间产物。
备份功能(v1)把设置、歌单、喜欢、已安装插件本体以及各插件的登录凭据打包成一个文件——这个文件是明文的,不加密。
GitHub PAT(如果你在某个插件里填过)默认不会被导出到备份文件里。
口令加密备份是计划中的 v2 特性,目前尚未实现。
务必读完这条
App 内对此的原文提示是:"备份文件以明文包含各插件的登录凭据,请妥善保管,勿分享给他人。"
Haiku 本身不提供、不托管任何音乐内容。播放器与内容在产品设计上是彻底分开的两件事,内容全部来自用户自己添加的来源:自建的 Subsonic 协议服务器、本机目录、用户自己导入的插件。
添加哪个来源、连接到哪个服务器、导入了哪个插件,是用户自己的选择;数据流向该来源或该插件对应的服务,受该服务自己的隐私政策约束,不在本文覆盖范围内。
我们检索过客户端全部源码(lib/src 与 rust/src),未发现任何第三方统计、遥测或崩溃上报组件的接入痕迹——常见的 analytics、telemetry、Sentry、Firebase、友盟等均未出现。
范围限定
这一条只覆盖客户端代码。服务端是否记录访问日志、记录什么字段、保留多久,属于下一节的待填项,不在这句结论的覆盖范围内。
以下条款只有运营方能确定,本文尚未填写。可见占位不代表默认值,正式发布前必须逐条落实,并经过法律审阅。