近期 AI 輔助程式碼工具和「氛圍程式設計」(vibe coding)概念的興起,徹底顛覆了整個軟體開發流程。儘管這些工具對願意投入學習的新手程式設計師來說已可使用,但對於幾乎沒有程式設計經驗的人來說,目前要建立一個複雜的 AI 程式碼專案,仍可能被命令列介面(CLI)、整合開發環境(IDE)和終端機操作等技術門檻嚇退。

Meta 最新推出的 AI 專案 Pocket,旨在讓這種氛圍程式設計像在社群媒體上發文一樣即時且易於使用。Pocket 於上週五(8 月 21 日)在美國推出,此前 Meta 已於三月收購了現已解散的氛圍程式設計應用程式 Gizmo 的團隊。

這款行動應用程式讓使用者只需在文字框中輸入提示詞,就能創建功能齊全的互動式「小工具」,甚至沒有查看程式碼的選項。這些小工具隨後可以像 TikTok 一樣,在無盡的捲動頁面中與世界分享,並具備按讚、評論、轉發等所有社群媒體上癮的特徵。

在試玩 Pocket 大半週後,我發現自己沉迷於透過與大型語言模型(LLM)聊天,快速建立功能完善、功能相對豐富的遊戲原型。然而,所有這些時間和 AI 努力的結果,卻是幾個互動式玩具,它們實際上被困在 Meta 新的封閉生態系中,沒有任何真正的方法將它們轉化為獨立的產品。

要開始使用 Pocket 創作,你只需在一個標示著「描述一個想法…」的大而友善的文字框中輸入內容。經過幾次失敗的嘗試後,我的第一個真正的 Pocket 專案集中在一個遊戲概念上:點擊並按住手機螢幕來旋轉彈弓,然後放開手指,以切線方向射擊逼近的敵人大軍。

我嘗試在我的基本「引擎」提示詞中盡可能詳細地描述給 Pocket:「螢幕中央有一個男人的俯視圖。當你點擊並按住時,他會在他周圍以圓圈旋轉一個彈弓。當你抬起手指時,彈弓會垂直於彈弓發射一個球。按住的時間越長,球射出的速度越快。」

提交提示詞並等待了將近兩分鐘後,我驚訝於 Pocket 如此迅速且準確地符合我的整體構想。對於像我這樣一個久未寫程式的新手來說,原本需要數小時與物理模型和程式碼參考奮鬥的時間,現在只需最少的努力,就已經處於一個功能齊全、隨時可測試的狀態。Pocket 甚至添加了一些我沒有要求的可爆炸乾草捆目標,以及像分數計數器和螢幕上能量計等邊緣 UI 功能,我只能假設這些是模型訓練資料建議的受歡迎的補充。

有了最初的原型,我投入了數小時的氛圍程式碼調整。透過超過 100 個提示詞,我開始將基本的「彈弓射擊」控制概念精煉成更像一個完整的遊戲。我要求機器人從螢幕邊緣進攻,然後要求不同類型的機器人以增加多樣性。我要求一個彈藥系統,然後又要求移除它,改為設定一個最小「彈弓速度」來有效防止連射。我還要求添加物品、玩家周圍的電圍欄,以及對計分系統、音效、彈弓速度和敵人模式進行無數大大小小的編輯。

當那個專案達到不錯的狀態時,我發現自己渴望繼續使用 AI 進行創作。我幾乎立刻開始了一個簡單的街機風格雜耍遊戲,其中有彩色的球,你必須透過用拇指控制的擋板將它們彈起以保持在空中。在接下來的幾個小時裡,我嘗試添加了一系列物品、一個複雜的分數乘數系統,以及一套遊戲結束時的圖表來追蹤進度。

此時,我模糊地記得在攻讀大學電腦科學學位時,曾努力讓簡單的電腦程式做任何有用的事情。相比之下,用 Pocket 製作遊戲的過程感覺有點神奇。我所要做的就是想出一個我想測試的新功能,然後在我輸入後大約一分鐘,Pocket 就會準備好一個包含該功能的遊戲版本。

大多數時候,提示詞的結果正是我的期望,無需額外調整。少數時候,我需要透過幾個額外的提示詞來澄清我的意思,或者調整在理論上比實踐中效果更好的功能的外觀或行為。只有極少數的提示詞導致 Pocket 完全忽略我的請求或完全破壞遊戲,在這種情況下,只需輕輕一按即可恢復到上一個版本,讓我重新嘗試。

有時我會嘗試在提示詞中相對詳細,例如精確說明我希望分數乘數如何運作,或者調整射擊力量的百分比閾值。其他時候,我會讓我的提示詞相對簡短和模糊,例如「為小球添加碰撞偵測」或「為失球音效添加一點衝擊力」,然後發現 Pocket 以驚人的敏銳度解釋了我的意思。

Pocket 還設有一個「想法」(Ideas)分頁,可以建議在你甚至還沒想到之前就添加整個功能集的提示詞。這些想法的成功率參半,許多對我正在製作的遊戲毫無意義,或者複製了遊戲中已有的功能(有時甚至更糟)。但 Pocket 的一些想法,例如添加關鍵的呈現效果或我從未考慮過的有趣新玩法,讓我對我在整個過程中究竟有多必要產生了一點存在危機。

僅透過 AI 提示詞創建簡單遊戲也有其缺點。例如,將 UI 元素移動幾個像素這樣簡單的事情,需要完整的提示詞和大約一分鐘的等待時間,因為 AI 會完全重建應用程式。在手動編碼的遊戲中,相同的調整只需幾秒鐘,而且不需要在幕後消耗大量 AI 運算資源。

測試 Pocket 也可能有點令人頭痛。由於無法設定記憶追蹤或設置執行中斷點,我有時不得不依靠仔細觀察和螢幕顯示來弄清楚為什麼某些東西沒有按照我的意願運作。即使如此,我總有一種揮之不去的懷疑,認為可能存在一些我只是沒有注意到的隱藏錯誤或奇怪的邊緣情況。由於無法查看程式碼,我不會信任它足以用於任何比簡單玩具專案更複雜的東西。

Pocket 生成的小工具在視覺和感覺上也有點「最低公分母」的傾向。系統預設使用表情符號或基本形狀作為許多圖形元素,而 WebAudio 音效則傾向於「嗶嗶聲和嘟嘟聲」的範圍。你可以添加自己錄製的聲音,或者要求 Pocket 根據 AI 提示詞生成圖形來稍微解決這個問題,但它生成的一切都帶有的基本「通用」感覺很難克服。

儘管有這些小問題,我發現自己依賴於 Pocket 的對話式「要求功能並測試結果」循環。讓 AI 編碼代理在幕後完成所有繁重工作,而你只需思考想法,無需擔心物理引擎、程式碼樹或語法錯誤的變數,這是一種誘人的刺激。我會發現自己即使在 Pocket 實施我上一個想法時,也在腦力激盪新的遊戲設計想法,渴望盡快將我的概念輸入到遊戲製作機器中。

而且整個過程足夠簡單和流暢,我可以在背景播放棒球比賽時,只用一半的注意力就能完成所有操作。

儘管 Pocket 的遊戲創建過程感覺很神奇,但它讓你與世界分享這些遊戲的方式卻恰恰相反。讓其他人體驗你的 Pocket 創作的唯一方法是將其作為貼文分享,將你的互動式小工具與簡短的說明和封面照片配對。

你可以在任何通常分享連結的地方分享該貼文的連結,而追蹤連結的人甚至可以在瀏覽器中玩你的小工具的 HTML5「預覽」版本,而無需下載 Pocket 應用程式。這甚至可以在桌面瀏覽器上運作,只要你的應用程式不依賴多點觸控或傾斜感應等行動裝置專用的輸入即可。