Claude Code Buddy ændringsvejledning: Hvordan man får glitrende legendariske kæledyr

4/2/2026
6 min read

Claude Code Buddy ændringsvejledning: Hvordan man får glitrende legendariske kæledyr

Den 1. april 2026 lancerede Anthropic stille og roligt en påskeæg funktion i Claude Code version 2.1.89 - /buddy kæledyrssystemet. Når du indtaster /buddy i terminalen, vil et ASCII-stil lille dyr "klække" ved siden af din inputboks og holde dig med selskab mens du skriver kode og klager over bugs.

Hver Buddy genereres af konto-ID ved hjælp af en deterministisk algoritme, hvilket betyder, at den samme konto altid får det samme kæledyr. Men ved at ændre userID i konfigurationsfilen kan vi "re-Rolle" det ønskede kæledyr. Denne artikel vil detaljeret beskrive algoritmens principper og det komplette ændringsscript.

I. Buddy systemoversigt

18 arter

Systemet indeholder i øjeblikket 18 søde arter:

  • duck - And (klassisk Rubber Duck Debugging)

  • goose - Gås (drilsk)

  • blob - Gelé (blød og uformelig)

  • cat - Kat (cool og stolt)

  • dragon - Drage (mægtig beskytter)

  • octopus - Blæksprutte (multitrådet tænkning)

  • owl - Ugle (vis vejleder)

  • penguin - Pingvin (formelt til stede)

  • turtle - Skildpadde (stabil og pålidelig)

  • snail - Snegl (langsomt arbejde giver godt håndværk)

  • ghost - Spøgelse (ubemærket)

  • axolotl - Axolotl (sødt og helbredende)

  • capybara - Kapibara (zen mester)

  • cactus - Kaktus (hjertevarm plante)

  • robot - Robot (rationelt overlegen)

  • rabbit - Kanin (livlig)

  • mushroom - Svamp (stille observatør)

  • chonk - Fed fyr (rund og sød)

5 niveauer af sjældenhed

  • Common (Almindelig) - 60% sandsynlighed, ingen hat dekoration

  • Uncommon (Usædvanlig) - 25% sandsynlighed, låser op for hat

  • Rare (Sjælden) - 10% sandsynlighed, flere dekorationer

  • Epic (Episk) - 4% sandsynlighed, eksklusive dekorationer

  • Legendary (Legendarisk) - 1% sandsynlighed, top dekorationer
Derudover er der en separat 1% glitrende (Shiny) sandsynlighed, glitrende kæledyr har regnbuefarvet glitrende animation! Sandsynligheden for glitrende legendariske kæledyr er 1% × 1% = 0.01%, cirka en ud af ti tusinde.

II. Dybdegående analyse af algoritmens principper

Buddy's generering bruger deterministisk tilfældighed algoritme, hovedprocessen er som følger:

1. Sammenkædning af frøstrenge

const SALT = "friend-2026-401"; // 1. april aprilnar påskeæg const key = userId + SALT;

Saltværdien friend-2026-401 indeholder 401, som repræsenterer 1. april - et omhyggeligt designet aprilnar påskeæg.

2. FNV-1a 32-bit hash

Konverter frøstrengen til et 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

Brug hashværdien til at initialisere en pseudotilfældig talgenerator: 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 er en letvægts PRNG, der ofte bruges i spiludvikling, velegnet til proceduralt generering og loot drops.

4. Sjældenhedstræk (Nøgle!)

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 -= RARITY_WEIGHTS[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// Søg efter shiny legendariske Pokémon\nconsole.log("Søg efter shiny legendariske 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("Fundet!");\n console.log("Art:", result.species);\n console.log("Raritet: Legendarisk");\n console.log("Shiny: Ja!");\n console.log("userID:", userId);\n break;\n }\n }\n}\n\n## Fire, Brug trin\n\n- Gem scriptet: Gem ovenstående kode som buddy-reroll.js\n\n- Kør scriptet: node buddy-reroll.js (kan angive art: node buddy-reroll.js dragon)\n\n- Kopier userID: Scriptet vil udskrive et shiny legendarisk Buddy's userID- Ændre konfiguration# Rediger ~/.claude.json cat ~/.claude.json | jq '.userID = "dit nye userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

  • Genstart Claude Code,indtast /buddy for at se dit nye kæledyr!

Fem, principper for snydforebyggelse

Claude Code er designet meget smart, med en arkitektur der adskiller skelet (Bones) og sjæl (Soul):

  • Bones(skelet):arter, sjældenhed, udseende, egenskaber——beregnes hver gang fra userID, aldrig vedholdende

  • Soul(sjæl):navn, personlighedsbeskrivelse——vedholdende i lokal konfiguration
Dette betyder, at selv hvis du direkte redigerer sjældenhedsfeltet i konfigurationsfilen, vil systemet overskrive det med resultatet af roll(userID) ved læsning. Kommentarerne er meget klare: editing config.companion can't fake a rarity.

Men userID kan selv ændres, hvilket er princippet bag denne metode.

Seks, opsummering

Claude Code Buddy er en omhyggeligt designet påskeæg-funktion, der kombinerer:

  • Deterministisk tilfældighed:FNV-1a + Mulberry32s klassiske kombination

  • Korttræk mekanisme:5 niveauer af sjældenhed + 1% glimt, essensen af Gacha-spil

  • Snydforebyggende design:skelet/sjæl adskillelse, sikrer retfærdighed

  • Aprilnar påskeæg:salt værdi skjuler tidsstemplet fra 1. april
Gå nu ud og prøv det!Held og lykke med at trække dit ønskede glimtende legendariske Buddy!

Referencer:

  • Claude Code 2.1.89 kildekode lækage(npm source map hændelse)

  • Juejin:《Udforskning af Claude Code Buddy mode: en kaktus bag den deterministiske tilfældighedsalgoritme》- DEV.to: Jeg rev Claude kildekoden i stykker
Published in Technology

You Might Also Like