Cole Gannaway:代码审查、跨仓库风险与 AI 软件工厂

原标题Cole Gannaway on code review, cross-repository risk and AI software factories

一行重命名代码可能通过本地检查,却影响远端客户端。Qodo 的 Cole Gannaway 解释如何借助审查上下文、共享规则和独立智能体发现这些风险。

CGCole Gannaway讲者 · Qodo
频道
AI Engineer
发布
2026年10月29日
视频
14:50
阅读
5 分钟
幻灯片
7
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

Qodo 解决方案工程师 Cole Gannaway 以一个假设性的 Bitwarden 字段重命名为例,说明生成代码的审查为何不能只看本地测试。他讨论仓库关系图、共享规则、独立审查智能体以及对照工单意图进行检查,并介绍 Qodo 产品在其中的作用。

  1. 1一行代码影响多个客户端一个示例性的字段重命名通过了本地检查,却可能影响网页、移动端、CLI 和 MCP 客户端。
  2. 2绘制集成接口Gannaway 认为仓库关系图能够帮助人类和智能体审查者看清下游依赖。
  3. 3分离编写与审查他建议使用不同模型或运行框架的独立审查智能体,同时提醒上下文不足和错误仍然存在。
  4. 4审查意图,而非只看代码工单的验收标准有助于判断实现是否解决了预期问题。

要点建议

  1. 即使本地检查全部通过,一个小改动仍可能影响仓库外的客户端。
  2. 有用的软件关系图应展示实际集成接口,而不只是仓库之间的连接。
  3. 在提交拉取请求之前,审查规则和依赖上下文就可以指导编程智能体。
  4. 独立审查者与工单验收标准有助于发现不同类型的问题。
  5. 复盘经验可以转化为组织可重复使用的审查规则。
全文

按章节阅读整理后的全文

只看原始文稿
01

审查成为瓶颈

Gannaway 介绍 Qodo,以及审查快速生成的代码面临的挑战。他认为上下文是建立信任和验证的关键。

我是 Qodo 的解决方案工程师 Cole Gannaway,工作是帮助组织了解产品如何融入他们的工作流程。今天我想讨论以 AI 为先的团队如何构建软件工厂,以及 Qodo 在其中的位置:我们专注于其中一部分,而不是整个工厂。

客户很期待把工单直接推进到生产环境,但不少团队在拉取请求和审查阶段遇到瓶颈。代码生成的问题还没有完全解决,但速度正在迅速提高。审查环节需要为人和智能体提供足够的上下文,才能判断一个改动是否可信。

02

一行改动的广泛影响

示例中的数据模型重命名通过本地检查,但下游客户端仍可能依赖原字段。

来看一个使用开源密码管理器 Bitwarden 的示例。开发者重命名了数据模型中的一个字段。改动只有一行,构建、单元测试和代码检查都通过了。它看起来符合需求,因此审查者可能会自然地批准。

示例:一行重命名
幻灯片 1 / 7示例:一行重命名幻灯片展示了数据模型字段的重命名,本地测试仍然通过。

但绿色检查标记并不意味着所有下游依赖都经过了检查。现场许多人承认,曾经在没有逐行阅读所有改动的情况下合并拉取请求。我们依赖工具,但不同工具看到的上下文和能够支持的结论并不一样。

受字段影响的客户端
幻灯片 2 / 7受字段影响的客户端示意图展示了多个仓库中的下游使用方。

这一行重命名可能影响其他仓库中的客户端:网页、移动端、CLI 和 MCP 集成可能都依赖服务器字段。这是用于说明问题的示例,不是在报告 Bitwarden 真实事故。如果忽视这些依赖,问题可能要等到生产环境中的客户端出错才会暴露。

03

关系图、规则与提前提供上下文

仓库集成关系图和共享标准可以辅助审查。Gannaway 主张在提出拉取请求之前就把上下文提供给智能体。

仓库集成接口
幻灯片 3 / 7仓库集成接口软件关系图将仓库与它们使用的具体字段和 API 连接起来。

Qodo 提出的方法是构建软件关系图,映射仓库及其集成接口。知道 Android 仓库连接了服务器,不如知道哪些字段和组件跨越了这个边界有用。这些细节可以帮助审查者或审查智能体评估改动的影响范围。

审查知识并不全是功能测试。资深审查者可能会运用组织特有的规则,或从过去错误中积累的判断。与其让同一个人反复成为所有改动的瓶颈,不如把其中一些知识反馈到审查流程。

共享的公共 API 规则
幻灯片 4 / 7共享的公共 API 规则示例规则要求在重命名或移除公共字段之前先标记弃用。

例如,团队可以为公共 API 的改动制定规则:重命名或移除字段之前先标记弃用,或者要求更严格的审查。目标是让这些标准持续可用,包括提供给智能体,而不是只存在于某个人的记忆里。

相同的上下文应当在提交拉取请求之前,甚至生成代码之前就可用。MCP 服务器可以在编码智能体实现改动时提供仓库知识、依赖信息和自定义规则。这不能保证结果正确,但提供了更早避免错误的机会。

04

独立审查与经验积累

独立审查智能体可以集中上下文并提供另一种视角。审查评论和复盘经验可以转化为可复用规则。

团队有时会问,负责实现的智能体是否也应该审查自己的代码。它掌握有用信息,但同时还在调试、探索代码库和编写代码。上下文窗口变大,并不意味着重要细节不会被淹没,也不意味着智能体不会产生幻觉。

独立的审查智能体可以将上下文集中在审查任务上,并加入本次运行特有的信息。我也希望编写者和审查者相互独立:团队可以更换模型或运行框架,甚至引入对抗式审查者,以减少共同偏差。

拉取请求前的独立审查
幻灯片 5 / 7拉取请求前的独立审查示例审查指出 API 契约变更,并建议保留旧字段。

如果不同审查者指出同一个问题,这可能是一个有用信号;如果发现的问题完全不同,就值得进一步调查。一致意见并不是证明,独立性也不能消除错误,但比较不同视角可以发现单次审查遗漏的问题。

复盘既能带来组织和流程上的经验,也能带来代码层面的教训。对后者而言,挑战是将个人经验转化为组织能够反复使用的知识,而不是让它停留在私下交流中。

将审查意见变成规则
幻灯片 6 / 7将审查意见变成规则审查者接受的意见成为供后续拉取请求使用的建议标准。

在这个示例中,拉取请求上的评论促使 Qodo 建议一条供后续审查使用的规则。关系图还可以标记一行改动具有较大的下游影响,提醒人类或其他智能体更加仔细地检查。

软件工厂需要正确的上下文、相关标准,以及在拉取请求前和提交时进行的检查。MCP 或 CLI 可以让更早的审查成为可能。在代码生成阶段发现的问题,比合并之后发现的问题更容易处理。

05

关于意图和审查的问答

一位观众提出解决了错误问题的风险。Gannaway 展示工单验收标准,并建议在实现过程中定期检查。

一位观众介绍了自己与智能体一起审查改动,并记录文档以指导下一次运行的做法。另一位观众问,客户是否难以在写代码前传达意图:智能体即便遵循现有上下文,也可能解决错误的问题,或者过度设计方案。

作为回应,我展示了与 Jira 或 Linear 工单的集成。审查可以参考工单验收标准,突出需求与拟议改动之间的缺口。这与代码在语法或功能上是否正确是两个不同的问题:实现是否真正完成了预期任务?

工单验收标准
幻灯片 7 / 7工单验收标准现场示例展示了审查时可与实现进行对照的需求。

我建议在实现过程中定期运行专门的审查,例如在大约 25%、50% 和 75% 的进度点检查,而不是等到最终拉取请求。审查智能体可以像向导一样,帮助实现智能体在错误方向上走得太远之前调整路线。

审查阶段是 Qodo 在软件工厂中关注的部分:为人和智能体提供代码情报、共享知识以及评估风险所需的上下文。下一步要回答的是,哪些改动可以不经人工检查就安全合并,哪些需要更仔细的审查。影响范围信息可以帮助作出判断。

同频道的其他文章

5 张幻灯片11:47EN
AI Engineer· 2026年10月29日Revolut’s David Abitbol on self-hosting AI coding models at scaleDavid Abitbol · RevolutAbitbol shares engineering delivery trends, GPU-serving costs and latency tuning, then describes controls for operating the tools in a regulated bank.Local inferenceAI cost & performanceDeveloper productivity+2
4 张幻灯片21:47EN → 简体中文
AI Engineer· 2026年10月28日Patrick Smyth:AI 时代的开源供应链安全Patrick Smyth · ChainguardChainguard 的 Patrick Smyth 讨论漏洞利用加速、依赖中的恶意软件、零日漏洞,以及开发者工作流不断扩大的攻击面。CybersecurityOpen-source ecosystemsAI security+2
5 张幻灯片14:09EN → 简体中文
AI Engineer· 2026年10月28日Taylor Luttrell-Williams:用 SonarQube Hunter Agent 发现逻辑漏洞Taylor Luttrell-Williams · SonarSonar 的 Taylor Luttrell-Williams 介绍安全智能体如何梳理代码库、调查逻辑漏洞,并将验证过的发现与常规扫描结果一起呈现。CybersecurityAI securityCode review & verification+2
5 张幻灯片16:29EN → 简体中文
AI Engineer· 2026年10月28日Chris Vela:用 Runpod BenchPod 对 vLLM 配置做基准测试Chris Vela · RunpodRunpod 的 Chris Vela 演示如何通过仪表盘比较大语言模型服务配置,依据具体工作负载的数据选择性能设置。InferenceBenchmarksAI cost & performance+2
6 张幻灯片18:52EN → 简体中文
AI Engineer· 2026年10月28日Manish Kapur 与 Addy Osmani:如何验证 AI 软件工厂Manish Kapur, Addy Osmani · SonarSonar 的 Manish Kapur 与 Anthropic 的 Addy Osmani 讨论编码智能体加快软件变更后,如何进行代码审查、收集证据并实施分层检查。软件工厂Code review & verification编程智能体+2
5 张幻灯片18:35EN → 简体中文
AI Engineer· 2026年10月28日Kamil Potrec:智能体认证、委托与网关控制Kamil Potrec · KeycardKeycard 的 Kamil Potrec 解释智能体为何需要独立身份、限定范围的凭证与可审计授权,以及网关能在哪些方面提供帮助。智能体身份认证AI securityCybersecurity+2