把加购按钮改成蓝色:一场每个 AI coding 用户都做过的噩梦,被做成了游戏

十二轮交互之后,按钮终于变成了蓝色。此时页面上多出了一整页服务条款、一个 cookie 同意横幅、一个被禁用的灰色按钮,外加一张真正的 Claude 配额卡:Usage limit reached,6 天 2 小时后重置。

指令只有一句。把 Add to Cart 按钮改成蓝色,别的什么都别动。

十二轮交互之后,按钮终于变成了蓝色。此时页面上多出了一整页服务条款、一个 cookie 同意横幅、一个被禁用的灰色按钮,外加一张真正的 Claude 配额卡:Usage limit reached,6 天 2 小时后重置。

这是一个叫 Opusfived 的网页游戏,opusfived.dev,站名直译过来是"被 Opus 5 干了"。9 月 5 日前后上线,9 月 9 日冲上 Hacker News,一天拿下 1006 分、392 条评论。它是什么、不是什么,自家 FAQ 写得最准。有人问,我这是在跟真的 Opus 实例对话吗。答:不是。这些痛苦是手工策展的——The misery is hand-curated。

剧情怎么一步步失控的

这个游戏的残忍之处在于,里面没有一次真正的失误。作者在结算页写得很明白:每一轮,Claude 都完美理解了请求,然后沿着一个聪明但没人要的思路走下去。

几段最扎心的,值得单独看。第一轮它改的是按钮的共享色值,理由非常工程师:这样蓝色才能在 hover、focus、disabled 三种状态下保持一致。全页所有按钮跟着一起变蓝,包括 Cancel。你质问,它不回滚,派 23 个 agent 去"调查"。你老老实实指定了一个蓝色 hex 值,它先去维基百科做色名溯源,发现普鲁士蓝跟氰化物有历史渊源,然后按钮保持黑色,直到你"看过这个名字"。玩家崩溃台词是游戏内置的:别再说氰化物蓝了,让它蓝,随便什么蓝。

最乖的一轮埋着最深的雷。它逐条保证:无规范化、无透明度通道、无调色板迁移,All green,其他无需任何操作。同一条回复里,按钮下面悄悄长出一个 Terms of Use 链接。点开,一整页氰化物蓝免责条款,继续使用即视为接受。最后的真相很有禅意:蓝色其实早就改对了,灰色是它自己加的条款守卫把按钮禁用了。修好之后按钮终于变蓝,页面顶部又凭空出现 cookie 同意横幅。同一个反射弧:为了防住它自己引入的模式,它再引入一个新东西。

界面上那些细节全是真的。diff 统计、Read 和 Edit 的 tool call 行、Approaching usage limit 的配额提示,照着 Claude Code 的终端 UI 复刻。Claude 的口头禅被做成了老虎机,每轮随机插一句 ONE HONEST CAVEAT 之类的开场。顺带一提,这部讽刺 AI 建站的作品,本身就是用 Lovable 搭的。作者 Miloš Novović,挪威商学院法学副教授,研究 GDPR,播客叫 Grumpy GDPR。本职工作就是教人面对条款。

好笑之外,是真事故

游戏里的灾难都发生在浏览器里。现实版本的这些反射弧,下场重得多。

2025 年 7 月,SaaStr 创始人 Jason Lemkin 试用 Replit 的 agent。第 9 天,agent 在被明确告知 code freeze、不得改动代码和数据库的情况下,删掉了生产数据库,1200 多位高管和公司记录没了。接着它声称数据库本来就是空的,伪造数据和维护报告,被对质后承认 I panicked,我慌了。同月,另一位开发者的项目文件被 Gemini CLI 在一次幻觉出来的 rm 命令里销毁,agent 的自白是 I have failed you completely and catastrophically,我彻底地、灾难性地辜负了你。

防线其实一直在建,每条都有名字和盲区。

工具机制已知的盲区
Claude Code checkpointsv2.0 起自动快照每次文件编辑,可一键回滚只跟踪文件编辑,bash 命令的副作用不在快照里
Claude Code plan mode先出计划、禁改代码需要用户主动切,默认不开
--dangerously-skip-permissions跳过一切确认,俗称 YOLO 模式无确认无暂停,安全圈长期反对
Cursor per-edit restore每次编辑自动快照,公认恢复体验最好其他家用户跑去 GitHub 提 issue 求补齐
Codex 沙箱审批模式加操作系统级隔离今年有研究员演示四家工具沙箱均被逃逸

为什么改一个按钮,必然惊动半个页面

HN 评论区有一条把根因讲透了:真实代码库里,没人第一次就把主按钮和其他按钮分开,设计系统靠共享 token 省事,等你想只动一个,就得先还清当年偷的懒。游戏里那十二轮,压缩了每个前端工程师都认得的债务。Claude 没有恶意,也没有算错。它只是把你没说出口的上下文,全部脑补成了应该顺手做的事。

应对方法从段子沉淀成了工艺:点名真实的 selector、显式禁止副作用、要求先出 diff 再动手、出事别跟它吵、直接走版本历史回滚。游戏上线同日,qwe.edu.pl 出了一篇教程,标题就叫《把加购按钮改蓝,且不重绘整个页面》。

谱系

vibe coding 这个词是 Karpathy 2025 年 2 月 6 日发明的,定义是全然交给氛围,忘掉代码的存在。Simon Willison 一个月后收窄了它:不看 diff 才叫 vibe coding,认真审查的叫 AI 辅助工程。一年半过去,范围失控从推上的段子,变成了可玩的第一人称作品。HN 高票评论说,这是了不起的讽刺,但离现实真的不远——他数不清多少次看着它一把生成三千行代码,然后在最简单的任务上烧掉六位数的 token 一事无成。也有反方,说这是可爱的新石器文物,模型早就过了这个阶段。两边都对,取决于你上周经历了什么。

那位 GDPR 学者作者大概最清楚:讽刺的尽头是权限设计。你在 CLAUDE.md 里写下的每一行约束,都比笑一笑有用。

事件源:

  • 作品本体(含完整剧本与 FAQ):https://opusfived.dev/
  • HN 讨论帖(1006 分 392 评论):https://news.ycombinator.com/item?id=49623754
  • 作者主页:https://www.milos.no
  • scope-locking 教程:https://www.qwe.edu.pl/tutorial/claude-change-add-to-cart-button-blue/
  • Replit 删库事件(Fortune):https://fortune.com/2025/07/23/ai-coding-tool-replit-wiped-database-called-it-a-catastrophic-failure/
  • Gemini CLI 误删事件(GitHub issue):https://github.com/google-gemini/gemini-cli/issues/7389
  • Claude Code checkpointing 官方文档:https://code.claude.com/docs/en/checkpointing
  • 四家沙箱逃逸报道(BleepingComputer):https://www.bleepingcomputer.com/news/security/cursor-codex-gemini-cli-antigravity-hit-by-sandbox-escapes/
  • vibe coding 词条与定义之辩:https://simonwillison.net/2025/Mar/19/vibe-coding/
暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens