本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

管理人工智能的上下文

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

工作区索引

VS Code 使用索引快速准确地搜索代码库中的相关代码片段。这个索引可以由 GitHub 维护,或者存储在您机器的本地。

以下工作区索引选项可用:

  • 远程索引:如果你的代码托管在 GitHub 仓库中,你可以构建远程索引以快速搜索代码库,即使对于大型代码库也是如此。
  • 本地索引:使用存储在您本地机器上的高级语义索引,为您的代码库提供快速和准确的搜索结果。
  • 基本索引:如果无法进行本地索引,您可以使用针对大型代码库优化的更简单的算法进行本地工作。

了解更多关于工作区索引的信息。

隐含上下文

VS Code根据您当前的活动自动为聊天提示提供上下文。以下信息隐式包含在聊天上下文中:

  • 当前在活动编辑器中选择的文本。
  • 当前编辑器的文件名或笔记本名称。
  • 如果你使用的是Ask代理,活动文件将自动包含在上下文中。
  • 当使用Agent时,它会根据你的提示自主决定是否将活动文件添加到聊天上下文中。

聊天视图的截图,显示在聊天输入框中建议的上下文项目为当前活动的文件。

#-提及

您可以通过输入 来明确地为您的提示添加上下文。#接着是您想提到的上下文项。VS Code 支持不同类型的上下文项:文件、文件夹、代码符号、工具、终端输出、源代码控制更改等。

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

VS Code 聊天视图的截图,显示聊天变量选择器。

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

添加文件作为上下文

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

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

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

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

注意

如果可能的话,当您附加文件时,文件的全部内容将被包含。如果文件太大无法放入上下文Windows中,将包含文件的大纲,该大纲包括函数及其描述(没有实现)。如果大纲也太大,则文件将不会成为提示的一部分。

与其手动添加单个文件,不如让 VS Code 自动从你的代码库中找到正确的文件。这在你不知道哪些文件与你的问题相关时非常有用。

添加#代码库 在你的提示中或选择 添加上下文 > 工具 > 代码库 以启用你的工作区的代码搜索。

以下提示示例展示了如何使用代码库搜索:

  • 解释#codebase中认证是如何工作的
  • 数据库连接字符串在哪里配置? #codebase
  • 添加一个用于更新地址的新API路由 #codebase

如果你使用智能体,当智能体认为需要更多上下文来回答你的问题时,它会自动使用代码库搜索。你仍然可以添加#代码库如果你的问题可能有多种解释,并且你想确保代理使用代码库搜索。

参考来自网络的内容

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

  • #获取

    使用获取从特定网页获取内容的工具。要使用此工具,请输入#获取接着是您要引用的页面的网址。

    获取工具将网页内容缓存一段时间以提高性能。如果页面内容更改,可以重新启动 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 <仓库名称>

    使用github 仓库在 GitHub 仓库中执行代码搜索的工具。输入#github库跟随仓库名称。

    示例提示使用github 仓库工具:

    • 如何在 next.js 中进行路由工作 #githubRepo vercel/next.js
    • 执行代码审查,以验证其与 #githubRepo microsoft/typescript 一致。

参考工具

在使用智能体时,智能体自主决定使用工具来执行特定任务。如果你希望在聊天提示中明确引用一个工具,可以使用 #-mentions。输入#接着是工具名称和可选参数:

  • 总结 #fetch https://code.visualstudio.com/updates
  • “路由是如何工作的?#githubRepo vercel/next.js”
  • “我的未解决问题 #github-mcp”(使用来自 GitHub MCP 服务器的工具)

如果您通过名称引用工具集或MCP服务器,那么该集合或服务器中的所有工具将对当前提示的代理可用。

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

@-提及

聊天参与者是专门的助手,使您能够在聊天中提出特定领域的提问。想象一下,聊天参与者就像一个领域的专家,您将聊天请求交给他们,他们会处理其余的事情。

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

你可以通过 @-提及来召唤聊天参与者:输入@跟随参与者名称。VS Code 有多个内置聊天参与者,例如@vscode@终端,或@工作区它们被优化为回答各自领域的问题。

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

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

类型@在聊天输入字段中查看可用的聊天参与者列表。

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

视觉(预览)

Chat 支持视觉功能,这意味着您可以将图像作为上下文附加到聊天提示中,并对其提问。例如,附加一段代码的截图并询问其含义,或者附加一个用户界面的草图并要求代理实现它。

小贴士

您可以将网页浏览器中的图像拖放到聊天视图中以添加上下文。

添加浏览器元素(实验性)

VS Code 内置了一个集成浏览器,您可以在 VS Code 内预览和与网页互动,例如快速测试和调试您的网页应用程序。

您可以将浏览器Windows中的元素添加到聊天提示的上下文中。这在您需要获取网页特定部分的帮助时非常有用,例如 HTML 元素、CSS 样式或 JavaScript 代码。

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

  1. 启动你的网络应用程序。

  2. 通过运行浏览器:打开集成浏览器命令从命令面板中打开集成浏览器。

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

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

您可以配置上下文中包含哪些信息:

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

监控上下文Windows的使用情况

聊天输入框显示了一个上下文Windows控制,显示了模型上下文Windows的使用情况。这个视觉指示器帮助您了解聊天摘要可能会发生的时间,或者您应该开始新会话的时间。

VS Code 聊天视图的截图,显示了聊天输入框中的上下文Windows使用控制。

上下文Windows控制提供以下信息:

  • 视觉填充指示器:一个阴影条显示当前上下文Windows的使用比例
  • 总使用量和详细信息:将鼠标悬停在控件上,以查看可用上下文的精确代币数量(例如,15K/128K)以及按类别划分的使用情况

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

小贴士

当上下文Windows填满时,VS Code 会自动总结对话历史以释放空间。如果你想完全重置上下文,请开始一个新的聊天会话