創建有效的 GitHub Copilot 指令
提示是自然語言指示,可告訴 GitHub Copilot 您想要執行的動作。 提示可用來詢問問題、傳達要求或描述工作。
例如,下列提示代表問題、要求和工作描述。
Question: How do I create a button that submits a form?
Request: Add a button that opens a modal dialog. The button should be blue with rounded corners.
Task: Build a product page that displays a product title, product image, product description, and price. Product information should be fetched from the attached ProductsList.json file. The price should be formatted as currency. The page should also include a button to add the product to the cart.
提示的品質直接影響到 GitHub Copilot 回應的品質。
什麼是良好的提示?
建立高品質的提示對於從 GitHub Copilot 取得最大價值至關重要。 下列策略可協助您製作產生更精確、相關且實用的回應的提示。
從一般性開始,然後再逐漸具體化
撰寫 Copilot 提示時,請從目標或案例的廣泛描述開始,然後提供特定需求。 這種方法可提供 Copilot 必要的內容,同時確保解決您的詳細需求。
Example:
Write a function that tells me if a number is prime.
The function should take an integer and return true if the integer is prime.
The function should error if the input is not a positive integer.
提供具體範例
範例是將意圖傳達給 Copilot 的最有效方式之一。 您可以提供範例輸入數據、預期的輸出,甚至是範例實作,以引導 AI 的理解。
Example:
Write a function that finds all dates in a string and returns them in an array. Dates can be formatted like:
- 05/02/24
- 05/02/2024
- 5/2/24
- 5/2/2024
- 05-02-24
- 05-02-2024
- 5-2-24
- 5-2-2024
Example usage:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")
Expected return: ["11/14/2023", "12-1-23"]
將複雜工作分成更簡單的步驟
面對複雜或大型工作時,將其分解為較小的可管理元件。 這種方法會導致更好的結果,並讓您更輕鬆地偵錯和精簡個別片段。
範例:不要要求 Copilot 產生完整的文字搜尋謎題,而是將其細分:
Write a function to generate a 10 by 10 grid of lettersWrite a function to find all words in a grid of letters, given a list of valid wordsWrite a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 wordsUpdate the previous function to print the grid and 10 random words from the grid
消除模棱兩可
請避免使用模糊的引用和可能以多種方式解釋的詞彙。 明確說明您指的是的內容,以及您想要科皮洛特做什麼。
不良範例:
- 「這是做什麼用的?」(不清楚「這」指的是什麼)。
- 修復錯誤(未指定是哪個錯誤或如何修復)。
更好的範例:
- “createUser 函式的作用為何?
- 「您最後一個回應中的程序代碼有何用途?
- 「修正電子郵件輸入欄位中的驗證錯誤。」
連結庫考慮:
- 如果使用不常見的連結庫,請描述其用途。
- 對於特定連結庫,請包含import語句,或指定您想要使用的連結庫。
提供相關內容
透過有效地管理開發環境,協助 Copilot 瞭解您的專案結構和意圖。
在您的 IDE 中:
- 開啟相關檔案並關閉不相關的檔案。
- 請標示您希望 Copilot 參考的特定程式碼區段。
- 使用像 Visual Studio Code 中的
@workspace或 JetBrains IDE 中的@project這樣的聊天參與者。
在 Copilot Chat 中:
- 參考特定檔案或程式代碼區塊。
- 附加相關的檔或規格。
- 使用清晰的檔案路徑和函式名稱。
逐一查看並精簡
不要指望在第一次嘗試就得到完美的結果。 當您參與反覆對話時,Copilot 效果最佳,並根據您收到的回應來精簡您的要求。
反覆專案的策略:
- 如果使用內嵌建議,請刪除並使用修改後的提示重試。
- 在 Copilot Chat 中,參考先前的回應,並要求進行特定修改。
- 藉由要求逐步改進,以構築部分解決方案。
維護相關的交談歷程記錄
Copilot Chat 會使用交談歷程記錄來了解內容,因此請策略性地管理此歷程記錄。
最佳做法:
- 針對不同的工作或項目啟動新的線程。
- 刪除可能會混淆未來回應的不相關或失敗要求。
- 讓交談著重於相關功能。
遵循良好的編碼做法
您現有程式代碼基底的品質會影響 Copilot 產生適當建議的能力。 在您的程式代碼中維持高標準,以取得更好的 AI 協助。
程式代碼品質因素:
- 使用一致的程式代碼樣式和模式。
- 選擇變數和函式的描述性名稱。
- 新增有意義的批註來說明複雜的邏輯。
- 將程式代碼結構化為模組化、範圍完善的元件。
- 包含完整的單元測試。
Note
您可以要求 Copilot 藉由要求批注、重構建議,或將大型函式分成更小、更容易管理的片段,以協助改善程式碼品質。
以下是一些良好的提示:
- 清楚:確切描述您想要的內容。
- 特定:包括版面配置、行為或樣式的細節。
- 內容相關:參考現有的程式代碼或結構。
反覆調整提示
如果 GitHub Copilot 的初始回應不符合您的預期,您可能需要在提示上反覆運算。 考慮下列策略:
- 編輯提示以更具體化。
- 請在聊天中新增內容以釐清您的目標或需求。
- 使用 Copilot Chat 來詢問以先前回應為基礎的後續問題。
評估和回應 Copilot 的建議
了解如何評估 Copilot 的建議對於有效的 Vibe 編碼至關重要。 並不是每個建議都會完美無缺,而且知道何時接受、拒絕或修改回應會大幅改善您的開發體驗。
接受建議的時機
當 Copilot 的建議出現以下情況時,請接受它:
- 符合您的需求:程式代碼會執行您要求的內容。
- 遵循最佳做法:使用適當的模式、命名慣例和結構。
- 結構良好:程式代碼可讀取、可維護且格式正確。
- 包括適當的錯誤處理:解決邊緣情況和潛在的失敗問題。
- 符合項目的風格:與現有的程式碼基礎模式和慣例一致。
要接受的好建議範例:
提示: 「建立函式來驗證電子郵件位址」
Copilot 建議:
function validateEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (typeof email !== 'string') {
throw new Error('Email must be a string');
}
return emailRegex.test(email.toLowerCase());
}
應該接受這項建議,因為它包含輸入驗證、錯誤處理,以及使用合理的 regex 模式。
拒絕建議的時機
如果發生以下情況,拒絕 Copilot 的建議:
- 請勿解釋您的提示:程式代碼解決的是與要求不同的問題。
- 包含安全性弱點:使用不安全的做法或公開敏感數據。
- 過於複雜:以不必要的複雜度實作的簡單工作。
- 使用已被取代的方法:依賴陳舊或過時的 API。
- 缺少錯誤處理:請勿考慮潛在的失敗案例。
- 違反程式代碼撰寫標準:請勿遵循小組的既定做法。
拒絕的建議範例:
提示: 「建立安全密碼驗證函式」
建議不佳:
function validatePassword(password) {
return password.length > 6;
}
這應該遭到拒絕,因為它對於安全性需求過於簡單,而且無法正確驗證密碼強度。
修改建議的時機
在下列情況下修改 Copilot 的建議:
- 大部分正確但需要調整:核心邏輯是健全的,但詳細數據需要調整。
- 需要其他功能:基本功能良好,但需要增強功能。
- 有次要格式樣式問題:程式碼可以運作,但不符合您的格式設定。
- 需要不同的變數名稱:邏輯正確,但可以改善命名。
- 需要效能優化:目前功能正常,但可以提升效率。
修改建議的範例:
Copilot 建議:
function calculateTotal(items) {
let total = 0;
for (let i = 0; i < items.length; i++) {
total += items[i].price;
}
return total;
}
您的修改,以獲得好的可讀性和新式 JavaScript:
function calculateTotal(items) {
return items.reduce((total, item) => total + item.price, 0);
}
改善建議的策略
當建議不太正確時,請嘗試下列方法:
精簡您的提示:
- 新增更具體的需求。
- 包含預期的輸入/輸出範例。
- 指定您使用的程式設計樣式或架構。
要求修改:
- 「讓上一個函式更健全,並增強錯誤處理能力。」
- 「簡化您剛才撰寫的程序代碼。」
- 「將 TypeScript 類型新增至上一個函式」。
以累加方式建置:
- 從基本版本開始,並要求增強功能。
- 一次新增一個功能,而不是一次要求一切。
- 在進行下一個增強功能之前,應先測試每次迭代。
Tip
修改建議時,請保留運作良好且需要變更的特定元件。 這有助於 Copilot 瞭解您的喜好設定,並提供更好的未來建議。
Summary
為 GitHub Copilot 建立有效的提示,對於最大限度地發揮其在 Vibe 編碼中的潛力至關重要。 從一般描述開始,提供具體範例、分解複雜的工作,以及維護清楚的溝通,您可以引導 Copilot 產生符合您需求的高品質程序代碼。 反覆調整提示並瞭解如何評估建議,可進一步增強您的開發體驗,讓您能有效利用 AI 協助,同時保持對程式撰寫流程的控制權。