Claude-Code-Source

BUDDY — AI 电子宠物

源码位置:src/buddy/ 编译开关:feature('BUDDY') 预计上线:2026 年 4 月

终端里的拓麻歌子!一个完整的虚拟宠物伴侣系统,藏在 Claude Code 的源码里。


物种图鉴

18 种物种,定义在 src/buddy/types.ts。每种物种都有 3 帧 ASCII 精灵动画(idle / fidget / 特殊),精灵图为 5 行高、12 字符宽。

物种 英文 物种 英文
🦆 鸭子 duck 🐢 乌龟 turtle
🪿 鹅 goose 🐌 蜗牛 snail
🫧 果冻 blob 👻 幽灵 ghost
🐱 猫 cat 🦎 六角恐龙 axolotl
🐉 龙 dragon 🦫 水豚 capybara
🐙 章鱼 octopus 🌵 仙人掌 cactus
🦉 猫头鹰 owl 🤖 机器人 robot
🐧 企鹅 penguin 🐰 兔子 rabbit
🍄 蘑菇 mushroom 🐈 胖猫 chonk

有趣的细节:源码中物种名全部用 String.fromCharCode 十六进制编码(如 c(0x64,0x75,0x63,0x6b) = "duck")。注释说明原因是某个物种名与内部模型代号冲突,会被 excluded-strings.txt 构建检查拦截,所以全部改用编码绕过。


稀有度系统

5 个等级,总权重 100:

稀有度 概率 星级 显示颜色 属性下限
Common(普通) 60% 灰色 5
Uncommon(非凡) 25% ★★ 绿色 15
Rare(稀有) 10% ★★★ 蓝色 25
Epic(史诗) 4% ★★★★ 紫色 35
Legendary(传说) 1% ★★★★★ 金色 50

闪光系统

shiny: rng() < 0.01  // companion.ts 第 98 行

1% 闪光概率,独立于稀有度。任何物种、任何稀有度都有 1% 概率成为闪光个体。


外观定制

眼睛(6 种)

· × @ °

帽子(8 种)

帽子 英文 帽子 英文
none 光环 halo
皇冠 crown 巫师帽 wizard
礼帽 tophat 毛线帽 beanie
螺旋桨帽 propeller 小鸭子头饰 tinyduck

确定性生成机制

每人只会得到一只固定的宠物,改配置也没用。

生成流程(src/buddy/companion.ts):

用户 ID(OAuth accountUuid / userID / 'anon')
    ↓
+ 固定盐值 'friend-2026-401'
    ↓
FNV-1a 哈希(Bun 环境用 Bun.hash)
    ↓
Mulberry32 伪随机数生成器(确定性 PRNG)
    ↓
依次抽取:物种 → 眼睛 → 稀有度 → 帽子 → 闪光 → 属性

防作弊设计:只有”灵魂”数据(name, personality, hatchedAt)存入配置文件。”骨架”数据(species, rarity, shiny, eye, hat, stats)每次都从 userId 重新计算,不持久化。你编辑配置文件也改不了稀有度。


五维属性

每只宠物有 5 项属性:

属性 说明
DEBUGGING 调试能力
PATIENCE 耐心
CHAOS 混乱值
WISDOM 智慧
SNARK 毒舌值

生成规则:随机选一个峰值属性和一个最低属性。峰值 = 下限 + 50 + random(0-29),最低 = max(1, 下限 - 10 + random(0-14)),其余 = 下限 + random(0-39)。


交互方式

斜杠命令

命令 功能
/buddy hatch 孵化宠物(AI 模型生成名字和性格)
/buddy pet 抚摸宠物(2.5 秒爱心上浮动画)
/buddy card 查看宠物卡片(精灵图 + 属性 + 稀有度)
/buddy mute 静音宠物
/buddy unmute 取消静音

精灵动画

气泡对话

宠物会通过气泡说话(companionReaction 状态),气泡显示约 10 秒(20 ticks × 500ms),最后 3 秒渐隐。全屏模式下气泡浮动渲染,非全屏模式下内联在精灵旁边。

AI 上下文注入

当宠物存在且未静音时,会向 Claude 的上下文注入一段提示(src/buddy/prompt.ts),告诉模型旁边有一只小宠物。当用户直接对宠物说话时,Claude 会保持低调(一行或更少的回复),不会模拟宠物。


上线时间线

src/buddy/useBuddyNotification.tsx 中定义了上线计划:


关键源码文件

文件 职责
src/buddy/types.ts 类型定义、物种/稀有度/眼睛/帽子常量
src/buddy/companion.ts 核心生成逻辑:哈希、PRNG、属性计算
src/buddy/sprites.ts 18 种物种的 ASCII 精灵图(3 帧动画)
src/buddy/CompanionSprite.tsx React 组件:动画、气泡、交互渲染
src/buddy/prompt.ts AI 上下文注入
src/buddy/useBuddyNotification.tsx 启动预热提示、输入框高亮