乐于分享
好东西不私藏

Claude Code源码研究:一个未发布的终端宠物系统

Claude Code源码研究:一个未发布的终端宠物系统

最近有人在Claude Code的源码里发现了一个尚未发布的功能——一个完整的终端宠物养成系统,藏在src/buddy/目录下。

6个文件,不到1000行代码。Gacha抽卡、稀有度体系、ASCII动画、AI人格注入……应有尽有。功能还没上线,代码已经写完了。

这个系统设计得有多认真,可能超出了你的想象。

· · ·

一、你的鸭子,永远换不掉

代码里有个roll函数,基于你的用户ID加一个固定盐值(friend-2026-401),通过Mulberry32伪随机数算法生成结果。同一个用户,永远只能得到同一只伙伴。改配置没用,重装也没用。

19种物种——鸭子、猫、水豚、龙、幽灵、仙人掌、机器人……5项属性——调试能力、耐心、混乱度、智慧值、讽刺度。稀有度分5档:

代码

普通: 60%,灰色,不戴帽子 
稀有: 25%,绿色 
珍贵: 10%,蓝色 
史诗: 4%,紫色 
传说: 1%,橙色,可能戴皇冠

额外还有1%概率的”闪光”版本——宝可梦致敬。代码注释里还有一句:

Mulberry32 — tiny seeded PRNG, good enough for picking ducks.

翻译:Mulberry32——一个很小的种子随机数生成器,足够用来选鸭子了。

· · ·

二、它会眨眼,但不会帮你写代码

这个系统有一套完整的交互设计。

3帧动画循环:大部分时间静止(Frame 0),偶尔轻微抖动(Frame 1),极少做大幅度动作(Frame 2)。还有一个特殊的”眨眼”帧——眼睛变成-

帧序列代码:[0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 2, 0, 0, 0]。15帧一循环,节奏感很好——像一只真正的小动物在旁边打盹。

对话气泡的设计更有意思。Claude Code在系统提示词里明确区分了AI本体和伙伴:

“你(AI)不是[name]。[name]是坐在用户输入框旁边的一个独立观察者。当用户直接称呼[name]时,你的任务是在那一刻保持安静。”

伙伴不是AI的另一个分身,而是一个有独立”人格”的旁观者。它不帮你写代码,不替你做决策,只是偶尔冒出来,像个坐在你旁边的安静室友。

还有个彩蛋——/buddy pet命令会触发2.5秒的ASCII心形漂浮动画,五颗心形从伙伴身上飘起来。

· · ·

三、代码里的三个”反常识”设计

第一:数据不落盘。

伙伴的所有属性——物种、稀有度、眼睛、帽子、闪光——从不存储到本地文件。每次启动都从用户ID实时计算。你不能打开配置文件把”普通”改成”传说”。在一切都可以被修改的AI时代,”不可修改”本身成了最大的信任。

第二:物种重命名安全。

伙伴记录的是数组索引而非名称。如果Anthropic把”duck”改名叫”quacker”,所有已有鸭子不受影响。基本功,但说明这不是”写完就不管”的实验性功能。

第三:5行心形代码做了性能缓存。

心形动画总共5行ASCII字符,渲染过程却做了500ms级别的缓存。5行代码需要缓存?不需要。但这是他们的工程标准——不管功能多小,性能都要到位。

细节暴露态度。

· · ·

四、一个编程工具,为什么要做宠物?

Anthropic在用游戏化设计解决一个AI产品的核心难题:用户留存。

AI编程工具的同质化越来越严重。模型能力趋同、功能趋同、价格趋同。当技术不再是壁垒,什么才是壁垒?是用户不愿意离开的那个理由。

一只属于你的终端鸭子,就是那个理由。

传统的AI产品竞争在”能力层”——谁的模型更强。下一代竞争正在向”情感层”转移——谁让用户更开心、更舍不得走。Buddy系统的本质是:用最低成本(几十行ASCII代码)建立最高壁垒(情感粘性)。

而且它是”可选的”——不主动触发就不会出现。纯工具主义用户可以完全忽略,愿意互动的人多了一个让工具变得有人味的入口。

代码里的时间窗口显示,这个功能原计划2026年4月正式上线。但源码提前泄露了。至于Anthropic会不会因为这次泄露调整发布计划,或者干脆砍掉这个功能,目前还是未知数。

· · ·

说实话,看完这些代码,我最深的感受不是”Anthropic做了个宠物”。

而是一家估值超过600亿美元的AI公司,愿意在一个严肃的编程工具里,花工程师的时间,去设计一只会眨眼的ASCII鸭子。

这本身就说明了一些事情。

— 全文完 —

如果对你有帮助,欢迎点个 在看 👀 或 转发 给朋友 🙌