Sencali 隐私政策
更新于
生效日期:2026 年 11 月 3 日
开发者:Changming Wei 联系邮箱:hi@sencali.app
Sencali 是 iPhone 上的跑步训练计划 app。这份政策说明它读取哪些数据、存在哪里、什么时候会离开你的手机、交给谁,以及你怎么撤回和删除。
一句话:Sencali 只读取 Apple「健康」,从不写入;没有账号、没有广告、不出售数据、不使用第三方统计或广告工具;Sencali 有一个转发请求的中转服务,只给订阅了 Sencali 教练、又同意了的人用,它不保存你发的内容;教练的回答会加密暂存,你的手机收到后就删,最多存 24 小时;另有一个分享链接服务,保存你确认上传的加密正文和公开预览图。除了 iPhone 自己的备份(第 2 节),你的数据只在第 3 节列出的情况下离开这台 iPhone。
1. 读取什么、做什么用
在你于系统弹窗里允许之后,Sencali 从「健康」读取:
- 体能训练,及其路线、分段和训练期间的数据:心率、距离(步行和跑步、骑行、游泳)、步数、踏频、功率、跑姿(步幅、触地时间、垂直振幅)、能量消耗(活动能量和静息能量),以及每次训练的费力评分;
- 每天的静息心率、心率变异性(HRV)、睡眠、最大摄氧量;
- 心率恢复(Apple 算好的一分钟心率恢复):只在这台 iPhone 上用于跑后「和以前比」,不同步、不发出去,删除 Sencali 即删除;
- 身高、体重和出生日期(用来算年龄)。
这些数据只用来:在 app 里给你看,计算训练负荷、心率区间和恢复,判断每一次训练是哪一种课,排课和调整计划,生成晨报、跑后简报、周报和教练的反馈,以及第 3 节列出的那些去处。它们从不用于广告、营销或与你的训练无关的用途。你可以随时在 iPhone 设置里关掉任何一项。
其他权限都在用到时询问,拒绝了其余功能照常:
- 日历:在日程页显示你的一周,按「什么时候有事」把训练排进空闲时间;只有你打开「把训练和计划课写进日历」后,才写入你选的那本日历。
- 位置(仅在使用 app 时):查你所在地的天气。
- 通知:晨报、跑后、周报等提醒。
- 照片:你在运动详情里点「显示这次跑步拍的照片」、点「加照片」或在设置里打开「跑步照片」,并在系统弹窗里允许后,Sencali 会在这台 iPhone 上按拍摄时间,找出训练开始前 10 分钟到结束后 10 分钟内拍的照片和视频,显示在那次训练的页面上。它只读不改,不读照片的拍摄地点,不复制到别处、不上传,也不交给教练;只在这台 iPhone 上记下你取消或手动加了哪几张(照片的编号,不是照片本身),Sencali 不同步它们。你选「只允许选中的照片」时,只用你选中的那些。只有你自己点分享时,Sencali 才生成一份临时副本交给系统的分享面板:用照片做分享卡背景时,导出的是新生成的图片;在全屏看照片或视频时分享原片,副本去掉了拍摄地点(GPS)。两种都不带拍摄地点,分享面板关掉、取消或导出失败时就删掉,下次启动也会清掉剩下的临时文件。你选「存储图像」时保存分享卡;给头像选照片时,系统只把你选中的那一张交给 Sencali,缩小后存在这台 iPhone 上。
2. 存在哪里
训练记录(包括路线,以及训练中的心率、距离等明细)、每天的身体数据(静息心率、HRV、睡眠、体重、最大摄氧量)、算出来的结果、计划、目标、偏好、签到、教练对话、你加的鞋、配鞋记录和提醒,以及哪几张照片放进了哪次训练(照片编号),都只存在这台 iPhone 上,不同步到 iCloud,也不会出现在你的其他设备上(第 3 节列出的情况除外)。
Sencali 不同步照片的关联记录;照片和视频本身留在你的照片图库里,缩略图只在内存里,不写进 app 的文件。
装过早期测试版(0.36.0 及以前)的,那时同步进你 iCloud 的一份还在你自己的账户里,开发者看不到,Sencali 也不再读写它;删除办法见第 5 节。
比赛页上你导入的赛道(只存读出来的点,不留文件本身)和你填的起跑时间,也只存在这台 iPhone 上,不同步到 iCloud;换一场比赛时,上一场的会清掉。
你给这台 iPhone 做的备份(iCloud 云备份或电脑上的备份)里,也有 Sencali 存在手机上的数据。
分享链接的加密正文、公开预览图和托管元数据存在 Cloudflare,与教练中转服务分开。用于在本机管理链接的 id、解密钥匙和删除令牌记录保存在这台 iPhone 的私有目录;这份管理记录不同步,也排除在备份之外;卸载会丢失这份管理记录。具体内容和期限见第 3 节 (3b) 和第 5 节。
3. 什么时候离开这台 iPhone、去哪里
(1) Sencali 教练——只在你订阅并同意之后
Sencali 教练不面向 13 岁以下;从「健康」读到的生日显示未满 13 岁时,不能订阅 Sencali 教练,也不会向模型提供商发送请求。
- 发什么、什么时候发:训练记录和计划;身体和健康数据,如心率、睡眠、恢复;你对教练说的话。订阅并同意前,app 会先列出会发什么、不会发什么;同意后才发送。只在教练回答时发,不持续上传。
- 跑后评估和每周说明:每读到一条新的训练,自动发送一份摘要做跑后评估;每排好新的一周,发送一份写每周说明,也包括刚过完一周的总结。摘要包括:最近两周的训练;这一次训练的距离、时间、配速、心率区间、负荷和当时天气的冷暖档;你的年龄、身高、体重(整数)和比赛成绩;app 从你的全力跑里看出的「速度短板」判断和它依据的几次成绩(距离、用时和几周前);你的目标和这一周的安排,以及 app 排这一周的理由、到比赛的整体计划(每周一行)和预计完赛范围;日历上哪几段有空;你最近点的签到(只有那个词,比如「腿沉」「生病」,不含你写在旁边的话)。睡眠、HRV、静息心率在这里只以「比你自己的平时高或低多少」出现。可以在 设置 › 教练 关掉「跑后评估和每周说明也用它」,之后这两项只在这台 iPhone 上由手机自带模型处理;不支持时不写。
- 教练对话、每日检查和审查:和教练聊天时发送;今天或明天有课时,每天早上和傍晚第一次打开 app 各做一次每日检查,可在 设置 › 教练 关掉「早晚各看一次今天和明天的课」;生成整期计划时可能进行独立审查。这些请求都经 Sencali 中转,不再选择另一家回答或审查。第一次使用前同意一次,之后更换模型提供商或增加数据类别都不再单独询问。为了回答,模型提供商会收到:年龄、身高、体重;睡眠(含深睡和快速眼动睡眠)、HRV、静息心率、最大摄氧量的数值;最大心率和心率区间;训练记录(时间、距离、配速、心率、分段、爬升、负荷和当时的气温湿度)、个人最好成绩和 app 算出的体能估计、「速度短板」判断;计划(包括到比赛的整体计划和每周排课的理由)、完成情况和预计完赛范围;你的目标(包括你描述目标的那句话)、比赛名称和城市;你的签到,以及你写在签到旁边的话;你所在地和比赛城市接下来几天的天气预报(只有天气,不含位置);日历上有事的时间段(只有起止时间);以及你打的字。
- 从不发送:你的名字、账号和设备标识、训练记录的编号、路线和位置坐标、日历事件的标题、备注和地点、原始的健康样本。健康的原始样本(每一次心率读数、每一晚的睡眠记录、路线)不发。
- 怎么走:从你的 iPhone 经加密连接到 Sencali 的中转服务。Sencali 会根据效果和费用,把你同意发送的数据发给第三方模型提供商处理(数据在提供商所在地处理,例如美国)。中转服务不把你发的内容写进任何存储和日志。为了你离开教练页、切到后台或网络断开时这一轮回答不丢,中转会把模型这一次的回答加密暂存,按这次请求的编号存放;你的手机收到后立刻让中转删掉,没取走的、或者删除没送到的,最多 24 小时后删除。暂存的只有回答(回答里可能提到你发过的数据),不含手机发来的数据,也不写进日志。中转服务通过转发请求的云服务商运行,加密连接在它的网络上接通,所以它会看到你的 IP 地址;Sencali 不保存你的 IP 地址。
- 额度怎么算:为了算每月额度,中转服务用专用的加密凭据、UTC 月份和订阅的原始交易号算出一个编号(HMAC);不同月份的编号不同,没有这份凭据不能从编号算回交易号。交易号本身只在内存里用,不保存、不记日志。中转服务按编号记下月份、这个月用了多少和当前这一分钟的请求次数,在下个月 7 日 00:00 UTC 将这个编号及其额度、限流记录整份删除。另记当天(UTC)的全站总用量,用来限制全站花费,不带个人编号。
- 订阅凭证:证明你订阅了,不包含你的名字、邮箱或 Apple 账户;中转服务用其中的原始交易号计算上面的编号。
- 数据怎么使用和保留:Sencali 自己(包括中转)不保存你发给教练的内容;教练的回答只按上面「怎么走」说的加密暂存:你的手机收到后就删,最多存 24 小时。模型提供商按它们自己的规则保存和删除。下面的保留期是提供商的规定,不是 Sencali 的保留。Sencali 只选用不用你的数据训练模型的提供商。提供商默认在 30 天内删除;Anthropic 对被判违反使用规则的内容最长保留 2 年;法律要求或为防止滥用时可能保留更久。
- 随时可以撤回:在 设置 › 教练 关闭「允许发送上面的数据」,对话、每日检查、独立审查、跑后评估和每周说明都不再经中转发送。撤回不等于取消订阅;可另行管理或取消订阅。这不会提前删除模型提供商按它们自己的规则保留的内容。设置 › 教练 ›「看实际发了什么」可以查看最近 6 次发送的原文;这些记录只存在这台 iPhone 上,不同步、不进备份,可以清空。
(2) Apple 的服务
- 天气:打开 app 时的当前位置、带路线的训练起点的位置和时间(补查当时的天气),以及你设的比赛城市,会发给 Apple 天气。当前位置不保存。
- 地名:当前位置、训练起点和比赛城市,由 Apple 的地图服务在坐标和地名之间换算;换出来的起点地名存在这台 iPhone 上。导入了比赛的赛道时,赛道起点的坐标也交给 Apple 的地图服务,换出比赛当地的时区,一条赛道只查一次,结果存在这台 iPhone 上。
- 地图:路线在这台 iPhone 上画在 Apple 地图上,底图按路线所在的区域向 Apple 地图取;分享卡上的地图也这样取,只在你打开「带上地图」时。导入了比赛的赛道时,比赛页顶上的地图按赛道所在的区域向 Apple 地图取底图,赛道的点不发出去。
- 手机自带模型:日程上每天挑两条最要紧的日历,用的是这台 iPhone 上的 Apple 智能模型。订阅 Sencali 教练后,关掉「跑后评估和每周说明也用它」时,跑后评估和每周说明也由手机自带模型在这台 iPhone 上写,不发送给模型提供商;不支持时不写。没有订阅时,不做跑后评估。教练对话需要订阅 Sencali 教练并同意发送数据,见第 (1) 条。
这些处理适用 Apple 的隐私政策。
(3) 你自己点了才发生
- 发送诊断(设置 › 反馈 ›「发送诊断」):发出设备型号,iOS 和 app 版本,系统语言,手机时区和标准时间差几小时,各项自检结果;汇总数(训练条数、最早和最近一次训练的日期、每天负荷的分布、最大心率和静息心率);最近的事件日志,每行带时间,其中有:每次训练的编号、结束时间、日期、距离(跑了多少公里、计划多少公里)和对课的结果,你点的签到(比如「生病」「腿沉」)和日期,平时几点起床和入睡、最近一次睡醒的时间,你自己改过的最大心率和静息心率,你在 app 里打开了哪些页面、点了什么,用的是哪个模型服务和哪个模型;闪退报告(如有);你填的昵称和那一句话。不发:路线和位置、日历事件的标题、教练对话的内容、API key,也没有你的名字(除非你写进昵称或那一句话)。发到开发者在 iCloud 上为 Sencali 开的一个公共数据库(在 Apple 的服务器上,不在你自己的 iCloud 里);iCloud 会给每一份附上一个只在 Sencali 里使用的用户编号,它不是你的 Apple 账户。这个库的读取权限现在还没有收紧到只有开发者:Sencali 本身不会去读别人发的诊断,但在收紧之前,不能保证只有开发者读得到。
- 发送这次训练的原始数据(某一次训练详情页最下面):发出这一次训练的整份摘要——它的编号、类型、开始和结束时间、时长、距离、步数、能量、平均和最高心率、心率的分布和在各区间的时间、每一段的距离和心率、分段、圈和暂停的时刻、负荷、当时用的最大和静息心率,以及记录它的 app 和设备的名字、型号、系统版本和来源编号(设备的名字里常有你的名字,比如「某某的 Apple Watch」)。和诊断一样,每一份还带着 iCloud 给的用户编号、你填的昵称、这台 iPhone 的型号和系统版本、app 版本。不含路线和逐条的心率、距离样本;其他训练不发。去处和谁读得到同上。
- 写进日历:打开后,Sencali 把计划课和完成的训练写进你选的那本日历,事件里有时间、类型、配速、心率、负荷和教练的一句话;还有起跑的地名和坐标,这一项由「写入起点」管,它默认开着,可以在 设置 › 日历 里关掉。你定了带日期的比赛目标后,还会在比赛那天写一条全天的「比赛日」事件,和计划课写在同一本日历里(默认是「Sencali 训练」):标题是赛事名和距离,日期是比赛那天,备注里是赛事名、距离和你定的目标时间(定了才写);不写你跑出来的成绩,也不写任何健康数据。写入开着时,目标改了日期或名字,改的是同一条;清掉目标,这一条也删掉。每周的周总结也写进同一本日历:在那一周最后一天的晚上(默认周日 20:00)写一条 15 分钟、不占你空闲时间的事件,标题是「周总结」加这一周跑的公里数和完成的次数,备注里是这一周的起止日期、计划和实际的公里数与次数、最长一次的公里数、各节课按计划完成的情况、下周的计划量,以及三句总结;三句总结有时会用「睡眠比平时短」「HRV 比平时低」「有几天说腿沉」这样的话说恢复情况,但不写心率、睡眠、HRV 的具体数值,也不写路线和位置。晚到的训练会让这一条在原处重写。那本日历由哪家服务同步(iCloud、Google、Exchange 等),就由那家保存;共享给别人时,别人也看得到。
- 添加到 Apple Watch:你在一节课的页面上点「添加到 Apple Watch」、再在 Apple 的页面上点添加时,这节课的名字、热身、每一段的距离或时间、配速和心率范围交给你的 Apple Watch(在比赛页上点的,交的是比赛的名字和每一段的距离、配速范围);力量课交的是课名、每个动作的名字、次数或秒数、组数和组间休息的时长。
- 在地图中打开:你在比赛页上点起点或终点的「在地图中打开」时,那一点的坐标交给 Apple 的「地图」app。
- 分享卡和复制训练数据:分享卡通过系统分享面板,发到你选的地方。「复制训练数据」把这一次训练详情页上的数字写成文字——距离、时长、配速、心率、训练负荷、当时天气、计划 vs 实际、心率区间、每公里、分段——放进剪贴板,由你贴到别处;没有分享卡的训练,⋯ 菜单里的「分享」通过系统分享面板发出同一段文字。这段文字不含路线和地点、编号、教练点评、记录设备的名字。
- 通知:晨报等通知会在锁屏上显示身体数据;可以在 iPhone 设置 › 通知 里把「显示预览」设为「解锁时」。
(3b) 分享成链接——只在你确认生成之后
- 发什么:链接的卡片和分享图片相同,沿用分享页的开关;选中的钟点、真地图、心率、负荷、能量、照片和教练一句可能跟着卡片发出。卡片以外的原始健康样本、完整 GPS 样本、分段、训练编号、设备名、身体档案或日历不发;照片只留合成后的像素,不带原图的 EXIF。照片、文字和地图可能识别你或其他人。
- 怎么存、谁能看:你确认生成链接后,选中的卡片文字和数字在手机上加密,连同未加密的预览图存到 Cloudflare。预览图没有钥匙也能看,包括开发者和聊天预览服务;图上印出的文字、数字、照片和地图也会公开。解密钥匙只在完整链接的 # 后面,服务器不接收钥匙;没有完整链接,服务器无法解密正文。持有完整链接的任何人都能解密正文并继续转发。
- 期限和删除:生成后固定保留 30×24 小时,可在 app 里提前删除;卸载 app 不撤回链接。到期后立即拒绝读取,物理清理在后续轮次完成。删除不能收回聊天预览缓存、截图和已下载的副本;卸载后也可把不含钥匙的链接发到 hi@sencali.app 请开发者下架。
- 托管和计数:为托管、到期清理和删除链接,服务保留版本、id、大小、创建和到期时间、删除令牌的哈希与撤销标记,撤销标记留到原到期时间。Cloudflare 在传输和限流时处理网络地址(IP);我们不持久保存访问者 IP,不做个人追踪。访问统计只累计全站成功创建数和打开请求数两个总数,不是人数或安装数;重复打开和机器人可能计入。不保存逐链接访问记录、用户或设备标识、来源;另有当天的全站安全配额和清理游标,不用于个人统计。
- 举报:举报记录只存链接 id 和固定原因码,不存自由文字、钥匙或网络地址;与原链接到期后的清理一并删除,不另保留一份结案记录。开发者可查看公开预览图并下架链接,不因收到任意举报就自动删除。
(4) 测试期间(TestFlight)
通过 TestFlight 测试时,Apple 会把崩溃日志、使用信息、你提交的反馈,以及你的姓名和邮箱提供给开发者;通过公开链接加入的,开发者看不到你的姓名和邮箱。详见 Apple 的「TestFlight 与隐私」。
4. 开发者会拿到什么、怎么用
开发者会拿到你主动发送的诊断和原始数据,以及第 3 节 (4) 说的、TestFlight 转来的崩溃日志、使用信息、反馈和你的姓名邮箱。它们只用来查问题、改进 Sencali;不用于广告或营销,不出售,不提供给任何第三方。订阅 Sencali 教练的话,中转服务转发时会经手你发给教练的内容,但不保存;教练的回答加密暂存,你的手机收到后就删,最多存 24 小时,见第 3 节 (1);每月额度的计数也见第 3 节 (1)。从「健康」得到的数据从不用于广告、营销或数据挖掘。
分享链接服务会保存第 3 节 (3b) 的密文、公开预览图和托管元数据;开发者可以查看预览图、处理举报并下架链接,没有完整链接不能解密正文。分享服务与教练中转服务分别处理,两个全站总数不用于识别访问者。
5. 保留与删除
- 这台 iPhone 上的数据:删除 Sencali 即删除。旧版本中保存的教练连接凭据,会在升级并首次打开 Sencali 后从这台 iPhone 删除。如仍在使用旧版本,请先升级并打开 Sencali,完成清理后再删除 app。
- 删除 Sencali 以后再装:训练和每天的身体数据会从「健康」重新读出来;计划、目标、偏好、签到、教练对话和跑后评估都回不来,除非用删除之前做的 iPhone 备份恢复。
- 早期测试版留在你 iCloud 里的 Sencali 数据:先把其他设备上还装着的早期测试版升级或删除(它们还会往里写),再到 iPhone 设置里管理 iCloud 储存空间的页面,找到 Sencali 删除它在 iCloud 里的数据。
- 你发出的诊断和原始数据:Sencali 会在发出 30 天后、你下次打开 app 时自动删掉,删的时候这台 iPhone 要登录着发送时的那个 iCloud 账户,没登录就等登录以后再删;不想等 30 天,可以在 设置 › 反馈 ›「发送诊断」里点「删掉这台 iPhone 发过的诊断」,诊断和原始数据一起删,同样要登录着发送时的那个账户;早期测试版(0.36.0 及以前)发的,以及到期前删了 app 或换了 iCloud 账户的,留下的那几份可以把发送后看到的回执号发到hi@sencali.app请开发者删除。
- 写进日历的事件:在日历里删除。关掉写入后,新的不再写,已写的不动。
- 中转暂存的教练回答:你的手机收到后就删;没取走的、或者删除没送到的,最多 24 小时后自动删除。
- Sencali 教练的额度计数:在下个月 7 日 00:00 UTC 自动删除该月编号及其额度、限流记录;交易号本身不保存。发给第三方模型提供商的内容,由提供商按自己的规则保存和删除,具体规定见第 3 节 (1);这不是 Sencali 的保留期。删除 app 或停用 Sencali 教练不会提前删除提供商保留的内容。
- 旧版本中直接发给模型提供商的内容:仍按该提供商的条款处理;需要删除时,向该提供商提出申请。
- 分享链接:生成后固定 30×24 小时,到期立即拒绝读取,随后分批清理密文、预览图、元数据和举报记录;可在 app 提前删除,撤销标记保留至原到期。卸载不撤回云端链接,删除不能收回缓存、截图和下载;举报记录与原链接到期后一起清理。
6. 儿童
Sencali 不面向 13 岁以下(或你所在地法律规定的更高年龄)的儿童。
7. 变更
政策变化时更新本页和生效日期。Sencali 教练换用别的模型提供商时,也会更新本页,不再单独询问。