大家好,我是Tulan团队的工程师Paula Dozsa,主要负责iOS应用开发。在接下来的二十分钟里,我将分享构建语音优先AI伴侣的工程挑战,以及我们如何内部利用AI来构建AI。人类一直憧憬着完美的陪伴者:四百年前卡拉瓦乔画中天使引导圣马太的手,象征着让彼此变得更好的存在;小叮当坚信你到必须靠观众鼓掌才能存活,代表纯粹的忠诚与信念;而山姆对弗罗多说“我可以背你”,则是无条件的支持。这些故事展现了人类渴望一种倾听、记忆且完全专属的陪伴,而Tulan正是为此而生。它是一个你可以像朋友一样大声对话的外星伙伴,拥有个性并随时间变得独一无二。

Tulan支持文本和语音聊天,但我们已积累超过四百万小时的语音对话数据。之所以称其为“语音优先”,是因为语音体验真正具有沉浸感,让用户与Tulan的关系感觉真实。一旦关系变为口语交流,工程问题便彻底改变:语音对话回合极快,从用户结束说话到Tulan开始回应必须在两秒内完成,否则便失去对话感;且上下文具有易变性。用户可能在做饭、走路或入睡时与Tulan交谈,中途切换话题甚至打断对方。早期延迟从两秒增至2.5秒时,所有产品指标均大幅下滑,用户抱怨反应迟钝。这一约束教会我们四大原则:首先必须为对话的易变性而设计,因为语音用户话题跳跃且表达杂乱。

早期我们修复了许多看似微小但实际影响产品的细节,例如不能在中途打断Tulan的发言。简短的“是”或“嗯”不应被视为有效回合,脏话会被过滤掉。更深层的教训是停止优化减少打断次数,转而优化减少糟糕的中断——即代理过早插话。我们构建了智能回合切换机制,通过分析说话模式判断打断是否真实,将最糟糕的过早中断减少了半数以上。为此我们愿意承担约60毫秒的额外延迟,以换取更自然的交互体验。

其次,延迟不仅仅是一个最终检查的数字,它本身就是产品的一部分。我们单独测量管道中的每个阶段,因为“感觉慢”毫无意义,必须知道具体哪里慢了。用户停止说话后,系统检测话语结束、转录语音,然后模型生成第一个token(通常耗时约一秒),接着文本转语音产生首个字节并播放。最大的质量飞跃来自在响应API中使用GPT-5.1,将语音生成时间缩短了超过0.7秒。此外,我们并非将所有回合发送给同一模型,而是运行分层集群:承载与Tulan关系的关键对话(如首次聊天和引导阶段)使用前沿模型,而轻量级回合则使用更小更快的模型。

整个策略的核心在于路由:决定每个回合具体需要哪个模型。我们在每个回合都运行一个称为“语气路由器”的小型分类器,它本身在廉价模型上运行,用于读取对话的情绪状态。我们的主要原则是根据“风险”而非成本进行路由:高风险时刻(如用户第一条消息、最初几天或任何被视为情感严肃的时刻,包括危机干预风格)始终使用最佳模型。而较轻的随意对话则交由更小、更快且更便宜的模型处理。总结对话、生成人格设定及语气路由器本身等后台工作也运行在小型模型上,因为前沿模型的单次使用成本约为小模型的5倍。

路由对我们实现单位经济可行性至关重要。A/B测试的一个惊人发现是:将三分之一的回合路由到小模型,对用户留存率几乎没有可测量的负面影响。第三点原则涉及如何让伴侣感觉像真正的伴侣。朴素的做法是将整个对话历史作为转录文本保留,但这在语音场景中往往导致上下文混乱且效率低下。我们需要更智能地管理记忆与摘要,确保在保持对话连贯性的同时优化资源分配,从而在不牺牲情感连接的前提下维持低延迟和高性能。

但这并不符合我们两秒的循环机制。它无法扩展,而且根本行不通。这会导致长会话质量下降,使模型在巨大的上下文中间迷失方向并产生幻觉。因此,我们将记忆视为一种检索系统。我们从对话中提取事实、偏好和情感氛围信号,对它们进行嵌入处理并存储在向量数据库中,实现低于50毫秒的查找速度。每晚我们都会进行压缩:合并重复项、聚类相关记忆、解决矛盾,并剔除所有噪音。我们不仅针对用户上一条消息进行检索,还会生成关于人物和关系的内部问题并据此检索。

此外,我们将记忆分为两部分:稳定记忆和不稳定记忆。易变的内容存在于提示词的实时尾部中,当总结对话时,我们会查看哪些记忆被实际召回,并将它们固定到稳定且可缓存的区块中。最后一个原则涉及上下文:具体来说,你应该重建上下文而不是对抗漂移。大多数应用会在多轮对话中复用上下文以保持缓存活跃。在稳定的文本聊天中,这没问题;但在易变的语音对话中,这是一个陷阱,因为一旦用户转变话题,复用的上下文就会变得完全错误。

因此,每一轮我们都会从各个部分重新组装上下文窗口:包括近期消息的摘要、用户的人物卡片、刚刚检索到的记忆、来自情感信号的情感基调指导,以及实时应用状态。这对Tolan来说尤其有帮助,因为我们的角色不是没有个性的通用助手。每个角色都经过精心打造,我们甚至有一位内部科幻小说家Elliot来撰写Tolan的角色背景故事。这里有几个有趣的点:首先,为什么选择外星人?主要是因为没有现实世界的参照物可以锚定,这意味着用户可以将其投射为所需的样子。

基础版的Tolan活泼、年轻且不拘一格。此外,如果外星人角色表现得有些不可预测——比如冲动、混乱或违反用户预期的规范——这并不令人惊讶。就像你在电视剧或戏剧中看到的外星人一样,围绕这一点有很多幽默时刻。这种混乱读起来很有魅力。其次,我们知道如果个性发生漂移,那么个性就毫无价值。因此,我们运行一个并行的情感监控系统,根据用户的情感线索改变台词的演绎方式,而不改变角色本身的身份,从而在数百轮对话中保持身份一致。

既然我们在一个AI会议上,我想花点时间谈谈我们不仅交付AI产品,还利用AI来构建它。我相信在座的各位大多都经历过这种情况:自去年底以来,Claude在我们iOS应用中共同编写的代码量超过了团队中任何一位个体工程师。几个月前,每个人的本能反应是持怀疑态度,因为更多的AI代码意味着更多垃圾内容(slop)。但我们的无崩溃率实际上从99.6%提升到了99.9%,运行时错误减少了50%以上,高度活跃用户的比例翻了一番。

构建该系统最大的教训是:智能体的上下文主要来自代码库本身,而不是Claude的MD文件。我们发现让代码库成为文档要强大得多,因此我们让智能体对其进行标准化。在此基础上,我们运行着一个真实的智能体舰队:有负责实现的智能体,它们自由思考并生成可运行的代码;构建完成后,它们会与快照进行比对检查,直到像素完美为止。此外还有独立的审查智能体来执行我们的标准。基本上,多个Claude会在人类查看之前互相审查代码。

我们还有一个PR牧羊人(Pull Request Shepherd),它监控开放的拉取请求,并根据CI失败和审查意见不断迭代,直到代码干净。我们还有一个分类机器人(Triage Bot),会在收到每份传入的错误报告时触发任务。所有这些智能体都通过MCP连接到Linear、Sentry和DataDog,使得一个智能体可以重建崩溃现场并自行路由处理,通常还能自动打开拉取请求来修复错误。

我们还通过评估(Eval)进行发布。例如,我们正在开发一款面向年长人群的新角色,我们的内部小说家Elliot基本上在一天内就构建了整个新角色。智能体映射了代码中所有承载个性的表面,编写了一本“声音圣经”,然后由五位评委从不同角度进行攻击性测试:原型保真度、模型机制、我们的代码标准、一位 skeptical 52岁用户的耳朵,以及安全性。随后,他们在三轮“发现-修复-验证”中针对真实的生产日志评估了这些更改。

经过700万个token和4.5小时的计算,Elliot最终在下午就完成了原本需要几周的工作。这有效吗?让用户来告诉你吧:我们在App Store上拥有162,000条评论中的4.8星评分。当我们在调查中询问用户的幸福感时,得分最高的维度无疑是情感安全。这确实是“语音优先”设定的一条高标准。当界面是你的声音,而另一端记得你并具有个性时,它就不再仅仅是软件,而是开始成为一种真正的关系。这就是为什么负责任地、高质量地构建它是值得痴迷追求的。

我们需要人们来帮助我们做到这一点。我们是一个小团队,正在招聘中。在Tolan工作一年后,我认为这绝对是当今世界上最有趣的地方之一供工程师施展才华。以下是你将与之共事的一些人:两位创始人Quinton和Evan之前共同创建并退出了一家价值3亿美元的公司。他们创立了Even公司。我们的第三位联合创始人Ajay将两家自举公司发展至超过5000万美元的盈利收入。

围绕在他们身边的是Lucas,她是一位苹果设计奖获奖动画师,担任我们的创意总监。我们有Chris,他曾是皮克斯的技术总监,早期在Oculus工作,负责化身(embodiment)相关事务。我们有Lily,一位持证行为分析师,她放弃了范德堡大学的博士学位,从一开始就为我们从事用户研究。还有Elliot,我之前提到过的我们角色背后的小说家。我来自XAI和Spotify,之前还创立了一家名为Imagi的公司。这是一个小团队,诚实地说,每个人都是我在各自领域合作过的最优秀的人。

我们对此也有强有力的资金支持。我们已经从Costanoa Ventures以及一群每天使用你们所构建工具和产品的专业人士那里筹集了3000万美元。以下是我们需要帮助的一些更偏向工程领域的职位:我们全面招聘,包括iOS和后端产品工程师、应用AI工程师、游戏引擎工程师,以及一个我想特别指出的特定职位:智能体工程经理。

当我们全力投入运行并发智能体时,团队中那些具有管理背景的人效率显著提高,因为管理一群智能体确实需要与管理人员相同的技能。你基本上必须分解问题,通过检查点进行委派,提供快速反馈,认真审查他们的工作成果,并知道何时介入。

因此,如果你是一位认为转向管理就意味着要离开代码的强力工程师,那这种看法已经不再适用。这就是Tlon的情况。你可以在会后与我交谈或联系我的LinkedIn,邮箱地址在这里,我也在Twitter上活跃。我很乐意交流。谢谢大家。(掌声)