# M23（预研）：数字人简历问答（Web 2D 角色）里程碑与技术选型

> 状态：**预研文档**（先写文档，不进入当前开发执行）  
> 前置条件：`M21`、`M22` 收束完成后再正式立项。

## 一、为什么现在先写这份文档

当前项目已进入 `v2.2.9`，RAG 主链路和部署链路已可用。  
下一步想做“数字人简历问答”是合理延伸，但为了保持教程节奏和交付稳定性，先把：

- 产品边界
- 技术选型
- 风险与非目标
- 后续 issue 拆分方式

一次写清楚，避免后续边做边改、打散已有链路。

## 二、已确认的产品边界（来自当前讨论）

### 本阶段做什么（v1）

- 只做“简历问答角色”（Web 内嵌 2D/Live2D）
- 游客可见角色，但不可对话
- 登录用户可进行多轮问答
- 暂不接语音（只做文本对话 + 字幕）

### 本阶段不做什么

- 不做 ASR/TTS（语音识别/语音合成）
- 不做直播编排与摄像头驱动
- 不做复杂动作捕捉与口型同步
- 不做 Agent 自动执行任务

## 三、与当前系统的关系（为什么可行）

当前仓库已经具备数字人问答 v1 所需的关键基础：

- 已有 RAG 状态、重建、检索、问答 API
- 已有用户文档入库链路（上传 -> 提取 -> 切块 -> embedding -> 入索引）
- 已有权限系统与 JWT 机制
- 已有前后端分层和可部署链路

因此 M23 本质不是“从零做 AI 产品”，而是：

> 在现有 RAG 能力上增加“会话层 + 角色表现层 + 可观测性收口”。

## 四、技术选型（v1 推荐）

## 4.1 角色展示层（Web）

### 推荐：Web 内嵌 2D/Live2D 渲染

候选：

- `pixi-live2d-display`（偏工程可控）
- 轻量 2D 立绘（先不启用复杂 Live2D 动作）

推荐原因：

1. 与当前 `web`（Next.js）集成成本低
2. 可先实现“角色可见 + 文本问答”最小闭环
3. 避免过早引入直播生态依赖与高延迟链路

### 暂缓：AIRI / VTube Studio 深集成

原因：

- 更偏“数字人应用”或“直播生态”路线
- 当前阶段会显著提高系统复杂度
- 与 `M21/M22` 当前主线目标（RAG + Chat 基础稳定）优先级冲突

## 4.2 对话与记忆层

### 推荐：沿用现有 server RAG 链路 + 新增会话存储

建议新增最小模型：

- `chat_sessions`
- `chat_messages`
- （可选）`chat_memory_snapshots`

推荐原因：

1. 与当前 SQLite / server 结构一致
2. 可先支持“最近 N 轮 + 摘要”策略
3. 后续迁移 Redis / 向量会话记忆时改动可控

## 4.3 权限与访问控制

### 推荐：游客只读展示 + 登录后对话

- 角色展示接口：公开
- 对话接口：JWT 保护

推荐原因：

1. 满足展示需求，同时控制成本与滥用风险
2. 与现有 auth 能力一致，不需新开一套账户体系

## 4.4 可观测性（v1 强制）

建议最小日志字段：

- `sessionId`
- `userId`（匿名/登录）
- 检索命中数与引用来源
- LLM 耗时、总耗时、失败原因

推荐原因：

- 让“角色问答”可定位、可解释、可优化
- 为后续语音版提供性能基线

## 五、架构草图（无语音版）

```text
Web 页面（角色层）
  -> chat API（JWT）
    -> RAG 检索（search）
      -> LLM 生成（ask）
        -> 返回 answer + citations + metrics
  -> 前端字幕/气泡渲染
```

关键点：

- 角色层负责表现，不承载核心业务逻辑
- RAG 与会话逻辑集中在 server
- 引用来源（citations）作为默认输出能力

## 六、里程碑建议（暂定 M23）

> 注意：这里只做预研拆解，不在当前迭代执行。

### M23-issue-01：角色页最小壳（游客可见）

- 目标：角色渲染 + 文案介绍 + 禁用态按钮
- 非目标：不接对话 API

### M23-issue-02：登录后会话入口（权限门禁）

- 目标：登录用户可进入 chat
- 非目标：不做语音

### M23-issue-03：会话与消息持久化最小模型

- 目标：session/message 可回放
- 非目标：不做复杂长期记忆

### M23-issue-04：RAG + 会话融合回答链

- 目标：多轮问答 + citations
- 非目标：不做工具调用

### M23-issue-05：可观测性与调试视图

- 目标：关键耗时、命中率、错误归因
- 非目标：不做完整 BI

### M23-issue-06：教程与运行手册收束

- 目标：文档、日志、复现步骤齐全
- 非目标：不扩新功能

## 七、风险与应对

### 风险 1：Live2D 资源与授权不清

应对：

- 上线前确认模型素材与 SDK 授权边界
- 先用可商用/可复用素材做验证

### 风险 2：RAG 质量波动影响角色体验

应对：

- 强制 citations
- 建立评测问题集（命中率与可解释性）

### 风险 3：前端表现过重拖慢首屏

应对：

- 角色资源懒加载
- 降级策略（静态立绘 fallback）

## 八、立项前检查单（M21/M22 完成后再勾选）

- [ ] M21 的检索、入库、可解释问答能力已稳定
- [ ] M22 的流式与会话基础能力已收口
- [ ] 对话接口耗时与失败日志可观测
- [ ] 角色资源授权确认完成
- [ ] 游客只读 / 登录可聊的权限边界可验证

## 九、一句话结论

M23 不是“做一个炫酷数字人演示”，而是把当前 RAG 能力升级为：

- 有角色表现
- 有会话记忆
- 有权限边界
- 有可观测性的稳定问答入口

并且在**不打乱 M21/M22 节奏**前提下，渐进落地。
