GitHub Copilot AI 替代品,12 款不可錯過的程式開發秘密武器
有人可能在短影音或社群網站看過聽過一些神奇工具,可以直接在程式碼編輯器中操作,手指不用離開鍵盤,並減少這種在不同視窗之間複製貼上的冗餘操作。
大語言模型(LLM)的生成式 AI 的浪潮席捲全球,ChatGPT 問世也超過一年,企業家或帕魯可能都利用這些工具,找到更好的作業模式。
(把知名的迷因圖改了一下)
這次要來介紹 GitHub Copilot 和其他類似的工具們,每個都各有特色,有些還是免費的,甚至還可以佈署在電腦本機,不用花錢,不會被邪惡的資本主義或商業巨頭控制。
GitHub Copilot
標語: Your AI pair programmer
連結: https://github.com/features/copilot
GitHub 是誰
GitHub 成立於 2008 年,一開始是一個線上的原始碼代管平台,後來在 2018 年被微軟收購,這幾年的發展有目共睹,至少沒有被微軟玩爛掉(討厭的微軟登入界面、Office 365 和 Azure 網頁迷宮、扁平化UI…等等)。
反觀有些程式碼代管/託管平台墳墓上的草都長很高了,像 Google Code 跟 CodePlex 都在 201x 年間結束服務。
大家當初把程式碼放到 GitHub,通常是為了以下原因:
– 為了做程式碼版控,熟悉日常 git 操作。
– 方便多人協作。
– 薅平台上的各種免費功能(如 GitHub Pages,還有後來的 GitHub Actions)。
– 讓自己的 GitHub 帳號有滿滿的綠格子(contributions chart)。
– 讓自己的 GitHub 專案有得到星星,這樣經歷比較好看。
– 程式碼中的帳密或 API Key被推到 repo,或是 repo 中使用的第三方程式套件有資安通報,都會發 Dependabot alerts 給開發者。
GitHub 還與某個 AI 研究機構合作,使用 GitHub 上面存放的上千萬個 GitHub repo 程式碼庫來進行訓練,在 2021 年發佈 GitHub Copilot 預覽版。
GitHub Copilot 在 2022/6 正式開始收費訂閱制,到了開始收每個月幾十塊美金,才驚覺,咦? 大家的資料都被拿去做 AI 訓練啦?
當年比特幣都幾萬美元了,一般人可能都不在意那些 AI 研究機構每天在幹嘛,搞那個有什麼用? 有比做智能合約、區塊鏈 NFT 和元宇宙、炒不動產賺錢嗎?
現在大家可能稍微關心一點了…那個機構就是不太 Open 的 OpenAI。
GitHub Copilot 功能
先假設看這篇文章的人都知道 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)當機時的擷圖…
有些回答會並附上參考出處,可以將對話中的程式碼直接插入編輯中的檔案,或是先複製起來。
對話框目前一次最多可以放 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 Policy 和 Amazon CodeWhisperer 常見問答集。
2024/11 更新: Windows 內建的 Windows Terminal 也推出這種終端機聊天(Terminal Chat)功能,在 PowerShell、CMD、WSL Ubuntu、Azure Cloud Shell 視窗中都可以使用。
功能不是 Windows 免費贈送的,需要綁自己的 API Key,可使用 Azure OpenAI、OpenAI、GitHub Copilot 當成服務提供者。
這個新版的 Windows Terminal 還沒有推送到正式的 Windows 更新,Windows 10 build 19041+ 和 Windows 11 的使用者可以到微軟的 GitHub 專案下載 Windows Terminal Canary。
更新: Amazon Q Developer
2024/4 月底,產品正式上市 Amazon Q Developer, now generally available,Amazon CodeWhisperer 也改名成 Amazon Q Developer。
大概 2024/5 左右,發現 AWS Console 側邊欄多了一個文字訊息 chat 形式的 AI 工具,叫做 AWS Q。
使用 AWS 有任何問題時都可以在那邊打字看看,對於沒有花每月 $29 美金起跳買 AWS support plan 的人,這無疑是個福音,比貓咪大戰爭還要大~大~大~大優惠,有好東西給你喔~
回覆的參考資料通常會用 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.」。
- 沒有任何實質控制權,無法直接接手幫人類設定,需要再參考官方文件提供更高權限給 AI。
- 回答我的問題前,看起來也不會先去偷看我帳號內的資源設定與系統紀錄,所以大多時候就是官腔回覆,跑出一些官方說明上就有的東西。
想想好像有道理,如果 AI 線上客服能解決所有問題,那大家幹嘛還去買 AWS support plan…
ChatGPT + Work with Apps 協作功能
這東西比較曲折離奇,值得為它開個段落介紹一下。本文介紹的產品形式,大都是安裝於程式碼編輯器內的一個小套件、或是自己做一套編輯器,或是一些在網頁有個聊天視窗,可以找東西跟寫程式碼的工具。
ChatGPT 除了網頁版本,也在各個系統有出應用程式版本,其實跟直接使用網頁版本沒有太大差異,就是在桌面或開始選單裡面有個 icon,可以直接叫出來使用,就這樣。
但是在 2024/11 月初,OpenAI 突然在蘋果系統 macOS 版本的 CharGPT 推出獨一無二的新功能,就是這個 Work with Apps 的功能
在 ChatGPT 的聊天視窗上多了一個小按鈕,可以叫出其他相容 Work with Apps 功能的程式,然後用浮動視窗的形式,為使用者提供各種 AI 輔助功能。
例如只要在編輯器中選取文字,就可以用選取內容進行提問,使用者不用再剪剪貼貼幫 AI 當搬運工。
兩三個禮拜後(2024/11 月底)又增加了更多編輯器的支援,市場上常見的 Xcode、VS Code、Jetbrains 家族,還有一些 CLI 工具像是 Terminal、iTerm,也都支援 Work with Apps。
目前需要付費版本的 ChatGPT Plus and Team 才能使用這功能,而且是 macOS 專屬,沒有開放給 Windows 版本或 iPadOS 版本的 ChatGPT 應用程式,這下你知道為什麼不少工程師都要買蘋果電腦了吧?
Tabnine – 強調隱私性
標語:an AI assistant that speeds up delivery and keeps your code safe.
網址:Tabnine
用法:裝在 IDE 上。
網站首頁一打開,還以為是賣保險箱、保全、防毒軟體?
畫面和文案不斷強調 :
code privacy,
private,
protected,
compliance,
trusted by
in your control
Never stores or shares
without the risks…
結果是個賣生產力工具的。
功能上跟其他加差不多,同樣有程式碼對話(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 使用 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 的擴充套件市集騙流量的代表性。
不是針對這套,用 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 Marketplace 上面的全是詐騙套件,有些公司則是把 VS Code 套件當成一個導流來源。
因為 Visual Studio Marketplace 不像 Google Play 或 App Store,沒辦法直接讓使用者下載套件時收一次性費用/週期訂閱費用/內購費用,所以 VS Marketplace 有點像是打知名度,開發者網站上還有其他 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 幾種程式語言,甚至還提供瀏覽器套件,也提供線上試用。
還有兩個主打功能,一個是 AI Search,例如可以用比較語意方式搜尋專案中的程式碼相關片段。
此為官方 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 (我們非常重視安全和隱私 – 我們從不出售/分享用戶數據/程式碼,也不會拿使用者的程式碼訓練生成模型).
Codeium 在 2014/11 又出了一套獨立的編輯器 Windsurf,用 VS Code 改的,可以選擇從 VS Code 或 Cursor 匯入設定,
Windsurf 號稱 AI IDE,有趣的是側邊有一個叫做 Cascade 的 AI Agent 功能視窗,只要用文字輸入 prompt,AI 就會自動持續幫人自動修改專案內的程式,只會偶爾跑出「Accept」和「Reject」的按鈕給人點,讓人類感覺好像有參與開發過程。
使用 Windsurf 要先註冊 Codeium 帳號,人家是砸血本推廣,初次註冊時直接送 60 天免費的 Codeium Pro 帳號,剛剛很強的 Cascade 在官網價目表上,寫說有 1000 steps/month 的限制,好怕「60 天到了/本月額度用完了,你做了一場好夢嗎?」等到真的要自己花錢的時候,人類就會對每個月幾十美金的 AI 開始挑剔起來...。
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 主打速度,這賣點也的確滿吸引人。
前述這類 AI 程式碼輔助開發的產品,demo 影片看起來都非常棒,實際用過就知道,穩定度和回應速度常常令人詬病,三不五時等個老半天還沒回應,不知道是在運算中? 還是當機了?
碰上這種線上工具的速度、穩定度問題,各家廠商多半會建議升級到更高階的方案,其背後可能會有另外針對高階會員,提供獨立的算力或系統資源。
或是考慮找本文某些可以本地佈署的 AI 寫程式工具,設備不夠是貴單位自己的事。
Supermaven 有獨家的優化技術,天下武功,惟快不破,想要快速的使用者,不用煩惱自己準備本地算力和佈署模型那些事情。
沒有免費版,只有 30 天試用,費用是月繳 $10 美金或年繳 $99 美金。
2024/4 月時宣布推出永久免費方案 Introducing the Supermaven Free Tier,不過功能有閹割,沒有超長 token,也不能使用最聰明的模型。
團隊方案的話則是每個人頭 USD $10/月。
Continue – 自由選擇本地或雲端的 LLM
標語:The easiest way to code with any LLM
網址:Continue
用法:IDE 擴充套件
一樣都是程式碼對話和自動建議程式碼,這還有什麼好介紹的?
答案就是…自由。
前文中有些免費跟付費方案在於模型差異,免費版只能用比較舊的模型、有限的共享算力,或是停止繳費就完全無法使用。
而 Continue 把這件事還給使用者,
可以自由選擇相容的本地或雲端的模型提供者與模型,
如下圖,可以選擇使用一些開源免費的LLM,或是自己準備 API KEY,使用 OpenAI、Claude、Google Gemini 的商業付費模型。
預設有一些 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 是用貴桑桑的貴族商業模型 OpenAI GPT-4 Turbo 和 Claude 3 Opus,所以免費版本每個月只有 50 次跟 AI 請求神諭的額度。
要解開封印,付費版本是 USD $20 一個月或是年繳 USD$192。
Cursor
標語:The AI-first Code Editor
網址:Cursor Editor
教學:Cursor 101
用法:獨立的編輯器
本文中其他產品都是依附在某個程式碼編輯器底下,Cursor 是自己做一套編輯器(Fork 開源的 VS Code 來改)。
Cursor 在 2023 年初左右剛問世時功能比較陽春,什麼 chat 跟自動程式碼建議都沒有,就只有兩個功能:
- Ctrl+K:叫出命令列(類似 VS Code 按 Ctrl+Shift+P 會從上面跑出來的那個東西),輸入 prompt 之後,讓它產生程式碼。
- Ctrl+L選取現有的程式碼,做出註釋或其他回答。
後來 GPT-4 剛出來時,Cursor 甚至還號稱與 OpenAI 合作,內建 GPT-4,這對中國大陸地區的民眾無疑是天降甘霖,不用翻牆就能用到 OpenAI GPT-4? 還不用爆? 被一些白嫖黨和 AI 科技行銷帳號名列在「免費使用 GPT-4」的工具名單上。
但這樣的經營方式和產品功能,想必是不敷成本,做為賣點的 AI 功能使用時常常當機、毫無反應。一旦失去了自動產生程式碼之類的生成式 AI 功能,這時候的 Cursor 比普通的編輯器還難用,就像賭聖電影中失去特異功能的大軍一樣。
那時候我還以為 Cursor 就要這樣下去了?
結果後來又捲土重來,推出健康的收費制度,功能也更完整。
新出的免費版僅提供 50 次 GPT-4 和 200 次 GPT-3.5 的每月使用額度,Pro 付費版是 $20 一個月或是年繳 $192。
Cursor 剛安裝時會提供2 個禮拜的 Pro 版試用期,有各種先進的大模型、運算速度優先權,讓每個人感覺好像天神附體一樣,但是等到試用期過了,就會打回原形。
這在軟體販售時很常見,試用期開放完整全功能給人用,讓人完全不知道免費版用起來是什麼樣子。
試用期間用起來體驗非常好,就決定用這套了! 使用者被調教成功、用習慣後,等到幾個禮拜或 1 個月,試用期過了,一堆功能被鎖起來,大夢初醒發現免費版幾乎是不能用的狀態,然後好用或想用的,都是最高階的付費功能,還有一些是依量計費。
這時候問題來了,要花大錢繼續用,還是找別家再次經歷此過程? 真是好問題。
扯遠了,反正 Cursor 到期過後,除非綁上自己的 API KEY,或是乖乖付費支持,升級到 Pro 版。
另外還有流傳一個奧步,就是帳號解除綁訂之後再重新建立,又可以繼續試用 2 個禮拜,不知道什麼時候會把這個奇怪的漏洞補起來。
功能上一樣有側邊程式碼對話和自動建議程式碼,側邊對話視窗也設計得不錯,可以輕鬆帶上一些資料,放進自己的文書檔案或程式碼專案當作參考資料。
而且側邊欄沒有鎖程式相關問題,什麼都能問。如果在 console 視窗碰到錯誤訊息,也可以直接把錯誤訊息一鍵加到 chat 視窗,開始請 AI 判讀錯誤訊息,修正程式碼。
Cursor 有自己的設計哲學,不是用 prompt 玩角色扮演而已,很多方便的小功能,甚至讓不是工程師的人也開始想用,但也被一些人吹捧成只要會按 Tab 跟一直 Apply、Accecpt 就可以完成工作。
Cursor 也允許使用者自訂 LLM,只要在軟體設定中輸入自己的 OpenAI API Key,如果吃米不知道米價,可以綁自己的 OpenAI API Key 上去,狂用一個月,就知道自己花了多少錢。
ps.在這篇文章要發佈(2024/3月底)的時候,OpenAI 的 API KEY 方案已經從下月結帳,變成要先儲值預繳(prepaid billing),儲值最低5美元起跳。
Zed
標語:The editor for what’s next
網址:Zed
用法:獨立的編輯器
Zed 跟 Cursor 一樣,不是依賴在 VS Code 或某個 IDE 內的擴充套件,而是自己的一套 IDE,還支援 vim 模式,一些想用 AI 輔助開發,但又痛恨要一直用滑鼠去操作的工程師,終於有救了。
Zed 沒有 Electron 的肥大笨重感,因為它是用 Rust 語言整個從頭開發的,而不是 Fork 開源的 VS Code 來修改,並且有自己的擴充套件生態。
Zed 除了各種 Inline Assistant 之類的各種程式碼對話功能,也設計了不少增加開發體驗的的獨特功能。
例如碰到資料顯示有問題,以往排查時可能要從 API 拿到的資料一路查下來,要再另外開 Postman 或 Bruno 之類的來檢查資料?
但是 Zed 提供一個 fetch 指令,可以直接打 API 把資料印出來看,甚至請 AI 直接根據拿到的資料進行後續處理,例如自動建立型別與命名變數。如此之類的小功能還不少。
Zed 的 AI 是與 Anthropic 合作,所以有提供一個免費試用的 Claude Sonnet Zed 模型可以選(如下圖):
選單中其他 LLM 名稱結尾沒有 Zed 的,像 Claude 最強的 Claude 3 Opus,還有 Gemini、GPT-4 之類的,都是要在設定中填上自己的 API KEY 才能用,也允許使用地端的 llama 模型。
有人可能會好奇,Zed 聽起來這麼棒,開發團隊之前是幹嘛的?
這其實並不是他們第一次做開發工具,Zed 的創始人 Nathan Sobo 之前的作品是 Atom 編輯器,雖然 Atom 在 2022/12 被 GitHub 宣布關閉,整個專案帳號被封存,但念念不忘必有迴響,這次他們又帶著 Zed 捲土重來了。
Zed 這個專案還是開放原始碼的,在 2024/1 時創始人曾發了一篇文 Zed is now open source,希望集合所有開發者的力量,打造出世界上最完美的程式碼編輯器。
寫這段的時候 Zed 版本是 0.150.4,Windows 版本需要下載原始碼回去後自行建置。MacOS 版本則是直接有安裝檔。
雖然 Zed 的發布時間比別人晚,2024 年才出現在大家的眼前,但是由於各種優秀的特性,還有免費的 Claude AI 能用,很快就在開發者圈佔有一席之地。
Cline(原名 Claude Dev)
網址:https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev
這是一個 VS Code 的擴充套件,由美國工程師 Saoud Rizwan 在 2024/7 上架到 VSCode marketplace。
這名稱可能會讓人有點誤會,以為可以讓人免費白用 Claude? 有些不想花錢的白嫖黨可能還沒來得及看完介紹,就馬上衝去安裝了?
Claude Dev 不是 Anthropic 公司出的,裡面也沒有讓人免費白用任何一種 LLM,因為一些功能使用了 Claude 的 Agentic Coding 相關設計,所以才取這個名字。
使用前必須要準備自己的 API KEY
- 使用者可以到 Anthropic 儲值一筆金額,然後取得 Claude 的 API KEY
- 相容 AWS Bedrock 上的 Claude 或其他模型
- 相容 GCP Vertex。
- 如果自己電腦本地端有跑 Ollama 和一些 LLM,也可以加入到 Claude Dev 中使用,
- 還相容 OpenAI 格式的 LLM,除了 OpenAI 的模型之外,還可以到 GitHub Markeplace 的 Models 中尋找適合的語言模型,然後在 Get Started 的 Sample code 中找到
https://models.inference.ai.azure.com
之類的 API endpoint url 與對應參數,拿去填在 Claude Dev 的設定中,就能使用該 LLM。
雖然相容幾種不同的 LLM,但套件作者還是推薦使用 Claude。
如果是使用付費的 API KEY,Claude Dev 會在每一則對話框的右上角,顯示花了 0.幾美元,這功能對於價格敏感消費者來說可能過於刺激了。
Claude Dev 主要功能不是在開發人員每次打字時猜測等一下會輸入什麼,然後一直給自動提示,而是更接近一個真正的 AI agent,設法解決任務。
由於 Agentic Coding 和 Agentic Loop 的一些設計,只要給予足夠的權限,會搜尋、檢視和編輯、建立多個專案內的檔案,並且在過程中反覆修正,甚至向使用者提問細節,以完成在 prompt 中交付給它的任務。
Cursor 可以從終端視窗中發起 AI 聊天,非常方便? 那 Claude Dev 還可以直接在聊天對話視窗中,執行一些終端機的功能呢。
在一些工程師的實測中,一樣是從頭建立某種程式、除錯,比起 Cursor,或其他一些單純一問一答/已讀亂回的 AI 程式輔助開發工具,ClaudeDev 的表現有時候更好,未來還有可能隨著大模型的進步,讓 ClaudeDev 變得越來越聰明。專案 repo 中蒐集了一些實測評價 claude-dev#reviews,有興趣的可以研讀參考。
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 發佈一個新服務就是為了要關閉它,
Replit Agent
官方說明:https://docs.replit.com/replitai/agent
用法:在網頁瀏覽器內使用的編輯器(線上 IDE)
看了這麼多,有點膩了嗎?
那麼你該聽聽 Replit Agent,大約在 2024/9 推出,號稱可以讓人從無到有,生成程式碼,和部署線上應用程式。
不相信? 介紹 Replit Agent 的超狂功能之前,必須要介紹 Replit,這下你就會知道這功能不是憑空蹦出來的,而是他們既有服務的再延伸。
Replit 跟上一段介紹的 Project IDX 一樣,都是提供讓人在網頁瀏覽器中開發程式的服務,以往開發程式都要在電腦本機裝一堆東西,建立運行環境,而只要有了 Replit,通通在這些廠商的雲端伺服器上幫大家建立好了。
Replit 從 2016 年上線,已經經營多年,正因為該服務有這個特性,還有出手機 APP Replit:隨心編碼,可以讓人能用各種能上網的裝置來寫程式。
一些教育機構也會使用 Replit,讓學員把程式放在上面,雖然免費方案的儲存空間、vCPU、記憶體、傳輸量有限,但不失為一種將教學成本轉嫁給其他人的好方法。
這讓我想到 2016 年間台灣網路界有一位大神開 Ruby on Rails 程式學習營,為了解決開發環境問題,特別要求學員上課時帶的電腦要使用 MacOS 系統,課程跟講師的爭議就不提了。如果當年這種東西已經成熟,也許又會有不一樣的風景。
Replit 的系統架構,同時也是 Google Cloud 官網上的成功案例介紹之一 Repl.it: A collaborative cloud development environment for work and the classroom 介紹了他們的故事,原本使用某個 VPS,在不到兩年的時間內成長到 100 萬活躍用戶,環境不堪負荷。Replit 先轉向 AWS,但是無法滿足組織的需求,最後用上了 GCP。
Replit Agent 的操作介面上,可以看到右邊有個 AI 聊天對話視窗,還有一個 presented results to the user 的選項,點擊之後,就會將程式佈署到 Replit 的雲端上,提供一個 xxx.replit.app
的子網域。
這個部署線上應用程式的功能,以 Replit 自家的服務為主,並不是任意地方都行,不是直接串連授權各大公有雲之類的。
Replit Agent 目前在搶先體驗(early access)階段,不是免費功能,要付費的才能用的,現在是跟 Replit 現有的其他付費方案綁定。並且根據一些使用者心得,還有每日的用量上限(You have hit the usage limit for the agnet)。
另外在 2023 年間,有 Replit 和 Google 合作 AI 的新聞,但 Replit Agent 產品出來後,似乎不是直接用 Gemini,也沒有要開放讓使用者自由選擇 LLM 或 BYOK 。
編輯程式碼的服務,Replit 之前就已經有了。
幫使用者佈署程式的服務,Replit 之前就已經有了。
再回來看 Replit Agent,這功能就像之前做的一切繼續延伸,水到渠成,
依照這個思考邏輯,我們能想像一些雲端服務提供商也推出類似從無中生有到上線的程式碼開發工具嗎?好像也沒有這麼簡單。
- 依照他們既有的服務思維,主要關注的是提供運行環境和基礎設施,而非直接參與開發過程。程式開發的大半流程並不在他們的服務中發生,轉向全方位的 AI 輔助開發服務將是一個重大的方向轉變。
- 有時候他們的產品線太過龐大,而且各自為政,例如新服務的功能可能跟現有某幾個舊服務重疊,但操作方式卻又無法繼承過來。或是公司內其他產品明明有完整的範例程式碼、說明文件,在新服務中想呼叫其他部門的產品,產出的程式碼和流程卻是支離破碎,對使用者來說是同一家公司的東西,卻在整合時出現不少問題。
這樣說可能太抽象,舉一個 Google 的例子,之前介紹過 Google Quick builder,就是 Google Maps 服務底下,有一個可以懶人式產出地圖應用程式的功能,串 Google Maps 自家 API,有顯示大眾運輸、顯示地標、分店地圖之類現成的範例,再配上少許的自訂空間。
但最後系統自動生成網頁程式碼之後,Google 提供的是在 jsfiddle 檢視,或是自己下載程式碼回去,自己辦法佈署到伺服器上,整個從無中生有到上線的流程就此中斷,Google 其他的雲端服務不知道跑哪去了? (使用這個 Quick builder 服務前,是要在 GCP 開專案授權權限的,不是單純產出程式碼而已,所以不是什麼 GCP 權限與付費問題。) - 同樣產品線太過龐大的問題,想像一下,當使用者表示他想要建立一個「某某線上服務」時,AI 可能會根據對雲端平台的成本效益,推薦 Serverless 類優先的開發方式,或是根據當前的技術趨勢偏好 Docker 和其他 k8s 類產品,但對於某些特定應用、整體目標、維護性來說,VM 或許更合適。總之 AI 的建議可能會引發不少爭議。
- 如果 AI 被設計成優先考慮雲服務商的利潤,而不是客戶的實際需求,那麼可能會引導用戶選擇更昂貴,或平台綁定性更強的服務。這不僅可能導致用戶在技術選擇上的困惑,還可能引發對 AI 建議公正性的質疑。
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 開發程式常見的問題
本文以自身平常工作就要寫程式的角度出發,看看在一些小型接案場合,或是做些東西自用的場合,有沒有剛好能用的地方。
往好處想,以往在某些情境,客人本來可能要用 Excel 做一堆計算小工具,現在有機會變成在手機上隨時也能方便操作的網頁 UI。
以往有些使用者需求如果以軟體外包的形式,一個案件固定報一個價格,結果無限修改到死還無法結案,或是人天工時多少錢,一大組人馬配合客戶意見修修改改,做到最後產生天價費用,各種悲劇數不勝數。公司常常會用各種理由,直接推掉這種沒有利潤的需求。
現在有了 AI 輔助開發程式的工具,只要使用者有足夠的背景知識,有正確的需求和規格,這些因為利潤不足而輪不到工程師來做的需求,也許有機會出現在世界上。
往壞處想,這又讓一些不寫程式的人或資本家有更多奇怪的幻想,例如以前可能會叫人去網路上找一些開放原始碼的專案來抄,讓底下的人不擇手段達成他的要求,現在可以通通推給 ChatGPT。
還可以當成砍價錢或 PUA 的好工具,沒出事的時候大家都說 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,操作方式是在終端機中用各種指令去新增和修改程式碼。
2024/7 更新: StackOverflow 的 2024 Developer Survey 有關於生成式 AI 與軟體工作的部份,像是哪套工具最多人用,那些功能最常用、預期與實際體驗的落差、最常碰到的問題……等等,有興趣的可以參考看看。
結語
常常有一種「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 訂出來,時間到了之後大象就會在冰箱裡了。