CodeRabbit 如何使用 Claude 构建代理编排系统
CodeRabbit 如何使用 Claude 构建代理编排系统 CodeRabbit 在 Claude 之上构建了一层位于编码请求和编码代理之间的系统,在生成任何代码之前产出一个团队可以审查的结构化编码计划。 在我们的" 初创公司如何使用 Claude 构建 "系列中,我们重点介绍初创公司如何用 AI 变革他们的行业...

CodeRabbit 在 Claude 之上构建了一层位于编码请求和编码代理之间的系统,在生成任何代码之前产出一个团队可以审查的结构化编码计划。
在我们的"初创公司如何使用 Claude 构建"系列中,我们重点介绍初创公司如何用 AI 变革他们的行业。在这篇文章中,我们分享 CodeRabbit 如何构建了一个在 AI 生成代码之前进行规划的代理编排层。
| 快速概览 | |
|---|---|
| 名称 | CodeRabbit |
| 成立时间 | 2023 年 |
| 创始人 | Harjot Gill,CEO |
| 技术栈 | Claude Platform、Claude Code |
| 规模 | 每周审查 15,000+ 客户的 200 万个 PR |
AI 编码工具已经大幅缩短了从想法到可运行原型之间的时间。CodeRabbit,一个 AI 代码审查平台,注意到与这一效率提升同时出现的另一个趋势:代码能够编译并通过测试,但并没有做到团队实际想要构建的东西。
CodeRabbit 的 AI 副总裁 David Loker 将原因定位在模型的上游。经验丰富的开发者通常假设编码代理理解他们所理解的相同上下文,所以他们不会写下那些对他们来说感觉显而易见的需求。编码代理然后用它认为合理的内容来填补空白。
为了弥合这一差距,CodeRabbit 使用 Claude 设计并构建了一个代理编排系统,在生成任何代码之前运行一个结构化规划阶段。团队的工作假设是规划质量决定输出质量,代码生成越便宜,向错误方向前进的代价就越大。
解决 AI 编码中的内部知识差距
当 CodeRabbit 团队研究其客户群中 AI 生成的 Pull Request 时,最常见的失败模式是代码能够编译并通过测试,但仍然没有解决它被构建来解决的那个问题。
"随着我们作为开发者积累经验,我们内化了知识,"Loker 说。"所有这些东西都在我们脑海中,我们假设其他开发者也知道它们。但随后我们对 AI 系统也做出同样的假设,认为它也隐式地理解了。我们甚至没有意识到我们在做这些假设。"
模糊的提示迫使底层系统用它认为合理的内容填补空白。这种猜测往往偏离开发者心中的想法。
Loker 提供了一个个人例子。在构建一个副业项目的记忆系统时,他花了数小时与编码代理迭代直到一切运行。当他问代理如何使用它时,指令告诉他需要传入一个用户令牌。但根本没有登录页面。他指定了系统需要用户但从未说用户需要一种登录的方式。代理填补了空白,数小时的工作产出了一个缺少前门的产品。
"最终发生的是你在它之上构建了更多东西,然后在很久之后才发现有问题,"Loker 说。"在 AI 工作流中,晚期验证可能非常昂贵。"
在 AI 编码解决方案之前运行的编排层
CodeRabbit 的回应是在代码生成之前插入一个规划系统。它协调多个 Claude 模型来分析需求并在产出结构化执行计划之前暴露假设,该计划定义了应该构建什么以及需要满足什么约束。
"这个规划系统不是要替代 Claude Code 的 Plan Mode,"Loker 说。"它是一个在 Claude Code 之前发生的更高级别编排,将其指向一个非常窄且正确的方向,所有需要明确的东西都被明确化,我们意识到所有正在做出的假设。"
输出是一个协作式产品需求文档(PRD):一个在完整上下文下创建的计划,由跨团队的利益相关者验证,并在实现开始之前审查。Claude Code 拿起该计划并用它生成一个精细的实现计划。该计划成为一个共享工件,记录了决定了什么以及为什么,这不仅帮助团队避免返工并稍后验证输出是否匹配原始意图,还帮助新工程师入职。
在 Claude 模型家族中路由
CodeRabbit 将每个模型层级与任务复杂度匹配,以优化成本和延迟。Opus 驱动编排循环和理解问题及设定总体方向的更高级别战略工作。Sonnet 接收该输出并将其排序为结构化规划步骤。Haiku 处理范围狭窄的操作,如上下文蒸馏和定向工具使用,这些问题足够具体以至于较小的模型就能很好地回答。
"如果 Haiku 在给定任务上与 Sonnet 表现一样好,我们就用 Haiku,"Loker 说。"如果评估工具告诉我们给 Opus 更多空间时计划质量会提高,我们就给它更多空间。我们不猜测。"
为计划质量构建评估工具
CodeRabbit 对代码审查有成熟的评估系统,但对于评估规划输出则什么都没有。构建该基础设施本身就成了一个项目。
系统从手工调整的示例和手动检查开始。团队开发了一套 LLM 评判器库,对计划质量的特定维度进行评分。因为计划最终产生代码,团队还可以测量生成的代码是否工作、是否包含额外范围以及到达那里需要多少 Token。在有和没有规划步骤的情况下运行相同任务为他们提供了一种隔离规划本身价值的方法。
"我们没有意识到那个计划的正确详细程度会是什么,"Loker 说。过于颗粒化的计划在代码库变化的那一刻就过时了。过于高层的计划为代理留出了填补假设的空间,而这正是规划层本来要解决的原始问题。找到可用的抽象级别需要迭代,而评估工具使之成为可能。
在编写任何代码之前捕获错误
在 AI 原生编码工作流中,许多过去在代码审查期间出现的决策现在更早地在规划层中做出。构建一个团队可以在代码生成开始之前审查和对齐的计划可以及早捕获错误。
"我们使用 Claude 生态系统构建的是一个团队范围的规划系统,"Loker 说。"计划本身成为一个质量门。如果我们能确保那个计划的前期质量非常好,下游效果会非常显著。你最终会得到好得多的代码。"
| CodeRabbit 团队的最佳实践 | |
|---|---|
| 你实际试图创造什么成果,你如何衡量? | 不仅在给 AI 的规格说明中要明确,还要定义你在 MPP(最大可能产品)中想要什么。 |
| 哪些假设仍然是隐式的? | 问 Claude:缺少什么?计划的任何部分是否作为隐式假设而不是显式规格出现? |
| 哪些工作流或边缘情况容易被遗忘? | 请 Claude 帮助识别你可能没有考虑到的场景或情况。 |
| 你如何在推出之前知道输出匹配意图? | 创建工作记录:一个被保存和重用的规划工件编年史。 |
在 Claude Platform 上构建你的初创公司。
评论
还没有评论
欢迎留下第一条评论,帮助这篇内容更快形成讨论。