2024 年 10 月(版本 1.95)
更新 1.95.1:此更新解决了这些 问题。
下载:Windows:x64 Arm64 | Mac:通用 英特尔 硅 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 的 2024 年 10 月版。此版本包含许多我们希望您喜欢的更新,其中一些主要亮点包括
- Copilot 编辑 - 在跨多个文件的重大更改中快速迭代
- 辅助边栏中的 Copilot 聊天 - 在工作时保持 Copilot 聊天窗口打开并随时可用
- 多个 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 聊天的对话流程和内联聊天的快速反馈结合在一个体验中。一边进行持续的多轮聊天对话,一边从内联代码建议中获益。
只需三步即可开始使用 Copilot 编辑
-
从聊天菜单中选择打开 Copilot 编辑以启动编辑会话,或按 ⇧⌘I (Windows Ctrl+Shift+I,Linux Ctrl+Shift+Alt+I)。
-
将相关文件添加到工作集中,以指示 Copilot 您想要处理哪些文件。
-
输入提示,告诉 Copilot 您要进行的编辑!例如,
为所有页面添加一个简单的导航栏
或使用 vitest 而不是 jest
。
在我们的文档中详细了解 Copilot 编辑。立即尝试并通过 我们的问题 提供您的反馈!
辅助边栏中的聊天
聊天视图的新默认位置是 辅助边栏。通过使用辅助边栏,您可以随时打开聊天,同时仍然可以使用其他视图,例如文件资源管理器或源代码管理。这为您提供了 VS Code 中更集成的 AI 体验。您可以使用 ⌃⌘I (Windows,Linux Ctrl+Alt+I) 快捷键快速访问聊天。
随着命令中心旁边新的聊天菜单的引入,只需点击一下即可调出带有聊天的辅助边栏
聊天菜单让您可以访问 Copilot 聊天中最常用的任务。如果您想隐藏此菜单,则提供了一个新的设置 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 聊天将尽力自动将您的问题路由到合适的参与者或聊天命令。
如果自动选择的参与者不适合您的问题,您仍然可以选择聊天回复顶部的不使用重新运行链接,将您的问题重新发送给 Copilot。
本月,我们还添加了一个操作,让您可以在每次请求的基础上跳过此检测行为。输入聊天提示时的默认操作是发送和分派,其中包括参与者检测。如果您选择发送,则请求会直接发送到 Copilot 聊天,并且不会自动分派给聊天参与者。
您也可以使用 chat.experimental.detectParticipant.enabled 设置完全禁用自动参与者检测。
控制当前编辑器上下文
Copilot 聊天始终会自动将您的当前选择或当前可见的代码作为上下文包含在您的聊天请求中。大型语言模型 (LLM) 通常擅长理解一段上下文是否相关。但有时,当您提出与当前编辑器无关的问题时,包含此上下文可能会影响模型对您的问题的解释。
我们现在在聊天输入中显示了一个特殊的附件控件,它提示有关编辑器上下文的提示,并允许您切换是否包含编辑器上下文。
编辑器上下文的行为没有变化。当活动编辑器有选择时,只包含选择。否则,只包含滚动到视图中的代码。您仍然可以使用回形针按钮或在聊天提示中键入 #
来附加其他文件或完整文件。
交互式工作区符号链接
Copilot 聊天的一个常见用例是询问有关工作区中代码的问题,例如使用 /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 Pull Request 扩展
- 将帐户 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 Pull 请求 | 市场 |
Copilot 的 Web 搜索 | 市场,源代码 |
使用 Copilot 生成 MermAId 图表 | 市场 |
Copilot 的数据分析 | 市场,源代码 |
VS Code 指挥官 | 市场 |
Copilot 预览的愿景 | 市场 |
GitHub Pull 请求
0.100.0 版本的GitHub Pull 请求扩展添加了 Copilot 集成
- 使用聊天视图中的
@githubpr
聊天参与者搜索问题、汇总问题/pr 并建议修复问题。@githubpr
使用多个语言模型工具来完成此操作。 - 还有一个新的通知视图,显示 GitHub 通知,并提供一个使用 Copilot 对其进行优先级排序的操作。
要试用所有功能,您可以设置以下设置
使用 Copilot 搜索问题
新的@githubpr
聊天参与者可以在 GitHub 上搜索问题。
当显示问题时,@githubpr
会显示一个 Markdown 表格,并尝试根据搜索结果选择最佳列来显示。
使用 Copilot 总结和修复
现在,问题视图中列出的每个问题都具有一个新的操作使用 Copilot 总结,该操作会打开聊天面板并总结选定的问题。我们还添加了另一个操作使用 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 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 笔记本或 Python 文件中。
您可以从 市场 下载扩展,源代码可在 GitHub 上获取。
数据分析和可视化
- 给定一个 CSV 文件,输入类似于
Analyze the file #<file name>
的提示,或写一个更具体的提示(参见下面的录音) - 提供后续提示以请求生成可视化,例如图表、绘图等
导出用于执行数据分析的代码
- 可以使用用于执行分析和生成可视化的 Python 代码
- 代码可以导出到 Jupyter 笔记本或 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 文档中的图像生成或改进 alt 文本,简化了为提供更好的上下文和可访问性而包含描述性文本的过程。alt 文本快速修复适用于工作区中的图像和图像 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 语音 SDK,并附带了用于语音到文本识别的更新模型。您应该会看到此更新对 VS Code 中的语音到文本集成(例如 Copilot Chat)有所改进。
评论线程collapsibleState
可以使用新的 CommentThread.collapsibleState
属性更改 CommentThread
的展开/折叠状态,即使线程已经显示过。以前,此属性只在首次显示评论线程时才生效。
欢迎视图中的 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 语法创建他们的提示,并包括各种工具以充分利用提示的令牌预算。
AMD 代码删除和在 Web 中更多地使用 ESM
我们从源代码中删除了 AMD (Asynchronous Module Definition) 的最后痕迹,主要来自我们为支持 AMD(以备恢复发布时需要)而保留的构建脚本。
此外,https://vscode.dev 现在也完全使用 ESM (ECMAScript Modules) 运行。
迁移到 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
的贡献
- @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): 修复“在无全屏模式下”的错别字 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: 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: 在 api.ts 中添加 unpublish PR #1061
- @deribaucourt (Enguerrand de Ribaucourt): 修复工作目录符号链接的回归 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