Guía de Modificación de Claude Code Buddy: Cómo Obtener Mascotas Legendarias Brillantes

4/2/2026
7 min read

Guía de Modificación de Claude Code Buddy: Cómo Obtener Mascotas Legendarias Brillantes

El 1 de abril de 2026, Anthropic lanzó en silencio una función oculta en la versión 2.1.89 de Claude Code: sistema de mascotas /buddy. Al ingresar /buddy en la terminal, un pequeño animal de estilo ASCII "eclosionará" al lado de tu cuadro de entrada, acompañándote mientras escribes código y comentas sobre errores.

Cada Buddy se genera a partir del ID de la cuenta mediante un algoritmo determinista, lo que significa que la misma cuenta siempre obtendrá la misma mascota. Sin embargo, al modificar el userID en el archivo de configuración, podemos "re-roll" para obtener la mascota deseada. Este artículo detallará el principio del algoritmo y el script completo de modificación.

I. Visión General del Sistema Buddy

18 Tipos de Especies

El sistema actualmente incluye 18 adorables especies:

  • duck - pato (clásico Rubber Duck Debugging)

  • goose - ganso (travieso)

  • blob - gelatina (suave y amorfa)

  • cat - gato (frío y orgulloso)

  • dragon - dragón (imponente guardián)

  • octopus - pulpo (pensamiento multihilo)

  • owl - búho (mentor sabio)

  • penguin - pingüino (vestido formal)

  • turtle - tortuga (estable y confiable)

  • snail - caracol (trabajo lento y meticuloso)

  • ghost - fantasma (apareciendo y desapareciendo)

  • axolotl - axolote (adorable y curativo)

  • capybara - capibara (maestro zen)

  • cactus - cactus (planta reconfortante)

  • robot - robot (racionalidad ante todo)

  • rabbit - conejo (vivo y saltarín)

  • mushroom - hongo (observador silencioso)

  • chonk - gordito (redondito)

5 Niveles de Rareza

  • Común - 60% de probabilidad, sin decoraciones de sombrero

  • Poco Común - 25% de probabilidad, desbloquea sombreros

  • Raro - 10% de probabilidad, más decoraciones

  • Épico - 4% de probabilidad, decoraciones exclusivas

  • Legendario - 1% de probabilidad, decoraciones de primer nivel
Además, hay una probabilidad independiente del 1% de ser Brillante (Shiny), ¡las mascotas brillantes tienen una animación de destello de colores del arcoíris! La probabilidad de una mascota legendaria brillante es 1% × 1% = 0.01%, aproximadamente una en diez mil.

II. Análisis Profundo del Principio del Algoritmo

La generación de Buddy utiliza un algoritmo de aleatoriedad determinista, el flujo central es el siguiente:

1. Concatenación de la Cadena Semilla

const SALT = "friend-2026-401"; // Huevo de pascua del 1 de abril const key = userId + SALT;

El valor de Sal "friend-2026-401" contiene el 401 que representa el 1 de abril: un huevo de pascua del día de los inocentes cuidadosamente diseñado.

2. Hash FNV-1a de 32 bits

Convierte la cadena semilla en un entero de 32 bits:

function hashString(s) { let h = 2166136261; // Base de desplazamiento 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

Inicializa el generador de números pseudoaleatorios con 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 es un generador de números aleatorios ligero comúnmente utilizado en el desarrollo de juegos, adecuado para la generación programática y las tablas de botín.

4. Extracción de Rareza (¡Clave!)

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

// Generador de Números Aleatorios 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 = [ "duck", "goose", "blob", "cat", "dragon", "octopus", "owl", "penguin", "turtle", "snail", "ghost", "axolotl", "capybara", "cactus", "robot", "rabbit", "mushroom", "chonk" ];const RARITIES = ["común", "poco común", "raro", "épico", "legendario"]; const RARITYWEIGHTS = { común: 60, poco común: 25, raro: 10, épico: 4, legendario: 1 }; const SALT = "amigo-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 "común"; }

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

// Buscar Buddy legendario brillante console.log("Buscando Buddy legendario brillante... "); const targetSpecies = process.argv[2] || null;

while (true) { const userId = randomUserId(); const result = testUserId(userId);

if (result.rarity === "legendario" && result.shiny) { if (!targetSpecies || result.species === targetSpecies) { console.log("¡Encontrado!"); console.log("Especie:", result.species); console.log("Rareza: legendario"); console.log("Brillante: ¡Sí!"); console.log("userID:", userId); break; } } } }

Cuatro, Pasos a seguir

  • Guardar el script: Guarda el código anterior como buddy-reroll.js

  • Ejecutar el script: node buddy-reroll.js (puedes especificar la especie: node buddy-reroll.js dragón)

  • Copiar userID: El script generará un userID de un Buddy legendario brillante.- Modificar configuración
# Editar ~/.claude.json cat ~/.claude.json | jq '.userID = "tu nuevo userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

  • Reiniciar Claude Code,ingresa /buddy y podrás ver tu nueva mascota!

Cinco, Principios de Diseño de Prevención de Trampas

El diseño de Claude Code es muy ingenioso, adoptando una arquitectura de separación de Esqueleto (Bones) y Alma (Soul):

  • Bones (Esqueleto):especie, rareza, apariencia, atributos——cada vez se recalcula desde userID, nunca se persiste

  • Soul (Alma):nombre, descripción de personalidad——persistente en la configuración local
Esto significa que incluso si editas directamente el campo de rareza en el archivo de configuración, el sistema sobrescribirá el resultado al leerlo con roll(userID). El comentario es muy claro: editing config.companion can't fake a rarity.

Pero el userID en sí puede ser modificado, y esa es la base del método de este artículo.

Seis, Resumen

Claude Code Buddy es una función de huevo de pascua cuidadosamente diseñada, que combina:

  • Aleatoriedad Determinista:la clásica combinación de FNV-1a + Mulberry32

  • Mecanismo de Gacha:rareza de nivel 5 + 1% brillante, la esencia de los juegos Gacha

  • Diseño de Prevención de Trampas:separación de esqueleto/alma, asegurando la equidad

  • Huevo de Pascua del Día de los Inocentes:el valor de salt oculta una marca de tiempo del 1 de abril
¡Inténtalo ahora! ¡Te deseo que consigas el Buddy brillante que deseas!

Referencias:

  • Filtración de código fuente de Claude Code 2.1.89 (incidente del mapa de origen de npm)

  • Juegolandia: "Profundizando en el modo Claude Code Buddy: el algoritmo de aleatoriedad determinista detrás de un cactus"- DEV.to: Desgarré el Código Fuente de Claude
Published in Technology

You Might Also Like