# memory 模块说明

## 模块作用

持久化用户反馈、用户偏好向量、Stage0 意图数据及按轮次的历史记录。通过 JSON 文件存储会话历史、用户记忆和意图记忆，供偏好学习与迭代交互使用。

## 文件与类

| 文件 | 类 | 说明 |
|------|-----|------|
| store.py | MemoryStore | 统一读写 history、user_memory、intent_memory |

---

## 接口说明

### MemoryStore（store.py）

#### `__init__(path="memory/history.json", user_memory_path="memory/user_memory.json", intent_memory_path="memory/intent_memory.json")`

- **传入参数**：三个 JSON 文件路径，分别对应会话历史、用户向量、意图数据。
- **传出参数**：无。

#### `load() -> Dict[str, Any]`

- **传入参数**：无。
- **传出参数**：会话历史字典（含 `sessions` 等）。

#### `save(data: Dict[str, Any])`

- **传入参数**：要写回的会话数据字典。
- **传出参数**：无。

#### `add_session(query, params, patterns, feedback)`

- **传入参数**：`query` 查询文本，`params` 挖掘参数，`patterns` 模式列表，`feedback` 反馈字典（如 like/dislike 列表）。
- **传出参数**：无。

#### `get_all_sessions() -> List[Dict[str, Any]]`

- **传入参数**：无。
- **传出参数**：所有会话列表。

#### `add_positive(user_id: str, vector: np.ndarray)` / `add_negative(user_id: str, vector: np.ndarray)`

- **传入参数**：`user_id` 用户 ID，`vector` 模式嵌入向量。
- **传出参数**：无。

#### `get_user_profile(user_id: str) -> Optional[Dict[str, Any]]`

- **传入参数**：`user_id`。
- **传出参数**：该用户的 profile（含 positive、negative 等），不存在为 `None`。

#### `save_preference_features(user_id, liked=None, disliked=None)`

- **传入参数**：`user_id`；`liked`、`disliked` 为喜欢的/不喜欢的特征名列表（用于偏好加权）。
- **传出参数**：无。

#### `get_preference_features(user_id: str) -> Optional[Dict[str, List[str]]]`

- **传入参数**：`user_id`。
- **传出参数**：`{"like": [...], "dislike": [...]}` 或 `None`。

#### `save_intent(user_id: str, u_llm: np.ndarray, intent_json: Dict[str, Any])`

- **传入参数**：`user_id`；`u_llm` 初始用户向量；`intent_json` Stage0 意图字典。
- **传出参数**：无。

#### `load_intent(user_id: str) -> Optional[Dict[str, Any]]`

- **传入参数**：`user_id`。
- **传出参数**：意图数据（含 `u_llm`、`intent` 等），不存在为 `None`。

#### `get_round_history(user_id: str) -> List[Dict[str, Any]]`

- **传入参数**：`user_id`。
- **传出参数**：该用户按轮次的迭代历史列表。
