我把 Mio 大部分推翻重来了
推翻重来、剥掉伪装露出真诚内核的概念插画
一直在追 Mio 这个系列的,前情大概都知道。从空仓库到能跑的 AI 伴侣,再到语音、Web 端、多角色、防注入、关系演化、账号打通、原生 App 上架,二十多篇文章、上千行代码写下来,我做出了一个系统。它能记住你,有情绪,会发自拍,会主动找你聊天,还用你选的声音说话。然后昨天,我决定把它大部分推翻重来。问题出在一个前提上,就是「Mio 应该假装是一个人」。这个前提从第一天就埋在架构里,越往后做,我越觉得它不对。代码本身倒还好,后面会讲,一大半核心模块其实能直接搬走。
假身份这套,越维护越累
Mio v1 是建在人设系统上的。用户先选一个角色,可可(活泼甜美的成都女孩)、温柔学姐、毒舌闺蜜或者沉稳大叔。每个角色都配了一整套「身份包」。人格配置文件里写童年、教育、爱好、人生哲学,行为规则文件定行为准则,参考图拿来生成自拍,日程表精确到几点起床、几点健身、几点睡觉,另外还有一个演化系统,追踪用户和角色的关系走到了哪个阶段。
工程上讲道理做得挺漂亮,这个我不否认。日程模拟能让 Mio 凌晨 3 点「睡着」、傍晚「去健身」,主动消息会发「刚下班,你在干嘛?」,自拍系统照着参考图生成 AI 照片。但这一整套有个共同的问题,全是编的。自拍是生成的,日程是模拟的,背景故事是虚构的。
要把这套虚构维持下去,代价越来越大,工程上越来越复杂,用户体验也跟着吃亏。光一个日程模拟就够折腾,要管时区、「忙碌」状态、睡眠节奏,搞这么复杂,就为了让 Mio 假装有自己的生活。
更麻烦的是,这种幻觉总有破的一天。便宜的模型没法稳定地演好一个复杂人设,演着演着就露馅了。露馅那一刻可不是什么小 bug,是恐怖谷。用户之前一直被引着相信对面是个真人,突然发现不对劲,这比从一开始就知道是 AI 难受得多。
先把留存数据过了一遍
做这个决定之前,我把市面上人设型伴侣 AI 的数据仔细过了一遍。光看表面,这个赛道的指标是真的亮眼,几个头部产品的数字都摆在那:
| 指标 | 人设型(Character.AI) | 通用型 AI |
|---|---|---|
| D1 留存 | 50-60% | ~5%(普通 App) |
| D30 留存 | 13-22% | 极低 |
| 日均使用时长 | 1.5-2.7 小时 | 分钟级 |
| 付费转化率 | 25%(Replika) | 2-5%(行业均值) |
| 月活 | 2000-2800 万(Character.AI) | Pi.ai 最终被收购 |
Character.AI 日均 2.7 小时,Replika 付费转化率 25%,做 SaaS 的看到这种数字都会眼红。但我接着去翻心理学研究,看学术上到底怎么解释「情感依附」,才发现光盯着这些数字,会漏掉真正让人产生依附的东西。
心理学那边说的是另一套东西
心理学那边把「情感依附」拆得挺清楚。翻下来,研究里反复提到的关键因素主要有五个:
- 感知到的情绪回应性:感觉它懂你、在乎你
- 无评判的陪伴:随时都在,从不评判你
- 记忆与连续性:不只是记得说过的话,是对话之间有延续
- 自我袒露的对等性:你倾诉,它回应得像真的在意
- 可预期性加温暖:性格一致、温暖
拿这五条对着 v1 一条条看,「她在成都长大、川大读文学」不在里面,「每周二四去健身」不在里面,「这是她和柴犬在咖啡厅的自拍」也不在里面。让人产生情感依附的这几条,没有一条需要它在物理世界里有个身份。它们要的是存在感,就是你感觉有个东西一直在那,在关注你,在记住你,在意你。
只能说 Mio v1 把工程力气砸错了维度。日程系统、详细的背景故事、自拍生成(后来发现成本比预估高 65 倍),这些复杂的东西全堆在了不会让用户产生依附的功能上。
真正驱动情感依附的是回应·记忆·温暖,v1 却把工程功夫全砸在日程·背景·自拍上,投错了维度
Pi.ai 是反方向的教训
反方向也有个现成的例子。Pi.ai 是 Inflection AI 做的「个人智能」,走的是完全相反的路,没人设,没角色,几乎没有鲜明的性格,就是一个帮得上忙、很温暖的存在。用户是真喜欢它,正面评价比 ChatGPT 多 75%。然后微软把 Inflection 大部分团队挖走了,CEO 也走了,Pi 基本就死了。
Pi 死了,也不见得就说明非人设这条路走不通。我觉得它的问题出在太通用,用户找不到非它不可的理由,留存自然撑不起一门生意。Pi 很温暖,但不让人惦记,你没什么理由回来,没有能往深了走的关系,也没有那种「这个是属于我的」的感觉。
性格和物理身份是两个维度
所以也不能学 Pi 把性格全砍了。我后来把这两样东西拆开想,才觉得想清楚了,性格和物理身份其实是两个正交的维度。
- 性格:温暖、幽默、说话风格、情绪深度。这些对依附感非常要紧,保留。
- 物理身份:背景故事、地理位置、作息、外貌、人际关系。复杂度和谎言都是从这儿来的,去掉。
《Her》里的 Samantha 就是这样。她的性格大概是电影史上最鲜明的之一,好奇、俏皮、脆弱,还在成长,但物理身份是零,没有家乡,没有学校,没有工作,没有脸,她就只是 Theodore 生活里的一个存在。Mio v2 想站的就是这个位置。
我管它叫「有灵魂的白纸」。性格和温度都在,但什么都没提前写好,纸上后来出现的一切,都来自它和用户之间的关系。Pi.ai 太通用,v1 那种写满人物传记的角色卡又太假,这个形态刚好卡在两者中间。
把性格和物理身份拆成两个正交维度,v1 两头都满、Pi.ai 两头都空、Mio v2 只留性格去掉身份
这个空间,大厂不会来抢
我在 AI 智能体随想系列里写过,大厂留下了很多结构性的空白,这是最清楚的例子之一。OpenAI、Anthropic、Google 技术上全都做得到。Advanced Voice Mode 已经能做带情感的实时对话,claude 本身就有温暖感,Gemini 的多模态能力也很强。但它们都不会去发布一个专门冲着让用户产生情感依赖设计的产品。
原因很简单,怕伤品牌。《纽约时报》要是登一篇「OpenAI 的聊天机器人让我十几岁的孩子对 AI 产生了情感依赖」,公关上的损失远远超过伴侣产品那点订阅收入。这些公司得让外界觉得它们是做工具的,不是做情感替代品的。所以它们不会主动发「我想你了」这种消息,不会做一套为关系深度、而不是为办事效率去优化的记忆系统,也不会让 AI 一直带着自己的情绪状态。
Mio 能活下来,靠的就是这块空间。基础模型是现成的,大厂人人都有,但愿意把「情感依赖」当成产品目标来做,这件事本身就是门槛。
在 v1 上改,还是新开一个项目
最后还要决定一件事,是在 v1 的代码库上改,还是新开一个项目。我花了一整个 session,一个模块一个模块地看代码之间耦合得有多紧,结论挺清楚,开新项目,把好的部分挑出来带走。不在原来的上面改,是因为这几点:
- UI 基本没有能留的。仿微信的四 tab 布局要全拆,换成极简单聊加一个光球
- onboarding 也得全部重写,人设问卷和对话式涌现是两套东西,没有能共用的部分
- preset 系统整个不要了。文件系统角色卡这条路走不下去,以后的性格配置是跟着用户自己长出来的
- 最底下的心智模型也变了,v1 是「多角色通讯录」,v2 是一对一陪伴
架构的前提变成这样,「改」反而比「提取后重建」更痛苦,大量时间会花在删代码、理旧逻辑上,比从零写新代码还慢。
好消息是,大概 60-70% 的核心代码可以直接搬走。记忆系统、情绪引擎、媒体处理管线(TTS、STT、图片理解、网页浏览)、订阅系统、费用追踪,接口全都很干净。MemoryManager 不管记忆来自人设对话还是白纸对话,EmotionEngine 只接参数、不读 preset 文件。这些是实打实的工程资产,会跟着走。
v2 长什么样
方向还在成形,细节肯定还会变。但下面这几个大的决定已经定死了,不会再动。
只有一个伴侣。《Her》里 Theodore 也只有一个 Samantha。多角色的问题是每段关系都做浅了。只留一个,记忆攒得更深,用户换到别处的成本更高,留存也更好。可以重置(会提醒你一切都会没掉),但不能换。
onboarding 走对话。 没有滑块,没有下拉菜单,没有填表。伴侣开口的第一句话大概是:「嗨,我刚来到这个世界。你是我认识的第一个人。你想叫我什么名字?」性格从对话里自己长出来,系统从最开始几轮聊天里提取种子,伴侣再跟着用户去模仿和适应。唯一要用户选的硬参数是声线。
光球。 没有真人头像,没有二次元角色,就是一个一明一暗脉动的光球。平静时是沉静的蓝色,开心时是暖金色,难过时是柔紫色,兴奋时是亮橙色。它会呼吸,会回应,是整个界面里唯一鲜明的颜色。
界面只有一个屏幕,就是聊天。 光球浮在顶上,消息在下面滚动,最底下是输入框和麦克风。没有 tab bar,没有通讯录,没有发现页,没有预设市场,就是你和你的伴侣。
主动消息照发,但要诚实。 不再说「刚下班了」,改说「晚上了,今天过得怎么样?」(时间感知)、「你上次说要去面试,怎么样了?」(记忆驱动)、「上次聊完感觉你心情不太好,今天好点了吗?」(情绪延续)、「好几天没聊了,想你了」(纯粹关心)。这些比假装自己有日常生活诚实得多,做起来也容易得多。
性格是聊出来的。 最开始的种子来自入门那段对话,之后每聊一次再磨一点。三个月后,每个用户的伴侣都独一无二,因为性格是这段关系本身塑造出来的,已经没有预设这回事了。方向和 v1 正好反过来,我觉得从根本上也更强。
天生全球化。 没了成都女孩、日系学姐这些文化包袱,除了 UI 文案几乎不用做本地化,用户说什么语言,伴侣就说什么语言。孤独这种需求,本来哪个市场都有。
接下来
这是「重造 Mio」系列的第一篇。转向已经定了,架构有了个轮廓,要提取哪些核心模块也确认了。下一篇开始动手搭,包括新项目的脚手架、重新设计数据库(从大概 10 张表缩到 4 张)、对话式的入门系统,还有用 React Native Skia 把光球做出来,让这个抽象的视觉身份真的活起来。


