# 为什么复杂任务撑不住：记忆与规划

上下文窗口有限、长对话会『忘』；短期记忆、长期记忆与多步规划如何让智能体能干成长链条的活

> 上下文窗口 · 短期记忆 · 长期记忆 · 多步规划 · 约 6 分钟 · 07 月 10 日

## 本篇要点

1. 上下文窗口是硬约束——无论模型宣称多大窗口，长链条任务中早期信息必然被挤到边缘或被截断，导致模型『健忘』
2. 短期记忆（修剪/摘要）管理当前上下文的内容密度，长期记忆（向量检索/外部存储）跨会话持久化关键信息
3. 多步规划让智能体在执行前先生成子任务列表，每步后更新剩余计划，避免在局部细节中打转偏离目标
4. 记忆与规划是一体两面：记忆保持状态连续性，规划保持目标连续性，两者缺一不可

---

前面两篇我们看到了 ReAct 循环如何让 LLM 从"一次回答完就停"变成"持续执行直到完成"。但如果你动手试过给智能体一个真正复杂的任务——比如"帮我调研三家云服务商的定价，对比后推荐最优方案，并生成一份报告"——你可能会发现：它做着做着就开始"忘事"了，或者在一个子任务上反复打转，或者干脆偏离了最初的目标。

这不是模型不够聪明，而是两个更根本的问题在起作用：**上下文窗口有限**和**缺乏规划**。这一篇我们就来拆解这两个问题，以及当前的解决方案。

## 上下文窗口是一堵墙

无论模型宣称的上下文窗口有多大（4K、128K 还是 200K tokens），它都是**有限且昂贵的**。每一次工具调用的结果、每一轮对话的历史，都会消耗这个窗口里的空间。

假设智能体在做一个多步骤任务：

1. 调用搜索工具，返回 3 篇长文章 → 消耗 8K tokens
2. 调用读取工具，逐篇阅读 → 消耗 15K tokens
3. 调用对比工具，提取差异 → 消耗 5K tokens
4. 调用生成报告工具 → 消耗 3K tokens

到第 4 步时，上下文里已经塞满了第 1、2 步的原始材料。模型需要从这几万 tokens 里找到"用户最初的目标是什么、已经确认了哪些事实、还差什么没做"——但最早的信息已经被挤到了窗口的边缘，甚至已经被截断了。

结果就是：**模型变得"健忘"。** 它可能记不住用户最初的要求，可能重复已经做过的步骤，也可能在无关的细节上钻牛角尖。这不是幻觉，这是上下文溢出导致的注意力稀释[[1]](#ref1)。

## 短期记忆：把关键信息留在上下文中

解决"健忘"的第一个思路是**管理好上下文里的内容**——不让它无限制地膨胀。

最常用的两种策略是**修剪（Trimming）** 和**摘要（Summarization）**[[2]](#ref2)。

**修剪**：只保留最近 N 轮对话。更早的全部丢弃。优点是简单、零额外开销；缺点是信息被硬截断——如果用户在第 5 轮说过"我的预算是 500 美元以内"，到了第 20 轮这个约束就丢了。

**摘要**：当上下文接近上限时，把较旧的内容用 LLM 压缩成一段摘要，替换掉原始内容。比如把 10 轮对话压缩成一段 200 字的"到目前为止的进展"。优点是保留了关键信息，缺点是摘要可能会丢失细节或引入偏差。

这两种方法都属于**短期记忆**——它们管理的是"当前上下文里能放下什么"。但无论怎么修剪和摘要，上下文窗口终究是有限的。当一个任务横跨多个会话、持续数小时甚至数天时，短期记忆就撑不住了。

## 长期记忆：外部存储，按需召回

长期记忆的思路和短期记忆完全不同：**不把所有信息都塞进上下文，而是把信息存到外部，需要时再检索回来。**

最常用的实现是**向量数据库 + 检索增强生成（RAG）**。每次智能体完成一个子任务，就把关键信息（做了什么、发现了什么、决定了什么）编码成向量存到数据库里。后续需要时，用当前问题去检索最相关的记忆片段，只把这几段放回上下文。

更前沿的做法是把记忆操作本身做成工具——让智能体自己决定什么时候存、什么时候取、什么时候删。比如 Agentic Memory（AgeMem）框架就把"存储""检索""更新""摘要""丢弃"都暴露为工具调用，模型可以自主管理自己的记忆[[3]](#ref3)。

这听起来像给智能体装了一个外置硬盘。但硬盘本身不解决另一个问题：**智能体知道下一步该做什么吗？**

## 多步规划：记住"下一步"和"为什么"

没有规划能力的智能体，就像一个没有地图的探险家——每一步都基于当前视野做决定，但走几步之后可能已经偏离了目标。

ReAct 的原始设计是"一思考一行动"的循环：模型看到当前状态，决定下一步动作，执行，观察，再决定。这在短任务上工作得很好，但在长链条任务上，模型容易陷入局部最优——它看到当前这一步需要查资料，查完后又看到需要再查一个细节，再查完又发现需要确认一个事实……很快它就进入了"不停查资料、从不整合"的死循环[[4]](#ref4)。

多步规划解决这个问题的方法是：**在执行之前，先让模型生成一个完整的子任务列表，然后按顺序执行，每完成一步就更新剩余计划。**

比如用户说"帮我对比三家云服务商的定价"，模型先生成一个计划：

1. 搜索 AWS 定价页 → 提取关键数据
2. 搜索 Azure 定价页 → 提取关键数据
3. 搜索 GCP 定价页 → 提取关键数据
4. 对比三者的价格差异
5. 生成推荐报告

每执行完一步，模型就检查结果、更新后续步骤（比如发现某家没有按需定价，需要调整对比方式），然后继续。这个"先计划、再执行、每步后更新计划"的机制，就是 Pre-Act 和 ReCAP 等框架的核心思想[[5]](#ref5)[](#ref6)。

## 记忆与规划是一体两面

把记忆和规划放在一起看，你会发现它们解决的是同一个问题的两面：

- **记忆**解决的是"我做过什么，发现了什么"——保持状态的连续性
- **规划**解决的是"我接下来要做什么，为什么"——保持目标的连续性

没有记忆，规划会丢失上下文——模型记不住自己已经查到了什么，就会重复查同样的东西。没有规划，记忆会变成一团乱麻——模型记住了大量碎片信息，但不知道哪些是下一步需要的、哪些是已经过时的。

一个健壮的智能体需要两者兼备：**用短期记忆维护当前会话的连贯性，用长期记忆跨会话保留关键信息，用多步规划确保每一步都朝着最终目标前进，而不是在细节里打转。**

## 小结

这篇之后，你对智能体的理解应该从"模型 + 循环 + 工具"升级到更完整的图景：

- **上下文窗口是硬约束**——无论模型多强，它能一次"看到"的信息是有限的
- **短期记忆（修剪/摘要）**让窗口内的信息更精炼
- **长期记忆（向量检索/外部存储）**让重要信息跨会话持久化
- **多步规划**让智能体不迷失在局部细节中，保持对最终目标的跟踪

下一期我们会进入一个更实操的话题：当你注册多个工具时，模型怎么决定"该用哪个"？工具描述（tool schema）的写法会如何影响模型的选择——以及一些常见的翻车案例。

## 来源

1. [StatePlane: A Cognitive State Plane for Long-Horizon AI Systems Under Bounded Context — 讨论上下文窗口作为硬约束、状态管理而非历史存储的必要性](https://www.arxiv.org/pdf/2603.13644)
2. [OpenAI Cookbook: Context Engineering - Short-Term Memory Management with Sessions — Trimming 与 Summarization 两种上下文管理策略的详细实现与对比](https://developers.openai.com/cookbook/examples/agents_sdk/session_memory)
3. [Agentic Memory (AgeMem): Learning Unified Long-Term and Short-Term Memory Management for LLM Agents (ACL 2026) — 将记忆操作暴露为工具调用的统一框架](https://aclanthology.org/2026.acl-long.981/)
4. [Pre-Act: Multi-Step Planning and Reasoning Improves Acting in LLM Agents — 指出 ReAct 在长任务中的局限性，提出行动前先生成多步计划](https://arxiv.org/pdf/2505.09970)
5. [ReCAP: Recursive Context-Aware Reasoning and Planning for LLM Agents (NeurIPS 2025) — 分层规划框架，先产生完整子任务列表再执行并精炼](https://proceedings.neurips.cc/paper_files/paper/2025/file/88af3540325dd0b70617a9ab605f294d-Paper-Conference.pdf)

---

原文：https://pangzhengboyin.com/articles/agent-memory-and-planning-84ab7cf6

> **庞征博引** · 想学的，慢慢都会
>
> 庞征博引是把想学的东西写成连载的 AI 学习工具。说出想学什么，它会先了解你的基础，再把主题写成一篇篇 5–10 分钟能读完的文章；边读边问，接下来学什么跟着你走。这篇就是这样写出来的。
>
> 开始你自己的连载 → https://pangzhengboyin.com
