善用 GitHub Copilot 的即時上下文 (In-memory Context)

更新於 發佈於 閱讀時間約 8 分鐘


GitHub Copilot 是一款強大的 AI 輔助程式設計工具,它能根據您的程式碼和意圖提供即時的程式碼建議。其高效運作的關鍵之一,就是對「即時上下文 (In-memory Context)」的理解與利用。了解這個機制並掌握其最佳實踐,將能極大地提升您的開發效率和程式碼品質。

即時上下文是 Copilot 在執行時動態組裝的一組資訊,用來理解您當前的工作環境和程式設計意圖。它就像 Copilot 的「工作記憶」,包含了它需要生成相關且準確程式碼的所有即時線索。除了預先訓練的語言模型外,這個即時上下文對於 Copilot 生成高品質建議至關重要。

即時上下文如何運作?

Copilot 的核心是一個大型語言模型 (LLM),該模型經過大量公開原始碼和自然語言的訓練。當您開始輸入程式碼或註解時,Copilot 會即時地從您正在處理的檔案中收集各種資訊,來構建其即時上下文。然後,它會結合這個即時上下文和其底層模型,來預測並提供程式碼建議。

Copilot 用來構建即時上下文的資訊來源包括:

  • 您目前活躍的檔案內容:您正在編輯的程式碼。這是 Copilot 最直接的參考依據,用於理解您目前正在撰寫的程式邏輯,可協助模型提供符合當前邏輯結構與語法風格的建議。
  • 註解 (Comments):Copilot 會利用註解來理解程式碼的上下文和您的意圖,例如函式要解決的問題或預期行為,良好的註解可引導模型產生更準確、語意對齊的程式碼建議。
  • 已開啟的檔案與您的工作區:它不僅查看您當前活躍的檔案,還會考慮工作區中其他已開啟或未開啟的檔案內容。讓模型能夠根據整體專案架構、相依邏輯或共同命名習慣做出一致的建議。
  • 匯入語句 (Import statements):匯入的套件和模組會提供關於您正在使用的技術和功能的線索。
  • 檔案結尾與檔案名:例如 .js 或 .html 等檔案類型,以及具備描述性的檔案名稱,都有助於 Copilot 做出更精確的判斷。
  • 有意義的類別、方法和變數名稱:具備描述性的命compilance名可以幫助 Copilot 理解您的意圖,從而提供更好的建議。
  • 您之前輸入的文字:Copilot 會從您鍵入的內容中學習並推斷,分析您目前的程式風格與主題方向,即時適應您目前的工作節奏,讓建議更流暢、更貼近您目前的思路。
  • 程式碼中的範例:在註解中提供範例,可以幫助 Copilot 產生更精確的內容。讓模型能夠模仿範例格式,自動產出一致性的內容。
  • 對話歷史 (僅限 Copilot Chat):在 Copilot Chat 中,AI 助手會記住您對話的上下文,並根據先前的互動提供更相關的建議。

上下文越充足,AI 助理提供的輸出就越好。

善用即時上下文的最佳實踐

為了最大限度地發揮 Copilot 的能力,以下是一些實用的策略和原則:

  • 實施「自上而下設計」與「問題分解」:

將複雜的程式設計問題分解成更小、更容易管理的部分。這是我在先前對話中強調的關鍵原則。每個子任務都應該足夠小,能夠清晰地描述並由 Copilot 有效地生成程式碼。例如,一個大型的資料處理任務可以分解為:資料載入、資料檢查、摘要統計、資料預處理、特徵工程、模型選擇、模型訓練、模型評估等步驟。您可以針對每個分解出來的功能 (Feature) 或步驟撰寫提示。

  • 撰寫精確且豐富上下文的提示 (Prompt Engineering):

簡潔而明確:針對每個小部分撰寫簡潔、明確且具足夠上下文的提示。

善用註解:將您的意圖直接寫在程式碼檔案的註解中(例如在 HTML 檔案中使用 <!-- -->,在 JavaScript 檔案中使用 //)。提供程式碼範例:在註解中提供期望結果的範例,這能有效引導 Copilot 輸出更精確的程式碼。

使用描述性命名:為您的檔案、變數、函式和類別使用有意義且具描述性的名稱。Copilot 會從這些名稱中推斷您的意圖。

迭代和細化提示:如果 Copilot 的建議不夠好,請不要氣餒。您可以嘗試迭代和細化提示。重新措辭、添加分隔符(如逗號、冒號),或改變提供的上下文,都可以幫助 Copilot 產生更好的結果。

  • 有效利用 Copilot 的不同互動模式與命令:

行內提示 (In-editor inline comments):在程式碼文件中直接撰寫註解作為提示,Copilot 會自動在您的游標位置提供程式碼補齊建議。您可以按 Tab 鍵接受建議。

手動觸發建議:如果沒有自動出現建議,可以嘗試按 Ctrl + Spacebar (Windows) 或 Option+\ / Alt+\ (Mac) 來手動觸發即時建議 。

完成面板 (Completions Panel):按 Ctrl + Enter (或 Cmd+Enter) 可以開啟一個完成面板,其中會顯示多達 10 種不同的程式碼建議供您選擇。

Copilot Chat:當您需要更複雜的對話、解釋程式碼、學習新概念、生成測試或重構程式碼時,可以使用 Copilot Chat 模式。

    • @workspace 命令:當您需要 Copilot 考慮整個專案中的所有檔案(無論是否開啟)來解決問題時,請使用 @workspace。這對於跨檔案的重構或理解大型程式碼庫特別有用。
    • #file 標籤:如果您希望 Copilot 考慮特定檔案的內容,即使該檔案未開啟,可以使用 #file 標籤指定檔案路徑。您甚至可以在一個提示中引用多個檔案。
    • #editor 標籤:此標籤會讓 Copilot 將您當前編輯器中可見的程式碼作為上下文。
    • 選取程式碼 (Selection context):在編輯器中選取一段程式碼,然後在聊天視窗中提供提示,Copilot 會將選取部分作為上下文來回應。
    • /explain 命令:此命令讓 Copilot 解釋程式碼片段或概念,非常適合學習和理解不熟悉的程式碼。
    • /fix 命令:如果您的程式碼有錯誤,選取錯誤的程式碼並使用 /fix 命令,Copilot 會嘗試提供修正建議。
    • /tests 命令:此命令可以幫助您為特定函式或程式碼生成測試案例。
    • q: 前綴:在行內編輯模式下,如果您想提問而非直接生成程式碼,可以在句子的開頭使用 q:。
  • 持續驗證 Copilot 的輸出:

儘管 Copilot 非常強大,但它的輸出是非確定性的 (nondeterministic),每次可能給出不同的答案。Copilot 可能會犯錯,甚至會產生不正確或不安全的程式碼。因此,務必對 Copilot 生成的程式碼進行人工檢查、驗證和測試。

測試程式碼至關重要,因為它有助於發現錯誤並增強對程式碼功能的信心。

結論

即時上下文是 GitHub Copilot 魔法的核心。透過積極地為 Copilot 提供豐富、精確且有組織的上下文,並善用其各種功能和命令,您將能夠充分發揮這個 AI 助理的潛力,加快開發速度,提高程式碼品質,並更好地理解複雜的程式設計問題

留言
avatar-img
留言分享你的想法!
avatar-img
Will 進步本
6會員
249內容數
歡迎來到「Will 進步本」!我們將探索計算機科學、商用英文和生成式AI。從基礎到前沿,共同學習和交流,拓展知識視野,啟發創新思維
Will 進步本的其他內容
2024/08/28
評估元件時使用數據表的步驟 評估元件是一項進階技能,通常是你在實現系統的驅動程序之後才會培養的能力。
2024/08/28
評估元件時使用數據表的步驟 評估元件是一項進階技能,通常是你在實現系統的驅動程序之後才會培養的能力。
2024/08/26
閱讀數據表(Datasheet) 在產品開發的過程中,面對發佈壓力,往往會讓我們無法慢下來仔細閱讀元件的數據表、手冊以及應用說明。更糟糕的是,儘管我們可能已經翻遍了這些文件,卻發現什麼也沒記住,因為這些文件中的專業術語對我們來說就像外語一樣陌生。
2024/08/26
閱讀數據表(Datasheet) 在產品開發的過程中,面對發佈壓力,往往會讓我們無法慢下來仔細閱讀元件的數據表、手冊以及應用說明。更糟糕的是,儘管我們可能已經翻遍了這些文件,卻發現什麼也沒記住,因為這些文件中的專業術語對我們來說就像外語一樣陌生。
2024/08/26
電壓與電流 我們測量電量時使用電壓和電流,但這兩者都源於更基本的物理原理。
Thumbnail
2024/08/26
電壓與電流 我們測量電量時使用電壓和電流,但這兩者都源於更基本的物理原理。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
這篇要搭建一個同時生成寫實照片跟動漫風格圖片的工作流,還可以幫線稿上色。
Thumbnail
這篇要搭建一個同時生成寫實照片跟動漫風格圖片的工作流,還可以幫線稿上色。
Thumbnail
這篇要用Controlnet去達成多人構圖的目標。
Thumbnail
這篇要用Controlnet去達成多人構圖的目標。
Thumbnail
🔍 使用 AI 工具 (ChatGPT): ChatGPT 搭配 Notion 是我目前在使用的兩項主要工具,讓我能夠輕鬆地管理和組織我的工作和想法。透過 ChatGPT 的功能,我能夠更好地發想與內容創作,而 Notion 則提供了一個知識資料庫的整合,讓我能夠有效地記錄、規劃和分享各種內
Thumbnail
🔍 使用 AI 工具 (ChatGPT): ChatGPT 搭配 Notion 是我目前在使用的兩項主要工具,讓我能夠輕鬆地管理和組織我的工作和想法。透過 ChatGPT 的功能,我能夠更好地發想與內容創作,而 Notion 則提供了一個知識資料庫的整合,讓我能夠有效地記錄、規劃和分享各種內
Thumbnail
這篇是以預設工作流為基礎,加入提示詞去控制畫面,目的是控制生成圖像的主題跟提升品質。
Thumbnail
這篇是以預設工作流為基礎,加入提示詞去控制畫面,目的是控制生成圖像的主題跟提升品質。
Thumbnail
這是為了搭建自己想要的工作流而開始的研究工作。
Thumbnail
這是為了搭建自己想要的工作流而開始的研究工作。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News