DoorDash用多智能体LLM清理6万特性开关
DataHot 速览
DoorDash构建多智能体LLM系统,自动清理其代码库中超过6万个特性开关、覆盖约623个仓库。系统结合MCP实时实验数据、工程师审批、隔离的Git工作树、并行智能体与自动校验。在50个失效开关的评测中,系统为45个生成了可用PR,平均每次13.8分钟、成本4.79美元,而人工清理估计需1至2小时。
为什么值得关注:这是一个AI Agent进入工程数据治理场景的完整落地案例,包含评测数字、成本与人工对比、MCP工具接口等可复用细节,对做Data Agent与平台AI化的从业者有直接参考价值。
译文
AI 逐段翻译DoorDash 构建了一个多智能体 LLM 系统,用于自动化清理过期的功能开关,覆盖其整个代码库,结合了实时实验数据、工程师审批、隔离的 Git 工作树和自动化验证。在对 50 个过期开关的评估中,该系统为 45 个开关生成了可用的拉取请求,平均每个清理耗时 13.8 分钟、成本 4.79 美元,而 DoorDash 估计手动清理需要一到两个小时。
DoorDash 的实验平台在大约 623 个代码库中管理着超过 60,000 个功能开关,每月创建约 2,300 个新开关。该公司识别出超过 1,000 个过期开关。当一个开关 90 天内未被修改、仍然在代码中被引用、未被归档或停用,且未被明确排除时,它就被归类为过期。一个每日流程会为识别出的开关创建 Jira 工单。
由于 DoorDash 使用了依赖注入包装器,清理工作变得复杂,因为开关定义、客户端调用和业务逻辑可能分布在多个文件中。因此,一个简单的布尔开关可能需要跨 5 到 20 个文件进行更改,包括测试文件。
现有方法解决了这一问题的部分内容。Uber 的开源 Piranha 使用基于抽象语法树的转换来识别和移除过期的功能开关代码。DoorDash 发现这种方法无法覆盖其依赖注入模式,在这种模式中,开关与应用程序逻辑之间的关系是语义性的,而不是通过匹配语法直接表示的。Piranha 提供了一种基于规则的对比方法,与 DoorDash 使用的基于 LLM 的系统形成对照。
DoorDash 的工作流使用 Google 的 Agent Development Kit,分为两个阶段。一个运行 Claude Sonnet 的编排器从 Jira 检索过期开关工单,搜索相关代码库,并通过 Model Context Protocol(MCP)查询实验平台以获取元数据,包括发布百分比和目标值。工程师审查生成的报告并在代码更改开始前确认目标值。MCP 提供了一种标准化机制,用于将 AI 应用程序与外部工具和资源连接起来。
DoorDash 的两阶段功能开关清理工作流(来源:DoorDash 博客文章)
在第二阶段,Claude Opus 清理智能体在隔离的 Git 工作树中运行,每个代码库最多可有四个智能体并发运行。智能体定位开关引用,确定清理策略,修改源代码和测试,并运行构建、测试、JaCoCo 补丁覆盖率和 Detekt 静态分析。只有在验证检查通过后才会打开拉取请求。每个智能体有一小时的超时限制,Gradle 在没有守护进程的情况下运行,以防止工作树之间共享状态。
评估产生了 31 次首次通过合并、14 次修订和 5 次工程师干预。简单开关实现了 100% 的单次清理率,中等复杂度开关为 94%,复杂开关为 85%。这五次干预涉及深层调用链和跨接口参数传递。DoorDash 报告在 50 个评估的更改中没有发现 bug 或回归。
50 个评估开关中按复杂度划分的功能开关清理结果(来源:DoorDash 博客文章)
该公司计划为较低风险的清理添加置信度评分,并在清理后进行代码质量检查,以识别开关移除后出现的误导性变量名等问题。这项工作已被 ICSME 2026 工业轨道 接收。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏