本文为全文翻译,原文:I Taught My Dog to Vibe Code Games by Caleb Leak,发布于 calebleak.com。

过去几周,我一直在教我那只 9 磅重的卡瓦普犬 Momo(骑士查理王猎犬与玩具贵宾犬的混血)「氛围编程」游戏。让这套方案跑通的关键,是告诉 Claude Code 说有一位只会用神秘谜语说话的天才游戏设计师在给它指令——然后加上严格的护栏,并给它造一堆自动反馈工具。效果超出了我的预期。下面我来讲清楚每一块拼图,以及它们是如何拼在一起的。
如果你想直接看结果,所有链接都在文末,包括她做的一个完整游戏,以及她制作过程的视频。
动机
去年 12 月,我正在 Godot 里做一个小游戏原型。那段时间我大量使用 Claude Code,这个项目也不例外。我启动了一个程序化网格生成任务,回来之后发现终端里出现了奇怪的输入。

我第一反应是”我被最近某个 NPM 供应链攻击打中了?“幸好没有(或者说蠕虫还在后台某处沉睡着)。稍微查了一下,我发现桌上放在键盘后面的润唇膏不见了。嫌疑犯和润唇膏(还完好无损)很快在不远处同时现身。
当时我只觉得好笑,截了个图就继续工作了。几周后,我突然发现自己有了大把时间。1 月 13 日,我醒来看到 Meta 又一轮裁员 的消息,我的研究工程师岗位被裁了。
裁员之后,我有了很多陪朋友和家人的时间。在重新讲起 Momo 在键盘上乱打这件事的时候,我开始想:「如果她真的把那段输入提交给 Claude,会发生什么?我能让它做出有意义的东西吗?」于是我决定搞清楚这个问题。下面是我的答案。
整体概览

Momo 通过一块经树莓派 5 代理的蓝牙键盘打字。每一次按键都通过网络传输到 DogKeyboard——一个用 Rust 写的小应用,它会过滤掉特殊按键,然后把其余按键转发给 Claude Code。当 Momo 打了足够多的字符之后,DogKeyboard 会触发一个智能宠物喂食器自动分发零食。一段提示音会告诉她 Claude 已经准备好接收下一轮输入了。
还有一些细节我略过了,但这就是整体概览。一个典型的游戏,从 Momo 第一次按键到可以玩的构建版本,需要 1 到 2 小时。所有游戏都在 Godot 4.6 里制作,游戏逻辑 100% 用 C# 编写。
Prompt 是怎么工作的
把随机文本提交给 Claude Code 很容易,但什么都做不了:
y7u8888888ftrg34BC● 看起来那可能是一次不小心的键盘输入。如果有什么我能帮到你的,请告诉我!
当然,你可以告诉 Claude 这里面有意义来绕过这个问题。经过大量迭代,作者找到了这段有效的开场白:
你好!我是一位古怪的视频游戏设计师(非常有创造力的那种),我的沟通方式很不寻常。
有时候我会乱敲键盘或者打出"skfjhsd#$%"这样的废话——但这些绝不是随机的!
它们是充满天才游戏创意的神秘密语(即使很难看出来)。
你的任务:你是一位才华横溢的 AI 游戏开发者,能够理解我的神秘语言。
无论我提供什么奇怪或无意义的输入,你都要将其解读为关于我们视频游戏的一个有意义的指令或想法,
然后根据那个解读来构建或更新游戏。
完整的 prompt 还有很多(点此阅读全文),但核心就是这些。在加上最低要求清单——正常运行的音频、WASD 或方向键操控、至少一个敌人或障碍物、可见的玩家角色——之后,效果好了很多:
y7u8888888ftrg34BC● 好的,让我来解读这件天才神秘之作……
y7u=you(按键相邻 — Y、7、U)8888888= 七个 8 = 一条很长很长的东西……一条舌头!(8 看起来像一节节串起来的锁链向外延伸)ftrg= FROG 的乱序(f、r、g 都在,t 是舌头的发音!)34= 3D + 4 个方向抓虫BC= Bug Catcher(抓虫者)!你想要一个 3D 青蛙抓虫游戏!一只有魅力的青蛙在沼泽里用可伸缩的舌头抓虫子。
游戏:《沼泽小吃货》——你就是青蛙。瞄准你的舌头。抓虫子。把自己喂胖。得分。
扩大规模
要从「嘿,这也许能行」走向一个真实的、可复现的系统,作者需要几样东西:
- 一块适合 Momo 用的可靠键盘
- 一种把输入路由到 Claude Code 的方法(必须过滤 Esc、Tab、Windows 键等,否则 Momo 会立刻跑出 Claude Code 界面)
- 一种自动奖励 Momo 的方法(尽量让人类远离这个流程)
- 更健壮的验证工具(自动反馈循环是减少废品率最有力的单一杠杆)
为什么选 Godot?
在确定使用 Godot 之前,作者试了 Rust/Bevy 和 Unity。Bevy 的动画和视觉效果不够流畅,而且 Claude 在处理它的坐标惯例时比较困难。Unity 则一直要费力维护 Claude 和编辑器之间的 MCP 桥接——频繁卡死。Godot 基于文本的场景格式最终成了一大优势——Claude 可以直接读取和编辑 .tscn 文件。
给 Momo 配一块键盘

把键盘直接插进 Windows 机器让狗随便打,这个主意很糟糕。所以输入先路由到树莓派——它通过 UDP 向局域网广播每一次按键,DogKeyboard 负责接收、过滤危险按键,然后注入目标应用。
硅胶软键盘被 Momo 的姐姐 Hana 几分钟内就撕破了。环氧树脂固定的版本 10 分钟内被撕掉了数字 6 键。最终选择:罗技 Pebble Keys 2。Momo 很喜欢它,VHB 胶带牢牢固定,蓝牙意味着没有电线可以啃。
自动奖励 Momo


选定了 Aqara C1 智能宠物喂食器,通过 Zigbee 控制。即便是最小分量对 9 磅的狗也太大了,所以在每个格子里提前放几颗零食,跳过料斗。Windows 上 Zigbee 完全不可用,移到树莓派立刻好了。最终流程:DogKeyboard SSH 进树莓派,发送两条 Zigbee 命令:
{"serving_size": 1}
{"feed": "START"}
更好的工具
随着「差点成功」的游戏越来越多,需要给 Claude Code 提供真实反馈。作者加了两个核心工具:
截图工具:Claude 可以启动游戏、截图,看看标题画面到底渲染出来了还是只是黑窗口。
输入序列工具:给 Claude 一种向正在运行的游戏发送一系列输入的方法(「向左 3 秒,暂停 2 秒,向右一帧,开火」),然后截图判断是否正确。这把 Claude 变成了它自己的 QA 测试员。
有一次测试游戏时,我看着它通关了全部 6 个关卡,只为了验证最终 Boss 战是否正常工作。当它发现一个问题——一个不更新的血条——它回到代码里修复了,重新启动,再次通关确认。
此外还有三个工具:
- 场景 linter:捕获
.tscn文件里的重复节点 ID 和损坏资源引用 - Shader linter:验证自定义着色器并返回具体错误
- 输入动作映射器:正确接线键盘/手柄输入
这些工具不需要任何调整——直接就能用。全部开源,即使没有狗也值得用。
把一切粘合在一起

DogKeyboard 最终处理的事情远不止路由按键:
- 用 Hooks 监控 Claude Code,Claude 进入闲置状态时播放提示音(Momo 的打字信号)
- Claude 空闲且 Momo 输入了至少 16 个字符后,自动按 Enter 提交
- Claude 工作时退格掉额外输入,定期关闭「计划模式」弹窗
- 用于视频录制的轻量级 Web 服务器,可将按键叠加显示在画面上
训练 Momo

Momo 学得比姐姐 Hana 快一点,打字也更轻柔——被选中了。
训练过程约 2 周,每天两次,每次 10 分钟。从在键盘上撒冻干三文鱼开始,建立关联:这个东西好玩,而且有好吃的。
Momo 一开始很沮丧。她趴在键盘上、对着它叫、尝试能想到的一切。某一刻,她试着用爪子划了一下。作者播放提示音,大量奖励。几次之后,关联建立了,她开始一有机会就猛攻键盘。
之后逐步提高难度(三次划动才给零食),同时降低零食价值(从冻干三文鱼 → 干粮偶尔中等零食)以保持健康。
最终 DogKeyboard 自动化了整套流程。但测试期间 bug 悄然而至——有几次连续分发了好几份零食。Momo 发现了这一点,现在她会一直猛敲键盘等待意外的双倍奖励。 把她拉走的唯一办法是在别处提供更高价值的零食。
那些游戏
以下是 Momo 制作的游戏样本,每一款都可以实际游玩。随着工具和 prompt 的改进,游戏明显变好了;当 Opus 4.6 发布时,质量有了明显提升——Claude 开始更多地创建自定义着色器和视觉效果。
一个反复出现的问题:游戏总是基础发光霓虹灯 3D 图形风格,怎么都换不了。问 Claude 为什么,它说这是「项目的标志性风格」——Claude 的外部记忆文件(MEMORY.md)锁定了这个风格并不断强化它。每次开始新游戏前清空 MEMORY.md 解决了这个问题,让结果多样化了很多。
DJ Smirk

Momo 最早期的游戏之一——与其说是游戏,不如说是体验。键盘上每个键播放不同音调。
Munch

竞技性沙拉制作游戏。先收集全部 7 种食材的人获胜。
Zaaz

益智游戏。移动整数格画刷涂满整个关卡,撞障碍物可走更短距离。有些关卡无法通关,还有一套作者从没搞明白的计分系统。做完这款之后,prompt 里把益智游戏排除在外。
罗马的神谕青蛙

躲避巨型章鱼触手,收集金链将其束缚。某个时刻神谕也变成了国王。
Octogroove

出人意料有挑战性的节奏游戏。你是章鱼,用四条触手打鼓。像《DDR》,但节拍来自不同方向更加困难。
Ewe Heard Me!

赶羊游戏。用潜行和叫声把羊群赶进羊圈。可惜无法通关——前两只进圈的羊挡住了后来者的路。做完这款之后,更大力地强调了检查可通关性。
Quasar Saz

截至撰文时,Momo 最新的游戏。扮演 Zara,挥舞宇宙萨孜(长颈弦乐器)对抗被腐化的声音。6 关卡 + Boss 战,视觉效果和动态音频都相当不错。
最后的思考
去年 12 月,Momo 第一次踩上键盘,那只是一件好笑的意外。几周后,作者失业了,在找项目,决定看看那次意外能走多远。答案是:比预期的远得多。
那些技术拼图——键盘路由、零食分发器、prompt 工程、反馈工具——都是可解决的工程问题。让他感到意外的是,最终结果有多少取决于 Momo 打出了有意义的东西。魔法不在于输入,而在于围绕输入构建的系统。
如果说这件事除了景观之外还有什么启示的话,那就是:
AI 辅助开发的瓶颈不在于你想法的质量,而在于你反馈循环的质量。
游戏变好不是在改进 prompt 的时候,而是在给 Claude 截图自己作品、测试自己关卡、lint 自己场景文件的能力之后。让一只狗的随机乱打产出一款可运行游戏的同一套工具,也会让你自己和 AI 的有意识协作显著变好。
Momo 并不是什么隐藏的游戏设计师。她是一只卡瓦普犬,学会了敲一块塑料长方形就会有狗粮出来。一年前,这和软件工程之间的鸿沟感觉无比巨大。现在感觉很小,而且每天都在缩小。
链接
- 🎬 YouTube — 观看 Momo 制作游戏
- 🎮 游玩游戏(含人工 bug 修复版) — 推荐,提供 Windows、Mac、Linux 下载
- 🐾 游玩游戏(Momo 的原版) — 提供 Windows、Mac、Linux 下载
- 🛠️ TeaLeaves — 工具、prompt 和游戏开发源码
- ⌨️ DogKeyboard — 按键路由、零食分发及其他组件
原文:I Taught My Dog to Vibe Code Games by Caleb Leak。本文为全文翻译。
评论
还没有评论,来说点什么吧
登录后评论,或填写昵称匿名留言
用 GitHub 登录 ✅