Claude Code Buddy 수정 가이드: 어떻게 반짝이는 전설급 애완동물을 얻을 수 있을까

4/2/2026
6 min read

Claude Code Buddy 수정 가이드: 어떻게 반짝이는 전설급 애완동물을 얻을 수 있을까

2026년 4월 1일, Anthropic은 Claude Code 2.1.89 버전에서 조용히 이스터 에그 기능인 /buddy 애완동물 시스템을 출시했습니다. 터미널에 /buddy를 입력하면 ASCII 스타일의 작은 동물이 당신의 입력 창 옆에서 "부화"되어 코드를 작성하고 버그에 대해 불평하는 데 동행합니다.

각 Buddy는 계정 ID를 통해 결정론적 알고리즘으로 생성되며, 이는 동일한 계정이 항상 같은 애완동물을 얻는다는 것을 의미합니다. 그러나 구성 파일의 userID를 수정함으로써 우리는 원하는 애완동물을 "재롤"할 수 있습니다. 본문에서는 알고리즘 원리와 완전한 수정 스크립트를 자세히 설명합니다.

1. Buddy 시스템 개요

18종의 생물종

현재 시스템에는 18종의 귀여운 생물종이 포함되어 있습니다:

  • duck - 오리 (고전적인 Rubber Duck Debugging)

  • goose - 거위 (장난꾸러기)

  • blob - 젤리 (부드럽고 불규칙한 형태)

  • cat - 고양이 (차가운 자존심)

  • dragon - 드래곤 (위엄 있는 수호자)

  • octopus - 문어 (다중 스레드 사고)

  • owl - 올빼미 (지혜로운 멘토)

  • penguin - 펭귄 (정장 차림)

  • turtle - 거북이 (안정적이고 신뢰할 수 있는)

  • snail - 달팽이 (느린 작업에서 세밀한 결과)

  • ghost - 유령 (신출귀몰)

  • axolotl - 아홀로틀 (귀엽고 치유적인)

  • capybara - 카피바라 (불교적인 대가)

  • cactus - 선인장 (따뜻한 마음의 식물)

  • robot - 로봇 (합리성이 최우선)

  • rabbit - 토끼 (활발하고 경쾌한)

  • mushroom - 버섯 (조용히 관찰하는)

  • chonk - 뚱뚱이 (둥글둥글)

5단계 희귀도

  • Common(일반) - 60% 확률, 모자 장식 없음

  • Uncommon(드물게) - 25% 확률, 모자 잠금 해제

  • Rare(희귀) - 10% 확률, 더 많은 장식

  • Epic(서사적) - 4% 확률, 전용 장식

  • Legendary(전설) - 1% 확률, 최고급 장식
또한 독립적인 1% 반짝임(Shiny) 확률이 있으며, 반짝이는 애완동물은 무지개색 미세한 애니메이션을 가지고 있습니다! 반짝이는 전설의 확률은 1% × 1% = 0.01%, 즉 만분의 일입니다.

2. 알고리즘 원리 심층 분석

Buddy의 생성은 결정론적 랜덤 알고리즘을 사용하며, 핵심 프로세스는 다음과 같습니다:

1. 시드 문자열 결합

const SALT = "friend-2026-401"; // 4월 1일 만우절 이스터 에그 const key = userId + SALT;

Salt 값 friend-2026-401의 401은 4월 1일을 나타내며, 이는 정교하게 설계된 만우절 이스터 에그입니다.

2. FNV-1a 32비트 해시

시드 문자열을 32비트 정수로 변환합니다:

function hashString(s) { let h = 2166136261; // FNV 오프셋 기준 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

해시 값을 사용하여 의사 난수 생성기를 초기화합니다: 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; }; }

멀베리32는 게임 개발에서 자주 사용되는 경량 PRNG로, 프로그래밍 방식으로 생성된 콘텐츠와 전리품 드랍 테이블에 적합합니다.

4. 희귀도 추출 (중요!)

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

// 멀베리32 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; }

// 반짝이 전설 검색 console.log("반짝이 전설 Buddy... "); 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("찾았다!"); console.log("종: ", result.species); console.log("희귀도: 전설"); console.log("반짝이: 예!"); console.log("userID: ", userId); break; } } }

네, 사용 단계

  • 스크립트 저장: 위 코드를 buddy-reroll.js로 저장합니다.

  • 스크립트 실행: node buddy-reroll.js (종을 지정할 수 있습니다: node buddy-reroll.js dragon)

  • userID 복사: 스크립트는 반짝이 전설급 Buddy의 userID를 출력합니다.- 구성 수정
# ~/.claude.json 편집 cat ~/.claude.json | jq '.userID = "당신의 새로운 userID" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json

  • Claude Code 재시작/buddy를 입력하면 새로운 애완동물을 볼 수 있습니다!

다섯, 방지 조작 설계 원리

Claude Code의 설계는 매우 기발하며, 뼈대(Bones)와 영혼(Soul) 분리 구조를 채택하고 있습니다:

  • Bones(뼈대):종, 희귀도, 외관, 속성——매번 userID로부터 재계산되며, 결코 영구 저장되지 않음

  • Soul(영혼):이름, 성격 설명——로컬 config에 영구 저장됨
이는 config 파일의 rarity 필드를 직접 수정하더라도 시스템이 읽을 때 roll(userID)의 결과로 덮어쓰기를 한다는 것을 의미합니다. 주석은 매우 직설적입니다: editing config.companion can't fake a rarity.

하지만 userID 자체는 수정할 수 있으며, 이것이 본 방법의 원리입니다.

여섯, 요약

Claude Code Buddy는 정교하게 설계된 이스터 에그 기능으로, 다음을 통합합니다:

  • 결정론적 무작위:FNV-1a + Mulberry32의 고전 조합

  • 카드 뽑기 메커니즘:5단계 희귀도 + 1% 반짝임, Gacha 게임의 정수

  • 방지 조작 설계:뼈대/영혼 분리, 공정성 보장

  • 만우절 이스터 에그:salt 값에 4월 1일의 타임스탬프가 숨겨져 있음
지금 바로 시도해 보세요! 원하는 반짝이는 전설의 Buddy를 뽑기를 기원합니다!

참고 자료:

  • Claude Code 2.1.89 소스 코드 유출 (npm 소스 맵 사고)

  • 掘金:《Claude Code Buddy 모드 심층 분석: 선인장 뒤에 숨겨진 결정론적 무작위 알고리즘》- DEV.to: 클로드 코드 소스 코드를 분해했습니다
Published in Technology

You Might Also Like

Obsidian이 Defuddle을 출시하여 Obsidian Web Clipper를 새로운 차원으로 끌어올리다Technology

Obsidian이 Defuddle을 출시하여 Obsidian Web Clipper를 새로운 차원으로 끌어올리다

Obsidian이 Defuddle을 출시하여 Obsidian Web Clipper를 새로운 차원으로 끌어올리다 저는 Obsidian의 핵심 이념인 로컬 우선, 모든 것이 파일이라는 점, 그리고 단순한 Markdow...

OpenAI가 갑자기 발표한 '삼합일': 브라우저 + 프로그래밍 + ChatGPT 통합, 내부에서 지난 1년이 잘못되었다고 인정하다Technology

OpenAI가 갑자기 발표한 '삼합일': 브라우저 + 프로그래밍 + ChatGPT 통합, 내부에서 지난 1년이 잘못되었다고 인정하다

OpenAI가 갑자기 발표한 '삼합일': 브라우저 + 프로그래밍 + ChatGPT 통합, 내부에서 지난 1년이 잘못되었다고 인정하다 2026년 3월 19일 심야, OpenAI 본사에서 내부 메모가 유출되었고, 《월...

2026, 더 이상 스스로를 '자율'하게 강요하지 마세요! 이 8가지 작은 일을 잘하면 건강이 자연스럽게 찾아옵니다Health

2026, 더 이상 스스로를 '자율'하게 강요하지 마세요! 이 8가지 작은 일을 잘하면 건강이 자연스럽게 찾아옵니다

2026, 더 이상 스스로를 '자율'하게 강요하지 마세요! 이 8가지 작은 일을 잘하면 건강이 자연스럽게 찾아옵니다 새로운 한 해가 시작되었습니다. 작년에 세운 목표는 달성하셨나요? 매년 '의욕이 넘치'고 '포기하...

노력해도 살이 빠지지 않는 엄마들, 여기서 모두 실패한다Health

노력해도 살이 빠지지 않는 엄마들, 여기서 모두 실패한다

노력해도 살이 빠지지 않는 엄마들, 여기서 모두 실패한다 3월이 이미 반이 지났습니다. 당신의 다이어트 계획은 어떻게 되어가고 있나요? 살이 빠졌나요? 얼마나 빠졌나요? 나의 다이어트 경험 2월 말에 다이어트를 ...

📝
Technology

AI 브라우저 24시간 안정적 운영 가이드

AI 브라우저 24시간 안정적 운영 가이드 본 튜토리얼은 안정적이고 장기적으로 운영되는 AI 브라우저 환경을 구축하는 방법을 소개합니다. 적합한 용도 AI 에이전트 자동화 브라우징 웹 자동화 AI 어시스턴트 자동 테...

📝
Technology

Agent-Browser 구성 가이드: CDP를 통해 브라우저 로그인 상태 재사용하기

Agent-Browser 구성 가이드: CDP를 통해 브라우저 로그인 상태 재사용하기\n\n이 가이드는 agent-browser를 설치하고 Chrome 원격 디버깅을 통해 로그인된 브라우저에 연결하여 AI 에이전트가...