談?wù)刅ibe編程(氛圍編程)
Vibe編程已經(jīng)出現(xiàn)半年了,這半年也嘗試了很多工具和構(gòu)建了一些小的應(yīng)用,這篇文章也談?wù)勎覍?duì)于Vibe編程的理解。
Vibe編程
Vibe編程中文翻譯是氛圍編程,2025年2月3日,前OpenAI聯(lián)合創(chuàng)始人、前特斯拉人工智能主管Andrej Karpathy在社交平臺(tái)X上發(fā)布了一條看似平常卻引發(fā)全網(wǎng)熱議的推文,其大意是說:
有一種新的編碼方式,稱之為Vibe編程;它讓你完全沉浸在氛圍中,擁抱指數(shù)級(jí)增長,甚至忘記代碼的存在。Karpathy用一種近乎詩意的語言描述了他的編程體驗(yàn):"這已經(jīng)不能算是真正的編程了,我只是看看、說說、運(yùn)行、復(fù)制并粘貼,然后程序就能運(yùn)行了。",這句話瞬間擊中了無數(shù)開發(fā)者的內(nèi)心,因?yàn)樗珳?zhǔn)地概括了一種全新的軟件開發(fā)體驗(yàn),在短短48小時(shí)內(nèi),這條推文獲得了超過50萬次轉(zhuǎn)發(fā),Vibe編程的話題迅速登上全球趨勢榜。
圖片
我理解的氛圍編程就是將 ??AI?? 工具當(dāng)成你的編碼助手,您就是一個(gè)架構(gòu)師或者產(chǎn)品經(jīng)理,其兩者的分工是架構(gòu)師或者產(chǎn)品經(jīng)理描述詳細(xì)的產(chǎn)品形態(tài),編碼助手負(fù)責(zé)所有的編碼和部署工作。
Vibe編程和傳統(tǒng)編程的差異
在傳統(tǒng)編程中,開發(fā)者必須同時(shí)處理多個(gè)層次的抽象——不僅需要了解操作系統(tǒng),還需要了解編程語言的細(xì)節(jié),可能一不小心就出現(xiàn)內(nèi)存泄漏或者 ??panic???,每一行代碼都必須實(shí)現(xiàn),可能遇到常用的庫也需要自己重新實(shí)現(xiàn)一遍。在Vibe編程中,開發(fā)者似乎已經(jīng)不需要關(guān)心編程語言了,由于底層大模型是全能的,從 ??C/C++??? 到 ??Rust???,從 ??JS??? 到偏門的 ??Web?? 框架,開發(fā)者轉(zhuǎn)變?yōu)榧軜?gòu)師,不再需要關(guān)心編碼細(xì)節(jié)。
但是有個(gè)問題必須要注意:如果你真的想成為一個(gè)優(yōu)秀的Vibe編程工程師,你還是需要懂?dāng)?shù)據(jù)結(jié)構(gòu)、算法和設(shè)計(jì)模式等基礎(chǔ)知識(shí)和行業(yè)經(jīng)驗(yàn)知識(shí),為什么?
- 底層模型不一定能完全遵循規(guī)則,可能實(shí)現(xiàn)的算法不一定是最優(yōu)的,你需要了解算法,并且將模型糾正過來
- 行業(yè)經(jīng)驗(yàn)知識(shí)有很多沉淀或者規(guī)則,大模型能了解通用知識(shí),但是行業(yè)知識(shí)甚至私有化知識(shí)不一定能遵循,所以你需要讀懂行業(yè)代碼
所以對(duì)于復(fù)雜的系統(tǒng)架構(gòu)、專業(yè)領(lǐng)域知識(shí)等,傳統(tǒng)編程的精確性和可控性仍然不可替代,而快速原型開發(fā)、個(gè)性化應(yīng)用等場景,Vibe編程的優(yōu)勢則更加明顯。
Vibe編程工具推薦
以下是排名靠前的工具和LLM模型:

從上面看有很多Vibe工具是被大家在長期使用的,下面我重點(diǎn)介紹幾個(gè)氛圍編程的工具。
1. Lovable:https://lovable.dev/

Lovable設(shè)計(jì)哲學(xué)是"零技術(shù)門檻",你不需要理解什么是前端、后端,也不需要知道數(shù)據(jù)庫如何工作,只需要描述清楚想要什么,Lovable就會(huì)處理所有技術(shù)細(xì)節(jié)。它特別適合產(chǎn)品經(jīng)理、設(shè)計(jì)師或創(chuàng)業(yè)者快速驗(yàn)證商業(yè)想法。
2. V0:https://v0.app/
圖片
Vercel推出的快速構(gòu)建原型的工具,V0主要專注于前端界面生成,它的強(qiáng)項(xiàng)是創(chuàng)建美觀、現(xiàn)代的用戶界面,V0基于shadcn/ui和Tailwind CSS,生成的代碼不僅功能完整,還遵循軟件設(shè)計(jì)最佳實(shí)踐。
3. bolt.new:https://bolt.new/

bolt.new特別合快速原型開發(fā)和MVP驗(yàn)證,內(nèi)置了與Netlify的部署集成,可以一鍵將項(xiàng)目部署到生產(chǎn)環(huán)境,也集成了github,F(xiàn)igma等常用的程序員和產(chǎn)品經(jīng)理的工具。bolt.new的最大優(yōu)勢是整個(gè)編輯器都在瀏覽器中運(yùn)行,無須下載安裝任何軟件,這降低了技術(shù)門檻,它支持多種技術(shù)棧;通過使用不同的技術(shù)組合,能幫你將逐漸理解前端、后端、數(shù)據(jù)庫等概念的區(qū)別和聯(lián)系。
4. Cursor,TRAE和其他vscode copilot
這些工具應(yīng)該大家都不陌生,可能已經(jīng)成為大家日常使用的一部分了,就不過多介紹了,對(duì)于氛圍編程來說,這些工具其實(shí)是輔助,主要解決:
- 如何選擇最好的LLM模型,更好的生成工程
- 如何處理長上下文,解決幻覺或者需求不遵循問題
- 如何集成MCP或者Agent,實(shí)現(xiàn)高度自動(dòng)化 ....
Vibe編程實(shí)踐
1. 熟練掌握Prompt
??Prompt??? 是 ??AI??? 時(shí)間的必備技能,我之前寫過很多 ??Prompt?? 技能,這里就不再贅述了,就總結(jié)幾個(gè)比較常用的:
- 少樣本提示,讓?
?AI?? 模擬樣例完成任務(wù) - 角色提示,比如以產(chǎn)品經(jīng)理角度觀察問題,就寫"你是專業(yè)的產(chǎn)品經(jīng)理",以程序員角度完成工作,就寫"你是專業(yè)的后端程序員,需要處理..."
- 思維鏈提示,這塊可以用于解決程序bug,比如出現(xiàn)什么問題,可能是什么原因,排查路徑可能是什么,讓AI更快速的解決或者深入解決問題
- 思維樹提示,將問題分解為多個(gè)實(shí)現(xiàn)路徑,讓AI決定先實(shí)現(xiàn)哪個(gè)方案,再實(shí)現(xiàn)下一步,類似?
?plan?? 計(jì)劃 - 寫?
?Prompt?? 盡量提示樣例,并給出明確的指令解決哪一個(gè)問題,而不是泛化 - 告訴模型應(yīng)該做什么,不應(yīng)該做什么,當(dāng)然這里不一定一次就能給出完整的,可以讓模型多次輸出后,總結(jié)一些約束規(guī)則
更多的 ??Prompt??,可以參考:https://mp.weixin.qq.com/s/q5O32QOIYGsamkPE-7K6eA
2. 四步法
如果要用好Vibe編程,可以嘗試這4步:
(1)找到問題
如果你要嘗試氛圍編程,先不著急開始讓 ??AI?? 開始幫你干活,你需要做好的就是分析問題,分析你需要的是什么,這個(gè)產(chǎn)品或者項(xiàng)目會(huì)有什么問題,風(fēng)險(xiǎn)點(diǎn)有哪些。這個(gè)階段你需要像一個(gè)非常有經(jīng)驗(yàn)的產(chǎn)品經(jīng)理,亦或是一個(gè)非常老練的項(xiàng)目經(jīng)理,將問題找出來,一步一步拆解。
(2)轉(zhuǎn)換問題,提出解決方案
這個(gè)階段主要是對(duì)問題的細(xì)化,解決方案是什么,選項(xiàng)具體的技術(shù)方案,比如選擇后端是 ??golang???,選擇的 ??golang??? 的框架是什么,是否需要采用微服務(wù)架構(gòu),部署的方案選擇是什么,這一部分需要有經(jīng)驗(yàn)的程序員調(diào)研其各個(gè) ??AI??? 的工具鏈?zhǔn)欠裢晟啤K晕矣X得氛圍編程會(huì)涌現(xiàn)類似 ??SupeBase?? 這樣的全棧產(chǎn)品作為基礎(chǔ)設(shè)施,解決前后端的部署和數(shù)據(jù)存等問題。
(3)實(shí)現(xiàn)最小可行性(MVP)
通過上面兩個(gè)步驟,這一步就是開始讓 ??AI??? 干活了,這一步驟需要掌握的最重要的技能就是 ??Prompt???,將你的問題,解決方案,產(chǎn)品思路通過細(xì)化的 ??Prompt??? 給到 ??AI??,當(dāng)前階段有些實(shí)踐如下:
- ?
?MVP??? 的原則是什么?最小化產(chǎn)品,這一步驟切記不要求將功能全部實(shí)現(xiàn),??AI?? 也不能接受這么多輸出。 - 目標(biāo)驗(yàn)證工程的可行性,將"不需要的功能"告訴?
?AI?? 不要實(shí)現(xiàn),做一些約束,輸出的越多,需要改的就越多。 - ?
?Prompt?? 一定是清晰的,比如說:"幫我做個(gè)編程網(wǎng)站",改為”創(chuàng)建一個(gè)藍(lán)白色調(diào)的技術(shù)博客網(wǎng)站,主要分享Python編程教程,首頁展示最新5篇文章的摘要和封面圖片,文章支持代碼高亮顯示,右側(cè)邊欄包含文章分類、標(biāo)簽和作者簡介,底部有評(píng)論功能。 " - 掌握具體化描述,最有效的練習(xí)方法是"5W1H":Who(用戶是誰)、What(做什么功能)、When(什么時(shí)候使用)、Where(在什么環(huán)境下使用)、Why(為什么需要)、How(如何實(shí)現(xiàn))。
(4)完善和優(yōu)化方案
這一步驟是最難的,當(dāng) ??AI??? 將產(chǎn)品拆解為工程,并實(shí)現(xiàn)代碼運(yùn)行的 ??demo??,但是可能會(huì)經(jīng)歷如下問題:
- 運(yùn)行出現(xiàn)錯(cuò)誤,怎么解決?
- 產(chǎn)品的?
?demo?? 不符合實(shí)際的要求? - 想修改按鈕的邏輯,但是讓?
?AI?? 修改可能改出幾百行代碼? - 修改顏色或者大小等屬性,?
?AI?? 一直不能理解,最后不得不親自動(dòng)手? ...
遇到如上問題怎么辦?這里很多問題其實(shí)我也無法給出具體的方法,我給一些經(jīng)驗(yàn):
- 錯(cuò)誤反饋技巧:直接復(fù)制錯(cuò)誤信息比描述更有效,比如編譯報(bào)錯(cuò),將報(bào)錯(cuò)信息直接貼給?
?AI?? - 先讀一下大概的代碼,當(dāng)你知道需要修改那部分樣式或者功能,可以直接指定當(dāng)前文件或者給出具體的哪些行,這樣?
?AI?? 能更準(zhǔn)確的了解你的需求 - 優(yōu)化當(dāng)前?
?demo??,可以給出明確的要求,比如:
請(qǐng)為應(yīng)用添加如下精細(xì)化改進(jìn)。
1. 視覺優(yōu)化:使用現(xiàn)代的漸變背景,卡片式設(shè)計(jì)顯示記錄,添加適當(dāng)?shù)年幱靶Ч?
2. 圖標(biāo)支持:為不同類別添加相應(yīng)的圖標(biāo)(餐飲用餐具圖標(biāo),交通用汽車圖標(biāo)等)。
3. 顏色區(qū)分:收入記錄顯示為綠色,支出記錄顯示為紅色。
4. 動(dòng)畫效果:添加和刪除記錄時(shí)有平滑的過渡動(dòng)畫。
5. 個(gè)性化設(shè)置:用戶可以自定義類別和對(duì)應(yīng)的圖標(biāo)顏色。- 將大的優(yōu)化改為小的優(yōu)化,每次只修改一個(gè)功能點(diǎn)
- 提供參考樣例,比如你的實(shí)現(xiàn)可以參考?
?xxx?? 網(wǎng)站的顏色和布局,哪些功能不需要等....
驗(yàn)證Vibe編程的可能性
基于以上實(shí)踐,我用 ??TRAE??? 嘗試實(shí)現(xiàn)了一個(gè) ??SimpleMath???,主要解決在工作中要演示動(dòng)畫的問題,其中g(shù)ithub如下:??https://github.com/linkxzhou/SimpleMath??
以下是我的拆解步驟:
(1)第一步:找到問題
開始的時(shí)候我已經(jīng)先想好我需要做什么,其實(shí)我的目標(biāo)很簡單,不需要復(fù)雜的功能,只需要結(jié)合了人工智能和可視化技術(shù),讓用戶通過簡單的文字描述就能生成精美的數(shù)學(xué)動(dòng)畫。
(2)第二步:提出解決方案
其實(shí)實(shí)現(xiàn)生成數(shù)學(xué)動(dòng)畫的方案有很多,用python也可以,用web展示也可以,但是選擇不同的語言又有不同的技術(shù)棧,這樣就變成了一顆決策樹,對(duì)于 ??AI?? 直接讓他干活肯定是不行,怎么辦?
- 自己先收集資料,這里的可行的實(shí)現(xiàn)方案有哪些?
- 用什么技術(shù)棧,最好選擇你自己熟悉的,這樣出現(xiàn)問題,可以排查,另一個(gè)也可以鑒別?
?AI?? 是不是走偏 - 大概的架構(gòu)方案是什么?
- ...
最后根據(jù)以上的綜合考慮,我選擇 ??p5.js???,參考 ??Manim??? 方案實(shí)現(xiàn),技術(shù)棧就用 ??Vue??,為了整個(gè)項(xiàng)目簡單部署,就沒有選擇后端方案。
(3)第三步:讓 ??AI?? 實(shí)現(xiàn)MVP
完成前面兩步驟,就可以開始讓 ??AI??? 實(shí)現(xiàn)最小化需求,于是我簡單描述我的 ??Prompt?? 如下:
你是專業(yè)的Vue的開發(fā)者,現(xiàn)在要基于p5.js實(shí)現(xiàn)類似Manin的各種數(shù)學(xué)和算法演示項(xiàng)目,要求如下:
1. 基于Vue
2. 使用p5.js實(shí)現(xiàn)動(dòng)畫效果
3. 在AI對(duì)話框內(nèi)輸入,自動(dòng)生成代碼,放入p5.js框架內(nèi)運(yùn)行,展示動(dòng)畫效果
4. 使用openai的標(biāo)準(zhǔn)API
3. 樣式布局:
- 左邊是對(duì)話框架,類似AI對(duì)話框
- 右邊是展示p5.js的演示動(dòng)畫效果
- 有設(shè)置的功能,選擇模型,設(shè)置模型的參數(shù)等
- 頁面簡潔,清晰,不要有多余的功能(不需要登錄)這個(gè)時(shí)候 ??AI??? 工具會(huì)將如上需求拆解,細(xì)分,然后等你的想法和 ??AI?? 的想法是否一致,如果一致就開始編碼。
(4)第四步:優(yōu)化
優(yōu)化這個(gè)步驟是最難的,如果你有編程基礎(chǔ)可能還能看懂代碼,分析出現(xiàn)的問題,如果只是產(chǎn)品,那遇到一個(gè)比較難的問題可能就會(huì)卡住很久,不過像 ??TRAE??? 等工具已經(jīng)將生成的工程放到整個(gè)沙盒環(huán)境,從編譯到控制臺(tái)報(bào)錯(cuò),都可以讓 ??AI??? 基于錯(cuò)誤找到問題的地方,這個(gè)還是挺方便的。除了上述問題,在這個(gè)項(xiàng)目中遇到我到底要不要加一個(gè)后端接口的問題,由于沒有加后端接口,發(fā)現(xiàn)使用 ??p5.js??? 重新渲染動(dòng)畫一直會(huì)報(bào)錯(cuò),讓 ??AI??? 嘗試了十幾次以后,問題還是沒有解決,怎么辦?只能修改方案,可能模型并不知道使用 ??p5.js??? 動(dòng)態(tài)加載會(huì)出現(xiàn)一系列的 ??bug???,于是架構(gòu)師出馬了,開始換方案,??Prompt?? 如下:
p5.ts 改為生成代碼,從后端返回,然后加載到動(dòng)畫展示區(qū)域,應(yīng)該需要改如下功能:
1. 增加express作為后端框架
2. 生成的代碼傳給express,express自動(dòng)返回一個(gè)動(dòng)態(tài)的URL
3. 動(dòng)畫展示區(qū)域展示返回的URL
這樣就能解決動(dòng)態(tài)加載p5.js的生成代碼了...
經(jīng)過一系列的折騰,終于完成了,效果如下:

Vibe編程的思考
從各種網(wǎng)上的結(jié)論怎么看 ??Vibe編程?? 這個(gè)概念的呢?有兩種不同的聲音:
有人說:"氛圍編程看似捷徑,但本質(zhì)是死路"
為什么這么說,可能很多人沒有使用氛圍編程寫過生產(chǎn)代碼,如果用代碼上線過,的確可能會(huì)發(fā)生問題,看似邏輯是正確的,沒有工程師當(dāng)監(jiān)工,這些代碼只能永遠(yuǎn)存在倉庫中。氛圍編程或許讓功能上線飛快,但需要真正支撐生產(chǎn)環(huán)境的,是懂系統(tǒng)、能排查、懂業(yè)務(wù)邏輯的工程師。我認(rèn)可這種結(jié)論,作為一個(gè)工作10年的后端工程師,線上的任何一行代碼都必須要保證準(zhǔn)確,一旦內(nèi)存泄漏,或者使用了某些全局變量,或者沒有判空等,可能當(dāng)時(shí)不會(huì)發(fā)現(xiàn),運(yùn)行幾天以后就掛了...。氛圍編程畢竟用 ??AI???,??AI??? 不一定 ??100%??? 準(zhǔn)確,特別是復(fù)雜的問題,現(xiàn)在做一個(gè)假設(shè),將一個(gè)復(fù)雜的問題拆分為 10 個(gè)步驟,假設(shè) ??AI??? 每個(gè)步驟都能按照 ??98%??? 遵循,根據(jù)出問題的概率疊加,??0.98??? 進(jìn)行 10 次相乘,就只有 ??80%??? 左右的概率不出現(xiàn)問題,所以問題的確在 ??AI??? 上疊加。有人說,可以讓 ??AI??? 多次檢查,多寫測試用例,多做代碼覆蓋,其實(shí)對(duì)于一個(gè)黑盒來說,??AI?? 是裁判也是運(yùn)動(dòng)員,怎么能做到一定正確呢?
也有人說:"氛圍編程是未來,將改變編程的新范式"
我認(rèn)為任何一種新的效率提升的范式都會(huì)受到舊思想的阻撓,又會(huì)被一群看到希望的人追捧,就像當(dāng)年重新塑造經(jīng)濟(jì)范式的 ??BTC???。反對(duì)的觀點(diǎn)是氛圍編程不能 ??100%??? 解決問題,但是真實(shí)情況是的確能提效,你想像一下當(dāng)你想了解某個(gè)知識(shí)點(diǎn),以前的思考習(xí)慣是自己整理資料,而且資料的內(nèi)容可能雜亂,導(dǎo)致你的系統(tǒng)性思考是復(fù)雜的,現(xiàn)在 ??AI??? 按照你的想法幫你整理資料,并實(shí)現(xiàn)代碼邏輯,是不是好像多了一個(gè)助手,肯定能提效。就像我上面自己實(shí)現(xiàn)的 ??SimpleMath??? 開源項(xiàng)目,如果要我自己實(shí)現(xiàn),至少需要3-5天,但是用 ??AI?? 寫代碼并優(yōu)化,只花了5個(gè)小時(shí)。如果你沒有嘗試氛圍編程,可以嘗試一下,你可能剛開始不適應(yīng),但是你的確能獲得驚喜,不過前提是你接受這種方式,并且有一定的編程基礎(chǔ)。
參考
(1)《玩轉(zhuǎn)氛圍編程》
(2)https://mp.weixin.qq.com/s/RGQOYAiiVvn0Una-m2OrJg
本文轉(zhuǎn)載自??周末程序猿??,作者:周末程序猿

















