在 VS Code 中使用 AI 的最佳實踐
本文介紹了在 Visual Studio Code 中充分利用 AI 的實證作法。每個部分都提供可操作的指導,並附有更深入的文件連結。
為 AI 優化您的專案
藉由在配置專案和程式碼庫時考慮 AI,您可以提高 AI 回應的準確性,並確保 AI 遵循團隊的程式碼標準和實踐。
VS Code 支援多種機制來配置專案的 AI 行為。在聊天中輸入 /init 可產生起始配置。
| 機制 | 最適合 | 開始使用 |
|---|---|---|
| 自定義指令 | 專案級程式碼標準和架構上下文 | 輸入 /init 為您的專案產生常駐指令 |
| 自定義代理人 | 專門的工作流程或角色(TDD、安全性稽核) | 輸入 /create-agent <description> 以產生自訂代理程式 |
| 技能 | 特定領域功能(測試、部署) | 輸入 /create-skill <description> 以產生技能 |
| 工具和 MCP 伺服器 | 連接到外部系統(資料庫、API、CLI) | 在 mcp.json 中配置 |
有效專案配置的秘訣
- 保持指令檔簡潔。它們會在每次聊天互動時載入。專注於 AI 無法從程式碼中推斷的資訊,例如非預設慣例、架構決策或環境設定。
- 使用
applyTo模式設定指令範圍。輸入/instructions可建立特定語言或特定資料夾的指令檔,而不是將所有內容放在一個檔案中。 - 限制啟用的工具。更少的啟用工具意味著更快、更相關的回應。僅在任務需要時啟用工具。
有關完整的設定詳細資訊,請參閱自訂概觀。
為任務選擇正確的工具
VS Code 中的 AI 提供多種互動模式。為手邊任務選擇正確的模式可以節省時間並產生更好的結果。
| 工具 | 最適合 | 範例 |
|---|---|---|
| 內嵌建議 | 在撰寫程式碼時保持流暢 | 程式碼補全、變數名稱、樣板程式碼 |
| 提問(聊天) | 問題、腦力激盪、探索想法 | 「此專案中的身份驗證是如何運作的?」 |
| 內嵌聊天 | 無需切換上下文的針對性就地編輯 | 重構函數、新增錯誤處理 |
| 代理程式 | 需要自主規劃和工具使用的多檔案變更 | 端到端實作功能 |
| 規劃 | 實作前的結構化規劃 | 設計架構或遷移策略 |
| 智慧動作 | 內建的、專門的一步任務 | 產生提交訊息、修正錯誤、重新命名符號 |
選擇正確的代理程式類型
使用代理程式時,請選擇與您的任務和工作流程相符的代理程式類型。每種類型在互動性、速度和隔離性之間有不同的權衡。
-
使用本機代理程式進行互動式工作。本機代理程式在您的編輯器中運行,可完全存取您的工作區、工具和擴充功能。當您需要快速迭代、即時檢閱變更或使用 VS Code 特定的工具(例如整合式瀏覽器或 MCP 伺服器)時,請選擇它們。
-
將明確定義的任務卸載給背景代理程式。當任務足夠明確,您不需要監看每個步驟時,請使用Copilot CLI或雲端代理程式。
-
使用雲端代理程式進行團隊協作。雲端代理程式遠端運行並建立拉取請求,這使其成為需要團隊審查的任務或您想要將 GitHub 問題直接指派給代理程式時的理想選擇。
-
為獨立任務執行並行工作階段。在本地、背景和雲端環境中啟動多個代理程式工作階段,同時處理不相關的任務。從工作階段列表中監控它們。
-
在代理程式類型之間切換。使用本機代理程式互動式地開始探索和規劃,然後交接給背景或雲端代理程式進行實作。對話歷史記錄會繼承。
撰寫有效的提示
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 方向。相反地,請具體說明「更好」的含義:「降低時間複雜度」或「新增空值的輸入驗證」。
-
透過後續提示進行迭代。透過在後續訊息中新增限制或修正來優化回應,而不是重寫整個提示。
-
及早糾正方向。如果 AI 朝錯誤的方向發展,請透過後續訊息引導它,以重新導向目前的請求、排隊後續請求,或停止並傳送新的提示。
-
要求 AI 提出澄清問題。如果任務不明確,請指示 AI 在繼續之前向您提出問題。這會產生比猜測需求更準確的結果。
-
並行任務。如果您有多個獨立任務,請要求 AI 並行執行它們以節省時間。例如:「並行對 X 和 Y 進行獨立研究並總結發現。」
欲了解更多資訊,請在 GitHub Copilot 文件中找到實用的提示範例。
提供正確的上下文
當 AI 擁有相關上下文時,回應會更準確。使用這些技術引導 AI 找到正確的資訊
-
AI 會自動執行程式碼搜尋以收集相關上下文。當您的提示不明確時,您可以透過在提示中參考特定檔案、資料夾或符號來引導 AI,使用
#<file>、#<folder>或#<symbol>。 -
若要從網頁或 GitHub 儲存庫中提取資訊,請使用
#fetch向 AI 提供超出程式碼庫的最新資訊,或使用來自 MCP 伺服器(例如 GitHub MCP)的工具。 -
參考 VS Code 環境上下文,例如原始碼控制變更、終端機輸出或測試失敗,以幫助 AI 了解您專案的目前狀態並提供更相關的回應。
-
新增圖片或螢幕截圖,讓 AI 分析視覺內容。
-
使用整合式瀏覽器預覽您的應用程式,並選擇頁面元素作為上下文。
欲了解更多資訊,請參閱將上下文新增到聊天提示和配置工具。
選擇正確的模型
每個 AI 模型都有不同的優勢。有些擅長推理,有些則擅長程式碼生成或更快的響應。為您的任務選擇正確的模型可以改善結果。
-
將模型與任務複雜性相匹配。對於簡單的補全和樣板程式碼,使用快速模型。對於規劃、偵錯或架構決策,切換到推理優化模型。
-
使用最新的模型。較新的模型通常具有改進的功能。VS Code 持續增加對新模型和模型版本的支援。檢查可用模型並使用最新模型。
-
在提示檔和代理程式中固定模型。在您的提示檔或自訂代理程式定義中指定偏好模型,以確保針對特定任務始終使用正確的模型。
-
實驗和比較。如果您對回應不滿意,請嘗試不同的模型。不同的模型對於相同的提示可以產生顯著不同的結果。
-
調整推理模型的思考投入。使用模型選擇器中的思考投入控制項,以增加複雜任務的投入或減少簡單任務的投入。
-
使用 BYOK 進行額外控制。自帶 API 金鑰以獲得更多模型選擇和託管選項。
欲了解更多資訊,請參閱選擇 AI 模型和適用於 Copilot Chat 的可用模型。
先規劃,後實作
對於跨多個檔案的複雜變更,請將規劃與實作分開。這種方法可以防止 AI 解決錯誤的問題。
- 探索。在進行變更之前,使用提問模式或子代理程式閱讀相關程式碼並了解其運作方式。
- 規劃。使用規劃代理程式建立結構化的實作計畫。在執行之前檢閱並改進計畫。
- 實作。切換到代理程式模式並從計畫開始實作。包含測試或預期輸出,以便代理程式可以驗證自己的工作。對於較長的任務,交接給背景代理程式或雲端代理程式。
- 檢閱。使用檢查點檢閱進度,如果代理程式偏離軌道則倒回,或者對產生的拉取請求請求 Copilot 程式碼審查。
欲了解更多資訊,請參閱上下文工程工作流程。
檢閱並驗證 AI 輸出
AI 生成的程式碼可能包含錯誤、安全問題或細微的邏輯錯誤。始終將 AI 輸出視為需要檢閱的起點。
-
接受前請檢閱。在接受變更之前,請仔細閱讀生成的程式碼。注意邊緣情況、錯誤處理以及 AI 可能做出的假設。
-
AI 變更後執行測試。在您的提示中包含測試案例,以便 AI 可以驗證自己的工作。如果 AI 不會自動執行測試,請在繼續之前自行執行它們。
-
使用檢查點倒回。如果代理程式偏離軌道,請使用檢查點回溯到已知良好的狀態,而不是試圖修復連鎖錯誤。
-
檢查安全問題。審查 AI 生成的程式碼中是否存在常見漏洞,例如注入缺陷、硬編碼密鑰或缺少輸入驗證。避免將憑證或敏感資料貼到提示中。
欲了解更多資訊,請參閱GitHub Copilot 安全性和GitHub Copilot 信任中心。
管理上下文和工作階段
當對話充滿不相關的上下文時,AI 回應的品質可能會下降。主動管理您的工作階段。
-
為不相關的任務開始新的工作階段。不要將不相關的問題堆積在同一個對話中。上下文污染會降低回應品質。
-
移除不相關的歷史記錄。刪除不再相關的過去問題和回應,或者開始一個新的工作階段。
-
壓縮上下文。使用/compact並提供指令,選擇性地壓縮上下文並僅保留最相關的資訊。
-
使用子代理程式進行調查。提示 AI 使用子代理程式獨立進行研究和探索,這樣發現就不會混亂您的主要上下文。
-
選擇正確的工作階段類型。使用本地工作階段處理您目前程式碼中需要立即關注的快速任務,背景任務處理可以在本地執行並與您的主要上下文隔離的任務,或雲端工作階段處理可以從團隊協作中受益的任務。
-
透過並行工作階段進行擴展。為獨立任務並行運行多個工作階段,以節省時間並保持上下文分離。您可以同時運行多個工作階段,涵蓋本地、背景和雲端環境,並透過 VS Code 中的工作階段列表在它們之間切換。
處理大型程式碼庫
Copilot 旨在有效處理大型、複雜且多根目錄的工作區。請使用這些實踐來大規模獲得最佳結果。
-
使用工作區索引。VS Code 會自動使用語義搜尋、語言智能和 GitHub 的程式碼搜尋來索引您的專案,以進行深度跨檔案推理。這適用於小型專案和大型企業程式碼庫。對於大型儲存庫,請使用遠端索引,以便在您的儲存庫和 GitHub 上相關儲存庫中獲得快速、全面的結果。
-
使用多根目錄工作區設定工作範圍。對於單一儲存庫或擁有多個服務的專案,請使用多根目錄工作區來為 AI 提供明確的邊界和集中的上下文。
-
提供專案級指令。使用自訂指令來描述您的專案架構、模組邊界以及 AI 無法單獨從程式碼推斷的慣例。這為 AI 提供了進行架構級變更所需的上下文。
-
為獨立變更執行並行工作階段。將大型任務分解為獨立的子任務,並在並行工作階段中運行它們,每個工作階段都專注於程式碼庫的不同領域。
-
使用規劃代理程式處理跨領域變更。對於跨多個檔案或模組的變更,請先使用規劃代理程式建立結構化的實作計畫,然後再執行。
相關資源
- 上下文工程指南
- 自訂概觀
- 速查表
- GitHub Copilot 安全性
- GitHub Copilot 文件中的使用 GitHub Copilot 的最佳實踐