使Copilot Chat成为您工作区的专家
在Copilot Chat中引用@workspace
允许您询问关于整个代码库的问题。根据问题,Copilot智能地检索相关文件和符号,然后在回答中以链接和代码示例的形式引用这些内容。基于@workspace
的引用,Copilot Chat成为以下任务的领域专家:
- 在代码库中查找现有代码:
"@workspace where is database connecting string configured?"
- 解释数据库连接配置的位置和方式"@workspace how can I validate a date?"
- 在代码库中查找现有的日期验证辅助工具"@workspace where are tests defined?"
- 提供测试套件、案例及相关引用和配置的位置
- 为复杂代码编辑制定计划:
"@workspace how can I add a rich tooltip to a button?"
- 提供使用现有工具提示组件与按钮元素的计划"@workspace add date validation to #selection"
- 计划如何将现有的日期验证应用于选定的代码"@workspace add a new API route for the forgot password form"
- 概述在哪里添加新路由以及如何将其连接到现有代码
- 解释代码库中的高级概念:
"@workspace how is authentication implemented?"
- 认证流程的概述和相关代码的引用"@workspace which API routes depend on this service?"
- 列出所选代码中使用该服务的路由"How do I build this #codebase?"
- 根据文档、脚本和配置列出构建项目的步骤
@workspace
使用哪些来源作为上下文?
为了回答你的问题,@workspace
会搜索开发者在 VS Code 中浏览代码库时使用的相同资源:
- 工作区中的所有文件,除了被
.gitignore
文件忽略的文件 - 包含嵌套文件夹和文件名的目录结构
- GitHub的代码搜索索引,如果工作区是GitHub仓库并且被代码搜索索引
- 工作区中的符号和定义
- 当前选中的文本或活动编辑器中的可见文本
.gitignore
如果你有一个文件打开或在被忽略的文件中选择了文本,它将被绕过。
@workspace
如何找到最相关的上下文
您的完整 VS Code 工作区可能太大,无法完全传递给 GitHub Copilot 以响应您的聊天提示。相反,@workspace
从不同的上下文来源中提取最相关的信息,以支持 Copilot 的回答。
首先,@workspace
确定回答您问题所需的信息,包括对话历史、工作区结构和当前选定的代码。
接下来,它使用不同的方法收集上下文,例如通过本地搜索或使用GitHub的代码搜索来查找相关的代码片段,并使用VS Code的语言IntelliSense来添加函数签名、参数等详细信息。
最后,GitHub Copilot 使用此上下文来回答您的问题。如果上下文太大,则仅使用上下文中最相关的部分。响应中会标记对文件、文件范围和符号的引用。这使您能够直接从聊天响应链接到代码库中的相应信息。提供给 Copilot 的代码片段会在响应中列为引用。
@workspace
斜杠命令的上下文
@workspace
提供了几个斜杠命令作为常用任务的快捷方式,节省您的时间和打字精力。每个命令都定义了自己的优化上下文,通常消除了额外提示或聊天变量的需求。以下是可用的斜杠命令及其上下文:
Command | Context |
---|---|
/explain |
|
/tests |
|
/fix |
|
/new |
|
/newNotebook |
|
你可以通过在聊天提示中使用聊天变量(如#editor
、#selection
或#file
)来显式扩展上下文。例如,要根据另一个文件中的模式修复当前文件中的错误,可以使用以下聊天提示:@workspace /fix linting error in the style of #file:form.ts
。
使用@workspace
的提示
你提问的方式可以显著影响@workspace
提供的参考质量和回答的准确性。为了优化结果,请考虑以下建议:
- 在你的问题中要具体和详细,避免使用模糊或含糊的术语,如“这是什么意思”(其中“这”可能被解释为最后一个答案、当前文件或整个项目等)。
- 在您的提示中融入可能在您的代码或其文档中出现的术语和概念。
- 检查响应中的使用过的引用,以确保文件的相关性。如有必要,请反复修改您的问题。
- 通过选择代码或提及聊天变量(如
#editor
、#selection
或#file
)明确包含相关上下文。 - 响应可以从多个参考中提取,例如“查找没有catch块的异常”或“提供handleError调用的示例”。但是,不要期望对代码库进行全面的代码分析,例如“这个函数被调用了多少次?”或“修复这个项目中的所有错误”。
- 避免假设代码之外的信息(目前),例如“谁贡献了这个文件?”或“总结此文件夹的审查评论”。