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 silicon | 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 上的更新。Insiders:想要盡快試用新功能嗎?您可以下載每晚建置的 Insiders 版本,並在最新更新可用時立即試用。
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 提取要求擴充功能
- 將帳戶 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 現在支援檔案事件。如果您在瀏覽器外部變更已開啟工作區的檔案和資料夾,這些變更會立即反映在瀏覽器內部。
此功能利用新的 FileSystemObserver
介面,該介面建議作為 Web 的新 API。
擴充功能貢獻
Copilot 擴充功能展示
在此里程碑中,團隊致力於建置多個擴充功能,以展示 VS Code 中的 Copilot 擴充性。這些擴充功能示範了下列功能
- 聊天參與者和工具 API
- prompt-tsx
- 如何運用 GitHub Copilot 提供的語言模型
試用這些擴充功能,看看如何在您自己的擴充功能中擴充 Copilot。
擴充功能 | 連結 |
---|---|
GitHub 提取要求 | Marketplace |
Copilot 的網頁搜尋 | Marketplace、原始碼 |
使用 Copilot 產生 MermAId 圖表 | Marketplace |
Copilot 的資料分析 | Marketplace、原始碼 |
VS Code Commander | Marketplace |
Copilot 預覽版的視覺功能 | Marketplace |
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 中取得來自 Web 的最新且相關資訊。
這由兩個不同的搜尋引擎之一提供支援,由 websearch.preferredEngine 設定
作為使用者,您需要從其中一項服務取得 API 金鑰才能使用此擴充功能。首次使用時,它會要求您提供該金鑰,並使用 VS Code 的內建秘密儲存體儲存它,並且也可以透過 VS Code 的驗證堆疊進行管理,就像您對 GitHub 帳戶所做的那樣。
聊天參與者
此擴充功能貢獻了 @websearch
聊天參與者,它可以處理可能需要來自網際網路的即時資訊的問題。您可以使用 @websearch vscode 中何時推出工作區信任?
手動叫用它
聊天工具
此擴充功能也貢獻了 #websearch
聊天語言模型工具,它與參與者類似,但適用於在其他聊天參與者中提供來自 Web 的環境脈絡。例如
@workspace /new #websearch 使用最流行的架構建立以 Python 撰寫的新 Web 應用程式
此外,如果您正在開發自己的聊天參與者或工具,則可以透過 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 檔案中。
您可以從 Marketplace 下載擴充功能,原始碼在此處的 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 聊天中的內建影像流程。
聊天中的視覺功能
目前,您可以使用自己的 OpenAI、Azure OpenAI、Anthropic 或 Gemini 金鑰,在「聊天」檢視中體驗影像附件流程。首先,您可以輕鬆地從剪貼簿附加影像,或將影像直接拖曳到聊天中。
佈景主題:藍寶石 (在 vscode.dev 上預覽)
具有快速修復的視覺功能
此外,您可以使用提供的程式碼動作,為 Markdown、HTML、JSX 或 TSX 文件中的影像產生或精進替代文字,從而簡化合併描述性文字以獲得更好的環境脈絡和協助工具的流程。替代文字快速修復適用於工作區中的影像和影像 URL。
此擴充功能使用建議的 API ChatReferenceBinaryData
。歡迎查看原始碼中如何使用它的範例,在此處的 GitHub 上提供。
Python
原生 REPL 變數檢視
原生 Python REPL 現在為內建「變數」檢視提供最新的變數。這可讓您深入瞭解直譯器的狀態,因為您可以從檔案或透過 REPL 輸入方塊執行程式碼。
使用 Pylance 產生文件字串
現在,您可以使用 Pylance 的文件字串範本產生功能,更方便地為您的 Python 程式碼產生文件!您可以透過輸入 """
或 '''
、按下 Ctrl+空白鍵,或選取燈泡以叫用 產生文件字串 程式碼動作,為類別或方法產生文件字串範本。產生的文件字串包含函式描述、參數、參數類型、傳回值和傳回值類型的欄位。
這項功能目前還在實驗性設定中,但我們期待很快能將其設為預設體驗。您今天就可以啟用 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 Speech 擴充功能已更新至 Azure Speech SDK 的八月版本,並附帶用於語音轉文字辨識的更新模型。對於 VS Code 中的語音轉文字整合(例如 Copilot Chat),您應該會看到此更新帶來更好的結果。
註解執行緒 collapsibleState
即使在註解執行緒已經顯示之後,也可以使用新的 CommentThread.collapsibleState
屬性來變更 CommentThread
的展開/摺疊狀態。先前,此屬性僅在首次顯示註解執行緒時才會被採用。
歡迎檢視中的 Codicons
歡迎檢視現在支援呈現 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 預算。
移除 AMD 程式碼以及在 Web 中更多地使用 ESM
我們從我們的原始碼中移除了 AMD(非同步模組定義)的最後痕跡,主要來自我們仍然保留的組建腳本,以便在恢復版本需要時支援 AMD。
此外,https://vscode.dev 現在也完全僅使用 ESM (ECMAScript Modules) 執行。
遷移到 ESLint 9
我們已更新主要的 VS Code 儲存庫和我們所有的 擴充功能範例 以使用 ESLint 9。這包括遷移我們所有的 ESLint 配置以使用現代 flat configs。
Electron 32 更新
在這個里程碑中,我們正在將 Electron 32 更新推廣給穩定版本的用戶。此更新隨附 Chromium 128.0.6613.186 和 Node.js 20.18.0。我們要感謝所有在 Insiders 組建上自行託管並提供早期回饋的每個人。
值得注意的修復
- 177046 在擴充功能面板中搜尋後會崩潰
謝謝
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
Issue 追蹤
對我們的 Issue 追蹤的貢獻
Pull requests
對 vscode
的貢獻
- @Abrifq (Arda Aydın): Change
window.experimentalControlOverlay
's scope to application PR #230593 - @asemdreibati (Asem Dreibati): handle edge case in slice function in Iterable namespace (#_230683) PR #232134
- @BABA983 (BABA)
- Add developer action to show gpu status PR #222291
- Fix debug console is cleared on style changed PR #224694
- Support open in editor in git editor PR #226967
- @Bistard (SIHAN LI): Fix typo: context view anchor option might be dismissed when using
||
PR #228896 - @cobey (Cody Beyer): added mistral ai npm package PR #229865
- @elias-pap (Elias Papavasileiou): fix: improve settings descriptions for actions triggered on save PR #230052
- @gjsjohnmurray (John Murray): Correct Menu Contexts info on extension's Commands page (fix #229258) PR #229260
- @hamirmahal (Hamir Mahal): style: simplify string formatting for readability PR #231763
- @injust (Justin Su): Fix "in none full screen mode" typo PR #229914
- @jamesharris-garmin (James Harris): Fix missing __dirname in --locate-shell-integration-path PR #231423
- @jeanp413 (Jean Pierre): Fix if logOutputChannel is created again after being disposed, it will disappear PR #225709
- @Kaidesuyoo (Kaidesuyo): Performance optimization PR #230804
- @kkshinkai (Kk Shinkai): Correctly trigger the
onDidAddListener
event in emitter options PR #230259 - @Parasaran-Python (Parasaran): 228640: Hiding prelaunch task popup if the setting to hide it is enabled PR #231225
- @quiple (Minseo Lee): Change Korean font priority PR #230195
- @r3m0t (Tomer Chachamu): Fix scrolling of Test Results when a new test starts (fixes #229531) PR #229532
- @sandersn (Nathan Shively-Sanders): TS extension: register call to CopilotRelated with copilot extension PR #228610
- @ShadowRZ (夜坂雅): fix: Use a proper desktop name in package.json PR #231472
- @trevor-scheer (Trevor Scheer): Marker message white-space
nowrap
->pre
PR #229454 - @vietanhtwdk: rerender on resize stickyscroll PR #227400
- @yanglb (Yanblb): add type checking to decorators PR #230626
對 vscode-docs
的貢獻
- @Cecil0o0 (hj)
- @echofly: Update v1_94.md PR #7677
- @ghosted-sound
- @gjsjohnmurray (John Murray)
- @oleschri: add argument --update-extensions PR #7681
- @partev: fix URL redirect PR #7640
- @ptrptrd: docs: remove double entries in theme color references PR #7639
- @RonakRahane: Added documentation for new Code Coverage in C# Fixes #7635 PR #7664
對 vscode-js-debug
的貢獻
- @marcusball (Marcus Ball): feat: use
remoteHostHeader
option when looking up websocket address PR #2111
對 vscode-languageserver-node
的貢獻
- @DanTup (Danny Tuppeny): Add support for CompletionList "applyKind" to control how defaults and per-item commitCharacters/data are combined PR #1558
對 vscode-mypy
的貢獻
- @jwhitaker-gridcog (Jarrad): run mypy in the directory of the nearest pyproject.toml or mypy.ini PR #316
對 vscode-vsce
的貢獻
- @andrewlayer: Added unpublish to api.ts PR #1061
- @deribaucourt (Enguerrand de Ribaucourt): Fix regression with workdir symlinks PR #1053
- @dtivel (Damon Tivel): Quote
filename
value inContent-Disposition
header PR #1060
對 language-server-protocol
的貢獻
- @asukaminato0721 (Asuka Minato)
- @DanTup (Danny Tuppeny): Add support for
completionList.applyKind
to determine how values fromcompletionList.itemDefaults
andcompletion
are combined. PR #2018 - @DavyLandman (Davy Landman): Added Rascal to relevant LSP implementor sections PR #2029
- @g-plane (Pig Fang): fix punctuation typo PR #2048
- @nthykier (Niels Thykier): Add the
debputy
language server PR #2044 - @RainCmd (渴望蓝天): Add Rain language server to LSP PR #2039
- @WilsonZiweiWang (ziweiwang): Add BitBake language server PR #2049
- @yasmewad (Yash Mewada): Add Smithy language server links to LSP PR #2036
對 lsprotocol
的貢獻
- @nobodywasishere (Margret Riegert): Add Crystal plugin to README PR #403
對 tolerant-php-parser
的貢獻
- @TysonAndre (Tyson Andre): Fix php 8.4 notices about implicitly nullable parameters PR #410