AI編碼工具Bolt:是神器還是雞肋?
David Eastman 試用了新的 AI 編碼工具 Bolt。他現(xiàn)它在某些方面做得很好,但他渴望更精細(xì)的控制。
譯自 Introduction to Bolt: Does It Suit Professional Developers?,作者 David Eastman。
作為一名開(kāi)發(fā)者,我知道我的責(zé)任是創(chuàng)建或使用可維護(hù)的解決方案——我們通常認(rèn)為這意味著以某種方式編寫代碼,以便將知識(shí)傳遞給其他人類開(kāi)發(fā)者。這種立場(chǎng)不一定會(huì)改變,但嘗試使用 LLM 以編程方式構(gòu)建軟件,無(wú)疑將在越來(lái)越多的案例中發(fā)揮開(kāi)發(fā)工作流程的一部分作用。
考慮到這一點(diǎn),我們可能需要習(xí)慣于使用樂(lè)高積木套件中的組件。所以我嘗試了 Bolt.new,它承諾“提示、運(yùn)行、編輯和部署全棧 Web 應(yīng)用程序”。我不確定我是否會(huì)獲得“代理體驗(yàn)”,或者這是否仍然被認(rèn)為是編碼工具。以下景觀視圖中的定義將 Bolt 定位為前者:
圖片
那么,讓我們開(kāi)始使用 Bolt 進(jìn)行構(gòu)建。使用 GitHub 登錄后,起始頁(yè)面非常醒目:
圖片
首先,讓我們確定要構(gòu)建的內(nèi)容的一些要求。我想構(gòu)建一個(gè)博客,首頁(yè)顯示我的最新條目。我想要一列縮略圖,在右側(cè)顯示以前的條目。我假設(shè)我的導(dǎo)語(yǔ)(第一段)將用作帶有縮略圖圖像的文本。每篇文章都將有一張“英雄”圖片。這些都很標(biāo)準(zhǔn)。
我不確定我是否有“最喜歡的堆?!?,但這可能是學(xué)習(xí)新站點(diǎn)構(gòu)建器的好方法。它實(shí)際上建議使用 Astro,它構(gòu)建于 Vite 之上——盡管現(xiàn)在博客的設(shè)計(jì)在任何地方都足夠簡(jiǎn)單。
一旦我選擇了 Astro,我們就會(huì)在左側(cè)得到一個(gè)聊天框,在右側(cè)得到代碼和預(yù)覽。Astro 開(kāi)始設(shè)置:
圖片
Bolt 從未告訴我我將在哪里工作——在云端還是本地?由于有一個(gè)聊天框,我詢問(wèn)了 Bolt,它澄清說(shuō):
圖片
這很好也很有趣。當(dāng)然,這意味著實(shí)際上獲取我的代碼可能會(huì)存在問(wèn)題或障礙。但目前,我假設(shè)我的興趣是構(gòu)建。
我在預(yù)覽選項(xiàng)卡中看到了一個(gè)不錯(cuò)的 Astro 博客入門模板,在另一個(gè)選項(xiàng)卡中看到了代碼。因此,很明顯,我的體驗(yàn)將完全由 Bolt 調(diào)解——即使我位于 Astro 的頁(yè)面上。
圖片
為了看看我們現(xiàn)在有什么,我點(diǎn)擊了大的部署按鈕,這在聊天框中得到了中繼。這是與 Netlify 合作完成的,Netlify 為此與 Bolt 建立了合作伙伴關(guān)系。所以我得到了一個(gè)不錯(cuò)的個(gè)性化 URL 來(lái)檢查當(dāng)前的工作:
圖片
現(xiàn)在我們將模板與我之前指定的內(nèi)容進(jìn)行比較。在博客頁(yè)面上,縮略圖的格式不太符合我的要求:
圖片
我想使用導(dǎo)語(yǔ)作為主要視覺(jué)風(fēng)格,以及帶有日期的小得多的圖像。沒(méi)有標(biāo)題。博客內(nèi)容采用 Markdown 格式,標(biāo)題、導(dǎo)語(yǔ)(命名描述)、日期和英雄圖片放置在 front matter 中。
所以我們需要看看布局。
通過(guò)左側(cè)窗格瀏覽文件,我遇到了 src/pages/blog/index.astro 中博客縮略圖的描述:
圖片
當(dāng)我開(kāi)始編輯時(shí),頁(yè)面在我輸入時(shí)不斷向上滾動(dòng)。當(dāng)然,我問(wèn) AI 這種奇怪行為的原因是什么,但它沒(méi)有幫助。
因?yàn)榫庉嬈髦皇且粋€(gè)網(wǎng)頁(yè)而不是 IDE,所以我真的沒(méi)有太多控制權(quán)。我正在 MacBook 上使用 Chrome,所以這可能是問(wèn)題所在。但至少我的頁(yè)面有一個(gè) URL,所以我可以立即嘗試另一個(gè)瀏覽器:Safari。當(dāng)然,我必須重新登錄,讓 Safari 向我顯示彈出窗口,并重新驗(yàn)證。最終,我得到了這個(gè),這非常具有諷刺意味:
圖片
因此,我用來(lái)檢查錯(cuò)誤的瀏覽器可能并不理想,而我離開(kāi)的瀏覽器是推薦的。我的問(wèn)題解決了嗎?沒(méi)有。大約從第 50 行開(kāi)始,任何編輯嘗試都會(huì)使代碼向上滾動(dòng)到我的光標(biāo)上方。至少我可以關(guān)閉 Safari。
我沒(méi)有找到任何關(guān)于此的參考,所以我認(rèn)為這是一個(gè)最近的錯(cuò)誤。
現(xiàn)在你可能會(huì)說(shuō),“當(dāng)然,這個(gè)想法是用聊天來(lái)改變一切,而不是自己做”,你說(shuō)的有道理。
首先,我要求 Bolt 更改每個(gè)博客的第一個(gè)導(dǎo)語(yǔ),以便它們不都具有相同的 ipso lorem 拉丁文。它做到了:
圖片
然后我要求將日期的顏色和字體與描述的顏色和字體交換。它做到了,但也顛倒了我對(duì)位置的其他更改并刪除了標(biāo)題:
圖片
這里的結(jié)論不是與 LLM 進(jìn)行細(xì)粒度的語(yǔ)言戰(zhàn)斗,而是讓 LLM 進(jìn)行大的更改,同時(shí)稍后修復(fù)細(xì)節(jié)。我也在與滾動(dòng)錯(cuò)誤作斗爭(zhēng)。但是滾動(dòng)錯(cuò)誤將由(人類)開(kāi)發(fā)者修復(fù)。LLM 的態(tài)度無(wú)法由 Bolt 控制,因?yàn)樗麄儾粯?gòu)建模型。好的,我們可以輕松地調(diào)整日期位置和行距。
我希望它顯示在一列中,并最終顯示在一個(gè)頁(yè)面上。Bolt 再次完成了這項(xiàng)工作,但在沒(méi)有詢問(wèn)我的情況下更改了其他模板部分,盡管它告訴我它正在這樣做:
圖片
圖片
最后,我們希望博客在首頁(yè)上,舊帖子列表顯示在當(dāng)前帖子的旁邊。在提出這最后一個(gè)要求之后……
圖片
……主要的更改完成了,在寬屏幕上顯示的效果正是我想要的。
圖片
然后我可以恢復(fù)我的樣式更改。
結(jié)論
現(xiàn)在,當(dāng)我在與系統(tǒng)作斗爭(zhēng)時(shí)——它顯然無(wú)法讀取我的想法——它盡了最大努力在保持博客看起來(lái)像它認(rèn)為好看的博客網(wǎng)站的同時(shí),進(jìn)行我的更改。
這就是問(wèn)題的關(guān)鍵;如果本質(zhì)上你想讓外部來(lái)源來(lái)維護(hù)整體外觀,這將對(duì)你有效。如果你想要細(xì)粒度的控制,那么這種方法顯然行不通。我認(rèn)為混合方法會(huì)有效——但這顯然需要更多的訓(xùn)練。
除了滾動(dòng)錯(cuò)誤之外,我認(rèn)為 Bolt 操作 Astro 以完成我的任務(wù)的能力相當(dāng)強(qiáng)大——它完成了繁重的工作。此外,Bolt 的布局允許我查看聊天結(jié)果、代碼和預(yù)覽,這非常好。總的來(lái)說(shuō),這是一個(gè)好的開(kāi)始;現(xiàn)在的問(wèn)題是如何以一致的方式整合人的角色。