管理人工智能的上下文

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

注意

此页面上的功能在 Chat 视图Agents 窗口 中均可使用。

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

#-mentions

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

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

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

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

添加文件作为上下文

默认情况下,VS Code 利用工作区索引根据对话自动将相关文件包含为上下文。但是,你也可以使用 `#-mentions` 或上下文选择器显式添加特定文件、文件夹或符号作为上下文。当问题含糊不清、可能被视为关于编码实践的一般性问题,并且你希望确保 AI 在其响应中考虑代码库的特定部分时,这会非常有用。

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

  • 在聊天消息中使用 `#-mentions` 提及文件、文件夹或符号:键入 #,后跟文件、文件夹或符号的名称。要引用符号,请确保首先在编辑器中打开包含该符号的文件。

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

  • 在“聊天”视图中选择添加上下文,然后从快速选择(Quick Pick)中选择文件和文件夹符号

要显式告知 AI 你希望将整个代码库用作上下文,可以在提示词中添加 #codebase

引用网页内容

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

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

  • "What are the highlights of the latest VS Code release #fetch"
  • "Update the asp.net app to .net 9 #fetch https://learn.microsoft.com/en-us/aspnet/core/migration/80-90"

VS Code 会在短时间内缓存网页内容以提高性能。如果页面内容发生更改,你可以通过重新启动 VS Code 来强制刷新。如果无法访问该页面,缓存将在短时间内(大约五分钟)过期。

为了保护你的隐私和安全,VS Code 在访问外部 URL 之前会提示进行确认。了解有关 配置 URL 自动批准 的更多信息。

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

@-mentions

聊天参与者是专门的助手,可让你在聊天中询问特定领域的问题。你可以通过使用 `@-mentions` 提及它来调用聊天参与者:键入 @,后跟参与者名称。VS Code 具有内置的聊天参与者,例如 @vscode@terminal。它们经过优化,可以回答有关其各自领域的问题。

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

  • "@vscode how to enable word wrapping"
  • "@terminal what are the top 5 largest files in the current directory"

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

扩展也可以贡献它们自己的 聊天参与者

视觉

聊天支持视觉功能,这意味着你可以将图像附加为聊天提示词的上下文并询问有关它的问题。例如,附加一块代码的截图并要求解释它,或者附加 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 积分总数

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

提示

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

你在不同轮次间构造和更改上下文的方式也会影响提示词缓存。稳定的上下文允许模型提供商重复使用先前请求中的 token,从而降低成本和延迟。使用 缓存资源管理器 (Cache Explorer) 检查你的缓存命中率。

上下文压缩

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

自动压缩

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

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

手动压缩

你还可以在任何时候手动触发压缩,例如重新聚焦对话或减少早期交流中的噪声。手动压缩适用于本地、后台和 Claude 智能体会话。

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

  • 在聊天输入框中键入 /compact。或者,在命令后添加自定义指令以指导如何生成摘要,例如 /compact focus on the database schema decisions

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

如果要完全重置上下文,请启动 新聊天会话

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.