← 返回
AI技术

一次失败的压缩清空了我的AI会话,于是我为它构建了无限记忆

✍️ zhirenhun 📅 2026/9/18 👁 17 阅读 ⏱ 7 分钟
一次失败的压缩清空了我的AI会话,于是我为它构建了无限记忆

那是一个周二的早晨。我的 OpenCode 会话上下文已经膨胀到 378,755 个 token——几周来交易机器人开发的全部成果。我敲下了 /compact。模型当场卡壳:只输出了 3 个 token,摘要一片空白,finish: length。压缩失败了,而我当时用的记忆插件偏偏把所有东西都存在同一次压缩调用内部。结果:彻底失忆。记忆清零。这个会话相当于被切除了前额叶。

这次翻车让我悟出了智能体记忆设计中唯一真正要紧的一条规则:永远不要只把记忆存在压缩调用里。要边干活边增量保存——这样压缩失败的代价,只是丢一份摘要,而不是丢掉你的全部过往。

于是我开发了 opencode-mempalace-persistence(v2.1.0,MIT 协议),构建在 MemPalace 之上:每一轮对话都会自动存入本地的向量记忆宫殿——全程零云端——再回注到未来的提示词中,跨压缩跨会话。

工作原理

安装(3 步)

1. 安装 MemPalace:

uv tool install "mempalace>=3.3.5"
mempalace init ~/opencode-memory

2. 插件 + MCP 服务器,配置位于 ~/.config/opencode/opencode.json

{
  "plugin": ["opencode-mempalace-persistence"],
  "mcp": {
    "mempalace": {
      "type": "local",
      "command": ["mempalace-mcp"],
      "enabled": true
    }
  }
}

3. Identity:在 ~/.mempalace/identity.txt 里写上两行关于你的介绍,重启 OpenCode。搞定——从此以后它会自动保存:每 15 条消息存一次,空闲时、退出时、每次压缩前也都会存。

为什么用 MemPalace 而不是摘要?

摘要工具提炼完就丢弃。MemPalace 存的是逐字记录的完整对话,外加一个带时间有效性事实的知识图谱(情况一变,就用 kg_supersede/kg_invalidate 来更新)。新会话问"为什么认证用 Postgres 而不是 Redis?"时,它拿到的是当初的决策及其完整推理——连"拍板的工程师当时正在休假"这种细节都原样保留。

相关链接

如果你也在用 OpenCode,而压缩焦虑让你夜不能寐,不妨试试——欢迎提 issue 和 PR。你现在跑的是什么样的记忆方案?我真心好奇,别人的技术栈里最后都留下了些什么。

——

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

showdev ai opensource tutorial