[中文](README_CN.md)
AI without memory is just a tool. AI with memory becomes an asset.
**TencentDB Agent Memory is an Agent memory system built by the Tencent Cloud Database team**, adding persistent long-term memory to OpenClaw. Through a 4-layer progressive memory pyramid, it automatically handles memory capture, layered distillation, on-demand recall and injection — turning an Agent from "chat-only" into a long-term, cross-session AI assistant that continuously learns and understands its users. ## Benchmark Evaluated on [PersonaMem](https://github.com/jiani-huang/PersonaMem) (UPenn, COLM 2025) — 589 questions, 20 actors. | Category | OpenClaw Native Memory | TencentDB Agent Memory | | :--- | :---: | :---: | | Recall Update Reason | 70.97% | **88.89%** | | Preference Evolution | 66.67% | **83.45%** | | Personalized Recommendation | 46.67% | **76.36%** | | Scenario Generalization | 31.58% | **78.95%** | | Recall User Facts | 29.63% | **79.07%** | | Recall Facts | 25.00% | **76.47%** | | Creative Suggestion | 24.00% | **45.16%** | | **Overall** | **47.85%** | **76.10%** | ## Highlights - **OpenClaw native plugin** — package name `@tencentdb-agent-memory/memory-tencentdb`, one command to install - **4-layer memory pipeline**: L0 Raw Dialogue → L1 Structured Memory → L2 Scenario Synthesis → L3 User Profile - **Hybrid recall**: supports `keyword`, `embedding`, and `hybrid` strategies - **Two retrieval tools**: `tdai_memory_search` (structured memory) and `tdai_conversation_search` (raw conversations) - **Local-first storage**: JSONL + SQLite, data is directly inspectable on disk - **Operational features**: deduplication, checkpoint, backup, scheduled cleanup, metrics logging - **MIT License** ## Quick Start ### Requirements - Node.js `>= 22.16.0` - OpenClaw `>= 2026.3.13` ### Install ```bash openclaw plugins install @tencentdb-agent-memory/memory-tencentdb ``` Once installed, the plugin hooks into the OpenClaw conversation lifecycle and automatically handles conversation capture, memory recall, and L1/L2/L3 processing. ### Development from Source No build step required. Node.js 22.16+ natively supports TypeScript type stripping, and OpenClaw loads `.ts` source files directly. ```bash git clone https://github.com/TencentCloud/TencentDB-Agent-Memory.git cd TencentDB-Agent-Memory npm install openclaw plugins install --link . ``` `install --link` registers the current directory as a local plugin in OpenClaw. Source changes take effect after restarting the Gateway. ### Optional: Enable Embedding Recall To use vector retrieval or hybrid recall, add an embedding configuration. Currently supports remote embedding services compatible with the OpenAI API. ```jsonc { "plugins": { "entries": { "memory-tencentdb": { "enabled": true, "config": { "embedding": { // Embedding model config (not LLM model) "enabled": true, // Enable vector search "provider": "openai", // Only OpenAI-compatible API is supported "baseUrl": "https://xxx", // API Base URL "apiKey": "xxx", // API Key "model": "text-embedding-3-large", // Model name "dimensions": 1024 // Vector dimensions (must match the chosen model) } } } } } } ``` ## Architecture ```text ┌─────────────────┐ │ L3 Profile │ Preferences & behavioral patterns ├─────────────────┤ │ L2 Scenarios │ Cross-session task / scenario blocks ├─────────────────┤ │ L1 Structured │ Facts, constraints, preferences, decisions ├─────────────────┤ │ L0 Dialogue │ Complete conversation records └─────────────────┘ ``` Each layer serves a different purpose: - **L0** preserves raw conversations for replay and precise retrieval - **L1** extracts high-value information for direct recall - **L2** organizes scattered memories into scenario blocks across sessions - **L3** maintains a user profile for long-term preference modeling ## Lifecycle | Stage | Trigger | Action | |---|---|---| | Recall | `before_prompt_build` | Recall relevant memory and inject into context | | L0 | `agent_end` | Write raw conversation logs | | L1 | Scheduled | Extract structured memory, deduplicate, persist | | L2 | After L1 | Update scenario blocks | | L3 | Threshold reached | Generate or refresh user profile | | Shutdown | `gateway_stop` | Clean up resources | The plugin also registers two tools for the Agent to call directly: - `tdai_memory_search`: queries L1 structured memory. Useful for questions like "what does the user prefer" or "what constraints were confirmed earlier". - `tdai_conversation_search`: queries L0 raw conversations. Useful when exact original wording is needed. ## Retrieval Three recall strategies: | Strategy | Implementation | |---|---| | `keyword` | FTS5 full-text search with jieba for Chinese tokenization | | `embedding` | sqlite-vec vector similarity search | | `hybrid` | Merged keyword and vector results | All backed by SQLite. ## Configuration Grouped by capability: | Config Group | Purpose | |---|---| | `capture` | L0 conversation capture, exclusion rules, retention | | `extraction` | L1 extraction, deduplication, per-run limit | | `persona` | L2/L3 trigger frequency, scenario limit, backup count | | `pipeline` | L1/L2/L3 scheduling | | `recall` | Auto-recall toggle, result count, threshold, strategy | | `embedding` | Vector retrieval service configuration | | `report` | Metrics logging | Minimum configuration is just installing the plugin. Add `embedding` and scheduling parameters for better recall quality. ## Data Directory ```text