Copilot Chat 如何理解和使用上下文

Visual Studio 中的 Copilot Chat 旨在实现上下文感知,通过深入了解项目的结构和内容来提供高度相关的定制响应。 本文提供幕后介绍 Copilot Chat 如何构建和使用上下文来增强编码工作流。

Copilot Chat 如何收集解决方案上下文

Copilot Chat 使用多层方法来在代码库中进行上下文构建,以确保其建议和答案是相关的且准确的。

代码库索引

如果存储库托管在 GitHub 或 Azure DevOps 上,Copilot 会创建代码库的远程索引,并计算捕获代码中的模式和关系的嵌入。 详细了解 GitHub 上的远程索引

如果代码托管在其他位置,则 Copilot 将生成本地索引。

根据你的提示,Copilot 可能会确定它需要更多的项目上下文来准确响应。 在这种情况下,它会对远程索引或本地索引执行语义搜索。

与传统搜索不同,它与确切的字词匹配,语义搜索侧重于含义。 使用高级矢量嵌入,Copilot 会识别与请求具有最高语义相似性的文件,并将其添加到其上下文中。

这些文件补充了系统提示、说明、隐式上下文(如聊天历史记录和打开文件),以及提供的任何显式内容,如错误。

了解如何在聊天中添加 引用作为上下文

Copilot Chat 如何应用代码建议

Copilot Chat 在其响应中经常提供代码建议。 这些建议必须准确映射到代码库,然后才能应用和测试这些建议。

基于模型的代码映射

Copilot Chat 使用推理解码来准确地将建议插入现有文件中,从而减少错误的风险。 在代理模式下,这允许 Copilot 进行可靠的编辑,以支持独立生成、调试和测试代码。

Copilot 记忆

Copilot 记忆功能使 Copilot 能够学习您项目的特定编码标准和最佳实践,从而在不同的会话中对项目具有一致的感知和应用。

Copilot 记忆的工作原理

当你在聊天中提示时,“记忆”使用智能检测来理解你的团队的首选项。 每当您给出提示时,Copilot 会识别您更正其行为的情况、给出标准或要求其记住某些内容。

检测到此类实例时,您会看到用于保存首选项的确认提示。

Copilot 识别要保存到记忆中的偏好设置时的屏幕截图。

然后,Copilot 将首选项分为三个文件之一:

  • .editorconfig 用于编码标准
  • CONTRIBUTING.md 适用于最佳做法、准则和体系结构标准。
  • README.md 用于高级项目资讯

当你不断为 Copilot 提供提示时,你在不断地教它更高效地满足你的需求,并通过记录和分享开发的最佳实践,帮助团队提升未来对 Copilot 的交互体验。