一个公开的动画宠物画廊与命令行工具,可浏览、安装和提交像素风宠物,并随 Codex 等编程代理的活动做出反应。
dif-sh/dif
以 Markdown 文件形式存放在代码仓库中的功能开关与 A/B 测试,由 CLI 编译为类型化的 TypeScript 客户端。
- 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
使用 npm 安装 dif 命令行工具(需要 Node 20 或更高版本)
npm install -g @dif.sh/cli - 2
在你的仓库中生成 dif/ 目录、配置文件和智能体文件
dif init - 3
创建一个实验文件草稿,打开后将 status 设为 active,然后运行 dif build
dif new home-hero-cta --surface home - 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 数据每日更新。
相关项目
一个 MIT 开源的 Claude Agent Skill,让 Claude 用 Remotion 通过代码创作和编辑动态图形视频。
开源的 Next.js 原生无头 CMS 与应用框架,提供 TypeScript 后端和可定制的 React 管理后台。
为 AI 编码代理提供 Vercel、React 与 Next.js 最佳实践等可安装技能包的集合。
开源的股票市场看板,可自托管,提供实时图表、价格提醒、自选股和公司分析。
基于 React.js 构建文档网站的框架,支持 Next.js、Astro 及多种 Vite 生态的 React 框架。