Vivi 是一个 Telegram 内的 AI 角色 RP 对话产品 —— 用户从 Bot 进入,挑一个角色和故事,开始沉浸式聊天。这一页讲清楚产品到底是什么、用户在做什么、各个机制(亲密度 / 能量 / 礼物 / 生图 / 虚拟角色)怎么咬合在一起。PM、运营、客服必读。
新用户从 Telegram 链接点进来,五步内能完成一次完整的体验闭环:
用户在 Telegram 里搜 @ViviDreamsBot 或点分享链接,Bot 发欢迎语 + Mini App 按钮。
首次打开展示 4 屏功能介绍 + 免费宝石说明 + CTA。完成后写入 localStorage。
角色卡片网格(3 列),点开看 3 个故事剧情。新用户前 10 条消息免费。
SSE 打字机流式输出,TTS 一键播放,📷 生图,🎁 送礼,左上心形显示亲密度。
10⚡ 用完弹 popup → 跳订阅页(4 档⭐直购)或 Gems 商店(充💎买礼物 / 解锁虚拟角色)。
角色定义在 app/characters/data/characters.json,从 Softieweb Neon DB 同步过来。每个角色 3 个故事 = 总共 135 个 system_prompt 变体。
| 字段 | 含义 | 示例 |
|---|---|---|
id | 唯一 slug | isabella / victoria_starlight |
name | 角色全名 | Isabella Rivera |
tagline | 一句话定位 | "Bold Latina photographer..." |
avatar / video | 头像 + 主页视频 | media.softie.ai CDN 直链 |
voice | edge-tts 语音 | en-US-AvaNeural |
premium | 是否订阅锁定 | 布尔(当前 0 个;曾锁过 9 个奇幻类) |
stories[3] | 3 个故事 | id / title / description / image / system_prompt / greeting |
appearance | 外貌锚(生图一致性用) | "long black hair, hazel eyes, olive skin" |
default_outfit | 首图默认服饰(生图用) | "red silk dress" 等 |
每个角色都有 3 个 story,主题各异(日常 / 亲密 / 戏剧冲突),各自独立的 system_prompt + greeting + 场景图。用户在角色卡里挑一个故事入口,开始的对话就是该剧情的延续。这是 Vivi 提高复玩率的核心设计。
postgresql://... 在 Softieweb 的 .env.local)查 active + 非 private 角色,转格式追加到 characters.json。完整流程见 05 · Operations 篇。
用户和每个角色独立维护亲密度 XP。每条成功对话 +2 XP,等级影响角色 prompt 注入的态度(让模型有"人设内拒绝"的依据,避免 fallback 到 AI 免责声明)。
GET /api/affinity/{charId}(单查)、GET /api/affinities(列表),chat 响应里也带 affinity 字段免费用户的内容门槛靠 ⚡ 能量控制:
/api/user/me 或 /api/chat/send 时检查 energy_reset_date)#/plan 订阅页(不是 Gems 商店)聊天页 🎁 按钮 → 底部弹窗选礼物 → 用💎购买 → 下一条 AI 回复自动注入礼物反应 prompt → 用完标记 used=1。
礼物绑定到具体的 character_id + story_id,不会跨角色生效。GIFT_EFFECTS 常量在 app/database.py,每个礼物对应一段 prompt 注入文案。
Vivi 的差异化产品:用户输入"想见的角色名",LLM 现编人设。位置在角色列表第 3 位(深色星空卡),点击扣 99💎 进入动态聊天。
characters.json,在 loader.py 定义 YOUR_CHARACTER dict 和 DYNAMIC_ROLEPLAY_SYSTEM_PROMPT,get_all_characters() 在指定位置 insert(2, YOUR_CHARACTER)/api/characters 返回 custom: true + custom_cost: 99/chat/send 通过 is_custom_char 切换 prompt 构建路径,前端通过 data-custom="true" 走独立点击逻辑(扣💎→直接跳聊天,跳过 story 选择)聊天输入框旁边的 📷 按钮,点击 → 扣 15💎 → 后端基于当前对话上下文生成场景图。三档露度:mild → suggestive → explicit(按点击次数递增)。
从角色姓名推断种族外貌(Rivera→Latina,Khan→South Asian,Rossi→Italian 等 20+ 姓名映射),prompt 末尾追加 "consistent character appearance, same person throughout"。+ appearance 字段定义发色 / 眼色 / 肤色 / 体型作为锚。
每个角色每个 story 配预渲染的封面图(Story Image Library),近期已批量生成 135 张。这部分走 n8n + ComfyUI + RunPod(Workflow 仓库),不在 Vivi 仓库。
每条 AI 消息右侧有播放按钮,点击调 edge-tts 合成 mp3 流播放。每个角色配 voice(默认 en-US-AvaNeural)+ voice_rate + voice_pitch 微调。
近期已上线(#99):每日定时给 N 天未活跃用户发 Bot 消息,含视频 + 角色第一人称问候语。是被动用户激活的关键手段。
| 功能 | 状态 | 说明 |
|---|---|---|
| SSE 流式输出 | ✅ | 打字机效果 + 光标闪烁 |
| 礼物 Prompt 注入 | ✅ | 6 种礼物,下一条 AI 回复响应 |
| 能量每日重置 | ✅ | UTC 0 点 10⚡ |
| 每角色 3 个故事 | ✅ | 共 135 个剧情 |
| 亲密度 6 级 | ✅ | 每条消息 +2 XP |
| 首充翻倍 | ✅ | 首次 Stars 购买双倍💎 |
| 每日签到 +5⚡ | ✅ | Settings 页顶部 |
| Onboarding 引导 | ✅ | 4 屏新用户欢迎 |
| 年龄确认 + NSFW 开关 | ✅ | 但近期已下线 NSFW toggle(默认全开) |
| Mem0 长期记忆 | ✅ | Qdrant 语义检索替代 keyword |
| Your Character 虚拟角色 | ✅ | 99💎/次 |
| SSE 两阶段生图 | ✅ | base 预览 → face-swap 终图 |
| 角色召回 Push | ✅ | 视频 + 第一人称问候 |
| 功能 | 预估复杂度 | 说明 |
|---|---|---|
| 付费墙精准时机 | 低 | 对话高潮处而非能量耗尽后 |
| 对话模式切换 | 低 | Sweet / Flirty / Intimate 三档 |
| 成就系统 | 低 | 里程碑徽章 + 💎奖励 |
| 角色自定义 | 中 | 用户设置称呼方式、角色态度 |
| 动态角色图片系统 | 高 | 多套状态图 + 礼物触发图 |
| 限时活动系统 | 中 | 节日故事 / 限时角色 |
| 联盟推广 | 中 | 邀请码 + 佣金(Settings 入口已埋) |