OpenClaw 插件加载修复总结

1. 问题现象

之前 OpenClaw Gateway 启动时无法加载 memory-lancedb-pro 插件。错误日志提示:
plugin path not found: /app/plugins/memory-lancedb-pro

2. 原因分析

(1)为什么相对路径无法识别?

~/.openclaw/openclaw.json 配置中,插件的加载路径被写为了相对路径:"paths": ["plugins/memory-lancedb-pro"]

由于 OpenClaw 是以 Docker 容器的形式运行的,程序在容器内部运行时有自己的工作目录。当程序尝试读取相对路径时,它会尝试相对于容器本身的当前工作目录去寻找,导致找不到插件源文件。

通过 docker inspect 检查 Docker 的挂载点:

  • 宿主机路径: /home/bsuperstation/.openclaw
  • 容器内路径: /home/node/.openclaw

所以在宿主机中位于 ~/.openclaw/workspace/plugins/memory-lancedb-pro 的代码,在容器内正确的绝对路径应该是 /home/node/.openclaw/workspace/plugins/memory-lancedb-pro

(2)向量维度不匹配 (Dimension Mismatch)

修复路径问题后,依然报错:
Embedding dimension mismatch: expected 1024, got 768

由于配置中指定了使用 Ollama 的 nomic-embed-text 模型作为 Embedding 模型,该模型输出的向量维度固定是 768 维,而原配置文件中错误地声明为要求 1024 维。

3. 修复步骤

第一步:修正插件加载路径为容器内的绝对路径

1
2
3
4
5
  "plugins": {
"load": {
- "paths": ["plugins/memory-lancedb-pro"]
+ "paths": ["/home/node/.openclaw/workspace/plugins/memory-lancedb-pro"]
},

第二步:修正向量维度参数

1
2
3
4
5
6
7
8
  "embedding": {
"apiKey": "ollama-local",
"model": "nomic-embed-text",
"baseURL": "http://108.238.244.225:11434/v1",
- "dimensions": 1024,
+ "dimensions": 768,
"taskQuery": "retrieval.query"
}

第三步:重启服务验证

1
docker restart openclaw-openclaw-gateway-1

验证成功:
[gateway] memory-lancedb-pro: initialized successfully (embedding: OK, retrieval: OK, mode: hybrid, FTS: enabled)