這是用戶在 2025-6-25 8:48 為 https://code.visualstudio.com/docs/copilot/copilot-customization#_prompt-files-experimental 保存的雙語快照頁面,由 沉浸式翻譯 提供雙語支持。了解如何保存?

試試 MCP 伺服器,以擴展 VS Code 中的代理模式!

在 VS Code 中自訂 AI 回應

Visual Studio Code 中的聊天功能,若提供正確的上下文,便能產生符合您的編碼習慣與專案需求的程式碼回應及程式碼。與其在每次聊天提示中重複輸入這些資訊,不如將這些上下文儲存於檔案中,並自動納入每次的聊天請求。本文將引導您了解如何透過自訂指示(custom instructions)與提示檔案(prompt files)來客製化 VS Code 中的 AI 回應。

在 Visual Studio Code 中自訂 AI 回應有三種主要方法:

  • 自訂指示:定義常見的準則或規則,例如程式碼產生、程式碼檢閱或產生認可訊息。自訂指示描述 AI 應如何執行任務(即任務的執行方式)。了解如何定義自訂指示。

      範例情境
    • 指定程式碼撰寫規範、偏好的技術或專案需求,讓產生的程式碼符合您的標準。
    • 設定程式碼檢閱規則,例如檢查安全性漏洞或效能問題。
    • 提供產生提交訊息或提取請求標題與描述的說明。
  • 提示檔案:定義常用任務的可重複使用提示,例如產生程式碼或執行程式碼檢閱。提示檔案是您可以直接在聊天中執行的獨立提示。它們描述要執行的任務(應做什麼)。您可以選擇性地包含任務特定的指南,說明任務應如何執行,或在提示檔案中參考自訂指示。了解如何建立提示檔案。

      範例情境
    • 為常見的程式碼任務建立可重複使用的提示,例如建構新元件、API 路由或產生測試。
    • 定義用於執行程式碼檢閱的提示,例如檢查程式碼品質、安全性弱點或效能問題。
    • 為複雜的流程或專案特定模式建立逐步指南。
    • 定義用於生成實施計畫、架構設計或遷移策略的提示詞。
  • 自訂聊天模式:定義聊天如何運作、可以使用哪些工具,以及如何與程式碼庫互動。每個聊天提示都在聊天模式的界限內執行,無需為每個請求設定工具和指示。

      範例情境
    • 建立一個規劃專用的聊天模式,讓 AI 僅能唯讀程式碼庫,且只能產出實施計畫。
    • 定義一個研究聊天模式,讓 AI 可以透過外部資源來探索新技術或收集資訊。
    • 建立一個前端開發者聊天模式,讓 AI 只能生成和修改與前端開發相關的程式碼。

  自訂指示

自訂指示可讓您描述常見的準則或規則,以獲得符合您特定程式設計實務和技術堆疊的回應。您無需在每次聊天查詢中手動包含此內容,自訂指示會自動將此資訊納入每次聊天請求中。

  備註

程式碼補全不會考量自訂指示。

自訂指示的類型

VS Code 支援多種方式來定義自訂指令:

自訂提示類型   說明
   .github/copilot-instructions.md 檔案
  • 用 Markdown 說明程式碼產生指令。
  • 所有指示都合併在單一檔案中,並儲存在工作區內。
  • 系統會在每次聊天請求中自動包含指示。
  • 在所有支援 Copilot 的編輯器和 IDE 中皆可使用。
  • 使用此檔案來定義適用於所有程式碼產生任務的一般程式碼撰寫慣例、偏好的技術和專案需求。
   .instructions.md 個檔案
  • 用 Markdown 說明程式碼產生指令。
  • 在工作區或您的使用者設定檔中建立一個或多個指令檔案。
  • 使用 glob 模式,自動包含所有請求或特定文件的指示。
  •   在 VS Code 中支援。
  • 若您想針對特定任務提供程式碼生成指示,並更精確地控制何時將指示納入聊天提示中,請使用這些檔案。
  VS Code 設定
  • 在 VS Code 的使用者或工作區設定中指定指示。
  • 在設定值或一個或多個檔案中定義指示。
  •   在 VS Code 中支援。
  • 支援程式碼生成、測試生成、提交訊息、程式碼審查,以及 PR 標題與描述的指示。
  • 使用此選項可定義非程式碼生成任務的指示。

您可以結合使用這些方法來定義自訂指示,所有指示都會包含在聊天請求中。指示之間沒有特定的順序或優先順序,因此請確保避免在檔案中出現相互衝突的指示。

自訂指示範例

以下範例將示範如何使用自訂指示:

  範例:通用程式碼規範
---
applyTo: "**"
---
# Project general coding standards

## Naming Conventions
- Use PascalCase for component names, interfaces, and type aliases
- Use camelCase for variables, functions, and methods
- Prefix private class members with underscore (_)
- Use ALL_CAPS for constants

## Error Handling
- Use try/catch blocks for async operations
- Implement proper error boundaries in React components
- Always log errors with contextual information
  範例:TypeScript 與 React 編碼規範

請注意,這些指示會引用一般的程式碼指南檔案。您可以將指示分成多個檔案,以保持其組織性並專注於特定主題。

---
applyTo: "**/*.ts,**/*.tsx"
---
# Project coding standards for TypeScript and React

Apply the [general coding guidelines](./general-coding.instructions.md) to all code.

## TypeScript Guidelines
- Use TypeScript for all new code
- Follow functional programming principles where possible
- Use interfaces for data structures and type definitions
- Prefer immutable data (const, readonly)
- Use optional chaining (?.) and nullish coalescing (??) operators

## React Guidelines
- Use functional components with hooks
- Follow the React hooks rules (no conditional hooks)
- Use React.FC type for components with children
- Keep components small and focused
- Use CSS modules for component styling

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

您可以將自訂指示儲存在工作區或程式碼儲存庫的 .github/copilot-instructions.md 檔案中,並使用 Markdown 來描述您的程式設計慣例、偏好的技術和專案需求。這些指示僅適用於該檔案所在的儲存庫。

VS Code 會自動將 .github/copilot-instructions.md 檔案中的指示納入每個聊天請求,並用於生成程式碼。

若要使用 .github/copilot-instructions.md 檔案:

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

  2. 在您的工作區根目錄建立一個 .github/copilot-instructions.md 檔案。若有需要,請先建立一個 .github 目錄。

  3. 請使用自然語言並以 Markdown 格式描述您的指示。

    指令之間的空格會被忽略,所以您可以將指令寫成單一段落、每行一個指令,或是用空白行分隔以增加可讀性。

  備註

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

使用 .instructions.md 檔案

您也可以建立一個或多個 .instructions.md 檔案,用來儲存特定任務的自訂指令。例如,您可以為不同的程式語言、框架或專案類型建立指令檔案。

VS Code 可以自動為所有聊天要求新增指示檔案,或者您可以指定指示應自動套用到哪些檔案。您也可以手動將指示檔案附加到聊天提示。

VS Code 的指令檔案支援兩種範圍:

  • 工作區的指示檔案僅在工作區內可用,並儲存在工作區的 .github/instructions 資料夾中。
  • 使用者指令檔案:可在多個工作區中使用,並儲存在目前的 VS Code 設定檔中。

指令檔案結構

指令檔案是副檔名為 .instructions.md 的 Markdown 檔案,其中包含兩個區段:

  • (選用)包含中繼資料的標頭(Front Matter 語法)

    • " description :這是說明檔的簡短描述。當您在聊天檢視中將滑鼠懸停在說明檔上時,就會顯示此描述。"

    • " applyTo :指定一個 glob 模式,用於自動套用指示的檔案。若要始終包含自訂指示,請使用 ** 模式。"

      例如,以下指示檔案一律會被套用:

      ---
      applyTo: "**"
      ---
      Add a comment at the end of the file: 'Contains AI-generated edits.'
      
  • 包含指示內容的機身

    使用 Markdown 格式以自然語言指定自訂指示。您可以使用標題、列表和程式碼區塊來架構這些指示。

    您可以使用 Markdown 連結來參考其他指令檔案。請使用相對路徑,並確保路徑相對於指令檔案的位置是正確的。

建立說明檔案

建立說明檔案:

  1. 在命令面板 (⇧⌘P) 中執行「Chat: New Instructions File」指令。

  2. 請選擇要建立指令檔案的位置。

    使用者指令檔案會儲存在目前的設定檔資料夾中。您可以透過「設定同步」功能,在多個裝置間同步您的使用者指令檔案。請務必在「設定同步:設定指令」中配置「提示與指令」設定。

    預設情況下,工作區的指示檔案會儲存在您工作區的 .github/instructions 資料夾中。您可以使用 `chat.instructionsFilesLocations` 設定,為您的工作區新增更多指示檔案的資料夾。

  3. 請輸入您的指令檔案名稱。

  4. 使用 Markdown 格式撰寫自訂說明。

    參考額外的 Markdown 連結工作區檔案( [index](../index.ts) ),或在說明檔案中以 #index.ts 方式參考。

使用「命令選擇區」中的「Chat: Configure Instructions」指令,來選取並編輯現有的指示檔案。此指令會在編輯器中開啟指示檔案,您可以在其中編輯指示和中繼資料。

在聊天中使用說明檔

若要將說明檔手動附加到聊天提示中:

  • 在「聊天」檢視中,選取「新增內容」>「指示」,然後從「快速選擇」中選取指示檔案。

  • 從命令選擇區 (⇧⌘P) 執行「Chat: Attach Instructions」指令,然後從快速選擇中選取指示檔案。

若要自動套用指示檔案,請在指示檔案中指定 applyTo 中繼資料屬性:

  • " ** :將指示套用於所有聊天要求。"
  • 根據聊天內容中的檔案類型套用指示。

在設定中指定自訂指令

您可以在使用者或工作區設定中配置自訂指示。這對於指定非程式碼生成場景的自訂指示很有幫助。VS Code 會自動將設定中的自訂指示套用到聊天要求或特定任務。

針對不同情境有特定的設定。下表列出了各類自訂指示的設定。

  指令類型   設定名稱
  程式碼產生 GitHub Copilot Chat 程式碼生成說明
  測試生成 在 VS Code 中自訂 AI 回應
  程式碼檢閱 自訂 VS Code 中的 AI 回應
Commit 訊息生成 在 VS Code 中自訂 AI 回應
提取「source」欄位中的內容。 GitHub Copilot Chat 提取要求說明生成說明

您可以將自訂指示定義為設定值中的文字( text 屬性),或在您的工作區中引用外部檔案( file 屬性)。

下列程式碼片段說明如何在 settings.json 檔案中定義一組指示。

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

定義自訂指示的訣竅

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

  • 指示中請勿提及外部資源,例如特定的程式碼撰寫規範。

  • 將指示分割成多個檔案。這種方法有助於依主題或任務類型來整理指示。

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

  • 在指令檔案的標頭中,使用 applyTo 屬性即可將指令自動套用到特定的檔案或資料夾。

  • 在您的提示檔案中引用自訂指示,讓提示保持簡潔、專注,並避免為不同任務重複相同的指示。

提示檔案(實驗性質)

提示檔案是可重複使用的提示,用於常見任務,例如產生程式碼或執行程式碼檢閱。您可以在 Markdown 檔案中定義提示內容。提示檔案是您可以直接在聊天中執行的獨立提示。您也可以選擇性地包含執行任務的指南。

  提示

提示檔案可利用指示檔案來重複使用通用指南,並將特定任務的指示納入提示中。例如,安全審查提示檔案可引用描述通用安全實務的自訂指示,同時也包含關於如何報告審查結果的特定指示。

VS Code 支援兩種提示檔案的範圍:

  • 工作區提示檔案:僅限於工作區內使用,並儲存在工作區的 .github/prompts 資料夾中。
  • 使用者提示檔案:可在多個工作區中使用,並儲存在目前的 VS Code 設定檔中。

  提示檔範例

以下範例將示範如何使用提示檔案:

  範例:產生一個 React 表單元件
---
mode: 'agent'
tools: ['githubRepo', 'codebase']
description: 'Generate a new React form component'
---
Your goal is to generate a new React form component based on the templates in #githubRepo contoso/react-templates.

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
  範例:對 REST API 進行安全性檢閱
---
mode: 'edit'
description: 'Perform a REST API security review'
---
Perform a REST API security 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

  提示檔案結構

提示檔案是副檔名為 .prompt.md 的 Markdown 檔案,主要包含以下兩個區段:

  • (選用)包含中繼資料的標頭(Front Matter 語法)

    • " mode :執行提示時要使用的聊天模式: askeditagent (預設)。"
    • tools :工具(集合)名稱的陣列,用以指定代理模式中可使用的工具(集合)。請選擇「設定工具」,從工作區中可用工具的清單裡選取工具。若指定的工具(集合)在執行提示時無法使用,系統將會忽略它。
    • " description :提示的簡短說明。"
  • 包含提示內容的主體

    提示檔案的格式如同聊天中的提示詞。這讓您可以混合使用自然語言指令、額外內容,甚至將其他提示檔案連結作為相依性。您可以使用 Markdown 格式來架構提示內容,包含標題、列表和程式碼區塊。

您可以透過 Markdown 連結來引用其他工作區檔案、提示檔案或說明檔案。請使用相對路徑來引用這些檔案,並確保路徑相對於提示檔案的位置是正確的。

在提示檔案中,您可以使用 ${variableName} 語法來引用變數。您可以引用以下變數:

  • 工作區變數 - ${workspaceFolder} , ${workspaceFolderBasename}
  • 選取變數 - ${selection} , ${selectedText}
  • 檔案內容變數 - ${file}${fileBasename}${fileDirname}${fileBasenameNoExtension}
  • 輸入變數 - ${input:variableName}${input:variableName:placeholder} (將值從聊天輸入欄位傳遞至提示)

建立工作區提示檔案

工作區的提示檔案會儲存在該工作區內,且僅限於該工作區使用。

提示檔案預設會儲存在您工作區的 .github/prompts 目錄中。您也可以透過 chat.promptFilesLocations 設定來指定額外的提示檔案位置。

若要建立工作區提示檔案:

  1. 從命令選擇區 (⇧⌘P) 執行「Chat: New Prompt File」指令。

  2. 請選擇要建立提示檔案的位置。

    預設僅提供 .github/prompts 資料夾。請透過 chat.promptFilesLocations 設定,為您的工作區新增更多提示資料夾。

  3. 請輸入提示檔案的名稱。

    或者,您也可以直接在工作區的 prompts 資料夾中建立一個 .prompt.md 檔案。

  4. 使用 Markdown 格式撰寫聊天提示。

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

    您也可以參考其他 .prompt.md 檔案,藉此建立提示的階層結構。同樣地,您也可以參考指示檔案。

建立使用者提示檔案

使用者提示檔案會儲存在您的使用者設定檔中。透過使用者提示檔案,您可以在多個工作區間共用可重複使用的提示。

建立使用者提示檔案:

  1. 從命令選擇區 (⇧⌘P) 選取「Chat: New Prompt File」指令。

  2. 將「使用者資料夾」選為提示檔案的位置。

    如果您使用多個 VS Code 設定檔,提示檔案會建立在目前設定檔的使用者資料夾中。

  3. 請輸入提示檔案的名稱。

  4. 使用 Markdown 格式撰寫聊天提示。

    您也可以參考其他使用者提示檔案或使用者說明檔案。

在聊天中使用提示詞檔案

您有幾種方式可以執行提示檔案:

  • 從命令選擇區 (⇧⌘P) 執行「Chat: Run Prompt」指令,然後從快速選擇中選取提示檔案。

  • 在「聊天」檢視中,於聊天輸入欄輸入 / 後接上檔案名稱。

    此選項可讓您在聊天輸入欄位中傳遞額外的資訊。例如, /create-react-form/create-react-form: formName=MyForm

  • 在編輯器中開啟提示檔案,然後按下編輯器標題列的播放按鈕。您可以選擇在目前的聊天工作階段執行提示,或開啟一個新的聊天工作階段。

    這個選項對於快速測試和迭代您的提示檔案很有幫助。

在不同裝置間同步使用者的提示檔案

VS Code 可透過「設定同步」功能,在多個裝置間同步您的自訂提示檔案。

若要同步您的使用者提示檔案,請為提示和指示檔案啟用「設定同步」功能:

  1. 請確認您已啟用「設定同步」功能。

  2. 在命令選擇區執行「設定同步」:從命令選擇區進行設定 (⇧⌘P)。

  3. 從設定清單中選取要同步的提示和指示。

在 VS Code 中集中管理指示和提示檔案

您可以使用 chat.promptFiles 設定,在 VS Code 中啟用或停用提示檔案。

若要在組織內集中啟用或停用此設定,請參閱企業文件中的「集中管理 VS Code 設定」。

  設定

  自訂指示設定
  • chat.promptFiles(實驗音樂):啟用可重複使用的提示與說明檔案。

  • github.copilot.chat.codeGeneration.useInstructionFiles:控制是否將來自 .github/copilot-instructions.md 的程式碼指示加入 Copilot 要求。

  • chat.instructionsFilesLocations(實驗音樂): 一個包含指示檔案位置的字典,以及一個表示是否啟用的布林值。相對路徑會從您工作區的根資料夾解析。支援檔案路徑的 glob 模式。預設情況下,指示檔案位於您工作區的 .github/instructions 資料夾。

    "chat.instructionsFilesLocations": {
        "src/frontend/instructions": true,
        "src/backend/instructions": false
    }
    
  • github.copilot.chat.codeGeneration.instructions(實驗): 將會加入到產生程式碼的 Copilot 要求中的指示集。

  • github.copilot.chat.testGeneration.instructions(實驗): 一組將會被加入到 Copilot 請求中以產生測試的指示。

  • github.copilot.chat.reviewSelection.instructions(預覽): 這是一組將會加入 Copilot 要求中的指示,用於檢閱目前編輯器中的選取內容。

  • github.copilot.chat.commitMessageGeneration.instructions(實驗): 產生 commit 訊息時,會將此指示集加入 Copilot 的要求中。

  • github.copilot.chat.pullRequestDescriptionGeneration.instructions(實驗性):產生提取請求標題與描述時,會將此指令集加入 Copilot 的請求中。

  提示檔案設定
  • chat.promptFiles(實驗音樂):啟用可重複使用的提示與指令檔案。

  • 'chat.promptFilesLocations(實驗): 一個字典,其中包含提示檔案的位置以及一個表示它們是否已啟用的布林值。相對路徑會從工作區的根資料夾解析。支援檔案路徑的 glob 模式。預設情況下,提示檔案位於您工作區的 .github/prompts 資料夾中。'

    "chat.promptFilesLocations": {
        ".github/prompts": false,
        "setup/**/prompts": true
    }