我们在做一个扑克平台,而 AI 刚刚试图替我们部署基础设施
从零开始打造一个扑克平台,意味着要同时戴很多顶帽子。随便哪一天,我都在同时思考游戏逻辑、合规要求、玩家体验、资金交易流程,还有其他上百件彼此毫无关系的事情。AI 真的是帮我把这一切撑起来的救命稻草。
然后当我让它写一个段落时,它差点就替我们把基础设施也一起部署了。
事情的背景
这个扑克平台跑在一份非常详细的技术规格之上 — 一份覆盖一切的活文档:发牌引擎怎么工作、ledger 如何追踪玩家资金、geofencing 如何强制只在德州可玩、每个 venue 如何拿到自己的白标体验。它是一切构建的根基。
当我们要把 Terraform 下的 infrastructure-as-code 方案正式写进来时,我希望把策略写进 spec 里。我们会采用什么模式、如何组织 Azure 的部署、整体的理念。一个章节。几段文字而已。
我让 AI 去补上它。
AI 直接补进来一整份完整、可以跑起来的 Terraform 实现。
代码挺漂亮,交付的却不是我要的
模块。变量文件。资源定义。一整套骨架齐全的 IaC 项目 — 嵌在一份 markdown 格式的规格文档里面。
最妙的地方?那段代码写得其实挺好。模块结构扎实,资源组织干净,变量命名合理。如果我当时让它 去建 这套 Terraform,那会是一个非常不错的起点。
但我让它 描述 的是策略,不是去执行。"记录我们打算如何使用 Terraform" 和 "这就是 Terraform" 之间,存在一个有分量的差别。换成一个人的话,会看出这一点。AI 则信心满满地没看出来。
为什么这件事对扑克平台尤其重要
一个扑克平台有很多运动中的部分必须是对的 — 不是大致对、也不是方向上对,而是 精确地 对。游戏状态、ledger 条目、合规规则、geofence 逻辑。Spec 是设计和实现之间的契约。当有什么东西被加进去时,它必须是有意图的。
一个贴心地生成代码、然后未经请求就把代码塞进 spec 文档的 AI,不只是在多做一点事而已 — 它可能正在污染下游所有东西都依赖的单一事实来源。在这种敏感度的代码库里,一条被误解的指令的爆炸半径,是要认真对待的。
这次的具体情况风险不高,修起来也容易。但它很好地说明了一件在我们继续往下建的时候值得记住的事:AI 总是自信地执行,很少提问。人机回路里之所以需要人,正是为了在 "你说的" 和 "你真正想要的" 之间找到那条缝。
修复和教训
三十秒删掉生成的代码。再三十秒把 prompt 改写成带明确约束的样子:"只要散文,不要代码块,描述策略。" 第二次就拿到了我想要的东西。
实用的要点:当你让 AI 做文档或 spec 工作的时候,把它当成是在给一个会严格按字面意思办事、并且会把任何模糊之处当成多做一点的许可的人写指令。因为它确实就是这么做的。
对格式要明确。"加一节讲 X" 是模糊的。"加一节散文,不要有代码,描述我们对 X 的做法" 就不是了。
预期它会朝错误的方向过度交付。AI 的本能是做更多,不是做更少。当任务本身是加法(比如更新 spec),这种本能需要护栏。
提交之前先读一遍。这件事看起来理所当然,却偏偏是最常被跳过的一步。
我们是公开地在打造这个平台 — 那些成功、那些奇怪的弯路、还有工具偶尔会做出的出乎意料的滑稽事情。这次就是这样一个时刻。
对于这样的项目,AI 的表现相当惊人。它偶尔也有点太急着想帮忙了。
我在 The Salty Korean 上更深入地写 agentic AI、spec-driven development,以及用 AI 去建生产系统到底是一种什么样的体验 — 那是扑克背后的方法论,去掉扑克的部分。
平台在稳步推进。很快再聊。
Stay salty.
The Salty Korean
Salty Poker Network 的创始人。撰写有关德州扑克、平台构建和在线扑克未来的文章。 更多内容请访问 The Salty Korean.