我的智能体在对话中途不断"忘记"信息——找到了一种真正解决该问题的技术(LCM)

Reddit r/AI_Agents 工具

摘要

Voltropy论文提出的无损上下文管理(LCM)技术,通过将所有消息逐字存储到SQLite中,同时向模型提供压缩摘要,防止AI智能体在长对话中遗忘信息,从而能够无损失地检索精确细节。openlcm库提供了LangGraph的MemorySaver的即插即用替代方案,并支持其他框架。

我一直在构建一个多步骤的研究智能体,大约经过30到40轮交互后,我不断遇到同样的问题:模型开始自相矛盾,忘记硬性约束,并询问已经提供过的信息。我尝试了通常的方法,但它们都有显著的局限性: - 摘要/ handoff.md - 损失过大。 - 重要细节难免被丢弃。 - LangGraph MemorySaver - 非常适合跨重启持久化状态。 - 无法解决上下文窗口溢出问题。 - 仍会触及令牌限制。 - 滚动摘要并替换 - 最终变成摘要的摘要的摘要。 - 细粒度细节随时间消失。 更好的方法:无损上下文管理(LCM) 我一直在阅读关于Voltropy论文中提出的无损上下文管理(LCM)。核心理念很直接:上下文压缩不应需要破坏信息。我最近发现了openlcm("pip install openlcm"),它实现了这一方法。每条原始消息都被逐字存储在SQLite中,同时模型接收压缩的摘要层次结构。结果是,模型在一个小而高效的上下文窗口中运行,但仍然可以检索到几十轮前做出的决策的确切文本。与传统的摘要方法——或Claude Code风格的压缩——不同,这里没有内在的"压缩=丢失信息"的权衡。对于LangGraph用户,它本质上是"MemorySaver"的即插即用替代方案:from openlcm.adapters.langgraph import LCMCheckpointer graph = StateGraph(MyState).compile( checkpointer=LCMCheckpointer(llm=my_llm) ) 它还支持AutoGen、CrewAI以及直接的OpenAI/Anthropic集成。我特别喜欢的一个功能是本地仪表盘,它可以让你精确查看模型看到的内容与从活动上下文中摘要出的内容之间的对比。我想分享出来,因为我不常见到LCM被讨论,而且它似乎是长时间运行智能体工作流的一个有前景的方向。
查看原文

相似文章

本地LLM伙伴

Reddit r/LocalLLaMA

一位拥有45年经验的开发者正在构建一个本地优先的LLM框架,包含多智能体逻辑,即将在GitHub上开源,并向社区询问哪些功能能改善他们的本地LLM体验。

Slisp: 简单的Lisp编译器 (Linux/amd64)

Hacker News Top

Slisp 是一个简单的编译器,它读取 Lisp 程序并生成适用于 Linux/AMD64 的独立汇编表示,支持基本原语、闭包和标准库。