Files
meida/docs/用户系统与记忆系统-需求文档.md
T
2026-08-11 23:42:30 +08:00

22 KiB
Raw Blame History

用户系统与记忆系统需求文档

本文档为「美搭」App 的用户体系与个性化记忆体系需求文档,与 产品方案、美学报告需求文档、穿搭 Agent 需求文档、美学知识库建设方案 配套使用。

1. 概述

1.1 为什么需要记忆系统

穿搭建议的价值高度依赖"懂这个人"。同一句"帮我搭一套通勤 look",对梨型身材柔夏型的设计师和对倒三角身材深冬型的销售,正确答案完全不同。没有记忆系统,产品只能给出百科式的通用答案,而通用答案在小红书上免费且更丰富——记忆系统是本产品相对于内容平台和通用大模型的核心护城河。

同时,记忆系统解决三个具体问题:

问题 无记忆的表现 有记忆的表现
重复询问 每次对话都问"你的身高体重体型是?" 一次诊断,永久复用
建议漂移 今天推荐紧身裙,明天说避免紧身 结论一致且可解释
无法进化 用户拒绝 10 次露肩款,第 11 次还推荐 自动学习禁忌,越用越准

1.2 设计目标

  1. 一次输入,全局可用:任何一处采集的用户信息,所有模块都能读到
  2. 越用越懂:显式设置 + 隐式行为共同塑造画像,无需用户额外操心
  3. 用户可见可控:记忆全部可查看、可修改、可删除(既是信任基础,也是《个人信息保护法》的硬要求)
  4. 可解释:任何推荐都能回答"为什么推荐给我",追溯到具体记忆项
  5. 成本可控:注入模型的记忆有 token 预算上限,不做无脑全量拼接

2. 用户系统

2.1 账号与登录

方式 优先级 说明
华为账号一键登录 P0(鸿蒙首发主路径) 首发平台原生能力,转化率最高,V1 必须支持
手机号 + 验证码 P0 通用兜底,跨端一致
游客模式 P0 未登录即可体验核心功能,降低首启流失
微信 / Apple 登录 P2 多端扩展阶段接入

游客模式与数据迁移(关键设计)

用户第一次打开 App 就被要求注册,是最大的流失点之一。设计如下:

  • 游客获得本地 guest_id(设备级),可完成:1 次换装、1 次发型试戴、1 次初级报告、3 次 Agent 对话
  • 游客数据(画像、试穿结果、报告)存储在本地 + 服务端匿名档案
  • 触发注册时机:游客额度用尽 / 主动保存收藏 / 主动分享 → 提示"注册以永久保存你的形象档案"
  • 注册后自动迁移:guest_id 全部数据归属到 user_id,迁移过程对用户无感,且必须幂等(防重复迁移)
  • 同一设备多游客、同一游客多设备的冲突以"先注册者绑定"为准,冲突时提示用户选择

2.2 用户数据模型

用户主表 user

字段 类型 说明
user_id string 全局唯一 ID(雪花号)
phone string 手机号(加密存储,脱敏展示)
huawei_open_id string 华为账号标识
nickname / avatar string 昵称、头像
gender enum 女 / 男 / 不便告知
birthday date 生日(用于色彩、五行、生日权益)
member_level enum free / member / premium
member_expire_at datetime 会员到期时间
points_balance int 权益点数余额(见 §2.4)
register_channel string 注册渠道(归因)
status enum active / frozen / deleting / deleted
created_at / last_active_at datetime —

授权记录表 user_consent(合规必需)

字段 说明
consent_type 隐私政策 / 人脸信息处理 / 个性化推荐 / 推送通知
version 协议版本号
granted 是否同意
granted_at / revoked_at 授权与撤回时间
evidence 授权来源页面与操作记录

人脸信息属敏感个人信息,必须单独授权并可单独撤回;撤回后停止相关功能并删除派生数据。

2.3 用户中心功能

我的
├─ 形象档案
│   ├─ 我的形象报告(历史版本时间轴 + 前后对比)
│   ├─ 我的美学画像(结构化维度,可逐项修正)
│   └─ 我的记忆(偏好与禁忌管理,见 §3.7)
├─ 我的作品
│   ├─ 换装记录
│   ├─ 发型记录
│   └─ 收藏夹(搭配 / 发型 / 单品 / 色板)
├─ 我的衣橱(V2)
├─ 会员中心(权益、点数、订单)
├─ 设置
│   ├─ 隐私与授权管理(单项开关、撤回)
│   ├─ 数据管理(导出个人数据 / 清空照片 / 注销账号)
│   ├─ 内容偏好(关闭五行模块、关闭个性化推荐)
│   └─ 通知设置
└─ 帮助与反馈

2.4 会员与权益(含点数制改造)

现存风险:原方案"会员 ¥9.9/月 = 无限换装"在成本上不成立。换装单次为长耗时 GPU 推理(几十秒到几分钟),单次成本量级在角到元,重度用户一个月可轻松消耗数十元,会员越活跃越亏损。

改造方案:基础权益 + 点数制

权益项 免费 会员 ¥9.9/月 高级 ¥29.9/月
每日免费换装 3 次 10 次 20 次
每日免费试戴发型 3 次 10 次 20 次
每日 AI 对话 10 轮 100 轮 不限(防刷上限)
月度权益点数 0 300 点 1000 点
初级美学报告 每 30 天 1 次 每 7 天 1 次 不限(每日 ≤3)
全面美学报告(V2) 单次 ¥29.9 单次 ¥19.9 含 1 次/季
广告 有 无 无
我的衣橱容量(V2) 20 件 200 件 不限
记忆条数上限 50 条 500 条 不限
高清导出 / 去水印 ❌ ✅ ✅
  • 点数消耗:换装 10 点/次、发型 5 点/次、全面报告 200 点、高清重绘 20 点
  • 点数获取:会员月度赠送、签到、邀请好友、观看激励广告、单独购买(¥6 = 100 点)
  • 免费额度与点数关系:先扣免费次数,用尽后扣点数,点数不足才引导付费
  • 每次消耗都要有明确的前置提示("本次将消耗 10 点,剩余 290 点"),禁止静默扣费

V1 落地范围:只做免费额度与计量(记录每次调用的成本与次数),会员/点数/支付在 V2 开启。V1 期间用埋点数据校准真实单用户成本,再定价。

2.5 配额与计量

  • 所有 AI 能力调用统一走配额中心:check(user_id, ability) → allow/deny + 扣减方式
  • 每次调用落 usage_log:user_id / ability / cost_estimate / duration / result / trace_id
  • 失败调用不扣额度(区分用户侧失败与服务端失败)
  • 风控:设备维度 + 账号维度 + IP 维度三重限流,异常账号冻结并进人工审核

2.6 账号生命周期

操作 处理
注销 二次确认 + 短信验证 → 状态置 deleting,7 日冷静期内可恢复,到期彻底删除全部个人数据与派生画像
数据导出 提供 JSON + 图片包下载(画像、报告、记忆、作品),24h 内生成
清空照片 单独入口,删除所有上传原图与结果图(保留结论型画像,需明确告知)
撤回人脸授权 停用报告与换装功能,删除人脸派生特征,保留自评类画像
冻结 违规内容触发,功能受限但数据保留

3. 记忆系统

3.1 设计原则

原则 说明
分层 稳定信息与易变信息分开存储,注入策略不同
带证据 每条记忆记录来源与证据,可回溯、可解释、可撤销
带置信度 显式 > 隐式,新证据 > 旧证据,用户确认 = 最高置信
会衰减 长期未被强化的隐式记忆自动降权,避免陈旧偏好长期干扰
可编辑 用户可见、可改、可删,且改动立即生效
有预算 注入模型的记忆有 token 上限,超出则摘要压缩
不存敏感原图 记忆库只存结论与特征,不存人脸原图

3.2 分层记忆模型

层级 名称 内容示例 写入方式 生命周期 主要消费方
L0 身份档案
Identity
性别、生日、身高、体重、职业、城市 用户填写 长期,随时可改 全模块(硬约束)
L1 美学画像
Aesthetic Profile
体型、脸型、肤色、季型、量感、直曲、动静、基因/心理风格、核心诉求 美学报告生成时写入(唯一权威源) 长期,90 天建议复核 报告、Agent、换装、发型推荐
L2 偏好与禁忌
Preference
偏好风格/颜色/品类/长度;禁忌项(不穿短裙、不露肩、不接受高饱和);预算区间;品牌倾向 显式设置 + 隐式行为推断 长期,隐式项带衰减 Agent、推荐排序与过滤
L3 事件记忆
Episodic
试穿记录、收藏、分享、采纳/拒绝、对话摘要、报告版本 自动埋点 180 天滚动 相似召回、复盘、主动推荐
L4 会话记忆
Working
当前多轮对话上下文、当前场景槽位(场合/天气/日期) 运行时写入 会话结束或 24h 过期 Agent 多轮对话
L5 衣橱记忆
Wardrobe
用户已有单品(图片 + 结构化属性 + 使用频率) 用户上传 + 视觉识别 长期,可标记淘汰 基于已有衣物的搭配(V2 核心差异化)

分层的意义:L0/L1 是"硬约束",进任何一次推荐的系统提示;L2 是"排序与过滤器";L3 是"检索素材",按需 Top-K 召回而非全量注入;L4 是短时状态;L5 是差异化能力。

3.3 记忆项数据结构

{
  "memory_id": "mem_8f3a2c",
  "user_id": "u_10086",
  "layer": "L2",
  "type": "taboo",
  "key": "avoid_category",
  "value": "短裙",
  "display": "不接受短裙",
  "confidence": 0.92,
  "source": "explicit_user_input",
  "evidence": [
    { "type": "chat", "ref": "conv_991", "at": "2026-08-10T21:03:00+08:00", "excerpt": "我从来不穿短裙" }
  ],
  "scope": ["outfit_recommend", "agent_chat", "report"],
  "created_at": "2026-08-10T21:03:12+08:00",
  "last_reinforced_at": "2026-08-10T21:03:12+08:00",
  "decay_after_days": 365,
  "status": "active",
  "user_editable": true
}

字段约定:

  • source:explicit_user_input(用户明说)/ user_setting(设置页配置)/ report_vision(报告视觉分析)/ self_reported(自评问卷)/ behavior_inferred(行为推断)/ llm_extracted(对话抽取)
  • confidence:见 §3.5 置信度规则
  • status:active / pending_confirm(待用户确认)/ decayed / overridden / deleted
  • scope:该记忆生效的业务域,避免"对话里说的玩笑话"污染报告结论

3.4 写入机制

① 显式写入(高置信)

  • 问卷填写、设置页配置、报告数据修正
  • 对话中的明确陈述:"我不喜欢黄色""我 160cm""帮我记住我不穿高跟鞋"
  • 对话抽取到显式偏好时,回执确认:"已记住:不穿高跟鞋。可在「我的记忆」中修改" —— 让用户感知到系统在学习,是信任建立的关键动作

② 隐式推断(低置信,需累积)

从行为中提取候选记忆,不直接生效:

行为信号 推断方向 生效阈值
采纳/试穿某搭配 该风格、色系、品类为正样本 累积计数,用于排序加权
收藏 强正样本(权重 > 试穿) 同上
连续拒绝/换一套 该方案的共有属性为负样本 同属性连续 3 次拒绝 → 生成 pending_confirm 候选
长时间浏览未操作 弱兴趣 仅作排序微调,不落记忆
主动删除某记录 负样本 计数
反复搜索某关键词 兴趣点 3 次以上 → 候选偏好
  • 候选记忆生成后,选择恰当时机征询确认(不打断当前任务,放在下一次推荐结果页):"看起来你不太喜欢露肩款,要设为不推荐吗?[是/否/不再提示]"
  • 用户确认 → confidence = 1.0,source 升级为 explicit;用户否认 → 记录反例并不再推断该项

③ 派生写入

  • 报告生成完成 → 批量写入 L1 全部维度
  • 换装/试戴成功 → 写入 L3 事件
  • 对话结束 → LLM 生成 ≤100 字对话摘要写入 L3

3.5 置信度与衰减

置信度初值:

来源 初始置信度
用户确认 / 设置页配置 1.00
对话中明确陈述 0.90
报告视觉分析(高置信维度,如体型) 0.85
报告视觉分析(争议维度,如十二季细分) 0.65
自评问卷 0.60
行为推断(达阈值) 0.50

衰减规则:

  • 每 30 天未被强化,隐式记忆(source = behavior_inferred / llm_extracted)置信度 × 0.9
  • 置信度 < 0.3 时状态置 decayed,不再参与推荐,但保留可查(用户可恢复)
  • 显式记忆与 L0/L1 不衰减,仅通过新证据覆盖
  • 每次被新证据强化:confidence = min(1.0, confidence + 0.1),刷新 last_reinforced_at

3.6 冲突消解

多来源必然冲突(自评"我是苹果型",视觉分析"梨型"),规则如下:

  1. 优先级:用户确认 > 显式陈述 > 视觉分析 > 自评 > 行为推断
  2. 同级取新:同优先级时以时间更新者为准
  3. 画像 vs 偏好冲突:专业结论与用户主观偏好冲突时,以用户偏好执行,同时给出专业提示

    示例:报告判定不适合正红色,但用户明确喜欢正红色 → 仍然推荐正红色单品,附加建议"可通过下装用低饱和色平衡,或让红色远离面部" 这条规则很重要:产品不能因为"专业正确"而否定用户喜好,否则会被感知为说教。

  4. 视觉覆盖自评:有照片诊断结果时自动覆盖自评项,并提示用户"已根据照片更新你的体型判定"
  5. 冲突留痕:被覆盖的记忆置 overridden 而非删除,保留在历史中可追溯

3.7 用户可见可控:「我的记忆」页面

这是合规刚需,也是差异化体验(大多数 AI 产品的记忆是黑盒)。

我的记忆
├─ 我的画像(L0 + L1)
│   └─ 逐项展示:值 + 来源 + 置信度标签("照片诊断" / "你告诉我的" / "我猜的")
│       └─ 操作:修正 / 恢复系统判定
├─ 我的偏好(L2)
│   ├─ 喜欢:风格标签、颜色、品类(可增删)
│   └─ 不接受:禁忌清单(可增删,删除后不再过滤)
├─ 待确认(pending_confirm)
│   └─ "看起来你不太喜欢露肩款?" [确认 / 否认]
├─ 最近记录(L3,按时间线)
│   └─ 单条可删除(删除后不再参与推荐计算)
└─ 全局操作
    ├─ 关闭个性化推荐(关闭后仅用 L0 通用建议)
    └─ 清空全部记忆(二次确认)
  • 置信度不向用户暴露数值,用自然语言标签表达("照片诊断""你告诉我的""我猜的")
  • 任何修改立即生效,且明确反馈影响范围:"已更新,之后的搭配建议会避开短裙"

3.8 记忆检索与注入

Token 预算是硬约束,不能把全部记忆塞进提示词。策略:

阶段 处理 预算
画像摘要 L0 + L1 压缩为固定结构短文本(模板化,非 LLM 生成) ≤ 250 token
偏好摘要 L2 中 confidence ≥ 0.5 的项,按置信度排序取 Top 15 ≤ 150 token
事件召回 按当前 query 向量检索 L3,取 Top 3~5 条摘要 ≤ 200 token
会话上下文 L4 最近 6 轮原文 + 更早轮次的滚动摘要 ≤ 800 token
合计 — ≤ 1400 token

画像摘要示例(注入 Agent 系统提示的实际形态):

【用户画像】女 / 160cm / 53kg / 设计师 / 上海
体型:梨型(A型),溜肩,核心诉求:显高显瘦、修饰溜肩与下半身
面部:鹅蛋脸,三庭五眼均匀,中量感,轮廓适中,静态型
色彩:黄二白,柔夏型(低饱和冷调),最佳色:灰蓝/灰紫/雾霾蓝/冷灰粉/浅灰绿
风格:基因自然型 + 心理优雅型 → 自然优雅
【偏好】喜欢:法式、通勤、真丝/棉麻|不接受:短裙、露肩、高饱和亮色
【近期】3 天前试穿"灰蓝西装 + 冷米黄西裤"并收藏;拒绝过 2 套包臀裙方案
  • 缓存策略:画像摘要在画像未变更时缓存复用,避免每轮重算
  • 未命中记忆时的降级:明确告知"我还不了解你的身材数据,建议先做个形象诊断(1 分钟)",而不是编造假设

3.9 存储与技术形态

数据 存储 说明
L0 / L1 / L2 结构化画像 关系型数据库 强一致、可索引、可审计
L3 事件与对话摘要 关系库 + 向量库 向量库用于语义召回
L4 会话状态 KV 缓存(带 TTL) 高频读写
L5 衣橱单品 关系库 + 对象存储(图片)+ 图像向量 支持图搜与属性筛选
变更审计 追加写日志表 记录每次记忆变更的 before/after 与操作者
  • 端侧缓存画像摘要,支持弱网/离线时的基础个性化展示
  • 所有记忆读写走统一 MemoryService,禁止各业务模块直连表,保证冲突消解与审计逻辑唯一

3.10 隐私与合规

  • 记忆系统写入必须建立在「个性化推荐」授权之上,用户可随时关闭(关闭后仅保留 L0)
  • 人脸原图不入记忆库;L1 只存结论型特征
  • 记忆数据参与账号注销的彻底删除流程
  • 记忆内容不得包含健康、宗教信仰、政治倾向等敏感类别推断(即使用户提及,也不作为记忆项持久化)
  • 未成年人账号不启用行为推断类隐式记忆

4. 与各模块的关系

                   ┌──────────────────┐
   照片 + 问卷 ───▶ │   美学报告       │ ──写入 L1──┐
                   └──────────────────┘            │
                                                   ▼
   显式设置 ─────────────────────────────▶ ┌──────────────┐
   对话陈述 ─────────────────────────────▶ │  记忆系统    │
   行为埋点 ─────────────────────────────▶ │ L0~L5        │
                                          └──────┬───────┘
                                                 │ 画像摘要 + 偏好过滤 + 事件召回
                          ┌──────────────────────┼──────────────────────┐
                          ▼                      ▼                      ▼
                   ┌────────────┐         ┌────────────┐         ┌────────────┐
                   │ 穿搭 Agent │         │ 换装/发型  │         │  知识库    │
                   │            │         │  推荐      │         │  检索过滤  │
                   └────────────┘         └────────────┘         └────────────┘
                          │                      │
                          └──── 采纳/拒绝反馈 ───┴──▶ 回写 L2 / L3
模块 读取 写入
美学报告 L0、L2(禁忌影响建议) L1 全量、L3 报告版本
穿搭 Agent L0/L1/L2 摘要、L3 召回、L4 上下文 L2 候选偏好、L3 对话摘要、L4 上下文
换装模块 L1(体型/季型用于素材推荐)、L2(禁忌过滤) L3 试穿事件
发型模块 L1(脸型/量感/直曲/发色) L3 试戴事件
知识库检索 L0/L1/L2 作为硬过滤条件 —
我的衣橱(V2) L1/L2 用于衣橱适配分析 L5 单品

5. 指标

5.1 用户系统

  • 游客 → 注册转化率 > 25%
  • 华为账号一键登录占比 > 60%(首发平台)
  • 登录成功率 > 99%,注销请求处理时效 100% 达标
  • 人脸授权通过率 > 60%

5.2 记忆系统

指标 目标 意义
画像完备率(L1 关键 8 项填充率) > 70% 个性化能力的地基
人均记忆条数(L2) > 8 条 衡量学习深度
记忆确认率(pending → active) > 50% 隐式推断的准确性
记忆修正率 < 20% 过高说明诊断或推断不准
「我的记忆」页访问率 > 15% 透明度是否被感知
关闭个性化推荐比例 < 5% 信任度反向指标
有画像 vs 无画像用户的建议采纳率差值 > 15pp 验证记忆系统的实际价值
重复询问率(Agent 询问已知信息的比例) < 3% 记忆注入是否生效

6. 待确认事项

  • 华为账号登录的接入方式与 Uni-App-x 兼容性验证
  • 游客数据迁移的边界情况(多设备、换机、重装)处理方案
  • 向量库选型(自建 / 云服务)与成本评估
  • 会员点数制的最终定价与点数消耗比(依赖 V1 真实成本数据)
  • 隐式记忆推断的阈值与确认时机的 A/B 方案
  • 记忆数据保留时长与法务确认(L3 事件建议 180 天)
  • 是否支持家庭/多人档案(一个账号多个形象档案,如帮家人做诊断)——影响数据模型,建议 V1 预留 profile_id 字段
  • 端侧记忆缓存的加密方案

文档版本:v1.0 创建日期:2026-08-11 作者:产品团队 状态:待评审 关联文档: