henry 發(fā)自 凹非寺
量子位 | 公眾號 QbitAI
剛剛,大神Karpathy發(fā)布全新Vibe Coding指南!
在這份指南中,Karpathy不死磕單一模型,而是集眾模之所長,總結(jié)出了一套AI編程的三層結(jié)構(gòu):
- Cursor——主要負(fù)責(zé)自動補(bǔ)全與小范圍代碼修改,高效傳達(dá)任務(wù)意圖。
- Claude Code/Codex——用于實(shí)現(xiàn)較大功能塊,快速原型開發(fā)和跨領(lǐng)域代碼嘗試。
- GPT-5 Pro——解決最棘手的bug或復(fù)雜抽象,提供深度文檔/資料支持。
這三層遞進(jìn)的結(jié)構(gòu),不僅是Karpathy對編程技巧的分享,更是他對Vibe Coding概念的一次升級式售后。
讓我們看看他是怎么做的吧!
順境Cursor,逆境Claude/Codex,絕境GPT-5 Pro
總的來說,Karpathy這套三層結(jié)構(gòu)源自個(gè)人編程的實(shí)戰(zhàn)經(jīng)驗(yàn)。
他根據(jù)工具的使用頻率任務(wù)種類,對Cursor、Claude Code/Codex和GPT-5 Pro進(jìn)行了結(jié)構(gòu)化組織——
將常見、簡單、局部的補(bǔ)全與修改交給Cursor,將較大功能塊的實(shí)現(xiàn)交給Claude Code / Codex,當(dāng)遇到它們都無法解決的問題,再求助GPT-5 Pro。
即所謂順境Cursor,逆境Claude/Codex,絕境GPT-5 Pro。
展開來說,第一層,就是最常見的情況(約75%),通過Cursor的Tab鍵自動補(bǔ)全代碼。
在此,Karpathy發(fā)現(xiàn)了一種和大語言模型高帶寬溝通的方式——在項(xiàng)目的適當(dāng)位置寫下一些具體的代碼片段或注釋。
這樣做的目的很明確:通過代碼或注釋直接展示任務(wù)意圖,一次性傳遞大量、精確的信息,比單靠文字描述更快、更清晰。
(Karpathy注:有時(shí)候自動補(bǔ)全模型會有點(diǎn)煩人,注意來回切換開關(guān))
除此之外,就是對一段具體代碼進(jìn)行高亮,然后請求某種修改。
第二層,就是Claude Code/Codex等可以在Cursor側(cè)欄中配置的模型,Karpathy主要用它們來實(shí)現(xiàn)一些通過提示詞比較容易指定的大功能塊
整體看來,這些工具非常有用,但效果嘛,就有好有壞。
先說優(yōu)點(diǎn),在一些開發(fā)者比較陌生、比較Vibe Coding的領(lǐng)域里,它們是不可或缺的。
對于Karpathy而言,像寫Rust、SQL語句,這些他以前沒怎么做過的東西,這些工具就非常好用。與此同時(shí),這些工具還能快速生成一次性的可視化或調(diào)試代碼,為開發(fā)者省下大量重復(fù)勞動。
在此,代碼可以隨意地創(chuàng)造刪除,不再像過去那樣珍貴。于是,大神又造了一個(gè)新詞:“代碼后稀缺時(shí)代”(code post-scarcity era)
說完優(yōu)點(diǎn),我們來看看缺點(diǎn):
首先,這類模型很容易跑偏,因此,Karpathy通常不用“YOLO模式”(全面托管),并且不得不常按ESC終止項(xiàng)目。
其次,AI寫的代碼非常容易出現(xiàn)屎山,毫無The Zen of Python的美感。
具體來說,AI編程工具一來經(jīng)常濫用try/catch、讓抽象過于復(fù)雜;二來會把代碼膨脹得很大(比如用嵌套的if-else,而其實(shí)列表推導(dǎo)式或一行if-then-else就能解決);三來會復(fù)制粘貼代碼塊,而不是抽出一個(gè)好用的輔助函數(shù)……
對此,開發(fā)者往往還得再手動做一輪“清理”,處理上述這些編碼風(fēng)格方面的問題。
此外,Karpathy的經(jīng)驗(yàn)還反映了當(dāng)前AI編程工具在解釋性和交互性上的局限。
例如,他想讓Claude Code在寫代碼的同時(shí)講解,但發(fā)現(xiàn)完全行不通——AI工具顯然更想“寫代碼”,而非解釋為什么這樣寫代碼。
最后一層是GPT-5 Pro,Karpathy會在最難的情況下求助于它。
比如,當(dāng)Karpathy、Cursor和Claude Code卡在一個(gè)bug上10分鐘無果時(shí),他就會把整個(gè)問題復(fù)制粘貼給GPT-5 Pro,讓它跑10分鐘,結(jié)果還真能被它找到bug。
Karpathy表示,GPT-5 Pro非常強(qiáng)大,能挖掘出各種深奧的文檔和論文。在處理清理抽象結(jié)構(gòu)、做文獻(xiàn)綜述、調(diào)查研究等復(fù)雜任務(wù)中,也能返回高相關(guān)性的資源和線索。
最后,Karpathy總結(jié)道:
- 編程在不同“類型”的工作流和工具之間被徹底打開了各種可能性,每個(gè)都有自己的優(yōu)缺點(diǎn)。但這也讓人難以避免地產(chǎn)生某種焦慮:擔(dān)心自己沒站在“集體可能性”的最前沿。所以這就是我在周日胡思亂想的一些筆記,也帶著好奇心想知道別人都在發(fā)現(xiàn)些什么。
實(shí)際上,這也體現(xiàn)了大神總結(jié)經(jīng)驗(yàn)的意義:通過與開發(fā)者交流、分享使用心得,整個(gè)開發(fā)社區(qū)才能不斷迭代和進(jìn)步。
值得一提的是,在4個(gè)月之前,Karpathy分享了自己的Vibe Coding指南1.0:
- 把所有相關(guān)內(nèi)容塞進(jìn)上下文里(在大型項(xiàng)目中可能需要很久。如果項(xiàng)目夠小,就直接把所有文件都塞進(jìn)去。
- 描述我們接下來要實(shí)現(xiàn)的那個(gè)具體的、增量式的小改動。不要直接要代碼,而是要幾種高層次的思路,并分析它們的優(yōu)缺點(diǎn)。幾乎總是會有多種做法,而大語言模型的判斷并不總是可靠。然后(可選)再具體化。
- 選擇一種思路,請它寫出第一版代碼。
- 進(jìn)入復(fù)查/學(xué)習(xí)階段:手動在瀏覽器里打開我不熟悉或沒調(diào)用過的API文檔,向模型提問解釋、澄清、修改,必要時(shí)回退并嘗試另一種思路。
- 測試。
- Git commit。
- 詢問可以接下來實(shí)現(xiàn)什么。然后重復(fù)這個(gè)循環(huán)。
可以說,自今年2月Karpathy提出Vibe Coding以來,他一直在不斷完善和實(shí)踐這一構(gòu)想,避免它淪為單純的“概念游戲”。
基于此,網(wǎng)友們也紛紛給出了自己的嘗試和答案。
網(wǎng)友在線,出謀劃策
在大神的一番分享下,許多網(wǎng)友表示深有同感,覺得自己的經(jīng)歷和大神非常類似。
基本上就是小問題直接靠AI補(bǔ)全,大問題靠AI工具多roll給方向,自己來監(jiān)督。
有網(wǎng)友表示:有時(shí)候一個(gè)模型卡在某個(gè)問題上,另一個(gè)模型卻能快速解決。
而在不同的模型之間切換,為每個(gè)任務(wù)選擇合適的模型,已然成為了一門藝術(shù)!
其他網(wǎng)友也是曬出了自己的心得:確保LLM生成代碼一致性的最好方法是提供詳細(xì)的需求說明和功能拆解,同時(shí)附上驗(yàn)收標(biāo)準(zhǔn),包括代碼風(fēng)格和質(zhì)量規(guī)范。
ps,有位網(wǎng)友發(fā)現(xiàn)了華點(diǎn):我“雙子座”去哪了?
你的Vibe Coding神操作是什么?快來炫一波!
[1]https://x.com/karpathy/status/1959703967694545296
[2]https://x.com/karpathy/status/1886192184808149383
[3]https://x.com/karpathy/status/1915581920022585597
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.