2025 年 5 月 (版本 1.101)
釋出日期:2025 年 6 月 12 日
安全更新:以下擴充套件已獲得安全更新: ms-python.python。
更新 1.101.1:此更新解決了這些 問題。
更新 1.101.2:此更新解決了這些 問題。
下載:Windows: x64 Arm64 | Mac: 通用 Intel silicon | Linux: deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2025 年 5 月版本。此版本中有許多更新,我們希望您會喜歡,其中一些主要亮點包括
-
MCP
-
聊天
- 透過將相關工具組合到工具集中來對它們進行分組和管理(顯示更多)。
-
原始碼管理
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新。Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。
聊天
聊天工具集
VS Code 現在支援您透過建議的 API 或 UI 定義工具集。工具集是一組不同的工具,可以像單個工具一樣使用。工具集可以更輕鬆地將相關工具分組,並在代理模式下快速啟用或停用它們。例如,下面的工具集用於管理 GitHub 通知(使用 GitHub MCP 伺服器)。
{
"gh-news": {
"tools": ["list_notifications", "dismiss_notification", "get_notification_details"],
"description": "Manage GH notification",
"icon": "github-project"
}
}
要建立工具集,請從命令面板執行配置工具集 > 建立新的工具集檔案命令。然後,您可以選擇要包含在工具集中的工具,並提供描述和圖示。
要在聊天查詢中使用工具集,請透過 #-提及名稱來引用它,例如 #gh-news。您也可以從聊天輸入框中的工具選擇器中選擇它。

在我們的文件中瞭解有關工具集的更多資訊。
MCP 對提示的支援
VS Code 的模型上下文協議支援現在包括提示支援。MCP 伺服器可以定義提示來生成可重用的程式碼片段或語言模型的任務。提示可以作為斜槓 / 命令在聊天中訪問,格式為 /mcp.servername.promptname。您可以輸入純文字或在提示變數中包含命令輸出,並且在伺服器提供補全時我們也支援補全。
下面的示例展示了我們如何使用 AI 生成提示,使用 Gistpad MCP 伺服器 儲存它,然後用它來生成日誌條目。
MCP 對資源的支援
VS Code 的模型上下文協議支援現在包括資源支援,其中包含對資源模板的支援。它在幾個地方可用:
- MCP 工具呼叫返回的資源可供模型使用,並可以儲存在聊天中,無論是透過儲存按鈕,還是將資源拖放到資源管理器檢視上。
- 可以透過聊天中的新增上下文...按鈕將資源附加為上下文,然後選擇MCP 資源...。
- 您可以使用MCP:瀏覽資源命令在伺服器之間瀏覽和檢視資源,或者按伺服器在MCP:列出伺服器命令中的條目進行檢視。
這是將來自Gistpad MCP 伺服器的資源附加到聊天的示例。
MCP 對取樣(實驗性)的支援
VS Code 的模型上下文協議支援現在包括取樣,它允許 MCP 伺服器向模型發出請求。當 MCP 伺服器發出取樣請求時,您將首次被要求確認,並且您可以透過在MCP:列出伺服器中選擇伺服器來配置 MCP 伺服器可以訪問的模型以及檢視請求日誌。
取樣支援仍處於初步階段,我們計劃在未來的迭代中對其進行擴充套件和改進。
MCP 對身份驗證的支援
VS Code 現在支援需要身份驗證的 MCP 伺服器,允許您與代表您的使用者帳戶在該服務上執行的 MCP 伺服器進行互動。
此功能實現了客戶端的 MCP 授權規範,並支援
- 2025-3-26 規範,其中 MCP 伺服器充當授權伺服器。
- 草案規範,其中 MCP 伺服器充當資源伺服器(預計很快就會定稿)。
如果 MCP 伺服器實現了草案規範並利用 GitHub 或 Entra 作為身份驗證伺服器,您可以管理哪些 MCP 伺服器可以訪問您的帳戶。


您還可以管理該伺服器應使用哪個帳戶(透過上一個快速選擇中的齒輪按鈕)。

對於其他依賴動態客戶端註冊的 MCP 伺服器,我們將身份驗證狀態與其他所有內容放在同一個地方,例如與 Linear。

您也可以在那裡退出。對於這些伺服器,我們不僅支援授權程式碼流程,還支援您的授權伺服器支援的裝置程式碼流程。
我們還引入了身份驗證:刪除動態身份驗證提供程式命令,該命令允許您清理所有這些動態客戶端註冊。這將丟棄授予 VS Code 的客戶端 ID 以及與此身份驗證提供程式相關的所有資料。
請記住,您可以使用MCP:新增伺服器...命令來新增 MCP 伺服器。對於帶有身份驗證的伺服器,這是相同的入口點。
MCP 開發模式
您可以透過向伺服器配置新增一個 dev 鍵來為 MCP 伺服器啟用開發模式。這是一個包含兩個屬性的物件:
watch:一個檔案 glob 模式,用於監視檔案更改以重新啟動 MCP 伺服器。debug:允許您設定 MCP 伺服器的偵錯程式。目前,我們僅支援除錯使用node和python分別啟動的 Node.js 和 Python 伺服器。
.vscode/mcp.json
{
"servers": {
"gistpad": {
"command": "node",
"args": ["build/index.js"],
+ "dev": {
+ "watch": "build/**/*.js",
+ "debug": { "type": "node" }
+ },
聊天 UX 改進
我們根據您的反饋,不斷努力改進 VS Code 中的聊天使用者體驗。其中一項反饋是,區分聊天中的使用者訊息和 AI 回覆可能很困難。為了解決這個問題,我們使使用者訊息的外觀更加醒目。
撤消先前的請求現在也更加明顯 - 只需將滑鼠懸停在請求上,然後選擇 X 按鈕即可撤消該請求及任何後續請求。或者更快的方式是,使用 ⌘Backspace (Windows、Linux Delete) 鍵盤快捷鍵!
最後,聊天輸入框中的附件現在更易於導航。
在我們的文件中瞭解有關在 VS Code 中使用聊天的更多資訊。
更高效地應用編輯
在編輯檔案時,VS Code 可以採取兩種不同的方法:它要麼從頭到尾重寫檔案,要麼進行多次、較小的編輯。這兩種方法都不同,例如前者對於大檔案可能會更慢,並且中間狀態通常無法成功編譯。因此,UI 會採用並有條件地停用自動儲存和波形圖,但僅在需要時。
我們還統一了保留和撤銷命令的鍵繫結。保留和撤銷單個更改現在使用 ⌘Y (Windows、Linux Ctrl+Y) 和 ⌘N (Windows、Linux Ctrl+N)。本著同樣的精神,我們還統一了保留和撤銷檔案中所有更改的鍵繫結,它們現在是 ⇧⌘Y (Windows、Linux Ctrl+Shift+Y) 和 ⇧⌘N (Windows、Linux Ctrl+Shift+N)。這不僅是為了統一,還消除了與流行編輯命令(如刪除所有左側)的先前衝突。
隱式上下文
我們已簡化和優化了將當前檔案新增為聊天上下文的方式。許多人發現我們之前使用的“眼球切換”有點笨拙。現在,您的當前檔案將作為建議的上下文項提供。只需選擇該項即可將其新增到聊天上下文或從中移除。在提示輸入欄位中,按 Shift+Tab, Enter 即可使用鍵盤快速完成此操作。
此外,在代理模式下,我們會包含有關您當前編輯器的提示。這不包括檔案內容,僅包括檔名和游標位置。如果代理認為檔案內容與您的查詢相關,它可以自行使用其工具來讀取檔案內容。
在我們的文件中瞭解有關在聊天中新增上下文的更多資訊。
修復任務配置錯誤
配置任務和問題匹配器可能很棘手。當您的任務配置出現錯誤時,可以使用使用 Github Copilot 修復操作來快速有效地解決它們。
自定義聊天模式(預覽)
預設情況下,聊天檢視支援三種內建聊天模式:提問、編輯和代理。每種聊天模式都附帶一組基本指令,描述 LLM 應如何處理請求,以及可用於該請求的工具列表。
您現在可以定義自己的自定義聊天模式,這些模式可以在聊天檢視中使用。自定義聊天模式允許您定製聊天行為並指定該模式下可用的工具。這對於專業工作流程或當您想為 LLM 提供特定指令時特別有用。例如,您可以建立一個用於規劃新功能的自定義聊天模式,該模式只能對您的程式碼庫進行只讀訪問。
要定義和使用自定義聊天模式,請遵循以下步驟:
- 透過從命令面板執行聊天:配置聊天模式命令來定義自定義模式。
- 在建立的
*.chatprompt.md檔案中提供自定義聊天模式的說明和可用工具。 - 在聊天檢視中,從聊天模式下拉列表中選擇聊天模式。
- 提交您的聊天提示。

以下示例顯示了一個自定義的“規劃”聊天模式。
---
description: Generate an implementation plan for new features or refactoring existing code.
tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages']
---
# Planning mode instructions
You are in planning mode. Your task is to generate an implementation plan for a new feature or for refactoring existing code.
Don't make any code edits, just generate a plan.
The plan consists of a Markdown document that describes the implementation plan, including the following sections:
* Overview: A brief description of the feature or refactoring task.
* Requirements: A list of requirements for the feature or refactoring task.
* Implementation Steps: A detailed list of steps to implement the feature or refactoring task.
* Testing: A list of tests that need to be implemented to verify the feature or refactoring task.
注意:該功能仍在開發中,但請嘗試一下!請在 VS Code Insiders 中關注最新進展,並讓我們知道哪些功能不起作用或缺失。
任務診斷意識
當聊天代理執行任務時,它現在能夠識別問題匹配器識別的任何錯誤或警告。這種診斷上下文使聊天代理能夠更智慧地響應出現的問題。
終端 cwd 上下文
當代理模式打開了終端並且 shell 整合處於活動狀態時,聊天代理可以感知當前工作目錄 (cwd)。這使得命令支援更加準確和上下文感知。
浮動視窗改進
當您將聊天會話移動到浮動視窗時,現在標題欄中有兩個新操作可用:
- 將聊天塢回它來自的 VS Code 視窗。
- 在浮動視窗中啟動新的聊天會話。

獲取工具確認
獲取工具允許您從網頁中提取資訊。我們在確認訊息中添加了警告訊息,以告知您有關潛在的提示注入資訊。

自定義更多內建工具
現在可以啟用或停用代理模式或自定義模式下的所有內建工具。例如,停用 editFiles 以禁止代理模式直接編輯檔案,或停用 runCommands 以執行終端命令。
在代理模式下,選擇配置工具按鈕以開啟工具選擇器,然後選擇您所需的工具集。

此選單中的某些條目代表工具集,它們將多個工具分組。例如,我們為模型提供了多個工具來編輯或建立文字檔案和筆記本,這些工具也可能因模型系列而異,而 editFiles 會將所有這些工具分組。
將元素髮送到聊天(實驗性)
在上一個里程碑中,我們添加了一項新的實驗性功能,您可以開啟簡單瀏覽器並選擇要在嵌入式瀏覽器中新增到聊天的 Web 元素。

隨著我們繼續改進此功能,我們還為 Live Preview 擴充套件中的 Web 元素添加了選擇支援。透過下載該擴充套件並從任何 HTML 檔案啟動即時伺服器來嘗試此功能。
輔助功能
使用者操作所需聲音
我們添加了一個可訪問性訊號,以指示聊天何時需要使用者操作。這是一個選擇加入功能,因為我們正在微調聲音。您可以使用 進行配置。
新的程式碼操作聲音
我們引入了以下聲音:
代理模式可訪問性改進
我們現在將在可訪問檢視中包含關於確認對話方塊的豐富資訊,涵蓋過去的工具執行、當前工具執行以及任何待處理的確認。這包括將使用的輸入。
當確認對話框出現在響應中時,操作的標題現在包含在相應程式碼塊的 ARIA 標籤、響應的 ARIA 標籤和即時警報中,以便為螢幕閱讀器使用者提供更好的上下文。
編輯器體驗
邊輸入邊查詢
邊輸入邊查詢一直是查詢控制元件的預設行為,但現在您可以控制是否繼續保持這種狀態,或者停用它,以便它只在按 Enter 鍵後執行搜尋。
帶原生視窗標題欄的自定義選單
您現在可以透過 設定來指定用於 Windows 和 Linux 上的選單欄和上下文選單,以及 macOS 上的上下文選單的選單樣式。
Linux 原生視窗上下文選單
現在,當我們右鍵單擊自定義標題欄中的應用程式圖示時,我們支援原生視窗上下文選單。

程序瀏覽器 Web 支援
程序瀏覽器已轉換為使用我們在工作臺中為編輯器視窗提供的浮動視窗基礎結構。因此,這也意味著我們現在在連線到遠端(例如在 Codespaces 中)時,在 Web 中也支援程序瀏覽器。

Windows shell 環境發現
我們現在已為 Windows 上的 PowerShell 實現了 shell 環境發現。這意味著 VS Code 會繼承 PowerShell 配置檔案中配置的任何環境,例如 Node.js 透過各種版本管理器配置的 PATH 更新。
未釋出的擴充套件警告
已安裝的擴充套件現在會在不再可在 Marketplace 中找到時顯示警告指示器,幫助您識別可能存在問題的已取消釋出或已刪除的擴充套件。

設定搜尋建議(預覽)
在此里程碑中,我們在設定編輯器中添加了一個切換按鈕,該按鈕會啟動 AI 搜尋以查詢語義上相似的結果,而不是基於字串匹配的結果。例如,當您搜尋“增大文字大小”時,AI 搜尋會找到 editor.fontSize 設定。
要看到切換按鈕,請啟用該設定並重新載入 VS Code。我們還在識別和修復一些不太準確的設定搜尋結果的過程中,並且我們歡迎有關自然語言查詢未找到預期設定的反饋。
對於下一個里程碑,我們還考慮刪除切換按鈕,並將實驗性設定更改為控制何時將較慢的 AI 搜尋結果直接附加到列表末尾的設定。
搜尋關鍵字建議(預覽)
在上一個里程碑中,我們在搜尋檢視中引入了關鍵字建議,以幫助您更快地找到相關結果。我們現在已顯著提高了建議的效能,因此您看到的結果將比以前快約 5 倍。
我們還將該設定從 Chat 擴充套件移到了 VS Code 核心,並將其名稱從 github.copilot.chat.search.keywordSuggestions 更改為 。
語義搜尋行為選項(預覽)
透過搜尋檢視中的語義搜尋,您可以獲得基於查詢含義的結果,而不僅僅是文字匹配。如果您不知道要搜尋的確切術語,這尤其有用。
預設情況下,只有在您明確請求時才會執行語義搜尋。我們現在添加了一個設定來控制何時觸發語義搜尋:
manual(預設):僅在從 UI 手動觸發時執行語義搜尋(⌘I (Windows、Linux Ctrl+I))。runOnEmpty:當文字搜尋未返回任何結果時自動執行語義搜尋。auto:始終與文字搜尋並行執行語義搜尋,用於每個搜尋查詢。
編輯上下文
我們已在 Stable 版本上預設啟用了 設定。這意味著編輯器的輸入現在由 EditContext API 提供支援。這修復了許多錯誤,尤其是在 IME 體驗方面,並且今後將為編輯器內更通用、更強大的輸入體驗鋪平道路。
有關 EditContext API 的更多詳細資訊,請參閱MDN 文件。
程式碼編輯
NES 匯入建議
上個月,我們推出了對下一個編輯建議的支援,以自動建議為 TypeScript 和 JavaScript 新增缺失的匯入語句。在此版本中,我們提高了這些建議的準確性和可靠性,並將支援擴充套件到了 Python 檔案。

NES 對所有 VS Code Insiders 使用者均已啟用,並且將在 6 月份逐漸對 Stable 使用者預設啟用。您可以隨時透過其設定自行啟用 NES。
NES 接受流程
現在,接受下一個編輯建議變得更加無縫,鍵盤導航得到了改進。一旦您接受了建議,只要您沒有開始再次輸入,就可以透過按一次 Tab 鍵來繼續接受後續的建議。一旦您開始輸入,按 Tab 鍵首先將游標移動到下一個建議,然後您才能接受它。
Notebook
代理單元格執行的跟隨模式
透過跟隨模式,Notebook 檢視將自動滾動到代理當前正在執行的單元格。使用 設定來為 Jupyter Notebook 中的代理單元格執行啟用或停用跟隨模式。
一旦代理使用了執行單元格工具,Notebook 工具欄將更新一個圖釘圖示,指示跟隨模式的狀態。您可以在代理響應過程中切換行為,而無需更改基本設定值,這樣您就可以即時跟蹤代理的工作,並在您想要檢視特定程式碼部分時將其關閉,同時代理繼續迭代。當您想再次跟隨時,只需切換模式,然後在下次執行時加入。
代理模式的 Notebook 工具
配置 Notebook
Jupyter 擴充套件為配置 Jupyter Notebook 的 Kernel 貢獻了工具。此工具確保已選擇 Kernel 並可供 Notebook 使用。這包括引導您完成建立虛擬環境(推薦方法)的過程,或提示您選擇現有的 Python 環境。
此工具可確保 LLM 能夠以最少的使用者互動在 Notebook 上執行操作,從而提高代理模式下的整體使用者體驗。
長時間執行的代理工作流
代理可以訪問內部 Notebook 摘要工具,以幫助它保持準確的上下文。當上下文變得太大而無法讓代理完成複雜操作時,該摘要也會包含在摘要對話歷史記錄中。
執行確認中的單元格預覽
當代理請求確認執行 Notebook 單元格時,會顯示該單元格中的程式碼片段。聊天檢視中的單元格連結現在也可以讓您直接導航到 Notebook 中的單元格。
原始碼管理
Copilot 編碼代理整合
藉助 Copilot 編碼代理,GitHub Copilot 可以像人類開發人員一樣獨立地在後臺完成任務。我們已擴充套件 GitHub Pull Requests 擴充套件,以便在 VS Code 中更輕鬆地為代理分配和跟蹤任務。
我們在擴充套件中添加了以下功能:
- 分配給 Copilot:從 VS Code 的問題或 PR 檢視中將拉取請求或問題分配給 Copilot。
- Copilot 代我執行 PR 查詢:快速檢視 Copilot 正在為您處理的所有拉取請求。
- PR 檢視:檢視 Copilot 編碼代理的狀態並在瀏覽器中開啟會話詳細資訊。

原始碼管理歷史項詳細資訊
根據使用者的大量需求,選擇原始碼管理圖檢視中的一項現在會顯示該歷史項的資源。您可以從 ... 選單中選擇樹檢視或列表視圖表示。
要使用多檔案差異編輯器開啟歷史項的所有資源,請在懸停時使用開啟更改操作。選擇圖檢視中的特定資源會僅為該資源開啟差異編輯器。選擇開啟檔案操作以開啟該特定版本的原始檔案。
將歷史項新增到聊天上下文
您現在可以將原始碼管理歷史項新增為聊天請求的上下文。當您想為聊天提示提供特定提交或拉取請求的內容作為上下文時,這可能很有用。

要將歷史項新增到聊天,請使用聊天檢視中的新增上下文 > 原始碼管理,然後選擇特定的歷史項。或者,右鍵單擊原始碼管理圖中的歷史項,然後從上下文選單中選擇Copilot > 將歷史項新增到聊天。
任務
例項策略
任務 runOptions 現在有一個 instancePolicy 屬性,該屬性決定了當任務達到其 instanceLimit 時會發生什麼。
選項包括 prompt(預設)、silent、terminateNewest、terminateOldest 和 warn。

終端
基於語言伺服器的終端建議
語言伺服器補全現在在終端中可用於互動式 Python REPL 會話。這帶來了您在編輯器中獲得的相同語言補全,現在在終端中。我們從對 Pylance 的 Python 支援開始,並計劃將來擴充套件到更多語言。
要嘗試一下,請確保以下設定已啟用:
- terminal.integrated.shellIntegration.enabled
- python.terminal.shellIntegration.enabled
- terminal.integrated.suggest.enabled
- python.analysis.supportAllPythonDocuments
遠端開發
遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
亮點包括:
- SSH 預連線指令碼
- 遠端資源管理器改進
您可以在遠端開發發行說明中瞭解有關這些功能的更多資訊。
對擴充套件的貢獻
Python
Python 聊天工具
Python 擴充套件現在包含以下聊天工具:“獲取 Python 環境資訊”、“獲取 Python 環境的可執行資訊”、“安裝 Python 包”和“配置 Python 環境”。您可以透過新增 #getPythonEnvironmentInfo #installPythonPackage 來在提示中直接引用它們,或者代理模式將自動呼叫適用的工具。這些工具可以無縫地根據檔案或工作區上下文檢測適用的環境資訊,並處理具有準確環境解析的包安裝。
“配置 Python 環境”工具可確保為工作區正確設定 Python 環境。這包括在需要時建立虛擬環境,並將其選作工作區的活動 Python 環境。
先前在 Python Environments 擴充套件(預覽版)中引入的工具已遷移到 Python 擴充套件,從而使所有安裝了 Python 擴充套件的使用者都可以使用這些工具。
從模板建立專案
Python Environments 擴充套件現在支援 Python 包和基本指令碼的專案建立,讓您可以繞過腳手架,更快地開始編碼。使用Python Envs:從模板建立專案命令選擇是要建立包還是指令碼。
對於包建立,您可以命名包,建立虛擬環境,並獲得一個腳手架專案,其中包括一個 tests 子資料夾、pyproject.toml、dev-requirements.txt 以及樣板 __main__.py 和 __init__.py 檔案。
對於指令碼,它會建立一個您選擇名稱的新 Python 檔案,幷包含樣板程式碼。
PyEnv 和 Poetry 支援
我們在 Python Environments 擴充套件中添加了對 pyenv(用於環境管理)和 poetry(用於包和環境管理)的支援。
GitHub 拉取請求
GitHub Pull Requests 擴充套件取得了更多進展,該擴充套件使您能夠處理、建立和管理拉取請求和問題。新功能包括:
- 私有儲存庫中的註釋中的影像現在顯示在拉取請求檔案註釋中。
- “通知”檢視現在預設顯示,但摺疊狀態。 -- 時間線中的問題和拉取請求連結以及問題/拉取請求正文中的連結現在將在 VS Code 中開啟,而不是轉到瀏覽器。
- “分配給我”查詢已從“拉取請求”檢視中刪除,並且可以使用設定
githubPullRequests.queries刪除“本地拉取請求分支”和“全部開啟”查詢。對於具有 Copilot 的儲存庫,當設定未配置時,會新增一個“Copilot 代我執行”查詢。 - Copilot 的“開始工作”、“停止工作”和“檢視會話”現在顯示在時間線中。
請參閱擴充套件的 0.112.0 版本發行說明,以瞭解其他亮點。
擴充套件開發
MCP 擴充套件 API
擴充套件現在可以釋出 MCP 伺服器集合。這使您可以將 MCP 伺服器與您的擴充套件捆綁在一起,或者構建能夠從其他來源動態發現 MCP 伺服器的擴充套件。請參閱我們的MCP 擴充套件開發指南或檢視MCP 擴充套件示例以瞭解更多資訊。
打包擴充套件時的秘密掃描
VSCE 現在在打包擴充套件時會掃描敏感資訊。如果在原始檔中檢測到任何潛在的敏感資訊(例如,API 金鑰、令牌、憑證或環境變數檔案,如 .env),VSCE 將在打包過程中顯示錯誤。這有助於您避免意外地將敏感資訊釋出到 Marketplace。請確保在釋出擴充套件之前檢查並解決任何錯誤。
如果您需要繞過特定檢查,可以在執行 VSCE 時使用 --allow-package-secrets <secret_type> 或 --allow-package-env-file 標誌。這些標誌允許您配置在打包過程中應跳過的哪些敏感資訊或環境變數檔案檢查。
Web 環境檢測
⚠️ 重大變更 ⚠️
設定:extensions.supportNodeGlobalNavigator
作為我們 Electron 35 執行時更新的一部分,Node.js 擴充套件主機已從 v20 更新到 v22。此更新增加了對桌面和遠端擴充套件主機中 navigator 全域性物件的支援。
此更改可能會對依賴 navigator 物件存在來檢測 Web 環境的擴充套件造成重大影響。
為了幫助擴充套件作者遷移,我們為 globalThis.navigator 建立了一個 polyfill,它被初始化為 undefined,以便您的擴充套件繼續正常工作。該 polyfill 受 extensions.supportNodeGlobalNavigator VS Code 設定的保護。預設情況下,此設定處於停用狀態,並且 polyfill 已生效。當您的擴充套件嘗試以這種方式訪問 navigator 時,我們會捕獲遙測資料並記錄錯誤(在擴充套件開發模式下)。
將來,此設定可能會預設啟用,因此我們敦促擴充套件作者遷移其程式碼以相容新的 navigator 全域性物件。請遵循以下步驟遷移您的程式碼
- 檢查擴充套件主機日誌,查詢
PendingMigrationError,該錯誤堆疊源自您的擴充套件。 - 根據需要,確保諸如
typeof navigator === 'object'之類的檢查遷移到typeof process === 'object' && process.versions.node。 - 啟用 extensions.supportNodeGlobalNavigator。
- 驗證擴充套件行為是否保持不變。
提議的 API
身份驗證提供程式:MCP 支援的授權伺服器
此 API 提案目前僅在 MCP 身份驗證中使用,它使您的 AuthenticationProvider 能夠宣告與之關聯的授權伺服器。
例如,如果您檢視 GitHub 身份驗證提供程式,它會在 authorizationServerGlobs 屬性中包含典型的 GitHub 授權 URL,該屬性位於 auth provider contribution 中。
{
"label": "GitHub",
"id": "github",
"authorizationServerGlobs": ["https://github.com/login/oauth"]
}
此屬性用於啟用您的擴充套件 - 如果請求的授權伺服器匹配,您的擴充套件將被啟用。
此外,在註冊身份驗證提供程式時,您必須包含最終確定的授權伺服器 URL globs。就像 GitHub 身份驗證在此處所做的那樣 一樣。
vscode.authentication.registerAuthenticationProvider(
type,
this._githubServer.friendlyName,
this,
{
supportsMultipleAccounts: true,
supportedAuthorizationServers: [
ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
]
}
);
一個更復雜的例子是 Microsoft 身份驗證。授權伺服器取決於放置在路徑中的租戶。因此,為此,我們在 contribution 中使用萬用字元,
{
"label": "Microsoft",
"id": "microsoft",
"authorizationServerGlobs": [
"https://login.microsoftonline.com/*/v2.0"
]
},
並在 registration 中。
authentication.registerAuthenticationProvider('microsoft', 'Microsoft', authProvider, {
supportsMultipleAccounts: true,
supportedAuthorizationServers: [Uri.parse('https://login.microsoftonline.com/*/v2.0')]
});
然後,當呼叫方在請求身份驗證時傳遞授權伺服器 URL 時,該 URL 透過已存在的 AuthenticationProviderSessionOptions 傳遞給 getSessions 和 createSession 函式。
如前所述,此功能目前用於 MCP 支援,我們從 MCP 伺服器接收要進行身份驗證的授權伺服器 URL。然後將該 URL 對映到身份驗證提供程式,如果沒有,則為該授權伺服器動態建立一個身份驗證提供程式。
完整的 API 提案可以在 vscode repo 中找到,我們很樂意在 GitHub issue 中聽到您的反饋!
工程
Electron 35 更新
在此版本中,我們將 Electron 35 更新推廣到我們的穩定版使用者。此更新包含 Chromium 134.0.6998.205 和 Node.js 22.15.1。我們要感謝所有在 Insiders 版本上進行早期測試並提供反饋的人。
在真實擴充套件中採用 ESM
上個版本,我們宣佈了對 JavaScript 模組 (ESM) 的支援。這允許擴充套件使用 import 和 export 語句,但目前僅限於 targeting NodeJS 擴充套件主機。
本月,我們使用 GitHub Issue Notebooks 進行了實際採用。這並非易事,因為此擴充套件可以在 NodeJS 擴充套件主機(支援 ESM 擴充套件)和 Web Worker 擴充套件主機中執行,而後者目前不支援 ESM 擴充套件。這需要更復雜的 bundler 配置,您可以從其 esbuild-config 中獲取靈感。
值得注意的修復
- 250077 - 基於 Tree-Sitter 的語法高亮依賴於模型服務
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
拉取請求
對 vscode 的貢獻
- @alpalla (Alessio Palladino):向 task runOptions 新增 task instancePolicy PR ##117129
- @0xEbrahim (Ebrahim El-Sayed):修復拼寫和語法錯誤 PR #248814
- @a-stewart (Anthony Stewart):對於編輯器字型選擇,如果未檢測到作業系統,則假定為 Linux PR #248133
- @adnval (kevin):新增已安裝過濾器 PR #248055
- @bhack:新增到新的源格式和強制的 signed-by PR #239390
- @dylanchu:TerminalTaskSystem:新增對 nushell 的支援 PR #238440
- @eronnen (Ely Ronnen)
- 使除錯控制檯的最大行數可配置 PR #245915
- 更新 log tmLanguage 來自 vscode-logfile-highlighter 3.4.1 PR #249046
- 反彙編檢視:不顯示無效記憶體指令 PR #249779
- 反彙編檢視:處理除錯介面卡返回的負行高 PR #250081
- @gabritto (Gabriela Araujo Britto):[typescript-language-features] 新增最大懸停長度的配置 PR #248181
- @hickford (Mickford):無論是否換行,都能正確高亮活動行號 PR #240029
- @imfing (Xin):fix: 為 DynamicAuthProvider 有條件地附加作用域引數到授權 URL PR #250084
- @jeanp413 (Jean Pierre)
- 修復當編輯器切換過快時 timeline git 請求未被取消的問題 PR #244335
- 修復 vscode.env.onDidChangeShell 在 webworker 擴充套件主機中未觸發的問題 PR #249824
- @joyceerhl (Joyce Er)
- 重構:在 chat list renderer 中重用 chat attachment widgets PR #248163
- 修復:在 chat attachments content part 中註冊 widgets PR #249054
- 修復:為歷史 chat attachments 設定 content reference description PR #249112
- 修復:為 MCP 工具確認使用 markdown string PR #249497
- 修復:如果 edit session identity provider 修改 edit session payload,則允許 Continue On PR #250057
- @JoyceGu (Joyce Gu):Joycegu/add genai packages 05222025 PR #249589
- @mawosoft (Matthias Wolf):修復嚴格模式下 PowerShell shell 整合問題 PR #248625
- @mortalYoung (野迂迂):fix(search):修復展開全部功能無效的問題 PR #248207
- @nojaf (Florian Verdonck):關閉所有未使用的埠命令 PR #244245
- @nomike (nomike):增強 GitHub 釋出邏輯以處理重新命名儲存庫 PR #245024
- @Parasaran-Python (Parasaran):修復 #248222 | 重寫正則表示式以允許相對路徑中存在多個前導點 PR #248340
- @pelmers-db (Peter Elmers):修復 Picker onDidChangeValue 處理程式中的取消邏輯 (修復 #247945) PR #247946
- @randy3k (Randy Lai):更新 R 語法上游儲存庫 PR #248880
- @rbuckton (Ron Buckton):新增強制型別轉換以消除因更新 DOM 型別導致的錯誤 PR #248346
- @RedCMD (RedCMD):支援
@builtin @disabledPR #235885 - @xzakharov (Oleksandr Zakharov):fix(devcontainer):升級 rust 功能以修復容器構建 PR #250430
- @y0sh1ne (y0sh1ne):修復帶有多個選擇的複製訊息 (#_247927) PR #248172
對 vscode-copilot-release 的貢獻
- @joyceerhl (Joyce Er):chore:更新 bug 報告模板 PR #9702
對 vscode-css-languageservice 的貢獻
- @Legend-Master (Tony):新增基本媒體查詢自動完成支援 PR #443
- @rgant (J Rob Gant)
對 vscode-custom-data 的貢獻
- @Legend-Master (Tony):新增媒體查詢支援 PR #118
對 vscode-eslint 的貢獻
對 vscode-generator-code 的貢獻
- @SamB (Samuel Bronson):不連結到 vscode 文件頂部 PR #518
對 vscode-js-debug 的貢獻
- @kdy1 (Donny/강동윤):chore:修復 turbopack 的預設 URL PR #2223
- @mikaelwaltersson (Mikael Waltersson):修復 WasmWorker 例項被銷燬但從未在頁面重新載入時重新生成的問題 + 在 WASM 記憶體為 SharedArrayBuffer 時寫入記憶體 PR #2211
對 vscode-jupyter 的貢獻
- @WillHirsch:降低使用感嘆號而不是百分號進行包安裝的診斷嚴重性 PR #16601
對 vscode-languageserver-node 的貢獻
- @martijnwalraven (Martijn Walraven):修復
workspace/textDocumentContent/refresh請求 PR #1637
對 vscode-markdown-tm-grammar 的貢獻
- @Barros1902 (Tomás Barros ):修復 Markdown 語法中的刪除線下劃線 (修復 microsoft#173) PR #174
對 vscode-prompt-tsx 的貢獻
- @joyceerhl (Joyce Er):chore:npm audit fix PR #175
對 vscode-pull-request-github 的貢獻
- @kabel (Kevin Abel):允許在沒有私有電子郵件時使用已驗證的 GitHub 電子郵件 PR #6921
對 vscode-python-debugger 的貢獻
- @kycutler (Kyle Cutler):修復嘗試讀取目錄時發生的
TypeErrorPR #692
對 debug-adapter-protocol 的貢獻
- @DrSergei:修復一些拼寫錯誤 PR #543
- @robertoaloi (Roberto Aloi):新增 Erlang EDB Debugger PR #544
對 language-server-protocol 的貢獻
- @asukaminato0721 (Asuka Minato)
- @brynne8 (Brynne Taylor):修復 glob 模式規範中的拼寫錯誤 PR #2132
- @leon-bckl (Leon):新增 c++20 lsp-framework PR #2144
- @nieomylnieja (Mateusz Hawrus):chore:將 Nobl9 VSCode 擴充套件新增到 servers.md PR #2136
- @zonuexe (USAMI Kenta):為 Emacs 新增 LSP 客戶端 PR #2145
對 lsprotocol 的貢獻
- @debonte (Erik De Bonte)
- @myleshyson (Myles Hyson):將 golang 新增到外掛表中 PR #418