IntelliCode 小組完成:以您的程式碼為基礎的 AI 輔助 IntelliSense

使用 IntelliCode 小組模型完成,根據您的 C# 和 C++ 程式碼基底取得 AI 輔助的 IntelliSense 建議。 小組完成在處理您自己的類型或網域特定程式庫時很有用,因為 IntelliCode 的基礎模型建議僅以從開放原始碼GitHub存放庫學習的模式為基礎。 如果您正在處理的程式碼不在該開放原始碼存放庫中,基底建議對您而言並不實用。 如果您要在 Visual Studio 中撰寫 C# 和 C++ 程式碼,請使用 IntelliCode 從其程式碼學習模式,以針對您的程式碼量身打造建議。

IntelliCode 模型是一組規則的封裝,可讓您根據程式碼分析預測 IntelliSense 清單中的一些實用資訊 (。例如,IntelliSense 清單中的建議) 。 IntelliCode 會使用與 IntelliCode 基底模型相同的學習程式來建立小組模型,但會以您自己的程式碼定型。 您提供以說明使用模式的程式碼越多,您的小組模型將提供更多有用的建議。

為了建置您的小組模型,我們會擷取摘要檔案,其中包含您類型和其使用方式的中繼資料,並 安全地將其上傳 至我們的服務。

如何套用模型

IntelliCode 藉由合併以下各項,從多個模型產生建議:

  • 您所使用的語言基底模型, (以數千個公用GitHub存放庫) 定型。
  • 您已定型的任何小組模型。
  • 與您正在處理之 Git 存放庫相關聯的任何小組模型。

您不需要管理哪些模型會套用至哪個解決方案或程式碼基底,因為 IntelliCode 會負責處理此作業。

小組完成模型的類型

有兩種方式可以取得小組完成模型:

  1. 存放庫關聯:模型會系結至存放庫。 所有可以複製和編輯存放庫的使用者都會獲得模型的自動存取權。 您的程式碼基底必須位於 Git 原始檔控制之下,並使用來自 CI 組建的 Azure Pipelines TaskGitHub Action推送至遠端,以建立與存放庫相關聯的模型。

  2. 機器相關聯:模型只能在定型的電腦上使用。

存放庫相關聯的小組模型

存放庫相關聯的小組模型可供使用 Azure Pipelines 或 GitHub Actions 來訓練這些模型的使用者。

共用與存放庫相關聯的模型

存放庫相關聯的模型會自動與同一個程式碼基底中工作的其他使用者共用,並已在Visual Studio中自動取得小組模型。 選取[工具>][選項][>IntelelliCodeAcquire>小組模型完成],以啟用自動擷取。

當您複製並開啟已定型的程式碼基底模型時,會下載並啟用與設定的 Git 遠端存放庫相關聯的任何模型。 如果您正在處理常式代碼基底的分支,請將上游程式碼基底新增為遠端存放庫以取得模型。

如果您有存放庫的存取權,您也可以存取模型。 定型時,我們會收集取出認可的相關一些資訊。 如果您要求模型,則必須在存放庫中擁有相同的認可,並產生相同的資訊,該資訊是在訓練期間收集來接收小組模型。

注意

現在已淘汰透過共用連結共用模型來共用使用者相關聯的小組完成模型。

刪除您的模型

您可以從帳戶移除模型,讓它們不再可用。

刪除在 Visual Studio 內建立的使用者關聯模型

當您的解決方案在Visual Studio中開啟時,請在[ViewOther>Windows>IntelliCode] 頁面上取消核取接受模型定型的核取方塊。 模型已刪除。

刪除使用 Azure DevOps 或 GitHub CI 工作流程建立的存放庫附加模型

從管線中移除定型工作,如果未定型,則會在 30 天內移除相關聯的模型。

電腦相關聯的模型

建立並重新定型模型

若要定型機器相關聯的模型:

  1. 在 Visual Studio 中開啟專案或解決方案。
  2. 選取 [檢視>][其他Windows>IntelliCode,以開啟 IntelliCode 頁面。
  3. 檢閱並接受頁面底部的授權條款核取方塊。 機器相關聯的模型會自動定型。

注意

您必須針對您想要訓練的每個解決方案重複上述步驟。

Visual Studio會定期自動重新定型與電腦相關聯的小組完成模型。

根據公用程式碼基底定型

在定型自己的程式碼之前,您可能想要在公用程式代碼基底上建立完成模型。 您可以查看完成模型如何影響 IntelliSense,或如果您擔心 IntelliSense 所收集的資料種類,您可以檢查 擷取的資料。 定型的一些有趣範例如下:

  • Azure ConferenceBuddy

    將存放庫派生至您的個人帳戶、複製存放庫、開啟 ConferenceBuddy.sln 解決方案、建置以檢查它是否正常運作,然後定型模型。 您會在 AskWhoTask 類別執行個體上發現一些良好的自動完成。

  • Windows RSS 閱讀程式

    將存放庫派生至您的個人帳戶、複製存放庫、開啟 RssReader.sln 解決方案、建置以檢查它是否正常運作,然後定型模型。 您會在 MainViewModel 類別執行個體上發現一些良好的自動完成。

程式碼基底的自動定型模型

成功建置解決方案之後,系統可能會提示您讓 IntelliCode 自動定型該解決方案的 IntelliCode 完成模型。

藉由啟用 IntelliCode 自動定型模型完成,IntelliCode 會將機器學習模型定型為使用中解決方案的完成,而且只有可存取已啟用自動定型之電腦上解決方案的使用者才能存取個別模型。 如果您想要與可存取存放庫的任何人共用自訂程式碼完成,您應該 在 CI 工作流程中設定自動訓練小組完成

注意

若要在 Visual Studio 中自動定型 IntelliCode 自訂程式碼完成的模型,則沒有任何原始檔控制需求。 不過,如果您想要與小組共用自訂完成,您的程式碼基底必須位於 Git 原始檔控制之下,並推送至遠端以建立與存放庫相關聯的模型。

在 Visual Studio 中啟用自訂程式碼自動定型模型

若要在 Visual Studio 中為您的程式碼啟用 IntelliCode 自動定型模型:

  1. 在 Visual Studio 中開啟方案或存放庫資料夾。

  2. 藉由在成功建置之後,透過資訊列提示啟用自訂程式碼自動定型模型完成、透過 IntelliCode UI、選取[檢視>][其他windowsIntelliCode> ] 或透過[工具>][選項]> [IntelelliCode] 設定 [IntelliSense 完成的自動定型小組模型] 或透過 [搜尋] 中的 [IntelliCode 自動定型] (Ctrl + Q 來搜尋 「IntelliCode 自動定型」,以Visual Studio Search (Ctrl + Q) 。

  3. 成功建立模型時,模型會自動下載到Visual Studio。 您可以開啟 [輸出視窗],然後在下拉式清單中切換至 IntelliCode,或在ViewOther>windowsIntelliCode> 中切換至 IntelliCode,以追蹤模型的進度。

注意

請確定您已安裝Visual Studio 16.7 版 Preview 3或更新版本。 安裝預覽之後,您可以在成功建置方案或透過ToolsOptionsIntelliCode>> 之後,透過資訊列啟用自訂程式碼自動完成的模型。

定型完成後,請嘗試使用存放庫特有的類別/類型來撰寫一些程式碼, 您應該會看到最常見案例的星號建議。

一旦您完成解決方案上的自訂程式碼完成,您就可以自動建立、重新定型及與整個開發小組共用 IntelliCode 自訂程式碼完成,作為Azure Pipelines或小組完成GitHub動作的一部分。

資料和隱私權

為了建置您的小組模型,我們會擷取摘要檔案,其中包含類型和其使用方式的中繼資料。 例如,摘要檔案包含類別和方法的名稱,以及在不同情況下呼叫它們的頻率。 IntelliCode 不會追蹤您的按鍵輸入,或從您的程式碼擷取整個運算式、陳述式或常值 (例如字串)。

擷取的資料會透過 HTTPS 傳輸至 IntelliCode 服務。 服務接著會使用機器學習演算法來定型程式碼的模型。 它會將模型傳回到您的電腦,並在該處與基本模型合併。

當您啟用 IntelliCode 開始定型和自動定型模型以進行自訂程式碼完成時:

  • 我們會在本機分析您的程式碼。
  • 我們會擷取摘要檔案,其中包含您類型和其使用方式的中繼資料。
  • 我們會安全地將其上傳至 IntelliCode 服務,並定型專為您的程式碼量身打造的完成模型。
  • 如果複製的 Git 存放庫) ,您的完成模型永遠不會與可存取存放庫的使用者共用 (。
  • 您可以隨時刪除模型,並直接在ViewOther>windowsIntelliCode> 的 IntelliCode UI 中取消模型定型。 取消核取 UI 中的方塊,以刪除自訂程式碼完成的模型。
  • 您可以在ViewOther>windowsIntelliCode> 找到的 IntelliCode UI 中直接重新整理所學習的模式。

您會在> 視OtherwindowsIntelliCode> 的 [檢視][Visual Studio輸出視窗的 IntelliCode 區段或 IntelliCode UI 中看到定型進度。 定型完成後,您可以看到摘要,以及專為程式碼量身打造的新模型。 然後,請嘗試使用存放庫特有的類別/類型來撰寫一些程式碼。 您應該會看到最常見案例的星號建議。

檢視擷取的資料

檢查所擷取資料的內容:

  1. 開啟擷取的資料目錄:

    • 對於存放庫相關聯的模型:%temp%\Intellicode_Extraction_2019-10-23—234524
    • 針對電腦相關聯的模型:%TEMP%\Visual Studio IntelliCode
  2. 若要尋找並開啟您最近定型工作階段的定型,請依日期 (遞減) 排序資料夾檢視。 您最近的定型工作階段資料夾現在位於最上層。

    提示

    %TEMP%\Visual Studio IntelliCode 目錄中,每個定型工作階段有一個資料夾,各自具有隨機的名稱。

此資料夾包含擷取完成時傳送給 Microsoft 的完整檔案集合。 UsageOutput子資料夾包含 JSON 檔案,其中包含從程式碼擷取的 IntelliCode 來定型模型的 JSON 檔案。 UsageOutput_ErrorStats 檔案包含在嘗試建置所擷取檔案時發現的任何錯誤,並可在 Microsoft 需要偵錯問題時提供協助。

IntelliCode model-training directory

如果您想要先檢查不同程式碼基底的擷取資料,然後才在自己的程式碼上試用,請根據公用程式碼基底來定型模型。

我們如何保護您的資料

您與 IntelliCode 服務之間傳送和接收的所有資料會透過 HTTPS 傳輸。 您必須登入Visual Studio才能與服務通訊。

模型可由下列方式擷取:

  • 機器相關聯的模型:機器,它會提交擷取的資料以進行定型。
  • 存放庫相關聯的模型:可證明他們能夠存取存放庫的使用者,以取得 存放庫相關模型的存取權。

您的模型和您程式碼學到的知識會讓您和預定共同作業者保持私用。

如果 Microsoft 需要進行疑難排解,授權的 Microsoft 服務人員可能會獲得模型的存取權,並僅針對診斷目的擷取資料。

另請參閱