參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

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 Apple 晶片 | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2024 年 10 月釋出版本。此版本中有許多更新,我們希望您會喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。

GitHub Copilot

Copilot 功能可能會經歷不同的早期訪問階段,這些階段通常透過設定啟用和配置。

  • 實驗性 - 檢視實驗性功能 (@tag:experimental)

    此設定控制正在積極開發的新功能,可能不穩定。它可能會更改或刪除。

  • 預覽 - 檢視預覽功能 (@tag:preview)

    此設定控制仍在完善但已可使用的新功能。歡迎提供反饋。

使用 Copilot 編輯開始程式碼編輯會話

Copilot 編輯目前處於預覽階段

設定github.copilot.chat.edits.enabled

使用 Copilot 編輯,您可以開始一個由 AI 驅動的程式碼編輯會話,在該會話中您可以快速迭代程式碼更改。根據您的提示,Copilot 編輯會在您的工作區中跨多個檔案提出程式碼更改。這些編輯會直接應用於編輯器中,因此您可以在原位快速檢視它們,並獲得周圍程式碼的完整上下文。

Copilot 編輯非常適合迭代跨多個檔案的大幅更改。它將 Copilot 聊天的對話流程和內聯聊天的快速反饋結合在一個體驗中。在旁邊進行持續的多輪聊天對話,同時受益於內聯程式碼建議。

只需三個步驟即可開始使用 Copilot 編輯

  1. 從聊天選單中選擇 開啟 Copilot 編輯,或按 ,即可開始編輯會話。

    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 uncommitted 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 聊天始終會自動將您當前的選定內容或當前可見程式碼作為上下文包含在您的聊天請求中。大型語言模型 (LLM) 通常擅長理解一段上下文是否相關。但有時,當您提出的問題與當前編輯器無關時,包含此上下文可能會影響模型解釋您問題的方式。

我們現在在聊天輸入中顯示一個特殊的附件控制元件,它會提供有關編輯器上下文的提示,並使您能夠切換是否包含編輯器上下文。

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

編輯器上下文的行為沒有改變。當活動編輯器有選擇時,只包含選擇。否則,只包含滾動到檢視中的程式碼。您仍然可以使用回形針按鈕或在聊天提示中鍵入 # 來附加其他檔案或整個檔案。

Copilot 聊天的一個常見用例是詢問有關工作區程式碼的問題,例如使用 /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 以相應地篩選設定。

擴充套件作者可以為其設定新增“實驗性”或“預覽”標籤,以在設定編輯器中顯示相應的指示器。

主題:淺粉色(在 vscode.dev 上預覽)

更多配置檔案圖示

在此里程碑中,我們為配置檔案添加了更多圖示。您現在可以從更廣泛的圖示範圍中進行選擇,以自定義您的配置檔案。

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

面板中的檢視圖示

在工作臺面板區域,檢視通常以標籤形式顯示在標題欄中(例如,*終端* 或 *輸出*)。然而,在較小的螢幕上,這些標籤可能會超出可用空間,導致某些檢視溢位到下拉選單中。

為了解決這個問題,我們添加了一個新設定: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

VS Code for the Web 支援本地檔案事件

當使用 Chrome 或 Edge 129 版本時,使用本地資料夾開啟 https://insiders.vscode.dev 現在支援檔案事件。如果您在瀏覽器外部對開啟的工作區的檔案和資料夾進行更改,這些更改會立即反映在瀏覽器內部。

此功能利用了作為新的 Web API 提出的新 FileSystemObserver 介面。

對擴充套件的貢獻

Copilot 擴充套件展示

在此里程碑中,團隊致力於構建幾個擴充套件,以展示 VS Code 中的 Copilot 擴充套件性。這些擴充套件展示了以下功能:

試用這些擴充套件,看看如何在您自己的擴充套件中擴充套件 Copilot。

擴充套件 連結
GitHub 拉取請求 市場
Copilot 的網路搜尋 市場原始碼
使用 Copilot 生成 MermAId 圖 市場
Copilot 的資料分析 市場原始碼
VS Code Commander 市場
Copilot 預覽版視覺 市場

GitHub 拉取請求

GitHub Pull Requests 擴充套件的 0.100.0 版本增加了 Copilot 整合

  • 在“聊天”檢視中使用 @githubpr 聊天參與者來搜尋問題、總結問題/拉取請求以及為問題建議修復。@githubpr 使用多種語言模型工具來完成此操作。
  • 還有一個新的 通知 檢視,顯示 GitHub 通知,並帶有一個使用 Copilot 優先處理通知的操作。

要試用所有功能,您可以設定以下設定

使用 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 使用最流行的框架建立一個用 Python 編寫的新 Web 應用程式

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 檔案,輸入一個提示,例如 分析檔案 #<檔名> 或編寫一個更具體的提示(參見下面的錄音)
  • 提供後續提示以請求生成視覺化,例如圖表、繪圖等

匯出用於執行資料分析的程式碼
  • 用於執行分析和生成視覺化的 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 金鑰在聊天檢視中體驗影像附件流程。透過從剪貼簿輕鬆附加影像或將其直接拖到聊天中來開始。

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 上預覽)

帶有快速修復的視覺

此外,您可以使用提供的程式碼操作為 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 Speech

VS Code 語音 擴充套件已更新到 Azure 語音 SDK 的八月版本,並附帶了更新的語音識別模型。您應該會在本次更新中看到 VS Code 中的語音轉文字整合(例如 Copilot Chat)的改進結果。

評論執行緒 collapsibleState

CommentThread 的展開/摺疊狀態可以使用新的 CommentThread.collapsibleState 屬性進行更改,即使執行緒已經顯示。以前,此屬性只在評論執行緒首次顯示時才會被尊重。

歡迎檢視中的 Codicons

歡迎檢視現在支援渲染 codicons。您可以在歡迎檢視中使用常見的 $(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 中開發和使用的,用於構建語言模型提示。該庫使開發人員能夠使用 TSX/JSX 語法(類似於 React)建立提示,幷包含各種工具,以充分利用提示的令牌預算。

移除 AMD 程式碼並在 Web 中更多使用 ESM

我們從原始碼中刪除了 AMD (Asynchronous Module Definition) 的最後痕跡,主要來自我們仍然保留的構建指令碼,以防恢復版本需要支援 AMD。

此外,https://vscode.dev 現在也 100% 僅使用 ESM (ECMAScript Modules) 執行。

遷移到 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 的貢獻

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 的貢獻