Github Copilot 聊天視窗指令整理
| | | 3 | |
使用 VSCode Github Copilot Chat 視窗跟副駕駛聊天時,善用一些特殊指令語法可讓你事半功倍,我老記不住(另一方面也因為人老了更記不住),寫篇筆記備忘。
【主要參考資料】
聊天參與者(Chat Participants)
拉入聊天參與者,內建專家能提供特定領域的協助。使用 @ 可指定參與者名稱。
@azure| 提供 Azure 服務相關使用、部署與管理協助(目前為公開預覽)@github| 使用 GitHub 專屬 Copilot 技能@terminal| 提供 VS Code 終端機指令相關協助@vscode| 提供 VS Code 指令與功能相關協助@workspace| 根據工作區程式碼提供結構、互動與設計模式建議
斜線指令(Slash Commands)
/ 指令可快速執行指定動作,有些指令可能多個參與者都有提供(例如:/explain @workspace 跟 @terminal 都有),使用時可在前方加註。
/clear| 清空視窗現有對話,重新開始新的聊天對話/explain| 解釋目前編輯器中的程式碼 (小技巧:/explain in zh-tw可要求 Copilot 說中文)
例:@workspace /explain 金鑰長度在哪裡決定解釋目前使用中編輯視窗的程式碼、@terminal /explain 錯誤訊息是什麼意思?讀終端機(Terminal )視窗的文字進行解釋/fix| 提出選取程式碼的修正建議/fixTestFailure| 找出並修正失敗的測試/help| 顯示 Copilot 基本使用說明/new| 建立新專案或新檔案
例:/new README.md(會自動補上 @workspace)、/new python django 網站依要求試著建立專案,可先預覽生成結果

/newNotebook| 建立 Jupyter Notebook/tests| 為選取程式碼產生單元測試/setupTests| 為專案產生自動測試/search| 用自然語言描述要找什麼,Copilot 幫你想在 VSCode 搜尋的關鍵字/startDebugging| 產生 launch.json、tasks.json 等設定檔以進行偵錯/list| 列出可用的 Copilot 工具(可供 Copilot 呼叫完成任務)
聊天變數(Chat Variables)
Copilot Chat 輸入欄會自動帶入你正在編輯的檔案、選取的行數範圍,旁邊有 【Add Context...】 鈕可以選取增加,但有時更快的做法是用 # 變數在提示中加入特定上下文。

一些常用的 # 變數如下:
#block| 包含目前程式碼區塊#class| 包含目前類別#comment| 包含目前註解#<file_name>| #直接加檔名,把檔案內容包含進來(若程式檔太大,Copilot 會彙總成函式清單及說明,若還是放不下就放棄) 例如:Add a login button and style it based on #styles.css#<symbol_name>| #也可用來指定方法、函式或變數名稱,配合 #usages 可以搜尋它在工作區被引用的位置
例如:Where is #getUser used? #usages#line| 包含目前程式碼行#project| 包含專案上下文#selection| 包含目前選取文字#changes| 包含目前的 Git Changes#codebase| 執行完整程式碼庫搜尋,自動找到相關檔案和符號#editor| 包含目前編輯器的上下文資訊#problems| 引用 Problems 面板(如下圖)中的問題作為上下文

#testFailure| 引用測試失敗的相關資訊#terminal| 包含終端機輸出或相關內容#fetch| 從指定網頁下載內容作為上下文 例如:#fetch https://petstore.swagger.io/#/ 產生 PUT /pet 範例(連網前會先徵求同意)#githubRepo| 在指定的 GitHub 儲存庫中執行程式碼搜尋
Build an API endpoint to fetch address info, use the template from #githubRepo contoso/api-templates"
Comments
# by James
感謝,@terminal 跟 #terminal有點看不懂
# by ChrisTorng
就我認知,聊天參與者 @terminal 是一種特化的 AI,擁有 terminal 相關的知識,因此 terminal 相關的問題就可以主動拉 @terminal 來詢問。而 聊天變數 #terminal 則是將 terminal 內容帶入交談 context 上下文的方式。當然你可以選擇複製任意 terminal 內容再貼上對話框,或者是用打字 #terminal 也就一樣會帶入目前 terminal 的內容。
# by yoyo
我都用 agent mode 再指定code在哪個檔案,就不用記那麼多指令 整個專案不確定範圍就加 #codebase