Claude Code Buddy ändringsguide: Hur man får glänsande legendariska husdjur

4/2/2026
6 min read

Claude Code Buddy ändringsguide: Hur man får glänsande legendariska husdjur

Den 1 april 2026 lanserade Anthropic i tysthet en påskäggsfunktion i version 2.1.89 av Claude Code – /buddy husdjurssystemet. När du skriver in /buddy i terminalen kommer ett ASCII-stiligt litet djur att "kläckas" bredvid din inmatningsruta, och hålla dig sällskap när du skriver kod och klagar på buggar.

Varje Buddy genereras av konto-ID genom en deterministisk algoritm, vilket innebär att samma konto alltid får samma husdjur. Men genom att ändra userID i konfigurationsfilen kan vi "rerolla" det husdjur vi önskar. Denna artikel kommer att gå igenom algoritmens principer och den kompletta ändringsskriptet.

I. Översikt över Buddy-systemet

18 arter

Systemet innehåller för närvarande 18 söta arter:

  • duck - Anka (klassisk Rubber Duck Debugging)

  • goose - Gås (busig)

  • blob - Gelé (mjukt och odefinierat)

  • cat - Katt (kylig och stolt)

  • dragon - Draken (mäktig beskyddare)

  • octopus - Bläckfisk (multitasking)

  • owl - Uggla (vis mentor)

  • penguin - Pingvin (formellt klädd)

  • turtle - Sköldpadda (stabil och pålitlig)

  • snail - Snigel (långsam men noggrann)

  • ghost - Spöke (svårfångad)

  • axolotl - Axolotl (söt och helande)

  • capybara - Kapybara (zenmästare)

  • cactus - Kaktus (värmande växt)

  • robot - Robot (rationell överlägsenhet)

  • rabbit - Kanin (livlig)

  • mushroom - Svamp (tyst observatör)

  • chonk - Tjockis (rund och söt)

5 nivåer av sällsynthet

  • Common (Vanlig) - 60% chans, utan hattdekorationer

  • Uncommon (Ovanlig) - 25% chans, låser upp hattar

  • Rare (Sällsynt) - 10% chans, fler dekorationer

  • Epic (Episk) - 4% chans, exklusiva dekorationer

  • Legendary (Legendarisk) - 1% chans, toppdekorationer
Dessutom finns det en separat 1% chans för glänsande (Shiny), glänsande husdjur har en regnbågsfärgad glödande animation! Chansen för glänsande legendariska husdjur är 1% × 1% = 0.01%, ungefär en på tiotusen.

II. Djupgående analys av algoritmens principer

Genereringen av Buddy använder en deterministisk slumpmässig algoritm, kärnprocessen är som följer:

1. Sammanfogning av frösträngar

const SALT = "friend-2026-401"; // 1 april aprilskämt const key = userId + SALT;

Saltvärdet friend-2026-401 representerar 401, vilket står för den 1 april – ett noggrant utformat aprilskämt.

2. FNV-1a 32-bit hash

Konvertera frösträngen till ett 32-bit heltal:

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

Initiera den pseudorandomiserade talgeneratorn med hashvärdet: 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 är en lättviktig PRNG som ofta används inom spelutveckling, lämplig för procedurgenerering och loot-drop-tabeller.

4. Sällsynthetsdragning (Viktigt!)

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]]

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; }

// Sök efter shiny legendary console.log("Söker efter shiny legendary 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("Hittad!"); console.log("Art:", result.species); console.log("Sällsynthet: Legendary"); console.log("Shiny: Ja!"); console.log("userID:", userId); break; } } }- Ändra konfiguration# Redigera ~/.claude.json cat ~/.claude.json | jq '.userID = "din nya userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

  • Starta om Claude Code,skriv /buddy för att se ditt nya husdjur!

Fem, principer för fuskdesign

Claude Code är designat på ett mycket smart sätt, med en arkitektur som använder skelett (Bones) och själ (Soul) separerat:

  • Bones(skelett):art, sällsynthet, utseende, attribut——beräknas om varje gång från userID, aldrig persistent

  • Soul(själ):namn, karaktärsbeskrivning——persistent i lokal konfiguration
Detta innebär att även om du direkt redigerar rarity-fältet i konfigurationsfilen, kommer systemet att överskriva det med resultatet av roll(userID) vid läsning. Kommentaren är mycket tydlig: editing config.companion can't fake a rarity.

Men userID kan ändras, och det är principen bakom metoden i denna artikel.

Sex, sammanfattning

Claude Code Buddy är en välutformad påskäggsfunktion som kombinerar:

  • Deterministisk slumpmässighet:FNV-1a + Mulberry32s klassiska kombination

  • Kortdragning mekanism:5 nivåer av sällsynthet + 1% glittrande, essensen av Gacha-spel

  • Fuskdesign:skelett/själ separerat, säkerställer rättvisa

  • Aprilskämt påskägg:saltvärdet döljer en tidsstämpel från den 1 april
Gå och prova nu! Lycka till med att dra ditt önskade glittrande legendariska Buddy!

Referensmaterial:

  • Claude Code 2.1.89 källkodsläckage (npm source map-incident)

  • Juejin: "Djupdykning i Claude Code Buddy-läget: en kaktus bakom den deterministiska slumpmässiga algoritmen"- DEV.to: Jag rev isär källkoden för Claude
Published in Technology

You Might Also Like