@zachlloydtweets: https://x.com/zachlloydtweets/status/2077428025474355521
摘要
本篇文章介绍了如何构建一个自我改进的代码审查代理,作为云软件工厂的一部分,使用了代码审查技能、GitHub Actions以及一个外层循环代理来实现持续改进。
查看缓存全文
缓存时间: 2026/07/16 02:02
如何构建一个自我改进的代码审查智能体
这是我在“如何构建云软件工厂”系列文章中的第三篇:
- 构建问题分类智能体
- 构建规格编写智能体
- [本文] 构建一个自我改进的代码审查智能体
我将描述如何构建一个代码审查智能体,以及如何让其生成的审查质量随时间自动提升。这是对之前文章的延续,我之前描述了如何将分类、规格和实现智能体设置为工厂的第一部分。
请注意,你可以使用现成的代码审查平台,但将其集成到云工厂工作流中的好处在于:工厂中的所有智能体都遵循类似模式,并且可以共享上下文(例如,你的代码审查智能体可以了解规格编写智能体如何编写规格,并可以要求验证智能体验证审查评论中提出的建议)。你还可以完全控制代码审查技能,自由选择模型,并控制该技能随时间改进的方式。在我看来,自动化整个软件开发生命周期比只自动化其中一部分更好。
要跟着操作并在你自己的仓库中实现代码审查,可以在这里查看演示代码。
深入来看,为了实现代码审查智能体,我们将创建以下内容:
- 一个代码审查技能,云智能体可以将其应用于 PR
- 一个调用该技能的 Github Action
- 第二个“外循环”智能体,用于观察代码审查者并随时间改进它
让我们从代码审查技能开始,我将基于 Warp 在其流行的 OSS 仓库中用于代码审查的技能。
该技能接受三个输入:
- PR 描述
- PR 差异
- 来自规格智能体的规格(如果有)
它返回一个名为 review.json 的结构化输出。
由于该技能由像 Claude Code、Codex 或 Warp 这样的云编码智能体运行,它还可以利用编码智能体可以做的所有标准事情,比如读取文件、搜索代码库、构建代码、编写测试等。让一个完整的智能体进行代码审查,使其能够在提出任何更改建议之前验证假设,确保建议的更改能成功构建等。这对工作流至关重要。
技能的正文指示智能体审查代码的安全性、正确性、风格等。它提供了详细说明,包括如何内联留下反馈、什么算严重、重要或只是小问题、以何种风格留下评论等。它指示智能体如果有规格则将其与代码进行比较,并验证它建议的任何更改。最后,它通过 review.json 提供结构化输出的模式,以便结果可以转换为 GitHub 中的一组评论。
该技能不仅仅是一个文本文件,它还包括一组支持性的 Python 脚本,使其更具确定性和成本效益。我建议将脚本作为技能资源打包,以避免让智能体实时编写它们,这会消耗额外的 token 并引入不确定性。
该技能缺少的是特定团队或仓库编码约定的具体上下文。与其在一开始就添加这些,不如创建第二个智能体,随着审查智能体在运行过程中学习这些约定(稍后会详细介绍)。
代码审查技能
为了调用代码审查技能,我们需要:
- 一个触发它的 Github Action
- 它在云端运行的一个地方
Github Action 相当简单,主要是些不值得深入探讨的管道工作。在高层,它在不同的 PR 状态变化时运行,收集关于 PR 的上下文,然后使用审查技能启动云智能体。
对于在云端运行,我们使用 Github Actions + Warp 智能体的组合,就像本仓库中其他演示一样,但这里有很多选项可以选择。不过,Warp 的好处在于它是多模型和多框架的,这对于管理成本非常有用(并且可以运行开放权重模型)。它还可以配置为在任何基础设施上运行。
Github Action
请注意,智能体被授予对拉取请求的只读权限,而 GitHub Action 会以编程方式将智能体的 review.json 转换为 GitHub 评论。我们可以让智能体拥有直接发布 GitHub 评论的写入权限,但这会引入提示注入风险(比如评论其他 PR 甚至删除 PR)。
以下是一个高质量审查智能体输出的示例,包含详细的内联评论和修复建议:
PR 级别摘要
PR 级别摘要
一个内联评论
一个内联评论
如果你回复这些评论之一并重新推送代码,审查智能体会自动再次运行。它会理解先前的上下文和讨论线程,并适当地重新审查。就是这么简单。
你可以就此打住,拥有一个功能但基础的 PR 审查器,但我想展示如何通过自我改进循环让这个审查器随时间提升。
这个循环是这样的:
- 在一天中,代码审查智能体在每个 PR 上运行
- 人类作者和审查者与审查智能体留下的评论互动,有时纠正它们或验证其建议
- 每天一次,“外部智能体”运行,审查代码审查智能体当天处理的所有 PR,综合人类反馈
- 如果外部智能体发现任何值得为后续运行记住的知识,它会提交一个 PR 来更新代码审查智能体技能
- 下次代码审查智能体运行时,它会融入这些学习成果
这个系统并不完美,但随着时间的推移,随着更多关于团队偏好的相关信息被纳入技能中,审查质量确实会提升。这些信息可能涉及代码风格、代码库中的特定陷阱,或者审查智能体应如何验证建议等。
为了使其真正有效,你应该将其与指标和评估结合起来,查看你在代码审查上花费了多少、需要多少周期以及审查者被纠正的频率。我将在未来的文章中展示如何为这些循环创建评估。
外循环改进技能
对于我的示例 PR,我对智能体评论同时添加了正面和负面反馈,然后观察外部智能体如何调整代码审查者,使其在未来考虑这些反馈。
以下是一些负面反馈,我要求智能体倾向于进行结构性的代码更改,而不是添加注释。
还有一些正面反馈,关于它建议为 HTTP 请求添加超时。
这是我们的“外循环”智能体在 PR 中提出的对代码审查技能的调整。它考虑了这两条反馈,因此未来审查者的运行会更好:
我希望大家觉得这有用。要尝试它,请让你的智能体从云工厂演示仓库中添加 PR Review 和 Improve PR Review Skills 以及 GitHub 工作流。
随着我发布更多此类文章,我们将一步一步地构建整个工厂,一次一个智能体。在下一篇文章中,我将展示如何添加一个验证智能体,该智能体通过计算机使用来从用户角度检查更改是否正确。
我们正在 Warp 努力使其更加即开即用,但我认为自己动手设置智能体本身就有很大的学习价值。
如果你有任何反馈或问题,请告诉我!
相似文章
@zachlloydtweets: https://x.com/zachlloydtweets/status/2069428152338665622
这篇帖子解释了如何为AI代理创建一个自动化反馈循环,使其能够迭代提升技能。该循环利用computer use和一个观察者技能来评估并更新技能代码。
@dzhng: 喜欢这个框架。软件工厂不应该要求人类审查每一行代码,但每一个*决策*都应该…
开发者 dzhng 分享了一个 GitHub 仓库,其中包含可组合的 AI 代理技能,用于构建软件工厂,实现自主目标驱动代码生成,并在决策点进行人工审查。
@mattpocockuk: 将 Martin Fowler 的《重构》中的一组代码异味添加到我的 /review 技能中:Mysterious Name, Duplicated Code, Fe…
Matt Pocock 宣布将 Martin Fowler 的代码异味添加到他的 /review 技能中,该技能用于 AI 编码代理,并分享了他的开源可组合代理技能集合,旨在改善实际工程工作流。
@PaulSolt: https://x.com/PaulSolt/status/2073470146115490230
Paul Solt 分享了一个详细的工作流程,利用 Codex 智能体循环实现夜间自主构建功能,包括管理线程、心跳检测和自动 PR 审查。该技术从单次提示转向设计好的智能体循环,使得只需极少的人工干预即可实现持续开发。
我构建了一个不仅能完成任务,还能自我改进管道的智能体
作者构建了一个自主智能体,不仅能完成任务,还能通过观察结果、通过拉取请求进行更改,并使用账本验证每个更改来改进自身的代码和产品。关键洞察在于,一个严格的验证步骤——得出确认、拒绝或不确定的结论——对于系统真正学习至关重要。