Files
memory-gateway/README.md
2026-05-18 09:54:26 +08:00

142 lines
3.0 KiB
Markdown

# Memory System API
Memory System API is a lightweight HTTP facade over two memory backends:
- OpenViking stores session conversation memory.
- EverOS stores user profile and episodic memory.
The caller only sends `user_id`, `session_id`, and optional `user_message` / `assistant_message`.
The API creates or reuses the OpenViking user key, writes messages to both backends, and exposes simple endpoints for commit, immediate extraction, search, and profile reads.
## Endpoints
Base URL:
```text
http://127.0.0.1:1934
```
Routes:
- `GET /memory-system/health`
- `POST /memory-system/messages`
- `POST /memory-system/sessions/{session_id}/commit`
- `POST /memory-system/sessions/{session_id}/extract`
- `GET /memory-system/openviking/tasks/{task_id}?user_id=...`
- `POST /memory-system/search`
- `GET /memory-system/users/{user_id}/profile`
## Install
```bash
cd /home/tom/memory-gateway
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e ".[dev]"
```
## Configure
Copy the example config and edit backend URLs or keys as needed:
```bash
cp config.example.yaml config.yaml
```
Important fields:
```yaml
server:
host: "127.0.0.1"
port: 1934
api_key: ""
openviking:
url: "http://127.0.0.1:1933"
api_key: "your-secret-root-key"
everos:
url: "http://127.0.0.1:1995"
```
If `server.api_key` is set, clients must send `X-API-Key`.
## Start
Start OpenViking and EverOS first, then run:
```bash
python -m memory_system_api.server --config config.yaml --host 127.0.0.1 --port 1934
```
## Real Test Flow
Health:
```bash
curl -s http://127.0.0.1:1934/memory-system/health
```
Write user and assistant messages:
```bash
curl -s -X POST http://127.0.0.1:1934/memory-system/messages \
-H "Content-Type: application/json" \
-d '{
"user_id": "real_user_001",
"session_id": "real_sess_001",
"user_message": "我喜欢喝拿铁,不喜欢美式。",
"assistant_message": "好的,我会记住你的咖啡偏好。"
}'
```
Commit OpenViking and flush EverOS:
```bash
curl -s -X POST http://127.0.0.1:1934/memory-system/sessions/real_sess_001/commit \
-H "Content-Type: application/json" \
-d '{"user_id": "real_user_001"}'
```
Search without LLM planning:
```bash
curl -s -X POST http://127.0.0.1:1934/memory-system/search \
-H "Content-Type: application/json" \
-d '{
"user_id": "real_user_001",
"session_id": "real_sess_001",
"query": "我喜欢喝什么咖啡?",
"use_llm": false,
"limit": 10
}'
```
Search with LLM planning:
```bash
curl -s -X POST http://127.0.0.1:1934/memory-system/search \
-H "Content-Type: application/json" \
-d '{
"user_id": "real_user_001",
"session_id": "real_sess_001",
"query": "我的偏好是什么?",
"use_llm": true,
"limit": 10
}'
```
Read EverOS profile:
```bash
curl -s http://127.0.0.1:1934/memory-system/users/real_user_001/profile
```
## Development Checks
```bash
python -m pytest -q
python -m compileall -q memory_system_api tests
```