Hướng dẫn chỉnh sửa Claude Code Buddy: Cách nhận thú cưng huyền thoại phát sáng
Hướng dẫn chỉnh sửa Claude Code Buddy: Cách nhận thú cưng huyền thoại phát sáng
Ngày 1 tháng 4 năm 2026, Anthropic đã âm thầm ra mắt một tính năng bí mật trong phiên bản Claude Code 2.1.89 - hệ thống thú cưng /buddy. Khi nhập /buddy vào terminal, một con vật nhỏ theo phong cách ASCII sẽ "nở" bên cạnh ô nhập của bạn, đồng hành cùng bạn viết mã và phàn nàn về lỗi.
Mỗi Buddy được tạo ra từ ID tài khoản thông qua thuật toán xác định, có nghĩa là cùng một tài khoản sẽ luôn nhận được cùng một con thú cưng. Nhưng thông qua việc chỉnh sửa userID trong tệp cấu hình, chúng ta có thể "roll lại" con thú cưng mà mình mong muốn. Bài viết này sẽ giới thiệu chi tiết về nguyên lý thuật toán và kịch bản chỉnh sửa hoàn chỉnh.
I. Tổng quan về hệ thống Buddy
18 loại sinh vật
Hệ thống hiện tại bao gồm 18 loại sinh vật dễ thương:
- duck - vịt (Gỡ lỗi bằng Rubber Duck cổ điển)
- goose - ngỗng (nghịch ngợm)
- blob - thạch (mềm mại và không hình dạng)
- cat - mèo (lạnh lùng kiêu ngạo)
- dragon - rồng (bảo vệ mạnh mẽ)
- octopus - bạch tuộc (suy nghĩ đa luồng)
- owl - cú (người thầy thông thái)
- penguin - chim cánh cụt (tham dự trang trọng)
- turtle - rùa (đáng tin cậy và ổn định)
- snail - ốc sên (công việc chậm nhưng tinh tế)
- ghost - ma (xuất hiện và biến mất)
- axolotl - kỳ nhông (dễ thương và chữa lành)
- capybara - lợn biển (bậc thầy bình thản)
- cactus - xương rồng (cây ấm áp)
- robot - robot (lý trí tối thượng)
- rabbit - thỏ (nhảy nhót)
- mushroom - nấm (quan sát lặng lẽ)
- chonk - béo (tròn trịa)
5 cấp độ hiếm
- Common (thông thường) - 60% xác suất, không có trang trí mũ
- Uncommon (hiếm gặp) - 25% xác suất, mở khóa mũ
- Rare (quý hiếm) - 10% xác suất, nhiều trang trí hơn
- Epic (huyền thoại) - 4% xác suất, trang trí độc quyền
- Legendary (truyền thuyết) - 1% xác suất, trang trí hàng đầu
II. Phân tích sâu về nguyên lý thuật toán
Việc tạo ra Buddy sử dụng thuật toán ngẫu nhiên xác định, quy trình chính như sau:
1. Nối chuỗi hạt giống
const SALT = "friend-2026-401"; // Món quà bí mật ngày 1 tháng 4 const key = userId + SALT;
Giá trị Salt friend-2026-401 trong đó 401 đại diện cho ngày 1 tháng 4 - một món quà bí mật được thiết kế cẩn thận cho ngày Cá tháng Tư.
2. Băm FNV-1a 32-bit
Chuyển đổi chuỗi hạt giống thành số nguyên 32 bit:
function hashString(s) { let h = 2166136261; // Cơ sở bù 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
Khởi tạo bộ sinh số ngẫu nhiên giả bằng giá trị băm: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 là một PRNG nhẹ thường được sử dụng trong phát triển trò chơi, phù hợp cho việc tạo ra ngẫu nhiên và bảng rơi đồ vật.
4. Rút thăm độ hiếm (Chìa khóa!)
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// Tìm kiếm Buddy huyền thoại sáng bóng\nconsole.log("Tìm kiếm Buddy huyền thoại sáng bóng... ");\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("Đã tìm thấy!");\n console.log("Loài:", result.species);\n console.log("Độ hiếm: Huyền thoại");\n console.log("Sáng bóng: Có!");\n console.log("userID:", userId);\n break;\n }\n }\n}\n\n## Bốn, Các bước sử dụng\n\n- Lưu script: Lưu đoạn mã trên thành buddy-reroll.js\n\n- Chạy script: node buddy-reroll.js (có thể chỉ định loài: node buddy-reroll.js dragon)\n\n- Sao chép userID: Script sẽ xuất ra một userID của Buddy huyền thoại sáng bóng.- Chỉnh sửa cấu hình: # Chỉnh sửa ~/.claude.json cat ~/.claude.json | jq '.userID = "userID mới của bạn" | del(.companion)' > /tmp/claude-new.json && mv /tmp/claude-new.json ~/.claude.json
- Khởi động lại Claude Code,nhập
/buddyđể thấy thú cưng mới của bạn!
V. Nguyên lý thiết kế chống gian lận
Thiết kế của Claude Code rất tinh vi, sử dụng kiến trúc tách biệt giữa khung xương (Bones) và linh hồn (Soul):
- Bones (khung xương):Loài, độ hiếm, ngoại hình, thuộc tính——mỗi lần tính toán lại từ userID, không bao giờ được lưu trữ
- Soul (linh hồn):Tên, mô tả tính cách——được lưu trữ vào cấu hình cục bộ
roll(userID) khi đọc. Chú thích viết rất rõ ràng:editing config.companion can't fake a rarity.
Nhưng userID thì có thể chỉnh sửa, đó là nguyên lý của phương pháp trong bài viết này.
VI. Tóm tắt
Claude Code Buddy là một tính năng ẩn được thiết kế tỉ mỉ, kết hợp:
- Ngẫu nhiên xác định:Sự kết hợp cổ điển của FNV-1a + Mulberry32
- Cơ chế rút thẻ:Độ hiếm 5 cấp + 1% lấp lánh, tinh hoa của trò chơi Gacha
- Thiết kế chống gian lận:Tách biệt khung xương/linh hồn, đảm bảo tính công bằng
- Trứng Phục sinh ngày Cá tháng Tư:Giá trị salt ẩn chứa dấu thời gian của ngày 1 tháng 4
Tài liệu tham khảo:
- Mã nguồn Claude Code 2.1.89 bị rò rỉ (sự cố bản đồ nguồn npm)
- Juejin: "Phân tích sâu về chế độ Claude Code Buddy: Một thuật toán ngẫu nhiên xác định đằng sau một cây xương rồng"- DEV.to: Tôi đã phân tích mã nguồn Claude

