我的院子快死了,所以我做了個應用來救它
作者透過AI編碼建立了一個院子護理應用,經歷了反覆修改和AI的侷限,最終重新認識了園藝的樂趣。
當我給Gemini輸入一個冗長的提示後,五分鐘回來時,我看到了兩樣東西:一個在預覽視窗中的功能應用,以及一條關於bug的訊息。“~ Channel is unrecoverably broken and will be disposed!”聽起來很糟糕!但就在下面有一個修復bug的按鈕。這很奇怪:我剛用一條提示讓電腦構建了整個應用,但它卻需要我點選按鈕來修復bug。我照做了,233秒後Gemini回覆說它成功了,用到了“阻塞”和“競爭條件”之類的詞。我完全不明白,但這很 thrilling。這是我第二次或第三次嘗試“氛圍編碼”一個應用,取決於你是否算上那個我從未帶出預覽階段的應用。那個從未完全啟動的專案是一個網頁應用,唯一的任務是檢查本地高階連鎖超市是否正在舉辦年度Peach-o-Rama活動。到目前為止,沒有桃子。但不管你怎麼算,當前的專案更有野心:一個會幫助我管理我那難以控制的院子的應用。八年前我和丈夫搬進這所房子時,我們沒怎麼考慮院子工作。當然,你割草什麼的,但灌木和樹難道不是自己照管自己嗎?我們忽視了院子,直到雜草入侵。房屋周圍和院子邊界的花壇迅速充滿了像聖經中描述的雜草。顯然,“院子”這件事比我們預想的要複雜得多。我們贏了幾場與雜草的戰鬥,但最終輸掉了戰爭,於是請來了景觀設計師。他的一次性訪問讓我們在幾年內基本讓院子自動駕駛。這奏效了,但後來雜草開始重新爬回來,灌木也顯示出痛苦的跡象。今年天氣開始有春意時,我決心弄清楚我們的院子到底發生了什麼。我有一個大致的開始方向,但我想要一些沿途的幫助和一種組織需要做的雜務的方法。為什麼不為此做個應用呢?我儘量讓我的提示描述儘可能詳細,基本上是一份需求清單:幫助我管理一長串院子護理雜務;提出建議;考慮天氣;使用影像識別來幫助診斷植物問題。我把所有內容輸入Google的AI Studio,目標是建立一個Android應用,我可以載入到手機上並帶到室外。你知道,植物生活的地方。我原本以為這需要大約一個小時,然後我可以花一天剩下的時間來記錄院子的狀態,並做任何應用告訴我要做的事。我的計算有點偏差。當然,幾分鐘內我就在預覽視窗中擁有了一個工作應用。它邏輯地組織起來,有管理不同植物區域的部分和一個AI“植物醫生”,我可以上傳手機上的圖片。但它有一個主要的配色問題。出於某種原因,Gemini為我的應用選擇了深色模式,搭配深紫色和磚紅色的強調色。文字難以辨認,而且,它很醜。我建議使用白色背景,搭配淺綠、粉紅和藍色,並提醒它注意人類可讀性。它返回了一個更令人愉悅的方案,並在應用主螢幕頂部顯示了一個熱情的問候:“歡迎回來,園丁!”老實說,我喜歡“園丁”的冒險意味,所以我保留了這一點。我也保留了Gemini想出的基本結構。但我確實做了一些調整,比如整合即時天氣資料,而不是AI想出的一些奇怪的氣候預設。顯然Gemini認為我可以選擇正確的“配置檔案”來匹配當天的天氣條件,它會相應調整澆水建議。當透過API呼叫即時天氣資訊很容易時,這似乎是一個奇怪的選擇,而且這不是我最後一次需要提醒Gemini物理世界和理論世界之間的區別。不然的話,我就儘快把它傳到手機上並開始使用,太興奮於釋出我的第一個應用,以至於沒時間迭代。除了在筆記型電腦螢幕上掃視應用時錯過了一些關鍵的東西。一旦建立了雜務,我就無法編輯它們,也無法將它們安排到特定日期。我可以為單個植物建立配置檔案並按區域分組,但不能將它們繫結到特定任務……或者真正能做任何事情。有單獨的選項卡用於一次性任務和重複任務,但我新增到應用中的每個雜務似乎都忽略了這種排序,並落在了重複選項卡上。這變成了很多繁瑣的來回操作。我請求更新,等待Gemini實現它,刪除手機上的舊版本應用,並用新版本替換。我還會注意到其他不工作的東西,比如一個日期選擇器實際上不允許選擇日期,然後必須回到聊天機器人那裡。除了一個難以控制的院子,我現在還多了一個難以控制的應用。我肯定有個教訓在裡面。另一方面,AI植物醫生從一開始就非常有效。它基本上就是一個“嘿,Gemini,找出這株植物出了什麼問題”的按鈕,我上傳了一張生病的杜鵑花的照片。大約一分鐘後,它輸出了一份關於植物健康(嚴重不良!)、可能導致問題的因素以及我可以一鍵新增到計劃中的行動專案的詳細報告卡。這正是我需要的院子幫助。我們的景觀設計師的“一勞永逸”解決方案是用景觀布和河石覆蓋花壇。他說,這將長期解決雜草問題,現有植物也會沒事。另外,如果現金支付,他還提供折扣。於是就成了。現在,幾年後,事情明顯不對勁。前門附近一株灌木的葉子變黃了,蒼蠅不斷圍著它嗡嗡叫。玫瑰叢變得細長,開花稀疏。Gemini很快將矛頭指向了景觀設計師推薦的布料和石頭。它說,布料在窒息根系系統,同時也在使土壤乾燥,因為多年後布料可能已被泥土堵塞。除此之外,被太陽曬熱的石頭在熱天從上方烘烤根部。難怪我們的院子看起來一團糟;實際上,任何植物還活著都是個奇蹟。那時,時間已晚,無法開始“杜鵑花救援行動”。在來回製作應用之後,我浪費了一個下午的好天氣,在聊天視窗中輸入提示。每次我按回車讓Gemini去執行新的編碼任務時,我肯定在消耗相當於微波爐晚餐的電量,在某地如斯波坎之外的資料中心。這種諷刺對我來說並不陌生。儘管我的應用仍然不完美,我第二天擱置了功能請求,決定按照Gemini博士對杜鵑花的緊急建議行動。我花了一個汗流浹背的下午,耳機裡聽著播客,耙開河石,剪掉景觀布,並修剪了灌木的一些細枝。之後,我轉向另一個岩石花壇,這個花壇上覆蓋著開始在布料上生長的雜草。熱門提示:不要在院子裡放一堆景觀布。在烈日下這工作很累人,一旦我接近入侵院子的多刺喜馬拉雅黑莓藤蔓,咒罵聲就開始飛揚。但這是八年前我不知道的院子工作的秘密:它極其令人滿足。當你把工具伸到大雜草下面,連根拔起整個東西時的感覺?或者當你把鏟子伸到黑莓叢下,把它從地上扯出來,送回地獄?沒有比這更好的了。除草很糟糕,但也會上癮。一旦開始,我總是很容易說服自己再待二十分鐘,儘管本當收工了。我最終收工了,開啟我的應用,勾掉了幾個完成的院子雜務。在院子裡花了幾個小時,literally在雜草中之後,我頭腦裡有了一個新的功能請求清單。我希望在恢復植物時得到Gemini的持續幫助,而不僅僅是一次性診斷。而且,儘管按區域組織我的院子吸引我的A型性格,但我不確定它對我有什麼實際用處。我在照顧一個小城市-郊區的後院,而不是中央公園。這個應用本來可以只是一個Gemini聊天和一個Google Keep待辦列表?有可能。我不認為我的“園藝”應用會進入Play商店,但製作它已經很有教育意義。很難傳達看著電腦將你的文字提示轉化為一個功能完整的軟體是多麼瘋狂——有點像“告訴別人你的夢”的情形。但你需要有一個非常清晰的願景,明確你想要你的應用解決的問題。如果我在開始觸發提示之前多做一些前期工作來專注於我的需求,我本可以省去很多來回。我的氛圍編碼冒險也說明了一點,我邏輯上知道但沒有完全理解:AI不知道真實世界是什麼。它毫不猶豫地將黑色文字放在深紫色背景上,因為可讀性對計算機來說不是問題。它試圖讓我對通用而非即時的天氣資訊感興趣,因為對計算機來說即時天氣算什麼?甚至在我處理“Peach-o-Rama來了嗎?”應用時,Gemini試圖傳遞一個版本,這個版本會假裝檢查雜貨店的網站和社交媒體渠道,但實際上只是將當天日期與Peach-o-Rama通常在7月中旬開始的事實進行交叉引用。我不得不堅持說,Peach-o-Rama是否真的發生很重要。我還沒有放棄院子應用,但正確的版本可能比我開始時簡單得多。至於從Gemini那裡得到的建議,看來AI是準確的。自從我把岩石和布料從杜鵑花上拉開才幾天,但我已經看到一根枝條上長出了新葉。也許我的院子還有生機。