[RFC] ETOS LLM Studio (ELS) 跨端同步与数据安全架构重构总览
在深入评估了移动端/手表端复杂的离线场景、数据一致性要求以及极端安全需求后,我们决定对 ELS 的底层存储与同步架构进行一次彻底的重构。以下是新架构的落地方案总结,作为后续开发的蓝图。
1. 存储基座:Local-First 与万物归库
- 坚持本地优先 (Local-First):所有数据(会话、记忆、配置)永远首先落盘至本地 GRDB (SQLite),UI 响应完全依赖
ValueObservation。
- 淘汰
@AppStorage 碎片:彻底废弃散落的 UserDefaults。新建统一的 AppConfig 表,将系统零碎配置收编进 config-store.sqlite。实现配置与聊天数据在同一同步管道下的“绝对一致性”。
2. 双轨同步引擎 (Dual-Track Sync)
弃用容易引发整库锁死或大量冲突的文件级 iCloud Drive 实时同步,转而采用基于增量与动作的同步策略:
- 近场热同步 (WCSession):在 iOS 与 watchOS 处于同一局域网或蓝牙范围内时,通过
sendMessage / transferUserInfo 进行毫秒级的数据载荷传输,消除近场时间差。
- 远端增量漫游 (CloudKit + APNs):利用 CloudKit 的
CKRecord 与 ServerChangeToken 机制,实现增量差异同步 (Delta Sync)。通过 APNs 静默推送唤醒后台设备(包括未来的跨生态端),实现多端状态无缝漫游。
3. 并发冲突与会话分叉 (Conflict & Timeline Forking)
针对离线后重新连接导致的竞态条件(Race Condition),采用定制化 Merge 策略:
- 单条记录精细合并:如多端同时生成重试历史,对 JSON 数组执行并集;如多端更新用户画像(UserProfile),则执行文本缝合,并交由下一轮 LLM 自动降维去重。
- 上下文时序防抖(平行分支机制):检测到离线期间同一对话(Session)在两端产生新的时序分歧时,自动复制原 Session 记录生成新 UUID,并在名称后追加后缀(如
[watchOS 分支]),将两端的分歧物理隔离为两个独立对话,完美保护大模型的上下文逻辑。
4. 灾难恢复与脱机快照 (Disaster Recovery & Snapshots)
- 多端手动快照 (Cloudflare R2 & iCloud Drive):独立于启动恢复机制,提供手动触发的轻量级脱机快照。后台静默执行剥离 FTS 虚表与触发器的极简副本压缩,支持上传至 R2 对象存储或用户的 iCloud 云盘。
- 快照归档加密与 KDF 策略:支持对导出的压缩归档进行独立加密,并提供灵活的密码学选项。用户可设定简单密码(不加盐,追求便捷),也可选择开启自动派生策略(通过加盐及 KDF 算法进行高强度密钥派生)。
- 安全恢复流:从云端拉取快照恢复时,ELS 将询问用户设定的密码与解密方式。成功解密并回灌本地纯净库后,其安全性将无缝交接给第 5 点的物理加密防线。
- 向量库抛弃原则:
memory_vectors.sqlite 彻底退出漫游管道。异地设备拉取增量后于本地静默重建 Vector 索引,大幅降低带宽负担。
5. 零信任防线与分级加密 (Zero-Trust & Tiered Encryption)
- 近场物理隔离:当用户关闭云同步开关时,底层拦截对端设备的
WCSession 数据请求。确保关闭同步即等于物理切断。
- 分级密码保护体系:为应对“熟人知晓手机锁屏密码”等越权访问威胁,提供两级安全防护:
- 常规 UI 锁:满足多数用户的应用级加锁需求。
- 全盘物理加密 (SQLCipher):作为极客进阶选项。为防止物理提取,必须采用与系统锁屏密码完全不同的独立主密码。
- 底层密钥派生原理 (PBKDF2):当启用 SQLCipher 时,系统不会直接使用用户输入的明文密码。底层会在数据库文件头部自动生成固定盐(Salt),并默认使用 PBKDF2-HMAC-SHA512 算法进行高达 256,000 次的迭代运算,硬核派生出 256 位 AES 密钥。在极高强度的防暴力破解基础上,实现 Page 级的即时解密(On-the-fly),不影响正常 JSON 解析开销。
- 生物识别权限降级:Face ID / Touch ID 解锁(包括提取主密码)均被设计为可选项,将安全控制权完全交还给用户。
[RFC] ETOS LLM Studio (ELS) 跨端同步与数据安全架构重构总览
在深入评估了移动端/手表端复杂的离线场景、数据一致性要求以及极端安全需求后,我们决定对 ELS 的底层存储与同步架构进行一次彻底的重构。以下是新架构的落地方案总结,作为后续开发的蓝图。
1. 存储基座:Local-First 与万物归库
ValueObservation。@AppStorage碎片:彻底废弃散落的UserDefaults。新建统一的AppConfig表,将系统零碎配置收编进config-store.sqlite。实现配置与聊天数据在同一同步管道下的“绝对一致性”。2. 双轨同步引擎 (Dual-Track Sync)
弃用容易引发整库锁死或大量冲突的文件级 iCloud Drive 实时同步,转而采用基于增量与动作的同步策略:
sendMessage/transferUserInfo进行毫秒级的数据载荷传输,消除近场时间差。CKRecord与ServerChangeToken机制,实现增量差异同步 (Delta Sync)。通过 APNs 静默推送唤醒后台设备(包括未来的跨生态端),实现多端状态无缝漫游。3. 并发冲突与会话分叉 (Conflict & Timeline Forking)
针对离线后重新连接导致的竞态条件(Race Condition),采用定制化 Merge 策略:
[watchOS 分支]),将两端的分歧物理隔离为两个独立对话,完美保护大模型的上下文逻辑。4. 灾难恢复与脱机快照 (Disaster Recovery & Snapshots)
memory_vectors.sqlite彻底退出漫游管道。异地设备拉取增量后于本地静默重建 Vector 索引,大幅降低带宽负担。5. 零信任防线与分级加密 (Zero-Trust & Tiered Encryption)
WCSession数据请求。确保关闭同步即等于物理切断。