你会不会有这种感觉:
今天的 AI 已经越来越像一个助理了。它会记住你喜欢什么语气,知道你常用什么格式,甚至能接上你之前聊过的话题。
但它总有一种很奇怪的陌生感。
你明明上周花了三个小时对比云服务商,它不知道。你最近每天晚上都在学 Rust,它不知道。你两周前换了工作,它也不知道。
除非你停下来,对着一个聊天框,把自己的生活重新讲一遍。
这件事听起来有点荒诞。我们每天真正发生的数字生活,明明不在聊天框里,而是在浏览器里:搜索、比较、下单、读文档、改代码、看 PR、订机票、查资料、打开一个又一个网页。
可是现在大多数 AI 记住的,仍然只是你说过什么。
不是你做过什么。
真正个人化的 AI,不应该只是更会聊天,而应该更懂你是谁。
我们想做的,就是这样一套记忆系统。它不是让你填写一个冗长的个人资料,也不是要求你每天向 AI 汇报生活,而是让 AI 生活在浏览器这个现场里,观察你真实的行为,慢慢形成一个关于你的、持续更新的理解。
听起来很简单。
但真正做起来,我们很快发现,最难的地方不是记住。
是理解。
如果只是记录浏览器发生了什么,其实这件事不复杂。
点了哪里,输入了什么,打开了哪个页面,停留了多久,这些都可以被捕捉下来。问题是,这些东西本身没有意义。
一个坐标上的点击,不等于一个意图;一次滚动,不代表一次阅读;三个网页,也可能不是三件事,而是同一个目标的三个不同维度。
比如你打开 Amazon,搜索笔记本电脑,又打开两个评测网站,最后去 YouTube 看一段开箱视频。普通日志会把它记成四次访问。
但对人来说,这其实是一件事:
「你在研究要不要买一台新电脑」
所以这套系统的第一层,不是记录事件,而是把事件变成人能理解的行为。
我们在每个打开的标签页里运行一个观察器。它会看点击、输入、滚动、页面变化,但它不会把所有 DOM 事件都塞进记忆系统。因为那样只会得到一堆噪音。
它只关心真正有意义的互动:按钮、链接、表单、搜索框、商品卡片。它会通过可访问性信息和页面结构,把「点击了坐标 412,307」翻译成「点击了商品页上的加入购物车按钮」。
这一步非常关键。
因为从这一刻开始,机器记录的就不再是冰冷的事件,而是更接近人的行为。
但行为还不够。
「点击筛选器」、「输入搜索词」、「向下滚动」,这些依然只是碎片。就像你在剪辑软件里看到一堆素材,它们确实都拍到了东西,但还没有成为一部片子。
所以第二步,是总结。
系统会把一个标签页里的语义事件和截图一起交给模型,让它维护一份不断更新的页面摘要。它不会说「用户点击了 7 次,滚动了 3 次」,而是说:
用户正在 Amazon 上比较笔记本价格,重点看 MacBook Air 和 ThinkPad X1,目前已经把 MacBook Air 加入购物车。
这就完全不一样了。
前者是监控记录,后者是人的上下文。
但我们还要再往上一层。
因为一个人不会只在一个标签页里完成一件事。真实的浏览行为更像一条河流,有分叉,有汇合,有时候你开了十几个标签页,其实都是为了同一个意图。
于是系统会把这些标签页摘要进一步组织成「浏览意图」。
它会判断一个新的页面摘要属于三种情况:
| 动作 | 含义 |
|---|---|
| Merge | 这只是已有活动的继续 |
| Add activity | 这是服务于同一个意图的新活动 |
| New intent | 这是一个全新的意图 |
你看,这里真正记录下来的,已经不是网页了。
而是意图。
访问三个评测网站,不再是三个孤立的访问记录,而是「研究新笔记本」这个意图下面的三个证据。这个结构开始接近我们理解自己生活的方式:我不是打开了很多网页,我是在完成一件事。
浏览器里有很多信息,但不是所有信息都应该进入个人记忆。
你看到一篇新闻,不代表新闻里的公司属于你。你打开朋友的 LinkedIn,也不代表朋友的工作经历是你的经历。一个记忆系统如果分不清「我」和「我看到的东西」,它就会很快变得危险。
所以在意图分类的过程中,系统还会顺手判断:这个页面里有没有关于当前用户本人的信息。
如果有,它才会触发下一步提取。
这一步会用视觉模型查看截图和页面上下文,把其中确实属于用户的事实提取出来:名字、工作、使用的工具、关注的项目、正在学习的东西。每条事实都会带上类别、置信度和来源。
而且这里有一个原则:
宁可少提,不要乱提。
低置信度的事实会被丢掉。属于别人的信息不会被当成你的信息。重新访问同一个网站时,系统会用新的证据替换旧的结果,而不是把可能互相矛盾的内容越堆越多。
到这里,我们得到了一本还不错的手账。
它知道你做过什么,知道哪些事实可能属于你,也知道这些事实来自哪里。
但手账不是理解。
200 条观察记录,不等于一个人。
真正的问题来了:这些事实放在一起,到底说明了什么?
我们后来用一个以用户为中心的知识图谱来解决这个问题,叫 Memory Graph。
它的核心想法很朴素:人不是由一堆关键词组成的,而是由关系组成的。
你和某个工具的关系,你和某个领域的关系,你和某个人的关系,你和某个目标的关系,这些关系加在一起,才逐渐构成了「你」。
「Python」只是一个词。
但「你工作中使用 Python」、「你最近在研究 Python 的异步能力」、「你正在学习 Python 类型系统」,这是三种完全不同的关系。
同一个实体,因为和你的关系不同,意义就完全不同。
所以我们把图谱设计成四层:
| 层级 | 内容 | 作用 |
|---|---|---|
| 0 | Self | 用户本人,图谱中心 |
| 1 | Themes | 用户和世界万物发生关系的方式 |
| 2 | Entities | 工具、话题、人物、网站、产品、技能 |
| 3 | Intents | 按时间排列的浏览目标 |
最关键的是第二层: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,还是在研究它的类型系统。
但图谱检索也有弱点。你问「我上周二晚上在干什么」,这里可能没有任何明确实体,它就很难命中。
所以最后的方案是两条路一起走。
一条路做语义搜索,理解问题本身。另一条路走图谱,理解这个问题对你意味着什么。然后用排序融合把两边结果合在一起。
语义负责「这句话在问什么」。
图谱负责「这句话对这个人意味着什么」。
两者合在一起,记忆才真正可用。
到这里,这套系统已经可以从浏览行为中看到很多东西:你关注什么,你使用什么,你正在学什么,你和哪些项目、工具、网站发生关系。
但还有一个更难的问题。
它知道你在研究笔记本电脑。
但它还不知道为什么。
你可能是要给自己换一台工作电脑,可能是给家人买礼物,也可能只是随便看看。行为相同,动机完全不同。而动机,才是更深一层的个人理解。
这是下一步。
从记录行为,到理解关系;从理解关系,再到理解动机。每一步都更难,也更接近真正的「认识一个人」。
我们现在做的 Memory Graph,本质上还是一个假设:一个以用户为中心、带证据、能解决冲突、会随时间衰减的图谱,可能是 Agent Memroy 架构中一条值得探索的路线。
它一定还会变化。
因为人本身就在变化。
也许很多年以后,我们回头看今天设计的 Agent Memroy 架构,会觉得它还很粗糙。就像早期相机只能留下模糊的黑白影像,但那依然是人类第一次认真地尝试,把时间停在一张纸上。
今天我们尝试停住的,不只是网页、点击和截图。
而是一个人在数字世界里走过的痕迹。
他为什么停留。
为什么搜索。
为什么比较。
为什么在深夜打开一篇文档。
为什么一次又一次回到同一个问题前面。
这些痕迹看起来很小。
但人就是由这些很小的选择组成的。
如果 AI 真的要成为陪伴我们的东西,它最终要学会的,可能不是更快地回答问题,而是在漫长的时间里,带着证据、带着边界、带着尊重,慢慢理解我们如何成为了现在的自己。