02 · Product

产品形态与角色体系

Vivi 是一个 Telegram 内的 AI 角色 RP 对话产品 —— 用户从 Bot 进入,挑一个角色和故事,开始沉浸式聊天。这一页讲清楚产品到底是什么、用户在做什么、各个机制(亲密度 / 能量 / 礼物 / 生图 / 虚拟角色)怎么咬合在一起。PM、运营、客服必读。

关键数字

45
公开角色
135
故事剧情
6
亲密度等级
6
礼物种类

用户旅程:从 Bot 到第一次付费

新用户从 Telegram 链接点进来,五步内能完成一次完整的体验闭环:

STEP 1

启动 Bot

用户在 Telegram 里搜 @ViviDreamsBot 或点分享链接,Bot 发欢迎语 + Mini App 按钮。

STEP 2

Onboarding

首次打开展示 4 屏功能介绍 + 免费宝石说明 + CTA。完成后写入 localStorage。

STEP 3

挑角色 + 故事

角色卡片网格(3 列),点开看 3 个故事剧情。新用户前 10 条消息免费。

STEP 4

沉浸聊天

SSE 打字机流式输出,TTS 一键播放,📷 生图,🎁 送礼,左上心形显示亲密度。

STEP 5

能量耗尽 → 付费

10⚡ 用完弹 popup → 跳订阅页(4 档⭐直购)或 Gems 商店(充💎买礼物 / 解锁虚拟角色)。

角色体系

角色定义在 app/characters/data/characters.json,从 Softieweb Neon DB 同步过来。每个角色 3 个故事 = 总共 135 个 system_prompt 变体。

角色卡片字段

字段含义示例
id唯一 slugisabella / victoria_starlight
name角色全名Isabella Rivera
tagline一句话定位"Bold Latina photographer..."
avatar / video头像 + 主页视频media.softie.ai CDN 直链
voiceedge-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" 等

三个 Story = 一个角色三种打开方式

每个角色都有 3 个 story,主题各异(日常 / 亲密 / 戏剧冲突),各自独立的 system_prompt + greeting + 场景图。用户在角色卡里挑一个故事入口,开始的对话就是该剧情的延续。这是 Vivi 提高复玩率的核心设计。

新增角色 SOP:从 Softieweb Neon DB(postgresql://... 在 Softieweb 的 .env.local)查 active + 非 private 角色,转格式追加到 characters.json。完整流程见 05 · Operations 篇。

亲密度系统(Affinity)

用户和每个角色独立维护亲密度 XP。每条成功对话 +2 XP,等级影响角色 prompt 注入的态度(让模型有"人设内拒绝"的依据,避免 fallback 到 AI 免责声明)。

L0
Stranger
0 XP
L1
Acquaintance
10 XP
L2
Friend
30 XP
L3
Close Friend
60 XP
L4
Confidant
100 XP
L5
Partner
150 XP

能量与签到

免费用户的内容门槛靠 ⚡ 能量控制:

付费墙时机优化(待办):当前耗尽才弹付费,对标竞品(Lucid 等)应该在对话高潮处触发引导而非能量耗尽后。这是产品 backlog 高优先项。

礼物系统(Items / Gifts)

聊天页 🎁 按钮 → 底部弹窗选礼物 → 用💎购买 → 下一条 AI 回复自动注入礼物反应 prompt → 用完标记 used=1

🌹
Rose Bouquet
浪漫表达
15 💎
💌
Love Letter
深化情感
20 💎
🍾
Champagne
庆祝氛围
25 💎
🪄
Silk Blindfold
信任游戏
25 💎
🎁
Mystery Box
惊喜
20 💎
💍
Diamond Ring
极致浪漫
25 💎

礼物绑定到具体的 character_id + story_id,不会跨角色生效。GIFT_EFFECTS 常量在 app/database.py,每个礼物对应一段 prompt 注入文案。

Your Character(虚拟角色 · 99💎/次)

Vivi 的差异化产品:用户输入"想见的角色名",LLM 现编人设。位置在角色列表第 3 位(深色星空卡),点击扣 99💎 进入动态聊天。

生图玩法(聊天里的 📷 按钮)

触发方式

聊天输入框旁边的 📷 按钮,点击 → 扣 15💎 → 后端基于当前对话上下文生成场景图。三档露度:mild → suggestive → explicit(按点击次数递增)。

技术:fal.ai FLUX Pro v1.1 (NSFW) + face-swap,6-26s 两阶段 SSE 推流。详见 01 · Architecture 篇。

角色一致性

从角色姓名推断种族外貌(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 仓库。

脚本:scripts/submit_new_prompts.py · POST n8n webhook

语音播放(TTS)

每条 AI 消息右侧有播放按钮,点击调 edge-tts 合成 mp3 流播放。每个角色配 voice(默认 en-US-AvaNeural)+ voice_rate + voice_pitch 微调。

角色召回 Push(Recall Push)

近期已上线(#99):每日定时给 N 天未活跃用户发 Bot 消息,含视频 + 角色第一人称问候语。是被动用户激活的关键手段。

已实现功能清单(v2 迭代后)

功能状态说明
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视频 + 第一人称问候

产品 Backlog(PM 评估优先级)

功能预估复杂度说明
付费墙精准时机对话高潮处而非能量耗尽后
对话模式切换Sweet / Flirty / Intimate 三档
成就系统里程碑徽章 + 💎奖励
角色自定义用户设置称呼方式、角色态度
动态角色图片系统多套状态图 + 礼物触发图
限时活动系统节日故事 / 限时角色
联盟推广邀请码 + 佣金(Settings 入口已埋)
← 上一篇
01 · 系统架构总览