- Published on
拆解 Claude Code 的终端宠物系统
- Authors

- Name
- SeanZou
起因
2026年3月31日,Anthropic 的 Claude Code 完整源码被泄露到了网上。我第一时间把代码 clone 了下来——倒不是想去研究什么核心架构,主要是听说里面有个还没上线的 buddy 系统(终端宠物),而我自己最近也在做一个宠物系统,想看看大厂是怎么做的,好做个参照。
源码拉下来之后,我先大概扫了一遍目录结构,找到了 buddy 相关的几个核心文件:types.ts、companion.ts、sprites.ts、CompanionSprite.tsx、prompt.ts 和 useBuddyNotification.tsx。文件不多,但读下来发现里面的设计比我想象中要讲究不少。
这是一个 终端宠物(Companion/Buddy)系统,在 Claude Code CLI 的输入框旁展示一个由 ASCII art 绘制的虚拟宠物,提供趣味性和陪伴感。
它包含了 18 种不同的虚拟宠物(包括鸭子、龙、以及 Anthropic 内部非常喜欢的水豚 Capybara 等)。这些宠物甚至有 "1% 掉落率" 的稀有度设定、可装扮的帽子,以及五维属性(调试能力、耐心、混沌值、智慧、毒舌)。为了防止公司内部的 "防泄露扫描器" 发现他们在不务正业,开发者还故意使用了 String.fromCharCode () 来混淆宠物名字的字符串。
核心功能
- 宠物生成与属性系统 (types.ts, companion.ts)
- 18 种物种:duck、goose、blob、cat、dragon、octopus、owl、penguin、turtle、sn ail、ghost、axolotl、capybara、cactus、robot、rabbit、mushroom、chonk
- 5 级稀有度:common → uncommon → rare → epic → legendary,按权重随机抽取(legendary 仅 1%)
- 外观自定义:6 种眼睛样式、8 种帽子(crown/tophat/wizard 等)、1% 概率闪光(shiny)
- 属性系统:DEBUGGING / PATIENCE / CHAOS / WISDOM / SNARK 五维属性,稀有度决定属性下限
- 确定性生成:使用 hash(userId) 作为 PRNG 种子(Mulberry32),同一用户永远得到同一只宠物,不可通过编辑配置伪造稀有度
- ASCII Art 精灵动画 (sprites.ts)
- 每个物种有 3 帧动画(idle / fidget / 特殊动作如喷烟、眨眼)
- 帽子渲染在精灵第一行,根据帧动态显示/隐藏
- 窄终端下自动切换为单行 emoji 面部表情(如 (·ω·)、[·_·])
- 终端实时渲染 (CompanionSprite.tsx)
- 宠物常驻在输入框右侧,500ms 一帧的 idle 动画序列(休息 → 小动作 → 眨眼)
- 语音气泡:宠物会说话(reaction),10 秒后自动消失,最后 3 秒渐隐
- 抚摸动画:/buddy pet 命令触发飘心动画(2.5 秒),精灵兴奋快速切换帧
- 全屏模式适配:全屏下气泡浮动覆盖在滚屏区上方;窄终端折叠为单行显示
- 可聚焦/选中(作为 footer 的一个选项)
- AI 集成 (prompt.ts)
- 宠物拥有由 LLM 生成的灵魂(name + personality),通过 companion_intro attachment 注入到对话中
- 当用户直接对宠物说话时,提示 Claude 不要抢答,让宠物的气泡来回应
- 用户可通过 companionMuted 配置静音宠物
- 营销预告 (useBuddyNotification.tsx)
- 2026 年 4 月 1-7 日为预告窗口:未拥有宠物的用户启动时显示彩虹色的 /buddy 提示(15 秒)
- 4 月起功能永久上线
- 彩虹文字效果:每个字符按位置映射不同颜色
设计亮点与价值
| 维度 | 价值 |
|---|---|
| 用户粘性 | 收集稀有宠物的机制鼓励用户持续使用,稀有度系统带来惊喜感 |
| 情感连接 | 宠物有名字、性格、会说话、可以被"抚摸",创造拟人化陪伴感 |
| 品牌差异化 | CLI 工具中罕见的趣味功能,形成独特的记忆点和社交传播话题 |
| 防作弊设计 | 属性由 userId 哈希确定性生成,不持久化 bones,用户无法通过编辑配置伪造稀有宠物 |
| 终端兼容 | 宽终端完整精灵 + 气泡,窄终端优雅降级为单行面部表情 |
本质上,这是一个精心设计的 "彩蛋式"用户留存机制——通过在严肃的开发工具中嵌入一个轻量级虚拟宠物系统,在不干扰核心功能的前提下提升产品的趣味性和情感价值。