讓 Copilot Chat 成為您工作區的專家
在 Copilot Chat 中參考 @workspace
可讓您詢問關於整個程式碼庫的問題。根據問題,Copilot 會智慧地擷取相關檔案和符號,然後在答案中以連結和程式碼範例的形式參考它們。以 @workspace
參考為基礎,Copilot Chat 成為以下任務的領域專家:
- 在您的程式碼庫中尋找現有程式碼
"@workspace 資料庫連線字串設定在哪裡?"
- 說明資料庫連線的設定位置和方式"@workspace 我該如何驗證日期?"
- 在程式碼庫中尋找現有的日期驗證協助程式"@workspace 測試定義在哪裡?"
- 提供測試套件、案例和相關參考資料與設定的位置
- 為複雜的程式碼編輯制定計畫
"@workspace 如何為按鈕新增豐富的工具提示?"
- 提供將現有工具提示元件與按鈕元素一起使用的計畫"@workspace 將日期驗證新增至 #selection"
- 規劃如何將現有的日期驗證套用至選取的程式碼"@workspace 為忘記密碼表單新增新的 API 路由"
- 概述新增路由的位置以及如何將其連接到現有程式碼
- 解釋程式碼庫中更高層次的概念
"@workspace 驗證是如何實作的?"
- 驗證流程的概觀以及相關程式碼的參考資料"@workspace 哪些 API 路由依賴此服務?"
- 列出在選取程式碼中使用此服務的路由"我該如何建置此 #codebase?"
- 根據文件、指令碼和設定,列出建置專案的步驟
`@workspace` 使用哪些來源作為內容?
為了回答您的問題,@workspace
會搜尋開發人員在 VS Code 中導覽程式碼庫時會使用的相同來源
- 工作區中所有可編製索引的檔案,但
.gitignore
檔案忽略的檔案除外 - 具有巢狀資料夾和檔案名稱的目錄結構
- GitHub 的程式碼搜尋索引(如果工作區是 GitHub 存放庫且由程式碼搜尋編製索引)
- 工作區中的符號和定義
- 目前選取的文字或作用中編輯器中可見的文字
如果您開啟檔案或在忽略的檔案中選取文字,則會略過 .gitignore
。
`@workspace` 如何找到最相關的內容
您的完整 VS Code 工作區可能太大,無法完全傳遞給 GitHub Copilot 以回覆您的聊天提示。相反地,@workspace
會從不同的內容來源擷取最相關的資訊,以作為 Copilot 回答的基礎。
首先,@workspace
會判斷回答您的問題需要哪些資訊,包括對話記錄、工作區結構和目前選取的程式碼。
接下來,它會使用不同的方法收集內容,例如透過在本機搜尋或使用 GitHub 的程式碼搜尋來尋找相關的程式碼片段,並使用 VS Code 的語言 IntelliSense 新增詳細資訊,例如函式簽章、參數等等。
最後,GitHub Copilot 會使用此內容來回答您的問題。如果內容太大,則只會使用最相關的部分內容。回應會標記檔案、檔案範圍和符號的參考資料。這讓您可以直接從聊天回應連結到程式碼庫中的對應資訊。提供給 Copilot 的程式碼片段會在回應中列為參考資料。
`@workspace` 斜線命令的內容
@workspace
提供多個斜線命令作為常用工作的簡寫,可節省您的時間和輸入工作。每個命令都會定義自己的最佳化內容,通常不需要額外的提示或聊天變數。以下是可用的斜線命令及其內容
命令 | 內容 |
---|---|
/explain |
|
/tests |
|
/fix |
|
/new |
|
/newNotebook |
|
您可以使用聊天變數 (例如 #editor
、#selection
或 #file
) 在聊天提示中明確展開內容。例如,若要根據另一個檔案中的模式修正目前檔案中的錯誤,請使用此聊天提示:@workspace /fix linting error in the style of #file:form.ts
。
管理工作區索引
Copilot 使用索引快速且準確地搜尋您的程式碼庫以尋找相關的程式碼片段。此索引可以由 GitHub 維護,也可以儲存在您的本機電腦上。本節涵蓋 Copilot 可以使用的不同索引類型 (遠端、本機 和 基本),並說明何時使用每個索引以及如何在其之間切換。
若要查看 Copilot 目前使用的索引類型,請選取狀態列中的 {}
圖示來檢查語言狀態 UI。Copilot 工作區索引項目會顯示索引類型以及關於此索引的任何相關資訊,例如正在重新編製索引的檔案數目。
遠端索引
對於 GitHub 存放庫,Copilot 可以使用 GitHub 程式碼搜尋來建置程式碼庫的遠端索引。這讓 Copilot 可以非常快速地搜尋整個程式碼庫,即使程式碼庫非常大也一樣。
若要使用遠端索引
-
在 VS Code 中使用您的 GitHub 帳戶登入。
-
開啟具有 GitHub git 遠端的專案。請確定您也已將程式碼推送至 GitHub。
如果 GitHub 有相對最新的程式碼版本,遠端索引的效果最佳,因此請務必定期將程式碼推送至 GitHub。
-
執行建置遠端工作區索引命令,或選取工作區索引狀態 UI 中的 [建置索引] 按鈕,以建置遠端索引。
建置遠端索引可能需要一些時間,尤其是對於大型程式碼庫。您可以在工作區索引狀態 UI 中監視遠端索引的狀態。
建置遠端索引後,每當您推送程式碼變更時,GitHub 都會自動保持其為最新狀態。每個存放庫只需要執行一次建置遠端工作區索引命令。
本機索引
在您無法使用遠端索引的情況下,Copilot 可以改用儲存在您本機電腦上的進階語意索引。此索引也可以提供快速、高品質的搜尋結果。但是,目前僅限於 2500 個可編製索引的檔案。與遠端索引不同,本機索引必須每個使用者每部電腦建置一次。使用遠端索引,指定存放庫的所有使用者都可以使用相同的索引。
如果您的專案少於 750 個可編製索引的檔案,Copilot 會自動建置進階本機索引。對於介於 750 到 2500 個檔案之間的專案,您可以執行建置本機工作區索引命令以開始編製索引。此命令只需要執行一次。
建置初始本機索引或在許多檔案變更時 (例如切換 git 分支時) 更新索引可能需要一些時間。您可以在工作區索引狀態 UI 中監視目前的本機索引狀態。
基本索引
如果您的專案沒有遠端索引,而且也有超過 2500 個可編製索引的檔案,Copilot 會回復為使用基本索引來搜尋您的程式碼庫。此索引使用較簡單的演算法來搜尋您的程式碼庫,並且已針對在本機處理較大型程式碼庫進行最佳化。
基本索引對於許多問題應該都能正常運作。但是,如果您發現 Copilot 很難回答關於您的程式碼庫的問題,請嘗試升級到遠端索引。
工作區索引中包含哪些內容
Copilot 會為目前專案中相關的文字檔編製索引。這不限於特定的檔案類型或程式設計語言,但是 Copilot 會自動略過一些通常與 @workspace
問題無關的常見檔案類型,例如 .tmp
或 .out
檔案。Copilot 也會排除使用 files.exclude 設定從 VS Code 中排除的任何檔案,或屬於 .gitignore
檔案一部分的任何檔案。
Copilot 目前也不會為二進位檔編製索引,例如影像或 PDF。
使用 @workspace
的秘訣
您提出問題的方式會顯著影響 @workspace
提供的參考資料品質和回應的準確性。為了最佳化結果,請考慮以下秘訣
- 在您的問題中具體且詳細地說明,避免使用模糊不清或模稜兩可的詞彙,例如「這有什麼作用」(其中「這」可以解釋為最後一個答案、目前檔案或整個專案等等)。
- 在您的提示中納入可能出現在您的程式碼或其文件中的詞彙和概念。
- 檢閱回應中的已使用參考資料,以確保檔案相關。如有必要,請反覆修改您的問題。
- 透過選取程式碼或提及聊天變數 (例如
#editor
、#selection
或#file
) 明確包含相關內容。 - 回應可以從多個參考資料中提取,例如「尋找沒有 catch 區塊的例外狀況」或「提供 handleError 如何呼叫的範例」。但是,不要預期跨程式碼庫進行全面的程式碼分析,例如「此函式被調用了多少次?」或「修正此專案中的所有錯誤」。
- 避免假設程式碼以外的資訊 (目前),例如「誰貢獻了此檔案?」或「摘要此資料夾的檢閱意見」。