标签 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 全局安装

方式二:源代码安装

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

2.     同意风险
提示这里会让你确认风险。Moltbot 功能强大,能执行系统命令、读写文件、控制浏览器,但这也意味着如果配置不当或被滥用,可能会带来安全风险,请谨慎使用。

3.     选择快速开始
4.     配置 AI 模型授权,我手里头有qwen的

5.     启动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/  

想象一下这样的场景:你正在和一个 AI 医疗助手聊天,它刚刚帮你记录了头痛的症状。第二天,你再次咨询时,它竟然完全忘记了你是谁,还要你重新介绍一遍病情…… 是不是很抓狂?这就是传统 AI 应用的 “金鱼记忆” 问题 —— 每次对话都是 “初次见面”,永远记不住历史信息。

今天,为大家介绍一款我最近开发的两款 AI 记忆存储产品 —— PowerMem + seekdb,一个让 AI 拥有 “超强记忆力” 的持久化记忆系统。

传统的 AI 对话系统每次会话都是 “失忆” 的。用户每次都需要重复说明自己的信息、偏好和历史,体验割裂、效率低下。开发者想要构建 “有记忆的 AI”,却面临数据持久化、智能提取、多模态支持、权限控制等诸多复杂问题,往往需要从零开始构建记忆系统,重复造轮子。

PowerMem 应运而生 —— 一款开源的 AI 记忆管理 SDK,致力于解决 80% 的 AI 记忆管理问题。我们相信,通过提供一套完整、易用、高性能的记忆管理解决方案,可以让开发者专注于业务创新,而不是重复造轮子。

不是简单的 "记事本",而是 "最强大脑"

PowerMem 是什么?

PowerMem 建立在这样一个原则之上:AI 系统应该能够像人类一样随着时间积累知识和经验。这一理念驱动了 PowerMem 设计和实施的每个方面:

  • 智能提取和保留:PowerMem 通过 LLM 模型进行记忆的提取,根据重要性和相关性确定哪些信息值得记住。

  • 上下文理解:PowerMem 维护跨交互的上下文以实现有意义的个性化体验。

  • 持续学习:PowerMem 使 AI 系统能够从每次交互中学习并随着时间的推移而改进。

  • 自适应遗忘:像人类记忆一样,PowerMem 实现了自适应遗忘机制以防止信息过载。


PowerMem 的核心特性包括:

  1. 开发者友好:轻量级接入方式,提供简洁的 Python SDK / MCP 支持,让开发者快速集成到现有项目中

  2. 智能记忆管理:记忆的智能提取,通过 LLM 自动从对话中提取关键事实,智能检测重复、更新冲突信息并合并相关记忆,确保记忆库的准确性和一致性。举个例子:还记得上学时老师让你划重点吗?PowerMem 就是 AI 的学霸助手,不需要你手动标注,AI 自动帮你划重点。

     # 用户说了一堆话
    
    messages = [
    
    {"role": "user", "content": "Hi, my name is Alice. I'm a software engineer at Google."},
    
    {"role": "assistant", "content": "Nice to meet you, Alice!"},
    
    {"role": "user", "content": "I love Python programming and machine learning."}
    
    ]
    
    # PowerMem 自动提取关键事实
    
    memory.add(messages=messages, user_id="alice", infer=True)
    
    # 结果:自动提取出 4 条关键记忆 # 1. Name is Alice # 2. Is a software engineer at Google # 3. Loves Python programming # 4. Loves machine learning 
  3. 艾宾浩斯遗忘曲线:基于认知科学的记忆遗忘规律,自动计算记忆保留率并实现时间衰减加权,优先返回最近且相关的记忆,让 AI 系统像人类一样自然 “遗忘” 过时信息。还记得那个著名的遗忘曲线吗?PowerMem 把它用在了 AI 记忆上,简单来说,就像人类大脑一样,重要的、最近的信息记得更牢。

    • 最近的信息:权重高,优先召回

    • 久远的信息:权重低,自然衰减

    • 过时信息:自动清理,保持记忆库新鲜

  4. 多智能体支持:智能体共享 / 隔离记忆,为每个智能体提供独立的记忆空间,支持跨智能体记忆共享和协作,通过作用域控制实现灵活的权限管理。

  5. 多模态支持:不仅记得文字,还看得懂图片。文本、图像、语音记忆:自动将图像和音频转换为文本描述并存储,支持多模态混合内容(文本 + 图像 + 音频)的检索,让 AI 系统理解更丰富的上下文信息。

     # 存储图片记忆
    
    memory.add(
    
    messages=[{"role": "user", "content": "这是我的X光片"}],
    
    images=["xray_image.jpg"],
    
    user_id="patient_001"
    
    )
    
    # 搜索时,文字 + 图片一起检索
    
    results = memory.search("X光片结果", user_id="patient_001")
    
    
  6. 深度优化数据存储:支持子存储(Sub Stores),通过子存储实现数据的分区管理,支持自动路由查询,显著提升超大规模数据的查询性能和资源利用率。

  7. 混合检索:融合向量检索、全文搜索和图检索的多路召回能力,通过 LLM 构建知识图谱并支持多跳图遍历,精准检索复杂的记忆关联关系。

seekdb 是什么?

OceanBase seekdb 是 OceanBase 打造的一款开发者友好的 AI 原生数据库产品,专注于为 AI 应用提供高效的混合搜索能力,支持向量、文本、结构化与半结构化数据的统一存储与检索,并通过内置 AI Functions 支持数据嵌入、重排与库内实时推理。 seekdb 在继承 OceanBase 原核心引擎高性能优势与 MySQL 全面兼容特性的基础上,通过深度优化数据搜索架构,为开发者提供更符合 AI 应用数据处理需求的解决方案。

PowerMem + seekdb (1 + 1>2 ) 的持久化记忆解决方案

PowerMem 的架构旨在模块化、可扩展,包括如下层:

  • 核心记忆引擎 (core):管理所有记忆操作,包括智能记忆处理器、分层记忆管理、全生命周期记忆管理模块

  • 模型层:提供与流行 LLM 和嵌入模型的无缝集成

  • 存储层:支持多种存储后端的灵活接口(特别地,我们在 seekdb /oceanbase 上做了深度适配,充分利用了 seekdb 的混搜能力)。

所以,PowerMem + seekdb 的组合不是简单的数据存储,而是一个真正智能的持久化记忆系统

1 分钟快速上手:让 AI 秒变 "记忆大师"

第一步:安装


pip install powermem

第二步:使用

 from powermem import Memory, auto_config

# 自动从 .env 加载配置

memory = Memory(config=auto_config())

# 添加记忆(自动提取事实)

memory.add("用户喜欢喝咖啡", user_id="user123")

# 搜索记忆(智能检索)

results = memory.search("用户偏好", user_id="user123")

就这么简单!4 行代码,让你的 AI 拥有 "记忆力"!

结语:

还在为 AI 的 “金鱼记忆” 而烦恼吗?

还在为 Token 成本居高不下而头疼吗?

还在为检索准确率低而困扰吗?

是时候给 AI 装个 “外挂记忆” 了~


相关资源


📌 转载信息
原作者:
Zlatan
转载时间:
2026/1/1 16:03:58