news 2026/5/11 2:11:07

AI也会“失忆”?我们用文件系统给它装了个“无限记忆硬盘”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI也会“失忆”?我们用文件系统给它装了个“无限记忆硬盘”

你有没有过这样的经历?用 AI 帮你整理公司的知识库,搜了几十份文档,聊了快 30 轮,本来想让它帮你把所有性能优化的内容汇总成一份报告,结果聊着聊着,AI 突然告诉你:“抱歉,上下文超限了,我记不住之前的内容了。

更糟的是,有时候它连报错都没有,直接 “失忆”—— 忘了你之前已经改过的文档,把你刚整理好的内容给覆盖了,就像你和朋友吐槽了半小时工作,结果朋友突然抬头问:“你刚才说你要做什么来着?”

那种崩溃,相信很多和 AI 打过长期交道的人都懂。

你有没有过和 AI 聊到一半,它突然 “失忆”?

这其实就是知识库 Agent 最头疼的问题:上下文窗口不够用。

我们做的袍子 AI,是一个长在知识库上的 Agent,用户用它来做知识管理:读文档、搜内容、改文件、写报告,一次任务下来,可能要经历:

  • 几十次文件读取,翻遍整个知识库的目录

  • 大范围的关键词搜索,一次 grep 就能返回几十万字符的结果

  • 批量的文件操作,每一次都有执行输出

  • 30 多轮的对话,越聊内容越多

就算是 200K 的大窗口模型,聊个 15-20 轮,也就快顶到上限了。这背后藏着四个绕不开的矛盾:

  1. 工具输出太能吃了:一次全库搜索的结果,直接就能吃掉半个上下文窗口

  2. 信息要完整,但空间不够:你需要 AI 记住所有的文件列表做决策,但它的脑子装不下这么多

  3. 对话要连续,但压缩会失忆:把旧对话删了,AI 就忘了之前做过什么,容易重复干活

  4. 不同 AI 脑子还不一样大:64K 窗口的小模型和 200K 的大模型,没法用同一套规则

我们的解法:给 AI 加个 “随身储物柜”

null

说白了,就是把信息分成了两层:

  • 「热存储」:上下文窗口,只放你现在正在用的、最常用的内容,保证 AI 能快速拿到

  • 「温存储」:文件系统,所有暂时用不上的大输出、旧对话,都存在这里,一点都不会丢

这样一来,背包永远不会被撑爆,而储物柜里的东西,你什么时候需要,什么时候就能取出来,完美解决了容量不够的问题。

大输出别乱删,先存柜!

第一个要解决的,就是那种 “一次输出就把背包塞满” 的情况。

比如你让 AI 搜整个知识库的“性能优化”,结果出来 150KB 的匹配内容,换算成 token 差不多 3.7 万,直接占了 200K 窗口的 18.5%。要是搜个更常用的词,比如“用户”,出来的结果能直接把整个窗口都塞满。

换作以前,很多产品的做法是直接把后面的内容砍掉,但是这样 AI 就看不到完整的结果了,很容易漏关键信息。

我们的做法很简单:不删,先存柜!

把这些太大的输出,全部存到储物柜(也就是我们的隔离文件目录)里,只给 AI 留两个东西:

  1. 一张 “取件小票”:也就是这个文件的路径,告诉 AI“完整内容在这,需要的时候来取”

  2. 一点点预览:前 2KB 的内容,让 AI 先大概知道这里面有什么

就这么一下,原来 3.7 万 token 的大输出,直接压缩到了 500 个 token,省了 98% 的空间!

AI 要是觉得预览不够,需要看完整的结果,随时可以凭这个小票,调用 Read 工具去储物柜里把完整的内容拿出来,就像你存了包之后,需要的时候再去取一样,完全不用一直扛着那个大箱子。

而且这个储物柜是隔离的,平时 AI 做搜索的时候,不会扫到这些存起来的工具结果,不会搞出“搜索结果里全是之前的工具输出”的干扰,完美解决了干扰的问题。

旧对话别全丢,做个“摘要便签”

解决了单次大输出的问题,还有累积的问题啊。

就算每个工具输出都做了截断,聊了 20 多轮之后,所有的消息加起来,还是会把上下文窗口塞满。这时候怎么办?

很多人的第一反应是:把旧的对话删掉不就行了?

那可不行,删了 AI 就全忘了,之前改了什么文件、做了什么决策,全没了,很容易就重复干活,甚至把你之前的成果给覆盖了。

我们的做法是:旧对话别全丢,做个“摘要便签”!

我们不会直接删掉旧消息,而是把太久之前的几十轮对话,浓缩成一张结构化的摘要便签 —— 我们叫它 Session Memory。

这张便签不是随便写的,是固定的 9 项结构,把所有关键的信息都给你列清楚:

  1. 你一开始的需求是什么

  2. 这次对话里的关键技术点有哪些

  3. 你操作过哪些文件

  4. 之前遇到过什么错误、怎么解决的

  5. 问题解决到哪一步了

  6. 你所有的提问原文(防止忘了你的需求)

  7. 还有什么待办的任务

  8. 你现在正在做什么

  9. 接下来打算做什么

就这么一张小小的便签,把几十轮对话的关键信息全装下了,AI 就算看了这个,也能记得所有的大事,不会失忆。

而最近的几轮对话呢?我们原封不动地保留,因为这些是你当下正在做的事,需要完整的细节,不能压缩。

而且这个便签是滚动更新的,每次我们只拿上一次的便签,加上这一轮新增的对话来更新,永远不会越变越大,不管你聊多少轮,做摘要的输入永远不会超限。

偷偷在后台帮你 “提前整理”

说到做摘要,很多人会问:做这个摘要不是要调用 AI 吗?那要压缩时,用户不得等个半天?

没错,以前要是同步做的话,用户得等 5-15 秒,AI 弹出个 “请稍等,我正在整理记忆”,聊得正嗨呢,突然卡了,这体验谁受得了?

我们想了个绝的:偷偷在后台帮你提前整理!

你每聊完一轮,我们不会闲着,在后台开个小任务,偷偷帮你把摘要便签给更新了。你在思考下一句要问什么、打字的时候,后台的小助手已经在默默把之前的对话整理成摘要了。

等你聊到要压缩的时候,摘要早就做好了,直接拿来用就行,整个过程不到 1 秒,你完全感觉不到!

就像你去餐厅吃饭,你吃这道菜的时候,厨师已经在帮你准备下一道了,等你吃完,下一道直接上,不用等。

我们还加了各种防坑的设计:比如加了锁,防止多个整理任务冲突;加了版本号,防止后台的旧任务把新的结果给覆盖了。

现在我们的生产数据里,90% 以上的压缩,用户都完全没感觉,只有第一次压缩的时候,因为还没来得及做预更新,需要等一下,之后的所有压缩,都是丝滑的,你根本不知道 AI 偷偷帮你整理过记忆。

不管重启还是压缩,都能无缝衔接

你有没有过这种情况?和 AI 聊到一半,关掉了网页,过了半天再打开,之前的对话全没了,得重新来一遍?

或者压缩完上下文,AI 就像变了个样,之前的状态全乱了?

我们的解决方案是:不管是压缩还是重启,都用同一套方法,从文件快照里恢复!

我们把组装好的上下文,全部存成一个 JSONL 的文件快照,不管是我们做了上下文压缩,还是你关掉了网页、环境被回收了,下次要恢复时,直接读这个文件,把上下文重新组装起来就行。

就像你玩游戏,存档了,关机再开,直接读档,之前的进度、道具、任务,全都在,不用重新来一遍。

你完全感觉不到 AI 做了压缩,也感觉不到你重启过网页,就像对话从来没断过一样,无缝衔接。

连 “技能列表” 都要省着用

你以为只有对话占空间吗?还有 AI 的技能啊!

我们的 AI 支持技能扩展,用户可以装各种技能:搜文件、改文档、做表格、发邮件,要是把所有技能的完整说明都塞给 AI,30 个技能就能占掉 15K 的字符,直接把存储空间占了一大块。

这就像你手机里有 100 个 APP,你不会把所有 APP 都放到桌面,那样桌面早就满了,你会把不常用的都收进文件夹,桌面只放常用的几个。

我们也是这么做的:

  • 平时只给 AI 看技能的名字和简单的介绍,只占上下文的 1% 的空间

  • 等 AI 需要用某个技能的时候,再把这个技能的完整说明拿出来

这样一来,未调用的技能,永远不会占你的上下文空间,只有你要用的时候,它才会进来。

就算是你已经调用过的技能,我们也会控制空间:最近用的才保留,太久的就收起来,单个技能最多留 5K token,所有技能加起来最多 25K,不会越堆越多,把空间占满。

最后:最好的 AI 工具,其实都是最朴素的

折腾了这么多,回头看我们的整个方案,其实核心就一句话:截断不丢弃,压缩不失忆,恢复不重复。

我们没有搞什么复杂的黑科技,就是用了最朴素的思路:把大的内容都放在上下文外面,只留一个轻量的索引,把判断权交给 AI 自己 —— 你需要什么,自己来取。

工具输出的路径是索引,会话快照是索引,技能列表是索引,摘要便签也是索引,全都是同一个思路:信息的“存在”和“可见”是分开的,存在文件系统里的内容,只有被 AI 主动拿进来的时候,才会占用上下文的空间。

就这么简单的文件系统 + Read 工具,就解决了 AI 失忆的大问题。原来很多看似复杂的问题,回到最基础的工具上,往往就能得到最简单、最稳固的答案。


你有没有遇到过 AI 聊着聊着就 “失忆” 的情况?比如改文档改到一半忘了之前的要求,或者聊了几十轮之后它突然答非所问?你最烦的是哪一种?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 2:10:31

hplan:为AI编程助手构建持久化工作记忆,解决长任务目标漂移

1. 项目概述:为Claude Code构建持久化的工作记忆 如果你和我一样,经常让Claude Code处理一些复杂的重构或开发任务,比如把一个单体应用拆成微服务,或者把整个认证系统从Session迁移到JWT,那你肯定遇到过这样的场景&…

作者头像 李华
网站建设 2026/5/11 2:09:49

自建AI聊天中心:LibreChat部署与多模型集成实战

1. 项目概述:为什么你需要一个自己的AI聊天中心?如果你和我一样,每天需要在ChatGPT、Claude、Gemini,甚至本地部署的Ollama模型之间来回切换,那一定对“复制粘贴API密钥”、“在不同网页标签页里跳转”感到厌烦。更别提…

作者头像 李华
网站建设 2026/5/11 2:08:56

JTAG测试与DFT设计在PCB制造中的关键应用

1. JTAG测试与DFT设计概述在当今电子产品快速迭代的背景下,设计阶段就考虑可测试性(Design for Test, DFT)已成为缩短产品上市时间的关键策略。JTAG(Joint Test Action Group)作为IEEE-1149.1标准的核心技术&#xff0…

作者头像 李华
网站建设 2026/5/11 2:08:47

开源语音对话机器人akari_chatgpt_bot部署与低延迟优化实战

1. 项目概述与核心价值 如果你正在寻找一个能听、能说、能思考,还能集成到实体机器人(比如AKARI)上的开源对话机器人项目,那么 akari_chatgpt_bot 绝对值得你花时间深入研究。这个项目本质上是一个集成了语音识别、大语言模型&…

作者头像 李华
网站建设 2026/5/11 2:07:34

第十五节:服务化封装——API 网关设计与负载均衡

引言 延续上一章关于安全审查的内容,本章转向如何将本地推理模型通过服务化封装,形成稳定、高效且安全的对外接口,解决生产环境下的流控、鉴权和负载均衡痛点。 核心理论 服务化封装的核心在于为AI推理服务提供统一入口,通常采用微服务架构中的API网关。API网关承担请求…

作者头像 李华