Claude Code Buddy muutmise juhend: Kuidas saada sädelevat legendaarset lemmiklooma
Claude Code Buddy muutmise juhend: Kuidas saada sädelevat legendaarset lemmiklooma
/buddy sisestades "hakkab" ASCII stiilis väike loom ilmuma sinu sisestusvälja kõrvale, et sind koodimist kirjutades ja bug'e kommenteerides saatma.Iga Buddy genereeritakse konto ID kaudu deterministliku algoritmi abil, mis tähendab, et sama konto saab alati sama lemmiklooma. Kuid muutes konfiguratsioonifailis userID, saame "uuesti ROLLida" soovitud lemmiklooma. Käesolev artikkel tutvustab üksikasjalikult algoritmi põhimõtteid ja täielikku muutmis skripti.
I. Buddy süsteemi ülevaade
18 liiki loomade
Süsteem sisaldab praegu 18 toredat liiki:
- duck - part (klassikaline Rubber Duck Debugging)
- goose - hani (tüütus)
- blob - geel (pehme ja ebamugav)
- cat - kass (külm ja uhke)
- dragon - draakon (võimas kaitsja)
- octopus - kaheksajalg (mitme lõime mõtlemine)
- owl - öökull (tark mentor)
- penguin - pingviin (ülikonnas kohal)
- turtle - kilpkonn (stabiilne ja usaldusväärne)
- snail - limukas (aeglane ja hoolikas)
- ghost - kummitus (salapärane)
- axolotl - axolotl (armas ja raviv)
- capybara - kapibara (rahulik meister)
- cactus - kaktus (soojendav taim)
- robot - robot (ratsionaalne)
- rabbit - jänes (elav ja energiline)
- mushroom - seen (vaikselt jälgiv)
- chonk - paksu (ümmargune)
5 taset haruldust
- Common (tavaline) - 60% tõenäosus, ilma mütsita kaunistusteta
- Uncommon (haruldane) - 25% tõenäosus, mütsi avamine
- Rare (haruldane) - 10% tõenäosus, rohkem kaunistusi
- Epic (epiline) - 4% tõenäosus, eksklusiivne kaunistus
- Legendary (legendaarne) - 1% tõenäosus, tipptasemel kaunistus
II. Algoritmi põhimõtte süvaanalüüs
Buddy genereerimine kasutab deterministlikku juhuslikku algoritmi, põhiprotsess on järgmine:
1. Seemne stringi ühendamine
const SALT = "friend-2026-401"; // 1. aprilli aprillinalja muna const key = userId + SALT;
Soola väärtus friend-2026-401 numbriga 401 tähistab 1. aprilli — hoolikalt kavandatud aprillinalja muna.
2. FNV-1a 32-bitine hash
Muutke seemne string 32-bitiseks täisarvuks:
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
Algatage valejuhuslik arvu generaator hash väärtusega: 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 on mängude arenduses sageli kasutatav kerge PRNG, mis sobib programmiliseks genereerimiseks ja saagikuse langetamiseks.
4. Haruldusaste tõmbamine (oluline!)
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; } // Otsige sära legendi console.log("Otsige sära legendi 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("Leitud!"); console.log("Liik:", result.species); console.log("Haruldus: Legendaarne"); console.log("Sära: Jah!"); console.log("userID:", userId); break; } } }- Muuda seadistusi: # Redigeeri ~/.claude.json cat ~/.claude.json | jq '.userID = "sinu uus userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json
- Taaskäivita Claude Code,sisesta
/buddyja näed uut lemmiklooma!
V. Pettusevastase disaini põhimõtted
Claude Code'i disain on väga nutikas, kasutades luustiku (Bones) ja hinge (Soul) eraldamise arhitektuuri:
- Bones(luustik):liik, haruldus, välimus, omadused——iga kord arvutatakse userID põhjal uuesti, kunagi ei salvestata
- Soul(hing):nimi, iseloomu kirjeldus——salvestatakse kohalikku config'i
roll(userID) tulemusega. Kommentaar on väga selge: editing config.companion can't fake a rarity.
Aga userID-d saab muuta, see ongi selle meetodi põhimõte.
VI. Kokkuvõte
Claude Code Buddy on hoolikalt disainitud munakivifunktsioon, mis ühendab:
- Määratletud juhuslikkus:FNV-1a + Mulberry32 klassikaline kombinatsioon
- Kaarditõmbemehhanism:5. taseme haruldus + 1% särav, Gacha mängude olemus
- Pettusevastane disain:luustiku/hinge eraldamine, tagades õiglust
- Aprillinalja munakivi:soola väärtus peidab 1. aprilli ajatemplit

