实验
带指标、截止时间和可选停止规则的、有名字的渠道尝试。到期与决定是怎么运作的。
实验是你向某个渠道提的一个问题:“有帮助的 Reddit 回复,能不能在两周内带来对话?”OpenNomos 负责记住截止时间、统计指标。结果意味着什么,由你来判断。
创建
通过 track 传一个 experiment 条目:
{
"type": "experiment",
"experiment": {
"name": "Reddit helpful replies",
"hypothesis": "People asking for alternatives will talk if we help first",
"channel": "reddit",
"metric": "willing_to_talk",
"target": 3,
"days": 14,
"stop_rule": { "metric": "willing_to_talk", "op": "<", "value": 2 },
"stop_rule_text": "If fewer than 2 people agree to talk after 14 days, change channel"
}
}days(1–365)和 deadline(未来的 ISO 时间、{"in_days": n} 或 {"at": "…"})必须且只能给一个。target、hypothesis、stop_rule 和 stop_rule_text 是可选的。
指标
metric | 在实验窗口内统计 |
|---|---|
tracked | 在这个实验里创建的机会 |
contacted、replied、willing_to_talk、converted | 挂在该实验下、进入该阶段的不同机会 |
actions | 记在该实验下的行动 |
clicks | 该实验短链接上的真人(非机器人)点击 |
outcome:<type> | 该类型中不是 unknown 的结果 |
用 track(机会)和 log_action 上的 experiment_id 把机会和行动挂到实验上。
停止规则
stop_rule 是机械式的:{ metric, op, value },op 取 <、<=、>、>=、== 之一,metric 必须与实验的指标相同。stop_rule_text 是自由文本,OpenNomos 只会原样展示给你,绝不会据此结束实验。
到期与决定
截止时间一过,实验就变为 due。每次读取时都会计算,并在下一次简报时落库,指标冻结在截止时刻。到期的实验会出现在简报里,带 decision_needed: true、overdue_days,以及根据证据生成的 question,例如:
Stop rule not met (1, rule < 2). Keep going, scale or conclude? Record your decision with track.
如果窗口内没有记录任何行动,问题里会补一句:结果可能反映的是什么都没做,而不是这个渠道不管用。
用实验的 id 更新它来记录决定:
{ "type": "experiment", "id": "exp_7Hn2LpWc0", "experiment": { "decision": "extend", "extend_days": 7, "note": "Only 3 replies seen; give it one more week" } }decision | 结果状态 |
|---|---|
stop | stopped |
scale | scaled |
extend(需要 extend_days) | extended,截止时间往后移 |
keep | concluded |
简报之外没有任何提醒:到期的实验会一直排在 experiments 最前面,直到你记录决定;过了 14 天,notices 里还会加一条类型为 experiment_overdue 的提示。
把教训另外存
决定字段里只放一句简短的 note。教训(学到了什么、下次怎么改)属于记忆,例如用 memory_add 写 kind: "decision",并把实验名称作为标签。