GitHub Copilot AI 替代品,12 款不可錯過的程式開發秘密武器

如果談到用 AI 來進行程式開發,有人可能想說要在 ChatGPT 或各種網頁生成式 AI 聊天工具,把程式碼、prompt 和需求、錯誤訊息…等等,反覆複製貼上,像在幫 AI 當搬運工,工作效率非常低。
有人可能在短影音或社群網站看過聽過一些神奇工具,可以直接在程式碼編輯器中操作,減少這種在不同視窗之間複製貼上的冗餘操作。

大語言模型(LLM)的生成式 AI 的浪潮席捲全球,ChatGPT 問世也超過一年,企業家或帕魯可能都利用這些工具,找到更好的作業模式。


(把知名的迷因圖改了一下)

這次要來介紹 GitHub Copilot 和其他類似功能的工具們,有些還是免費的,甚至還可以佈署在電腦本機,不用花錢,不會被邪惡的資本主義或商業巨頭控制。

GitHub Copilot

標語: Your AI pair programmer
連結: https://github.com/features/copilot

GitHub 成立於 2008 年,一開始是一個線上的原始碼代管平台,後來在 2018 年被微軟收購,這幾年的發展有目共睹,至少沒有被微軟玩爛掉(討厭的微軟登入界面、Office 365 網頁迷宮、扁平化UI…等等)。
反觀有些程式碼代管/託管平台墳墓上的草都長很高了,像 Google Code 跟 CodePlex 都在 201x 年間結束服務。

大家當初把程式碼放到 GitHub,通常是為了以下原因:
– 為了做程式碼版控
– 方便多人協作
– 薅平台上的各種免費功能(如 GitHub Pages,還有後來的 GitHub Actions)
– 讓自己的 GitHub 帳號有滿滿的綠格子(contributions chart)
– 讓自己的 GitHub 專案有得到星星,這樣面試時比較好看。
– 帳密或 API Key被推到 repo,或是 repo 中使用的第三方程式套件有資安通報,都會發 Dependabot alerts 給開發者。

GitHub 還與某個 AI 研究機構合作,使用 GitHub 上面存放的上千萬個 GitHub repo 程式碼庫來進行訓練,在 2021 年發佈 GitHub Copilot 預覽版,在 2022/6 正式開始收費訂閱制。
當年一般人可能都不在意那個 AI 研究機構每天在幹嘛,現在大家可能稍微關心一點了…那個機構就是不太 Open 的 OpenAI。
到了 GitHub Copilot 開始收每個月幾十塊美金,又再驚覺,咦? 大家的資料都被拿去做 AI 訓練啦?

先假設看這篇文章的人都知道 GitHub Copilot 是什麼,就不從頭詳細解說,總之它有幾大項主要功能:
– 根據目前輸入的東西,自動產生下文的程式碼建議(通稱 code completion)。
– 根據註解產生程式碼(通稱 comments to code)。
– 在側邊欄或行內與 AI 對話,在聊天視窗內請 AI 解釋程式碼、錯誤修正、產生 git commit 訊息……等操作。

Github Copilot 費用

想用 GitHub Copilot 免費方案,目前只有兩種條件:
– 師生方案,Copilot 包含在 GitHub Student Developer Pack 內,需要上傳學生證或在學證明文件供審核。
– 系統認可的開源方案貢獻者,主要根據 GitHub 帳號底下的 repo 和 PR 紀錄,每年會重新 review。

除了以上兩種條件,其他正常人使用 GitHub Copilot 是要付費的。
目前有 Individual, Business, Enterprise 三種方案,依方案不同,每個人每個月的訂閱費用分別是美金 $10、$19、$39。

比起獨立開發者用的個人方案,Business&Enterprise 方案多了網路搜尋、許可證管理、政策管理(鎖IP之類的)和知識產權保障(避免公司的程式碼被拿去訓練)。首頁下面的 FAQ 有說:

GitHub does not use either Copilot Business or Enterprise data to train its models.

Github Copilot Workspace

2024/4 月底的時候又一個 Github Copilot Workspace 開始公測,目標非常遠大,不只是生成一小片段程式碼,AI 還會利用 GitHub 專案中的 repo 和 issue 等資料,協助開發人員更有效率完成程式碼和文件的編修工作,提升生產力。

當然如果團隊狀況比較雜亂無章,例如:
– 專案程式碼與資料沒有用 GitHub 管理
– 文件、修改需求、討論等所有資料,可能都用口述、在 LINE 群組上、資料東藏西藏。工作狀況這麼公開透明,一些資方或職場老油條又要出來講大道理了。
– 大家都非常忙碌,時間只夠把程式碼改完,所有東西都在大家腦海裡,沒空留下任何紀錄。
對這種情況來說,Github Copilot Workspace 的生產力可能跟這種團隊沒什麼關係。

Github Copilot 的缺點?

Github Copilot 有微軟爸爸、新世界的神 OpenAI,和全世界工程師的程式碼,那產品是完美的嗎?
當然不是完美的,本文中等下介紹的其中幾個產品,就專挑 Github Copilot 來打,有的打速度,有的打程式碼生成品質,有的打隱私性。

付費可能也是一個缺點?
想在公司用 GitHub Copilot 的人,可能還在寫申請單、因為縮排和行距不對被退件、等公司跑簽呈、開一堆會議跟完全不寫程式的人解釋 GitHub Copilot 是幹嘛用的、解釋為什麼公司工程師沒辦法自己做一套? 是不是有了 GitHub Copilot,以後公司就不用花錢買防毒軟體跟 Windows&Office…
等下會介紹一些其他的 AI 寫程式工具,可以在本機 GPU 執行、或是內建免費 LLM,不用搞那些組織內耗與溝通,可能早就已經完成工作了。

接著繼續介紹其他類似 GitHub Copilot 的程式開發輔助工具。

Amazon CodeWhisperer

標語:適用於 IDE 和命令列的 AI 驅動的生產力工具。
網址:Amazon CodeWhisperer
用法:裝在 IDE 或 CLI 上。

相比亞馬遜的電商服務,雖然 Amazon Web Services (AWS) 雲端服務通常只佔 Amazon 年度營收不到三分之一,但隨著雲端計算和 AI 浪潮的興起,AWS 這個「賣鏟子的」,也在這些新興領域持續投入創新,推出全新的 AI 驅動服務和工具,以滿足開發者日益增長的需求。

2023/4月發佈的 CodeWhisperer 就是一款基於 LLM 的 AI 助手。除了有類似 GitHub Copilot 的程式碼建議功能、側邊欄對話功能(Amazon Q),還提供程式碼漏洞掃描額度。

– 個人可免費使用,專業版則是每人每月 USD$19。
– 免費版提供 50 次程式碼安全掃描 (每位使用者、每月),現階段不支援 PHP,僅適用於 Java、Python、JavaScript、TypeScript、C# 等程式語言。

Amazon Q
這是側邊欄對話功能(Amazon Q)當機時的擷圖…

有些回答會並附上參考出處,可以將對話中的程式碼直接插入編輯中的檔案,或是先複製起來。
對話框目前一次最多可以放 4000 字,不支援中文。

CodeWhisperer for command line

2023 年底又發佈了新功能 CodeWhisperer for command line 預覽版,就是一個類似 Wrap 的功能,可以在命令列(終端機)操作視窗中得到 AI 輔助,不過 CodeWhisperer for command line 現階段只有 macOS 系統可以安裝,不過 Wrap 也只有 macOS 跟 Linux 的版本,這下知道為什麼有些工程師明明不寫 iOS app 卻也用 Macbook 了吧?

講到這種命令列 AI 輔助工具,不得不提之前一個叫 Fig 的 CLI 工具,使用 OpenAI 的 Codex 模型,Fig 在 2023/8 被 AWS 收購但收購不是另一個開始,而是結束。Fig在 2024/2 月初宣布將結束服務,請原先使用 Fig 的使用者轉移到剛剛介紹的 CodeWhisperer for command line。

其他關於 AWS AI 工具的責任聲明和隱私權問題可參考 AWS Responsible AI PolicyAmazon CodeWhisperer 常見問答集

更新: Amazon Q Developer

大概 2024/5 左右,發現 AWS Console 側邊欄多了一個文字訊息 chat 形式的 AI 工具,叫做 AWS Q Developer
使用 AWS 有任何問題時都可以在那邊打字看看,對於沒有花每月 $29 美金起跳買 AWS support plan 的人,這無疑是個福音,比貓咪大戰爭還要大~大~大~大優惠,有好東西給你喔~

Aws Q Developer 2

回覆的參考資料通常會用 AWS 官方論壇或是官方文件,暫時還沒看到 stackoverflow 或是其他外網。

不過這個功能只是一開始公測期間免費試用,之後是要付費的 Amazon Q Developer,每月 25 USD/每個使用者。

但 Amazon Q Developer 實際用起來有時候有點雞肋:

  • 常常因為不明原因說這個問題無法回答,或是因為安全原因被封口。
  • 常常以為使用者碰到網路問題,把人帶去另一個 network troubleshooting 區域。
  • Amazon Q 是看不懂也不講中文的,使用者打中文只會得到回應「I couldn’t understand your question because you used a character I don’t recognize. I only understand English characters, numbers, and standard punctuation marks.」。
  • 沒有任何實質控制權,無法直接接手幫人類設定。
  • 回答我的問題前,看起來也不會先去偷看我帳號內的資源設定與系統紀錄,所以大多時候就是跑出一些官方說明上就有的東西。

想想好像有道理,如能解決所有問題,那大家幹嘛還去買 AWS support plan…

Tabnine – 強調隱私性

標語:an AI assistant that speeds up delivery and keeps your code safe.
網址:Tabnine
用法:裝在 IDE 或 CLI 上。

網站首頁一打開,還以為是賣保險箱、保全、防毒軟體?
畫面和文案不斷強調 :
code privacy,
private,
protected,
compliance,
trusted by
in your control
Never stores or shares
without the risks…
結果是個賣生產力工具的。

tabnine home page

功能上跟其他加差不多,同樣有程式碼對話(Tabnine Chat)或是自動建議的功能。
但官網宣傳上並沒有像其他家一樣,沒有放一些轉眼間生成一堆程式碼的動畫 gif、沒有放各種 IDE 或是程式語言的 LOGO,而是找到一個自己的賽道。

Tabnine 不跟其他家一起卷說模型有多強、支援幾種外部 LLM、回應速度有多快、正確度多高、有多少增進 DX 的小功能之類的,它知道以企業用途來說,付錢的人是誰,
就是更主打隱私、合規、管理性,提供三種方案:Basic、Pro、Enterprise,最高階的 Enterprise 可以佈署在私人的環境中,或是連接組織內私人的 GitHub、GitLab、BitBucket,使用本地程式碼訓練與執行。

Tabnine Pro 版本的費用比 Copilot Business 略低一些,最高階的方案 Tabnine Enterprise 則跟 Copilot Enterprise 價格一樣都是 $39,看來月費美元 $19 跟 $39 就是這類產品的魔法定價,比這個數字還高的可能就不用賣了。

JetBrains AI

標語:Supercharge your tools. Embrace new freedom.
網址:JetBrains AI
用法:IDE 擴充套件

寫 Java 的開發者可能每年都要花幾百塊美金訂閱 IntelliJ IDEA,寫 C# 的前輩在其他作業系統上可能會使用 Rider,JetBrains 旗下還有許多軟體開發工具,涵蓋多種程式語言和技術。

而不寫程式的人可能還納悶寫程式用記事本 notepad 就好,幹嘛還要花錢買工具? 也搞不懂 Java/JavaScript,Visual Studio/Visual Studio Code 的差異,在寫企劃書或各種場合張冠李戴。

讓工程師心甘情願掏錢,JetBrains 就是這麼強,一些工程師們可能現在還在筆戰「地表最強 IDE」的名號,究竟是要頒給 Visual Studio,還是 JetBrains 全家桶?

這麼知名優秀的軟體開發工具公司,在 AI 風潮當然不落人後,也在 2023 年發佈 JetBrains AI,同樣也有程式碼對話、自動建議等功能。背後使用 OpenAI 和 JetBrains 自行建立的較小模型,官方也說正在努力整合 Google 的 LLM 。

JetBrains AI 需要付費,單買的話每年 $100 美金,7 天試用期。另外因為是跟 OpenAI 合作,所以基本上那些禁止使用 OpenAI 的國家都無法使用,像是中國(香港和澳門也算進去)、北韓、俄羅斯,可參考 JetBrains AI Service Territory Limitations 名單。民主自由的台灣還能用。

Tabby – 完全本地佈署

標語:Opensource, self-hosted AI coding assistant
網址:Tabby
用法:IDE 擴充套件

前幾項產品都很舒服,刷卡或註冊會員之後馬上就能用,
使用者不需要思考背後的 AI 模型,在兵器譜上排名第幾位?
AI 生成的程式碼是從哪來的資料?
工具上面的按鈕點了沒反應要怎麼修?
線上服務背後的人力和伺服器是從天上掉下來的?

註冊後開箱即用是很方便沒錯,但可能被邪惡的商人或 Big Brother 掌控,或是結束服務就沒得用了。

Tabby 主打的是在本地佈署 AI,建議必須使用 8GB 以上 VRAM 的顯卡。

Tabby

Tabby 使用 CodeLlama-7B 等一些開源 LLM,真的是本地做到底,目前也不能直接綁自己的 OpenAI API KEY 上去用。
使用者還可以修改 Models Registry 參數,使用 Tabby 精心挑選並進行基準測試的模型,或是參考 FAQ 中的文件連結,想辦法換上自己的本地模型,

自由也是有代價的,雖然官方很用心了撰寫關於 (Windows, macOS, Linux) x (NVIDIA CUDA, Apple Silicon, AMD ROCm™) 等各種作業系統、GPU 排列組合下的各種安裝說明文件和 FAQ,
還提供了線上版測試區 Tabby playground 讓人體驗一下 AI 自動建議的功能。
但支援的程式語言明顯比起其他少很多,支援的開發工具也只有 Visual Studio Code、IntelliJ 系列、VIM。

CodeGenius

標語:Your AI Code Assistant
網址:CodeGenius
用法:VS Code 擴充套件

功能介紹上面寫的跟其他產品類似,自動建議程式碼、修正或解釋現有的程式碼之類的。

舉這套出來不是因為它有多好用,安裝數有多高,而是因為這套也具有一種代表性:可能在 VS Code 的擴充套件市集騙流量的代表性。

codegenius faq 404

不是針對這套,用 OpenAI 等相關關鍵字在 VS Code 的擴充套件市集搜尋,可以找到成千上百筆這種 AI 輔助程式開發的免費套件。

除了那些知名的開發者或團隊出的,有健康的營利商業模式,有正當的公司在經營,其他還有一些看起來很玄的可疑套件,通常有以下特色:

  • 一些 AI 科技主題的工具蒐集站/短影音,很愛介紹這種,介紹文寫了一大篇,可能也是 AI 生成的,不知道自己是否用過。
  • 上架後從未更新,非常的完美。
  • 支援哪些程式語言? 背後使用哪個 LLM? 都是秘密。
  • 有些看起來只是讓 AI 玩 cosplay,弄了一些 Prompt engineering 產物放在右鍵選單內,不是真的針對各種使用情境設計了什麼技術護城河超高的新功能。
  • 功能跟前述商業公司產品的穩定性和功能性無法比擬。
  • 使用者不需要填自己的 OpenAI API KEY,有些可能是套 gpt3.5 或其他免費的 LLM,或是撞到每小時/每分的 API limit,或是用愛發電,表現非常差。
  • 有些會開放讓使用者填自己的 OpenAI/Azure-OpenAI 的 API KEY,不知道是不是來騙 API KEY 的?
  • 開發者的隱私條款等各種資訊無法開啟,應該是套件審核上架完就刪掉了。或是條款使用制式範本,安全性令人存疑。
  • 開發者頭像圖使用 AI 生成的。

前述幾點可疑特徵的龍珠全部集滿,可以召喚出神龍嗎? 並沒有。可能讓開發者的履歷多一筆「曾開發 VSCode 擴充套件,成功上架並得到幾 K 安裝數」。

有些則是把 VS Code 套件當成一個導流來源,因為 Visual Studio Marketplace 不像 Google Play 或 App Store,沒辦法直接讓開發者收一次性費用或週期訂閱費用,所以開發者網站上還有其他 AI 工具,等著大家去付費使用。

通义灵码 – 中國阿里雲出品

標語:灵动指间,快码加编,你的智能编码助手!
網址:通义灵码
用法:IDE 擴充套件

通义灵码是一個中國阿里雲的公測項目,支援 Java、Python、Go、JavaScript、TypeScript、C/C++ 程式語言,可以在 JetBrains IDEs 和 Visual Studio Code 使用。功能也是大同小異,可以生成程式碼、解釋程式碼、建議程式碼。

通义灵码是 2023/10 發佈的,基於阿里巴巴達摩院出品的通义大模型,號稱在一些測試中超越 GPT-3.5 和 Llama2,并在加速追赶 GPT-4

這又有一個有趣的問題,台灣公家機關有禁止使用大陸廠牌資通訊產品相關規定,那在 OCR 或文本處理中使用一些中國的免費開源 AI 模型,或是在程式開發時使用這種中國的程式碼輔助工具(個人免費使用,商業版需要填寫通义灵码智能编码助手企业服务方案諮詢表單),沒有花錢買,就沒有問題嗎?

不過這陣子才爆出新北市公車的免費wifi,出現中國華為頁面,還有桃園的中原國小的停車場尋車機拿中國車牌號當範例…等新聞,不要擋人財路。

關於隱私條款:,可參考通义灵码常见问题:

我们不会存储你的代码数据:
代码补全时,我们需要获取你的代码上下文信息以完成补全,但上下文信息不会被存储或用于其他任何目的,该等数据完全由你所有及控制。
研发智能问答时,我们仅会在你点踩/点赞后,仅针对聊天记录(不包含代码),并将数据进行脱敏、去标识化处理后,用于算法的升级、迭代。

Codeium

標語:The modern coding superpower
網址:Codeium
用法:IDE 擴充套件

功能上除了別人也有的程式碼建議、程式碼對話,Codeium 還號稱支援 40 幾種 IDE 與 70 幾種程式語言,甚至還提供瀏覽器套件,也提供線上試用。

codeium playgroun js test

還有兩個主打功能,一個是 AI Search,例如可以用比較語意方式搜尋專案中的程式碼相關片段。

codeium search sample

此為官方 demo 範例圖,至於現實中看似短短幾行背後的 function 裡面寫得多可怕,實際用起來有沒有這麼好用,沒有人可以保證。反正那些是我們帕魯本來的工作嘛,我不幹,還有其他帕魯幹。

另一個是 Context Engine,號稱比其他 AI Dev tool 更加強大,還會根據開啟的專案檔或是 repo 做出程式碼建議,提高抽卡成功率。

Codeium 的個人版本是免費的,擁有無限次數的使用碼建議,而 Team 團隊版本是每人每月 $12 美金,超過 200 個帳號則需要升級 Enterprise 企業方案。

免費版本沒有 GPT-4 Support,付費版擁有更多功能,而且為了怕大家覺得免費的背後有一些骯髒的操作,Codeium 還特地做了一頁 How is Codeium Free? 說明來提升大家的信心。而且強調

We take security & privacy very seriously – we never sell/share user data/code or train our generative models on user code (我們非常重視安全和隱私 – 我們從不出售/分享用戶數據/程式碼,也不會拿使用者的程式碼訓練生成模型).

Supermaven

標語:The fastest copilot.
網址:Supermaven
用法:VS Code 擴充套件

上面有提到一個 TabNine,特點是非常注重隱私之類的,但不得不提一下它的創始人 Jacob Jackson 在學時期就看出 AI 的前景,從 2018 年就開始開發 TabNine,經營了這麼多年,終於收穫甜美的果實…
不! 這不是那種龍傲天穿越系的故事!

Jacob Jackson 起步得很早,不是等 2022 年看到 ChatGPT 跟 Copilot 才開始跟風,他在 2018 年在學時期就開始做,這部分沒錯。
但現在的 TabNine 不是他經營的,TabNine 在 2019/11 的時候已經被一個以色列新創 Codota 收購,Codota 的產品性質跟 TabNine 相當類似,收購後公司保留 TabNine 的名稱,繼續發展,在 2024 年的時候還能繼續被台灣人的寫文章傳誦。

當初的收購金額沒有公開,但 Jacob Jackson 出場之後沒有過著閒雲野鶴或是紙醉金迷的生活,在當上 OpenAI 的研究員之後,又再開發了 Supermaven 這款工具。

Supermaven 為了提升開發效率更是不遺餘力,主要的兩大特點:
1.更大的 token 數。
撰文的當下,OpenAI 支援最多 token 數的模型 gpt-4-0125-preview(GPT-4 Turbo) 也只有 128,000 tokens,而 Supermaven 目前官網上寫的是 300,000-token,理論上可以生成品質更好的程式碼。

2.更短的延遲速度與更快的生成速度
Supermaven 主打的就是快,直接在官網擺上與其他競品的延遲速度比較表,真是不講武德。

supermaven speed compare chart

Supermaven 主打速度,這賣點也的確滿吸引人。
前述這類 AI 程式碼輔助開發的產品,demo 影片看起來都非常棒,實際用過就知道,穩定度和回應速度常常令人詬病,三不五時等個老半天還沒回應,不知道是在運算中? 還是當機了?

碰上這種線上工具的速度、穩定度問題,各家廠商多半會建議升級到更高階的方案,其背後可能會有另外針對高階會員,提供獨立的算力或系統資源。
或是考慮找本文某些可以本地佈署的 AI 寫程式工具,設備不夠是貴單位自己的事。

Supermaven 有獨家的優化技術,天下武功,惟快不破,想要快速的使用者,不用煩惱自己準備本地算力和佈署模型那些事情。

沒有免費版,只有 30 天試用,費用是月繳 $10 美金或年繳 $99 美金。
2024/4 月時宣布推出永久免費方案 Introducing the Supermaven Free Tier,不過功能有閹割,沒有超長 token,也不能使用最聰明的模型。
團隊方案的話則是每個人頭 USD $10/月。

Supermaven new Plan

Continue – 自由選擇本地或雲端的 LLM

標語:The easiest way to code with any LLM
網址:Continue
用法:IDE 擴充套件

一樣都是程式碼對話和自動建議程式碼,這還有什麼好介紹的?
答案就是…自由。

前文中有些免費跟付費方案在於模型差異,免費版只能用比較舊的模型、有限的共享算力,或是停止繳費就完全無法使用。

而 Continue 把這件事還給使用者,
可以自由選擇相容的本地或雲端的模型提供者與模型,
如下圖,可以選擇使用一些開源免費的LLM,或是自己準備 API KEY,使用 OpenAI、Claude、Google Gemini 的商業付費模型。

continue model select

預設有一些 trial 版本可以選,要修改的話可以按齒輪圖案,會跑出一個 json 檔編輯畫面,然後參考 Continue 的官方技術文件,把參數填上。

Double

標語:AI coding assistant engineered for performance
網址:Double – Visual Studio Marketplace
用法:VSCode 擴充套件

這又是一間名列 YC 的 Startup Directory,榮獲 YC 投資的公司。

功能上也是程式碼對話和自動建議程式碼,但號稱能擁有比 Github Copilot 更高品質的功能。

以下是 Double 官網上的舉例擷圖 Double vs. Github Copilot,官網上有好多例子,我只借了一張。

double vs Github Copilot

因為 Double 是用貴桑桑的貴族商業模型 OpenAI GPT-4 Turbo 和 Claude 3 Opus,所以免費版本每個月只有 50 次跟 AI 請求神諭的額度。
要解開封印,付費版本是 USD $20 一個月或是年繳 USD$192。

Cursor

標語:The AI-first Code Editor
網址:Cursor Editor
用法:獨立的編輯器

本文中其他產品都是依附在某個程式碼編輯器底下,只有 Cursor 是自己做一套編輯器(Fork 開源的 VS Code 來改)。
剛出來時功能比較陽春,什麼 chat 跟自動程式碼建議都沒有,而是每次都要叫出命令列(類似 VS Code 按 Ctrl+Shift+P 會從上面跑出來的那個東西),輸入 prompt 之後,讓它產生程式碼。

後來 GPT-4 剛出來時,Cursor 甚至還號稱內建 GPT-4,被一些 AI 科技行銷帳號名列在「免費使用 GPT-4」的工具名單上,但使用時常常當機毫無反應,一旦失去了自動產生程式碼的功能,比普通的編輯器還難用,就像賭聖電影中失去特異功能的大軍一樣。

那時候以為 Cursor 就要這樣下去了,結果後來又捲土重來,推出健康的收費制度,功能也更完整。
免費版僅提供 50 次 GPT-4 和 200 次 GPT-3.5 的每月使用額度,付費版是 $20 一個月或是年繳 $192。

cursour editor at something

功能上一樣有側邊程式碼對話和自動建議程式碼,側邊對話視窗也設計得不錯,可以輕鬆帶上一些資料。
而且側邊欄沒有鎖程式相關問題,什麼都能問。

也可以在 Cursor 的軟體設定中輸入自己的 OpenAI API Key,如果吃米不知道米價,可以綁自己的 OpenAI API Key 上去,狂用一個月,就知道自己花了多少錢。
ps.在這篇文章要發佈(2024/3月底)的時候,OpenAI 的 API KEY 方案已經從下月結帳,變成要先儲值預繳(prepaid billing),儲值最低5美元起跳。

Project IDX

標語:Code faster with generative AI
網址:Project IDX
用法:網頁瀏覽器內使用的編輯器

微軟有 Github Copilot,亞馬遜有 Amazon CodeWhisperer,Google 當然也沒有缺席,整合了自家的 AI 和一些其他產品,做出一個實驗性的 Project IDX 編輯器。

主要特點有:

  • 真正的跨平台開發工具,在網頁瀏覽器內運行(用 Visual Studio Code for the Web 魔改的),即使是用 iPad 也能很快進入開發環境。
  • 支援多種程式語言自然是不用說,開發網頁可以即時 Hot Reload,開發 Google 自家的 Flutter 時,還內建行動裝置模擬器,可以預覽 iOS 和 Android 畫面。
  • 雖然說是編輯器,但要先在 Project IDX 開設線上專案,才能把檔案丟上去。
  • 可以直接線上開設一些主流程式語言的範例專案(web 後端只有Go, Flask, Node.js, Rust, Laravel),另外也可以從本機上傳、匯入 Github repo,還可以輕鬆在專案中加入其他協作者。
  • 與 Google 自家的 AI 整合,自動建議程式碼、解釋程式碼、程式碼對話(IDX AI Conversation)等功能都有。

自動程式碼建議或是 comment to code 反應比較差,但至少也還能用 IDX AI Conversation 做一些簡單的事情。

把整個開發環境搬到線上,這還是有點新鮮,有些流程地方是需要適應跟調整的。
例如在做網頁 icon,圖片做好存在本機,有些 local dev 流程可以直接看到 icon 放到網頁上長啥樣,就算公司網路斷線也沒關係。
而使用 Project IDX,可能就要讓版控 commit&push 一次,或是從本機把圖片上傳到 Project IDX 的專案內。

大概去年(2023/8)就排到 waitlist 了,會收到一封主旨”Time to try out Project IDX, a new web-based development experience!”的信。
使用時不用花錢,直接把本機檔案丟上去也沒說有什麼空間限制,但不知道為什麼就是不太想用。


(idx 說明文件)

怕 Google 關閉部發威吧? 大家都知道 Google 發佈一個新服務就是為了要關閉它,

Devv.ai – 寫程式專用的 AI 搜尋引擎

標語:The next-Gen search engine for developers
網址:Devv.ai
用法:線上網站

號稱是專為程式開發人員打造的 AI 搜尋引擎,雖說是搜尋引擎,Devv.ai 會直接丟出一個整理好的結果。

以前在中古世紀,例如碰到錯誤訊息,要上網搜尋找解法時,經常碰到:
– 搜尋後要自己一個個點進去搜尋結果,然後碰到更多問題。
– 找到一堆有人發問但是沒人回答的討論區網頁,還有可能是幾年前的自己問的。
– 碰到有人有同樣問題,底下的留言是叫人去看另一篇,然後另一篇又說再去看其他篇
– 找到一堆點進去是 404 的論壇連結或官方連結。
– 看回答要註冊會員。
– 查看回答時間,太久以前的回答在現代可能根本不能用。
– 尋找一個回答評價最高、底下有沒有吐槽的留言。

Devv.ai 回答的內容除了會列出一些外部參考來源,還可以將結果連結分享別人,底下還會列出接下來可能會問的問題等等,年繳 $122 付費方案有號稱更聰明的 AI 可以用。

2024/5 推出了GitHub Mode 的公測功能,可以讓 AI 根據 GitHub repo 的內容來回答問題,例如用於修改程式碼問題、依照現有專案內容寫出新的 code、了解一些 Open Source 專案所使用的技術等用途。

補充: 後來看到有人把這類工具整理成一個 repo,分成 AI code completion tools、Code completion LLMs、AI code assistants/search、ChatGPT in your editor 幾個大分類,
有興趣的可以看看 Awesome-Code-AI

AI 開發程式常見的問題

沒出事的時候大家都說 AI 是完美的,以後都不需要人力來執行了。
但是當出問題的時候,AI 突然又變成 Copilot,只是輔助人類的工具,人類需要在使用的前中後去做各種管理、監督、控制、修正。
反正挑對自己有利的講,自助餐真好吃。

經過本文介紹,一般非程式開發人員應該也可以稍微了解,這類工具跟直接在 ChatGPT 複製貼上有什麼差異。

除了文中提到一些產品各自的問題,像是:

  • 功能參差不齊,有的產品可以任意選 model、用本機 LLM 或是放自己的 API KEY,有的 DX 體驗超好,有的卻只是靠幾句簡單 prompt 玩 cosplay。
  • 有的只是提供一個看得見摸得著的 UI 工具,工具背後的大腦(LLM)需要自己準備,例如本機跑 LLM,額外付費購買 OpenAI 或各家的 API KEY 等等。
  • 穩定度不佳,速度時快時慢,甚至完全沒反應,本來輸入 code 的時間,變成在電腦前看 AI 把一個字一個字吐出來,然後回答得不滿意,花更多時間反覆修改和等待 AI 回覆。
  • 聊天對話型的產品經常發生上下文汙染的情況,就是一長串持續對話時,突然冒出好幾輪之前對話的需求。避免方式就是要更換問題時就一直開新對話,但有時候又希望生成式 AI 保有之前的一些背景資訊。
  • 隱私政策不明,不知道自己的資料會不會被拿去訓練。想像一下別人用 AI 生成的程式碼中包含自家不公開的程式網址路徑、包含商業機密的程式碼註解、API 金鑰、密碼字串,這不是很驚悚嗎?
  • 產出的程式碼能不能動? 需要靠運氣。

還有一些是人的問題:

  • 有些產品特別強調隱私保密性,但使用者不一定關心這些,例如帕魯可能老是聽資方說員工要幫公司省錢,或是員工想要求月薪4萬,至少要幫公司賺40萬,產能、高效、彈性、最快達成目的……之類的言論,這種大道理聽久了,帕魯會把安全、隱私、資安、正確性、後續維護列入首要考慮因素,還是挑一些便宜甚至免費,但背後運作方式來路不明的東西?
  • 有些地方可能本來就沒什麼大事好做,這種東西拿來玩玩也就算了,還想請公司依照人頭數編列預算,一個月花個幾百幾千美元起跳,花錢訂閱生產力工具? 大白天上班時不要說夢話
  • 還有一種在「 B2B 軟體銷售檢討會」常常提到的論點:某服務針對某商業營運痛點做出了產品,但為什麼賣不掉? 企業主覺得已經有付員工薪水,那本來就是他該做的工作,為什麼企業主還要再額外花費成本,買工具「服務」員工? 生成式 AI Copilot 很明顯就屬於這類「老闆花錢讓員工爽」的工具。
    可能有些企業主對於這類輔助開發工具也會有這種想法。但如果其他同業,甚至其他環境更好報酬又更高的地方,已經把公司會提供這些工具當成公司基本福利,每個人的想法都有背後的原因,我也只能祝大家生意興隆,搶人才搶贏別人。

以下順便分享一些 AI 來做程式開發的使用經驗:

太新的程式寫不出來

例如某一天 OpenAI 的 API 文件更新了一些功能,不只是模型名稱換了,連傳入的參數有變動,還有更多玄乎的 AI 領域專有名詞。
想體驗看看新功能有多神,但又不想看文件?
我幻想 OpenAI 自家的 AI 已經有被餵食好資料了,但結果當然又是讓 AI 表演一本正經的胡說八道。連 OpenAI 自家產品更新,都沒有第一時間餵給 AI,其他程式語言和工具就更不用談了。沒有人會知道那些每天不斷更新的資訊,究竟什麼時候會更新到模型內。


(OpenAI 會標明訓練資料大概是多久以前的)

解法可能是使用別的 AI,例如那種 AI 閱讀文件的功能(例如 Microsoft Edge 的 Sidebar),或是可以貼網址讓它讀內容、或是會上網搜尋最新資料的。但軟體產業的環境就是每週一小變,每個月一大變,苦海無涯,回頭是岸。

同理,有些問題或需求可能是新版本的 bug,或是新到沒有任何資料,想要 AI 試著做出 workaround,或是從舊資料中舉一反三? 以為 AI 帶來無限可能,但可能更常碰到無限失望。

太舊的環境寫新程式

例如這類 AI 運作的基礎,通常依照檔名猜測這程式想幹嘛,依照副檔名猜測這是什麼程式語言,檔案中的一些變數名稱、使用的函式,都可能有某種跟歷史資料相同的 pattern 等各種因素,再搭配 LLM 的神奇魔法(生成式 AI 的原理不是拿題庫複製貼上),有機會得到理想的成果。還有人嘗試把壓縮混淆過的程式碼丟給生成式 AI,重新寫成易讀的程式,或是解釋程式碼,有時候竟然也能得到堪用的成果。

生成式 AI 看似可以讀懂現有的程式碼,並產生新的程式碼,但現實的變因太多,例如:
– AI 並不知道這套程式佈署在什麼環境,結果會一直寫出實際上無法執行的東西。
– 專案還有其他 context 的時候,工人們會避免使用某些寫法,但是 AI 經常會屢勸不聽,等幾輪對話 token 數超過之後,就把一開始約定好的事情忘得一乾二淨。

當生成式 AI 因為專案或環境限制,無法提供可用的程式碼,會像那個干擾潛水員的魚一樣,經常在開發人員每次輸入時跑出一堆建議,時不時讓畫面撐開跳動,但卻一點用都沒用。

已知執行結果,想找出由哪幾段程式碼執行出來的

例如想要修改輸出結果,當接手別人的程式,或修改 OSS 時,或是 debug 時會用到。但是這種需求光靠 AI 解決的成功率很低。
程式碼多到撞到 token 數上限先不說,更何況 AI 還看不到 DB 內容或其他背景資訊。「工人智慧」的參與比例降不下來。
雖然本文中某些工具有類似這種功能,但能否達成需求,還是看運氣。

有些程式不適合給 AI 做

通常人類自己會寫但就是不想自己寫的,而且不牽涉太多其他外部程式,請 AI 來寫,這樣抽卡成功率最高,即使產出有問題,一眼就能看出來,或是知道加入什麼條件再請 AI 修改,甚至得到一些啟發。

但如果請 AI 做的是自己本來完全外行的領域、一開始就毫無方向的東西,再結合其他特點,想得到滿意的成果? 抽到一番賞的成功機率就低了。或是以為 AI 寫好了,但實際上問題一大堆。

至於如果是覺得說日常用的軟體要付錢,很討厭,所以要請生成式 AI 寫一套 Windows、Office、Adobe 軟體出來,這麼大的夢想不適合在這邊討論。

自由奔放的 AI

雖然說 AI 懂得很多,但也有很多新手壞習慣,例如接收資料後,不檢查格式直接開始執行,SQL 不用參數化查詢,不設計例外情況,看得人冷汗直流。

就算從 prompt 補上再多限制,等幾輪對話過去,token 數超過之後,就又把約定規範忘得一乾二淨。不過人類工程師也不一定有這種共識,如果沒有講說手機號碼需要檢查格式和重複,可能什麼亂七八糟的情況都會出現,把 prompt 寫清楚,把規格書寫明白,是最保險的。

當然 AI 是無法負責背鍋的,就算資本家或長官用 AI 當藉口來砍時間砍預算,這鍋還是得由人類來背。

AI 會有幻覺(hallucination)

人類當然也有幻覺,但此幻覺非彼幻覺,例如可能主事者聽別人講了一個關鍵字,腦補錯誤的知識和觀念,以為這可以解決問題,叫底下的工人去做。
有些東西是底下的工人(人類工程師)早已經做過,知道哪邊有雷,而且以團隊的情況絕對不可能把那部分補起來,不如不要做。但是這些產生幻覺的主事者則是覺得這些東西是救命仙丹,這些工人怎麼不乖乖聽話?

老司機會知道什麼需求該用什麼工具。而如果請 AI 進場,AI 常常也會順著人類的意,不僅沒有提供適當的建議,會猶如好像帶人從台灣搭高鐵去北京一樣,過程也許是愉快的,但最後離目的地越來越遠。

不過市場上,把客人載去碼頭搭火車,收一次錢,然後等到客人發現碼頭搭不到火車,要搭去其他地方再收一筆錢,這種黑心廠商可能更加賺錢,活得更久。

撰寫程式在整個專案過程只佔很小一部分

其餘像是整理資料、分析需求、重現錯誤、撈 LOG 查問題、修改軟體參數測試、操作一些公有雲的網頁控制介面、系統架構問題,有許多地方是 AI 接管不到的,仍需要純人力或其他方式解決。

還會有一種現象,就是不需要寫程式的人,嘗試用 AI 在乾淨環境下做出一個小小的成果,然後就會放大延伸到「這麼簡單的東西連我都做得到,XXX 就只是再稍微延伸一下,怎麼可能不行?」「有 AI 在還說做不到XXX,真是懶惰」,大概就是像有人用剪映弄了一個小影片,然後就說他可以當國際大導演拍個影集大長片;有人在英雄聯盟 LOL 遊戲中打贏遊戲,然後就說他可以當國防部長,最可怕的是有這種認知的人還負責決策,所以日常中看到不少產品或服務在「長官指導」下變成一些奇怪的樣子,也不令人意外。

公正的 AI 程式碼生成工具測試指標?

文中介紹了好幾套,但並沒有哪一套是壓倒性獲勝,而是在開發者體驗上各有所長,在這種無國界的專業領域,對於哪套 AI 輔助開發工具最強,也沒個定論。
有人說 XXX 超好用,同一套也有人說寫得好鳥,就像愛情一樣,失敗的婚姻百百種,但美好的婚姻只有一種,想要得到美好結局,絕不簡單。

目前有一些測試項目專門設計來考驗 AI 寫程式的能力,像是 SWE-bench,測驗內容不是單純比 3sum 或 invert binary tree 誰寫得最快、效能最好之類的,而是要讀懂使用者提交的 issue 內容,再找到專案內哪一段程式碼導致此問題,並提交正確的 PR…
聽起來跟現實世界的工人們在做的事比較接近了吧?

寫這篇文章時,當下 SWE-bench 跑分最高的是 Cognition AI 的 Devin,成功解決了約 13.86% 的問題,而其他 gpt4 之類的則連 5% 都不到。

2024/6 更新: 又有人把 Devin 幹掉了,這個神奇的工具叫 aider,可以選擇串接 gpt 或 claude,操作方式是在終端機中用各種指令去新增和修改程式碼。

結語

常常有一種「10年後的世界會長怎樣」的題目,通常就是一些專家用當代的產業現況,推測出未來可能會怎樣?
那軟體業來說,當年有人想到未來會有這種開發方式,用自然語言敘述需求,然後靠 AI 產生真的能動的程式碼?

前人預想的「未來軟體開發」,可能像是什麼把 UML 圖畫出來,然後自動產生程式碼?
但現實上卻常被譏為初始規劃跟結案時完全長不一樣,根本是結案了再回頭畫 UML。

或是誕生更多軟體架構設計、專案管理方式,但現實是不管團隊用了什麼最新的程式架構或管理方式,還是有很大機會繼續重演幾十年前《人月神話》《鳳凰專案》書裡的那些悲劇,還有新的程式架構可能解決了舊問題,但又產生自己的新問題。

傳統程式碼開發工具,當輸入類別名稱,後面能剛好跑出一些相關的屬性名稱或方法名稱小清單,或是之前用過的函式名稱或變數,這種 typehead 功能,或是自動顯示一些錯誤提示,這些功能在以前就覺得很好了,
如今這種 AI 輔助開發工具能做更多無中生有的事情,比較不需要剪剪貼貼,能跟程式碼編輯器更完整融合。

汽車自動駕駛有 Level1~6,而對於程式開發、軟體工程,還沒有這麼明顯的分野,網路上頂多看到一些管理顧問公司,或是一堆工程師的類似這種文章Shesh’s blog – Thoughts on the Future of Software Development,探討關於全自動開發(autocopilot)、輔助開發、手動開發、No Code、Low Code 等方式如何解決需求,甚至更激進一點,探討要把哪個職位幹掉?

但畢竟工具還要自己動手操作,而真人帕魯會自己搭乘交通工具來上班,生病會自己去看醫生,還可以用一些 PUA 話術來驅動,真是太方便了。

當然有些事情很抽象,當局者迷,旁觀者清,不一定每個人都想聽這麼多,就像前陣子聽一些 AI 用於 SEO 的議題,不管每個講者介紹了多少搜尋引擎與演算法機制、講了多少遍關鍵字研究方法、要探尋潛在消費者可能會想看的東西,但還是會有人問「所以不能用 AI 嗎?」「用 AI 把兩篇沒人看的舊內容合併改寫,就可以排到第一頁嗎?」之類各種去脈絡、二分法的問題,也許有人就只是想找個東西用來偷懶省成本,或負責背鍋。

最後講個工程師笑話:如何請工程師把大象放進冰箱?
把 Deadline 跟 KPI 訂出來,時間到了之後大象就會在冰箱裡了。

近期熱門 Hot Posts