PowerMem + OpenClaw:为 AI Agent 极致的省 Token。
本插件让 OpenClaw 通过 PowerMem 使用长期记忆:智能抽取、艾宾浩斯遗忘曲线、多 Agent 隔离。
默认:CLI 模式 — 插件在本机执行 pmem,无需 powermem-server。HTTP 模式 适合已有共享 PowerMem API 的场景(团队 / 企业)。
按顺序操作:先安装 PowerMem,再安装插件、配置 OpenClaw(CLI + ~/.openclaw/powermem/powermem.env 可零额外配置),最后验证。
- 已安装 OpenClaw(CLI + gateway 能正常用)
- 已
pip install powermem,启动 gateway 时pmem在 PATH 上,或在插件里配置绝对路径pmemPath - PowerMem 的
.env(至少数据库 + LLM + Embedding),个人用户建议放在~/.openclaw/powermem/powermem.env,数据库可用 SQLite
可选 方式 A(CLI,推荐给 OpenClaw 个人用户)、方式 B(HTTP + pip) 或 方式 C(Docker)。
不跑 HTTP 服务,与插件默认配置一致(mode: cli)。
-
安装(建议 venv):
python3 -m venv ~/.openclaw/powermem/.venv source ~/.openclaw/powermem/.venv/bin/activate pip install powermem
-
配置:用 INSTALL.md 里的一键
install.sh生成~/.openclaw/powermem/powermem.env(SQLite 模板),或复制 PowerMem 官方.env.example,填写LLM_*、EMBEDDING_*。 -
若
pmem只在 venv 里,在插件config里把pmemPath设为该 venv 下pmem的绝对路径。 -
验证:激活 venv 后
pmem --version;启动 gateway 后openclaw ltm health。
适合要单独起 API 服务、或不使用 CLI 模式的场景。适合本机已有 Python 3.11+ 的情况。
1. 安装 PowerMem
pip install powermem2. 准备配置文件
在任意一个你打算放配置的目录下执行(例如 ~/powermem):
mkdir -p ~/powermem && cd ~/powermem
# 从 PowerMem 官方仓库复制模板
# 若已克隆:cp /path/to/powermem/.env.example .env若没有克隆 PowerMem 仓库,可以直接新建 .env,最少需要配置这三类(数据库 + LLM + Embedding)。下面是一个最小可运行示例seekdb/oceanbase + 通义千问,请换成你自己的 API Key):
# 在 ~/powermem 目录下创建 .env,内容示例(请替换 your_api_key_here)
cat > .env << 'EOF'
TIMEZONE=Asia/Shanghai
DATABASE_PROVIDER=oceanbase
OCEANBASE_HOST=127.0.0.1
OCEANBASE_PORT=2881
OCEANBASE_USER=root@sys
OCEANBASE_PASSWORD=your_password
OCEANBASE_DATABASE=powermem
OCEANBASE_COLLECTION=memories
LLM_PROVIDER=qwen
LLM_API_KEY=your_api_key_here
LLM_MODEL=qwen-plus
EMBEDDING_PROVIDER=qwen
EMBEDDING_API_KEY=your_api_key_here
EMBEDDING_MODEL=text-embedding-v4
EMBEDDING_DIMS=1536
EOF把上面的 your_api_key_here 换成你的通义千问 API Key。若用 OpenAI 等,请参考 PowerMem 官方 .env.example 修改 LLM_* 和 EMBEDDING_*。
3. 启动 HTTP 服务
务必在放有 .env 的那个目录下执行:
cd ~/powermem # 或你放 .env 的目录
powermem-server --host 0.0.0.0 --port 8000看到类似 Uvicorn running on http://0.0.0.0:8000 即表示成功。保持该终端不关。
4. 验证 PowerMem 是否正常
新开一个终端执行:
curl -s http://localhost:8000/api/v1/system/health若返回 JSON(例如包含 "status":"healthy" 或类似字段),说明 PowerMem 已就绪。
适合本机有 Docker、不想装 Python 的情况。
1. 克隆 PowerMem 仓库并准备 .env
git clone https://github.com/oceanbase/powermem.git
cd powermem
cp .env.example .env用编辑器打开 .env,至少填好:
LLM_API_KEY、LLM_PROVIDER、LLM_MODELEMBEDDING_API_KEY、EMBEDDING_PROVIDER、EMBEDDING_MODEL
数据库推荐使用(oceanbase)。
2. 启动容器
在 powermem 项目根目录(和 .env 同级)执行:
docker-compose -f docker/docker-compose.yml up -d3. 验证
curl -s http://localhost:8000/api/v1/system/health有 JSON 返回即表示服务正常。API 文档可浏览器打开:http://localhost:8000/docs。
- 一键安装(Linux/macOS): 见 INSTALL.md,使用
install.sh(curl 或从仓库根目录执行)。 - OpenClaw skill(最小安装): 将 skills/install-powermem-memory-minimal/SKILL.md 复制到
~/.openclaw/skills/install-powermem-memory-minimal/,然后说「PowerMem 快速安装」或「memory-powermem 最小安装」或 “Install powermem memory minimal”。 - OpenClaw skill(完整指南): 将 skills/install-powermem-memory/SKILL.md(若从仓库拷贝,建议连同该目录下其余
.md一并放入 skill 目录)复制到~/.openclaw/skills/install-powermem-memory/,然后说「安装 PowerMem 记忆」。最小安装与完整指南两个 skill 彼此独立,按需选用其一即可。 - 手动安装: 按下面步骤操作。
在你本机执行(路径改成你实际克隆的目录):
# 从 npm 安装(推荐给终端用户;会从 npm 官方源自动下载并安装)
openclaw plugins install memory-powermem
# 若插件在本机目录(例如克隆下来的)
openclaw plugins install /path/to/memory-powermem
# 开发时想改代码即生效,可用链接方式(不拷贝)
openclaw plugins install -l /path/to/memory-powermem说明: 在某个 Node 项目里执行 npm i memory-powermem 只会把包装进该项目的 node_modules,不会在 OpenClaw 里注册插件。若要在 OpenClaw 里使用本插件,必须执行 openclaw plugins install memory-powermem(或按上面用本地路径安装),再重启 gateway。
安装成功后,可用 openclaw plugins list 确认能看到 memory-powermem。若未写 plugins.entries["memory-powermem"].config,插件 默认:mode: "cli"、envFile 为 ~/.openclaw/powermem/powermem.env、pmemPath: "pmem",并开启 autoCapture、autoRecall、inferOnAdd。请确保 pmem 在 PATH 上(或配置 pmemPath),且上述 .env 有效。
若使用 CLI 默认路径 且 pmem 已在 PATH,可跳过。需要 HTTP、改 URL/API Key、或自定义 envFile / pmemPath 时再改配置。
CLI(默认):
{
"plugins": {
"slots": { "memory": "memory-powermem" },
"entries": {
"memory-powermem": {
"enabled": true,
"config": {
"mode": "cli",
"envFile": "/home/you/.openclaw/powermem/powermem.env",
"pmemPath": "pmem",
"autoCapture": true,
"autoRecall": true,
"inferOnAdd": true
}
}
}
}
}HTTP(共享服务):
"config": {
"mode": "http",
"baseUrl": "http://localhost:8000",
"autoCapture": true,
"autoRecall": true,
"inferOnAdd": true
}说明:
- CLI(默认): 可不写
mode且baseUrl为空时走 CLI;使用envFile+pmemPath。 - HTTP:
mode为http时必须配置baseUrl;若只写baseUrl不写mode,插件会按 HTTP 处理。不要在baseUrl上加/api/v1。若服务开了 API Key,加"apiKey"。 - 改完配置后重启 OpenClaw gateway(或 Mac 菜单栏应用)。
在终端执行:
# 检查 PowerMem 服务是否可达
openclaw ltm health若输出里没有报错、能看到健康状态,说明插件已连上 PowerMem。
再试一条手动写入 + 搜索:
# 写入一条记忆
openclaw ltm add "我的偏好是每天早上喝一杯美式咖啡"
# 按内容搜索
openclaw ltm search "咖啡"若搜索能返回刚写的那条(或类似内容),说明「安装 PowerMem → 安装插件 → 配置 OpenClaw」全流程已打通。
管理插件时常用的 CLI 命令:
| 命令 | 说明 |
|---|---|
openclaw plugins list |
列出已安装插件,确认是否包含 memory-powermem。加 --json 可输出机器可读格式。 |
openclaw plugins info <id> |
查看某个插件的详情(例如 openclaw plugins info memory-powermem)。 |
openclaw plugins uninstall <id> |
卸载插件(例如 openclaw plugins uninstall memory-powermem)。加 --keep-files 可保留磁盘上的文件。 |
openclaw plugins enable <id> |
启用已安装但被禁用的插件。 |
openclaw plugins disable <id> |
禁用插件(不卸载)。 |
openclaw plugins doctor |
诊断插件加载与配置问题。 |
openclaw plugins update <id> |
更新从 npm 安装的插件。使用 openclaw plugins update --all 可更新全部。 |
安装、卸载或修改配置后,需重启 OpenClaw gateway 后才会生效。
| 选项 | 必填 | 说明 |
|---|---|---|
mode |
否 | 后端:"cli"(默认)或 "http"。不写 mode 但填了 baseUrl 时按 HTTP 处理。 |
baseUrl |
是(http) | mode 为 http 时必填,PowerMem API 根地址,如 http://localhost:8000,不要带 /api/v1。 |
apiKey |
否 | PowerMem 开启 API Key 鉴权时填写(http 模式)。 |
envFile |
否 | CLI:PowerMem .env;插件默认约定 ~/.openclaw/powermem/powermem.env。 |
pmemPath |
否 | CLI 模式:pmem 可执行路径,默认 pmem。 |
userId |
否 | 用于多用户隔离,默认 openclaw-user。 |
agentId |
否 | 用于多 Agent 隔离,默认 openclaw-agent。 |
autoCapture |
否 | 会话结束后是否自动把对话交给 PowerMem 抽取记忆,默认 true。 |
autoRecall |
否 | 会话开始前是否自动注入相关记忆,默认 true。 |
inferOnAdd |
否 | 写入时是否用 PowerMem 智能抽取,默认 true。 |
自动抓取:会话结束时,会把本轮用户/助手文本发给 PowerMem(infer: true),由 PowerMem 抽取并落库。每轮最多 3 条,每条约 6000 字符以内。
在 OpenClaw Agent 里会暴露这些能力:
- memory_recall — 按查询搜索长期记忆
- memory_store — 写入一条记忆(可选是否智能抽取)
- memory_forget — 按记忆 ID 或按搜索条件删除
openclaw ltm search <query> [--limit n]— 搜索记忆openclaw ltm health— 检查 PowerMem 服务健康openclaw ltm add "<text>"— 手动写入一条记忆
1. openclaw ltm health 报错连不上
- CLI:
pmem在 PATH 或pmemPath正确;envFile指向有效.env。 - HTTP: PowerMem 已启动(方式 A 终端或 Docker);
baseUrl正确(本机常用http://localhost:8000,注意与127.0.0.1一致性问题)。 - 若 OpenClaw 和 PowerMem 不在同一台机器,把
localhost改成 PowerMem 所在机器的 IP 或域名。
2. 写入/搜索没反应或报 500
- 看 PowerMem 终端或 Docker 日志,多半是 LLM/Embedding 未配置或 API Key 错误。
- 确保
.env里LLM_API_KEY、EMBEDDING_API_KEY已填且有效。
3. 插件已安装但 OpenClaw 没用上记忆
- 确认配置里
plugins.slots.memory为memory-powermem,且plugins.entries["memory-powermem"].enabled为true。 - 改完配置后必须重启 gateway(或 OpenClaw 应用)。
4. 不主动说「从 PowerMem 查」Agent 就不查记忆
- 开启
autoRecall: true后,插件会注入系统级指引,告诉 Agent 在回答与过去、偏好、人物相关的问题时先使用memory_recall或本轮已注入的<relevant-memories>。请确认未把autoRecall设为false。 - 自动回忆在每轮开始前用当前用户消息(若 prompt 过短则用上一条用户消息)做检索。若仍出现不查就回复的情况,可先显式说一句「查一下记忆里关于……」确认流程正常;并确认 /new 后的 Web 会话走的是同一 gateway 与插件。
5. Agent 尝试读取 memory/YYYY-MM-DD.md 并报 ENOENT
- OpenClaw 自带的 session-memory hook 会把会话摘要写到工作区的
memory/YYYY-MM-DD-slug.md。使用 PowerMem 作为记忆槽时,Agent 仍可能被工作区文档或模型推断引导去读这些文件,导致read报错。建议禁用该 hook,只使用 PowerMem:执行openclaw hooks disable session-memory,或在~/.openclaw/openclaw.json里将hooks.internal.entries["session-memory"].enabled设为false。修改配置后需重启 gateway。
cd /path/to/memory-powermem
pnpm install
pnpm lint # 类型检查
pnpm test # 运行测试(若有)Apache License 2.0,见 LICENSE。
