2025 年 5 月(版本 1.101)
釋出日期:2025 年 6 月 12 日
安全更新:以下擴充套件程式有安全更新:ms-python.python。
更新 1.101.1:此更新解決了這些問題。
更新 1.101.2:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | 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。
您也可以在那裡登出。對於這些伺服器,我們不僅支援程式碼授權流程,還支援裝置程式碼流程(如果您的授權伺服器支援)。
我們還引入了命令Authentication: Remove Dynamic Authentication Providers
,允許您清理任何這些動態客戶端註冊。這將丟棄頒發給 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" }
+ },
聊天使用者體驗改進
我們根據您的反饋不斷努力改進 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 視窗。
- 在浮動視窗中啟動新的聊天會話。
獲取工具確認
fetch 工具使您能夠從網頁中提取資訊。我們已向確認新增警告訊息,以告知您潛在的提示注入。
自定義更多內建工具
現在可以在代理模式或自定義模式下啟用或停用所有內建工具。例如,停用editFiles
以禁止代理模式直接編輯檔案,或停用runCommands
以執行終端命令。
在代理模式下,選擇“配置工具”按鈕以開啟工具選擇器,然後選擇您想要的工具集。
此選單中的某些條目表示分組多個工具的工具集。例如,我們為模型提供了多個編輯或建立文字檔案和筆記本的工具,這些工具也可能因模型系列而異,而editFiles
將所有這些工具分組在一起。
傳送元素到聊天(實驗性)
上個月,我們添加了一個新的實驗性功能,您可以透過它開啟簡單瀏覽器並選擇網頁元素以從嵌入式瀏覽器新增到聊天中。
隨著我們繼續改進此功能,我們還在Live Preview 擴充套件程式中添加了選擇網頁元素的支援。透過下載該擴充套件程式並從任何 HTML 檔案啟動即時伺服器來試用此功能。
輔助功能
需要使用者操作聲音
我們添加了一個輔助功能訊號,用於指示聊天何時需要使用者操作。這是選擇加入的,因為我們正在微調聲音。您可以使用accessibility.signals.chatUserActionRequired 配置此行為。
新程式碼操作聲音
我們引入了不同的聲音,用於:
代理模式輔助功能改進
我們現在在可訪問檢視中包含有關確認對話方塊的豐富資訊,涵蓋過去的工具執行、當前的工具執行和任何待處理的確認。這包括將使用的輸入。
當響應中出現確認對話方塊時,操作的標題現在包含在相應程式碼塊的 ARIA 標籤、響應的 ARIA 標籤和即時警報中,以便為螢幕閱讀器使用者提供更好的上下文。
編輯器體驗
邊輸入邊查詢
邊輸入邊查詢一直是查詢控制元件的預設行為,但現在您可以控制是否保持這種方式或停用它,以便它只在按 Enter 後執行搜尋。
帶有原生視窗標題欄的自定義選單
您現在可以使用window.menuStyle 設定指定用於 Windows 和 Linux 上的選單欄和上下文選單以及 macOS 上的上下文選單的選單樣式。
native
:由作業系統渲染custom
:由 VS Code 渲染inherit
:與由window.titleBarStyle 設定的標題欄樣式匹配(允許您使用帶有自定義選單欄和上下文選單的原生標題欄)。
Linux 原生視窗上下文選單
當您在自定義標題欄中右鍵單擊應用程式圖示時,我們現在支援原生視窗上下文選單。
程序資源管理器 Web 支援
程序資源管理器已轉換為使用我們在工作臺中用於編輯器視窗的浮動視窗基礎結構。因此,這也意味著我們現在在連線到遠端(例如在 Codespaces 中)時支援 Web 中的程序資源管理器。
Windows Shell 環境發現
我們現在已為 Windows 上的 PowerShell 實現了 shell 環境發現。這意味著 VS Code 繼承了 PowerShell 配置檔案中配置的任何環境,例如 Node.js 透過各種版本管理器配置的 PATH 更新。
未釋出的擴充套件程式警告
當已安裝的擴充套件程式不再在 Marketplace 中可用時,現在會顯示警告指示器,幫助您識別可能已取消釋出或刪除的問題擴充套件程式。
設定搜尋建議(預覽)
設定:workbench.settings.showAISearchToggle
在此里程碑中,我們在設定編輯器中添加了一個切換開關,可啟動 AI 搜尋以查詢語義相似的結果,而不是基於字串匹配的結果。例如,當您搜尋“增加文字大小”時,AI 搜尋會找到editor.fontSize
設定。
要檢視切換開關,請啟用該設定並重新載入 VS Code。我們還在識別和修復一些不太準確的設定搜尋結果,我們歡迎您提供關於自然語言查詢未能找到預期設定的反饋。
對於下一個里程碑,我們還在考慮刪除該切換開關,並將實驗性設定更改為控制何時將較慢的 AI 搜尋結果直接附加到列表末尾的設定。
搜尋關鍵詞建議(預覽)
設定:search.searchView.keywordSuggestions
上個月,我們在搜尋檢視中引入了關鍵詞建議,以幫助您更快地找到相關結果。我們現在已顯著提高了建議的效能,因此您將比以前快約 5 倍地看到結果。
我們還將該設定從聊天擴充套件程式移到了 VS Code 核心,並將其從github.copilot.chat.search.keywordSuggestions
重新命名為search.searchView.keywordSuggestions。
語義搜尋行為選項(預覽)
設定:search.searchView.semanticSearchBehavior
透過搜尋檢視中的語義搜尋,您可以根據查詢的含義而不是僅僅匹配文字來獲取結果。如果您不知道要搜尋的確切術語,這尤其有用。
預設情況下,語義搜尋僅在您明確請求時執行。我們現在添加了一個設定來控制何時觸發語義搜尋:
manual
(預設):僅在透過 UI 手動觸發時執行語義搜尋(⌘I (Windows、Linux Ctrl+I))runOnEmpty
:當文字搜尋沒有結果時自動執行語義搜尋auto
:始終與每個搜尋查詢的文字搜尋並行執行語義搜尋
編輯上下文
我們已在 Stable 版中預設啟用了editor.editContext 設定。這意味著編輯器的輸入現在由 EditContext API 提供支援。這修復了許多錯誤,尤其是與 IME 體驗相關的錯誤,並且將來將為編輯器內更通用和強大的輸入體驗鋪平道路。
有關 EditContext API 的更多詳細資訊,請參閱MDN 文件。
程式碼編輯
NES 匯入建議
設定:github.copilot.nextEditSuggestions.fixes
上個月,我們引入了對下一次編輯建議的支援,以自動建議為 TypeScript 和 JavaScript 新增缺失的匯入語句。在此版本中,我們改進了這些建議的準確性和可靠性,並將支援擴充套件到 Python 檔案。
NES 已為所有 VS Code Insiders 使用者啟用,並將在 6 月逐步預設啟用 Stable 使用者。您可以隨時透過其設定自行啟用 NES。
NES 接受流程
透過改進的鍵盤導航,接受下一個編輯建議現在更加無縫。一旦您接受了一個建議,只要您沒有再次開始輸入,您就可以透過按一次Tab鍵來繼續接受後續建議。一旦您開始輸入,請按Tab鍵,首先將游標移動到下一個建議,然後才能接受它。
Notebook
代理單元格執行的跟隨模式
設定:github.copilot.chat.notebook.followCellExecution.enabled
在跟隨模式下,筆記本檢視將自動滾動到代理當前正在執行的單元格。使用github.copilot.chat.notebook.followCellExecution.enabled 設定來啟用或停用 Jupyter 筆記本中代理單元格執行的跟隨模式。
一旦代理使用了執行單元格工具,筆記本工具欄就會更新一個圖釘圖示,指示跟隨模式的狀態。您可以在代理響應過程中切換行為,而無需更改基本設定值,從而允許您即時跟蹤代理的工作,並在您想要檢視特定程式碼部分時將其關閉,同時代理繼續迭代。當您希望再次跟隨時,只需切換模式,然後在下一次執行時加入。
代理模式的筆記本工具
配置筆記本
Jupyter 擴充套件程式提供了用於配置 Jupyter 筆記本核心的工具。此工具確保已選擇核心並已準備好在筆記本中使用。這包括在需要時引導您完成建立虛擬環境的過程(推薦方法),或提示您選擇現有的 Python 環境。
此工具確保 LLM 可以在最少的使用者互動下對筆記本執行操作,例如執行單元格,從而提高代理模式下的整體使用者體驗。
長時間執行的代理工作流
代理可以訪問內部筆記本摘要工具,以幫助其透過準確的上下文保持正常執行。當上下文變得太大以至於無法讓代理繼續執行復雜操作時,該摘要也會包含在會話歷史記錄摘要中。
執行確認中的單元格預覽
當代理請求確認執行該單元格時,會顯示筆記本單元格的程式碼片段。聊天檢視中的單元格連結現在還可以讓您直接導航到筆記本中的單元格。
原始碼管理
Copilot 編碼代理整合
藉助 Copilot 編碼代理,GitHub Copilot 可以在後臺獨立工作以完成任務,就像人類開發人員一樣。我們擴充套件了 GitHub 拉取請求擴充套件程式,使其更容易在 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 環境擴充套件程式(預覽)中引入的工具已遷移到 Python 擴充套件程式,從而使所有安裝了 Python 擴充套件程式的使用者都可以使用這些工具。
從模板建立專案
Python 環境擴充套件程式現在支援為 Python 包和基本指令碼建立專案,允許您繞過腳手架並更快地開始編碼。使用命令“Python 環境:從模板建立專案”來選擇要建立包還是指令碼。
對於包建立,您可以命名包,建立虛擬環境,並接收一個包含測試子資料夾、pyproject.toml
、dev-requirements.txt
以及樣板__main__.py
和__init__.py
檔案的腳手架專案。
對於指令碼,它會建立一個新 Python 檔案,其中包含您選擇的名稱和樣板程式碼。
PyEnv 和 Poetry 支援
我們在Python 環境擴充套件程式中添加了對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
Node.js 擴充套件主機現在已從 v20 更新到 v22,作為我們Electron 35 執行時更新的一部分。此更新帶來了對桌面和遠端擴充套件主機中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 支援的授權伺服器
目前僅在MCP 身份驗證中利用,此 API 提案使您的AuthenticationProvider
能夠宣告與其關聯的授權伺服器。
例如,如果您檢視 GitHub 身份驗證提供程式,它在身份驗證提供程式貢獻的 authorizationServerGlobs 屬性中包含典型的 GitHub 授權 URL。
{
"label": "GitHub",
"id": "github",
"authorizationServerGlobs": ["https://github.com/login/oauth"]
}
此屬性用於啟用您的擴充套件程式 - 如果請求的授權伺服器匹配,您的擴充套件程式將被啟用。
此外,註冊身份驗證提供程式時,您必須包含最終的授權伺服器 URL glob。就像GitHub 身份驗證在此處所做的那樣。
vscode.authentication.registerAuthenticationProvider(
type,
this._githubServer.friendlyName,
this,
{
supportsMultipleAccounts: true,
supportedAuthorizationServers: [
ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
]
}
);
對於更復雜的示例,請檢視 Microsoft 身份驗證。授權伺服器取決於租戶是否放置在路徑中。因此,對於這種情況,我們在貢獻中使用萬用字元。
{
"label": "Microsoft",
"id": "microsoft",
"authorizationServerGlobs": [
"https://login.microsoftonline.com/*/v2.0"
]
},
並在註冊中。
authentication.registerAuthenticationProvider('microsoft', 'Microsoft', authProvider, {
supportsMultipleAccounts: true,
supportedAuthorizationServers: [Uri.parse('https://login.microsoftonline.com/*/v2.0')]
});
然後,當呼叫方在請求身份驗證時傳入授權伺服器 URL 時,它會透過已經存在的AuthenticationProviderSessionOptions
傳遞給getSessions
和createSession
函式。
如前所述,此功能目前用於 MCP 支援,我們從 MCP 伺服器接收用於身份驗證的授權伺服器 URL。然後將該 URL 對映到身份驗證提供程式,或者如果不存在,則為該身份驗證伺服器動態建立一個身份驗證提供程式。
完整的 API 提案可在vscode 儲存庫中找到,我們很樂意在GitHub 問題中聽取您的反饋!
工程
Electron 35 更新
在此里程碑中,我們將 Electron 35 更新推廣到 Stable 版本的使用者。此更新附帶 Chromium 134.0.6998.205 和 Node.js 22.15.1。我們要感謝所有在 Insiders 版本上自託管並提供早期反饋的人。
在真實世界擴充套件中採用 ESM
上個月,我們宣佈了對 JavaScript 模組 (ESM) 的支援。這使擴充套件能夠使用import
和export
語句,但目前僅當面向 NodeJS 擴充套件主機時。
本月,我們透過GitHub Issue Notebooks進行了真實世界的採用。這並非易事,因為此擴充套件程式可以在 NodeJS 擴充套件主機(支援 ESM 擴充套件程式)和 Web Worker 擴充套件主機(目前不支援 ESM 擴充套件程式)中執行。這需要更復雜的打包器配置,您可能希望從其esbuild-config中獲取靈感。
值得注意的修復
- 250077 - 基於 Tree-Sitter 的語法高亮取決於模型服務。
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
拉取請求
對 vscode
的貢獻
- @alpalla (Alessio Palladino):向任務 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
- 從 vscode-logfile-highlighter 3.4.1 更新日誌 tmLanguage PR #249046
- 反彙編檢視:不顯示無效記憶體指令 PR #249779
- 反彙編檢視:處理除錯介面卡返回的負行高 PR #250081
- @gabritto (Gabriela Araujo Britto):[typescript-language-features] 新增最大懸停長度配置 PR #248181
- @hickford (M Hickford):無論是否換行,都正確高亮活動行號 PR #240029
- @imfing (Xin):修復:為 DynamicAuthProvider 有條件地追加授權 URL 中的範圍引數 PR #250084
- @jeanp413 (Jean Pierre)
- 修復切換編輯器過快時時間軸 git 請求未取消 PR #244335
- 修復 vscode.env.onDidChangeShell 未在 webworker 擴充套件主機中觸發 PR #249824
- @joyceerhl (Joyce Er)
- 重構:在聊天列表渲染器中重用聊天附件小部件 PR #248163
- 修復:在聊天附件內容部分註冊小部件 PR #249054
- 修復:在歷史聊天附件上設定內容引用描述 PR #249112
- 修復:對 MCP 工具確認使用 markdown 字串 PR #249497
- 修復:如果編輯會話身份提供程式改變編輯會話負載,則允許繼續 PR #250057
- @JoyceGu (Joyce Gu):Joycegu/add genai packages 05222025 PR #249589
- @mawosoft (Matthias Wolf):修復在嚴格模式下啟用 PowerShell shell 整合的問題。 PR #248625
- @mortalYoung (野迂迂):修復(搜尋):修復全部展開不起作用 PR #248207
- @nojaf (Florian Verdonck):關閉所有未使用的埠命令 PR #244245
- @nomike (nomike):增強 GithHub 釋出邏輯以處理重新命名的儲存庫 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 @disabled
PR #235885 - @xzakharov (Oleksandr Zakharov):修復(devcontainer):提高 rust 功能以修復容器構建 PR #250430
- @y0sh1ne (y0sh1ne):修復多選時複製訊息的問題 (#_247927) PR #248172
對vscode-copilot-release
的貢獻
- @joyceerhl (Joyce Er):chore:更新錯誤報告模板 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 電子郵件時允許已驗證的 GitHub 電子郵件 PR #6921
對 vscode-python-debugger
的貢獻
- @kycutler (Kyle Cutler):修復嘗試讀取目錄時的
TypeError
PR #692
對 debug-adapter-protocol
的貢獻
- @DrSergei:修復一些拼寫錯誤 PR #543
- @robertoaloi (Roberto Aloi):新增 Erlang EDB 偵錯程式 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