现已发布!阅读 11 月的新功能和修复。

2024 年 10 月(版本 1.95)

安全更新:以下扩展有安全更新:ms-python.pythonms-vscode-remote.remote-ssh

更新 1.95.1:此更新解决了这些 问题

更新 1.95.2:此更新解决了这些 问题

更新 1.95.3:此更新解决了这些 问题

下载:Windows:x64 Arm64 | Mac:通用 Intel | Linux:deb rpm tarball Arm snap


欢迎使用 Visual Studio Code 2024 年 10 月版。此版本中有许多更新,我们希望您会喜欢,其中一些主要亮点包括

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新内部人员:想尽快尝试新功能吗?您可以下载每晚的 Insiders 版本,并在最新更新可用时立即尝试。

GitHub Copilot

Copilot 功能可能会经历不同的早期访问阶段,这些阶段通常通过设置启用和配置。

  • 实验性 - 查看实验性功能 (@tag:experimental)

    此设置控制正在积极开发且可能不稳定的新功能。它可能会更改或删除。

  • 预览 - 查看预览功能 (@tag:preview)

    此设置控制仍在完善但已准备好使用的新功能。欢迎提供反馈。

使用 Copilot 编辑开始代码编辑会话

Copilot 编辑当前处于预览阶段

设置github.copilot.chat.edits.enabled

使用 Copilot 编辑,您可以启动 AI 驱动的代码编辑会话,在该会话中,您可以快速迭代代码更改。根据您的提示,Copilot 编辑会建议在您的工作区中跨多个文件进行代码更改。这些编辑会直接在编辑器中应用,因此您可以在周围代码的完整上下文中快速就地查看它们。

Copilot 编辑非常适合迭代多个文件中的大型更改。它将 Copilot 聊天的对话流程和内联聊天的快速反馈结合在一起,形成一种体验。在侧边进行持续的、多轮的聊天对话,同时受益于内联代码建议。

只需三个步骤即可开始使用 Copilot 编辑

  1. 通过从“聊天”菜单中选择打开 Copilot 编辑来启动编辑会话,或按 ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I)

    Screenshot showing the Copilot menu in the Command Center, highlighting the Open Edit Session item

  2. 将相关文件添加到工作集,以向 Copilot 指示您要处理的文件。

  3. 输入提示,告诉 Copilot 您要进行的编辑!例如,向所有页面添加一个简单的导航栏使用 vitest 而不是 jest

在我们的文档中获取有关 Copilot 编辑 的更多详细信息。立即试用,并通过 我们的问题提供您的反馈!

在次要侧栏中聊天

“聊天”视图的新默认位置是次要侧栏。通过使用次要侧栏,您可以随时打开聊天,同时仍然可以使用其他视图,如“文件资源管理器”或“源代码管理”。这为您在 VS Code 中提供了更集成的 AI 体验。您可以使用 ⌃⌘I (Windows, Linux Ctrl+Alt+I) 键盘快捷方式快速进入聊天。

Chat view in its new location after having moved.

随着命令中心旁边新的“聊天”菜单的引入,只需单击一下即可打开带有聊天的次要侧栏

“聊天”菜单让您可以访问 Copilot 聊天最常见的任务。如果您希望隐藏此菜单,则提供了一个新设置 chat.commandCenter.enabled

Chat menu in the Command Center.

注意:如果您之前安装了 GitHub Copilot,则会在您之前聊天所在的位置显示一个视图,该视图使您可以将“聊天”视图恢复到旧位置,如果这对您来说效果更好。

Chat view in its old location showing that Chat has moved to the Secondary Side Bar.

Copilot 代码审查

Copilot 代码审查当前处于预览阶段

借助 Visual Studio Code 中的 GitHub Copilot 代码审查,您现在可以在编写代码时获得快速、AI 驱动的反馈,或者在推送之前请求对所有更改进行审查。Visual Studio Code 中的 GitHub Copilot 代码审查目前处于预览阶段。试用它并通过 我们的问题提供反馈。

在 VS Code 中有两种使用 Copilot 代码审查的方式

  • 审查选择:对于快速审查,请在编辑器中选择代码,然后从编辑器上下文菜单中选择 Copilot > 审查和注释,或使用命令面板中的 GitHub Copilot:审查和注释命令。(此功能处于预览阶段。)

  • 审查更改:对于所有未提交更改的更深入审查,请在 源代码管理 视图中选择 Copilot 代码审查 按钮,您也可以在 GitHub.com 上的拉取请求中执行此操作。(加入等候名单,向所有 Copilot 订阅者开放)

    Request review of uncommited changes

Copilot 的反馈以注释的形式显示在编辑器中,附加到您的代码行。如果可能,注释包括可操作的代码建议,您可以在一个操作中应用这些建议。

Screenshot showing a comment reviewing a code selection

要了解有关 Copilot 代码审查的更多信息,请访问 GitHub 代码审查文档

Copilot 对代码选择的快速审查可以提供与您的团队或项目的特定实践相符的反馈,前提是您提供了正确的上下文。当使用自定义审查说明审查选择时,您可以通过 github.copilot.chat.reviewSelection.instructions 设置定义这些特定要求。与代码生成和测试生成指令类似,您可以直接在设置中定义指令,也可以将它们存储在单独的文件中并在设置中引用它。

以下代码段显示了审查指令的示例

  "github.copilot.chat.reviewSelection.instructions": [
    {
      "text": "Logging should be done with the Log4j ."
    },
    {
      "text": "Always use the Polly library for fault-handling."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md 文件内容示例

Private fields should start with an underscore.

A file can only contain one class declaration.

自动聊天参与者检测

设置chat.experimental.detectParticipant.enabled

GitHub Copilot 有几个内置的聊天参与者,如 @workspace,您可能还安装了其他扩展,这些扩展也贡献了聊天参与者。

为了更容易地使用自然语言的聊天参与者,Copilot 聊天会在可能的情况下自动将您的问题路由到合适的参与者或聊天命令。

如果自动选择的参与者不适合您的问题,您仍然可以选择聊天响应顶部的重新运行而不链接,将您的问题重新发送给 Copilot。

Screenshot of Chat view that shows how the '@workspace' participant is automatically detected.

本月,我们还添加了一个操作,让您可以按请求跳过此检测行为。当您输入聊天提示时,默认操作是发送和调度,其中包括参与者检测。如果您选择发送,则请求会直接发送到 Copilot 聊天,而不会自动调度到聊天参与者。

The list of available "send" commands in the chat view.

您还可以使用 chat.experimental.detectParticipant.enabled 设置完全禁用自动参与者检测。

控制当前编辑器上下文

Copilot Chat 始终会自动将您当前的选择或当前可见的代码作为上下文包含在您的聊天请求中。大型语言模型 (LLM) 通常很擅长理解一段上下文是否相关。但有时,当您提出与当前编辑器无关的问题时,包含此上下文可能会影响模型解释您问题的方式。

我们现在在聊天输入中显示一个特殊的附件控件,该控件会提示有关编辑器上下文的信息,并使您能够切换是否包含编辑器上下文。

The current editor context control in the chat input, which shows that the context is not included.

编辑器上下文的行为没有变化。当活动编辑器有选择时,则仅包含选择的内容。否则,仅包含滚动到视图中的代码。您仍然可以使用回形针按钮或在聊天提示中键入 # 来附加其他文件或完整文件。

Copilot Chat 的一个常见用例是询问有关工作区中代码的问题,例如使用 /tests 为选定的代码生成新的单元测试,或使用 @workspace 在您的项目中查找特定的类或函数。在这个里程碑中,我们为 Copilot 在聊天响应中提到的任何工作区符号添加了增强的链接。这些符号链接可以帮助您更好地理解 Copilot 的响应并了解更多关于其中使用的符号的信息。

符号链接在响应中以小药丸的形式呈现,就像我们上个里程碑添加的文件链接一样。要开始了解有关符号的更多信息,只需选择符号链接即可跳转到该符号的定义。

您还可以将鼠标悬停在符号链接上,以查看符号在哪个文件中定义。

Hovering over a symbol link to see the file it's defined in.

要开始更详细地探索符号,只需右键单击符号链接,调出包含选项的上下文菜单,例如转到实现转到引用

Using the context menu on a symbol link to learn more about a symbol.

基本符号链接应适用于任何支持转到定义的语言。更高级的 IntelliSense 选项(如转到实现)也需要支持该语言。请务必安装语言扩展,以便为 Copilot 响应中使用的任何编程语言获得最佳的符号支持。

在问题悬停中使用 Copilot 操作进行修复

当您将鼠标悬停在编辑器中的问题上时,现在会包含一个使用 Copilot 修复问题的操作。此操作适用于具有可用修复的问题,并且修复由 Copilot 生成。

The Problem hover showing a Fix using Copilot action.

工作区索引

@workspace 让您可以询问有关当前项目中代码的问题。这是通过 GitHub 的代码搜索 或 VS Code 构建的智能本地索引实现的。在这个里程碑中,我们添加了一些 UI 元素,让您可以了解此工作区索引的使用方式。

首先,新的 GitHub Copilot: 构建本地工作区索引 命令让您可以显式开始索引当前工作区。此索引通常在您第一次提出 @workspace 问题时自动启动。使用新命令,您可以随时开始索引。该命令还支持索引更大的工作区,当前最多支持 2000 个文件(不包括忽略的文件,例如 node_modulesout 目录)。

在构建索引时,我们现在还在状态栏中显示进度项。

A status bar item showing the progress of indexing the current workspace.

索引包含数百个文件的工作区可能需要一些时间。如果您在构建索引时尝试提出 @workspace 问题,Copilot 将尝试通过使用可以更快构建的更简单的本地索引来快速响应,而不是等待。当发生这种情况时,我们现在会在响应中显示警告。

A warning showing on a response telling the user the Copilot index is being constructed.

请注意,即使在这种情况下 Copilot 使用了更简单的本地索引而不是更高级的索引,它仍然能够回答问题。情况通常如此,尽管更模糊或复杂的问题可能只有在构建了更智能的索引后才能回答。还要记住,如果您的工作区由 GitHub 存储库支持,我们可以改用 GitHub 的代码搜索 来回答问题。这意味着使用代码搜索而不是更简单的本地索引。

聊天后续改进

设置github.copilot.chat.followUps

为了在聊天视图中为聊天对话留出更多空间,我们使后续提示更加简洁,并且默认情况下,它们仅在第一轮中显示。配置 github.copilot.chat.followUps 设置以更改后续提示的显示时间

  • firstOnly (默认) - 后续提示仅在第一轮中显示
  • always - 后续提示始终显示
  • never - 禁用后续提示

在语义搜索中按相关性排序(实验性)

设置github.copilot.chat.search.semanticTextResults

在上一个里程碑中,我们引入了使用 Copilot 执行语义搜索以获得与您的查询语义相关的搜索结果的功能。我们现在通过按相关性对搜索结果进行排序来改进搜索结果。来自更相关代码段的关键字匹配被认为总体上更相关。

工作台

多个 GitHub 帐户

将上个月的功能升级为默认行为,现在可以在 VS Code 中同时登录到多个 GitHub 帐户。

Multiple GitHub Accounts in the Account menu.

以下是您可能需要多个帐户的几种情况

  • 帐户 1 用于设置同步,将帐户 2 用于 GitHub 拉取请求扩展
  • 帐户 1 用于 GitHub 扩展(用于推送),将帐户 2 用于 GitHub Copilot

要使用此功能,只需触发登录操作(通过内置功能(如设置同步)或通过扩展),系统将为您提供登录到其他帐户的选项。此功能还与帐户首选项快速选择很好地搭配使用,如果您需要在稍后阶段更改所选帐户,可以使用它。

虽然大多数内容应该可以继续与您现有的扩展一起使用,但某些行为可能还不能完全适应这种多帐户世界。如果您认为有改进的余地,请在这些扩展上打开问题。借助相对较新的 vscode.authentication.getAccounts('github') API,扩展具有处理多个帐户的强大功能。

更改帐户首选项时添加其他帐户

上个月,我们引入了帐户首选项快速选择,如果您因任何原因需要更改扩展的偏好帐户,该选择非常有用。

我们收到的反馈之一是希望有一种简单的方法来添加尚未登录的帐户。在这个里程碑中,我们在快速选择中引入了一个新项,使您能够做到这一点。使用使用新帐户...项启动身份验证流程并一步将帐户首选项设置为该帐户。

Use a new account option in the account preference Quick Pick.

实验性和预览设置的设置编辑器指示器

以前,从查看设置编辑器中并不总是清楚哪些设置是实验性或预览性的。为了突出显示实验性和即将推出的功能,设置编辑器现在在实验性和预览设置旁边显示指示器。您可以在设置编辑器搜索框中键入 @tag:experimental@tag:preview 以相应地筛选设置。

扩展作者可以将“experimental”或“preview”标签添加到其设置中,以在设置编辑器中显示相应的指示器。

主题:浅粉色 (在 vscode.dev 上预览)

更多配置文件图标

在此里程碑中,我们为配置文件添加了更多图标。您现在可以从更广泛的图标中进行选择以自定义您的配置文件。

Image showing all available profile icons, highlighting the newly added icons.

在面板中查看图标

在工作台面板区域中,视图通常以标题栏中的标签形式显示(例如,TERMINALOUTPUT)。但是,在较小的屏幕上,这些标签可能会超出可用空间,导致某些视图溢出到下拉菜单中。

为了解决这个问题,我们添加了一个新设置:workbench.panel.showLabels。禁用后,视图将显示为图标而不是标签,从而节省水平空间并减少溢出。

workbench.panel.showLabels:true

Panel area showing the labels for each panel.

workbench.panel.showLabels:false

Panel area showing an icon for each panel and no label.

编辑器

出现次数突出显示延迟

在此里程碑中,我们引入了设置 editor.occurrencesHighlightDelay,让您可以控制在编辑器中突出显示出现次数之前的延迟。降低此延迟值可以使编辑器在处理语义突出显示时感觉更灵敏。

Web 版 VS Code

Web 版 VS Code 支持本地文件事件

当使用 Chrome 或 Edge 129 及更高版本时,使用本地文件夹打开 https://insiders.vscode.dev 现在支持文件事件。如果您在浏览器外部更改打开的工作区的文件和文件夹,这些更改将立即反映在浏览器内部。

此功能利用了新的 FileSystemObserver 接口,该接口被提议作为 Web 的新 API。

对扩展的贡献

Copilot 扩展展示

在这个里程碑中,团队致力于构建多个扩展,以展示 VS Code 中 Copilot 的可扩展性。这些扩展演示了以下功能:

尝试这些扩展,看看如何在您自己的扩展中扩展 Copilot。

扩展 链接
GitHub 拉取请求 市场
用于 Copilot 的网络搜索 市场源代码
使用 Copilot 生成 MermAId 图 市场
用于 Copilot 的数据分析 市场源代码
VS Code 指挥官 市场
Copilot 预览版的 Vision 市场

GitHub 拉取请求

0.100.0 版本的 GitHub 拉取请求 扩展添加了 Copilot 集成

  • 在聊天视图中使用 @githubpr 聊天参与者来搜索问题、总结问题/PR,并为问题建议修复。@githubpr 使用多种语言模型工具来实现此目的。
  • 还有一个新的通知视图,显示 GitHub 通知,并提供使用 Copilot 对其进行优先级排序的操作。

要尝试所有功能,您可以设置以下设置

  • githubPullRequests.experimental.chat
  • githubPullRequests.experimental.notificationsView
使用 Copilot 进行问题搜索

新的 @githubpr 聊天参与者可以在 GitHub 上搜索问题。

Copilot issue search for most open bugs.

显示问题时,@githubpr 会显示一个 Markdown 表格,并尝试根据搜索选择最佳的列进行显示。

Copilot issue search for closed October issues.

使用 Copilot 进行总结和修复

现在,问题视图中列出的每个问题都有一个新操作,使用 Copilot 总结,该操作会打开聊天面板并总结所选问题。我们还添加了另一个操作,使用 Copilot 修复,该操作会总结所选问题并使用工作区上下文为其建议修复方案。

使用 Copilot 进行通知优先级排序(实验性)

在这个里程碑中,我们添加了一个实验性的通知视图,列出您在各个存储库中的未读通知。默认情况下,通知按最近更新的降序排序,但您可以使用视图标题的 ... 菜单中的 使用 Copilot 按优先级排序 操作,让 Copilot 对通知进行优先级排序。选择每个通知会触发一个操作,使用 Copilot 总结通知。该视图还包含易于访问的操作,可以将通知标记为已读,或在 GitHub.com 上打开通知。

Notifications View

用于 Copilot 的网络搜索

此扩展展示了

  • 聊天参与者 & 工具 API
  • prompt-tsx
  • 如何利用 GitHub Copilot 提供的语言模型

源代码 在此处的 GitHub 上可用

描述

直接在 Copilot 中获取来自网络的最新和最相关的信息。

这由两个不同的搜索引擎之一提供支持,由 websearch.preferredEngine 进行配置

作为用户,您需要从这些服务之一获取 API 密钥才能使用此扩展。首次使用时,它会要求您输入该密钥,并使用 VS Code 的内置密钥存储对其进行存储,并且也可以像管理 GitHub 帐户一样通过 VS Code 的身份验证堆栈进行管理。

聊天参与者

此扩展贡献了 @websearch 聊天参与者,它能够处理可能需要来自互联网的实时信息的问题。您可以使用 @websearch when did Workspace Trust ship in vscode? 手动调用它

The question "when did Workspace Trust ship in vscode" and the answer showing the references and details.

聊天工具

此扩展还贡献了 #websearch 聊天语言模型工具,它与参与者类似,但对于在其他聊天参与者中提供来自网络的上下文很有用。例如

  • @workspace /new #websearch create a new web app written in Python using the most popular framework

The question "create a new web app written in Python using the most popular framework" using the websearch variable with /new. The result is a project using Django.

此外,如果您正在开发自己的聊天参与者或工具,则可以通过 vscode.lm.invokeTool API 使用此聊天工具。

使用 Copilot 生成 MermAId 图

vscode-mermAId (vscode:extension/ms-vscode.copilot-mermaid-diagram) 扩展为 GitHub Copilot 贡献了一个新的聊天参与者,以使用 Mermaid(一种受 Markdown 启发的图表和绘图工具)为您的代码构建和修改可视化效果。

创建和渲染图表

通过聊天对话创建任何类型的 Mermaid 支持的图表,并使用 /iterate 斜杠命令来优化图表。斜杠命令可用于特定图表,为模型提供额外的指导。

为某些图表类型(如流程图)添加链接,以指向收集用于构建图表的参考资料。

Mermaid 可视轮廓视图

打开可视轮廓视图,以从活动编辑器动态生成图表。您可以进入聊天以进行更精细的控制。

聊天工具

该扩展贡献了一个工具,用于收集文件或整个工作区中的符号信息,并且在安装此扩展时可以被其他聊天参与者使用。

用于 Copilot 的数据分析

用于 Copilot 的数据分析扩展为数据科学领域的人员提供支持。从清理 .csv 文件,到通过利用不同的统计度量、图表和预测模型来执行更高级的数据分析,@data 聊天参与者通过为数据任务提供量身定制的见解和交互性,帮助做出更高级和明智的决策。

该扩展贡献了一个工具,其中 LLM 可以通过使用 Pyodide 来请求执行 Python 代码,并获取相关 Python 代码执行的结果。它还能够在出现错误的情况下智能地重试,以获得更好或更合适的执行结果。您还可以将用于执行分析(或生成可视化)的代码导出到 Jupyter Notebook 或 Python 文件中。

您可以从 市场 下载扩展,源代码 在此处的 GitHub 上可用

数据分析和可视化
  • 给定一个 CSV 文件,输入一个提示,例如 Analyze the file #<file name> 或编写更具体的提示(请参阅下面的录制)
  • 提供后续提示以请求生成可视化效果,例如图表、绘图等

导出用于执行数据分析的代码
  • 可以查看用于执行分析和生成可视化效果的 Python 代码
  • 代码可以导出到 Jupyter Notebook 或 Python 文件中

CSV 文件的编辑器和资源管理器集成
  • 右键单击 CSV 文件以对其进行分析
  • 打开 CSV 文件,然后使用 Copilot 图标分析文件

VS Code 指挥官扩展

VS Code 指挥官扩展 (vscode:extension/ms-vscode.vscode-commander) 充当您在 VS Code 中的个人助理。这个强大的工具使您可以通过使用对话式自由文本来配置 VS Code 环境。借助 VS Code 指挥官,您可以

  • 发现和探索各种设置和命令
  • 根据您的需求定制开发环境

这些操作可以通过简单直观的聊天界面执行,从而比以往更容易地管理 VS Code 配置。

Copilot 预览版的 Vision 扩展

Copilot 预览版的 Vision 扩展 (vscode:extension/ms-vscode.vscode-copilot-vision) 使您可以直接附加图像作为上下文输入,丰富对话并启用更动态的、视觉支持的响应。此扩展最终将被弃用,转而支持 Github Copilot Chat 中的内置图像流。

聊天中的 Vision

现在,您可以使用自己的 OpenAI、Azure OpenAI、Anthropic 或 Gemini 密钥在聊天视图中体验图像附件流。开始使用:轻松地从剪贴板附加图像或直接将其拖到聊天中。

Screenshot of a chat exchange. A user asks for HTML and CSS for a landing page. The response provides a basic HTML structure with a header, navigation links (Home, About, Contact), and a link to an external CSS file.

主题:蓝宝石(在 vscode.dev 上预览)

使用快速修复的 Vision

此外,您可以使用提供的代码操作为 markdown、HTML、JSX 或 TSX 文档中的图像生成或优化替代文本,从而简化合并描述性文本的过程,以获得更好的上下文和可访问性。替代文本快速修复适用于工作区中的图像和图像 URL。

An example markdown document displays a quick fix feature for generating alt text, resulting in the automatic insertion of an alt tag and a value. The user is then prompted with a different quick fix to refine the alt text using an input box. After the user enters and submits their refined description, the alt text is updated accordingly.

此扩展使用 ChatReferenceBinaryData 建议的 API。请随意查看源代码中如何使用它的示例,在此处的 GitHub 上可用

Python

原生 REPL 变量视图

原生 Python REPL 现在为内置的变量视图提供最新的变量。这使您可以在从文件或通过 REPL 输入框执行代码时深入了解解释器的状态。

使用 Pylance 生成文档字符串

现在,您可以使用 Pylance 的文档字符串模板生成功能更方便地为 Python 代码生成文档!您可以通过键入 """'''、按 Ctrl+Space 或选择灯泡来调用生成文档字符串代码操作,从而为类或方法生成文档字符串模板。生成的文档字符串包括函数描述、参数、参数类型、返回和返回类型的字段。

此功能目前处于实验性设置之后,但我们期待尽快将其设为默认体验。您可以立即通过启用 python.analysis.supportDocstringTemplate 设置来尝试它。

折叠所有文档字符串

文档字符串非常适合为代码提供上下文和解释,但有时您可能希望折叠它们以专注于代码本身。现在,您可以使用新的Pylance:折叠所有文档字符串命令更轻松地执行此操作,该命令也可以绑定到您选择的键绑定。要展开它们,请使用Pylance:展开所有文档字符串命令。

改进的导入建议

Pylance 的强大功能之一是它能够提供自动导入建议。默认情况下,Pylance 会从符号定义的位置提供导入建议,但您可能希望它从符号被导入(即别名化)的文件中导入。通过新的 python.analysis.includeAliasesFromUserFiles 设置,您现在可以控制 Pylance 是否在其自动导入建议或添加导入快速修复中包含用户文件中的别名符号。

请注意,启用此设置可能会对性能产生负面影响,尤其是在大型代码库中,因为 Pylance 可能需要索引更多符号并监控更多文件的更改,这可能会增加资源使用量。

实验性 AI 代码操作:实现抽象类

现在,您可以通过新的实验性代码操作来实现抽象类,从而获得 AI 和静态分析的最佳效果!此功能需要 PylanceGitHub Copilot 扩展。要尝试此功能,您可以在定义继承自抽象类的类时选择 使用 Copilot 实现所有继承的抽象类 代码操作。

您可以通过在用户设置中设置 "python.analysis.aiCodeActions": {"implementAbstractClasses": false} 来禁用此功能。

扩展编写

语言模型工具

我们已经完成了 LanguageModelTool API!此 API 使聊天扩展能够通过将语言模型连接到外部数据源或执行操作来构建更强大的体验。该 API 主要包含两个部分

  1. 扩展注册工具的能力。工具是一段旨在供语言模型使用的功能。例如,读取文件的 Git 历史记录。当使用 lm.registerTool 方法注册工具时,其他扩展也可以在 lm.tools 列表中访问它。这将使聊天扩展能够通过共享工具的生态系统与其他扩展无缝集成。

  2. 语言模型支持工具的机制,例如扩展在发出请求时传递工具、语言模型请求调用工具以及扩展将工具调用的结果传回。

语言模型工具的使用很复杂,此 API 并未隐藏这种复杂性。如果您想注册工具或在聊天参与者中使用工具,我们建议您从 扩展示例 开始。

聊天参与者检测

我们已经完成了聊天参与者检测的 API,这允许 GitHub Copilot 自动选择您的聊天参与者或参与者命令来处理用户的问题。请查看 我们的文档 以获取详细的教程和建议。

VS Code 语音

VS Code 语音扩展已更新到 Azure 语音 SDK 的 8 月版本,并附带用于语音转文本识别的较新模型。对于 VS Code 中的语音转文本集成,例如 Copilot Chat,您应该会看到此更新的改进结果。

注释线程 collapsibleState

可以使用新的 CommentThread.collapsibleState 属性更改 CommentThread 的展开/折叠状态,即使在线程已显示之后也是如此。以前,此属性仅在首次显示注释线程时才会被尊重。

欢迎视图中的 Codicon

欢迎视图现在支持呈现 codicon 的功能。您可以使用欢迎视图中常用的 $(icon-name) 来实现此操作。

A sample welcome view showing the use of text, links, buttons, and codicons.

聊天参与者访问模型选择器

您可能已经注意到聊天视图中的模型选择器,它允许您选择用于聊天请求的模型。

Copilot model picker control in the Chat view enables switching to another language model.

您的聊天参与者扩展需要采用一个新的 API 才能使用此模型选择器。我们刚刚完成了 ChatRequest 对象上的新 model 属性,该属性将被设置为选择器中模型的 LanguageModelChat 实例。您可以使用此属性而不是 lm.selectChatModels 方法。如果您的扩展想要使用除所选模型之外的特定模型,您仍然可以使用 lm.selectChatModels

预览功能

TypeScript 5.7

我们一直在改进对即将发布的 TypeScript 5.7 版本的支持。有关详细信息,请查看 TypeScript 5.7 beta 博客文章TypeScript 5.7 计划

要开始使用 TypeScript 5.7 的预览版本,请安装 TypeScript Nightly 扩展

在 JavaScript 和 TypeScript 中粘贴时更新导入

是否厌倦了在文件之间移动代码后必须添加导入?试试我们在粘贴时更新导入的实验性支持!当您在编辑器之间复制和粘贴代码时,VS Code 会在粘贴代码时自动添加导入。

请注意,它不仅添加了导入,还为粘贴的代码中使用的本地变量添加了新的导出!

要立即尝试此功能,请确保您使用的是 TypeScript 5.7+。然后启用 javascript.experimental.updateImportsOnPaste/typescript.experimental.updateImportsOnPaste。目前,仅支持在同一 VS Code 窗口中的文本编辑器之间粘贴时使用此功能。

提议的 API

用于图像附件的聊天参考二进制数据

现在,如果存在使用 ChatReferencebinaryData 建议的 API 的扩展,则允许将图像 (pngjpegbmpgiftiff) 粘贴到聊天中。

export class ChatReferenceBinaryData {
  /**
   * The MIME type of the binary data.
   */
  readonly mimeType: string;

  /**
   * Retrieves the binary data of the reference.
   * @returns A promise that resolves to the binary data as a Uint8Array.
   */
  data(): Thenable<Uint8Array>;

  /**
   * @param mimeType The MIME type of the binary data.
   * @param data The binary data of the reference.
   */
  constructor(mimeType: string, data: () => Thenable<Uint8Array>);
}

扩展作者可以在通过 request.references 创建聊天处理程序后访问此内容,当通过拖放或从快速选择器附加图像时,该内容可以是 URI,而对于粘贴的图像,该内容将是 ChatReferenceBinaryData

工程

LLM 的提示构建库

本月,我们开源了 @vscode/prompt-tsx 库,这是我们在过去一年中开发并在 Copilot Chat 中用于制作语言模型提示的库。该库使开发人员可以使用类似于 React 的 TSX/JSX 语法创建提示,并包含各种工具来充分利用提示的令牌预算。

删除 AMD 代码并在 Web 中更多地使用 ESM

我们从我们的源代码中删除了 AMD(异步模块定义)的最后痕迹,主要是从我们仍然保留的构建脚本中删除,以防需要在恢复版本中使用 AMD。

此外,https://vscode.dev 现在也仅使用 100% 的 ESM(ECMAScript 模块)运行。

迁移到 ESLint 9

我们已更新 VS Code 的主存储库和我们所有的 扩展示例 以使用 ESLint 9。这包括迁移我们所有的 ESLint 配置以使用现代的 平面配置

Electron 32 更新

在此里程碑中,我们将 Electron 32 更新推广给稳定版本上的用户。此更新附带 Chromium 128.0.6613.186 和 Node.js 20.18.0。我们要感谢所有在内部版本上自行托管并提供早期反馈的人。

值得注意的修复

  • 177046 在扩展面板中搜索后会崩溃

感谢

最后但同样重要的是,非常感谢 VS Code 的贡献者。

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-docs 的贡献

vscode-js-debug 的贡献

vscode-languageserver-node 的贡献

  • @DanTup (Danny Tuppeny): 添加对 CompletionList "applyKind" 的支持,以控制如何组合默认值和每个项目的 commitCharacters/data PR #1558

vscode-mypy 的贡献

vscode-vsce 的贡献

language-server-protocol 的贡献

lsprotocol 的贡献

tolerant-php-parser 的贡献