让 Agent 的记忆更智能,让 Token 的预算更健康。
OpenClaw 的 Token 黑洞?
大家可能都在陆续发现,OpenClaw 存在一个隐蔽但致命的问题 —— 你用得越久,Token 就烧得越快,而你的钱包正在为大量无关记忆买单。

为什么会这样?OpenClaw 会默认把整份 MEMORY.md 每轮塞进 system_prompt—— 只做加载,不做检索,且随着使用无限增长。而 Memory 中大部分的内容,跟当前对话都毫无关系。
想象一下:你只是问 Agent「今天有什么任务?」,但系统却把过去几个月积累的所有诊断规范、使用统计、零散笔记全部加载进来。这就像为了找一把钥匙,每次都要把整个仓库搬出来。
所以我们最近对 Agent 的记忆痛点进行了一些探索,并为 OpenClaw 做的一个开源的 PowerMem 记忆插件 —— memory-powermem。装上这个插件之后,OpenClaw 的记忆机制变成:会话前按需检索相关记忆注入上下文,会话后智能抽取关键事实落库。只把该用的放进去,该记的存下来。
实测效果如下:
| 实验组 | 输入 Token 总量 |
|---|---|
| OpenClaw 默认(memory-core) | 24,611,530 |
| OpenClaw + LanceDB | 51,574,530 |
| OpenClaw + PowerMem 插件 | 4,533,508 |
同等任务下,Token 消耗降至默认方案的 18%。

装完 PowerMem 之后,你的 OpenClaw 会发生什么?

插件接管了 OpenClaw 的记忆读写,通过两条自动化链路工作:
自动召回(autoRecall)
每次会话开始前,插件用你发的第一条消息向 PowerMem 做语义检索,把 Top-K 条相关记忆格式化后注入上下文前部。Agent 从第一轮就能看到跟当前问题直接相关的历史事实,而不是把整份 MEMORY.md 丢进去。
自动抓取(autoCapture)
会话正常结束时,插件把本轮对话发给 PowerMem,PowerMem 用 LLM 从中抽取事实,去重、合并后落库。存下来的是提炼过的记忆单元,不是整段对话的拷贝。
两者形成闭环:会话前按需注入,会话后智能抽取。只把该用的放进上下文,该记的存进库。
三个工具
插件还向 Agent 暴露了三个工具:
memory_recall:按自然语言查询检索长期记忆memory_store:写入一条记忆(用户说「请记住……」时触发)memory_forget:按 ID 或搜索条件删除记忆(也可用于合规删除场景)
此外,通过 PowerMem 的 Dashboard(http://localhost:8000/dashboard/)可以在 Web 端浏览、筛选和统计所有记忆。记忆不再是黑盒里的上下文——你能看到系统记住了什么、什么时候记的、被检索过几次。运维时也可以用 openclaw ltm search 直接在终端查询。
Token 到底省在哪?
用两个例子直观感受。
假设 MEMORY.md 已经积累到 50KB(约 15,000 tokens),里面有 Agent 使用统计、Token 消耗记录、定时任务配置、诊断规范、各种零散笔记。
例一:「今天有没有要跑的定时任务?」
- 默认方案:
MEMORY.md整份进system_prompt(15,000 tokens 固定基线),再加上模型调用memory_search拉取的片段(约 1,500 tokens)。合计约 16,500 tokens/轮,其中绝大部分跟定时任务无关。 - PowerMem 插件:
autoRecall用这句话做查询,只返回跟定时任务和今天相关的精炼记忆。合计约 650 tokens/轮,省了 90%+。
例二:「上次说的诊断规范里,第一步是什么?」
- 默认方案:
MEMORY.md15,000 tokens + 诊断规范整章 2,000 tokens。实际有用的就第一步:检查网关健康这一句。合计 17,000+ tokens/轮。 - PowerMem 插件:
autoRecall返回诊断相关记忆。合计约 680 tokens/轮,省了 90%+。
核心原因
插件不是少调一次 API,而是用按需检索替代了整份 MEMORY.md 每轮必带。
算一笔账:假设上下文窗口 128K,输入单价约 2 美元 /1M tokens。每轮省 ~15,000 tokens,每天 50 轮对话,一个月仅记忆相关部分就能省约 45 美元。Agent 越多、MEMORY.md 越长、调用越频繁,节省越显著。
为什么这样设计?
做这个插件之前,我们先看了 OpenClaw 的记忆机制到底是怎么工作的。
OpenClaw 把记忆存在 Markdown 文件里:MEMORY.md(精选长期记忆)和 memory/YYYY-MM-DD.md(按日追加的日志)。模型通过 memory_search 和 memory_get 两个工具做语义检索或按路径读取。写入依赖 compaction 前的 memory flush 和 session-memory 钩子。
这套设计在文件即真相和可检索之间做了平衡,但有几个结构性问题:
- Token 膨胀难控制。
MEMORY.md整份进system_prompt,不做检索,写什么、写多少完全依赖模型判断。历史会话一旦被整段写入,就会在后续检索中反复以大块形式出现。 - 记忆没有独立身份。 记忆的存在形式是某段 Markdown 里的几行字,没有独立 ID、没有生命周期管理。你无法在系统层面回答这条记忆何时创建、被谁引用、是否过期。
- 只增不减。 系统不会根据访问频率或时间自动清理,所有写入的内容在逻辑上都是永久的。
- 多 Agent 难复用。 记忆绑在各自 workspace 的文件里,跨 Agent 共享只能靠复制文件。
PowerMem 针对这些问题做了不同的选择:
- 智能抽取替代整段拷贝:写入的是 LLM 从对话中提炼的事实单元,不是原始对话
- 艾宾浩斯遗忘曲线:高价值、常访问的记忆被巩固,低价值的随时间衰减
- 混合检索:向量 + 全文 + 图检索,结合遗忘曲线排序,结果既相关又适龄
- 记忆有 ID 有生命周期:每条记忆可关联
user_id、agent_id,支持精确删除、跨 Agent 共享
插件把这些能力接入 OpenClaw,在不改变使用方式的前提下替换底层记忆机制。槽位切换,零侵入——随时可以切回 memory-core,原有文件不受影响。
安装 PowerMem 的详细步骤
上一篇文章没有详细介绍安装 PowerMem 的步骤,今天正好亡羊补牢,给大家一份儿可以直接让 OpenClaw 自行安装 PowerMem 的步骤。
社区的运营小编已经通过以下步骤,在自动和手动两条路径中都完成了 PowerMem 的安装。上手几乎负门槛,欢迎大家试用!

一键自动安装(推荐)
通过 ClawHub Skill 安装,OpenClaw 自动完成插件下载、配置和槽位切换:
# 1. 登录 ClawHub(首次使用)
clawhub login
# 2. 一键安装skills
clawhub install teingi/install-powermem-memory-minimal
# 3. 查看已安装的技能
clawhub list
有了 Skill 之后,你就可以指挥你的 OpenClaw 去自动安装 memory-powermem 插件了:

当然你如果你还想省事,你可以直接扔一个 Skill 链接,让小"龙虾"帮你搞定安装,此时你只需要喝着咖啡,稍等片刻即可:
参考这个链接: https://clawhub.ai/teingi/install-powermem-memory-minimal,帮我安装一下memory-powermem插件,并做一下记忆的测试


手动安装
前置条件:本机需要 Python 3.10+(python3 --version 确认)。如果还没装:macOS 用 brew install python,Linux 用系统包管理器,Windows 从 python.org 下载安装(安装时勾选 Add to PATH)。
确认 OpenClaw 已经能用
终端执行 openclaw --version,并且你已经在 OpenClaw 里配好了平时对话用的模型(能正常回复即可)。
先检查 Python 版本(必须 ≥ 3.10)
在创建虚拟环境或执行 pip install 之前必须先确认版本,否则后续容易装失败或运行异常:
python3 --version
输出应为 Python 3.10.x、3.11.x、3.12.x 等(次版本号 ≥ 10)。也可用下面命令做一次硬性校验(不通过会报错退出):
python3 -c "import sys; assert sys.version_info >= (3, 10), '需要 Python 3.10 或更高'; print(sys.version.split()[0], 'OK')"
若版本不够:先升级本机 Python,或安装并使用 python3.11 / python3.12 等满足要求的解释器,并将下面步骤里的 python3 换成实际命令(例如 python3.12 -m venv ...)。
安装 PowerMem(Python)
建议用虚拟环境,然后安装:
mkdir ~/.openclaw/powermem
python3 -m venv ~/.openclaw/powermem/.venv
source ~/.openclaw/powermem/.venv/bin/activate
pip install powermem
装好后执行 pmem --version,能输出版本就行。
配置 PowerMem
在目录下 ~/.openclaw/powermem 新建 .env,配置 LLM 和 Embedding(数据库开箱即用,无需额外配置):
mkdir -p ~/.openclaw/powermem && cd ~/.openclaw/powermem
cat > .env << 'EOF'
TIMEZONE=Asia/Shanghai
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。
LLM 配置说明
PowerMem 需要配置 LLM(用于智能抽取)和 Embedding(用于向量检索),两者可以用不同供应商。内置支持的 LLM Provider:
| LLM_PROVIDER | 说明 | 推荐模型 |
|---|---|---|
qwen | 通义千问 | qwen-plus |
deepseek | DeepSeek | deepseek-chat |
siliconflow | 硅基流动(聚合多家模型) | 按需选择 |
ollama | 本地部署(Ollama) | 按需选择 |
vllm | 本地部署(vLLM) | 按需选择 |
openai | OpenAI 兼容接口 | gpt-4 |
anthropic | Anthropic 兼容接口 | claude-sonnet-4-20250514 |
大量国内供应商提供 OpenAI 或 Anthropic 兼容 API,可以直接用 openai / anthropic 作为 Provider,修改对应的 BASE_URL 指向实际服务地址即可。
OpenAI 兼容接入示例
适用于月之暗面、零一万物、百川等:
# 月之暗面 Kimi
LLM_PROVIDER=openai
LLM_API_KEY=your_moonshot_api_key
LLM_MODEL=moonshot-v1-8k
OPENAI_LLM_BASE_URL=https://api.moonshot.cn/v1
# 零一万物
LLM_PROVIDER=openai
LLM_API_KEY=your_yi_api_key
LLM_MODEL=yi-large
OPENAI_LLM_BASE_URL=https://api.lingyiwanwu.com/v1
Anthropic 兼容接入示例
适用于智谱等:
# 智谱 GLM
LLM_PROVIDER=anthropic
LLM_API_KEY=your_zhipu_api_key
LLM_MODEL=glm-4-plus
ANTHROPIC_LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4
原理:只要该服务兼容 OpenAI 的 /v1/chat/completions 或 Anthropic 的 /v1/messages 接口,就可以用对应 Provider + 自定义 BASE_URL 接入。
Embedding 配置说明
内置支持的 Embedding Provider:
| EMBEDDING_PROVIDER | 说明 | 推荐模型 | 维度 |
|---|---|---|---|
qwen | 通义千问 | text-embedding-v4 | 1536 |
siliconflow | 硅基流动 | 按需选择 | 按模型 |
ollama | 本地部署 | 按需选择 | 按模型 |
huggingface | HuggingFace 本地模型 | 按需选择 | 按模型 |
openai | OpenAI 兼容接口 | text-embedding-ada-002 | 1536 |
同理,兼容 OpenAI Embedding 接口的国内服务也可以用 openai + 自定义 OPENAI_EMBEDDING_BASE_URL 接入:
# 智谱 Embedding(OpenAI 兼容)
EMBEDDING_PROVIDER=openai
EMBEDDING_API_KEY=your_zhipu_api_key
EMBEDDING_MODEL=embedding-3
EMBEDDING_DIMS=2048
OPENAI_EMBEDDING_BASE_URL=https://open.bigmodel.cn/api/paas/v4
注意 EMBEDDING_DIMS 必须与模型实际输出维度一致,否则检索会出错。
完整配置参考 .env.example。
然后启动:
cd ~/.openclaw/powermem
source ~/.openclaw/powermem/.venv/bin/activate
powermem-server --host 0.0.0.0 --port 8000
验证:curl -s http://localhost:8000/api/v1/system/health
安装插件 memory-powermem
openclaw plugins install memory-powermem
安装后用 openclaw plugins list 确认 memory-powermem 存在。
修改配置(可选)
插件安装后自带一份配置(HTTP 模式,连接 localhost:8000),如果你的 PowerMem 服务就跑在本机默认端口,这一步可以跳过。
只有以下情况需要手动编辑 ~/.openclaw/openclaw.json:
- PowerMem 服务不在
localhost:8000(改baseUrl) - 想用 CLI 模式替代 HTTP 模式(改
mode) - 需要调整
autoRecall/autoCapture等行为
配置生效优先级:~/.openclaw/openclaw.json > 插件内置默认值。
HTTP 模式示例:
{
"plugins": {
"slots": { "memory": "memory-powermem" },
"entries": {
"memory-powermem": {
"enabled": true,
"config": {
"mode": "http",
"baseUrl": "http://localhost:8000",
"autoCapture": true,
"autoRecall": true,
"inferOnAdd": true
}
}
}
}
}
CLI 模式示例(不启 HTTP 服务,本机直接调用 pmem):
{
"plugins": {
"slots": { "memory": "memory-powermem" },
"entries": {
"memory-powermem": {
"enabled": true,
"config": {
"mode": "http",
"envFile": "~/.openclaw/powermem/.env",
"pmemPath": "~/.openclaw/powermem/.venv/bin/pmem",
"autoCapture": true,
"autoRecall": true,
"inferOnAdd": true
}
}
}
}
}
重启 gateway 并验证新的记忆插件生效
重启 OpenClaw gateway,执行:
openclaw gateway restart
检测 memory-powermem 记忆插件健康情况:
openclaw ltm health
无报错即表示插件已连通。可以再试一下写入和检索:
openclaw ltm add "一条测试记忆"
openclaw ltm search "测试"
如果检索能返回刚写入的内容,说明完整链路(PowerMem → 插件 → OpenClaw)已经通了。
遇到问题?
openclaw ltm health连不上:确认 PowerMem 服务在运行,curl http://localhost:8000/api/v1/system/health能返回 JSON- 插件不在列表里:
openclaw plugins list检查,确认执行过openclaw plugins install memory-powermem - 记忆写入了但检索不到:检查
.env里 Embedding 配置是否正确(API Key、模型名) - 更多排查:
openclaw plugins doctor可以诊断插件加载和配置问题
配置项一览
| 配置项 | 必填 | 说明 |
|---|---|---|
mode | 否 | "http"(默认)或 "cli" |
baseUrl | HTTP 必填 | PowerMem 服务地址,如 http://localhost:8000 |
apiKey | 否 | PowerMem 启用 API Key 鉴权时填写 |
envFile | 否 | CLI 模式:PowerMem 的 .env 路径 |
pmemPath | 否 | CLI 模式:pmem 可执行路径,默认 pmem |
userId | 否 | 多用户隔离,默认 openclaw-user |
agentId | 否 | 多 Agent 隔离,默认 openclaw-agent |
autoCapture | 否 | 会话结束后是否自动抽取写入记忆,默认 true |
autoRecall | 否 | 会话开始前是否按首条消息注入相关记忆,默认 true |
inferOnAdd | 否 | 写入时是否使用智能抽取,默认 true |
插件管理常用命令:
| 命令 | 说明 |
|---|---|
openclaw plugins list | 列出已安装插件,确认 memory-powermem 存在 |
openclaw plugins info memory-powermem | 查看插件详情 |
openclaw plugins doctor | 诊断插件加载和配置问题 |
openclaw plugins update memory-powermem | 更新插件到最新版 |
openclaw plugins uninstall memory-powermem | 卸载插件 |
常见问题
- 装了插件后,原来的
MEMORY.md怎么办? 不受影响。插件通过 OpenClaw 的 memory 槽位机制接入,不修改也不删除原有文件。切回memory-core后,MEMORY.md和memory/*.md依然可用。 - 可以随时切回默认
memory-core吗? 可以。把openclaw.json里的slots.memory改回"memory-core",重启即可。零侵入,可逆。 autoRecall和autoCapture可以单独关闭吗? 可以。在配置里把对应项设为false。比如只想用手动的memory_store/memory_recall工具,关掉两个 auto 即可。- 支持多个 Agent 共用一个 PowerMem 实例吗?
支持。通过
userId和agentId配置项做隔离,每个 Agent 有独立命名空间,同一 PowerMem 实例可服务多个 Agent。 - 需要 GPU 吗? 不需要。PowerMem 的 Embedding 和 LLM 调用走外部 API(OpenAI、通义千问等),本地只需要跑 Python 服务。

往期推荐
What's more?
OceanBase 社区上线新课程 ——《Easy Data x AI》,会结合 Data 这个话题,讲清 Data 在 GenAI / Agent 中扮演的重要角色,给大家呈现一个以数据为视角的完整 AI 认知框架。
课程介绍详见这篇公众号文章:OpenClaw 为啥越用越好用?

今晚(2025/03/25)我们会在社区的直播活动中,为大家介绍这个全新且免费的社区课程,欢迎各位老师预约直播,和我们共同学习~

最后,也欢迎各位对 AI 感兴趣的老师加入 Data x AI 交流群,和我们一起学习,一起玩耍~
