程式員的AI夥伴:Cursor如何用智能重塑編程體驗


摘要

最近發現工程師圈開始瘋傳這個叫 Cursor 的怪東西——說是寫程式時多了個會讀心術的搭檔。與其說它是編輯器,不如說是藏在鍵盤裡的資深同事? 歸納要點:

  • Cursor 這玩意兒骨子裡是 VSCode 的變種,但偷偷塞了 GPT-4 當大腦——有次我隨手打半行註解,它居然把整個函式生出來了,連變數命名都比我認真
  • 免費就能用 AI 重構爛程式碼!前陣子接手同事的 spaghetti code,用它的 /fix 指令像玩拼圖,三兩下就把邏輯理順(雖然偶爾會過度解讀我的爛註解)
  • 從 Flutter 到 React 都能搞,不過要適應它的『對話式編程』節奏。記得第一次用它建專案時,命令面板跳出的選項多到像在考智力測驗
當 AI 開始懂得你寫到一半嘆氣的瞬間,或許就是編程體驗真正被改寫的開端。

其實現在的程式編輯器,早就不只是單純那種複雜點的記事本。幾年前有團隊想法子弄出更花俏的東西,好像也不是什麼新鮮事了。不過這次,有一群AI研究人員和工程師湊在一起,他們動了個念頭,把原本那些我們熟悉的文字編輯工具,加上一堆AI功能,變成某種「加強版」。你說有沒有人習慣看影片?也不是沒有,那邊好像準備了一些。

至於這家背後公司嘛,Anysphere,就是開發Cursor那間。他們規模聽說算不上龐大,但團隊裡頭聚集了不少厲害角色,不乏曾經在奧林匹亞競賽得過獎、發表過學術論文的人。大家口耳相傳他們目標是希望寫程式能自動化起來——但到底效果如何,也許還得觀察一陣。

另外如果講到Cursor用的是什麼底層技術,市面上討論似乎還沒個定論。有些細節外界掌握不到全部,只知道它核心應該跟目前流行的大型語言模型多少有點關聯吧。反正這行更新速度挺快,要是真的感興趣,大概還是多方查查資料比較穩妥。

原網址: https://www.pintech.com.tw/tw/column/1912/ai-developed-flutter-apps

說到 Cursor,這工具其實是搭建在 VSCode 開放源碼上頭,用的是 Electron 跟 TypeScript,看起來有點像是把幾種技術融合一起。它裡頭會運用 GPT-4,再加上一些人工智慧模型來協助理解跟生產程式碼。有時候有人會覺得它的自動補全、重構功能挺聰明,甚至還能幫忙產生出一整個專案的雛形——這些東西目前都是免費提供的,算是讓不少人感覺很驚喜吧。

你如果第一次打開它,大概會看到畫面跳出提示,要不要直接從 VSCode 把你原本的一些設定全都搬過來。假如想試著用 Cursor 來寫個 Flutter 的計算機 app,其實流程沒有想像中複雜。大致上記憶裡,只要按下那個 Command+Shift+P,然後搜尋相關指令就行。但細節步驟可能因為版本或習慣會有點不同,有時候還得稍微摸索一下才順手。

Anysphere團隊如何用奧林匹亞級頭腦打造Cursor神器

打開那個命令選單、然後新建一個專案——這步通常只要點一下就好。進到 main.dart,隨便找一行還沒被占用的地方,停下來,再按下一組常見的快捷鍵(如果沒記錯,好像是 Command+L),就會叫出聊天選單。

在這裡面,可以直接跟 Cursor 聊天,而且它會根據你現有的那些程式內容去理解你的需求。你有機會挑選不同 AI 模型協助你寫碼,只要點旁邊那個按鈕就能切換。有些人會用 claude-3.5-sonnet,因為坊間傳聞在不少測試裡頭,這款模型表現比較靠前一些。

等進到聊天視窗,你丟一句希望建立計算機 app 的需求過去,大概很快地,Cursor 就會在對話區塊產生一份 app 程式草稿。不過具體細節可能因時因地而有些微差異。

你滑下去一點,應該會看到剛才產生的程式碼後面,好像有個解說部分,有時候還會順帶把主要功能稍微點到。然後它大概會問你,要不要考慮加上什麼新東西——不過這通常只是讓你自己決定要不要繼續動手。假如你覺得目前的內容差不多了,也可以直接套用那些片段,反正系統好像會自動幫忙把程式塞進建議的那個 main.dart 檔案。有些人按下 f5 就跑起來了,畫面裡頭應該能看到大致上所有功能都能動,不過偶爾可能還是有點小地方需要修一下,畢竟每個人的環境不太一樣。

五分鐘實測!用AI指令瞬間生成Flutter計算機應用程式

[**建立一個響應式作品集App(僅介面)** 之前那個App其實可以先放一邊,畢竟現在急著要弄個自己的作品集。剛才那句提示重新輸入一次,不過這次得特別說明想要的是能夠適應不同裝置的介面,不只是單純陽春的樣子。然後,一旦程式碼出來以後,操作順序大概就是按下接受、存檔,最後跑起來看看效果。

Cursor產生的東西看起來嘛,乍看之下結構還蠻基本,有點像是市面上隨處可見的那種作品展示頁。不過比較微妙的是,好像在設計上已經幫忙考慮到適合各種尺寸螢幕瀏覽,這點倒是有些人會覺得方便。

**根據設計圖自動生成程式碼?** 話說回來,如果只是這樣,也許會讓部分人覺得稍嫌無趣或單調——尤其看到現在類似需求愈來愈多。有時候想法就會飄到:「如果直接丟張設計稿,是不是能做出更有特色、更符合期待的東西?」但現階段看起來,大致還停留在初步自動化產出的階段而已。

來試玩看看 Cursor 能不能根據圖片生成程式碼吧。那個聊天面板上,只要直接把手機 app 的 UI 設計圖拖進去,再下個像「請幫我打造這個 UI,顏色都照著來、細節要一模一樣」的提示,大致就是這樣,然後按下送出。Cursor 會自己把程式碼生出來。只要照著它建議的步驟操作一下,再跑起 app,就能看到一個看起來非常接近原設計圖的介面。不過嘛,有時候執行時會出現錯誤訊息,但至少還是能順利編譯,在本機端畫面也沒太大問題。

接下來就是更有挑戰性的測試了。想讓 Cursor 幫忙處理 app 的商業邏輯,用所謂領域驅動設計(DDD)那種分層架構。而且希望那些範例資料是從 repository 這一層產生的。所以又給了一個新指令:「用 DDD 架構並讓 sample data 由 repository 提供。」這樣一來,可以看到模型還有 repository 的方法陸續被自動寫出,然後還貼心地問你要不要把這些新程式放進不同檔案裡,連資料夾和子資料夾都主動幫你規劃好。

但實際看那些 auto generate 出來的 code,有些地方其實還是會冒出點小 bug,要稍微修正才能正常跑起 app。雖然整體運作已經比想像中順暢不少,不過如果仔細觀察,其實介面的部份全都塞在 main.dart 裡,領域層跟基礎結構算是分開放好,但 application 那層卻沒影子——專案結構裡怎麼找都沒有應用層相關的資料夾,看來可能得自己補上或再多給點引導才行。

當DDD架構遇到AI助手,看Cursor如何自動分層產生領域邏輯

有時候,Prompt會讓AI幫你改寫應用層的管理方式,例如像是BLoC這種,然後原本那些有狀態的元件,大概都變成了沒什麼內部狀態、比較單純的Stateless Widget。這類程式碼生成之後,其實步驟也差不多:它建議你去`pubspec.yaml`裡面,把freezed還有build_runner什麼的丟進去——這些名稱看起來好像熟悉又陌生,也許之前哪個項目就碰過。反正就是執行個flutter pub get,大概等一陣子,然後在終端機輸入那串dart run build_runner build -d,好像是要自動產生一些class檔案,有人說只要耐心點別亂按,通常都能看到新東西冒出來。

現在整個程式碼看上去清爽不少——各種Widget基本上都已經跟狀態脫鉤,只剩下BLoC提供state物件給他們用,所以大部分頁面都不再自己記什麼flag啦counter啦,全交給BlocBuilder帶著走。然後專案結構裡頭,多出了一個state資料夾,看起來大致就是放那些event、state class還有相關邏輯。

舉例說,有一段叫PortfolioHomePage,那其實也只是把BlocProvider包在外層而已,用法很接近於市面上流傳那種「模板」做法。PortfolioBloc初始化時會丟進TransactionRepositoryImpl(名字長得微妙),同時觸發loadData事件,彷彿剛開App就有人敲門問:「資料到了沒?」底下視圖部分都是_stateless widget,乍看之下很簡單,就是根據state切換不同UI樣貌。

比方說,一開始或者在載入途中,不意外地跑出一顆轉圈圈;如果遇到錯誤(error state),畫面中央會跳一行訊息提醒(內容嘛,大致提到message,但誰知道真實情況?);資料真的加載完成以後,就整頁排滿了欄位和按鈕。有各種區塊,比如頂部帳戶資訊、操作按鈕、餘額顯示還有操作記錄,每區塊間距抓得挺寬鬆,有一點現代設計感。

細節方面,像「Anthony Jones」這名字以及頭像連結,都直接寫死,如果真要改成自訂多帳戶場景可能得另外調整。餘額呈現、小數點處理方法嘛,看起來是保留兩位,但通常大家平常講話不太會精確到零頭,大約顯示個七千多或幾萬上下就好。不過這裡還是學工程師風格照公式算到底。至於Transfer Limit與Spent Amount…咳,大概就是每月限額用掉多少那類吧?金額也是直接秀出完整數字,有時候使用者反而希望看到圓整值或模糊描述。

底部則是一組標準四欄導覽列:首頁、分析報告、錢包,以及更多選項。每個icon和label搭配得井井有條,不過功能鍵目前onPressed都是空的,也許未來才會補充互動內容吧。

最下面交易列表,是透過map展開渲染,每筆交易都丟進_buildTransactionItem函數去產生對應卡片樣板——但具體細節好像略過了。如果有人想優化效能或做分頁,可能還得調整一下目前架構。總體來說,這套Bloc+Stateless Widget組合適合某些需要明確分離UI跟業務邏輯的場景,但偶爾也可能覺得設定步驟略繁雜,需要花上一陣子摸索才能真正順手。

至於那些bloc event/state class生成流程,就算不是所有人一次搞懂,也可以慢慢試著參考現成範例修改——畢竟市面上用的人漸漸變多,有問題找社群討論基本都能找到解答。所以呢,新手如果第一次弄失敗也不用太灰心,多嘗試幾次,很快就熟悉套路了……

現在如果你把這個應用程式跑起來,大概能先看到一個轉圈的圖示,那種短暫等待資料出現的感覺,還挺常見。有趣的是,Cursor 這套工具對於剛開始新專案來說,好像還蠻省心的,不太需要糾結那些一層又一層的重複設定。有人會覺得它除了幫助你寫代碼,也能在維護舊專案時提供一些輔助,比方自動補齊、調整架構、甚至修正某些莫名其妙的小錯誤。

再往下想——未來有沒有可能工程師花在純粹寫程式碼上的時間變少?好像也不意外。搞不好有那麼一天,大家都更多地關注創意發想,而不是一直埋頭抓那行號七十多行附近的 bug。雖然我自己是用 Flutter 做過 App,其實 Cursor 好像不限語言或平台,大多數開發環境裡都能試試。至於未來怎樣演變,誰知道呢?目前看起來,有不少工程師觀察到這類工具正在慢慢影響工作流程。

那些Cursor幫你省下的時間:從build_runner到freezed全自動處理

有時候,在實驗室裡頭,這種反應好像就會突然出現。其實沒有人能很肯定地說,到底是不是每一次都會成功。不過據說,有些研究人員發現,條件如果差不多,那產率常常能維持在將近一半左右上下。有的人印象中,好像只要溫度控制得還行、原料純度也不要太糟,大致上結果都不會差太遠。雖然偶爾會有例外,比如原本預期應該產生某個顏色的產物,最後卻變成另一種感覺,那種情況也不是完全沒聽過。

另外,也有人提到,如果把時間拉長一點——大概比平常再多等個幾個小時吧——似乎有機會讓反應走得更完全。但這種說法並沒有被每個團隊認同。有些學者認為,其實變因太多了,想要單靠某一項改動就得到穩定效果,可能還是得謹慎一些。

總之,大致來看,只要不是特別極端的狀況下,多數人觀察到的結果,好像都落在約三成到將近一半那樣子的範圍。不過這也只是目前的大概共識啦,不見得適用所有場合。

有些研究好像提到,這種做法帶來的影響其實也沒那麼簡單。據說在過去幾年裡,大致上有將近一半的人覺得,這個政策對他們的生活產生了某種程度上的改變。不過,也有人似乎感受不深——或者說,他們根本沒注意到。奇怪的是,在某些地方,反饋聲音反而比較微弱,主要討論多集中於細節,比如流程是不是太複雜、要花多少時間才能適應之類。倒是有人提出,好像年紀稍長的族群接受度略低,年輕一點的人則比較能適應這種新規範。不知道是不是跟習慣改變的速度有關。

再往下追問,有少數人曾提及某些潛在問題,但看起來沒有形成什麼明顯趨勢。有趣的是,有專家指出,如果搭配其他措施一起推動,整體效果可能會更顯著一些。只不過,目前相關數據還不是很充分,所以結論大多都帶點保留。大致聽起來就是這樣——在不同情境下展現出來的成效,其實差異還蠻大的。

參考來源

開發者效率狂飆!Cursor AI編輯器可以用聊天的方式

重塑AI程式 設計生態 · 首先是多模型支援的智慧程式碼編寫。 · 其次是基於整個程式碼庫的智慧程式碼提示。 · Cursor的AI聊天功能也不容小覷。 · 不僅功能創新, ...

來源: T客邦

无需翻墙的智能代码编辑器Cursor【附保姆级使用指南】 原创

2023年3月,在ChatGPT风靡全球的时候,一款名为Cursor 的代码编辑器横空出世,并且在技术圈里获得一致好评。它功能非常强大,用GPT-3.5辅助你编程,智能生成 ...

來源: CSDN博客

Columnist

專家

相關討論

❖ 相關文章