Guia de modificació de Claude Code Buddy: com obtenir mascotes de llegenda brillants

4/2/2026
7 min read

Guia de modificació de Claude Code Buddy: com obtenir mascotes de llegenda brillants

El 1 d'abril de 2026, Anthropic va llançar discretament una funció easter egg en la versió 2.1.89 de Claude Code: /buddy sistema de mascotes. En introduir /buddy al terminal, un petit animal d'estil ASCII "eclosionarà" al costat del teu quadre d'entrada, acompanyant-te a escriure codi i comentar errors.

Cada Buddy es genera a partir de l'ID del compte mitjançant un algoritme determinista, la qual cosa significa que el mateix compte sempre obtindrà la mateixa mascota. Però mitjançant la modificació del userID en el fitxer de configuració, podem "re-ROLL" per obtenir la mascota desitjada. Aquest article detallarà el principi de l'algoritme i el script de modificació complet.

I. Visió general del sistema Buddy

18 espècies d'animals

El sistema actualment inclou 18 espècies adorables:

  • duck - ànec (clàssic Rubber Duck Debugging)

  • goose - oca (trapella)

  • blob - gelatina (suau i indefinida)

  • cat - gat (fred i orgullós)

  • dragon - drac (imponent protector)

  • octopus - pop (pensament multithread)

  • owl - mussol (mentor savi)

  • penguin - pingüí (vestit formal)

  • turtle - tortuga (estable i fiable)

  • snail - cargol (treball lent però detallat)

  • ghost - fantasma (aparició sobtada)

  • axolotl - axolot (adorable i curatiu)

  • capybara - capibara (mestre zen)

  • cactus - cactus (planta càlida)

  • robot - robot (raonament suprem)

  • rabbit - conill (ple d'energia)

  • mushroom - xampinyó (observador silenciós)

  • chonk - gros (rodó)

5 nivells de raritat

  • Comú - 60% de probabilitat, sense decoració de barret

  • Poc comú - 25% de probabilitat, desbloqueja barrets

  • Rar - 10% de probabilitat, més decoracions

  • Èpic - 4% de probabilitat, decoracions exclusives

  • Llegendari - 1% de probabilitat, decoracions de màxima qualitat
A més, hi ha una probabilitat independent del 1% de brillants (Shiny), les mascotes brillants tenen una animació de microllum de colors de l'arc de Sant Martí! La probabilitat de mascotes brillants llegendàries és 1% × 1% = 0.01%, aproximadament una de cada deu mil.

II. Anàlisi profunda del principi de l'algoritme

La generació de Buddy utilitza un algoritme aleatori determinista, el flux central és el següent:

1. Concatenació de la cadena de llavor

const SALT = "friend-2026-401"; // easter egg del 1 d'abril const key = userId + SALT;

El valor Salt friend-2026-401 conté el 401 que representa el 1 d'abril—un easter egg dissenyat curosament.

2. Hash FNV-1a de 32 bits

Convertir la cadena de llavor en un enter de 32 bits:

function hashString(s) { let h = 2166136261; // base de desplaçament FNV for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 16777619); // FNV prime } return h >>> 0; }

3. PRNG Mulberry32

Inicialitzar el generador de nombres aleatoris pseudo amb el valor hash: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 és un generador de números aleatoris lleugerament utilitzat en el desenvolupament de jocs, adequat per a la generació programada i taules de caiguda de botí.

4. Extracció de raritats (clau!)

const RARITIES = ["comú", "incomú", "rara", "èpica", "legendària"]; const RARITYWEIGHTS = { comú: 60, incomú: 25, rara: 10, èpica: 4, legendària: 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; }

// Generador de números aleatoris Mulberry32 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 = [ "ànec", "ganso", "blob", "gat", "drac", "polp", "òliba", "pingüí", "tortuga", "caragol", "fantasma", "axolotl", "capibara", "cactus", "robot", "conill", "bolet", "chonk" ];const RARITIES = ["comú", "incomú", "rara", "èpica", "legendària"];\nconst RARITYWEIGHTS = { comú: 60, incomú: 25, rara: 10, èpica: 4, legendària: 1 };\nconst SALT = "amic-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 "comú";\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// Cerca de llegendes brillants\nconsole.log("Cerca de llegendes brillants 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 === "legendària" && result.shiny) {\n if (!targetSpecies || result.species === targetSpecies) {\n console.log("S'ha trobat!");\n console.log("Espècie:", result.species);\n console.log("Raritat: Llegendària");\n console.log("Brillant: Sí!");\n console.log("userID:", userId);\n break;\n }\n }\n}\n\n## Quatre, passos d'ús\n\n- Desa el script: Desa el codi anterior com a buddy-reroll.js\n\n- Executa el script: node buddy-reroll.js (es pot especificar l'espècie: node buddy-reroll.js dragon)\n\n- Copia el userID: El script mostrarà un userID de Buddy de nivell llegendari brillant.- Modificar la configuració# Edita ~/.claude.json cat ~/.claude.json | jq '.userID = "el teu nou userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

  • Reinicia Claude Code,introduïu /buddy i podreu veure la nova mascota!

V. Principi de disseny contra el frau

El disseny de Claude Code és molt enginyós, utilitzant una arquitectura de separació entre l'esquelet (Bones) i l'ànima (Soul)

  • Bones (esquelet):espècie, raritat, aparença, atributs——cada vegada es recalcula a partir del userID, mai es persisteix

  • Soul (ànima):nom, descripció de la personalitat——es persisteix a la configuració local
Això significa que fins i tot si edites directament el camp rarity del fitxer de configuració, el sistema el sobreescriurà amb el resultat de roll(userID) quan el llegeixi. El comentari és molt clar: editing config.companion can't fake a rarity.

Però el userID en si mateix es pot modificar, que és on rau el principi del mètode d'aquest article.

VI. Resum

Claude Code Buddy és una funció d' Easter egg dissenyada amb cura, que fusiona:

  • Aleatorietat determinista:la combinació clàssica de FNV-1a + Mulberry32

  • Mecanisme de tirada:raritat de 5 nivells + 1% de brillantor, l'essència dels jocs Gacha

  • Disseny contra el frau:separació entre esquelet/ànima, assegurant la justícia

  • Easter egg del Dia dels Innocents:el valor de salt amaga un segell temporal de l'1 d'abril
Ara aneu a provar-ho! Us desitgem que obtingueu el Buddy llegendari brillant que desitgeu!

Fonts de referència:

  • Filtració del codi font de Claude Code 2.1.89 (accident del mapa de fonts npm)

  • Jueu: "Desenterrant el mode Claude Code Buddy: un algoritme d'aleatorietat determinista darrere d'un cactus"- DEV.to: Vaig desmuntar el codi font de Claude
Published in Technology

You Might Also Like