let experiment = @exp.checkout_button_experiment()
let assignments = @exp.assign_many(experiment, @exp.sample_subjects())
let counts = @exp.count_exposures(assignments)
let srm = @exp.check_srm(experiment, counts, 1200)
println(srm.to_json())
运行
moon check --target all
moon test --target wasm
moon test --target wasm-gc
moon run cmd/main
MoonExperimentKit
面向 MoonBit 的实验分流、样本比例校验与指标护栏基础库。
MoonExperimentKit 解决的是 A/B 实验平台中的底层问题:如何稳定地把用户分到实验变体,如何保证同一用户反复访问得到同一结果,如何检查样本比例是否明显异常,以及如何在错误率等护栏指标越界时阻止实验继续扩大。
解决什么问题
普通灰度发布只关心“谁能看到功能”,实验系统还必须关心“看到哪个变体”“流量比例是否健康”“指标护栏是否允许继续”。MoonExperimentKit 把这些逻辑抽成 MoonBit 原生基础库,方便产品实验、增长工具、教学演示和内部实验平台复用。
核心能力
bucketExperiment、Variant、assignExperimentLayercount_exposurescheck_srmMetricSampleGuardrailRule、evaluate_guardrail最小示例
运行
与已有项目的区别
MoonExperimentKit 不是 feature flag、不是发布系统、不是 SLO 工具,也不是数据仓库。它专注实验分流和实验健康判断,可作为更大实验平台的底层库。
项目边界
当前不存储曝光日志、不做显著性检验、不生成可视化报表、不替代业务决策。后续可以扩展贝叶斯/频率派统计检验、序贯实验、实验元数据导出和更完整的实验报告。