实验监控与报告生成器
扫描活跃和近期完成的实验,展示需要关注的内容,并报告重要的实验。
这是一个监控技能——保持输出对非专家可访问。避免使用统计术语(无 p 值、无功效分析)。如需对特定实验进行深入分析,请使用 analyze-experiments 技能。
关键:管理响应大小
get_experiments:每次最多 3-5 个 ID。 在获取之前,先使用search结果进行过滤。query_experiment响应较大。 仅提取summary对象和有效性标志。忽略timeseries、xValues、批量数组。- 指标名称解析:
search不会匹配queries中的指标 ID。使用entityTypes: ["METRIC"]、空queries、limitPerQuery: 50进行搜索,范围为项目。从结果中匹配 ID。
报告结构
报告分为两部分:
- 摘要与行动(顶部)—— 一个表格 + 行动项。仅阅读此部分即可了解全貌。
- 详细信息(底部)—— 对需要注意的实验进行深入分析、近期决策的简要说明、需监控实验的一行摘要以及需要设置的任务列表。
不要在摘要表和详细信息之间重复信息。摘要表是整个实验组合状态的唯一真实来源。详细信息对特定实验进行补充说明。
操作说明
步骤 1:上下文与发现
- 调用
Amplitude:get_context。如果存在多个项目,询问要监控哪个。 - 搜索实验:
Amplitude:search({
entityTypes: ["EXPERIMENT"],
appIds: [projectId],
queries: [],
sortOrder: "lastModified",
sortDirection: "DESC",
limitPerQuery: 50
})
- 过滤规则 —— 包含以下实验:
- 正在运行且非陈旧: 任何处于运行状态且未被标记为陈旧的实验。陈旧实验已闲置,应排除。
- 近期决策: 已完成且记录了决策并且在过去 14 天内修改过的实验。这些实验值得审查以确认决策或分享经验。
- 排除: 草稿、已禁用和过期实验。
步骤 2:获取元数据、指标名称和主要结果
- 以 3-5 个 ID 为一组调用
Amplitude:get_experiments(仅限步骤 1 中过滤后的集合)。 - 提取:状态、日期/持续时间、变体、指标 ID(recommendation=true 的主要指标)、决策、负责人。
- 使用详细元数据再次应用步骤 1 的过滤规则(某些字段如陈旧状态或决策可能仅在此处可用)。
- 通过
Amplitude:search({ entityTypes: ["METRIC"], appIds: [projectId], queries: [], limitPerQuery: 50 })解析指标名称。构建{ id: name }映射。 - 对于已配置指标的实验,调用
Amplitude:query_experiment({ id: "<id>" })(无需 metricIds)以获取主要指标结果和数据质量标志。此数据将同时用于摘要表和深入分析。
关键:永远不要向用户显示原始指标 ID。 如果无法解析指标名称,请按其角色描述(例如,“主要指标”、“护栏指标”)—— 不要显示诸如“rrgtky08”或“Metric gvgb5efj”之类的字符串。指标 ID 是内部标识符,对人类读者毫无意义。
步骤 3:摘要与行动
这是报告的顶部部分。它应是独立的 —— 仅阅读此部分的人应能了解全貌。
摘要表
## 实验监控:[项目名称]
日期:[今天] | 项目:[名称] ([ID])
| 实验名称 | 状态 | 持续时间 | 提升率 | 裁决 |
|------------|-------|----------|------|---------|
列定义:
- 实验名称 — 人类可读的名称(不是 URL,不是 ID)
- 状态 — 运行中 或 已完成
- 持续时间 — 实验开始以来的天数
- 提升率 — 主要指标的相对提升率(如可用),否则为“—”。对于多变量实验,显示范围(例如,“-17% 至 -20%”)
- 裁决 — 需要采取的操作(参见下方词汇表)
裁决词汇表:
| 裁决 | 使用时机 |
|---|---|
| 发布 | 主要指标显著正向提升,护栏指标正常,数据质量良好 |
| 迭代 | 正向信号但护栏指标异常或质量存疑 |
| 监控 | 正在运行,尚未显著,无需操作 |
| 放弃 | 主要指标显著负向提升,或存在关键数据质量问题 |
| 已决策:发布 | 近期完成,团队决定发布 |
| 已决策:不发布 | 近期完成,团队决定不发布 |
| 修复配置 | 查询错误,曝光事件异常或流量严重不均衡 |
| 需要指标 | 在无指标的情况下运行 —— 无法评估 |
| 不可用 | 调查/引导部署,非功能实验 |
行动项(表格之后立即显示)
**立即行动:**
- [实验名称] — [具体操作及负责人姓名]
**持续关注:**
- [实验名称] — [简要状态 + 何时复查]
**需要设置:**
- [实验名称] — [缺少的内容 + 负责人姓名]
表中的每个实验应恰好出现在一个行动类别中。如果某个类别中没有实验,则省略该类别。
步骤 4:详细信息
在摘要下方,提供按部分组织的额外细节。每个实验恰好出现在一个部分中 —— 无重复。
4a:深入分析(需要注意的实验)
对裁决为发布、迭代或放弃的实验进行深入分析(最多 3 个)。这些实验具有值得检查的重要结果。
对于每个实验,一次性输出完整报告:
---
## [实验名称]
[状态] | [持续时间]天 | 对照组:[N] / 实验组:[N] | [实验链接]
数据质量(首先 —— 在结果之前):
在报告指标结果之前检查数据质量。如果存在关键问题,读者需要在解读任何数据之前了解该上下文。
如果全部通过,一行:“数据质量检查全部通过。” 然后继续进行主要指标。
如果发现问题,在主要指标之前报告:
### 数据质量:发现 [N] 个问题
SRM(样本比率不匹配):
- 使用 API 响应中的
srmDetected字段 - 如果
srmDetected: true:始终首先报告并突出显示 - 报告:实际拆分与预期拆分的对比,并给出具体百分比
流量分配变更:
- 将当前变体权重与累计曝光分布进行比较
- 如果不匹配(例如,当前权重是 100/0/0,但累计是 15/70/15),则说明实验期间的流量分配已更改
- 突出显示这一点 —— 这意味着某些变体可能不再接收新流量
样本量:
- <100 每变体:标记为不足 —— 过早,无法得出任何结论
- 100–1,000 每变体:仅提供方向性信号,不足以做出自信的决策
- 1,000+:足够用于分析
有效性标志 —— 仅报告失败:
| 标志 | 失败时的含义 | 严重性 |
|---|---|---|
isVariancePositive = false | 指标数据无效 —— 统计检验无法运行 | 关键 |
isConfidenceIntervalNotFlipped = false | 结果计算错误 —— 不要相信这些数字 | 关键 |
isMeanValid = false | 指标值异常(NaN/无限)—— 无法分析 | 关键 |
statsAssumptionsMetForWholeExperiment = false | 统计假设未满足 —— 结果可能不可靠 | 高 |
hasSuspiciousUplift = true | 异常大的效应 —— 可能是测量误差,而非真实变化 | 高 |
isPointEstimateInsideConfidenceInterval = false | 内部数学不一致 —— 结果可能错误 | 高 |
isStandardErrorLargeEnough = false | 噪声太大,无法获得可靠估计 | 中等 |
如果检测到 SRM 或关键标志失败:
⚠️ 由于 [问题],以下结果应谨慎解读。
主要指标:
### [指标名称]:[通俗易懂的裁决]
| 变体 | 值 | 提升率 | 95% 置信区间 |
|---------|-------|------|--------|
| 对照组 | [X] | — | — |
| 实验组 | [Y] | [+Z%] | [A% 至 B%] |
[一句通俗易懂的解释。]
表述规则:
- 不要包含 p 值。 非专家不知道它们意味着什么。
- 使用“不显著”而不是“无效果”。可能存在效果 —— 只是实验在当前样本量下无法检测到。
- 用通俗易懂的语言首先说明发生了什么。
裁决措辞:
- 显著正向 — 置信区间完全高于零,正向提升
- 显著负向 — 置信区间完全低于零,负向提升
- 不显著 — 置信区间包含零;我们还不能自信地说存在真实差异
- 趋势正向/负向 — 方向性信号但置信区间包含零;值得关注
仅当提升率非常小(<2%)或非常大(>20%)时,添加一句关于实际重要性的说明。
护栏指标与次要指标:
调用 Amplitude:query_experiment({ id: "<id>", metricIds: [...] })。
专注于发现异常,而不是叙述每个指标。
如果未发现显著异常:“所有护栏指标和次要指标均正常 —— 未检测到显著异常。”
如果发现显著异常:
- **[指标名称]:** 显著异常([−X%],置信区间:[A% 至 B%])—— [一句关于影响的说明]
如果存在尚未显著但数值较大的方向性异常(>20% 相对提升率):
- **[指标名称]:** 不显著,但方向为负([−X%])—— 值得关注
不显著的小方向性变化应省略。如果指标超过 5 个,请注意多重比较会增加假阳性概率。
反馈(仅当主要指标显著时):
调用 Amplitude:get_feedback_insights 并使用与实验相关的关键词。用一行报告 2-3 个主题。如果没有相关反馈,则跳过此部分。
裁决:
### 裁决:[发布 / 迭代 / 监控 / 放弃]
1. [主要指标发现 —— 一句话]
2. [质量 / 护栏指标状态 —— 一句话]
3. [下一步操作 —— 一句话]
决策矩阵(内部参考,不要输出):
| 信号 | 发布 | 迭代 | 监控 | 放弃 |
|---|---|---|---|---|
| 主要指标 | 显著正向 + 实际重要 | 显著正向但有护栏指标异常 | 尚未显著,仍在运行 | 显著负向 |
| 质量 | 全部通过 | 轻微标志 | 全部通过或数据不足 | SRM 或关键标志 |
| 护栏指标 | 正常 | 需修复 1 个异常 | 正常或数据不足 | 关键指标显著异常 |
| 实验状态 | 已完成 | 已完成 | 运行中 | 已完成或运行中 |
4b:运行中的实验(监控,无需操作)
对于裁决为监控的实验,提供一行状态:
---
### 运行中的实验
**[名称]** — 运行 [X] 天,对照组:[N] / 实验组:[N]。 [主要指标状态 — 例如,“趋势正向(+3.3%)但尚未显著”]。数据质量正常。 [链接]
**[名称]** — 运行 [X] 天,对照组:[N] / 实验组:[N]。 过早得出任何结论 — [原因,例如,“样本量在 100-1,000 范围内”]。 [链接]
保持紧凑 —— 每个实验一行。在末尾包含链接,以便想要在 Amplitude 中检查的人使用。
4c:近期决策(简短摘要)
对于裁决为已决策:发布或已决策:不发布的实验:
---
### 近期决策
- **[名称]** — [已发布/已回滚] 于 [日期],历时 [X] 天。 [一句话说明结果或理由]。 [链接]
如果实验是在没有指标或没有统计显著性的情况下发布的,请简要说明。
4d:需要设置
对于裁决为修复配置、需要指标或不可用的实验:
---
### 需要设置
- **[名称]** — [问题描述]。负责人:[负责人]。
- **[名称]** — 调查/引导部署,非功能实验。无需分析。
每个实验恰好出现在一个详细信息部分。不要在摘要表操作项和详细信息部分中重复列出同一个实验 —— 详细信息部分是对操作项的补充说明,而不是重复。
边界情况
- 无实验: 清晰报告,建议检查其他项目
- 无数据(<24 小时): 注意实验刚刚开始,7 天后再检查
- 检测到 SRM: 在数据质量中首先说明 —— 它可能使其他所有结果无效
- 10+ 个实验: 为所有实验生成摘要表,深入分析前 3 个,并提供分析更多实验的选项
- 响应过大 / 已保存到磁盘: 仅提取
summary+ 有效性标志 - 未配置指标: 在“需要设置”部分列出,不进行深入分析
- 所有实验均为陈旧状态: 报告没有活跃实验需要监控
query_experiment返回查询错误: 清晰报告错误,并包含实验负责人的姓名。在摘要中标记为“修复配置”。常见原因:曝光事件属性损坏,实验密钥配置错误。- 实验期间流量分配更改: 在数据质量中标记。将当前权重与累计曝光分布进行比较。注明哪些变体不再接收流量。
- 调查/引导实验(NPS 等): 在摘要中标记为不可用。无需分析 —— 跳过深入分析。
- 流量严重不均衡(例如,5%/95% 或 0%/100%): 标记为“修复配置” —— 没有有意义的对照组就无法运行有效实验。在需要设置中注明负责人。