Claude Code Buddy 修改指南:如何获得闪光传说级宠物
Claude Code Buddy 修改指南:如何获得闪光传说级宠物
2026年4月1日,Anthropic 在 Claude Code 2.1.89 版本中悄然上线了一个彩蛋功能——/buddy 宠物系统。在终端输入 /buddy 后,一只 ASCII 风格的小动物会"孵化"在你的输入框旁边,陪你写代码、吐槽 bug。
每只 Buddy 由账号 ID 通过确定性算法生成,意味着同一个账号永远获得同一只宠物。但通过修改配置文件中的 userID,我们可以"重ROLL"出心仪的宠物。本文将详细介绍算法原理和完整的修改脚本。
一、Buddy 系统概览
18 种物种
系统目前包含 18 种可爱的物种:
- duck - račka (klasično Rubber Duck Debugging)
- goose - gos (poredna)
- blob - žele (mehka in neoblikovana)
- cat - mačka (hladna in ponosna)
- dragon - zmaj (močna zaščita)
- octopus - hobotnica (večnitno razmišljanje)
- owl - sova (modri mentor)
- penguin - pingvin (formalno prisoten)
- turtle - želva (zanesljiv in stabilen)
- snail - polž (počasno in natančno)
- ghost - duh (neviden)
- axolotl - aksolotl (prisrčen in zdravilen)
- capybara - kapibara (filozofski mojster)
- cactus - kaktus (topel rastlina)
- robot - robot (razum na prvem mestu)
- rabbit - zajec (živahen)
- mushroom - goba (tiho opazovanje)
- chonk - debeluh (okrogel)
5 级稀有度
- Common(普通) - 60% verjetnost, brez okrasnih klobukov
- Uncommon(罕见) - 25% verjetnost, odklenitev klobukov
- Rare(稀有) - 10% verjetnost, več okrasov
- Epic(史诗) - 4% verjetnost, ekskluzivni okrasi
- Legendary(传说) - 1% verjetnost, vrhunski okrasi
二、算法原理深度解析
Buddy 的生成采用确定性随机算法,核心流程如下:
1. 种子字符串拼接
const SALT = "friend-2026-401"; // 4月1日愚人节彩蛋 const key = userId + SALT;
Salt 值 friend-2026-401 中的 401 代表 4月1日——一个精心设计的愚人节彩蛋。
2. FNV-1a 32-bit 哈希
将种子字符串转换为 32 位整数:
function hashString(s) { let h = 2166136261; // FNV offset basis for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 16777619); // FNV prime } return h >>> 0; }
3. Mulberry32 PRNG
用哈希值初始化伪随机数生成器:function mulberry32(seed) { let a = seed >>> 0; return function() { a |= 0; a = (a + 0x6d2b79f5) | 0; let t = Math.imul(a ^ (a >>> 15), 1 | a); t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; }
Mulberry32 je pogosto uporabljena lahka PRNG v razvoju iger, primerna za proceduralno generiranje in tabele padcev plena.
4. Redčenje redkosti (ključnega pomena!)
const RARITIES = ["common", "uncommon", "rare", "epic", "legendary"]; const RARITYWEIGHTS = { common: 60, uncommon: 25, rare: 10, epic: 4, legendary: 1 };
function rollRarity(rng) { const total = 60 + 25 + 10 + 4 + 1; // = 100 let roll = rng() * total; for (const rarity of RARITIES) { roll -= RARITYWEIGHTS[rarity]; if (roll < 0) return rarity; } return "common"; }
重要:RARITIES 数组的顺序必须是从低到高,这是加权随机选择的标准实现。
三、完整 Reroll 脚本
以下脚本可以搜索并生成闪光传说级 Buddy 的 userID:
// Claude Code Buddy Reroll 脚本 // 基于 Claude Code 源码逆向分析
// FNV-1a 32-bit hash function hashString(s) { let h = 2166136261; for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 16777619); } return h >>> 0; }
// Mulberry32 PRNG function mulberry32(seed) { let a = seed >>> 0; return function() { a |= 0; a = (a + 0x6d2b79f5) | 0; let t = Math.imul(a ^ (a >>> 15), 1 | a); t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; }
const SPECIES = [ "duck", "goose", "blob", "cat", "dragon", "octopus", "owl", "penguin", "turtle", "snail", "ghost", "axolotl", "capybara", "cactus", "robot", "rabbit", "mushroom", "chonk" ];[[HTMLPLACEHOLDER0]] [[HTMLPLACEHOLDER1]]- Spremeni konfiguracijo: # Uredi ~/.claude.json cat ~/.claude.json | jq '.userID = "tvojnoviuserID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json
- Ponovno zaženi Claude Code,vnesi
/buddyin lahko vidiš novega ljubljenčka!
Pet, načela zasnove proti goljufanju
Zasnova Claude Code je zelo prefinjena, uporablja arhitekturo ločitev med okostjem (Bones) in dušo (Soul):
- Bones (okostje):vrsta, redkost, videz, lastnosti——vsakič se ponovno izračuna iz userID, nikoli se ne trajno shrani
- Soul (duša):ime, opis osebnosti——shranjeno v lokalni konfiguraciji
roll(userID). Opomba je zelo jasna: urejanje config.companion ne more ponarediti redkosti.
Toda userID je mogoče spremeniti, kar je bistvo metode v tem članku.
Šest, povzetek
Claude Code Buddy je skrbno zasnovana funkcija presenečenja, ki združuje:
- Deterministična naključnost:klasična kombinacija FNV-1a + Mulberry32
- Mehanizem vlečenja kart:5-stopenjska redkost + 1% bleščeče, bistvo Gacha iger
- Načrt proti goljufanju:ločitev okostja/duše, zagotavljanje poštenosti
- Aprilska šala:vrednost soli skriva časovni žig 1. aprila
Referenčni materiali:
- Uhajanje izvorne kode Claude Code 2.1.89 (napaka npm source map)
- Juejin: "Globoko raziskovanje načina Claude Code Buddy: deterministični naključni algoritem za kaktus"- DEV.to: Raztrgal sem izvorno kodo Claude

