前段時間,Cursor宣布用AI寫了一個瀏覽器FastRender,被全網(wǎng)嘲笑了。
這個項目號稱使用成百上千個并行 AI 智能體,連續(xù)跑了一周,生成了一個Web 瀏覽器,代碼量超過 300?萬行。
但是很多程序員clone以后,卻發(fā)現(xiàn)跑不起來,并且項目依賴大量已有的庫,不是真正的從零開始。
更要命的是,代碼質(zhì)量極爛,很多構(gòu)建錯誤和警告未解決,被一些人戲稱“AI泔水”。
看到這種情況,有個叫做“embedding-shapes”的程序員非常不爽,他決定自己用AI從頭兒構(gòu)建一個。
他的目標(biāo)如下:
![]()
和Cursor不同的是,他決定只用一個AI Agent,充分發(fā)揮程序員的能力,指導(dǎo)AI進行編程,看看效果如何。
所以,他并沒有直接說:
請幫我用 Rust 寫一個瀏覽器!
而是精心設(shè)計了一組策略和方法:
第一天:先跑起來
第一天他和 AI 做的事只有一件:先讓它跑起來。
實現(xiàn)最基本的功能,能渲染Hello World,然后增加渲染嵌套標(biāo)簽。
增加了一個截圖功能,把渲染的結(jié)果變成圖片,讓AI去觀察,這樣就可以實現(xiàn)回歸測試,保證AI不會破壞已有的功能,不得不說,這個點子真是挺棒的。
第一天,一共生成了7500行代碼,實現(xiàn)了一個極簡的瀏覽器原型。
這個原型沒有利用任何現(xiàn)成的類庫,HTML/CSS渲染框架,真的是一點點從頭而搞起來的,代碼模塊化良好,職責(zé)清晰,每個文件<1000行,完全可控。
第二天:建立自動的工作流程
第二天,他改進了resize Windows的問題,兼容性問題和性能問題。
更重要的是建立了一個工作流程:
1.選定一個真實網(wǎng)站,關(guān)閉JavaScript,截圖。
2.把截圖發(fā)給AI,讓它照著截圖的樣子來渲染。
3.AI需要寫代碼,跑測試,生成新的截圖,然后對比。
大多數(shù)時間他都不管事兒,等 AI 跑完來叫他,他只負(fù)責(zé)看看像不像、順不順。
第三天:收尾+跨平臺
增加滾動條,Back 按鈕 (這是瀏覽器非常重要的功能)
增加對macOS和Windows的支持(這說明抽象做對了,第一天的架構(gòu)沒有“寫死在Linux上”)
增加更多的回歸測試,提升性能,fix崩潰的問題。(說明軟件已經(jīng)到了一定復(fù)雜度了)
三天后,全部的工作成果是大約兩萬行Rust代碼,沒有任何依賴,編譯起來飛快。
用這個瀏覽器訪問Hacker News:
![]()
訪問著名的Medium:
![]()
訪問知名博客:Simon Willison :
![]()
相比cursor那種幾百個Agent自動干活生成的垃圾瀏覽器,這個瀏覽器功能不多,但是更加清晰、簡潔、工程上更加靠譜。
對于嚴(yán)肅的、復(fù)雜的項目,程序員有效地指導(dǎo)AI,遠(yuǎn)比直接把問題扔過去讓AI解決問題重要得多。
如果不對架構(gòu)和設(shè)計進行控制和約束,則很快就會因為它們的粗糙而失控:
第一天很爽:哇塞,這么快都實現(xiàn)了!
第二天也很爽:出了問題AI馬上就解決了!
第三天麻煩出現(xiàn):這個Bug給它描述了好幾遍,怎么就是改不了?
第四天:算了,還是重開吧!
相比之下,當(dāng)你擁有真正的設(shè)計和高質(zhì)量的代碼時,可以保持穩(wěn)定的開發(fā)節(jié)奏,每一天都像第一天一樣。
從這三天的實踐可以看出,AI 與人類協(xié)作能在特定任務(wù)上顯著加速開發(fā),AI是人類程序員的放大器,但是它只能在懂開發(fā)的人手里發(fā)揮最大的效用,這也是程序員的最大價值。
GitHub :
https://github.com/embedding-shapes/one-agent-one-browser/
特別聲明:以上內(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.