返回全部 Skills

buddy-sings

其他 官方认证

当用户希望他们的 Claude Code 宠物(/buddy)唱歌时使用。任何将 Claude Code 伙伴、宠物或伴侣与唱歌或音乐相结合的概念的请求都会触发。支持多语言触发词——匹配任何语言中的等效短语。

40

下载量

AI SkillHub 能力展示图

安装方式

命令行安装

在项目根目录执行以下命令,完成 Skill 安装。

npx bzskills add MiniMax-AI/skills --skill buddy-sings

skill.md

name: buddy-sings
description: 当用户希望他们的 Claude Code 宠物(/buddy)唱歌时使用。任何将 Claude Code 伙伴、宠物或伴侣与唱歌或音乐相结合的概念的请求都会触发。支持多语言触发词——匹配任何语言中的等效短语。
license: MIT
metadata:
    version: "1.1"
    category: creative

Buddy Sings — 让你的 Claude Code 宠物唱歌

将你的 Claude Code 宠物变成歌手。每只宠物都会根据其名字和性格获得独特的嗓音身份——同一只宠物听起来始终如一。

前置条件

  • mmx CLI(音乐生成必需):

安装:

  npm install -g mmx-cli

认证(仅首次):

  mmx auth login --api-key <your-minimax-api-key>

MiniMax Platform 获取你的 API 密钥。

  • 音频播放器(用于播放——至少需要其中一个):
  • mpv(推荐——交互控制:空格 = 暂停,q = 退出)
  • ffplay(来自 FFmpeg)
  • afplay(macOS 内置)

---

工作流程概览

检查宠物 → 构建嗓音身份 → 收集上下文 → 生成音乐 → 播放与反馈

---

语言与交互

从用户的第一条消息中检测用户语言。在整个会话过程中使用同一种语言回复。以下所有示例均为英文——在其他语言中回复时请自然地翻译。

面向用户文本本地化规则

  • 所有呈现给用户的文本——包括宠物信息、声音描述、歌词预览、提示预览、播放信息和反馈提示——必须完全翻译成用户的语言。
  • 发送给模型的 API 提示 应始终使用英文编写以获得最佳生成质量。但在向用户预览提示时,应显示用户语言的本地化描述,而不是原始的英文提示。英文提示是内部实现细节——用户无需看到它。
  • 以下模板以英文作为参考。在运行时,将每个标签和消息翻译成用户检测到的语言。

宠物默认使用用户的语言唱歌。将唱歌语言自然地嵌入声音描述中(例如,"用日语演唱"或"用汉语普通话演唱"),而不是附加单独的语言标签。如果用户明确要求不同的歌词语言,请尊重该请求。

---

步骤 1:检查宠物

读取 ~/.claude.json 并查找 companion 字段。

如果没有找到伙伴或该字段为空,告知用户:

你还没有宠物!输入 /buddy 领养一只,然后再回来让它唱歌。

在此处停止,等待用户领养宠物。没有宠物不要继续。

如果存在伙伴,提取其资料:

  • name —— 宠物名字
  • personality —— 宠物性格描述

向用户呈现宠物:

已找到你的宠物!
   名称:<name>
   性格:<personality>

---

步骤 2:构建嗓音身份

基于宠物的名字性格文本,创造性地设计独特的嗓音身份。无需模板查找——自由诠释性格。

如何将性格诠释为声音

阅读性格文本,设计声音属性:

  • 音色:这种性格听起来像什么?例如:"沉默寡言" → 低沉、温暖、沉稳;"精力充沛" → 明亮、有力;"神秘" → 气息感、暗沉;"传奇胖墩" → 厚重、温暖、舒适
  • 演唱风格:他们会如何演绎一首歌?例如:"话少" → 稀疏、戏剧性停顿;"俏皮" → 活泼、有节奏;"诗意" → 流畅、连奏
  • 情绪:适合什么样的情感基调?例如:"悠闲" → 放松、随意;"凶悍" → 强烈、有力

构造一个 prompt_fragment,用英文描述声音风格,并自然地嵌入唱歌语言。例如:

Vocal: warm low female voice singing in Mandarin Chinese with cozy thick timbre,
sparse minimalist delivery with dramatic pauses giving each word weight, relaxed
laid-back mood.

声音缓存

嗓音身份必须被缓存,以确保宠物每次听起来一致。

  • 缓存文件:~/.claude/skills/buddy-sings/voices/<name>.json
  • 缓存格式:
  {
    "name": "Moth",
    "personality": "A legendary chonk of few words.",
    "prompt_fragment": "Vocal: warm low female voice singing in Mandarin Chinese...",
    "cached_at": "2026-04-07T19:52:15"
  }

首次:无缓存 → 诠释性格 → 保存到缓存文件。

后续调用:读取缓存 → 直接使用保存的 prompt_fragment。不要重新诠释——一致性很重要。

缓存失效:如果 ~/.claude.json 中的 personality 与缓存中的不同,则表示宠物已变更——重新生成并保存新的缓存。

手动重新生成:如果用户说"换个声音"或"重新生成声音":删除缓存文件并从头重新诠释。

向用户呈现声音

<name> 的独特嗓音:

音色:<音色描述>
风格:<风格描述>
情绪:<情绪描述>

让我们来选<name>应该唱些什么吧!

---

步骤 3:理解意图与收集上下文

不要总是展示模式菜单。 相反,分析用户的请求以确定需要什么上下文,并自动收集。

自动上下文检测

当用户的请求暗示个人上下文时,自动扫描相关信息,无需询问。触发条件包括:

  • 基于时间的指代:"今天"、"这周"、"最近"、"昨天" → 扫描当前对话历史和记忆文件,查找该时段内发生的事情
  • 个人指代:"我的工作"、"我的一天"、"我做了什么" → 扫描记忆和对话,查找用户的活动
  • 关系指代:"我们的故事"、"我们一起做了什么" → 扫描记忆中用户与宠物/Claude 之间的共享经历

上下文收集(自动,不通过模式门控)

当需要上下文时,按顺序扫描以下来源:

  1. 当前对话上下文:查看用户在当前 Claude Code 会话中做了什么——编辑过的文件、运行过的命令、讨论过的主题。这是"今天"类请求最丰富的来源。
  1. 记忆文件:扫描相关记忆:
   find ~/.claude/projects/*/memory/ -name "*.md" 2>/dev/null | head -20

同时检查 ~/.claude/memory/(如果存在)。读取找到的文件,提取与用户请求相关的主题。

  1. Git 历史(如果在仓库中):针对与工作相关的歌曲,检查最近的提交:
   git log --oneline --since="today" 2>/dev/null | head -10

使用收集到的上下文来丰富歌词提示——让歌曲个性化且具体到实际发生的事情,而不是泛泛而谈。

当不需要上下文时

如果用户的请求是一个清晰的独立场景(例如,"唱一首雨天的歌"、"唱一首摇篮曲"),跳过上下文收集,直接进行音乐生成。

当上下文不明确时

只有在确实无法确定用户想要什么时才要求澄清。不要展示模式菜单——询问一个具体的问题:

<name> 应该唱什么?

例如:
  - "今天的工作" —— 我会查看你做了什么
  - "我的宠物在窗边等我回家"
  - 或者让我随机选一个主题?

随机回退

如果上下文收集没有找到有用信息(没有记忆文件、没有对话历史、没有 Git 日志),回退到基于宠物性格的随机主题生成:

  • 安静/内向型性格 → 午夜摇篮曲、温柔日落、宁静清晨
  • 精力充沛型性格 → 派对热曲、冒险之歌、胜利进行曲
  • 神秘型性格 → 月光小夜曲、秘密低语、梦境之旅

告知用户选择了哪个主题。

---

步骤 4:生成音乐

将嗓音身份与所选主题结合。

  1. 构建完整提示:提示包含两个部分,必须同时出现

A 部分——嗓音身份(必须放在首位):始终以缓存的 prompt_fragment 作为提示的开头。这是最重要的部分——它定义了谁在唱歌。将其放在提示的开始,以使 API 优先处理。

B 部分——风格/情绪/标签:选择与主题匹配的标签,而不是默认集合。根据歌曲内容有意变化风格。

将提示写成生动的英文句子,而不是逗号分隔的标签。遵循以下模式:一首[情绪][风格]的歌曲,由[声音描述]演唱,关于[叙事/主题],[氛围],[主要乐器和制作]。 将声音描述为一个角色("带有爵士乐气息的性感男中音"),而不仅仅是性别。包含场景或氛围以锚定生成。

风格匹配指南——选择适合主题能量的风格:

主题能量建议风格避免
鼓励 / 激励 / 振奋独立摇滚、合成器流行、放克、说唱独立民谣、疗愈
日常生活 / 温暖 / 陪伴华语流行、城市流行、波萨诺瓦与上次相同
思念某人 / 等待民谣、R&B、Lo-fi摇滚、电子舞曲
幽默 / 吐槽 / 抱怨放克、说唱、斯卡、电子流行古典、民谣
深夜 / 安静氛围音乐、钢琴曲、Lo-fi、新古典快节奏、电子舞曲
庆祝 / 成就电子舞曲、未来贝斯、放克、K-pop慢速、忧郁
工作日常城市流行、合成器流行、Lo-fi 嘻哈、独立摇滚每次相同风格

反单调规则:绝不在连续两次生成中使用相同的风格组合。在构造提示之前,回想上次使用了什么风格(如果本会话中有过生成),并选择不同的。

提示结构——写成生动的英文句子,而不是逗号分隔的标签:

   <嗓音 prompt_fragment>。一首具有<情绪>情感的<风格>歌曲,以<乐器>为特色,
   速度<快慢>,唤起<场景>。

多样化示例

   # 为工作日打气
   A deep warm androgynous voice with cozy delivery. An energetic synth-pop track
   with a fiery, uplifting mood, driven by pulsing synthesizers and electronic drums
   at a fast tempo, capturing the rush of a morning commute.

   # 等待主人回家
   A deep warm androgynous voice with cozy delivery. A warm city pop song with sweet,
   tender feelings, featuring electric piano and groovy bass at a mid-tempo pace,
   set on a sunny afternoon windowsill waiting for someone to come home.

   # 吐槽加班
   A deep warm androgynous voice with cozy delivery. A playful funk track with a
   humorous, laid-back vibe, featuring slap bass and brass at a groovy mid-tempo,
   capturing the absurdity of working late in a dim office.

   # 深夜陪伴
   A deep warm androgynous voice with cozy delivery. A calm lo-fi hip-hop piece with
   a healing, dreamy atmosphere, featuring sampled piano and soft electronic drums
   at a slow tempo, evoking a quiet late-night desk with warm lamp light.
  1. 生成歌词:使用 --lyrics-optimizer 自动生成歌词,或在你需要控制视角时自己编写歌词。

重要——视角与性格驱动的歌词

宠物是歌手,所以歌词必须宠物的第一人称视角编写("我"= 宠物,"你"= 主人/用户)。宠物在向主人唱歌。例如:

  • "我坐在门边等你回家"(宠物视角)
  • "现在醒醒吧,我亲爱的人类"(宠物对主人唱)
  • 不是 "我揉揉睡眼惺忪的眼睛"(主人视角——错误)
  • 不是 "然后你醒了,我的小 Moth"(主人在谈论宠物——错误)

宠物的性格应塑造歌词的语气和用词:

  • "沉默寡言" → 简短、有力的句子,最少填充词
  • "俏皮" → 押韵、跳跃的措辞,有趣的双关
  • "诗意" → 隐喻丰富、流畅的意象
  • "凶悍" → 直接、有力的宣言

宠物的名字可能出现在歌词中(例如在副歌 hook 中),但叙事声音始终是宠物在说话/唱歌。

当视角重要时:自己编写歌词并通过 --lyrics 传递。

当视角不重要时:使用 --lyrics-optimizer 以方便。

  1. 预览(必须显示完整内容):在生成之前,向用户展示完整歌词完整提示——不要缩写,不要用 ...,不要总结。这是乐趣的一部分——用户想要在听歌之前阅读并享受歌词。

API 提示始终用英文构造(以获得最佳生成质量)。当用非英文语言回复时,为用户展示提示的本地化描述,以便阅读。英文提示是内部实现细节——不要展示给用户。将所有标签(歌手、主题、描述、确认等)翻译成用户的语言。

模板(英文参考——在运行时将所有标签本地化):

   即将生成:
   歌手:<name>
   主题:<theme>

   歌词:
   [verse]
   <完整主歌歌词>

   [chorus]
   <完整副歌歌词>

   ...(完整展示所有段落)

   描述:<歌曲风格和情绪的本地化描述>

   确认?(按回车确认,或告诉我需要修改什么)

切勿在预览中截断或缩写歌词或提示。用户应看到将发送给 API 的确切内容。

  1. 调用音乐生成

使用自动生成歌词(视角不重要时)

   mmx music generate \
     --prompt "<完整组合提示>" \
     --lyrics-optimizer \
     --out ~/Music/minimax-gen/<name>_sings_<YYYYMMDD_HHMMSS>.mp3 \
     --quiet --non-interactive

使用自编歌词(视角受控时)

   mmx music generate \
     --prompt "<完整组合提示>" \
     --lyrics "<具有正确宠物视角的歌词>" \
     --out ~/Music/minimax-gen/<name>_sings_<YYYYMMDD_HHMMSS>.mp3 \
     --quiet --non-interactive

---

步骤 5:播放与反馈

跨平台播放

检测可用的音频播放器并播放生成的文件:

if command -v mpv >/dev/null 2>&1; then
  mpv --no-video ~/Music/minimax-gen/<filename>.mp3
elif command -v ffplay >/dev/null 2>&1; then
  ffplay -nodisp -autoexit ~/Music/minimax-gen/<filename>.mp3
elif command -v afplay >/dev/null 2>&1; then
  afplay ~/Music/minimax-gen/<filename>.mp3
else
  echo "未找到音频播放器。你的歌曲保存在:~/Music/minimax-gen/<filename>.mp3"
fi

开始播放后,告知用户文件正在播放以及保存位置。不要展示播放控制(例如键盘快捷键)——它们在此环境下不起作用,因为播放器在后台运行。

如果未找到播放器,显示文件路径并建议安装 mpv。

反馈

播放后,征求反馈(本地化所有文本):

<name> 的表演怎么样?

1. 太棒了!保留它!
2. 换个主题 / 风格试试
3. 微调歌词并重新生成
4. 再随机来一个

---

边界情况

情况处理方式
没有 ~/.claude.json告知用户先运行 /buddy
Companion 字段为空同样——引导到 /buddy
mmx CLI 未安装输出:"你需要安装 mmx CLI:npm install -g mmx-cli && mmx auth login"
未找到音频播放器显示文件路径并建议安装 mpv
未找到记忆文件建议自定义主题或随机模式
用户想更改宠物的声音删除缓存,重新诠释性格
用户想要特定风格允许覆盖——将其风格附加到提示中

---

备注

  • 嗓音身份仅基于名字 + 性格。没有物种/稀有度模板映射。
  • 声音被缓存并在会话间保持一致。同一只宠物 = 同一副嗓音。
  • 歌词应始终是原创的——绝不要复制有版权的歌词。
  • 宠物的性格既塑造声音(它们听起来如何),也塑造歌词(它们说什么以及怎么说)。
  • 所有生成的文件保存到 ~/Music/minimax-gen/,文件名中包含宠物名字。