Persistent memory plugin for OpenClaw agents. Gives your agent long-term memory that survives session resets, compaction, and restarts.
fetch)apt install sqlite3 on Linux)nomic-embed-text model for semantic searchopenclaw.json:json
{
"plugins": {
"slots": { "memory": "lily-memory" },
"entries": {
"lily-memory": {
"enabled": true,
"config": {
"dbPath": "~/.openclaw/memory/decisions.db",
"entities": ["config", "system"]
}
}
}
}
}
openclaw gateway restartToolDescriptionmemory_searchFTS5 keyword search across all factsmemory_entityLook up all facts for a specific entitymemory_storeSave a fact to persistent memorymemory_semantic_searchVector similarity search via Ollamamemory_add_entityRegister a new entity at runtime
OptionTypeDefaultDescriptiondbPathstring~/.openclaw/memory/decisions.dbSQLite database pathautoRecallbooleantrueInject memories before each turnautoCapturebooleantrueExtract facts from responsesmaxRecallResultsnumber10Max memories per turnmaxCapturePerTurnnumber5Max facts per responsestuckDetectionbooleantrueTopic repetition detectionvectorSearchbooleantrueOllama semantic searchollamaUrlstringhttp://localhost:11434Ollama endpointembeddingModelstringnomic-embed-textEmbedding modelconsolidationbooleantrueDedup on startupvectorSimilarityThresholdnumber0.5Min cosine similarityentitiesarray[]Additional entity names
Recall flow: Extract keywords from message -> FTS5 + vector search -> merge and deduplicate -> inject as context
Capture flow: Regex scan for entity: key = value patterns -> validate entity against allowlist -> store to SQLite -> async embed via Ollama
Stuck detection: Track top 5 content words per response -> Jaccard similarity -> if 3+ consecutive >60% overlap, inject Reflexion nudge
MIT