跳至主要內容

文章

GitHub Copilot 搶答你的下一行?

上哲 @nuva.ceo發布於

你才打了一個函式名稱,整段程式就補好了。

其實它不知道你要寫什麼。它只是勇敢的猜,且勤勞。

工程師在編輯器(寫程式用的文書軟體)裡寫程式,游標一停,GitHub Copilot 就用淺灰色字把接下來幾行先寫出來,按 Tab 就收下。有點像手機打「約」,鍵盤馬上跳出「幾點」。

背後的概念叫下一個詞預測(Next-token Prediction):看著前面寫了什麼,猜下一小塊最可能是什麼。Copilot 背後是一個讀過大量程式碼和人類文字的語言模型,擅長推測「什麼後面通常接什麼」。

接龍 777

假設你在寫購物車,打了一行「def totalprice(items):」,意思是「我要寫一個叫 totalprice 的小工具,給它一堆商品,它算總價」。按 Enter,游標停在下一行。

模型開始接龍。它先把整串前文讀一遍:有 total、有 price、有 items。在它讀過的無數程式裡,這種開頭的下一行最常出現什麼?它心裡的排行榜大概是「total」第一、「return」第二、「sukiya」第三。

它挑了「total」,推薦給了你。

換行,再猜,「for item in items:」,把每個商品走一遍。再換行,「total += item.price」,把價格一個個加進去。最後一行「return total」,把總價交出去。

看著到目前為止的全部文字,猜下一小塊,好像行,再猜。你看到的那整段灰字,是好幾十次「好像行」的結果。這裡的每一次「好像行」,模型叫它 token,可能是一個單字、半個單字或一個符號,跟樂高一塊一塊堆起來。

越來越多線索

「前面寫了什麼」從哪來?GitHub 2023 年的工程部落格說,Copilot 會在背景組出一份提示(prompt),也就是真正送進模型的那份資料。當時夠快、撐得起 Copilot 的模型,一次大約只能讀 6,000 個字元,以一行程式約 40 個字元粗算,差不多 150 行。專案動輒幾萬行,只能挑重點放。

一開始只放游標前的程式碼,後來加了兩種線索。一是你開著的其他分頁裡相似的片段:如果隔壁檔案早就寫過商品有「quantity(數量)」,它比較有機會想到要乘上去。二是游標「後面」的程式碼,像寫填空題時同時看得到空格前後的句子,比只看前半句好猜得多。

GitHub 說這兩項改動讓工程師接受建議的比例,分別相對提高約 5% 和 10%。「相對提高 10%」的意思是:假設原本每 100 個建議收下 30 個,現在大約收下 33 個。

GitHub 2022 年公布過一個實驗:95 位專業工程師像抽籤一樣隨機分兩組,用 JavaScript(一種常用來做網站的程式語言)寫一支能接收網頁請求、再回傳內容的小程式。一組用 Copilot、一組不用。

有用的那組平均 1 小時 11 分完成,沒用的平均 2 小時 41 分,快了 55%;兩組差了 90 分鐘。當然快不能代表什麼,但現在 Vibe Code 真的是遍地開花,幾十個代理平行操,已經不能用人類的維度看這一切了。

總之,「照你推薦」、「Tab 自動填入」真的很治癒,但別忘了判斷,因為 Ship 出去的東西,責任在你身上。

延伸討論

你有沒有被手機的自動選字救過一次,或害過一次?


來源(查證日 2026/11/08):

文/上哲(ChatGPT 協力)

0 個愛心0 則留言

登入並驗證手機後就能留言。登入