我移除了OpenClaw的默认Markdown内存,取而代之构建了一个严格的Node.js/Postgres API层。幻觉减少效果惊人。
摘要
作者用严格的Node.js/PostgreSQL API层替换了OpenClaw的默认扁平文件内存,通过强制类型化模式和不可变真实来消除上下文漂移和幻觉。
和许多人一样,在使用OpenClaw默认的[`MEMORY.md`](http://MEMORY.md)文件几周后,我遇到了巨大的障碍。背景是,我目前正在构建一个认知生产力分析器(全栈应用,用于跟踪深度工作、生成专注热力图以及进行倦怠风险预测)。我一直在用OpenClaw帮助我规划系统架构和编写项目文档。但对于这样一个复杂的项目,依赖OpenClaw的原生内存简直就是一场灾难。因为内存只是一个纯文本文件,它变成了一个幻觉引擎。代理会自信地回忆三周前已废弃的API设计作为绝对真理,或者完全忘记我们刚刚就数据库结构达成的系统权衡。当LLM将文本写入`.md`文件时,没有任何结构保证。因此,我完全禁用了`memory-core`插件,并构建了一个确定性的强制层。我没有让代理写入文件,而是启动了一个轻量级的Node.js/Express中间件,底层由严格的PostgreSQL数据库支持。我通过自定义工具调用将这个中间件暴露给OpenClaw。**以下是该架构的实际工作方式:**
* **严格的数据库模式:** 我设置了特定的Postgres表,用于存储`system_architecture_rules`、`api_design_decisions`和`feature_roadmaps`。
* **类型化的API契约:** 如果代理想要记住一个设计权衡或记录一个新的API路由,它*必须*执行一个`POST /memory/architecture`工具调用,并携带一个严格的JSON有效载荷,该载荷会根据我的TypeScript接口进行验证。
* **不可变真实:** 当我向OpenClaw询问项目相关问题时,工具层会从Postgres快速检索,并在代理开始推理之前将*精确的、类型化的*规则注入上下文窗口。
**权衡:** 是的,每次工具调用会增加约~150ms的延迟,而且我花了一个周末来编写处理API路由的后端逻辑。
**结果:** 上下文漂移降至绝对零。代理再也无法幻觉数据库模式,因为它物理上受限于Postgres中的关系数据。如果更新了架构规则,它会覆盖数据库中的旧行,意味着代理永远不会被庞大的markdown日志中的冲突笔记所困惑。
我认为我们正将代理内存视为一个“存储”问题,而实际上它是一个“API设计”问题。你不能仅仅给LLM一个空白文本文档,并期望它在数百次迭代中准确维护状态。你必须强制它通过严格的工具边界来分类其思维。
有人已经完全放弃原生内存插件而转向外部数据库了吗?如果其他人也遇到这个头痛的问题,我正在考虑开源这个Node仓库。
相似文章
我做了一个本地 Markdown 记忆库,OpenClaw 可通过 MCP 查询
作者介绍了 Synapse——一个 MIT 许可的本地 Markdown 记忆库,面向 AI 智能体。它能导入 ChatGPT/Claude 导出的数据,并可通过 stdio MCP 服务器供 OpenClaw 查询,默认保持数据在本地磁盘、离线运行。
你的 Openclaw 使用什么记忆?
一位开发者讨论了使用 Engram 为 Hermes 代理构建自定义记忆插件,该插件将新信息与现有记忆进行协调,以避免过时和重复,并向 OpenClaw 社区询问他们记忆使用的情况。
我正在构建一个常驻内存代理,它会全天监视我的屏幕,而它的记忆存储在 SQLite 而非模型中。来告诉我它在哪些地方会出问题。
作者描述了他正在构建一个在 Mac 上本地运行的常驻内存代理,它能监视屏幕并可选地监听音频,将所有内容通过 OCR 或转录转换为结构化 Markdown 存储在 Obsidian 库中,并以 SQLite 作为数据来源。他邀请大家对设计选择提出反馈,例如使用 SQLite 而非向量/图数据库、成本以及此类系统的持久性。
这有点像我……
关于一个为Claude构建的自托管持久记忆系统的详细概述,该系统使用MCP、SQL Server和本地嵌入,实现跨会话的叙事连续性和身份一致性。
分层项目记忆
一位开发者分享了一个用于AI辅助开发的免费/开源系统,该系统采用分层markdown文档和工作流程,具备人工闸门和代码图谱记忆等功能,以改进项目管理。