Claude Code Buddy úpravy: Jak získat lesklého legendárního mazlíčka

4/2/2026
6 min read

Claude Code Buddy úpravy: Jak získat lesklého legendárního mazlíčka

  • dubna 2026, Anthropic tiše spustil v verzi Claude Code 2.1.89 funkci Easter Egg - /buddy systém mazlíčků. Po zadání /buddy do terminálu se vedle tvého vstupního pole "vylíhne" malý ASCII styl zvířátka, které tě bude doprovázet při psaní kódu a komentování chyb.
  • Každý Buddy je generován pomocí deterministického algoritmu na základě ID účtu, což znamená, že stejný účet vždy získá stejného mazlíčka. Ale změnou userID v konfiguračním souboru můžeme "přehodit" mazlíčka, kterého si přejeme. Tento článek podrobně popisuje princip algoritmu a kompletní úpravy skriptu.

    I. Přehled systému Buddy

    18 druhů zvířat

    Systém v současnosti obsahuje 18 roztomilých druhů:

    • duck - kachna (klasické Rubber Duck Debugging)

    • goose - husa (neposlušná)

    • blob - želé (měkké a neforemné)

    • cat - kočka (vznešená a hrdá)

    • dragon - drak (dominantní ochránce)

    • octopus - chobotnice (vícevláknové myšlení)

    • owl - sova (moudrý mentor)

    • penguin - tučňák (formálně oblečený)

    • turtle - želva (stabilní a spolehlivá)

    • snail - hlemýžď (pomalu, ale jistě)

    • ghost - duch (neviditelný)

    • axolotl - axolotl (roztomilý a léčivý)

    • capybara - kapybara (zenový mistr)

    • cactus - kaktus (srdečná rostlina)

    • robot - robot (racionalita na prvním místě)

    • rabbit - králík (skákající a živý)

    • mushroom - houbu (tiše pozorující)

    • chonk - tlouštík (kulatý a roztomilý)

    5 úrovní vzácnosti

    • Common (běžný) - 60% pravděpodobnost, bez dekorace na klobouku

    • Uncommon (vzácný) - 25% pravděpodobnost, odemknutí klobouku

    • Rare (vzácný) - 10% pravděpodobnost, více dekorací

    • Epic (epický) - 4% pravděpodobnost, exkluzivní dekorace

    • Legendary (legendární) - 1% pravděpodobnost, špičkové dekorace
    Kromě toho existuje samostatná 1% pravděpodobnost lesklého (Shiny), lesklí mazlíčci mají duhovou animaci! Pravděpodobnost lesklého legendárního mazlíčka je 1% × 1% = 0.01%, přibližně jedna z deseti tisíc.

    II. Hluboká analýza principu algoritmu

    Generování Buddy používá deterministický náhodný algoritmus, hlavní proces je následující:

    1. Sestavení seed řetězce

    const SALT = "friend-2026-401"; // Velikonoční vajíčko 1. dubna const key = userId + SALT;

    Hodnota Salt friend-2026-401 obsahuje 401, což představuje 1. dubna - pečlivě navržené velikonoční vajíčko.

    2. FNV-1a 32-bit hash

    Převeďte seed řetězec na 32-bitové celé číslo:

    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

    Inicializujte generátor pseudonáhodných čísel pomocí hash hodnoty: 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 lehký PRNG běžně používaný ve vývoji her, vhodný pro procedurální generování a tabulky pádů kořisti.

    4. Výběr vzácnosti (klíčové!)

    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; } // Hledání lesklých legendárních Pokémonů console.log("Hledání lesklých legendárních Pokémonů 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("Našel jsem!"); console.log("Druh:", result.species); console.log("Rarita: Legendární"); console.log("Lesklý: Ano!"); console.log("userID:", userId); break; } } }- Úprava konfigurace# Upravte ~/.claude.json cat ~/.claude.json | jq '.userID = "tvůj nový userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

    • Restartujte Claude Code,zadejte /buddy a uvidíte nového mazlíčka!

    V. Principy proti podvodům

    Design Claude Code je velmi chytrý, používá architekturu oddělení kostry (Bones) a duše (Soul):

    • Bones(kostra):druh, vzácnost, vzhled, atributy——každý výpočet se provádí z userID, nikdy se neukládá

    • Soul(duše):jméno, popis osobnosti——ukládá se do místní konfigurace
    To znamená, že i když přímo upravíte pole rarity v konfiguračním souboru, systém při čtení použije výsledek roll(userID) k přepsání. Komentář je velmi jasný: úprava config.companion nemůže simulovat vzácnost.

    Ale userID samotné lze upravit, což je princip metody v tomto článku.

    VI. Shrnutí

    Claude Code Buddy je pečlivě navržená funkce Easter egg, která kombinuje:

    • Deterministickou náhodnost:klasická kombinace FNV-1a + Mulberry32

    • Mechanismus tahání karet:5 úrovní vzácnosti + 1% lesklé, esence Gacha her

    • Design proti podvodům:oddělení kostry/duše, zajištění spravedlnosti

    • Aprílový Easter egg:salt hodnota skrývá časovou značku 1. dubna
    Teď to vyzkoušejte! Přejeme vám, abyste vytáhli svého vysněného lesklého legendárního Buddy!

    Reference:

    • Únik zdrojového kódu Claude Code 2.1.89 (nehoda s npm source map)

    • Juejin: „Hloubková analýza režimu Claude Code Buddy: deterministický náhodný algoritmus za kaktusem“- DEV.to: Rozebral jsem zdrojový kód Claude
    Published in Technology

    You Might Also Like