Skip to main content

关于橡胶鸭代理

橡皮鸭代理是一个内置的批评者,它对Copilot的计划、代码和测试提供建设性的第二意见,并使用与驱动您会话的AI模型不同的AI模型。

谁可以使用此功能?

GitHub Copilot 命令行界面 (CLI) 适用于所有 Copilot 计划。 如果从组织收到 Copilot,必须在组织的设置中启用 Copilot 命令行界面(CLI) 策略。

Introduction

橡皮鸭是GitHub Copilot 命令行界面 (CLI)中的一个内置代理,能够起到建设性批评者的作用。 在处理任务时,会话主 CLI 代理可以将当前的计划、设计、实现或测试交给橡皮鸭代理进行检查。 橡胶鸭代理负责寻找盲点、设计缺陷和实质性问题,并提供具体且可执行的反馈。 Copilot 然后,在继续之前考虑这种批评。

橡胶鸭代理旨在审查建议的更改,而不是自行进行文件更改。 会话的主要代理决定如何处理反馈。

注意

仅当主代理使用 Claude 或 GPT 大型语言模型时,橡胶鸭代理当前才可用。

为什么是“橡皮鸭”?

这个名字来源于软件工程中一个长期存在的技术,称为 橡皮鸭调试,你在其中向一个无生命的物体——传统上是橡皮鸭子——解释你的代码或提出的解决方案。 这个想法是,通过阐明你的思维,你经常发现错误、误解或逻辑缺陷。

橡胶鸭代理应用类似的想法 Copilot。 在推进非微不足道的变化之前, Copilot 可以停止、阐明其当前思维,并让独立审阅者仔细审查。 与真正的橡皮鸭不同,这只鸭子会进行回应,并返回了一份结构化的批评,Copilot可以基于此采取行动。

另一个模型的第二种观点

橡胶鸭代理程序的关键设计特征是,它特意运行在驱动会话的不同 AI 模型上。 GitHub Copilot 命令行界面 (CLI) 选择一个与当前会话模型形成对比的批判模型。 例如,如果您选择在会话中使用 Claude 模型,橡胶鸭代理可能会使用 GPT 模型作为评论者。 Copilot 命令行界面(CLI) 仅在有合适的模型可以提供有用评估时,才使用橡皮鸭代理。

使用不同的模型的好处是,批评者不太可能与产生工作的模型共享相同的盲点、偏见或故障模式。 你可以有效地从同一问题获得两个独立的视角。

每次调用橡胶鸭代理时,都会根据当前会话模型自动选择适当的批评者模型。 如果在会话中途切换会话模型(例如使用 /model 命令),那么橡皮鸭代理在下一次调用时会为新的会话模型选取适当的批评者。

橡胶鸭剂的作用

求助于橡皮鸭调试代理时,它会执行如下操作:

  1.        **理解上下文中的工作。** 它了解代码、设计或建议尝试实现的内容、它如何与系统的其余部分集成,以及存在哪些假设。
    
  2.        **标识实际问题。** 它查找 bug、逻辑错误、安全漏洞、设计缺陷、反模式、性能瓶颈和其他真正对任务成功至关重要的问题。
    
  3.        **建议进行特定修复。** 对于发现的每个问题,它都会指出问题、其影响和具体建议的更改。
    
  4. 按严重性对反馈进行分类
    • 阻塞问题 - 必须解决以便工作能够成功。
    • 非阻碍事项 - 应修复以提高质量,但不会阻碍成功。
    • 建议 - 优先级较低的改进,这些改进仍然对结果产生实际影响。
  5.        **仅报告重要的发现。** 如果它找不到问题,它会明确说明。 橡胶鸭代理配置为不评论样式、格式设置、命名约定、注释中的语法、次要重构或不会导致实际问题的最佳实践。
    

橡胶鸭代理通过标准探索工具对代码库具有只读访问权限。 它无法编辑文件或运行更改环境的命令。

当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.

使用橡胶鸭剂的好处

  • 及早发现问题。 大多数非平凡的任务如果失败,其问题在于没有在规划阶段进行批判性分析。 在编写代码之前获取反馈优于在过程后期修复问题。

    注意

    咨询橡胶鸭代理在单独的模型上运行额外的推理传递,因此它增加了一些延迟,并涉及额外的模型使用。 优点是,提前多花一些时间和资源,可以通过及早发现问题和减少失败尝试的次数,整体上节省时间和模型的使用。

  • 减少单模型盲点。 由于代理使用不同系列的模型,它带来了真正不同的视角,而不是重复产生原始工作的相同推理过程。

  • 提高复杂更改的质量。 在方法提交之前,Copilot 这些体系结构决策、多文件更改和不熟悉的代码库都需要第二个意见。

  • 在处理简单任务时不碍事。 Copilot 仅在工作非琐碎时咨询橡皮鸭代理,因此它不会减慢快速编辑和显而易见改动的速度。

延伸阅读