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 上的更新。内测版: 想尽快尝试新功能?您可以下载每夜内测版本,并在功能可用时立即试用最新的更新。
GitHub Copilot
Copilot 功能可能会经历不同的早期访问阶段,通常通过设置启用和配置。
-
实验性 - 查看实验性功能 (
@tag:experimental
)此设置控制一个正在积极开发中且可能不稳定的新功能。它可能会更改或移除。
-
预览 - 查看预览功能 (
@tag:preview
)此设置控制一个仍在完善中但已可使用的新功能。欢迎提供反馈。
使用 Copilot 编辑启动代码编辑会话
Copilot 编辑目前处于预览阶段
设置:github.copilot.chat.edits.enabled
通过 Copilot 编辑,您可以启动一个 AI 驱动的代码编辑会话,从而快速迭代代码更改。根据您的提示,Copilot 编辑会在您的工作区中跨多个文件提出代码更改建议。这些编辑会直接应用到编辑器中,因此您可以在原地快速审查它们,并获得周围代码的完整上下文。
Copilot 编辑非常适合迭代跨多个文件的大量更改。它将 Copilot Chat 的对话流和内联聊天的快速反馈结合在一个体验中。您可以在旁边进行持续的、多轮的聊天对话,同时受益于内联代码建议。
只需三步即可开始使用 Copilot 编辑
-
从“聊天”菜单中选择打开 Copilot 编辑或按来启动编辑会话。
-
将相关文件添加到工作集中,以指示 Copilot 您要处理的文件。
-
输入提示,告诉 Copilot 您要进行的编辑!例如,
为所有页面添加一个简单的导航栏
或使用 vitest 而不是 jest
。
在我们的文档中获取有关 Copilot 编辑的更多详细信息。立即试用并通过我们的问题跟踪器提供您的反馈!
辅助侧边栏中的聊天
“聊天”视图新的默认位置是辅助侧边栏。通过使用辅助侧边栏,您可以随时打开聊天,同时仍可使用文件资源管理器或源代码管理等其他视图。这为您在 VS Code 中提供了更集成的 AI 体验。您可以使用⌃⌘I (Windows、Linux Ctrl+Alt+I) 键盘快捷方式快速访问聊天。
随着命令中心旁边新增的“聊天”菜单的引入,只需点击一下即可调出辅助侧边栏并进行聊天。
聊天菜单让您可以访问 Copilot Chat 最常见的任务。如果您希望隐藏此菜单,则提供了新的设置 chat.commandCenter.enabled。
注意:如果您之前安装过 GitHub Copilot,则会在您以前的聊天位置显示一个视图,如果您觉得旧位置更适合您,该视图可让您将聊天视图恢复到旧位置。
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
为了在“聊天”视图中腾出更多空间进行聊天对话,我们使后续提示更简洁,默认情况下它们仅在第一次对话时出现。配置 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,让您可以控制出现次数在编辑器中高亮显示之前的延迟。降低此延迟值可以使编辑器在处理语义高亮时感觉更灵敏。
VS Code 网页版
VS Code 网页版支持本地文件事件
当使用 Chrome 或 Edge 浏览器(版本 129 及更高版本)时,通过本地文件夹打开 https://insiders.vscode.dev 现在支持文件事件。如果您在浏览器外部对已打开工作区的文件和文件夹进行更改,这些更改会立即反映在浏览器内部。
此功能利用了作为新的 Web API 提出的 FileSystemObserver
接口。
对扩展的贡献
Copilot 扩展展示
在此里程碑中,团队致力于构建多个扩展,展示 VS Code 中的 Copilot 扩展性。这些扩展演示了以下功能:
- 聊天参与者和工具 API
- prompt-tsx
- 如何利用 GitHub Copilot 提供的语言模型
试用这些扩展,看看如何在您自己的扩展中扩展 Copilot。
扩展 | 链接 |
---|---|
GitHub 拉取请求 | 市场 |
Copilot 的网页搜索 | 市场,源代码 |
使用 Copilot 生成 Mermaid 图表 | 市场 |
Copilot 的数据分析 | 市场,源代码 |
VS Code Commander | 市场 |
Copilot 预览版视觉功能 | 市场 |
GitHub 拉取请求
GitHub 拉取请求扩展的 0.100.0 版本新增了 Copilot 集成。
- 在“聊天”视图中使用
@githubpr
聊天参与者来搜索问题、总结问题/拉取请求以及建议问题的修复。@githubpr
使用多种语言模型工具来完成此操作。 - 还有一个新的通知视图,显示 GitHub 通知,并带有一个使用 Copilot 优先处理通知的操作。
要试用所有功能,您可以设置以下设置:
使用 Copilot 搜索问题
新的 @githubpr
聊天参与者可以在 GitHub 上搜索问题。
在显示问题时,@githubpr
会显示一个 Markdown 表格,并尝试根据搜索选择最佳的列来显示。
使用 Copilot 总结和修复
“问题”视图中列出的每个问题现在都有一个新操作:使用 Copilot 总结,该操作会打开“聊天”面板并总结所选问题。我们还添加了另一个操作:使用 Copilot 修复,该操作会总结所选问题并使用工作区上下文来建议修复。
使用 Copilot 优先级化通知(实验性)
在此里程碑中,我们添加了一个实验性的通知视图,列出您在所有仓库中未读的通知。默认情况下,通知按最近更新时间降序排序,但您可以使用视图标题的 ...
菜单中的使用 Copilot 按优先级排序操作,让 Copilot 优先处理通知。选择每个通知会触发一个操作,使用 Copilot 总结该通知。该视图还包含易于访问的操作,可将通知标记为已读,或在 GitHub.com 上打开通知。
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?
手动调用它。
聊天工具
此扩展还贡献了 #websearch
聊天语言模型工具,它类似于参与者,但对于在其他聊天参与者中提供来自网络的上下文很有用。例如:
@workspace /new #websearch create a new web app written in Python using the most popular framework
此外,如果您正在开发自己的聊天参与者或工具,您可以通过 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 文件,输入类似
分析文件 #<文件名>
的提示,或者编写更具体的提示(参见下面的录音)。 - 提供后续提示以请求生成可视化,例如图表、绘图等。
导出用于执行数据分析的代码
- 可查看用于执行分析和生成可视化的 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 密钥,在“聊天”视图中体验图像附件流。通过从剪贴板轻松附加图像或将其直接拖入聊天开始使用。
主题:Sapphire(在 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,它允许 GitHub Copilot 自动选择您的聊天参与者或参与者命令来处理用户的问题。请查看我们的文档以获取详细教程和建议。
VS Code 语音
VS Code 语音扩展已更新至 8 月份的 Azure Speech SDK 版本,并附带了更新的语音转文本识别模型。您应该会在本次更新中看到 VS Code 中的语音转文本集成(例如 Copilot Chat)的改进结果。
评论线程 collapsibleState
CommentThread
的展开/折叠状态可以使用新的 CommentThread.collapsibleState
属性进行更改,即使线程已经显示。以前,此属性仅在评论线程首次显示时才会被尊重。
欢迎视图中的 Codicon 图标
欢迎视图现在支持渲染 Codicon 图标。您可以在欢迎视图中使用常规的 $(icon-name)
来实现。
聊天参与者访问模型选择器
您可能已经注意到“聊天”视图中的模型选择器,它允许您选择用于聊天请求的模型。
您的聊天参与者扩展需要采用新的 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,则允许将图像 (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 语法创建他们的提示,并包含各种工具以最大限度地利用提示的 token 预算。
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。我们要感谢所有在 Insider 版本上自托管并提供早期反馈的人。
值得注意的修复
- 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 (SIHAN LI): 修复错字:上下文视图锚点选项在使用
||
时可能会被解除 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): 在 emitter 选项中正确触发
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: 调整 sticky scroll 大小后重新渲染 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: docs: 删除主题颜色引用中的重复条目 PR #7639
- @RonakRahane: 添加了 C# 中新代码覆盖率的文档 修复 #7635 PR #7664
对 vscode-js-debug
的贡献
- @marcusball (Marcus Ball): feat: 在查找 websocket 地址时使用
remoteHostHeader
选项 PR #2111
对 vscode-languageserver-node
的贡献
- @DanTup (Danny Tuppeny): 添加对 CompletionList "applyKind" 的支持,以控制默认值以及每个项目的 commitCharacters/data 的组合方式 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