dif.sh icon

dif.sh

dif.sh 将功能开关、A/B 测试、留出组和分阶段发布以 Markdown 文件管理在代码仓库中,并通过 CLI 创建、验证、构建及结束实验;Dif Cloud 提供共享指标和决策评审。

dif.sh

在代码仓库中管理功能开关和实验

Dif.sh 是一款面向开发者的工具,用于管理功能开关、A/B 测试、留出组和分阶段发布。这些内容以 Markdown 文件的形式存在于代码仓库中。其核心工作流围绕一个小型 CLI、纳入 git 管理的 `dif/` 文件夹,以及应用可以导入的生成式运行时产物构建。

该产品面向希望让实验定义、发布规则和实验历史紧贴代码审查流程的团队。本地工作流从终端运行;对于希望集中分析、但不想将事实来源移出代码仓库的团队,Dif Cloud 则提供指标、置信区间和决策提案的共享实时视图。

核心功能

以 Markdown 为先的实验文件

每个功能开关、留出组、分阶段发布或 A/B 测试都以单独的 `.md` 文件表示,并存放在 `dif/` 中,因此配置易于阅读、比较差异,也便于在拉取请求中审查。

基于代码仓库的 CLI 工作流

`dif init`、`dif new`、`dif validate`、`dif build`、`dif qa` 和 `dif conclude` 覆盖从创建脚手架到清理的完整生命周期,无需离开终端。

生成运行时产物

`dif build` 会将活跃实验编译为类型化客户端和 `dif/context.json`,使应用能够在本地渲染变体,同时代理会在会话开始时读取共享实验上下文。

运行时受众定向

受众规则在配置中声明,并在运行时根据国家、套餐或 returning_visitor 等用户属性解析,而不是依据已提交的客户列表。

验证与冲突检测

构建时检查会在变更进入生产环境前,捕获冲突、缺失测试、无效 frontmatter 和排除组冲突。

云端分析与评审流程

Dif Cloud 增加面向团队的指标、提升幅度计算、置信区间和基于拉取请求的决策提案,同时保留 git 作为事实来源。

团队使用 dif.sh 的实际方式

  • 让实验定义紧贴代码

    将活跃实验存储在 `dif/experiments/active/` 中,在拉取请求中审查,并将已结束的工作保留在代码仓库中以供日后参考。

  • 在发布前发现分阶段发布错误

    在发布前起草、验证并编译实验,使冲突、缺失测试和无效 frontmatter 在 CI 中失败,而不是在生产环境中暴露。

  • 使用运行时属性定向变体

    使用国家、套餐或 returning_visitor 等受众属性定向变体,而无需将客户列表提交到代码仓库。

  • 与代理共享实验上下文

    生成 `dif/context.json`,让编码代理在会话开始时读取当前实验状态,使之前的经验能够延续到下一次变更中。

  • 协调团队决策

    当团队需要曝光次数、随时间变化的提升幅度、置信区间以及以拉取请求形式写入的拟议决策时,使用 Dif Cloud。

Pros and Cons

Pros

  • 实验定义以 Markdown 形式保存在 git 中,因此可以在 PR 中审查,也易于与代码一同进行版本管理。
  • CLI 支持完整生命周期:设置、起草、验证、构建、QA 预览和结束实验。
  • `dif build` 会在部署前检查冲突和排除组冲突,有助于在 CI 中发现不安全的组合。
  • 运行时客户端由代码仓库生成,因此生产环境无需调用单独的服务来选择变体。
  • Dif Cloud 可以为更广泛的团队汇总提升幅度、置信区间、曝光数据和决策,同时保留代码仓库作为系统记录。

Cons

  • 所收集来源中的定价页面未提供完整的套餐明细,因此根据现有证据无法明确确切的付费套餐详情。
  • 云端专属的分析和团队视图似乎独立于核心代码仓库/CLI 工作流,因此需要提升幅度计算或共享指标的团队必须使用 Dif Cloud。
  • Shell 安装程序仅限 macOS 和 Linux,且框架包要求 Node 20.6+。

FAQ

如何开始使用 dif.sh?

Dif.sh 通过 CLI 在代码仓库根目录完成设置。文档显示,`dif init` 会创建 `dif/` 工作区,随后使用 `dif new`、`dif validate`、`dif build` 和 `dif qa` 作为主要工作流。CLI 设计为在代码仓库中运行,核心本地工作流无需打开浏览器或登录。

Dif Cloud 的费用是多少?

源页面介绍了两个层次:CLI 和 SDK 保持免费,而 Dif Cloud 是用于共享指标、提升幅度计算和团队实验视图的付费服务。所收集文本中的定价页面未包含套餐详情,但 Cloud 页面指出,每月 50 美元包含 100 万个事件和所有席位。

dif.sh 将实验存储在哪里?

Dif.sh 将实验以 Markdown 文件存储在纳入 git 管理的 `dif/` 文件夹中。活跃实验位于 `dif/experiments/active/` 下,已结束的实验会移至 `dif/experiments/concluded/`,界面和上下文也会在代码仓库中与它们一并跟踪。

Dif Cloud 在仅使用代码仓库的工作流之外增加了什么?

Dif Cloud 会读取代码仓库,并将每个 Markdown 实验转换为包含曝光量、提升幅度、置信区间和可结束标记的实时视图。它还会将拟议决策以拉取请求的形式写回,使代码仓库继续作为事实来源。

dif.sh 支持哪些平台?

文档显示,npm 封装器可在任何能够运行 Node 18+ 的环境中使用,SDK 和框架包则要求 Node 20.6+。Shell 安装程序支持 macOS 和 Linux,Homebrew 也支持 macOS 和 Linux。

Quick Facts

类别
开发者工具
核心模式
以 Markdown 形式存储在 git 中的功能开关和 A/B 测试
主要界面
CLI 以及生成的 SDK/运行时客户端
代码仓库布局
包含实验、界面、受众、配置、上下文和生成文件的 `dif/` 文件夹
支持的安装方式
Shell 安装程序、Homebrew 和 npm 封装器
平台说明
Shell 安装程序:macOS/Linux;npm 封装器:Node 18+;SDK/框架包:Node 20.6+