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

4/2/2026
8 min read

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
Ngoài ra còn có xác suất 1% phát sáng (Shiny) độc lập, thú cưng phát sáng có hoạt ảnh ánh sáng cầu vồng! Xác suất thú cưng huyền thoại phát sáng là 1% × 1% = 0.01%, khoảng một phần mười ngàn.

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ộ
Điều này có nghĩa là ngay cả khi bạn chỉnh sửa trường rarity trong tệp cấu hình, hệ thống cũng sẽ ghi đè bằng kết quả của 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
Hãy thử ngay bây giờ! Chúc bạn rút được Buddy huyền thoại lấp lánh mà bạn mong muốn!

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
Published in Technology

You Might Also Like

Obsidian đã ra mắt Defuddle, đưa Obsidian Web Clipper lên một tầm cao mớiTechnology

Obsidian đã ra mắt Defuddle, đưa Obsidian Web Clipper lên một tầm cao mới

Obsidian đã ra mắt Defuddle, đưa Obsidian Web Clipper lên một tầm cao mới Tôi luôn rất thích triết lý cốt lõi của Obsid...

OpenAI đột ngột công bố "ba trong một": Trình duyệt + lập trình + ChatGPT hợp nhất, nội bộ thừa nhận đã đi sai đường trong năm quaTechnology

OpenAI đột ngột công bố "ba trong một": Trình duyệt + lập trình + ChatGPT hợp nhất, nội bộ thừa nhận đã đi sai đường trong năm qua

OpenAI đột ngột công bố "ba trong một": Trình duyệt + lập trình + ChatGPT hợp nhất, nội bộ thừa nhận đã đi sai đường tro...

2026, không còn ép bản thân 'kỷ luật'! Làm tốt 8 việc nhỏ này, sức khỏe tự nhiên đếnHealth

2026, không còn ép bản thân 'kỷ luật'! Làm tốt 8 việc nhỏ này, sức khỏe tự nhiên đến

2026, không còn ép bản thân 'kỷ luật'! Làm tốt 8 việc nhỏ này, sức khỏe tự nhiên đến Năm mới bắt đầu, năm ngoái bạn đã ...

Những bà mẹ cố gắng giảm cân nhưng không thành công, chắc chắn đều mắc phải điều nàyHealth

Những bà mẹ cố gắng giảm cân nhưng không thành công, chắc chắn đều mắc phải điều này

Những bà mẹ cố gắng giảm cân nhưng không thành công, chắc chắn đều mắc phải điều này Tháng Ba đã qua nửa, kế hoạch giảm...

📝
Technology

Hướng dẫn vận hành ổn định AI Browser 24 giờ

Hướng dẫn vận hành ổn định AI Browser 24 giờ Bài hướng dẫn này giới thiệu cách thiết lập một môi trường AI Browser ổn đị...

📝
Technology

Hướng dẫn cấu hình Agent-Browser: Tái sử dụng trạng thái đăng nhập trình duyệt qua CDP

Hướng dẫn cấu hình Agent-Browser: Tái sử dụng trạng thái đăng nhập trình duyệt qua CDP\n\nHướng dẫn này giúp bạn cài đặt...