管理人工智能的上下文

通过提供正确的上下文,您可以在 VS Code 中从 AI 获得更相关、更准确的响应。在本文中,您将了解如何管理聊天中的上下文,包括如何使用 #-提及来引用文件、文件夹和符号,如何引用网页内容,或者如何使用自定义指令来指导 AI 的响应。

有关什么是上下文以及 VS Code 如何组装它的背景信息,请参阅 上下文概念

#-提及

您可以通过输入 # 后跟要提及的上下文项,明确地将上下文添加到提示词中。VS Code 支持不同类型的上下文项:文件、文件夹、代码符号、工具、终端输出、源代码管理更改等。

在聊天输入框中输入 # 符号以查看可用上下文项的列表,或者在聊天视图中选择 添加上下文 以打开上下文选择器。

Screenshot of VS Code Chat view, showing the chat variable picker.

查看支持的上下文项的完整列表。

添加文件作为上下文

默认情况下,VS Code 会利用工作区索引根据对话自动包含相关文件作为上下文。但是,您也可以使用 #-提及或上下文选择器明确地添加特定文件、文件夹或符号作为上下文。当问题模棱两可,既可以被视为一般性的编码实践问题,又希望确保 AI 在回答时考虑代码库的特定部分时,这会非常有用。

要提供特定文件、文件夹或符号作为上下文,请使用以下方法将它们添加到聊天中

  • 在聊天消息中通过输入 # 后跟文件、文件夹或符号名称来进行 #-提及。要引用符号,请确保先在编辑器中打开包含该符号的文件。

  • 从资源管理器视图、搜索视图或编辑器标签页中将文件或文件夹拖放到聊天视图中,以将其添加为上下文。

  • 在聊天视图中选择 添加上下文,并从快速选择菜单中选择 文件和文件夹符号

要明确告知 AI 您希望使用整个代码库作为上下文,可以在提示词中添加 #codebase

引用网页内容

您可以在聊天提示词中引用网页内容,例如获取最新的 API 参考或代码示例。

您可以直接在提示词中包含 URL 以获取该网页的信息,或者使用 #fetch 工具来表示您想要检索网页内容。例如

  • "最新 VS Code 发布的亮点是什么 #fetch"
  • "将 asp.net 应用程序更新到 .net 9 #fetch https://learn.microsoft.com/en-us/aspnet/core/migration/80-90"

VS Code 会在有限的时间内缓存网页内容以提高性能。如果页面内容发生变化,您可以重启 VS Code 来强制刷新。如果无法访问页面,缓存将在短时间(约五分钟)后过期。

VS Code 在访问外部 URL 前会请求确认,以保护您的隐私和安全。了解更多关于配置 URL 自动批准的信息。

了解更多关于在聊天中添加和使用工具的信息。

@-提及

聊天参与者是专门的助手,使您能够在聊天中提出特定领域的问题。您可以将聊天参与者想象成一位领域专家,您将聊天请求移交给它,它会处理剩下的事情。

聊天参与者不同于作为代理流程一部分被调用以执行特定任务的工具。

您可以通过 @-提及来调用聊天参与者:输入 @ 后跟参与者名称。VS Code 内置了诸如 @vscode@terminal 之类的聊天参与者。它们经过优化,可以回答有关其各自领域的问题。

以下示例展示了如何在聊天提示词中使用 @-提及

  • "@vscode 如何启用自动换行"
  • "@terminal 当前目录中最大的 5 个文件是什么"

在聊天输入框中输入 @ 以查看可用聊天参与者的列表。

扩展程序也可以贡献自己的聊天参与者

视觉(预览)

聊天支持视觉功能,这意味着您可以将图片作为上下文附加到聊天提示词中并询问相关问题。例如,附加一段代码的截图并要求解释它,或者附加一个 UI 草图并要求代理实现它。

提示

您可以从网页浏览器中将图片拖放到聊天视图中,以将其添加为上下文。

添加浏览器上下文(实验性)

VS Code 内置了集成浏览器,您可以使用它在 VS Code 内部预览网页并与之交互,例如对您的 Web 应用程序进行快速测试和调试。

浏览器工具栏有一个 添加到聊天 分割按钮,其中的操作允许您将当前页面的不同类型的上下文附加到聊天提示词中

  • 将元素添加到聊天:从页面中选择 HTML 元素以添加为上下文,包括其 CSS 样式和截图。
  • 将截图添加到聊天:捕获当前浏览器视口的截图并将其作为图片附加。
  • 将控制台日志添加到聊天:捕获页面的控制台输出并将其添加为上下文,这对于调试运行时错误非常有用。

要将集成浏览器中的元素添加到聊天提示词中

  1. 启动您的 Web 应用程序。

  2. 通过在命令面板中运行 Browser: Open Integrated Browser 命令来打开集成浏览器。

  3. 输入您想要交互的网页的 URL。

  4. 选择 将元素添加到聊天 按钮。现在,您可以将鼠标悬停在网页元素上并选中它们,以将它们作为上下文添加到聊天提示词中。

您可以配置在添加元素时包含哪些信息

  • 附加 CSS: chat.sendElementsToChat.attachCSS 在 VS Code 中打开 在 VS Code Insiders 中打开 设置
  • 附加图片: chat.sendElementsToChat.attachImages 在 VS Code 中打开 在 VS Code Insiders 中打开 设置

了解更多关于浏览器到聊天的操作的信息。

与浏览器页面交互

注意

用于代理的浏览器工具目前处于实验阶段。

代理可以使用内置的浏览器工具直接读取并与集成浏览器中的页面进行交互。这使代理能够导航到 URL、读取页面内容和控制台错误、截取屏幕截图、点击元素、输入文本等,而无需外部 MCP 服务器。

要启用浏览器工具,请将 workbench.browser.enableChatTools 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 设置为 true

您还可以与代理共享您已经打开的浏览器页面。在浏览器工具栏中选择 与代理共享 按钮,以便让代理访问您的页面,包括您现有的会话和登录状态。代理还可以检测未共享的标签页,并在需要时提示您共享,例如当您引用了代理无法看到的页面时。

例如,您可以要求代理打开您的 Web 应用程序、检查布局问题或验证功能是否正常工作。代理会打开浏览器,与页面进行交互,并汇报其调查结果。

了解更多关于用于代理的浏览器工具的信息。

监控上下文窗口使用情况

聊天输入框显示一个上下文窗口控件,显示模型上下文窗口的使用量。该视觉指标有助于您了解何时可能会进行聊天摘要,或者何时应该开启一个新的会话。

Screenshot of VS Code Chat view, showing the context window usage control in the chat input box.

上下文窗口控件提供以下信息

  • 视觉填充指示器:一个带阴影的条形显示当前正在使用的上下文窗口比例
  • 总使用量及悬停细分:将鼠标悬停在控件上可查看确切的 Token 数量占总可用上下文的比例(例如 15K/128K),以及按类别划分的使用细分

随着您在对话中发送更多请求,该控件会更新以反映不断增加的上下文使用量。总可用上下文(分母)会根据您选择的 AI 模型而变化,因为不同模型的上下文窗口大小不同。

提示

当上下文窗口填满时,VS Code 会自动压缩对话历史记录以释放空间。

上下文压缩

随着对话的发展,积累的消息和上下文会填满模型的上下文窗口。上下文压缩会总结对话历史记录以释放空间,这样您就可以继续在同一会话中工作,而不会丢失重要细节。压缩还可以减少每次后续请求发送的 Token 数量,这有助于管理 AI 额度消耗

自动压缩

当上下文窗口填满时,VS Code 会通过总结较早的消息来自动压缩对话。此过程在后台透明地进行,因此您可以继续聊天而无需中断。

要禁用自动压缩,请将 github.copilot.chat.summarizeAgentConversationHistory.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开 设置为 false

手动压缩

您也可以随时手动触发压缩,例如为了重新聚焦对话或减少早期交流带来的干扰。手动压缩适用于本地、后台和 Claude 代理会话。

要手动压缩对话,请使用以下方法之一

  • 在聊天输入框中输入 /compact。您可以选择在命令后添加自定义指令来引导摘要生成的方式,例如 /compact 专注于数据库模式决策

  • 选择聊天输入框中的上下文窗口控件,然后选择 压缩对话

如果您想完全重置上下文,请开启一个新的聊天会话

© . This site is unofficial and not affiliated with Microsoft.