跳到主要内容

真正衡量AI产品用户满意度的行为信号

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数AI产品团队上线一个点赞/点踩组件,就称之为满意度度量系统。他们确实在度量某些东西——只是那不是满意度。

一个因为函数签名错误而对Copilot建议点踩的开发者,和一个因为建议虽然优秀但当前不适用而点踩的开发者,产生的是完全相同的信号。与此同时,那个悄悄重新生成了四次最终放弃的开发者,根本没有产生任何显式信号。而那个缺失的信号,比评分组件捕获的任何东西都更能预测用户流失。

用户在使用AI产品时留下的隐式行为记录,比他们自愿输入或点击的任何内容都更丰富、更真实、更可操作。本文介绍该收集哪些信号、为何这些信号优于显式反馈,以及防止AI专项遥测污染通用产品分析的埋点方案。

为何显式反馈在AI场景中失效

显式反馈的核心问题不在于用户撒谎——而在于UI机制、新鲜感和上下文在数据入库之前就系统性地破坏了信号。

UI位置对评分率的影响大于产品质量。 直接放在AI回复下方的反馈组件,在用户还在评估时就触手可及。将其改为悬停状态,点击率会大幅下降,而产品质量并没有变化。当A/B测试改变了按钮位置,你同时也改变了满意度指标。

新鲜感偏差会拉高早期评分。 刚发现某功能的用户——尤其是生成式AI这种全新形态——会提供更多反馈,且这些反馈偏向正面。在第一个月采用AI功能、第三个月流失的那批用户,在显式反馈记录中往往表现优异。

二元评分将本质不同的失败模式混为一谈。 点踩可能意味着:信息错误、信息正确但表达混乱、正确但已过时、正确但与用户实际需求无关,或准确但风格不讨喜。这些失败有不同的解决路径。将它们聚合成一个整数,掩盖了分布差异。

基于显式反馈训练的模型会形成优化评分的姿态。 在RLHF流水线中,语言模型学会产出看起来正确的内容,而非对终端用户最有用的内容。结果是自信、格式良好、听起来像正确答案的文字——而这恰恰是用户难以评判的失败模式,因为识别它需要领域专业知识。

Netflix的现象很好地说明了这一点:用户给纪录片打五星,却看喜剧。显示偏好与陈述偏好相悖。在AI产品中,"我评了个好"与"这真的帮了我"之间的差距,正是你的指标需要弥合的地方。

隐式信号栈

值得埋点的行为信号,按信号置信度和采集复杂度分为三个层级。

第一层:高置信度的接受信号

无编辑复制率是大多数AI写作和代码工具中最清晰的信号。当用户直接将输出复制到剪贴板或未经修改就接受建议时,他们用工作流投票了。GitHub Copilot的字符保留率——追踪被接受的建议中有多少字符最终保留在提交中——是这一信号的精进版本。一个被接受后立即删除的建议,和一个被接受后完整保留的建议,说明了截然不同的问题。

这一信号需要将剪贴板事件(在可访问的情况下)或建议接受事件与后续编辑事件配对。关键指标是零编辑距离复制与总复制的比率。在大多数部署中,这一比率在有用的AI功能中徘徊于25-40%,当模型持续为任务生成形状错误的输出时会跌破15%。

下游操作完成率追问用户是否完成了他们来这里要做的事。对于代码生成工具,那就是提交变更;对于客服AI,那就是无需升级地解决案例;对于写作助手,那就是文档被发布。这一信号通常被称为目标完成率(GCR)或意图解决率(IRR),IRR超过70%的产品相比低于55%的产品,30天留存率显著更高——即使活跃用户数看起来相似。

第二层:诊断信号

分段的重新生成率是诊断信号,而非接受信号。高重新生成率说明模型在某类请求上持续失败。使它成为诊断信号而非虚荣指标的关键,在于分段:技术查询的重新生成率可能达到50-60%,而一般查询仅为10-15%。如果你计算的是未分段的重新生成率,你在对两个意义迥异的分布求平均。

有意义的分解维度包括:查询类型或意图簇、输入长度区间、用户使用时长。新用户频繁重新生成是一个问题,而老用户触碰上限是另一个问题,需要不同的干预措施。

编辑距离分布——追踪用户对AI输出所做编辑的量级和方向——能告诉你模型是大致正确还是根本错误。改了几个词的用户在说语气或精确度需要调整;删掉全部输出从头写的用户在发出任务分布不匹配的信号。将其聚合为单一的"平均编辑距离",丢失了揭示哪种失败模式主导的双峰分布。

延迟放弃是由响应时间触发的会话放弃。当用户发起查询后在响应到达前离开,或到达响应后立即关闭会话不作任何交互时,是两个不同的问题:一个是基础设施问题,另一个是响应质量问题。区分它们需要对查询提交和用户首次与响应交互分别打上时间戳。

第三层:前置留存信号

7天内功能回访率是最清晰的长期满意度信号。遇到AI功能后一周内回来的用户已经找到了足够的价值来养成习惯;试用一次后不再回来的用户则没有。在生产力软件各品类中,7天激活率始终是3个月留存率的最强预测指标。

会话深度衡量用户在收到AI回复后是否深入工作流,还是直接退出。对于对话产品,这是首次交流后的轮次数;对于工具辅助产品,这是随后采取的操作数。深度与感知价值相关;未能达到用户实际目标的浅层会话是早期预警信号。

埋点方案

挑战在于采集这些信号,同时不创建与现有产品分析并行运行的独立指标系统,进而带来对账困难和仪表板割裂的问题。

有效的方案是事件级AI归因,而非独立的AI分析流水线。每个涉及AI组件的用户交互事件,都应在其属性中携带一个结构化的AI上下文块,并使用定义好的schema。这意味着AI信号通过与产品事件相同的摄入流水线传输,但因为AI上下文块结构一致,它们是可过滤和可分段的。

最小化schema如下:

ai_context: {
feature_id: string, // 如 "inline_completion", "chat_assist"
request_id: string, // 追溯到具体的LLM调用
model_version: string,
input_token_count: int,
output_token_count: int,
latency_ms: int,
regen_attempt_number: int, // 0 = 首次尝试
user_action: enum {
accepted_no_edit,
accepted_with_edit,
rejected,
abandoned,
regenerated
},
edit_distance: int | null, // 无编辑时为null
downstream_action_taken: bool | null // 无法追踪时为null
}

这个块附加到捕获用户对AI输出响应的事件上——而非AI调用本身。AI调用生成独立的服务端追踪。通过request_id关联两者,可以在不重复遥测的情况下,将行为结果数据与模型侧性能数据进行关联。

关键原则是:永远不要将AI指标汇总到产品漏斗指标中。 并行追踪,使用显式关联。一个任务完成率高的AI产品,可能是因为用户学会了绕过它的弱点——他们的完成率反映的是变通方法,而非AI的价值。如果你将AI归因的完成率混入了总体完成率指标,就无法区分这两种情况。

应停止作为主要指标的信号

点赞/点踩数量: 保留它作为数据点,但不要让它驱动决策。它的主要价值是作为定性触发器——如果有人克服了摩擦进行了负面评价,说明某件事严重出了问题。评分率本身不是满意度衡量标准。

页面停留时间/会话时长: 时间长可能意味着用户在认真阅读并发现内容有价值,也可能意味着AI输出令人困惑,用户花了三分钟试图理解本该一目了然的东西。没有行为上下文,时长在方向上毫无意义。

无留存上下文的建议接受率: 来自第二个月流失用户的高接受率不是成功信号。任何基于接受率的指标,都需要按用户队列追踪,以留存为下游变量,而非聚合统计。

针对AI功能的反馈调查CSAT: 通用产品NPS和CSAT调查无法隔离AI功能的贡献。喜欢整体产品但觉得AI功能令人沮丧的用户,不会在1-5评分中区分这两种信号。功能级满意度需要行为代理指标,而非调查分数。

将信号转化为行动

这个信号栈的意义不在于构建仪表板,而在于创建决策触发器。每个信号层级都应映射到具体的干预措施:

当某功能的无编辑复制率下降至阈值以下时,模型正在偏离用户期望的输出格式或质量。这是提示词调优或微调的触发器,而非UI改动的触发器。

当特定意图簇的分段重新生成率飙升时,该簇是模型能力缺口。应对措施是针对该类问题进行提示词工程,或将其路由到不同模型或人工升级路径。

下游操作完成率下降而浅层参与指标维持稳定时,用户在与AI输出互动,但没有据此行动。这通常表明存在信任缺口——输出读起来合理,但用户没有足够的信心去行动。校准和引用数据比尝试优化输出风格更有效地解决这个问题。

当新用户确实与AI功能互动后,7天回访率下降时,AI功能的第一印象失败了。这是用定性跟进进行深入埋点的关键时刻——第一次会话是什么样的?用户试图做什么?

行为信号栈能告诉你某件事出了问题。将其与会话回放、定性采样和现有可观测性基础设施结合,才能告诉你为什么。这一切都不需要一个点赞组件。

References:Let's stay in touch and Follow me for more thoughts and updates