起因
折腾 Claude Code 的时候发现了 /buddy 这个彩蛋——输入后 系统 会根据你本地配置里的 userID 分配一只专属宠物,有鸭子、水豚、机器人等 18 种,还带稀有度系统。
稀有度共五级,概率差距很大:
稀有度 星级 权重 概率 Common ★ 60 60% Uncommon ★★ 25 25% Rare ★★★ 10 10% Epic ★★★★ 4 4% Legendary ★★★★★ 1 1%想自然抽到 Legendary,平均要碰 100 次;再叠上物种概率(18 种之一),碰到指定 Legendary 宠物平均得 1800 次。
翻了下源码逻辑,发现宠物完全由 userID 决定,是一个确定性的过程——同一个 ID 永远出同一只宠物。既然如此,直接在本地暴力枚举 ID,找到目标结果写进配置就行了。
说明:折腾彩蛋,仅供学习伪随机机制原理。
原理
宠物怎么决定的宠物分配逻辑大致是这样:
读取本地 ~/.claude.json 里的 userID,拼上一个固定的 SALT 字符串 对拼接结果取哈希,作为 mulberry32 伪随机数生成器的种子 用这个 RNG 依次"抽"稀有度和物种关键点:userID 固定 → 种子固定 → 宠物固定,不存在随机性,是纯粹的映射关系。
SALT 值const SALT = 'friend-2026-401'
js
1这个值硬编码在逻辑里,配合 userID 一起决定最终的随机种子。
思路枚举大量随机 userID → 模拟 宠物分配逻辑 → 找到目标物种 + Legendary 的那个 ID → 写入配置文件。
脚本组成
两个文件放同一目录:
文件 作用 buddy-reroll-bun.js 核心搜索逻辑,用 Bun 运行,枚举 UID buddy-reroll.sh Bash 入口,调用 JS 并自动写入配置文件环境准备
安装 Buncurl -fsSL https://bun.sh/install | bash
bash
1验证安装:
bun --version
bash
1 确认依赖 bun ✅ python3 ✅(系统自带,用于修改 JSON 配置) ~/.claude.json ✅(启动过一次 Claude Code 后自动生成)代码解读
buddy-reroll-bun.js物种列表和稀有度 权重 :
const SPECIES = ['duck','goose','blob','cat'
js

已于 2026-04-01 20:21:04 修改 · 733 阅读