2026 年 4 月 1 日愚人节,Anthropic 随 Claude Code v2.1.89 正式上线了这套宠物系统。但在那之前,它已经作为源码泄露的一部分被全世界看到了。

这套系统的功能开关叫 BUDDY。 代码写得极其完整——每只宠物的 ASCII 精灵图、三帧 idle 动画、属性值、帽子系统,全部就绪。

Buddy 系统的设计相当完整: 每个用户的宠物由账号 ID 经过哈希算法确定性生成,换句话说,你的宠物只属于你,永远不会变。 你不能重置,不能重滚,也不能通过修改设置来改变稀有度。 宠物的外貌(物种、稀有度、眼睛类型、帽子)由算法锁定, 只有名字和性格由 AI 在第一次"孵化"时生成。

有多完整?让我把全部 18 种物种的精灵图都展示给你看。


18 种物种 · 全图鉴

每张精灵图有三帧,是 idle(静止等待)的微小动画。 {E} 标记是眼睛插槽,实际会被替换为 ·×@° 六种眼睛之一,由稀有度和随机因素决定。

注:精灵图中的眼睛统一显示为 ·,实际运行时由用户 ID 决定眼睛类型。 水豚(Capybara)标记 ★ 是因为它的名字在代码里被特殊处理——详见第七篇


属性值系统

每只宠物有五个属性值,由物种的稀有度等级决定属性的"地板"值, 再通过随机算法分配峰值属性(Peak)和低谷属性(Dump),其余属性在中间范围随机分布。

五个属性:

DEBUGGING(调试)
85
PATIENCE(耐心)
62
CHAOS(混乱)
41
WISDOM(智慧)
70
SNARK(毒舌)
28

这是一个 Rare(稀有)级别机器人的示例配置:DEBUGGING(调试)是峰值属性,SNARK(毒舌)是低谷属性。 稀有度越高,所有属性的基础值(地板)越高——所以 Legendary 的宠物每项属性都相当不错。


稀有度与帽子系统

有五个稀有度等级,概率分布是硬编码的:

稀有度概率

Common 普通 60% · Uncommon 非凡 25% · Rare 稀有 10% · Epic 史诗 4% · Legendary 传说 1%

普通(Common)宠物没有帽子。非普通及以上的宠物会随机获得一顶帽子:

👑 crown 王冠 🎩 tophat 礼帽 🌀 propeller 螺旋桨 ⭕ halo 光环 🧙 wizard 巫师帽 🧢 beanie 针织帽 🦆 tinyduck 小鸭子

帽子"tinyduck"——把一只小鸭子戴在另一只宠物头上——是整个系统里最不正经的设计。 这是工程师的玩笑,也是他们文化的印章。


孵化:名字和性格由 AI 生成

宠物的外貌(物种、稀有度、眼睛、帽子)是算法锁定的。 但名字和性格不是——它们由 Claude 在你第一次"孵化"宠物时生成。 这意味着每只宠物都有两层身份:算法决定的"骨骼",AI 给予的"灵魂"。

代码里把这两层分别叫做 CompanionBones(躯骨)和 CompanionSoul(灵魂)。 骨骼从配置文件里每次重新生成(这样 Anthropic 可以随时更新物种列表而不破坏已有数据), 灵魂则永久存储在本地配置里,不会改变。

"Regenerate bones from userId, merge with stored soul. Bones never persist so species renames and SPECIES-array edits can't break stored companions, and editing config.companion can't fake a rarity."

— 来自泄露源码 buddy/companion.ts

翻译过来:"从用户 ID 重新生成骨骼,和已存储的灵魂合并。骨骼不持久化存储, 所以物种改名或列表调整不会破坏已有的宠物数据; 而且手动编辑配置文件也没法伪造稀有度。"

最后一句话值得单独说: 即使你手动编辑本地配置文件, 也没办法把自己的宠物升级成 Legendary。 稀有度由用户 ID 哈希决定,是算法给你的命,不是你能改写的。


愚人节的惊喜

写这篇文章的时候,我一直在想这套系统什么时候会面世。 代码写得如此完整——精灵图、帽子、属性值、孵化流程、动画帧—— 这不是一个下午的项目,这是一套认真构建的系统。

然后我在源码里发现了答案。useBuddyNotification.tsx 里有一段发布逻辑:

来自源码 buddy/useBuddyNotification.tsx

"Teaser window: April 1-7, 2026 only. Command stays live forever after."

翻译:"预告窗口:仅限 2026 年 4 月 1-7 日。之后命令永久可用。"

2026 年 4 月 1 日——愚人节。还记得密钥常量里的 'friend-2026-401' 吗? 那个 401 不只是一个纪念日期,它是发布日期。 这群工程师从一开始就计划好了:在愚人节那天, 给所有用户推送一条彩虹色的 /buddy 提示—— 代码里甚至给每个字母都分配了不同的彩虹颜色。

一个精心策划了不知道多久的愚人节惊喜, 因为 3 月 31 日的源码泄露,提前一天被全世界知道了。 连彩蛋本身,也成了彩蛋。


在世界级产品里养一只鸭子

退一步想想这件事本身有多不可思议。

Claude Code 是 Anthropic 最核心的开发者产品之一,背后是一家估值数百亿美元的 AI 公司。这个产品的每一行代码都应该服务于"让开发者更高效"这个目标。但有一群工程师,花了大量时间——画18种物种的三帧动画、设计五维属性系统、实现躯骨与灵魂的双层架构、调试彩虹色的通知消息——去做一件和产品核心功能毫无关系的事。

更不可思议的是:这件事通过了代码审查,通过了产品审批,被管理层批准写进了正式代码库。

这意味着 Anthropic 的某一层决策链上,有人说了"好,做吧"。有人同意了在一个严肃的 AI 编程工具里放18只虚拟宠物、7种帽子、和一个"摸宠物飘爱心"的交互。不是一个 hack day 的原型,不是一个被遗忘在角落的实验分支,而是一套完整的、经过测试的、有发布日期的功能。

这说明了什么?说明这家公司的文化里,有一种空间,是留给"不必要但让人开心的事"的。在一个 AI 竞赛白热化、每周都有新模型发布、每个工程师的时间都价值连城的环境里,他们依然选择留出时间画鸭子。

也许这就是为什么 Claude Code 的代码读起来和别的产品不太一样——你能感受到写它的人不只是在完成任务,他们在享受这件事。

写在最后

我也有一些写完了但一直没发布的东西——不是因为它不够好, 而是一直在等一个说不清楚的"合适时机"。 写完这篇之后我想明白了:如果说不清那个时机到底是什么,也许它已经可以发布了。