Claude Code Buddy แก้ไขคู่มือ: วิธีการรับสัตว์เลี้ยงระดับตำนานที่เปล่งประกาย
Claude Code Buddy แก้ไขคู่มือ: วิธีการรับสัตว์เลี้ยงระดับตำนานที่เปล่งประกาย
วันที่ 1 เมษายน 2026, Anthropic ได้เปิดตัวฟีเจอร์ Easter Egg ใหม่ในเวอร์ชัน Claude Code 2.1.89 นั่นคือ /buddy ระบบสัตว์เลี้ยง เมื่อพิมพ์ /buddy ในเทอร์มินัล สัตว์เลี้ยงสไตล์ ASCII ตัวเล็กจะ "ฟัก" ขึ้นข้างกล่องข้อความของคุณ เพื่อช่วยคุณเขียนโค้ดและพูดคุยเกี่ยวกับบั๊ก
สัตว์เลี้ยงแต่ละตัวถูกสร้างขึ้นจาก ID บัญชีผ่านอัลกอริธึมที่แน่นอน ซึ่งหมายความว่าบัญชีเดียวกันจะได้รับสัตว์เลี้ยงตัวเดียวกันเสมอ แต่ด้วยการแก้ไขไฟล์การตั้งค่าที่มี userID เราสามารถ "รีโรล" สัตว์เลี้ยงที่ต้องการได้ บทความนี้จะอธิบายรายละเอียดเกี่ยวกับหลักการของอัลกอริธึมและสคริปต์การแก้ไขที่สมบูรณ์
หนึ่ง, ภาพรวมของระบบ Buddy
18 ชนิดของสัตว์
ระบบในปัจจุบันมีสัตว์น่ารัก 18 ชนิด:
- duck - เป็ด (การดีบักแบบ Rubber 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% โอกาส มีการตกแต่งระดับสูงสุด
สอง, การวิเคราะห์ลึกเกี่ยวกับหลักการอัลกอริธึม
การสร้าง Buddy ใช้อัลกอริธึม สุ่มที่แน่นอน โดยมีขั้นตอนหลักดังนี้:
1. การเชื่อมต่อสตริงเมล็ด
const SALT = "friend-2026-401"; // อีสเตอร์ไข่วันที่ 1 เมษายน const key = userId + SALT;
ค่า Salt friend-2026-401 หมายถึงวันที่ 1 เมษายน—อีสเตอร์ไข่ที่ออกแบบมาอย่างดี
2. FNV-1a แฮช 32-bit
แปลงสตริงเมล็ดเป็นจำนวนเต็ม 32 บิต:
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
ใช้ค่าแฮชในการเริ่มต้นเครื่องกำเนิดเลขสุ่มเทียม: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"]; 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; }
// ค้นหา Buddy ที่มีระดับความหายากเป็นแสง 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: สคริปต์จะส่งออก userID ของ Buddy ที่มีระดับความหายากเป็นแสง- แก้ไขการตั้งค่า:
# แก้ไข ~/.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 ท้องถิ่น
roll(userID) ทับเมื่ออ่าน คำอธิบายเขียนไว้ชัดเจนว่า:editing config.companion can't fake a rarity。
แต่ userID เองสามารถแก้ไขได้ นี่คือหลักการของวิธีการในบทความนี้。
หก สรุป
Claude Code Buddy เป็นฟังก์ชัน Easter egg ที่ออกแบบมาอย่างดี ผสมผสานกับ:
- ความสุ่มที่แน่นอน:การรวมกันคลาสสิกของ FNV-1a + Mulberry32
- กลไกการสุ่มการ์ด:ระดับหายาก 5 + 1% แวววาว แก่นของเกม Gacha
- การออกแบบป้องกันการโกง:แยกกระดูก/จิตวิญญาณ เพื่อให้แน่ใจว่ามีความยุติธรรม
- Easter egg วันโกหก:ค่า salt ซ่อน timestamp วันที่ 1 เมษายน
เอกสารอ้างอิง:
- รั่วไหลของซอร์สโค้ด Claude Code 2.1.89 (อุบัติเหตุแผนที่ซอร์ส npm)
- Juejin: "เจาะลึกโหมด Claude Code Buddy: อัลกอริธึมสุ่มที่แน่นอนเบื้องหลังต้นกระบองเพชร"- DEV.to: ฉันได้แยกโค้ดแหล่งที่มาของ Claude

