Agent记忆压缩方法
Agent 的**记忆压缩Memory Compression**主要目的是解决一个问题Agent 长时间运行后会积累大量历史对话、工具调用记录、任务轨迹如果全部塞入 Context Window会导致 Token 爆炸、推理变慢、成本升高所以需要把“过去的信息”压缩成更高价值、更小体积的表示。常见方法主要有以下几类一、摘要压缩思路让 LLM 定期把历史记忆总结成短文本。例如原始记忆用户我喜欢C正在学习机器人后端开发。讨论ROS2通信机制。学习MQTT连接机器人云平台。完成Robot SDK项目实现TCP通信。压缩后用户长期目标- 学习机器人后端开发- 熟悉C、ROS2、MQTT已有经验- 开发过Robot SDK- 实现TCP通信和JSON协议实现方式Agent维护Raw Memory|vMemory Summarizer|vCompressed Memory优点简单效果好适合聊天Agent缺点可能丢失细节例如原文用户机器人IP是192.168.1.20总结用户有机器人网络环境IP丢了。二、分层记忆压缩类似人类记忆。分成Long-term Memory|------------------------| |Semantic Memory Episodic Memory|User Profile第一层短期记忆 Short-term保存最近上下文例如最近20轮聊天直接放 PromptContext:user:assistant:...第二层中期记忆保存任务阶段信息例如当前任务开发机器人SDK已完成1. TCP通信2. JSON协议待完成3. 心跳机制4. 重连策略第三层长期记忆保存稳定信息例如用户- 熟悉C- 做机器人开发- 使用ROS2压缩过程最近聊天|| 超过窗口v任务摘要||长期稳定事实三、 信息抽取压缩不是总结而是抽取关键事实。例如原始我最近在机器人公司实习主要做C SDK用TCP连接机器人以后想找C后端岗位。抽取JSON{skill:[C,TCP,Robot SDK],career_goal:C backend developer}优势查询效率高。比如Agent问用户会不会C直接查skill contains C不用读全部历史。四、 向量压缩Embedding Compression把文本变成向量。流程Memory Text|Embedding Model|[0.21,0.55,0.13,...]|Vector Database例如存用户学习ROS2变成[0.234,0.882,...]查询用户之前机器人通信怎么设计Embedding机器人通信设计搜索TCP协议MQTTROS2 Topic五、 时间衰减压缩Time Decay模拟人的遗忘机制。不是所有记忆价值一样。公式Memory Score Importance × e^(-λt)例如昨天用户正在调试TCP bug重要度0.9一年以前问过hello world重要度0.1随着时间重要性下降应用自动删除低价值 很久以前六、重要性评分压缩给每条Memory打分Memory Importance 用户明确要求保存 使用频率 最近访问 任务相关性例如MemoryScore用户名字0.9用户喜欢C0.8一次报错日志0.工业级 Agent Memory 通常组合实际系统一般不是单一方法User Input|vMemory Manager|---------------------| | |Short-term Long-term Archive| |Recent Vector DBContext|Summarizer|Compression