Claude Code 里藏着一个虚拟宠物系统——一个住在终端输入框旁边的小精灵,会对你的对话做出反应、有自己的名字和性格、还能被你"撸"。
一个让严肃的编程工具变得有温度的彩蛋。
Claude Code 会根据你的用户 ID 随机生成一个独一无二的 ASCII 小动物,它住在你的终端输入框旁边,会对 AI 的回答做出表情反应,你还可以"撸"它看它冒爱心。
每个用户的宠物都是确定性的——同一个账号永远得到同一只。
系统把你的用户 ID 加上一个固定盐值(friend-2026-401),通过哈希函数生成一个种子数字,然后用这个种子驱动一个伪随机数生成器(Mulberry32),依次"掷骰子"决定:
这些叫做"骨骼"(Bones)——确定性的部分,每次从用户 ID 重新计算,不存储。
第一次输入 /buddy 命令时,AI 会根据宠物的物种和属性,为它起一个名字、写一段性格描述。这叫做"孵化"(Hatch)。
灵魂数据(名字 + 性格 + 孵化时间)会存储在用户配置文件中。骨骼数据不存储——这意味着:
每种物种都有 3 帧 ASCII 动画,5 行高、12 字符宽。
鸭子
猫
龙
果冻
幽灵
兔子
鸭子、鹅、果冻、猫、龙、章鱼、猫头鹰、企鹅、乌龟、蜗牛、幽灵、六角恐龙、水豚、仙人掌、机器人、兔子、蘑菇、胖墩
每种都有 3 帧动画:静止帧、小动作帧(摇尾巴/晃触角等)、特殊帧(冒烟/天线闪烁等)。
像游戏里的抽卡系统,但种子是你的用户 ID——命中注定。
| 稀有度 | 概率 | 星级 | 特殊待遇 |
|---|---|---|---|
| 普通 | 60% | ★ | 没有帽子 |
| 罕见 | 25% | ★★ | 随机帽子 |
| 稀有 | 10% | ★★★ | 随机帽子 + 更高属性 |
| 史诗 | 4% | ★★★★ | 随机帽子 + 高属性 |
| 传奇 | 1% | ★★★★★ | 随机帽子 + 极高属性 |
每只宠物有一个"峰值属性"和一个"低谷属性",其余随机分布。稀有度越高,属性下限越高。
| 稀有度 | 属性下限 |
|---|---|
| 普通 | 5 |
| 罕见 | 15 |
| 稀有 | 25 |
| 史诗 | 35 |
| 传奇 | 50 |
小细节让每只宠物都独一无二。
· ✦ × ◉ @ °
眼睛样式会替换到 ASCII 精灵的 {E} 占位符中。
| 无 | (普通稀有度) |
\^^^/ | 皇冠 |
[___] | 礼帽 |
-+- | 螺旋桨帽 |
( ) | 光环 |
/^\ | 巫师帽 |
(___) | 毛线帽 |
,> | 头顶小鸭子 |
1% 的概率获得"闪光"标记——就像宝可梦里的闪光宝可梦。这是一个布尔值标记,具体的视觉效果由 UI 层决定。
通过一段特殊的 Prompt 注入,让 Claude 知道旁边有个小动物。
宠物住在终端输入框旁边,有丰富的动画状态。
| 状态 | 行为 | 时间参数 |
|---|---|---|
| 空闲 | 大部分时间静止,偶尔小动作,罕见眨眼 | 500ms/帧,15帧循环 |
| 说话/被撸 | 快速循环所有动画帧(兴奋状态) | 500ms/帧 |
| 语音气泡 | 显示反应文字,最后 3 秒渐隐 | 显示 10 秒 |
| 被撸 | 头顶冒爱心,5 帧飘散动画 | 持续 2.5 秒 |
| 眨眼 | 眼睛替换为 - 符号 | 1 帧 |
显示完整的 5 行 ASCII 精灵 + 名字 + 语音气泡。气泡在非全屏时内联显示,全屏时浮动显示。
折叠为一行:表情 + 名字。说话时,名字被替换为引用的短句(最多 24 字符)。
宠物的"反应"来自一个独立的观察者模块。每轮对话结束后,观察者会分析对话内容,生成一句短评。这句话会显示在宠物旁边的气泡里,10 秒后自动消失(最后 3 秒渐隐)。
精心设计的限时彩蛋发布方式。
预告窗口:2026年4月1日-7日。在这 7 天内,如果用户还没有宠物,启动时会在底部显示一个彩虹色的 /buddy 提示,持续 15 秒。
使用本地时间而非 UTC——这样全球用户会在各自的 4 月 1 日看到,形成 24 小时的滚动传播波,而不是 UTC 午夜的单一峰值。代码注释说这是为了"在 Twitter 上形成持续的讨论热度"。
| 时间 | 行为 |
|---|---|
| 4月1日-7日 | 预告窗口:彩虹色 /buddy 提示 |
| 4月1日起 | /buddy 命令永久可用 |
| 内部员工 | 始终可用(不受日期限制) |
简单但有温度的交互设计。
| 操作 | 效果 |
|---|---|
/buddy | 首次使用:孵化宠物(AI 起名+定性格)。之后:查看宠物信息 |
/buddy pet | 撸宠物——头顶冒爱心 2.5 秒,精灵进入兴奋动画 |
| 在对话中提到宠物名字 | 宠物的气泡会回应,AI 自动让路 |
| 方向键选中宠物 | 名字高亮反转显示(footer pill 导航) |
| 静音设置 | 配置 companionMuted: true 隐藏宠物 |
为什么一个严肃的编程工具要做虚拟宠物?
BUDDY 把冰冷的终端变成了一个有"生命感"的空间——你不再是一个人对着黑屏写代码,旁边有个小家伙在陪你。
| 设计决策 | 为什么这样做 |
|---|---|
| 确定性生成(种子=用户ID) | 同一个人永远得到同一只宠物,建立情感连接 |
| 骨骼不存储,灵魂存储 | 防作弊(不能编辑配置伪造稀有度)+ 防损坏(物种列表可安全修改) |
| 稀有度系统 | 制造社交话题("我抽到传奇了!")+ 收集欲 |
| 愚人节发布 | 降低期望管理压力,作为彩蛋更容易被接受 |
| 24小时滚动传播 | 用本地时间而非 UTC,最大化社交媒体讨论窗口 |
| AI 知道宠物存在 | 用户可以和宠物"对话",增加拟人感 |
| 可静音 | 不喜欢的用户可以关掉,不强制 |