在 ClawdBot (MoltBolt / OpenClaw) 中增加记忆插件 PowerMem 的新方法
摘要:
本文介绍如何为开源个人AI助手 Moltbot(原 ClawdBot)集成基于 OceanBase 技术栈的长期记忆插件 PowerMem。通过 HTTP API 对接,PowerMem 为 Moltbot 提供智能信息抽取、艾宾浩斯遗忘曲线调度及多智能体隔离的记忆能力,显著增强其上下文持久化与自主决策水平,实现更类人的“数字员工”体验。
Moltbot 是什么?

Clawdbot(后更名为 Moltbot,又更名为 OpenClaw)是一款开源、以通讯为核心的AI智能体项目,运行在你自己的设备上,通过你已有的渠道(WhatsApp、Telegram、Slack、Discord、Google Chat、Signal、iMessage、Teams、WebChat 等)和你对话,支持语音、Canvas、多代理路由等。
简单点说:Moltbot 最大的特点是不仅能回答问题,更能真正“动手”操作你的电脑系统,执行命令、控制浏览器、管理文件,就像一个 7 x 24 小时在线的 “数字员工”。
官网 :https://www.molt.bot/
github 地址:https://github.com/moltbot/moltbot
Moltbot 部署
方式一:NPM 全局安装

方式二:源代码安装

上面两种安装方式二选一,因为我是走的源代码安装:
- pnpm moltbot onboard --install-daemon 初始化

- 同意风险提示
这里会让你确认风险。Moltbot 功能强大,能执行系统命令、读写文件、控制浏览器,但这也意味着如果配置不当或被滥用,可能会带来安全风险,请谨慎使用。
![]()
- 选择快速开始
- 配置 AI 模型授权,我手里头有qwen的

- 启动web
问个小问题:“查一下我的电脑型号”,很快 moltbot 回复了我机器的具体型号,虽然任务非常简单,但是还是挺惊喜的,距离“贾维斯”又进了一步了。

Moltbot 的原生记忆解读
Moltbot 的持久记忆可以概括为:「Markdown 文件为单一事实来源 + 可选向量/混合检索」。
存储形态:纯 Markdown 文件
事实来源:模型「记得」的内容 = 写入磁盘的 Markdown;不依赖模型内部状态。
默认布局(在 workspace 下,如 ~/clawd):
memory/YYYY-MM-DD.md:按日期的日志,仅追加;会话开始时读「今天 + 昨天」。
MEMORY.md(可选):长期、人工可维护的记忆;只在 main 私聊 session 加载,群聊不加载。
也就是说:
短期、按天的记录 → memory/YYYY-MM-DD.md
长期、精选事实 → MEMORY.md
持久化完全靠「写进这些文件」,而不是靠对话历史本身。
写入时机与「记忆冲刷」(Memory Flush)
平时:模型通过 工具(如 write、edit)或技能,把要记住的内容写到 MEMORY.md 或 memory/YYYY-MM-DD.md。
自动冲刷:当 session 快触发自动 compaction 前,Moltbot 会跑一轮 静默的 agent 回合,专门提醒模型「把该持久化的东西写进记忆文件」,并鼓励用 NO_REPLY 不回复用户,避免用户看到这次内部回合。
触发条件由 agents.defaults.compaction.memoryFlush 控制,例如在「剩余 token ≈ softThresholdTokens」时触发;每轮 compaction 只做一次 flush,并在 sessions.json 里记 memoryFlushCompactionCount 等,避免重复。
相关代码在 src/auto-reply/reply/memory-flush.ts:
shouldRunMemoryFlush():根据当前 token、context 上限、reserve、softThreshold 判断是否该 flush。

若 workspace 只读(如 sandbox workspaceAccess: "ro"),则不做 flush。
检索层:向量 + 可选 BM25 混合检索
数据流

实现方式
插件控制:默认使用 memory-core 插件(可设 plugins.slots.memory = "none" 关掉)。
工具:
memory_search:对 MEMORY.md 和 memory/*.md 做语义检索(按 ~400 token 分块、80 token 重叠),返回片段 + 文件路径 + 行号;可选开启 BM25 + 向量 的混合检索。
memory_get:按路径(及可选 from/lines)读取 MEMORY 或 memory 下的文件片段,供在检索后精确拉取,控制上下文长度。
向量索引:
对MEMORY.md 和 memory/*.md 建索引;索引按 agent 存于 ~/.clawdbot/memory/.sqlite(路径可配)。
支持远程 embedding(OpenAI、Gemini 等)或本地模型(如 GGUF);可选 sqlite-vec 做向量加速。
文件变更有 watcher(debounce),索引异步更新;若 embedding 模型/端点等变化,会整库重建索引。
混搜权重分配

最终分数的计算公式非常简单(src/memory/hybrid.ts):

这意味着:
向量搜索和文本三七开:最终得分 = 0.7×向量分 + 0.3×文本分(归一化后),偏重语义。
候选池放大 4 倍:先取 maxResults × 4 的候选再合并、排序、截到 maxResults,提高最终 Top‑N 质量。
Moltbot + powermem 方案

有 PowerMem VS 没有 PowerMem

集成 powermem 方案
集成方式:已插件的方式进行集成

集成方式:新增插件 extensions/memory-powermem,通过 HTTP 调用 PowerMem 已启动的 API 服务;不把 PowerMem 作为库嵌入 Moltbot 进程。
部署:用户需单独启动 PowerMem(如 powermem-server --host 0.0.0.0 --port 8000 或 Docker),并在 Moltbot 配置中填写 baseUrl(及可选 apiKey)。
代码结构
代码地址:https://github.com/ob-labs/moltbot-extension-powermem

在 Moltbot Agent 里会暴露这些能力:
memory_recall — 按查询搜索长期记忆
memory_store — 写入一条记忆(可选是否智能抽取)
memory_forget — 按记忆 ID 或按搜索条件删除
使用 powermem 插件
Step1: 前置条件
已安装 Moltbot(CLI + gateway 能正常用)
PowerMem 服务:需要单独安装并启动(见下文两种方式,任选其一)
若用 PowerMem 的「智能抽取」:需在 PowerMem 的 .env 里配置好 LLM + Embedding 的 API Key(如通义千问 / OpenAI)
Step2:把本插件装进 Moltbot
在你本机执行(路径改成你实际克隆的目录):

安装成功后,可用 moltbot plugins list 确认能看到 memory-powermem。
Step3:配置 Moltbot 使用本插件
编辑 Moltbot 的配置文件(常见位置:~/.clawdbot/config.json 或项目里的 moltbot.json),在 根级 增加或合并 plugins 段,并把记忆槽指向本插件,并写上 PowerMem 的地址。
示例(JSON):

说明:
baseUrl:PowerMem 的 HTTP 地址,不要加 /api/v1,就写 http://localhost:8000 或你的实际主机/端口。
若 PowerMem 开了 API Key 鉴权,在 config 里增加 "apiKey": "你的key"。
改完配置后重启 Moltbot gateway(或重启 Mac 菜单栏应用),配置才会生效。
Step4:验证插件与 PowerMem 连通
在终端执行:

若输出里没有报错、能看到健康状态,说明插件已连上 PowerMem。
Step5: 测试手动写入 + 搜索
我们来简单测试一下,用手动写入验证数据库是否有数据

若搜索能返回刚写的那条(或类似内容),说明「安装 PowerMem → 安装插件 → 配置 Moltbot」全流程已打通。
下面是执行结果:

看一眼数据库,妥妥的已经写入了

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/
浙公网安备 33010602011771号