乐于分享
好东西不私藏

PowerMem 外脑接入OpenClaw

PowerMem 外脑接入OpenClaw

接上一篇文章当 AI 学会做梦:Hermes Agent 记忆系统的诞生札记

这篇文章不讲原理,只讲怎么用

一、环境准备

1.1 依赖清单

在开始之前,确保你已经有了这些东西:

依赖
说明
验证方式
Python 3.10+
PowerMem CLI 基于 Python
python3 --version
pip
Python 包管理
pip --version
PowerMem
记忆数据库核心
见下方安装
pmem CLI
命令行工具
见下方安装
OpenClaw
AI Agent 运行时
已安装并能正常运行
定时任务 Cron Job
定时触发沉淀
系统 crontab 已配置

1.2 安装 PowerMem 和 pmem CLI

# 安装 PowerMem pip install powermem  # 验证安装 pmem --version # 输出:PowerMem 1.0.0 即为安装成功

1.3 配置 PowerMem 连接

PowerMem 依赖 .env 配置文件。安装完成后,运行交互式初始化:

# --- PowerMem + 火山引擎 Coding Plan  ---# 开发测试推荐使用 SQLite,纯本地无需额外数据库服务DATABASE_PROVIDER=sqliteSQLITE_PATH=./data/powermem_dev.dbSQLITE_ENABLE_WAL=trueSQLITE_TIMEOUT=30# Enable sparse vectorSPARSE_VECTOR_ENABLE=true# LLM:火山引擎 Coding Plan(ark-code-latest)LLM_PROVIDER=openaiLLM_API_KEY=  # 换成你的 Coding Plan KeyLLM_MODEL=ark-code-latestLLM_TEMPERATURE=0.7LLM_MAX_TOKENS=8192# Coding Plan 专用端点OPENAI_LLM_BASE_URL=https://ark.cn-beijing.volces.com/api/coding/v3LLM_TOP_P=1.0# Embedding:远程 Ollama(bge-m3:latest)用户要求测试远程欧拉玛EMBEDDING_PROVIDER=ollamaEMBEDDING_API_KEY=ollamaEMBEDDING_MODEL=embeddinggemma:latestOLLAMA_EMBEDDING_BASE_URL=http://10.229.190.87:11434EMBEDDING_DIMS=1024OCEANBASE_EMBEDDING_MODEL_DIMS=1024
pmem config init
# 停掉本机 ollama(避免干扰)systemctl stop ollama# 验证远程连接是否正常pmem config test# 期望输出:三项全 PASS(base) root@raspberrypi:~# systemctl stop ollama.service (base) root@raspberrypi:~# pmem config test[INFO] Testing configuration connectivity...[INFO] Testing database connection...[SUCCESS] Database: Connected[INFO] Testing LLM connection...[SUCCESS] LLM: Connected[INFO] Testing embedder connection...[SUCCESS] Embedder: Connected (dims=768)Results: 3 passed, 0 failed, 0 skipped
按提示填写:LLM Provider(选择你使用的模型服务商)、Embedder Provider(建议选择 Ollama,本地运行更稳定)、数据库连接信息。

⚠️ 注意:Ollama Embedder 只认以下两个变量名:

ollama_base_url=http://你的ollama地址:11434 # 或者 OLLAMA_EMBEDDING_BASE_URL=http://你的ollama地址:11434

❌ 不是OPEN_EMBEDDING_BASE_URL(这个变量名 PowerMem 不识别,会被静默忽略)

1.4 验证配置是否正确

# 测试所有组件连接 pmem config test  # 应该看到三项全部 PASS: # ✓ Database connection: SUCCESS # ✓ LLM connection: SUCCESS # ✓ Embedder connection: SUCCESS

如果 Embedder 报 FAIL,先确认 Ollama 服务是否在跑,再检查变量名是否正确。

二、安装 Skill

2.1 获取 Skill 包

把你的memory-powermem-integration 目录放到 OpenClaw 的 skills 目录下:

# 克隆到 Hermes Agent skills 目录(已集成到 Hermes 工作流)git clone https://github.com/tomson5566/tomson_skills.git \  ~/.hermes/skills/devops

2.2 Skill 目录结构

memory-powermem-integration/├── SKILL.md                      # 主技能定义(Hermes Agent Skill)├── README_FLOW.md                # 完整流程详解├── scripts/│   ├── memory_sync.py            # 记忆同步脚本(Cron Job 调用)│   ├── backup_powermem.sh        # 数据库备份脚本(每周日执行)│   ├── tag_extractor.py          # 标签提取规则(参考)│   └── read_memory.py            # 记忆读取工具├── references/│   ├── pmem_cli_commands.md      # pmem CLI 命令参考│   ├── pmem_add_behavior.md      # pmem add 实测行为记录│   ├── pmem_troubleshooting.md  # 故障排查指南│   └── memory_schema.md          # PowerMem SQLite 表结构└── README.md                     # 项目说明文档

2.3 配置 pmem 路径

Skill 默认的 pmem 路径是 /root/miniconda3/bin/pmem。如果你的环境不同,编辑 SKILL.md 中的 pmem_path 配置:

config:   pmem_path: /你的路径/pmem  # 改成你实际的 pmem 路径

2.4 配置定时任务

每周五凌晨 1 点——记忆沉淀:

# 编辑 crontab crontab -e  # 添加这行 0 1 * * 5 /你的路径/memory-powermem-integration/scripts/memory_sync.py

每周日凌晨 1 点——备份:

# 继续编辑 crontab,添加 0 1 * * 0 /你的路径/memory-powermem-integration/scripts/backup_powermem.sh

三、使用方法

3.1 按需检索——”你还记得上次那个问题吗”

当你需要 AI 回忆之前的对话内容时,直接说:

  • “你还记得上次那个部署问题吗?”
  • “搜一下之前关于 PowerMem 配置的记忆”
  • “上次我们聊的那个方案,现在进展到哪了?”

背后发生的事:

  1. AI 识别到这是记忆检索请求
  2. 调用 pmem memory search [关键词] 搜索相关记忆
  3. 返回匹配结果,包含内容摘要和 10 个标签
  4. AI 根据结果判断是否需要获取完整内容

效果示例:

# 用户输入你:搜一下之前关于 192.168.3.230 服务器配置的记忆# AI 返回AI:找到了2条相关记忆:记忆1 [P1] - 2026-05-23标签:服务器 | 配置 | ollama | 成功内容:192.168.3.230 服务器 qwenpaw 环境变量配置完成记忆2 [P1] - 2026-05-24标签:服务器 | 配置 | 环境变量 | 成功内容:qwenpaw用户环境变量已设置,ollama模型已配置

3.2 定时沉淀——每周五自动”做梦”

这是 Skill 的核心功能。

触发条件:

每周五凌晨 1 点,Cron Job 自动检查 /root/.hermes/memories/ 下的 MEMORY.md 和 USER.md 有没有新修改。

如果有新内容,AI 会:

  1. 读取文件内容
  2. 生成中文摘要(每条记忆 100 字以内)
  3. 分析内容提取 10 个标签
  4. 调用 pmem memory add 写入 PowerMem

10 个标签的定义:

标签
说明
示例
tag1_time
时间
2026-05-24
tag2_topicA
主主题
服务器、AI、运维
tag3_topicB
次主题
部署、安全、模型
tag4_keywordA
高频词
Tomson、qwenpaw
tag5_keywordB
技术栈
ollama、minimax
tag6_keywordC
工具/服务
hermes、openclaw
tag7_project
相关项目
192.168.3.230、Halo
tag8_action
动作类型
安装、配置、排查
tag9_status
状态
成功、失败、待处理
tag10_priority
优先级
P0、P1、P2

手动触发沉淀:

# 如果你想立刻执行一次沉淀,不等周五 python3 /你的路径/memory-powermem-integration/scripts/memory_sync.py

3.3 备份和恢复

手动备份:

# 执行备份,输出到 /root/memory/ bash /你的路径/memory-powermem-integration/scripts/backup_powermem.sh  # 查看备份文件 ls -la /root/memory/ # 应该看到: # powermem_20260531_010000.db      ← SQLite 数据库备份 # memories_20260531_010000.json   ← JSON 导出  # 恢复备份 pmem manage restore -i /root/memory/memories_20260531_010000.json

四、效果展示

4.1 按需检索的实际效果

场景:

我上周和 AI 讨论了 PowerMem 的配置问题,结论已经沉淀进 PowerMem。

本周对话:

# 用户输入你:那个 PowerMem 配置问题,你还记得吗?# AI 返回AI:记得。你当时遇到的是 OLLAMA_EMBEDDING_BASE_URL 变量名的问题。 PowerMem 的 Ollama Embedder 只识别 ollama_base_url 和 OLLAMA_EMBEDDING_BASE_URL, 你之前配置的 OPEN_EMBEDDING_BASE_URL 被静默忽略了,导致连接的是本机而不是远程。 你已经在 /root/.env 里新增了正确的变量名。  这条记忆的时间是 2026-05-24,优先级 P1,状态是"已修复"

没有这个 Skill 之前:我需要重新描述背景、重新发文档、重新解释问题。

有了这个 Skill 之后:AI 直接知道我在说哪件事,不需要我重复。

4.2 定时沉淀的实际效果

周五凌晨 1 点,Cron Job 触发后,检查到 MEMORY.md 有新内容,执行沉淀:

[2026-05-31 01:00:01] 开始记忆沉淀 [2026-05-31 01:00:01] 检查文件修改时间... [2026-05-31 01:00:02] MEMORY.md 有新修改,开始处理 [2026-05-31 01:00:03] 生成摘要,提取标签 [2026-05-31 01:00:04] 调用 pmem memory add... [2026-05-31 01:00:07] 写入成功,ID: 713685783025811456 [2026-05-31 01:00:07] 记忆沉淀完成,写入 3 条新记忆

本周的对话精华,自动进了 PowerMem,变成长期记忆。

4.3 标签检索的精准度

因为每条记忆都有 10 个标签,检索可以很精准:

# 按项目检索 pmem memory search "192.168.3.230" --limit 5  # 按动作类型检索(所有"配置"相关记忆) pmem memory search "配置" --limit 10  # 按状态检索(所有"失败"相关的排查记录) pmem memory search "失败" --limit 10

五、常见问题

Q: --json 参数会让 add 命令卡住怎么办?

A:不要用 --json 参数。直接用纯文本输出模式:

pmem memory add "内容摘要" --metadata '...' --no-infer

Q: 一条 add 生成了多条记忆,正常吗?

A:正常,这是 PowerMem 的语义拆分机制。如果你不想要拆分,加 --no-infer 参数:

pmem memory add "内容摘要" --no-infer

Q: 写入很慢怎么办?

A:加 --no-infer 跳过 LLM 推理。耗时从 35~90 秒降到 3~6 秒。

Q: 备份文件太多怎么办?

A:Skill 默认保留 4 周备份,超出时间的备份会在下次运行时自动清理。手动清理:

ls -la /root/memory/ rm /root/memory/powermem_20260501_*.db

六、总结

这个 Skill 做的是一件事:

让 OpenClaw 的记忆从”硬盘”变成”海马体”。

  • 按需检索:随时搜,随时用,不需要重复发文档
  • 定时沉淀:每周五自动把对话精华沉淀进 PowerMem
  • 自动备份:每周日备份数据库,资产不丢

安装不复杂,配好环境、放好目录、设好定时任务,就能用。

项目地址:

https://github.com/tomson5566/tomson_skills/tree/main/memory-powermem-integration