---
title: "养龙虾5天血泪史：我的AI Agent为什么总失忆？OpenClaw 记忆调试全记录"
type: source
tags: [AI, Agent, OpenClaw, 记忆管理, 上下文压缩]
date: 2026-04-02
---

## Source File
- [[raw/微信公众号/养龙虾5天血泪史：我的AI Agent为什么总失忆？OpenClaw 记忆调试全记录.md]]

## Summary
- 核心主题：AI Agent（OpenClaw）的长期记忆问题诊断与解决
- 问题域：上下文窗口压缩导致的信息丢失、搜索失效、系统臃肿、模型切换失忆
- 方法/机制：内存刷新、混合搜索（BM25+向量+重排序）、检索指令、上下文修剪、系统提示词审计清理、交接协议
- 结论/价值：5天调试将系统提示词从 20,9652 令牌降至 9,349 令牌（减少 28%），总结出 10 条 OpenClaw 内存管理黄金法则

## Key Claims
- 上下文压缩会丢失细节信息（姓名、数字、具体决定），需要在压缩前将重要内容写入磁盘
- 纯语义搜索在专有名词、具体数字和确切短语上失败，混合搜索（关键词+向量+重排序）效果更好
- 检索不是自动的，需要在启动序列中添加明确的检索指令
- 系统提示词中的每个未使用技能都是每个消息上的开销，移除不使用的文件比添加更重要
- 模型切换时需要交接协议，否则新模型会以空白上下文窗口开始

## Key Quotes
> "这是设计使然。上下文窗口是有限的。但默认行为对一切一视同仁，这意味着你精心设计的第三条消息指令，和第七条消息的闲聊得到了相同待遇。"

> "信息存在"和"Agent使用信息"之间有区别。你需要两者。搜索基础设施处理第一部分。启动指令和检索习惯处理第二部分。

> "真正的修复不是添加更多文件。而是移除那些什么都不做的文件。"

> "写入纪律比读取纪律更重要。如果代理不将决定、结果和错误记录到磁盘，这些东西只存在于上下文窗口中。而上下文窗口会被压缩。"

## Key Concepts
- [[上下文压缩]]：OpenClaw 将旧消息压缩为摘要以腾出空间，但会丢失细节
- [[内存刷新]]：在压缩前将重要上下文写入磁盘的机制
- [[混合搜索]]：结合 BM25（关键词匹配）、向量嵌入（语义相似性）和重排序器的搜索策略
- [[检索指令]]：在启动序列中明确告诉 Agent 何时搜索的指令
- [[上下文修剪]]：通过 TTL 和保留策略主动清理旧上下文
- [[系统提示词审计]]：定期检查并移除未使用的技能和文件
- [[交接协议]]：模型切换前将当前上下文写入每日日志的规范

## Key Entities
- [[OpenClaw]]：运行在 Telegram 上的 AI Agent 管理工具，作者的助理"星辉"基于此构建
- [[QMD]]：内存搜索后端，结合 BM25、向量嵌入和重排序器
- [[SQLite]]：OpenClaw 默认的搜索后端，使用向量嵌入但在精确匹配上表现不佳

## Connections
- [[上下文压缩]] ← depends_on ← [[上下文窗口]]
- [[内存刷新]] ← fixes ← [[上下文压缩]]
- [[混合搜索]] ← replaces ← [[SQLite 向量搜索]]
- [[检索指令]] ← enables ← [[上下文记忆]]
- [[交接协议]] ← solves ← [[模型切换失忆]]
- [[系统提示词审计]] ← reduces ← [[系统开销]]

## Contradictions
- 与之前的[[养虾日记2：让Agent更懂你]]思路对比：
  - 养虾日记2侧重 self-improving skill 和双层记忆架构的主动学习
  - 本篇侧重被动防御机制（内存刷新、交接协议）和系统优化
  - 两者互补：主动学习减少错误，被动防御确保记忆不丢失