mcpField
W
webup-buddy-reroll

webup-buddy-reroll

github.com/webup其他134406 次安装16 周前更新
代码仓库

关于 webup-buddy-reroll

该 Claude Code 技能通过搜索合适的 userID,为 `/buddy` 重新生成指定物种和稀有度的伙伴,也可修改名称或个性描述。它使用 Bun 执行哈希计算,并支持将结果写入配置。

主要功能

  1. 01按物种和稀有度搜索伙伴
  2. 02使用 Bun 进行哈希计算
  3. 03可选自动写入配置
  4. 04修改伙伴名称和个性描述
  5. 05提供 Pro/Max OAuth 配置流程

适用场景

  1. 01为 `/buddy` 选择目标物种和稀有度
  2. 02不重新抽取时更改伙伴名称
  3. 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.mjs
rename.mjs
reroll.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 执行说明:

  1. 将此 SKILL.md 文件所在的目录路径确定为 SKILL_DIR
  2. 脚本路径 = ${SKILL_DIR}/scripts/<script-name>.mjs
  3. 将本文档中的所有 ${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 种)
duckgooseblobcatdragonoctopus
owlpenguinturtlesnailghostaxolotl
capybaracactusrobotrabbitmushroomchonk
稀有度等级
稀有度星级概率预计找到所需迭代次数
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 提取以下字段:

  1. species —— 匹配 18 个已知物种名称(duck、goose、blob、cat、dragon、octopus、owl、penguin、turtle、snail、ghost、axolotl、capybara、cactus、robot、rabbit、mushroom、chonk)。同时识别对应的中文/日文名称(龙=dragon、猫=cat 等)。
  2. rarity —— 匹配 5 个等级(common、uncommon、rare、epic、legendary)或对应名称(传说=legendary、史诗=epic 等)。
  3. name —— 伙伴的简短专有名称(例如“沧海九粟”、“Nimbus”、“小火”)。查找“叫X”、“名字X”、“named X”、“name X”等模式,或不属于物种/稀有度关键词的独立专有名词。
  4. personality —— 描述伙伴氛围或性格的内容(例如“爱打盹的小龙”、“sarcastic robot”)。查找“个性X”、“性格X”、“personality X”等模式,或不属于物种/稀有度/名称的描述性短语。

以上四个字段均为可选项。任意组合均有效。

检测意图:

  • 如果找到 species 或 rarity → 重新抽取工作流(若同时找到 name/personality,则在重新抽取后重命名)
  • 如果只找到 name 和/或 personality(没有 species/rarity)→ 重命名工作流
  • 如果完全没有参数 → 以交互方式询问,并根据用户的消息判断他们想重新抽取还是重命名

重新抽取工作流

  1. 检测账户类型:运行检查脚本,查看 ~/.claude.json 中是否存在 accountUuid:
    npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --check
    
    • 退出码 0(没有 accountUuid):API 用户或已完成 OAuth 设置的用户。跳过至步骤 1。
    • 退出码 1(找到 accountUuid):Pro/Max 订阅用户。运行下方的 OAuth 设置,然后继续步骤 1。
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。


  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:跳过提示,直接继续。

  2. 使用 --apply 运行脚本:

    npx -y bun ${SKILL_DIR}/scripts/reroll.mjs --species <choice> --rarity <choice> --apply
    
  3. 如果已从参数中解析出 name 或 personality:重新抽取后立即运行重命名脚本(两者之间无需重启):

    npx -y bun ${SKILL_DIR}/scripts/rename.mjs --name "<parsed name>" --desc "<parsed personality>"
    

    如果只解析出其中一项,则省略 --name 或 --desc。

  4. 告诉用户重启 Claude Code 并运行 /buddy,以孵化新的伙伴。

    • 如果使用了 OAuth:提醒用户使用 CLAUDE_CODE_OAUTH_TOKEN=<TOKEN> claude 启动 Claude(而不是直接运行 claude),以防 accountUuid 被写回。

手动应用

如果未使用 --apply:

  1. 复制输出的 userID
  2. 编辑 ~/.claude.json:替换 "userID" 的值,并将 "companion" 设为 null
  3. 重启 Claude Code → /buddy

重命名 / 自定义伙伴

更改伙伴的名称和/或个性描述,而不重新随机生成物种或稀有度。

重命名工作流

如果从参数中解析出了名称和/或个性:跳过步骤 1–3,直接使用解析出的值执行步骤 4。若通过参数直接提供个性,则原样使用——跳过 AI 生成步骤。

  1. 使用 AskUserQuestion 询问用户想更改什么(一个问题,多选):
    • 名称:“更改伙伴名称”
    • 个性:“更改伙伴个性/描述”
  2. 对于名称:询问用户想要的确切名称,并直接传入。
  3. 对于个性:请用户提供简短的提示或风格(例如“喜欢键盘的懒猫”“讽刺机器人的风格”)。然后由你(Claude Code)生成有趣、有创意的个性描述(1–2 句话,符合伙伴的物种和用户提供的提示)。应用之前,向用户展示生成的文本并征求确认。
  4. 运行重命名脚本:
    npx -y bun ${SKILL_DIR}/scripts/rename.mjs --name "<name>" --desc "<personality>"
    
    如果只更改其中一项,则省略 --name 或 --desc。
  5. 告知用户重启 Claude Code,以使更改生效。

注意事项

  • userID 只影响遥测分组和伙伴种子,不会影响对话、API 密钥或本地配置
  • SALT 为 friend-2026-401(Claude Code 2.1.89)。如果未来版本更改了 SALT,请更新脚本
  • 在现代硬件上,1M 次迭代可在几秒内找到传奇级伙伴

评论

支持 Markdown