Sourcegraph 发布 Agentic Batch Changes:AI 代理驱动的大规模代码迁移
背景与挑战
在软件工程中,跨多个仓库进行大规模代码变更(如依赖升级、API 变更或安全漏洞修复)一直是极具挑战性的任务。这不仅涉及技术复杂性,更是一个巨大的协调难题:如何确保数百个仓库中的每一个都正确应用变更,同时应对 CI/CD 失败并保证最终的可合并状态。
传统的解决方案往往局限于手动操作、脆弱的自动化脚本,或者让单个 AI 代理在本地克隆所有仓库进行尝试,但这往往缺乏全局视野和容错机制。Sourcegraph 推出的 Agentic Batch Changes 旨在解决这一痛点,将复杂的分布式代码迁移自动化,直到所有 Pull Request (PR) 达到可合并状态。
核心功能与工作原理
Agentic Batch Changes 基于 Sourcegraph 的 Batch Changes 执行引擎和代码搜索能力构建。其核心工作流包含五个关键步骤:
- Scope (范围识别):利用 Sourcegraph 搜索和 Deep Search,自动识别所有需要变更的仓库,分析潜在影响,并制定执行计划。
- Execute (执行):采用“先试点后推广”的策略。首先在一个仓库中迭代优化方法,然后扩展到其余仓库。对于确定性变更,它会自动生成脚本;对于需要判断力的变更,则调用外部编程代理(如 Claude Code, Codex 等)进行处理。
- React (响应反馈):当 CI 测试失败时,代理能读取日志分析原因,并自动推送修复补丁。用户可配置其连接至 BuildKite、GitHub Actions 等日志系统。
- Iterate (持续迭代):代理持续工作,直到 PR 通过所有 CI 检查并准备就绪。
- Check in (人工介入):若代理陷入僵局或需要决策,它会暂停并请求人类介入。工程师在每次变更集合并前拥有最终审批权。
实战案例:Mercari 的安全漏洞修复
Mercari(日本电商平台)在测试版期间成功利用该工具修复了 GitHub Actions 中的环境变量注入漏洞。Team Lead Patrick Klitzke 指出,该工具的优势不在于速度,而在于其无需干预的自主判断力。
Mercari 的代码库虽然架构相似,但具体实现存在差异。传统的文本搜索替换脚本在面对这种细微差别时往往会失效,而 Agentic Batch Changes 能够针对每个仓库的特定上下文进行独立处理,成功定位并修复了约 80 个潜在受影响的仓库。
此外,Canva 也在测试中利用该工具处理了 Bazel 单体仓库中的代码所有权拆分任务。
适用场景与定位
Agentic Batch Changes 专为那些因过于复杂而无法通过传统自动化解决的大规模代码变更设计,主要包括:
- 依赖升级:特别是涉及破坏性变更或 API 表面发生重大版本跳变的情况。
- CVE 修复:自动识别漏洞库实例并分发修复补丁。
- 代码模式更新:需要上下文理解而非简单正则替换的重构(如 Go
ioutil移除、Java 原始构造函数弃用等)。 - 新 API/库推广:涉及不同服务间变动的认证合同或第三方库替换。
- CI 流水线现代化:统一构建系统配置和测试基础设施。
对于单仓库的编码任务,Sourcegraph 建议继续使用 Claude Code 或 Cursor。Agentic Batch Changes 的价值在于其编排能力,能够同时协调整个代码库舰队中的大规模变更。
结语
Sourcegraph 表示这是一个公共测试版,旨在收集用户反馈以完善产品。尽管可能存在边缘情况,但核心能力已在真实客户环境中产生显著影响。随着 AI 代理能力的进化,自动化大规模工程变更正成为可能,Agentic Batch Changes 正是这一趋势的先行者。