Apple 个人知识图谱:连"谁是你妈"都是算出来的
51 个明文数据库、181 类实体、144 个特征:每台 Mac 都在算"谁是你妈"。删掉的联系人还在过期表里,评分仍在。
2022 年起(macOS 13),每一台 Mac 都带着两个守护进程,它们活着的唯一目的就是建一张图:你是谁、你认识谁、这些人和你以及彼此是什么关系、你怎么和他们联系、你去哪、和谁、做什么、什么时候。
这张图在设备本地建,靠交叉比对机器上几乎所有东西:通讯录、日历、照片、信息、邮件、位置、屏幕使用时间,以及一长串行为信号。更重要的是,它被保存成一个可查询的存储,供大模型检索(据称如此)。
听起来像阴谋论,但它确实在发生,而且关于这套机制在你的 Mac 上怎么运作,公开文档少得可怜。最接近官方描述的只有 man page(man 8 knowledgeconstructiond),得到的全部内容就是:
NAMEknowledgeconstructiond—— 一个分析设备内容、建立通用知识图谱的守护进程。
DESCRIPTIONknowledgeconstructiond分析本设备上的内容,帮助建立一张代表设备与用户的知识图谱。它与intelligenceplatformd协作,承担一部分重计算任务,生成这张知识图谱。
——macOS 26.6.2,build 25G83
先前的工作:公平地说,Apple 自己的研究员 2023 年确实发表过一篇讲解这张图构建技术的论文。但关于它如何整合进 macOS——哪些版本在跑、到底收集和推断了什么——几乎没有内容。至于下文要讨论的"亲属关系"推断,一个字都没有。
我们是在 2026 年 8 月对 macOS 26 的 Apple Intelligence 包做安全研究时碰到它的;而几个月前,Nic Lydon 也发现了同一个数据库,写了《I Built a Personal Knowledge Graph. Apple Had Already Built One on My Laptop》。更近的一次是取证工具找到了手机上:2026 年 9 月,Alexis Brignoni 教会 iLEAPP 读取 iOS 上的同一个存储,graph.db 与用来解码谓词代码的 ontology.db 位于 /private/var/mobile/Library/IntelligencePlatform,他写成了《Reading the iPhone Knowledge Graph, and Checking Its Work》。
我们想再往深处走一点。
这篇是对"知识图谱到底在干什么"的一次分析记录,目的是让你对这套机制的运作方式有更好的理解,也清楚这张图究竟握有关于你、你的家人和朋友的什么。全部内容采集于 macOS 26(写作时为 26.6.2)。
为此我们开源了一个本地看板 iKnow,你可以在自己的 Mac 上读取个人知识图谱的内容。
最后我们会稍微跑题,做我们最擅长的事:武器化与利用。我们做了一个思想实验(适用于任何这类个性化系统),说明这样一个知识库落到错的人手里会发生什么,以及一个"隐私单点故障"怎么能被拿来威胁你——用一些你之前没想过的方式(与一个被解除对齐限制的模型结合时)。
一、个人知识图谱里有什么
两个守护进程把工作成果放在 ~/Library/IntelligencePlatform,里面有 51 个 SQLite 数据库。它们是明文存储的,只是所在区域受 TCC 完全磁盘访问权限保护。
最有意思的应该是 graph.db。它是一个三元组存储,词表包含 181 类实体和 278 个谓词:每一行都是一个主语、一个谓词和一个宾语。主语是实体(一个人、一个应用、一个事件);宾语要么是一个普通值(名字、账号、日期),要么是另一个实体——后者正是这张图"边"的来源。谓词是最有意思的部分:它说明系统认为两者之间是哪种关系。
拿一条边举例(合成数据):一个"人"和库认为他是其雇主的"组织"。PS500 是 predicate.json 给"雇主"的 id,但它的取值范围不是组织,而是一个关系类型——所以一条边实际是共享同一个 relationshipId 的两行:一行说明关系种类,一行指向另一个实体。
| 主语 | 谓词 | 宾语 |
|---|---|---|
9100000000007919(我,这台 Mac 的主人) |
PS500(雇主,指向关系类型 CS165) |
9100000000013724(Halden Labs,一个组织) |
同一时刻,这两行还各自带着置信度、来源、来源重复项与时间戳。下表那 46 个"关系类型"类别的存在,正是为了让每条边自己带上置信度、并在以后能被撤回。
两个守护进程做的大部分事情,就是把操作系统允许它读的一切灌进这些谓词和旁边的表。进图的有:通讯录;照片(人脸);日历(标题与参与者);家人共享(包括每个成员的年龄);健康里医疗急救卡上的紧急联系人;Siri 建议在邮件和信息里找到的事件与联系人;应用通过 App Intents 捐献的人;以及已安装的应用。
在它们旁边的独立表里,还躺着:你在照片里和谁一起出现;通信日志(谁、什么时候、哪个应用、什么方向;没有内容),它也会从你的其他设备拉数据;位置与移动;以及一长串设备信号(锁屏、Wi-Fi、蓝牙、充电、环境光,还有一个叫 ContextualUnderstanding.PhysicalSocial 的流,其记录格式按姓名、电话和邮箱列出人物,每人带起止时间——读起来像是"谁在你身边"的日志,尽管我们从没见过它被填上)。
二、推断出了什么
下图是全部 181 个实体类别(id 与标签是 Apple 的,分组是我们的):
| 类别 ID | 标签 | 分组 | 是否找到机制? |
|---|---|---|---|
SB56 |
实体 | 核心 | 已实现 |
SB104 |
人 | 核心 | 已实现 |
SB152 |
地点 | 核心 | 已实现 |
nm_topic |
主题 | 核心 | 已实现 |
SB65 |
事件 | 核心 | 已实现 |
nm_document |
文档 | 核心 | 未找到机制 |
SB473 |
住宅 | 核心 | 未找到机制 |
SB10 |
组织 | 核心 | 已实现 |
SB2 |
人群 | 核心 | 已实现 |
SB144 |
软件 | 核心 | 已实现 |
SB193 |
生物 | 核心 | 已实现 |
SB198 |
智能体 | 核心 | 已实现 |
SB83 |
概念 | 核心 | 已实现 |
SB400 |
发生 | 核心 | 已实现 |
SB60 |
角色 | 核心 | 已实现 |
SB197 |
Siri 基础类型 | 核心 | 已实现 |
nm_knowledgeSource |
知识来源 | 核心 | 已实现 |
SB170 |
时间 | 核心 | 未找到机制 |
SB175 |
群组 | 核心 | 已实现 |
SB470 |
设备主要用户 | 人 | 未找到机制 |
SB199 |
音乐人 | 人 | 未找到机制 |
SB14 |
运动队 | 人 | 已实现 |
SB417 |
运动组织 | 人 | 未找到机制 |
SB115 |
运动联盟 | 人 | 未找到机制 |
SB185 |
运动员 | 人 | 未找到机制 |
SB21 |
艺术界人物 | 人 | 未找到机制 |
SB184 |
音乐家 | 人 | 未找到机制 |
nm_screenTimeSegment |
屏幕使用时间片段 | 人 | 未找到机制 |
CS8 |
性别 | 属性 | 可能已实现(未验证) |
CS4 |
计量单位 | 属性 | 已实现 |
CS25 |
职业类型 | 属性 | 已实现 |
CS37 |
宗教 | 属性 | 未找到机制 |
SB74 |
语言 | 属性 | 未找到机制 |
SB18 |
政党 | 属性 | 未找到机制 |
SB461 |
题材 | 属性 | 已实现 |
SB537 |
交通方式 | 属性 | 已实现 |
SB544 |
汽车型号 | 属性 | 已实现 |
SB418 |
汽车品牌 | 属性 | 已实现 |
SB399 |
内容分级 | 属性 | 未找到机制 |
SB48 |
居民点 | 地点 | 已实现 |
SB101 |
州/省 | 地点 | 可能已实现(未验证) |
SB163 |
国家 | 地点 | 可能已实现(未验证) |
SB370 |
时区 | 地点 | 可能已实现(未验证) |
SB131 |
县 | 地点 | 已实现 |
SB471 |
日历 | 事件 | 未找到机制 |
SB472 |
日历事件 | 事件 | 已实现 |
SB513 |
活动事件 | 事件 | 已实现 |
SB71 |
体育比赛事件 | 事件 | 未找到机制 |
SB77 |
节日事件 | 事件 | 已实现 |
SB514 |
出行活动 | 活动 | 已实现 |
SB515 |
工作活动 | 活动 | 已实现 |
SB516 |
会议活动 | 活动 | 已实现 |
SB517 |
用餐活动 | 活动 | 可能已实现(未验证) |
SB518 |
看电视活动 | 活动 | 可能已实现(未验证) |
SB519 |
沟通活动 | 活动 | 已实现 |
SB520 |
购物活动 | 活动 | 已实现 |
SB523 |
旅行活动 | 活动 | 可能已实现(未验证) |
SB524 |
阅读活动 | 活动 | 已实现 |
SB525 |
度假活动 | 活动 | 已实现 |
SB526 |
游戏活动 | 活动 | 已实现 |
SB527 |
社交活动 | 活动 | 可能已实现(未验证) |
SB528 |
起床活动 | 活动 | 可能已实现(未验证) |
SB529 |
就寝活动 | 活动 | 可能已实现(未验证) |
SB522 |
睡眠活动 | 活动 | 已实现 |
SB530 |
锻炼活动 | 活动 | 已实现 |
SB521 |
正念活动 | 活动 | 可能已实现(未验证) |
SB531 |
通话活动 | 活动 | 已实现 |
SB532 |
FaceTime 活动 | 活动 | 已实现 |
SB533 |
步行活动 | 活动 | 已实现 |
SB534 |
跑步活动 | 活动 | 已实现 |
SB535 |
骑行活动 | 活动 | 已实现 |
SB536 |
徒步活动 | 活动 | 未找到机制 |
SB722 |
通勤活动 | 活动 | 已实现 |
SB723 |
就餐活动 | 活动 | 已实现 |
SB726 |
观看演出活动 | 活动 | 已实现 |
SB732 |
静止活动 | 活动 | 已实现 |
SB764 |
到访活动 | 活动 | 已实现 |
SB784 |
驾车活动 | 活动 | 未找到机制 |
SB786 |
行为活动 | 活动 | 未找到机制 |
SB394 |
运动活动 | 活动 | 已实现 |
SB116 |
活动类型 | 活动类型 | 可能已实现(未验证) |
SB545 |
出行活动类型 | 活动类型 | 未找到机制 |
SB546 |
工作活动类型 | 活动类型 | 未找到机制 |
SB547 |
会议活动类型 | 活动类型 | 未找到机制 |
SB548 |
用餐活动类型 | 活动类型 | 未找到机制 |
SB549 |
看媒体活动类型 | 活动类型 | 未找到机制 |
SB550 |
沟通活动类型 | 活动类型 | 未找到机制 |
SB551 |
购物活动类型 | 活动类型 | 未找到机制 |
SB552 |
正念活动类型 | 活动类型 | 未找到机制 |
SB553 |
睡眠活动类型 | 活动类型 | 未找到机制 |
SB554 |
旅行活动类型 | 活动类型 | 未找到机制 |
SB555 |
阅读活动类型 | 活动类型 | 未找到机制 |
SB556 |
度假活动类型 | 活动类型 | 未找到机制 |
SB557 |
社交活动类型 | 活动类型 | 未找到机制 |
SB558 |
起床活动类型 | 活动类型 | 未找到机制 |
SB559 |
就寝活动类型 | 活动类型 | 未找到机制 |
SB560 |
电话活动类型 | 活动类型 | 未找到机制 |
SB561 |
FaceTime 活动类型 | 活动类型 | 未找到机制 |
SB562 |
步行活动类型 | 活动类型 | 未找到机制 |
SB563 |
跑步活动类型 | 活动类型 | 未找到机制 |
SB564 |
骑行活动类型 | 活动类型 | 未找到机制 |
SB565 |
徒步活动类型 | 活动类型 | 未找到机制 |
SB483 |
体育锻炼类型 | 活动类型 | 未找到机制 |
SB721 |
通勤活动类型 | 活动类型 | 未找到机制 |
SB785 |
驾车活动类型 | 活动类型 | 未找到机制 |
SB787 |
行为活动类型 | 活动类型 | 未找到机制 |
SB425 |
车辆 | 交通 | 已实现 |
SB543 |
步行 | 交通 | 未找到机制 |
SB335 |
汽车 | 交通 | 已实现 |
SB538 |
飞机 | 交通 | 未找到机制 |
SB539 |
自行车 | 交通 | 未找到机制 |
SB358 |
船 | 交通 | 未找到机制 |
SB541 |
公交车 | 交通 | 未找到机制 |
SB542 |
火车 | 交通 | 未找到机制 |
SB51 |
作品 | 媒体 | 已实现 |
SB405 |
媒体作品 | 媒体 | 已实现 |
SB44 |
歌曲 | 媒体 | 已实现 |
SB138 |
专辑 | 媒体 | 未找到机制 |
SB85 |
音乐作品 | 媒体 | 已实现 |
SB183 |
电影 | 媒体 | 未找到机制 |
SB295 |
电视节目 | 媒体 | 未找到机制 |
SB49 |
动物 | 动物 | 未找到机制 |
nm_pet |
宠物 | 动物 | 未找到机制 |
nm_dog |
狗 | 动物 | 未找到机制 |
nm_cat |
猫 | 动物 | 未找到机制 |
nm_myPet |
我的宠物 | 动物 | 未找到机制 |
nm_myDog |
我的狗 | 动物 | 未找到机制 |
nm_myCat |
我的猫 | 动物 | 未找到机制 |
nm_walletOrder |
钱包订单 | 交易 | 已实现 |
nm_walletTransaction |
钱包交易 | 交易 | 未找到机制 |
nm_payment |
支付 | 交易 | 已实现 |
nm_transaction |
交易 | 交易 | 已实现 |
nm_email |
邮件 | 交易 | 已实现 |
nm_shippingInfo |
配送信息 | 交易 | 未找到机制 |
nm_shipmentFullFillmentInfo |
发货履约信息 | 交易 | 已实现 |
CS29 |
位置关系类型 | 边(关系类型) | 已实现 |
CS97 |
地址关系类型 | 边(关系类型) | 已实现 |
nm_topicRelationshipType |
主题关系类型 | 边(关系类型) | 可能已实现(未验证) |
CS1 |
关系类型 | 边(关系类型) | 已实现 |
nm_senderRelationshipType |
发件人关系类型 | 边(关系类型) | 可能已实现(未验证) |
nm_calendarRelationshipType |
日历关系类型 | 边(关系类型) | 已实现 |
nm_organizerRelationshipType |
组织者关系类型 | 边(关系类型) | 未找到机制 |
CS105 |
文本关系类型 | 边(关系类型) | 未找到机制 |
CS101 |
语言关系类型 | 边(关系类型) | 未找到机制 |
CS22 |
标识关系类型 | 边(关系类型) | 已实现 |
CS2 |
图片关系类型 | 边(关系类型) | 可能已实现(未验证) |
CS13 |
成员关系类型 | 边(关系类型) | 已实现 |
CS165 |
雇佣关系类型 | 边(关系类型) | 已实现 |
CS154 |
时区关系类型 | 边(关系类型) | 可能已实现(未验证) |
CS3 |
数量关系类型 | 边(关系类型) | 已实现 |
CS36 |
宗教关系类型 | 边(关系类型) | 未找到机制 |
CS167 |
兴趣关系类型 | 边(关系类型) | 未找到机制 |
CS38 |
参与关系类型 | 边(关系类型) | 已实现 |
nm_calendarSourceRelationshipType |
日历来源关系类型 | 边(关系类型) | 已实现 |
CS168 |
智能体隶属关系类型 | 边(关系类型) | 已实现 |
nm_dateRelationshipType |
日期关系类型 | 边(关系类型) | 已实现 |
nm_administratorRelationshipType |
管理员关系类型 | 边(关系类型) | 未找到机制 |
nm_visualIdentifierRelationshipType |
视觉标识关系类型 | 边(关系类型) | 已实现 |
nm_songRelationshipType |
歌曲关系类型 | 边(关系类型) | 已实现 |
nm_softwareRelationshipType |
软件关系类型 | 边(关系类型) | 已实现 |
CS173 |
事件关系类型 | 边(关系类型) | 未找到机制 |
nm_localizedNameRelationshipType |
本地化名称关系类型 | 边(关系类型) | 已实现 |
nm_confidenceRelationshipType |
置信度关系类型 | 边(关系类型) | 已实现 |
CS31 |
表演关系类型 | 边(关系类型) | 未找到机制 |
CS15 |
整体-部分关系类型 | 边(关系类型) | 未找到机制 |
CS113 |
评级关系类型 | 边(关系类型) | 未找到机制 |
CS166 |
群组关系类型 | 边(关系类型) | 已实现 |
nm_livingBeingRelationship |
生物关系 | 边(关系类型) | 已实现 |
nm_entityAliasRelationshipType |
实体别名关系类型 | 边(关系类型) | 已实现 |
nm_extractionTagRelationshipType |
抽取标签关系类型 | 边(关系类型) | 已实现 |
nm_orderEmailRelationshipType |
订单邮件关系类型 | 边(关系类型) | 已实现 |
nm_orderTransactionRelationshipType |
订单交易关系类型 | 边(关系类型) | 已实现 |
nm_orderShippingInfoRelationshipType |
订单配送信息关系类型 | 边(关系类型) | 已实现 |
nm_entityOrganizationRelationshipType |
实体-组织关系类型 | 边(关系类型) | 已实现 |
nm_shipmentFullFillmentEmailRelationshipType |
发货履约邮件关系类型 | 边(关系类型) | 已实现 |
nm_orderShipmentFullFillmentRelationshipType |
订单发货履约关系类型 | 边(关系类型) | 已实现 |
nm_orderPaymentRelationshipType |
订单支付关系类型 | 边(关系类型) | 已实现 |
nm_fromToEmailRelationshipType |
收发邮件关系类型 | 边(关系类型) | 未找到机制 |
nm_orderPersonRelationshipType |
订单当事人关系类型 | 边(关系类型) | 已实现 |
nm_shipmentPersonRelationshipType |
发货联系人关系类型 | 边(关系类型) | 已实现 |
nm_emailInfoRelationshipType |
邮件信息关系类型 | 边(关系类型) | 未找到机制 |
这张表把出厂本体声明的每一个类别都列了出来,按组排列而不是按文件顺序:先是核心类型,然后是人、属性、地点与事件,接着是活动区块,最后是 46 个关系类型——它们根本不是"东西",每一个都是一条边的具象化,好让这条边能带上自己的侧面信息,其中就包括置信度。intValue 从 1 到 185,缺了四个数字——18、54、169、181——而磁盘上没有任何东西说明它们原来是什么。
181 个里有 57 个描述的是一种活动:睡觉、锻炼、正念、就寝、通勤、就餐……它们大多还有一个配套的"类型"类别,所以将近三分之一的词表花在"你在做什么"上,而不是"你是谁、在哪"。话说回来,并不清楚每个类别都真的被用到;有些可能只是声明了、从未填充的占位符。表里标"已实现"的,是我们能定位到一个可能负责该类别机制的;这些应当当作推断工作,而不是事实基准。
下面是全部 278 个谓词(同样的免责声明适用):
| 谓词 | 记录什么 | 数据来源 | 获取方式 | 是否找到机制? |
|---|---|---|---|---|
PS1 |
这是什么东西(类型) | 所有来源 | 规则 | 已实现 |
PS10 |
题材 | Apple 世界知识 | Apple 预置 | 已实现 |
PS102 |
这条记录与那条是同一个人/同一件东西 | 所有来源 | 向量模型 | 已实现 |
PS106 |
时长 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
PS107 |
有地点 | 日历、位置历史 | 拷贝 | 可能已实现(未验证) |
PS123 |
整体-部分关系中的“部分” | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS132 |
有宗教信仰 | 通讯录 | 拷贝 | 未找到机制 |
PS133 |
宗教 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS135 |
面积 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS137 |
由谁表演 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS143 |
参与者标识 | 日历、Siri 建议 | 拷贝 | 可能已实现(未验证) |
PS144 |
参加了某个事件 | 日历、照片 | 拷贝 | 未找到机制 |
PS147 |
人口 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS16 |
表演者 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS194 |
由谁发布 | Apple 世界知识 | Apple 预置 | 已实现 |
PS2 |
单位 | Apple 世界知识 | Apple 预置 | 已实现 |
PS225 |
有位置关系 | 日历、位置历史 | 拷贝 | 已实现 |
PS232 |
有参与者 | 日历、Siri 建议 | 拷贝 | 已实现 |
PS248 |
起点位置 | 日历、位置历史 | 拷贝 | 已实现 |
PS249 |
终点位置 | 日历、位置历史 | 拷贝 | 已实现 |
PS29 |
开始时间 | 日历、Siri 建议 | 拷贝 | 已实现 |
PS296 |
URL | 日历、应用、世界知识 | 拷贝 | 已实现 |
PS3 |
数量 | Apple 世界知识 | Apple 预置 | 已实现 |
PS30 |
结束时间 | 日历、Siri 建议 | 拷贝 | 已实现 |
PS312 |
名 | 通讯录 | 拷贝 | 已实现 |
PS313 |
用户名/账号 | 通讯录、家人共享 | 拷贝 | 已实现 |
PS314 |
运动项目 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS315 |
邮政编码 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS316 |
完整街道地址 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS317 |
有地址 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS324 |
有语言 | 通讯录 | 拷贝 | 未找到机制 |
PS325 |
会说的语言 | 通讯录 | 拷贝 | 未找到机制 |
PS33 |
姓名 | 通讯录 | 拷贝 | 已实现 |
PS335 |
文本值 | 日历、应用、世界知识 | 拷贝 | 未找到机制 |
PS336 |
官方名称 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS34 |
性别认同 | 通讯录 | 拷贝 | 可能已实现(未验证) |
PS343 |
居民称谓 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS35 |
是哪国公民 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS358 |
有评级 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS359 |
评级 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS36 |
出生名 | 通讯录 | 拷贝 | 已实现 |
PS37 |
出生日期 | 通讯录 | 拷贝 | 已实现 |
PS374 |
有成员 | 通讯录、家人共享 | 拷贝 | 已实现 |
PS392 |
最后更新 | 日历、Siri 建议 | 拷贝 | 已实现 |
PS396 |
外部标识、它的值、它的类型 | 所有来源 | 关联 | 已实现 |
PS4 |
宽度 | Apple 世界知识 | Apple 预置 | 可能已实现(未验证) |
PS406 |
电子邮箱 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS407 |
电话号码 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS424 |
属于某政党 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS441 |
姓 | 通讯录 | 拷贝 | 已实现 |
PS447 |
有时区 | 日历、位置历史 | 拷贝 | 未找到机制 |
PS448 |
时区 | 日历、位置历史 | 拷贝 | 可能已实现(未验证) |
PS45 |
属于(某组织) | 通讯录、家人共享 | 拷贝 | 已实现 |
PS450 |
地址所在国家 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS453 |
城市 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS454 |
国家代码 ISO 3166-1 alpha-2 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS455 |
行政区 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS46 |
群组成员标识 | 家人共享 | 关联 | 未找到机制 |
PS484 |
官方语言 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS486 |
显示图片 | 照片、通讯录 | 拷贝 | 未找到机制 |
PS5 |
高度 | Apple 世界知识 | Apple 预置 | 可能已实现(未验证) |
PS500 |
雇主 | 通讯录 | 拷贝 | 已实现 |
PS51 |
描述 | 日历、应用、世界知识 | 拷贝 | 已实现 |
PS515 |
地点内的子地点 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS520 |
有联系方式 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS524 |
原籍 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS53 |
属于(整体的一部分) | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS545 |
姓名前缀 | 通讯录 | 拷贝 | 已实现 |
PS546 |
中间名 | 通讯录 | 拷贝 | 已实现 |
PS547 |
姓名后缀 | 通讯录 | 拷贝 | 已实现 |
PS548 |
部门 | 通讯录 | 拷贝 | 已实现 |
PS557 |
一个人感兴趣的话题 | 个性化画像 | 打分模型 | 未找到机制 |
PS558 |
一个人感兴趣的话题 | 个性化画像 | 打分模型 | 未找到机制 |
PS565 |
缩写 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS566 |
群组包含“部分” | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS567 |
相对 GMT 的秒数 | 日历、位置历史 | 拷贝 | 未找到机制 |
PS568 |
次级行政区 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS569 |
次级地名 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS570 |
次级街道 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS571 |
纬度 | 日历、位置历史 | 拷贝 | 已实现 |
PS572 |
经度 | 日历、位置历史 | 拷贝 | 已实现 |
PS573 |
有经纬度 | 日历、位置历史 | 拷贝 | 已实现 |
PS574 |
曾用姓 | 通讯录 | 拷贝 | 已实现 |
PS578 |
有组织者 | 日历、Siri 建议 | 拷贝 | 已实现 |
PS579 |
属于某日历 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
PS580 |
日历事件发送者 | 日历、Siri 建议 | 拷贝 | 已实现 |
PS581 |
地址第二行 | 通讯录、订单邮件 | 拷贝 | 已实现 |
PS582 |
谁管理这个家 | 家庭 App | 拷贝 | 未找到机制 |
PS586 |
状态 | — | 未确认 | 已实现 |
PS598 |
一个人与另一个人有亲属/关联关系 | 通讯录、健康、家人共享、屏幕使用时间、照片 | XGBoost + 规则 + 拷贝 | 已实现 |
PS599 |
一个人与另一个人有亲属/关联关系 | 通讯录、健康、家人共享、屏幕使用时间、照片 | XGBoost + 规则 + 拷贝 | 未找到机制 |
PS618 |
有子事件 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
PS66 |
来源 URL | 日历、应用、世界知识 | 拷贝 | 已实现 |
PS67 |
死亡日期 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS69 |
外部标识、它的值、它的类型 | 所有来源 | 关联 | 已实现 |
PS7 |
图片文件 | 照片、通讯录 | 拷贝 | 可能已实现(未验证) |
PS709 |
有驾驶员 | CarPlay、钱包 | 拷贝 | 未找到机制 |
PS710 |
交通类型 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS711 |
累计爬升 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS712 |
地形 | Apple 世界知识 | Apple 预置 | 已实现 |
PS713 |
油耗 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS714 |
高速里程 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS715 |
市区里程 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS716 |
汽车品牌 | CarPlay、钱包 | 拷贝 | 未找到机制 |
PS717 |
汽车型号 | CarPlay、钱包 | 拷贝 | 未找到机制 |
PS718 |
两个事件同时发生 | 照片、日历 | 规则 | 未找到机制 |
PS719 |
活动种类 | 健康、运动传感器 | 规则 | 未找到机制 |
PS72 |
外部标识、它的值、它的类型 | 所有来源 | 关联 | 已实现 |
PS73 |
职业 | 通讯录、Apple 世界知识 | 拷贝 | 已实现 |
PS730 |
次级单元号 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS731 |
行政区代码 | 通讯录、订单邮件 | 拷贝 | 可能已实现(未验证) |
PS733 |
用户给地点或东西起的标签 | 日历、Siri 建议 | 拷贝 | 可能已实现(未验证) |
PS734 |
参与者义务 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
PS740 |
通讯录标签 | 通讯录 | 拷贝 | 已实现 |
PS741 |
有事件 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
PS747 |
行为类别 | 行为历史 | 规则 | 未找到机制 |
PS75 |
有母亲 | — | 未确认 | 未找到机制 |
PS753 |
群组包含个人 | 家人共享 | 拷贝 | 已实现 |
PS76 |
有父亲 | — | 未确认 | 未找到机制 |
PS77 |
配偶 | — | 未确认 | 未找到机制 |
PS78 |
有图片 | 照片、通讯录 | 拷贝 | 未找到机制 |
PS79 |
有子女 | — | 未确认 | 未找到机制 |
PS83 |
长度 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS85 |
担任的角色 | Apple 世界知识 | Apple 预置 | 未找到机制 |
PS89 |
同一个人的另一个名字 | 通讯录、照片 | 向量模型 | 已实现 |
PS99 |
净资产 | Apple 世界知识 | Apple 预置 | 未找到机制 |
nm_QID |
Wikidata 标识 | Apple 世界知识 | Apple 预置 | 已实现 |
nm_UMC_ID |
UMC 标识 | Apple Music | 拷贝 | 已实现 |
nm_accountInstitution |
账户所属机构 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_accountLastFourDigits |
账户后四位 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_accountType |
账户类型 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_accuracy |
精度 | 位置历史 | 拷贝 | 未找到机制 |
nm_activityCategory |
从文本里抽出的活动类型 | 邮件、信息、应用内容 | 规则 | 未找到机制 |
nm_addressString |
地址字符串 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_age |
年龄 | 家人共享 | 拷贝 | 已实现 |
nm_albumIdentifier |
专辑标识 | Apple Music | 拷贝 | 已实现 |
nm_albumName |
歌曲所属专辑名 | Apple Music、应用使用 | 拷贝 | 已实现 |
nm_amount |
金额 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_anniversary |
纪念日 | 通讯录 | 拷贝 | 已实现 |
nm_applicationIdentifier |
应用标识 | 已装应用 | 拷贝 | 已实现 |
nm_artistIdentifier |
艺人标识 | Apple Music | 拷贝 | 已实现 |
nm_artistName |
歌曲艺人名 | Apple Music、应用使用 | 拷贝 | 已实现 |
nm_associationReason |
哪个机制给这张脸命了名 | 照片人脸 | 规则 | 已实现 |
nm_availability |
可用性 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_birthdayContactID |
生日对应的通讯录 ID | 通讯录 | 关联 | 未找到机制 |
nm_bundleID |
bundle 标识 | 已装应用 | 拷贝 | 已实现 |
nm_calendarType |
日历类型 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_carrierName |
运营商名称 | 钱包凭证、日历 | 拷贝 | 已实现 |
nm_category |
根据你读和写的内容打分得出的主题 | 个性化画像 | 打分模型 | 未找到机制 |
nm_cnFavoriteActionType |
通讯录常用操作类型 | 通讯录 | 拷贝 | 已实现 |
nm_confidence |
系统有多确定 | 写入这条事实的引擎 | 规则 | 已实现 |
nm_confirmationConfidence |
名字匹配有多确定 | 通讯录、照片 | 向量模型 | 已实现 |
nm_creationDate |
创建日期 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_dates |
日期 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_documentID |
文档 ID | — | 未确认 | 未找到机制 |
nm_dynamicCategory |
根据你读和写的内容打分得出的主题 | 个性化画像 | 打分模型 | 未找到机制 |
nm_emailFrom |
邮件发件人 | 订单邮件 | 拷贝 | 已实现 |
nm_emailIdentifier |
邮件标识 | 订单邮件 | 关联 | 已实现 |
nm_emailReplyTo |
邮件回复地址 | 订单邮件 | 拷贝 | 已实现 |
nm_emailTo |
邮件收件人 | 订单邮件 | 拷贝 | 未找到机制 |
nm_emailType |
邮件类型 | 订单邮件 | 拷贝 | 已实现 |
nm_entityAliasRelationship |
把同一个人的两个名字连起来的链接 | 通讯录、照片 | 向量模型 | 已实现 |
nm_exactVersion |
精确版本 | 已装应用 | 拷贝 | 未找到机制 |
nm_extensionHostId |
扩展宿主标识 | 已装应用 | 拷贝 | 未找到机制 |
nm_familyMemberType |
家庭成员类型 | 家人共享 | 拷贝 | 已实现 |
nm_file |
文件 | 已装应用 | 拷贝 | 未找到机制 |
nm_flightNumber |
航班号 | 钱包凭证、日历 | 拷贝 | 已实现 |
nm_handleIdentifier |
账号标识 | 信息、邮件 | 关联 | 已实现 |
nm_handles |
一个人使用的电话与邮箱 | 通讯录 | 拷贝 | 可能已实现(未验证) |
nm_hasAdministrator |
有管理员 | 家庭 App | 拷贝 | 未找到机制 |
nm_hasCalendar |
有日历 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_hasConfidence |
各来源的可信权重 | Apple 可下载资源 | Apple 预置 | 已实现 |
nm_hasDate |
有日期 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_hasDomain |
谓词适用的类别范围 | 本体自身 | Apple 预置 | 未找到机制 |
nm_hasEmail |
有邮箱 | 订单邮件 | 拷贝 | 已实现 |
nm_hasExtractionTags |
有抽取标签 | 入库流水线 | 规则 | 未找到机制 |
nm_hasFavoriteSportsTeam |
有最喜欢的球队 | 应用使用、Apple Music | 拷贝 | 未找到机制 |
nm_hasField |
有字段 | — | 未确认 | 已实现 |
nm_hasLocalizedName |
有本地化名称 | Apple 世界知识 | Apple 预置 | 已实现 |
nm_hasMerchant |
有商户 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_hasPayment |
有支付 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_hasPerson |
有当事人 | 订单邮件 | 拷贝 | 已实现 |
nm_hasProfileImage |
有头像 | 通讯录 | 拷贝 | 已实现 |
nm_hasRange |
谓词适用的类别范围 | 本体自身 | Apple 预置 | 已实现 |
nm_hasSender |
有发件人 | 订单邮件 | 拷贝 | 可能已实现(未验证) |
nm_hasShipmentFullFillment |
有发货履约 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_hasShippingInfo |
有配送信息 | 钱包、订单邮件 | 拷贝 | 未找到机制 |
nm_hasSoftware |
有软件 | 已装应用 | 拷贝 | 已实现 |
nm_hasSong |
有歌曲 | Apple Music、应用使用 | 拷贝 | 已实现 |
nm_hasSource |
有来源 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_hasTopic |
根据你读和写的内容打分得出的主题 | 个性化画像 | 打分模型 | 可能已实现(未验证) |
nm_hasTransaction |
有交易 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_hasVisualIdentifier |
一个人的脸部聚类 | 照片人脸 | 人脸聚类 | 已实现 |
nm_homeTeam |
主队 | Apple Music、应用使用 | 拷贝 | 未找到机制 |
nm_iataCode |
IATA 代码 | 钱包凭证、日历 | 拷贝 | 已实现 |
nm_image_bytes |
图片数据 | 照片、通讯录 | 拷贝 | 已实现 |
nm_imputedAnniversary |
推算出来的纪念日 | 通讯录、行为 | 未知模型 | 已实现 |
nm_imputedBirthday |
不是被告知而是被填上的生日——也是系统实际读取的那个 | 照片年龄估计(候选) | 未知模型 | 已实现 |
nm_imputedCreationDate |
被填上或归一化的时间戳 | 日历、Siri 建议 | 规则 | 已实现 |
nm_imputedEndTime |
被填上或归一化的时间戳 | 日历、Siri 建议 | 规则 | 已实现 |
nm_imputedInferredBirthday |
不是被告知而是被填上的生日——也是系统实际读取的那个 | 照片年龄估计(候选) | 未知模型 | 已实现 |
nm_imputedLastUpdated |
被填上或归一化的时间戳 | 日历、Siri 建议 | 规则 | 已实现 |
nm_imputedNonGregorianBirthday |
推算出来的非公历生日 | 通讯录、行为 | 未知模型 | 已实现 |
nm_imputedOccurrenceDate |
被填上或归一化的时间戳 | 日历、Siri 建议 | 规则 | 已实现 |
nm_imputedStartTime |
被填上或归一化的时间戳 | 日历、Siri 建议 | 规则 | 已实现 |
nm_inferenceFeedbackID |
标记“机器做出的断言”的句柄 | 亲属分类器 | XGBoost | 已实现 |
nm_inferredBirthday |
不是被告知而是被填上的生日——也是系统实际读取的那个 | 照片年龄估计(候选) | 未知模型 | 已实现 |
nm_inferredDeviceUser |
推断出来的设备主人(而非声明) | 行为历史 | 未知模型 | 已实现 |
nm_inferredSemanticLabel |
一个地点是干什么用的,例如家、健身房 | 位置历史 | 未知模型 | 已实现 |
nm_intentPersonId |
应用引用这个人时用的标识 | 应用捐赠 | 关联 | 已实现 |
nm_isAllDay |
是否全天 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_isCurrentUser |
此人是否为手机主人 | 通讯录“我的名片” | 规则 | 已实现 |
nm_isDetached |
是否分离 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_isFavorite |
是否收藏 | 通讯录 | 拷贝 | 已实现 |
nm_isStarting |
是否起始 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_isSubscribed |
订阅状态 | 日历、Siri 建议 | 拷贝 | 未找到机制 |
nm_launchReason |
启动原因 | 应用使用、屏幕使用时间 | 拷贝 | 未找到机制 |
nm_launchType |
启动类型 | 应用使用、屏幕使用时间 | 拷贝 | 未找到机制 |
nm_league_name |
联盟名称 | Apple Music、应用使用 | 拷贝 | 已实现 |
nm_listening_confidence |
某段关系在某种语言上的把握度 | — | 未确认 | 可能已实现(未验证) |
nm_localeIdentifier |
语言区域标识 | 系统设置 | 拷贝 | 已实现 |
nm_mappedTopic |
根据你读和写的内容打分得出的主题 | 个性化画像 | 打分模型 | 未找到机制 |
nm_merchantName |
商户名称 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_naturalLanguageEventTypeIdentifier |
从文本里抽出的事件类型 | 邮件、信息、应用内容 | 规则 | 未找到机制 |
nm_nonGregorianBirthday |
非公历生日 | 通讯录 | 拷贝 | 已实现 |
nm_occurrenceDate |
发生日期 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_orderContentType |
订单内容类型 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_orderNumber |
订单号 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_organizationIdentifier |
组织标识 | 通讯录、钱包 | 关联 | 已实现 |
nm_parentBundleId |
父 bundle 标识 | 已装应用 | 拷贝 | 未找到机制 |
nm_paymentIdentifier |
支付标识 | 钱包 | 关联 | 已实现 |
nm_paymentMethodIsApplePay |
支付方式是否为 Apple Pay | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_personIdentifier |
关系指向的那个人 | 关系的另一端 | 关联 | 已实现 |
nm_personType |
照片检测到的是什么东西 | 照片 | 规则 | 已实现 |
nm_phoneticFamilyName |
姓的注音 | 通讯录 | 拷贝 | 已实现 |
nm_phoneticFirstName |
名的注音 | 通讯录 | 拷贝 | 已实现 |
nm_phoneticMiddleName |
中间名的注音 | 通讯录 | 拷贝 | 已实现 |
nm_phoneticName |
姓名的注音 | 通讯录 | 拷贝 | 已实现 |
nm_photosDetectionType |
照片检测到的是什么东西 | 照片 | 规则 | 已实现 |
nm_poiType |
地点类型 | 地图、位置历史 | 拷贝 | 未找到机制 |
nm_reading_confidence |
某段关系在某种语言上的把握度 | — | 未确认 | 可能已实现(未验证) |
nm_relationship |
一个人与另一个人有亲属/关联关系 | 通讯录、健康、家人共享、屏幕使用时间、照片 | XGBoost + 规则 + 拷贝 | 已实现 |
nm_relationshipLabel |
关系词,例如姐姐、同事 | 通讯录、健康、家人共享 | XGBoost + 拷贝 | 已实现 |
nm_role |
角色 | — | 未确认 | 未找到机制 |
nm_screenTimeSegmentPerson |
屏幕使用时间片段对应的人 | 屏幕使用时间 | 拷贝 | 未找到机制 |
nm_senderDomain |
发件域名 | 订单邮件 | 拷贝 | 已实现 |
nm_senderIdentifier |
发件人标识 | 信息、邮件 | 关联 | 可能已实现(未验证) |
nm_sgEventType |
从应用或邮件推断出的事件类型 | Siri 建议 | 规则 | 已实现 |
nm_shipmentFullFillmentIdentifier |
发货履约标识 | 钱包 | 关联 | 已实现 |
nm_shippingMethod |
配送方式 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_shippingStatus |
配送状态 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_shortVersion |
短版本号 | 已装应用 | 拷贝 | 未找到机制 |
nm_signalLabel |
信号标签 | 照片 | 规则 | 已实现 |
nm_softwareIdentifier |
软件标识 | 已装应用 | 关联 | 可能已实现(未验证) |
nm_songIdentifier |
歌曲标识 | Apple Music | 拷贝 | 未找到机制 |
nm_sourceType |
来源类型 | 入库流水线 | 规则 | 已实现 |
nm_subject |
主题 | 订单邮件 | 拷贝 | 已实现 |
nm_suggestedName |
给没有名字的人脸猜的名字 | 照片人脸 + 信息文本 | 端侧 LLM | 已实现 |
nm_suggestedRelationshipConfidence |
猜出的这张脸与设备主人的关系有多确定 | 照片人脸 + 信息文本 | 端侧 LLM | 已实现 |
nm_suggestedRelationshipToDeviceOwner |
猜出的这张脸与设备主人的关系有多确定 | 照片人脸 + 信息文本 | 端侧 LLM | 已实现 |
nm_teamIdentifier |
团队标识 | 已装应用 | 关联 | 已实现 |
nm_toDisplayName |
邮件收件人的显示名 | 邮件 | 拷贝 | 已实现 |
nm_toEmailAddress |
收件邮箱 | 邮件 | 拷贝 | 已实现 |
nm_topicIdentifier |
主题标识 | 个性化画像 | 关联 | 可能已实现(未验证) |
nm_totalAmount |
总金额 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_totalNotifications |
通知总数 | 应用使用、屏幕使用时间 | 拷贝 | 未找到机制 |
nm_totalPickups |
拿起手机次数 | 应用使用、屏幕使用时间 | 拷贝 | 未找到机制 |
nm_trackingNumber |
运单号 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_transactionIdentifier |
交易标识 | 钱包 | 关联 | 已实现 |
nm_transactionSource |
交易来源 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_transactionStatus |
交易状态 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_transactionType |
交易类型 | 钱包、订单邮件 | 拷贝 | 已实现 |
nm_uncertainty |
不确定度 | 位置历史 | 拷贝 | 未找到机制 |
nm_unknownHandle |
未知账号 | 信息、邮件 | 关联 | 已实现 |
nm_unlocalizedRelationshipLabel |
未本地化的关系词 | 通讯录、健康、家人共享 | XGBoost + 拷贝 | 已实现 |
nm_virtualConferenceURL |
线上会议链接 | 日历、Siri 建议 | 拷贝 | 已实现 |
nm_visualIdentifier |
一个人的脸部聚类 | 照片人脸 | 人脸聚类 | 已实现 |
nm_writing_confidence |
某段关系在某种语言上的把握度 | — | 未确认 | 可能已实现(未验证) |
这是出厂本体声明的每一个谓词。第一列是 graph.db 里存储的 id;最后一列说明值是怎么来的:从某个来源拷贝、从另一条记录关联、由一条规则派生、Apple 作为世界知识预置,或由一个模型产出(用粗体的是模型)。有 7 个我们没能确认,表里写明"未确认"而不是猜。id 与标签是 Apple 的,白话解释是我们的。
三、怎么推断出来的
手法跨度很大。词表的大部分靠直接拷贝填充(通讯录里的名字、日历里的参与者),以及在这些拷贝上跑规则;有意思的行来自模型:一对 XGBoost 分类器根据 144 个(大多是行为的)特征判断谁算家人;两个向量模型是系统用来判断"两条记录是不是同一个人"的十个信号之一;照片里 12 个分析器根据谁和你一起出现在照片里、在哪些旅行和节日里,给伴侣、父母、子女、同事、朋友打分;而 Apple 的端侧大模型会读你的信息,给一张脸配上名字和关系(前提是 Apple Intelligence 是开启的)。
无论用哪种方法,每一行落地时都附带一个置信度:0 到 1 之间的数。
亲属分数另存一处。两个 CoreML 模型随本体一起出厂:EntityTagging_Family.mlmodelc 与 EntityTagging_FamilyAndFriends.mlmodelc——二元 XGBoost 分类器,吃 144 个特征,输出一个类别和它上面的概率。它们的分数不进三元组存储,而是进自己的一张表(entityTagging.db,每人一行、17 个关系列,从"家人"到"母亲"到"同事",每天重算),也就是下文 iKnow 记分卡读的那张。这 17 列里只有两列背后有出厂模型;剩下 15 列靠什么填、以及这些概率怎么变成图里的置信度,我们没能追出来。
特征名就在每个模型的 metadata.json 里,明文。 这是我在任何地方见过的、对这套系统最清晰的说明。全部 144 个:
| # | 特征名 | 分组 |
|---|---|---|
| 0 | isVIP |
身份 |
| 1 | sharesWorkAddress |
身份 |
| 2 | hasSamePrivateEmailDomain |
身份 |
| 3 | hasBirthday |
身份 |
| 4 | hasSameEmailDomains |
身份 |
| 5 | sameLastName |
身份 |
| 6 | hasSamePublicEmailDomain |
身份 |
| 7 | photosPersonAge |
身份 |
| 8 | isFavorite |
身份 |
| 9 | hasSameEduEmailDomain |
身份 |
| 10 | hasSameWorkEmailDomain |
身份 |
| 11 | hasNickname |
身份 |
| 12 | allowListedNameMatch |
身份 |
| 13 | ageDifferenceCategory |
身份 |
| 14 | nameContainsEmoji |
身份 |
| 15 | nicknameContainsEmoji |
身份 |
| 16 | sharesHomeAddress |
身份 |
| 17 | allowListedNicknameMatch |
身份 |
| 18 | photosAgeDifferenceCategory |
身份 |
| 19 | iCloudFamilyMember |
身份 |
| 20 | personOverallPopularity |
通信 |
| 21 | personLongTermPopularity |
通信 |
| 22 | personPopularityGivenMonday |
通信 |
| 23 | personPopularityGivenTuesday |
通信 |
| 24 | personPopularityGivenWednesday |
通信 |
| 25 | personPopularityGivenThursday |
通信 |
| 26 | personPopularityGivenFriday |
通信 |
| 27 | personPopularityGivenSaturday |
通信 |
| 28 | personPopularityGivenSunday |
通信 |
| 29 | mondayPopularityGivenPerson |
通信 |
| 30 | tuesdayPopularityGivenPerson |
通信 |
| 31 | wednesdayPopularityGivenPerson |
通信 |
| 32 | thursdayPopularityGivenPerson |
通信 |
| 33 | fridayPopularityGivenPerson |
通信 |
| 34 | saturdayPopularityGivenPerson |
通信 |
| 35 | sundayPopularityGivenPerson |
通信 |
| 36 | personPosteriorProbabilityGivenMonday |
通信 |
| 37 | personPosteriorProbabilityGivenTuesday |
通信 |
| 38 | personPosteriorProbabilityGivenWednesday |
通信 |
| 39 | personPosteriorProbabilityGivenThursday |
通信 |
| 40 | personPosteriorProbabilityGivenFriday |
通信 |
| 41 | personPosteriorProbabilityGivenSaturday |
通信 |
| 42 | personPosteriorProbabilityGivenSunday |
通信 |
| 43 | personPopularityGivenMorning |
通信 |
| 44 | personPopularityGivenAfternoon |
通信 |
| 45 | personPopularityGivenEvening |
通信 |
| 46 | personPopularityGivenNight |
通信 |
| 47 | personPopularityGivenHome |
通信 |
| 48 | personPopularityGivenWork |
通信 |
| 49 | homePopularityGivenPerson |
通信 |
| 50 | workPopularityGivenPerson |
通信 |
| 51 | personPosteriorProbabilityGivenHome |
通信 |
| 52 | personPosteriorProbabilityGivenWork |
通信 |
| 53 | personPopularityGivenWeekday |
通信 |
| 54 | personPopularityGivenWeekend |
通信 |
| 55 | weekdayPopularityGivenPerson |
通信 |
| 56 | weekendPopularityGivenPerson |
通信 |
| 57 | top1PersonInteractionMechanism |
通信 |
| 58 | top2PersonInteractionMechanism |
通信 |
| 59 | top3PersonInteractionMechanism |
通信 |
| 60 | photosPersonOverallPopularity |
照片 |
| 61 | photosPersonLongTermPopularity |
照片 |
| 62 | photosPersonPopularityGivenMonday |
照片 |
| 63 | mondayPopularityGivenPhotosPerson |
照片 |
| 64 | photosPersonPosteriorProbabilityGivenMonday |
照片 |
| 65 | photosPersonPopularityGivenTuesday |
照片 |
| 66 | tuesdayPopularityGivenPhotosPerson |
照片 |
| 67 | photosPersonPosteriorProbabilityGivenTuesday |
照片 |
| 68 | photosPersonPopularityGivenWednesday |
照片 |
| 69 | wednesdayPopularityGivenPhotosPerson |
照片 |
| 70 | photosPersonPosteriorProbabilityGivenWednesday |
照片 |
| 71 | photosPersonPopularityGivenThursday |
照片 |
| 72 | thursdayPopularityGivenPhotosPerson |
照片 |
| 73 | photosPersonPosteriorProbabilityGivenThursday |
照片 |
| 74 | photosPersonPopularityGivenFriday |
照片 |
| 75 | fridayPopularityGivenPhotosPerson |
照片 |
| 76 | photosPersonPosteriorProbabilityGivenFriday |
照片 |
| 77 | photosPersonPopularityGivenSaturday |
照片 |
| 78 | saturdayPopularityGivenPhotosPerson |
照片 |
| 79 | photosPersonPosteriorProbabilityGivenSaturday |
照片 |
| 80 | photosPersonPopularityGivenSunday |
照片 |
| 81 | sundayPopularityGivenPhotosPerson |
照片 |
| 82 | photosPersonPosteriorProbabilityGivenSunday |
照片 |
| 83 | photosPersonPopularityGivenMorning |
照片 |
| 84 | morningPopularityGivenPhotosPerson |
照片 |
| 85 | photosPersonPosteriorProbabilityGivenMorning |
照片 |
| 86 | photosPersonPopularityGivenAfternoon |
照片 |
| 87 | afternoonPopularityGivenPhotosPerson |
照片 |
| 88 | photosPersonPosteriorProbabilityGivenAfternoon |
照片 |
| 89 | photosPersonPopularityGivenEvening |
照片 |
| 90 | eveningPopularityGivenPhotosPerson |
照片 |
| 91 | photosPersonPosteriorProbabilityGivenEvening |
照片 |
| 92 | photosPersonPopularityGivenNight |
照片 |
| 93 | nightPopularityGivenPhotosPerson |
照片 |
| 94 | photosPersonPosteriorProbabilityGivenNight |
照片 |
| 95 | photosPersonPosteriorProbabilityGivenMondayMorning |
照片 |
| 96 | photosPersonPosteriorProbabilityGivenMondayAfternoon |
照片 |
| 97 | photosPersonPosteriorProbabilityGivenMondayEvening |
照片 |
| 98 | photosPersonPosteriorProbabilityGivenMondayNight |
照片 |
| 99 | photosPersonPosteriorProbabilityGivenTuesdayMorning |
照片 |
| 100 | photosPersonPosteriorProbabilityGivenTuesdayAfternoon |
照片 |
| 101 | photosPersonPosteriorProbabilityGivenTuesdayEvening |
照片 |
| 102 | photosPersonPosteriorProbabilityGivenTuesdayNight |
照片 |
| 103 | photosPersonPosteriorProbabilityGivenWednesdayMorning |
照片 |
| 104 | photosPersonPosteriorProbabilityGivenWednesdayAfternoon |
照片 |
| 105 | photosPersonPosteriorProbabilityGivenWednesdayEvening |
照片 |
| 106 | photosPersonPosteriorProbabilityGivenWednesdayNight |
照片 |
| 107 | photosPersonPosteriorProbabilityGivenThursdayMorning |
照片 |
| 108 | photosPersonPosteriorProbabilityGivenThursdayAfternoon |
照片 |
| 109 | photosPersonPosteriorProbabilityGivenThursdayEvening |
照片 |
| 110 | photosPersonPosteriorProbabilityGivenThursdayNight |
照片 |
| 111 | photosPersonPosteriorProbabilityGivenFridayMorning |
照片 |
| 112 | photosPersonPosteriorProbabilityGivenFridayAfternoon |
照片 |
| 113 | photosPersonPosteriorProbabilityGivenFridayEvening |
照片 |
| 114 | photosPersonPosteriorProbabilityGivenFridayNight |
照片 |
| 115 | photosPersonPosteriorProbabilityGivenSaturdayMorning |
照片 |
| 116 | photosPersonPosteriorProbabilityGivenSaturdayAfternoon |
照片 |
| 117 | photosPersonPosteriorProbabilityGivenSaturdayEvening |
照片 |
| 118 | photosPersonPosteriorProbabilityGivenSaturdayNight |
照片 |
| 119 | photosPersonPosteriorProbabilityGivenSundayMorning |
照片 |
| 120 | photosPersonPosteriorProbabilityGivenSundayAfternoon |
照片 |
| 121 | photosPersonPosteriorProbabilityGivenSundayEvening |
照片 |
| 122 | photosPersonPosteriorProbabilityGivenSundayNight |
照片 |
| 123 | photosPersonPopularityGivenHome |
照片 |
| 124 | homePopularityGivenPhotosPerson |
照片 |
| 125 | photosPersonPosteriorProbabilityGivenHome |
照片 |
| 126 | photosPersonPopularityGivenWork |
照片 |
| 127 | workPopularityGivenPhotosPerson |
照片 |
| 128 | photosPersonPosteriorProbabilityGivenWork |
照片 |
| 129 | photosPersonPopularityGivenWeekday |
照片 |
| 130 | weekdayPopularityGivenPhotosPerson |
照片 |
| 131 | photosPersonPosteriorProbabilityGivenWeekday |
照片 |
| 132 | photosPersonPopularityGivenWeekend |
照片 |
| 133 | weekendPopularityGivenPhotosPerson |
照片 |
| 134 | photosPersonPosteriorProbabilityGivenWeekend |
照片 |
| 135 | photosPersonPosteriorProbabilityGivenWeekdayMorning |
照片 |
| 136 | photosPersonPosteriorProbabilityGivenWeekdayAfternoon |
照片 |
| 137 | photosPersonPosteriorProbabilityGivenWeekdayEvening |
照片 |
| 138 | photosPersonPosteriorProbabilityGivenWeekdayNight |
照片 |
| 139 | photosPersonPosteriorProbabilityGivenWeekendMorning |
照片 |
| 140 | photosPersonPosteriorProbabilityGivenWeekendAfternoon |
照片 |
| 141 | photosPersonPosteriorProbabilityGivenWeekendEvening |
照片 |
| 142 | photosPersonPosteriorProbabilityGivenWeekendNight |
照片 |
| 143 | hasWeekendWeekdayPhotosFeatures |
照片 |
这是 EntityTagging_Family.mlmodelc 读入的全部输入,按它 metadata.json 声明的顺序。EntityTagging_FamilyAndFriends 以同样顺序读同样这 144 个,每一个都是数字。分组沿用了 schema 自己的三段:20 个关于"这个人是谁",40 个关于"你在什么时候、以什么方式和他通信",84 个关于"你们一起出现在哪些照片里"。这 20 个里有两个(photosPersonAge、photosAgeDifferenceCategory)也是从照片读的。名字是 Apple 的,分组标签是我们的。
身份组是那个干净的故事:同姓、同一个家庭住址、一个 iCloud 家人标记——而它是小的一半。模型的主体是另外两组:你给谁发消息、谁出现在你的照片里,以星期几和一天中的时段为条件,然后以两者同时为条件。photosPersonPosteriorProbabilityGivenSaturdayNight 是一个出厂分类器里的出厂特征名,而这个分类器的工作就是判断某人是不是你的家人。
删掉某个东西,不等于到处都删掉。
活着的图会遗忘。删掉一个联系人,没有任何东西重新推导他;下一次运行整表替换。
但库在活表旁边还留了第二张表 expired_stable_graph。被撤回的行搬过去,保留它的置信度与来源。它在那儿留多久,我们从能看到的部分还不清楚。看起来大约 48 小时后消失(库维护一个剪枝水位,近期的一份表快照最早也只到那里);但在我自己的 Mac 上,我还能读到非常旧的记录。
而且一个结论可以活得比它的证据更久。 在我这台 Mac 上,记分卡仍然给两个前一天已被图丢弃的人打了分,而这两个人只来自一次日历邀请。好吧,如果你不想让伴侣发现你删过某些联系人、以及他们的"亲密度",最好也把 expired_stable_graph 里的行删掉(可惜只能手动)。不过我相信你没什么好藏的(开个玩笑)。
四、看看你自己的数据
这些敏感吗?我们留给你判断,"敏感"对不同人意味着不同的事(不过我觉得这里可选的挺多)。但关键在于:它没有一样是孤立存在的。它被造出来就是为了被关联、被交叉比对;节点放在那里就是为了被连起来。
下图里的每个节点都是库里的一行,连线是库自己给出的关系:一条实线可能是"共同参加的一次日历事件"、"一条雇佣陈述"、"由存储的群组命名",虚线则是"一条没人手动录入、由亲密度分数算出来的关系"。
| 节点 | 库里的判定 | 12 个月互动 | 进/出 | 通话 | 首次→末次联系 | 会议(参加/组织) | 发出邀请 | 电话/邮箱 | 库里的事实数 | 合并进 |
|---|---|---|---|---|---|---|---|---|---|---|
| (Me) | 我 · 这台 Mac 的主人 | 18,432 | 9,761 / 8,671 | 96 | 2025-09-16 → 2026-09-15 | 312 / 88 | 41 | 2 / 3 | 147 | cnContact, faFamilyCircle, inPerson, phPerson, tel, mailto |
| Tomas Quill | 家人(打分)· 父亲 · 0.9607/9 项信号一致 | 2,590 | 1,372 / 1,218 | 13 | 2025-09-18 → 2026-09-14 | 40 / 7 | 5 | 1 / 1 | 31 | cnContact, faFamilyCircle, phPerson, tel |
| Nils Quill | 家人(打分)· 哥哥 · 0.5005/9 项信号一致 | 612 | 324 / 288 | 7 | 2025-09-18 → 2026-09-11 | 26 / 9 | 4 | 2 / 1 | 51 | cnContact, phPerson, tel |
| Ines Quill | 家人(打分)· 姐姐 · 0.5004/9 项信号一致 | 468 | 249 / 219 | 5 | 2025-09-18 → 2026-09-08 | 36 / 3 | 6 | 1 / 1 | 43 | cnContact, tel |
| Priya Sandoval | 家人(打分)· 伴侣 · 0.9607/9 项信号一致 | 2,280 | 1,208 / 1,072 | 12 | 2025-10-15 → 2026-09-09 | 28 / 6 | 3 | 1 / 2 | 18 | cnContact, faFamilyCircle, phPerson, tel |
| Jonah Ferreira | 与我亲近(打分)· 亲密度 0.784 | 1,970 | 1,044 / 926 | 11 | 2025-10-10 → 2026-09-14 | 11 / 6 | 4 | 1 / 2 | 18 | cnContact, tel |
| Lena Marchetti | 与我亲近(打分)· 亲密度 0.769 | 1,660 | 879 / 781 | 10 | 2025-10-20 → 2026-09-10 | 20 / 7 | 2 | 1 / 2 | 22 | cnContact, tel |
| Sam Okafor | 与我亲近(打分)· 亲密度 0.741 | 1,350 | 715 / 635 | — | 2025-10-24 → 2026-09-13 | 32 / 3 | 0 | 1 / 1 | 11 | cnContact, tel |
| Théo Lindqvist | 与我亲近(打分)· 亲密度 0.708 | 1,040 | 551 / 489 | — | 2025-10-01 → 2026-09-09 | 27 / 5 | 3 | 1 / 1 | 14 | cnContact, tel |
| Greta Eriksen | 与我亲近(打分)· 亲密度 0.684 | 300 | 159 / 141 | 3 | 2025-10-14 → 2026-07-18 | 32 / 2 | 4 | 1 / 1 | 29 | cnContact, tel, phPerson |
| Iris Castellano | 与我亲近(打分)· 亲密度 0.641 | 729 | 386 / 343 | 2 | 2025-10-03 → 2026-08-13 | 29 / 6 | 3 | 1 / 1 | 13 | cnContact, tel |
| Kai Nakamura | 与我亲近(打分)· 亲密度 0.607 | 447 | 236 / 211 | 2 | 2025-10-14 → 2026-09-15 | 12 / 7 | 0 | 1 / 2 | 19 | cnContact, tel, phPerson |
| Ona Salazar | 与我亲近(打分)· 亲密度 0.574 | 335 | 177 / 158 | 1 | 2025-10-02 → 2026-09-15 | 9 / 2 | 3 | 1 / 2 | 11 | cnContact, tel |
| Bo Ferreira | 与我亲近(打分)· 亲密度 0.536 | 183 | 96 / 87 | 4 | 2025-10-19 → 2026-06-28 | 25 / 0 | 4 | 1 / 2 | 24 | cnContact, tel |
| Ruth Adeyemi | 认识,但未判为亲近 | 730 | 386 / 344 | — | 2025-10-20 → 2026-09-12 | 2 / 0 | 2 | 1 / 1 | 1 | cnContact, tel |
| Ruth Tanaka | 认识,但未判为亲近 | 180 | 91 / 89 | — | 2025-12-05 → 2026-05-03 | 0 / 0 | 0 | 1 / 0 | 3 | cnContact, tel |
| Tomas Halloran | 认识,但未判为亲近 | 147 | 74 / 73 | — | 2025-11-28 → 2026-02-21 | 0 / 0 | 1 | 1 / 1 | 2 | cnContact, tel |
| Jonah Varga | 认识,但未判为亲近 | 77 | 39 / 38 | — | 2025-10-13 → 2026-05-19 | 2 / 0 | 2 | 1 / 0 | 5 | cnContact, tel |
| Nadia Brennan | 认识,但未判为亲近 | 50 | 25 / 25 | — | 2025-12-01 → 2026-02-03 | 5 / 0 | 1 | 1 / 0 | 7 | cnContact, tel |
| Oskar Lindqvist | 认识,但未判为亲近 | 81 | 41 / 40 | — | 2025-11-19 → 2026-05-13 | 1 / 0 | 0 | 1 / 0 | 7 | cnContact, tel |
| Halima Ceric | 认识,但未判为亲近 | 139 | 70 / 69 | — | 2025-12-15 → 2026-05-03 | 5 / 0 | 1 | 1 / 0 | 5 | cnContact, tel |
| Peter Vance | 认识,但未判为亲近 | 61 | 31 / 30 | — | 2025-11-26 → 2026-05-22 | 4 / 0 | 2 | 1 / 0 | 3 | cnContact, tel |
| Maya Smith | 家人(打分)· 女儿 · 0.9606/9 项信号一致 | 151 | 77 / 74 | — | 2025-10-21 → 2026-09-03 | 2 / 0 | 0 | 1 / 0 | 4 | cnContact, faFamilyCircle, phPerson, tel |
| Milo Fenwick | 认识,但未判为亲近 | 147 | 74 / 73 | — | 2025-11-13 → 2026-06-16 | 1 / 0 | 2 | 1 / 0 | 5 | cnContact, tel |
| Agnes Okonjo | 认识,但未判为亲近 | 140 | 71 / 69 | — | 2025-10-21 → 2026-02-09 | 0 / 0 | 0 | 1 / 0 | 4 | cnContact, tel |
| Dev Raman | 认识,但未判为亲近 | 178 | 90 / 88 | — | 2025-12-25 → 2026-01-20 | 4 / 0 | 0 | 1 / 1 | 7 | cnContact, tel |
| Clara Hovland | 认识,但未判为亲近 | 120 | 61 / 59 | — | 2025-12-10 → 2026-07-22 | 4 / 0 | 2 | 1 / 1 | 4 | cnContact, tel |
| Tobias Reiss | 认识,但未判为亲近 | 138 | 70 / 68 | — | 2025-11-26 → 2026-01-25 | 6 / 0 | 2 | 1 / 0 | 7 | cnContact, tel |
| Selma Duarte | 认识,但未判为亲近 | 201 | 102 / 99 | — | 2025-11-03 → 2026-02-06 | 6 / 0 | 0 | 1 / 0 | 4 | cnContact, tel |
| Arto Kekkonen | 认识,但未判为亲近 | 209 | 106 / 103 | — | 2025-10-05 → 2026-01-01 | 3 / 0 | 0 | 1 / 0 | 3 | cnContact, tel |
| Freya Ballard | 认识,但未判为亲近 | 207 | 105 / 102 | — | 2025-10-06 → 2026-05-07 | 4 / 0 | 2 | 1 / 0 | 8 | cnContact, tel |
| Nikhil Sundaram | 认识,但未判为亲近 | 117 | 59 / 58 | — | 2025-10-28 → 2026-06-13 | 1 / 0 | 2 | 1 / 1 | 4 | cnContact, tel |
| Marta Bielik | 认识,但未判为亲近 | 235 | 119 / 116 | — | 2025-11-06 → 2026-04-16 | 0 / 0 | 2 | 1 / 1 | 2 | cnContact, tel |
| Owen Trevelyan | 认识,但未判为亲近 | 79 | 40 / 39 | — | 2025-12-26 → 2026-07-19 | 6 / 0 | 2 | 1 / 0 | 1 | cnContact, tel |
| Ida Sorensen | 认识,但未判为亲近 | 194 | 98 / 96 | — | 2025-12-26 → 2026-05-14 | 1 / 0 | 1 | 1 / 1 | 5 | cnContact, tel |
| Rafael Pinto | 认识,但未判为亲近 | 188 | 95 / 93 | — | 2025-11-19 → 2026-07-14 | 0 / 0 | 1 | 1 / 1 | 6 | cnContact, tel |
| Noor Haddad | 认识,但未判为亲近 | 156 | 79 / 77 | — | 2025-12-24 → 2026-01-15 | 2 / 0 | 1 | 1 / 0 | 7 | cnContact, tel |
| Callum Ferris | 认识,但未判为亲近 | 179 | 91 / 88 | — | 2025-12-02 → 2026-05-22 | 5 / 0 | 1 | 1 / 0 | 9 | cnContact, tel |
| Ingrid Saetre | 认识,但未判为亲近 | 129 | 65 / 64 | — | 2025-10-27 → 2026-07-10 | 6 / 0 | 1 | 1 / 0 | 1 | cnContact, tel |
| Hugo Marchetti | 认识,但未判为亲近 | 101 | 51 / 50 | — | 2025-10-28 → 2026-05-26 | 5 / 0 | 1 | 1 / 1 | 3 | cnContact, tel |
| Alma Vicente | 认识,但未判为亲近 | 146 | 74 / 72 | — | 2025-10-06 → 2026-04-19 | 4 / 0 | 1 | 1 / 1 | 3 | cnContact, tel |
| Ben Osei | 认识,但未判为亲近 | 212 | 108 / 104 | — | 2025-10-24 → 2026-08-21 | 3 / 0 | 0 | 1 / 0 | 9 | cnContact, tel |
| Sofia Almeida | 认识,但未判为亲近 | 48 | 24 / 24 | — | 2025-10-08 → 2026-04-17 | 6 / 0 | 2 | 1 / 0 | 7 | cnContact, tel |
| Lars Ekdahl | 认识,但未判为亲近 | 222 | 113 / 109 | — | 2025-10-17 → 2026-03-16 | 6 / 0 | 2 | 1 / 1 | 2 | cnContact, tel |
| Mina Farouk | 认识,但未判为亲近 | 92 | 46 / 46 | — | 2025-10-20 → 2026-09-07 | 5 / 0 | 1 | 1 / 1 | 4 | cnContact, tel |
| Jasper Whitlow | 认识,但未判为亲近 | 35 | 17 / 18 | — | 2025-10-21 → 2026-04-28 | 5 / 0 | 2 | 1 / 0 | 6 | cnContact, tel |
| Elena Costa | 认识,但未判为亲近 | 160 | 81 / 79 | — | 2025-11-05 → 2026-09-15 | 6 / 0 | 2 | 1 / 1 | 5 | cnContact, tel |
| Andrei Pavel | 认识,但未判为亲近 | 154 | 78 / 76 | — | 2025-12-05 → 2026-06-04 | 6 / 0 | 1 | 1 / 1 | 3 | cnContact, tel |
| Tess Rowntree | 认识,但未判为亲近 | 199 | 101 / 98 | — | 2025-11-11 → 2026-06-28 | 0 / 0 | 0 | 1 / 1 | 3 | cnContact, tel |
| Karim Belkacem | 认识,但未判为亲近 | 68 | 34 / 34 | — | 2025-12-13 → 2026-03-06 | 3 / 0 | 2 | 1 / 0 | 8 | cnContact, tel |
| Verity Shaw | 认识,但未判为亲近 | 88 | 44 / 44 | — | 2025-11-06 → 2026-01-02 | 3 / 0 | 1 | 1 / 1 | 8 | cnContact, tel |
| Nils Ahlberg | 认识,但未判为亲近 | 236 | 120 / 116 | — | 2025-12-20 → 2026-02-22 | 6 / 0 | 0 | 1 / 1 | 9 | cnContact, tel |
| Leo Smith | 家人(打分)· 儿子 · 0.5006/9 项信号一致 | 11 | 5 / 6 | — | 2025-11-11 → 2026-06-26 | 2 / 0 | 1 | 1 / 1 | 5 | cnContact, faFamilyCircle, phPerson, tel |
| Otto Freeman | 认识,但未判为亲近 | 52 | 26 / 26 | — | 2025-10-14 → 2026-08-01 | 1 / 0 | 2 | 1 / 0 | 1 | cnContact, tel |
| Amara Diallo | 认识,但未判为亲近 | 136 | 69 / 67 | — | 2025-12-06 → 2026-02-15 | 2 / 0 | 1 | 1 / 1 | 5 | cnContact, tel |
| Gil Rosenthal | 认识,但未判为亲近 | 185 | 94 / 91 | — | 2025-12-14 → 2026-08-02 | 2 / 0 | 2 | 1 / 1 | 6 | cnContact, tel |
| Fenna de Vries | 认识,但未判为亲近 | 116 | 59 / 57 | — | 2025-10-17 → 2026-07-01 | 4 / 0 | 1 | 1 / 0 | 8 | cnContact, tel |
| Rory Macallan | 认识,但未判为亲近 | 172 | 87 / 85 | — | 2025-12-24 → 2026-02-09 | 4 / 0 | 1 | 1 / 0 | 5 | cnContact, tel |
| Sanne Bakker | 认识,但未判为亲近 | 36 | 18 / 18 | — | 2025-11-13 → 2026-04-08 | 2 / 0 | 2 | 1 / 0 | 3 | cnContact, tel |
| Luca Ferretti | 认识,但未判为亲近 | 174 | 88 / 86 | — | 2025-12-18 → 2026-01-12 | 1 / 0 | 2 | 1 / 1 | 1 | cnContact, tel |
| Esme Carrington | 认识,但未判为亲近 | 136 | 69 / 67 | — | 2025-10-12 → 2026-02-27 | 6 / 0 | 1 | 1 / 0 | 1 | cnContact, tel |
| Yusuf Demir | 认识,但未判为亲近 | 118 | 60 / 58 | — | 2025-12-21 → 2026-04-19 | 5 / 0 | 1 | 1 / 1 | 9 | cnContact, tel |
| Britt Halvorsen | 认识,但未判为亲近 | 106 | 54 / 52 | — | 2025-12-16 → 2026-06-13 | 2 / 0 | 2 | 1 / 0 | 2 | cnContact, tel |
| Nora Vasquez | 认识,但未判为亲近 | 211 | 107 / 104 | — | 2025-11-02 → 2026-03-04 | 3 / 0 | 2 | 1 / 0 | 1 | cnContact, tel |
| Emil Krahn | 认识,但未判为亲近 | 16 | 8 / 8 | — | 2025-12-24 → 2026-04-16 | 4 / 0 | 1 | 1 / 1 | 7 | cnContact, tel |
| Dahlia Mensah | 认识,但未判为亲近 | 141 | 71 / 70 | — | 2025-10-06 → 2026-03-15 | 5 / 0 | 1 | 1 / 1 | 5 | cnContact, tel |
| Ward Pelletier | 认识,但未判为亲近 | 49 | 24 / 25 | — | 2025-10-21 → 2026-07-16 | 4 / 0 | 2 | 1 / 1 | 7 | cnContact, tel |
| Sunniva Aas | 认识,但未判为亲近 | 112 | 57 / 55 | — | 2025-12-25 → 2026-01-19 | 3 / 0 | 0 | 1 / 0 | 9 | cnContact, tel |
| Joon Park | 认识,但未判为亲近 | 42 | 21 / 21 | — | 2025-11-19 → 2026-04-12 | 4 / 0 | 0 | 1 / 1 | 1 | cnContact, tel |
| Cleo Maddox | 认识,但未判为亲近 | 125 | 63 / 62 | — | 2025-12-17 → 2026-03-02 | 1 / 0 | 0 | 1 / 1 | 6 | cnContact, tel |
| Hana Petrova | 认识,但未判为亲近 | 49 | 24 / 25 | — | 2025-10-24 → 2026-04-21 | 5 / 0 | 1 | 1 / 1 | 2 | cnContact, tel |
| Bram Jansen | 认识,但未判为亲近 | 169 | 86 / 83 | — | 2025-10-08 → 2026-03-15 | 1 / 0 | 2 | 1 / 0 | 4 | cnContact, tel |
| Tiernan Walsh | 认识,但未判为亲近 | 231 | 117 / 114 | — | 2025-10-22 → 2026-01-18 | 1 / 0 | 0 | 1 / 0 | 8 | cnContact, tel |
| Zofia Mazur | 认识,但未判为亲近 | 166 | 84 / 82 | — | 2025-11-22 → 2026-07-09 | 4 / 0 | 2 | 1 / 0 | 8 | cnContact, tel |
| (unnamed) | 认识,但未判为亲近 | 203 | 103 / 100 | — | 2025-10-07 → 2026-07-27 | 4 / 0 | 2 | 1 / 0 | 2 | tel |
| (unnamed) | 认识,但未判为亲近 | 128 | 65 / 63 | — | 2025-11-27 → 2026-05-21 | 2 / 0 | 1 | 1 / 0 | 6 | tel |
| (unnamed) | 认识,但未判为亲近 | 18 | 9 / 9 | — | 2025-11-27 → 2026-01-28 | 3 / 0 | 2 | 1 / 0 | 1 | tel |
点一个节点,图下面就是这个人在库里存着的记录(是行本身,不是摘要)。那 61 个淡色的节点是最出人意料的部分:库知道、但还没安置好的人——他们之所以在里面,只因为给你写过一次消息,或者出现在别人的邀请名单上。
更重要的一点是:这不只是关于你(这台 Mac 的使用者)。你周围的人也在里面:你的家人、你的朋友、"任何"通过你的设备和你聊过的人。没有人被问过,而库把他们连到你,也通过他们共享的事件和群组,把他们彼此连起来。一段关系是比它推导所依据的那些行高一级的情报。 比如,交叉比对过我自己的库,我(好吧,是一个替我干活的模型)可以轻松推出下面这些:
- 家里有个孩子,以及大致年龄。 家庭成员类型和一个家庭圈给出了这个家庭;记分卡的孩子、儿子/女儿列给出了孩子在这个家里的位置。旁边还坐着一个年龄,从家人共享拷贝而来;库里有些出生日期会带着系统自己的"推算"标记,虽然我们不清楚系统所谓推算具体指什么。
- 孩子上的是哪家托儿所,以及能打进去的两个号码。 从联系人卡片拷贝。注意缺的东西:日历里没有"送孩子上学"的事件,所以库握着机构和电话,却没有孩子被送去的那个钟点。这仍然够你用一个他手机本来就信任的号码打过去。
- 这家人这几天几点到几点会在哪。 一个日历事件、一个地点、两个存储的时间槽,以及一个写着家庭名字的标题(所以即使参与人行是空的,名单也在那串字里)。
- 家里谁会到场。 记分卡点出被判定为家人的人,一个"家庭"实体把他们绑在一起,一个家人共享圈说明他们中哪些在同一个家庭组里。
- 以及,在同一个文件里,这台机器上装了什么——细到密码管理器。
很容易看出,如果这个隐私的单点故障落到错的人手里,它可以怎样被武器化。我们在第二篇里把这个(假设的)场景演了一遍。好消息是,这些知识本来应该留在你的机器上,由完全磁盘访问权限保护;尽管它可以被其他服务消费(但我们并不完全清楚哪些、以何种方式能访问)。
现实是,这个库里的信息量确实非同寻常:每次我们深挖守护进程推断什么、怎么推断,都会打开几条新的调查线。任何你不想让人知道的事——关于你或你的家人——很可能就在里面某处,而我们认为你有权知道它在不在。你实际得到的是:没有文档、没有办法检视这个库、也没有通用的办法去纠正一个错误的推断。
所以我们给你两样工具。第一是 iKnow,一个本地看板,浏览你自己的图,什么都不离开你的 Mac(下一节带你看一遍)。第二是给想深挖的人:iKnow 仓库里带一份写给你自己的智能体的手册,告诉它数据库在哪、怎么读,让它去找你想找的东西。(请指向自托管的模型,不要用云端的。)
五、iKnow
iKnow 是一个用 Python 标准库实现的网页看板;没有 npm,没有 CDN。
它被设计成直接跑在你的 Mac 上、也就是数据库所在的地方。运行时它绑定 127.0.0.1,在文件系统中定位这些数据库(需要相应权限),以只读方式打开,边查边收集信息,最后呈现成一个看板。不写任何东西,不记任何日志;数据从存储出发、经回环网络、进浏览器标签页;如果你愿意,可以在完全断网的机器上跑。
我们在 macOS 26.6.2 与 26.7.1 上测过,在 27.0.1 上只做了部分测试。
iKnow 有十几个页面。
从这里开始
你的 Mac 知道什么。 落地页:围绕你的人际图。下面依次是照片里的脸、你的家人、你的账号句柄、你的通信对象,以及你接下来会在哪。
它的图和本文开头那张是同一个家庭,只是由工具自己的渲染器画的:

这里没有任何东西是记录里没有的摘要:每个节点都是一行,点开就显示那一行(本文开头那张图也一样)。
图是总览,而总览容易让人耸耸肩。图后面的页面则不会。
社交图。 库通过共享的会议、群聊和一个亲密度分数,把谁连到谁。每个圈可以展开到它的成员,以及它背后的证据。
它推断出了什么
亲属记分卡。 守护进程推断出的家庭绑定。
落地页上的卡片只保留了它点名的人:

对分数来说这话成立;但作为分数输入的东西,有些确实是你录入的(联系人卡片上的关系、紧急联系人、家人共享)。母亲、父亲、女儿都是 0.960——这是这些列能到的最高值;哥哥、儿子、姐姐是 0.500。
下面那部分是我觉得最难辩驳的。九项独立检查(伴侣列、综合分数、家庭群组实体、家人共享令牌、iCloud 家人标记、十二个月最频繁联系人、照片人脸聚类、通讯录记录、可达的账号句柄),卡片数的是有多少项落到同一个人身上。母亲 8/9;父亲 7,还有伴侣 Priya Sandoval 也是 7——而她不在上面那张名单里:iKnow 列的是"会归并进另一列"的关系(母亲与父亲归并进"父母"),而"伴侣"不归并进任何列。即便如此,连线还是找到了伴侣。
卡片只是一张表的摘要,iKnow 也把整张表画了出来:

这两张截图里的分数是编的,而且比真实情况宽松。在我们拆解的那台 Mac 上,只有"母亲"到了最高档;其他被它打了分的人,只是在每一个家庭标签上同时得到一票小分,父亲和哥哥一模一样。这套样例保留的是这张表的"粒度":它只会写少数几个值(0.125、0.25、0.5、0.96),大多数人停在某个默认值上。
人脸索引。 照片里每个人都有一个人脸聚类。
它的共现图没有用到任何一条通讯录、消息或日历记录,只由你的照片构成:

每个节点戴着它聚类的主脸,从照片库读出,并被 iKnow 自己的"共享屏幕"开关模糊掉。模糊之下没有人:样例没有照片库,每一张脸都是为它画出来的合成肖像。
这正是这一页自己要说的:图指向了这些人脸聚类,却几乎叫不出其中任何一个的名字(在样例里是 29 个中的 3 个)。它不需要。谁站在谁旁边、多频繁、哪些群体从不碰面——一个字的名字都不用,全都在那里;而任何了解这个家庭的人,一秒钟就能把名字贴回去。
猜的还是给的。 你录入的东西和 Mac 自己算出来的东西,住在同一张表里。把它们分开的只有一个置信度。
它记录了什么
一年的联系。 你和谁说过话、什么时候说的,以及一个字的消息内容都没有(它也不需要任何内容就能知道你在睡觉)。
落地页上这张卡片最容易引起反应,而它里面一点推断都没有:

这里面没有内容是内容。全是元数据,而它足够了。
最后一行值得读两遍:它能读作"睡眠"的那些小时。
iKnow 把这条线也画了出来,同一份日志折叠到一周:

这就是这个库的普遍形状:里面几乎没有什么是"必须被采集"的,因为几乎一切都只是某件被采集的事的后果。
日历。 唯一知道你会去哪的那一层:几点、哪个房间、谁参加、拨入号码是多少。
你撤回过的。 撤回一条事实并不会删除它。行搬进一张过期表,保留置信度与来源。
机器部分
存储。 文件本身:它建模了什么,以及两行真实数据展开后能牵出的一切。
设备指纹。 Mac 上装的每个应用都明文写在里面,旁边还有一个 token——它是那个应用标识的无盐 SHA-256,所以这一页在你的浏览器里把它重算一遍,你可以亲眼看着它对上。
还有谁在读它。 图是第一份拷贝,不是唯一一份。这一页画出订阅它的那些视图、它们发布到的数据库、重复同样事实的那些表、从与 Mac 配对的硬件进来的流,以及已经搭好但还没跑起来的机器。
关于 macOS 27 的说明。 macOS 27 于 2026 年 9 月 14 日发布。升级到 27.0.1 之后,图撤回了大部分从通讯录、日历、Siri 建议、家人共享和应用目录建起来的行,并在随后一天里重建。iKnow 的一些页面在 macOS 27 上可能还不能完整工作。
六、继续深挖
这是「棋局」系列的第二篇。第一篇是本文,第二篇是《把个性化武器化:从知识图谱到敲诈》。
引用格式(BibTeX):
@misc{8rank:apple-intelligence-personal-knowledge-graph,
author = {Dario Pasquini and Micha{\l} Bazyli},
title = {{Anatomy of Apple's Personal Knowledge Graph}},
year = {2026},
month = oct,
howpublished = {\url{https://8rank.ai/game/apple-intelligence-personal-knowledge-graph}},
}
我们的整理
原文是一篇取证式拆解,读的时候容易陷进 181 个类别里。抽出来其实是四件事:
| 你以为的 | 实际的 |
|---|---|
| 关系图靠你填 | 你填的只是输入之一。九项检查里,"伴侣"这一列根本不归并进任何名单,但连线还是找到了伴侣(7/9) |
| 删掉就没了 | 行搬进 expired_stable_graph,置信度与来源都留着;作者在自己 Mac 上还能读到很旧的记录,而记分卡仍给前一天被丢弃的两个人打分 |
| 元数据不算隐私 | 一年里谁在几点和你联系过,就足以推出"从 1 点到 7 点最安静"=睡眠时段。原文那句"没有一个字的消息内容"后面紧跟的正是这条 |
| 名字最关键 | 人脸索引在一个名字都没有的情况下已经分出"家人一团、工作一组、从不碰面"。作者只在 29 个聚类里叫出 3 个名字 |
三条可以自己动手验证的判据:
- 先问"能不能查询"。
~/Library/IntelligencePlatform下 51 个明文 SQLite,受 TCC 完全磁盘访问保护——也就是说,任何拿到这个权限的进程都能读,而且读的时候不需要解密。 - 再看"谁能读到"。原文里"还有谁在读它"那一页列了订阅方、发布到的库、重复同样事实的表,以及从配对硬件进来的流。要判断风险,这一页比 181 个类别有用。
- 最后看"错了能不能改"。原文明确说:没有文档、没有检视手段、没有通用的纠错办法。这条比任何单个字段都重要——一个你改不了的推断,会一直参与后面的推断。
边界:这是一篇安全研究,不是对 Apple 的完整审计。作者自己说采集环境是 macOS 26.6.2,27.0.1 只做了部分测试;三张表里标"未找到机制"的有 75 个类别、93 个谓词,"可能已实现(未验证)"的另有 16 + 24 个——也就是说,词表声明的东西有相当一部分我们并不知道是否真的在用。iKnow 的截图数据是合成的(作者在正文里两次说明),分数比真实情况宽松。这篇文章的价值在于"结构被确认存在",不在于"每个字段都被填满"。
相关阅读
- 你的 Agent 并不自主:你就是它的循环——harness 的"围墙不是指令",与本文"权限才是墙"是同一件事
- 让 AI 读懂博途工程:上下文从哪来——工业现场侧的同一类问题:图的边界比模型能力更决定结果
- 你的博客读者已经不是人:llms.txt 和 .md 才是它的入口——机器读者时代的入口问题
来源
8rank.ai,Dario Pasquini 与 Michał Bazyli,《Anatomy of Apple's Personal Knowledge Graph》,2026-10-28:https://8rank.ai/game/apple-intelligence-personal-knowledge-graph。正文 6 张截图与原文一致(原文以内嵌数据形式承载,已转存站内);三张本体表按原文逐行翻译,id 与标签保留 Apple 原文。
本文由 汇智网 · Software 2.0 编译整理,转载请注明出处。
这是「AI 基建 / 评测 / 安全」专题的一部分。完整地图见:AI 基建 / 评测 / 安全完全指南