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