PowerMem 外脑接入OpenClaw

这篇文章不讲原理,只讲怎么用。
一、环境准备
1.1 依赖清单
在开始之前,确保你已经有了这些东西:
|
|
|
|
|---|---|---|
|
|
|
python3 --version |
|
|
|
pip --version |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 配置的记忆” -
“上次我们聊的那个方案,现在进展到哪了?”
背后发生的事:
-
AI 识别到这是记忆检索请求 -
调用 pmem memory search [关键词]搜索相关记忆 -
返回匹配结果,包含内容摘要和 10 个标签 -
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 会:
-
读取文件内容 -
生成中文摘要(每条记忆 100 字以内) -
分析内容提取 10 个标签 -
调用 pmem memory add写入 PowerMem
10 个标签的定义:
|
|
|
|
|---|---|---|
tag1_time |
|
|
tag2_topicA |
|
|
tag3_topicB |
|
|
tag4_keywordA |
|
|
tag5_keywordB |
|
|
tag6_keywordC |
|
|
tag7_project |
|
|
tag8_action |
|
|
tag9_status |
|
|
tag10_priority |
|
|
手动触发沉淀:
# 如果你想立刻执行一次沉淀,不等周五 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
夜雨聆风