别再无节制地烧 Token 了:OpenClaw 记忆插件详细安装指南

0 阅读13分钟

让 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 + LanceDB51,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.md 15,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_searchmemory_get 两个工具做语义检索或按路径读取。写入依赖 compaction 前的 memory flush 和 session-memory 钩子。

这套设计在文件即真相和可检索之间做了平衡,但有几个结构性问题:

  • Token 膨胀难控制。 MEMORY.md 整份进 system_prompt,不做检索,写什么、写多少完全依赖模型判断。历史会话一旦被整段写入,就会在后续检索中反复以大块形式出现。
  • 记忆没有独立身份。 记忆的存在形式是某段 Markdown 里的几行字,没有独立 ID、没有生命周期管理。你无法在系统层面回答这条记忆何时创建、被谁引用、是否过期。
  • 只增不减。 系统不会根据访问频率或时间自动清理,所有写入的内容在逻辑上都是永久的。
  • 多 Agent 难复用。 记忆绑在各自 workspace 的文件里,跨 Agent 共享只能靠复制文件。

PowerMem 针对这些问题做了不同的选择:

  • 智能抽取替代整段拷贝:写入的是 LLM 从对话中提炼的事实单元,不是原始对话
  • 艾宾浩斯遗忘曲线:高价值、常访问的记忆被巩固,低价值的随时间衰减
  • 混合检索:向量 + 全文 + 图检索,结合遗忘曲线排序,结果既相关又适龄
  • 记忆有 ID 有生命周期:每条记忆可关联 user_idagent_id,支持精确删除、跨 Agent 共享

插件把这些能力接入 OpenClaw,在不改变使用方式的前提下替换底层记忆机制。槽位切换,零侵入——随时可以切回 memory-core,原有文件不受影响。

安装 PowerMem 的详细步骤

上一篇文章没有详细介绍安装 PowerMem 的步骤,今天正好亡羊补牢,给大家一份儿可以直接让 OpenClaw 自行安装 PowerMem 的步骤。

社区的运营小编已经通过以下步骤,在自动和手动两条路径中都完成了 PowerMem 的安装。上手几乎负门槛,欢迎大家试用!

一键自动安装(推荐)

通过 ClawHub Skill 安装,OpenClaw 自动完成插件下载、配置和槽位切换:

clawhub.ai/teingi/inst…

# 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
deepseekDeepSeekdeepseek-chat
siliconflow硅基流动(聚合多家模型)按需选择
ollama本地部署(Ollama)按需选择
vllm本地部署(vLLM)按需选择
openaiOpenAI 兼容接口gpt-4
anthropicAnthropic 兼容接口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-v41536
siliconflow硅基流动按需选择按模型
ollama本地部署按需选择按模型
huggingfaceHuggingFace 本地模型按需选择按模型
openaiOpenAI 兼容接口text-embedding-ada-0021536

同理,兼容 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"
baseUrlHTTP 必填PowerMem 服务地址,如 http://localhost:8000
apiKeyPowerMem 启用 API Key 鉴权时填写
envFileCLI 模式:PowerMem 的 .env 路径
pmemPathCLI 模式: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卸载插件

常见问题

  1. 装了插件后,原来的 MEMORY.md 怎么办? 不受影响。插件通过 OpenClaw 的 memory 槽位机制接入,不修改也不删除原有文件。切回 memory-core 后,MEMORY.mdmemory/*.md 依然可用。
  2. 可以随时切回默认 memory-core 吗? 可以。把 openclaw.json 里的 slots.memory 改回 "memory-core",重启即可。零侵入,可逆。
  3. autoRecallautoCapture 可以单独关闭吗? 可以。在配置里把对应项设为 false。比如只想用手动的 memory_store / memory_recall 工具,关掉两个 auto 即可。
  4. 支持多个 Agent 共用一个 PowerMem 实例吗? 支持。通过 userIdagentId 配置项做隔离,每个 Agent 有独立命名空间,同一 PowerMem 实例可服务多个 Agent。
  5. 需要 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 交流群,和我们一起学习,一起玩耍~