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 将首选项分为三个文件之一:
-
.editorconfig用于编码标准 -
CONTRIBUTING.md适用于最佳做法、准则和体系结构标准。 -
README.md用于高级项目资讯
当你不断为 Copilot 提供提示时,你在不断地教它更高效地满足你的需求,并通过记录和分享开发的最佳实践,帮助团队提升未来对 Copilot 的交互体验。