# openclaw-mem0-python

OpenClaw plugin that exposes the mem0 HTTP API as tools for conversational memory and a tool-driven knowledge base (RAG). Conversational memory can be injected by the hook; knowledge retrieval stays explicit via tool calls.

## Features
- Conversational memory: write/search/read recent.
- Knowledge base tools: list books, describe a book, search within one book or across multiple books.

## Install (local dev)
```bash
# link plugin into OpenClaw extensions
openclaw plugins install -l /home/lucky/.openclaw/extensions/openclaw-mem0-python

# enable if not already
openclaw plugins enable openclaw-mem0-python

# reload gateway
openclaw gateway restart
```

## Configure
You can set defaults via environment or config:

- `MEM0_BASE_URL` (default: `http://192.168.0.200:8420`)
- `MEM0_KNOWLEDGE_USER_ID` (default: `knowledge_base`)

## Tool surface
- `write({ text, userId? })`
- `search({ query, userId?, limit? })`
- `read({ userId?, limit? })`

Knowledge tools:
- `listKnowledgeSources({ userId? })`
- `describeKnowledgeBook({ sourceFile, userId? })`
- `searchKnowledgeBook({ query, sourceFile, userId?, limit? })`
- `searchKnowledgeBooks({ query, sourceFiles, userId?, limit? })`
- `searchKnowledge({ query, userId?, limit? })`
- `writeKnowledge({ text, userId? })`

## Test (local)
```bash
node /home/lucky/.openclaw/extensions/openclaw-mem0-python/test_memories.mjs
```

This test writes/reads conversational memory, then lists knowledge sources and (if present) describes & searches the first book.

## Notes
- `describeKnowledgeBook` uses `/knowledge/search` plus metadata filtering (`metadata.source_file`) to safely scope results to one book.
- If your knowledge source names are PDFs, the tool also exposes a `hintQuery` derived from `source_file` (same approach as the dashboard).
