Introduction
橡皮鸭是GitHub Copilot 命令行界面 (CLI)中的一个内置代理,能够起到建设性批评者的作用。 在处理任务时,会话主 CLI 代理可以将当前的计划、设计、实现或测试交给橡皮鸭代理进行检查。 橡皮鸭智能体会寻找盲点、设计缺陷和实质性问题,并给出具体、可操作的反馈。 Copilot 在继续之前会考虑这些批评意见。
橡皮鸭智能体旨在审核提议的更改,但不会自行更改文件。 会话的主要代理决定如何处理反馈。
注意
目前,仅在主智能体使用 Claude 或 GPT 大语言模型时橡皮鸭智能体才可用。
为什么是“橡皮鸭”?
该名称源于软件工程中一项长期存在的技术,称为“橡皮鸭调试法”****,即向一个无生命的物体(传统上是一只橡皮鸭)解释你的代码或提议的解决方案。 这个想法是,通过阐明你的思维,你经常发现错误、误解或逻辑缺陷。
橡皮鸭智能体将类似的想法应用于 Copilot。 在推进非微不足道的变化之前, Copilot 可以停止、阐明其当前思维,并让独立审阅者仔细审查。 与真正的橡皮鸭不同,这只鸭子会进行回应,并返回了一份结构化的批评,Copilot可以基于此采取行动。
来自另一个模型的第二意见。
橡皮鸭智能体的一个关键设计特征是它故意在与会话驱动模型不同的 AI 模型上运行。 GitHub Copilot 命令行界面 (CLI) 选择一个与当前会话模型形成对比的批判模型。 例如,如果你选择为会话使用 Claude 模型,橡皮鸭智能体可能会使用 GPT 模型作为批评者。 仅当存在可提供有用批判的合适模型可用时,Copilot 命令行界面(CLI) 才会使用橡皮鸭智能体。
使用不同的模型的好处是,批评者不太可能与产生工作的模型共享相同的盲点、偏见或故障模式。 你可以有效地从同一问题获得两个独立的视角。
每次调用橡胶鸭代理时,都会根据当前会话模型自动选择适当的批评者模型。 如果在会话中途切换会话模型(例如使用 /model 命令),那么橡皮鸭代理在下一次调用时会为新的会话模型选取适当的批评者。
橡皮鸭智能体的功能
当咨询橡皮鸭智能体时,它会:
-
**根据上下文理解工作。** 它了解代码、设计或建议尝试实现的内容、它如何与系统的其余部分集成,以及存在哪些假设。 - 标识实际问题。 它查找 bug、逻辑错误、安全漏洞、设计缺陷、反模式、性能瓶颈和其他真正对任务成功至关重要的问题。
- 建议进行特定修复。 对于发现的每个问题,它都会指出问题、其影响和具体建议的更改。
- 按严重性对反馈进行分类:
- 阻塞问题 - 必须解决以便工作能够成功。
- 非阻碍事项 - 应修复以提高质量,但不会阻碍成功。
- 建议 - 优先级较低的改进,这些改进仍然对结果产生实际影响。
- 仅报告重要的发现。 如果它找不到问题,它会明确说明。 橡皮鸭智能体被配置为不评论风格、格式、命名约定、注释中的语法、次要重构或最佳实践(前提是不会导致实际问题)。
橡胶鸭代理通过标准探索工具对代码库具有只读访问权限。 它无法编辑文件或运行更改环境的命令。
Copilot 何时会咨询橡皮鸭智能体
当橡皮鸭智能体启用时,Copilot 被指示在高影响力时刻咨询它,而不仅仅是在卡住时。 典型情况包括:
- 在规划较大变更之后,但在实施之前。 这是修正设计缺陷的最有效时机,因为此时更改设计的成本还不高。
- 实施过程中, 检查复杂工作是否存在盲点。
- 编写测试后, 验证测试覆盖率是否全面,并且行为是否实际满足原始请求。
-
**反应式地,当 Copilot 遇到重复失败或意外结果时,** 获得问题的独立分析,而不是重试相同的方法。
对于已充分理解的微小更改,Copilot 通常会跳过橡皮鸭智能体。
当 Copilot 咨询橡皮鸭智能体时,它会在时间线输出中为你总结获得的批判,而不是逐字重复 — 例如,“批判指出了我在 X 方面计划中的一个盲点,所以我更新了计划来解决这个问题”。
手动调用橡皮鸭智能体。
通常 Copilot 命令行界面(CLI) 会自动咨询橡皮鸭智能体。 无需执行任何操作。 时间线输出显示主智能体何时获得橡皮鸭批判。 但是,有时 CLI 不会使用橡胶鸭代理。 例如,它可能会决定这些更改不够广泛,无法进行批评。
可以使用自然语言提示显式地请求 Copilot 寻求第二意见。 例如,在要求 Copilot 生成工作计划后,可以输入如下提示:
Rubber duck your plan.
或者在一系列更改的过程中,你可以提示:
Get a critique of the changes you've made so far.
你也可以使用斜杠命令调用橡皮鸭智能体:
/rubber-duck What edge cases are missing?
使用橡皮鸭智能体的优势
-
及早发现问题。 大多数失败的非平凡任务,其问题本可以在计划阶段通过批判被发现。 在编写代码之前获取反馈优于在过程后期修复问题。
注意
咨询橡皮鸭智能体会在单独的模型上运行额外的推理过程,因此会增加一些延迟并涉及额外的模型使用。 优点是,提前多花一些时间和资源,可以通过及早发现问题和减少失败尝试的次数,整体上节省时间和模型的使用。
-
减少单模型盲点。 由于智能体使用来自不同系列的模型,它带来了真正不同的视角,而不是重新运行产生原始工作的相同推理。
-
提高复杂更改的质量。 在 Copilot 确定采用某套方案前,针对架构决策、多文件修改以及陌生代码库这类工作,听取第三方参考意见都会大有裨益。
-
**对于简单任务不插手。** Copilot 仅在工作非平凡时才咨询橡皮鸭智能体,因此不会减慢快速编辑和明显修复的速度。