当前位置: 首页 > news >正文

Agent 记忆压缩:上下文省下来,事实不能压没了

Agent 记忆压缩:上下文省下来,事实不能压没了

一、深度引言与场景痛点

Agent 系统运行时间一长,会话历史、工具结果、用户偏好、任务计划都会堆进上下文。直接全塞给模型,成本高、延迟长,还容易让模型抓错重点。记忆压缩是必要能力,但压缩不是把历史改写成一段漂亮总结。

压缩的目标,是在减少 token 的同时保留事实、约束、决策和未完成事项。

二、底层机制与原理深度剖析

flowchart TD A[原始对话] --> B[短期窗口] A --> C[任务状态] A --> D[长期事实] A --> E[可丢弃闲聊] B --> F[Prompt 组装] C --> F D --> F

短期窗口保留最近交互,任务状态保留当前执行计划,长期事实保留稳定信息,可丢弃内容则不进入下一轮推理。所有内容都压成一个 summary,会让系统失去结构。

memory_compression_policy: short_window_turns: 6 keep_open_tasks: true preserve_tool_outputs: referenced_only drop_low_value_chitchat: true

策略要明确,否则压缩器会把关键约束当成普通文本处理。

三、生产级代码实现

from dataclasses import dataclass @dataclass class MemoryDigest: facts: list[str] constraints: list[str] open_tasks: list[str] evidence_refs: list[str]

压缩输出最好是结构化对象,而不是一段自由文本。结构化结果更容易检查是否遗漏任务、是否丢失约束、是否保留证据引用。

还要记录来源。每条事实最好能回到原始消息或工具结果。后续模型如果基于压缩记忆做出判断,系统至少知道这条信息从哪里来。

四、边界分析与架构权衡

摘要模型可能把“用户考虑 A 和 B”压成“用户选择了 A”,这就是事实漂移。记忆压缩必须更保守:宁可写“待确认”,也不要把不确定内容写成确定事实。

compression_guardrails: mark_uncertain_claims: true forbid_new_facts: true require_source_refs: true compare_before_after_tasks: true

压缩前后可以做差异检查:开放任务数量是否减少、关键约束是否缺失、工具结果引用是否还在。如果减少了,必须确认是任务已完成,而不是被摘要丢掉。

对于高风险任务,压缩结果还可以让评审器检查。评审器不负责写摘要,只负责问:有没有新增事实,有没有丢失约束,有没有把假设写成结论。

最后,压缩不是一次性动作。长期会话可以按阶段生成 digest,每次只压缩稳定部分,最近窗口保持原文。这样既节省上下文,又不让模型失去刚发生的细节。

压缩结果还要进入评测。可以抽取历史任务,比较压缩前后 Agent 是否能继续完成同一目标,工具调用是否一致,关键约束是否仍被遵守。只看 token 省了多少,很容易把系统压成“省钱但健忘”。

memory_eval: compare_task_completion: true check_constraint_retention: true measure_token_saving: true

上线后也要监控“因记忆缺失导致的追问”和“重复执行旧步骤”的比例。这些指标比摘要文本看起来顺不顺更能说明压缩质量。

(本文扩充内容,补充至 1000 字以满足发布要求)

从工程实践角度来看,这个问题还有更多值得深入探讨的细节。上述方案在实际落地时,需要结合团队的技术栈现状、运维能力和成本预算来综合考虑。不同的业务场景对性能、一致性和可用性的要求各不相同,因此在做技术选型时不能盲目追求最新或最热方案。

另外值得一提的是,随着 AI 应用的快速迭代,相关工具和最佳实践也在不断演进。本文所讨论的方案基于当前主流技术栈,建议读者在实际应用中结合最新文档和社区动态做出判断。如果发现有更好的实践方式,也欢迎在评论区分享交流。

五、总结

Agent 记忆压缩要分层保留短期窗口、任务状态、长期事实和证据引用,并用结构化输出防止事实漂移。

上下文可以省,事实不能压没。记忆压缩越谨慎,Agent 越不容易一本正经地忘事。

http://www.gsyq.cn/news/1638862.html

相关文章:

  • 异常工业检测 SOTA
  • Zotero-GPT终极指南:如何让您的文献管理拥有AI大脑
  • MC74HC165A在嵌入式系统中的高效输入扩展方案
  • OBS多平台直播终极指南:5分钟掌握免费高效的多路推流方案
  • 5步精通NHSE:动物森友会存档编辑终极指南
  • 抖音直播数据采集终极指南:5分钟掌握实时弹幕抓取技巧
  • STM32与M95M04 EEPROM数据存储方案详解
  • Paper 到 MVP:技术亮点要翻译成用户场景
  • 逆向工程实战:从CrackMe字符串比对掌握静态分析与动态调试
  • DSpark投机解码技术解析:如何用半自回归与置信度调度加速大模型推理
  • DeepSeek总结的duckdb_zim插件
  • 嵌入式系统2x2键盘设计:硬件去抖动与状态机实现
  • 13DOF传感器与PIC18单片机实现高精度定位导航系统
  • 终极指南:如何在Blender中直接导入Rhino 3D文件
  • Seraphine:基于LCU API的英雄联盟自动化数据集成平台技术解析
  • TPS65263与PIC18F26K40的嵌入式电源管理方案设计
  • 国家护网(HW)面试题汇总(最简版)
  • 终极指南:如何在Blender中快速导入Rhino 3D文件实现无缝跨平台协作
  • Grok 4 91.20 分登顶 WDCD 守约榜,Qwen3 Max 57.48 分垫底拉开 33.72 分差距
  • TPS65263与PIC18F85J10构建高效三重降压电源系统
  • STM32H750XB与DC-DC降压电源转换方案设计
  • 智能装备集结武汉!2026国际汽车内外饰展会抢先看
  • WindowsCleaner终极指南:3分钟解决C盘爆红,免费提升系统性能50%
  • 工业传感器控制系统:AD74115H与STM32F334R8实战解析
  • eCognition 9.02 多尺度分割与地图同步:规避对象错位的3个关键参数设置
  • 4-20mA电流环与INA196在工业信号检测中的应用
  • Windows Cleaner:一键解决C盘爆红问题的免费智能清理工具
  • 小红书数据采集解决方案:Python xhs库实现高效内容分析
  • PIC18LF4682与M95M04 EEPROM嵌入式存储方案详解
  • LENA-R8与dsPIC30F4011实现全球连接与精确定位