一个数字缅怀平台——从聊天记录、语音、亲友描述中提取人物的基础性格特点,借助大模型对话能力,尽最大程度还原 TA 的说话方式、音色语调、语气词习惯、打字标点风格甚至错别字特征,让每一次对话都像在和 TA 本人聊天。系统同时以故事化形式呈现人物完整人生历程,将生平记忆与 AI 对话深度融合,让记忆有温度地传承与延续。
┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ Nginx (前端) │────▶│ Express (后端) │────▶│ MySQL 8.0 │ │ React 18 SPA │ │ REST API │ │ 数据持久化 │ │ :80 │ │ :3001 │ │ :3306 │ └────────────────┘ └────────────────┘ └────────────────┘ │ │ │ /api/* 代理 │ OpenAI 兼容 API │ /uploads/* 代理 ▼ │ ┌────────────────┐ │ │ AI 模型服务 │ │ │ (混元/DeepSeek/ │ │ │ OpenAI 等) │ └───────────────┘────────────────┘
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | React 18 + React Bootstrap | SPA 单页应用,HashRouter 路由 |
| Web 服务器 | Nginx Alpine | 静态资源、gzip、API/上传反代、SSE 流式支持 |
| 后端 API | Express.js (Node 18) | RESTful API,文件上传,AI 代理 |
| 数据库 | MySQL 8.0 | 7 张表,utf8mb4,JSON 列,外键级联删除 |
| AI 引擎 | OpenAI 兼容 API | 人物性格建模 + 语言风格还原 + 情感对话生成 |
| 文件存储 | 本地文件系统 | 上传文件存储于 Docker Volume |
| 容器编排 | Docker Compose | 三服务编排,自动初始化数据库 |
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 素材上传 │───▶│ AI 角色分析 │───▶│ 档案生成 │───▶│ 对话还原 │ │ │ │ │ │ │ │ │ │ · 文字描述 │ │ · 性格特点 │ │ · 人物概述 │ │ · 风格一致性 │ │ · 聊天记录 │ │ · 说话风格 │ │ · 性格标签 │ │ · 记忆关联 │ │ · Markdown │ │ · 情感基调 │ │ · 常用语 │ │ · 情感适配 │ │ · 图片素材 │ │ · 常用表达 │ │ · 人物背景 │ │ · 安全边界 │ │ · 语音样本 │ │ · 背景信息 │ │ · 情感基调 │ │ · 持续优化 │ └─────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
| 表名 | 说明 | 关键字段 |
|---|---|---|
users | 用户表 | id, nickname, settings |
memorials | 纪念页表 | id, title, name, relationship, character_profile (JSON), attachments (JSON) |
memorial_invites | 邀请码表 | memorial_id, invite_code |
comments | 评论表 | memorial_id, content, is_approved |
media_files | 媒体文件表 | memorial_id, file_path, file_type |
chat_profiles | 聊天人设表 | memorial_id, model_config (JSON), voice_features (JSON) |
chat_messages | 聊天消息表 | memorial_id, sender, content |
所有表均使用 utf8mb4 字符集,支持 emoji 表情。纪念页删除时会级联删除关联的邀请码、评论、媒体、聊天记录。
| 分组 | 方法 | 路径 | 说明 |
|---|---|---|---|
| 纪念页 | GET | /api/memorials | 获取列表(支持 isPublic 过滤) |
| GET | /api/memorials/:id | 获取详情 | |
| POST | /api/memorials | 创建 | |
| PUT | /api/memorials/:id | 更新 | |
| DELETE | /api/memorials/:id | 删除 | |
| POST | /api/memorials/batch | 批量获取 | |
| 评论 | GET | /api/comments | 获取已审核评论 |
| GET | /api/comments/pending | 获取待审核评论 | |
| POST | /api/comments | 添加评论 | |
| PUT | /api/comments/:id/approve | 审核通过 | |
| DELETE | /api/comments/:id | 删除评论 | |
| 邀请码 | POST | /api/invites | 生成邀请码 |
| GET | /api/invites/validate | 验证邀请码 | |
| 媒体 | POST | /api/media/upload | 上传文件 |
| GET | /api/media | 获取文件列表 | |
| DELETE | /api/media/:id | 删除文件 | |
| 对话 | GET | /api/chat/profiles | 获取聊天人设 |
| POST | /api/chat/profiles | 创建人设 | |
| PUT | /api/chat/profiles/:id | 更新人设 | |
| GET | /api/chat/messages | 获取消息列表 | |
| POST | /api/chat/messages | 发送消息 | |
| AI | POST | /api/ai/stream | 流式文本生成 (SSE) |
| POST | /api/ai/generate | 非流式文本生成 | |
| POST | /api/ai/analyze | 聊天记录分析 | |
| POST | /api/ai/analyze-character | AI 角色形象分析 | |
| 系统 | GET | /api/health | 健康检查 |
Echoes_of_Time/ ├── docker-compose.yml # Docker 编排文件 ├── Dockerfile # 前端多阶段构建 (React → Nginx) ├── nginx.conf # Nginx 配置 (代理 + 缓存 + SSE) ├── .env.example # 环境变量示例 ├── package.json # 前端依赖 ├── index.html # HTML 入口 ├── public/ # 静态资源 ├── src/ # React 前端源码 │ ├── App.js # 主应用 + 路由 │ ├── api.js # REST API 客户端 │ ├── config.js # 前端统一配置 │ ├── components/ # 组件 │ │ ├── MemorialForm.js # 纪念页创建/编辑表单(附件上传+AI角色分析) │ │ ├── MemorialView.js # 纪念页查看(角色档案+附件展示) │ │ ├── EmotionalChat.js # AI 情感对话(基于角色档案) │ │ ├── ModelSettings.js # AI 模型设置面板 │ │ ├── TextAnalyzer.js # 聊天记录文本分析 │ │ ├── VoiceFeatures.js # 语音特征管理 │ │ ├── CommentApproval.js # 评论审核 │ │ ├── InviteModal.js # 邀请码弹窗 │ │ ├── Collaborators.js # 协作管理 │ │ ├── MediaGallery.js # 媒体库管理 │ │ ├── TimeLine.js # 时间线展示 │ │ ├── AccessibilitySupport.js # 无障碍支持 │ │ └── ResponsiveDesign.js # 响应式布局 │ └── pages/ │ └── EditMemorial.js # 编辑纪念页 ├── server/ # Express 后端 │ ├── index.js # 入口 (含 DB 就绪等待) │ ├── config.js # 后端配置 │ ├── db.js # MySQL 连接池 │ ├── database/init.sql # 数据库初始化脚本 (7 张表) │ ├── Dockerfile # 后端容器构建 │ └── routes/ # API 路由 │ ├── memorials.js # 纪念页 CRUD │ ├── comments.js # 评论管理 │ ├── invites.js # 邀请码 │ ├── users.js # 用户管理 │ ├── media.js # 媒体文件上传 │ ├── chat.js # 聊天人设与消息 │ └── ai.js # AI 代理(流式/非流式/分析) ├── eot_ver.md # 核心设计理念与架构设计文档 └── INSTALL.md # 安装部署手册
项目名称: 数字人生形象模拟
运行环境: Docker / Docker Compose