🚀 在 VS Code 中

Visual Studio Code 中 GitHub Copilot 的自訂指示

您可以提供 Copilot 有關您團隊的工作流程、工具或專案細節的內容詳細資訊,以增強 Copilot 的聊天回應。您可以建立自訂指示檔案,自動將此資訊與每個聊天請求合併,而無需在每個聊天查詢中手動包含此內容。

Copilot 會將這些指示套用至「聊天」檢視、「快速聊天」或「內嵌聊天」中的聊天提示。這些指示不會顯示在聊天中,而是由 VS Code 傳遞給 Copilot。

您可以為特定目的指定自訂指示

  • 程式碼產生指示 - 提供產生程式碼的特定內容。例如,您可以指定私有變數應始終以底線為前綴,或單例應以某種方式實作。您可以在設定中或工作區的 Markdown 檔案中指定程式碼產生指示。

  • 測試產生指示 - 提供產生測試的特定內容。例如,您可以指定所有產生的測試都應使用特定的測試架構。您可以在設定中或工作區的 Markdown 檔案中指定測試產生指示。

  • 程式碼檢閱指示 - 提供檢閱目前編輯器選取範圍的特定內容。例如,您可以指定檢閱者應在程式碼中尋找特定類型的錯誤。您可以在設定中或工作區的 Markdown 檔案中指定檢閱選取範圍指示。

  • 提交訊息產生指示 - 提供產生提交訊息的特定內容。您可以在設定中或工作區的 Markdown 檔案中指定提交訊息產生指示。

自訂指示包含自然語言指示,且應為簡短、獨立的陳述,以新增內容或相關資訊來補充聊天問題。

定義程式碼產生自訂指示

Copilot 可以協助您產生程式碼,例如作為重構、產生單元測試或實作功能的一部分。您可能想要在專案中使用特定的程式庫,或想要為 Copilot 產生的程式碼遵循特定的編碼樣式。

注意

Copilot 不會將程式碼產生指示套用至程式碼完成

使用設定

您可以使用 github.copilot.chat.codeGeneration.instructions 設定來設定自訂程式碼產生指示。您可以在使用者或工作區層級定義自訂指示,也可以指定語言特定的指示。取得有關語言特定設定的更多資訊。

下列程式碼片段顯示如何在 settings.json 檔案中定義一組指示。若要直接在設定中定義指示,請設定 text 屬性。若要參考外部檔案,請設定 file 屬性。

  "github.copilot.chat.codeGeneration.instructions": [
    {
      "text": "Always add a comment: 'Generated by Copilot'."
    },
    {
      "text": "In TypeScript always use underscore for private field names."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md 檔案內容範例

Always use React functional components.

Always add comments.

使用 .github/copilot-instructions.md 檔案

您也可以將自訂指示儲存在工作區或儲存庫中的 .github/copilot-instructions.md 檔案中,並讓 VS Code 自動挑選此檔案。

如果您在 .github/copilot-instructions.md 檔案和設定中都定義了自訂指示,Copilot 會嘗試合併來自這兩個來源的指示。

注意

Visual Studio 中的 GitHub Copilot 也會偵測 .github/copilot-instructions.md 檔案。如果您在 VS Code 和 Visual Studio 中都使用工作區,則可以使用同一個檔案來定義這兩個編輯器的自訂指示。

  1. github.copilot.chat.codeGeneration.useInstructionFiles 設定為 true,以指示 VS Code 中的 Copilot 使用自訂指示檔案。

  2. 在工作區的根目錄建立 .github/copilot-instructions.md 檔案。如果需要,請先建立 .github 目錄。

    提示

    在 VS Code 的「檔案總管」檢視中,您可以透過輸入完整路徑作為檔案名稱,一次操作建立資料夾和檔案。

  3. 將自然語言指示新增至檔案。您可以使用 Markdown 格式。

    指示之間的空白字元會被忽略,因此指示可以寫成單一段落、每行一個,或以空白行分隔以提高易讀性。

定義測試產生自訂指示

您可以使用 Copilot 為您的程式碼產生測試,例如在「聊天」檢視中使用 @workspace /tests 提示。您可以定義自訂指示,以協助 Copilot 產生特定於您的專案和開發工作流程的測試。

若要設定自訂測試產生指示,請使用 github.copilot.chat.testGeneration.instructions 設定。您可以在使用者或工作區層級定義自訂指示。

下列程式碼片段顯示如何在 settings.json 檔案中定義一組指示。若要直接在設定中定義指示,請設定 text 屬性。若要參考外部檔案,請設定 file 屬性。

  "github.copilot.chat.testGeneration.instructions": [
    {
      "text": "Always use vitest for testing React components."
    },
    {
      "text": "Use Jest for testing JavaScript code."
    },
    {
      "file": "code-style.md" // import instructions from file `code-style.md`
    }
  ],

code-style.md 檔案內容範例

Always add code comments.

Always use React functional components.

定義程式碼檢閱自訂指示

您可以使用 Copilot 檢閱編輯器中選取的程式碼。您可以定義自訂指示,以協助 Copilot 考量與您的專案和開發工作流程相關的特定程式碼檢閱準則。

若要設定自訂程式碼檢閱指示,請使用 github.copilot.chat.reviewSelection.instructions 設定。您可以在使用者或工作區層級定義自訂指示。

定義提交訊息產生自訂指示

在「原始檔控制」檢視中,您可以使用 Copilot 為擱置中的程式碼變更產生提交訊息。您可以定義自訂指示,以協助 Copilot 產生提交訊息,該訊息會考量特定於您的專案和開發工作流程的特定格式和結構。

若要設定自訂提交訊息產生指示,請使用 github.copilot.chat.commitMessageGeneration.instructions 設定。您可以在使用者或工作區層級定義自訂指示。

定義自訂指示的秘訣

  • 讓您的指示保持簡短且獨立。每個指示都應為單一、簡單的陳述。如果您需要提供多個資訊,請使用多個指示。

  • 請勿在指示中參考外部資源,例如特定的編碼標準。

  • 將您的指示儲存在外部檔案中,以便輕鬆與您的團隊或跨專案共用自訂指示。您也可以對檔案進行版本控制,以追蹤隨時間的變更。

可重複使用的提示檔案 (實驗性)

提示檔案 (提示) 可讓您建置和共用具有額外內容的可重複使用提示指示。提示檔案是 Markdown 檔案,可模擬在 Copilot 聊天中撰寫提示的現有格式 (例如,Rewrite #file:x.ts)。這允許混合自然語言指示、額外內容,甚至連結到其他提示檔案作為相依性。

雖然自訂指示有助於為每個 AI 工作流程新增程式碼庫範圍的內容,但提示檔案可讓您為特定的聊天互動新增指示。

常見的使用案例包括

  • 程式碼產生:為元件、測試或移轉建立可重複使用的提示 (例如,React 表單或 API 模擬)。
  • 領域專業知識:透過提示共用專業知識,例如安全性實務或合規性檢查。
  • 團隊協作:使用規格和文件參考記錄模式和指南。
  • 入門:為複雜的流程或專案特定的模式建立逐步指南。

提示檔案範例

  • react-form.prompt.md - 記錄用於產生表單的可重複使用工作

    Your goal is to generate a new React form component.
    
    Ask for the form name and fields if not provided.
    
    Requirements for the form:
    - Use form design system components: [design-system/Form.md](../docs/design-system/Form.md)
    - Use `react-hook-form` for form state management:
    - Always define TypeScript types for your form data
    - Prefer *uncontrolled* components using register
    - Use `defaultValues` to prevent unnecessary rerenders
    - Use `yup` for validation:
    - Create reusable validation schemas in separate files
    - Use TypeScript types to ensure type safety
    - Customize UX-friendly validation rules
    
  • security-api.prompt.md - 記錄 REST API 的可重複使用安全性實務,可用於執行 REST API 的安全性檢閱

    Secure REST API review:
    - Ensure all endpoints are protected by authentication and authorization
    - Validate all user inputs and sanitize data
    - Implement rate limiting and throttling
    - Implement logging and monitoring for security events
    
    

用法

若要啟用提示檔案,請設定 chat.promptFiles VS Code 設定。依預設,提示檔案位於您工作區的 .github/prompts 目錄中。您也可以指定提示檔案所在的其他資料夾

建立提示檔案

  1. 在您工作區的 .github/prompts 目錄中建立 .prompt.md 檔案。

  2. 使用 Markdown 格式撰寫提示指示。

    在提示檔案中,將其他工作區檔案參考為 Markdown 連結 ([index](../index.ts)),或作為提示檔案中的 #file:../index.ts 參考。

    您也可以參考其他 .prompt.md 檔案來建立提示的階層,其中可重複使用的提示可以在多個提示檔案之間共用。

將提示檔案附加至聊天請求

  1. 選取附加內容 圖示 (⌘/ (Windows、Linux Ctrl+/)),然後選取提示...

  2. 從「快速選取」中選擇提示檔案,以將其附加至您的聊天請求。

    您可以在 Copilot 聊天和 Copilot 編輯中使用提示檔案。

  3. 選擇性地附加工作所需的其他內容檔案。

    對於可重複使用的工作,請在不包含任何其他指示的情況下傳送提示。

    若要進一步精簡可重複使用的提示,請包含其他指示,以提供更多有關手邊工作的內容。

提示

使用 Markdown 連結參考其他內容檔案,例如 API 規格或文件,以向 Copilot 提供更完整的資訊。

設定

自訂指示設定

  • github.copilot.chat.codeGeneration.instructions (實驗性):一組將新增至產生程式碼的 Copilot 請求的指示。
  • github.copilot.chat.codeGeneration.useInstructionFiles (預覽):控制是否將來自 .github/copilot-instructions.md 的程式碼指示新增至 Copilot 請求。
  • github.copilot.chat.testGeneration.instructions (實驗性):一組將新增至產生測試的 Copilot 請求的指示。
  • github.copilot.chat.reviewSelection.instructions (預覽):一組將新增至用於檢閱目前編輯器選取範圍的 Copilot 請求的指示。
  • github.copilot.chat.commitMessageGeneration.instructions (實驗性):一組將新增至產生提交訊息的 Copilot 請求的指示。

提示檔案 (實驗性) 設定

  • chat.promptFiles (實驗性):啟用提示檔案並指定提示檔案資料夾。設定為 true 以使用預設位置 (.github/prompts),或使用 { "/path/to/folder": boolean } 標記法來指定不同的路徑。相對路徑從您工作區的根資料夾解析。

    設定值 描述
    false (預設) 停用提示檔案。
    true 啟用提示檔案。使用預設提示檔案位置 (.github/prompts)。
    { "/path/to/folder": boolean } 啟用提示檔案。指定一或多個提示檔案所在的資料夾。相對路徑從您工作區的根資料夾解析。