你有没有过这样的经历用 AI 帮你整理公司的知识库搜了几十份文档聊了快 30 轮本来想让它帮你把所有性能优化的内容汇总成一份报告结果聊着聊着AI 突然告诉你“抱歉上下文超限了我记不住之前的内容了。更糟的是有时候它连报错都没有直接 “失忆”—— 忘了你之前已经改过的文档把你刚整理好的内容给覆盖了就像你和朋友吐槽了半小时工作结果朋友突然抬头问“你刚才说你要做什么来着”那种崩溃相信很多和 AI 打过长期交道的人都懂。你有没有过和 AI 聊到一半它突然 “失忆”这其实就是知识库 Agent 最头疼的问题上下文窗口不够用。我们做的袍子 AI是一个长在知识库上的 Agent用户用它来做知识管理读文档、搜内容、改文件、写报告一次任务下来可能要经历几十次文件读取翻遍整个知识库的目录大范围的关键词搜索一次 grep 就能返回几十万字符的结果批量的文件操作每一次都有执行输出30 多轮的对话越聊内容越多就算是 200K 的大窗口模型聊个 15-20 轮也就快顶到上限了。这背后藏着四个绕不开的矛盾工具输出太能吃了一次全库搜索的结果直接就能吃掉半个上下文窗口信息要完整但空间不够你需要 AI 记住所有的文件列表做决策但它的脑子装不下这么多对话要连续但压缩会失忆把旧对话删了AI 就忘了之前做过什么容易重复干活不同 AI 脑子还不一样大64K 窗口的小模型和 200K 的大模型没法用同一套规则我们的解法给 AI 加个 “随身储物柜”null说白了就是把信息分成了两层「热存储」上下文窗口只放你现在正在用的、最常用的内容保证 AI 能快速拿到「温存储」文件系统所有暂时用不上的大输出、旧对话都存在这里一点都不会丢这样一来背包永远不会被撑爆而储物柜里的东西你什么时候需要什么时候就能取出来完美解决了容量不够的问题。大输出别乱删先存柜第一个要解决的就是那种 “一次输出就把背包塞满” 的情况。比如你让 AI 搜整个知识库的“性能优化”结果出来 150KB 的匹配内容换算成 token 差不多 3.7 万直接占了 200K 窗口的 18.5%。要是搜个更常用的词比如“用户”出来的结果能直接把整个窗口都塞满。换作以前很多产品的做法是直接把后面的内容砍掉但是这样 AI 就看不到完整的结果了很容易漏关键信息。我们的做法很简单不删先存柜把这些太大的输出全部存到储物柜也就是我们的隔离文件目录里只给 AI 留两个东西一张 “取件小票”也就是这个文件的路径告诉 AI“完整内容在这需要的时候来取”一点点预览前 2KB 的内容让 AI 先大概知道这里面有什么就这么一下原来 3.7 万 token 的大输出直接压缩到了 500 个 token省了 98% 的空间AI 要是觉得预览不够需要看完整的结果随时可以凭这个小票调用 Read 工具去储物柜里把完整的内容拿出来就像你存了包之后需要的时候再去取一样完全不用一直扛着那个大箱子。而且这个储物柜是隔离的平时 AI 做搜索的时候不会扫到这些存起来的工具结果不会搞出“搜索结果里全是之前的工具输出”的干扰完美解决了干扰的问题。旧对话别全丢做个“摘要便签”解决了单次大输出的问题还有累积的问题啊。就算每个工具输出都做了截断聊了 20 多轮之后所有的消息加起来还是会把上下文窗口塞满。这时候怎么办很多人的第一反应是把旧的对话删掉不就行了那可不行删了 AI 就全忘了之前改了什么文件、做了什么决策全没了很容易就重复干活甚至把你之前的成果给覆盖了。我们的做法是旧对话别全丢做个“摘要便签”我们不会直接删掉旧消息而是把太久之前的几十轮对话浓缩成一张结构化的摘要便签 —— 我们叫它 Session Memory。这张便签不是随便写的是固定的 9 项结构把所有关键的信息都给你列清楚你一开始的需求是什么这次对话里的关键技术点有哪些你操作过哪些文件之前遇到过什么错误、怎么解决的问题解决到哪一步了你所有的提问原文防止忘了你的需求还有什么待办的任务你现在正在做什么接下来打算做什么就这么一张小小的便签把几十轮对话的关键信息全装下了AI 就算看了这个也能记得所有的大事不会失忆。而最近的几轮对话呢我们原封不动地保留因为这些是你当下正在做的事需要完整的细节不能压缩。而且这个便签是滚动更新的每次我们只拿上一次的便签加上这一轮新增的对话来更新永远不会越变越大不管你聊多少轮做摘要的输入永远不会超限。偷偷在后台帮你 “提前整理”说到做摘要很多人会问做这个摘要不是要调用 AI 吗那要压缩时用户不得等个半天没错以前要是同步做的话用户得等 5-15 秒AI 弹出个 “请稍等我正在整理记忆”聊得正嗨呢突然卡了这体验谁受得了我们想了个绝的偷偷在后台帮你提前整理你每聊完一轮我们不会闲着在后台开个小任务偷偷帮你把摘要便签给更新了。你在思考下一句要问什么、打字的时候后台的小助手已经在默默把之前的对话整理成摘要了。等你聊到要压缩的时候摘要早就做好了直接拿来用就行整个过程不到 1 秒你完全感觉不到就像你去餐厅吃饭你吃这道菜的时候厨师已经在帮你准备下一道了等你吃完下一道直接上不用等。我们还加了各种防坑的设计比如加了锁防止多个整理任务冲突加了版本号防止后台的旧任务把新的结果给覆盖了。现在我们的生产数据里90% 以上的压缩用户都完全没感觉只有第一次压缩的时候因为还没来得及做预更新需要等一下之后的所有压缩都是丝滑的你根本不知道 AI 偷偷帮你整理过记忆。不管重启还是压缩都能无缝衔接你有没有过这种情况和 AI 聊到一半关掉了网页过了半天再打开之前的对话全没了得重新来一遍或者压缩完上下文AI 就像变了个样之前的状态全乱了我们的解决方案是不管是压缩还是重启都用同一套方法从文件快照里恢复我们把组装好的上下文全部存成一个 JSONL 的文件快照不管是我们做了上下文压缩还是你关掉了网页、环境被回收了下次要恢复时直接读这个文件把上下文重新组装起来就行。就像你玩游戏存档了关机再开直接读档之前的进度、道具、任务全都在不用重新来一遍。你完全感觉不到 AI 做了压缩也感觉不到你重启过网页就像对话从来没断过一样无缝衔接。连 “技能列表” 都要省着用你以为只有对话占空间吗还有 AI 的技能啊我们的 AI 支持技能扩展用户可以装各种技能搜文件、改文档、做表格、发邮件要是把所有技能的完整说明都塞给 AI30 个技能就能占掉 15K 的字符直接把存储空间占了一大块。这就像你手机里有 100 个 APP你不会把所有 APP 都放到桌面那样桌面早就满了你会把不常用的都收进文件夹桌面只放常用的几个。我们也是这么做的平时只给 AI 看技能的名字和简单的介绍只占上下文的 1% 的空间等 AI 需要用某个技能的时候再把这个技能的完整说明拿出来这样一来未调用的技能永远不会占你的上下文空间只有你要用的时候它才会进来。就算是你已经调用过的技能我们也会控制空间最近用的才保留太久的就收起来单个技能最多留 5K token所有技能加起来最多 25K不会越堆越多把空间占满。最后最好的 AI 工具其实都是最朴素的折腾了这么多回头看我们的整个方案其实核心就一句话截断不丢弃压缩不失忆恢复不重复。我们没有搞什么复杂的黑科技就是用了最朴素的思路把大的内容都放在上下文外面只留一个轻量的索引把判断权交给 AI 自己 —— 你需要什么自己来取。工具输出的路径是索引会话快照是索引技能列表是索引摘要便签也是索引全都是同一个思路信息的“存在”和“可见”是分开的存在文件系统里的内容只有被 AI 主动拿进来的时候才会占用上下文的空间。就这么简单的文件系统 Read 工具就解决了 AI 失忆的大问题。原来很多看似复杂的问题回到最基础的工具上往往就能得到最简单、最稳固的答案。你有没有遇到过 AI 聊着聊着就 “失忆” 的情况比如改文档改到一半忘了之前的要求或者聊了几十轮之后它突然答非所问你最烦的是哪一种