使用 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

Post a comment