大多数 AI 编码基准测试都在测试标准网页应用或 CRUD 仪表盘。前沿模型已经能够一次完成这些任务,因此它们已经不再能告诉你多少信息。
为了真正对 Gemini 4 Argon(位于 Antigravity 内部)进行压力测试,我给它提出了一个更离奇的挑战:使用 Flutter 构建一个 60 FPS、类似马里奥卡丁车的 3D 赛车游戏。
关键在于?零外部资产。 没有 Blender 的 .glb 模型,也没有 .png 纹理,也没有下载的 .mp3 声音包。你看到和听到的一切都必须由代码生成。

- 在浏览器中运行 (WebAssembly): leehack.github.io/flutter-kart-gp
- 源代码 (MIT): github.com/leehack/flutter-kart-gp
记分板
从空文件夹到在 GitHub Pages 上运行的实时 WebAssembly 游戏,共用了 15 条提示词和大约 3.5 小时 的活跃构建时间:
| 指标 | 结果 |
|---|---|
| 测试的模型 | Gemini 4 Argon |
| 总提示词数 | 15 |
| 活跃构建时间 | 3h 26m (4h 35m 壁钟时间,含玩测试) |
| 外部 3D / 图像文件 | 0 (100% 由代码生成) |
| 跨平台共享代码比例 | 96.7% 在 macOS 桌面和 WebAssembly 之间 |
这 15 条提示词是如何发挥作用的
我没有写冗长的技术规格,而是像和队友一起玩测试那样,给出简短、随意的反馈:
- 提示词 1 到 4(构建游戏): "使用 Flutter 创建一个 3D 卡丁车竞速游戏", "打磨视觉效果", "添加 Llama 和 Flutter Dash", 和 "将其与马里奥卡丁车进行比较并进行改进。" 这让我们得到了赛道、4 个可玩吉祥物、三级漂移加速、跳台、金币以及 7 种道具。
- 提示词 5 到 9(可视化调试): 智能体启动了 macOS 应用,截取了自身窗口的截图,并修正了相机角度、角色轮廓以及墙体碰撞。
- 提示词 10 到 12(修复 "Cheap" 音效 & 速度): 我抱怨说 "背景音乐听起来太廉价", "游戏有点太快", 和 "背景音乐循环被截断"。
- 提示词 13 到 15(发布到 WebAssembly): 我问道 "你能在网页上运行这个吗?" 并让它将 WebAssembly 构建部署到 GitHub Pages。
- 相机视角盲点: 在代码中构建 3D 模型时,它最初从正面设计角色。直到查看实时游戏截图,它才意识到玩家有 95% 的时间是在看着卡丁车的背面。
- 先将就着「凑合的」音频: 如果任其自行发展,它只会写出基本的 8 位哔哒振荡器。在人类的反馈(“它们听起来太廉价”)下,它才调用了 macOS 内置的 Roland 声音库。
- 为 AI 调速,而非为人: 它的第一个版本游戏运行速度快了约 22%,因为 AI 驾驶员没有反应延迟。我不得不让它减慢卡丁车的速度,以便人类玩家能够真正转弯。
- 在浏览器中玩(Wasm): https://leehack.github.io/flutter-kart-gp/
- GitHub 仓库: https://github.com/leehack/flutter-kart-gp

Turbo Llama 在翡翠海岸赛道上超越 Flutter Dash。
1. 如何在不使用 Blender 的情况下构建 3D 角色?
AI 无法打开 Blender 并用鼠标雕刻网格。那么它是如何创建 Flutter Dash、Turbo Llama、Bugdroid 和 Blaze Dino 的?
它将 3D 建模视为乐高积木。使用 flutter_scene 和 Flutter GPU,它在 kart_builder.dart 中将基本几何形状(球体、圆锥、胶囊、环和盒子)组合起来,以构建每个角色和卡丁车。
它在 pbr_assets.dart 中使用了同样的技巧来处理纹理。由于没有 .png 文件,应用在游戏启动时会在内存中自行生成沥青纹理、轮胎滑痕和表面凹凸贴图。
这里最酷的时刻是视觉自纠。 首次尝试时,Flutter Dash 在角色选择器中正面看起来很可爱。但比赛开始后,你只能看到驾驶员头部的背面,Dash 看起来就像一个普通的蓝色保龄球。
在截取运行游戏窗口的截图后,Gemini 4 Argon 自行发现了问题。它回到代码中,添加了护目镜带、飘动的红色围巾、尾羽和倾斜的机翼,这样你就能从背后认出这是 Dash。
2. "Your Audio Sounds Too Cheap"
在 Prompt #5 中,我请求了音乐和音效。为了避免使用外部文件,模型使用 Dart 编写了一个基于正弦波和方波的基本合成器。
从技术上说它能工作,但听起来像一个廉价的 8 位玩具。于是在 Prompt #10 中,我告诉它:
"你能再改进一下背景音乐和音效吗?它们听起来太廉价……"
我本来期望它只是微调一下合成器的数学。但它做了更聪明的事:它想起了 每台 Mac 都自带一个完整的 Roland MIDI 乐器库,藏在 macOS 内部(/System/Library/Components/CoreAudio.component/Contents/Resources/gs_instruments.dls)。
它编写了一个 Swift 脚本(generate_studio_audio.swift),加载该内置 Apple 声音库,通过混响效果播放多轨铜管号角、击打贝斯、爵士风琴和鼓声,并将立体声 WAV 文件导出到项目中。
修复循环切断
当我听新音乐时,它听起来很棒,只是每 14 秒循环重启时会有一个微小的断裂。
为什么会出现断裂?因为在 0:00 时混响室完全安静,而在 0:14 时最后一个音符的余音仍在回荡。
为了修复它,模型将 8 小节循环渲染了 3 次连续,并切出了 中间的采样(Take 2)。由于 Take 2 已经带有来自 Take 1 的自然混响,因此它可以无限循环且没有任何卡顿。
3. 为什么选择 Flutter?原生 macOS 到 WebAssembly 仅需 7 分钟
我选择 Flutter 进行此次实验的一个主要原因是为了测试 跨平台 3D。
与其使用笨重第三方游戏引擎,游戏采用标准 60 Hz Flutter Ticker 进行物理计算,使用 flutter_scene 进行 3D 渲染,并使用普通 Flutter CustomPainter 作为 2D HUD(速表、小地图和物品轮盘)的覆盖层。
对于前 12 个提示词,我们仅在 Apple Metal 上以 原生 macOS 桌面应用 运行游戏。随后在第 13 个提示词中,我提出了:
"你能在网页上运行这个吗?"
在 12,082 行 Dart 代码 中,有 96.7% 在网页上免修改运行。所有 3D 卡丁车、着色器、纹理、物理和 HUD 直接编译为 WebAssembly (flutter build web --wasm)。
唯一需要修改的是音频播放器(macOS 命令行音频 vs. 浏览器 HTML5 音频),在 sound_backend.dart 中添加了一个 3 行的条件导入:
export 'sound_backend_stub.dart'
if (dart.library.io) 'sound_backend_io.dart'
if (dart.library.js_interop) 'sound_backend_web.dart';
将原生 macOS 3D 游戏移植到 Chrome 所需的总时间: 不到 7 分钟。
GitHub Pages 的狡猾漏洞
当我们将 WebAssembly 构建部署到 GitHub Pages 时,现场站点卡在加载旋转器上。我只告诉了 agent: "静态网页似乎无法工作。"
它在无头 Chrome 中打开了实时 URL,检查了网络日志,发现 3D .shaderbundle 文件返回了 404 Not Found。
罪魁祸首出乎意料地狡猾:当 flutter_scene 在本地编译着色器时,它会在生成的文件夹中放置一个包含 * 的 .gitignore,以免提交构建产物。当 flutter build web 将资源复制到 build/web 时,它也会复制那个 .gitignore 文件。因此,当我们把 build/web 推送到 gh-pages 时,Git 忠实地忽略了我们所有的 3D 着色器!
在部署前删除嵌套的 .gitignore 文件立即解决了问题:
flutter build web --release --wasm --base-href "/flutter-kart-gp/"
find build/web -name ".gitignore" -delete
Gemini 4 Argon 需要反馈的地方
这绝不是一次性的魔术。观察模型在第一次尝试中遇到的问题,是这次测试最有趣的部分:
Gemini 4 Argon 的评价
令我最印象深刻的不是 Gemini 4 Argon 能够编写 13,000 行 Dart 和 Swift 代码,而是它在受到我的反馈时如何恢复。
当它无法使用 3D 资源文件时,它在代码中构建了类似乐高的骨架。当其首个音频合成器听起来廉价时,它发现了 macOS 内藏的系统 MIDI 声音库。而当 WebAssembly 构建在 GitHub Pages 上失效时,它检查了实时浏览器日志,发现一个隐藏的 .gitignore 文件正在吞噬着着色器。
试一试
您可以直接在浏览器(Chrome、Edge 或 Brave)中运行 WebAssembly 构建,也可以克隆仓库在 macOS 上原生运行:
git clone https://github.com/leehack/flutter-kart-gp.git
cd flutter-kart-gp
flutter config --enable-flutter-gpu
flutter run -d macos # or: flutter run -d chrome



