使 Copilot 聊天成为您工作区的专家
在 Copilot 聊天中引用 @workspace
可以让您询问有关整个代码库的问题。根据问题,Copilot 会智能地检索相关的文件和符号,然后在答案中将其作为链接和代码示例进行引用。以 @workspace
引用为基础,Copilot 聊天成为以下任务的领域专家:
- 在您的代码库中查找现有代码
"@workspace 数据库连接字符串在哪里配置?"
- 解释数据库连接的配置位置和方式"@workspace 如何验证日期?"
- 在代码库中查找现有的日期验证助手"@workspace 测试在哪里定义?"
- 提供测试套件、用例和相关引用和配置的位置
- 制定复杂代码编辑的计划
"@workspace 如何向按钮添加丰富的工具提示?"
- 提供将现有工具提示组件与按钮元素一起使用的计划"@workspace 将日期验证添加到 #selection"
- 计划如何将现有日期验证应用于选定的代码"@workspace 为忘记密码表单添加新的 API 路由"
- 概述添加新路由的位置以及如何将其连接到现有代码
- 解释代码库中的更高级概念
"@workspace 如何实现身份验证?"
- 身份验证流程的概述以及对相关代码的引用"@workspace 哪些 API 路由依赖于此服务?"
- 列出在所选代码中使用该服务的路由"如何构建此 #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
提供多个斜杠命令作为常用任务的简写,从而节省您的时间和打字工作。每个命令都定义了自己的优化上下文,通常消除了对其他提示或聊天变量的需求。以下是可用的斜杠命令及其上下文
命令 | 上下文 |
---|---|
/explain |
|
/tests |
|
/fix |
|
/new |
|
/newNotebook |
|
您可以通过在聊天提示中使用聊天变量(例如 #editor
、#selection
或 #file
)来显式扩展上下文。例如,要根据另一个文件中的模式修复当前文件中的错误,请使用以下聊天提示:@workspace /fix 样式与 #file:form.ts 类似的 linting 错误
。
使用 @workspace
的技巧
您提出问题的方式会显着影响 @workspace
提供的引用的质量和响应的准确性。为了优化结果,请考虑以下技巧
- 在您的提问中具体详细,避免使用模糊或模棱两可的术语,例如“这是做什么的”(其中“这”可以解释为上一个答案、当前文件或整个项目等)。
- 在您的提示中加入您的代码或其文档中可能出现的术语和概念。
- 查看响应中的已使用引用,以确保文件相关。如有必要,请迭代您的问题。
- 通过选择代码或提及聊天变量(例如
#editor
、#selection
或#file
)来显式包含相关上下文。 - 响应可以从多个引用中提取,例如“查找没有 catch 块的异常”或“提供如何调用 handleError 的示例”。但是,不要期望对您的代码库进行全面的代码分析,例如“此函数被调用了多少次?”或“纠正此项目中的所有错误”。
- 避免假设代码之外的信息(目前),例如“谁为此文件做出了贡献?”或“总结此文件夹的审查意见”。