Skip to main content
Skip to content

向橡皮鸭代理征求第二意见

使用橡胶鸭代理在 GitHub Copilot CLI 或 GitHub Copilot app 中获取对计划、代码和测试的独立评审意见。

Introduction

橡皮鸭是一种内置代理,可在GitHub Copilot CLI和GitHub Copilot app中使用。 它充当建设性批评者。 在处理任务时,会话的主代理可以将其当前计划、设计、实施或测试传递给橡胶鸭代理进行评审。 橡胶鸭代理负责寻找盲点、设计缺陷和实质性问题,并提供具体且可执行的反馈。 Copilot 然后,在继续之前考虑这种批评。

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

为什么是“橡皮鸭”?

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

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

另一个模型的第二种观点

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

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

每次调用橡胶鸭代理时,都会根据当前会话模型自动选择适当的批评者模型。 如果在会话期间切换模型,则下一次调用橡皮鸭代理会为新会话模型选取适当的评审器。

橡胶鸭剂的作用

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

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

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

手动调用橡胶鸭剂

默认情况下,不会自动调用橡胶鸭代理。 每次你想要点评时,都需要明确要求 Copilot 给出点评。 例如,在要求 Copilot 生成工作计划后,可以输入如下提示:

Rubber duck your plan.

在进行一系列更改的过程中,您可以提示:

Get a critique of the changes you've made so far.

您还可以使用斜杠命令调用橡皮鸭智能体:

/rubber-duck What edge cases are missing?

自动调用 Rubber Duck 代理

在 Copilot CLI 中,如果要让 Copilot 在未被要求的情况下主动咨询橡胶鸭智能体,则可以从 /subagents 选取器中为该智能体启用自动调用。

  1. 在交互式 Copilot CLI 会话中,输入 /subagents。
  2. 使用键盘箭头键选择橡皮鸭智能体,然后按 Enter。
  3. 选择“主动调用”,然后按 Enter 在关闭和打开之间切换设置。
  4. 使用转义键退出 /subagents 选取器。

以这种方式打开橡皮鸭代理的自动调用会更新 Copilot 设置文件(通常 ~/.copilot/settings.json),以便你选择的设置将持续用于将来的会话:

{
  "subagents": {
    "agents": {
      "rubber-duck": {
        "autoInvoke": true
      }
    }
  }
}

启用自动唤起后,Copilot 被要求在关键时刻咨询橡皮鸭智能体,而不是仅在陷入困境时才咨询。 典型情况包括:

  • 在规划较大变更之后,但在实施之前。 这是修正设计缺陷的最有效时机,因为此时更改设计的成本还不高。
  • 实施过程中, 检查复杂工作是否存在盲点。
  • 编写测试后, 验证测试覆盖率是否全面,并且行为是否实际满足原始请求。
  • 反应式地,当遇到重复失败或意外结果时 Copilot,可以独立分析问题,而不是重试相同的方法。

对于小的、理解良好的变化 Copilot ,通常跳过橡胶鸭剂。

当 Copilot 咨询橡胶鸭代理时,它会在会话输出中总结由此产生的批评意见,而不是逐字重复它,例如:“批评指出了我围绕 X 的计划中的一个盲点,所以我更新了我的计划来解决这个问题。”

使用橡胶鸭剂的好处

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

    注意

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

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

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

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

延伸阅读