第2章 Reach(触达)概念解读
2.1 触达用户数定义
Reach(触达)用于衡量一次交互行为实际覆盖了多少独立用户。在Agent场景中,触达用户数是指在一个统计周期内,通过所有Agent输出渠道(如主动推送、被动回复、通知栏消息等)至少收到一次来自Agent有效信息输出的唯一用户总数。
| 术语 | 定义 | 与触达的关系 |
|---|---|---|
| 触达用户数 | 去重后至少接收1次Agent输出的独立用户 | 核心指标 |
| 触达次数 | 所有输出事件的总发生次数(含重复用户) | 辅助计算频次 |
| 曝光用户数 | Agent输出被前端渲染/展示的用户数(可能未实际送达) | 通常 > 触达用户数 |
| 有效触达 | 用户主动确认收到的Agent输出(如点击、回复) | 触达子集 |
⚠️ 关键区分:曝光 ≠ 触达。曝光仅表示信息到达用户设备,触达还需要用户设备/应用有接收能力(如网络正常、通知权限开启、应用存活等)。
2.2 量化方法
触达用户数的准确量化依赖清晰的打点和日志归因。推荐在Agent输出端添加统一的事件ID,通过后端日志去重统计。
- 事件定义:定义“Agent有效输出”事件(
agent_output_sent),包含字段:用户ID、输出渠道(push/in_app/notification)、输出时间、消息ID。 - 用户识别:以用户登录态ID(user_id)或设备ID(device_id)为独立标识。
- 去重统计:在SQL中使用
COUNT(DISTINCT user_id)按日/周/月聚合。 - 排除无效:剔除因接口超时、权限拒绝、设备离线导致实际未送达的记录。
-- 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边界
2.4 类比说明
广播覆盖 vs 电话接通:
- 广播覆盖(曝光):所有能收到电台信号的收音机,但用户可能没开机、没调到该频率、或正在播广告时没听。相当于Agent输出被服务端发送,但用户终端未渲染或不具备接收条件。
- 电话接通(触达):用户主动拿起手机,听到了对方的声音,并且能互相交流。相当于Agent输出消息已安全到达用户界面并显示给用户。
Agent场景中,触达不应只算“电话拨出”,而应算“电话接通且有人接听”。
2.5 常见误区
| 误区 | 错误做法 | 正确理解 |
|---|---|---|
| 混淆曝光与触达 | 使用推送发送日志中“发送成功”计数代替触达 | 发送成功仅表示服务端发出,需结合客户端回执确认显示 |
| 忽略去重 | 将触达次数直接当作触达用户数 | 同一用户多次触达只计1次,去重是Reach计算的灵魂 |
| 时间周期不一致 | 日触达与周触达用户数使用相同口径 | 长周期触达需考虑新用户加入/用户流失,需注明周期 |
| 渠道割裂统计 | 不同输出渠道独立计算触达,未做用户级归并 | 同一用户通过push和in_app都触达,去重后只算1次 |
🔍 深度警惕:部分Agent设计会在用户离线时缓存消息,恢复连接后批量发送。此场景下触达事件可能被重复记录在缓存时间点和发送时间点,需设计“最终投递成功”事件作为触达依据。
2.6 在Agent场景中的触达边界
Agent的触达边界取决于输出触发模式和用户接收意愿。以下是四种典型边界类型及适用场景:
- 主动推送边界:Agent在无用户输入时主动向用户发送通知(如定时天气提醒、订阅事件播报)。触达统计需排除用户已关闭通知权限的设备。
- 被动回复边界:用户主动向Agent提问后,Agent的回答消息。此时触达几乎等于显示(因为用户正在对话界面),但仍需考虑网络延迟导致的显示失败。
- 环境触发边界:Agent检测到特定环境事件(如用户进入地理围栏)自动输出消息。触达边界与推送类似,但可能受应用前后台状态影响。
- 多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。同时记录输出类型,以便拆分分析主动/被动触达占比。