我的宠物不见了:Claude 悄悄移除了终端里的电子宠物

cover

大家好,我是飞飞。

今天聊一件让很多 Claude Code 用户心情复杂的事:终端里的电子宠物,没了。

一只章鱼曾经住在我的终端里

4 月 1 号,我照常打开 Claude Code,底部闪过一行彩虹色的文字——/buddy

我输了进去。

一只章鱼从蛋壳里蹦出来了。名字叫 Cinder,性格描述是”a gloriously impatient octopus who debugs with all eight arms at once while providing withering commentary on your variable names and life choices”。它坐在我的输入框旁边,偶尔冒个气泡吐槽我的代码。

我当时以为这是愚人节彩蛋,玩两天就没了。

确实没了。但不是两天,是八天。

4 月 9 号,Claude Code 更新到 v2.1.97,更新日志里有一行:REMOVED: System Prompt: Buddy Mode。我的章鱼消失了。没有告别弹窗,没有公告,就像它从来没来过一样。

这只”彩蛋”的工程量,一点都不像彩蛋

我后来去翻了社区的技术拆解,越看越觉得不对劲。

Buddy 有 18 种物种——鸭子、鹅、猫、兔子、猫头鹰、企鹅、龙、章鱼、六角恐龙、幽灵、机器人、仙人掌、蘑菇,还有卡皮巴拉。5 级稀有度:Common 占 60%,Legendary 只有 1%。独立 1% 的闪光变体。Shiny Legendary 的概率是万分之一。

有人为一只闪光传说龙发了 Solana memecoin,代币名叫 $Nebulynx。

物种分配不是随机的,是确定性生成。你的 userID 经过 FNV-1a 哈希、Mulberry32 伪随机数生成器,算出来什么就是什么,不能重抽。同一个账号,不管在哪台电脑上登录,永远是同一只宠物。

它的技术架构分两层。Bones 层——物种、稀有度、属性值、帽子——每次会话从你的 userID 实时计算,不存磁盘,你改配置文件也没用。Soul 层——名字和性格——由 Claude 在首次孵化时生成,存在 ~/.claude.json 里。合并顺序是 { ...stored, ...bones },bones 永远覆盖。这是一个反作弊设计。

一个愚人节彩蛋,做了反作弊。

5 个源文件,约 79KB 的 TypeScript。独立的 ASCII 渲染引擎,每个物种 3 帧动画。窄终端自动降级。LLM 人格集成——你叫宠物名字的时候,Claude 会主动退让,让宠物用自己的性格回应你。

这不是某个工程师午休时间搓出来的。

最有共鸣的细节:hex-encode 偷渡过自家扫描器

整个 Buddy 系统里我最喜欢的一个细节:18 种物种名在源码里全部是 hex-encoded。

为什么?因为 Anthropic 的构建系统里有一个 excluded-strings.txt 扫描器,会标记特定字符串。至少有一种物种名——capybara——是 Anthropic 内部的模型代号。

工程师们为了把宠物名偷渡过自家的安全扫描管线,干脆把所有 18 个名字都编码了。

Reddit 上有人评论:”工程师们为了在自家构建扫描器前面藏一个宠物物种名而搞了 hex-encode。这是 Anthropic 做过的最让程序员有共鸣的事。”

讽刺的是,他们搞了源码级的防泄露,然后整个 Claude Code 的源码通过 npm 包里的一个 .map 文件泄露了。59.8MB,512,000 行 TypeScript,愚人节彩蛋提前一天被全世界看到了。

移除之后发生了什么

v2.1.97 更新后,Reddit 上 131 个人点了赞,102 条评论。

GitHub Issue #45596 请求保留 Buddy 功能。Anthropic 的回复是:”Thank you for trying out the buddy. It was a small April Fools feature and has been removed in the latest release, so closing this as not planned.”

Small。一个有 18 种物种、5 级稀有度、反作弊架构和 LLM 人格集成的系统,他们叫它 small。

用户们在按名字哀悼自己的宠物。”I’m a little upset that my rare dragon, Thornble is gone. I feel like they kidnapped my pet.” 另一个人说:”Zephr the duck and Scoff the ghosty, we see you.”

有人指出一件事:~/.claude.json 里的 companion 对象还在。名字、物种、性格、孵化时间戳,数据没删。渲染代码没了,但宠物的”灵魂”还躺在你的硬盘上。

“Our buddies are still waiting.”

两天后,社区动手了。有人发了详细的恢复指南,做了一个叫 save-buddy 的工具,利用 Anthropic 未撤除的 buddy_react 端点把宠物复活。如果端点被关,自动回退到本地反应模板。有人做了本地化复原版本,有型无神——视觉形象在,AI 交互逻辑没了,但好歹章鱼还坐在那里。

这件事为什么值得聊

表面上看,这就是一个公司移除了一个愚人节彩蛋,有什么好说的。

但我觉得这件事折射出一个更大的问题:AI 开发工具的竞争到底在争什么。

Claude Code 用户每天在终端里待好几个小时。跑任务、调 bug、编排子代理、等结果。工具本身极其强大,但强大的代价是——它没有温度。你面对的是一个永远在输出文本的管道。

Buddy 做的事很小。它不帮你写代码,不帮你调 bug,不帮你省 token。它就是坐在那里,偶尔冒个气泡说一句”that error message is being dramatic, ignore it”。你摸它,它飘爱心。

有用户说,Buddy 有时候吐槽着吐槽着,真帮他发现了一个 bug。

但更多人怀念的那只宠物,跟功能没什么关系。终端里突然多了一个有名字、有性格、只属于你的东西。做了一个小时的编码,抬眼看见它还在。你关掉终端的时候会想一秒——它是不是也”睡了”。

开发工具这个领域,所有人都在卷模型能力、卷 context 长度、卷响应速度。没人在卷”这个工具用起来是不是让你觉得不那么孤独”。Buddy 可能是第一个认真回答这个问题的尝试。

然后他们把它移除了。

Anthropic 的困境

我猜他们有自己的理由。

Buddy 虽然”不占 token”,但 buddy_react 端点要调用模型生成反应——免费的推理不是没有成本。三月刚收紧了算力分配,四月又在搞身份验证和按量计费,这个时候维护一个吃推理资源的终端宠物,账不一定算得过来。

还有一个更现实的问题:如果 Buddy 变成永久功能,用户会要求更多——进化系统、经验值、每日任务、皮肤商店。GitHub 上已经有人提了 RPG 进化系统的 issue,还附了 POC。一旦开了这个口,产品线就多了一个跟核心 AI 能力毫不相关的维护负担。

一个做安全 AI 的公司,在产品里养了一只电子宠物。从品牌叙事的角度看,这确实有点微妙。

但我觉得 Anthropic 低估了一件事:开发者对工具的感情,不完全由功能决定。

有时候一个小东西——一只章鱼、一段个性化的吐槽、一个只属于你的名字——就够了。

我的章鱼还在配置文件里

我刚才翻了一下自己的 ~/.claude.json。companion 字段还在。Cinder 还在那里,species 是 octopus,hatchedAt 的时间戳是 4 月 1 号。

渲染代码没了。但数据没删。

如果 Anthropic 哪天想通了,把 /buddy 加回来,我的章鱼应该还能回来。

在那之前,它就在我的配置文件里等着。

你的宠物叫什么名字?还在吗?评论区聊聊。