我爸记得那件事。他只是不总记得那件事是从哪来的,也不记得自己还需要对它做什么。

一笔物业费。一份空调报价。一份别人发来的PDF报价单。一份埋在家庭WhatsApp聊天记录某处的文件。信息是存在的,找不回来才是问题。

打开网易新闻 查看精彩图片

所以我给他做了FollowUp。它把埋起来的对话,变成你真正需要去处理的事情。

答案必须能追溯到源头

FollowUp是一个隐私优先的AI记忆助手,把散落的消息、笔记、文档和截图,变成你可以直接提问的东西。

但它不是只给你一个答案。它会把答案背后的来源一起摆出来。

如果FollowUp告诉你,物业维护费是₹4,800,到期日是10月7日,你可以打开这条结果,看到答案来自哪条原始消息、谁发的、发在哪个群、哪一天发的。

这让结果变得可追溯,而不是又一个AI回复。

最有意思的部分是"我忘了什么"

它不需要我爸先想清楚该问什么问题。FollowUp会翻遍已导入的记忆,找出那些看起来需要行动的内容,把埋着的消息变成一张张行动卡片:

  • 物业维护费
  • ₹4,800
  • 2026年10月7日前支付

点一下卡片,FollowUp就打开让它出现的原始消息。找到那件事,理解它为什么重要,核实它从哪来。

公开演示用的是合成记忆,而不是上传我爸的私人对话。演示围绕真实问题搭建,而不是一个通用聊天机器人的流程。公开部署默认从空的浏览器记忆库开始,演示数据是显式加载的,这样没有任何人的私人历史会进入公开部署。

AI不该是硬装上去的聊天框

这个项目的主要约束很简单:AI不该是一个被螺栓拧到产品上的聊天机器人,它应该是FollowUp运作方式的一部分。

核心架构是一条链路:WhatsApp导出、笔记、文档,经过本地导入、切分、向量与检索,交给本地开源权重模型Gemma,最后输出有依据的答案和来源。

FollowUp同时使用语义检索和词法匹配。语义检索在提问和原始消息用词不同时起作用;词法匹配则保住精确信息。结果在进入答案层之前被合并。

这很重要,因为个人记忆搜索不只是关键词问题。你问"那个空调的事是谁发的",有用的记忆里写的可能是"Voltas空调服务套餐节日优惠价"。语义匹配把这两个想法连起来,词法匹配保护精确细节。

核心的开源权重模型是Gemma 3 270M IT,通过Transformers.js在浏览器端用WASM推理运行。这让私有模式有一条本地推理路径,不需要托管的大模型。模型接收检索到的上下文,并基于这些证据生成答案。

另外还加了一个确定性的有依据答案层,处理支付、发送人、地点、待办事项这类常见记忆任务。常见查询因此更快,同时Gemma仍作为通用语言层保留。

FollowUp刻意保守。检索层提供证据,答案层被要求基于证据作答,而不是编造缺失的细节。如果现有记忆里的信息不够,FollowUp应该说出来。答案生成后,用户可以检查底层记忆。

对一个个人记忆产品来说,比起让助手听起来自信,更在意的是"告诉我你为什么这么想"。

私有模式和辅助模式是两回事

FollowUp还有一个可选的辅助模式,使用Backboard。在这个模式下,检索到的记忆可以发给Backboard,获得托管的RAG协助。

这个模式被刻意和私有模式分开。私有模式的设计是让导入的记忆留在浏览器里,本地运行开源权重模型。辅助模式则是明确选择使用托管协助。

Backboard的记忆同步还加了去重,反复同步同一批导入记忆不会盲目产生重复。

测试用的是一段合成的WhatsApp对话,里面包含这个问题的真实例子。导入成功,主要的自然语言查询返回了预期信息。

重要的测试不是AI模型能不能回答一个问题,而是FollowUp能不能回答这个问题,并让人追溯答案的来源。