Repolode
dif-sh

dif-sh/dif

以 Markdown 文件形式存放在代码仓库中的功能开关与 A/B 测试,由 CLI 编译为类型化的 TypeScript 客户端。

可替代:LaunchDarklyOptimizely

Star
129
Fork
0
未关闭 Issue
1
最近提交
5天前

这是什么?

dif 将每个功能开关和实验保存为一个带 YAML 前置元数据的 Markdown 文件,与其影响的代码一起提交到 git。`dif` CLI 会校验这些文件(权重、surface 引用、受众属性以及实验之间的冲突),并把生效中的实验编译为类型化的 TypeScript 客户端和 context.json。运行时 SDK 无额外依赖,采用确定性分桶,同一用户在不同页面加载和设备上都能拿到相同的变体,无需分配数据库或网络请求。

项目面向 Next.js、React 和 SvelteKit,各框架有独立的 npm 包。功能开关与实验采用同一种文件格式:开关就是逐步放量到 100% 的实验。CLI 提供项目初始化、实验草拟、用 `dif qa` 追踪用户分配,以及记录实验结论等命令,结论会供同一 surface 的后续实验参考。

数据分析是可选的。不配置发布密钥时,开关在本地计算,不会向外发送数据。连接 dif.sh Cloud 可获得事件收集和统计分析,也可以通过自定义事件处理器把数据转发到任意管道。仓库还包含用于编写和结束实验的 Claude Code 技能及智能体指令文件。

核心功能

  • 01功能开关和实验都是带前置元数据的 Markdown 文件,可以通过 PR 审查。
  • 02`dif validate` 检查权重、surface 引用、受众定义和实验冲突。
  • 03`dif build` 生成类型化的 TypeScript 客户端和 context.json。
  • 04确定性分桶逻辑在 Rust CLI 与 TypeScript SDK 中保持一致。
  • 05`dif qa` 可查看指定用户获得的变体及原因。
  • 06可选连接 dif.sh Cloud,进行事件收集与统计分析。

适用场景

  • 在 Next.js 或 SvelteKit 站点上做 A/B 测试,无需托管的开关控制台。
  • 将功能开关历史和实验结论与代码一起保存在 git 中。
  • 让 AI 编程智能体通过修改仓库文件来创建和下线功能开关。

快速上手

  1. 1

    使用 npm 安装 dif 命令行工具(需要 Node 20 或更高版本)

    npm install -g @dif.sh/cli
  2. 2

    在你的仓库中生成 dif/ 目录、配置文件和智能体文件

    dif init
  3. 3

    创建一个实验文件草稿,打开后将 status 设为 active,然后运行 dif build

    dif new home-hero-cta --surface home
  4. 4

    将已激活的实验编译为带类型的 TypeScript 客户端

    dif build

使用前须知

  • 通过 npm 安装需要 Node 20 或更高版本;也提供独立二进制文件。
  • 生成的客户端被 gitignore 忽略,因此 CI 和部署必须在构建应用前运行 dif build。
  • npm SDK 包仅支持 ESM,没有 require() 入口。
  • dif.sh Cloud 分析功能是可选的,需要 dif.sh Cloud 的可发布密钥。

标签

常见问题

dif 是什么?
以 Markdown 文件形式存放在代码仓库中的功能开关与 A/B 测试,由 CLI 编译为类型化的 TypeScript 客户端。 dif 将每个功能开关和实验保存为一个带 YAML 前置元数据的 Markdown 文件,与其影响的代码一起提交到 git。`dif` CLI 会校验这些文件(权重、surface 引用、受众属性以及实验之间的冲突),并把生效中的实验编译为类型化的 TypeScript 客户端和 context.json。运行时 SDK 无额外依赖,采用确定性分桶,同一用户在不同页面加载和设备上都能拿到相同的变体,无需分配数据库或网络请求。
dif 可以免费使用吗?用的什么许可证?
dif 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
dif 还在维护吗?
活跃维护中。dif 最近一次提交是在 2026年10月16日。
dif 适合用来做什么?
在 Next.js 或 SvelteKit 站点上做 A/B 测试,无需托管的开关控制台。 将功能开关历史和实验结论与代码一起保存在 git 中。 让 AI 编程智能体通过修改仓库文件来创建和下线功能开关。
dif 怎么安装和运行?
使用 npm 安装 dif 命令行工具(需要 Node 20 或更高版本): npm install -g @dif.sh/cli 在你的仓库中生成 dif/ 目录、配置文件和智能体文件: dif init 创建一个实验文件草稿,打开后将 status 设为 active,然后运行 dif build: dif new home-hero-cta --surface home 将已激活的实验编译为带类型的 TypeScript 客户端: dif build
在哪里获取 dif?
源代码和安装说明在 GitHub 上:https://github.com/dif-sh/dif

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目