Claude Code Buddy 修正ガイド:どのようにしてシャイニングレジェンド級ペットを手に入れるか

4/2/2026
4 min read

Claude Code Buddy 修正ガイド:どのようにしてシャイニングレジェンド級ペットを手に入れるか

2026年4月1日、Anthropic は Claude Code 2.1.89 バージョンでひっそりとエッグ機能を追加しました——/buddy ペットシステム。ターミナルに /buddy と入力すると、ASCIIスタイルの小動物があなたの入力ボックスの横で"孵化"し、コードを書くのを手伝ったり、バグについて文句を言ったりします。

各BuddyはアカウントIDを通じて決定論的アルゴリズムによって生成されるため、同じアカウントは常に同じペットを得ることになります。しかし、設定ファイル内のuserIDを変更することで、好みのペットを"再ROLL"することができます。本記事ではアルゴリズムの原理と完全な修正スクリプトについて詳しく説明します。

一、Buddy システムの概要

18 種類の種

システムには現在18種類の可愛い種が含まれています:

  • duck - アヒル(クラシックなラバーダックデバッグ)

  • 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%、約万分の一です。

二、アルゴリズム原理の深層解析

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

// Mulberry32はゲーム開発でよく使われる軽量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; }

// 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// 輝く伝説を検索\nconsole.log("輝く伝説 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("見つかりました!");\n console.log("種: ", result.species);\n console.log("レアリティ: 伝説");\n console.log("輝く: はい!");\n console.log("userID: ", userId);\n break;\n }\n }\n}\n\n## 四、使用手順\n\n- スクリプトを保存:上記のコードを buddy-reroll.js として保存します。\n\n- スクリプトを実行node buddy-reroll.js(種を指定することもできます:node buddy-reroll.js dragon)\n\n- 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ファイルの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のコア理念がとても好きです:ローカルファースト、すべてはファイル、そして単純なMarkdownテキストファ...

OpenAIが突然発表した「三合一」:ブラウザ+プログラミング+ChatGPTの統合、内部で過去1年の誤りを認めるTechnology

OpenAIが突然発表した「三合一」:ブラウザ+プログラミング+ChatGPTの統合、内部で過去1年の誤りを認める

OpenAIが突然発表した「三合一」:ブラウザ+プログラミング+ChatGPTの統合、内部で過去1年の誤りを認める 2026年3月19日深夜、OpenAI本社から内部メモが流出し、『ウォール・ストリート・ジャーナル』が真っ先に原文を入手し...

2026年、自分を「自律」に縛らない!この8つの小さなことを実践すれば、健康は自然にやってくるHealth

2026年、自分を「自律」に縛らない!この8つの小さなことを実践すれば、健康は自然にやってくる

2026年、自分を「自律」に縛らない!この8つの小さなことを実践すれば、健康は自然にやってくる 新しい年が始まりましたが、昨年立てた目標は達成できましたか?毎年「やる気満々」と「諦めたい」の間で揺れ動いていませんか? 2026年、考え方を...

努力しても痩せられないママたち、絶対にここでつまずいているHealth

努力しても痩せられないママたち、絶対にここでつまずいている

努力しても痩せられないママたち、絶対にここでつまずいている 3月も半ばを過ぎましたが、あなたのダイエット計画はどうですか?痩せましたか?どれくらい痩せましたか? 私のダイエット経験 2月末にダイエットを決意してから、実際にはどんどん体重...

📝
Technology

AIブラウザ 24時間安定運用ガイド

AIブラウザ 24時間安定運用ガイド 本チュートリアルでは、安定して長期間運用できるAIブラウザ環境の構築方法を紹介します。 対象 AIエージェント 自動化ブラウジング Web自動化 AIアシスタント 自動テストシステム 目標 ブラウザを...

📝
Technology

Agent-Browser 設定ガイド:CDPを通じてブラウザのログイン状態を再利用する

Agent-Browser 設定ガイド:CDPを通じてブラウザのログイン状態を再利用する\n\nこのガイドは、agent-browserをインストールし、Chromeのリモートデバッグを通じてログイン済みのブラウザに接続する手助けをします。...