dif.sh
一款 Git 原生的功能标志(Feature Flagging)和 A/B 测试平台,通过 Markdown 文件和命令行界面(CLI)直接在代码库中管理实验,实现实验即代码的开发体验。
一款 Git 原生的功能标志(Feature Flagging)和 A/B 测试平台,通过 Markdown 文件和命令行界面(CLI)直接在代码库中管理实验,实现实验即代码的开发体验。
产品用途与官方定位
dif.sh 是一个以开发者为中心的实验平台,它将功能标志、A/B 测试和发布策略作为 Markdown 文件存储在项目仓库中。这种方法允许团队使用标准的版本控制工具来管理功能标志的整个生命周期。
该系统与现有的 Git 工作流深度集成,支持通过拉取请求(Pull Request)进行实验审批,并保留所有更改的永久版本化历史记录。它包含一个 CLI,可自动执行测试的创建、验证和结束,同时生成用于生产环境的类型化客户端。
通过利用本地构建过程,该工具可以在实验进入生产环境之前检测到潜在的实验碰撞。它还会生成专门设计的上下文文件,帮助 AI 编码助手理解代码库当前的实验状态和历史背景。
有官方来源支持的使用场景
团队可以在 Markdown 文件中定义变体、假设和指标,以便在代码中运行和跟踪实验。
为编码助手提供生成的上下文文件,使其在开发过程中了解活跃的实验和先前的学习成果。
官网提供的使用流程
运行 init 命令在仓库内设置本地文件夹结构,包括实验目录和 Surface 目录。
使用 CLI 起草新测试,系统会自动从相关的 Surface 日志中提取历史背景以辅助制定新假设。
执行验证检查以确保配置正确,并使用 QA 命令在本地预览特定的实验变体。
运行 build 命令生成类型化客户端,并在将代码发布到生产环境前解决排除组冲突。
通过归档文件、起草决策块并更新 Surface 的学习日志来完成测试,供未来参考。
该平台将功能标志和实验视为代码工件,利用 Markdown 文件进行配置,并使用 Git 进行版本控制。这种方法旨在使审计日志和审批流程保留在现有的开发者工作流(如拉取请求)中,消除了对单独数据库或外部配置管理仪表板的需求。
在构建过程中,该工具会解析排除图,以确保没有用户同时被分配到两个冲突的实验中。如果检测到冲突,构建将在持续集成(CI)环境中失败,从而防止逻辑冲突影响到生产环境的应用程序。
用自己的素材和工作流完成验证
核对了哪些信息以及核对时间
基于已核对产品资料的回答
系统使用文件 Frontmatter 中定义的排除组,并在构建步骤中检查冲突;如果用户会被分配到两个冲突的测试中,则构建会失败。
客户数据不会存储或提交到仓库中;相反,受众属性在配置中声明,而具体数值在运行时从应用程序的用户上下文中提供。
Surfaces 充当机构记忆库,包含记录特定屏幕或功能的先前学习成果和潜在问题的 Markdown 文件,为未来的实验提供参考。
每次构建都会重新生成一个包含活跃标志和近期学习成果的上下文文件,编码助手可以在会话开始时读取该文件以了解当前的实验状态。
不需要,核心功能通过 CLI 和本地文件运行,但对于需要集中化分析和置信区间可视化图表的团队,也提供可选的云端层。