Claude Code Buddy izmjena vodič: kako dobiti sjajnog legendarno ljubimca

4/2/2026
6 min read

Claude Code Buddy izmjena vodič: kako dobiti sjajnog legendarno ljubimca

  • travnja 2026., Anthropic je tiho pokrenuo funkciju uskršnjeg jajeta u verziji Claude Code 2.1.89 - /buddy sustav ljubimaca. Kada u terminal upišete /buddy, mala životinja u ASCII stilu će "izlegnuti" pored vašeg ulaznog okvira, prateći vas dok pišete kod i komentirate bugove.
  • Svaki Buddy generira se putem ID-a računa pomoću determinističkog algoritma, što znači da će isti račun zauvijek dobiti istog ljubimca. No, mijenjanjem userID-a u konfiguracijskoj datoteci, možemo "ponovno ROLL" dobiti željenog ljubimca. Ovaj članak će detaljno objasniti princip algoritma i potpuni skript za izmjenu.

    I. Pregled Buddy sustava

    18 vrsta ljubimaca

    Sustav trenutno sadrži 18 slatkih vrsta:

    • duck - patka (klasično Rubber Duck Debugging)

    • goose - guska (nevaljalac)

    • blob - žele (mekan i neodređen)

    • cat - mačka (hladna i ponosna)

    • dragon - zmaj (moćna zaštita)

    • octopus - hobotnica (višedretveno razmišljanje)

    • owl - sova (mudri mentor)

    • penguin - pingvin (formalno prisustvo)

    • turtle - kornjača (stabilna i pouzdana)

    • snail - puž (polako, ali sigurno)

    • ghost - duh (neuhvatljiv)

    • axolotl - aksolotl (sladak i ljekovit)

    • capybara - kapibara (miran majstor)

    • cactus - kaktus (topla biljka)

    • robot - robot (racionalnost na prvom mjestu)

    • rabbit - zec (živahno)

    • mushroom - gljiva (tiho promatranje)

    • chonk - debeljko (okrugli)

    5 razina rijetkosti

    • Common (običan) - 60% vjerojatnost, bez ukrasa

    • Uncommon (rijedak) - 25% vjerojatnost, otključava šešire

    • Rare (rijetko) - 10% vjerojatnost, više ukrasa

    • Epic (epičan) - 4% vjerojatnost, ekskluzivni ukrasi

    • Legendary (legendarno) - 1% vjerojatnost, vrhunski ukrasi
    Osim toga, postoji neovisna 1% sjajna (Shiny) vjerojatnost, sjajni ljubimci imaju animaciju s duškom boje! Vjerojatnost sjajnog legendarno ljubimca je 1% × 1% = 0.01%, otprilike jedan od deset tisuća.

    II. Dubinska analiza principa algoritma

    Generiranje Buddy-a koristi deterministički slučajni algoritam, osnovni proces je sljedeći:

    1. Spajanje seed stringa

    const SALT = "friend-2026-401"; // Uskršnje jaje za 1. travnja const key = userId + SALT;

    Salt vrijednost friend-2026-401 sadrži 401 što predstavlja 1. travnja - pažljivo dizajnirano uskršnje jaje.

    2. FNV-1a 32-bitni hash

    Pretvara seed string u 32-bitni cijeli broj:

    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

    Inicijalizacija generatora pseudo-slučajnih brojeva s hash vrijednošću: 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šten lagani PRNG u razvoju igara, pogodan za proceduralno generiranje i tablice za ispadanje plijena.

    4. Izvlačenje rijetkosti (ključna stvar!)

    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"]; const RARITYWEIGHTS = { common: 60, uncommon: 25, rare: 10, epic: 4, legendary: 1 }; const SALT = "friend-2026-401"; function pick(rng, arr) { return arr[Math.floor(rng() arr.length)]; } function rollRarity(rng) { const total = Object.values(RARITYWEIGHTS).reduce((a, b) => a + b, 0); let roll = rng() total; for (const rarity of RARITIES) { roll -= RARITY_WEIGHTS[rarity]; if (roll < 0) return rarity; } return "common"; } function testUserId(userId) { const key = userId + SALT; const seed = hashString(key); const rng = mulberry32(seed); const rarity = rollRarity(rng); const species = pick(rng, SPECIES); const shiny = rng() < 0.01; return { rarity, species, shiny }; } function randomUserId() { let id = ""; for (let i = 0; i < 64; i++) { id += Math.floor(Math.random() 16).toString(16); } return id; } // Pretraži sjajnu legendu console.log("Pretraži sjajnu legendu Buddy...\n"); const targetSpecies = process.argv[2] || null; while (true) { const userId = randomUserId(); const result = testUserId(userId); if (result.rarity === "legendary" && result.shiny) { if (!targetSpecies || result.species === targetSpecies) { console.log("Pronađeno!"); console.log("Vrsta:", result.species); console.log("Rijetkost: Legendarno"); console.log("Sjajno: Da!"); console.log("userID:", userId); break; } } } // Četiri, koraci korištenja - Spremite skriptu: Spremite gornji kod kao buddy-reroll.js - Pokrenite skriptu: node buddy-reroll.js (možete odrediti vrstu: node buddy-reroll.js dragon) - Kopirajte userID: Skripta će ispisati userID sjajnog legendarno Buddy-a.- Promijeni konfiguraciju# Uredi ~/.claude.json cat ~/.claude.json | jq '.userID = "tvoj novi userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

    • Ponovno pokreni Claude Code,upiši /buddy i vidjet ćeš novog ljubimca!

    Pet, načelo dizajna protiv prevara

    Dizajn Claude Code-a je vrlo pametan, koristi odvajanje kostura (Bones) i duše (Soul):

    • Bones(kostur):vrsta, rijetkost, izgled, atributi——svaki put se izračunava iz userID-a, nikada se ne pohranjuje

    • Soul(duša):ime, opis karaktera——pohranjuje se u lokalnu konfiguraciju
    To znači da čak i ako izravno uređuješ polje rarity u konfiguracijskoj datoteci, sustav će prilikom čitanja prebrisati rezultat s roll(userID). Komentar je vrlo jasan: uređivanje config.companion ne može lažirati rijetkost.

    Ali userID se može mijenjati, što je princip metode u ovom članku.

    Šest, zaključak

    Claude Code Buddy je pažljivo dizajnirana uskršnja jaja, koja kombinira:

    • Deterministički slučajni:klasična kombinacija FNV-1a + Mulberry32

    • Mehanizam izvlačenja:5 razina rijetkosti + 1% sjaj, suština Gacha igara

    • Dizajn protiv prevara:odvajanje kostura/duše, osiguranje pravednosti

    • Uskršnja jaja:salt vrijednost skriva vremensku oznaku 1. travnja
    Isprobaj odmah! Želim ti sreću u pronalaženju željenog sjajnog legendarne Buddy!

    Izvori:

    • Claude Code 2.1.89 izvorni kod procurio (npm source map incident)

    • Juejin: "Dubinsko istraživanje Claude Code Buddy moda: deterministički slučajni algoritam iza kaktusa"- DEV.to: Raskrinkao sam izvorni kod Claudea
    Published in Technology

    You Might Also Like