道招

OpenClaw + claude-mem 插件集成踩坑实录

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

OpenClaw + claude-mem 插件集成踩坑实录

环境: OpenClaw 2026.4.15 / claude-mem v1.0.0 / Ubuntu Linux / 8个 Discord Bot Agent


一、背景

claude-mem 是一个 AI 记忆插件,能自动记录 Agent 对话中的操作观察(observations)和会话摘要(session summaries),并在新对话时注入上下文,让 Agent 具备"记忆"能力。我们要把它集成到 OpenClaw 网关上,让 8 个 Discord Bot Agent 都能拥有持久记忆。


二、踩坑清单

坑 1:插件格式识别错误

现象: OpenClaw 把 claude-mem 识别为 bundle 格式而非 openclaw 格式,导致插件无法正常加载。

原因: OpenClaw 根据目录结构自动判断格式,不看 format 字段。直接从源码安装的目录结构不符合 OpenClaw 插件规范。

解决:

  • 删除源码安装的 /root/.openclaw/extensions/claude-mem/
  • 通过 npx claude-mem install 安装到 ~/.claude/plugins/marketplaces/thedotmack/
  • 手动重建 /root/.openclaw/extensions/claude-mem/ 目录,从 thedotmack 复制 openclaw.plugin.json + dist/index.js
  • 添加 "format": "openclaw" 字段

教训: OpenClaw 判断插件格式看目录结构,不看 format 字段。软链接结构不对会导致启动失败,需要物理复制文件。


坑 2:Worker 端口不匹配

现象: 插件无法连接到 worker。

原因: openclaw.json 中配置的 workerPort 是 37700,但 worker 实际运行在 37777。

解决: 将 openclaw.json 中 workerPort 改为 37777,与 worker 实际端口一致。

教训: 配置文件里的端口号必须和 worker 实际监听端口一致,不能凭记忆写。


坑 3:workspaceDir 不可用,Observation 全部被跳过

现象: 所有 observation persist 都被跳过,数据库记录为 0。日志显示 [claude-mem] Skipping observation persist because workspaceDir is unavailable。

原因: OpenClaw 在调用 tool_result_persist hook 时,只传了 agentId 和 sessionKey,没有传 workspaceDir。这是 OpenClaw 端的已知问题(GitHub Issue #74956,至今未修复)。claude-mem 插件在 workspaceDir 为空时直接 return,跳过整条记录。

解决: 修改插件代码 /root/.openclaw/extensions/claude-mem/dist/index.js: // 修改前

let y=n.workspaceDir;
if(!y){e.logger.warn("Skipping...");return}

// 修改后

let y=n.workspaceDir||`/root/.openclaw/workspace-${n.agentId||"default"}`;

教训: npx claude-mem install 或 npm run build 会覆盖这个修改,改完需要重新补。这是临时方案,等 OpenClaw 官方修复 Issue #74956 后可移除。


坑 4:AI Provider 不可用

现象 1: 使用 xiaomi/mimo-v2-flash:free 模型时报 404。

原因: 该模型在 OpenRouter 上不存在或已下线。

解决: 换成 deepseek/deepseek-v4-flash:free。

现象 2: 所有免费模型都被 429 限流(free-models-per-day 每日配额用完)。

原因: OpenRouter 免费模型有每日请求限额,8 个 bot 并发请求很快就耗尽。限流是账号级别的,换模型也没用。

解决: 改用 DeepSeek 官方 API(OpenAI 兼容格式),成本极低(约 $0.01/次)。

操作步骤:

  1. 修改 worker 代码,把硬编码的 OpenRouter URL 替换为 DeepSeek API URL:

  2. 配置 DeepSeek API Key 和模型:

    • CLAUDE_MEM_OPENROUTER_API_KEY = DeepSeek API Key
    • CLAUDE_MEM_OPENROUTER_MODEL = deepseek-chat

教训: 免费模型不适合多 bot 并发场景。DeepSeek 官方 API 便宜且稳定,推荐使用。修改 worker 代码后重启生效。


坑 5:Observation Feed 推送失败

现象: Observation feed 显示 Connection: disconnected,Telegram/Discord 频道收不到推送。

原因(Discord): 插件用 runtime.channel.discord.sendMessageDiscord() 推送,但 OpenClaw 插件运行时没有暴露这个 API,报 Channel "discord" not available in runtime。

原因(Telegram): 插件有两条推送路径:

  • Runtime channel — runtime.channel.telegram.sendMessageTelegram()(不可用,同 Discord)
  • Direct Telegram API — 直接调 https://api.telegram.org/bot{token}/sendMessage(需要配置 botToken) 之前没配 botToken,走了不兼容的路径

1。加上 botToken 后走路径

2,但 Telegram 群组 ID 格式不对(缺少 - 前缀),报 chat not found。

解决: 在 openclaw.json 的 observationFeed 配置中添加:

{
  "observationFeed": {
    "enabled": true,
    "channel": "telegram",
    "to": "-1001723551888",
    "botToken": "5329428908:AAHvXxVpZeRMDVeQTlCsCkwS2xXtZlyXaL8"
  }
}

注意: Telegram 群组 ID 必须带 - 前缀(如 -1001723551888),否则报 chat not found。Discord 推送目前不可用(OpenClaw 插件 API 不支持)。


三、最终配置

openclaw.json(claude-mem 部分)

{
  "plugins": {
    "entries": {
      "claude-mem": {
        "config": {
          "workerPort": 37777,
          "project": "openclaw",
          "syncMemoryFile": true,
          "observationFeed": {
            "enabled": true,
            "channel": "telegram",
            "to": "-1001723551888",
            "botToken": "<your-telegram-bot-token>"
          }
        }
      }
    }
  }
}

~/.claude-mem/.env

CLAUDE_MEM_PROVIDER=openrouter
CLAUDE_MEM_OPENROUTER_API_KEY=<your-deepseek-api-key>
CLAUDE_MEM_OPENROUTER_MODEL=deepseek-chat

Worker 代码修改


四、功能验证结果

全部通过 ✅

  • ✅ 观察记录写入数据库(27+ 条 observations)
  • ✅ 会话摘要自动生成(11+ 条 session_summaries)
  • ✅ 记忆注入 System Prompt(新对话时 Agent 能引用之前的内容)
  • ✅ Observation Feed 推送到 Telegram 群组
  • ❌ Discord 推送不可用(OpenClaw 插件 API 限制)

五、待解决问题

  1. workspaceDir 修改会被覆盖 — npx claude-mem install 或 npm run build 会重置插件代码,需重新补修改
  2. Discord 推送不可用 — 需等 OpenClaw 或 claude-mem 作者适配 runtime.channel API
  3. OpenClaw GitHub Issue #74956 — message:received event lacks workspaceDir/agentId,至今未修复
  4. Discord Slash Commands 超限 — 114 > 100 限制,claude-mem 命令可能被砍掉

六、成本估算

使用 DeepSeek 官方 API:

  • 每次 observation 生成约 3500 tokens(输入 + 输出)
  • 成本约 $0.012-0.017/次
  • 每天按 50-100 次估算,月成本约 $18-50
  • 比免费模型稳定,无限流困扰
更新时间:
上一篇:开始养龙虾OpenClaw过程记录下一篇:到顶了

相关文章

友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了