第2章 Reach(触达)概念解读

2.1 触达用户数定义

Reach(触达)用于衡量一次交互行为实际覆盖了多少独立用户。在Agent场景中,触达用户数是指在一个统计周期内,通过所有Agent输出渠道(如主动推送、被动回复、通知栏消息等)至少收到一次来自Agent有效信息输出的唯一用户总数。

术语 定义 与触达的关系
触达用户数 去重后至少接收1次Agent输出的独立用户 核心指标
触达次数 所有输出事件的总发生次数(含重复用户) 辅助计算频次
曝光用户数 Agent输出被前端渲染/展示的用户数(可能未实际送达) 通常 > 触达用户数
有效触达 用户主动确认收到的Agent输出(如点击、回复) 触达子集
⚠️ 关键区分:曝光 ≠ 触达。曝光仅表示信息到达用户设备,触达还需要用户设备/应用有接收能力(如网络正常、通知权限开启、应用存活等)。

2.2 量化方法

触达用户数的准确量化依赖清晰的打点和日志归因。推荐在Agent输出端添加统一的事件ID,通过后端日志去重统计。

  1. 事件定义:定义“Agent有效输出”事件(agent_output_sent),包含字段:用户ID、输出渠道(push/in_app/notification)、输出时间、消息ID。
  2. 用户识别:以用户登录态ID(user_id)或设备ID(device_id)为独立标识。
  3. 去重统计:在SQL中使用 COUNT(DISTINCT user_id) 按日/周/月聚合。
  4. 排除无效:剔除因接口超时、权限拒绝、设备离线导致实际未送达的记录。
-- SQL 示例:计算每日触达用户数
SELECT 
  DATE(event_at) AS day,
  COUNT(DISTINCT user_id) AS reach_users
FROM agent_output_log
WHERE event_name = 'agent_output_sent'
  AND delivery_status = 'success'
GROUP BY DATE(event_at)
ORDER BY day;
💡 提示:对于多端Agent(Web + 移动端),需先做用户ID统一映射(OneID),避免同一用户在不同渠道被重复计算。

2.3 原理图解:触达漏斗与Agent边界

Reach 概念结构图:触达漏斗与Agent边界 Reach(触达)—— 概念映射与Agent边界 潜在用户池 Agent 输出事件(推送 / 回复 / 通知) 渠道1: direct_push 渠道2: in_app_message 渠道3: notification 去重统计(DISTINCT user_id) 触达用户数(Reach Users) Agent 触达边界 主动边界(Agent发起) • 定时推送 • 事件触发通知 被动边界(用户发起) • 用户输入后回复 • 用户点击唤醒 边界判断

2.4 类比说明

广播覆盖 vs 电话接通:

  • 广播覆盖(曝光):所有能收到电台信号的收音机,但用户可能没开机、没调到该频率、或正在播广告时没听。相当于Agent输出被服务端发送,但用户终端未渲染或不具备接收条件。
  • 电话接通(触达):用户主动拿起手机,听到了对方的声音,并且能互相交流。相当于Agent输出消息已安全到达用户界面并显示给用户。

Agent场景中,触达不应只算“电话拨出”,而应算“电话接通且有人接听”。

2.5 常见误区

误区 错误做法 正确理解
混淆曝光与触达 使用推送发送日志中“发送成功”计数代替触达 发送成功仅表示服务端发出,需结合客户端回执确认显示
忽略去重 将触达次数直接当作触达用户数 同一用户多次触达只计1次,去重是Reach计算的灵魂
时间周期不一致 日触达与周触达用户数使用相同口径 长周期触达需考虑新用户加入/用户流失,需注明周期
渠道割裂统计 不同输出渠道独立计算触达,未做用户级归并 同一用户通过push和in_app都触达,去重后只算1次
🔍 深度警惕:部分Agent设计会在用户离线时缓存消息,恢复连接后批量发送。此场景下触达事件可能被重复记录在缓存时间点和发送时间点,需设计“最终投递成功”事件作为触达依据。

2.6 在Agent场景中的触达边界

Agent的触达边界取决于输出触发模式和用户接收意愿。以下是四种典型边界类型及适用场景:

  1. 主动推送边界:Agent在无用户输入时主动向用户发送通知(如定时天气提醒、订阅事件播报)。触达统计需排除用户已关闭通知权限的设备。
  2. 被动回复边界:用户主动向Agent提问后,Agent的回答消息。此时触达几乎等于显示(因为用户正在对话界面),但仍需考虑网络延迟导致的显示失败。
  3. 环境触发边界:Agent检测到特定环境事件(如用户进入地理围栏)自动输出消息。触达边界与推送类似,但可能受应用前后台状态影响。
  4. 多Agent协同边界:一个复杂任务由多个Agent子模块分别输出,用户可能从不同入口接收碎片信息。需要按“用户是否感知到完整输出结果”定义触达。

2.7 练习题:设计一个Agent触达统计方案

场景:你正在设计一个智能助手Agent,它可以:① 每天定时推送“今日推荐”;② 在用户对话中被动回复问题;③ 当用户设置闹钟时推送“闹钟提醒”。请设计一个统计“日触达用户数”的方案,包括事件定义、去重逻辑、排除规则。

参考思路提示:

  • 每种输出类型定义不同的事件名,但统一归并到 agent_output_sent。
  • 在客户端添加display_ack(显示确认)回执,只有收到回执才计入触达。
  • 排除用户主动关闭通知权限的设备、排除应用处于kill状态下仍被唤醒推送的场景(需系统级确认)。
✅ 参考答案(核心逻辑): 使用事件 agent_output_displayed(客户端确认显示)+ COUNT(DISTINCT user_id) + 过滤条件 display_time >= 当前日期的00:00 AND < 次日00:00。同时记录输出类型,以便拆分分析主动/被动触达占比。