上下文工程+记忆工程:双循环架构实测省90%成本

上下文工程+记忆工程:双循环架构实测省90%成本

💡 原文中文,约3700字,阅读约需9分钟。
📝

内容提要

本文提出上下文工程与记忆工程的双环架构,以解决大模型上下文膨胀、成本高和记忆缺失问题。通过固定前缀缓存节省90%成本,利用AST压缩代码,并采用分层记忆管理、原子笔记和遗忘机制,实现快慢循环协同,提升AI Agent性能。

🔎

延伸解读

上下文是RAM,记忆才是硬盘

文章的核心比喻是:上下文窗口相当于工作内存(RAM),而记忆工程才是长期存储(硬盘)。开发者常犯的错误是把整个代码仓库、历史日志全塞进上下文,导致模型迷失、成本飙升。正确做法是区分固定与动态内容,用前缀缓存复用计算,同时将长期知识交给分层记忆系统管理。理解这一区分,是优化AI应用性能的第一步。

前缀缓存与AST压缩:省钱的实操要点

前缀缓存能节省高达90%的输入成本,但前提是系统提示词和工具定义的顺序必须固定不变,任何改动都会导致缓存失效。此外,用AST压缩代码可大幅减少Token占用,例如将1500行代码压缩至95个Token。生产环境应遵循“固定内容置前、动态内容追加”的铁律,并优先提取函数签名等接口信息,而非完整源码。

记忆分层与遗忘机制:AI必须学会忘记

记忆工程将知识分为工作记忆、短期情景记忆、长期语义记忆和程序性记忆四层,避免信息混杂。高级系统采用原子笔记和CRUD操作管理记忆,并引入遗忘曲线衰减机制,根据语义相似度、调用频率和访问时间动态调整留存分数。主动遗忘无关信息能保持记忆索引的锋利,防止系统被垃圾数据淹没。

双环架构:快慢循环协同的实践价值

双环架构将实时响应(快循环)与后台整理(慢循环)解耦。快循环在毫秒级内完成检索、排序和推理,慢循环则异步处理事实提取、知识图谱更新和记忆衰减。这种设计让用户无感知地获得持续优化的体验,避免单独使用上下文或记忆带来的瓶颈。文章也指出,记忆保留与遗忘的边界仍是未解难题,需谨慎设定参数。

Q&A

为什么大模型在长对话后会忘记之前的约束或产生幻觉?

因为上下文窗口本质上是临时工作内存,不是永久存储。当对话历史过长,关键信息被淹没,模型无法有效关注,导致遗忘和幻觉。正确做法是使用上下文工程和记忆工程,将重要信息持久化到外部记忆,并在需要时检索注入。

什么是前缀缓存?它如何节省90%的成本?

前缀缓存是模型对相同开头的请求复用计算结果,避免重复计算。如果系统提示词和工具定义固定,每次请求只需计算一次,后续请求直接命中缓存,从而减少输入处理量,降低延迟和成本,最高可节省90%的输入成本。

如何用AST压缩代码以减少上下文占用?

使用Tree-sitter等语法解析器将源代码解析为抽象语法树,只提取函数签名、类接口、导入依赖等关键信息,忽略函数内部实现细节。例如,一个150行、1200个Token的类可压缩至15行、95个Token,大幅减少上下文占用。

记忆工程中的四层记忆结构是什么?

四层记忆结构包括:工作记忆(当前Prompt内容,单次推理后消失)、短期情景记忆(最近几轮对话和工具调用,存一个会话周期)、长期语义记忆(领域知识、用户偏好,用向量数据库和知识图谱存储,跨会话持久化)、程序性记忆(验证过的工作流和规则,永久保留)。

什么是原子笔记?它如何管理记忆?

原子笔记是将信息拆解为自包含的最小单元,通过四个CRUD操作管理:新增(信息陌生)、更新(新细节)、删除(新事实推翻旧事实)、忽略(废话和临时变量)。例如,迁移缓存系统时,会更新原有记录而非新增,避免冗余。

为什么AI系统需要主动遗忘?遗忘机制如何工作?

因为记住所有信息会导致检索时被过时或无关内容污染,降低效率。遗忘机制通过动态留存分数(基于语义相似度、调用频率、最近访问时间)决定记忆的保留,长期未用的记忆会自然衰退、归档并删除,保持记忆索引的锋利。

双环架构中的快循环和慢循环分别负责什么?

快循环负责实时响应,在毫秒级内从多个渠道检索记忆(向量检索、BM25、知识图谱),经过去重排序后注入Prompt并执行推理。慢循环在后台运行,处理快循环的日志,进行原子事实提取、更新知识图谱、计算衰减分数,清理矛盾信息,不占用用户等待时间。

为什么单独使用上下文工程或记忆工程会有瓶颈?

单独使用上下文工程,Agent缺乏长期记忆,每次会话需重新学习,浪费Token;单独使用记忆工程,检索到的信息可能矛盾或冗余,导致模型困惑。只有两者协同,才能实现高效且准确的响应。

🏷️

标签

➡️

继续阅读