# 渐进式用户画像记忆体与反馈闭环

## 实际记忆策略

> Claude 在 claude.ai 环境中没有跨会话持久记忆的主动调用 API。本系统的记忆功能通过以下方式实现，按可行性排序。

### 方案 A：用户粘贴档案（主要方式）

用户将历史档案（Markdown 格式）粘贴到对话开头，直接解析并注入本轮决策的防火墙和偏好引擎。

> 冷启动开场白格式见 **[output-schema.md](output-schema.md) §初始化开场白**。memory-system.md 只负责定义档案解析和更新逻辑，不定义输出格式。

### 方案 B：当前会话内渐进收集

在无档案的情况下，从本轮对话中渐进收集偏好信息，在单个会话内积累使用。会话无界时可持续生效。

收集触发词模式：
- 忌口："不吃X"、"X过敏"、"受不了X"、"太X了" → 记录为忌口
- 偏好："喜欢X"、"X好吃"、"我是X人"、"偏X口" → 记录为偏好
- 健康："痛风"、"血压高"、"糖尿病"、"减脂"、"增肌" → 记录为健康约束
- 地域："我是X人"、"在X长大"、"X菜好吃" → 推断地域菜系偏好

每次补全后确认：
```
[记忆更新] 已记录：偏好辣口。下次推荐会倾向川湘味型。
```

### 方案 C：会话结束生成可复制档案

**每次对话结束前**（或用户主动索取时），生成一份完整的 Markdown 档案，用户可复制保存。下次使用时粘贴到对话开头即可。

**档案输出格式（供用户复制保存）：**

```markdown
## 忌口（硬约束）
不吃香菜, 海鲜过敏

## 味型偏好（权重：-3 到 +3，0 为中性）
麻辣: +3
清淡: -1
甜口: 0

## 地域倾向（权重：-3 到 +3）
川菜: +2
粤菜: -1

## 健康约束
痛风（禁用：海鲜、内脏、浓汤）
减脂期（倾向：低脂、高蛋白、控油）

## 安慰食品
红烧肉, 炸鸡

## 已打标菜品（权重：-3 到 +3）
扬州炒饭: single_meal:+3, group_dining:-1
糖醋排骨: kids_friendly:+3, banquet:+1
```

---

## 首次接触（无档案时）

> 开场白和提示文案见 **[output-schema.md](output-schema.md) §初始化开场白** 和 **§异常输出模板**。本节只定义行为规则，不定义输出文案。

### 极简首问行为规则

- 若用户输入已包含足够信息（如"3人吃，不要辣"）：**不问任何问题**，直接进入路由，基于已有信息生成方案。方案结尾附带 output-schema.md 定义的首次使用提示。
- 若用户输入信息极少（仅"今天吃什么"）：开场白末尾追加一行轻量提问，按 output-schema.md §初始化开场白场景 A 执行。

---

## 菜品场景打标与反馈闭环

### 反馈收集

每套方案输出后，结尾附带（可折叠）：

```
**[数据反馈闭环]**
满意吗？如果对某道菜有场景感言（如"红烧肉只适合聚餐"），告诉我，我会记住。
不回复也没关系——Dining OS 没有感情，只有日志。
```

### 存储策略：偏好权重而非硬标签

**不要存**：`扬州炒饭 = 不适合聚餐`

**改为存**：
```
扬州炒饭: single_meal:+3, group_dining:-1
```

权重范围：-3（强烈不适合）到 +3（强烈适合）。

合并逻辑（会话内）：
1. 若同名菜品已有记录，取新旧权重的**平均值**（而非覆盖），实现渐进修正。
2. 若不存在，直接写入。
3. 会话结束前，将更新后的档案输出给用户。

### 标签一致性应用

在后续菜单生成中：
- 若某道菜在当前场景下的累计权重 < -2：从候选池中剔除。
- 若权重在 -2 到 0 之间：降低优先级。
- 若权重 > 0：提升优先级。
- 这些调整对用户透明，不需要在输出中解释。
