Claude Code Buddy модификација: Како добити сјајног легендарног љубимца
Claude Code Buddy модификација: Како добити сјајног легендарног љубимца
/buddy, а поред вашег улазног поља ће се "излегнути" мали ASCII стил животиња, који ће вас пратити у писању кода и коментарисању багова.Сваки Buddy се генерише помоћу ID-а налога кроз детерминистички алгоритам, што значи да исти налог увек добија истог љубимца. Међутим, изменом userID у конфигурационом фајлу, можемо "преокренути" жељеног љубимца. У овом чланку ћемо детаљно објаснити принцип алгоритма и комплетан скрипт за измену.
I. Преглед Buddy система
18 врста животиња
Систем тренутно садржи 18 слатких врста:
- duck - патка (класично Rubber Duck Debugging)
- goose - гуска (неваљао)
- blob - желатин (мекан и неформалан)
- cat - мачка (хладна и поносна)
- dragon - змај (моћна заштита)
- octopus - хоботница (мултитаскинг)
- owl - сова (мудри ментор)
- penguin - пингвин (обучен за догађаје)
- turtle - корњача (поуздана и стабилна)
- snail - пужева (споро али сигурно)
- ghost - дух (неухватљив)
- axolotl - аксолотл (слатко и исцељујуће)
- capybara - капибара (филозофски мајстор)
- cactus - кактус (топла биљка)
- robot - робот (рационалност на првом месту)
- rabbit - зец (пун енергије)
- mushroom - печурка (тихо посматрање)
- chonk - дебељко (округли)
5 нивоа реткости
- Common (обичан) - 60% шансе, без декорације у облику шешира
- Uncommon (реткост) - 25% шансе, откључава шешир
- Rare (реткост) - 10% шансе, више декорација
- Epic (епски) - 4% шансе, ексклузивна декорација
- Legendary (легендарни) - 1% шансе, врхунска декорација
II. Дубинска анализа принципа алгоритма
Генерација Buddy користи детерминистичку случајност алгоритам, основни процес је следећи:
1. Спојена семенска стринг
const SALT = "friend-2026-401"; // 1. април, изненађење за дан лудака const key = userId + SALT;
Salt вредност friend-2026-401 у себи садржи 401, што представља 1. април — пажљиво дизајнирано изненађење за дан лудака.
2. FNV-1a 32-битни хеш
Преобразите семенску стринг у 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 često korišćen lagani PRNG u razvoju igara, pogodan za proceduralno generisanje i tabele za ispadanje pljačke.
4. Ekstrakcija retkosti (ključna!)
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" ];const RARITIES = ["common", "uncommon", "rare", "epic", "legendary"];\nconst RARITYWEIGHTS = { common: 60, uncommon: 25, rare: 10, epic: 4, legendary: 1 };\nconst SALT = "friend-2026-401";\n\nfunction pick(rng, arr) {\n return arr[Math.floor(rng() arr.length)];\n}\n\nfunction rollRarity(rng) {\n const total = Object.values(RARITYWEIGHTS).reduce((a, b) => a + b, 0);\n let roll = rng() total;\n for (const rarity of RARITIES) {\n roll -= RARITYWEIGHTS[rarity];\n if (roll < 0) return rarity;\n }\n return "common";\n}\n\nfunction testUserId(userId) {\n const key = userId + SALT;\n const seed = hashString(key);\n const rng = mulberry32(seed);\n const rarity = rollRarity(rng);\n const species = pick(rng, SPECIES);\n const shiny = rng() < 0.01;\n return { rarity, species, shiny };\n}\n\nfunction randomUserId() {\n let id = "";\n for (let i = 0; i < 64; i++) {\n id += Math.floor(Math.random() 16).toString(16);\n }\n return id;\n}\n\n// Pretraži sjajnog legendarno\nconsole.log("Pretražujem sjajnog legendarno Buddy...\n");\nconst targetSpecies = process.argv[2] || null;\n\nwhile (true) {\n const userId = randomUserId();\n const result = testUserId(userId);\n\n if (result.rarity === "legendary" && result.shiny) {\n if (!targetSpecies || result.species === targetSpecies) {\n console.log("Pronađeno!");\n console.log("Vrsta:", result.species);\n console.log("Retkost: legendarno");\n console.log("Sjajno: Da!");\n console.log("userID:", userId);\n break;\n }\n }\n}\n\n## Četiri, koraci korišćenja\n\n- Sačuvajte skriptu: Sačuvajte gornji kod kao buddy-reroll.js\n\n- Pokrenite skriptu: node buddy-reroll.js (možete odrediti vrstu: node buddy-reroll.js dragon)\n\n- Kopirajte userID: Skripta će ispisati userID sjajnog legendarno Buddy-a- Izmena konfiguracije: # Uredi ~/.claude.json cat ~/.claude.json | jq '.userID = "tvojnovi_userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json
- Ponovo pokreni Claude Code,ukucaj
/buddyda vidiš novog ljubimca!
Pet, Princip dizajna protiv prevara
Dizajn Claude Code-a je veoma pametan, koristi separaciju između kostura (Bones) i duše (Soul):
- Bones(kostur):vrsta, retkost, izgled, atributi——svaki put se ponovo izračunava iz userID-a, nikada se ne čuva
- Soul(duša):ime, opis karaktera——čuva se lokalno u konfiguraciji
roll(userID). Komentar je vrlo jasan: editing config.companion can't fake a rarity.
Ali userID se može menjati, što je suština metode u ovom tekstu.
Šest, Zaključak
Claude Code Buddy je pažljivo dizajnirana easter egg funkcija, koja kombinuje:
- Deterministički slučajni:klasična kombinacija FNV-1a + Mulberry32
- Mehanizam izvlačenja:5 nivoa retkosti + 1% sjaj, suština Gacha igara
- Dizajn protiv prevara:separacija kostura/duše, osiguranje pravednosti
- Aprilska šala:salt vrednost skriva vremensku oznaku 1. aprila
Reference:
- Claude Code 2.1.89 curenje izvornog koda (npm source map incident)
- Juejin: "Duboko istraživanje Claude Code Buddy moda: deterministički slučajni algoritam iza kaktusa"- DEV.to: Rasklopio sam izvorni kod Claude-a

