过去几个月,我在搭建一个叫Nexus的个人数据平台。54个数据源、250多张表、35.8万条知识图谱事实,全部跑在家用服务器的Postgres 16上。从iMessage到Gmail,从Apple Photos到Spotify再到HealthKit,我试图把自己的生活变成可查询的数据模型。
几周前,我在接入苹果系数据源时,顺手打开了macOS本地的几个数据库。里面的东西让我愣住了——熟悉得可怕。
![]()
苹果在你Mac上维护着好几套相互重叠的SQLite数据库。数字取证社区早就摸清了这些,尽管苹果几乎从不公开文档。mac4n6的Sarah Edwards是最早深入解析knowledgeC.db的人之一,她后来对PersonalizationPortrait的研究直接指出这个数据库"塞满了数据"。但那些工作聚焦的是取证调查——执法部门能从扣押设备里提取什么——而非架构分析。我的视角正好相反:我造了一套做同样事情的系统,我想从苹果的设计选择里学到什么。
最终被我接入Nexus的数据库有这么几个:
knowledgeC.db(CoreDuet框架)——这是大头。取证研究人员叫它"生活模式"数据。应用使用、设备使用、位置情境、行为时间线、媒体活动、浏览行为、通信元数据、充电模式、移动轨迹。在新版macOS/iOS上,很多内容转移到了Biome框架,但架构理念没变。
采集完成后,我自己的aurora_raw_apple_knowledge表有13,677条记录,aurora_raw_biome有249,776条。Biome的第一个数据流就有241,138条记录——全是Apple Intelligence功能调用。每次设备端的生成模型运行,都会留下一条记录。
PersonalizationPortrait——这里开始出现真正的架构巧思。我的aurora_raw_apple_personalization表有38,775条记录。表结构很简单:entity_name、entity_type、interest_score、decay_score、topic_category、is_significant_contact。
苹果在对你追踪的实体做兴趣评分,还带时间衰减。实体类型包括significant_contact(3,970条)、topic(2,805条)、loc(2,000个位置实体),以及一堆不透明的ne_*(命名实体)类别,似乎对应不同的实体类别。
topic_category的值是Wikidata QID。据我查阅的公开DFIR文献,之前没人提过这一点:苹果在用Wikidata知识图谱作为主题本体。Q223563(Google Calendar)是我数据里出现频率最高的主题,587条记录,平均兴趣分0.999。苹果知道我对日历很感兴趣。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.