乐于分享
好东西不私藏

我给 Claude Code 源码加了宠物成长系统,人人都能拥有金色传说

我给 Claude Code 源码加了宠物成长系统,人人都能拥有金色传说

先看效果,这是我终端里的宠物,legendary 品质,全身彩虹炫彩配色,常驻在 Claude Code 输入框旁边:

这不是官方的 Claude Code。

这是我拿到泄露源码后,用 Codex 修复编译、扩展功能的版本。

我在里面补回了一整套宠物成长系统,而且做了一个很重要的改动:任何人用我的版本,都可以随时 roll 出自己想要的宠物,想 roll 几次就 roll 几次,直到满意为止。

想要金色传说?一个命令的事。

故事要从卡兹克那篇文章说起

今天刷到卡兹克写的一篇推文,讲的是 Claude Code 在 4 月 1 日 悄悄上线了一个宠物系统。

在终端里输入 /buddy,就能孵化出一只专属于你的小宠物,有物种、有属性、有性格,还有稀有度机制

这个系统用了一个叫 Bones + Soul 的双层架构。

外观层 Bones 是由你的账户 ID 通过 Mulberry32 算法生成的,物种、眼睛、帽子、稀有度,全部跟你的 userID 绑死。

也就是说,你注册账号的那一刻,你的宠物就定了,换电脑、重装 Claude Code 都不会变。

卡兹克第一次孵化,出来的是一只白色普通仙人掌,他自己说心态差点崩了。

作为一个强度党,这谁受得了。

后来社区里有大佬发现了一个逻辑漏洞:用 OAuth token 环境变量登录的时候,Claude Code 不会把 accountUuid 写进配置文件,这时候 /buddy 会退而求其次去读 userID 字段,而这个字段可以随便改。

于是就有人写了个碰撞脚本,随机生成假 userID,用跟 Claude Code 一样的算法去算对应的宠物,找到自己想要的组合。

这个思路挺聪明的,算是在不改源码的前提下最优雅的解法了

不过我当时看完之后有了另一个想法:我手里有泄露的源码,如果直接在源码层面动手,是不是能做得更彻底一点?

不只是换宠物,而是把整个宠物系统按自己的想法重新搭一套。

先让源码跑起来

说干就干。

不过这份泄露的源码并不完整,直接拿来编译是过不了的。

我用 Codex 做了一轮最小化修复

补齐了 package.json 和 tsconfig.json 的构建骨架,让项目能被正常识别。

在 scripts/ 目录下生成了 Bun 的构建与启动脚本,又写了一个自动恢复脚本,给编译路径上所有缺失的模块和资源生成占位桩文件。

源码里还有一个非法的 Commander 短参数定义,也一并修了。

最后给启动流程加了一层包装,让它在交互和非交互环境下都能正常跑起来

修复完成后,三条命令就能把整个项目启动:

npm installbun run buildbun run start

看到启动画面正常弹出来的时候,说实话还挺有成就感的,一份残缺的泄露源码,硬是被搓活了

用 Codex 搭建宠物系统

源码能跑了,接下来就是重头戏:在上面补一套完整的宠物成长系统。

这部分代码全程由 Codex 编写,我自己没有手写任何一行实现代码。

但这不意味着我只是丢一句话让它去干活,我用的是 spec 编程 的方式来驱动整个开发过程。

什么意思呢?

我先写了一份非常详细的功能规格文档,把整个宠物系统要做什么、怎么做、分几个阶段、每个阶段的验收标准是什么,全部写清楚。

然后每次只让 Codex 实现一个小功能点,实现完了先跑自动化测试,测试通过之后再手动验证一遍实际效果,确认没问题才继续下一个。

举个例子,光 /buddy 这一个命令体系,我就拆成了八个阶段 来推进:命令层 MVP、存储模型统一、/buddy roll/buddy pet 成长化、状态卡成长提示、对话完成自动 pet、prompt 注入链路、扩展交互能力。

每个阶段都有明确的目标和边界,做完一个再开下一个

测试方面也不是走过场。

我让 Codex 为每个功能点都写了对应的自动化测试用例,总共写了三个测试文件,覆盖了十几个核心场景:宠物初始化、抚摸成长、属性持久化、稀有度升级(一次只升一级)、off/on 状态切换、roll 的确认机制、prompt 注入开关、自动 pet 的触发条件等等。

这套流程跑下来,最大的好处就是每一步都是可控的

Codex 生成的代码如果有问题,测试会立刻告诉我哪里不对,我再调整 spec 让它重新来。

整个过程没有出现过一次性生成一大堆代码然后到处是 bug 的情况。

宠物系统的核心功能

具体说说做出来的东西。

核心命令就这么几个,每个都对应一个独立的功能。

/buddy 是入口命令。

第一次输入会初始化你的宠物,生成物种、外观和性格。

之后再输入就是查看当前宠物的状态卡,如果宠物之前被你藏起来了,输入这个命令也会自动恢复显示:

/buddy pet 是抚摸命令,每执行一次就会触发一次成长。

成长逻辑也是经过仔细设计的:大部分情况下会随机提升一项属性,成长区间在 +6 到 +12 之间,有 20% 的概率 额外提升第二项属性,还有 25% 的概率 直接升一级稀有度。

你可以在状态卡里看到最近一次的成长提示,直观感受到宠物在变强:

这里还有一个我觉得很贴心的设计:当模型完成你的一轮正常对话后,会自动触发一次宠物成长

你正常写代码、问问题,宠物就在旁边默默变强,完全不用额外操心。

自动成长和手动 /buddy pet 用的是同一套成长逻辑,不会出现两套规则不一致的情况

/buddy roll 是重新生成宠物的命令,也是我加的最爽的功能

官方版本的宠物跟你账户绑死了,没法换。

在我这个版本里你想 roll 几次就 roll 几次,刷到满意为止

为了防止手滑,第一次执行会让你确认一下,之后在同一个会话里就可以直接刷新了:

另外还有 /buddy off 和 /buddy on 两个开关命令。

off 会隐藏宠物,同时停掉 companion prompt 注入,不占用你的上下文窗口。

on 则是恢复显示和注入。

如果你临时想专心干活不想被打扰,关掉就行,随时可以再打开。

legendary 品质,炫彩才是正义

说到品质,我最满意的一个细节就是把 legendary 从原来的金色改成了彩虹炫彩配色

普通品质的宠物在终端里就是常规颜色显示,但一旦你 roll 到了 legendary,整个宠物的渲染会切换成彩虹渐变色,常驻在终端底部。

写代码的时候瞄一眼,心情就很好:

宠物的数据存储我也重新设计了。

所有信息统一保存在 ~/.cc-buddy.json 这一个文件里,包括外形和灵魂信息,不会拆散到其他配置中。

第一次使用时如果文件不存在,会自动初始化一个随机宠物。

存储路径通过系统 home 目录解析,Linux、macOS、Windows 都能正常工作

怎么下载体验

整个流程非常简单,三步就能跑起来。

第一步,确保本地装好了 Bun。

没装过的话一行命令搞定:

curl -fsSL https://bun.sh/install | bash

装完重开一个终端,跑一下 bun --version 确认成功就行了。

第二步,把项目拉到本地:

git clone https://github.com/hanfangyuan4396/claude-code-buddy.gitcd claude-code-buddy

第三步,执行构建和启动:

npm installbun run buildbun run start

第四步,在交互界面里输入 /buddy,你的宠物就出现了。

不满意?/buddy roll 刷到你满意为止。

如果你更喜欢开发模式,可以用 bun run dev,这个命令会直接跑源码并注入运行时宏定义,不需要每次都走完整的构建流程。

几个可能用到的检查命令:

bun dist/cli.js --versionbun dist/cli.js --help

补充一点:在非交互环境下(比如 CI 或者没有 stdin 的场景),启动命令会自动回退到 --help 输出,不会因为缺少输入直接报错崩掉。

写在最后

需要特别说明的是,这个版本是基于泄露源码修复的体验版,主要用于玩宠物功能。

代码里还有不少缺失的内部实现是用占位桩文件补齐的,可能存在一些 bug 或者不稳定的地方。

如果你是日常工作开发用,还是建议使用官方正式版的 Claude Code,更稳定也更完整。

回头看整件事,其实挺有意思的。

Anthropic 在愚人节上线了宠物系统,本来就是个带着游戏心态做的开发者彩蛋。

源码泄露之后,社区里各路高手各显神通,有人扒出了稀有度机制,有人写了碰撞脚本去刷宠物。

我拿着泄露的源码和 Codex,一份 spec 文档,一套自动化测试,一个功能一个功能地把整套宠物成长系统搭了出来

每个用这个版本的人,都能轻松拥有自己的金色传说宠物。

这大概就是有源码加上 AI 编程工具之后,强度党最朴素的快乐

开源地址:https://github.com/hanfangyuan4396/claude-code-buddy

往期推
我开源了生成文字卡片的 Skill,一键生成公众号封面
X万字干货解读:Claude Code架构、治理与工程实践
如何设计 Harness 工程,实现长时间自动开发应用
微信官方突然推出Clawbot,教你如何快速接入OpenClaw
如果你也在探索AI 落地、AI 提效、AI 编程,欢迎加我交流👇

关注公众号,发送「进群」加入 AI 交流群

觉得有收获?关注 + 点赞 + 转发,你的支持是我持续输出的动力~