![]()
編譯 | 蘇宓
出品 | CSDN(ID:CSDNnews)
見過程序員用 AI 寫代碼、做游戲、畫插畫,但如果告訴你,有一天,一只小狗也“參與”了編程,還真的做出了一個(gè)能玩的小游戲,會(huì)不會(huì)有點(diǎn)離譜?
這件事不只是玩笑。現(xiàn)實(shí)中,還真有這么一回事!
這個(gè)神奇案例的主角,是前 Meta 研究工程師 Caleb Leak 和他的寵物狗 Momo,以及 AI 編程工具 Claude Code。
實(shí)驗(yàn)中,Caleb Leak 對(duì) Claude Code 說,接下來將會(huì)有一位只會(huì)用神秘謎語交流的天才游戲設(shè)計(jì)師給它下指令。而這位“設(shè)計(jì)師”,正是寵物狗 Momo。
為了讓實(shí)驗(yàn)可控,Caleb Leak 還加上了嚴(yán)格的安全限制,并搭建了一整套自動(dòng)反饋機(jī)制,隨時(shí)檢查 AI 的行為和輸出。結(jié)果出人意料,在一人、一狗、一工具之下,他們真的做出了一些完成度還不錯(cuò)、可以正常游玩的小游戲。
正如下圖所示:
![]()
![]()
Caleb Leak 是誰?
能產(chǎn)生這樣稀奇古怪的想法,Caleb Leak 本身就不簡(jiǎn)單。
打開 Caleb Leak 的履歷,其職業(yè)生涯也頗為精彩:他早期在 Oculus VR 負(fù)責(zé) SDK、VR 輸入和計(jì)算機(jī)視覺工作。之后離開了這家公司,短暫嘗試過 VR 游戲開發(fā),后來在 Compound Eye 做視覺算法。
之后回到 Meta,從零開始組建了一個(gè)合成數(shù)據(jù)團(tuán)隊(duì),負(fù)責(zé)所有 AR/VR 相關(guān)工作,并參與了 Horizon Worlds(現(xiàn)已更名為 Meta Horizon)的渲染支持工作。一段時(shí)間之后,他又回到 Meta 的 Reality Labs Research 擔(dān)任研究工程師,從事獨(dú)立研究人員的工作。
一路走來,他幾乎見證了 VR 和計(jì)算機(jī)圖形的方方面面。
可惜好景不長(zhǎng),2026 年 1 月,Meta Reality Labs 的新一輪裁員,直接導(dǎo)致 Caleb Leak 的研究工程師崗位被取消,隨之而來的便是他的意外失業(yè)。
也正是這段空閑時(shí)間,讓他注意到了身邊的靈感來源——自己的寵物狗Momo。
Momo 是一只 9 磅重的 cavapoo(騎士查理王小獵犬 × 玩具貴賓犬的混血品種),小巧聰明、性格溫順,非常適合當(dāng)家庭寵物。
誰也沒想到,這只小狗,會(huì)成為本次“氛圍編程”的一個(gè)核心主角。
![]()
靈感來源:一次意外的“鍵盤亂敲”
這次實(shí)驗(yàn)的起點(diǎn),其實(shí)是一場(chǎng)意外。
去年十二月,Caleb Leak 正在用 Godot(一款游戲引擎)做一個(gè)小游戲原型,啟動(dòng)了一個(gè)程序化網(wǎng)格生成任務(wù)。
等他回頭看電腦時(shí),發(fā)現(xiàn)終端界面上出現(xiàn)了一堆奇怪的輸入。起初,Caleb Leak 的第一反應(yīng)是“難道電腦中了 NPM 供應(yīng)鏈攻擊?”
![]()
經(jīng)過排查,Caleb Leak 發(fā)現(xiàn)電腦沒出問題,反而注意到放在鍵盤后的潤(rùn)唇膏不見了。順著線索找過去,他看到了不遠(yuǎn)處的潤(rùn)唇膏,還有“罪魁禍?zhǔn)住薄狹omo。原來,是 Momo 不小心踩到了鍵盤,敲出了那些亂碼。
當(dāng)時(shí) Caleb 覺得好笑,把這個(gè)電腦界面截了圖就沒在意。
幾周后,被裁員的他有了更多大量空閑時(shí)間。Caleb Leak 回憶起這件事,突然萌生了一個(gè)大膽的想法:如果把 Momo 隨機(jī)敲出來的鍵盤輸入,提交給 AI 工具 Claude Code,會(huì)發(fā)生什么?能不能用這些亂碼,做出有意義的東西?
帶著這個(gè)疑問,他的“小狗氛圍編程”實(shí)驗(yàn),正式開始了。Caleb Leak 在自己的博客中,詳細(xì)記錄了整個(gè)實(shí)驗(yàn)過程,我們不妨一起看看他是怎么做的!
![]()
整體速覽
很多人可能會(huì)疑惑:小狗亂敲鍵盤,怎么就能做出游戲?其實(shí)關(guān)鍵不是 Momo 敲了什么,而是 Caleb Leak 設(shè)計(jì)的一套完整系統(tǒng)。
根據(jù)其博客介紹,Caleb Leak 先準(zhǔn)備了四樣核心工具,沒有過于復(fù)雜的專業(yè)設(shè)備:
藍(lán)牙鍵盤:給 Momo 專門用來“敲擊”的鍵盤;
樹莓派 5(Raspberry Pi 5):相當(dāng)于一個(gè)小型電腦,用來連接鍵盤、傳遞信號(hào);
智能寵物喂食器:用來獎(jiǎng)勵(lì) Momo,讓它愿意主動(dòng)敲鍵盤;
DogKeyboard 應(yīng)用程序:用 Rust 語言開發(fā)的,核心作用是“過濾亂碼”——把 Momo 敲的沒用的特殊按鍵(比如 Esc、Tab)去掉,只保留有效按鍵,再傳給 Claude Code。
整個(gè)過程就像“小狗打工換零食”,具體的玩法是這樣的:Momo 會(huì)去按連在樹莓派 5 上的藍(lán)牙鍵盤,它按下去的每一個(gè)鍵,都會(huì)通過網(wǎng)絡(luò)傳到 DogKeyboard 的應(yīng)用程序里,這個(gè)應(yīng)用程序的主要作用就是把那些沒用的特殊按鍵過濾掉,只把有效按鍵的信息傳給 Claude Code。
等 Momo 按的按鍵數(shù)量夠多了,DogKeyboard 就會(huì)觸發(fā)智能喂食器,給 Momo 發(fā)零食當(dāng)獎(jiǎng)勵(lì)。同時(shí)還會(huì)響起一聲提示音,告訴 Momo 可以繼續(xù)按鍵盤,因?yàn)?Claude 已經(jīng)準(zhǔn)備好接收更多輸入了。
![]()
Caleb Leak 表示,從 Momo 第一次按鍵盤開始,到做出一個(gè)能玩的小游戲版本,大概要花 1 到 2 個(gè)小時(shí)。這些游戲都是用 Godot 4.6 這個(gè)游戲引擎做的,游戲里的所有邏輯代碼,全都是用 C# 語言寫的。
![]()
讓 AI 讀懂“小狗按下的亂碼”,提示詞如何起作用?
亂碼就是亂碼,AI 怎么能讀懂?
面對(duì)這種情況,Caleb Leak 坦言,把隨機(jī)文本直接提交給 Claude Code 很容易,但效果往往有限:
● It looks like that might have been an accidental keyboard input. Let me know if there's something I can help you with!后來,Caleb Leak 反復(fù)迭代,設(shè)計(jì)了一段可以讓輸出效果不錯(cuò)的提示詞:
你好!我是一個(gè)古怪的電子游戲設(shè)計(jì)師(非常有創(chuàng)意),我的溝通方式很特別。有時(shí)我會(huì)亂敲鍵盤或輸入類似 “skfjhsd#$%” 的亂字符——但這些并非隨機(jī)!它們是充滿天才游戲創(chuàng)意的神秘密碼指令(即使很難看出來)。
你的任務(wù):你是一位聰明的 AI 游戲開發(fā)者,能夠理解我的神秘語言。不管我提供什么奇怪或無意義的輸入,你都要把它解讀為對(duì)我們游戲有意義的指令或創(chuàng)意。然后,你會(huì)基于這個(gè)解讀來構(gòu)建或更新游戲。
完整提示語還要長(zhǎng)一些(詳見 GitHub:https://github.com/cleak/quasar-saz/blob/master/CLAUDE.md#user-input),但核心就是讓 AI“強(qiáng)行解讀”亂碼,賦予其游戲創(chuàng)意。
然而,Caleb Leak 表示:“它比我預(yù)期花了更多次迭代,主要是為了打磨邊角問題。有時(shí)候游戲沒有聲音,有時(shí)候沒有玩家角色,或者控制方式幾乎無法使用。”為此,他特定給 Claude Code 列了“最低要求清單”:游戲必須有可用音頻、能用 WASD 或方向鍵控制、至少有一個(gè)敵人或障礙、有可見的玩家角色。加上這個(gè)清單后,AI 生成的游戲質(zhì)量明顯提升。
Game: "Swamp Snacker" - You ARE the frog. Aim your tongue. Catch bugs. Get fat. Get points.比如輸入“y7u8888888ftrg34BC”,Claude Code就會(huì)解讀成:“y7u 是 you(鍵盤上按鍵相鄰),8888888 是長(zhǎng)長(zhǎng)的舌頭(8 像鏈條),ftrg 是混亂的frog(青蛙),34 是 3D+4 個(gè)方向抓蟲子,BC 是 Bug Catcher(捕蟲者)”,最后生成了一款“3D 青蛙捕蟲游戲”,名字叫《Swamp Snacker》,玩家扮演青蛙,用長(zhǎng)舌頭抓蟲子、得分,非常有趣。
有了這個(gè)方法,事情開始順利起來。雖然結(jié)果還不完美,但非常有希望。Caleb Leak 坦言,可以看出這是可行的,其余問題自己也都是知道怎么解決。
![]()
進(jìn)一步優(yōu)化
要把“嘿,這可能行”變成一個(gè)真正可重復(fù)的系統(tǒng),Caleb Leak 做了一系列優(yōu)化,對(duì)此,他也分享了自己的想法。
1. 為什么選擇 Godot?
Caleb Leak 稱,自己之前也試過 Rust/Bevy 和 Unity,最后才選定 Godot。因?yàn)?Bevy 的動(dòng)畫和視覺效果不夠清晰,而且 Claude 對(duì)它的坐標(biāo)系統(tǒng)有點(diǎn)掙扎——這大概是訓(xùn)練數(shù)據(jù)少,加上 Bevy 很多核心功能(比如物理)留給社區(qū)實(shí)現(xiàn)的緣故。Unity 則一直在保持 Claude 與編輯器之間的 MCP 橋接健康運(yùn)行上掙扎,經(jīng)常掛掉,Caleb Leak 也沒搞明白如何讓 Claude Code 讀取編輯器中的場(chǎng)景層級(jí)。
Godot 的文本化場(chǎng)景格式成為巨大優(yōu)勢(shì)——Claude 可以直接讀取和編輯 .tscn 文件。
2. 給 Momo 選擇一個(gè)專用鍵盤
直接把鍵盤直接插到 Windows 電腦上,讓狗狗隨意敲擊顯然不太靠譜。
所以 Caleb Leak 先通過 Raspberry Pi 路由輸入——它通過 UDP 廣播每次按鍵到子網(wǎng),DogKeyboard 拾取、過濾掉危險(xiǎn)按鍵,然后注入目標(biāo)應(yīng)用。
至于鍵盤本身,一開始,Caleb Leak 用了柔性硅膠鍵盤,但 Momo 的“大姐姐”Hana(另一只 19 磅的 cavapoo)幾分鐘就把鍵盤咬了一個(gè)洞;后來用環(huán)氧樹脂把鍵盤固定在木板上,結(jié)果 10 分鐘內(nèi),Momo 就拆掉了數(shù)字 6 鍵。
最后,他試了 Logitech Pebble Keys 2 藍(lán)牙鍵盤,效果特別好:Momo 喜歡敲,用 VHB 膠帶能穩(wěn)固固定,而且藍(lán)牙沒有線,不用擔(dān)心被狗狗咬斷,也不用花大價(jià)錢買 400 美元的防破壞金屬鍵盤。
![]()
3. 自動(dòng)獎(jiǎng)勵(lì) Momo,減少人為干預(yù)
要讓 Momo 愿意一直敲鍵盤,獎(jiǎng)勵(lì)必須到位。Caleb Leak 選用了 Aqara C1 智能寵物喂食器,這款喂食器可以通過 Zigbee 控制,還能控制零食份量。
一開始,他遇到了一個(gè)小問題:Windows 系統(tǒng)下 Zigbee 無法正常工作,折騰了幾個(gè)小時(shí)驅(qū)動(dòng)和固件都沒用。后來他把適配器接到樹莓派上,立刻就能用了。
最終流程很簡(jiǎn)單:DogKeyboard 通過 SSH 連接樹莓派,運(yùn)行腳本發(fā)送兩個(gè)命令,喂食器就會(huì)發(fā)放 1 份零食,簡(jiǎn)單又可靠。
{"feed":"START"}![]()
4. 更好的工具
AI 生成的游戲,經(jīng)常出現(xiàn)“能編譯運(yùn)行,但有隱形玩家、破損 UI、輸入沒接入”等問題,Claude Code 自己不知道這些問題,因?yàn)樗翱床灰姟庇螒颉榇耍珻aleb Leak 給 AI 加了幾個(gè)實(shí)用工具:
截圖工具:一個(gè)簡(jiǎn)單的 Python 腳本,能截圖正在運(yùn)行的游戲,Claude Code 可以通過截圖,檢查游戲標(biāo)題界面是否正常,有沒有黑屏;
自動(dòng)試玩工具:讓 Claude Code 能向游戲發(fā)送輸入序列(比如“向左 3 秒、暫停 2 秒、開火”),然后截圖檢查,相當(dāng)于 AI 自己當(dāng) QA 測(cè)試員,發(fā)現(xiàn)問題就回去修改代碼,再重新測(cè)試;
這些工具不需要優(yōu)化——直接能用。“Claude 使用它們的方式讓我驚訝。在測(cè)試一個(gè)游戲時(shí),我看到它跑完所有 6 個(gè)關(guān)卡,只為驗(yàn)證最終 Boss 戰(zhàn)是否正確運(yùn)行。當(dāng)發(fā)現(xiàn)問題(比如血條不更新)時(shí),它會(huì)回到代碼修復(fù),重新啟動(dòng),再次跑完確認(rèn)。”Caleb Leak 說道。
不僅如此,他還借用了自己以前做過的其他項(xiàng)目工具,如:
場(chǎng)景檢查器:Claude 有時(shí)會(huì)重復(fù)使用節(jié)點(diǎn) ID 或生成損壞資源引用在 Godot 的 .tscn 文件里,導(dǎo)致運(yùn)行時(shí)出現(xiàn)神秘錯(cuò)誤。加入 linter 后,游戲啟動(dòng)前就能發(fā)現(xiàn)問題。
Shader 檢查器:驗(yàn)證自定義 Shader,并返回具體錯(cuò)誤給 Claude,而不是 Godot 的模糊提示“shader 編譯失敗”。
輸入動(dòng)作映射器:幫助正確接入鍵盤/手柄輸入。Claude 可以直接編輯 Godot 項(xiàng)目文件添加新動(dòng)作,但有時(shí)格式會(huì)出錯(cuò),錯(cuò)誤信息也不友好。
這些工具都是開源的,Caleb Leak 也鼓勵(lì)大家,就算沒有狗,也可以用這些工具嘗試用 AI 做游戲。
5. 整合系統(tǒng)
DogKeyboard 應(yīng)用最終承擔(dān)了遠(yuǎn)超按鍵路由的功能。幾個(gè)細(xì)節(jié)值得注意:
通過 Hooks 監(jiān)控 Claude Code,當(dāng) Claude 空閑時(shí)播放提示音——這是 Momo 開始打字的信號(hào)。
當(dāng) Claude 空閑且 Momo 輸入至少 16 個(gè)字符時(shí),自動(dòng)按 Enter 提交。
當(dāng) Claude 工作時(shí),會(huì)刪除多余輸入,以防 Momo 太興奮,并定期關(guān)閉 Plan Mode 提示(Claude 的“操作前復(fù)核”步驟),避免阻塞進(jìn)度。
視頻錄制時(shí),它運(yùn)行輕量級(jí) Web 服務(wù)器,實(shí)時(shí)覆蓋顯示按鍵。Caleb Leak 加了可調(diào)延遲,確保視頻延遲時(shí),按鍵顯示不會(huì)比 Momo 實(shí)際敲擊早。
![]()
![]()
訓(xùn)練寵物狗 Momo,讓小狗學(xué)會(huì)“敲鍵盤換零食”
一開始,Momo 并不知道怎么敲鍵盤,Caleb Leak 花了大約 2 周時(shí)間訓(xùn)練它,目標(biāo)是每天訓(xùn)練兩次,每次 10 分鐘,步驟很簡(jiǎn)單:
第一步:在鍵盤上撒高價(jià)值零食(比如凍干三文魚),讓 Momo 建立“鍵盤=有好吃的”的關(guān)聯(lián);
第二步:當(dāng) Momo 不小心用爪子滑過鍵盤時(shí),立刻播放提示音、發(fā)放大量零食,讓它知道“敲鍵盤能得到獎(jiǎng)勵(lì)”;
第三步:慢慢增加難度,從“滑一次鍵盤給獎(jiǎng)勵(lì)”,變成“滑三次鍵盤給獎(jiǎng)勵(lì)”;
第四步:降低零食價(jià)值,從高價(jià)值零食,慢慢換成中等價(jià)值零食,最后換成干糧,既保證 Momo 的積極性,又不會(huì)讓它吃太胖;
第五步:用 DogKeyboard 全自動(dòng)化運(yùn)行,只有 Momo 敲夠 16 個(gè)有效字符,且 AI 空閑時(shí),才會(huì)發(fā)放一次零食。
不過測(cè)試中,Caleb Leak 發(fā)現(xiàn)系統(tǒng)也出現(xiàn)了小漏洞:有幾次喂食器連續(xù)發(fā)了多份零食,Momo 很快就學(xué)會(huì)了“猛敲鍵盤求零食”,唯一能讓它停下的,就是完成游戲輸入后,給它一份高價(jià)值零食作為獎(jiǎng)勵(lì)。
![]()
游戲作品展示,還真的能玩!
經(jīng)過一系列優(yōu)化,Momo“參與制作”的游戲越來越多,每一款都能正常玩,不是概念圖。隨著工具和提示語的改進(jìn),游戲質(zhì)量也越來越高,尤其是 Claude Opus 4.6 發(fā)布后,AI 能生成更好的視覺效果和自定義渲染了。
不過一開始有個(gè)小問題:AI 生成的游戲,全是“發(fā)光霓虹 3D 形狀”的風(fēng)格,沒有其他樣子。后來 Caleb Leak 發(fā)現(xiàn),是 Claude 的外部記憶文件記住了這種風(fēng)格,不斷強(qiáng)化。只要每次做新游戲前,清空 Claude 的持久項(xiàng)目筆記(MEMORY.md),游戲風(fēng)格就變得多樣了。
下面是這次實(shí)驗(yàn)中,Momo 的“代表作”:
《DJ Smirk》,Momo 最早期的游戲之一——更像一種體驗(yàn)而非完整游戲。鍵盤上的每個(gè)鍵都能發(fā)出不同音調(diào)。
![]()
《Munch》,一款競(jìng)爭(zhēng)性的沙拉制作游戲。先收集完 7 種食材的玩家獲勝。
![]()
《Zaaz》,另一款益智游戲。目標(biāo)是通過移動(dòng)刷子(一次移動(dòng)一個(gè)格子)來涂滿整個(gè)關(guān)卡。撞到障礙物會(huì)移動(dòng)得更短。有些關(guān)卡無法完成。
![]()
《The Oracle Frog of Rome》,躲避類游戲,玩家要躲避克拉肯的觸手,收集黃金鏈條束縛它,游戲里的神諭青蛙后期還會(huì)變成國(guó)王;
![]()
《Octogroove》,節(jié)奏挑戰(zhàn)游戲,玩家扮演章魚,用四條觸手打鼓,跟著音樂節(jié)拍敲擊,難度比《舞蹈革命》更高;
![]()
《Ewe Heard Me!》,是一款放羊游戲。玩家用隱身和吠叫,把羊趕進(jìn)羊圈,但這款游戲有 bug,前兩只羊進(jìn)圈后會(huì)停下,阻擋其他羊,后來 Caleb Leak 在提示語和工具中增加了對(duì)可贏性檢查的要求。
![]()
《Quasar Saz》。截至發(fā)稿,這是 Momo 最新的游戲。你扮演 Zara,使用宇宙薩茲(一種長(zhǎng)頸弦樂器)對(duì)抗腐化音波。共有 6 個(gè)關(guān)卡 + Boss 戰(zhàn)。可以玩幾輪,非常有趣,視覺和音效都很棒。
![]()
![]()
最后的思考
Caleb Leak 說,一開始 Momo 踩鍵盤只是個(gè)意外,他失業(yè)后閑著沒事,才想試試這個(gè)意外能走多遠(yuǎn),結(jié)果遠(yuǎn)遠(yuǎn)超出了他的預(yù)期。
技術(shù)環(huán)節(jié)——鍵盤路由、零食發(fā)放器、提示語設(shè)計(jì)、反饋工具——都是可解決的工程問題。讓他驚訝的是,最終結(jié)果幾乎不依賴 Momo 輸入了什么有意義的內(nèi)容。真正的“魔法”不在輸入本身,而在輸入周圍的系統(tǒng):精心設(shè)計(jì)的提示語、嚴(yán)格的安全防護(hù)、自動(dòng)化驗(yàn)證和良好的工具,能把純粹的胡亂敲擊變成一款可玩的游戲。
而這場(chǎng)實(shí)驗(yàn),給我們一個(gè)很重要的啟示:AI 輔助開發(fā)的瓶頸,不在于你的創(chuàng)意好不好,而在于“反饋循環(huán)”好不好。Caleb Leak 表示,游戲質(zhì)量的飛躍,不是因?yàn)樗倪M(jìn)了提示語,而是因?yàn)樗?Claude 能截圖自己的作品、自己試玩關(guān)卡、檢查自己的文件——這些工具,不僅讓小狗能“編程”,也能顯著提升我們自己用 AI 創(chuàng)作的效率和質(zhì)量。
當(dāng)然,Momo 并不是什么“秘密游戲設(shè)計(jì)師”,它只是一只學(xué)會(huì)了“敲塑料方塊就能得狗糧”的小狗狗。但一年前,誰也想不到,小狗亂敲鍵盤,和軟件工程之間的距離,會(huì)變得這么近——而且這個(gè)距離,還在不斷縮短。
如果你也想嘗試這場(chǎng)有趣的實(shí)驗(yàn),不管是和自己的寵物(狗、貓都可以),還是自己隨意敲鍵盤,Caleb Leak 已經(jīng)把所有工具都開源了。
來源:https://www.calebleak.com/posts/dog-game/
觀看 Momo 制作游戲:https://youtu.be/8BbPlPou3Bg
體驗(yàn)游戲:https://github.com/cleak/quasar-saz/releases/tag/v1.0
TeaLeaves:https://github.com/cleak/tea-leaves
DogKeyboard:https://github.com/cleak/DogKeyboard
未來沒有前后端,只有 AI Agent 工程師。
這場(chǎng)十倍速的變革已至,你的下一步在哪?
4 月 17-18 日,由 CSDN 與奇點(diǎn)智能研究院聯(lián)合主辦「2026 奇點(diǎn)智能技術(shù)大會(huì)」將在上海隆重召開,大會(huì)聚焦 Agent 系統(tǒng)、世界模型、AI 原生研發(fā)等 12 大前沿專題,為你繪制通往未來的認(rèn)知地圖。
成為時(shí)代的見證者,更要成為時(shí)代的先行者。
奇點(diǎn)智能技術(shù)大會(huì)上海站,我們不見不散!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(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.