在 VS Code 中使用 AI 的最佳實踐
本文涵蓋了充分利用 Visual Studio Code 中 AI 功能的實證做法。每個章節都提供了可執行的指導方針,並附有深入文件的連結。
針對 AI 優化您的專案
透過在配置專案與程式碼庫時考慮 AI 的需求,您可以提高 AI 回應的準確性,並確保 AI 遵循團隊的程式碼標準與慣例。
VS Code 支援多種機制來配置專案的 AI 行為。在對話中輸入 /init 即可產生初始設定檔。
| 機制 | 最適合 | 開始使用 |
|---|---|---|
| 自定義指令 | 全專案的程式碼標準與架構上下文 | 輸入 /init 以產生專案的常駐指令 |
| 自定義代理人 | 專業化工作流程或角色設定(如 TDD、安全性審查) | 輸入 /create-agent <description> 以產生自訂 Agent |
| 技能 | 特定領域能力(如測試、部署) | 輸入 /create-skill <description> 以產生技能 |
| 工具與 MCP 伺服器 | 連接外部系統(如資料庫、API、CLI) | 在 mcp.json 中設定 |
有效專案配置的提示
- 保持指令檔簡潔。 每次對話互動時都會載入這些指令。請專注於 AI 無法從程式碼中推斷出的資訊,例如非預設的慣例、架構決策或環境設定。
- 使用
applyTo模式來限縮指令範圍。 輸入/instructions來建立語言或資料夾專屬的指令檔,而不是將所有內容放在同一個檔案中。 - 限制啟用的工具。 啟用的工具越少,回應速度越快且越相關。僅在任務需要時才啟用相關工具。
完整的設定細節,請參閱自訂概覽。
為任務選擇正確的工具
VS Code 中的 AI 提供多種互動模式。為當前任務選擇正確的模式可以節省時間並產生更好的結果。
| 工具 | 最適合 | 範例 |
|---|---|---|
| 內嵌建議 | 撰寫程式碼時保持流暢 | 行內建議、變數命名、樣板程式碼 |
| 提問 (Ask/Chat) | 問題詢問、腦力激盪、探索想法 | 「這個專案中的身份驗證是如何運作的?」 |
| 內嵌聊天 | 無需切換上下文的目標式原地編輯 | 重構函式、新增錯誤處理 |
| 代理程式 | 需要自主規劃與工具使用,涉及多個檔案的變更 | 端到端地實作功能 |
| 規劃 | 實作前的結構化規劃 | 設計架構或遷移策略 |
| 智慧動作 | 內建的專業化單步驟任務 | 產生提交訊息 (commit messages)、修復錯誤、重新命名符號 |
選擇正確的 Agent 類型
與 Agent 協作時,請選擇符合您任務與工作流程的 Agent 類型。每種類型在互動性、速度與隔離性之間都有不同的取捨。
-
使用本機 Agent 進行互動式工作。 本機 Agent 在您的編輯器中執行,可完整存取您的工作區、工具與延伸模組。當您需要快速迭代、即時審查變更,或使用如整合瀏覽器或 MCP 伺服器等 VS Code 專屬工具時,請選擇此類別。
-
將明確的任務委派給背景 Agent。 當任務明確到不需要監控每個步驟時,請使用 Copilot CLI 或 雲端 Agent。
-
使用雲端 Agent 進行團隊協作。 雲端 Agent 在遠端執行並可建立提取請求 (Pull Request),這使它們成為需要團隊審查任務,或當您想將 GitHub Issue 直接指派給 Agent 時的理想選擇。
-
針對獨立任務執行平行對話區段。 啟動多個 Agent 對話區段,跨越本機、背景與雲端環境,以同時處理不相關的任務。您可以從對話區段列表進行監控。
-
在不同 Agent 類型之間進行交接。 先透過本機 Agent 進行互動式探索與規劃,然後交接給背景或雲端 Agent 進行實作。對話紀錄會保留下來。
如需更多資訊,請參閱使用 Agent 與 Agent 教學課程。
撰寫有效的提示詞 (Prompts)
AI 回應的品質取決於您提示詞的清晰度與具體程度。這些技巧有助於您獲得更好的結果。
-
對輸入、輸出與限制條件保持具體。 說明您想要使用的程式語言、框架與函式庫。描述預期的行為,或包含輸入與輸出的範例。
Write a TypeScript function that validates email addresses. Return true for valid addresses, false otherwise. Don't use regex. Example: validateEmail("user@example.com") returns true Example: validateEmail("invalid") returns false -
將複雜任務拆解。 與其一次要求完成整個功能,不如將其分解為更小、範圍更明確的步驟。這種方法能產生更可靠的結果,並更容易在早期發現問題。
-
包含預期輸出以供驗證。 提供測試案例、預期結果或驗收標準,以便 AI 可以驗證自己的工作。這是您可以採取的最有效作法之一。
Implement a rate limiter using the token bucket algorithm. Write unit tests that verify: 10 requests/second allowed, 11th request rejected, bucket refills after 1 second. Run the tests after implementing. -
避免模糊的提示詞。 像「讓它變得更好」這樣的提示詞不會給 AI 任何方向。請指定「更好」的含義,例如「降低時間複雜度」或「新增 null 值的輸入驗證」。
-
透過後續提示詞進行迭代。 透過在後續訊息中加入限制條件或修正,來優化回應,而不是重寫整個提示詞。
-
儘早修正方向。 如果 AI 偏離了方向,請透過後續訊息引導它,以重定向當前請求、加入排隊的後續請求,或停止並傳送新的提示詞。
-
請 AI 提出釐清問題。 如果任務不明確,請指示 AI 在進行前先向您提問。這比猜測需求能產生更準確的結果。
-
平行任務。 如果您有多個獨立任務,請要求 AI 平行執行以節省時間。例如:「請平行針對 X 與 Y 進行獨立研究,並總結研究發現。」
如需更多資訊,請在 GitHub Copilot 文件中搜尋實用的提示詞範例。
提供正確的上下文 (Context)
當 AI 具備相關上下文時,回應會更準確。請使用這些技巧將 AI 指向正確的資訊。
-
AI 會自動執行程式碼搜尋以收集相關上下文。當您的提示詞不明確時,您可以使用
#<file>、#<folder>或#<symbol>在提示詞中參考特定檔案、資料夾或符號來引導 AI。 -
若要從網頁或 GitHub 儲存庫擷取資訊,請使用
#fetch為 AI 提供您程式碼庫以外的最新資訊,或使用來自 GitHub MCP 等 MCP 伺服器的工具。 -
參考 VS Code 環境上下文,例如原始碼控制變更、終端機輸出或測試失敗,以幫助 AI 理解專案的當前狀態並提供更相關的回應。
-
新增圖片或截圖,讓 AI 分析視覺內容。
-
使用整合瀏覽器預覽您的應用程式,並選擇網頁元素作為上下文。
如需更多資訊,請參閱在聊天提示詞中加入上下文與配置工具。
選擇正確的模型
每個 AI 模型都有不同的優勢。有些擅長推理,有些則擅長程式碼產生或更快速的回應。為您的任務選擇正確的模型可改善結果。
-
依任務複雜度匹配模型。 使用快速模型處理簡單的補全與樣板程式碼。針對規劃、除錯或架構決策,請切換至針對推理優化的模型。
-
使用最新模型。 較新的模型通常具備改良的能力。VS Code 持續增加對新模型與模型版本的支援。請查看可用模型並使用最新版本。
-
在提示詞檔案與 Agent 中鎖定模型。 在您的提示詞檔案或自訂 Agent 定義中指定偏好的模型,確保特定任務能持續使用正確的模型。
-
實驗並比較。 如果您對回應不滿意,請嘗試不同的模型。對於相同的提示詞,不同模型可能會產生顯著不同的結果。
-
調整推理模型的思考力度。 使用模型選擇器中的思考力度控制,為複雜任務增加思考力度,或為簡單任務減少思考力度。
-
使用 BYOK(自備金鑰)以獲得額外控制權。 攜帶您自己的 API 金鑰以選擇更多模型與託管選項。
-
考量點數消耗。 能力更強的模型會消耗更多每個 Token 的 AI 點數。自動模型選擇會自動平衡品質與成本。如需更多提示,請參閱優化 AI 點數使用。
如需更多資訊,請參閱選擇 AI 模型與 Copilot Chat 可用模型。
先規劃,再實作
針對跨越多個檔案的複雜變更,請將規劃與實作分開。這種方法可防止 AI 解決錯誤的問題,並避免將 AI 點數浪費在最終需要捨棄的程式碼上。
- 探索。 在變更之前,使用提問模式 (ask mode) 或子 Agent 閱讀相關程式碼並了解其運作方式。
- 規劃。 使用 Plan Agent 建立結構化的實作計畫。在執行前審查並精煉計畫。
- 實作。 切換至 Agent 模式並根據計畫進行實作。包含測試或預期輸出,以便 Agent 可以驗證自己的工作。針對較長的任務,可交接給背景 Agent 或 雲端 Agent。
- 審查。 使用檢查點 (Checkpoints) 來審查進度,若 Agent 偏離軌道則倒回,或針對產生的提取請求要求 Copilot 進行程式碼審查。
如需更多資訊,請參閱上下文工程工作流程。
審查並驗證 AI 輸出
AI 產生的程式碼可能包含錯誤、安全性問題或細微的邏輯錯誤。請務必將 AI 輸出視為需要審查的起點。
-
接受前請先審查。 在接受變更之前,請詳讀產生的程式碼。請留意邊界條件、錯誤處理以及 AI 可能做出的假設。
-
AI 變更後執行測試。 在提示詞中加入測試案例,以便 AI 可以驗證自己的工作。如果 AI 沒有自動執行測試,請在繼續之前自行執行。
-
使用檢查點進行倒回。 如果 Agent 偏離軌道,請使用檢查點還原到已知良好的狀態,而不是嘗試修復連鎖錯誤。
-
檢查安全性問題。 針對常見漏洞(如注入攻擊、硬編碼的金鑰或缺失的輸入驗證)審查 AI 產生的程式碼。避免將憑證或敏感資料貼入提示詞中。
如需更多資訊,請參閱 GitHub Copilot 安全性與 GitHub Copilot 信任中心。
管理上下文與對話區段
當對話中充斥不相關的上下文時,AI 的回應品質可能會下降。請主動管理您的對話區段。
-
針對不相關的任務啟動新對話區段。 不要將不相關的問題堆疊在同一個對話中。上下文污染會降低回應品質,並在不相關的歷史紀錄上浪費 Token。
-
移除不相關的歷史紀錄。 刪除不再相關的過往問題與回應,或開啟全新的對話區段。
-
精簡上下文。 使用 /compact 並提供指令以選擇性地精簡上下文,僅保留最相關的資訊。精簡可以減少後續請求傳送的 Token 數量,這有助於管理 AI 點數使用。
-
使用子 Agent 進行調查。 透過子 Agent 引導 AI 在隔離環境中進行研究與探索,這樣研究發現就不會干擾您的主要上下文。
-
選擇正確的對話區段類型。 使用本機對話處理當前程式碼中需要即時關注的快速任務;使用背景任務處理可與主上下文隔離並在背景運行的任務;使用雲端對話區段以利於團隊協作。
-
以平行對話區段進行擴展。 為獨立任務執行多個平行對話區段以節省時間並保持上下文分離。您可以同時運行多個對話區段(跨越本機、背景與雲端環境),並透過 VS Code 中的對話區段列表在它們之間切換。
-
使用分岔 (Fork) 而非重新提示。 使用
/fork來探索替代方案而不丟失上下文,而不是重新開始並從零建立上下文。
如需更多資訊,請參閱對話區段管理、工作區索引與優化 AI 點數使用。
處理大型程式碼庫
Copilot 旨在與大型、複雜且具備多根目錄 (multi-root) 的工作區有效協作。請使用這些實踐以在規模化場景下獲得最佳結果。
-
使用工作區索引。 VS Code 會自動利用語意搜尋、語言智慧與 GitHub 的程式碼搜尋來索引您的專案,以便進行深度的跨檔案推理。這適用於小型專案與大型企業級程式碼庫。對於大型儲存庫,請使用遠端索引,以在您的儲存庫以及 GitHub 上相關的儲存庫中獲得快速且全面的結果。
-
使用多根目錄工作區來限制工作範圍。 對於 Monorepos(單體儲存庫)或包含多個服務的專案,請使用多根目錄工作區為 AI 提供明確的邊界與聚焦的上下文。
-
提供專案層級的指令。 使用自訂指令來描述您的專案架構、模組邊界以及 AI 無法單從程式碼中推斷出的慣例。這為 AI 處理架構層級的變更提供了所需的上下文。
-
針對獨立變更執行平行對話區段。 將大型任務分解為獨立的子任務,並在平行對話區段中執行,每個區段專注於程式碼庫的不同部分。
-
針對跨領域變更使用 Plan Agent。 對於橫跨許多檔案或模組的變更,請先使用 Plan Agent 在執行前建立結構化的實作計畫。
相關資源
- 上下文工程指南
- 自訂概覽
- 備忘錄
- GitHub Copilot 安全性
- 使用 GitHub Copilot 的最佳實踐 (位於 GitHub Copilot 文件中)