Product Analysis · Claude Code 解读系列

Buddy:你的
终端虚拟宠物

Claude Code 里藏着一个虚拟宠物系统——一个住在终端输入框旁边的小精灵,会对你的对话做出反应、有自己的名字和性格、还能被你"撸"。

/\_/\ ( ✦ ✦) ( ω ) (")_(")~
2026年4月1日首次亮相 18种物种 · 5种稀有度 Feature Flag: BUDDY
01

这是什么功能

一个让严肃的编程工具变得有温度的彩蛋。

一句话版本

Claude Code 会根据你的用户 ID 随机生成一个独一无二的 ASCII 小动物,它住在你的终端输入框旁边,会对 AI 的回答做出表情反应,你还可以"撸"它看它冒爱心。

18
种物种
5
种稀有度
1%
闪光概率
02

宠物是怎么"出生"的

每个用户的宠物都是确定性的——同一个账号永远得到同一只。

生成机制:种子 → 骨骼 → 灵魂

系统把你的用户 ID 加上一个固定盐值(friend-2026-401),通过哈希函数生成一个种子数字,然后用这个种子驱动一个伪随机数生成器(Mulberry32),依次"掷骰子"决定:

  • 物种——从 18 种中随机选一个
  • 稀有度——按权重抽取(普通 60%、传奇 1%)
  • 眼睛样式——6 种表情符号之一
  • 帽子——普通稀有度没有帽子,其他稀有度从 8 种中随机
  • 是否闪光——1% 概率
  • 五维属性——调试力、耐心、混乱、智慧、毒舌

这些叫做"骨骼"(Bones)——确定性的部分,每次从用户 ID 重新计算,不存储。

灵魂(Soul):AI 起名 + 定性格

第一次输入 /buddy 命令时,AI 会根据宠物的物种和属性,为它起一个名字、写一段性格描述。这叫做"孵化"(Hatch)。

灵魂数据(名字 + 性格 + 孵化时间)会存储在用户配置文件中。骨骼数据不存储——这意味着:

  • 即使 Anthropic 修改了物种列表,已有宠物不会坏掉
  • 用户不能通过编辑配置文件来伪造稀有度
03

18 种物种图鉴

每种物种都有 3 帧 ASCII 动画,5 行高、12 字符宽。

__ <(· )___ ( ._> `--´

鸭子

/\_/\ ( ✦ ✦) ( ω ) (")_(")

/^\ /^\ < · · > ( ~~ ) `-vvvv-´

.----. ( · · ) ( ) `----´

果冻

.----. / · · \ | | ~`~``~`~

幽灵

(\__/) ( · · ) =( .. )= (")__(")

兔子

完整物种列表

鸭子、鹅、果冻、猫、龙、章鱼、猫头鹰、企鹅、乌龟、蜗牛、幽灵、六角恐龙、水豚、仙人掌、机器人、兔子、蘑菇、胖墩

每种都有 3 帧动画:静止帧、小动作帧(摇尾巴/晃触角等)、特殊帧(冒烟/天线闪烁等)。

04

稀有度与属性系统

像游戏里的抽卡系统,但种子是你的用户 ID——命中注定。

稀有度概率

稀有度概率星级特殊待遇
普通60%没有帽子
罕见25%★★随机帽子
稀有10%★★★随机帽子 + 更高属性
史诗4%★★★★随机帽子 + 高属性
传奇1%★★★★★随机帽子 + 极高属性

五维属性

  • DEBUGGING — 调试力
  • PATIENCE — 耐心
  • CHAOS — 混乱值
  • WISDOM — 智慧
  • SNARK — 毒舌值

每只宠物有一个"峰值属性"和一个"低谷属性",其余随机分布。稀有度越高,属性下限越高。

属性下限

稀有度属性下限
普通5
罕见15
稀有25
史诗35
传奇50
05

装饰系统:眼睛与帽子

小细节让每只宠物都独一无二。

6 种眼睛

· ✦ × ◉ @ °

眼睛样式会替换到 ASCII 精灵的 {E} 占位符中。

8 种帽子

(普通稀有度)
\^^^/皇冠
[___]礼帽
-+-螺旋桨帽
( )光环
/^\巫师帽
(___)毛线帽
,>头顶小鸭子

Shiny(闪光)

1% 的概率获得"闪光"标记——就像宝可梦里的闪光宝可梦。这是一个布尔值标记,具体的视觉效果由 UI 层决定。

06

AI 怎么知道宠物的存在

通过一段特殊的 Prompt 注入,让 Claude 知道旁边有个小动物。

注入给 AI 的 Prompt

# Companion A small [物种] named [名字] sits beside the user's input box and occasionally comments in a speech bubble. You're not [名字] — it's a separate watcher. When the user addresses [名字] directly (by name), its bubble will answer. Your job in that moment is to stay out of the way: respond in ONE line or less, or just answer any part of the message meant for you. Don't explain that you're not [名字] — they know. Don't narrate what [名字] might say — the bubble handles that.

设计要点

  • AI 被告知宠物是一个独立的观察者,不是 AI 自己
  • 当用户直接和宠物说话时,AI 要让路——只回答一行或更少
  • AI 不应该解释"我不是它"或代替宠物说话
  • 这段 Prompt 只在宠物存在且未静音时注入,且每个会话只注入一次
07

视觉呈现

宠物住在终端输入框旁边,有丰富的动画状态。

动画系统

状态行为时间参数
空闲大部分时间静止,偶尔小动作,罕见眨眼500ms/帧,15帧循环
说话/被撸快速循环所有动画帧(兴奋状态)500ms/帧
语音气泡显示反应文字,最后 3 秒渐隐显示 10 秒
被撸头顶冒爱心,5 帧飘散动画持续 2.5 秒
眨眼眼睛替换为 - 符号1 帧

宽屏模式(≥100列)

显示完整的 5 行 ASCII 精灵 + 名字 + 语音气泡。气泡在非全屏时内联显示,全屏时浮动显示。

窄屏模式(<100列)

折叠为一行:表情 + 名字。说话时,名字被替换为引用的短句(最多 24 字符)。

语音气泡

宠物的"反应"来自一个独立的观察者模块。每轮对话结束后,观察者会分析对话内容,生成一句短评。这句话会显示在宠物旁边的气泡里,10 秒后自动消失(最后 3 秒渐隐)。

08

发布策略

精心设计的限时彩蛋发布方式。

2026 年 4 月 1 日 — 愚人节彩蛋

预告窗口:2026年4月1日-7日。在这 7 天内,如果用户还没有宠物,启动时会在底部显示一个彩虹色的 /buddy 提示,持续 15 秒。

使用本地时间而非 UTC——这样全球用户会在各自的 4 月 1 日看到,形成 24 小时的滚动传播波,而不是 UTC 午夜的单一峰值。代码注释说这是为了"在 Twitter 上形成持续的讨论热度"。

时间线

时间行为
4月1日-7日预告窗口:彩虹色 /buddy 提示
4月1日起/buddy 命令永久可用
内部员工始终可用(不受日期限制)
09

用户怎么互动

简单但有温度的交互设计。

操作效果
/buddy首次使用:孵化宠物(AI 起名+定性格)。之后:查看宠物信息
/buddy pet撸宠物——头顶冒爱心 2.5 秒,精灵进入兴奋动画
在对话中提到宠物名字宠物的气泡会回应,AI 自动让路
方向键选中宠物名字高亮反转显示(footer pill 导航)
静音设置配置 companionMuted: true 隐藏宠物
10

产品策略总结

为什么一个严肃的编程工具要做虚拟宠物?

一句话总结

BUDDY 把冰冷的终端变成了一个有"生命感"的空间——你不再是一个人对着黑屏写代码,旁边有个小家伙在陪你。

设计智慧

设计决策为什么这样做
确定性生成(种子=用户ID)同一个人永远得到同一只宠物,建立情感连接
骨骼不存储,灵魂存储防作弊(不能编辑配置伪造稀有度)+ 防损坏(物种列表可安全修改)
稀有度系统制造社交话题("我抽到传奇了!")+ 收集欲
愚人节发布降低期望管理压力,作为彩蛋更容易被接受
24小时滚动传播用本地时间而非 UTC,最大化社交媒体讨论窗口
AI 知道宠物存在用户可以和宠物"对话",增加拟人感
可静音不喜欢的用户可以关掉,不强制

解决的"问题"

  • 终端编程工具太冰冷、缺乏情感连接
  • 长时间编码容易感到孤独
  • 需要社交传播的病毒式话题
  • 品牌差异化——没有其他 AI 编程工具有虚拟宠物

产品价值

  • 情感连接——用户会对"自己的"宠物产生归属感
  • 社交传播——稀有度系统天然制造分享欲
  • 品牌记忆——"那个有小动物的编程工具"
  • 用户留存——宠物是不可迁移的,绑定用户 ID
  • 开发者文化——程序员喜欢彩蛋和极客幽默