见过程序员用 AI 写代码、做游戏、画插画,但如果告诉你,有一天,一只小狗也“参与”了编程,还真的做出了一个能玩的小游戏,会不会有点离谱?
这件事不只是玩笑。现实中,还真有这么一回事!
这个神奇案例的主角,是前 Meta 研究工程师 Caleb Leak 和他的宠物狗 Momo,以及 AI 编程工具 Claude Code。
实验中,Caleb Leak 对 Claude Code 说,接下来将会有一位只会用神秘谜语交流的天才游戏设计师给它下指令。而这位“设计师”,正是宠物狗 Momo。
为了让实验可控,Caleb Leak 还加上了严格的安全限制,并搭建了一整套自动反馈机制,随时检查 AI 的行为和输出。结果出人意料,在一人、一狗、一工具之下,他们真的做出了一些完成度还不错、可以正常游玩的小游戏。
正如下图所示:
Caleb Leak 是谁?
能产生这样稀奇古怪的想法,Caleb Leak 本身就不简单。
打开 Caleb Leak 的履历,其职业生涯也颇为精彩:他早期在 Oculus VR 负责 SDK、VR 输入和计算机视觉工作。之后离开了这家公司,短暂尝试过 VR 游戏开发,后来在 Compound Eye 做视觉算法。
之后回到 Meta,从零开始组建了一个合成数据团队,负责所有 AR/VR 相关工作,并参与了 Horizon Worlds(现已更名为 Meta Horizon)的渲染支持工作。一段时间之后,他又回到 Meta 的 Reality Labs Research 担任研究工程师,从事独立研究人员的工作。
一路走来,他几乎见证了 VR 和计算机图形的方方面面。
可惜好景不长,2026 年 1 月,Meta Reality Labs 的新一轮裁员,直接导致 Caleb Leak 的研究工程师岗位被取消,随之而来的便是他的意外失业。
也正是这段空闲时间,让他注意到了身边的灵感来源——自己的宠物狗Momo。
Momo 是一只 9 磅重的 cavapoo(骑士查理王小猎犬 × 玩具贵宾犬的混血品种),小巧聪明、性格温顺,非常适合当家庭宠物。
谁也没想到,这只小狗,会成为本次“氛围编程”的一个核心主角。
灵感来源:一次意外的“键盘乱敲”
这次实验的起点,其实是一场意外。
去年十二月,Caleb Leak 正在用 Godot(一款游戏引擎)做一个小游戏原型,启动了一个程序化网格生成任务。
等他回头看电脑时,发现终端界面上出现了一堆奇怪的输入。起初,Caleb Leak 的第一反应是“难道电脑中了 NPM 供应链攻击?”

经过排查,Caleb Leak 发现电脑没出问题,反而注意到放在键盘后的润唇膏不见了。顺着线索找过去,他看到了不远处的润唇膏,还有“罪魁祸首”——Momo。原来,是 Momo 不小心踩到了键盘,敲出了那些乱码。
当时 Caleb 觉得好笑,把这个电脑界面截了图就没在意。
几周后,被裁员的他有了更多大量空闲时间。Caleb Leak 回忆起这件事,突然萌生了一个大胆的想法:如果把 Momo 随机敲出来的键盘输入,提交给 AI 工具 Claude Code,会发生什么?能不能用这些乱码,做出有意义的东西?
带着这个疑问,他的“小狗氛围编程”实验,正式开始了。Caleb Leak 在自己的博客中,详细记录了整个实验过程,我们不妨一起看看他是怎么做的!
整体速览
很多人可能会疑惑:小狗乱敲键盘,怎么就能做出游戏?其实关键不是 Momo 敲了什么,而是 Caleb Leak 设计的一套完整系统。
根据其博客介绍,Caleb Leak 先准备了四样核心工具,没有过于复杂的专业设备:
蓝牙键盘:给 Momo 专门用来“敲击”的键盘;
树莓派 5(Raspberry Pi 5):相当于一个小型电脑,用来连接键盘、传递信号;
智能宠物喂食器:用来奖励 Momo,让它愿意主动敲键盘;
DogKeyboard 应用程序:用 Rust 语言开发的,核心作用是“过滤乱码”——把 Momo 敲的没用的特殊按键(比如 Esc、Tab)去掉,只保留有效按键,再传给 Claude Code。
整个过程就像“小狗打工换零食”,具体的玩法是这样的:Momo 会去按连在树莓派 5 上的蓝牙键盘,它按下去的每一个键,都会通过网络传到 DogKeyboard 的应用程序里,这个应用程序的主要作用就是把那些没用的特殊按键过滤掉,只把有效按键的信息传给 Claude Code。
等 Momo 按的按键数量够多了,DogKeyboard 就会触发智能喂食器,给 Momo 发零食当奖励。同时还会响起一声提示音,告诉 Momo 可以继续按键盘,因为 Claude 已经准备好接收更多输入了。

Caleb Leak 表示,从 Momo 第一次按键盘开始,到做出一个能玩的小游戏版本,大概要花 1 到 2 个小时。这些游戏都是用 Godot 4.6 这个游戏引擎做的,游戏里的所有逻辑代码,全都是用 C# 语言写的。
让 AI 读懂“小狗按下的乱码”,提示词如何起作用?
乱码就是乱码,AI 怎么能读懂?
面对这种情况,Caleb Leak 坦言,把随机文本直接提交给 Claude Code 很容易,但效果往往有限:
- > y7u8888888ftrg34BC
- ● 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 反复迭代,设计了一段可以让输出效果不错的提示词:
你好!我是一个古怪的电子游戏设计师(非常有创意),我的沟通方式很特别。有时我会乱敲键盘或输入类似 “skfjhsd#$%” 的乱字符——但这些并非随机!它们是充满天才游戏创意的神秘密码指令(即使很难看出来)。
你的任务:你是一位聪明的 AI 游戏开发者,能够理解我的神秘语言。不管我提供什么奇怪或无意义的输入,你都要把它解读为对我们游戏有意义的指令或创意。然后,你会基于这个解读来构建或更新游戏。
完整提示语还要长一些(详见 GitHub:https://github.com/cleak/quasar-saz/blob/master/CLAUDE.md#user-input),但核心就是让 AI“强行解读”乱码,赋予其游戏创意。
然而,Caleb Leak 表示:“它比我预期花了更多次迭代,主要是为了打磨边角问题。有时候游戏没有声音,有时候没有玩家角色,或者控制方式几乎无法使用。”为此,他特定给 Claude Code 列了“最低要求清单”:游戏必须有可用音频、能用 WASD 或方向键控制、至少有一个敌人或障碍、有可见的玩家角色。加上这个清单后,AI 生成的游戏质量明显提升。
- > y7u8888888ftrg34BC
- ● Alright, let me decode this masterpiece of cryptic genius...
- "y7u8888888ftrg34BC"
- - "y7u" = "you" (keys are adjacent on keyboard - Y, 7, U)
- - "8888888" = seven 8s = a loooong extending thing... a TONGUE! (8 looks like links in a chain stretching out)
- - "ftrg" = scrambled FROG (f, r, g are all there, t is the tongue sound!)
- - "34" = 3D + 4 directions of bug catching
- - "BC" = Bug Catcher!
- You want a 3D FROG BUG-CATCHING GAME! A charismatic frog with a stretchy tongue snatching bugs in a swamp. I love it.
- Game: "Swamp Snacker" - You ARE the frog. Aim your tongue. Catch bugs. Get fat. Get points.
比如输入“y7u8888888ftrg34BC”,Claude Code就会解读成:“y7u 是 you(键盘上按键相邻),8888888 是长长的舌头(8 像链条),ftrg 是混乱的frog(青蛙),34 是 3D+4 个方向抓虫子,BC 是 Bug Catcher(捕虫者)”,最后生成了一款“3D 青蛙捕虫游戏”,名字叫《Swamp Snacker》,玩家扮演青蛙,用长舌头抓虫子、得分,非常有趣。
有了这个方法,事情开始顺利起来。虽然结果还不完美,但非常有希望。Caleb Leak 坦言,可以看出这是可行的,其余问题自己也都是知道怎么解决。
进一步优化
要把“嘿,这可能行”变成一个真正可重复的系统,Caleb Leak 做了一系列优化,对此,他也分享了自己的想法。
1. 为什么选择 Godot?
Caleb Leak 称,自己之前也试过 Rust/Bevy 和 Unity,最后才选定 Godot。因为 Bevy 的动画和视觉效果不够清晰,而且 Claude 对它的坐标系统有点挣扎——这大概是训练数据少,加上 Bevy 很多核心功能(比如物理)留给社区实现的缘故。Unity 则一直在保持 Claude 与编辑器之间的 MCP 桥接健康运行上挣扎,经常挂掉,Caleb Leak 也没搞明白如何让 Claude Code 读取编辑器中的场景层级。
Godot 的文本化场景格式成为巨大优势——Claude 可以直接读取和编辑 .tscn 文件。
2. 给 Momo 选择一个专用键盘
直接把键盘直接插到 Windows 电脑上,让狗狗随意敲击显然不太靠谱。
所以 Caleb Leak 先通过 Raspberry Pi 路由输入——它通过 UDP 广播每次按键到子网,DogKeyboard 拾取、过滤掉危险按键,然后注入目标应用。
至于键盘本身,一开始,Caleb Leak 用了柔性硅胶键盘,但 Momo 的“大姐姐”Hana(另一只 19 磅的 cavapoo)几分钟就把键盘咬了一个洞;后来用环氧树脂把键盘固定在木板上,结果 10 分钟内,Momo 就拆掉了数字 6 键。
最后,他试了 Logitech Pebble Keys 2 蓝牙键盘,效果特别好:Momo 喜欢敲,用 VHB 胶带能稳固固定,而且蓝牙没有线,不用担心被狗狗咬断,也不用花大价钱买 400 美元的防破坏金属键盘。

3. 自动奖励 Momo,减少人为干预
要让 Momo 愿意一直敲键盘,奖励必须到位。Caleb Leak 选用了 Aqara C1 智能宠物喂食器,这款喂食器可以通过 Zigbee 控制,还能控制零食份量。
一开始,他遇到了一个小问题:Windows 系统下 Zigbee 无法正常工作,折腾了几个小时驱动和固件都没用。后来他把适配器接到树莓派上,立刻就能用了。
最终流程很简单:DogKeyboard 通过 SSH 连接树莓派,运行脚本发送两个命令,喂食器就会发放 1 份零食,简单又可靠。
- {"serving_size":1}
- {"feed":"START"}

4. 更好的工具
AI 生成的游戏,经常出现“能编译运行,但有隐形玩家、破损 UI、输入没接入”等问题,Claude Code 自己不知道这些问题,因为它“看不见”游戏。为此,Caleb Leak 给 AI 加了几个实用工具:
- 截图工具:一个简单的 Python 脚本,能截图正在运行的游戏,Claude Code 可以通过截图,检查游戏标题界面是否正常,有没有黑屏;
- 自动试玩工具:让 Claude Code 能向游戏发送输入序列(比如“向左 3 秒、暂停 2 秒、开火”),然后截图检查,相当于 AI 自己当 QA 测试员,发现问题就回去修改代码,再重新测试;
这些工具不需要优化——直接能用。“Claude 使用它们的方式让我惊讶。在测试一个游戏时,我看到它跑完所有 6 个关卡,只为验证最终 Boss 战是否正确运行。当发现问题(比如血条不更新)时,它会回到代码修复,重新启动,再次跑完确认。”Caleb Leak 说道。
不仅如此,他还借用了自己以前做过的其他项目工具,如:
- 场景检查器:Claude 有时会重复使用节点 ID 或生成损坏资源引用在 Godot 的 .tscn 文件里,导致运行时出现神秘错误。加入 linter 后,游戏启动前就能发现问题。
- Shader 检查器:验证自定义 Shader,并返回具体错误给 Claude,而不是 Godot 的模糊提示“shader 编译失败”。
- 输入动作映射器:帮助正确接入键盘/手柄输入。Claude 可以直接编辑 Godot 项目文件添加新动作,但有时格式会出错,错误信息也不友好。
这些工具都是开源的,Caleb Leak 也鼓励大家,就算没有狗,也可以用这些工具尝试用 AI 做游戏。
5. 整合系统
DogKeyboard 应用最终承担了远超按键路由的功能。几个细节值得注意:
通过 Hooks 监控 Claude Code,当 Claude 空闲时播放提示音——这是 Momo 开始打字的信号。
当 Claude 空闲且 Momo 输入至少 16 个字符时,自动按 Enter 提交。
当 Claude 工作时,会删除多余输入,以防 Momo 太兴奋,并定期关闭 Plan Mode 提示(Claude 的“操作前复核”步骤),避免阻塞进度。
视频录制时,它运行轻量级 Web 服务器,实时覆盖显示按键。Caleb Leak 加了可调延迟,确保视频延迟时,按键显示不会比 Momo 实际敲击早。

训练宠物狗 Momo,让小狗学会“敲键盘换零食”
一开始,Momo 并不知道怎么敲键盘,Caleb Leak 花了大约 2 周时间训练它,目标是每天训练两次,每次 10 分钟,步骤很简单:
第一步:在键盘上撒高价值零食(比如冻干三文鱼),让 Momo 建立“键盘=有好吃的”的关联;
第二步:当 Momo 不小心用爪子滑过键盘时,立刻播放提示音、发放大量零食,让它知道“敲键盘能得到奖励”;
第三步:慢慢增加难度,从“滑一次键盘给奖励”,变成“滑三次键盘给奖励”;
第四步:降低零食价值,从高价值零食,慢慢换成中等价值零食,最后换成干粮,既保证 Momo 的积极性,又不会让它吃太胖;
第五步:用 DogKeyboard 全自动化运行,只有 Momo 敲够 16 个有效字符,且 AI 空闲时,才会发放一次零食。
不过测试中,Caleb Leak 发现系统也出现了小漏洞:有几次喂食器连续发了多份零食,Momo 很快就学会了“猛敲键盘求零食”,唯一能让它停下的,就是完成游戏输入后,给它一份高价值零食作为奖励。
游戏作品展示,还真的能玩!
经过一系列优化,Momo“参与制作”的游戏越来越多,每一款都能正常玩,不是概念图。随着工具和提示语的改进,游戏质量也越来越高,尤其是 Claude Opus 4.6 发布后,AI 能生成更好的视觉效果和自定义渲染了。
不过一开始有个小问题:AI 生成的游戏,全是“发光霓虹 3D 形状”的风格,没有其他样子。后来 Caleb Leak 发现,是 Claude 的外部记忆文件记住了这种风格,不断强化。只要每次做新游戏前,清空 Claude 的持久项目笔记(MEMORY.md),游戏风格就变得多样了。
下面是这次实验中,Momo 的“代表作”:
《DJ Smirk》,Momo 最早期的游戏之一——更像一种体验而非完整游戏。键盘上的每个键都能发出不同音调。

《Munch》,一款竞争性的沙拉制作游戏。先收集完 7 种食材的玩家获胜。

《Zaaz》,另一款益智游戏。目标是通过移动刷子(一次移动一个格子)来涂满整个关卡。撞到障碍物会移动得更短。有些关卡无法完成。

《The Oracle Frog of Rome》,躲避类游戏,玩家要躲避克拉肯的触手,收集黄金链条束缚它,游戏里的神谕青蛙后期还会变成国王;

《Octogroove》,节奏挑战游戏,玩家扮演章鱼,用四条触手打鼓,跟着音乐节拍敲击,难度比《舞蹈革命》更高;

《Ewe Heard Me!》,是一款放羊游戏。玩家用隐身和吠叫,把羊赶进羊圈,但这款游戏有 bug,前两只羊进圈后会停下,阻挡其他羊,后来 Caleb Leak 在提示语和工具中增加了对可赢性检查的要求。

《Quasar Saz》。截至发稿,这是 Momo 最新的游戏。你扮演 Zara,使用宇宙萨兹(一种长颈弦乐器)对抗腐化音波。共有 6 个关卡 + Boss 战。可以玩几轮,非常有趣,视觉和音效都很棒。

最后的思考
Caleb Leak 说,一开始 Momo 踩键盘只是个意外,他失业后闲着没事,才想试试这个意外能走多远,结果远远超出了他的预期。
技术环节——键盘路由、零食发放器、提示语设计、反馈工具——都是可解决的工程问题。让他惊讶的是,最终结果几乎不依赖 Momo 输入了什么有意义的内容。真正的“魔法”不在输入本身,而在输入周围的系统:精心设计的提示语、严格的安全防护、自动化验证和良好的工具,能把纯粹的胡乱敲击变成一款可玩的游戏。
而这场实验,给我们一个很重要的启示:AI 辅助开发的瓶颈,不在于你的创意好不好,而在于“反馈循环”好不好。Caleb Leak 表示,游戏质量的飞跃,不是因为他改进了提示语,而是因为他让 Claude 能截图自己的作品、自己试玩关卡、检查自己的文件——这些工具,不仅让小狗能“编程”,也能显著提升我们自己用 AI 创作的效率和质量。
当然,Momo 并不是什么“秘密游戏设计师”,它只是一只学会了“敲塑料方块就能得狗粮”的小狗狗。但一年前,谁也想不到,小狗乱敲键盘,和软件工程之间的距离,会变得这么近——而且这个距离,还在不断缩短。
如果你也想尝试这场有趣的实验,不管是和自己的宠物(狗、猫都可以),还是自己随意敲键盘,Caleb Leak 已经把所有工具都开源了。
来源:https://www.calebleak.com/posts/dog-game/
观看 Momo 制作游戏:https://youtu.be/8BbPlPou3Bg
体验游戏:https://github.com/cleak/quasar-saz/releases/tag/v1.0
TeaLeaves:https://github.com/cleak/tea-leaves
DogKeyboard:https://github.com/cleak/DogKeyboard

