Claude Code Buddy muutmise juhend: Kuidas saada sädelevat legendaarset lemmiklooma

4/2/2026
6 min read

Claude Code Buddy muutmise juhend: Kuidas saada sädelevat legendaarset lemmiklooma

  • aasta 1. aprillil tutvustas Anthropic Claude Code 2.1.89 versioonis salajast funktsiooni — /buddy lemmikloomade süsteem. Terminalis /buddy sisestades "hakkab" ASCII stiilis väike loom ilmuma sinu sisestusvälja kõrvale, et sind koodimist kirjutades ja bug'e kommenteerides saatma.
  • Iga Buddy genereeritakse konto ID kaudu deterministliku algoritmi abil, mis tähendab, et sama konto saab alati sama lemmiklooma. Kuid muutes konfiguratsioonifailis userID, saame "uuesti ROLLida" soovitud lemmiklooma. Käesolev artikkel tutvustab üksikasjalikult algoritmi põhimõtteid ja täielikku muutmis skripti.

    I. Buddy süsteemi ülevaade

    18 liiki loomade

    Süsteem sisaldab praegu 18 toredat liiki:

    • duck - part (klassikaline Rubber Duck Debugging)

    • goose - hani (tüütus)

    • blob - geel (pehme ja ebamugav)

    • cat - kass (külm ja uhke)

    • dragon - draakon (võimas kaitsja)

    • octopus - kaheksajalg (mitme lõime mõtlemine)

    • owl - öökull (tark mentor)

    • penguin - pingviin (ülikonnas kohal)

    • turtle - kilpkonn (stabiilne ja usaldusväärne)

    • snail - limukas (aeglane ja hoolikas)

    • ghost - kummitus (salapärane)

    • axolotl - axolotl (armas ja raviv)

    • capybara - kapibara (rahulik meister)

    • cactus - kaktus (soojendav taim)

    • robot - robot (ratsionaalne)

    • rabbit - jänes (elav ja energiline)

    • mushroom - seen (vaikselt jälgiv)

    • chonk - paksu (ümmargune)

    5 taset haruldust

    • Common (tavaline) - 60% tõenäosus, ilma mütsita kaunistusteta

    • Uncommon (haruldane) - 25% tõenäosus, mütsi avamine

    • Rare (haruldane) - 10% tõenäosus, rohkem kaunistusi

    • Epic (epiline) - 4% tõenäosus, eksklusiivne kaunistus

    • Legendary (legendaarne) - 1% tõenäosus, tipptasemel kaunistus
    Lisaks on olemas eraldi 1% sädelev (Shiny) tõenäosus, sädelevatel lemmikloomadel on vikerkaarevärviline säde animatsioon! Sädelevate legendaarsete lemmikloomade tõenäosus on 1% × 1% = 0.01%, umbes ühes kümnendikus.

    II. Algoritmi põhimõtte süvaanalüüs

    Buddy genereerimine kasutab deterministlikku juhuslikku algoritmi, põhiprotsess on järgmine:

    1. Seemne stringi ühendamine

    const SALT = "friend-2026-401"; // 1. aprilli aprillinalja muna const key = userId + SALT;

    Soola väärtus friend-2026-401 numbriga 401 tähistab 1. aprilli — hoolikalt kavandatud aprillinalja muna.

    2. FNV-1a 32-bitine hash

    Muutke seemne string 32-bitiseks täisarvuks:

    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

    Algatage valejuhuslik arvu generaator hash väärtusega: 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 on mängude arenduses sageli kasutatav kerge PRNG, mis sobib programmiliseks genereerimiseks ja saagikuse langetamiseks.

    4. Haruldusaste tõmbamine (oluline!)

    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; } // Otsige sära legendi console.log("Otsige sära legendi 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("Leitud!"); console.log("Liik:", result.species); console.log("Haruldus: Legendaarne"); console.log("Sära: Jah!"); console.log("userID:", userId); break; } } }- Muuda seadistusi# Redigeeri ~/.claude.json cat ~/.claude.json | jq '.userID = "sinu uus userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

    • Taaskäivita Claude Code,sisesta /buddy ja näed uut lemmiklooma!

    V. Pettusevastase disaini põhimõtted

    Claude Code'i disain on väga nutikas, kasutades luustiku (Bones) ja hinge (Soul) eraldamise arhitektuuri:

    • Bones(luustik):liik, haruldus, välimus, omadused——iga kord arvutatakse userID põhjal uuesti, kunagi ei salvestata

    • Soul(hing):nimi, iseloomu kirjeldus——salvestatakse kohalikku config'i
    See tähendab, et isegi kui sa otse redigeerid config faili haruldusvälja, siis süsteem ületab selle lugemisel roll(userID) tulemusega. Kommentaar on väga selge: editing config.companion can't fake a rarity.

    Aga userID-d saab muuta, see ongi selle meetodi põhimõte.

    VI. Kokkuvõte

    Claude Code Buddy on hoolikalt disainitud munakivifunktsioon, mis ühendab:

    • Määratletud juhuslikkus:FNV-1a + Mulberry32 klassikaline kombinatsioon

    • Kaarditõmbemehhanism:5. taseme haruldus + 1% särav, Gacha mängude olemus

    • Pettusevastane disain:luustiku/hinge eraldamine, tagades õiglust

    • Aprillinalja munakivi:soola väärtus peidab 1. aprilli ajatemplit
    Proovi nüüd järele! Soovin, et sa saaksid oma soovitud särava legendaarse Buddy!- DEV.to: Ma rebenesin Claude koodi allikakoodi

    Published in Technology

    You Might Also Like