文件内容
references/memory-system.md
# 渐进式用户画像记忆体与反馈闭环
## 实际记忆策略
> 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:提升优先级。
- 这些调整对用户透明,不需要在输出中解释。