检查 GitHub Copilot 的内联聊天、智能操作和快速聊天功能

已完成

除了聊天视图之外,GitHub Copilot Chat 还提供了几种其他方式来与 AI 对程序员交互。 其中包括内联聊天和智能操作。

内联聊天

GitHub Copilot Chat 的一个关键功能是在编码时直接回答问题。 这样,你就可以直接在代码编辑器中利用 AI 的强大功能,并尽量减少开发工作流的中断。

仅当在编辑器中打开文件时,才能访问内联聊天功能。 可通过多种方式打开内联聊天会话:

  • 从 GitHub Copilot Chat 菜单中选择编辑器内联聊天
  • 使用键盘快捷方式: Ctrl+I
  • 在代码编辑器中右键单击,从上下文菜单中选择Copilot,然后选择Editor 内联聊天

截图显示如何从 Visual Studio Code 中的 GitHub Copilot 菜单访问内联聊天。

可以在编写或迭代代码时使用内置聊天功能向GitHub Copilot提问。

打开内联聊天会话时,编辑器中会显示以下界面。

截图演示如何在 Visual Studio Code 中使用热键访问内联聊天。

请考虑以下方案:

  • 你正在开发处理数值列表的 C# 应用程序。 数据以 100 个为一批进行处理。
  • 可以使用下面的代码片段创建 1 到 1000 之间的 100 个随机整数的列表,可用于测试。
// create a list of 100 random number between 1 and 1000
List<int> numbers = new List<int>();
Random random = new Random();
for (int i = 0; i < 100; i++)
{
    numbers.Add(random.Next(1, 1000));
}

代码正常工作。 但是,如果要求发生变化,该怎么办? 如果需要确保列表不包含任何重复数字,该怎么办?

要使用 GitHub Copilot 自动补全更新代码,需要:

  1. 删除现有代码。
  2. 创建反映更新要求的新注释。
  3. 使用GitHub Copilot从更新的注释生成新的代码片段。
  4. 查看建议并选择最佳选项。

幸运的是,这不是必要的。 更好的解决方案是使用GitHub Copilot聊天来建议所需的代码更新。

可以使用内联聊天会话来建议代码更新,如下所示:

  1. 突出显示要更新的代码片段。
  2. Ctrl + I 打开内联聊天。
  3. 询问GitHub Copilot聊天如何完成更新。
  4. 查看建议并选择最佳选项。

在这种情况下,可以询问: Update this code to ensure that numbers doesn't include any duplicates

如果喜欢建议的代码更新,可以选择 “接受 并继续编码”。

屏幕截图显示 Visual Studio Code 中内联聊天的建议更新。

如果你不喜欢提议的更新,可以通过选择“重新运行...”图标,让 GitHub Copilot 对话助手生成另一个建议。 “重新运行”图标显示为圆形箭头,显示在提示文本框的下方。

如果重新运行提示,但仍无法获取所需的结果,请尝试使用其他上下文更新提示。 当提示清晰、简洁和准确时,GitHub Copilot 对话助手会生成更好的建议。 可以选择 “放弃 ”关闭内联聊天,而无需进行任何更改。

智能操作

某些任务非常常见,因此可以自动执行。 GitHub Copilot 聊天包括智能操作,使你无需编写提示即可完成某些任务。 智能操作是预定义的操作,可以直接在Visual Studio Code编辑器中运行,以便快速轻松地执行常见编码任务。

可以使用以下智能操作:

  • 说明:该Explain动作生成所选代码的自然语言描述。 这对于了解代码片段的用途和功能非常有用。 如果你使用不熟悉的代码或需要向其他人解释代码,这个Explain 操作特别有用。
  • 修复:该Fix操作建议针对所选代码提供修复方案。 如果在代码中遇到错误或问题,并需要有关如何解决此错误的指导,这非常有用。 GitHub Copilot聊天可以建议对可能解决问题的变量、控件结构或函数调用进行更改。
  • 评审与评论:该 Review and Comment 操作提供所选代码的代码评审。 这可用于识别潜在问题、提高代码质量并确保遵循最佳做法。 该Review and Comment操作可帮助你识别代码中的错误、性能瓶颈和安全漏洞。
  • 生成文档Generate Docs 操作会为选定的代码创建文档。 这可用于记录代码库,尤其是在处理具有多个参与者的项目或需要与他人共享代码时。
  • 生成测试:该Generate Tests操作为所选代码创建单元测试。 这可能有助于确保代码的正确性和可靠性,尤其是在处理具有复杂逻辑或关键功能的项目时。

若要访问智能操作,请右键单击编辑器中的代码片段,然后从 GitHub Copilot 上下文菜单中选择所需的操作。

截图展示了如何在 Visual Studio Code 中访问智能操作。

再次,让我们考虑一下质数应用。

在上一部分,内联聊天建议以下代码,以确保 numbers 不包含任何重复项:

// create a list of 100 random numbers between 1 and 1000
List<int> numbers = new List<int>();
Random random = new Random();
while (numbers.Count < 100)
{
    int randomNumber = random.Next(1, 1000);
    if (!numbers.Contains(randomNumber))
    {
        numbers.Add(randomNumber);
    }
}

尽管此代码可确保集合中的元素具有唯一性,但仍有改进的空间。

可以使用 “审阅此” 智能操作来检查代码选择。 若要使用 “审查此项” 智能操作,

  1. 选择需要评审的代码片段。 在这种情况下,生成随机数列表的代码。

  2. 从GitHub Copilot上下文菜单中选择Review This

  3. 查看建议的更新,然后选择 “接受 ”以应用更改。

对于生成随机数的代码片段,“查看此”智能操作建议以下内容:

  • 初始化 List<int> numbers 时设置容量为 100,以避免在填充期间多次调整大小。
  • 在检查重复项时,使用HashSet<int>而不是List<int>以实现更快的查找。

在这种情况下,“审查此”智能操作 将引导你使用 HashSet<int> 而不是 List<int> 来提高性能。

// create a list of 100 random numbers between 1 and 1000
HashSet<int> numbers = new HashSet<int>();
Random random = new Random();
while (numbers.Count < 100)
{
    int randomNumber = random.Next(1, 1000);
    if (!numbers.Contains(randomNumber))
    {
        numbers.Add(randomNumber);
    }
}

int sum = addPrimeNumbersInNumericList(numbers);
Console.WriteLine(sum);

尽管使用 HashSet 有效工作来确保唯一元素的集合,但更新会创建新问题。 该方法addPrimeNumbersInNumericList期望List<int>作为输入,但更新的代码却创建了HashSet<int>。 这会导致以下编译错误:

截图显示 Visual Studio Code 中的编译错误。

幸运的是,可以使用 修复 智能操作来更正错误。 要使用修复智能操作:

  1. 右键单击需要修复的代码片段。 在这种情况下,代码带有红色下划线。

  2. 从GitHub Copilot上下文菜单中选择Fix

  3. 查看建议的修补程序,然后选择“ 接受 ”以应用更改。

智能操作生成一个或多个修复错误的建议。 在这种情况下,其中一个建议是在调用addPrimeNumbersInNumericList时使用ToList()方法将HashSet转换为List。 生成的代码将类似于以下代码片段:

// create a list of 100 random numbers between 1 and 1000
HashSet<int> numbers = new HashSet<int>();
Random random = new Random();
while (numbers.Count < 100)
{
    int randomNumber = random.Next(1, 1000);
    if (!numbers.Contains(randomNumber))
    {
        numbers.Add(randomNumber);
    }
}

int sum = addPrimeNumbersInNumericList(numbers.ToList());
Console.WriteLine(sum);

与往常一样,请查看GitHub Copilot聊天提供的建议。 可能有更好的解决方案。 您可以选择 “接受” 来使用建议的修复更新您的代码。

概要

GitHub Copilot 聊天提供了多种与 AI 配对程序员交互的方法,包括内联聊天和智能操作。 这些功能使你可以提出问题、获取代码建议,并快速轻松地执行常见编码任务。 通过内联聊天,你可以直接在编辑器中提问GitHub Copilot问题,而无需切换上下文。 智能操作提供预定义的功能,例如解释代码、修复错误、生成测试和审查代码,这些功能可以通过上下文菜单中的单击运行。