代码托管平台本周宣布公开预览 Stacked Pull Requests(分层拉取请求)功能。这项新能力原生支持将大型软件变更拆分为多个相互依赖的小型拉取请求,每个请求可以分别进行审查和合并。官方表示,该功能旨在解决现代软件开发中一个长期存在的难题:如何在 AI 辅助开发让代码生成速度不断提升的同时,与人类代码审查人员有限的处理能力之间取得平衡。
过去,开发人员提交一个包含数百甚至数千行代码的单一拉取请求是常态。现在,借助 Stacked Pull Requests,工作可以被拆分为一系列较小的拉取请求,每个请求都基于前一个请求构建。审查人员可以单独评估每一个逻辑变更,这既减轻了认知负担,也让开发工作不必等待整个功能完成后才开始审查,得以持续进行。
保留现有工作流,降低采用门槛
该平台的实现还保留了现有的分支保护规则、审查工作流和合并策略。这意味着分层开发可以成为现有代码库实践的自然延伸,团队不需要为此单独设计一套新的工作流程。对于已经习惯原生流程的团队来说,这一设计显著降低了上手成本。
本次公告的发布时机,反映了软件行业正在发生的广泛转变。如今,AI 编码助手能在几分钟内生成大量可直接投入生产的代码,但代码审查仍然主要由人工完成。随着开发速度的加快,审查质量有可能会成为软件交付的主要瓶颈。Stacked Pull Requests 试图通过缩小审查范围——而非加快审查本身——来解决这一问题。它不再要求审查者同时理解数十项互不相关的更改,而是让每个拉取请求代表一个单一的逻辑步骤,例如引入新的 API、更新数据库架构或实现特定的业务功能。审查范围越小,通常越容易理解、越容易验证,也越不容易因为某些更改疏漏而引入缺陷。
除了改善代码审查,该功能对开发流程的优化同样值得关注。大型功能往往需要一些基础性工作,而这些工作经常会阻碍后续开发,直到审查完成为止。借助分层变更,开发人员可以在早期工作的基础上继续开发,同时审查人员可以单独评估每一层。这使得提交者和评审者之间能够进行更连贯的协作,同时减少了对长期存在的大型功能分支的需求——这类分支往往容易出现合并冲突和代码过时的问题。此外,这种做法还鼓励开发者将软件变更视为渐进式的架构改进,而非整体性的功能交付;而这种实践已被证实能降低部署风险并加快反馈速度。
“分层开发”并非新概念,平台将其原生集成
尽管在该平台上尚属新事物,但“分层开发”绝非新概念。Meta 通过其内部开发工具推广了“分层差异比较”(stacked diffs),而 Graphite 和 Sapling 等公司也围绕类似的工作流构建了专用的工具。此前,许多团队一直依赖第三方工具或手动分支管理来实现类似的效果。通过将该功能直接集成到平台中,其母公司消除了此前阻碍广泛采用的大部分运维负担。现在,团队可以利用熟悉的工作流来创建、审查、更新和合并相互依赖的拉取请求,而不需要在工程环境中引入额外的工具。
近期研究进一步印证了这一挑战。一项针对智能编码工具早期采用情况的分析发现,尽管由人工智能生成的拉取请求正变得越来越普遍,但成功的集成仍然高度依赖于人工监督。大多数项目在合并前,仍然需依靠一位经验丰富的审查者来验证智能编码工具生成的代码。另一项针对从业者观点的研究得出结论:代码审查已经成为决定人工智能是提升还是降低软件质量的关键控制点。因此,随着智能编码工具能力的不断提升,结构化的审查流程变得愈发重要。
包括 Graphite 在内的多家公司已经构建了专门用于分层开发的平台,而为了降低交付风险,现代工程组织越来越重视小粒度拉取请求、主干开发、持续集成和增量部署。这一趋势也与该平台自身最近推出的创新功能相契合,其中包括:Copilot 编码助手、CodeQL 增强功能、构建签名认证、基于 MCP 的密钥扫描,以及扩展的 AI 辅助开发工作流。所有这些举措表明,软件工程的未来将不再主要依赖于生成更多代码,而是更多地依赖于创建能够让人类与 AI 进行安全、透明地大规模协作的工作流。
随着 AI 不断加速软件开发的进程,诸如 Stacked Pull Requests 这样的功能可能不再仅仅是一个便利的工具,而是成为一种必要的手段。在代码生成日益自动化的时代,审查、理解并安全地集成这些代码的能力,可能会成为高绩效工程团队的核心竞争力之一。
热门跟贴