# 8. Plugin 說明 ### 8.1 memory-lancedb-pro(對話記憶) **功能**:自動從 OpenClaw 對話中捕捉偏好、事實、決策,並在後續對話中自動召回相關記憶。 **與 qmd-brain 的差異**: | | qmd-brain | memory-lancedb-pro | |---|-----------|-------------------| | 資料來源 | ~/home 的 markdown 文件 | OpenClaw 對話本身 | | 觸發方式 | 手動(「搜尋」「recall」) | 自動捕捉+自動召回 | | 儲存 | PostgreSQL pgvector | LanceDB(本地檔案) | | Embedding | llama-embed(本地 GPU) | llama-embed(本地 GPU) | | 作用域 | 單一 collection | per-agent(global + agent:xxx) | **設定摘要**: ```json5 // openclaw.json → plugins.entries.memory-lancedb-pro { "enabled": true, "config": { "embedding": { "provider": "openai-compatible", "apiKey": "ollama", "model": "nomic-embed-text-v1.5", "baseURL": "http://127.0.0.1:11435/v1", "dimensions": 768 }, "dbPath": "/home/selig/.openclaw/memory-lancedb-pro/data", "autoCapture": true, // 自動從對話提取記憶 "autoRecall": true, // 查詢前自動注入相關記憶 "captureAssistant": false, // 不記錄 assistant 的回覆 "retrieval": { "mode": "hybrid", // 向量 + BM25 混合 "vectorWeight": 0.7, "bm25Weight": 0.3, "rerank": "lightweight" // 不需外部 API }, "scopes": { "default": "global", "agentAccess": { "main": ["global", "agent:main"], "kaiwu": ["global", "agent:kaiwu"], "tiangong": ["global", "agent:tiangong"], "yucheng": ["global", "agent:yucheng"], "life-assistant": ["global", "agent:life-assistant"] } } } } ``` **相關路徑**: ``` ~/.openclaw/plugins/memory-lancedb-pro/ # plugin 原始碼 ~/.openclaw/memory-lancedb-pro/data/ # LanceDB 資料庫 ``` **維運注意**: - 改 plugin `.ts` 後必須清 jiti 快取:`rm -rf /tmp/jiti/`,再重啟 Gateway - 只改 `openclaw.json` config 不需清 jiti,直接重啟即可 - 舊版 `memory-lancedb` 已設為 `enabled: false`,不會衝突 - **`autoRecall` 的 `before_agent_start` hook 是同步阻塞的**。若 embedding API 無回應,所有 agent 會卡死。llama-embed 異常時必須立即關閉 `autoRecall`(見 04-known-issues.md §4.14、§4.15) - 容錯腳本 `~/clawd/scripts/embed-health.sh`(已實作,cron */30 分鐘)自動偵測 + 降級 + 通知 **記憶鐵律**(寫入 AGENTS.md,agent 每個 session 都會遵守): 1. 踩坑後立即存雙層記憶(Technical + Principle) 2. 記憶條目 < 500 字元,原子化,不存大段摘要 3. 遇錯先 `memory_recall` 再重試 4. 改 `.ts` 必清 `/tmp/jiti/`