关于 webup-buddy-reroll
该 Claude Code 技能通过搜索合适的 userID,为 `/buddy` 重新生成指定物种和稀有度的伙伴,也可修改名称或个性描述。它使用 Bun 执行哈希计算,并支持将结果写入配置。
主要功能
- 01按物种和稀有度搜索伙伴
- 02使用 Bun 进行哈希计算
- 03可选自动写入配置
- 04修改伙伴名称和个性描述
- 05提供 Pro/Max OAuth 配置流程
适用场景
- 01为 `/buddy` 选择目标物种和稀有度
- 02不重新抽取时更改伙伴名称
- 03为 Pro/Max 账户设置重新生成流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ webup/ skills-cc --skill webup-buddy-reroll安装后在 Claude Code 中输入/webup-buddy-reroll确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/oauth-setup.mjsrename.mjsreroll.mjs详细介绍
Buddy 重摇
通过查找哈希后对应所需物种和稀有度的 userID,暴力搜索新的 /buddy 伙伴。
工作原理
Claude Code 会以确定性方式生成伙伴:hash(userID + SALT) → mulberry32 PRNG → 稀有度、物种、眼睛、帽子、闪光属性。相同的 userID 始终会生成相同的伙伴。
要重摇:替换 ~/.claude.json 中的 userID,清除 companion 字段,然后重启。
重要提示:Claude Code 使用 Bun 打包,因此正确的哈希函数是 Bun.hash()(xxHash64)。Node.js 的 FNV-1a 会产生错误结果——脚本必须在 Bun 下运行。
脚本目录
重要提示:所有脚本都位于此技能的 scripts/ 子目录中。
Agent 执行说明:
- 将此 SKILL.md 文件所在的目录路径确定为
SKILL_DIR - 脚本路径 =
${SKILL_DIR}/scripts/<script-name>.mjs - 将本文档中的所有
${SKILL_DIR}替换为实际路径
脚本参考:
| 脚本 | 用途 |
|---|---|
scripts/reroll.mjs | 暴力搜索目标物种和稀有度,可选择应用到配置 |
scripts/oauth-setup.mjs | 面向 Pro/Max 订阅者的 OAuth 配置助手(--check/--prepare/--verify/--restore) |
scripts/rename.mjs | 更改伙伴名称和/或个性(--name/--desc) |
前置条件
- Claude Code >= 2.1.89 —
/buddy系统在此版本中引入。脚本会自动检查版本,版本过低时退出。 - Bun — 正确进行哈希计算所必需。若未全局安装,请使用
npx -y bun。 - API 用户:可直接使用——
~/.claude.json中的userID可以自由替换。 - Pro/Max 订阅者:需要先设置 OAuth(此技能会自动完成)。Pro/Max 账户有
accountUuid,/buddy会使用它而不是userID。OAuth 方法可以绕过这一限制——参见下方工作流。
用法
# Direct (if bun is installed globally)
bun ${SKILL_DIR}/scripts/reroll.mjs --species dragon --rarity legendary --apply
# Via npx (works even without global bun install)
npx -y bun ${SKILL_DIR}/scripts/reroll.mjs --species dragon --rarity legendary --apply
选项
| 标志 | 默认值 | 说明 |
|---|---|---|
--species <name> | dragon | 目标物种(见下方列表) |
--rarity <level> | legendary | 最低稀有度:common / uncommon / rare / epic / legendary |
--max <n> | 1000000 | 最大暴力搜索迭代次数 |
--apply | 关闭 | 自动将结果写入 ~/.claude.json 并清除 companion |
物种(18 种)
| duck | goose | blob | cat | dragon | octopus |
| owl | penguin | turtle | snail | ghost | axolotl |
| capybara | cactus | robot | rabbit | mushroom | chonk |
稀有度等级
| 稀有度 | 星级 | 概率 | 预计找到所需迭代次数 |
|---|---|---|---|
| common | ★ | 60% | ~30 |
| uncommon | ★★ | 25% | ~72 |
| rare | ★★★ | 10% | ~180 |
| epic | ★★★★ | 4% | ~450 |
| legendary | ★★★★★ | 1% | ~1800 |
调用方式
可以带参数或不带参数调用此技能:
- 不带参数(
/webup-buddy-reroll):运行前通过AskUserQuestion交互式询问用户。 - 仅重摇(
/webup-buddy-reroll dragon legendary):跳过询问,使用指定的物种和稀有度。 - 重摇并重命名(
/webup-buddy-reroll dragon legendary 沧海九粟 爱打盹的小龙):重摇后立即应用指定名称和个性。 - 仅重命名(
/webup-buddy-reroll 改名叫沧海九粟,个性是爱打盹的小龙):跳过重摇,只更改名称和/或个性。
参数解析(自然语言)
参数字符串是自由格式文本。使用 NLP 提取以下字段:
- species —— 匹配 18 个已知物种名称(duck、goose、blob、cat、dragon、octopus、owl、penguin、turtle、snail、ghost、axolotl、capybara、cactus、robot、rabbit、mushroom、chonk)。同时识别对应的中文/日文名称(龙=dragon、猫=cat 等)。
- rarity —— 匹配 5 个等级(common、uncommon、rare、epic、legendary)或对应名称(传说=legendary、史诗=epic 等)。
- name —— 伙伴的简短专有名称(例如“沧海九粟”、“Nimbus”、“小火”)。查找“叫X”、“名字X”、“named X”、“name X”等模式,或不属于物种/稀有度关键词的独立专有名词。
- personality —— 描述伙伴氛围或性格的内容(例如“爱打盹的小龙”、“sarcastic robot”)。查找“个性X”、“性格X”、“personality X”等模式,或不属于物种/稀有度/名称的描述性短语。
以上四个字段均为可选项。任意组合均有效。
检测意图:
- 如果找到 species 或 rarity → 重新抽取工作流(若同时找到 name/personality,则在重新抽取后重命名)
- 如果只找到 name 和/或 personality(没有 species/rarity)→ 重命名工作流
- 如果完全没有参数 → 以交互方式询问,并根据用户的消息判断他们想重新抽取还是重命名
重新抽取工作流
- 检测账户类型:运行检查脚本,查看
~/.claude.json中是否存在accountUuid:npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --check- 退出码 0(没有
accountUuid):API 用户或已完成 OAuth 设置的用户。跳过至步骤 1。 - 退出码 1(找到
accountUuid):Pro/Max 订阅用户。运行下方的 OAuth 设置,然后继续步骤 1。
- 退出码 0(没有
OAuth 设置(仅限 Pro/Max)
原理:通过 CLAUDE_CODE_OAUTH_TOKEN 环境变量登录时,Claude Code 不会将 accountUuid 写入 ~/.claude.json。这样 /buddy 就会回退使用 userID,而该值可以自由替换。
a. 告诉用户打开一个单独的终端并运行 claude setup-token 获取 OAuth 令牌。请他们将令牌粘贴到这里。
b. 收到令牌后,准备配置(备份并重置):
bash npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --prepare
c. 告诉用户在单独的终端中运行以下命令(将 <TOKEN> 替换为实际令牌):
bash CLAUDE_CODE_OAUTH_TOKEN=<TOKEN> claude
等待 Claude 完全加载,然后立即退出——不要使用 /buddy。
d. 用户确认完成后,验证配置:
bash npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --verify
如果验证失败,运行 --restore 还原备份,并从步骤 (a) 重试。
e. 继续步骤 1。
-
如果未提供参数:使用
AskUserQuestion,在单次提示中询问用户选择一个物种和一个稀有度(两个问题):- 物种问题:将 4 个热门选项(dragon、cat、axolotl、capybara)列为选项。每个选项的
description都应列出其余物种,让用户知道可以通过“Other”选择哪些物种。例如,第一个选项的 description:“Or type any of: duck, goose, blob, octopus, owl, penguin, turtle, snail, ghost, cactus, robot, rabbit, mushroom, chonk”。 - 稀有度问题:列出全部 5 个等级(legendary 为首选/推荐项,其次是 epic、rare、uncommon、common)。
- 不要跳过此步骤。即使用户提到了物种,也始终询问以确认其选择。
如果已从参数中解析出 species/rarity:跳过提示,直接继续。
- 物种问题:将 4 个热门选项(dragon、cat、axolotl、capybara)列为选项。每个选项的
-
使用
--apply运行脚本:npx -y bun ${SKILL_DIR}/scripts/reroll.mjs --species <choice> --rarity <choice> --apply -
如果已从参数中解析出 name 或 personality:重新抽取后立即运行重命名脚本(两者之间无需重启):
npx -y bun ${SKILL_DIR}/scripts/rename.mjs --name "<parsed name>" --desc "<parsed personality>"如果只解析出其中一项,则省略
--name或--desc。 -
告诉用户重启 Claude Code 并运行
/buddy,以孵化新的伙伴。- 如果使用了 OAuth:提醒用户使用
CLAUDE_CODE_OAUTH_TOKEN=<TOKEN> claude启动 Claude(而不是直接运行claude),以防accountUuid被写回。
- 如果使用了 OAuth:提醒用户使用
手动应用
如果未使用 --apply:
- 复制输出的 userID
- 编辑
~/.claude.json:替换"userID"的值,并将"companion"设为null - 重启 Claude Code →
/buddy
重命名 / 自定义伙伴
更改伙伴的名称和/或个性描述,而不重新随机生成物种或稀有度。
重命名工作流
如果从参数中解析出了名称和/或个性:跳过步骤 1–3,直接使用解析出的值执行步骤 4。若通过参数直接提供个性,则原样使用——跳过 AI 生成步骤。
- 使用
AskUserQuestion询问用户想更改什么(一个问题,多选):- 名称:“更改伙伴名称”
- 个性:“更改伙伴个性/描述”
- 对于名称:询问用户想要的确切名称,并直接传入。
- 对于个性:请用户提供简短的提示或风格(例如“喜欢键盘的懒猫”“讽刺机器人的风格”)。然后由你(Claude Code)生成有趣、有创意的个性描述(1–2 句话,符合伙伴的物种和用户提供的提示)。应用之前,向用户展示生成的文本并征求确认。
- 运行重命名脚本:
如果只更改其中一项,则省略npx -y bun ${SKILL_DIR}/scripts/rename.mjs --name "<name>" --desc "<personality>"--name或--desc。 - 告知用户重启 Claude Code,以使更改生效。
注意事项
userID只影响遥测分组和伙伴种子,不会影响对话、API 密钥或本地配置- SALT 为
friend-2026-401(Claude Code 2.1.89)。如果未来版本更改了 SALT,请更新脚本 - 在现代硬件上,1M 次迭代可在几秒内找到传奇级伙伴