Apple 个人知识图谱:连"谁是你妈"都是算出来的

51 个明文数据库、181 类实体、144 个特征:每台 Mac 都在算"谁是你妈"。删掉的联系人还在过期表里,评分仍在。

分享
Apple 个人知识图谱:连"谁是你妈"都是算出来的

2022 年起(macOS 13),每一台 Mac 都带着两个守护进程,它们活着的唯一目的就是建一张图:你是谁、你认识谁、这些人和你以及彼此是什么关系、你怎么和他们联系、你去哪、和谁、做什么、什么时候。

这张图在设备本地建,靠交叉比对机器上几乎所有东西:通讯录、日历、照片、信息、邮件、位置、屏幕使用时间,以及一长串行为信号。更重要的是,它被保存成一个可查询的存储,供大模型检索(据称如此)。

听起来像阴谋论,但它确实在发生,而且关于这套机制在你的 Mac 上怎么运作,公开文档少得可怜。最接近官方描述的只有 man page(man 8 knowledgeconstructiond),得到的全部内容就是:

NAME knowledgeconstructiond —— 一个分析设备内容、建立通用知识图谱的守护进程。

DESCRIPTION knowledgeconstructiond 分析本设备上的内容,帮助建立一张代表设备与用户的知识图谱。它与 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 知道什么。 落地页:围绕你的人际图。下面依次是照片里的脸、你的家人、你的账号句柄、你的通信对象,以及你接下来会在哪。

它的图和本文开头那张是同一个家庭,只是由工具自己的渲染器画的:

第一屏。(Me) 标记的白色节点是这台 Mac 的主人;其余是库与它相连的人、雇主和群聊,颜色表示库对每个节点的判定。橙色是按分数算出的家人,蓝色是超过阈值的亲密度分数,边缘淡色的名字是库知道但尚未安置的人。

这里没有任何东西是记录里没有的摘要:每个节点都是一行,点开就显示那一行(本文开头那张图也一样)。

图是总览,而总览容易让人耸耸肩。图后面的页面则不会。

社交图。 库通过共享的会议、群聊和一个亲密度分数,把谁连到谁。每个圈可以展开到它的成员,以及它背后的证据。

它推断出了什么

亲属记分卡。 守护进程推断出的家庭绑定。

落地页上的卡片只保留了它点名的人:

六个人、六种关系,副标题说这些没有一个是被手动录入的。

对分数来说这话成立;但作为分数输入的东西,有些确实是你录入的(联系人卡片上的关系、紧急联系人、家人共享)。母亲、父亲、女儿都是 0.960——这是这些列能到的最高值;哥哥、儿子、姐姐是 0.500。

下面那部分是我觉得最难辩驳的。九项独立检查(伴侣列、综合分数、家庭群组实体、家人共享令牌、iCloud 家人标记、十二个月最频繁联系人、照片人脸聚类、通讯录记录、可达的账号句柄),卡片数的是有多少项落到同一个人身上。母亲 8/9;父亲 7,还有伴侣 Priya Sandoval 也是 7——而她不在上面那张名单里:iKnow 列的是"会归并进另一列"的关系(母亲与父亲归并进"父母"),而"伴侣"不归并进任何列。即便如此,连线还是找到了伴侣。

卡片只是一张表的摘要,iKnow 也把整张表画了出来:

按 familyAndFriends(最宽的那个分数)排序。顶部七个人各自点亮了自己那一列以及归并进的列(母亲/父亲→父母,姐妹/兄弟→兄弟姐妹,儿子/女儿→子女),伴侣同时是同事。再往下是朋友和其余同事。他们之下几乎所有人都是同样两个格子:family 上一个重复值、familyAndFriends 上一个重复值——这是分类器"没什么可说"时写下的。有两列(alumni 与 unknown)从未被用到。

这两张截图里的分数是编的,而且比真实情况宽松。在我们拆解的那台 Mac 上,只有"母亲"到了最高档;其他被它打了分的人,只是在每一个家庭标签上同时得到一票小分,父亲和哥哥一模一样。这套样例保留的是这张表的"粒度":它只会写少数几个值(0.125、0.25、0.5、0.96),大多数人停在某个默认值上。

人脸索引。 照片里每个人都有一个人脸聚类。

它的共现图没有用到任何一条通讯录、消息或日历记录,只由你的照片构成:

两张脸出现在同一张照片里就连一条线,这是唯一的输入:1,643 张"包含两张以上人脸"的照片里,聚出 8,904 张脸。标签是每个聚类本地标识的片段,因为没有名字可显示。主人是枢纽。左边那一团是家人,右下那一组是工作,两者从不同框。

每个节点戴着它聚类的主脸,从照片库读出,并被 iKnow 自己的"共享屏幕"开关模糊掉。模糊之下没有人:样例没有照片库,每一张脸都是为它画出来的合成肖像。

这正是这一页自己要说的:图指向了这些人脸聚类,却几乎叫不出其中任何一个的名字(在样例里是 29 个中的 3 个)。它不需要。谁站在谁旁边、多频繁、哪些群体从不碰面——一个字的名字都不用,全都在那里;而任何了解这个家庭的人,一秒钟就能把名字贴回去。

猜的还是给的。 你录入的东西和 Mac 自己算出来的东西,住在同一张表里。把它们分开的只有一个置信度。

它记录了什么

一年的联系。 你和谁说过话、什么时候说的,以及一个字的消息内容都没有(它也不需要任何内容就能知道你在睡觉)。

落地页上这张卡片最容易引起反应,而它里面一点推断都没有:

一年的联系:按人拆开、分进和出、带通话次数与最后出现日期,横跨五个消息应用——而且正如副标题所说,没有一个字的消息内容。

这里面没有内容是内容。全是元数据,而它足够了。

最后一行值得读两遍:它能读作"睡眠"的那些小时。

iKnow 把这条线也画了出来,同一份日志折叠到一周:

每个格子统计一年里某个工作日某个小时内的消息与通话。工作周在里面,晚上和周末的懒觉也在里面;从 1 点到 7 点那条淡带,每晚都在。没有人存过睡眠时间表,最安静的六个小时是从时间戳里免费掉出来的。

这就是这个库的普遍形状:里面几乎没有什么是"必须被采集"的,因为几乎一切都只是某件被采集的事的后果。

日历。 唯一知道你会去哪的那一层:几点、哪个房间、谁参加、拨入号码是多少。

你撤回过的。 撤回一条事实并不会删除它。行搬进一张过期表,保留置信度与来源。

机器部分

存储。 文件本身:它建模了什么,以及两行真实数据展开后能牵出的一切。

设备指纹。 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 个名字

三条可以自己动手验证的判据:

  1. 先问"能不能查询"。~/Library/IntelligencePlatform 下 51 个明文 SQLite,受 TCC 完全磁盘访问保护——也就是说,任何拿到这个权限的进程都能读,而且读的时候不需要解密。
  2. 再看"谁能读到"。原文里"还有谁在读它"那一页列了订阅方、发布到的库、重复同样事实的表,以及从配对硬件进来的流。要判断风险,这一页比 181 个类别有用。
  3. 最后看"错了能不能改"。原文明确说:没有文档、没有检视手段、没有通用的纠错办法。这条比任何单个字段都重要——一个你改不了的推断,会一直参与后面的推断。

边界:这是一篇安全研究,不是对 Apple 的完整审计。作者自己说采集环境是 macOS 26.6.2,27.0.1 只做了部分测试;三张表里标"未找到机制"的有 75 个类别、93 个谓词,"可能已实现(未验证)"的另有 16 + 24 个——也就是说,词表声明的东西有相当一部分我们并不知道是否真的在用。iKnow 的截图数据是合成的(作者在正文里两次说明),分数比真实情况宽松。这篇文章的价值在于"结构被确认存在",不在于"每个字段都被填满"。

相关阅读

来源

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 基建 / 评测 / 安全完全指南