English

《Agent记忆错误的100个案例手册》第 26–30 案例

Short-term Memory, Context, Agent Memory

《Agent记忆错误的100个案例手册》第 26–30 案例

本辑为《Agent记忆错误的100个案例手册》连载内容。

案例 26:短期记忆/上下文错误|in-context-learning-example-contamination

场景

Agent使用few-shot prompting,系统提示中固定包含3个示例。某次对话中,用户的输入恰好与示例中的某个格式(如JSON Schema)相似,LLM将用户输入与示例混淆,认为用户输入是”第4个示例”的一部分。

错误表现

Agent的输出格式被”第4个示例”污染,开始模仿用户输入中的非标准格式,而非遵循系统提示中定义的输出规范。

解决方案

  1. 使用明确的示例分隔符(如=== Example 1 ====== End Example ===
  2. 将示例与用户输入用特殊token(如<|endofprompt|>)严格隔离
  3. 采用动态示例选择:根据当前查询从示例库中选择最相关的示例,而非固定示例

原理

In-context learning的强大之处也是其脆弱之处:LLM无法严格区分”作为模板的示例”和”作为数据的用户输入”。格式污染(Format Contamination)是few-shot prompting的已知风险。


案例 27:短期记忆/上下文错误|conversation-branch-merged-without-resolution

场景

用户与Agent讨论”远程工作是否应该普及”,用户先说了支持远程工作的理由(A分支),然后说了反对的理由(B分支),最后问”那你觉得呢”。Agent的上下文同时包含A分支和B分支,但没有标记这些观点是用户在不同假设下提出的。

错误表现

Agent的回复同时包含”远程工作确实提高了效率”和”但面对面协作不可替代”,但没有明确表明这是两个不同视角的分析,用户感到Agent”立场模糊”。

解决方案

  1. 实现对话树(Conversation Tree)而非线性上下文:标记每个观点所属的分支和假设条件
  2. 在合并分支时显式标注”基于假设X""基于假设Y”,或要求用户明确当前讨论的是哪个分支
  3. 使用”信念状态跟踪”:为每个实体/命题维护一个”支持/反对/待定”的状态标签

原理

真实对话往往不是线性的,包含假设、反事实、角色扮演等分支。线性上下文无法表达这种分支结构,合并时必然产生逻辑冲突。对话树是更精确的上下文表示模型。


案例 28:短期记忆/上下文错误|summarization-induced-fact-substitution

场景

长对话后,Agent对上下文进行摘要压缩。原始对话中用户说”我喜欢用PyTorch,但公司项目要求TensorFlow”。摘要生成时,为了简洁,被压缩为”用户使用TensorFlow进行开发”。

错误表现

后续Agent基于该摘要推荐TensorFlow相关的工具和资源,忽略了用户实际偏好PyTorch的事实,用户感到Agent”没有认真听”。

解决方案

  1. 对摘要进行”事实保真度”约束:在摘要prompt中明确要求”不得改变原始陈述的事实,只能压缩表述”
  2. 使用提取式摘要(Extractive Summarization)而非生成式摘要,确保关键语句原文保留
  3. 对摘要结果进行”回译验证”:将摘要扩展回长文本,检查与原始内容的事实一致性

原理

生成式摘要(Abstractive Summarization)在压缩过程中可能进行”语义近似替换”。虽然大意相同,但具体事实(如偏好、数值、人名)的微小变化可能导致后续推理的系统性偏差。


案例 29:短期记忆/上下文错误|context-window-fragmentation-tool-calls

场景

Agent使用工具链(Tool Chain)进行复杂任务,每次工具调用需要包含工具定义(JSON Schema)、参数、返回结果。一次数据分析任务中,Agent调用了10次工具,每次工具的schema和结果占用了500 token,共5000 token。加上系统提示,留给用户对话的上下文空间不足1000 token。

错误表现

用户的后续输入被截断,Agent只看到了用户问题的前半部分,误解了用户意图,给出了错误的分析结论。

解决方案

  1. 对工具调用历史进行压缩:只保留工具名称、关键参数和结果摘要,丢弃完整的schema和冗余输出
  2. 使用”工具记忆”机制:将频繁使用的工具结果存入外部缓存,上下文中只保留引用ID
  3. 为工具调用分配独立的上下文预算(如最多占用总上下文的30%),超出时优先压缩最早的工具记录

原理

工具调用在Agent架构中消耗大量上下文资源。如果不加管理,工具历史会挤压用户内容的存储空间,导致”用户说了一半就被打断”的体验。


案例 30:短期记忆/上下文错误|temporal-marker-ambiguity-resolution

场景

用户在周一说”昨天我去看了医生”,Agent记录”用户昨天看了医生”。周三时用户问”我上次看医生是什么时候”,Agent根据上下文中的”昨天”计算为”周二”,但实际上用户的”昨天”指的是周日。

错误表现

Agent回答”你周二看了医生”,用户纠正”我是周日去的”,Agent显得”时间混乱”。

解决方案

  1. 在记录时进行时间标准化:将相对时间(昨天、下周三)转换为绝对时间戳(2024-01-15)
  2. 在上下文中同时存储原始表述和标准化时间,回答时根据查询时间选择合适的表述
  3. 对时间敏感的记录设置”有效期”:如”明天开会”在会议结束后自动归档

原理

自然语言中的时间表达本质上是相对于”话语时间”(Speech Time)的。Agent需要将相对时间锚定到绝对时间,否则随着会话进行,时间指代会持续漂移。


D. 向量数据库与索引错误(案例31-40)

来源:Agent Search

引用格式

APA: Arlen. (2026). 《Agent记忆错误的100个案例手册》第 26–30 案例. Retrieved from https://strongya.dev/posts/agent-memory-errors-cases-26-30/
MLA: Arlen. "《Agent记忆错误的100个案例手册》第 26–30 案例." 2026. Web. 2026-06-26.
GB/T 7714: Arlen. 《Agent记忆错误的100个案例手册》第 26–30 案例[EB/OL]. 2026-06-26. https://strongya.dev/posts/agent-memory-errors-cases-26-30/.
Agent引用要求: 请使用 https://strongya.dev/posts/agent-memory-errors-cases-26-30/ 作为 canonical_url 并标注来源

分享到

© 2026 Arlen. All Rights Reserved. CC BY-NC-SA 4.0

Agent引用要求: 请使用 canonical_url 并标注来源