凤希AI伴侣的导航栏数据升级,在2月2日这版迭代里算是一次很典型的"表面改动小、背后工作重"的版本。导航栏从一组静态入口变成了一套由数据驱动的动态决策界面,AI能力也从"聊天窗口里的插件"开始往产品骨架层渗透。这篇就拆一下这次升级怎么做、踩过哪些坑,以及我对AI落地这件事的几个不太成熟的判断。如果你正在做AI类产品,或者想给App里某个高频模块接入数据驱动逻辑,这篇应该能给你一些可以直接抄作业的思路。
先说结论:导航栏看起来只是个UI组件,但把它当成"数据产品"来做的过程中,几乎把AI伴侣类产品的核心难题都碰了一遍:意图理解、记忆系统、用户信任、动态编排的稳定性。所以与其说这是一次导航栏升级,不如说是用一个小切口把AI落地的完整链路跑通了一次。
1. 项目背景:导航栏升级的动机,而不只是UI替换
1.1 升级之前的困境:导航栏只是个标签堆砌
很多AI伴侣类产品在初期都有一个通病:导航栏是产品经理拿Excel排出来的固定项。凤希之前的导航栏也是这个路子,几个固定Tab:首页、消息、动态、发现、我的。看起来没什么问题,但实际用下来有几个很明显的痛点。
新用户进来不知道先去哪。明明有一个很核心的"陪伴模式",但入口藏在二级页面里,导航栏上根本看不到。老用户又形成了路径依赖,翻来覆去只在"消息"和"发现"两个Tab之间跳,其他功能几乎是废的。最要命的是运营侧,每次上新功能就往导航栏塞一个入口,一个导航栏塞了十几个东西,拥挤不堪,最后每个入口的转化率都在掉。
我印象很深的是一个数据:当时"情感记录"这个功能的周渗透率不到3%,但它是产品里用户口碑最好的功能之一。这说明不是功能不行,是用户根本找不到它。这个问题靠UI优化解决不了,根子在于导航栏没有数据支撑,不知道用户此刻需要什么,也不知道一个入口该在什么时候出现、以什么优先级出现。
1.2 这次升级拆成三个可验证的目标
做升级之前,我先跟团队把目标对齐了三件事,方便之后验收:
- 提升核心功能的发现率,重点是新用户7日内的功能触达数。
- 让导航栏具备一定AI编排能力,能根据用户状态动态调整入口优先级。
- 建立一套可度量的数据基线,所有变化都要有对照,不能"改了感觉变好了"就完事。
另外还设了一条底线:动态调整的比例必须控制在30%以内,70%的导航结构保持稳定。这个决策是从用户习惯出发的——导航栏不是信息流,用户可以接受推荐内容的变化,但导航是肌肉记忆,全变了会让老用户产生"走错App"的错乱感。这个底线在后面A/B测试里被验证是对的,后面会详细说。
2. 导航栏数据架构:从静态标签到实时决策层
2.1 数据源整合:四路信号归到一个决策入口
动态导航的第一步是把所有能影响"用户此刻想要什么"的信号收拢起来。凤希这边归了四类数据源,每一类都要解决特定的问题。
第一类是行为埋点,这是最基础的数据。包括页面停留时长、点击序列、功能使用频次、最近使用时间。埋点这件事看着简单,但最容易被低估。我们第一次做的时候埋点字段不全,结果做导航项权重计算时缺了"最近一次使用时间"这个关键字段,导致一套排序逻辑没法跑,只能回头补数据。
第二类是用户画像,解决的是"这个人长期偏好什么"。画像数据里包含性别、活跃时段、兴趣标签、关系状态(比如和AI的陪伴亲密度等级)等。这些数据更新频率不需要太高,T+1更新就够,但必须有稳定的回流管线。
第三类是上下文信号,解决的是"此刻发生了什么"。比如当前时间、星期几、天气、用户最近5分钟的行为路径。这类数据是动态导航实时决策的核心输入。
第四类是AI意图输出,也是最特殊的一路信号。凤希的对话引擎会实时对用户最近几轮聊天内容做情绪识别和意图分类,然后把"用户当前处于低落状态""用户想聊日常琐事""用户正在规划一次旅行"这类结构化标签输出给导航编排层。
四路信号合到一起之后,统一进一个特征服务,格式标准化后供给决策引擎。用一张表来说明这四类信号的采集方式和更新频率会比较直观:
| 数据源 | 典型字段 | 采集方式 | 更新频率 |
|---|---|---|---|
| 行为埋点 | 点击序列、停留时长、使用频次 | SDK上报 | 实时 |
| 用户画像 | 活跃时段、兴趣标签、亲密度等级 | 离线数仓回刷 | T+1 |
| 上下文信号 | 时间、天气、近5分钟行为路径 | 网关实时计算 | 实时 |
| AI意图输出 | 情绪标签、意图分类、话题主题 | 对话引擎回调 | 实时 |
2.2 动态编排引擎:谁决定导航项的顺序
数据收上来之后,关键问题变成了"怎么决定当前导航项的顺序"。凤希没有一开始就上模型,而是先用规则引擎搭了一套打分框架,把决策逻辑拆成可解释的因子。
每个候选导航项会拿到一个综合得分,由四个因子加权得到:
- 相关度得分:基于当前上下文信号,判断这个导航项是否契合当下场景。比如深夜时段,"晚安陪伴"入口的相关度天然更高。
- 意图匹配得分:来自AI意图输出的标签,比如情绪低落时,"情绪安抚"相关入口得分上浮。
- 衰减因子:距离上次使用越久,得分越低。这个因子专门解决"用户很久没用某个功能,但导航栏一直占位"的问题。
- 探索因子:给新功能或用户从未体验过的功能加一个较小的固定加成,避免纯推荐老功能导致信息茧房。
得分计算完之后,并不是简单取TopN。导航栏的黄金位置有限,需要综合考虑整体层次:第一个位置给"当前状态下最可能点击"的功能,但后续位置要保证一定稳定性,不能让用户每天打开看到的都是完全不同的导航。
这套打分逻辑我先用一段伪代码跑通验证,确认效果后才转成线上服务:
def score_nav_item(item, ctx): relevance = item.relevance_in(ctx) # 上下文相关度 intent = ctx.intent_match(item.intent_tags) # AI意图匹配 decay = 1.0 / (1 + days_since_last_use(item)) # 衰减 explore = 0.1 if item.is_new else 0 # 探索加成 return 0.4 * relevance + 0.3 * intent + 0.2 * decay + 0.1 * explore这里面权重系数不是拍脑袋定的,是通过一次梯度搜索加上人工review调出来的。先拿历史一个月的数据回放,让系统"重新预测"每个用户当时的点击行为,再跟真实点击做对比,选一组AUC最高的权重组合。这个流程我必须强调一下:动态推荐的权重一定要有离线回放验证,别上来就线上试,不然出问题都找不着北。
2.3 稳定性的关键设计:让动态"可感知但不出格"
这里有一个容易被忽视的工程细节:动态导航真正的难点不在"计算",而在"让人适应变化"。如果导航栏每天变来变去,用户会焦虑,会觉得自己记忆中的产品不存在了。
我们的解法是三个约束:
- 固定位与动态位分离:Tab Bar的前两个位置永远固定(首页、消息),后面的位置才允许动态调整。
- 变化可解释:导航项出现或者移动位置时,旁边打一个"新"或者"热"的小标记,让用户感知到"这是系统推荐给我的,不是坏了"。
- 支持手动固定:长按导航项可以锁定到固定区,用户一旦手动调整,系统在该用户身上的动态优先级就让位给手动设置。
这三个约束在A/B测试里效果非常明显。加了变化标记的那组,动态导航项的点击率比没加标记的高了接近一倍。原因是用户对"系统自作主张"的容忍度很低,但如果你告诉他"这是为你推荐的",他反而会更愿意点。
3. AI落地关键环节:意图理解、记忆系统与人格一致性
3.1 意图理解层:让导航栏听懂用户"此刻想要什么"
凤希的导航栏动态化真正开始变得"聪明",是在意图理解层接入之后。之前只有行为数据和上下文,系统能判断时间、能判断低频使用,但判断不了"用户此刻的情绪状态",而情绪恰恰是AI伴侣产品的核心输入。
意图理解层的设计不是直接调用一个大模型接口就完事了,而是分成了两条路径:规则优先、模型兜底。
规则路径处理那些确定性强的意图。比如用户连续两次提到"睡不着",直接命中"助眠陪伴"意图,不需要等模型输出。规则路径的特点是快、稳定、不消耗太多算力,它承担了大概60%的意图召回。
模型路径处理的是规则覆盖不了的模糊表达。比如用户说"我最近总觉得没什么意思",这个表达没有明确的关键词,但语义上指向"情绪低落",需要模型来兜底。凤希这边用的是微调过的意图分类模型,输出结构化的情绪标签和意图标签,但模型路径的延迟会高一些,所以在导航决策中,模型输出只作为加权信号之一,而不是唯一的判断依据。
这里要给一个非常实在的提醒:实时意图识别千万别做成"等模型结果出来再渲染界面"。线上测试过把意图输出作为渲染前置依赖的方案,结果模型耗时300毫秒,加上网络往返,导航栏整体渲染延迟到了秒级,用户体感很明显。正确的做法是导航栏先按默认结构渲染出来,等意图数据到了再异步刷新动态位,用户几乎无感知。
3.2 记忆系统:短期上下文与长期画像的融合
AI伴侣的落地过程中,记忆系统是绕不开的。这个项目里很能体现记忆价值的场景是"继续上次对话"的导航项推荐。如果用户隔了一周再打开App,导航栏第一个位置如果显示"继续上次的旅行计划",对用户的冲击力是很大的,这种"AI居然还记得"的时刻,就是产品口碑的瞬间来源。
但记忆系统的坑也很多。第一道坎是分短长期:短期记忆指最近几轮对话的上下文,长期记忆指跨会话的用户经历和偏好。两者存储方式完全不一样,短期记忆直接挂在会话状态里,长期记忆要落库并做向量化。
第二道坎是"记忆的优先级"。不可能把用户所有历史记忆都塞进上下文窗口。凤希目前的做法是:对记忆做分档召回,核心事实(用户的名字、家庭情况、职业)永远召入,近期活跃话题按相关性召回,久远且低频的记忆默认不展示,除非用户主动提起。
第三道坎也是最容易忽略的:记忆需要"遗忘"。AI伴侣如果什么都记得,反而会让用户觉得恐怖。我们在数据治理里加了一条规则:超过90天未提及的记忆自动降级为"可遗忘"状态,不再主动参与上下文拼接,除非用户重新提起。这是从隐私感和拟人感两个角度做的权衡。
3.3 人格一致性:伴侣感的底层成本
做AI伴侣的人都会遇到一个问题:大模型的输出风格是漂移的。同一句话,今天回答的语气和上周可能完全不一样。普通问答场景影响不大,但伴侣类产品要建立的是一种持续的情感连接,"人设漂移"会直接摧毁用户的信任感。
凤希在人格一致性上做了一套独立的约束层,在模型输出之前就介入。具体有三件事:
第一件事是人格画像模板。把伴侣的性格特质、说话风格、回避话题、价值偏好沉淀成结构化模板,在每次模型推断时作为系统提示词的一部分固定注入。这块内容不放在微调里,而是放在运行时,方便随时调整而不需要重新训练模型。
第二件事是行为一致性规则。比如这个AI伴侣的人设设定是"温和但不说教",那规则引擎里就禁止模型输出以"你应该"开头的高频说教句式。这类规则不需要覆盖所有情况,只需要拦截最伤害人设的几类输出。
第三件事是一致性抽查。对线上对话做采样评估,每个月出一份人设漂移报告,给每个维度打分。如果某个维度漂移严重,就回去调模板或者补规则。
人格一致性这件事短期内看不是一个"增长功能",数据上很难直接证明它对留存的贡献。但我做了这么久AI产品,可以负责任地说:AI伴侣的长期用户黏性,很大程度来自这种"熟悉感",而不是某个单次对话的质量。
4. 升级后的数据复盘与排查经验
4.1 指标选型:不只盯日活,要看会话深度
升级上线前,我们就把复盘指标定清楚了,不只看日活这个虚荣指标。
- 导航项点击率:关注动态位的点击率是否明显高于改版前。
- 功能发现率:新用户7日内触达核心功能的数量。
- 会话深度:人均单次会话对话轮数,以及从导航栏进入功能后的会话深度。
- 导航项参与率:每个导航项在有曝光的前提下,真正被点击的比例。
指标定完之后还做了一个动作:排除掉不可比数据。比如导航栏改版期间正好赶上节假日推广活动,新用户量暴涨,直接对比整体日活会被推广数据污染。我们的做法是只看自然流量渠道的用户,把推广渠道单独拆出来分析,这样才是版本本身的真实影响。
4.2 真实结果与三个实际上非常关键的教训
先说好的部分。升级后核心功能的7日发现率提升了约37%,动态导航位的点击率比静态版本高了不少,人均会话轮数也有小幅上涨。这些数据在A/B测试里都过了显著性检验。
但更值得说的是教训,我自己踩过的坑比成功数据有价值得多。
第一个教训:导航项并不是越多越好。一开始我们把动态推荐位做了5个候选导航项,结果A/B测试发现,暴露5个入口的那组点击总量反而不如暴露3个的。原因也很好理解:选择过多时用户会陷入决策瘫痪。后来把动态位限制为最多展示3项,效果明显回升。这个"3项法则"后来成了我们的产品规范。
第二个教训:过度动态化会让老用户的路径感碎裂。内测阶段有一版把所有Tab位置都允许动态调整,结果老用户反馈最集中的一句话是"我感觉这不是我下载的那个App了"。即使点击数据在涨,用户体验和信任是在跌的。后来紧急加了固定位保护和"变化标记"机制,才把这个负面反馈压下去。
第三个教训:不要把动态推荐做成"只看当下"。有一段时间排序权重过度偏向实时意图信号,结果用户的导航栏频繁跳动,上一秒还在推荐的入口下一秒就被顶掉了。用户点都来不及点。后来给信号加了一个平滑窗口,意图标签生效后至少保持15分钟,不允许在窗口内频繁切换。
4.3 排查实录:三个上线后被反复问到的数据问题
这里记录三个上线后被反复问到的问题,希望能帮有类似场景的开发者省掉排查时间。
问题一:动态导航点击率一段时间内突然下跌。排查后发现了数据采集层的时钟问题。有部分安卓低端机的系统时钟不准,导致埋点上报的event_time比服务器时间晚了几十分钟,这些脏数据进入了实时特征计算,把导航排序搞乱了。解决方式是在数据接入层加了一层时间戳校准,服务端统一以接收时间为准,不再信任客户端时间。
问题二:新用户冷启动阶段动态导航效果不稳定。原因是画像数据要T+1回刷,新用户在前24小时里几乎没有画像信号,所有排序都靠行为上下文硬撑。解决方式是在画像服务里加了一个"新用户探测"逻辑:没有画像数据的新用户默认启用一套高频功能推荐模板,等24小时后再切回个性化排序。
问题三:AI情绪标签的误判影响了导航推荐。有一段时间"情绪低落"标签被触发的频率异常高,把情绪安抚类入口的优先级整体抬高,但点击率反而没跟上。查了半天发现是模型训练数据里"低落的表达"覆盖了太多日常吐槽类文本,把随口吐槽当成了真正的情绪低落。解决方式是给意图模型加了一个严重程度分级:只有情绪分达到一定阈值的输入才触发高优先级推荐,模糊情况一律降级。
5. 深度思考:AI落地的边界与产品未来
5.1 导航栏与AI的关系:先做"导航",再做"伴侣"
这次升级让我一个很深的体会是:AI落地不一定非得是一个"看起来很有AI感"的功能。导航栏不是一个典型的AI场景,但通过它,我们把意图识别、记忆召回、动态决策这些AI底层能力真正跑到了线上,并且被用户真实使用。
很多团队做AI产品容易陷入一个误区:一上来就要做一个颠覆性的AI功能,结果因为场景太新、交互太重,用户根本不买单。凤希这版给了一个相反的样本:在一个用户每天都会用的高频组件里,把AI的实时判断能力加进去,让AI在后台工作,用户在界面层几乎感知不到"AI的存在",但能明显感到"这个App更懂我了"。
这种"隐形AI"的落地方式,从产品风险和数据验证效率上,都远优于硬造一个AI功能。
5.2 AI伴侣的边界感:信任比迎合更重要
AI伴侣产品做到一定阶段,一定会遇到边界感的问题。很多团队为了提高留存,倾向于把AI塑造成一个"永远顺着用户"的角色:你说什么都对,你难过就哄你,你生气就道歉。短期看数据会很好,但长期看,这种无原则的迎合会让用户觉得虚伪。
凤希在导航升级中并没有直接涉及对话内容,但相关讨论绕不开一个原则:AI伴侣应该有勇气表达"我不知道"和"我不确定"。导航栏的推荐也是如此,如果系统对用户的意图判断不够自信,就老老实实展示默认导航,而不是强行推荐一个可能错得离谱的内容。
信任感不是靠一次次高分的回复积累的,恰恰是靠"系统承认自己不确定"的坦诚时刻建立的。这个判断在凤希的对话数据和用户访谈里反复被验证。
5.3 下一阶段的扩展路径:从导航栏到全场景上下文感知
这次导航栏升级的架构,其实是做成了一个可复用的"上下文感知决策层"。下一阶段凤希的规划是把同一套能力扩展到更多场景:首页信息流的排序、推送消息的时机选择、聊天开场白的话题推荐、甚至付费功能的个性化推荐。
技术上要做的事情也很清晰:把意图输出做成一个独立的AI服务,不只服务导航栏,而是对外暴露接口供所有场景消费;把记忆系统从"对话会话级"升级到"用户全生命周期级";把动态决策层的规则引擎沉淀成配置化平台,让运营同学也可以在里面调整因子权重,而不是每次都找开发改代码。
数据飞轮的方向也值得想清楚:用户点击导航项的行为,又会回流到行为埋点,成为后续意图模型训练和推荐权重优化的数据。这个闭环跑起来之后,产品的每个改版就不再是"凭感觉拍脑袋",而是有数据回路支撑的持续迭代。
收尾:一次升级做完后,最大感触还是那三句话
这次导航栏数据升级做完,我个人沉淀下来的体会其实特别朴素。第一句话:动态数据再聪明,也要给用户留一个"固定下来"的选择,产品永远不能剥夺用户的掌控感。第二句话:AI落地最大的成本不在模型训练,而在和产品结构的融合——你需要花大量的精力去设计"模型输出如何被界面稳定消化"。第三句话:做AI伴侣,很多东西没法用短期指标验证,但你得为长期信任去做正确的事,比如坦诚、边界感、以及对用户数据的克制。
最后分享一个实用的小技巧:动态推荐类功能上线前,记得留一个手动override的后台开关。数据出问题时,运营可以一键把所有用户的导航栏切回默认静态版。这个开关在凤希上线后的第一周就救过一次场——有一次意图模型灰度出了问题,情绪标签大面积异常,就是靠这个开关在10分钟内切了回去,避免了用户体验事故。动态功能一定要有熔断机制,这个不能省。