--- name: qdrant-memory description: | Manual memory backup to Qdrant vector database. Memories are stored ONLY when explicitly requested by the user. No automatic storage, no proactive retrieval, no background consolidation. Enhanced metadata (confidence, source, expiration) available for manual use. Includes separate KB collection for documents, web data, etc. metadata: openclaw: os: ["darwin", "linux", "win32"] --- # Qdrant Memory - Manual Mode ## Overview **MODE: MANUAL ONLY** This system provides manual memory storage to Qdrant vector database for semantic search. - **File-based logs**: Daily notes (`memory/YYYY-MM-DD.md`) continue normally - **Vector storage**: Qdrant available ONLY when user explicitly requests storage - **No automatic operations**: No auto-storage, no proactive retrieval, no auto-consolidation ## Collections ### `kimi_memories` (Personal Memories) - **Purpose**: Personal memories, preferences, rules, lessons learned - **Vector size**: 1024 (snowflake-arctic-embed2) - **Distance**: Cosine - **Usage**: "q remember", "q save", "q recall" ### `kimi_kb` (Knowledge Base) - **Purpose**: Web search results, documents, scraped data, reference materials - **Vector size**: 1024 (snowflake-arctic-embed2) - **Distance**: Cosine - **Usage**: Manual storage of external data only when requested ## Architecture ### Storage Layers ``` Session Memory (this conversation) - Normal operation ↓ Daily Logs (memory/YYYY-MM-DD.md) - Automatic, file-based ↓ Manual Qdrant Storage - ONLY when user says "store this" or "q [command]" ↓ ├── kimi_memories (personal) - "q remember", "q recall" └── kimi_kb (knowledge base) - web data, docs, manual only ``` ### Memory Metadata Available when manually storing: - **text**: The memory content - **date**: Creation date - **tags**: Topics/keywords - **importance**: low/medium/high - **confidence**: high/medium/low (accuracy of the memory) - **source_type**: user/inferred/external (how it was obtained) - **verified**: bool (has this been confirmed) - **expires_at**: Optional expiration date - **related_memories**: IDs of connected memories - **access_count**: How many times retrieved - **last_accessed**: When last retrieved ## Scripts ### For kimi_memories (Personal) #### store_memory.py **Manual storage only** - Store with full metadata support: ```bash # Basic manual storage python3 store_memory.py "Memory text" --importance high # With full metadata python3 store_memory.py "Memory text" \ --importance high \ --confidence high \ --source-type user \ --verified \ --tags "preference,voice" \ --expires 2026-03-01 \ --related id1,id2 ``` #### search_memories.py Manual search of stored memories: ```bash # Basic search python3 search_memories.py "voice setup" # Filter by tag python3 search_memories.py "voice" --filter-tag "preference" # JSON output python3 search_memories.py "query" --json ``` ### For kimi_kb (Knowledge Base) #### kb_store.py Store external data to KB: ```bash # Store web page content python3 kb_store.py "Content text" \ --title "Page Title" \ --url "https://example.com" \ --domain "Tech" \ --tags "docker,containerization" # Store document excerpt python3 kb_store.py "Document content" \ --title "API Documentation" \ --source "docs.openclaw.ai" \ --domain "OpenClaw" \ --tags "api,reference" ``` #### kb_search.py Search knowledge base: ```bash # Basic search python3 kb_search.py "docker volumes" # Filter by domain python3 kb_search.py "query" --domain "OpenClaw" # Include source URLs python3 kb_search.py "query" --include-urls ``` ### Hybrid Search (Both Collections) #### hybrid_search.py Search both files and vectors (manual use): ```bash python3 hybrid_search.py "query" --file-limit 3 --vector-limit 3 ``` ## Usage Rules ### When to Store to Qdrant **ONLY** when user explicitly requests: - "Remember this..." → kimi_memories - "Store this in Qdrant..." → kimi_memories - "q save..." → kimi_memories - "Add to KB..." → kimi_kb - "Store this document..." → kimi_kb ### What NOT to Do ❌ **DO NOT** automatically store any memories to either collection ❌ **DO NOT** auto-scrape web data to kimi_kb ❌ **DO NOT** run proactive retrieval ❌ **DO NOT** auto-consolidate ## Manual Integration ### Personal Memories (kimi_memories) ```bash # Only when user explicitly says "q remember" python3 store_memory.py "User prefers X" --importance high --tags "preference" # Only when user explicitly says "q recall" python3 search_memories.py "query" ``` ### Knowledge Base (kimi_kb) ```bash # Only when user explicitly requests KB storage python3 kb_store.py "Content" --title "X" --domain "Y" --tags "z" # Search KB only when requested python3 kb_search.py "query" ``` ## Best Practices 1. **Wait for explicit request** - Never auto-store to either collection 2. **Use right collection**: - Personal/lessons → `kimi_memories` - Documents/web data → `kimi_kb` 3. **Always tag memories** - Makes retrieval more accurate 4. **Include source for KB** - URL, document name, etc. 5. **File-based memory continues normally** - Daily logs still automatic ## Troubleshooting **Q: Qdrant not storing?** - Check Qdrant is running: `curl http://10.0.0.40:6333/` - Verify user explicitly requested storage **Q: Search returning wrong results?** - Try hybrid search for better recall - Use `--filter-tag` for precision --- **CONFIGURATION: Manual Mode Only** **Collections: kimi_memories (personal), kimi_kb (knowledge base)** **Last Updated: 2026-02-10**