MemoryLake
返回全部文章
Pain Point2026 年 5 月 22 日8 分钟阅读

为什么 AutoGPT 会忘记之前的目标?

你启动 AutoGPT,给它一个长期目标,观察前几步进行得很顺利。然后在第 40 步左右,代理悄悄放弃了最初的目标。它追逐一个子任务,总结错误的内容,或者在与您要求无关的工具调用上循环。到运行结束时,顶层目标已经被改写成你和代理都无法识别的东西。

这不是你提示中的错误。这是 AutoGPT 循环构建的方式,并且有一种简单的方法可以修复它。

简短答案

AutoGPT 忘记之前的目标是因为每次代理运行都从一个短期滚动上下文窗口重建其工作记忆,原始目标在新的工具观察堆积时被压缩或驱逐。一旦目标滑出活动提示,规划者就没有任何可以依靠的东西。持久的外部记忆层使目标在每一步和每次重启中保持固定。

为什么 AutoGPT 会忘记之前的目标

AutoGPT 的推理循环是计划、选择工具、行动、观察、更新记忆。代理在每个周期重新读取其工作上下文。该上下文受到基础模型的令牌窗口的限制(通常在 8K 到 128K 之间,具体取决于您连接的模型),而大部分被工具输出和中间草稿占用。

三个设计选择将目标推向记忆之外:

1. 原始目标存在于提示中,而不在存储中。 AutoGPT 在运行开始时注入顶层目标。随着步骤的增加,提示预算被最近的工具调用、观察和推理痕迹填满。目标令牌块被总结或推出滚动窗口。

2. 默认情况下,记忆是短期的。 如果没有连接外部向量存储,AutoGPT 依赖于一个小的进程内记忆。社区早已记录了这一点作为一个硬限制,这就是为什么存在连接 Weaviate、Pinecone 或本地向量后端的指南。开箱即用的“长期记忆”是尽力而为。

3. 目标不是一等公民。 AutoGPT 将目标视为文本,而不是规划者在每一步检查的结构化承诺。代理没有内置机制在每次工具调用之前询问“这个子任务是否仍然服务于原始目标?”

结果是:一个以“构建竞争分析报告”为起点的 100 步运行,最终总结了关于一个边缘主题的单页内容,因为那是活动窗口中存活下来的内容。

您可以在项目的 记忆挑战文档 中阅读 AutoGPT 对此的讨论。

当 AutoGPT 忘记之前的目标时你会失去什么

目标遗忘是成本最高的失败模式,消耗了最多的计算资源和信任:

  • 浪费的令牌支出。 偏离目标的运行仍然调用工具,仍然支付推理费用,并且仍然写入文件。您为整个循环付费,然后将输出丢弃。
  • 不可信的长时间运行。 超过 30 到 50 步的任何事情开始感觉像是抛硬币。团队停止使用 AutoGPT 进行那些价值在于完成而不是尝试的工作。
  • 重启之间没有记忆。 杀死进程,重新启动它,代理对昨天在做什么毫无头绪。目标、部分工作和理由都消失了。

Mem0 的 2026 年 AI 代理记忆状态 报告将记忆控制器命名为大多数生产代理堆栈中缺失的层。AutoGPT 是经典的例子。

AutoGPT 的内置解决方法

该项目已发布了一些部分答案。

进程内记忆后端。 AutoGPT 支持通过本地 JSON、Redis 和少量向量数据库的可插拔记忆。这些存储过去观察的嵌入,但它们不强制目标持久性。规划者仍然必须记得查询它们。

提示重新注入。 一些设置在每个循环的顶部重新添加原始目标。这在一段时间内有效,但当目标加上新上下文超过令牌窗口时就会失效。代理会默默地截断旧的一半。

基于文件的草稿。 代理可以将笔记写入磁盘并重新读取它们。如果您仔细提示它这样做,这将有效。除非您在启动时从这些文件重建提示,否则它在重启之间无效。

这些都没有将目标视为代理在每一步必须检查的一等对象。它们将其视为文本,并希望它能够存活。

AutoGPT 的内置记忆不足之处

更深层次的问题是,AutoGPT 被设计为模型无关,而不是记忆无关。循环假设模型保持上下文,而模型假设提示是新的。当运行足够长,以至于提示无法同时容纳目标和工作状态时,目标就会丢失。

如果您将基础模型从 GPT-4 更换为 Claude 或本地 Llama,您将继承相同的记忆上限。代理以不同的形式遗忘,但它仍然会遗忘。

MemoryLake 如何修复 AutoGPT 忘记之前的目标

MemoryLake 位于代理循环之外,作为专用的记忆提供者。AutoGPT 在每一步通过 REST API 或 MCP 服务器端点调用它,因此目标、子目标和理由独立于提示窗口持久存在。

  • 目标作为固定记忆。 将顶层目标和子目标树存储为项目中的结构化记忆。AutoGPT 在每个周期开始时读取它们,并将其用作规划者的真实来源,而不是滚动提示。
  • 跨重启的连续性。 在第 47 步杀死代理并在明天重新启动。MemoryLake 会返回目标、已完成的步骤、未完成的子任务和工具历史。代理从它离开的地方继续,而不是从头开始。
  • 代理记忆的 Git 风格版本控制。 每次目标更新、每次计划修订和每次工具观察都是一次提交。您可以重放、比较或回滚任何运行,这使得长时间的自主循环首次可调试。

MemoryLake 在 LoCoMo 长上下文基准测试中得分 94.03%,是截至 2026 年的最高已发布结果,具有毫秒级检索和 AES-256 端到端加密。

在 3 个步骤中将 MemoryLake 连接到 AutoGPT

  1. 创建项目并加载上下文。 登录 MemoryLake,打开项目管理,点击创建项目,并将其命名为“AutoGPT — 代理运行”。将任何参考简报、目标架构或先前运行日志放入文档驱动器。将顶层目标、子目标树和停止条件作为结构化条目添加到记忆选项卡中,以便从第一天起进行版本控制。
  2. 生成 MCP 服务器端点。 在项目内打开 MCP 服务器选项卡,点击添加 MCP 服务器,命名为“AutoGPT 集成”,然后点击生成。MemoryLake 返回一个 API 密钥 ID、密钥和端点 URL。立即复制密钥,它只显示一次。
  3. 连接 AutoGPT。 在您的 AutoGPT 代理配置中将 MemoryLake 添加为 MCP 兼容的记忆提供者,或者在每个循环周期开始时使用您的 Bearer 令牌调用 REST API。Python SDK 提供目标和子目标读取,以便规划者在每次工具调用之前验证对齐。

常见问题

AutoGPT 有长期记忆吗?

AutoGPT 具有短期的进程内记忆和一个可选的向量存储后端,您自己连接。两者都无法在长时间运行中固定目标,且在重启之间无法干净地持久化,除非您构建该层。

我如何让 AutoGPT 记住其原始目标?

将目标存储在外部记忆提供者中,并让 AutoGPT 在每个循环周期的顶部读取它。MemoryLake 将目标暴露为结构化记忆,代理可以通过 REST 或 MCP 获取,而不会消耗提示令牌。

为什么 AutoGPT 不断忘记它在做什么?

因为它的工作状态存在于模型的滚动上下文窗口中。在 30 到 100 次工具步骤之后,窗口被最近的观察填满,原始目标被总结或驱逐。然后规划者就会偏离。

AutoGPT 的记忆限制是什么?

没有固定的数字。有效限制是基础模型提供的上下文窗口,减去工具输出占用的空间。在 128K 模型上,您可能会获得数百个步骤。在 8K 上,您可能会在几十步内失去目标。

我可以在多个 AutoGPT 运行之间共享目标记忆吗?

不可以。代理在运行之间不保持共享存储。MemoryLake 使每次运行都可以访问相同的项目记忆,因此您在周一设置的目标在周五仍然固定,并且在每次重启的过程中保持不变。