Loading...
Loading...
Expert skill for memory-lancedb-pro — a production-grade LanceDB-backed long-term memory plugin for OpenClaw agents with hybrid retrieval, cross-encoder reranking, multi-scope isolation, and smart auto-capture.
npx skill4agent add aradotso/trending-skills memory-lancedb-pro-openclawSkill by ara.so — Daily 2026 Skills collection.
memory-lancedb-procurl -fsSL https://raw.githubusercontent.com/CortexReach/toolbox/main/memory-lancedb-pro-setup/setup-memory.sh -o setup-memory.sh
bash setup-memory.shbash setup-memory.sh --dry-run # Preview changes only
bash setup-memory.sh --beta # Include pre-release versions
bash setup-memory.sh --uninstall # Revert config and remove plugin
bash setup-memory.sh --selfcheck-only # Health checks, no changesopenclaw plugins install memory-lancedb-pro@betanpm i memory-lancedb-pro@betaCritical: When installing via npm, you must add the plugin's absolute install path toinplugins.load.paths. This is the most common setup issue.openclaw.json
openclaw.json{
"plugins": {
"load": {
"paths": ["/absolute/path/to/node_modules/memory-lancedb-pro"]
},
"slots": { "memory": "memory-lancedb-pro" },
"entries": {
"memory-lancedb-pro": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai-compatible",
"apiKey": "${OPENAI_API_KEY}",
"model": "text-embedding-3-small"
},
"autoCapture": true,
"autoRecall": true,
"smartExtraction": true,
"extractMinMessages": 2,
"extractMaxChars": 8000,
"sessionMemory": { "enabled": false }
}
}
}
}
}autoCapturesmartExtractionautoRecallextractMinMessages: 2sessionMemory.enabled: false{
"plugins": {
"slots": { "memory": "memory-lancedb-pro" },
"entries": {
"memory-lancedb-pro": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai-compatible",
"apiKey": "${OPENAI_API_KEY}",
"model": "text-embedding-3-small",
"baseURL": "https://api.openai.com/v1"
},
"reranker": {
"provider": "jina",
"apiKey": "${JINA_API_KEY}",
"model": "jina-reranker-v2-base-multilingual"
},
"extraction": {
"provider": "openai-compatible",
"apiKey": "${OPENAI_API_KEY}",
"model": "gpt-4o-mini"
},
"autoCapture": true,
"captureAssistant": false,
"autoRecall": true,
"smartExtraction": true,
"extractMinMessages": 2,
"extractMaxChars": 8000,
"enableManagementTools": true,
"retrieval": {
"mode": "hybrid",
"vectorWeight": 0.7,
"bm25Weight": 0.3,
"topK": 10
},
"rerank": {
"enabled": true,
"type": "cross-encoder",
"candidatePoolSize": 12,
"minScore": 0.6,
"hardMinScore": 0.62
},
"decay": {
"enabled": true,
"model": "weibull",
"halfLifeDays": 30
},
"sessionMemory": { "enabled": false },
"scopes": {
"agent": true,
"user": true,
"project": true
}
}
}
}
}
}| Provider | | Notes |
|---|---|---|
| OpenAI / compatible | | Requires |
| Jina | | Requires |
| Gemini | | Requires |
| Ollama | | Local, zero API cost, set |
| DashScope | | Requires |
| SiliconFlow | | Requires |
{
"embedding": { "provider": "jina", "apiKey": "${JINA_API_KEY}", "model": "jina-embeddings-v3" },
"reranker": { "provider": "jina", "apiKey": "${JINA_API_KEY}", "model": "jina-reranker-v2-base-multilingual" },
"extraction": { "provider": "openai-compatible", "apiKey": "${OPENAI_API_KEY}", "model": "gpt-4o-mini" }
}{
"embedding": { "provider": "openai-compatible", "apiKey": "${OPENAI_API_KEY}", "model": "text-embedding-3-small" },
"reranker": { "provider": "siliconflow", "apiKey": "${SILICONFLOW_API_KEY}", "model": "BAAI/bge-reranker-v2-m3" },
"extraction": { "provider": "openai-compatible", "apiKey": "${OPENAI_API_KEY}", "model": "gpt-4o-mini" }
}{
"embedding": { "provider": "ollama", "baseURL": "http://localhost:11434", "model": "nomic-embed-text" },
"extraction": { "provider": "ollama", "baseURL": "http://localhost:11434", "model": "llama3" }
}openclaw config validate
openclaw gateway restart
openclaw logs --follow --plain | grep "memory-lancedb-pro"memory-lancedb-pro: smart extraction enabled
memory-lancedb-pro@1.x.x: plugin registered# Stats overview
openclaw memory-pro stats
# List memories (with optional scope/filter)
openclaw memory-pro list
openclaw memory-pro list --scope user --limit 20
openclaw memory-pro list --filter "typescript"
# Search memories
openclaw memory-pro search "coding preferences"
openclaw memory-pro search "database decisions" --scope project
# Delete a memory by ID
openclaw memory-pro forget <memory-id>
# Export memories (for backup or migration)
openclaw memory-pro export --scope global --output memories-backup.json
openclaw memory-pro export --scope user --output user-memories.json
# Import memories
openclaw memory-pro import --input memories-backup.json
# Upgrade schema (when upgrading plugin versions)
openclaw memory-pro upgrade --dry-run # Preview first
openclaw memory-pro upgrade # Run upgrade
# Plugin info
openclaw plugins info memory-lancedb-proenableManagementTools: truememory_recall// Agent usage pattern
const results = await memory_recall({
query: "user's preferred code style",
scope: "user", // "agent" | "user" | "project" | "global"
topK: 5
});memory_storeawait memory_store({
content: "User prefers tabs over spaces, always wants error handling",
category: "preference", // "profile" | "preference" | "entity" | "event" | "case" | "pattern"
scope: "user",
tags: ["coding-style", "typescript"]
});memory_forgetawait memory_forget({ id: "mem_abc123" });memory_updateawait memory_update({
id: "mem_abc123",
content: "User now prefers 2-space indentation (changed from tabs on 2026-03-01)",
category: "preference"
});enableManagementTools: truememory_statsconst stats = await memory_stats({ scope: "global" });
// Returns: total count, category breakdown, decay stats, db sizememory_listconst list = await memory_list({ scope: "user", limit: 20, offset: 0 });self_improvement_logawait self_improvement_log({
event: "user corrected indentation preference",
context: "User asked me to switch from tabs to spaces",
improvement: "Updated coding-style preference memory"
});self_improvement_extract_skillawait self_improvement_extract_skill({
conversation: "...",
domain: "code-review",
skillName: "typescript-strict-mode-setup"
});self_improvement_reviewawait self_improvement_review({ days: 7 });smartExtraction: true| Category | What gets stored | Example |
|---|---|---|
| User identity, background | "User is a senior TypeScript developer" |
| Style, tool, workflow choices | "Prefers functional programming patterns" |
| Projects, people, systems | "Project 'Falcon' uses PostgreSQL + Redis" |
| Decisions made, things that happened | "Chose Vite over webpack on 2026-02-15" |
| Solutions to specific problems | "Fixed CORS by adding proxy in vite.config.ts" |
| Recurring behaviors, habits | "Always asks for tests before implementation" |
retrieval.mode: "hybrid"vectorWeightbm25WeightcandidatePoolSizehardMinScore"retrieval": {
"mode": "hybrid",
"vectorWeight": 0.7,
"bm25Weight": 0.3,
"topK": 10
},
"rerank": {
"enabled": true,
"type": "cross-encoder",
"candidatePoolSize": 12,
"minScore": 0.6,
"hardMinScore": 0.62
}"vector""bm25""hybrid""scopes": {
"agent": true, // Memories specific to this agent instance
"user": true, // Memories tied to a user identity
"project": true // Memories tied to a project/workspace
}// Get only project-level memories
await memory_recall({ query: "database choices", scope: "project" });
// Get user preferences across all agents
await memory_recall({ query: "coding style", scope: "user" });
// Global recall across all scopes
await memory_recall({ query: "error handling patterns", scope: "global" });"decay": {
"enabled": true,
"model": "weibull",
"halfLifeDays": 30
}# 1. Backup first — always
openclaw memory-pro export --scope global --output memories-backup-$(date +%Y%m%d).json
# 2. Preview schema changes
openclaw memory-pro upgrade --dry-run
# 3. Run the upgrade
openclaw memory-pro upgrade
# 4. Verify
openclaw memory-pro statsCHANGELOG-v1.1.0.md# Check plugin is recognized
openclaw plugins info memory-lancedb-pro
# Validate config (catches JSON errors, unknown fields)
openclaw config validate
# Check logs for registration
openclaw logs --follow --plain | grep "memory-lancedb-pro"plugins.load.pathsplugins.slots.memory"memory-lancedb-pro"plugins.entriesautoRecallautoRecallfalsetrue"autoRecall": truememory# Clear jiti transpile cache
rm -rf ~/.openclaw/.cache/jiti
openclaw gateway restartextractMinMessages2extractMaxChars12000apiKeyopenclaw logs --follow --plain | grep "extraction"retrieval.mode"hybrid""bm25"rerank.hardMinScore0.4.env${VAR}openclaw.jsonexport OPENAI_API_KEY="sk-..."
export JINA_API_KEY="jina_..."
openclaw gateway restartHelp me connect this memory plugin with the most user-friendly configuration:
https://github.com/CortexReach/memory-lancedb-pro
Requirements:
1. Set it as the only active memory plugin
2. Use Jina for embedding
3. Use Jina for reranker
4. Use gpt-4o-mini for the smart-extraction LLM
5. Enable autoCapture, autoRecall, smartExtraction
6. extractMinMessages=2
7. sessionMemory.enabled=false
8. captureAssistant=false
9. retrieval mode=hybrid, vectorWeight=0.7, bm25Weight=0.3
10. rerank=cross-encoder, candidatePoolSize=12, minScore=0.6, hardMinScore=0.62
11. Generate the final openclaw.json config directly, not just an explanation