16 KiB
Executable File
16 KiB
Executable File
数字我 / Digital Me — 项目计划
「有脸、有声音、有知识库的另一个你」——个人 AI 数字分身 / Digital Twin。
一句话定位
不是又一个知识库 App(那是 IMA / Notion AI / NotebookLM 的赛道), 而是「替你出现的有脸有声音的 AI 分身」。
- IMA = 帮你做事的隐形 AI 助理(无脸无声,文档/阅读/写作)。
- 数字我 = 替你现身的 AI 化身(有脸有声,形象 + 声音 + 人格化知识三位一体)。
两者错位互补:IMA 帮你工作更快;数字我帮你分身多地出现、长久被记住。
差异化原则(指导取舍)
- 重「拟人交互」,轻「办公深度」——初期不碰长文档深度解析 / 复杂报告生成。
- 形象/声音/人格三位一体;知识库只为「像你一样思考表达」服务,不做通用资料管理。
- 记忆分层:不仅存知识,还录人生时间线、重要事件态度、口头禅——强化「这是你,不是通用 Bot」。
- 隐私即壁垒:长期主打本地/私有部署(人脸声音不出本地)。MVP 先用 DashScope 云换速度。
技术内核(已复用,非自建)
整条多模态管线搬自已验证的 super-individual-app 平台(其艺术家垂直 =
The Digital Atelier)。本仓库是面向「复刻自己」的消费级独立产品。
| 能力 | 实现 | 状态 |
|---|---|---|
| 人格化对话 + RAG | Qwen / DashScope + text-embedding-v3 |
✅ 已接 |
| 形象捏脸 | 通义万相 wanx-style-repaint | ✅ 已接 |
| 声音克隆 + TTS | CosyVoice v2(WebSocket) | ✅ 已接 |
| 口播视频(口型同步) | 通义 EMO(audio→talking head) | ✅ 已接 |
| 可嵌入「和我分身聊天」 | 公开 slug 路由 /api/embed/:slug |
✅ 已接 |
| 社交分身(可授权社交节点) | 社交卡片 + 守护边界 + 公开 /api/social/:token |
✅ 已接 |
决策记录(本次已定)
- 代码形态:全新独立仓库
digital-me(非复用平台入口、非平台内 fork)。 - MVP 首发场景:个人 IP 分身(博主/咨询师/讲师)。
- 部署路线:MVP 先用 DashScope 云;本地/私有部署作为后续高隐私版本卖点。
- 2026-07 定位收敛:去掉青少年版,只做成人版。 删除 错题反考(quiz) + 家长监护(guardian)
audience/EDITION分版机制;互考擂台 + 排行榜从青少年重归类为成人通用裂变保留。 共享内核(AI 管线 / altauth 短信微信登录 / moderation 内容安全)不变。
路线图
阶段 1 — MVP:个人 IP 分身(进行中)
- 后端骨架:auth + twins + knowledge(RAG) + avatar + voice + ask/speak + talk-video + 公开 embed
- 后端韧性:缺 AI key 时各接口优雅降级(502 JSON),不再崩溃;全局错误兜底
- 前端
digital-me-web(Vue3+Vite+TS+Tailwind+Pinia):登录/注册、分身列表、Studio(形象/声音/知识库/对话/口播视频/发布)、公开嵌入页/me/:slug - 契约冒烟测试通过(register→create→knowledge→publish→embed),UTF-8 中文正确入库
- 填
DASHSCOPE_API_KEY+ cloudflared 隧道,真 AI 端到端跑通(RAG 对话实测 qwen-max + 真 embedding;捏脸/声音/EMO 路径已正确用公网 PUBLIC_URL) - 建分身向导(
CreateWizard.vue三步引导)+ Studio 配置进度条 - 「和我分身聊天」嵌入挂件:iframe 之外新增 JS SDK 悬浮气泡(
public/widget.js+GET /widget.js,发布页一键生成代码)
阶段 2 — 知识与记忆深化
- PDF / Word(.docx) / 图片 → RAG(
services/extract.js:pdf-parse / mammoth / Qwen-VL 读图 OCR) - 记忆分层:人生时间线 / 重要事件态度 / 口头禅 的结构化录入(
services/memory.js,口头禅注入人设、全部入 RAG) - 多轮会话管理(按主题分线,
services/session.js+ Studio 会话侧栏)
阶段 3 — 场景扩展
- 家人情感记忆 / 数字遗产(情感壁垒,IMA 不碰)
- 小微商务接待(中介/培训老师用分身接待初访客户)
- 实时视频对话(搬
live.js,摄像头帧 + 语音)— WS/api/live,前端Live.vue,Studio「视频通话」入口
阶段 4 — 隐私护城河
- 本地/私有部署版(人脸声音模型不出本地设备)
- 「真正拥有你的数字自我」——纪念包 / 名人高端定制
PRD 对齐(按《数字我》PRD 补全)
FR-3 学伴·错题反考(已移除,青少年功能,2026-07 随收敛为成人版删除)- FR-1.4 性格标签 + FR-4.1 专家模式 + FR-4.3 强制免责声明 (专家分身对外回答自动前置「我是 AI 数字分身,仅供参考,不构成专业建议」)。 Studio「人设」标签。
- 4.2 权限回收:
DELETE /api/auth/account注销并物理删除该用户全部数据 (twins/knowledge/messages/memories/sessions/errors/shares/social/rooms)。 - FR-3.3/3.4 学友互考 + 战报 + 排行榜(裂变引擎):同学给公开分身出题 →
分身(AI)应战作答 → LLM 判分 → 记录战报;双榜(分身按守擂胜率、出题官按
「难倒数」)。
services/challenge.js+ 公开/api/challenge/:slug[/battles]+/api/leaderboard[/challengers];前端Challenge.vue(出题应战) +Leaderboard.vue(双榜) + 聊天页「出题考考 TA」入口 + 头部「排行榜」。 - FR-4.2 付费咨询墙(Token 闸门 + 钱包):用户 Token 钱包(余额/流水/充值)、
专家分身定价(单次费+可问条数)、付费解锁深度咨询会话(逐条扣次)、平台分成
(专家得 70%)。
services/wallet.js(原子扣款 + 充值 seam) +services/consult.js+/api/wallet[/topup]+/api/consult/expert|start|session|mine;前端Wallet.vue(充值) +Consult.vue(付费解锁聊天) + Studio 人设定价 + Embed 入口。 支付 SDK 留接口:PAYMENT_PROVIDER=stub即时到账;接微信/Stripe 时实现 topup() 下单 + 回调到账(验签)。 - FR-5 策展 → 降维为通用「作品集」(产品决策):不单列「艺术家计划」模块——
艺术家=专家人设的一种。抽出唯一不可替代的能力「答问时展示并讲解作品」,
泛化为任何分身可用的作品集:上传图(+说明/自动识图)→入 RAG;聊到相关
内容时按相似度阈值内联展示对应作品图。
services/gallery.js(works) +/api/twins/:id/works+ask()附works+ ChatPanel 内联渲染 + Studio「作品集」标签。「艺术家计划」仅作为 GTM 包装(名人入驻/博物馆 kiosk = To B 定制),不是代码模块。 - 真实支付通道架构:订单生命周期(payments) + 幂等入账(原子 pending→paid,
防 webhook 重复) + 可插拔 provider。
services/payments.js:mock网关完整 模拟下单→支付→回调→入账(已本地验证含幂等);stripeCheckout(REST,无 SDK) + Webhook HMAC 验签(/api/wallet/webhook/stripe,raw body),填 STRIPE_* 即用;wechat预留 seam。前端 Wallet 充值跳转 payUrl + 返回轮询。只差商户密钥。 - 双语对话 + 标准发音 + 英语陪练:对话可切中/英(per-chat 语言选择器),
回复语言与语音随之切换;英文发音链 Azure Neural(标准, key-gated) → CosyVoice
克隆音色 → 浏览器 TTS 兜底;
英语陪练模式让分身自然对话并纠错引导(💡 Better:…), 为「指导学生英语对话」打底。services/azureTts.js+ speak.js 双语链 + twins/embed ask 支持 lang/tutor + ChatPanel 语言/语音/陪练开关。 - UI 中英切换(i18n)全站完成:vue-i18n + 顶部语言开关(中/EN,持久化、设
<html lang>);i18n.ts由 {zh,en} 目录生成(18 命名空间 / 390 键),全部 视图已接t()(App/Login/Dashboard/Studio/Plaza/Leaderboard/Rooms/Room/ Embed/Social/Consult/Challenge/Admin/Wallet/ChatPanel/CreateWizard),含插值。 保留为内容/品牌:性格标签值、数字我·Digital Me品牌、语言名。 - 三种登录:邮箱密码(内置)+ 手机短信验证码 + 微信扫码。
services/altauth.js+/api/auth/sms/{send,verify}、/api/auth/wechat/{qr,poll,callback,mock-scan}; users 支持 email/phone/wechatOpenId(partial-unique),/me 改按 id 查;前端 Login 三标签页。短信(aliyun)/微信(开放平台)真实通道 key-gated,未配置走 stub (短信 devCode 回显、微信 mock 扫码),均已本地端到端验证。 成人/青少年分系统、家长监护、EDITION 参数化拆分(已移除,2026-07 收敛为纯 成人版):删audience/EDITION/requireAdult、services/guardian.js+quiz.js、 前端edition.ts/版本选择器/Guardian.vue/ReQuiz.vue;互考擂台/排行榜转为成人无条件挂载。- 两个单点工具 MVP:口播侠(TalkShot,照片+声+文案→口播视频)、互考擂台(Arena,上擂台+
战绩+排行榜)。复用现有后端,
useMyTwin自动管理分身;VITE_APP可独立打包(DEPLOY §5c)。 (反考机 ReQuiz 已随青少年收敛移除。) - 每 MVP 独立落地页 + Slogan + 埋点漏斗:
Landing.vue(/welcome, 按 VITE_APP) + Slogan;analytics.ts track()→/api/track入库 → 超管/api/admin/funnel。 北极星指标——口播侠: video_generated;互考擂台: challenge_submitted。 - 产品工厂(商店+购买即开通+权益门控):
src/products.jsSKU 目录(上架=加一条);/store商店 +/buy/:sku独立购买链接;checkout→fulfill(开通权益+magic token)→redeem(自动登入);requireEntitlement门控;VITE_FACTORY=b|c工厂部署;utm 渠道归因(DEPLOY §5d)。 - 小程序(uni-app);3D/视频通话;接微信支付商户号 + 短信/微信登录商户密钥;外接 GA/umami。
数字我 · 社交分身(从「个人工具」升级为「社交载体」)
把「数字我」从私有资产变成可授权的社交节点:用户留在平台,不只为自己用, 而是为了「让别人认识数字版的我」。
身份三重分身
- 本体(Me):本人,最高权限,负责训练与审核。
- 社交分身(Social Clone):部署在好友/陌生人面前的受限版本——只有被授权的范围,带场景、边界、红线、有效期、可随时掐断。
- 访客(Friend):匿名与分身互动的人。
已落地(阶段一 MVP:熟人社交,验证「像不像」)
- 社交卡片(share):一个分身可生成多张卡片,各自独立链接
/s/:token。- 场景模式:朋友 / 职场 / 恋人 / 自定义(注入人设,决定 HOW 说)。
- 边界:开放程度(含蓄/适中/健谈)、红线话题(被问到礼貌岔开)。
- 隐私红线:硬性禁止透露住址/电话/证件/行程等,即使知识库有也不说。
- 安全:访客输入内容硬过滤(违法/暴恐/儿童不良)直接拒答、不调模型;诱导违规由人设守护拒绝。
- 记忆隔离:访客对话不进本体私人历史/知识库;按 visitorId 单独记录供本体回看(反馈回流,默认开、可关)。
- 时效 + 拉黑:可设有效期;可一键停用(访客侧 410)。
- 防冒充:
twin.verified蓝V 字段(平台置位),访客页展示认证标识。
- 后端:
services/social.js+routes/social.js(公开)+/api/twins/:id/shares管理 +ask()注入社交守护 system 块。 - 前端:Studio「社交分身」标签(建卡/模式/红线/有效期/链接复制/访客反馈)+ 公开名片页
/s/:token(bare,可 iframe)。 - 已端到端实测:正常延展 / 红线岔开 / 有害硬过滤 / 访客回流分线 / 停用 410 全部通过。
阶段二 — 广场社交(扩大影响力,进行中)
- 发现页 / 数字人广场:本体上架已发布分身(标签/分类),陌生人按标签搜索/浏览。后端
services/plaza.js+ 公开routes/plaza.js(GET /api/plaza、/api/plaza/tags、POST /api/plaza/:slug/rate)+ ownerPUT /api/twins/:id/plaza(须先公开);前端views/Plaza.vue(/plaza,搜索+标签 chips+卡片)+ Studio 发布页「上架到广场」+ 头部「广场」入口。 - 「灵魂测试」:访客在聊天页给「像不像本人」打分(1–5),均分+评数沉淀为社交背书,广场卡片展示。
- 「AI 代聊」:本体设状态语(如「他在开车,我先帮回」),聊天页顶部 banner 展示。
- 直播替身(2.5):本体开播,分身帮回弹幕(需接直播流,较重,后做)。
阶段三 — 群聊与协作(已落地)
- 平台原生群聊房间:本体拉自己/公开分身进群,生成分享链接
/room/:token, 任何人取昵称即可加入。后端services/room.js+routes/rooms.js(authed 管理/api/rooms+ 公开参与/api/room/:token)。 - 群里 @召唤某分身:消息 @名字 或选择成员 → 该分身带群聊上下文+社交守护+审核作答。
- 会议助手:
POST /api/rooms/:id/summary把群聊整理成「要点/决定/待办」纪要。 - 群消息加密落库(AES-256-GCM)+ 输入输出审核 + AI 限流。
- 前端:
views/Rooms.vue(建群/选成员/链接/纪要) +views/Room.vue(公开群聊, 轮询)。 - 接入微信群/外部 IM(需对接第三方,后续)。
社交商业化(待接)
- 本体付费:分身装扮/皮肤、算力包(免费每日限句)、多模态解锁(视频通话看脸)。
- 访客付费:与专家分身按分钟深度咨询;「解锁隐藏答案」微支付。
- B 端:社交名片(求职者把数字我放简历,HR 随时面试分身)。
安全红线(生死线)— 已做生产级加固
- 内容审核:
services/moderation.js输入+输出双向审核(社交 / embed / 群聊)。 三档(高优先级优先、逐级兜底):MODERATION_URL外部专业服务 →MODERATION_MODE=llmDashScope/Qwen 分类(已实测能拦截正则漏网的诈骗话术)→ 本地正则地板。 - 超管认证后台:前端
/admin(仅isSuperAdmin可见/可用)授/撤蓝V。 - 访客记录加密:
services/crypto.jsAES-256-GCM 落库加密(DATA_ENC_KEY), 本体读取自动解密;旧明文与无 key 场景均兼容。 - 蓝V 认证流程:
routes/admin.js仅SUPER_ADMIN_EMAILS可授,用户无法自我认证(防冒充)。 - 分层限流:登录/注册防爆破(20/min)、公开 AI 接口防刷量(30/min)、广场(60/min)、全局(200/min)。
- 基础硬化:helmet 安全头、密码常量时间比较、生产默认
JWT_SECRETfail-fast、 输入长度上限(MAX_QUESTION_LEN)、trust proxy取真实 IP。 - 仍建议:接专业审核服务(替换本地兜底)、密钥走 KMS、访客数据主权条款落地到产品文案。
商业模式(参考,不锁死)
- C 端订阅:基础(静态形象+文本)免费/低价;高级(动态视频+声音克隆+长记忆)月费。
- 定制服务:上门拍照录音建高精度分身(纪念包);名人/艺术家高端定制。
- B 端垂类:画廊/教育/诊所的「专家数字分身」,项目制收费。
仓库结构
digital-me/
PLAN.md ← 本文件
digital-me-backend/ ← Node + Express + MongoDB + DashScope
digital-me-web/ ← Vue3 + Vite + TS + Tailwind + Pinia 前端
.github/workflows/ ← CI/CD(push master 自动部署到 ECS)