隨著 AI 輔助開發工具的普及,GitHub Copilot 已成為許多開發者日常工作中不可或缺(CP值最高)的助手。在預設情況下 GitHub Copilot 僅能提供通用的程式碼建議與回應。為了讓 AI 更貼近專案需求、遵循團隊的程式碼風格,以及提升開發效率,VS Code 提供了多種自訂機制,讓開發者能夠客製化 GitHub Copilot 的行為。本文將介紹 VS Code 中 GitHub Copilot 可以自訂的幾種方式:Custom Instructions、Prompt Files 以及 Chat Modes,協助大家打造更符合個人或團隊需求的 AI 開發環境。
GitHub Copilot 可以依據上下文提供程式碼建議,但每個專案或團隊都有其獨特的需求:不同的程式碼風格、特定的開發框架、安全性檢查標準,或是團隊約定的最佳實踐。透過自訂機制我們可以:
- 統一程式碼風格:確保生成的程式碼符合專案規範。
- 提升工作效率:減少重複性的提示輸入,讓 AI 自動遵循既定規則。
- 強化專案一致性:讓所有團隊成員使用相同的 AI 輔助標準。
- 擴展 AI 能力:透過工具整合與外部服務連接,讓 AI 執行更複雜的任務。
在 VS Code 中我們可以從最基本的設定逐步延伸到進階的工作流程,依需求打造專屬的 AI 開發環境。VS Code 的工作區設定通常儲存在專案根目錄下的 .vscode 資料夾;而 GitHub Copilot 的客製 instructions、prompt 與 chat modes 則常放在 .github 目錄中。順帶一提,VS Code 的使用者設定也可以放在系統的使用者設定(User Profile)路徑:
1 | VS Code |
Custom Instructions
Custom Instructions 讓我們可以在 Markdown 檔案中定義通用規則,這些 instructions 會自動套用到 AI 產生程式碼的方式以及處理其他開發任務的行為。相較於在每次對話中手動重複提供相同的上下文,Custom Instructions 能確保 AI 回應始終符合我們程式碼實作與專案需求。需要注意的是 Custom Instructions 不會套用於編輯器中的程式碼自動完成功能(code completions),僅影響聊天互動的回應內容。
Instructions 類型
VS Code 支援下列基於 Markdown 的 instructions 檔案,這些檔案可以同時存在,VS Code 會將它們合併並加入到聊天的上下文中:
| 檔案類型 | 說明 |
|---|---|
| .github/copilot-instructions.md | 單一檔案且檔名與路徑都要符合規定,會自動套用於工作區中的所有聊天請求。 |
| .instructions.md | 可依據實際需求建立多個檔案,針對特定任務或檔案使用,透過 applyTo 定義適用範圍。 |
| AGENTS.md (experimental) | 可以在工作區中定義多個 AI agent 的使用情境。 |
使用 copilot-instructions.md
適合定義全域的規範(例如:目前專案的 Coding Guidline), 在工作區根目錄建立 .github/copilot-instructions.md 檔案後,VSCode 就會自動將其套用到所有聊天請求中。
設定步驟:
- 啟用 VS Code 設定 github.copilot.chat.codeGeneration.useInstructionFiles(預設是已啟用)。
- 在工作區根目錄建立 .github/copilot-instructions.md 檔案。
- 使用 Markdown 格式以自然語言描述內容。
以 C# Coding Guidline 為例:
1 | # 專案程式碼規範(C# / .NET 8) |
使用 .instructions.md
當我們需要針對不同的程式語言、框架或任務建立專屬指示時,可以使用 .instructions.md 檔案。透過 applyTo 屬性,可以指定套用的檔案或路徑範圍。
檔案結構:
1 | --- |
建立方式:
- 在 Chat 中選擇 Configure Chat > Instructions > New instruction file
- 選擇儲存位置(Workspace 或 User Profile)
- 輸入檔案名稱並撰寫指示內容
- 使用 applyTo 定義套用的範圍(例如:*.ts , *.tsx)
注意事項
過去我們習慣把各種自訂情境集中寫在 .github/copilot-instructions.md,但這樣容易造成不必要的 token 浪費或增加模型誤判(幻覺)的風險。現在可以透過建立多個獨立的 instruction 檔案來區分不同情境,並以 applyTo 指定要套用的檔案或路徑。不過在定義 custom instruction 時,要特別留意 applyTo 的範圍設定。例如下圖所示,本來只想針對特定檔案執行程式碼審查(review)以檢查是否符合 coding guideline,但若其他情境也設定了相同的 applyTo(例如都指定 *.cs),就可能出現規則衝突或語意矛盾,而這類上下文衝突往往是造成 AI 幻覺的主要原因。
設定檔
對於 Custom Instructions 我們也可以透過 VS Code 的使用者設定或工作區設定來定義。在設定檔(VS Code 的 settings.json)中,既可以直接把內容輸入到 text 屬性,也可以用 file 屬性指定實體檔案路徑。此外,Code generation 與 Test generation 已明確建議改用 Instruction files,並標示為 deprecated(已棄用)。
| 使用情境 | 設定項目 |
|---|---|
| Code review | github.copilot.chat.reviewSelection.instructions |
| Commit message generation | github.copilot.chat.commitMessageGeneration.instructions |
| Pull Request title and description generation | github.copilot.chat.pullRequestDescriptionGeneration.instructions |
| Code generation (deprecated) | github.copilot.chat.codeGeneration.instructions |
| Test generation (deprecated) | github.copilot.chat.testGeneration.instructions |
設定範例:
1 | { |
撰寫技巧
- 保持指示簡短且獨立,每條指示應該是單一、簡單的陳述。
- 針對特定任務或程式語言,使用多個 .instructions.md 檔案,並透過
applyTo屬性選擇性套用。 - 將專案特定的指示儲存在工作區中,以便與團隊成員共享並納入版本控制。
- 在 Prompt Files 和 Chat Modes 中參考 Instructions 檔案,保持內容簡潔並避免重複。
Prompt Files
Prompt Files 是可重複使用的 Markdown 檔案,可以定義我們常用、可重複執行的任務。與 Custom Instructions 不同的是,Prompt Files 是獨立的提示,可以在聊天中直接執行。我們可以在其中包含任務特定的上下文與執行指引,並結合 Custom Instructions 確保複雜任務的一致執行,在 VS Code 的 GitHub Copilot 對話視窗中只要輸入 / 就可以選擇自訂的 Prompt Files。
檔案結構
Prompt Files 使用 .prompt.md 副檔名,結構如下:
YAML frontmatter
1 |
|
| 欄位 | 說明 |
|---|---|
| description | 提示的簡短描述。 |
| mode | 聊天模式:ask、edit 或 agent(預設)。 |
| model | 執行提示時使用的語言模型,若未指定則使用目前選擇的模型。 |
| tools | 可使用的工具或工具集名稱陣列。 |
Markdown 格式的提示指示
在主體中可以使用變數,例如:
- 工作區變數:
${workspaceFolder}、${workspaceFolderBasename} - 選取變數:
${selection}、${selectedText} - 檔案上下文變數:
${file}、${fileBasename}、${fileDirname} - 輸入變數:
${input:variableName}、${input:variableName:placeholder}
建立 Prompt File
步驟:
- 啟用設定 chat.promptFiles (預設已啟用,且路徑是 .github/prompts)。
- 在 Chat 視窗中選擇 Configure Chat > Prompt Files > New prompt file。
- 選擇儲存位置(Workspace 或 User Profile)。
- 輸入檔案名稱並使用 Markdown 格式撰寫提示內容。
範例:
1 | --- |
使用 Prompt File
有三種方式可以執行 Prompt File:
- 在 Chat 視窗中輸入:在聊天輸入欄位中輸入
/後接 prompt file 名稱和參數,例如:1
/create-react-form: componentName=LoginForm
- 使用命令面板:執行 Chat: Run Prompt 命令並從列表中選擇 prompt file。
- 直接執行:在編輯器中開啟 prompt file,點擊編輯器標題列的播放按鈕。
Chat Modes
Chat Modes 可以為特定角色或任務建立專屬的 AI 助理,在 Markdown 檔案中我們可以定義其範圍與能力、可存取的工具以及語言模型。不同的任務需要不同的能力,例如在規劃階段可能只需要唯讀工具進行研究與分析以防止意外的程式碼變更,而實作模式則需要完整的編輯能力。Chat Modes 讓我們能夠精確指定每個任務可用的工具,確保 AI 具備適合該工作的能力。
Chat Mode 檔案結構
Chat Mode 檔案使用 .chatmode.md 副檔名,結構如下:
YAML frontmatter
1 |
|
| 欄位 | 說明 |
|---|---|
| description | Chat mode 的簡短描述,顯示在聊天輸入欄位的文字。 |
| tools | 可用的工具或工具集名稱列表。 |
| model | 執行提示時使用的 AI 模型。 |
| handoffs (experimental) | 可選的後續動作或提示列表,用於在 Chat Modes 之間轉換。 |
Handoffs
Handoffs 是 VS Code Insiders 版本的實驗性功能,讓我們能夠建立引導式的順序工作流程,在不同 Chat Modes 之間轉換並提供建議的下一步操作。在聊天回應完成後,會出現交接按鈕,讓使用者可以帶著相關上下文提示移動到下一個模式。以軟體開發流程為例,我們可以設計如下三個 Chat mode:
- 規劃(planning)— 產出任務清單與接受準則。
- 實作(implementation)— 產生/修改程式碼、建立測試、建立 branch。
- 程式碼審查(review)— 讀取程式碼變更、產生 review 建議和 PR 描述。
透過 Handoffs 可以讓我們在「規劃」完成後,一鍵把上下文(任務清單、接受準則、檔案清單)傳到「實作」模式,或從「實作」傳到「審查」模式,讓下一個模式能立即取得足夠的上下文與行動指示(也可選擇自動執行或先由使用者確認)。
planning.chatmode.md
1 |
|
implementation.chatmode.md
1 |
|
review.chatmode.md
1 |
|
handoffs 屬性說明:
- label:在 Chat 介面會看到的按鈕名稱。
- agent:目標 Chat Mode 的識別名稱(通常與對應 .chatmode.md 的檔案名或 agent 名稱一致)。
- prompt:傳給目標模式的內容(建議使用簡短清楚的指示,也可用變數替換)。
- send:
- true 表示使用者點按後立即將 prompt 送出並執行。
- false 表示只切換到目標模式並把 prompt 放在輸入框,讓使用者檢視/修改後再發送。
建立 Chat Mode
- 在 Chat 視窗中選擇 Configure Chat > Modes > Create new custom chat mode file。
- 選擇儲存位置(Workspace 或 User Profile)。
- 輸入 Chat Mode 的名稱(此名稱會顯示在 Chat 視窗的 Chat Mode 下拉選單中)。
- 在新建立的 .chatmode.md 檔案中提供詳細資訊。
工具列表優先順序
當 chat mode 和 prompt file 都指定了 tools 欄位時,可用工具的優先順序如下:
- Prompt file 中指定的工具(如果有)。
- Prompt file 中參考的 Chat Mode 的工具(如果有)。
- 所選 chat mode 的預設工具。
客製化的實際應用情境
| 使用情境 | 建議方法 |
|---|---|
| 專案級程式碼規範 | Custom Instructions |
| 程式語言或框架特定規則 | Custom Instructions(搭配 glob patterns) |
| 可重複使用的開發任務 | Prompt Files |
| 以規劃或研究模式使用聊天 | Custom Chat Modes |
| 定義專門的工作流程 | Custom Chat Modes |
| 整合外部服務 | MCP and Tools |
入門建議
1. 嘗試不同的語言模型
從實驗不同的語言模型開始,為不同類型的工作獲得更好的結果。使用聊天中的模型選擇器切換模型,簡單任務使用較快的模型,複雜推理使用更強大的模型,例如:一般工作任務可以使用 GPT-5 mini (0x),實際要產生程式碼再選擇 Claude Sonnet 4.5 (1x)。
2. 設定基本指引
建立 Custom Instructions 可讓所有與 LLM 的聊天互動產生一致的結果。建議在工作區建立一個包含程式碼規範與偏好的 .github/copilot-instructions.md,以改善聊天回應;一般來說,整個專案應遵循的規範可在此定義。
3. 加入任務自動化
識別重複性任務後,為常見工作流程建立 Prompt Files。就像開發時會把常用的程式碼區塊抽成共用元件一樣,在 GitHub Copilot 的情境中,這類流程可儲存為獨立的 Prompt Files 以便重複使用。
4. 擴展能力
當需要連接外部服務或執行特定操作時,可以加入 MCP servers 和工具來擴展 LLM 的輔助能力。
5. 建立自己的工作流程
我們也可以透過建立自訂的 Chat Modes 並結合特定工具、指示與上下文,針對特定角色或專案階段使用,甚至也可以透過 handoffs 的方式來實作一個像是 Spec-kit 但卻又更符合自己需求的工作流程。
結語
透過 Custom Instructions、Prompt Files 和 Chat Modes 三種機制,VS Code 中的 GitHub Copilot 能夠從通用的 AI 助手轉變為貼近專案需求、遵循團隊規範的專屬開發夥伴。Custom Instructions 提供全域或特定範圍的程式碼規範,Prompt Files 讓重複性任務標準化與自動化,而 Chat Modes 則為不同角色與工作流程建立專門的 AI 環境。這些客製化功能不僅提升了開發效率,也確保了團隊協作的一致性。從最簡單的設定檔開始,逐步建立適合你的 AI 開發環境,讓 GitHub Copilot 成為真正理解你需求的智慧助手。
下面參考連結有一個 Awesome Copilot (非常重要),裡面有豐富的 Instructions / Prompts / Chat Modes 可以參考使用,大家記得一定要去挖寶!