# OpenClaw Hy Memory Plugin 由腾讯混元团队研发的 [OpenClaw](https://github.com/nicepkg/openclaw) 插件,专注于为 AI Agent 提供智能长期记忆能力。 ## Features - **5 Memory Tools** — `memory_search`, `memory_add`, `memory_get`, `memory_update`, `memory_delete` - **Auto-Recall** — Automatically injects relevant memories before each agent turn - **Auto-Capture** — Stores key facts from conversations after each agent turn - **Auto-Start Server** — Manages a local Python Hy Memory server automatically - **Migrate Legacy Memories** — `import-from-openclaw` imports existing OpenClaw `memory-core` memories into Hy Memory - **CLI Commands** — `openclaw hy-memory status`, `search`, `add`, `list`, `delete`, `reset`, `init`, `import-from-openclaw` ## Quick Start ### 1. Install the plugin ```bash openclaw plugin install openclaw-hy-memory --dangerously-force-unsafe-install ``` > **为什么必须加 `--dangerously-force-unsafe-install`?** > > Hy-Memory 以 Python 子进程的方式随插件启动来提供服务。OpenClaw 出于安全考虑默认拒绝安装会启动外部进程的插件,因此需要显式加上该参数以确认你知晓并允许此行为。 ### Windows 插件会自动使用 `~/.openclaw/hy-memory-venv`(venv 内为 `Scripts\python.exe`)。请确保系统已安装 **Python 3.9+** 且 `python` 在 PATH 中。一般无需改 `pythonPath`;若使用自定义解释器,填完整路径,例如 `D:\Python311\python.exe`。 ### 2. Run the setup wizard ```bash openclaw hy-memory init ``` This will guide you through configuring: - **LLM Provider** — OpenAI, DeepSeek, Moonshot, Hunyuan, or Ollama (local) - **Embedding Provider** — OpenAI, Aliyun Bailian, or Ollama - **Vector Store** — Qdrant, ChromaDB (embedded), or FAISS ### 3. Restart the gateway ```bash openclaw gateway restart ``` ### 4. Verify services ```bash openclaw hy-memory status ``` 确认 VDB、Embed、LLM 三项服务均为 `ok` 状态。 ## Manual Configuration Add to `~/.openclaw/openclaw.json`: ```json { "plugins": { "slots": { "memory": "openclaw-hy-memory" }, "entries": { "openclaw-hy-memory": { "enabled": true, "hooks": { "allowConversationAccess": true }, "config": { "userId": "your-username", "autoRecall": true, "autoCapture": true, "memoryWriteTurnWindow": 5, "topK": 10, "llm": { "provider": "openai", "model": "gpt-4.1-nano", "apiKey": "sk-your-key" }, "embedder": { "provider": "openai", "model": "text-embedding-3-small", "apiKey": "sk-your-key" }, "vectorStore": { "provider": "chroma" } } } } } } ``` ### Ultra mode (manual config only) Not part of `openclaw hy-memory init`. Set `mode` in `openclaw.json` and restart the gateway: ```json { "config": { "mode": "ultra", "logLevel": "DEBUG" } } ``` Ultra uses embedded **Kuzu** under `~/.hy_memory/data/kuzu_db/` (no Neo4j). Requires `hy-memory` core package (includes `kuzu`). ## Configuration Options | Option | Default | Description | |--------|---------|-------------| | `serverUrl` | `http://127.0.0.1:19527` | Hy Memory server URL | | `userId` | OS username | User ID for scoping memories | | `agentId` | `default_agent` | Agent ID | | `mode` | `pro` | `lite` / `pro` / `ultra`. `ultra` enables System 2 + embedded Kuzu graph (local, no extra service) | | `autoRecall` | `false` | Inject memories before each turn | | `autoCapture` | `false` | Store conversation after each turn | | `memoryWriteTurnWindow` | `5` | Agent turns between each auto-capture write | | `topK` | `10` | Max search results | | `searchThreshold` | `0.3` | Min similarity score | | `autoStartServer` | `true` | Auto-start Python server | | `serverPort` | `19527` | Python server port | | `llm` | — | LLM config (see below) | | `embedder` | — | Embedding config (see below) | | `vectorStore` | ChromaDB | Vector store config | ### LLM Config ```json { "provider": "openai", "model": "deepseek-chat", "apiKey": "sk-...", "baseUrl": "https://api.deepseek.com" } ``` Any OpenAI-compatible API works — just set `baseUrl` accordingly. ## CLI Commands ```bash openclaw hy-memory status # Check server connectivity openclaw hy-memory search "query" # Search memories openclaw hy-memory add "text" # Add a memory openclaw hy-memory list # List all memories openclaw hy-memory delete # Delete a memory openclaw hy-memory reset --yes # Delete all memories openclaw hy-memory init # Setup wizard openclaw hy-memory import-from-openclaw # Migrate legacy memory-core memories (see below) ``` ## Migrating from OpenClaw memory-core If you previously used OpenClaw's built-in **`memory-core`** (file-backed markdown memory), this command imports those memories into Hy Memory. It reads the agent workspace's `MEMORY.md` + `memory/**/*.md` and writes each file into Hy Memory via `add`, which runs Hy Memory's LLM extraction to produce structured, layered memories. ```bash # Interactive: preview the plan, confirm, then migrate openclaw hy-memory import-from-openclaw # Preview only (no server needed, nothing written) openclaw hy-memory import-from-openclaw --dry-run # Non-interactive openclaw hy-memory import-from-openclaw --yes ``` **What gets imported (automatic — no modes to choose)** - `MEMORY.md` (long-term) + daily notes (`memory/*.md`). - Session transcripts (`agents//sessions/*.jsonl`) **only for days that have no daily note** — a daily note already digests that day's sessions, so importing both would double-count. - `memory/dreaming/**` is **not** imported. **Key behaviours** - **Chronological**: items are imported in `memory_at` order (oldest → newest), so HY Memory's evolution/dedup/recency logic sees the correct time order. - **Per-file**: each markdown file is one `add` (oversized files are split on blank lines). - **Timestamps preserved**: daily-note dates / file mtimes / session timestamps → `memory_at`. - **Idempotent + resumable**: a ledger at `/.hy-memory-import.json` records imported files by content hash; re-running skips unchanged files and imports only the delta. Use `--force` to re-import everything. - **Ordered + gentle writes**: writes are **sequential** (to preserve order) with a small inter-write delay and exponential-backoff retry on transient errors (429 / rate-limit / 5xx, `--retries`). - **Traceable / rollback**: imported memories are tagged `session_id = "imported-from-openclaw"`. **Options** | Option | Default | Description | |--------|---------|-------------| | `--workspace ` | auto | OpenClaw agent workspace (auto-detected from config) | | `--agent ` | `main` | OpenClaw agent id (locates workspace + sessions) | | `--state-dir ` | `$OPENCLAW_STATE_DIR` or `~/.openclaw` | OpenClaw state dir holding `openclaw.json` | | `--user-id ` | configured `userId` | Target Hy Memory user id | | `--dry-run` | off | Preview the plan without writing | | `--force` | off | Re-import everything, ignoring the ledger | | `--retries ` | `4` | Retries per unit on transient errors | | `--yes` | off | Skip the confirmation prompt | > Requires the Hy Memory server to be reachable (it runs a pre-flight health > check). For `--dry-run` no server is needed. ## Development ```bash cd plugins/openclaw/ npm install npm run build ``` ## License Apache-2.0. See the repository root [LICENSE](../../LICENSE).