2024 年 10 月 (版本 1.95)
安全更新:以下扩展有安全更新:ms-python.python 和 ms-vscode-remote.remote-ssh。
更新 1.95.1:此更新解决了这些问题。
更新 1.95.2:此更新解决了这些问题。
更新 1.95.3:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎阅读 Visual Studio Code 2024 年 10 月版本。此版本中有许多我们希望您会喜欢的更新,其中一些主要亮点包括
- Copilot 编辑 - 跨多个文件快速迭代大型更改
- 辅助侧边栏中的 Copilot Chat - 在工作时保持 Copilot Chat 打开并随时可用
- 多个 GitHub 账户 - 在 VS Code 中同时登录多个 GitHub 账户
- Copilot 代码审查 - 对未提交的更改进行快速审查或深度审查
- Pylance 文档字符串 - 为类或方法生成文档字符串模板
- 预览设置指示器 - 在设置编辑器中查看实验性设置和预览设置
- Copilot 可扩展性 - 展示 VS Code 中的 Copilot 可扩展性
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。Insiders 版本:想尽快试用新功能?您可以下载每晚发布的 Insiders 版本,并在最新更新发布后立即试用。
GitHub Copilot
Copilot 功能可能会经历不同的早期访问阶段,这些阶段通常通过设置启用和配置。
-
实验性 - 查看实验性功能 (
@tag:experimental
)此设置控制一项正在积极开发的新功能,该功能可能不稳定。它可能会更改或删除。
-
预览版 - 查看预览功能 (
@tag:preview
)此设置控制一项仍在完善但已可使用的新功能。欢迎提供反馈。
使用 Copilot 编辑开始代码编辑会话
Copilot 编辑目前处于预览阶段
设置:github.copilot.chat.edits.enabled
借助 Copilot 编辑,您可以开始一个 AI 驱动的代码编辑会话,从而快速迭代代码更改。根据您的提示,Copilot 编辑会在您的工作区中跨多个文件提出代码更改。这些编辑会直接应用于编辑器中,因此您可以在原地快速查看它们,并获得周围代码的完整上下文。
Copilot 编辑非常适合跨多个文件迭代大型更改。它将 Copilot Chat 的对话流和 Inline Chat 的快速反馈结合在一起,提供统一的体验。您可以进行持续的多轮聊天对话,同时受益于内联代码建议。
仅需三步即可开始使用 Copilot 编辑
-
从 Chat 菜单中选择 打开 Copilot 编辑,或按下 即可开始编辑会话。
-
将相关文件添加到工作集中,以指示 Copilot 您要处理哪些文件。
-
输入提示以告诉 Copilot 您想要进行的编辑!例如,
为所有页面添加一个简单的导航栏
或使用 vitest 代替 jest
。
在我们的文档中获取有关Copilot 编辑的更多详细信息。立即试用并通过我们的问题跟踪器提供反馈!
在辅助侧边栏中聊天
Chat 视图的新默认位置是辅助侧边栏。通过使用辅助侧边栏,您可以随时打开聊天,同时仍可使用文件资源管理器或源代码管理等其他视图。这为您在 VS Code 中提供了更集成的 AI 体验。您可以使用键盘快捷键 ⌃⌘I (Windows、Linux Ctrl+Alt+I) 快速打开聊天。
随着命令中心旁边新增的 Chat 菜单的推出,只需单击一下即可调出带有聊天的辅助侧边栏
聊天菜单让您可以使用 Copilot Chat 的最常见任务。如果您希望隐藏此菜单,则提供了新设置 chat.commandCenter.enabled。
注意:如果您之前安装了 GitHub Copilot,则会在您之前使用 Chat 的位置显示一个视图,如果您觉得旧位置更适合您,则该视图可让您将 Chat 视图恢复到旧位置。
Copilot 代码审查
Copilot 代码审查目前处于预览阶段
借助 Visual Studio Code 中的 GitHub Copilot 代码审查,您现在可以在编写代码时获得快速、AI 驱动的代码反馈,或者在推送之前请求审查所有更改。Visual Studio Code 中的 GitHub Copilot 代码审查目前处于预览阶段。请试用并通过我们的问题跟踪器提供反馈。
在 VS Code 中使用 Copilot 代码审查有两种方式
-
审查选定内容:要进行快速审查,请在编辑器中选择代码,然后从编辑器上下文菜单中选择 Copilot > 审查和评论,或者使用命令面板中的 GitHub Copilot: 审查和评论 命令。(此功能处于预览阶段。)
-
审查更改:要对所有未提交的更改进行深度审查,请在源代码管理视图中选择 Copilot 代码审查按钮,您也可以在 GitHub.com 上的拉取请求中执行此操作。(加入候补列表,对所有 Copilot 订阅者开放)
Copilot 的反馈会作为注释显示在编辑器中,并附加到您的代码行上。在可能的情况下,注释会包含可操作的代码建议,您可以通过一次操作应用这些建议。
要了解有关 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 Chat 将在可能的情况下自动将您的问题路由到合适的参与者或聊天命令。
如果自动选择的参与者不适合您的问题,您仍然可以选择聊天响应顶部的不使用此功能重新运行链接,将您的问题重新发送给 Copilot。
本月,我们还添加了一个操作,允许您按请求跳过此检测行为。当您输入聊天提示时,默认操作是发送并分派,其中包括参与者检测。如果您选择发送,请求将直接发送到 Copilot Chat,并且不会自动分派给聊天参与者。
您还可以通过 chat.experimental.detectParticipant.enabled 设置完全禁用自动参与者检测。
控制当前编辑器上下文
Copilot Chat 始终自动将您当前选定的内容或当前可见的代码作为上下文包含在您的聊天请求中。大型语言模型 (LLM) 通常善于理解一段上下文是否相关。但有时,当您提出的问题与当前编辑器无关时,包含此上下文可能会影响模型解释您问题的方式。
我们现在在聊天输入中显示一个特殊的附件控件,它提供有关编辑器上下文的提示,并允许您切换是否包含编辑器上下文。
编辑器上下文的行为没有变化。当活动编辑器有选择内容时,只包含选择内容。否则,只包含滚动到视图中的代码。您仍然可以通过使用回形针按钮或在聊天提示中键入 #
来附加其他文件或整个文件。
交互式工作区符号链接
Copilot Chat 的一个常见用例是询问工作区中的代码,例如使用 /tests
为选定的代码生成新的单元测试,或者询问 @workspace
在项目中查找特定的类或函数。在这个里程碑中,我们为 Copilot 在聊天响应中提及的任何工作区符号添加了增强链接。这些符号链接可以帮助您更好地理解 Copilot 响应并了解其中使用的符号。
符号链接在响应中呈现为小药丸,就像我们上一个里程碑中添加的文件链接一样。要开始了解更多关于某个符号的信息,只需选择该符号链接即可跳转到该符号的定义
您也可以将鼠标悬停在符号链接上,查看该符号在哪个文件中定义
要开始更详细地探索符号,只需右键单击符号链接即可调出上下文菜单,其中包含转到实现和转到引用等选项
基本符号链接应适用于支持“转到定义”的任何语言。更高级的 IntelliSense 选项(例如“转到实现”)也需要该语言的支持。请务必安装语言扩展以获得 Copilot 响应中使用的任何编程语言的最佳符号支持。
修复问题悬停中使用 Copilot 操作的问题
当您将鼠标悬停在编辑器中的问题上时,它现在包含一个使用 Copilot 修复问题的操作。此操作适用于有可用修复的问题,并且修复由 Copilot 生成。
工作区索引
@workspace
允许您询问有关当前项目中代码的问题。这可以通过 GitHub 的代码搜索或 VS Code 构建的智能本地索引来实现。在此里程碑中,我们添加了更多 UI 元素,让您了解此工作区索引的使用方式。
首先,新的 GitHub Copilot: 构建本地工作区索引命令允许您明确启动当前工作区的索引。此索引通常在您第一次提出 @workspace
问题时自动启动。使用新命令,您可以随时启动索引。该命令还支持对更大的工作区进行索引,目前最多支持 2000 个文件(不包括被忽略的文件,例如 node_modules
或 out
目录)。
索引构建过程中,我们现在还在状态栏中显示一个进度项
索引包含数百个文件的工作区可能需要一些时间。如果您在构建索引时尝试提出 @workspace
问题,Copilot 将不会等待,而是尝试使用可以更快构建的更简单的本地索引来快速响应。当这种情况发生时,我们现在在响应中显示警告
请注意,在这种情况下,即使 Copilot 使用了更简单的本地索引而不是更高级的索引,它仍然能够回答问题。这通常是这样,尽管更模糊或复杂的问题可能只有在构建了更智能的索引后才能回答。还要记住,如果您的工作区由 GitHub 存储库支持,我们可以转而使用 GitHub 的代码搜索来回答问题。这意味着使用代码搜索而不是更简单的本地索引。
聊天跟进改进
设置:github.copilot.chat.followUps
为了在 Chat 视图中为聊天对话留出更多空间,我们使后续提示更简洁,并且默认情况下,它们只在第一轮出现。配置 github.copilot.chat.followUps 设置以更改后续提示的出现时间
firstOnly
(默认)- 后续提示仅在第一轮出现always
- 后续提示始终出现never
- 禁用后续提示
语义搜索中按相关性排序(实验性)
设置:github.copilot.chat.search.semanticTextResults
在上一个里程碑中,我们引入了使用 Copilot 执行语义搜索的能力,以获取与您的查询语义相关的搜索结果。我们现在通过按相关性对搜索结果进行排序来改进它们。来自更相关代码片段的关键字匹配被认为整体上更相关。
工作台
多个 GitHub 账户
将上个月的功能升级为默认行为,现在可以在 VS Code 中同时登录多个 GitHub 账户。
以下是一些您可能需要多个账户的场景
- 将账户 1 用于设置同步,将账户 2 用于 GitHub 拉取请求扩展
- 将账户 1 用于 GitHub 扩展(用于推送),将账户 2 用于 GitHub Copilot
要使用此功能,只需触发登录操作(无论是使用设置同步等内置功能还是使用扩展),系统都会为您提供登录不同账户的选项。如果您稍后需要更改所选账户,此功能还与账户偏好快速选择完美搭配。
尽管大多数功能应继续与您现有的扩展程序配合使用,但某些行为可能尚未完全适应这种多账户世界。如果您认为有改进空间,请针对这些扩展程序提交问题。借助相对较新的 vscode.authentication.getAccounts('github')
API,扩展程序拥有强大的能力来处理多个账户。
更改账户偏好时添加其他账户
上个月,我们推出了账户偏好快速选择,如果您因任何原因需要更改用于扩展的首选账户,此功能会非常有用。
我们收到的反馈之一是希望有一种简单的方法来添加尚未登录的账户。在这个里程碑中,我们在快速选择中引入了一个新项目,使您能够做到这一点。使用使用新账户...项目可以一次性启动身份验证流程并将账户偏好设置为该账户。
设置编辑器中的实验性和预览设置指示器
以前,从设置编辑器中查看时,哪些设置是实验性或预览版并不总是很清楚。为了突出显示实验性和即将推出的功能,设置编辑器现在在实验性和预览设置旁边显示指示器。您可以在设置编辑器搜索框中键入 @tag:experimental
或 @tag:preview
以相应地筛选设置。
扩展作者可以为其设置添加“experimental”或“preview”标签,以在设置编辑器中显示相应的指示器。
主题:浅粉色(在 vscode.dev 上预览)
更多个人资料图标
在此里程碑中,我们为个人资料添加了更多图标。您现在可以从更广泛的图标中进行选择,以自定义您的个人资料。
在面板中查看图标
在工作台面板区域,视图通常在标题栏中显示为标签(例如,终端或输出)。但是,在较小的屏幕上,这些标签可能会超出可用空间,导致某些视图溢出到下拉菜单中。
为了解决此问题,我们添加了一个新设置:workbench.panel.showLabels。禁用后,视图将显示为图标而不是标签,从而节省水平空间并减少溢出。
workbench.panel.showLabels: true
workbench.panel.showLabels: false
编辑器
出现次数高亮延迟
在此里程碑中,我们引入了设置 editor.occurrencesHighlightDelay,让您能够控制编辑器中突出显示出现次数之前的延迟。降低此延迟值可以带来更具响应性的编辑器体验,尤其是在使用语义高亮显示时。
Web 版 VS Code
适用于 Web 的 VS Code 支持本地文件事件
从版本 129 开始,当使用 Chrome 或 Edge 时,通过本地文件夹打开 https://insiders.vscode.dev 现在支持文件事件。如果您在浏览器外部更改已打开工作区的文件和文件夹,这些更改会立即反映在浏览器内部。
此功能利用了新的 FileSystemObserver
接口,该接口被提议作为 Web 的新 API。
对扩展的贡献
Copilot 扩展展示
在此里程碑中,团队致力于构建多个扩展,以展示 VS Code 中的 Copilot 可扩展性。这些扩展展示了以下功能
- 聊天参与者和工具 API
- prompt-tsx
- 如何利用 GitHub Copilot 提供的语言模型
试用这些扩展,了解如何在您自己的扩展中扩展 Copilot。
扩展 | 链接 |
---|---|
GitHub 拉取请求 | 市场 |
Copilot 的 Web 搜索 | 市场,源代码 |
使用 Copilot 生成 MermAId 图表 | 市场 |
Copilot 数据分析 | 市场,源代码 |
VS Code Commander | 市场 |
Copilot 视觉预览 | 市场 |
GitHub 拉取请求
GitHub 拉取请求扩展的0.100.0 版本增加了 Copilot 集成
- 在 Chat 视图中使用
@githubpr
聊天参与者来搜索问题、总结问题/拉取请求以及为问题建议修复。@githubpr
使用多种语言模型工具来完成此操作。 - 还有一个新的通知视图,显示 GitHub 通知,并带有使用 Copilot 优先处理它们的动作。
要试用所有功能,您可以设置以下设置
使用 Copilot 搜索问题
新的 @githubpr
Chat 参与者可以在 GitHub 上搜索问题。
显示问题时,@githubpr
会显示一个 Markdown 表格,并尝试根据搜索结果选择最佳列来显示。
使用 Copilot 总结和修复
现在,问题视图中列出的每个问题都有一个新操作:使用 Copilot 总结,它会打开 Chat 面板并总结选定的问题。我们还添加了另一个操作:使用 Copilot 修复,它会总结选定的问题并使用工作区上下文为其建议修复。
使用 Copilot 优先处理通知(实验性)
在此里程碑中,我们添加了一个实验性的通知视图,列出了您在各个存储库中未读的通知。默认情况下,通知按最近更新的降序排序,但您可以使用视图标题的 ...
菜单中的使用 Copilot 按优先级排序操作,让 Copilot 优先处理通知。选择每个通知会触发一个使用 Copilot 总结通知的操作。该视图还包含易于访问的操作,用于将通知标记为已读或在 GitHub.com 上打开通知。
Copilot 的 Web 搜索
此扩展展示了
- 聊天参与者和工具 API
- prompt-tsx
- 如何利用 GitHub Copilot 提供的语言模型
源代码在此 GitHub 上可用。
描述
在 Copilot 中直接获取来自网络的最新和最相关的信息。
这由两个不同的搜索引擎之一提供支持,通过 websearch.preferredEngine 进行配置
作为用户,您需要从这些服务之一获取 API 密钥才能使用此扩展。首次使用时,它会向您请求该密钥并使用 VS Code 内置的秘密存储进行存储,并且可以通过 VS Code 的身份验证堆栈进行管理,就像管理您的 GitHub 账户一样。
聊天参与者
此扩展贡献了 @websearch
聊天参与者,它能够处理可能需要来自互联网的实时信息的问题。您可以使用 @websearch when did Workspace Trust ship in vscode?
手动调用它。
聊天工具
此扩展还贡献了 #websearch
聊天语言模型工具,它与参与者类似,但对于在其他聊天参与者中提供来自网络的上下文很有用。例如
@workspace /new #websearch 使用最流行的框架创建一个新的 Python Web 应用
此外,如果您正在开发自己的 Chat 参与者或工具,您可以通过 vscode.lm.invokeTool
API 使用此 Chat 工具。
使用 Copilot 生成 MermAId 图表
vscode-mermAId (vscode:extension/ms-vscode.copilot-mermaid-diagram
) 扩展为 GitHub Copilot 贡献了一个新的聊天参与者,可以使用 Mermaid(一个受 Markdown 启发的图表和图示工具)为您的代码构建和修改可视化。
创建并渲染图表
通过聊天对话创建任何类型的 Mermaid 支持的图表,并使用 /iterate
斜杠命令来优化图表。斜杠命令可用于特定图表,以向模型提供额外指导。
对于某些图表类型(如流程图),会添加链接以指向用于构建图表的参考。
Mermaid 可视化大纲视图
打开可视化大纲视图以从活动编辑器动态生成图表。您可以进入聊天进行更精细的控制。
聊天工具
该扩展贡献了一个工具,用于收集文件或整个工作区中的符号信息,并且在安装此扩展后,其他聊天参与者可以使用该工具。
Copilot 数据分析
Copilot 数据分析扩展为数据科学领域的人员赋能。从清理 .csv
文件,到利用不同的统计度量、图表和预测模型执行更高级的数据分析,@data
聊天参与者通过为数据任务提供量身定制的见解和交互性,帮助做出更高级和明智的决策。
该扩展贡献了一个工具,其中大型语言模型可以请求使用 Pyodide 执行 Python 代码并获取相关 Python 代码执行的结果。它还能够在出错时智能重试以获得更好或更合适的执行结果。您还可以将用于执行分析(或生成可视化)的代码导出到 Jupyter Notebook 或 Python 文件中。
您可以从市场下载此扩展,源代码在此 GitHub 上可用。
数据分析和可视化
- 给定一个 CSV 文件,输入一个提示,例如
分析文件 #<文件名>
,或者编写一个更具体的提示(参见下面的录音) - 提供后续提示以请求生成可视化,例如图表、绘图等
导出用于执行数据分析的代码
- 用于执行分析和生成可视化的 Python 代码可以查看
- 代码可以导出为 Jupyter Notebook 或 Python 文件
CSV 文件的编辑器和资源管理器集成
- 右键单击 CSV 文件进行分析
- 打开 CSV 文件并使用 Copilot 图标分析文件
VS Code Commander 扩展
VS Code Commander 扩展 (vscode:extension/ms-vscode.vscode-commander
) 在 VS Code 中充当您的个人助理。这个强大的工具使您能够通过对话式的自由格式文本配置您的 VS Code 环境。通过 VS Code Commander,您可以
- 发现并探索各种设置和命令
- 根据您的需求定制开发环境
这些操作可以通过简单直观的聊天界面执行,使管理您的 VS Code 配置比以往任何时候都更容易。
Copilot 视觉预览扩展
Copilot 视觉预览扩展 (vscode:extension/ms-vscode.vscode-copilot-vision
) 使您能够直接将图像作为上下文输入附加,从而丰富对话并实现更动态、视觉支持的响应。此扩展最终将被弃用,转而支持 Github Copilot Chat 中内置的图像流程。
聊天中的视觉
目前,您可以通过使用自己的 OpenAI、Azure OpenAI、Anthropic 或 Gemini 密钥在 Chat 视图中体验图像附件流程。通过从剪贴板轻松附加图像或将它们直接拖到聊天中来开始。
主题:蓝宝石(在 vscode.dev 上预览)
视觉与快速修复
此外,您可以使用提供的代码操作生成或优化 Markdown、HTML、JSX 或 TSX 文档中图像的替代文本,从而简化了整合描述性文本以获得更好上下文和可访问性的过程。替代文本快速修复适用于工作区中的图像和图像 URL。
此扩展使用了 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 和静态分析的最佳结合,以实现抽象类!此功能需要 Pylance 和 GitHub Copilot 扩展。要试用它,您可以在定义从抽象类继承的类时选择使用 Copilot 实现所有继承的抽象类代码操作。
您可以通过在用户设置中设置 "python.analysis.aiCodeActions": {"implementAbstractClasses": false}
来禁用此功能。
扩展开发
语言模型工具
我们已经最终确定了 LanguageModelTool
API!此 API 使聊天扩展能够通过将语言模型连接到外部数据源或执行操作来构建更强大的体验。该 API 包含两个主要部分
-
扩展注册工具的能力。工具是旨在供语言模型使用的功能。例如,读取文件的 Git 历史记录。当使用
lm.registerTool
方法注册工具时,它也对其他扩展开放,位于lm.tools
列表中。这将使聊天扩展能够通过共享工具生态系统与其他扩展无缝集成。 -
语言模型支持工具的机制,例如扩展在发出请求时传递工具、语言模型请求工具调用以及扩展传回工具调用结果。
语言模型工具的使用很复杂,此 API 不会隐藏这种复杂性。如果您想注册工具或在聊天参与者中使用工具,我们建议从扩展示例开始。
聊天参与者检测
我们已经最终确定了用于聊天参与者检测的 API,该 API 允许 GitHub Copilot 自动选择您的聊天参与者或参与者命令来处理用户的问题。请查看我们的文档以获取详细教程和建议。
VS Code 语音
VS Code 语音扩展已更新到 8 月版本的 Azure 语音 SDK,并附带了更新的语音转文本识别模型。此更新应能为 VS Code 中的语音转文本集成(例如 Copilot Chat)带来改进的结果。
注释线程 collapsibleState
即使注释线程已经显示,也可以使用新的 CommentThread.collapsibleState
属性更改 CommentThread
的展开/折叠状态。以前,此属性仅在首次显示注释线程时才会被遵守。
欢迎视图中的 Codicons
欢迎视图现在支持渲染 Codicons。您可以使用欢迎视图中常用的 $(icon-name)
来实现。
聊天参与者访问模型选择器
您可能已经注意到 Chat 视图中的模型选择器,它允许您选择用于聊天请求的模型。
您的聊天参与者扩展需要采用新的 API 才能使用此模型选择器。我们刚刚在 ChatRequest
对象上最终确定了一个新的 model
属性,该属性将设置为选择器中模型的 LanguageModelChat
实例。您可以使用此属性代替 lm.selectChatModels
方法。如果您的扩展想要使用除了选定模型之外的特定模型,您仍然可以使用 lm.selectChatModels
。
预览功能
TypeScript 5.7
我们持续改进对即将发布的 TypeScript 5.7 版本的支持。请查看 TypeScript 5.7 测试版博客文章和 TypeScript 5.7 计划以获取详细信息。
要开始使用 TypeScript 5.7 的预览版本,请安装 TypeScript 每夜构建扩展。
JavaScript 和 TypeScript 中粘贴时更新导入
厌倦了在文件之间移动代码后必须添加导入?试试我们对粘贴时更新导入的实验性支持!当您在编辑器之间复制和粘贴代码时,VS Code 会在粘贴代码时自动添加导入
请注意,它不仅添加了导入,甚至为粘贴代码中使用的局部变量添加了新的导出!
要立即试用此功能,请确保您使用的是 TypeScript 5.7+。然后启用 javascript.experimental.updateImportsOnPaste
/typescript.experimental.updateImportsOnPaste
。目前,这仅支持在同一 VS Code 窗口中的文本编辑器之间粘贴。
提议的 API
图像附件的聊天引用二进制数据
如果有扩展使用 ChatReferencebinaryData
提案 API,我们现在允许将图像(png
、jpeg
、bmp
、gif
和 tiff
)粘贴到聊天中。
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 语法创建其提示,并包含各种工具以充分利用提示的令牌预算。
Web 中移除 AMD 代码并更多使用 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。我们要感谢所有在 Insiders 版本上自行托管并提供早期反馈的用户。
值得注意的修复
- 177046 在扩展面板搜索后崩溃
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
拉取请求
对 vscode
的贡献
- @Abrifq (Arda Aydın):将
window.experimentalControlOverlay
的作用域更改为应用程序 PR #230593 - @asemdreibati (Asem Dreibati):处理 Iterable 命名空间中 slice 函数的边缘情况 (#_230683) PR #232134
- @BABA983 (BABA)
- 添加开发人员操作以显示 GPU 状态 PR #222291
- 修复样式更改时调试控制台被清除的问题 PR #224694
- 支持在 Git 编辑器中打开编辑器 PR #226967
- @Bistard (李思翰):修复打字错误:当使用
||
时,上下文视图锚定选项可能会被关闭 PR #228896 - @cobey (Cody Beyer):添加了 mistral ai npm 包 PR #229865
- @elias-pap (Elias Papavasileiou):修复:改进保存时触发的操作的设置描述 PR #230052
- @gjsjohnmurray (John Murray):更正扩展命令页面上的菜单上下文信息(修复 #229258) PR #229260
- @hamirmahal (Hamir Mahal):样式:简化字符串格式以提高可读性 PR #231763
- @injust (Justin Su):修复“in none full screen mode”的拼写错误 PR #229914
- @jamesharris-garmin (James Harris):修复 --locate-shell-integration-path 中缺失 __dirname 的问题 PR #231423
- @jeanp413 (Jean Pierre):修复如果 logOutputChannel 在被释放后再次创建,它将消失的问题 PR #225709
- @Kaidesuyoo (Kaidesuyo):性能优化 PR #230804
- @kkshinkai (Kk Shinkai):在发射器选项中正确触发
onDidAddListener
事件 PR #230259 - @Parasaran-Python (Parasaran):228640:如果启用了隐藏设置,则隐藏预启动任务弹出窗口 PR #231225
- @quiple (Minseo Lee):更改韩文字体优先级 PR #230195
- @r3m0t (Tomer Chachamu):修复新测试开始时测试结果的滚动问题(修复 #229531) PR #229532
- @sandersn (Nathan Shively-Sanders):TS 扩展:注册与 copilot 扩展的 CopilotRelated 调用 PR #228610
- @ShadowRZ (夜坂雅):修复:在 package.json 中使用正确的桌面名称 PR #231472
- @trevor-scheer (Trevor Scheer):标记消息空白
nowrap
->pre
PR #229454 - @vietanhtwdk:调整大小粘性滚动时重新渲染 PR #227400
- @yanglb (Yanblb):为装饰器添加类型检查 PR #230626
对 vscode-docs
的贡献
- @Cecil0o0 (hj)
- @echofly:更新 v1_94.md PR #7677
- @ghosted-sound
- @gjsjohnmurray (John Murray)
- @oleschri:添加参数 --update-extensions PR #7681
- @partev:修复 URL 重定向 PR #7640
- @ptrptrd:文档:删除主题颜色引用中的重复条目 PR #7639
- @RonakRahane:添加了 C# 中新代码覆盖率的文档 修复 #7635 PR #7664
对 vscode-js-debug
的贡献
- @marcusball (Marcus Ball):功能:查找 websocket 地址时使用
remoteHostHeader
选项 PR #2111
对 vscode-languageserver-node
的贡献
- @DanTup (Danny Tuppeny):添加对 CompletionList“applyKind”的支持,以控制如何组合默认值和每项 commitCharacters/数据 PR #1558
对 vscode-mypy
的贡献
- @jwhitaker-gridcog (Jarrad):在最近的 pyproject.toml 或 mypy.ini 目录中运行 mypy PR #316
对 vscode-vsce
的贡献
- @andrewlayer:将 unpublish 添加到 api.ts PR #1061
- @deribaucourt (Enguerrand de Ribaucourt):修复 workdir 符号链接的回归问题 PR #1053
- @dtivel (Damon Tivel):在
Content-Disposition
标头中引用filename
值 PR #1060
对 language-server-protocol
的贡献
- @asukaminato0721 (Asuka Minato)
- @DanTup (Danny Tuppeny):添加对
completionList.applyKind
的支持,以确定如何组合completionList.itemDefaults
和completion
中的值。 PR #2018 - @DavyLandman (Davy Landman):将 Rascal 添加到相关 LSP 实现者部分 PR #2029
- @g-plane (Pig Fang):修复标点符号错误 PR #2048
- @nthykier (Niels Thykier):添加
debputy
语言服务器 PR #2044 - @RainCmd (渴望蓝天):将 Rain 语言服务器添加到 LSP PR #2039
- @WilsonZiweiWang (ziweiwang):添加 BitBake 语言服务器 PR #2049
- @yasmewad (Yash Mewada):添加 Smithy 语言服务器链接到 LSP PR #2036
对 lsprotocol
的贡献
- @nobodywasishere (Margret Riegert):将 Crystal 插件添加到 README PR #403
对 tolerant-php-parser
的贡献
- @TysonAndre (Tyson Andre):修复 php 8.4 关于隐式可空参数的通知 PR #410