为人工智能管理上下文
通过提供正确的上下文,你可以从 VS Code 中获得更相关、更准确的 AI 回答。在本文中,您将学习如何在聊天中管理上下文,包括如何使用#-提及来引用文件、文件夹和符号,如何引用网页内容,或如何使用自定义指令来引导AI的回应。
工作区索引
VS Code 使用索引快速且准确地搜索代码库中的相关代码片段。这个索引可以由GitHub维护,也可以存储在你的本地机器上。
以下工作区索引选项可供选择:
- 远程索引:如果你的代码托管在GitHub仓库中,你可以构建远程索引,快速搜索代码库,即使是大型代码库。
- 本地索引:使用存储在本地机器上的高级语义索引,为代码库提供快速且准确的搜索结果。
- 基础索引:如果无法本地索引,可以使用优化为本地运行的更简单算法,适用于更大的代码库。
了解更多关于工作区索引的信息。
隐含语境
VS Code 会自动根据你当前的活动为聊天提示提供上下文。以下信息隐含在聊天上下文中:
- 当前在活动编辑器中选中的文本。
- 激活编辑器的文件名或笔记本名。
- 如果你用的是Ask代理,激活文件会自动作为上下文包含。
- 使用Agent时,它会根据你的提示自动决定是否需要将活跃文件添加到聊天上下文中。

#-提及
你可以通过输入并输入你想提及的上下文项,明确地为提示词添加上下文。VS Code 支持不同类型的上下文项目:文件、文件夹、代码符号、工具、终端输出、源代码控制更改等。#
在聊天输入字段输入符号以查看可用上下文项目列表,或在聊天视图中选择“添加上下文”以打开上下文选择器。#

查看完整的支持上下文项目列表。
添加文件作为上下文
为了提供特定的文件、文件夹或符号作为上下文,请使用以下方法将它们添加到聊天中:
-
#-在聊天消息中输入文件、文件夹或符号,后加上文件、文件夹或符号名称。 要引用符号,务必先在编辑器中打开包含该符号的文件。
# -
将资源管理器视图、搜索视图或编辑标签页中的文件或文件夹拖拽到聊天视图,将它们作为上下文添加。
-
在聊天视图中选择添加上下文,从快速选择中选择文件与文件夹或符号。
如果可能,附件时会包含文件的完整内容。如果该文件太大无法放入上下文窗口,文件会包含一个包含函数及其描述但不包含实现的轮廓。如果轮廓也太大,文件就不会包含在提示中。
进行代码库搜索
你可以让VS Code自动从你的代码库中找到合适的文件,而不是手动添加单个文件。当你不知道哪些文件与你的问题相关时,这会很有用。
添加#codebase在提示词中,或选择“添加上下文>工具>代码库以启用你的工作区代码搜索。
以下提示示例展示了如何使用代码库搜索:
“请解释 #codebase 认证是如何运作的”“数据库连接字符串配置在哪里?#codebase”“添加一个新的API路由用于更新地址 #codebase”
如果你使用Agent,代理会在判断需要额外上下文来回答你的问题时自动使用代码库搜索。你仍然可以加#codebase如果你的问题可能会有不同的解读,并且你想确保代理使用代码库搜索。
网络参考内容
你可以在聊天提示中引用网页内容,例如获取最新的API参考或代码示例。
-
#fetch < 网址>使用该
取球工具,用于从特定网页检索内容。使用该工具时,输入#fetch接着是你想引用的页面的URL。该
取球该工具会在有限时间内缓存网页内容以提升性能。如果页面内容发生变化,你可以通过重启 VS Code 强制刷新。如果无法访问该页面,缓存将在短时间内(约五分钟)失效。VS Code 在访问外部 URL 前会提示确认,以保护您的隐私和安全。了解更多关于配置URL自动批准的信息。
示例提示词使用
取球工具:“VS Code 1.100 #fetch https://code.visualstudio.com/updates/v1_100 的亮点有哪些”“将 asp.net 应用更新为.net 9 #fetch https://learn.microsoft.com/en-us/aspnet/core/migration/80-90”
-
#githubRepo < 仓库名称>使用该
githubRepo在GitHub仓库中进行代码搜索的工具。类型#githubRepo后面跟着仓库名称。示例提示词使用
githubRepo工具:“next.js #githubRepo vercel/next.js 中的路由是如何运作的”“进行代码审查以验证其是否符合 #githubRepo microsoft/typescript”
参考工具
使用代理时,代理会自主决定使用工具来执行特定任务。如果你想在聊天提示中明确引用某个工具,可以使用#-提及。类型后跟工具名称及可选参数:#
“总结一下 #fetch https://code.visualstudio.com/updates”“路由是怎么运作的?#githubRepo vercel/next.js”“我有哪些未解决的问题 #github-MCP”(使用GitHub MCP服务器上的工具)
如果你以工具集或MCP服务器的名称引用,该工具集或服务器中的所有工具都会向代理开放,用于当前提示。
了解更多关于在聊天中添加和使用工具的方法。
@-提及
聊天参与者是专门的助手,可以让你在聊天中提问特定领域的问题。想象一下,聊天参与者是域名专家,你把聊天请求交给他,剩下的就由他处理。
聊天参与者不同于作为代理流程一部分被调用以贡献和执行特定任务的工具。
你可以通过@提及它来调用聊天参与者:输入后加参与者姓名。VS Code 内置了多个聊天参与者,比如@@vscode,@terminal,或者@workspace.它们被优化用于回答各自领域的问题。
以下示例展示了如何在聊天提示中使用@-mentions:
“@vscode 如何启用单词反包”“@terminal当前目录中排名前五的五大文件是什么?”
在聊天输入栏输入,查看可用聊天参与者列表。@
扩展还可以贡献自己的聊天参与者。
幻象(预览)
聊天支持视觉功能,这意味着你可以将图片作为上下文附加到聊天提示中,并提出相关问题。例如,附上一段代码截图并请其解释,或者附上用户界面草图,请代理实现。
你可以从网页浏览器拖拽图片到聊天视图,添加上下文。
添加浏览器元素(实验性)
VS Code 内置了一个集成浏览器,你可以用它预览和交互 VS Code 内的网页,例如快速测试和调试你的网页应用。
你可以在聊天提示中添加浏览器窗口的元素作为上下文。当你需要帮助处理网页的特定部分时,比如HTML元素、CSS样式或JavaScript代码,这非常有用。
要将集成浏览器中的元素添加到你的聊天提示中:
-
开始你的网页应用。
-
通过命令面板中的“打开集成浏览器”命令打开集成浏览器。
-
输入你想互动的网页网址。
-
选择“添加元素到聊天”按钮。你现在可以将鼠标悬停在网页的元素上,选择它们,将它们作为聊天提示的上下文添加。
你可以配置上下文中包含的信息:
- 附上CSS:chat.sendElementsToChat.attachCSS背景设定
- 附上图片:chat.send元素到Chat.attach图片背景设定
监控上下文窗口的使用
聊天输入框显示一个上下文窗口控件,显示模型上下文窗口的使用量。这个可视化指示器帮助你了解何时可能进行聊天摘要,或何时开始新会话。

上下文窗口控件提供以下信息:
- 可视化填充指示器:阴影条显示当前使用的上下文窗口比例
- 鼠标悬停时总使用量和分布:将鼠标悬停在控制点上,可以看到代币数量占总上下文的比例(例如,15K/128K),并按类别划分使用情况
随着你在对话中发送更多请求,控件会更新以反映上下文使用的增加。总可用的上下文(分母)会根据你选择的AI模型而变化,因为不同模型的上下文窗口大小不同。
当上下文窗口满时,VS Code 会自动总结对话历史以腾出空间。如果你想完全重置上下文,可以重新开一个聊天会话。