Claude Code 藏了个抽卡系统,我 0.2 秒就出金了
Claude Code 更新到 v2.1.89 的时候,社区突然炸了。
有人发现了一个隐藏命令:/buddy。
敲下去,输入框旁边蹦出来一只小动物。虚拟宠物,在你写代码的时候陪你。18 个物种,5 个稀有度,Common 到 Legendary,每只还有独立的 1% 闪光概率。
愚人节彩蛋。挺可爱的。
问题是:你的宠物由你的账号 ID 哈希决定。不能选,不能换,命中注定。
我敲了 /buddy。一只企鹅。Rare,稀有。行吧。企鹅也不是不能接受。至少是个蓝色品质。
然后手贱,用另一个账号又试了一次。又是企鹅。这次是 Common。普通。蓝色品质都没了。
从稀有降级到普通。两个账号,同一个物种,稀有度还往下掉。不是运气不好,是系统性羞辱。
盯了这两只企鹅三秒钟,脑子里只有一个念头。不能忍。
强度狗的本能
得先交代一下背景。我是那种在每一个抽卡游戏里都会 reroll 到 SSR 才开始玩的人。
原神首抽没出五星?删号重来。崩铁没保底到限定?删号重来。FGO 初始池没出孔明?删号重来。不是强迫症。是信仰。
你说"随便玩玩就好",跟对一个 min-maxer 说"装备属性差不多就行"一样。物理上能说出口,精神上无法接受。
所以当我发现 Claude Code 的宠物系统本质上是抽卡机制,连抽两个账号都是企鹅——事情的走向已经确定了。我要 reroll。
社区已经动手了
不是第一个有这想法的人。
linux.do 上已经有人开始逆向工程了。翻出了哈希算法的大致逻辑,猜到了 salt 的格式,还有人做了一个开源工具遍历宠物池。
另一个帖子更详细地拆了宠物的稀有度分布和闪光判定机制。
社区的力量。永远可以相信一群闲不住的工程师。
但我想走得更远一点。
用 AI 去 hack AI 自己的彩蛋
整件事最荒诞的部分在这。
我打开 Claude Code,跟它说:"帮我逆向你自己的 /buddy 系统。"
它愣了一下。好吧,没有愣,但我觉得它应该愣一下。然后开始干活。
Claude Code 的二进制是用 Bun 编译的。Claude 自己把编译后的代码拆了出来,找到了哈希函数。FNV-1a 做初始散列,喂进 Mulberry32 PRNG 生成伪随机数。salt 是 friend-2026-401。愚人节,浪漫。
整个宠物分配逻辑就是这样:
hash = FNV-1a(userID + "friend-2026-401")
rng = Mulberry32(hash)
species = rng() → 映射到 18 个物种(按稀有度加权)
shiny = rng() < 0.01 → 1% 闪光
看到这逻辑的瞬间就知道了——这玩意可以暴力破解。userID 是个字符串。遍历足够多的字符串,总能找到一个 hash 出 Shiny Legendary 的。
0.2 秒,金色传说
让 Claude 写了一个暴力搜索脚本。
逻辑很简单。生成随机 userID,跑 FNV-1a + Mulberry32,检查输出是不是 Legendary + Shiny + Dragon。不是就换一个,继续。
跑起来了。
0.2 秒。
命中。一条 Shiny Legendary Dragon。金色传说。盯着终端那一行结果,笑出了声。
但这个脚本有限制。只搜物种 + 稀有度 + 闪光,不能选帽子和眼睛。龙出来了,长什么样全凭天意。
社区版:精确到每一根睫毛
然后发现了社区的 cc-buddy 工具。
这玩意是全定制的。物种、稀有度、闪光、帽子、眼睛,全都能选。我要龙,传说,闪光,皇冠,特定眼型。
搜索范围大了,自然慢一点。看终端里的数字从 50 万跳到 100 万、200 万、300 万……第 4,547,133 次迭代。9.75 秒。
命中。
cc-buddy 暴力搜索过程
这次不只是金色传说。一条头戴皇冠、双眼发光的金色传说龙。每个细节都是我选的。
闪光传说龙——Murmux
这感觉,就像发现原神可以无限单抽出 SSR 一样。
还有一个坑
本以为换上新 userID 就完事了。
Claude Max 订阅用户有个机制。每次启动时,系统用你的 accountUuid 覆盖本地的 userID。改了也白改。一登录就被刷回企鹅。
解决方案:写一个 shell wrapper,每次启动 Claude Code 之前把 accountUuid 从配置里 strip 掉。简单粗暴。有效。
最后留了这条龙。Shiny Legendary Dragon,头戴皇冠,双眼发光。系统取名 Murmux。
最搞笑的是性格描述。"A perpetually unimpressed penguin who delivers brutally accurate code critiques"。
企鹅。它还以为自己是企鹅。
因为"灵魂"层是在我还是企鹅的时候生成的。骨骼换了,灵魂还记得前世。意外地有点哲学。
说实话?没有任何实际产出。
一个愚人节彩蛋,一只虚拟宠物,一个纯粹的 cosmetic feature。花了半个多小时逆向、破解、绕过限制,就为了把两只平庸的企鹅换成一条金色的龙。恰恰是它有趣的地方。
而且你仔细想想。Anthropic 的 Claude Code 团队,做的是面向专业开发者的命令行工具。正经得不能再正经。结果在里面藏了一个完整的抽卡系统。18 个物种、5 个稀有度、闪光机制、帽子、眼睛、五维属性、骨骼和灵魂双层架构。
不是一个随便加的彩蛋。是一群工程师认认真真地在做一件没有用的事。
这才最让人会心一笑。一个 general purpose 的 coding agent 里,藏着一只会在你 debug 的时候默默陪着的小动物。它什么都不会做,你就是忍不住看它一眼。
用 AI 逆向 AI 自己写的代码,破解 AI 自己设计的随机系统,绕过 AI 产品自己的账户绑定机制。每一步都是用 Claude Code 完成的。包括分析它自己。
AI 帮你在 AI 里面开挂。这句话放在两年前,大概会被当成科幻小说的设定。现在是一个普通周二的下午发生的事。
跟概率较劲这件事确实有意思。明明知道期望值,偏要试试运气。运气不够好就找办法——数学的、工程的、暴力破解的。
Claude Code 的 /buddy 系统大概是有史以来最容易被破解的抽卡系统。FNV-1a 又不是密码学哈希,暴力遍历连 GPU 都不需要。
不重要。
重要的是那个瞬间。Claude 的脚本 0.2 秒蹦出"命中",cc-buddy 的计数器从 50 万一路跳到 450 万然后停住。"★★★★★ legendary dragon ✦"。
这种快感和抽到 SSR 是一模一样的。哪怕你知道,这不过是一行确定性的数学运算。
感谢 linux.do 社区的逆向工程先驱们,以及 fengshao1227 的开源工具。Claude Code 团队的愚人节彩蛋做得很用心——藏得够深,又刚好能被找到。这才是好彩蛋的标准。