返回首页

另一个「我」:当 AI 开始记住我们如何成为自己

你会不会有这种感觉:

今天的 AI 已经越来越像一个助理了。它会记住你喜欢什么语气,知道你常用什么格式,甚至能接上你之前聊过的话题。

但它总有一种很奇怪的陌生感。

你明明上周花了三个小时对比云服务商,它不知道。你最近每天晚上都在学 Rust,它不知道。你两周前换了工作,它也不知道。

除非你停下来,对着一个聊天框,把自己的生活重新讲一遍。

这件事听起来有点荒诞。我们每天真正发生的数字生活,明明不在聊天框里,而是在浏览器里:搜索、比较、下单、读文档、改代码、看 PR、订机票、查资料、打开一个又一个网页。

可是现在大多数 AI 记住的,仍然只是你说过什么。

不是你做过什么。

真正个人化的 AI,不应该只是更会聊天,而应该更懂你是谁。

我们想做的,就是这样一套记忆系统。它不是让你填写一个冗长的个人资料,也不是要求你每天向 AI 汇报生活,而是让 AI 生活在浏览器这个现场里,观察你真实的行为,慢慢形成一个关于你的、持续更新的理解。

听起来很简单。

但真正做起来,我们很快发现,最难的地方不是记住。

是理解。

记住一切很容易,理解一个人很难

如果只是记录浏览器发生了什么,其实这件事不复杂。

点了哪里,输入了什么,打开了哪个页面,停留了多久,这些都可以被捕捉下来。问题是,这些东西本身没有意义。

一个坐标上的点击,不等于一个意图;一次滚动,不代表一次阅读;三个网页,也可能不是三件事,而是同一个目标的三个不同维度。

比如你打开 Amazon,搜索笔记本电脑,又打开两个评测网站,最后去 YouTube 看一段开箱视频。普通日志会把它记成四次访问。

但对人来说,这其实是一件事:

「你在研究要不要买一台新电脑」

所以这套系统的第一层,不是记录事件,而是把事件变成人能理解的行为。

我们在每个打开的标签页里运行一个观察器。它会看点击、输入、滚动、页面变化,但它不会把所有 DOM 事件都塞进记忆系统。因为那样只会得到一堆噪音。

它只关心真正有意义的互动:按钮、链接、表单、搜索框、商品卡片。它会通过可访问性信息和页面结构,把「点击了坐标 412,307」翻译成「点击了商品页上的加入购物车按钮」。

这一步非常关键。

因为从这一刻开始,机器记录的就不再是冰冷的事件,而是更接近人的行为。

从一串动作,到一个正在发生的故事

memory_system_cf20b11265.svg

但行为还不够。

「点击筛选器」、「输入搜索词」、「向下滚动」,这些依然只是碎片。就像你在剪辑软件里看到一堆素材,它们确实都拍到了东西,但还没有成为一部片子。

所以第二步,是总结。

系统会把一个标签页里的语义事件和截图一起交给模型,让它维护一份不断更新的页面摘要。它不会说「用户点击了 7 次,滚动了 3 次」,而是说:

用户正在 Amazon 上比较笔记本价格,重点看 MacBook Air 和 ThinkPad X1,目前已经把 MacBook Air 加入购物车。

这就完全不一样了。

前者是监控记录,后者是人的上下文。

但我们还要再往上一层。

因为一个人不会只在一个标签页里完成一件事。真实的浏览行为更像一条河流,有分叉,有汇合,有时候你开了十几个标签页,其实都是为了同一个意图。

于是系统会把这些标签页摘要进一步组织成「浏览意图」。

它会判断一个新的页面摘要属于三种情况:

动作含义
Merge这只是已有活动的继续
Add activity这是服务于同一个意图的新活动
New intent这是一个全新的意图

你看,这里真正记录下来的,已经不是网页了。

而是意图。

访问三个评测网站,不再是三个孤立的访问记录,而是「研究新笔记本」这个意图下面的三个证据。这个结构开始接近我们理解自己生活的方式:我不是打开了很多网页,我是在完成一件事。

什么时候,记忆开始变成关于「我」的记忆?

浏览器里有很多信息,但不是所有信息都应该进入个人记忆。

你看到一篇新闻,不代表新闻里的公司属于你。你打开朋友的 LinkedIn,也不代表朋友的工作经历是你的经历。一个记忆系统如果分不清「我」和「我看到的东西」,它就会很快变得危险。

所以在意图分类的过程中,系统还会顺手判断:这个页面里有没有关于当前用户本人的信息。

如果有,它才会触发下一步提取。

这一步会用视觉模型查看截图和页面上下文,把其中确实属于用户的事实提取出来:名字、工作、使用的工具、关注的项目、正在学习的东西。每条事实都会带上类别、置信度和来源。

而且这里有一个原则:

宁可少提,不要乱提。

低置信度的事实会被丢掉。属于别人的信息不会被当成你的信息。重新访问同一个网站时,系统会用新的证据替换旧的结果,而不是把可能互相矛盾的内容越堆越多。

到这里,我们得到了一本还不错的手账。

它知道你做过什么,知道哪些事实可能属于你,也知道这些事实来自哪里。

但手账不是理解。

200 条观察记录,不等于一个人。

真正的问题来了:这些事实放在一起,到底说明了什么?

Memory Graph:把碎片连成一个人

我们后来用一个以用户为中心的知识图谱来解决这个问题,叫 Memory Graph。

它的核心想法很朴素:人不是由一堆关键词组成的,而是由关系组成的。

你和某个工具的关系,你和某个领域的关系,你和某个人的关系,你和某个目标的关系,这些关系加在一起,才逐渐构成了「你」。

「Python」只是一个词。

但「你工作中使用 Python」、「你最近在研究 Python 的异步能力」、「你正在学习 Python 类型系统」,这是三种完全不同的关系。

同一个实体,因为和你的关系不同,意义就完全不同。

所以我们把图谱设计成四层:

层级内容作用
0Self用户本人,图谱中心
1Themes用户和世界万物发生关系的方式
2Entities工具、话题、人物、网站、产品、技能
3Intents按时间排列的浏览目标

最关键的是第二层:Themes。

它不是普通分类,而是关系。比如「感兴趣」、「正在学习」、「经常使用」、「工作相关」、「个人信息」、「正在研究」。

这就是索引和理解的区别。

索引会告诉你:Python 出现过。

图谱会告诉你:你在工作中使用 Python,同时也在业余时间学习 Rust,而最近你对云服务商的比较很可能和新项目有关。

这时候,AI 回答你的问题就会完全不一样。它不需要再问「你平时用什么语言」,因为它应该已经知道了。

让图谱长出来,而不是一次性造出来

这个图谱不是一次性生成的。

它像树一样,一点点长出来。

每一批记忆信号,包括浏览意图、提取出的个人事实、用户主动告诉系统的信息,都会被转化成一批「图操作」:创建主题、创建实体、连接边、更新证据。

这听起来有点工程化,但它非常重要。

因为一切进入图谱之前,都先是一个「提案」。

这给系统留下了处理矛盾的机会。

比如系统之前记录你在 Company A 工作,现在又看到你在 Company B 的内部页面上活动。它不能简单地把两个事实都堆进去,然后假装世界没有冲突。

它要判断:

这是同一家公司改名了?
是你换工作了?
是你访问了别人的页面?
还是其中一个证据不可靠?

所以我们把合并过程拆成三层。

第一层,是语义匹配。模型判断新旧实体之间是重复、更新、矛盾,还是无关。

第二层,是用户权威。如果你亲口告诉系统「我现在在 Beta Corp 工作」,那这个事实优先级最高。系统不应该和用户争论「你到底是谁」。

第三层,是证据可信度。如果两边都不是用户直接说的,就比较来源、时间、证据质量,再决定保留哪个,或者合成一个更准确的版本。

这其实很像我们自己理解世界的方式。

人不是看到一个新事实就立刻相信。我们会看来源,会看时间,会看是不是和已有认知冲突。好的记忆系统也应该这样。

忘记,不是缺陷,是功能

一个不会遗忘的记忆系统,最后一定会变得不可用。

这句话听起来有点反直觉。因为我们总觉得记忆越多越好。但如果一个网站你三个月前只打开过一次,它和你每周都打开的工具,显然不应该拥有一样的权重。

所以 Memory Graph 里有一个压缩机制。

每天,系统会归档那些很久没有出现、频率很低的实体,修剪过长的证据链,删除陈旧又很弱的关系。每周,它会保存一次完整图谱快照,让事件日志不至于无限增长。

这不是为了省空间。

这是为了让记忆保持「现在感」。

一个真正懂你的系统,不能只知道你曾经发生过什么,它还要知道什么仍然重要。

「relevance 会衰减、兴趣会改变、工作会变化——人本来就是流动的。」

如果系统一直抓住三个月前的一次搜索不放,那它记住的就不是你,而是你曾经的影子。

从图谱到一篇关于你的文章

图谱很适合机器理解,但不适合人直接阅读。

所以最后一步,是把 Memory Graph 合成为一份用户画像。它不是一堆标签,而是一篇带引用的叙述性文章,像一篇关于你的维基百科。

这份画像会从四个来源取材:原始观察、图谱主题、核心实体、最近活动。然后模型会把它们写成自然语言,并在关键事实后面附上引用。

比如它说:「你目前主要从事软件工程相关工作。」

这句话本身有用,但还不够。

如果它能附上证据,指向某个截图、某个页面、某条用户主动陈述,这件事就从「模型觉得」变成了「有来源的判断」。

这非常重要。

因为没有证据的理解,很容易变成幻觉。

而一个长期陪伴人的 AI,最不能靠幻觉来认识一个人。

用户永远有最后一句话

这套系统还有一个闭环:用户可以随时纠正它。

你可以说:「我现在不在 Acme 工作了,我去了 Beta Corp。」

系统会把这句话变成一条用户声明,加入观察记录,再通过合并器更新图谱。因为用户声明拥有最高权威,旧事实会被替换,画像也会重新生成。

这一步看似简单,但它决定了整个系统的伦理边界。

AI 可以观察,可以推断,可以总结。

但它不能替你定义你是谁。

理解一个人,不是占有解释权,而是持续校准。

记忆很多,怎么在对话时找到最重要的那几条?

还有一个现实问题:记忆系统会越来越大,但模型上下文窗口永远是有限的。

你不可能把整个 Memory Graph 都塞进一次对话里。所以检索就变成了关键。

单纯的向量搜索很聪明,它能理解语义。你问「我上周看的那台电脑」,它可能找到 MacBook 和 ThinkPad 的比较记录,即使你没说出完整关键词。

但它不懂你。

它不知道「我的项目」具体指哪个项目,也不知道「工作相关」在你这里意味着哪个公司、哪套工具、哪类页面。

图谱检索刚好相反。

它懂你,因为它知道实体之间的关系。你搜 Rust,它知道你是在学习 Rust 的异步模型,还是在工作中使用 Rust,还是在研究它的类型系统。

但图谱检索也有弱点。你问「我上周二晚上在干什么」,这里可能没有任何明确实体,它就很难命中。

所以最后的方案是两条路一起走。

一条路做语义搜索,理解问题本身。另一条路走图谱,理解这个问题对你意味着什么。然后用排序融合把两边结果合在一起。

语义负责「这句话在问什么」。

图谱负责「这句话对这个人意味着什么」。

两者合在一起,记忆才真正可用。

下一个问题:AI 能不能理解「为什么」?

到这里,这套系统已经可以从浏览行为中看到很多东西:你关注什么,你使用什么,你正在学什么,你和哪些项目、工具、网站发生关系。

但还有一个更难的问题。

它知道你在研究笔记本电脑。

但它还不知道为什么。

你可能是要给自己换一台工作电脑,可能是给家人买礼物,也可能只是随便看看。行为相同,动机完全不同。而动机,才是更深一层的个人理解。

这是下一步。

从记录行为,到理解关系;从理解关系,再到理解动机。每一步都更难,也更接近真正的「认识一个人」。

我们现在做的 Memory Graph,本质上还是一个假设:一个以用户为中心、带证据、能解决冲突、会随时间衰减的图谱,可能是 Agent Memroy 架构中一条值得探索的路线。

它一定还会变化。

因为人本身就在变化。

也许很多年以后,我们回头看今天设计的 Agent Memroy 架构,会觉得它还很粗糙。就像早期相机只能留下模糊的黑白影像,但那依然是人类第一次认真地尝试,把时间停在一张纸上。

今天我们尝试停住的,不只是网页、点击和截图。

而是一个人在数字世界里走过的痕迹。

他为什么停留。
为什么搜索。
为什么比较。
为什么在深夜打开一篇文档。
为什么一次又一次回到同一个问题前面。

这些痕迹看起来很小。

但人就是由这些很小的选择组成的。

如果 AI 真的要成为陪伴我们的东西,它最终要学会的,可能不是更快地回答问题,而是在漫长的时间里,带着证据、带着边界、带着尊重,慢慢理解我们如何成为了现在的自己。

Penned in quiet contemplation by Wood.